A bug introduced in #8217 (the undefined variable in the
[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 Sun Jan 21 21:30:32 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 CONFIG=''
965
966 define='define'
967 undef='undef'
968 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
969 rmlist=''
970
971 : We must find out about Eunice early
972 eunicefix=':'
973 if test -f /etc/unixtovms; then
974         eunicefix=/etc/unixtovms
975 fi
976 if test -f /etc/unixtovms.exe; then
977         eunicefix=/etc/unixtovms.exe
978 fi
979
980 i_whoami=''
981 ccname=''
982 ccversion=''
983 perllibs=''
984 : set useposix=false in your hint file to disable the POSIX extension.
985 useposix=true
986 : set useopcode=false in your hint file to disable the Opcode extension.
987 useopcode=true
988 : Trailing extension.  Override this in a hint file, if needed.
989 _exe=''
990 : Extra object files, if any, needed on this platform.
991 archobjs=''
992 archname=''
993 : Possible local include directories to search.
994 : Set locincpth to "" in a hint file to defeat local include searches.
995 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
996 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
997 :
998 : no include file wanted by default
999 inclwanted=''
1000
1001 groupstype=''
1002 : change the next line if compiling for Xenix/286 on Xenix/386
1003 xlibpth='/usr/lib/386 /lib/386'
1004 : Possible local library directories to search.
1005 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1006 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1007
1008 : general looking path for locating libraries
1009 glibpth="/lib /usr/lib $xlibpth"
1010 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1011 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1012 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1013
1014 : Private path used by Configure to find libraries.  Its value
1015 : is prepended to libpth. This variable takes care of special
1016 : machines, like the mips.  Usually, it should be empty.
1017 plibpth=''
1018
1019 : default library list
1020 libswanted=''
1021 : some systems want to use only the non-versioned libso:s
1022 ignore_versioned_solibs=''
1023 archname64=''
1024 ccflags_uselargefiles=''
1025 ldflags_uselargefiles=''
1026 libswanted_uselargefiles=''
1027 : set usemultiplicity on the Configure command line to enable multiplicity.
1028 : set usesocks on the Configure command line to enable socks.
1029 : set usethreads on the Configure command line to enable threads.
1030 : full support for void wanted by default
1031 defvoidused=15
1032
1033 : List of libraries we want.
1034 : If anyone needs -lnet, put it in a hint file.
1035 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1036 libswanted="$libswanted dld ld sun m c cposix posix"
1037 libswanted="$libswanted ndir dir crypt sec"
1038 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1039 : We probably want to search /usr/shlib before most other libraries.
1040 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1041 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1042 glibpth="/usr/shlib $glibpth"
1043 : Do not use vfork unless overridden by a hint file.
1044 usevfork=false
1045
1046 : Find the basic shell for Bourne shell scripts
1047 case "$sh" in
1048 '')
1049         case "$SYSTYPE" in
1050         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1051         *) xxx='/bin/sh';;
1052         esac
1053         if test -f "$xxx"; then
1054                 sh="$xxx"
1055         else
1056                 : Build up a list and do a single loop so we can 'break' out.
1057                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1058                 for xxx in sh bash ksh pdksh ash; do
1059                         for p in $pth; do
1060                                 try="$try ${p}/${xxx}"
1061                         done
1062                 done
1063                 for xxx in $try; do
1064                         if test -f "$xxx"; then
1065                                 sh="$xxx";
1066                                 break
1067                         elif test -f "$xxx.exe"; then
1068                                 sh="$xxx";
1069                                 break
1070                         fi
1071                 done
1072         fi
1073         ;;
1074 esac
1075
1076 case "$sh" in
1077 '')     cat <<EOM >&2
1078 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1079
1080 Usually it's in /bin/sh.  How did you even get this far?
1081 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1082 we'll try to straighten this all out.
1083 EOM
1084         exit 1
1085         ;;
1086 esac
1087
1088 : see if sh knows # comments
1089 if `$sh -c '#' >/dev/null 2>&1`; then
1090         shsharp=true
1091         spitshell=cat
1092         xcat=/bin/cat
1093         test -f $xcat || xcat=/usr/bin/cat
1094         echo "#!$xcat" >try
1095         $eunicefix try
1096         chmod +x try
1097         ./try > today
1098         if test -s today; then
1099                 sharpbang='#!'
1100         else
1101                 echo "#! $xcat" > try
1102                 $eunicefix try
1103                 chmod +x try
1104                 ./try > today
1105                 if test -s today; then
1106                         sharpbang='#! '
1107                 else
1108                         sharpbang=': use '
1109                 fi
1110         fi
1111 else
1112         echo " "
1113         echo "Your $sh doesn't grok # comments--I will strip them later on."
1114         shsharp=false
1115         cd ..
1116         echo "exec grep -v '^[  ]*#'" >spitshell
1117         chmod +x spitshell
1118         $eunicefix spitshell
1119         spitshell=`pwd`/spitshell
1120         cd UU
1121         echo "I presume that if # doesn't work, #! won't work either!"
1122         sharpbang=': use '
1123 fi
1124 rm -f try today
1125
1126 : figure out how to guarantee sh startup
1127 case "$startsh" in
1128 '') startsh=${sharpbang}${sh} ;;
1129 *)
1130 esac
1131 cat >try <<EOSS
1132 $startsh
1133 set abc
1134 test "$?abc" != 1
1135 EOSS
1136
1137 chmod +x try
1138 $eunicefix try
1139 if ./try; then
1140         : echo "Yup, it does."
1141 else
1142         echo "Hmm... '$startsh' does not guarantee sh startup..."
1143         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1144 fi
1145 rm -f try
1146
1147
1148 : Save command line options in file UU/cmdline.opt for later use in
1149 : generating config.sh.
1150 cat > cmdline.opt <<EOSH
1151 # Configure command line arguments.
1152 config_arg0='$0'
1153 config_args='$*'
1154 config_argc=$#
1155 EOSH
1156 argn=1
1157 for arg in "$@"; do
1158         cat >>cmdline.opt <<EOSH
1159 config_arg$argn='$arg'
1160 EOSH
1161         argn=`expr $argn + 1`
1162 done
1163
1164 : produce awk script to parse command line options
1165 cat >options.awk <<'EOF'
1166 BEGIN {
1167         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1168
1169         len = length(optstr);
1170         for (i = 1; i <= len; i++) {
1171                 c = substr(optstr, i, 1);
1172                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1173                 if (a == ":") {
1174                         arg[c] = 1;
1175                         i++;
1176                 }
1177                 opt[c] = 1;
1178         }
1179 }
1180 {
1181         expect = 0;
1182         str = $0;
1183         if (substr(str, 1, 1) != "-") {
1184                 printf("'%s'\n", str);
1185                 next;
1186         }
1187         len = length($0);
1188         for (i = 2; i <= len; i++) {
1189                 c = substr(str, i, 1);
1190                 if (!opt[c]) {
1191                         printf("-%s\n", substr(str, i));
1192                         next;
1193                 }
1194                 printf("-%s\n", c);
1195                 if (arg[c]) {
1196                         if (i < len)
1197                                 printf("'%s'\n", substr(str, i + 1));
1198                         else
1199                                 expect = 1;
1200                         next;
1201                 }
1202         }
1203 }
1204 END {
1205         if (expect)
1206                 print "?";
1207 }
1208 EOF
1209
1210 : process the command line options
1211 set X `for arg in "$@"; do echo "X$arg"; done |
1212         sed -e s/X// | awk -f options.awk`
1213 eval "set $*"
1214 shift
1215 rm -f options.awk
1216
1217 : set up default values
1218 fastread=''
1219 reuseval=false
1220 config_sh=''
1221 alldone=''
1222 error=''
1223 silent=''
1224 extractsh=''
1225 override=''
1226 knowitall=''
1227 rm -f optdef.sh posthint.sh
1228 cat >optdef.sh <<EOS
1229 $startsh
1230 EOS
1231
1232
1233 : option parsing
1234 while test $# -gt 0; do
1235         case "$1" in
1236         -d) shift; fastread=yes;;
1237         -e) shift; alldone=cont;;
1238         -f)
1239                 shift
1240                 cd ..
1241                 if test -r "$1"; then
1242                         config_sh="$1"
1243                 else
1244                         echo "$me: cannot read config file $1." >&2
1245                         error=true
1246                 fi
1247                 cd UU
1248                 shift;;
1249         -h) shift; error=true;;
1250         -r) shift; reuseval=true;;
1251         -s) shift; silent=true; realsilent=true;;
1252         -E) shift; alldone=exit;;
1253         -K) shift; knowitall=true;;
1254         -O) shift; override=true;;
1255         -S) shift; silent=true; extractsh=true;;
1256         -D)
1257                 shift
1258                 case "$1" in
1259                 *=)
1260                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1261                         echo "$me: ignoring -D $1" >&2
1262                         ;;
1263                 *=*) echo "$1" | \
1264                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1265                 *) echo "$1='define'" >> optdef.sh;;
1266                 esac
1267                 shift
1268                 ;;
1269         -U)
1270                 shift
1271                 case "$1" in
1272                 *=) echo "$1" >> optdef.sh;;
1273                 *=*)
1274                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1275                         echo "$me: ignoring -U $1" >&2
1276                         ;;
1277                 *) echo "$1='undef'" >> optdef.sh;;
1278                 esac
1279                 shift
1280                 ;;
1281         -A)
1282             shift
1283             xxx=''
1284             yyy="$1"
1285             zzz=''
1286             uuu=undef
1287             case "$yyy" in
1288             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1289                  case "$zzz" in
1290                  *:*) zzz='' ;;
1291                  *)   xxx=append
1292                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1293                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1294                  esac
1295                  ;;
1296             esac
1297             case "$xxx" in
1298             '')  case "$yyy" in
1299                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1300                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1301                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1302                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1303                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1304                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1305                  esac
1306                  ;;       
1307             esac
1308             case "$xxx" in
1309             append)
1310                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1311             clear)
1312                 echo "$yyy=''"                  >> posthint.sh ;;
1313             define)
1314                 case "$zzz" in
1315                 '') zzz=define ;;
1316                 esac
1317                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1318             eval)
1319                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1320             prepend)
1321                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1322             undef)
1323                 case "$zzz" in
1324                 '') zzz="$uuu" ;;
1325                 esac
1326                 echo "$yyy=$zzz"                >> posthint.sh ;;
1327             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1328             esac
1329             shift
1330             ;;
1331         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1332             exit 0;;
1333         --) break;;
1334         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1335         *) break;;
1336         esac
1337 done
1338
1339 case "$error" in
1340 true)
1341         cat >&2 <<EOM
1342 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1343                  [-U symbol] [-U symbol=] [-A command:symbol...]
1344   -d : use defaults for all answers.
1345   -e : go on without questioning past the production of config.sh.
1346   -f : specify an alternate default configuration file.
1347   -h : print this help message and exit (with an error status).
1348   -r : reuse C symbols value if possible (skips costly nm extraction).
1349   -s : silent mode, only echoes questions and essential information.
1350   -D : define symbol to have some value:
1351          -D symbol         symbol gets the value 'define'
1352          -D symbol=value   symbol gets the value 'value'
1353   -E : stop at the end of questions, after having produced config.sh.
1354   -K : do not use unless you know what you are doing.
1355   -O : let -D and -U override definitions from loaded configuration file.
1356   -S : perform variable substitutions on all .SH files (can mix with -f)
1357   -U : undefine symbol:
1358          -U symbol    symbol gets the value 'undef'
1359          -U symbol=   symbol gets completely empty
1360   -A : manipulate symbol after the platform specific hints have been applied:
1361          -A symbol=value                append " "value to symbol
1362          -A append:symbol=value         append value to symbol
1363          -A define:symbol=value         define symbol to have value
1364          -A clear:symbol                define symbol to be ''
1365          -A define:symbol               define symbol to be 'define'
1366          -A eval:symbol=value           define symbol to be eval of value
1367          -A prepend:symbol=value        prepend value to symbol
1368          -A undef:symbol                define symbol to be 'undef'
1369          -A undef:symbol=               define symbol to be ''
1370   -V : print version number and exit (with a zero status).
1371 EOM
1372         exit 1
1373         ;;
1374 esac
1375
1376 : Sanity checks
1377 case "$fastread$alldone" in
1378 yescont|yesexit) ;;
1379 *)
1380         case "$extractsh" in
1381         true) ;;
1382         *)
1383                 if test ! -t 0; then
1384                         echo "Say 'sh Configure', not 'sh <Configure'"
1385                         exit 1
1386                 fi
1387                 ;;
1388         esac
1389         ;;
1390 esac
1391
1392 exec 4>&1
1393 case "$silent" in
1394 true) exec 1>/dev/null;;
1395 esac
1396
1397 : run the defines and the undefines, if any, but leave the file out there...
1398 touch optdef.sh
1399 . ./optdef.sh
1400 : create the posthint manipulation script and leave the file out there...
1401 touch posthint.sh
1402
1403 : set package name
1404 package=perl5
1405 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1406 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1407 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1408 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1409 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1410 esac
1411
1412 : Some greps do not return status, grrr.
1413 echo "grimblepritz" >grimble
1414 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1415         contains=contains
1416 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1417         contains=grep
1418 else
1419         contains=contains
1420 fi
1421 rm -f grimble
1422 : the following should work in any shell
1423 case "$contains" in
1424 contains*)
1425         echo " "
1426         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1427         cat >contains <<'EOSS'
1428 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1429 EOSS
1430 chmod +x contains
1431 esac
1432
1433 : Find the path to the source tree
1434 case "$src" in
1435 '') case "$0" in
1436     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1437          case "$src" in
1438          /*)    ;;
1439          .)     ;;
1440          *)     src=`cd ../$src && pwd` ;;
1441          esac
1442          ;;
1443     *)   src='.';;
1444     esac;;
1445 esac
1446 case "$src" in
1447 '')     src=/
1448         rsrc=/
1449         ;;
1450 /*) rsrc="$src";;
1451 *) rsrc="../$src";;
1452 esac
1453 if test -f $rsrc/Configure && \
1454         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1455 then
1456    : found it, so we are ok.
1457 else
1458         rsrc=''
1459         for src in . .. ../.. ../../.. ../../../..; do
1460                 if test -f ../$src/Configure && \
1461                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1462                 then
1463                         rsrc=../$src
1464                         break
1465                 fi
1466         done
1467 fi
1468 case "$rsrc" in
1469 '')
1470         cat <<EOM >&4
1471
1472 Sorry, I can't seem to locate the source dir for $package.  Please start
1473 Configure with an explicit path -- i.e. /some/path/Configure.
1474
1475 EOM
1476         exit 1
1477         ;;
1478 ../.)   rsrc='..';;
1479 *)
1480         echo " "
1481         echo "Sources for $package found in \"$src\"." >&4
1482         ;;
1483 esac
1484
1485 : script used to extract .SH files with variable substitutions
1486 cat >extract <<'EOS'
1487 CONFIGDOTSH=true
1488 echo "Doing variable substitutions on .SH files..."
1489 if test -f $src/MANIFEST; then
1490         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1491 else
1492         echo "(Looking for .SH files under the source directory.)"
1493         set x `(cd $src; find . -name "*.SH" -print)`
1494 fi
1495 shift
1496 case $# in
1497 0) set x `(cd $src; echo *.SH)`; shift;;
1498 esac
1499 if test ! -f $src/$1; then
1500         shift
1501 fi
1502 mkdir_p='
1503 name=$1;
1504 create="";
1505 while test $name; do
1506         if test ! -d "$name"; then
1507                 create="$name $create";
1508                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1509                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1510         else
1511                 name="";
1512         fi;
1513 done;
1514 for file in $create; do
1515         mkdir $file;
1516 done
1517 '
1518 for file in $*; do
1519         case "$src" in
1520         ".")
1521                 case "$file" in
1522                 */*)
1523                         dir=`expr X$file : 'X\(.*\)/'`
1524                         file=`expr X$file : 'X.*/\(.*\)'`
1525                         (cd $dir && . ./$file)
1526                         ;;
1527                 *)
1528                         . ./$file
1529                         ;;
1530                 esac
1531                 ;;
1532         *)
1533                 case "$file" in
1534                 */*)
1535                         dir=`expr X$file : 'X\(.*\)/'`
1536                         file=`expr X$file : 'X.*/\(.*\)'`
1537                         (set x $dir; shift; eval $mkdir_p)
1538                         sh <$src/$dir/$file
1539                         ;;
1540                 *)
1541                         sh <$src/$file
1542                         ;;
1543                 esac
1544                 ;;
1545         esac
1546 done
1547 if test -f $src/config_h.SH; then
1548         if test ! -f config.h; then
1549         : oops, they left it out of MANIFEST, probably, so do it anyway.
1550         . $src/config_h.SH
1551         fi
1552 fi
1553 EOS
1554
1555 : extract files and exit if asked to do so
1556 case "$extractsh" in
1557 true)
1558         case "$realsilent" in
1559         true) ;;
1560         *) exec 1>&4;;
1561         esac
1562         case "$config_sh" in
1563         '') config_sh='config.sh';;
1564         esac
1565         echo " "
1566         echo "Fetching answers from $config_sh..."
1567         cd ..
1568         . $config_sh
1569         test "$override" && . ./optdef.sh
1570         echo " "
1571         . UU/extract
1572         rm -rf UU
1573         echo "Done."
1574         exit 0
1575         ;;
1576 esac
1577
1578 : Eunice requires " " instead of "", can you believe it
1579 echo " "
1580 : Here we go...
1581 echo "Beginning of configuration questions for $package."
1582
1583 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1584
1585 : first determine how to suppress newline on echo command
1586 echo " "
1587 echo "Checking echo to see how to suppress newlines..."
1588 (echo "hi there\c" ; echo " ") >.echotmp
1589 if $contains c .echotmp >/dev/null 2>&1 ; then
1590         echo "...using -n."
1591         n='-n'
1592         c=''
1593 else
1594         cat <<'EOM'
1595 ...using \c
1596 EOM
1597         n=''
1598         c='\c'
1599 fi
1600 echo $n "The star should be here-->$c"
1601 echo '*'
1602 rm -f .echotmp
1603
1604 : Now test for existence of everything in MANIFEST
1605 echo " "
1606 if test -f $rsrc/MANIFEST; then
1607         echo "First let's make sure your kit is complete.  Checking..." >&4
1608         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1609         rm -f missing
1610         tmppwd=`pwd`
1611         for filelist in x??; do
1612                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1613         done
1614         if test -s missing; then
1615                 cat missing >&4
1616                 cat >&4 <<'EOM'
1617
1618 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1619
1620 You have the option of continuing the configuration process, despite the
1621 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1622 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1623 and contact the author (perlbug@perl.org).
1624
1625 EOM
1626                 echo $n "Continue? [n] $c" >&4
1627                 read ans
1628                 case "$ans" in
1629                 y*)
1630                         echo "Continuing..." >&4
1631                         rm -f missing
1632                         ;;
1633                 *)
1634                         echo "ABORTING..." >&4
1635                         kill $$
1636                         ;;
1637                 esac
1638         else
1639                 echo "Looks good..."
1640         fi
1641 else
1642         echo "There is no MANIFEST file.  I hope your kit is complete !"
1643 fi
1644 rm -f missing x??
1645
1646 echo " "
1647 : Find the appropriate value for a newline for tr
1648 if test -n "$DJGPP"; then
1649        trnl='\012'
1650 fi
1651 if test X"$trnl" = X; then
1652         case "`echo foo|tr '\n' x 2>/dev/null`" in
1653         foox) trnl='\n' ;;
1654         esac
1655 fi
1656 if test X"$trnl" = X; then
1657         case "`echo foo|tr '\012' x 2>/dev/null`" in
1658         foox) trnl='\012' ;;
1659         esac
1660 fi
1661 if test X"$trnl" = X; then
1662         cat <<EOM >&2
1663
1664 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1665
1666 EOM
1667         exit 1
1668 fi
1669
1670 : compute the number of columns on the terminal for proper question formatting
1671 case "$COLUMNS" in
1672 '') COLUMNS='80';;
1673 esac
1674
1675 : set up the echo used in my read
1676 myecho="case \"\$xxxm\" in
1677 '') echo $n \"\$rp $c\" >&4;;
1678 *) case \"\$rp\" in
1679         '') echo $n \"[\$xxxm] $c\";;
1680         *)
1681                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1682                         echo \"\$rp\" >&4
1683                         echo $n \"[\$xxxm] $c\" >&4
1684                 else
1685                         echo $n \"\$rp [\$xxxm] $c\" >&4
1686                 fi
1687                 ;;
1688         esac;;
1689 esac"
1690
1691 : now set up to do reads with possible shell escape and default assignment
1692 cat <<EOSC >myread
1693 $startsh
1694 xxxm=\$dflt
1695 $myecho
1696 ans='!'
1697 case "\$fastread" in
1698 yes) case "\$dflt" in
1699         '') ;;
1700         *) ans='';
1701                 case "\$silent-\$rp" in
1702                 true-) ;;
1703                 *) echo " " >&4;;
1704                 esac;;
1705         esac;;
1706 *) case "\$silent" in
1707         true) case "\$rp" in
1708                 '') ans='';;
1709                 esac;;
1710         esac;;
1711 esac
1712 while expr "X\$ans" : "X!" >/dev/null; do
1713         read answ
1714         set x \$xxxm
1715         shift
1716         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1717         case  "\$answ" in
1718         "!")
1719                 sh 1>&4
1720                 echo " "
1721                 $myecho
1722                 ;;
1723         !*)
1724                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1725                 shift
1726                 sh 1>&4 -c "\$*"
1727                 echo " "
1728                 $myecho
1729                 ;;
1730         "\$ans")
1731                 case "\$ans" in
1732                 \\&*)
1733                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1734                         shift
1735                         case "\$1" in
1736                         -d)
1737                                 fastread=yes
1738                                 echo "(OK, I'll run with -d after this question.)" >&4
1739                                 ;;
1740                         -*)
1741                                 echo "*** Sorry, \$1 not supported yet." >&4
1742                                 ;;
1743                         esac
1744                         $myecho
1745                         ans=!
1746                         ;;
1747                 esac;;
1748         *)
1749                 case "\$aok" in
1750                 y)
1751                         echo "*** Substitution done -- please confirm."
1752                         xxxm="\$ans"
1753                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1754                         xxxm="\$ans"
1755                         ans=!
1756                         ;;
1757                 *)
1758                         echo "*** Error -- try again."
1759                         ans=!
1760                         ;;
1761                 esac
1762                 $myecho
1763                 ;;
1764         esac
1765         case "\$ans\$xxxm\$nostick" in
1766         '')
1767                 ans=!
1768                 $myecho
1769                 ;;
1770         esac
1771 done
1772 case "\$ans" in
1773 '') ans="\$xxxm";;
1774 esac
1775 EOSC
1776
1777 : create .config dir to save info across Configure sessions
1778 test -d ../.config || mkdir ../.config
1779 cat >../.config/README <<EOF
1780 This directory created by Configure to save information that should
1781 persist across sessions for $package.
1782
1783 You may safely delete it if you wish.
1784 EOF
1785
1786 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1787 case "$usedevel" in
1788 $define|true|[yY]*) ;;
1789 *) case "$xversion" in
1790    *[13579])
1791         cat >&4 <<EOH
1792 *** WHOA THERE!!! ***
1793
1794     This is an UNSTABLE DEVELOPMENT release.
1795     The version of this $package distribution is $xversion, that is, odd,
1796     (as opposed to even) and that signifies a development release.
1797     If you want a maintenance release, you want an even-numbered version.
1798
1799     Do ***NOT*** install this into production use.
1800     Data corruption and crashes are possible.
1801
1802     It is most seriously suggested that you do not continue any further
1803     unless you want to help in developing and debugging Perl.
1804
1805 EOH
1806         rp='Do you really want to continue?'
1807         dflt='n'
1808         . ./myread
1809         case "$ans" in
1810         [yY]) echo >&4 "Okay, continuing." ;;
1811         *) echo >&4 "Okay, bye."
1812            exit 1
1813            ;;
1814         esac
1815         ;;
1816     esac
1817     ;;
1818 esac
1819
1820 : general instructions
1821 needman=true
1822 firsttime=true
1823 user=`(logname) 2>/dev/null`
1824 case "$user" in
1825 '') user=`whoami 2>&1`;;
1826 esac
1827 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1828         firsttime=false
1829         echo " "
1830         rp='Would you like to see the instructions?'
1831         dflt=n
1832         . ./myread
1833         case "$ans" in
1834         [yY]*) ;;
1835         *) needman=false;;
1836         esac
1837 fi
1838 if $needman; then
1839         cat <<EOH
1840
1841 This installation shell script will examine your system and ask you questions
1842 to determine how the perl5 package should be installed. If you get
1843 stuck on a question, you may use a ! shell escape to start a subshell or
1844 execute a command.  Many of the questions will have default answers in square
1845 brackets; typing carriage return will give you the default.
1846
1847 On some of the questions which ask for file or directory names you are allowed
1848 to use the ~name construct to specify the login directory belonging to "name",
1849 even if you don't have a shell which knows about that.  Questions where this is
1850 allowed will be marked "(~name ok)".
1851
1852 EOH
1853         rp=''
1854         dflt='Type carriage return to continue'
1855         . ./myread
1856         cat <<'EOH'
1857
1858 The prompter used in this script allows you to use shell variables and
1859 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1860 in the default answer, as if the default line was a set of arguments given to a
1861 script shell.  This means you may also use $* to repeat the whole default line,
1862 so you do not have to re-type everything to add something to the default.
1863
1864 Everytime there is a substitution, you will have to confirm.  If there is an
1865 error (e.g. an unmatched backtick), the default answer will remain unchanged
1866 and you will be prompted again.
1867
1868 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1869 the questions and use the computed defaults (or the previous answers if there
1870 was already a config.sh file). Type 'Configure -h' for a list of options.
1871 You may also start interactively and then answer '& -d' at any prompt to turn
1872 on the non-interactive behaviour for the remainder of the execution.
1873
1874 EOH
1875         . ./myread
1876         cat <<EOH
1877
1878 Much effort has been expended to ensure that this shell script will run on any
1879 Unix system.  If despite that it blows up on yours, your best bet is to edit
1880 Configure and run it again.  If you can't run Configure for some reason,
1881 you'll have to generate a config.sh file by hand.  Whatever problems you
1882 have, let me (perlbug@perl.org) know how I blew it.
1883
1884 This installation script affects things in two ways:
1885
1886 1) it may do direct variable substitutions on some of the files included
1887    in this kit.
1888 2) it builds a config.h file for inclusion in C programs.  You may edit
1889    any of these files as the need arises after running this script.
1890
1891 If you make a mistake on a question, there is no easy way to back up to it
1892 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1893 files.  Configure will offer to let you do this before it runs the SH files.
1894
1895 EOH
1896         dflt='Type carriage return to continue'
1897         . ./myread
1898         case "$firsttime" in
1899         true) echo $user >>../.config/instruct;;
1900         esac
1901 fi
1902
1903 : find out where common programs are
1904 echo " "
1905 echo "Locating common programs..." >&4
1906 cat <<EOSC >loc
1907 $startsh
1908 case \$# in
1909 0) exit 1;;
1910 esac
1911 thing=\$1
1912 shift
1913 dflt=\$1
1914 shift
1915 for dir in \$*; do
1916         case "\$thing" in
1917         .)
1918         if test -d \$dir/\$thing; then
1919                 echo \$dir
1920                 exit 0
1921         fi
1922         ;;
1923         *)
1924         for thisthing in \$dir/\$thing; do
1925                 : just loop through to pick last item
1926         done
1927         if test -f \$thisthing; then
1928                 echo \$thisthing
1929                 exit 0
1930         elif test -f \$dir/\$thing.exe; then
1931                 if test -n "$DJGPP"; then
1932                         echo \$dir/\$thing.exe
1933                 else
1934                         : on Eunice apparently
1935                         echo \$dir/\$thing
1936                 fi
1937                 exit 0
1938         fi
1939         ;;
1940         esac
1941 done
1942 echo \$dflt
1943 exit 1
1944 EOSC
1945 chmod +x loc
1946 $eunicefix loc
1947 loclist="
1948 awk
1949 cat
1950 comm
1951 cp
1952 echo
1953 expr
1954 grep
1955 ls
1956 make
1957 mkdir
1958 rm
1959 sed
1960 sort
1961 touch
1962 tr
1963 uniq
1964 "
1965 trylist="
1966 Mcc
1967 ar
1968 byacc
1969 cpp
1970 csh
1971 date
1972 egrep
1973 gzip
1974 less
1975 ln
1976 more
1977 nm
1978 nroff
1979 pg
1980 test
1981 uname
1982 zip
1983 "
1984 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1985 pth="$pth /lib /usr/lib"
1986 for file in $loclist; do
1987         eval xxx=\$$file
1988         case "$xxx" in
1989         /*|?:[\\/]*)
1990                 if test -f "$xxx"; then
1991                         : ok
1992                 else
1993                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1994                         xxx=`./loc $file $file $pth`
1995                 fi
1996                 ;;
1997         '') xxx=`./loc $file $file $pth`;;
1998         *) xxx=`./loc $xxx $xxx $pth`;;
1999         esac
2000         eval $file=$xxx
2001         eval _$file=$xxx
2002         case "$xxx" in
2003         /*)
2004                 echo $file is in $xxx.
2005                 ;;
2006         ?:[\\/]*)
2007                 echo $file is in $xxx.
2008                 ;;
2009         *)
2010                 echo "I don't know where '$file' is, and my life depends on it." >&4
2011                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2012                 exit 1
2013                 ;;
2014         esac
2015 done
2016 echo " "
2017 echo "Don't worry if any of the following aren't found..."
2018 say=offhand
2019 for file in $trylist; do
2020         eval xxx=\$$file
2021         case "$xxx" in
2022         /*|?:[\\/]*)
2023                 if test -f "$xxx"; then
2024                         : ok
2025                 else
2026                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2027                         xxx=`./loc $file $file $pth`
2028                 fi
2029                 ;;
2030         '') xxx=`./loc $file $file $pth`;;
2031         *) xxx=`./loc $xxx $xxx $pth`;;
2032         esac
2033         eval $file=$xxx
2034         eval _$file=$xxx
2035         case "$xxx" in
2036         /*)
2037                 echo $file is in $xxx.
2038                 ;;
2039         ?:[\\/]*)
2040                 echo $file is in $xxx.
2041                 ;;
2042         *)
2043                 echo "I don't see $file out there, $say."
2044                 say=either
2045                 ;;
2046         esac
2047 done
2048 case "$egrep" in
2049 egrep)
2050         echo "Substituting grep for egrep."
2051         egrep=$grep
2052         ;;
2053 esac
2054 case "$ln" in
2055 ln)
2056         echo "Substituting cp for ln."
2057         ln=$cp
2058         ;;
2059 esac
2060 case "$test" in
2061 test)
2062         echo "Hopefully test is built into your sh."
2063         ;;
2064 *)
2065         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2066                 echo "Using the test built into your sh."
2067                 test=test
2068                 _test=test
2069         fi
2070         ;;
2071 esac
2072 case "$echo" in
2073 echo)
2074         echo "Hopefully echo is built into your sh."
2075         ;;
2076 '') ;;
2077 *)
2078         echo " "
2079 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2080         $echo $n "hi there$c" >foo1
2081         echo $n "hi there$c" >foo2
2082         if cmp foo1 foo2 >/dev/null 2>&1; then
2083                 echo "They are compatible.  In fact, they may be identical."
2084         else
2085                 case "$n" in
2086                 '-n') n='' c='\c';;
2087                 *) n='-n' c='';;
2088                 esac
2089                 cat <<FOO
2090 They are not compatible!  You are probably running ksh on a non-USG system.
2091 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2092 have echo built in and we may have to run some Bourne shell scripts.  That
2093 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2094
2095 FOO
2096                 $echo $n "The star should be here-->$c"
2097                 $echo "*"
2098         fi
2099         $rm -f foo1 foo2
2100         ;;
2101 esac
2102
2103 cat <<EOS >checkcc
2104 $startsh
2105 EOS
2106 cat <<'EOSC' >>checkcc
2107 case "$cc" in
2108 '') ;;
2109 *)  $rm -f try try.*
2110     $cat >try.c <<EOM
2111 int main(int argc, char *argv[]) {
2112   return 0;
2113 }
2114 EOM
2115     if $cc -o try $ccflags try.c; then
2116        :
2117     else
2118         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2119         despair=yes
2120         trygcc=yes
2121         case "$cc" in
2122         *gcc*) trygcc=no ;;
2123         esac
2124         case "`$cc -v -c try.c 2>&1`" in
2125         *gcc*) trygcc=no ;;
2126         esac
2127         if $test X"$trygcc" = Xyes; then
2128             if gcc -o try -c try.c; then
2129                 echo " "
2130                 echo "You seem to have a working gcc, though." >&4
2131                 rp="Would you like to use it?"
2132                 dflt=y
2133                 if $test -f myread; then
2134                     . ./myread
2135                 else
2136                     if $test -f UU/myread; then
2137                         . ./UU/myread
2138                     else
2139                         echo "Cannot find myread, sorry.  Aborting." >&2
2140                         exit 1
2141                     fi
2142                 fi  
2143                 case "$ans" in
2144                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2145                 esac
2146             fi
2147         fi
2148         if $test X"$despair" = Xyes; then
2149             $cat >&4 <<EOM
2150 You need to find a working C compiler.
2151 Either (purchase and) install the C compiler supplied by your OS vendor,
2152 or for a free C compiler try http://gcc.gnu.org/
2153 I cannot continue any further, aborting.
2154 EOM
2155             exit 1
2156         fi
2157     fi
2158     $rm -f try try.*
2159     ;;
2160 esac
2161 EOSC
2162
2163 : determine whether symbolic links are supported
2164 echo " "
2165 $touch blurfl
2166 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2167         echo "Symbolic links are supported." >&4
2168         lns="$ln -s"
2169 else
2170         echo "Symbolic links are NOT supported." >&4
2171         lns="$ln"
2172 fi
2173 $rm -f blurfl sym
2174
2175 : determine whether symbolic links are supported
2176 echo " "
2177 case "$lns" in
2178 *"ln -s")
2179         echo "Checking how to test for symbolic links..." >&4
2180         $lns blurfl sym
2181         if $test "X$issymlink" = X; then
2182                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2183                 if test $? = 0; then
2184                         issymlink="test -h"
2185                 fi              
2186         fi
2187         if $test "X$issymlink" = X; then
2188                 if  $test -h >/dev/null 2>&1; then
2189                         issymlink="$test -h"
2190                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2191                 fi              
2192         fi
2193         if $test "X$issymlink" = X; then
2194                 if $test -L sym 2>/dev/null; then
2195                         issymlink="$test -L"
2196                 fi
2197         fi
2198         if $test "X$issymlink" != X; then
2199                 echo "You can test for symbolic links with '$issymlink'." >&4
2200         else
2201                 echo "I do not know how you can test for symbolic links." >&4
2202         fi
2203         $rm -f blurfl sym
2204         ;;
2205 *)      echo "No symbolic links, so not testing for their testing..." >&4
2206         ;;
2207 esac
2208 echo " "
2209
2210
2211 case "$mksymlinks" in
2212 $define|true|[yY]*)
2213         case "$src" in
2214         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2215                 exit 1
2216                 ;;
2217         *)      case "$lns:$issymlink" in
2218                 *"ln -s:"*"test -"?)
2219                         echo "Creating the symbolic links..." >&4
2220                         echo "(First creating the subdirectories...)" >&4
2221                         cd ..
2222                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2223                                 read directory
2224                                 test -z "$directory" && break
2225                                 mkdir -p $directory
2226                         done
2227                         # Sanity check 1.
2228                         if test ! -d t/base; then
2229                                 echo "Failed to create the subdirectories.  Aborting." >&4
2230                                 exit 1
2231                         fi
2232                         echo "(Then creating the symlinks...)" >&4
2233                         awk '{print $1}' $src/MANIFEST | while true; do
2234                                 read filename
2235                                 test -z "$filename" && break
2236                                 if test -f $filename; then
2237                                         if $issymlink $filename; then
2238                                                 rm -f $filename
2239                                         fi
2240                                 fi
2241                                 if test -f $filename; then
2242                                         echo "$filename already exists, not symlinking."
2243                                 else
2244                                         ln -s $src/$filename $filename
2245                                 fi
2246                         done
2247                         # Sanity check 2.
2248                         if test ! -f t/base/commonsense.t; then
2249                                 echo "Failed to create the symlinks.  Aborting." >&4
2250                                 exit 1
2251                         fi
2252                         cd UU
2253                         ;;
2254                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2255                         ;;
2256                 esac
2257                 ;;
2258         esac
2259         ;;
2260 esac
2261
2262 : see whether [:lower:] and [:upper:] are supported character classes
2263 echo " "
2264 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2265 ABYZ)
2266         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2267         up='[:upper:]'
2268         low='[:lower:]'
2269         ;;
2270 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2271         # (0xc9 and 0xd1), therefore that is a nice testing point.
2272         if test "X$up" = X -o "X$low" = X; then
2273             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2274             ij) up='[A-Z]'
2275                 low='[a-z]'
2276                 ;;
2277             esac
2278         fi
2279         if test "X$up" = X -o "X$low" = X; then
2280             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2281             ij) up='A-Z'
2282                 low='a-z'
2283                 ;;
2284             esac
2285         fi
2286         if test "X$up" = X -o "X$low" = X; then
2287             case "`echo IJ | od -x 2>/dev/null`" in
2288             *C9D1*|*c9d1*)
2289                 echo "Hey, this might be EBCDIC." >&4
2290                 if test "X$up" = X -o "X$low" = X; then
2291                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2292                     ij) up='[A-IJ-RS-Z]'
2293                         low='[a-ij-rs-z]'
2294                         ;;
2295                     esac
2296                 fi
2297                 if test "X$up" = X -o "X$low" = X; then
2298                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2299                     ij) up='A-IJ-RS-Z'
2300                         low='a-ij-rs-z'
2301                         ;;
2302                     esac
2303                 fi
2304                 ;;
2305             esac
2306         fi
2307 esac
2308 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2309 ij)
2310     echo "Using $up and $low to convert case." >&4
2311     ;;
2312 *)
2313     echo "I don't know how to translate letters from upper to lower case." >&4
2314     echo "Your tr is not acting any way I know of." >&4
2315     exit 1
2316     ;;
2317 esac
2318 : set up the translation script tr, must be called with ./tr of course
2319 cat >tr <<EOSC
2320 $startsh
2321 case "\$1\$2" in
2322 '[A-Z][a-z]') exec $tr '$up' '$low';;
2323 '[a-z][A-Z]') exec $tr '$low' '$up';;
2324 esac
2325 exec $tr "\$@"
2326 EOSC
2327 chmod +x tr
2328 $eunicefix tr
2329
2330 : Try to determine whether config.sh was made on this system
2331 case "$config_sh" in
2332 '')
2333 myuname=`$uname -a 2>/dev/null`
2334 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2335 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2336 # because the A-Z/a-z are not consecutive.
2337 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2338         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2339 newmyuname="$myuname"
2340 dflt=n
2341 case "$knowitall" in
2342 '')
2343         if test -f ../config.sh; then
2344                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2345                         eval "`grep myuname= ../config.sh`"
2346                 fi
2347                 if test "X$myuname" = "X$newmyuname"; then
2348                         dflt=y
2349                 fi
2350         fi
2351         ;;
2352 *) dflt=y;;
2353 esac
2354
2355 : Get old answers from old config file if Configure was run on the
2356 : same system, otherwise use the hints.
2357 hint=default
2358 cd ..
2359 if test -f config.sh; then
2360         echo " "
2361         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2362         . UU/myread
2363         case "$ans" in
2364         n*|N*) echo "OK, I'll ignore it."
2365                 mv config.sh config.sh.old
2366                 myuname="$newmyuname"
2367                 ;;
2368         *)  echo "Fetching default answers from your old config.sh file..." >&4
2369                 tmp_n="$n"
2370                 tmp_c="$c"
2371                 tmp_sh="$sh"
2372                 . ./config.sh
2373                 cp config.sh UU
2374                 n="$tmp_n"
2375                 c="$tmp_c"
2376                 : Older versions did not always set $sh.  Catch re-use of such
2377                 : an old config.sh.
2378                 case "$sh" in
2379                 '') sh="$tmp_sh" ;;
2380                 esac
2381                 hint=previous
2382                 ;;
2383         esac
2384 fi
2385 . ./UU/checkcc
2386 if test ! -f config.sh; then
2387         $cat <<EOM
2388
2389 First time through, eh?  I have some defaults handy for some systems
2390 that need some extra help getting the Configure answers right:
2391
2392 EOM
2393         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2394         dflt=''
2395         : Half the following guesses are probably wrong... If you have better
2396         : tests or hints, please send them to perlbug@perl.org
2397         : The metaconfig authors would also appreciate a copy...
2398         $test -f /irix && osname=irix
2399         $test -f /xenix && osname=sco_xenix
2400         $test -f /dynix && osname=dynix
2401         $test -f /dnix && osname=dnix
2402         $test -f /lynx.os && osname=lynxos
2403         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2404         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2405         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2406         $test -f /bin/mips && /bin/mips && osname=mips
2407         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2408                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2409         $test -d /usr/apollo/bin && osname=apollo
2410         $test -f /etc/saf/_sactab && osname=svr4
2411         $test -d /usr/include/minix && osname=minix
2412         if $test -d /MachTen -o -d /MachTen_Folder; then
2413                 osname=machten
2414                 if $test -x /sbin/version; then
2415                         osvers=`/sbin/version | $awk '{print $2}' |
2416                         $sed -e 's/[A-Za-z]$//'`
2417                 elif $test -x /usr/etc/version; then
2418                         osvers=`/usr/etc/version | $awk '{print $2}' |
2419                         $sed -e 's/[A-Za-z]$//'`
2420                 else
2421                         osvers="$2.$3"
2422                 fi
2423         fi
2424
2425         $test -f /sys/posix.dll &&
2426                 $test -f /usr/bin/what &&
2427                 set X `/usr/bin/what /sys/posix.dll` &&
2428                 $test "$3" = UWIN &&
2429                 osname=uwin &&
2430                 osvers="$5"
2431
2432         if $test -f $uname; then
2433                 set X $myuname
2434                 shift
2435
2436                 case "$5" in
2437                 fps*) osname=fps ;;
2438                 mips*)
2439                         case "$4" in
2440                         umips) osname=umips ;;
2441                         *) osname=mips ;;
2442                         esac;;
2443                 [23]100) osname=mips ;;
2444                 next*) osname=next ;;
2445                 i386*)
2446                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2447                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2448                                 osname='sco'
2449                                 osvers=$tmp
2450                         elif $test -f /etc/kconfig; then
2451                                 osname=isc
2452                                 if test "$lns" = "$ln -s"; then
2453                                         osvers=4
2454                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2455                                         osvers=3
2456                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2457                                         osvers=2
2458                                 fi
2459                         fi
2460                         tmp=''
2461                         ;;
2462                 pc*)
2463                         if test -n "$DJGPP"; then
2464                                 osname=dos
2465                                 osvers=djgpp
2466                         fi
2467                         ;;
2468                 esac
2469
2470                 case "$1" in
2471                 aix) osname=aix
2472                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2473                         case "$tmp" in
2474                         'not found') osvers="$4"."$3" ;;
2475                         '<3240'|'<>3240') osvers=3.2.0 ;;
2476                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2477                         '=3250'|'>3250') osvers=3.2.5 ;;
2478                         *) osvers=$tmp;;
2479                         esac
2480                         ;;
2481                 bsd386) osname=bsd386
2482                         osvers=`$uname -r`
2483                         ;;
2484                 cygwin*) osname=cygwin
2485                         osvers="$3"
2486                         ;;
2487                 *dc.osx) osname=dcosx
2488                         osvers="$3"
2489                         ;;
2490                 dnix) osname=dnix
2491                         osvers="$3"
2492                         ;;
2493                 domainos) osname=apollo
2494                         osvers="$3"
2495                         ;;
2496                 dgux) osname=dgux 
2497                         osvers="$3"
2498                         ;;
2499                 dynixptx*) osname=dynixptx
2500                         osvers=`echo "$4"|sed 's/^v//'`
2501                         ;;
2502                 freebsd) osname=freebsd 
2503                         osvers="$3" ;;
2504                 genix) osname=genix ;;
2505                 hp*) osname=hpux 
2506                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2507                         ;;
2508                 irix*) osname=irix
2509                         case "$3" in
2510                         4*) osvers=4 ;;
2511                         5*) osvers=5 ;;
2512                         *)      osvers="$3" ;;
2513                         esac
2514                         ;;
2515                 linux) osname=linux
2516                         case "$3" in
2517                         *)      osvers="$3" ;;
2518                         esac
2519                         ;;
2520                 MiNT) osname=mint
2521                         ;;
2522                 netbsd*) osname=netbsd
2523                         osvers="$3"
2524                         ;;
2525                 news-os) osvers="$3"
2526                         case "$3" in
2527                         4*) osname=newsos4 ;;
2528                         *) osname=newsos ;;
2529                         esac
2530                         ;;
2531                 next*) osname=next ;;
2532                 nonstop-ux) osname=nonstopux ;;
2533                 POSIX-BC | posix-bc ) osname=posix-bc
2534                         osvers="$3"
2535                         ;;
2536                 powerux | power_ux | powermax_os | powermaxos | \
2537                 powerunix | power_unix) osname=powerux
2538                         osvers="$3"
2539                         ;;
2540                 qnx) osname=qnx
2541                         osvers="$4"
2542                         ;;
2543                 solaris) osname=solaris
2544                         case "$3" in
2545                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2546                         *)      osvers="$3" ;;
2547                         esac
2548                         ;;
2549                 sunos) osname=sunos
2550                         case "$3" in
2551                         5*) osname=solaris
2552                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2553                         *)      osvers="$3" ;;
2554                         esac
2555                         ;;
2556                 titanos) osname=titanos
2557                         case "$3" in
2558                         1*) osvers=1 ;;
2559                         2*) osvers=2 ;;
2560                         3*) osvers=3 ;;
2561                         4*) osvers=4 ;;
2562                         *)      osvers="$3" ;;
2563                         esac
2564                         ;;
2565                 ultrix) osname=ultrix
2566                         osvers="$3"
2567                         ;;
2568                 osf1|mls+)      case "$5" in
2569                                 alpha)
2570                                         osname=dec_osf
2571                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2572                                         case "$osvers" in
2573                                         [1-9].[0-9]*) ;;
2574                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2575                                         esac
2576                                         ;;
2577                         hp*)    osname=hp_osf1  ;;
2578                         mips)   osname=mips_osf1 ;;
2579                         esac
2580                         ;;
2581                 unixware) osname=svr5
2582                         osvers="$4"
2583                         ;;
2584                 uts) osname=uts
2585                         osvers="$3"
2586                         ;;
2587                 $2) case "$osname" in
2588                         *isc*) ;;
2589                         *freebsd*) ;;
2590                         svr*)
2591                                 : svr4.x or possibly later
2592                                 case "svr$3" in 
2593                                 ${osname}*)
2594                                         osname=svr$3
2595                                         osvers=$4
2596                                         ;;
2597                                 esac
2598                                 case "$osname" in
2599                                 svr4.0)
2600                                         : Check for ESIX
2601                                         if test -f /stand/boot ; then
2602                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2603                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2604                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2605                                                         if test -n "$isesix"; then
2606                                                                 osname=esix4
2607                                                         fi
2608                                                 fi
2609                                         fi
2610                                         ;;
2611                                 esac
2612                                 ;;
2613                         *)      if test -f /etc/systemid; then
2614                                         osname=sco
2615                                         set `echo $3 | $sed 's/\./ /g'` $4
2616                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2617                                                 osvers=$1.$2.$3
2618                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2619                                                 osvers=$1.$2
2620                                         elif $test -f $src/hints/sco_$1.sh; then
2621                                                 osvers=$1
2622                                         fi
2623                                 else
2624                                         case "$osname" in
2625                                         '') : Still unknown.  Probably a generic Sys V.
2626                                                 osname="sysv"
2627                                                 osvers="$3"
2628                                                 ;;
2629                                         esac
2630                                 fi
2631                                 ;;
2632                         esac
2633                         ;;
2634                 *)      case "$osname" in
2635                         '') : Still unknown.  Probably a generic BSD.
2636                                 osname="$1"
2637                                 osvers="$3"
2638                                 ;;
2639                         esac
2640                         ;;
2641                 esac
2642         else
2643                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2644                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2645                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2646                                 osname=news_os
2647                         fi
2648                         $rm -f UU/kernel.what
2649                 elif test -d c:/.; then
2650                         set X $myuname
2651                         osname=os2
2652                         osvers="$5"
2653                 fi
2654         fi
2655         
2656         : Now look for a hint file osname_osvers, unless one has been
2657         : specified already.
2658         case "$hintfile" in
2659         ''|' ')
2660                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2661                 : Also try without trailing minor version numbers.
2662                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2663                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2664                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2665                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2666                 case "$file" in
2667                 '') dflt=none ;;
2668                 *)  case "$osvers" in
2669                         '') dflt=$file
2670                                 ;;
2671                         *)  if $test -f $src/hints/$file.sh ; then
2672                                         dflt=$file
2673                                 elif $test -f $src/hints/$xfile.sh ; then
2674                                         dflt=$xfile
2675                                 elif $test -f $src/hints/$xxfile.sh ; then
2676                                         dflt=$xxfile
2677                                 elif $test -f $src/hints/$xxxfile.sh ; then
2678                                         dflt=$xxxfile
2679                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2680                                         dflt=$xxxxfile
2681                                 elif $test -f "$src/hints/${osname}.sh" ; then
2682                                         dflt="${osname}"
2683                                 else
2684                                         dflt=none
2685                                 fi
2686                                 ;;
2687                         esac
2688                         ;;
2689                 esac
2690                 if $test -f Policy.sh ; then
2691                         case "$dflt" in
2692                         *Policy*) ;;
2693                         none) dflt="Policy" ;;
2694                         *) dflt="Policy $dflt" ;;
2695                         esac
2696                 fi
2697                 ;;
2698         *)
2699                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2700                 ;;
2701         esac
2702
2703         if $test -f Policy.sh ; then
2704                 $cat <<EOM
2705
2706 There's also a Policy hint file available, which should make the
2707 site-specific (policy) questions easier to answer.
2708 EOM
2709
2710         fi
2711
2712         $cat <<EOM
2713
2714 You may give one or more space-separated answers, or "none" if appropriate.
2715 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2716 is a good thing.  DO NOT give a wrong version or a wrong OS.
2717
2718 EOM
2719
2720         rp="Which of these apply, if any?"
2721         . UU/myread
2722         tans=$ans
2723         for file in $tans; do
2724                 if $test X$file = XPolicy -a -f Policy.sh; then
2725                         . Policy.sh
2726                         $cat Policy.sh >> UU/config.sh
2727                 elif $test -f $src/hints/$file.sh; then
2728                         . $src/hints/$file.sh
2729                         $cat $src/hints/$file.sh >> UU/config.sh
2730                 elif $test X$tans = X -o X$tans = Xnone ; then
2731                         : nothing
2732                 else
2733                         : Give one chance to correct a possible typo.
2734                         echo "$file.sh does not exist"
2735                         dflt=$file
2736                         rp="hint to use instead?"
2737                         . UU/myread
2738                         for file in $ans; do
2739                                 if $test -f "$src/hints/$file.sh"; then
2740                                         . $src/hints/$file.sh
2741                                         $cat $src/hints/$file.sh >> UU/config.sh
2742                                 elif $test X$ans = X -o X$ans = Xnone ; then
2743                                         : nothing
2744                                 else
2745                                         echo "$file.sh does not exist -- ignored."
2746                                 fi
2747                         done
2748                 fi
2749         done
2750
2751         hint=recommended
2752         : Remember our hint file for later.
2753         if $test -f "$src/hints/$file.sh" ; then
2754                 hintfile="$file"
2755         else
2756                 hintfile=''
2757         fi
2758 fi
2759 cd UU
2760 ;;
2761 *)
2762         echo " "
2763         echo "Fetching default answers from $config_sh..." >&4
2764         tmp_n="$n"
2765         tmp_c="$c"
2766         cd ..
2767         cp $config_sh config.sh 2>/dev/null
2768         chmod +w config.sh
2769         . ./config.sh
2770         cd UU
2771         cp ../config.sh .
2772         n="$tmp_n"
2773         c="$tmp_c"
2774         hint=previous
2775         ;;
2776 esac
2777 test "$override" && . ./optdef.sh
2778
2779 : Restore computed paths
2780 for file in $loclist $trylist; do
2781         eval $file="\$_$file"
2782 done
2783
2784 cat << EOM
2785
2786 Configure uses the operating system name and version to set some defaults.
2787 The default value is probably right if the name rings a bell. Otherwise,
2788 since spelling matters for me, either accept the default or answer "none"
2789 to leave it blank.
2790
2791 EOM
2792 case "$osname" in
2793         ''|' ')
2794                 case "$hintfile" in
2795                 ''|' '|none) dflt=none ;;
2796                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2797                 esac
2798                 ;;
2799         *) dflt="$osname" ;;
2800 esac
2801 rp="Operating system name?"
2802 . ./myread
2803 case "$ans" in
2804 none)  osname='' ;;
2805 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2806 esac
2807 echo " "
2808 case "$osvers" in
2809         ''|' ')
2810                 case "$hintfile" in
2811                 ''|' '|none) dflt=none ;;
2812                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2813                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2814                         case "$dflt" in
2815                         ''|' ') dflt=none ;;
2816                         esac
2817                         ;;
2818                 esac
2819                 ;;
2820         *) dflt="$osvers" ;;
2821 esac
2822 rp="Operating system version?"
2823 . ./myread
2824 case "$ans" in
2825 none)  osvers='' ;;
2826 *) osvers="$ans" ;;
2827 esac
2828
2829
2830 . ./posthint.sh
2831
2832 : who configured the system
2833 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2834 cf_by=`(logname) 2>/dev/null`
2835 case "$cf_by" in
2836 "")
2837         cf_by=`(whoami) 2>/dev/null`
2838         case "$cf_by" in
2839         "") cf_by=unknown ;;
2840         esac ;;
2841 esac
2842
2843 : set up the script used to warn in case of inconsistency
2844 cat <<EOS >whoa
2845 $startsh
2846 EOS
2847 cat <<'EOSC' >>whoa
2848 dflt=y
2849 echo " "
2850 echo "*** WHOA THERE!!! ***" >&4
2851 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2852 rp="    Keep the $hint value?"
2853 . ./myread
2854 case "$ans" in
2855 y) td=$was; tu=$was;;
2856 esac
2857 EOSC
2858
2859 : function used to set $1 to $val
2860 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2861 case "$val$was" in
2862 $define$undef) . ./whoa; eval "$var=\$td";;
2863 $undef$define) . ./whoa; eval "$var=\$tu";;
2864 *) eval "$var=$val";;
2865 esac'
2866
2867 case "$usethreads" in
2868 $define|true|[yY]*)     dflt='y';;
2869 *) dflt='n';;
2870 esac
2871 cat <<EOM
2872
2873 Perl can be built to take advantage of threads on some systems.
2874 To do so, Configure can be run with -Dusethreads.
2875
2876 Note that threading is a highly experimental feature, and
2877 some known race conditions still remain.  If you choose to try
2878 it, be very sure to not actually deploy it for production
2879 purposes.  README.threads has more details, and is required
2880 reading if you enable threads.
2881
2882 If this doesn't make any sense to you, just accept the default '$dflt'.
2883 EOM
2884 rp='Build a threading Perl?'
2885 . ./myread
2886 case "$ans" in
2887 y|Y)    val="$define" ;;
2888 *)      val="$undef" ;;
2889 esac
2890 set usethreads
2891 eval $setvar
2892
2893 case "$usethreads" in
2894 $define)
2895         $cat <<EOM
2896
2897 As of 5.5.640, Perl has two different internal threading implementations,
2898 the 5.005 version (5005threads) and an interpreter-based version
2899 (ithreads) that has one interpreter per thread.  Both are very 
2900 experimental.  This arrangement exists to help developers work out
2901 which one is better.
2902
2903 If you're a casual user, you probably don't want interpreter-threads
2904 at this time.  There doesn't yet exist a way to create threads from
2905 within Perl in this model, i.e., "use Thread;" will NOT work.
2906 EOM
2907         : Default to ithreads unless overridden on command line or with
2908         : old config.sh
2909         dflt='y'
2910         case "$use5005threads" in
2911                 $define|true|[yY]*) dflt='n';;
2912         esac
2913         case "$useithreads" in
2914                 $undef|false|[nN]*) dflt='n';;
2915         esac
2916         rp='Use interpreter-based ithreads?'
2917         . ./myread
2918         case "$ans" in
2919         y|Y)    val="$define" ;;
2920         *)      val="$undef" ;;
2921         esac
2922         set useithreads
2923         eval $setvar
2924         : Now set use5005threads to the opposite value.
2925         case "$useithreads" in
2926         $define) val="$undef" ;;
2927         *) val="$define" ;;
2928         esac
2929         set use5005threads
2930         eval $setvar
2931         ;;
2932 *)
2933         useithreads="$undef"
2934         use5005threads="$undef"
2935         ;;
2936 esac
2937
2938 case "$useithreads$use5005threads" in
2939 "$define$define")
2940         $cat >&4 <<EOM
2941
2942 You cannot have both the ithreads and the 5.005 threads enabled
2943 at the same time.  Disabling the 5.005 threads since they are
2944 much less stable than the ithreads.
2945
2946 EOM
2947         use5005threads="$undef"
2948         ;;
2949 esac
2950
2951 case "$d_oldpthreads" in
2952 '')     : Configure tests would be welcome here.  For now, assume undef.
2953         val="$undef" ;;
2954 *)      val="$d_oldpthreads" ;;
2955 esac
2956 set d_oldpthreads
2957 eval $setvar
2958
2959
2960 case "$usethreads" in
2961 "$define"|true|[yY]*)
2962 : Look for a hint-file generated 'call-back-unit'.  If the
2963 : user has specified that a threading perl is to be built,
2964 : we may need to set or change some other defaults.
2965         if $test -f usethreads.cbu; then
2966                 echo "Your platform has some specific hints for threaded builds, using them..."
2967                 . ./usethreads.cbu
2968         else
2969                 $cat <<EOM
2970 (Your platform doesn't have any specific hints for threaded builds.
2971  Assuming POSIX threads, then.)
2972 EOM
2973         fi
2974         ;;
2975 esac
2976
2977 cat <<EOM
2978
2979 Perl can be built so that multiple Perl interpreters can coexist
2980 within the same Perl executable.
2981 EOM
2982
2983 case "$useithreads" in
2984 $define)
2985         cat <<EOM
2986 This multiple interpreter support is required for interpreter-based threads.
2987 EOM
2988         val="$define"
2989         ;;
2990 *)      case "$usemultiplicity" in
2991         $define|true|[yY]*)     dflt='y';;
2992         *) dflt='n';;
2993         esac
2994         echo " "
2995         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2996         rp='Build Perl for multiplicity?'
2997         . ./myread
2998         case "$ans" in
2999         y|Y)    val="$define" ;;
3000         *)      val="$undef" ;;
3001         esac
3002         ;;
3003 esac
3004 set usemultiplicity
3005 eval $setvar
3006
3007 : make some quick guesses about what we are up against
3008 echo " "
3009 $echo $n "Hmm...  $c"
3010 echo exit 1 >bsd
3011 echo exit 1 >usg
3012 echo exit 1 >v7
3013 echo exit 1 >osf1
3014 echo exit 1 >eunice
3015 echo exit 1 >xenix
3016 echo exit 1 >venix
3017 echo exit 1 >os2
3018 d_bsd="$undef"
3019 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3020 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3021 then
3022         echo "Looks kind of like an OSF/1 system, but we'll see..."
3023         echo exit 0 >osf1
3024 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3025         xxx=`./loc addbib blurfl $pth`
3026         if $test -f $xxx; then
3027         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3028                 echo exit 0 >bsd
3029                 echo exit 0 >usg
3030         else
3031                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3032                         echo "Looks kind of like an extended USG system, but we'll see..."
3033                 else
3034                         echo "Looks kind of like a USG system, but we'll see..."
3035                 fi
3036                 echo exit 0 >usg
3037         fi
3038 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3039         echo "Looks kind of like a BSD system, but we'll see..."
3040         d_bsd="$define"
3041         echo exit 0 >bsd
3042 else
3043         echo "Looks kind of like a Version 7 system, but we'll see..."
3044         echo exit 0 >v7
3045 fi
3046 case "$eunicefix" in
3047 *unixtovms*)
3048         $cat <<'EOI'
3049 There is, however, a strange, musty smell in the air that reminds me of
3050 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3051 EOI
3052         echo exit 0 >eunice
3053         d_eunice="$define"
3054 : it so happens the Eunice I know will not run shell scripts in Unix format
3055         ;;
3056 *)
3057         echo " "
3058         echo "Congratulations.  You aren't running Eunice."
3059         d_eunice="$undef"
3060         ;;
3061 esac
3062 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3063 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3064 : semicolon as a patch separator
3065 case "$p_" in
3066 :) ;;
3067 *)
3068         $cat <<'EOI'
3069 I have the feeling something is not exactly right, however...don't tell me...
3070 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3071 (Or you may be running DOS with DJGPP.)
3072 EOI
3073         echo exit 0 >os2
3074         ;;
3075 esac
3076 if test -f /xenix; then
3077         echo "Actually, this looks more like a XENIX system..."
3078         echo exit 0 >xenix
3079         d_xenix="$define"
3080 else
3081         echo " "
3082         echo "It's not Xenix..."
3083         d_xenix="$undef"
3084 fi
3085 chmod +x xenix
3086 $eunicefix xenix
3087 if test -f /venix; then
3088         echo "Actually, this looks more like a VENIX system..."
3089         echo exit 0 >venix
3090 else
3091         echo " "
3092         if ./xenix; then
3093                 : null
3094         else
3095                 echo "Nor is it Venix..."
3096         fi
3097 fi
3098 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3099 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3100 $rm -f foo
3101
3102 case "$cc" in
3103 '') dflt=cc;;
3104 *) dflt="$cc";;
3105 esac
3106 rp="Use which C compiler?"
3107 . ./myread
3108 cc="$ans"
3109 : Look for a hint-file generated 'call-back-unit'.  Now that the
3110 : user has specified the compiler, we may need to set or change some
3111 : other defaults.
3112 if $test -f cc.cbu; then
3113     . ./cc.cbu
3114 fi
3115 . ./checkcc
3116
3117 echo " "
3118 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3119 $cat >gccvers.c <<EOM
3120 #include <stdio.h>
3121 int main() {
3122 #ifdef __GNUC__
3123 #ifdef __VERSION__
3124         printf("%s\n", __VERSION__);
3125 #else
3126         printf("%s\n", "1");
3127 #endif
3128 #endif
3129         exit(0);
3130 }
3131 EOM
3132 if $cc -o gccvers $ldflags gccvers.c; then
3133         gccversion=`./gccvers`
3134         case "$gccversion" in
3135         '') echo "You are not using GNU cc." ;;
3136         *)  echo "You are using GNU cc $gccversion."
3137             ccname=gcc  
3138             ;;
3139         esac
3140 else
3141         echo " "
3142         echo "*** WHOA THERE!!! ***" >&4
3143         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3144         case "$knowitall" in
3145         '')
3146         echo "    You'd better start hunting for one and let me know about it." >&4
3147                 exit 1
3148                 ;;
3149         esac
3150 fi
3151 $rm -f gccvers*
3152 case "$gccversion" in
3153 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3154 esac
3155 case "$gccversion" in
3156 '') gccosandvers='' ;;
3157 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3158    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3159    gccshortvers=''
3160    case "$gccosandvers" in
3161    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3162    $osname$osvers) ;; # looking good
3163    $osname*) cat <<EOM >&4
3164
3165 *** WHOA THERE!!! ***
3166
3167     Your gcc has not been compiled for the exact release of
3168     your operating system ($gccosandvers versus $osname$osvers).
3169
3170     In general it is a good idea to keep gcc synchronized with
3171     the operating system because otherwise serious problems
3172     may ensue when trying to compile software, like Perl.
3173
3174     I'm trying to be optimistic here, though, and will continue.
3175     If later during the configuration and build icky compilation
3176     problems appear (headerfile conflicts being the most common
3177     manifestation), I suggest reinstalling the gcc to match
3178     your operating system release.
3179
3180 EOM
3181       ;;
3182    *) gccosandvers='' ;; # failed to parse, better be silent
3183    esac
3184    ;;
3185 esac
3186 case "$ccname" in
3187 '') ccname="$cc" ;;
3188 esac
3189
3190 : see how we invoke the C preprocessor
3191 echo " "
3192 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3193 cat <<'EOT' >testcpp.c
3194 #define ABC abc
3195 #define XYZ xyz
3196 ABC.XYZ
3197 EOT
3198 cd ..
3199 if test ! -f cppstdin; then
3200         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3201                 # AIX cc -E doesn't show the absolute headerfile
3202                 # locations but we'll cheat by using the -M flag.
3203                 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
3204         else
3205                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3206         fi
3207 else
3208         echo "Keeping your $hint cppstdin wrapper."
3209 fi
3210 chmod 755 cppstdin
3211 wrapper=`pwd`/cppstdin
3212 ok='false'
3213 cd UU
3214
3215 if $test "X$cppstdin" != "X" && \
3216         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3217         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3218 then
3219         echo "You used to use $cppstdin $cppminus so we'll use that again."
3220         case "$cpprun" in
3221         '') echo "But let's see if we can live without a wrapper..." ;;
3222         *)
3223                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3224                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3225                 then
3226                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3227                         ok='true'
3228                 else
3229                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3230                 fi
3231                 ;;
3232         esac
3233 else
3234         case "$cppstdin" in
3235         '') ;;
3236         *)
3237                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3238                 ;;
3239         esac
3240 fi
3241
3242 if $ok; then
3243         : nothing
3244 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3245         $cc -E <testcpp.c >testcpp.out 2>&1; \
3246         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3247         echo "Yup, it does."
3248         x_cpp="$cc -E"
3249         x_minus='';
3250 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3251         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3252         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3253         echo "Yup, it does."
3254         x_cpp="$cc -E"
3255         x_minus='-';
3256 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3257         $cc -P <testcpp.c >testcpp.out 2>&1; \
3258         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3259         echo "Yipee, that works!"
3260         x_cpp="$cc -P"
3261         x_minus='';
3262 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3263         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3264         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3265         echo "At long last!"
3266         x_cpp="$cc -P"
3267         x_minus='-';
3268 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3269         $cpp <testcpp.c >testcpp.out 2>&1; \
3270         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3271         echo "It works!"
3272         x_cpp="$cpp"
3273         x_minus='';
3274 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3275         $cpp - <testcpp.c >testcpp.out 2>&1; \
3276         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3277         echo "Hooray, it works!  I was beginning to wonder."
3278         x_cpp="$cpp"
3279         x_minus='-';
3280 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3281         $wrapper <testcpp.c >testcpp.out 2>&1; \
3282         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3283         x_cpp="$wrapper"
3284         x_minus=''
3285         echo "Eureka!"
3286 else
3287         dflt=''
3288         rp="No dice.  I can't find a C preprocessor.  Name one:"
3289         . ./myread
3290         x_cpp="$ans"
3291         x_minus=''
3292         $x_cpp <testcpp.c >testcpp.out 2>&1
3293         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3294                 echo "OK, that will do." >&4
3295         else
3296 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3297                 exit 1
3298         fi
3299 fi
3300
3301 case "$ok" in
3302 false)
3303         cppstdin="$x_cpp"
3304         cppminus="$x_minus"
3305         cpprun="$x_cpp"
3306         cpplast="$x_minus"
3307         set X $x_cpp
3308         shift
3309         case "$1" in
3310         "$cpp")
3311                 echo "Perhaps can we force $cc -E using a wrapper..."
3312                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3313                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3314                 then
3315                         echo "Yup, we can."
3316                         cppstdin="$wrapper"
3317                         cppminus='';
3318                 else
3319                         echo "Nope, we'll have to live without it..."
3320                 fi
3321                 ;;
3322         esac
3323         case "$cpprun" in
3324         "$wrapper")
3325                 cpprun=''
3326                 cpplast=''
3327                 ;;
3328         esac
3329         ;;
3330 esac
3331
3332 case "$cppstdin" in
3333 "$wrapper"|'cppstdin') ;;
3334 *) $rm -f $wrapper;;
3335 esac
3336 $rm -f testcpp.c testcpp.out
3337
3338 : decide how portable to be.  Allow command line overrides.
3339 case "$d_portable" in
3340 "$undef") ;;
3341 *)      d_portable="$define" ;;
3342 esac
3343
3344 : set up shell script to do ~ expansion
3345 cat >filexp <<EOSS
3346 $startsh
3347 : expand filename
3348 case "\$1" in
3349  ~/*|~)
3350         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3351         ;;
3352  ~*)
3353         if $test -f /bin/csh; then
3354                 /bin/csh -f -c "glob \$1"
3355                 failed=\$?
3356                 echo ""
3357                 exit \$failed
3358         else
3359                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3360                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3361                 if $test ! -d "\$dir"; then
3362                         me=\`basename \$0\`
3363                         echo "\$me: can't locate home directory for: \$name" >&2
3364                         exit 1
3365                 fi
3366                 case "\$1" in
3367                 */*)
3368                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3369                         ;;
3370                 *)
3371                         echo \$dir
3372                         ;;
3373                 esac
3374         fi
3375         ;;
3376 *)
3377         echo \$1
3378         ;;
3379 esac
3380 EOSS
3381 chmod +x filexp
3382 $eunicefix filexp
3383
3384 : now set up to get a file name
3385 cat <<EOS >getfile
3386 $startsh
3387 EOS
3388 cat <<'EOSC' >>getfile
3389 tilde=''
3390 fullpath=''
3391 already=''
3392 skip=''
3393 none_ok=''
3394 exp_file=''
3395 nopath_ok=''
3396 orig_rp="$rp"
3397 orig_dflt="$dflt"
3398 case "$gfpth" in
3399 '') gfpth='.' ;;
3400 esac
3401
3402 case "$fn" in
3403 *\(*)
3404         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3405         fn=`echo $fn | sed 's/(.*)//'`
3406         ;;
3407 esac
3408
3409 case "$fn" in
3410 *:*)
3411         loc_file=`expr $fn : '.*:\(.*\)'`
3412         fn=`expr $fn : '\(.*\):.*'`
3413         ;;
3414 esac
3415
3416 case "$fn" in
3417 *~*) tilde=true;;
3418 esac
3419 case "$fn" in
3420 */*) fullpath=true;;
3421 esac
3422 case "$fn" in
3423 *+*) skip=true;;
3424 esac
3425 case "$fn" in
3426 *n*) none_ok=true;;
3427 esac
3428 case "$fn" in
3429 *e*) exp_file=true;;
3430 esac
3431 case "$fn" in
3432 *p*) nopath_ok=true;;
3433 esac
3434
3435 case "$fn" in
3436 *f*) type='File';;
3437 *d*) type='Directory';;
3438 *l*) type='Locate';;
3439 esac
3440
3441 what="$type"
3442 case "$what" in
3443 Locate) what='File';;
3444 esac
3445
3446 case "$exp_file" in
3447 '')
3448         case "$d_portable" in
3449         "$define") ;;
3450         *) exp_file=true;;
3451         esac
3452         ;;
3453 esac
3454
3455 cd ..
3456 while test "$type"; do
3457         redo=''
3458         rp="$orig_rp"
3459         dflt="$orig_dflt"
3460         case "$tilde" in
3461         true) rp="$rp (~name ok)";;
3462         esac
3463         . UU/myread
3464         if test -f UU/getfile.ok && \
3465                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3466         then
3467                 value="$ans"
3468                 ansexp="$ans"
3469                 break
3470         fi
3471         case "$ans" in
3472         none)
3473                 value=''
3474                 ansexp=''
3475                 case "$none_ok" in
3476                 true) type='';;
3477                 esac
3478                 ;;
3479         *)
3480                 case "$tilde" in
3481                 '') value="$ans"
3482                         ansexp="$ans";;
3483                 *)
3484                         value=`UU/filexp $ans`
3485                         case $? in
3486                         0)
3487                                 if test "$ans" != "$value"; then
3488                                         echo "(That expands to $value on this system.)"
3489                                 fi
3490                                 ;;
3491                         *) value="$ans";;
3492                         esac
3493                         ansexp="$value"
3494                         case "$exp_file" in
3495                         '') value="$ans";;
3496                         esac
3497                         ;;
3498                 esac
3499                 case "$fullpath" in
3500                 true)
3501                         case "$ansexp" in
3502                         /*) value="$ansexp" ;;
3503                         [a-zA-Z]:/*) value="$ansexp" ;;
3504                         *)
3505                                 redo=true
3506                                 case "$already" in
3507                                 true)
3508                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3509                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3510                                         ;;
3511                                 *)
3512                                 echo "Please give a full path name, starting with slash." >&4
3513                                         case "$tilde" in
3514                                         true)
3515                                 echo "Note that using ~name is ok provided it expands well." >&4
3516                                                 already=true
3517                                                 ;;
3518                                         esac
3519                                 esac
3520                                 ;;
3521                         esac
3522                         ;;
3523                 esac
3524                 case "$redo" in
3525                 '')
3526                         case "$type" in
3527                         File)
3528                                 for fp in $gfpth; do
3529                                         if test "X$fp" = X.; then
3530                                             pf="$ansexp"
3531                                         else    
3532                                             pf="$fp/$ansexp"
3533                                         fi
3534                                         if test -f "$pf"; then
3535                                                 type=''
3536                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3537                                         then
3538                                                 echo "($value is not a plain file, but that's ok.)"
3539                                                 type=''
3540                                         fi
3541                                         if test X"$type" = X; then
3542                                             value="$pf"
3543                                             break
3544                                         fi
3545                                 done
3546                                 ;;
3547                         Directory)
3548                                 for fp in $gfpth; do
3549                                         if test "X$fp" = X.; then
3550                                             dir="$ans"
3551                                             direxp="$ansexp"
3552                                         else    
3553                                             dir="$fp/$ansexp"
3554                                             direxp="$fp/$ansexp"
3555                                         fi
3556                                         if test -d "$direxp"; then
3557                                                 type=''
3558                                                 value="$dir"
3559                                                 break
3560                                         fi
3561                                 done
3562                                 ;;
3563                         Locate)
3564                                 if test -d "$ansexp"; then
3565                                         echo "(Looking for $loc_file in directory $value.)"
3566                                         value="$value/$loc_file"
3567                                         ansexp="$ansexp/$loc_file"
3568                                 fi
3569                                 if test -f "$ansexp"; then
3570                                         type=''
3571                                 fi
3572                                 case "$nopath_ok" in
3573                                 true)   case "$value" in
3574                                         */*) ;;
3575                                         *)      echo "Assuming $value will be in people's path."
3576                                                 type=''
3577                                                 ;;
3578                                         esac
3579                                         ;;
3580                                 esac
3581                                 ;;
3582                         esac
3583
3584                         case "$skip" in
3585                         true) type='';
3586                         esac
3587
3588                         case "$type" in
3589                         '') ;;
3590                         *)
3591                                 if test "$fastread" = yes; then
3592                                         dflt=y
3593                                 else
3594                                         dflt=n
3595                                 fi
3596                                 rp="$what $value doesn't exist.  Use that name anyway?"
3597                                 . UU/myread
3598                                 dflt=''
3599                                 case "$ans" in
3600                                 y*) type='';;
3601                                 *) echo " ";;
3602                                 esac
3603                                 ;;
3604                         esac
3605                         ;;
3606                 esac
3607                 ;;
3608         esac
3609 done
3610 cd UU
3611 ans="$value"
3612 rp="$orig_rp"
3613 dflt="$orig_dflt"
3614 rm -f getfile.ok
3615 test "X$gfpthkeep" != Xy && gfpth=""
3616 EOSC
3617
3618 : What should the include directory be ?
3619 echo " "
3620 $echo $n "Hmm...  $c"
3621 dflt='/usr/include'
3622 incpath=''
3623 mips_type=''
3624 if $test -f /bin/mips && /bin/mips; then
3625         echo "Looks like a MIPS system..."
3626         $cat >usr.c <<'EOCP'
3627 #ifdef SYSTYPE_BSD43
3628 /bsd43
3629 #endif
3630 EOCP
3631         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3632                 dflt='/bsd43/usr/include'
3633                 incpath='/bsd43'
3634                 mips_type='BSD 4.3'
3635         else
3636                 mips_type='System V'
3637         fi
3638         $rm -f usr.c usr.out
3639         echo "and you're compiling with the $mips_type compiler and libraries."
3640         xxx_prompt=y
3641         echo "exit 0" >mips
3642 else
3643         echo "Doesn't look like a MIPS system."
3644         xxx_prompt=n
3645         echo "exit 1" >mips
3646 fi
3647 chmod +x mips
3648 $eunicefix mips
3649 case "$usrinc" in
3650 '') ;;
3651 *) dflt="$usrinc";;
3652 esac
3653 case "$xxx_prompt" in
3654 y)      fn=d/
3655         echo " "
3656         rp='Where are the include files you want to use?'
3657         . ./getfile
3658         usrinc="$ans"
3659         ;;
3660 *)      usrinc="$dflt"
3661         ;;
3662 esac
3663
3664 : Set private lib path
3665 case "$plibpth" in
3666 '') if ./mips; then
3667                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3668         fi;;
3669 esac
3670 case "$libpth" in
3671 ' ') dlist='';;
3672 '') dlist="$loclibpth $plibpth $glibpth";;
3673 *) dlist="$libpth";;
3674 esac
3675
3676 : Now check and see which directories actually exist, avoiding duplicates
3677 libpth=''
3678 for xxx in $dlist
3679 do
3680     if $test -d $xxx; then
3681                 case " $libpth " in
3682                 *" $xxx "*) ;;
3683                 *) libpth="$libpth $xxx";;
3684                 esac
3685     fi
3686 done
3687 $cat <<'EOM'
3688
3689 Some systems have incompatible or broken versions of libraries.  Among
3690 the directories listed in the question below, please remove any you
3691 know not to be holding relevant libraries, and add any that are needed.
3692 Say "none" for none.
3693
3694 EOM
3695 case "$libpth" in
3696 '') dflt='none';;
3697 *)
3698         set X $libpth
3699         shift
3700         dflt=${1+"$@"}
3701         ;;
3702 esac
3703 rp="Directories to use for library searches?"
3704 . ./myread
3705 case "$ans" in
3706 none) libpth=' ';;
3707 *) libpth="$ans";;
3708 esac
3709
3710 : compute shared library extension
3711 case "$so" in
3712 '')
3713         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3714                 dflt='sl'
3715         else
3716                 dflt='so'
3717         fi
3718         ;;
3719 *) dflt="$so";;
3720 esac
3721 $cat <<EOM
3722
3723 On some systems, shared libraries may be available.  Answer 'none' if
3724 you want to suppress searching of shared libraries for the remainder
3725 of this configuration.
3726
3727 EOM
3728 rp='What is the file extension used for shared libraries?'
3729 . ./myread
3730 so="$ans"
3731
3732 : Define several unixisms.
3733 : Hints files or command line option can be used to override them.
3734 : The convoluted testing is in case hints files set either the old
3735 : or the new name.
3736 case "$_exe" in
3737 '')     case "$exe_ext" in
3738     '') ;;
3739         *)      _exe="$exe_ext" ;;
3740         esac
3741         ;;
3742 esac
3743 case "$_a" in
3744 '')     case "$lib_ext" in
3745     '') _a='.a';;
3746         *)      _a="$lib_ext" ;;
3747         esac
3748         ;;
3749 esac
3750 case "$_o" in
3751 '') case "$obj_ext" in
3752         '')     _o='.o';;
3753         *)      _o="$obj_ext";;
3754         esac
3755         ;;
3756 esac
3757 case "$p_" in
3758 '') case "$path_sep" in
3759         '')     p_=':';;
3760         *)      p_="$path_sep";;
3761         esac
3762         ;;
3763 esac
3764 exe_ext=$_exe
3765 lib_ext=$_a
3766 obj_ext=$_o
3767 path_sep=$p_
3768
3769 : Which makefile gets called first.  This is used by make depend.
3770 case "$firstmakefile" in
3771 '') firstmakefile='makefile';;
3772 esac
3773
3774 case "$usesocks" in
3775 $define|true|[yY]*)     dflt='y';;
3776 *) dflt='n';;
3777 esac
3778 cat <<EOM
3779
3780 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3781 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3782 to use the PerlIO abstraction layer, this will be implicitly selected.
3783
3784 If this doesn't make any sense to you, just accept the default '$dflt'.
3785 EOM
3786 rp='Build Perl for SOCKS?'
3787 . ./myread
3788 case "$ans" in
3789 y|Y)    val="$define" ;;     
3790 *)      val="$undef" ;;
3791 esac
3792 set usesocks
3793 eval $setvar
3794
3795 case "$usesocks" in
3796 $define|true|[yY]*) useperlio="$define";;
3797 esac
3798
3799 : Looking for optional libraries
3800 echo " "
3801 echo "Checking for optional libraries..." >&4
3802 case "$libs" in
3803 ' '|'') dflt='';;
3804 *) dflt="$libs";;
3805 esac
3806 case "$libswanted" in
3807 '') libswanted='c_s';;
3808 esac
3809 case "$usesocks" in
3810 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3811 esac
3812 libsfound=''
3813 libsfiles=''
3814 libsdirs=''
3815 libspath=''
3816 for thisdir in $libpth $xlibpth; do
3817   test -d $thisdir && libspath="$libspath $thisdir"
3818 done
3819 for thislib in $libswanted; do
3820         for thisdir in $libspath; do
3821             xxx=''
3822             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3823                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3824                 $test -f "$xxx" && eval $libscheck
3825                 $test -f "$xxx" && libstyle=shared
3826             fi
3827             if test ! -f "$xxx"; then
3828                 xxx=$thisdir/lib$thislib.$so
3829                 $test -f "$xxx" && eval $libscheck
3830                 $test -f "$xxx" && libstyle=shared
3831             fi  
3832             if test ! -f "$xxx"; then
3833                 xxx=$thisdir/lib$thislib$_a
3834                 $test -f "$xxx" && eval $libscheck
3835                 $test -f "$xxx" && libstyle=static
3836             fi
3837             if test ! -f "$xxx"; then
3838                 xxx=$thisdir/$thislib$_a
3839                 $test -f "$xxx" && eval $libscheck
3840                 $test -f "$xxx" && libstyle=static
3841             fi
3842             if test ! -f "$xxx"; then
3843                 xxx=$thisdir/lib${thislib}_s$_a
3844                 $test -f "$xxx" && eval $libscheck
3845                 $test -f "$xxx" && libstyle=static
3846                 $test -f "$xxx" && thislib=${thislib}_s
3847             fi
3848             if test ! -f "$xxx"; then
3849                 xxx=$thisdir/Slib$thislib$_a
3850                 $test -f "$xxx" && eval $libscheck
3851                 $test -f "$xxx" && libstyle=static
3852             fi
3853             if $test -f "$xxx"; then
3854                 case "$libstyle" in
3855                 shared) echo "Found -l$thislib (shared)." ;;
3856                 static) echo "Found -l$thislib." ;;
3857                 *)      echo "Found -l$thislib ($libstyle)." ;;
3858                 esac
3859                 case " $dflt " in
3860                 *"-l$thislib "*);;
3861                 *) dflt="$dflt -l$thislib"
3862                    libsfound="$libsfound $xxx"
3863                    yyy=`basename $xxx`
3864                    libsfiles="$libsfiles $yyy"
3865                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3866                    case " $libsdirs " in
3867                    *" $yyy "*) ;;
3868                    *) libsdirs="$libsdirs $yyy" ;;
3869                    esac
3870                    ;;
3871                 esac
3872                 break
3873             fi  
3874         done
3875         if $test ! -f "$xxx"; then
3876             echo "No -l$thislib."
3877         fi
3878 done
3879 set X $dflt
3880 shift
3881 dflt="$*"
3882 case "$libs" in
3883 '') dflt="$dflt";;
3884 *) dflt="$libs";;
3885 esac
3886 case "$dflt" in
3887 ' '|'') dflt='none';;
3888 esac
3889
3890 $cat <<EOM
3891
3892 In order to compile $package on your machine, a number of libraries
3893 are usually needed.  Include any other special libraries here as well.
3894 Say "none" for none.  The default list is almost always right.
3895 EOM
3896
3897 echo " "
3898 rp="What libraries to use?"
3899 . ./myread
3900 case "$ans" in
3901 none) libs=' ';;
3902 *) libs="$ans";;
3903 esac
3904
3905 : determine optimization, if desired, or use for debug flag also
3906 case "$optimize" in
3907 ' '|$undef) dflt='none';;
3908 '') dflt='-O';;
3909 *) dflt="$optimize";;
3910 esac
3911 $cat <<EOH
3912
3913 By default, $package compiles with the -O flag to use the optimizer.
3914 Alternately, you might want to use the symbolic debugger, which uses
3915 the -g flag (on traditional Unix systems).  Either flag can be
3916 specified here.  To use neither flag, specify the word "none".
3917
3918 EOH
3919 rp="What optimizer/debugger flag should be used?"
3920 . ./myread
3921 optimize="$ans"
3922 case "$optimize" in
3923 'none') optimize=" ";;
3924 esac
3925
3926 dflt=''
3927 : We will not override a previous value, but we might want to
3928 : augment a hint file
3929 case "$hint" in
3930 default|recommended)
3931         case "$gccversion" in
3932         1*) dflt='-fpcc-struct-return' ;;
3933         esac
3934         case "$optimize" in
3935         *-g*) dflt="$dflt -DDEBUGGING";;
3936         esac
3937         case "$gccversion" in
3938         2*) if test -d /etc/conf/kconfig.d &&
3939                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3940                 then
3941                         dflt="$dflt -posix"
3942                 fi
3943                 ;;
3944         esac
3945         case "$gccversion" in
3946         1*) ;;
3947         2.[0-8]*) ;;
3948         ?*)     echo " "
3949                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3950                 echo 'int main(void) { return 0; }' > gcctest.c
3951                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3952                         echo "Yes, it does." 2>&1
3953                         case "$ccflags" in
3954                         *strict-aliasing*) 
3955                                 echo "Leaving current flags $ccflags alone." 2>&1
3956                                 ;;
3957                         *) dflt="$dflt -fno-strict-aliasing" ;;
3958                         esac
3959                 else
3960                         echo "Nope, it doesn't, but that's ok." 2>&1
3961                 fi
3962                 ;;
3963         esac
3964         ;;
3965 esac
3966
3967 case "$mips_type" in
3968 *BSD*|'') inclwanted="$locincpth $usrinc";;
3969 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3970 esac
3971 for thisincl in $inclwanted; do
3972         if $test -d $thisincl; then
3973                 if $test x$thisincl != x$usrinc; then
3974                         case "$dflt" in
3975                         *" -I$thisincl "*);;
3976                         *) dflt="$dflt -I$thisincl ";;
3977                         esac
3978                 fi
3979         fi
3980 done
3981
3982 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3983         xxx=true;
3984 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3985         xxx=true;
3986 else
3987         xxx=false;
3988 fi;
3989 if $xxx; then
3990         case "$dflt" in
3991         *$2*);;
3992         *) dflt="$dflt -D$2";;
3993         esac;
3994 fi'
3995
3996 set signal.h LANGUAGE_C; eval $inctest
3997
3998 case "$usesocks" in
3999 $define)
4000         ccflags="$ccflags -DSOCKS"
4001         ;;
4002 esac
4003
4004 case "$hint" in
4005 default|recommended) dflt="$ccflags $dflt" ;;
4006 *) dflt="$ccflags";;
4007 esac
4008
4009 case "$dflt" in
4010 ''|' ') dflt=none;;
4011 esac
4012
4013 $cat <<EOH
4014
4015 Your C compiler may want other flags.  For this question you should include
4016 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4017 but you should NOT include libraries or ld flags like -lwhatever.  If you
4018 want $package to honor its debug switch, you should include -DDEBUGGING here.
4019 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4020
4021 To use no flags, specify the word "none".
4022
4023 EOH
4024 set X $dflt
4025 shift
4026 dflt=${1+"$@"}
4027 rp="Any additional cc flags?"
4028 . ./myread
4029 case "$ans" in
4030 none) ccflags='';;
4031 *) ccflags="$ans";;
4032 esac
4033
4034 : the following weeds options from ccflags that are of no interest to cpp
4035 cppflags="$ccflags"
4036 case "$gccversion" in
4037 1*) cppflags="$cppflags -D__GNUC__"
4038 esac
4039 case "$mips_type" in
4040 '');;
4041 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4042 esac
4043 case "$cppflags" in
4044 '');;
4045 *)
4046         echo " "
4047         echo "Let me guess what the preprocessor flags are..." >&4
4048         set X $cppflags
4049         shift
4050         cppflags=''
4051         $cat >cpp.c <<'EOM'
4052 #define BLURFL foo
4053
4054 BLURFL xx LFRULB
4055 EOM
4056         previous=''
4057         for flag in $*
4058         do
4059                 case "$flag" in
4060                 -*) ftry="$flag";;
4061                 *) ftry="$previous $flag";;
4062                 esac
4063                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4064                         >cpp1.out 2>/dev/null && \
4065                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4066                         >cpp2.out 2>/dev/null && \
4067                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4068                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4069                 then
4070                         cppflags="$cppflags $ftry"
4071                         previous=''
4072                 else
4073                         previous="$flag"
4074                 fi
4075         done
4076         set X $cppflags
4077         shift
4078         cppflags=${1+"$@"}
4079         case "$cppflags" in
4080         *-*)  echo "They appear to be: $cppflags";;
4081         esac
4082         $rm -f cpp.c cpp?.out
4083         ;;
4084 esac
4085
4086 : flags used in final linking phase
4087 case "$ldflags" in
4088 '') if ./venix; then
4089                 dflt='-i -z'
4090         else
4091                 dflt=''
4092         fi
4093         case "$ccflags" in
4094         *-posix*) dflt="$dflt -posix" ;;
4095         esac
4096         ;;
4097 *) dflt="$ldflags";;
4098 esac
4099
4100 : Try to guess additional flags to pick up local libraries.
4101 for thislibdir in $libpth; do
4102         case " $loclibpth " in
4103         *" $thislibdir "*)
4104                 case "$dflt " in 
4105                 *"-L$thislibdir "*) ;;
4106                 *)  dflt="$dflt -L$thislibdir" ;;
4107                 esac
4108                 ;;
4109         esac
4110 done
4111
4112 case "$dflt" in
4113 '') dflt='none' ;;
4114 esac
4115
4116 $cat <<EOH
4117
4118 Your C linker may need flags.  For this question you should
4119 include -L/whatever and any other flags used by the C linker, but you
4120 should NOT include libraries like -lwhatever.
4121
4122 Make sure you include the appropriate -L/path flags if your C linker
4123 does not normally search all of the directories you specified above,
4124 namely
4125         $libpth
4126 To use no flags, specify the word "none".
4127
4128 EOH
4129
4130 rp="Any additional ld flags (NOT including libraries)?"
4131 . ./myread
4132 case "$ans" in
4133 none) ldflags='';;
4134 *) ldflags="$ans";;
4135 esac
4136 rmlist="$rmlist pdp11"
4137
4138 : coherency check
4139 echo " "
4140 echo "Checking your choice of C compiler and flags for coherency..." >&4
4141 $cat > try.c <<'EOF'
4142 #include <stdio.h>
4143 int main() { printf("Ok\n"); exit(0); }
4144 EOF
4145 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4146 shift
4147 $cat >try.msg <<'EOM'
4148 I've tried to compile and run the following simple program:
4149
4150 EOM
4151 $cat try.c >> try.msg
4152
4153 $cat >> try.msg <<EOM
4154
4155 I used the command:
4156
4157         $*
4158         ./try
4159
4160 and I got the following output:
4161
4162 EOM
4163 dflt=y
4164 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4165         if $sh -c './try' >>try.msg 2>&1; then
4166                 xxx=`./try`
4167                 case "$xxx" in
4168                 "Ok") dflt=n ;;
4169                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4170                         case " $libs " in
4171                         *" -lsfio "*)
4172                                 cat >> try.msg <<'EOQS'
4173 If $libs contains -lsfio, and sfio is mis-configured, then it
4174 sometimes (apparently) runs and exits with a 0 status, but with no
4175 output!  It may have to do with sfio's use of _exit vs. exit.
4176
4177 EOQS
4178                                 rp="You have a big problem.  Shall I abort Configure"
4179                                 dflt=y
4180                                 ;;
4181                         esac
4182                         ;;
4183                 esac
4184         else
4185                 echo "The program compiled OK, but exited with status $?." >>try.msg
4186                 rp="You have a problem.  Shall I abort Configure"
4187                 dflt=y
4188         fi
4189 else
4190         echo "I can't compile the test program." >>try.msg
4191         rp="You have a BIG problem.  Shall I abort Configure"
4192         dflt=y
4193 fi
4194 case "$dflt" in
4195 y)
4196         $cat try.msg >&4
4197         case "$knowitall" in
4198         '')
4199                 echo "(The supplied flags or libraries might be incorrect.)"
4200                 ;;
4201         *) dflt=n;;
4202         esac
4203         echo " "
4204         . ./myread
4205         case "$ans" in
4206         n*|N*) ;;
4207         *)      echo "Ok.  Stopping Configure." >&4
4208                 exit 1
4209                 ;;
4210         esac
4211         ;;
4212 n) echo "OK, that should do.";;
4213 esac
4214 $rm -f try try.* core
4215
4216 : define an is-a-typedef? function
4217 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4218 case "$inclist" in
4219 "") inclist="sys/types.h";;
4220 esac;
4221 eval "varval=\$$var";
4222 case "$varval" in
4223 "")
4224         $rm -f temp.c;
4225         for inc in $inclist; do
4226                 echo "#include <$inc>" >>temp.c;
4227         done;
4228         echo "#ifdef $type" >> temp.c;
4229         echo "printf(\"We have $type\");" >> temp.c;
4230         echo "#endif" >> temp.c;
4231         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4232         if $contains $type temp.E >/dev/null 2>&1; then
4233                 eval "$var=\$type";
4234         else
4235                 eval "$var=\$def";
4236         fi;
4237         $rm -f temp.?;;
4238 *) eval "$var=\$varval";;
4239 esac'
4240
4241 : define an is-a-typedef? function that prompts if the type is not available.
4242 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4243 case "$inclist" in
4244 "") inclist="sys/types.h";;
4245 esac;
4246 eval "varval=\$$var";
4247 case "$varval" in
4248 "")
4249         $rm -f temp.c;
4250         for inc in $inclist; do
4251                 echo "#include <$inc>" >>temp.c;
4252         done;
4253         echo "#ifdef $type" >> temp.c;
4254         echo "printf(\"We have $type\");" >> temp.c;
4255         echo "#endif" >> temp.c;
4256         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4257         echo " " ;
4258         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4259         if $contains $type temp.E >/dev/null 2>&1; then
4260                 echo "$type found." >&4;
4261                 eval "$var=\$type";
4262         else
4263                 echo "$type NOT found." >&4;
4264                 dflt="$def";
4265                 . ./myread ;
4266                 eval "$var=\$ans";
4267         fi;
4268         $rm -f temp.?;;
4269 *) eval "$var=\$varval";;
4270 esac'
4271
4272 : define a shorthand compile call
4273 compile='
4274 mc_file=$1;
4275 shift;
4276 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4277 : define a shorthand compile call for compilations that should be ok.
4278 compile_ok='
4279 mc_file=$1;
4280 shift;
4281 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4282
4283 : check for lengths of integral types
4284 echo " "
4285 case "$intsize" in
4286 '')
4287         echo "Checking to see how big your integers are..." >&4
4288         $cat >intsize.c <<'EOCP'
4289 #include <stdio.h>
4290 int main()
4291 {
4292         printf("intsize=%d;\n", (int)sizeof(int));
4293         printf("longsize=%d;\n", (int)sizeof(long));
4294         printf("shortsize=%d;\n", (int)sizeof(short));
4295         exit(0);
4296 }
4297 EOCP
4298         set intsize
4299         if eval $compile_ok && ./intsize > /dev/null; then
4300                 eval `./intsize`
4301                 echo "Your integers are $intsize bytes long."
4302                 echo "Your long integers are $longsize bytes long."
4303                 echo "Your short integers are $shortsize bytes long."
4304         else
4305                 $cat >&4 <<EOM
4306 !
4307 Help! I can't compile and run the intsize test program: please enlighten me!
4308 (This is probably a misconfiguration in your system or libraries, and
4309 you really ought to fix it.  Still, I'll try anyway.)
4310 !
4311 EOM
4312                 dflt=4
4313                 rp="What is the size of an integer (in bytes)?"
4314                 . ./myread
4315                 intsize="$ans"
4316                 dflt=$intsize
4317                 rp="What is the size of a long integer (in bytes)?"
4318                 . ./myread
4319                 longsize="$ans"
4320                 dflt=2
4321                 rp="What is the size of a short integer (in bytes)?"
4322                 . ./myread
4323                 shortsize="$ans"
4324         fi
4325         ;;
4326 esac
4327 $rm -f intsize intsize.*
4328
4329 : see what type lseek is declared as in the kernel
4330 rp="What is the type used for lseek's offset on this system?"
4331 set off_t lseektype long stdio.h sys/types.h
4332 eval $typedef_ask
4333
4334 echo " "
4335 echo "Checking to see how big your file offsets are..." >&4
4336 $cat >try.c <<EOCP
4337 #include <sys/types.h>
4338 #include <stdio.h>
4339 int main()
4340 {
4341     printf("%d\n", (int)sizeof($lseektype));
4342     return(0); 
4343 }
4344 EOCP
4345 set try
4346 if eval $compile_ok; then
4347         lseeksize=`./try`
4348         echo "Your file offsets are $lseeksize bytes long."
4349 else
4350         dflt=$longsize
4351         echo " "
4352         echo "(I can't seem to compile the test program.  Guessing...)"
4353         rp="What is the size of your file offsets (in bytes)?"
4354         . ./myread
4355         lseeksize="$ans"
4356 fi
4357 $rm -f try.c try
4358
4359 : see what type file positions are declared as in the library
4360 rp="What is the type for file position used by fsetpos()?"
4361 set fpos_t fpostype long stdio.h sys/types.h
4362 eval $typedef_ask
4363
4364 echo " "
4365 case "$fpostype" in
4366 *_t) zzz="$fpostype"    ;;
4367 *)   zzz="fpos_t"       ;;
4368 esac
4369 echo "Checking the size of $zzz..." >&4 
4370 cat > try.c <<EOCP
4371 #include <sys/types.h>
4372 #include <stdio.h>
4373 int main() {
4374     printf("%d\n", (int)sizeof($fpostype));
4375     exit(0);
4376 }
4377 EOCP
4378 set try
4379 if eval $compile_ok; then
4380         yyy=`./try`
4381         case "$yyy" in
4382         '')     fpossize=4
4383                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4384                 ;;
4385         *)      fpossize=$yyy
4386                 echo "Your $zzz is $fpossize bytes long."
4387                 ;;
4388         esac
4389 else
4390         dflt="$longsize"
4391         echo " " >&4
4392         echo "(I can't compile the test program.  Guessing...)" >&4
4393         rp="What is the size of your file positions (in bytes)?"
4394         . ./myread
4395         fpossize="$ans"
4396 fi
4397
4398
4399
4400 # Backward compatibility (uselfs is deprecated).
4401 case "$uselfs" in
4402 "$define"|true|[yY]*)
4403         cat <<EOM >&4
4404
4405 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4406 EOM
4407         uselargefiles="$define"
4408         ;;
4409 esac                          
4410
4411 case "$lseeksize:$fpossize" in
4412 8:8) cat <<EOM
4413
4414 You can have files larger than 2 gigabytes.
4415 EOM
4416    val="$define" ;;
4417 *)    case "$uselargefiles" in
4418    "$undef"|false|[nN]*) dflt='n' ;;
4419    *)   dflt='y' ;;
4420    esac
4421    cat <<EOM
4422
4423 Perl can be built to understand large files (files larger than 2 gigabytes)
4424 on some systems.  To do so, Configure can be run with -Duselargefiles.
4425
4426 If this doesn't make any sense to you, just accept the default '$dflt'.
4427 EOM
4428    rp='Try to understand large files, if available?'
4429    . ./myread
4430    case "$ans" in
4431    y|Y)         val="$define" ;;
4432    *)           val="$undef"  ;;
4433    esac
4434    ;;
4435 esac
4436 set uselargefiles
4437 eval $setvar
4438 case "$uselargefiles" in
4439 "$define")
4440 : Look for a hint-file generated 'call-back-unit'.  If the
4441 : user has specified that a large files perl is to be built,
4442 : we may need to set or change some other defaults.
4443         if $test -f uselargefiles.cbu; then
4444                 echo "Your platform has some specific hints for large file builds, using them..."
4445                 . ./uselargefiles.cbu
4446                 echo " "
4447                 echo "Rechecking to see how big your file offsets are..." >&4
4448                 $cat >try.c <<EOCP
4449 #include <sys/types.h>
4450 #include <stdio.h>
4451 int main()
4452 {
4453     printf("%d\n", (int)sizeof($lseektype));
4454     return(0); 
4455 }
4456 EOCP
4457                 set try
4458                 if eval $compile_ok; then
4459                         lseeksize=`./try`
4460                         $echo "Your file offsets are now $lseeksize bytes long."
4461                 else
4462                         dflt="$lseeksize"
4463                         echo " "
4464                         echo "(I can't seem to compile the test program.  Guessing...)"
4465                         rp="What is the size of your file offsets (in bytes)?"
4466                         . ./myread
4467                         lseeksize="$ans"
4468                 fi
4469                 case "$fpostype" in
4470                 *_t) zzz="$fpostype"    ;;
4471                 *)   zzz="fpos_t"       ;;
4472                 esac
4473                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4474                 $cat > try.c <<EOCP
4475 #include <sys/types.h>
4476 #include <stdio.h>
4477 int main() {
4478     printf("%d\n", (int)sizeof($fpostype));
4479     exit(0);
4480 }
4481 EOCP
4482                 set try
4483                 if eval $compile_ok; then
4484                         yyy=`./try`
4485                         dflt="$lseeksize"
4486                         case "$yyy" in
4487                         '')     echo " "
4488                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4489                                 ;;
4490                         *)      fpossize=$yyy
4491                                 echo " $fpossize bytes." >&4
4492                                 ;;
4493                         esac
4494                 else
4495                         dflt="$fpossize"
4496                         echo " "
4497                         echo "(I can't compile the test program.  Guessing...)" >&4
4498                         rp="What is the size of your file positions (in bytes)?"
4499                         . ./myread
4500                         fpossize="$ans"
4501                 fi
4502                 $rm -f try.c try
4503         fi
4504         ;;
4505 esac
4506
4507
4508 case "$usemorebits" in
4509 "$define"|true|[yY]*)
4510         use64bitint="$define"
4511         uselongdouble="$define"
4512         usemorebits="$define"
4513         ;;
4514 *)      usemorebits="$undef"
4515         ;;
4516 esac
4517
4518
4519 case "$uselonglong" in
4520 "$define"|true|[yY]*)
4521         cat <<EOM >&4
4522
4523 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4524 EOM
4525         use64bitint="$define"
4526         ;;
4527 esac                          
4528 case "$use64bits" in
4529 "$define"|true|[yY]*)
4530         cat <<EOM >&4
4531
4532 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4533 EOM
4534         use64bitint="$define"
4535         ;;
4536 esac                          
4537 case "$use64bitints" in
4538 "$define"|true|[yY]*)
4539         cat <<EOM >&4
4540
4541 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4542 EOM
4543         use64bitint="$define"
4544         ;;
4545 esac                          
4546 case "$use64bitsint" in
4547 "$define"|true|[yY]*)
4548         cat <<EOM >&4
4549
4550 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4551 EOM
4552         use64bitint="$define"
4553         ;;
4554 esac                          
4555 case "$uselonglongs" in
4556 "$define"|true|[yY]*)
4557         cat <<EOM >&4
4558
4559 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4560 EOM
4561         use64bitint="$define"
4562         ;;
4563 esac                          
4564 case "$use64bitsall" in
4565 "$define"|true|[yY]*)
4566         cat <<EOM >&4
4567
4568 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4569 EOM
4570         use64bitall="$define"
4571         ;;
4572 esac                          
4573
4574 case "$ccflags" in
4575 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4576 esac
4577 case "$use64bitall" in
4578 "$define"|true|[yY]*) use64bitint="$define" ;;
4579 esac
4580
4581 case "$longsize" in
4582 8) cat <<EOM
4583
4584 You have natively 64-bit long integers.
4585 EOM
4586    val="$define"
4587    ;;
4588 *) case "$use64bitint" in
4589    "$define"|true|[yY]*) dflt='y';;
4590    *) dflt='n';;
4591    esac
4592    cat <<EOM
4593
4594 Perl can be built to take advantage of 64-bit integer types
4595 on some systems.  To do so, Configure can be run with -Duse64bitint.
4596 Choosing this option will most probably introduce binary incompatibilities.
4597
4598 If this doesn't make any sense to you, just accept the default '$dflt'.
4599 EOM
4600    rp='Try to use 64-bit integers, if available?'
4601    . ./myread
4602    case "$ans" in
4603    [yY]*) val="$define" ;;
4604    *)     val="$undef"  ;;
4605    esac
4606    ;;
4607 esac
4608 set use64bitint
4609 eval $setvar
4610
4611 case "$use64bitall" in
4612 "$define"|true|[yY]*) dflt='y' ;;
4613 *) case "$longsize" in
4614    8) dflt='y' ;;
4615    *) dflt='n' ;;
4616    esac
4617    ;;
4618 esac    
4619 cat <<EOM
4620
4621 You may also choose to try maximal 64-bitness.  It means using as much
4622 64-bitness as possible on the platform.  This in turn means even more
4623 binary incompatibilities.  On the other hand, your platform may not
4624 have any more 64-bitness available than what you already have chosen.
4625
4626 If this doesn't make any sense to you, just accept the default '$dflt'.
4627 EOM
4628 rp='Try to use maximal 64-bit support, if available?'
4629 . ./myread
4630 case "$ans" in
4631 [yY]*) val="$define" ;;
4632 *)     val="$undef"  ;;
4633 esac
4634 set use64bitall
4635 eval $setvar
4636 case "$use64bitall" in
4637 "$define")
4638         case "$use64bitint" in
4639         "$undef")
4640                 cat <<EOM
4641
4642 Since you have chosen a maximally 64-bit build, I'm also turning on
4643 the use of 64-bit integers.
4644 EOM
4645                 use64bitint="$define" ;;
4646         esac
4647         ;;
4648 esac
4649
4650 case "$use64bitint" in
4651 "$define"|true|[yY]*)
4652 : Look for a hint-file generated 'call-back-unit'.  If the
4653 : user has specified that a 64-bit perl is to be built,
4654 : we may need to set or change some other defaults.
4655         if $test -f use64bitint.cbu; then
4656                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4657                 . ./use64bitint.cbu
4658         fi
4659         case "$longsize" in
4660         4) case "$archname64" in
4661            '') archname64=64int ;;
4662            esac
4663            ;;
4664         esac
4665         ;;
4666 esac
4667
4668 case "$use64bitall" in
4669 "$define"|true|[yY]*)
4670 : Look for a hint-file generated 'call-back-unit'.  If the
4671 : user has specified that a maximally 64-bit perl is to be built,
4672 : we may need to set or change some other defaults.
4673         if $test -f use64bitall.cbu; then
4674                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4675                 . ./use64bitall.cbu
4676         fi
4677         case "$longsize" in
4678         4) case "$archname64" in
4679            ''|64int) archname64=64all ;;
4680            esac
4681            ;;
4682         esac
4683         ;;
4684 esac
4685
4686 echo " "
4687 echo "Checking for GNU C Library..." >&4
4688 cat >gnulibc.c <<EOM
4689 #include <stdio.h>
4690 int main()
4691 {
4692 #ifdef __GLIBC__
4693     exit(0);
4694 #else
4695     exit(1);
4696 #endif
4697 }
4698 EOM
4699 set gnulibc
4700 if eval $compile_ok && ./gnulibc; then
4701         val="$define"
4702         echo "You are using the GNU C Library"
4703 else
4704         val="$undef"
4705         echo "You are not using the GNU C Library"
4706 fi
4707 $rm -f gnulibc*
4708 set d_gnulibc
4709 eval $setvar
4710
4711 : see if nm is to be used to determine whether a symbol is defined or not
4712 case "$usenm" in
4713 '')
4714         dflt=''
4715         case "$d_gnulibc" in
4716         "$define")
4717                 echo " "
4718                 echo "nm probably won't work on the GNU C Library." >&4
4719                 dflt=n
4720                 ;;
4721         esac
4722         case "$dflt" in
4723         '') 
4724                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4725                         echo " "
4726                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4727                         echo "'nm' won't be sufficient on this sytem." >&4
4728                         dflt=n
4729                 fi
4730                 ;;
4731         esac
4732         case "$dflt" in
4733         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4734                 if $test $dflt -gt 20; then
4735                         dflt=y
4736                 else
4737                         dflt=n
4738                 fi
4739                 ;;
4740         esac
4741         ;;
4742 *)
4743         case "$usenm" in
4744         true|$define) dflt=y;;
4745         *) dflt=n;;
4746         esac
4747         ;;
4748 esac
4749 $cat <<EOM
4750
4751 I can use $nm to extract the symbols from your C libraries. This
4752 is a time consuming task which may generate huge output on the disk (up
4753 to 3 megabytes) but that should make the symbols extraction faster. The
4754 alternative is to skip the 'nm' extraction part and to compile a small
4755 test program instead to determine whether each symbol is present. If
4756 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4757 this may be the best solution.
4758
4759 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4760
4761 EOM
4762 rp="Shall I use $nm to extract C symbols from the libraries?"
4763 . ./myread
4764 case "$ans" in
4765 [Nn]*) usenm=false;;
4766 *) usenm=true;;
4767 esac
4768
4769 runnm=$usenm
4770 case "$reuseval" in
4771 true) runnm=false;;
4772 esac
4773
4774 : nm options which may be necessary
4775 case "$nm_opt" in
4776 '') if $test -f /mach_boot; then
4777                 nm_opt=''       # Mach
4778         elif $test -d /usr/ccs/lib; then
4779                 nm_opt='-p'     # Solaris (and SunOS?)
4780         elif $test -f /dgux; then
4781                 nm_opt='-p'     # DG-UX
4782         elif $test -f /lib64/rld; then
4783                 nm_opt='-p'     # 64-bit Irix
4784         else
4785                 nm_opt=''
4786         fi;;
4787 esac
4788
4789 : nm options which may be necessary for shared libraries but illegal
4790 : for archive libraries.  Thank you, Linux.
4791 case "$nm_so_opt" in
4792 '')     case "$myuname" in
4793         *linux*)
4794                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4795                         nm_so_opt='--dynamic'
4796                 fi
4797                 ;;
4798         esac
4799         ;;
4800 esac
4801
4802 case "$runnm" in
4803 true)
4804 : get list of predefined functions in a handy place
4805 echo " "
4806 case "$libc" in
4807 '') libc=unknown
4808         case "$libs" in
4809         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4810         esac
4811         ;;
4812 esac
4813 libnames='';
4814 case "$libs" in
4815 '') ;;
4816 *)  for thislib in $libs; do
4817         case "$thislib" in
4818         -lc|-lc_s)
4819                 : Handle C library specially below.
4820                 ;;
4821         -l*)
4822                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4823                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4824                         :
4825                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4826                         :
4827                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4828                         :
4829                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4830                         :
4831                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4832                         :
4833                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4834                         :
4835                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4836                         :
4837                 else
4838                         try=''
4839                 fi
4840                 libnames="$libnames $try"
4841                 ;;
4842         *) libnames="$libnames $thislib" ;;
4843         esac
4844         done
4845         ;;
4846 esac
4847 xxx=normal
4848 case "$libc" in
4849 unknown)
4850         set /lib/libc.$so
4851         for xxx in $libpth; do
4852                 $test -r $1 || set $xxx/libc.$so
4853                 : The messy sed command sorts on library version numbers.
4854                 $test -r $1 || \
4855                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4856                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4857                                 h
4858                                 s/[0-9][0-9]*/0000&/g
4859                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4860                                 G
4861                                 s/\n/ /' | \
4862                          $sort | $sed -e 's/^.* //'`
4863                 eval set \$$#
4864         done
4865         $test -r $1 || set /usr/ccs/lib/libc.$so
4866         $test -r $1 || set /lib/libsys_s$_a
4867         ;;
4868 *)
4869         set blurfl
4870         ;;
4871 esac
4872 if $test -r "$1"; then
4873         echo "Your (shared) C library seems to be in $1."
4874         libc="$1"
4875 elif $test -r /lib/libc && $test -r /lib/clib; then
4876         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4877         xxx=apollo
4878         libc='/lib/clib /lib/libc'
4879         if $test -r /lib/syslib; then
4880                 echo "(Your math library is in /lib/syslib.)"
4881                 libc="$libc /lib/syslib"
4882         fi
4883 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4884         echo "Your C library seems to be in $libc, as you said before."
4885 elif $test -r $incpath/usr/lib/libc$_a; then
4886         libc=$incpath/usr/lib/libc$_a;
4887         echo "Your C library seems to be in $libc.  That's fine."
4888 elif $test -r /lib/libc$_a; then
4889         libc=/lib/libc$_a;
4890         echo "Your C library seems to be in $libc.  You're normal."
4891 else
4892         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4893                 :
4894         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4895                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4896         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4897                 :
4898         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4899                 :
4900         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4901                 :
4902         else
4903                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4904         fi
4905         if $test -r "$tans"; then
4906                 echo "Your C library seems to be in $tans, of all places."
4907                 libc=$tans
4908         else
4909                 libc='blurfl'
4910         fi
4911 fi
4912 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4913         dflt="$libc"
4914         cat <<EOM
4915
4916 If the guess above is wrong (which it might be if you're using a strange
4917 compiler, or your machine supports multiple models), you can override it here.
4918
4919 EOM
4920 else
4921         dflt=''
4922         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4923         cat >&4 <<EOM
4924 I can't seem to find your C library.  I've looked in the following places:
4925
4926 EOM
4927         $sed 's/^/      /' libpath
4928         cat <<EOM
4929
4930 None of these seems to contain your C library. I need to get its name...
4931
4932 EOM
4933 fi
4934 fn=f
4935 rp='Where is your C library?'
4936 . ./getfile
4937 libc="$ans"
4938
4939 echo " "
4940 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4941 set X `cat libnames`
4942 shift
4943 xxx=files
4944 case $# in 1) xxx=file; esac
4945 echo "Extracting names from the following $xxx for later perusal:" >&4
4946 echo " "
4947 $sed 's/^/      /' libnames >&4
4948 echo " "
4949 $echo $n "This may take a while...$c" >&4
4950
4951 for file in $*; do
4952         case $file in
4953         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4954         *) $nm $nm_opt $file 2>/dev/null;;
4955         esac
4956 done >libc.tmp
4957
4958 $echo $n ".$c"
4959 $grep fprintf libc.tmp > libc.ptf
4960 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4961 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4962 xxx='[ADTSIW]'
4963 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4964         eval $xscan;\
4965         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4966                 eval $xrun
4967 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4968         eval $xscan;\
4969         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4970                 eval $xrun
4971 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4972         eval $xscan;\
4973         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4974                 eval $xrun
4975 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4976         eval $xscan;\
4977         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4978                 eval $xrun
4979 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4980         eval $xscan;\
4981         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4982                 eval $xrun
4983 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4984         eval $xscan;\
4985         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4986                 eval $xrun
4987 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4988                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4989         eval $xscan;\
4990         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4991                 eval $xrun
4992 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4993         eval $xscan;\
4994         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4995                 eval $xrun
4996 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4997         eval $xscan;\
4998         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4999                 eval $xrun
5000 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5001         eval $xscan;\
5002         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5003                 eval $xrun
5004 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5005         eval $xscan;\
5006         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5007                 eval $xrun
5008 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5009         eval $xscan;\
5010         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5011                 eval $xrun
5012 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5013         eval $xscan;\
5014         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5015                 eval $xrun
5016 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5017         eval $xscan;\
5018         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5019                 eval $xrun
5020 else
5021         $nm -p $* 2>/dev/null >libc.tmp
5022         $grep fprintf libc.tmp > libc.ptf
5023         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5024                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5025         then
5026                 nm_opt='-p'
5027                 eval $xrun
5028         else
5029                 echo " "
5030                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5031                 com=''
5032                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5033                         for thisname in $libnames $libc; do
5034                                 $ar t $thisname >>libc.tmp
5035                         done
5036                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5037                         echo "Ok." >&4
5038                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5039                         # Repeat libc to extract forwarders to DLL entries too
5040                         for thisname in $libnames $libc; do
5041                                 $ar tv $thisname >>libc.tmp
5042                                 # Revision 50 of EMX has bug in $ar.
5043                                 # it will not extract forwarders to DLL entries
5044                                 # Use emximp which will extract exactly them.
5045                                 emximp -o tmp.imp $thisname \
5046                                     2>/dev/null && \
5047                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5048                                     < tmp.imp >>libc.tmp
5049                                 $rm tmp.imp
5050                         done
5051                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5052                         echo "Ok." >&4
5053                 else
5054                         echo "$ar didn't seem to work right." >&4
5055                         echo "Maybe this is a Cray...trying bld instead..." >&4
5056                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5057                         then
5058                                 for thisname in $libnames; do
5059                                         bld t $libnames | \
5060                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5061                                         $ar t $thisname >>libc.tmp
5062                                 done
5063                                 echo "Ok." >&4
5064                         else
5065                                 echo "That didn't work either.  Giving up." >&4
5066                                 exit 1
5067                         fi
5068                 fi
5069         fi
5070 fi
5071 nm_extract="$com"
5072 if $test -f /lib/syscalls.exp; then
5073         echo " "
5074         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5075         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5076 fi
5077 ;;
5078 esac
5079 $rm -f libnames libpath
5080
5081 : is a C symbol defined?
5082 csym='tlook=$1;
5083 case "$3" in
5084 -v) tf=libc.tmp; tc=""; tdc="";;
5085 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5086 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5087 esac;
5088 tx=yes;
5089 case "$reuseval-$4" in
5090 true-) ;;
5091 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5092 esac;
5093 case "$tx" in
5094 yes)
5095         case "$runnm" in
5096         true)
5097                 if $contains $tlook $tf >/dev/null 2>&1;
5098                 then tval=true;
5099                 else tval=false;
5100                 fi;;
5101         *)
5102                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5103                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5104                 then tval=true;
5105                 else tval=false;
5106                 fi;
5107                 $rm -f t t.c;;
5108         esac;;
5109 *)
5110         case "$tval" in
5111         $define) tval=true;;
5112         *) tval=false;;
5113         esac;;
5114 esac;
5115 eval "$2=$tval"'
5116
5117 : define an is-in-libc? function
5118 inlibc='echo " "; td=$define; tu=$undef;
5119 sym=$1; var=$2; eval "was=\$$2";
5120 tx=yes;
5121 case "$reuseval$was" in
5122 true) ;;
5123 true*) tx=no;;
5124 esac;
5125 case "$tx" in
5126 yes)
5127         set $sym tres -f;
5128         eval $csym;
5129         case "$tres" in
5130         true)
5131                 echo "$sym() found." >&4;
5132                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5133         *)
5134                 echo "$sym() NOT found." >&4;
5135                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5136         esac;;
5137 *)
5138         case "$was" in
5139         $define) echo "$sym() found." >&4;;
5140         *) echo "$sym() NOT found." >&4;;
5141         esac;;
5142 esac'
5143
5144 : see if sqrtl exists
5145 set sqrtl d_sqrtl
5146 eval $inlibc
5147
5148 case "$ccflags" in
5149 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5150 esac
5151
5152 case "$uselongdouble" in
5153 $define|true|[yY]*)     dflt='y';;
5154 *) dflt='n';;
5155 esac
5156 cat <<EOM
5157
5158 Perl can be built to take advantage of long doubles which
5159 (if available) may give more accuracy and range for floating point numbers.
5160
5161 If this doesn't make any sense to you, just accept the default '$dflt'.
5162 EOM
5163 rp='Try to use long doubles if available?'
5164 . ./myread
5165 case "$ans" in
5166 y|Y)    val="$define"   ;;
5167 *)      val="$undef"    ;;
5168 esac
5169 set uselongdouble
5170 eval $setvar
5171
5172 case "$uselongdouble" in
5173 true|[yY]*) uselongdouble="$define" ;;
5174 esac
5175
5176 case "$uselongdouble" in
5177 $define)
5178 : Look for a hint-file generated 'call-back-unit'.  If the
5179 : user has specified that long doubles should be used,
5180 : we may need to set or change some other defaults.
5181         if $test -f uselongdouble.cbu; then
5182                 echo "Your platform has some specific hints for long doubles, using them..."
5183                 . ./uselongdouble.cbu
5184         else
5185                 $cat <<EOM
5186 (Your platform doesn't have any specific hints for long doubles.)
5187 EOM
5188         fi
5189         ;;
5190 esac
5191
5192 case "$uselongdouble:$d_sqrtl" in
5193 $define:$undef)
5194                 $cat <<EOM >&4
5195
5196 *** You requested the use of long doubles but you do not seem to have
5197 *** the mathematic functions for long doubles.  I'm disabling the use
5198 *** of long doubles.
5199
5200 EOM
5201         uselongdouble=$undef
5202         ;;
5203 esac
5204
5205 : check for length of double
5206 echo " "
5207 case "$doublesize" in
5208 '')
5209         echo "Checking to see how big your double precision numbers are..." >&4
5210         $cat >try.c <<'EOCP'
5211 #include <stdio.h>
5212 int main()
5213 {
5214     printf("%d\n", (int)sizeof(double));
5215     exit(0);
5216 }
5217 EOCP
5218         set try
5219         if eval $compile_ok; then
5220                 doublesize=`./try`
5221                 echo "Your double is $doublesize bytes long."
5222         else
5223                 dflt='8'
5224                 echo "(I can't seem to compile the test program.  Guessing...)"
5225                 rp="What is the size of a double precision number (in bytes)?"
5226                 . ./myread
5227                 doublesize="$ans"
5228         fi
5229         ;;
5230 esac
5231 $rm -f try.c try
5232
5233 : check for long doubles
5234 echo " "
5235 echo "Checking to see if you have long double..." >&4
5236 echo 'int main() { long double x = 7.0; }' > try.c
5237 set try
5238 if eval $compile; then
5239         val="$define"
5240         echo "You have long double."
5241 else
5242         val="$undef"
5243         echo "You do not have long double."
5244 fi
5245 $rm try.*
5246 set d_longdbl
5247 eval $setvar
5248
5249 : check for length of long double
5250 case "${d_longdbl}${longdblsize}" in
5251 $define)
5252         echo " "
5253         echo "Checking to see how big your long doubles are..." >&4
5254         $cat >try.c <<'EOCP'
5255 #include <stdio.h>
5256 int main()
5257 {
5258         printf("%d\n", sizeof(long double));
5259 }
5260 EOCP
5261         set try
5262         set try
5263         if eval $compile; then
5264                 longdblsize=`./try$exe_ext`
5265                 echo "Your long doubles are $longdblsize bytes long."
5266         else
5267                 dflt='8'
5268                 echo " "
5269                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5270                 rp="What is the size of a long double (in bytes)?"
5271                 . ./myread
5272                 longdblsize="$ans"
5273         fi
5274         if $test "X$doublesize" = "X$longdblsize"; then
5275                 echo "(That isn't any different from an ordinary double.)"
5276         fi      
5277         ;;
5278 esac
5279 $rm -f try.* try
5280
5281 : determine the architecture name
5282 echo " "
5283 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5284         tarch=`arch`"-$osname"
5285 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5286         if uname -m > tmparch 2>&1 ; then
5287                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5288                         -e 's/$/'"-$osname/" tmparch`
5289         else
5290                 tarch="$osname"
5291         fi
5292         $rm -f tmparch
5293 else
5294         tarch="$osname"
5295 fi
5296 case "$myarchname" in
5297 ''|"$tarch") ;;
5298 *)
5299         echo "(Your architecture name used to be $myarchname.)"
5300         archname=''
5301         ;;
5302 esac
5303 myarchname="$tarch"
5304 case "$archname" in
5305 '') dflt="$tarch";;
5306 *) dflt="$archname";;
5307 esac
5308 rp='What is your architecture name'
5309 . ./myread
5310 archname="$ans"
5311 case "$usethreads" in
5312 $define)
5313         echo "Threads selected." >&4
5314         case "$archname" in
5315         *-thread*) echo "...and architecture name already has -thread." >&4
5316                 ;;
5317         *)      archname="$archname-thread"
5318                 echo "...setting architecture name to $archname." >&4
5319                 ;;
5320         esac
5321         ;;
5322 esac
5323 case "$usemultiplicity" in
5324 $define)
5325         echo "Multiplicity selected." >&4
5326         case "$archname" in
5327         *-multi*) echo "...and architecture name already has -multi." >&4
5328                 ;;
5329         *)      archname="$archname-multi"
5330                 echo "...setting architecture name to $archname." >&4
5331                 ;;
5332         esac
5333         ;;
5334 esac
5335 case "$use64bitint$use64bitall" in
5336 *"$define"*)
5337         case "$archname64" in
5338         '')
5339                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5340                 ;;
5341         *)
5342                 case "$use64bitint" in
5343                 "$define") echo "64 bit integers selected." >&4 ;;
5344                 esac
5345                 case "$use64bitall" in
5346                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5347                 esac
5348                 case "$archname" in
5349                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5350                         ;;
5351                 *)      archname="$archname-$archname64"
5352                         echo "...setting architecture name to $archname." >&4
5353                         ;;
5354                 esac
5355                 ;;
5356         esac
5357 esac
5358 case "$uselongdouble" in
5359 $define)
5360         echo "Long doubles selected." >&4
5361         case "$longdblsize" in
5362         $doublesize)
5363                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5364                 ;;
5365         *)
5366                 case "$archname" in
5367                 *-ld*) echo "...and architecture name already has -ld." >&4
5368                         ;;
5369                 *)      archname="$archname-ld"
5370                         echo "...setting architecture name to $archname." >&4
5371                         ;;
5372                 esac
5373                 ;;
5374         esac
5375         ;;
5376 esac
5377
5378 : determine root of directory hierarchy where package will be installed.
5379 case "$prefix" in
5380 '')
5381         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5382         ;;
5383 *)
5384         dflt="$prefix"
5385         ;;
5386 esac
5387 $cat <<EOM
5388
5389 By default, $package will be installed in $dflt/bin, manual pages
5390 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5391 installation directories. Typically this is something like /usr/local.
5392 If you wish to have binaries under /usr/bin but other parts of the
5393 installation under /usr/local, that's ok: you will be prompted
5394 separately for each of the installation directories, the prefix being
5395 only used to set the defaults.
5396
5397 EOM
5398 fn=d~
5399 rp='Installation prefix to use?'
5400 . ./getfile
5401 oldprefix=''
5402 case "$prefix" in
5403 '') ;;
5404 *)
5405         case "$ans" in
5406         "$prefix") ;;
5407         *) oldprefix="$prefix";;
5408         esac
5409         ;;
5410 esac
5411 prefix="$ans"
5412 prefixexp="$ansexp"
5413
5414 : is AFS running?
5415 echo " "
5416 case "$afs" in
5417 $define|true)   afs=true ;;
5418 $undef|false)   afs=false ;;
5419 *)      if test -d /afs; then
5420                 afs=true
5421         else
5422                 afs=false
5423         fi
5424         ;;
5425 esac
5426 if $afs; then
5427         echo "AFS may be running... I'll be extra cautious then..." >&4
5428 else
5429         echo "AFS does not seem to be running..." >&4
5430 fi
5431
5432 : determine installation prefix for where package is to be installed.
5433 if $afs; then 
5434 $cat <<EOM
5435
5436 Since you are running AFS, I need to distinguish the directory in which
5437 files will reside from the directory in which they are installed (and from
5438 which they are presumably copied to the former directory by occult means).
5439
5440 EOM
5441         case "$installprefix" in
5442         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5443         *) dflt="$installprefix";;
5444         esac
5445 else
5446 $cat <<EOM
5447
5448 In some special cases, particularly when building $package for distribution,
5449 it is convenient to distinguish between the directory in which files should 
5450 be installed from the directory ($prefix) in which they 
5451 will eventually reside.  For most users, these two directories are the same.
5452
5453 EOM
5454         case "$installprefix" in
5455         '') dflt=$prefix ;;
5456         *) dflt=$installprefix;;
5457         esac
5458 fi
5459 fn=d~
5460 rp='What installation prefix should I use for installing files?'
5461 . ./getfile
5462 installprefix="$ans"
5463 installprefixexp="$ansexp"
5464
5465 : set the prefixit variable, to compute a suitable default value
5466 prefixit='case "$3" in
5467 ""|none)
5468         case "$oldprefix" in
5469         "") eval "$1=\"\$$2\"";;
5470         *)
5471                 case "$3" in
5472                 "") eval "$1=";;
5473                 none)
5474                         eval "tp=\"\$$2\"";
5475                         case "$tp" in
5476                         ""|" ") eval "$1=\"\$$2\"";;
5477                         *) eval "$1=";;
5478                         esac;;
5479                 esac;;
5480         esac;;
5481 *)
5482         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5483         case "$tp" in
5484         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5485         /*-$oldprefix/*|\~*-$oldprefix/*)
5486                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5487         *) eval "$1=\"\$$2\"";;
5488         esac;;
5489 esac'
5490
5491
5492 : get the patchlevel
5493 echo " "
5494 echo "Getting the current patchlevel..." >&4
5495 if $test -r $rsrc/patchlevel.h;then
5496         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5497         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5498         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5499         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5500         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5501         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5502 else
5503         revision=0
5504         patchlevel=0
5505         subversion=0
5506         api_revision=0
5507         api_version=0
5508         api_subversion=0
5509 fi
5510 $echo "(You have $package version $patchlevel subversion $subversion.)"
5511 case "$osname" in
5512 dos|vms)
5513         : XXX Should be a Configure test for double-dots in filenames.
5514         version=`echo $revision $patchlevel $subversion | \
5515                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5516         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5517                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5518         ;;
5519 *)
5520         version=`echo $revision $patchlevel $subversion | \
5521                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5522         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5523                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5524         ;;
5525 esac
5526 : Special case the 5.005_xx maintenance series, which used 5.005
5527 : without any subversion label as a subdirectory in $sitelib
5528 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5529         api_versionstring='5.005'
5530 fi
5531
5532 : determine installation style
5533 : For now, try to deduce it from prefix unless it is already set.
5534 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5535 case "$installstyle" in
5536 '')     case "$prefix" in
5537                 *perl*) dflt='lib';;
5538                 *) dflt='lib/perl5' ;;
5539         esac
5540         ;;
5541 *)      dflt="$installstyle" ;;
5542 esac
5543 : Probably not worth prompting for this since we prompt for all
5544 : the directories individually, and the prompt would be too long and
5545 : confusing anyway.
5546 installstyle=$dflt
5547
5548 : determine where private library files go
5549 : Usual default is /usr/local/lib/perl5/$version.
5550 : Also allow things like /opt/perl/lib/$version, since 
5551 : /opt/perl/lib/perl5... would be redundant.
5552 : The default "style" setting is made in installstyle.U
5553 case "$installstyle" in
5554 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5555 *)       set dflt privlib lib/$version ;;
5556 esac
5557 eval $prefixit
5558 $cat <<EOM
5559
5560 There are some auxiliary files for $package that need to be put into a
5561 private library directory that is accessible by everyone.
5562
5563 EOM
5564 fn=d~+
5565 rp='Pathname where the private library files will reside?'
5566 . ./getfile
5567 privlib="$ans"
5568 privlibexp="$ansexp"
5569 : Change installation prefix, if necessary.
5570 if $test X"$prefix" != X"$installprefix"; then
5571         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5572 else
5573         installprivlib="$privlibexp"
5574 fi
5575
5576 : set the prefixup variable, to restore leading tilda escape
5577 prefixup='case "$prefixexp" in
5578 "$prefix") ;;
5579 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5580 esac'
5581
5582 : determine where public architecture dependent libraries go
5583 set archlib archlib
5584 eval $prefixit
5585 : privlib default is /usr/local/lib/$package/$version
5586 : archlib default is /usr/local/lib/$package/$version/$archname
5587 : privlib may have an optional trailing /share.
5588 tdflt=`echo $privlib | $sed 's,/share$,,'`
5589 tdflt=$tdflt/$archname
5590 case "$archlib" in
5591 '')     dflt=$tdflt
5592         ;;
5593 *)      dflt="$archlib"
5594     ;;
5595 esac
5596 $cat <<EOM
5597
5598 $spackage contains architecture-dependent library files.  If you are
5599 sharing libraries in a heterogeneous environment, you might store
5600 these files in a separate location.  Otherwise, you can just include
5601 them with the rest of the public library files.
5602
5603 EOM
5604 fn=d+~
5605 rp='Where do you want to put the public architecture-dependent libraries?'
5606 . ./getfile
5607 archlib="$ans"
5608 archlibexp="$ansexp"
5609 if $test X"$archlib" = X"$privlib"; then
5610         d_archlib="$undef"
5611 else
5612         d_archlib="$define"
5613 fi
5614 : Change installation prefix, if necessary.
5615 if $test X"$prefix" != X"$installprefix"; then
5616         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5617 else
5618         installarchlib="$archlibexp"
5619 fi
5620
5621
5622 : Binary compatibility with 5.005 is not possible for builds
5623 : with advanced features
5624 case "$usethreads$usemultiplicity" in
5625 *define*)
5626         bincompat5005="$undef"
5627         d_bincompat5005="$undef"
5628         ;;
5629 *)      $cat <<EOM
5630
5631 This version of Perl can be compiled for binary compatibility with 5.005.
5632 If you decide to do so, you will be able to continue using most of the
5633 extensions that were compiled for Perl 5.005.
5634
5635 EOM
5636         case "$bincompat5005$d_bincompat5005" in
5637         *"$undef"*) dflt=n ;;
5638         *) dflt=y ;;
5639         esac
5640         rp='Binary compatibility with Perl 5.005?'
5641         . ./myread
5642         case "$ans" in
5643         y*) val="$define" ;;
5644         *)  val="$undef" ;;
5645         esac
5646         set d_bincompat5005
5647         eval $setvar
5648         case "$d_bincompat5005" in
5649         "$define")
5650                 bincompat5005="$define"
5651                 ;;
5652         *)      bincompat5005="$undef"
5653                 d_bincompat5005="$undef"
5654                 ;;
5655         esac
5656         ;;
5657 esac
5658
5659
5660 : see if setuid scripts can be secure
5661 $cat <<EOM
5662
5663 Some kernels have a bug that prevents setuid #! scripts from being
5664 secure.  Some sites have disabled setuid #! scripts because of this.
5665
5666 First let's decide if your kernel supports secure setuid #! scripts.
5667 (If setuid #! scripts would be secure but have been disabled anyway,
5668 don't say that they are secure if asked.)
5669
5670 EOM
5671
5672 val="$undef"
5673 if $test -d /dev/fd; then
5674         echo "#!$ls" >reflect
5675         chmod +x,u+s reflect
5676         ./reflect >flect 2>&1
5677         if $contains "/dev/fd" flect >/dev/null; then
5678                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5679                 val="$define"
5680         else
5681                 $cat <<EOM
5682 If you are not sure if they are secure, I can check but I'll need a
5683 username and password different from the one you are using right now.
5684 If you don't have such a username or don't want me to test, simply
5685 enter 'none'.
5686
5687 EOM
5688                 rp='Other username to test security of setuid scripts with?'
5689                 dflt='none'
5690                 . ./myread
5691                 case "$ans" in
5692                 n|none)
5693                         case "$d_suidsafe" in
5694                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5695                                 dflt=n;;
5696                         "$undef")
5697                                 echo "Well, the $hint value is *not* secure." >&4
5698                                 dflt=n;;
5699                         *)      echo "Well, the $hint value *is* secure." >&4
5700                                 dflt=y;;
5701                         esac
5702                         ;;
5703                 *)
5704                         $rm -f reflect flect
5705                         echo "#!$ls" >reflect
5706                         chmod +x,u+s reflect
5707                         echo >flect
5708                         chmod a+w flect
5709                         echo '"su" will (probably) prompt you for '"$ans's password."
5710                         su $ans -c './reflect >flect'
5711                         if $contains "/dev/fd" flect >/dev/null; then
5712                                 echo "Okay, it looks like setuid scripts are secure." >&4
5713                                 dflt=y
5714                         else
5715                                 echo "I don't think setuid scripts are secure." >&4
5716                                 dflt=n
5717                         fi
5718                         ;;
5719                 esac
5720                 rp='Does your kernel have *secure* setuid scripts?'
5721                 . ./myread
5722                 case "$ans" in
5723                 [yY]*)  val="$define";;
5724                 *)      val="$undef";;
5725                 esac
5726         fi
5727 else
5728         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5729         echo "(That's for file descriptors, not floppy disks.)"
5730         val="$undef"
5731 fi
5732 set d_suidsafe
5733 eval $setvar
5734
5735 $rm -f reflect flect
5736
5737 : now see if they want to do setuid emulation
5738 echo " "
5739 val="$undef"
5740 case "$d_suidsafe" in
5741 "$define")
5742         val="$undef"
5743         echo "No need to emulate SUID scripts since they are secure here." >& 4
5744         ;;
5745 *)
5746         $cat <<EOM
5747 Some systems have disabled setuid scripts, especially systems where
5748 setuid scripts cannot be secure.  On systems where setuid scripts have
5749 been disabled, the setuid/setgid bits on scripts are currently
5750 useless.  It is possible for $package to detect those bits and emulate
5751 setuid/setgid in a secure fashion.  This emulation will only work if
5752 setuid scripts have been disabled in your kernel.
5753
5754 EOM
5755         case "$d_dosuid" in
5756         "$define") dflt=y ;;
5757         *) dflt=n ;;
5758         esac
5759         rp="Do you want to do setuid/setgid emulation?"
5760         . ./myread
5761         case "$ans" in
5762         [yY]*)  val="$define";;
5763         *)      val="$undef";;
5764         esac
5765         ;;
5766 esac
5767 set d_dosuid
5768 eval $setvar
5769
5770 : determine filename position in cpp output
5771 echo " "
5772 echo "Computing filename position in cpp output for #include directives..." >&4
5773 echo '#include <stdio.h>' > foo.c
5774 $cat >fieldn <<EOF
5775 $startsh
5776 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5777 $grep '^[       ]*#.*stdio\.h' | \
5778 while read cline; do
5779         pos=1
5780         set \$cline
5781         while $test \$# -gt 0; do
5782                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5783                         echo "\$pos"
5784                         exit 0
5785                 fi
5786                 shift
5787                 pos=\`expr \$pos + 1\`
5788         done
5789 done
5790 EOF
5791 chmod +x fieldn
5792 fieldn=`./fieldn`
5793 $rm -f foo.c fieldn
5794 case $fieldn in
5795 '') pos='???';;
5796 1) pos=first;;
5797 2) pos=second;;
5798 3) pos=third;;
5799 *) pos="${fieldn}th";;
5800 esac
5801 echo "Your cpp writes the filename in the $pos field of the line."
5802
5803 : locate header file
5804 $cat >findhdr <<EOF
5805 $startsh
5806 wanted=\$1
5807 name=''
5808 for usrincdir in $usrinc
5809 do
5810         if test -f \$usrincdir/\$wanted; then
5811                 echo "\$usrincdir/\$wanted"
5812                 exit 0
5813         fi
5814 done
5815 awkprg='{ print \$$fieldn }'
5816 echo "#include <\$wanted>" > foo\$\$.c
5817 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5818 $grep "^[       ]*#.*\$wanted" | \
5819 while read cline; do
5820         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5821         case "\$name" in
5822         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5823         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5824         *) exit 2;;
5825         esac;
5826 done;
5827 #
5828 # status = 0: grep returned 0 lines, case statement not executed
5829 # status = 1: headerfile found
5830 # status = 2: while loop executed, no headerfile found
5831 #
5832 status=\$?
5833 $rm -f foo\$\$.c;
5834 if test \$status -eq 1; then
5835         exit 0;
5836 fi
5837 exit 1
5838 EOF
5839 chmod +x findhdr
5840
5841 : define an alternate in-header-list? function
5842 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5843 cont=true; xxf="echo \"<\$1> found.\" >&4";
5844 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5845 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5846 esac;
5847 case $# in 4) instead=instead;; *) instead="at last";; esac;
5848 while $test "$cont"; do
5849         xxx=`./findhdr $1`
5850         var=$2; eval "was=\$$2";
5851         if $test "$xxx" && $test -r "$xxx";
5852         then eval $xxf;
5853         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5854                 cont="";
5855         else eval $xxnf;
5856         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5857         set $yyy; shift; shift; yyy=$@;
5858         case $# in 0) cont="";;
5859         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5860                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5861         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5862                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5863         esac;
5864 done;
5865 while $test "$yyy";
5866 do set $yyy; var=$2; eval "was=\$$2";
5867         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5868         set $yyy; shift; shift; yyy=$@;
5869 done'
5870
5871 : see if this is a malloc.h system
5872 set malloc.h i_malloc
5873 eval $inhdr
5874
5875 : see if stdlib is available
5876 set stdlib.h i_stdlib
5877 eval $inhdr
5878
5879 : determine which malloc to compile in
5880 echo " "
5881 case "$usemymalloc" in
5882 ''|[yY]*|true|$define)  dflt='y' ;;
5883 *)      dflt='n' ;;
5884 esac
5885 rp="Do you wish to attempt to use the malloc that comes with $package?"
5886 . ./myread
5887 usemymalloc="$ans"
5888 case "$ans" in
5889 y*|true)
5890         usemymalloc='y'
5891         mallocsrc='malloc.c'
5892         mallocobj="malloc$_o"
5893         d_mymalloc="$define"
5894         case "$libs" in
5895         *-lmalloc*)
5896                 : Remove malloc from list of libraries to use
5897                 echo "Removing unneeded -lmalloc from library list" >&4
5898                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5899                 shift
5900                 libs="$*"
5901                 echo "libs = $libs" >&4
5902                 ;;
5903         esac
5904         ;;
5905 *)
5906         usemymalloc='n'
5907         mallocsrc=''
5908         mallocobj=''
5909         d_mymalloc="$undef"
5910         ;;
5911 esac
5912
5913 : compute the return types of malloc and free
5914 echo " "
5915 $cat >malloc.c <<END
5916 #$i_malloc I_MALLOC
5917 #$i_stdlib I_STDLIB
5918 #include <stdio.h>
5919 #include <sys/types.h>
5920 #ifdef I_MALLOC
5921 #include <malloc.h>
5922 #endif
5923 #ifdef I_STDLIB
5924 #include <stdlib.h>
5925 #endif
5926 #ifdef TRY_MALLOC
5927 void *malloc();
5928 #endif
5929 #ifdef TRY_FREE
5930 void free();
5931 #endif
5932 END
5933 case "$malloctype" in
5934 '')
5935         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5936                 malloctype='void *'
5937         else
5938                 malloctype='char *'
5939         fi
5940         ;;
5941 esac
5942 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5943
5944 case "$freetype" in
5945 '')
5946         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5947                 freetype='void'
5948         else
5949                 freetype='int'
5950         fi
5951         ;;
5952 esac
5953 echo "Your system uses $freetype free(), it would seem." >&4
5954 $rm -f malloc.[co]
5955 $cat <<EOM
5956
5957 After $package is installed, you may wish to install various
5958 add-on modules and utilities.  Typically, these add-ons will
5959 be installed under $prefix with the rest
5960 of this package.  However, you may wish to install such add-ons
5961 elsewhere under a different prefix.
5962
5963 If you do not wish to put everything under a single prefix, that's
5964 ok.  You will be prompted for the individual locations; this siteprefix
5965 is only used to suggest the defaults.
5966
5967 The default should be fine for most people.
5968
5969 EOM
5970 fn=d~+
5971 rp='Installation prefix to use for add-on modules and utilities?'
5972 : XXX Here might be another good place for an installstyle setting.
5973 case "$siteprefix" in
5974 '') dflt=$prefix ;;
5975 *)  dflt=$siteprefix ;;
5976 esac
5977 . ./getfile
5978 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5979 oldsiteprefix=''
5980 case "$siteprefix" in
5981 '') ;;
5982 *)      case "$ans" in
5983         "$prefix") ;;
5984         *) oldsiteprefix="$prefix";;
5985         esac
5986         ;;
5987 esac
5988 siteprefix="$ans"
5989 siteprefixexp="$ansexp"
5990
5991 : determine where site specific libraries go.
5992 : Usual default is /usr/local/lib/perl5/site_perl/$version
5993 : The default "style" setting is made in installstyle.U
5994 : XXX No longer works with Prefixit stuff.
5995 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5996 case "$sitelib" in
5997 '') case "$installstyle" in
5998         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5999         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6000         esac
6001         ;;
6002 *)      dflt="$sitelib"
6003         ;;
6004 esac
6005 $cat <<EOM
6006
6007 The installation process will create a directory for
6008 site-specific extensions and modules.  Most users find it convenient
6009 to place all site-specific files in this directory rather than in the
6010 main distribution directory.
6011
6012 EOM
6013 fn=d~+
6014 rp='Pathname for the site-specific library files?'
6015 . ./getfile
6016 sitelib="$ans"
6017 sitelibexp="$ansexp"
6018 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6019 : Change installation prefix, if necessary.
6020 if $test X"$prefix" != X"$installprefix"; then
6021         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6022 else
6023         installsitelib="$sitelibexp"
6024 fi
6025
6026 : determine where site specific architecture-dependent libraries go.
6027 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6028 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6029 : sitelib may have an optional trailing /share.
6030 case "$sitearch" in
6031 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6032         dflt="$dflt/$archname"
6033         ;;
6034 *)      dflt="$sitearch"
6035         ;;
6036 esac
6037 set sitearch sitearch none
6038 eval $prefixit
6039 $cat <<EOM
6040
6041 The installation process will also create a directory for
6042 architecture-dependent site-specific extensions and modules.
6043
6044 EOM
6045 fn=d~+
6046 rp='Pathname for the site-specific architecture-dependent library files?'
6047 . ./getfile
6048 sitearch="$ans"
6049 sitearchexp="$ansexp"
6050 : Change installation prefix, if necessary.
6051 if $test X"$prefix" != X"$installprefix"; then
6052         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6053 else
6054         installsitearch="$sitearchexp"
6055 fi
6056
6057 $cat <<EOM
6058
6059 The installation process will also create a directory for
6060 vendor-supplied add-ons.  Vendors who supply perl with their system
6061 may find it convenient to place all vendor-supplied files in this
6062 directory rather than in the main distribution directory.  This will
6063 ease upgrades between binary-compatible maintenance versions of perl.
6064
6065 Of course you may also use these directories in whatever way you see
6066 fit.  For example, you might use them to access modules shared over a
6067 company-wide network.
6068
6069 The default answer should be fine for most people.
6070 This causes further questions about vendor add-ons to be skipped
6071 and no vendor-specific directories will be configured for perl.
6072
6073 EOM
6074 rp='Do you want to configure vendor-specific add-on directories?'
6075 case "$usevendorprefix" in
6076 define|true|[yY]*) dflt=y ;;
6077 *)      : User may have set vendorprefix directly on Configure command line.
6078         case "$vendorprefix" in
6079         ''|' ') dflt=n ;;
6080         *)      dflt=y ;;
6081         esac
6082         ;;
6083 esac
6084 . ./myread
6085 case "$ans" in
6086 [yY]*)  fn=d~+
6087         rp='Installation prefix to use for vendor-supplied add-ons?'
6088         case "$vendorprefix" in
6089         '') dflt='' ;;
6090         *)  dflt=$vendorprefix ;;
6091         esac
6092         . ./getfile
6093         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6094         oldvendorprefix=''
6095         case "$vendorprefix" in
6096         '') ;;
6097         *)      case "$ans" in
6098                 "$prefix") ;;
6099                 *) oldvendorprefix="$prefix";;
6100                 esac
6101                 ;;
6102         esac
6103         usevendorprefix="$define"
6104         vendorprefix="$ans"
6105         vendorprefixexp="$ansexp"
6106         ;;
6107 *)      usevendorprefix="$undef"
6108         vendorprefix=''
6109         vendorprefixexp=''
6110         ;;
6111 esac
6112
6113 case "$vendorprefix" in
6114 '')     d_vendorlib="$undef"
6115         vendorlib=''
6116         vendorlibexp=''
6117         ;;
6118 *)      d_vendorlib="$define"
6119         : determine where vendor-supplied modules go.
6120         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6121         case "$vendorlib" in
6122         '')
6123                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6124                 case "$installstyle" in
6125                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6126                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6127                 esac
6128                 ;;
6129         *)      dflt="$vendorlib"
6130                 ;;
6131         esac
6132         fn=d~+
6133         rp='Pathname for the vendor-supplied library files?'
6134         . ./getfile
6135         vendorlib="$ans"
6136         vendorlibexp="$ansexp"
6137         ;;
6138 esac
6139 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6140 : Change installation prefix, if necessary.
6141 if $test X"$prefix" != X"$installprefix"; then
6142         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6143 else
6144         installvendorlib="$vendorlibexp"
6145 fi
6146
6147 case "$vendorprefix" in
6148 '')     d_vendorarch="$undef"
6149         vendorarch=''
6150         vendorarchexp=''
6151         ;;
6152 *)      d_vendorarch="$define"
6153         : determine where vendor-supplied architecture-dependent libraries go.
6154         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6155         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6156         : vendorlib may have an optional trailing /share.
6157         case "$vendorarch" in
6158         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6159                 dflt="$dflt/$archname"
6160                 ;;
6161         *)      dflt="$vendorarch" ;;
6162         esac
6163         fn=d~+
6164         rp='Pathname for vendor-supplied architecture-dependent files?'
6165         . ./getfile
6166         vendorarch="$ans"
6167         vendorarchexp="$ansexp"
6168         ;;
6169 esac
6170 : Change installation prefix, if necessary.
6171 if $test X"$prefix" != X"$installprefix"; then
6172         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6173 else
6174         installvendorarch="$vendorarchexp"
6175 fi
6176
6177 : Final catch-all directories to search
6178 $cat <<EOM
6179
6180 Lastly, you can have perl look in other directories for extensions and
6181 modules in addition to those already specified.
6182 These directories will be searched after 
6183         $sitearch 
6184         $sitelib 
6185 EOM
6186 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6187 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6188 echo ' '
6189 case "$otherlibdirs" in
6190 ''|' ') dflt='none' ;;
6191 *)      dflt="$otherlibdirs" ;;
6192 esac
6193 $cat <<EOM
6194 Enter a colon-separated set of extra paths to include in perl's @INC
6195 search path, or enter 'none' for no extra paths.
6196
6197 EOM
6198
6199 rp='Colon-separated list of additional directories for perl to search?'
6200 . ./myread
6201 case "$ans" in
6202 ' '|''|none)    otherlibdirs=' ' ;;     
6203 *)      otherlibdirs="$ans" ;;
6204 esac
6205 case "$otherlibdirs" in
6206 ' ') val=$undef ;;
6207 *)      val=$define ;;
6208 esac
6209 set d_perl_otherlibdirs
6210 eval $setvar
6211
6212 : Cruising for prototypes
6213 echo " "
6214 echo "Checking out function prototypes..." >&4
6215 $cat >prototype.c <<'EOCP'
6216 int main(int argc, char *argv[]) {
6217         exit(0);}
6218 EOCP
6219 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6220         echo "Your C compiler appears to support function prototypes."
6221         val="$define"
6222 else
6223         echo "Your C compiler doesn't seem to understand function prototypes."
6224         val="$undef"
6225 fi
6226 set prototype
6227 eval $setvar
6228 $rm -f prototype*
6229
6230 case "$prototype" in
6231 "$define") ;;
6232 *)      ansi2knr='ansi2knr'
6233         echo " "
6234         cat <<EOM >&4
6235
6236 $me:  FATAL ERROR:
6237 This version of $package can only be compiled by a compiler that 
6238 understands function prototypes.  Unfortunately, your C compiler 
6239         $cc $ccflags
6240 doesn't seem to understand them.  Sorry about that.
6241
6242 If GNU cc is available for your system, perhaps you could try that instead.  
6243
6244 Eventually, we hope to support building Perl with pre-ANSI compilers.
6245 If you would like to help in that effort, please contact <perlbug@perl.org>.
6246
6247 Aborting Configure now.
6248 EOM
6249         exit 2
6250         ;;
6251 esac
6252
6253 : determine where public executables go
6254 echo " "
6255 set dflt bin bin
6256 eval $prefixit
6257 fn=d~
6258 rp='Pathname where the public executables will reside?'
6259 . ./getfile
6260 if $test "X$ansexp" != "X$binexp"; then
6261         installbin=''
6262 fi
6263 bin="$ans"
6264 binexp="$ansexp"
6265 : Change installation prefix, if necessary.
6266 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6267 if $test X"$prefix" != X"$installprefix"; then
6268         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6269 else
6270         installbin="$binexp"
6271 fi
6272
6273 : Find perl5.005 or later.
6274 echo "Looking for a previously installed perl5.005 or later... "
6275 case "$perl5" in
6276 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6277                 : Check if this perl is recent and can load a simple module
6278                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6279                         perl5=$tdir/perl
6280                         break;
6281                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6282                         perl5=$tdir/perl
6283                         break;
6284                 fi
6285         done
6286         ;;
6287 *)      perl5="$perl5"
6288         ;;
6289 esac
6290 case "$perl5" in
6291 '')     echo "None found.  That's ok.";;
6292 *)      echo "Using $perl5." ;;
6293 esac
6294
6295 : Determine list of previous versions to include in @INC
6296 $cat > getverlist <<EOPL
6297 #!$perl5 -w
6298 use File::Basename;
6299 \$api_versionstring = "$api_versionstring";
6300 \$version = "$version";
6301 \$stem = "$sitelib_stem";
6302 \$archname = "$archname";
6303 EOPL
6304         $cat >> getverlist <<'EOPL'
6305 # Can't have leading @ because metaconfig interprets it as a command!
6306 ;@inc_version_list=();
6307 # XXX Redo to do opendir/readdir? 
6308 if (-d $stem) {
6309     chdir($stem);
6310     ;@candidates = glob("5.*");
6311 }
6312 else {
6313     ;@candidates = ();
6314 }
6315
6316 # XXX ToDo:  These comparisons must be reworked when two-digit
6317 # subversions come along, so that 5.7.10 compares as greater than
6318 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6319 # widespread that we can use the built-in version vectors rather
6320 # than reinventing them here.  For 5.6.0, however, we must
6321 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6322 foreach $d (@candidates) {
6323     if ($d lt $version) {
6324         if ($d ge $api_versionstring) {
6325             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6326         }
6327         elsif ($d ge "5.005") {
6328             unshift(@inc_version_list, grep { -d } $d);
6329         }
6330     }
6331     else {
6332         # Skip newer version.  I.e. don't look in
6333         # 5.7.0 if we're installing 5.6.1.
6334     }
6335 }
6336
6337 if (@inc_version_list) {
6338     print join(' ', @inc_version_list);
6339 }
6340 else {
6341     # Blank space to preserve value for next Configure run.
6342     print " ";
6343 }
6344 EOPL
6345 chmod +x getverlist
6346 case "$inc_version_list" in
6347 '')     if test -x "$perl5"; then
6348                 dflt=`$perl5 getverlist`
6349         else
6350                 dflt='none'
6351         fi
6352         ;;
6353 $undef) dflt='none' ;;
6354 *)  dflt="$inc_version_list" ;;
6355 esac
6356 case "$dflt" in
6357 ''|' ') dflt=none ;;
6358 esac
6359 case "$dflt" in
6360 5.005) case "$bincompat5005" in
6361        $define|true|[yY]*) ;;
6362        *) dflt=none ;;
6363        esac
6364        ;;
6365 esac
6366 $cat <<'EOM'
6367
6368 In order to ease the process of upgrading, this version of perl 
6369 can be configured to use modules built and installed with earlier 
6370 versions of perl that were installed under $prefix.  Specify here
6371 the list of earlier versions that this version of perl should check.
6372 If Configure detected no earlier versions of perl installed under
6373 $prefix, then the list will be empty.  Answer 'none' to tell perl
6374 to not search earlier versions.
6375
6376 The default should almost always be sensible, so if you're not sure,
6377 just accept the default.
6378 EOM
6379
6380 rp='List of earlier versions to include in @INC?'
6381 . ./myread
6382 case "$ans" in
6383 [Nn]one|''|' ') inc_version_list=' ' ;;
6384 *) inc_version_list="$ans" ;;
6385 esac
6386 case "$inc_version_list" in
6387 ''|' ') 
6388         inc_version_list_init='0';;
6389 *)      inc_version_list_init=`echo $inc_version_list |
6390                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6391         ;;
6392 esac
6393 $rm -f getverlist
6394
6395 : determine whether to install perl also as /usr/bin/perl
6396
6397 echo " "
6398 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6399         $cat <<EOM
6400 Many scripts expect perl to be installed as /usr/bin/perl.
6401 I can install the perl you are about to compile also as /usr/bin/perl
6402 (in addition to $installbin/perl).
6403 EOM
6404         case "$installusrbinperl" in
6405         "$undef"|[nN]*) dflt='n';;
6406         *)              dflt='y';;
6407         esac
6408         rp="Do you want to install perl as /usr/bin/perl?"
6409         . ./myread
6410         case "$ans" in
6411         [yY]*)  val="$define";;
6412         *)      val="$undef" ;;
6413         esac
6414 else
6415         val="$undef"
6416 fi
6417 set installusrbinperl
6418 eval $setvar
6419
6420 : see if dld is available
6421 set dld.h i_dld
6422 eval $inhdr
6423
6424 : see if dlopen exists
6425 xxx_runnm="$runnm"
6426 runnm=false
6427 set dlopen d_dlopen
6428 eval $inlibc
6429 runnm="$xxx_runnm"
6430
6431 : determine which dynamic loading, if any, to compile in
6432 echo " "
6433 dldir="ext/DynaLoader"
6434 case "$usedl" in
6435 $define|y|true)
6436         dflt='y'
6437         usedl="$define"
6438         ;;
6439 $undef|n|false)
6440         dflt='n'
6441         usedl="$undef"
6442         ;;
6443 *) 
6444         dflt='n'
6445         case "$d_dlopen" in
6446             $define) dflt='y' ;;
6447         esac
6448         case "$i_dld" in
6449             $define) dflt='y' ;;
6450         esac
6451         : Does a dl_xxx.xs file exist for this operating system
6452         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6453         ;;
6454 esac
6455 rp="Do you wish to use dynamic loading?"
6456 . ./myread
6457 usedl="$ans"
6458 case "$ans" in
6459 y*) usedl="$define"
6460         case "$dlsrc" in
6461         '')
6462                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6463                         dflt="$dldir/dl_${osname}.xs"
6464                 elif $test "$d_dlopen" = "$define" ; then
6465                         dflt="$dldir/dl_dlopen.xs"
6466                 elif $test "$i_dld" = "$define" ; then
6467                         dflt="$dldir/dl_dld.xs"
6468                 else
6469                         dflt=''
6470                 fi
6471                 ;;
6472         *)      dflt="$dldir/$dlsrc"
6473                 ;;
6474         esac
6475     echo "The following dynamic loading files are available:"
6476         : Can not go over to $dldir because getfile has path hard-coded in.
6477         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6478         rp="Source file to use for dynamic loading"
6479         fn="fne"
6480         gfpth="$src"
6481         . ./getfile
6482         usedl="$define"
6483         : emulate basename
6484         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6485
6486         $cat << EOM
6487
6488 Some systems may require passing special flags to $cc -c to
6489 compile modules that will be used to create a shared library.
6490 To use no flags, say "none".
6491
6492 EOM
6493     case "$cccdlflags" in
6494     '') case "$gccversion" in
6495                 '') case "$osname" in
6496                         hpux)   dflt='+z' ;;
6497                         next)   dflt='none' ;;
6498                         irix*)  dflt='-KPIC' ;;
6499                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6500                         sunos)  dflt='-pic' ;;
6501                         *)      dflt='none' ;;
6502                     esac
6503                         ;;
6504                 *)  case "$osname" in
6505                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6506                         *)      dflt='-fpic' ;;
6507                     esac ;;
6508             esac ;;
6509         ' ') dflt='none' ;;
6510     *)  dflt="$cccdlflags" ;;
6511     esac
6512     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6513     . ./myread
6514     case "$ans" in
6515     none) cccdlflags=' ' ;;
6516     *) cccdlflags="$ans" ;;
6517     esac
6518
6519     cat << EOM
6520
6521 Some systems use ld to create libraries that can be dynamically loaded,
6522 while other systems (such as those using ELF) use $cc.
6523
6524 EOM
6525         case "$ld" in
6526         '')     $cat >try.c <<'EOM'
6527 /* Test for whether ELF binaries are produced */
6528 #include <fcntl.h>
6529 #include <stdlib.h>
6530 int main() {
6531         char b[4];
6532         int i = open("a.out",O_RDONLY);
6533         if(i == -1) 
6534                 exit(1); /* fail */
6535         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6536                 exit(0); /* succeed (yes, it's ELF) */
6537         else
6538                 exit(1); /* fail */
6539 }
6540 EOM
6541                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6542                         cat <<EOM
6543 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6544 EOM
6545                         dflt="$cc"
6546                 else
6547                         echo "I'll use ld to build dynamic libraries."
6548                         dflt='ld'
6549                 fi
6550                 rm -f try.c a.out
6551                 ;;
6552         *)      dflt="$ld"
6553                 ;;
6554         esac
6555
6556     rp="What command should be used to create dynamic libraries?"
6557     . ./myread
6558         ld="$ans"
6559
6560     cat << EOM
6561
6562 Some systems may require passing special flags to $ld to create a
6563 library that can be dynamically loaded.  If your ld flags include
6564 -L/other/path options to locate libraries outside your loader's normal
6565 search path, you may need to specify those -L options here as well.  To
6566 use no flags, say "none".
6567
6568 EOM
6569     case "$lddlflags" in
6570     '') case "$osname" in
6571                         beos) dflt='-nostart' ;;
6572                         hpux) dflt='-b';
6573                               case "$gccversion" in
6574                               '') dflt="$dflt +vnocompatwarnings" ;;
6575                               esac
6576                               ;;        
6577                         linux|irix*)    dflt='-shared' ;;
6578                         next)  dflt='none' ;;
6579                         solaris) dflt='-G' ;;
6580                         sunos) dflt='-assert nodefinitions' ;;
6581                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6582                 *)     dflt='none' ;;
6583                         esac
6584                         ;;
6585     *) dflt="$lddlflags" ;;
6586     esac
6587
6588         : Try to guess additional flags to pick up local libraries.
6589         : Be careful not to append to a plain 'none'
6590         case "$dflt" in
6591         none) dflt='' ;;
6592         esac
6593         for thisflag in $ldflags; do
6594                 case "$thisflag" in
6595                 -L*|-R*)
6596                         case " $dflt " in
6597                         *" $thisflag "*) ;;
6598                         *) dflt="$dflt $thisflag" ;;
6599                         esac
6600                         ;;
6601                 esac
6602         done
6603
6604         case "$dflt" in
6605         ''|' ') dflt='none' ;;
6606         esac
6607
6608     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6609     . ./myread
6610     case "$ans" in
6611     none) lddlflags=' ' ;;
6612     *) lddlflags="$ans" ;;
6613     esac
6614
6615         cat <<EOM
6616
6617 Some systems may require passing special flags to $cc to indicate that
6618 the resulting executable will use dynamic linking.  To use no flags,
6619 say "none".
6620
6621 EOM
6622     case "$ccdlflags" in
6623     '') case "$osname" in
6624                 hpux)   dflt='-Wl,-E' ;;
6625                 linux)  dflt='-rdynamic' ;;
6626                 next)   dflt='none' ;;
6627                 sunos)  dflt='none' ;;
6628                 *)      dflt='none' ;;
6629             esac ;;
6630     ' ')  dflt='none' ;;
6631     *)  dflt="$ccdlflags" ;;
6632     esac
6633     rp="Any special flags to pass to $cc to use dynamic linking?"
6634     . ./myread
6635     case "$ans" in
6636     none) ccdlflags=' ' ;;
6637     *) ccdlflags="$ans" ;;
6638     esac
6639     ;;
6640 *)  usedl="$undef"
6641         ld='ld'
6642     dlsrc='dl_none.xs'
6643     lddlflags=''
6644     ccdlflags=''
6645     ;;
6646 esac
6647
6648 also=''
6649 case "$usedl" in
6650 $undef)
6651         # No dynamic loading being used, so don't bother even to prompt.
6652         useshrplib='false'
6653         ;;
6654 *)      case "$useshrplib" in
6655         '')     case "$osname" in
6656                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6657                         dflt=y
6658                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6659                         ;;
6660                 next*)
6661                         case "$osvers" in
6662                         4*)     dflt=y
6663                                 also='Building a shared libperl is needed for MAB support.'
6664                                 ;;
6665                         *)      dflt=n
6666                                 ;;
6667                         esac
6668                         ;;
6669                 *)      dflt=n
6670                         ;;
6671                 esac
6672                 ;;
6673         $define|true|[Yy]*)
6674                 dflt=y
6675                 ;;
6676         *)      dflt=n
6677                 ;;
6678         esac
6679         $cat << EOM
6680
6681 The perl executable is normally obtained by linking perlmain.c with
6682 libperl${_a}, any static extensions (usually just DynaLoader), and
6683 any other libraries needed on this system (such as -lm, etc.).  Since
6684 your system supports dynamic loading, it is probably possible to build
6685 a shared libperl.$so.  If you will have more than one executable linked
6686 to libperl.$so, this will significantly reduce the size of each
6687 executable, but it may have a noticeable affect on performance.  The
6688 default is probably sensible for your system.
6689 $also
6690
6691 EOM
6692         rp="Build a shared libperl.$so (y/n)"
6693         . ./myread
6694         case "$ans" in
6695         true|$define|[Yy]*)
6696                 useshrplib='true'  ;;
6697         *)      useshrplib='false' ;;
6698         esac
6699         ;;
6700 esac
6701
6702 case "$useshrplib" in
6703 true)
6704         case "$libperl" in
6705         '')
6706                 # Figure out a good name for libperl.so.  Since it gets stored in
6707                 # a version-specific architecture-dependent library, the version
6708                 # number isn't really that important, except for making cc/ld happy.
6709                 #
6710                 # A name such as libperl.so.3.1
6711                 majmin="libperl.$so.$patchlevel.$subversion"
6712                 # A name such as libperl.so.301
6713                 majonly=`echo $patchlevel $subversion |
6714                         $awk '{printf "%d%02d", $1, $2}'`
6715                 majonly=libperl.$so.$majonly
6716                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6717                 # rely on figuring it out from the naming of libc.
6718                 case "${osname}${osvers}" in
6719                 next4*)
6720                         dflt=libperl.5.$so
6721                         # XXX How handle the --version stuff for MAB?
6722                         ;;
6723                 linux*)  # ld won't link with a bare -lperl otherwise.
6724                         dflt=libperl.$so
6725                         ;;
6726                 cygwin*) # include version
6727                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6728                         ;;
6729                 *)      # Try to guess based on whether libc has major.minor.
6730                         case "$libc" in
6731                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6732                         *libc.$so.[0-9]*) dflt=$majonly ;;
6733                         *)      dflt=libperl.$so ;;
6734                         esac
6735                         ;;
6736                 esac
6737                 ;;
6738         *)      dflt=$libperl
6739                 ;;
6740         esac
6741         cat << EOM
6742
6743 I need to select a good name for the shared libperl.  If your system uses
6744 library names with major and minor numbers, then you might want something
6745 like $majmin.  Alternatively, if your system uses a single version
6746 number for shared libraries, then you might want to use $majonly.
6747 Or, your system might be quite happy with a simple libperl.$so.
6748
6749 Since the shared libperl will get installed into a version-specific
6750 architecture-dependent directory, the version number of the shared perl
6751 library probably isn't important, so the default should be o.k.
6752
6753 EOM
6754         rp='What name do you want to give to the shared libperl?'
6755         . ./myread
6756         libperl=$ans
6757         echo "Ok, I'll use $libperl"
6758         ;;
6759 *)
6760         libperl="libperl${_a}"
6761         ;;
6762 esac
6763
6764 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6765 case "$shrpdir" in
6766 '') ;;
6767 *)      $cat >&4 <<EOM
6768 WARNING:  Use of the shrpdir variable for the installation location of
6769 the shared $libperl is not supported.  It was never documented and
6770 will not work in this version.  Let me (perlbug@perl.org)
6771 know of any problems this may cause.
6772
6773 EOM
6774         case "$shrpdir" in
6775         "$archlibexp/CORE")
6776                 $cat >&4 <<EOM
6777 But your current setting of $shrpdir is
6778 the default anyway, so it's harmless.
6779 EOM
6780                 ;;
6781         *)
6782                 $cat >&4 <<EOM
6783 Further, your current attempted setting of $shrpdir
6784 conflicts with the value of $archlibexp/CORE
6785 that installperl will use.
6786 EOM
6787                 ;;
6788         esac
6789         ;;
6790 esac
6791
6792 # How will the perl executable find the installed shared $libperl?
6793 # Add $xxx to ccdlflags.
6794 # If we can't figure out a command-line option, use $shrpenv to
6795 # set env LD_RUN_PATH.  The main perl makefile uses this.
6796 shrpdir=$archlibexp/CORE
6797 xxx=''
6798 tmp_shrpenv=''
6799 if "$useshrplib"; then
6800     case "$osname" in 
6801         aix)
6802                 # We'll set it in Makefile.SH...
6803                 ;;
6804         solaris|netbsd)
6805                 xxx="-R $shrpdir"
6806                 ;;
6807         freebsd)
6808                 xxx="-Wl,-R$shrpdir"
6809                 ;;
6810         linux|irix*|dec_osf)
6811                 xxx="-Wl,-rpath,$shrpdir"
6812                 ;;
6813         next)
6814                 # next doesn't like the default...
6815                 ;;
6816         beos)
6817                 # beos doesn't like the default, either.
6818                 ;;
6819         hpux*)
6820                 # hpux doesn't like the default, either.
6821                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6822                 ;;
6823         *)
6824                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6825                 ;;
6826         esac
6827         case "$xxx" in
6828         '') ;;
6829         *)      
6830                 # Only add $xxx if it isn't already in ccdlflags.
6831                 case " $ccdlflags " in
6832                 *" $xxx "*)     ;;
6833                 *)      ccdlflags="$ccdlflags $xxx"
6834                         cat <<EOM >&4
6835
6836 Adding $xxx to the flags
6837 passed to $ld so that the perl executable will find the 
6838 installed shared $libperl.
6839
6840 EOM
6841                         ;;
6842                 esac
6843                 ;;
6844         esac
6845 fi
6846 # Fix ccdlflags in AIX for building external extensions.
6847 # (For building Perl itself bare -bE:perl.exp is needed,
6848 #  Makefile.SH takes care of this.)
6849 case "$osname" in
6850 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6851 esac
6852 # Respect a hint or command-line value.
6853 case "$shrpenv" in
6854 '') shrpenv="$tmp_shrpenv" ;;
6855 esac
6856 case "$ldlibpthname" in
6857 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6858 none)   ldlibpthname='' ;;
6859 esac
6860
6861 : determine where manual pages are on this system
6862 echo " "
6863 case "$sysman" in
6864 '') 
6865         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6866         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6867         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6868         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6869         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6870         sysman=`./loc . /usr/man/man1 $syspath`
6871         ;;
6872 esac
6873 if $test -d "$sysman"; then
6874         echo "System manual is in $sysman." >&4
6875 else
6876         echo "Could not find manual pages in source form." >&4
6877 fi
6878
6879 : determine where manual pages go
6880 set man1dir man1dir none
6881 eval $prefixit
6882 $cat <<EOM
6883
6884 $spackage has manual pages available in source form.
6885 EOM
6886 case "$nroff" in
6887 nroff)
6888         echo "However, you don't have nroff, so they're probably useless to you."
6889         case "$man1dir" in
6890         '') man1dir="none";;
6891         esac;;
6892 esac
6893 echo "If you don't want the manual sources installed, answer 'none'."
6894 case "$man1dir" in
6895 ' ') dflt=none
6896         ;;
6897 '')
6898         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6899         lookpath="$lookpath $prefixexp/man/p_man/man1"
6900         lookpath="$lookpath $prefixexp/man/u_man/man1"
6901         lookpath="$lookpath $prefixexp/man/man.1"
6902         case "$sysman" in
6903         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6904         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6905         esac
6906         set dflt
6907         eval $prefixup
6908         ;;
6909 *)  dflt="$man1dir"
6910         ;;
6911 esac
6912 echo " "
6913 fn=dn+~
6914 rp="Where do the main $spackage manual pages (source) go?"
6915 . ./getfile
6916 if $test "X$man1direxp" != "X$ansexp"; then
6917         installman1dir=''
6918 fi
6919 man1dir="$ans"
6920 man1direxp="$ansexp"
6921 case "$man1dir" in
6922 '')     man1dir=' '
6923         installman1dir='';;
6924 esac
6925
6926 : Change installation prefix, if necessary.
6927 if $test X"$prefix" != X"$installprefix"; then
6928         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6929 else
6930         installman1dir="$man1direxp"
6931 fi
6932
6933 : What suffix to use on installed man pages
6934
6935 case "$man1dir" in
6936 ' ')
6937         man1ext='0'
6938         ;;
6939 *)
6940         rp="What suffix should be used for the main $spackage man pages?"
6941         case "$man1ext" in
6942         '')     case "$man1dir" in
6943                 *1)  dflt=1 ;;
6944                 *1p) dflt=1p ;;
6945                 *1pm) dflt=1pm ;;
6946                 *l) dflt=l;;
6947                 *n) dflt=n;;
6948                 *o) dflt=o;;
6949                 *p) dflt=p;;
6950                 *C) dflt=C;;
6951                 *L) dflt=L;;
6952                 *L1) dflt=L1;;
6953                 *) dflt=1;;
6954                 esac
6955                 ;;
6956         *)      dflt="$man1ext";;
6957         esac
6958         . ./myread
6959         man1ext="$ans"
6960         ;;
6961 esac
6962
6963 : see if we can have long filenames
6964 echo " "
6965 first=123456789abcdef
6966 $rm -f $first
6967 if (echo hi >$first) 2>/dev/null; then
6968         if $test -f 123456789abcde; then
6969                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6970                 val="$undef"
6971         else
6972                 echo 'You can have filenames longer than 14 characters.'>&4
6973                 val="$define"
6974         fi
6975 else
6976         $cat <<'EOM'
6977 You can't have filenames longer than 14 chars.
6978 You can't even think about them!
6979 EOM
6980         val="$undef"
6981 fi 
6982 set d_flexfnam
6983 eval $setvar
6984 $rm -rf 123456789abcde*
6985
6986 : determine where library module manual pages go
6987 set man3dir man3dir none
6988 eval $prefixit
6989 $cat <<EOM
6990
6991 $spackage has manual pages for many of the library modules.
6992 EOM
6993
6994 case "$nroff" in
6995 nroff)
6996         $cat <<'EOM'
6997 However, you don't have nroff, so they're probably useless to you.
6998 EOM
6999         case "$man3dir" in
7000         '') man3dir="none";;
7001         esac;;
7002 esac
7003
7004 case "$d_flexfnam" in
7005 undef)
7006         $cat <<'EOM'
7007 However, your system can't handle the long file names like File::Basename.3. 
7008 EOM
7009         case "$man3dir" in
7010         '') man3dir="none";;
7011         esac;;
7012 esac
7013
7014 echo "If you don't want the manual sources installed, answer 'none'."
7015 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7016 case "$man3dir" in
7017 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7018         if $test -d "$privlib/man/man3"; then
7019                 cat <<EOM >&4
7020
7021 WARNING:  Previous versions of perl installed man3 pages into
7022 $privlib/man/man3.  This version will suggest a 
7023 new default of $dflt.  
7024 EOM
7025                 tdflt=$dflt
7026                 dflt='n'
7027                 rp='Do you wish to preserve the old behavior?(y/n)'
7028                 . ./myread
7029                 case "$ans" in
7030                 y*) dflt="$privlib/man/man3" ;;
7031                 *)  dflt=$tdflt ;;
7032                 esac
7033     fi
7034         ;;
7035 *)      dflt="$man3dir" ;;
7036 esac
7037 case "$dflt" in
7038 ' ') dflt=none ;;
7039 esac
7040 echo " "
7041 fn=dn+~
7042 rp="Where do the $package library man pages (source) go?"
7043 . ./getfile
7044 man3dir="$ans"
7045 man3direxp="$ansexp"
7046 case "$man3dir" in
7047 '')     man3dir=' '
7048         installman3dir='';;
7049 esac
7050
7051 : Change installation prefix, if necessary.
7052 if $test X"$prefix" != X"$installprefix"; then
7053         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7054 else
7055         installman3dir="$man3direxp"
7056 fi
7057
7058 : What suffix to use on installed man pages
7059 case "$man3dir" in
7060 ' ')
7061         man3ext='0'
7062         ;;
7063 *)
7064         rp="What suffix should be used for the $package library man pages?"
7065         case "$man3ext" in
7066         '')     case "$man3dir" in
7067                 *3)  dflt=3 ;;
7068                 *3p) dflt=3p ;;
7069                 *3pm) dflt=3pm ;;
7070                 *l) dflt=l;;
7071                 *n) dflt=n;;
7072                 *o) dflt=o;;
7073                 *p) dflt=p;;
7074                 *C) dflt=C;;
7075                 *L) dflt=L;;
7076                 *L3) dflt=L3;;
7077                 *) dflt=3;;
7078                 esac
7079                 ;;
7080         *)      dflt="$man3ext";;
7081         esac
7082         . ./myread
7083         man3ext="$ans"
7084         ;;
7085 esac
7086
7087 : see if we have to deal with yellow pages, now NIS.
7088 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7089         if $test -f /usr/etc/nibindd; then
7090                 echo " "
7091                 echo "I'm fairly confident you're on a NeXT."
7092                 echo " "
7093                 rp='Do you get the hosts file via NetInfo?'
7094                 dflt=y
7095                 case "$hostcat" in
7096                 nidump*) ;;
7097                 '') ;;
7098                 *) dflt=n;;
7099                 esac
7100                 . ./myread
7101                 case "$ans" in
7102                 y*) hostcat='nidump hosts .';;
7103                 *)      case "$hostcat" in
7104                         nidump*) hostcat='';;
7105                         esac
7106                         ;;
7107                 esac
7108         fi
7109         case "$hostcat" in
7110         nidump*) ;;
7111         *)
7112                 case "$hostcat" in
7113                 *ypcat*) dflt=y;;
7114                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7115                                 dflt=y
7116                         else
7117                                 dflt=n
7118                         fi;;
7119                 *) dflt=n;;
7120                 esac
7121                 echo " "
7122                 rp='Are you getting the hosts file via yellow pages?'
7123                 . ./myread
7124                 case "$ans" in
7125                 y*) hostcat='ypcat hosts';;
7126                 *) hostcat='cat /etc/hosts';;
7127                 esac
7128                 ;;
7129         esac
7130 fi
7131 case "$hostcat" in
7132 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7133 esac
7134 case "$groupcat" in
7135 '') test -f /etc/group && groupcat='cat /etc/group';;
7136 esac
7137 case "$passcat" in
7138 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7139 esac
7140
7141 : now get the host name
7142 echo " "
7143 echo "Figuring out host name..." >&4
7144 case "$myhostname" in
7145 '') cont=true
7146         echo 'Maybe "hostname" will work...'
7147         if tans=`sh -c hostname 2>&1` ; then
7148                 myhostname=$tans
7149                 phostname=hostname
7150                 cont=''
7151         fi
7152         ;;
7153 *) cont='';;
7154 esac
7155 if $test "$cont"; then
7156         if ./xenix; then
7157                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7158                 if tans=`cat /etc/systemid 2>&1` ; then
7159                         myhostname=$tans
7160                         phostname='cat /etc/systemid'
7161                         echo "Whadyaknow.  Xenix always was a bit strange..."
7162                         cont=''
7163                 fi
7164         elif $test -r /etc/systemid; then
7165                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7166         fi
7167 fi
7168 if $test "$cont"; then
7169         echo 'No, maybe "uuname -l" will work...'
7170         if tans=`sh -c 'uuname -l' 2>&1` ; then
7171                 myhostname=$tans
7172                 phostname='uuname -l'
7173         else
7174                 echo 'Strange.  Maybe "uname -n" will work...'
7175                 if tans=`sh -c 'uname -n' 2>&1` ; then
7176                         myhostname=$tans
7177                         phostname='uname -n'
7178                 else
7179                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7180                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7181                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7182                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7183                         else
7184                                 case "$myhostname" in
7185                                 '') echo "Does this machine have an identity crisis or something?"
7186                                         phostname='';;
7187                                 *)
7188                                         echo "Well, you said $myhostname before..."
7189                                         phostname='echo $myhostname';;
7190                                 esac
7191                         fi
7192                 fi
7193         fi
7194 fi
7195 : you do not want to know about this
7196 set $myhostname
7197 myhostname=$1
7198
7199 : verify guess
7200 if $test "$myhostname" ; then
7201         dflt=y
7202         rp='Your host name appears to be "'$myhostname'".'" Right?"
7203         . ./myread
7204         case "$ans" in
7205         y*) ;;
7206         *) myhostname='';;
7207         esac
7208 fi
7209
7210 : bad guess or no guess
7211 while $test "X$myhostname" = X ; do
7212         dflt=''
7213         rp="Please type the (one word) name of your host:"
7214         . ./myread
7215         myhostname="$ans"
7216 done
7217
7218 : translate upper to lower if necessary
7219 case "$myhostname" in
7220 *[A-Z]*)
7221         echo "(Normalizing case in your host name)"
7222         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7223         ;;
7224 esac
7225
7226 case "$myhostname" in
7227 *.*)
7228         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7229         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7230         echo "(Trimming domain name from host name--host name is now $myhostname)"
7231         ;;
7232 *) case "$mydomain" in
7233         '')
7234                 {
7235                         test "X$hostcat" = "Xypcat hosts" &&
7236                         ypmatch "$myhostname" hosts 2>/dev/null |\
7237                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7238                         $test -s hosts
7239                 } || {
7240                         test "X$hostcat" != "X" &&
7241                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7242                                         /[       ]$myhostname[  . ]/p" > hosts
7243                 }
7244                 tmp_re="[       . ]"
7245                 if $test -f hosts; then
7246                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7247                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7248                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7249                                 hosts | $sort | $uniq | \
7250                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7251                         case `$echo X$dflt` in
7252                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7253                                 dflt=.
7254                                 ;;
7255                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7256                                 ;;
7257                         esac
7258                 else
7259                         echo "(I cannot locate a hosts database anywhere)"
7260                         dflt=.
7261                 fi
7262                 case "$dflt" in
7263                 .)
7264                         tans=`./loc resolv.conf X /etc /usr/etc`
7265                         if $test -f "$tans"; then
7266                                 echo "(Attempting domain name extraction from $tans)"
7267                                 dflt=.`$sed -n -e 's/   / /g' \
7268                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7269                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7270                                 case "$dflt" in
7271                                 .) dflt=.`$sed -n -e 's/        / /g' \
7272                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7273                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7274                                         ;;
7275                                 esac
7276                         fi
7277                         ;;
7278                 esac
7279                 case "$dflt" in
7280                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7281                         dflt=.`sh -c domainname 2>/dev/null`
7282                         case "$dflt" in
7283                         '') dflt='.';;
7284                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7285                         esac
7286                         ;;
7287                 esac
7288                 case "$dflt" in
7289                 .) echo "(Lost all hope -- silly guess then)"
7290                         dflt='.uucp'
7291                         ;;
7292                 esac
7293                 $rm -f hosts
7294                 ;;
7295         *) dflt="$mydomain";;
7296         esac;;
7297 esac
7298 echo " "
7299 rp="What is your domain name?"
7300 . ./myread
7301 tans="$ans"
7302 case "$ans" in
7303 '') ;;
7304 .*) ;;
7305 *) tans=".$tans";;
7306 esac
7307 mydomain="$tans"
7308
7309 : translate upper to lower if necessary
7310 case "$mydomain" in
7311 *[A-Z]*)
7312         echo "(Normalizing case in your domain name)"
7313         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7314         ;;
7315 esac
7316
7317 : a little sanity check here
7318 case "$phostname" in
7319 '') ;;
7320 *)
7321         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7322         $myhostname$mydomain|$myhostname) ;;
7323         *)
7324                 case "$phostname" in
7325                 sed*)
7326                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7327                         ;;
7328                 *)
7329                         echo "(That doesn't agree with your $phostname command, by the way.)"
7330                         ;;
7331                 esac
7332         ;;
7333         esac
7334         ;;
7335 esac
7336
7337 $cat <<EOM
7338
7339 I need to get your e-mail address in Internet format if possible, i.e.
7340 something like user@host.domain. Please answer accurately since I have
7341 no easy means to double check it. The default value provided below
7342 is most probably close to reality but may not be valid from outside
7343 your organization...
7344
7345 EOM
7346 cont=x
7347 while test "$cont"; do
7348         case "$cf_email" in
7349         '') dflt="$cf_by@$myhostname$mydomain";;
7350         *) dflt="$cf_email";;
7351         esac
7352         rp='What is your e-mail address?'
7353         . ./myread
7354         cf_email="$ans"
7355         case "$cf_email" in
7356         *@*.*) cont='' ;;
7357         *)
7358                 rp='Address does not look like an Internet one.  Use it anyway?'
7359                 case "$fastread" in
7360                 yes) dflt=y ;;
7361                 *) dflt=n ;;
7362                 esac
7363                 . ./myread
7364                 case "$ans" in
7365                 y*) cont='' ;;
7366                 *) echo " " ;;
7367                 esac
7368                 ;;
7369         esac
7370 done
7371
7372 $cat <<EOM
7373
7374 If you or somebody else will be maintaining perl at your site, please
7375 fill in the correct e-mail address here so that they may be contacted
7376 if necessary. Currently, the "perlbug" program included with perl
7377 will send mail to this address in addition to perlbug@perl.org. You may
7378 enter "none" for no administrator.
7379
7380 EOM
7381 case "$perladmin" in
7382 '') dflt="$cf_email";;
7383 *) dflt="$perladmin";;
7384 esac
7385 rp='Perl administrator e-mail address'
7386 . ./myread
7387 perladmin="$ans"
7388
7389 : determine whether to only install version-specific parts.
7390 echo " "
7391 $cat <<EOM
7392 Do you want to install only the version-specific parts of the perl
7393 distribution?  Usually you do *not* want to do this.
7394 EOM
7395 case "$versiononly" in
7396 "$define"|[Yy]*|true) dflt='y' ;;
7397 *) dflt='n';
7398 esac
7399 rp="Do you want to install only the version-specific parts of perl?"
7400 . ./myread
7401 case "$ans" in
7402 [yY]*)  val="$define";;
7403 *)      val="$undef" ;;
7404 esac
7405 set versiononly
7406 eval $setvar
7407
7408 : figure out how to guarantee perl startup
7409 case "$startperl" in
7410 '')
7411         case "$sharpbang" in
7412         *!)
7413                 $cat <<EOH
7414
7415 I can use the #! construct to start perl on your system. This will
7416 make startup of perl scripts faster, but may cause problems if you
7417 want to share those scripts and perl is not in a standard place
7418 ($binexp/perl) on all your platforms. The alternative is to force
7419 a shell by starting the script with a single ':' character.
7420
7421 EOH
7422                 case "$versiononly" in
7423                 "$define")      dflt="$binexp/perl$version";;  
7424                 *)              dflt="$binexp/perl";;
7425                 esac
7426                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7427                 . ./myread
7428                 case "$ans" in
7429                 none)   startperl=": # use perl";;
7430                 *)      startperl="#!$ans"
7431                         if $test 30 -lt `echo "$ans" | wc -c`; then
7432                                 $cat >&4 <<EOM
7433
7434 WARNING:  Some systems limit the #! command to 32 characters.
7435 If you experience difficulty running Perl scripts with #!, try
7436 installing Perl in a directory with a shorter pathname.
7437
7438 EOM
7439                         fi ;;
7440                 esac
7441                 ;;
7442         *) startperl=": # use perl"
7443                 ;;
7444         esac
7445         ;;
7446 esac
7447 echo "I'll use $startperl to start perl scripts."
7448
7449 : figure best path for perl in scripts
7450 case "$perlpath" in
7451 '')
7452         perlpath="$binexp/perl"
7453         case "$startperl" in
7454         *!*) ;;
7455         *)
7456                 $cat <<EOH
7457
7458 I will use the "eval 'exec'" idiom to start Perl on your system.
7459 I can use the full path of your Perl binary for this purpose, but
7460 doing so may cause problems if you want to share those scripts and
7461 Perl is not always in a standard place ($binexp/perl).
7462
7463 EOH
7464                 dflt="$binexp/perl"
7465                 rp="What path shall I use in \"eval 'exec'\"?"
7466                 . ./myread
7467                 perlpath="$ans"
7468                 ;;
7469         esac
7470         ;;
7471 esac
7472 case "$startperl" in
7473 *!*)    ;;
7474 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7475 esac
7476
7477 : determine where public executable scripts go
7478 set scriptdir scriptdir
7479 eval $prefixit
7480 case "$scriptdir" in
7481 '')
7482         dflt="$bin"
7483         : guess some guesses
7484         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7485         $test -d /usr/share/bin     && dflt=/usr/share/bin
7486         $test -d /usr/local/script  && dflt=/usr/local/script
7487         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7488         $test -d $prefixexp/script  && dflt=$prefixexp/script
7489         set dflt
7490         eval $prefixup
7491         ;;
7492 *)  dflt="$scriptdir"
7493         ;;
7494 esac
7495 $cat <<EOM
7496  
7497 Some installations have a separate directory just for executable scripts so
7498 that they can mount it across multiple architectures but keep the scripts in
7499 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7500 Or you might just lump your scripts in with all your other executables.
7501  
7502 EOM
7503 fn=d~
7504 rp='Where do you keep publicly executable scripts?'
7505 . ./getfile
7506 if $test "X$ansexp" != "X$scriptdirexp"; then
7507         installscript=''
7508 fi
7509 scriptdir="$ans"
7510 scriptdirexp="$ansexp"
7511 : Change installation prefix, if necessary.
7512 if $test X"$prefix" != X"$installprefix"; then
7513         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7514 else
7515         installscript="$scriptdirexp"
7516 fi
7517
7518 : determine where add-on public executables go
7519 case "$sitebin" in
7520 '')     dflt=$siteprefix/bin ;;
7521 *)      dflt=$sitebin ;;
7522 esac
7523 fn=d~
7524 rp='Pathname where the add-on public executables should be installed?'
7525 . ./getfile
7526 sitebin="$ans"
7527 sitebinexp="$ansexp"
7528 : Change installation prefix, if necessary.
7529 if $test X"$prefix" != X"$installprefix"; then
7530         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7531 else
7532         installsitebin="$sitebinexp"
7533 fi
7534
7535 case "$useperlio" in
7536 $define|true|[yY]*)     dflt='y';;
7537 *) dflt='n';;
7538 esac
7539 cat <<EOM
7540
7541 Previous version of $package used the standard IO mechanisms as
7542 defined in <stdio.h>.  Versions 5.003_02 and later of perl allow
7543 alternate IO mechanisms via the PerlIO abstraction layer, but the
7544 stdio mechanism is still the default.  This abstraction layer can
7545 use AT&T's sfio (if you already have sfio installed) or regular stdio.
7546 Using PerlIO with sfio may cause problems with some extension modules.
7547
7548 If this doesn't make any sense to you, just accept the default '$dflt'.
7549 EOM
7550 rp='Use the experimental PerlIO abstraction layer?'
7551 . ./myread
7552 case "$ans" in
7553 y|Y) 
7554         val="$define"
7555         ;;     
7556 *)      
7557         echo "Ok, doing things the stdio way."
7558         val="$undef"
7559         ;;
7560 esac
7561 set useperlio
7562 eval $setvar 
7563
7564 case "$usesocks" in
7565 $define|true|[yY]*)
7566         case "$useperlio" in
7567         $define|true|[yY]*) ;;
7568         *)      cat >&4 <<EOM
7569
7570 You are using the SOCKS proxy protocol library which means that you
7571 should also use the PerlIO layer.  You may be headed for trouble.
7572
7573 EOM
7574                 ;;
7575         esac
7576         ;;
7577 esac
7578
7579         
7580 case "$vendorprefix" in
7581 '')     d_vendorbin="$undef"
7582         vendorbin=''
7583         vendorbinexp=''
7584         ;;
7585 *)      d_vendorbin="$define"
7586         : determine where vendor-supplied executables go.
7587         case "$vendorbin" in
7588         '') dflt=$vendorprefix/bin ;;
7589         *)      dflt="$vendorbin" ;;
7590         esac
7591         fn=d~+
7592         rp='Pathname for the vendor-supplied executables directory?'
7593         . ./getfile
7594         vendorbin="$ans"
7595         vendorbinexp="$ansexp"
7596         ;;
7597 esac
7598 : Change installation prefix, if necessary.
7599 if $test X"$prefix" != X"$installprefix"; then
7600         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7601 else
7602         installvendorbin="$vendorbinexp"
7603 fi
7604
7605 : see if qgcvt exists
7606 set qgcvt d_qgcvt
7607 eval $inlibc
7608
7609 echo " "
7610
7611 if $test X"$d_longdbl" = X"$define"; then
7612
7613 echo "Checking how to print long doubles..." >&4
7614
7615 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7616         $cat >try.c <<'EOCP'
7617 #include <sys/types.h>
7618 #include <stdio.h>
7619 int main() {
7620   double d = 123.456;
7621   printf("%.3f\n", d);
7622 }
7623 EOCP
7624         set try
7625         if eval $compile; then
7626                 yyy=`./try$exe_ext`
7627                 case "$yyy" in
7628                 123.456)
7629                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7630                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7631                         echo "We will use %f."
7632                         ;;
7633                 esac
7634         fi
7635 fi
7636
7637 if $test X"$sPRIfldbl" = X; then
7638         $cat >try.c <<'EOCP'
7639 #include <sys/types.h>
7640 #include <stdio.h>
7641 int main() {
7642   long double d = 123.456;
7643   printf("%.3llf\n", d);
7644 }
7645 EOCP
7646         set try
7647         if eval $compile; then
7648                 yyy=`./try$exe_ext`
7649                 case "$yyy" in
7650                 123.456)
7651                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7652                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7653                         echo "We will use %llf."
7654                         ;;
7655                 esac
7656         fi
7657 fi
7658
7659 if $test X"$sPRIfldbl" = X; then
7660         $cat >try.c <<'EOCP'
7661 #include <sys/types.h>
7662 #include <stdio.h>
7663 int main() {
7664   long double d = 123.456;
7665   printf("%.3Lf\n", d);
7666 }
7667 EOCP
7668         set try
7669         if eval $compile; then
7670                 yyy=`./try$exe_ext`
7671                 case "$yyy" in
7672                 123.456)
7673                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7674                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7675                         echo "We will use %Lf."
7676                         ;;
7677                 esac
7678         fi
7679 fi
7680
7681 if $test X"$sPRIfldbl" = X; then
7682         $cat >try.c <<'EOCP'
7683 #include <sys/types.h>
7684 #include <stdio.h>
7685 int main() {
7686   long double d = 123.456;
7687   printf("%.3lf\n", d);
7688 }
7689 EOCP
7690         set try
7691         if eval $compile; then
7692                 yyy=`./try$exe_ext`
7693                 case "$yyy" in
7694                 123.456)
7695                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7696                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7697                         echo "We will use %lf."
7698                         ;;
7699                 esac
7700         fi
7701 fi
7702
7703 if $test X"$sPRIfldbl" = X; then
7704         echo "Cannot figure out how to print long doubles." >&4
7705 else
7706         sSCNfldbl=$sPRIfldbl    # expect consistency
7707 fi
7708
7709 $rm -f try try.*
7710
7711 fi # d_longdbl
7712
7713 case "$sPRIfldbl" in
7714 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7715         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7716         d_SCNfldbl="$undef";
7717         ;;
7718 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7719         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7720         d_SCNfldbl="$define";
7721         ;;
7722 esac
7723
7724 : Check how to convert floats to strings.
7725 echo " "
7726 echo "Checking for an efficient way to convert floats to strings."
7727 echo " " > try.c
7728 case "$uselongdouble" in
7729 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7730 esac
7731 case "$d_longdbl" in
7732 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7733 esac
7734 case "$d_PRIgldbl" in
7735 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7736 esac
7737 $cat >>try.c <<EOP
7738 #ifdef TRY_gconvert
7739 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7740 char *myname = "gconvert";
7741 #endif
7742 #ifdef TRY_gcvt
7743 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7744 char *myname = "gcvt";
7745 #endif
7746 #ifdef TRY_qgcvt
7747 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7748 char *myname = "qgcvt";
7749 #define DOUBLETYPE long double
7750 #endif
7751 #ifdef TRY_sprintf
7752 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7753 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7754 #else
7755 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7756 #endif
7757 char *myname = "sprintf";
7758 #endif
7759
7760 #ifndef DOUBLETYPE
7761 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7762 #define DOUBLETYPE long double
7763 #else
7764 #define DOUBLETYPE double
7765 #endif
7766 #endif
7767
7768 #include <stdio.h>
7769
7770 #define I_STDLIB $i_stdlib
7771 #ifdef I_STDLIB
7772 #include <stdlib.h>
7773 #endif
7774
7775 int
7776 checkit(expect, got)
7777 char *expect;
7778 char *got;
7779 {
7780     if (strcmp(expect, got)) {
7781                 printf("%s oddity:  Expected %s, got %s\n",
7782                         myname, expect, got);
7783                 exit(1);
7784         }
7785 }
7786
7787 int main()
7788
7789         char buf[64]; 
7790         buf[63] = '\0';
7791
7792         /* This must be 1st test on (which?) platform */
7793         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7794         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7795         checkit("0.1", buf);
7796
7797         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7798         checkit("1", buf);
7799
7800         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7801         checkit("1.1", buf);
7802
7803         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7804         checkit("1.01", buf);
7805
7806         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7807         checkit("1.001", buf);
7808
7809         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7810         checkit("1.0001", buf);
7811
7812         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7813         checkit("1.00001", buf);
7814
7815         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7816         checkit("1.000001", buf);
7817
7818         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7819         checkit("0", buf);
7820
7821         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7822         checkit("-1", buf);
7823
7824         /* Some Linux gcvt's give 1.e+5 here. */
7825         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7826         checkit("100000", buf);
7827         
7828         /* Some Linux gcvt's give -1.e+5 here. */
7829         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7830         checkit("-100000", buf);
7831
7832         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7833         checkit("123.456", buf);
7834
7835         exit(0);
7836 }
7837 EOP
7838 case "$d_Gconvert" in
7839 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7840 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7841 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7842 *) xxx_list='gconvert gcvt sprintf' ;;
7843 esac
7844
7845 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7846 "$define$define$define")
7847     # for long doubles prefer first qgcvt, then sprintf
7848     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7849     xxx_list="sprintf $xxx_list"
7850     case "$d_qgcvt" in
7851     "$define") xxx_list="qgcvt $xxx_list" ;;
7852     esac
7853     ;;
7854 esac
7855
7856 for xxx_convert in $xxx_list; do
7857         echo "Trying $xxx_convert..."
7858         $rm -f try try$_o
7859         set try -DTRY_$xxx_convert
7860         if eval $compile; then
7861                 echo "$xxx_convert() found." >&4
7862                 if ./try; then
7863                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7864                         break;
7865                 else
7866                         echo "...But $xxx_convert didn't work as I expected."
7867                 fi
7868         else
7869                 echo "$xxx_convert NOT found." >&4
7870         fi
7871 done
7872         
7873 case "$xxx_convert" in
7874 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7875 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7876 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7877 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7878    "$define$define$define")
7879       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7880    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7881    esac
7882    ;;  
7883 esac
7884
7885 : see if _fwalk exists
7886 set fwalk d__fwalk
7887 eval $inlibc
7888
7889 : Initialize h_fcntl
7890 h_fcntl=false
7891
7892 : Initialize h_sysfile
7893 h_sysfile=false
7894
7895 : access call always available on UNIX
7896 set access d_access
7897 eval $inlibc
7898
7899 : locate the flags for 'access()'
7900 case "$d_access" in
7901 "$define")
7902         echo " "
7903         $cat >access.c <<'EOCP'
7904 #include <sys/types.h>
7905 #ifdef I_FCNTL
7906 #include <fcntl.h>
7907 #endif
7908 #ifdef I_SYS_FILE
7909 #include <sys/file.h>
7910 #endif
7911 #ifdef I_UNISTD
7912 #include <unistd.h>
7913 #endif
7914 int main() {
7915         exit(R_OK);
7916 }
7917 EOCP
7918         : check sys/file.h first, no particular reason here
7919         if $test `./findhdr sys/file.h` && \
7920                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7921                 h_sysfile=true;
7922                 echo "<sys/file.h> defines the *_OK access constants." >&4
7923         elif $test `./findhdr fcntl.h` && \
7924                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7925                 h_fcntl=true;
7926                 echo "<fcntl.h> defines the *_OK access constants." >&4
7927         elif $test `./findhdr unistd.h` && \
7928                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7929                 echo "<unistd.h> defines the *_OK access constants." >&4
7930         else
7931                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7932         fi
7933         ;;
7934 esac
7935 $rm -f access*
7936
7937 : see if accessx exists
7938 set accessx d_accessx
7939 eval $inlibc
7940
7941 : see if alarm exists
7942 set alarm d_alarm
7943 eval $inlibc
7944
7945 : see if atolf exists
7946 set atolf d_atolf
7947 eval $inlibc
7948
7949 : see if atoll exists
7950 set atoll d_atoll
7951 eval $inlibc
7952
7953 : Look for GNU-cc style attribute checking
7954 echo " "
7955 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7956 $cat >attrib.c <<'EOCP'
7957 #include <stdio.h>
7958 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7959 EOCP
7960 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7961         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7962                 echo "Your C compiler doesn't fully support __attribute__."
7963                 val="$undef"
7964         else
7965                 echo "Your C compiler supports __attribute__."
7966                 val="$define"
7967         fi
7968 else
7969         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7970         val="$undef"
7971 fi
7972 set d_attribut
7973 eval $setvar
7974 $rm -f attrib*
7975
7976 : see if bcmp exists
7977 set bcmp d_bcmp
7978 eval $inlibc
7979
7980 : see if bcopy exists
7981 set bcopy d_bcopy
7982 eval $inlibc
7983
7984 : see if this is a unistd.h system
7985 set unistd.h i_unistd
7986 eval $inhdr
7987
7988 : see if getpgrp exists
7989 set getpgrp d_getpgrp
7990 eval $inlibc
7991
7992 case "$d_getpgrp" in
7993 "$define")
7994         echo " "
7995         echo "Checking to see which flavor of getpgrp is in use..."
7996         $cat >set.c <<EOP
7997 #$i_unistd I_UNISTD
7998 #include <sys/types.h>
7999 #ifdef I_UNISTD
8000 #  include <unistd.h>
8001 #endif
8002 int main()
8003 {
8004         if (getuid() == 0) {
8005                 printf("(I see you are running Configure as super-user...)\n");
8006                 setuid(1);
8007         }
8008 #ifdef TRY_BSD_PGRP
8009         if (getpgrp(1) == 0)
8010                 exit(0);
8011 #else
8012         if (getpgrp() > 0)
8013                 exit(0);
8014 #endif
8015         exit(1);
8016 }
8017 EOP
8018         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8019                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8020                 val="$define"
8021         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8022                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8023                 val="$undef"
8024         else
8025                 echo "I can't seem to compile and run the test program."
8026                 if ./usg; then
8027                         xxx="a USG one, i.e. you use getpgrp()."
8028                 else
8029                         # SVR4 systems can appear rather BSD-ish.
8030                         case "$i_unistd" in
8031                         $undef)
8032                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8033                                 val="$define"
8034                                 ;;
8035                         $define)
8036                                 xxx="probably a USG one, i.e. you use getpgrp()."
8037                                 val="$undef"
8038                                 ;;
8039                         esac
8040                 fi
8041                 echo "Assuming your getpgrp is $xxx" >&4
8042         fi
8043         ;;
8044 *) val="$undef";;
8045 esac
8046 set d_bsdgetpgrp
8047 eval $setvar
8048 $rm -f set set.c
8049
8050 : see if setpgrp exists
8051 set setpgrp d_setpgrp
8052 eval $inlibc
8053
8054 case "$d_setpgrp" in
8055 "$define")
8056         echo " "
8057         echo "Checking to see which flavor of setpgrp is in use..."
8058         $cat >set.c <<EOP
8059 #$i_unistd I_UNISTD
8060 #include <sys/types.h>
8061 #ifdef I_UNISTD
8062 #  include <unistd.h>
8063 #endif
8064 int main()
8065 {
8066         if (getuid() == 0) {
8067                 printf("(I see you are running Configure as super-user...)\n");
8068                 setuid(1);
8069         }
8070 #ifdef TRY_BSD_PGRP
8071         if (-1 == setpgrp(1, 1))
8072                 exit(0);
8073 #else
8074         if (setpgrp() != -1)
8075                 exit(0);
8076 #endif
8077         exit(1);
8078 }
8079 EOP
8080         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8081                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8082                 val="$define"
8083         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8084                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8085                 val="$undef"
8086         else
8087                 echo "(I can't seem to compile and run the test program.)"
8088                 if ./usg; then
8089                         xxx="a USG one, i.e. you use setpgrp()."
8090                 else
8091                         # SVR4 systems can appear rather BSD-ish.
8092                         case "$i_unistd" in
8093                         $undef)
8094                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8095                                 val="$define"
8096                                 ;;
8097                         $define)
8098                                 xxx="probably a USG one, i.e. you use setpgrp()."
8099                                 val="$undef"
8100                                 ;;
8101                         esac
8102                 fi
8103                 echo "Assuming your setpgrp is $xxx" >&4
8104         fi
8105         ;;
8106 *) val="$undef";;
8107 esac
8108 set d_bsdsetpgrp
8109 eval $setvar
8110 $rm -f set set.c
8111 : see if bzero exists
8112 set bzero d_bzero
8113 eval $inlibc
8114
8115 : see if signal is declared as pointer to function returning int or void
8116 echo " "
8117 xxx=`./findhdr signal.h`
8118 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8119 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8120         echo "You have int (*signal())() instead of void." >&4
8121         val="$undef"
8122 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8123         echo "You have void (*signal())()." >&4
8124         val="$define"
8125 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8126         echo "You have int (*signal())() instead of void." >&4
8127         val="$undef"
8128 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8129         echo "You have void (*signal())()." >&4
8130         val="$define"
8131 else
8132         case "$d_voidsig" in
8133         '')
8134         echo "I can't determine whether signal handler returns void or int..." >&4
8135                 dflt=void
8136                 rp="What type does your signal handler return?"
8137                 . ./myread
8138                 case "$ans" in
8139                 v*) val="$define";;
8140                 *) val="$undef";;
8141                 esac;;
8142         "$define")
8143                 echo "As you already told me, signal handler returns void." >&4
8144                 val="$define"
8145                 ;;
8146         *)      echo "As you already told me, signal handler returns int." >&4
8147                 val="$undef"
8148                 ;;
8149         esac
8150 fi
8151 set d_voidsig
8152 eval $setvar
8153 case "$d_voidsig" in
8154 "$define") signal_t="void";;
8155 *) signal_t="int";;
8156 esac
8157 $rm -f $$.tmp
8158
8159 : check for ability to cast large floats to 32-bit ints.
8160 echo " "
8161 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8162 if $test "$intsize" -ge 4; then
8163         xxx=int
8164 else
8165         xxx=long
8166 fi
8167 $cat >try.c <<EOCP
8168 #include <stdio.h>
8169 #include <sys/types.h>
8170 #include <signal.h>
8171 $signal_t blech(s) int s; { exit(3); }
8172 int main()
8173 {
8174         $xxx i32;
8175         double f, g;
8176         int result = 0;
8177         char str[16];
8178         signal(SIGFPE, blech);
8179
8180         /* Don't let compiler optimize the test away.  Store the number 
8181            in a writable string for gcc to pass to sscanf under HP/UX.
8182         */
8183         sprintf(str, "2147483647");
8184         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8185         g = 10 * f;
8186         i32  = ($xxx) g;
8187
8188         /* x86 processors will probably give 0x8000 0000, which is a
8189        sign change.  We don't want that.  We want to mimic SPARC
8190            behavior here, which is to preserve the sign and give
8191            back 0x7fff ffff.
8192         */
8193         if (i32 != ($xxx) f)
8194                 result |= 1;
8195         exit(result);
8196 }
8197 EOCP
8198 set try
8199 if eval $compile_ok; then
8200         ./try
8201         yyy=$?
8202 else
8203         echo "(I can't seem to compile the test program--assuming it can't)"
8204         yyy=1
8205 fi
8206 case "$yyy" in
8207 0)      val="$define"
8208         echo "Yup, it can."
8209         ;;
8210 *)      val="$undef"
8211         echo "Nope, it can't."
8212         ;;
8213 esac
8214 set d_casti32
8215 eval $setvar
8216 $rm -f try try.*
8217
8218 : check for ability to cast negative floats to unsigned
8219 echo " "
8220 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8221 $cat >try.c <<EOCP
8222 #include <stdio.h>
8223 #include <sys/types.h>
8224 #include <signal.h>
8225 $signal_t blech(s) int s; { exit(7); }
8226 $signal_t blech_in_list(s) int s; { exit(4); }
8227 unsigned long dummy_long(p) unsigned long p; { return p; }
8228 unsigned int dummy_int(p) unsigned int p; { return p; }
8229 unsigned short dummy_short(p) unsigned short p; { return p; }
8230 int main()
8231 {
8232         double f;
8233         unsigned long along;
8234         unsigned int aint;
8235         unsigned short ashort;
8236         int result = 0;
8237         char str[16];
8238         
8239         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8240            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8241            optimized the whole file away
8242         */
8243         /* Store the number in a writable string for gcc to pass to 
8244            sscanf under HP/UX.
8245         */
8246         sprintf(str, "-123");
8247         sscanf(str, "%lf", &f);  /* f = -123.; */
8248
8249         signal(SIGFPE, blech);
8250         along = (unsigned long)f;
8251         aint = (unsigned int)f;
8252         ashort = (unsigned short)f;
8253         if (along != (unsigned long)-123)
8254                 result |= 1;
8255         if (aint != (unsigned int)-123)
8256                 result |= 1;
8257         if (ashort != (unsigned short)-123)
8258                 result |= 1;
8259         sprintf(str, "1073741824.");
8260         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8261         f = f + f;
8262         along = 0;
8263         along = (unsigned long)f;
8264         if (along != 0x80000000)
8265                 result |= 2;
8266         f -= 1.;
8267         along = 0;
8268         along = (unsigned long)f;
8269         if (along != 0x7fffffff)
8270                 result |= 1;
8271         f += 2.;
8272         along = 0;
8273         along = (unsigned long)f;
8274         if (along != 0x80000001)
8275                 result |= 2;
8276         if (result)
8277                 exit(result);
8278         signal(SIGFPE, blech_in_list);
8279         sprintf(str, "123.");
8280         sscanf(str, "%lf", &f);  /* f = 123.; */
8281         along = dummy_long((unsigned long)f);
8282         aint = dummy_int((unsigned int)f);
8283         ashort = dummy_short((unsigned short)f);
8284         if (along != (unsigned long)123)
8285                 result |= 4;
8286         if (aint != (unsigned int)123)
8287                 result |= 4;
8288         if (ashort != (unsigned short)123)
8289                 result |= 4;
8290         exit(result);
8291
8292 }
8293 EOCP
8294 set try
8295 if eval $compile_ok; then
8296         ./try
8297         castflags=$?
8298 else
8299         echo "(I can't seem to compile the test program--assuming it can't)"
8300         castflags=7
8301 fi
8302 case "$castflags" in
8303 0)      val="$define"
8304         echo "Yup, it can."
8305         ;;
8306 *)      val="$undef"
8307         echo "Nope, it can't."
8308         ;;
8309 esac
8310 set d_castneg
8311 eval $setvar
8312 $rm -f try.*
8313
8314 : see if vprintf exists
8315 echo " "
8316 if set vprintf val -f d_vprintf; eval $csym; $val; then
8317         echo 'vprintf() found.' >&4
8318         val="$define"
8319         $cat >vprintf.c <<'EOF'
8320 #include <varargs.h>
8321
8322 int main() { xxx("foo"); }
8323
8324 xxx(va_alist)
8325 va_dcl
8326 {
8327         va_list args;
8328         char buf[10];
8329
8330         va_start(args);
8331         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8332 }
8333 EOF
8334         set vprintf
8335         if eval $compile && ./vprintf; then
8336                 echo "Your vsprintf() returns (int)." >&4
8337                 val2="$undef"
8338         else
8339                 echo "Your vsprintf() returns (char*)." >&4
8340                 val2="$define"
8341         fi
8342 else
8343         echo 'vprintf() NOT found.' >&4
8344                 val="$undef"
8345                 val2="$undef"
8346 fi
8347 set d_vprintf
8348 eval $setvar
8349 val=$val2
8350 set d_charvspr
8351 eval $setvar
8352
8353 : see if chown exists
8354 set chown d_chown
8355 eval $inlibc
8356
8357 : see if chroot exists
8358 set chroot d_chroot
8359 eval $inlibc
8360
8361 : see if chsize exists
8362 set chsize d_chsize
8363 eval $inlibc
8364
8365 : check for const keyword
8366 echo " "
8367 echo 'Checking to see if your C compiler knows about "const"...' >&4
8368 $cat >const.c <<'EOCP'
8369 typedef struct spug { int drokk; } spug;
8370 int main()
8371 {
8372         const char *foo;
8373         const spug y;
8374 }
8375 EOCP
8376 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8377         val="$define"
8378         echo "Yup, it does."
8379 else
8380         val="$undef"
8381         echo "Nope, it doesn't."
8382 fi
8383 set d_const
8384 eval $setvar
8385
8386 : see if crypt exists
8387 echo " "
8388 if set crypt val -f d_crypt; eval $csym; $val; then
8389         echo 'crypt() found.' >&4
8390         val="$define"
8391         cryptlib=''
8392 else
8393         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8394         if $test -z "$cryptlib"; then
8395                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8396         else
8397                 cryptlib=-lcrypt
8398         fi
8399         if $test -z "$cryptlib"; then
8400                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8401         else
8402                 cryptlib=-lcrypt
8403         fi
8404         if $test -z "$cryptlib"; then
8405                 cryptlib=`./loc libcrypt$_a "" $libpth`
8406         else
8407                 cryptlib=-lcrypt
8408         fi
8409         if $test -z "$cryptlib"; then
8410                 echo 'crypt() NOT found.' >&4
8411                 val="$undef"
8412         else
8413                 val="$define"
8414         fi
8415 fi
8416 set d_crypt
8417 eval $setvar
8418
8419 : get csh whereabouts
8420 case "$csh" in
8421 'csh') val="$undef" ;;
8422 *) val="$define" ;;
8423 esac
8424 set d_csh
8425 eval $setvar
8426 : Respect a hint or command line value for full_csh.
8427 case "$full_csh" in
8428 '') full_csh=$csh ;;
8429 esac
8430
8431 : see if cuserid exists
8432 set cuserid d_cuserid
8433 eval $inlibc
8434
8435 : see if this is a limits.h system
8436 set limits.h i_limits
8437 eval $inhdr
8438
8439 : see if this is a float.h system
8440 set float.h i_float
8441 eval $inhdr
8442
8443 : See if number of significant digits in a double precision number is known
8444 echo " "
8445 $cat >dbl_dig.c <<EOM
8446 #$i_limits I_LIMITS
8447 #$i_float I_FLOAT
8448 #ifdef I_LIMITS
8449 #include <limits.h>
8450 #endif
8451 #ifdef I_FLOAT
8452 #include <float.h>
8453 #endif
8454 #ifdef DBL_DIG
8455 printf("Contains DBL_DIG");
8456 #endif
8457 EOM
8458 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8459 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8460         echo "DBL_DIG found." >&4
8461         val="$define"
8462 else
8463         echo "DBL_DIG NOT found." >&4
8464         val="$undef"
8465 fi
8466 $rm -f dbl_dig.?
8467 set d_dbl_dig
8468 eval $setvar
8469
8470 : see if difftime exists
8471 set difftime d_difftime
8472 eval $inlibc
8473
8474 : see if this is a dirent system
8475 echo " "
8476 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8477         val="$define"
8478         echo "<dirent.h> found." >&4
8479 else
8480         val="$undef"
8481         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8482                 echo "<sys/dir.h> found." >&4
8483                 echo " "
8484         else
8485                 xinc=`./findhdr sys/ndir.h`
8486         fi
8487         echo "<dirent.h> NOT found." >&4
8488 fi
8489 set i_dirent
8490 eval $setvar
8491
8492 : Look for type of directory structure.
8493 echo " "
8494 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8495
8496 case "$direntrytype" in
8497 ''|' ')
8498         case "$i_dirent" in
8499         $define) guess1='struct dirent' ;;
8500         *) guess1='struct direct'  ;;
8501         esac
8502         ;;
8503 *)      guess1="$direntrytype"
8504         ;;
8505 esac
8506
8507 case "$guess1" in
8508 'struct dirent') guess2='struct direct' ;;
8509 *) guess2='struct dirent' ;;
8510 esac
8511                 
8512 if $contains "$guess1" try.c >/dev/null 2>&1; then
8513         direntrytype="$guess1"
8514         echo "Your directory entries are $direntrytype." >&4
8515 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8516         direntrytype="$guess2"
8517         echo "Your directory entries seem to be $direntrytype." >&4
8518 else
8519         echo "I don't recognize your system's directory entries." >&4
8520         rp="What type is used for directory entries on this system?"
8521         dflt="$guess1"
8522         . ./myread
8523         direntrytype="$ans"
8524 fi
8525 $rm -f try.c
8526
8527
8528 : see if the directory entry stores field length
8529 echo " "
8530 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8531 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8532         echo "Good, your directory entry keeps length information in d_namlen." >&4
8533         val="$define"
8534 else
8535         echo "Your directory entry does not know about the d_namlen field." >&4
8536         val="$undef"
8537 fi
8538 set d_dirnamlen
8539 eval $setvar
8540 $rm -f try.c
8541
8542 : see if dlerror exists
8543 xxx_runnm="$runnm"
8544 runnm=false
8545 set dlerror d_dlerror
8546 eval $inlibc
8547 runnm="$xxx_runnm"
8548
8549 : see if dlfcn is available
8550 set dlfcn.h i_dlfcn
8551 eval $inhdr
8552
8553 case "$usedl" in
8554 $define|y|true)
8555         $cat << EOM
8556
8557 On a few systems, the dynamically loaded modules that perl generates and uses
8558 will need a different extension than shared libs. The default will probably
8559 be appropriate.
8560
8561 EOM
8562         case "$dlext" in
8563         '')     dflt="$so" ;;
8564         *)      dflt="$dlext" ;;
8565         esac
8566         rp='What is the extension of dynamically loaded modules'
8567         . ./myread
8568         dlext="$ans"
8569         ;;
8570 *)
8571         dlext="none"
8572         ;;
8573 esac
8574
8575 : Check if dlsym need a leading underscore
8576 echo " "
8577 val="$undef"
8578
8579 case "$dlsrc" in
8580 dl_dlopen.xs)
8581         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8582         $cat >dyna.c <<'EOM'
8583 fred () { }
8584 EOM
8585
8586 $cat >fred.c<<EOM
8587
8588 #include <stdio.h>
8589 #$i_dlfcn I_DLFCN
8590 #ifdef I_DLFCN
8591 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8592 #else
8593 #include <sys/types.h>
8594 #include <nlist.h>
8595 #include <link.h>
8596 #endif
8597
8598 extern int fred() ;
8599
8600 int main()
8601 {
8602     void * handle ;
8603     void * symbol ;
8604 #ifndef RTLD_LAZY
8605     int mode = 1 ;
8606 #else
8607     int mode = RTLD_LAZY ;
8608 #endif
8609     handle = dlopen("./dyna.$dlext", mode) ;
8610     if (handle == NULL) {
8611         printf ("1\n") ;
8612         fflush (stdout) ;
8613         exit(0);
8614     }
8615     symbol = dlsym(handle, "fred") ;
8616     if (symbol == NULL) {
8617         /* try putting a leading underscore */
8618         symbol = dlsym(handle, "_fred") ;
8619         if (symbol == NULL) {
8620             printf ("2\n") ;
8621             fflush (stdout) ;
8622             exit(0);
8623         }
8624         printf ("3\n") ;
8625     }
8626     else
8627         printf ("4\n") ;
8628     fflush (stdout) ;
8629     exit(0);
8630 }
8631 EOM
8632         : Call the object file tmp-dyna.o in case dlext=o.
8633         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8634                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8635                 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
8636                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8637                 xxx=`./fred`
8638                 case $xxx in
8639                 1)      echo "Test program failed using dlopen." >&4
8640                         echo "Perhaps you should not use dynamic loading." >&4;;
8641                 2)      echo "Test program failed using dlsym." >&4
8642                         echo "Perhaps you should not use dynamic loading." >&4;;
8643                 3)      echo "dlsym needs a leading underscore" >&4
8644                         val="$define" ;;
8645                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8646                 esac
8647         else
8648                 echo "I can't compile and run the test program." >&4
8649                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8650         fi
8651         ;;
8652 esac
8653                 
8654 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8655
8656 set d_dlsymun
8657 eval $setvar
8658
8659 hasproto='varname=$1; func=$2; shift; shift;
8660 while $test $# -ge 2; do
8661         case "$1" in
8662         $define) echo "#include <$2>";;
8663         esac ;
8664     shift 2;
8665 done > try.c;
8666 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8667 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8668         echo "$func() prototype found.";
8669         val="$define";
8670 else
8671         echo "$func() prototype NOT found.";
8672         val="$undef";
8673 fi;
8674 set $varname;
8675 eval $setvar;
8676 $rm -f try.c tryout.c'
8677
8678 : see if prototype for drand48 is available
8679 echo " "
8680 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8681 eval $hasproto
8682
8683 : see if dup2 exists
8684 set dup2 d_dup2
8685 eval $inlibc
8686
8687 : see if eaccess exists
8688 set eaccess d_eaccess
8689 eval $inlibc
8690
8691 : see if endgrent exists
8692 set endgrent d_endgrent
8693 eval $inlibc
8694
8695 : see if endhostent exists
8696 set endhostent d_endhent
8697 eval $inlibc
8698
8699 : see if endnetent exists
8700 set endnetent d_endnent
8701 eval $inlibc
8702
8703 : see if endprotoent exists
8704 set endprotoent d_endpent
8705 eval $inlibc
8706
8707 : see if endpwent exists
8708 set endpwent d_endpwent
8709 eval $inlibc
8710
8711 : see if endservent exists
8712 set endservent d_endsent
8713 eval $inlibc
8714
8715 : Locate the flags for 'open()'
8716 echo " "
8717 $cat >open3.c <<'EOCP'
8718 #include <sys/types.h>
8719 #ifdef I_FCNTL
8720 #include <fcntl.h>
8721 #endif
8722 #ifdef I_SYS_FILE
8723 #include <sys/file.h>
8724 #endif
8725 int main() {
8726         if(O_RDONLY);
8727 #ifdef O_TRUNC
8728         exit(0);
8729 #else
8730         exit(1);
8731 #endif
8732 }
8733 EOCP
8734 : check sys/file.h first to get FREAD on Sun
8735 if $test `./findhdr sys/file.h` && \
8736                 set open3 -DI_SYS_FILE && eval $compile; then
8737         h_sysfile=true;
8738         echo "<sys/file.h> defines the O_* constants..." >&4
8739         if ./open3; then
8740                 echo "and you have the 3 argument form of open()." >&4
8741                 val="$define"
8742         else
8743                 echo "but not the 3 argument form of open().  Oh, well." >&4
8744                 val="$undef"
8745         fi
8746 elif $test `./findhdr fcntl.h` && \
8747                 set open3 -DI_FCNTL && eval $compile; then
8748         h_fcntl=true;
8749         echo "<fcntl.h> defines the O_* constants..." >&4
8750         if ./open3; then
8751                 echo "and you have the 3 argument form of open()." >&4
8752                 val="$define"
8753         else
8754                 echo "but not the 3 argument form of open().  Oh, well." >&4
8755                 val="$undef"
8756         fi
8757 else
8758         val="$undef"
8759         echo "I can't find the O_* constant definitions!  You got problems." >&4
8760 fi
8761 set d_open3
8762 eval $setvar
8763 $rm -f open3*
8764
8765 : see which of string.h or strings.h is needed
8766 echo " "
8767 strings=`./findhdr string.h`
8768 if $test "$strings" && $test -r "$strings"; then
8769         echo "Using <string.h> instead of <strings.h>." >&4
8770         val="$define"
8771 else
8772         val="$undef"
8773         strings=`./findhdr strings.h`
8774         if $test "$strings" && $test -r "$strings"; then
8775                 echo "Using <strings.h> instead of <string.h>." >&4
8776         else
8777                 echo "No string header found -- You'll surely have problems." >&4
8778         fi
8779 fi
8780 set i_string
8781 eval $setvar
8782 case "$i_string" in
8783 "$undef") strings=`./findhdr strings.h`;;
8784 *)        strings=`./findhdr string.h`;;
8785 esac
8786
8787 : check for non-blocking I/O stuff
8788 case "$h_sysfile" in
8789 true) echo "#include <sys/file.h>" > head.c;;
8790 *)
8791         case "$h_fcntl" in
8792         true) echo "#include <fcntl.h>" > head.c;;
8793         *) echo "#include <sys/fcntl.h>" > head.c;;
8794         esac
8795         ;;
8796 esac
8797 echo " "
8798 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8799 case "$o_nonblock" in
8800 '')
8801         $cat head.c > try.c
8802         $cat >>try.c <<'EOCP'
8803 #include <stdio.h>
8804 int main() {
8805 #ifdef O_NONBLOCK
8806         printf("O_NONBLOCK\n");
8807         exit(0);
8808 #endif
8809 #ifdef O_NDELAY
8810         printf("O_NDELAY\n");
8811         exit(0);
8812 #endif
8813 #ifdef FNDELAY
8814         printf("FNDELAY\n");
8815         exit(0);
8816 #endif
8817         exit(0);
8818 }
8819 EOCP
8820         set try
8821         if eval $compile_ok; then
8822                 o_nonblock=`./try`
8823                 case "$o_nonblock" in
8824                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8825                 *) echo "Seems like we can use $o_nonblock.";;
8826                 esac
8827         else
8828                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8829         fi
8830         ;;
8831 *) echo "Using $hint value $o_nonblock.";;
8832 esac
8833 $rm -f try try.* .out core
8834
8835 echo " "
8836 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8837 case "$eagain" in
8838 '')
8839         $cat head.c > try.c
8840         $cat >>try.c <<EOCP
8841 #include <errno.h>
8842 #include <sys/types.h>
8843 #include <signal.h>
8844 #include <stdio.h> 
8845 #define MY_O_NONBLOCK $o_nonblock
8846 #ifndef errno  /* XXX need better Configure test */
8847 extern int errno;
8848 #endif
8849 #$i_unistd I_UNISTD
8850 #ifdef I_UNISTD
8851 #include <unistd.h>
8852 #endif
8853 #$i_string I_STRING
8854 #ifdef I_STRING
8855 #include <string.h>
8856 #else
8857 #include <strings.h>
8858 #endif
8859 $signal_t blech(x) int x; { exit(3); }
8860 EOCP
8861         $cat >> try.c <<'EOCP'
8862 int main()
8863 {
8864         int pd[2];
8865         int pu[2];
8866         char buf[1];
8867         char string[100];
8868
8869         pipe(pd);       /* Down: child -> parent */
8870         pipe(pu);       /* Up: parent -> child */
8871         if (0 != fork()) {
8872                 int ret;
8873                 close(pd[1]);   /* Parent reads from pd[0] */
8874                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8875                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8876                         exit(1);
8877                 signal(SIGALRM, blech);
8878                 alarm(5);
8879                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8880                         exit(2);
8881                 sprintf(string, "%d\n", ret);
8882                 write(2, string, strlen(string));
8883                 alarm(0);
8884 #ifdef EAGAIN
8885                 if (errno == EAGAIN) {
8886                         printf("EAGAIN\n");
8887                         goto ok;
8888                 }
8889 #endif
8890 #ifdef EWOULDBLOCK
8891                 if (errno == EWOULDBLOCK)
8892                         printf("EWOULDBLOCK\n");
8893 #endif
8894         ok:
8895                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8896                 sleep(2);                               /* Give it time to close our pipe */
8897                 alarm(5);
8898                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8899                 alarm(0);
8900                 sprintf(string, "%d\n", ret);
8901                 write(3, string, strlen(string));
8902                 exit(0);
8903         }
8904
8905         close(pd[0]);                   /* We write to pd[1] */
8906         close(pu[1]);                   /* We read from pu[0] */
8907         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8908         close(pd[1]);                   /* Pipe pd is now fully closed! */
8909         exit(0);                                /* Bye bye, thank you for playing! */
8910 }
8911 EOCP
8912         set try
8913         if eval $compile_ok; then
8914                 echo "$startsh" >mtry
8915                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8916                 chmod +x mtry
8917                 ./mtry >/dev/null 2>&1
8918                 case $? in
8919                 0) eagain=`$cat try.out`;;
8920                 1) echo "Could not perform non-blocking setting!";;
8921                 2) echo "I did a successful read() for something that was not there!";;
8922                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8923                 *) echo "Something terribly wrong happened during testing.";;
8924                 esac
8925                 rd_nodata=`$cat try.ret`
8926                 echo "A read() system call with no data present returns $rd_nodata."
8927                 case "$rd_nodata" in
8928                 0|-1) ;;
8929                 *)
8930                         echo "(That's peculiar, fixing that to be -1.)"
8931                         rd_nodata=-1
8932                         ;;
8933                 esac
8934                 case "$eagain" in
8935                 '')
8936                         echo "Forcing errno EAGAIN on read() with no data available."
8937                         eagain=EAGAIN
8938                         ;;
8939                 *)
8940                         echo "Your read() sets errno to $eagain when no data is available."
8941                         ;;
8942                 esac
8943                 status=`$cat try.err`
8944                 case "$status" in
8945                 0) echo "And it correctly returns 0 to signal EOF.";;
8946                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8947                 *) echo "However, your read() returns '$status' on EOF??";;
8948                 esac
8949                 val="$define"
8950                 if test "$status" = "$rd_nodata"; then
8951                         echo "WARNING: you can't distinguish between EOF and no data!"
8952                         val="$undef"
8953                 fi
8954         else
8955                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8956                 eagain=EAGAIN
8957         fi
8958         set d_eofnblk
8959         eval $setvar
8960         ;;
8961 *)
8962         echo "Using $hint value $eagain."
8963         echo "Your read() returns $rd_nodata when no data is present."
8964         case "$d_eofnblk" in
8965         "$define") echo "And you can see EOF because read() returns 0.";;
8966         "$undef") echo "But you can't see EOF status from read() returned value.";;
8967         *)
8968                 echo "(Assuming you can't see EOF status from read anyway.)"
8969                 d_eofnblk=$undef
8970                 ;;
8971         esac
8972         ;;
8973 esac
8974 $rm -f try try.* .out core head.c mtry
8975
8976 : see if fchmod exists
8977 set fchmod d_fchmod
8978 eval $inlibc
8979
8980 : see if fchown exists
8981 set fchown d_fchown
8982 eval $inlibc
8983
8984 : see if this is an fcntl system
8985 set fcntl d_fcntl
8986 eval $inlibc
8987
8988 echo " "
8989 : See if fcntl-based locking works.
8990 $cat >try.c <<'EOCP'
8991 #include <stdlib.h>
8992 #include <unistd.h>
8993 #include <fcntl.h>
8994 int main() {
8995 #if defined(F_SETLK) && defined(F_SETLKW)
8996      struct flock flock;
8997      int retval, fd;
8998      fd = open("try.c", O_RDONLY);
8999      flock.l_type = F_RDLCK;
9000      flock.l_whence = SEEK_SET;
9001      flock.l_start = flock.l_len = 0;
9002      retval = fcntl(fd, F_SETLK, &flock);
9003      close(fd);
9004      (retval < 0 ? exit(2) : exit(0));
9005 #else
9006      exit(2);
9007 #endif
9008 }
9009 EOCP
9010 echo "Checking if fcntl-based file locking works... "
9011 case "$d_fcntl" in
9012 "$define")
9013         set try
9014         if eval $compile_ok; then
9015                 if ./try; then
9016                         echo "Yes, it seems to work."
9017                         val="$define"
9018                 else
9019                         echo "Nope, it didn't work."
9020                         val="$undef"
9021                 fi
9022         else
9023                 echo "I'm unable to compile the test program, so I'll assume not."
9024                 val="$undef"
9025         fi
9026         ;;
9027 *) val="$undef";
9028         echo "Nope, since you don't even have fcntl()."
9029         ;;
9030 esac
9031 set d_fcntl_can_lock
9032 eval $setvar
9033 $rm -f try*
9034
9035
9036 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9037 while $test $# -ge 2; do
9038         case "$1" in
9039         $define) echo "#include <$2>";;
9040         esac ;
9041     shift 2;
9042 done > try.c;
9043 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9044 set try;
9045 if eval $compile; then
9046         val="$define";
9047 else
9048         val="$undef";
9049 fi;
9050 set $varname;
9051 eval $setvar;
9052 $rm -f try.c try.o'
9053
9054 socketlib=''
9055 sockethdr=''
9056 : see whether socket exists
9057 echo " "
9058 $echo $n "Hmm... $c" >&4
9059 if set socket val -f d_socket; eval $csym; $val; then
9060         echo "Looks like you have Berkeley networking support." >&4
9061         d_socket="$define"
9062         if set setsockopt val -f; eval $csym; $val; then
9063                 d_oldsock="$undef"
9064         else
9065                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9066                 d_oldsock="$define"
9067         fi
9068 else
9069         if $contains socklib libc.list >/dev/null 2>&1; then
9070                 echo "Looks like you have Berkeley networking support." >&4
9071                 d_socket="$define"
9072                 : we will have to assume that it supports the 4.2 BSD interface
9073                 d_oldsock="$undef"
9074         else
9075                 echo "You don't have Berkeley networking in libc$_a..." >&4
9076                 if test "X$d_socket" = "X$define"; then
9077                    echo "...but you seem to believe that you have sockets." >&4
9078                 else
9079                         for net in net socket
9080                         do
9081                                 if test -f /usr/lib/lib$net$_a; then
9082                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9083                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9084                                         if $contains socket libc.list >/dev/null 2>&1; then
9085                                                 d_socket="$define"
9086                                                 socketlib="-l$net"
9087                                                 case "$net" in
9088                                                 net)
9089                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9090                                                         sockethdr="-I/usr/netinclude"
9091                                                         ;;
9092                                                 esac
9093                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9094                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9095                                                         d_oldsock="$undef"
9096                                                 else
9097                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9098                                                         d_oldsock="$define"
9099                                                 fi
9100                                                 break
9101                                         fi
9102                                 fi
9103                         done
9104                         if test "X$d_socket" != "X$define"; then
9105                            echo "or anywhere else I see." >&4
9106                            d_socket="$undef"
9107                            d_oldsock="$undef"
9108                         fi
9109                 fi
9110         fi
9111 fi
9112
9113 : see if socketpair exists
9114 set socketpair d_sockpair
9115 eval $inlibc
9116
9117
9118 echo " "
9119 echo "Checking the availability of certain socket constants..." >& 4
9120 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9121         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9122         $cat >try.c <<EOF
9123 #include <sys/types.h>
9124 #include <sys/socket.h>
9125 int main() {
9126     int i = $ENUM;
9127 }
9128 EOF
9129         val="$undef"
9130         set try; if eval $compile; then
9131                 val="$define"
9132         fi
9133         set d_${enum}; eval $setvar
9134         $rm -f try.c try
9135 done
9136
9137 : see if sys/select.h has to be included
9138 set sys/select.h i_sysselct
9139 eval $inhdr
9140
9141 : see if we should include time.h, sys/time.h, or both
9142 echo " "
9143 if test "X$timeincl" = X; then
9144         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9145         $echo $n "I'm now running the test program...$c"
9146         $cat >try.c <<'EOCP'
9147 #include <sys/types.h>
9148 #ifdef I_TIME
9149 #include <time.h>
9150 #endif
9151 #ifdef I_SYSTIME
9152 #ifdef SYSTIMEKERNEL
9153 #define KERNEL
9154 #endif
9155 #include <sys/time.h>
9156 #endif
9157 #ifdef I_SYSSELECT
9158 #include <sys/select.h>
9159 #endif
9160 int main()
9161 {
9162         struct tm foo;
9163 #ifdef S_TIMEVAL
9164         struct timeval bar;
9165 #endif
9166 #ifdef S_TIMEZONE
9167         struct timezone tzp;
9168 #endif
9169         if (foo.tm_sec == foo.tm_sec)
9170                 exit(0);
9171 #ifdef S_TIMEVAL
9172         if (bar.tv_sec == bar.tv_sec)
9173                 exit(0);
9174 #endif
9175         exit(1);
9176 }
9177 EOCP
9178         flags=''
9179         for s_timezone in '-DS_TIMEZONE' ''; do
9180         sysselect=''
9181         for s_timeval in '-DS_TIMEVAL' ''; do
9182         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9183         for i_time in '' '-DI_TIME'; do
9184         for i_systime in '-DI_SYSTIME' ''; do
9185                 case "$flags" in
9186                 '') $echo $n ".$c"
9187                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9188                         if eval $compile; then
9189                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9190                                 shift
9191                                 flags="$*"
9192                                 echo " "
9193                                 $echo $n "Succeeded with $flags$c"
9194                         fi
9195                         ;;
9196                 esac
9197         done
9198         done
9199         done
9200         done
9201         done
9202         timeincl=''
9203         echo " "
9204         case "$flags" in
9205         *SYSTIMEKERNEL*) i_systimek="$define"
9206                 timeincl=`./findhdr sys/time.h`
9207                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9208         *) i_systimek="$undef";;
9209         esac
9210         case "$flags" in
9211         *I_TIME*) i_time="$define"
9212                 timeincl=`./findhdr time.h`" $timeincl"
9213                 echo "We'll include <time.h>." >&4;;
9214         *) i_time="$undef";;
9215         esac
9216         case "$flags" in
9217         *I_SYSTIME*) i_systime="$define"
9218                 timeincl=`./findhdr sys/time.h`" $timeincl"
9219                 echo "We'll include <sys/time.h>." >&4;;
9220         *) i_systime="$undef";;
9221         esac
9222         $rm -f try.c try
9223 fi
9224
9225 : check for fd_set items
9226 $cat <<EOM
9227
9228 Checking to see how well your C compiler handles fd_set and friends ...
9229 EOM
9230 $cat >fd_set.c <<EOCP
9231 #$i_systime I_SYS_TIME
9232 #$i_sysselct I_SYS_SELECT
9233 #$d_socket HAS_SOCKET
9234 #include <sys/types.h>
9235 #ifdef HAS_SOCKET
9236 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9237 #endif
9238 #ifdef I_SYS_TIME
9239 #include <sys/time.h>
9240 #endif
9241 #ifdef I_SYS_SELECT
9242 #include <sys/select.h>
9243 #endif
9244 int main() {
9245         fd_set fds;
9246
9247 #ifdef TRYBITS
9248         if(fds.fds_bits);
9249 #endif
9250
9251 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9252         exit(0);
9253 #else
9254         exit(1);
9255 #endif
9256 }
9257 EOCP
9258 set fd_set -DTRYBITS
9259 if eval $compile; then
9260         d_fds_bits="$define"
9261         d_fd_set="$define"
9262         echo "Well, your system knows about the normal fd_set typedef..." >&4
9263         if ./fd_set; then
9264                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9265                 d_fd_macros="$define"
9266         else
9267                 $cat >&4 <<'EOM'
9268 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9269 EOM
9270                 d_fd_macros="$undef"
9271         fi
9272 else
9273         $cat <<'EOM'
9274 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9275 EOM
9276         set fd_set
9277         if eval $compile; then
9278                 d_fds_bits="$undef"
9279                 d_fd_set="$define"
9280                 echo "Well, your system has some sort of fd_set available..." >&4
9281                 if ./fd_set; then
9282                         echo "and you have the normal fd_set macros." >&4
9283                         d_fd_macros="$define"
9284                 else
9285                         $cat <<'EOM'
9286 but not the normal fd_set macros!  Gross!  More work for me...
9287 EOM
9288                         d_fd_macros="$undef"
9289                 fi
9290         else
9291         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9292                 d_fd_set="$undef"
9293                 d_fds_bits="$undef"
9294                 d_fd_macros="$undef"
9295         fi
9296 fi
9297 $rm -f fd_set*
9298
9299 : see if fgetpos exists
9300 set fgetpos d_fgetpos
9301 eval $inlibc
9302
9303 : see if flock exists
9304 set flock d_flock
9305 eval $inlibc
9306
9307 : see if fork exists
9308 set fork d_fork
9309 eval $inlibc
9310
9311 : see if pathconf exists
9312 set pathconf d_pathconf
9313 eval $inlibc
9314
9315 : see if fpathconf exists
9316 set fpathconf d_fpathconf
9317 eval $inlibc
9318
9319
9320 : check for fpos64_t
9321 echo " "
9322 echo "Checking to see if you have fpos64_t..." >&4
9323 $cat >try.c <<EOCP
9324 #include <stdio.h>
9325 int main() { fpos64_t x = 7; }
9326 EOCP
9327 set try
9328 if eval $compile; then
9329         val="$define"
9330         echo "You have fpos64_t."
9331 else
9332         val="$undef"
9333         echo "You do not have fpos64_t."
9334         case "$fpossize" in
9335         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9336         esac
9337 fi
9338 $rm -f try.* try
9339 set d_fpos64_t
9340 eval $setvar
9341
9342 : see if frexpl exists
9343 set frexpl d_frexpl
9344 eval $inlibc
9345
9346 hasstruct='varname=$1; struct=$2; shift; shift;
9347 while $test $# -ge 2; do
9348         case "$1" in
9349         $define) echo "#include <$2>";;
9350         esac ;
9351     shift 2;
9352 done > try.c;
9353 echo "int main () { struct $struct foo; }" >> try.c;
9354 set try;
9355 if eval $compile; then
9356         val="$define";
9357 else
9358         val="$undef";
9359 fi;
9360 set $varname;
9361 eval $setvar;
9362 $rm -f try.c try.o'
9363
9364 : see if this is a sys/param system
9365 set sys/param.h i_sysparam
9366 eval $inhdr
9367
9368 : see if this is a sys/mount.h system
9369 set sys/mount.h i_sysmount
9370 eval $inhdr
9371
9372 : see if sys/types.h has to be included
9373 set sys/types.h i_systypes
9374 eval $inhdr
9375
9376
9377 echo " "
9378 echo "Checking to see if your system supports struct fs_data..." >&4
9379 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9380 eval $hasstruct
9381 case "$d_fs_data_s" in
9382 "$define")      echo "Yes, it does."   ;;
9383 *)              echo "No, it doesn't." ;;
9384 esac
9385
9386 : see if fseeko exists
9387 set fseeko d_fseeko
9388 eval $inlibc
9389 case "$longsize" in
9390 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9391 esac
9392
9393 : see if fsetpos exists
9394 set fsetpos d_fsetpos
9395 eval $inlibc
9396
9397
9398 : see if fstatfs exists
9399 set fstatfs d_fstatfs
9400 eval $inlibc
9401
9402
9403 : see if statvfs exists
9404 set statvfs d_statvfs
9405 eval $inlibc
9406
9407 : see if fstatvfs exists
9408 set fstatvfs d_fstatvfs
9409 eval $inlibc
9410
9411
9412 : see if fsync exists
9413 set fsync d_fsync
9414 eval $inlibc
9415
9416 : see if ftello exists
9417 set ftello d_ftello
9418 eval $inlibc
9419 case "$longsize" in
9420 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9421 esac
9422
9423 : see if getcwd exists
9424 set getcwd d_getcwd
9425 eval $inlibc
9426
9427 : see if getespwnam exists
9428 set getespwnam d_getespwnam
9429 eval $inlibc
9430
9431
9432 : see if getfsstat exists
9433 set getfsstat d_getfsstat
9434 eval $inlibc
9435
9436 : see if getgrent exists
9437 set getgrent d_getgrent
9438 eval $inlibc
9439
9440 : see if gethostbyaddr exists
9441 set gethostbyaddr d_gethbyaddr
9442 eval $inlibc
9443
9444 : see if gethostbyname exists
9445 set gethostbyname d_gethbyname
9446 eval $inlibc
9447
9448 : see if gethostent exists
9449 set gethostent d_gethent
9450 eval $inlibc
9451
9452 : see how we will look up host name
9453 echo " "
9454 call=''
9455 if set gethostname val -f d_gethname; eval $csym; $val; then
9456         echo 'gethostname() found.' >&4
9457         d_gethname="$define"
9458         call=gethostname
9459 fi
9460 if set uname val -f d_uname; eval $csym; $val; then
9461         if ./xenix; then
9462                 $cat <<'EOM'
9463 uname() was found, but you're running xenix, and older versions of xenix
9464 have a broken uname(). If you don't really know whether your xenix is old
9465 enough to have a broken system call, use the default answer.
9466
9467 EOM
9468                 dflt=y
9469                 case "$d_uname" in
9470                 "$define") dflt=n;;
9471                 esac
9472                 rp='Is your uname() broken?'
9473                 . ./myread
9474                 case "$ans" in
9475                 n*) d_uname="$define"; call=uname;;
9476                 esac
9477         else
9478                 echo 'uname() found.' >&4
9479                 d_uname="$define"
9480                 case "$call" in
9481                 '') call=uname ;;
9482                 esac
9483         fi
9484 fi
9485 case "$d_gethname" in
9486 '') d_gethname="$undef";;
9487 esac
9488 case "$d_uname" in
9489 '') d_uname="$undef";;
9490 esac
9491 case "$d_uname$d_gethname" in
9492 *define*)
9493         dflt=n
9494         cat <<EOM
9495  
9496 Every now and then someone has a $call() that lies about the hostname
9497 but can't be fixed for political or economic reasons.  If you wish, I can
9498 pretend $call() isn't there and maybe compute hostname at run-time
9499 thanks to the '$phostname' command.
9500
9501 EOM
9502         rp="Shall I ignore $call() from now on?"
9503         . ./myread
9504         case "$ans" in
9505         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9506         esac;;
9507 esac
9508 case "$phostname" in
9509 '') aphostname='';;
9510 *) case "$aphostname" in
9511         /*) ;;
9512         *) set X $phostname
9513                 shift
9514                 file=$1
9515                 shift
9516                 file=`./loc $file $file $pth`
9517                 aphostname=`echo $file $*`
9518                 ;;
9519         esac
9520         ;;
9521 esac
9522 case "$d_uname$d_gethname" in
9523 *define*) ;;
9524 *)
9525         case "$phostname" in
9526         '')
9527                 echo "There will be no way for $package to get your hostname." >&4;;
9528         *)
9529         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9530                 ;;
9531         esac;;
9532 esac
9533 case "$d_phostname" in
9534 '') d_phostname="$undef";;
9535 esac
9536
9537 : see if this is a netdb.h system
9538 set netdb.h i_netdb
9539 eval $inhdr
9540
9541 : see if prototypes for various gethostxxx netdb.h functions are available
9542 echo " "
9543 set d_gethostprotos gethostent $i_netdb netdb.h
9544 eval $hasproto
9545
9546 : see if getlogin exists
9547 set getlogin d_getlogin
9548 eval $inlibc
9549
9550 : see if getmnt exists
9551 set getmnt d_getmnt
9552 eval $inlibc
9553
9554 : see if getmntent exists
9555 set getmntent d_getmntent
9556 eval $inlibc
9557
9558 : see if getnetbyaddr exists
9559 set getnetbyaddr d_getnbyaddr
9560 eval $inlibc
9561
9562 : see if getnetbyname exists
9563 set getnetbyname d_getnbyname
9564 eval $inlibc
9565
9566 : see if getnetent exists
9567 set getnetent d_getnent
9568 eval $inlibc
9569
9570 : see if prototypes for various getnetxxx netdb.h functions are available
9571 echo " "
9572 set d_getnetprotos getnetent $i_netdb netdb.h
9573 eval $hasproto
9574
9575 : see if getpagesize exists
9576 set getpagesize d_getpagsz
9577 eval $inlibc
9578
9579
9580 : see if getprotobyname exists
9581 set getprotobyname d_getpbyname
9582 eval $inlibc
9583
9584 : see if getprotobynumber exists
9585 set getprotobynumber d_getpbynumber
9586 eval $inlibc
9587
9588 : see if getprotoent exists
9589 set getprotoent d_getpent
9590 eval $inlibc
9591
9592 : see if getpgid exists
9593 set getpgid d_getpgid
9594 eval $inlibc
9595
9596 : see if getpgrp2 exists
9597 set getpgrp2 d_getpgrp2
9598 eval $inlibc
9599
9600 : see if getppid exists
9601 set getppid d_getppid
9602 eval $inlibc
9603
9604 : see if getpriority exists
9605 set getpriority d_getprior
9606 eval $inlibc
9607
9608 : see if prototypes for various getprotoxxx netdb.h functions are available
9609 echo " "
9610 set d_getprotoprotos getprotoent $i_netdb netdb.h
9611 eval $hasproto
9612
9613 : see if getprpwnam exists
9614 set getprpwnam d_getprpwnam
9615 eval $inlibc
9616
9617 : see if getpwent exists
9618 set getpwent d_getpwent
9619 eval $inlibc
9620
9621
9622 : see if getservbyname exists
9623 set getservbyname d_getsbyname
9624 eval $inlibc
9625
9626 : see if getservbyport exists
9627 set getservbyport d_getsbyport
9628 eval $inlibc
9629
9630 : see if getservent exists
9631 set getservent d_getsent
9632 eval $inlibc
9633
9634 : see if prototypes for various getservxxx netdb.h functions are available
9635 echo " "
9636 set d_getservprotos getservent $i_netdb netdb.h
9637 eval $hasproto
9638
9639 : see if getspnam exists
9640 set getspnam d_getspnam
9641 eval $inlibc
9642
9643 : see if gettimeofday or ftime exists
9644 set gettimeofday d_gettimeod
9645 eval $inlibc
9646 case "$d_gettimeod" in
9647 "$undef")
9648         set ftime d_ftime 
9649         eval $inlibc
9650         ;;
9651 *)
9652         val="$undef"; set d_ftime; eval $setvar
9653         ;;
9654 esac
9655 case "$d_gettimeod$d_ftime" in
9656 "$undef$undef")
9657         echo " "
9658         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9659         ;;
9660 esac
9661
9662 : see if this is an grp system
9663 set grp.h i_grp
9664 eval $inhdr
9665
9666 case "$i_grp" in
9667 $define)
9668         xxx=`./findhdr grp.h`
9669         $cppstdin $cppflags $cppminus < $xxx >$$.h
9670
9671         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9672                 val="$define"
9673         else
9674                 val="$undef"
9675         fi
9676         set d_grpasswd
9677         eval $setvar
9678
9679         $rm -f $$.h
9680         ;;
9681 *)
9682         val="$undef";
9683         set d_grpasswd; eval $setvar
9684         ;;
9685 esac
9686
9687 : see if hasmntopt exists
9688 set hasmntopt d_hasmntopt
9689 eval $inlibc
9690
9691 : see if this is a netinet/in.h or sys/in.h system
9692 set netinet/in.h i_niin sys/in.h i_sysin
9693 eval $inhdr
9694
9695 : see if arpa/inet.h has to be included
9696 set arpa/inet.h i_arpainet
9697 eval $inhdr
9698
9699 : see if htonl --and friends-- exists
9700 val=''
9701 set htonl val
9702 eval $inlibc
9703
9704 : Maybe they are macros.
9705 case "$val" in
9706 $undef)
9707         $cat >htonl.c <<EOM
9708 #include <stdio.h>
9709 #include <sys/types.h>
9710 #$i_niin I_NETINET_IN
9711 #$i_sysin I_SYS_IN
9712 #$i_arpainet I_ARPA_INET
9713 #ifdef I_NETINET_IN
9714 #include <netinet/in.h>
9715 #endif
9716 #ifdef I_SYS_IN
9717 #include <sys/in.h>
9718 #endif
9719 #ifdef I_ARPA_INET
9720 #include <arpa/inet.h>
9721 #endif
9722 #ifdef htonl
9723 printf("Defined as a macro.");
9724 #endif
9725 EOM
9726         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9727         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9728                 val="$define"
9729                 echo "But it seems to be defined as a macro." >&4
9730         fi
9731         $rm -f htonl.?
9732         ;;
9733 esac
9734 set d_htonl
9735 eval $setvar
9736
9737 : see if iconv exists
9738 set iconv d_iconv
9739 eval $inlibc
9740
9741 : index or strchr
9742 echo " "
9743 if set index val -f; eval $csym; $val; then
9744         if set strchr val -f d_strchr; eval $csym; $val; then
9745                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9746                         val="$define"
9747                         vali="$undef"
9748                         echo "strchr() found." >&4
9749                 else
9750                         val="$undef"
9751                         vali="$define"
9752                         echo "index() found." >&4
9753                 fi
9754         else
9755                 val="$undef"
9756                 vali="$define"
9757                 echo "index() found." >&4
9758         fi
9759 else
9760         if set strchr val -f d_strchr; eval $csym; $val; then
9761                 val="$define"
9762                 vali="$undef"
9763                 echo "strchr() found." >&4
9764         else
9765                 echo "No index() or strchr() found!" >&4
9766                 val="$undef"
9767                 vali="$undef"
9768         fi
9769 fi
9770 set d_strchr; eval $setvar
9771 val="$vali"
9772 set d_index; eval $setvar
9773
9774 : check whether inet_aton exists
9775 set inet_aton d_inetaton
9776 eval $inlibc
9777
9778 : see if inttypes.h is available
9779 : we want a real compile instead of Inhdr because some systems
9780 : have an inttypes.h which includes non-existent headers
9781 echo " "
9782 $cat >try.c <<EOCP
9783 #include <inttypes.h>
9784 int main() {
9785         static int32_t foo32 = 0x12345678;
9786 }
9787 EOCP
9788 set try
9789 if eval $compile; then
9790         echo "<inttypes.h> found." >&4
9791         val="$define"
9792 else
9793         echo "<inttypes.h> NOT found." >&4
9794         val="$undef"
9795 fi
9796 $rm -f try.c try
9797 set i_inttypes
9798 eval $setvar
9799
9800 : check for int64_t
9801 echo " "
9802 echo "Checking to see if you have int64_t..." >&4
9803 $cat >try.c <<EOCP
9804 #include <sys/types.h>
9805 #$i_inttypes I_INTTYPES
9806 #ifdef I_INTTYPES
9807 #include <inttypes.h>
9808 #endif
9809 int main() { int64_t x = 7; }
9810 EOCP
9811 set try
9812 if eval $compile; then
9813         val="$define"
9814         echo "You have int64_t."
9815 else
9816         val="$undef"
9817         echo "You do not have int64_t."
9818 fi
9819 $rm -f try try.*
9820 set d_int64_t
9821 eval $setvar
9822
9823 : Look for isascii
9824 echo " "
9825 $cat >isascii.c <<'EOCP'
9826 #include <stdio.h>
9827 #include <ctype.h>
9828 int main() {
9829         int c = 'A';
9830         if (isascii(c))
9831                 exit(0);
9832         else
9833                 exit(1);
9834 }
9835 EOCP
9836 set isascii
9837 if eval $compile; then
9838         echo "isascii() found." >&4
9839         val="$define"
9840 else
9841         echo "isascii() NOT found." >&4
9842         val="$undef"
9843 fi
9844 set d_isascii
9845 eval $setvar
9846 $rm -f isascii*
9847
9848 : see if isnan exists
9849 set isnan d_isnan
9850 eval $inlibc
9851
9852 : see if isnanl exists
9853 set isnanl d_isnanl
9854 eval $inlibc
9855
9856 : see if killpg exists
9857 set killpg d_killpg
9858 eval $inlibc
9859
9860 : see if lchown exists
9861 echo " "
9862 $cat > try.c <<'EOCP'
9863 /* System header to define __stub macros and hopefully few prototypes,
9864     which can conflict with char lchown(); below.  */
9865 #include <assert.h>
9866 /* Override any gcc2 internal prototype to avoid an error.  */
9867 /* We use char because int might match the return type of a gcc2
9868    builtin and then its argument prototype would still apply.  */
9869 char lchown();
9870 int main() {
9871     /*  The GNU C library defines this for functions which it implements
9872         to always fail with ENOSYS.  Some functions are actually named
9873         something starting with __ and the normal name is an alias.  */
9874 #if defined (__stub_lchown) || defined (__stub___lchown)
9875 choke me
9876 #else
9877 lchown();
9878 #endif
9879 ; return 0; }
9880 EOCP
9881 set try
9882 if eval $compile; then
9883     $echo "lchown() found." >&4
9884     val="$define"
9885 else
9886     $echo "lchown() NOT found." >&4
9887     val="$undef"
9888 fi
9889 set d_lchown
9890 eval $setvar
9891
9892 : See if number of significant digits in a double precision number is known
9893 echo " "
9894 $cat >ldbl_dig.c <<EOM
9895 #$i_limits I_LIMITS
9896 #$i_float I_FLOAT
9897 #ifdef I_LIMITS
9898 #include <limits.h>
9899 #endif
9900 #ifdef I_FLOAT
9901 #include <float.h>
9902 #endif
9903 #ifdef LDBL_DIG
9904 printf("Contains LDBL_DIG");
9905 #endif
9906 EOM
9907 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9908 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9909         echo "LDBL_DIG found." >&4
9910         val="$define"
9911 else
9912         echo "LDBL_DIG NOT found." >&4
9913         val="$undef"
9914 fi
9915 $rm -f ldbl_dig.?
9916 set d_ldbl_dig
9917 eval $setvar
9918
9919 : see if link exists
9920 set link d_link
9921 eval $inlibc
9922
9923 : see if localeconv exists
9924 set localeconv d_locconv
9925 eval $inlibc
9926
9927 : see if lockf exists
9928 set lockf d_lockf
9929 eval $inlibc
9930
9931 : check for long long
9932 echo " "
9933 echo "Checking to see if you have long long..." >&4
9934 echo 'int main() { long long x = 7; return 0; }' > try.c
9935 set try
9936 if eval $compile; then
9937         val="$define"
9938         echo "You have long long."
9939 else
9940         val="$undef"
9941         echo "You do not have long long."
9942 fi
9943 $rm try.*
9944 set d_longlong
9945 eval $setvar
9946
9947 : check for length of long long
9948 case "${d_longlong}${longlongsize}" in
9949 $define)
9950         echo " "
9951         echo "Checking to see how big your long longs are..." >&4
9952         $cat >try.c <<'EOCP'
9953 #include <stdio.h>
9954 int main()
9955 {
9956     printf("%d\n", (int)sizeof(long long));
9957     return(0);
9958 }
9959 EOCP
9960         set try
9961         if eval $compile_ok; then
9962                 longlongsize=`./try$exe_ext`
9963                 echo "Your long longs are $longlongsize bytes long."
9964         else
9965                 dflt='8'
9966                 echo " "
9967                 echo "(I can't seem to compile the test program.  Guessing...)"
9968                 rp="What is the size of a long long (in bytes)?"
9969                 . ./myread
9970                 longlongsize="$ans"
9971         fi
9972         if $test "X$longsize" = "X$longlongsize"; then
9973                 echo "(That isn't any different from an ordinary long.)"
9974         fi      
9975         ;;
9976 esac
9977 $rm -f try.* try
9978
9979 : see if prototype for lseek is available
9980 echo " "
9981 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9982 eval $hasproto
9983
9984 : see if lstat exists
9985 set lstat d_lstat
9986 eval $inlibc
9987
9988 : see if madvise exists
9989 set madvise d_madvise
9990 eval $inlibc
9991
9992 : see if mblen exists
9993 set mblen d_mblen
9994 eval $inlibc
9995
9996 : see if mbstowcs exists
9997 set mbstowcs d_mbstowcs
9998 eval $inlibc
9999
10000 : see if mbtowc exists
10001 set mbtowc d_mbtowc
10002 eval $inlibc
10003
10004 : see if memchr exists
10005 set memchr d_memchr
10006 eval $inlibc
10007
10008 : see if memcmp exists
10009 set memcmp d_memcmp
10010 eval $inlibc
10011
10012 : see if memcpy exists
10013 set memcpy d_memcpy
10014 eval $inlibc
10015
10016 : see if memmove exists
10017 set memmove d_memmove
10018 eval $inlibc
10019
10020 : see if memset exists
10021 set memset d_memset
10022 eval $inlibc
10023
10024 : see if mkdir exists
10025 set mkdir d_mkdir
10026 eval $inlibc
10027
10028 : see if mkdtemp exists
10029 set mkdtemp d_mkdtemp
10030 eval $inlibc
10031
10032 : see if mkfifo exists
10033 set mkfifo d_mkfifo
10034 eval $inlibc
10035
10036 : see if mkstemp exists
10037 set mkstemp d_mkstemp
10038 eval $inlibc
10039
10040 : see if mkstemps exists
10041 set mkstemps d_mkstemps
10042 eval $inlibc
10043
10044 : see if mktime exists
10045 set mktime d_mktime
10046 eval $inlibc
10047
10048 : see if this is a sys/mman.h system
10049 set sys/mman.h i_sysmman
10050 eval $inhdr
10051
10052 : see if mmap exists
10053 set mmap d_mmap
10054 eval $inlibc
10055 : see what shmat returns
10056 : default to something harmless
10057 mmaptype='void *'
10058 case "$i_sysmman$d_mmap" in
10059 "$define$define")
10060         $cat >mmap.c <<'END'
10061 #include <sys/mman.h>
10062 void *mmap();
10063 END
10064         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10065                 mmaptype='void *'
10066         else
10067                 mmaptype='caddr_t'
10068         fi
10069         echo "and it returns ($mmaptype)." >&4
10070         ;;
10071 esac
10072
10073
10074
10075 : see if modfl exists
10076 set modfl d_modfl
10077 eval $inlibc
10078
10079 : see if mprotect exists
10080 set mprotect d_mprotect
10081 eval $inlibc
10082
10083 : see if msgctl exists
10084 set msgctl d_msgctl
10085 eval $inlibc
10086
10087 : see if msgget exists
10088 set msgget d_msgget
10089 eval $inlibc
10090
10091 : see if msgsnd exists
10092 set msgsnd d_msgsnd
10093 eval $inlibc
10094
10095 : see if msgrcv exists
10096 set msgrcv d_msgrcv
10097 eval $inlibc
10098
10099 : see how much of the 'msg*(2)' library is present.
10100 h_msg=true
10101 echo " "
10102 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10103 *"$undef"*) h_msg=false;;
10104 esac
10105 case "$osname" in
10106 freebsd)
10107     case "`ipcs 2>&1`" in
10108     "SVID messages"*"not configured"*)
10109         echo "Your $osname does not have the msg*(2) configured." >&4
10110         h_msg=false
10111         val="$undef"
10112         set msgctl d_msgctl
10113         eval $setvar
10114         set msgget d_msgget
10115         eval $setvar
10116         set msgsnd d_msgsnd
10117         eval $setvar
10118         set msgrcv d_msgrcv
10119         eval $setvar
10120         ;;
10121     esac
10122     ;;
10123 esac
10124 : we could also check for sys/ipc.h ...
10125 if $h_msg && $test `./findhdr sys/msg.h`; then
10126         echo "You have the full msg*(2) library." >&4
10127         val="$define"
10128 else
10129         echo "You don't have the full msg*(2) library." >&4
10130         val="$undef"
10131 fi
10132 set d_msg
10133 eval $setvar
10134
10135 : see if msync exists
10136 set msync d_msync
10137 eval $inlibc
10138
10139 : see if munmap exists
10140 set munmap d_munmap
10141 eval $inlibc
10142
10143 : see if nice exists
10144 set nice d_nice
10145 eval $inlibc
10146
10147
10148 echo " "
10149 echo "Checking which 64-bit integer type we could use..." >&4
10150
10151 case "$intsize" in
10152 8) val=int
10153    set quadtype
10154    eval $setvar
10155    val='"unsigned int"'
10156    set uquadtype
10157    eval $setvar
10158    quadkind=1
10159    ;;
10160 *) case "$longsize" in
10161    8) val=long
10162       set quadtype
10163       eval $setvar
10164       val='"unsigned long"'
10165       set uquadtype
10166       eval $setvar
10167       quadkind=2
10168       ;;
10169    *) case "$d_longlong:$longlongsize" in
10170       define:8)
10171         val='"long long"'
10172         set quadtype
10173         eval $setvar
10174         val='"unsigned long long"'
10175         set uquadtype
10176         eval $setvar
10177         quadkind=3
10178         ;;
10179       *) case "$d_int64_t" in
10180          define)
10181            val=int64_t
10182            set quadtype
10183            eval $setvar
10184            val=uint64_t
10185            set uquadtype
10186            eval $setvar
10187            quadkind=4
10188            ;;
10189          esac
10190          ;;
10191       esac
10192       ;;
10193    esac
10194    ;;
10195 esac
10196
10197 case "$quadtype" in
10198 '')     echo "Alas, no 64-bit integer types in sight." >&4
10199         d_quad="$undef"
10200         ;;
10201 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10202             verb="will"
10203         else
10204             verb="could"
10205         fi
10206         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10207         d_quad="$define"
10208         ;;
10209 esac
10210
10211 : check for length of character
10212 echo " "
10213 case "$charsize" in
10214 '')
10215         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10216         $cat >try.c <<'EOCP'
10217 #include <stdio.h>
10218 int main()
10219 {
10220     printf("%d\n", (int)sizeof(char));
10221     exit(0);
10222 }
10223 EOCP
10224         set try
10225         if eval $compile_ok; then
10226                 dflt=`./try`
10227         else
10228                 dflt='1'
10229                 echo "(I can't seem to compile the test program.  Guessing...)"
10230         fi
10231         ;;
10232 *)
10233         dflt="$charsize"
10234         ;;
10235 esac
10236 rp="What is the size of a character (in bytes)?"
10237 . ./myread
10238 charsize="$ans"
10239 $rm -f try.c try
10240
10241 : check for volatile keyword
10242 echo " "
10243 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10244 $cat >try.c <<'EOCP'
10245 int main()
10246 {
10247         typedef struct _goo_struct goo_struct;
10248         goo_struct * volatile goo = ((goo_struct *)0);
10249         struct _goo_struct {
10250                 long long_int;
10251                 int reg_int;
10252                 char char_var;
10253         };
10254         typedef unsigned short foo_t;
10255         char *volatile foo;
10256         volatile int bar;
10257         volatile foo_t blech;
10258         foo = foo;
10259 }
10260 EOCP
10261 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10262         val="$define"
10263         echo "Yup, it does."
10264 else
10265         val="$undef"
10266         echo "Nope, it doesn't."
10267 fi
10268 set d_volatile
10269 eval $setvar
10270 $rm -f try.*
10271
10272
10273 echo " "
10274 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10275
10276 case "$use64bitint:$d_quad:$quadtype" in
10277 define:define:?*)
10278         ivtype="$quadtype"
10279         uvtype="$uquadtype"
10280         ivsize=8
10281         uvsize=8
10282         ;;
10283 *)      ivtype="long"
10284         uvtype="unsigned long"
10285         ivsize=$longsize
10286         uvsize=$longsize
10287         ;;
10288 esac
10289
10290 case "$uselongdouble:$d_longdbl" in
10291 define:define)
10292         nvtype="long double"
10293         nvsize=$longdblsize
10294         ;;
10295 *)      nvtype=double
10296         nvsize=$doublesize
10297         ;;
10298 esac
10299
10300 $echo "(IV will be "$ivtype", $ivsize bytes)"
10301 $echo "(UV will be "$uvtype", $uvsize bytes)"
10302 $echo "(NV will be "$nvtype", $nvsize bytes)"
10303
10304 $cat >try.c <<EOCP
10305 #$i_inttypes I_INTTYPES
10306 #ifdef I_INTTYPES
10307 #include <inttypes.h>
10308 #endif
10309 #include <stdio.h>
10310 int main() {
10311 #ifdef INT8
10312    int8_t i =  INT8_MAX;
10313   uint8_t u = UINT8_MAX;
10314   printf("int8_t\n");
10315 #endif
10316 #ifdef INT16
10317    int16_t i =  INT16_MAX;
10318   uint16_t i = UINT16_MAX;
10319   printf("int16_t\n");
10320 #endif
10321 #ifdef INT32
10322    int32_t i =  INT32_MAX;
10323   uint32_t u = UINT32_MAX;
10324   printf("int32_t\n");
10325 #endif
10326 }
10327 EOCP
10328
10329 case "$i8type" in
10330 '')     case "$charsize" in
10331         1)      i8type=char
10332                 u8type="unsigned char"
10333                 i8size=$charsize
10334                 u8size=$charsize
10335                 ;;
10336         esac
10337         ;;
10338 esac
10339 case "$i8type" in
10340 '')     set try -DINT8
10341         if eval $compile; then
10342                 case "`./try$exe_ext`" in
10343                 int8_t) i8type=int8_t
10344                         u8type=uint8_t
10345                         i8size=1
10346                         u8size=1
10347                         ;;
10348                 esac
10349         fi
10350         ;;
10351 esac
10352 case "$i8type" in
10353 '')     if $test $charsize -ge 1; then
10354                 i8type=char
10355                 u8type="unsigned char"
10356                 i8size=$charsize
10357                 u8size=$charsize
10358         fi
10359         ;;
10360 esac
10361
10362 case "$i16type" in
10363 '')     case "$shortsize" in
10364         2)      i16type=short
10365                 u16type="unsigned short"
10366                 i16size=$shortsize
10367                 u16size=$shortsize
10368                 ;;
10369         esac
10370         ;;
10371 esac
10372 case "$i16type" in
10373 '')     set try -DINT16
10374         if eval $compile; then
10375                 case "`./try$exe_ext`" in
10376                 int16_t)
10377                         i16type=int16_t
10378                         u16type=uint16_t
10379                         i16size=2
10380                         u16size=2
10381                         ;;
10382                 esac
10383         fi
10384         ;;
10385 esac
10386 case "$i16type" in
10387 '')     if $test $shortsize -ge 2; then
10388                 i16type=short
10389                 u16type="unsigned short"
10390                 i16size=$shortsize
10391                 u16size=$shortsize
10392         fi
10393         ;;
10394 esac
10395
10396 case "$i32type" in
10397 '')     case "$longsize" in
10398         4)      i32type=long
10399                 u32type="unsigned long"
10400                 i32size=$longsize
10401                 u32size=$longsize
10402                 ;;
10403         *)      case "$intsize" in
10404                 4)      i32type=int
10405                         u32type="unsigned int"
10406                         i32size=$intsize
10407                         u32size=$intsize
10408                         ;;
10409                 esac
10410                 ;;
10411         esac
10412         ;;
10413 esac
10414 case "$i32type" in
10415 '')     set try -DINT32
10416         if eval $compile; then
10417                 case "`./try$exe_ext`" in
10418                 int32_t)
10419                         i32type=int32_t
10420                         u32type=uint32_t
10421                         i32size=4
10422                         u32size=4
10423                         ;;
10424                 esac
10425         fi
10426         ;;
10427 esac
10428 case "$i32type" in
10429 '')     if $test $intsize -ge 4; then
10430                 i32type=int
10431                 u32type="unsigned int"
10432                 i32size=$intsize
10433                 u32size=$intsize
10434         fi
10435         ;;
10436 esac
10437
10438 case "$i64type" in
10439 '')     case "$d_quad:$quadtype" in
10440         define:?*)
10441                 i64type="$quadtype"
10442                 u64type="$uquadtype"
10443                 i64size=8
10444                 u64size=8
10445                 ;;
10446         esac
10447         ;;
10448 esac
10449
10450 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10451 : volatile so that the compiler has to store it out to memory.
10452 if test X"$d_volatile" = X"$define"; then
10453         volatile=volatile
10454 fi
10455 $cat <<EOP >try.c
10456 #include <stdio.h>
10457 #include <sys/types.h>
10458 #include <signal.h>
10459 #ifdef SIGFPE
10460 $volatile int bletched = 0;
10461 $signal_t blech(s) int s; { bletched = 1; }
10462 #endif
10463 int main() {
10464     $uvtype u = 0;
10465     $nvtype d;
10466     int     n = 8 * $uvsize;
10467     int     i;
10468 #ifdef SIGFPE
10469     signal(SIGFPE, blech);
10470 #endif
10471
10472     for (i = 0; i < n; i++) {
10473       u = u << 1 | ($uvtype)1;
10474       d = ($nvtype)u;
10475       if (($uvtype)d != u)
10476         break;
10477       if (d <= 0)
10478         break;
10479       d = ($nvtype)(u - 1);
10480       if (($uvtype)d != (u - 1))
10481         break;
10482 #ifdef SIGFPE
10483       if (bletched) {
10484         break;
10485 #endif
10486       } 
10487     }
10488     printf("%d\n", ((i == n) ? -n : i));
10489     exit(0);
10490 }
10491 EOP
10492 set try
10493
10494 d_nv_preserves_uv="$undef"
10495 if eval $compile; then
10496         d_nv_preserves_uv_bits="`./try$exe_ext`"
10497 fi
10498 case "$d_nv_preserves_uv_bits" in
10499 \-[1-9]*)       
10500         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10501         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10502         d_nv_preserves_uv="$define"
10503         ;;
10504 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10505         d_nv_preserves_uv="$undef" ;;
10506 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10507         d_nv_preserves_uv_bits="$undef" ;;
10508 esac
10509
10510 $rm -f try.* try
10511
10512
10513 : check for off64_t
10514 echo " "
10515 echo "Checking to see if you have off64_t..." >&4
10516 $cat >try.c <<EOCP
10517 #include <sys/types.h>
10518 #include <unistd.h>
10519 int main() { off64_t x = 7; }
10520 EOCP
10521 set try
10522 if eval $compile; then
10523         val="$define"
10524         echo "You have off64_t."
10525 else
10526         val="$undef"
10527         echo "You do not have off64_t."
10528         case "$lseeksize" in
10529         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10530         esac
10531 fi
10532 $rm -f try.* try
10533 set d_off64_t
10534 eval $setvar
10535
10536 : see if POSIX threads are available
10537 set pthread.h i_pthread
10538 eval $inhdr
10539
10540
10541
10542
10543 : how to create joinable pthreads
10544 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10545         echo " "
10546         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10547         $cat >try.c <<'EOCP'
10548 #include <pthread.h>
10549 int main() {
10550     int detachstate = JOINABLE;
10551 }
10552 EOCP
10553         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10554         if eval $compile; then
10555                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10556                 val="$undef" # Yes, undef.
10557                 set d_old_pthread_create_joinable
10558                 eval $setvar
10559                 val=""
10560                 set old_pthread_create_joinable
10561                 eval $setvar
10562         else
10563                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10564                 if eval $compile; then
10565                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10566                         val="$define"
10567                         set d_old_pthread_create_joinable
10568                         eval $setvar
10569                         val=PTHREAD_CREATE_UNDETACHED
10570                         set old_pthread_create_joinable
10571                         eval $setvar
10572                 else            
10573                         set try -DJOINABLE=__UNDETACHED
10574                         if eval $compile; then
10575                                 echo "You seem to use __UNDETACHED." >&4
10576                                 val="$define"
10577                                 set d_old_pthread_create_joinable
10578                                 eval $setvar
10579                                 val=__UNDETACHED
10580                                 set old_pthread_create_joinable
10581                                 eval $setvar
10582                         else
10583                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10584                                 val="$define"
10585                                 set d_old_pthread_create_joinable
10586                                 eval $setvar
10587                                 val=0
10588                                 set old_pthread_create_joinable
10589                                 eval $setvar
10590                         fi
10591                 fi
10592         fi
10593         $rm -f try try.*
10594 else
10595     d_old_pthread_create_joinable="$undef"
10596     old_pthread_create_joinable=""
10597 fi
10598
10599 : see if pause exists
10600 set pause d_pause
10601 eval $inlibc
10602
10603 : see if pipe exists
10604 set pipe d_pipe
10605 eval $inlibc
10606
10607 : see if poll exists
10608 set poll d_poll
10609 eval $inlibc
10610
10611
10612 : see whether the various POSIXish _yields exist
10613 $cat >try.c <<EOP
10614 #include <pthread.h>
10615 #include <stdio.h>
10616 int main() {
10617 #ifdef SCHED_YIELD
10618         sched_yield();
10619 #else
10620 #ifdef PTHREAD_YIELD
10621         pthread_yield();
10622 #else
10623 #ifdef PTHREAD_YIELD_NULL
10624         pthread_yield(NULL);
10625 #endif
10626 #endif
10627 #endif
10628 }
10629 EOP
10630 : see if sched_yield exists
10631 set try -DSCHED_YIELD
10632 if eval $compile; then
10633     val="$define"
10634     sched_yield='sched_yield()'
10635 else
10636     val="$undef"
10637 fi
10638 case "$usethreads" in
10639 $define)
10640         case "$val" in
10641         $define) echo 'sched_yield() found.' >&4        ;;
10642         *)       echo 'sched_yield() NOT found.' >&4    ;;
10643         esac
10644 esac
10645 set d_sched_yield
10646 eval $setvar
10647
10648 : see if pthread_yield exists
10649 set try -DPTHREAD_YIELD
10650 if eval $compile; then
10651     val="$define"
10652     case "$sched_yield" in
10653     '') sched_yield='pthread_yield()' ;;
10654     esac
10655 else
10656     set try -DPTHREAD_YIELD_NULL
10657     if eval $compile; then
10658         val="$define"
10659         case "$sched_yield" in
10660         '') sched_yield='pthread_yield(NULL)' ;;
10661         esac
10662     else
10663         val="$undef"
10664     fi
10665 fi
10666 case "$usethreads" in
10667 $define)
10668         case "$val" in
10669         $define) echo 'pthread_yield() found.' >&4      ;;
10670         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10671         esac
10672         ;;
10673 esac
10674 set d_pthread_yield
10675 eval $setvar
10676
10677 case "$sched_yield" in
10678 '') sched_yield=undef ;;
10679 esac
10680
10681 $rm -f try try.*
10682
10683 : see if this is a pwd.h system
10684 set pwd.h i_pwd
10685 eval $inhdr
10686
10687 case "$i_pwd" in
10688 $define)
10689         xxx=`./findhdr pwd.h`
10690         $cppstdin $cppflags $cppminus < $xxx >$$.h
10691
10692         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10693                 val="$define"
10694         else
10695                 val="$undef"
10696         fi
10697         set d_pwquota
10698         eval $setvar
10699
10700         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10701                 val="$define"
10702         else
10703                 val="$undef"
10704         fi
10705         set d_pwage
10706         eval $setvar
10707
10708         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10709                 val="$define"
10710         else
10711                 val="$undef"
10712         fi
10713         set d_pwchange
10714         eval $setvar
10715
10716         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10717                 val="$define"
10718         else
10719                 val="$undef"
10720         fi
10721         set d_pwclass
10722         eval $setvar
10723
10724         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10725                 val="$define"
10726         else
10727                 val="$undef"
10728         fi
10729         set d_pwexpire
10730         eval $setvar
10731
10732         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10733                 val="$define"
10734         else
10735                 val="$undef"
10736         fi
10737         set d_pwcomment
10738         eval $setvar
10739
10740         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10741                 val="$define"
10742         else
10743                 val="$undef"
10744         fi
10745         set d_pwgecos
10746         eval $setvar
10747
10748         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10749                 val="$define"
10750         else
10751                 val="$undef"
10752         fi
10753         set d_pwpasswd
10754         eval $setvar
10755
10756         $rm -f $$.h
10757         ;;
10758 *)
10759         val="$undef"; 
10760         set d_pwquota; eval $setvar
10761         set d_pwage; eval $setvar
10762         set d_pwchange; eval $setvar
10763         set d_pwclass; eval $setvar
10764         set d_pwexpire; eval $setvar
10765         set d_pwcomment; eval $setvar
10766         set d_pwgecos; eval $setvar
10767         set d_pwpasswd; eval $setvar
10768         ;;
10769 esac
10770
10771 : see if readdir and friends exist
10772 set readdir d_readdir
10773 eval $inlibc
10774 set seekdir d_seekdir
10775 eval $inlibc
10776 set telldir d_telldir
10777 eval $inlibc
10778 set rewinddir d_rewinddir
10779 eval $inlibc
10780
10781 : see if readlink exists
10782 set readlink d_readlink
10783 eval $inlibc
10784
10785 : see if rename exists
10786 set rename d_rename
10787 eval $inlibc
10788
10789 : see if rmdir exists
10790 set rmdir d_rmdir
10791 eval $inlibc
10792
10793 : see if memory.h is available.
10794 val=''
10795 set memory.h val
10796 eval $inhdr
10797
10798 : See if it conflicts with string.h
10799 case "$val" in
10800 $define)
10801         case "$strings" in
10802         '') ;;
10803         *)
10804                 $cppstdin $cppflags $cppminus < $strings > mem.h
10805                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10806                         echo " "
10807                         echo "We won't be including <memory.h>."
10808                         val="$undef"
10809                 fi
10810                 $rm -f mem.h
10811                 ;;
10812         esac
10813 esac
10814 set i_memory
10815 eval $setvar
10816
10817 : can bcopy handle overlapping blocks?
10818 val="$undef"
10819 case "$d_bcopy" in
10820 "$define")
10821         echo " "
10822         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10823         $cat >try.c <<EOCP
10824 #$i_memory I_MEMORY
10825 #$i_stdlib I_STDLIB
10826 #$i_string I_STRING
10827 #$i_unistd I_UNISTD
10828 EOCP
10829         $cat >>try.c <<'EOCP'
10830 #include <stdio.h>
10831 #ifdef I_MEMORY
10832 #  include <memory.h>
10833 #endif
10834 #ifdef I_STDLIB
10835 #  include <stdlib.h>
10836 #endif
10837 #ifdef I_STRING
10838 #  include <string.h>
10839 #else
10840 #  include <strings.h>
10841 #endif
10842 #ifdef I_UNISTD
10843 #  include <unistd.h>  /* Needed for NetBSD */
10844 #endif
10845 int main()
10846 {
10847 char buf[128], abc[128];
10848 char *b;
10849 int len;
10850 int off;
10851 int align;
10852
10853 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10854
10855 for (align = 7; align >= 0; align--) {
10856         for (len = 36; len; len--) {
10857                 b = buf+align;
10858                 bcopy(abc, b, len);
10859                 for (off = 1; off <= len; off++) {
10860                         bcopy(b, b+off, len);
10861                         bcopy(b+off, b, len);
10862                         if (bcmp(b, abc, len))
10863                                 exit(1);
10864                 }
10865         }
10866 }
10867 exit(0);
10868 }
10869 EOCP
10870         set try
10871         if eval $compile_ok; then
10872                 if ./try 2>/dev/null; then
10873                         echo "Yes, it can."
10874                         val="$define"
10875                 else
10876                         echo "It can't, sorry."
10877                         case "$d_memmove" in
10878                         "$define") echo "But that's Ok since you have memmove()." ;;
10879                         esac
10880                 fi
10881         else
10882                 echo "(I can't compile the test program, so we'll assume not...)"
10883                 case "$d_memmove" in
10884                 "$define") echo "But that's Ok since you have memmove()." ;;
10885                 esac
10886         fi
10887         ;;
10888 esac
10889 $rm -f try.* try core
10890 set d_safebcpy
10891 eval $setvar
10892
10893 : can memcpy handle overlapping blocks?
10894 val="$undef"
10895 case "$d_memcpy" in
10896 "$define")
10897         echo " "
10898         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10899         $cat >try.c <<EOCP
10900 #$i_memory I_MEMORY
10901 #$i_stdlib I_STDLIB
10902 #$i_string I_STRING
10903 #$i_unistd I_UNISTD
10904 EOCP
10905         $cat >>try.c <<'EOCP'
10906 #include <stdio.h>
10907 #ifdef I_MEMORY
10908 #  include <memory.h>
10909 #endif
10910 #ifdef I_STDLIB
10911 #  include <stdlib.h>
10912 #endif
10913 #ifdef I_STRING
10914 #  include <string.h>
10915 #else
10916 #  include <strings.h>
10917 #endif
10918 #ifdef I_UNISTD
10919 #  include <unistd.h>  /* Needed for NetBSD */
10920 #endif
10921 int main()
10922 {
10923 char buf[128], abc[128];
10924 char *b;
10925 int len;
10926 int off;
10927 int align;
10928
10929 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10930    try to store the string in read-only memory. */
10931 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10932
10933 for (align = 7; align >= 0; align--) {
10934         for (len = 36; len; len--) {
10935                 b = buf+align;
10936                 memcpy(b, abc, len);
10937                 for (off = 1; off <= len; off++) {
10938                         memcpy(b+off, b, len);
10939                         memcpy(b, b+off, len);
10940                         if (memcmp(b, abc, len))
10941                                 exit(1);
10942                 }
10943         }
10944 }
10945 exit(0);
10946 }
10947 EOCP
10948         set try
10949         if eval $compile_ok; then
10950                 if ./try 2>/dev/null; then
10951                         echo "Yes, it can."
10952                         val="$define"
10953                 else
10954                         echo "It can't, sorry."
10955                         case "$d_memmove" in
10956                         "$define") echo "But that's Ok since you have memmove()." ;;
10957                         esac
10958                 fi
10959         else
10960                 echo "(I can't compile the test program, so we'll assume not...)"
10961                 case "$d_memmove" in
10962                 "$define") echo "But that's Ok since you have memmove()." ;;
10963                 esac
10964         fi
10965         ;;
10966 esac
10967 $rm -f try.* try core
10968 set d_safemcpy
10969 eval $setvar
10970
10971 : can memcmp be trusted to compare relative magnitude?
10972 val="$undef"
10973 case "$d_memcmp" in
10974 "$define")
10975         echo " "
10976         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10977         $cat >try.c <<EOCP
10978 #$i_memory I_MEMORY
10979 #$i_stdlib I_STDLIB
10980 #$i_string I_STRING
10981 #$i_unistd I_UNISTD
10982 EOCP
10983         $cat >>try.c <<'EOCP'
10984 #include <stdio.h>
10985 #ifdef I_MEMORY
10986 #  include <memory.h>
10987 #endif
10988 #ifdef I_STDLIB
10989 #  include <stdlib.h>
10990 #endif
10991 #ifdef I_STRING
10992 #  include <string.h>
10993 #else
10994 #  include <strings.h>
10995 #endif
10996 #ifdef I_UNISTD
10997 #  include <unistd.h>  /* Needed for NetBSD */
10998 #endif
10999 int main()
11000 {
11001 char a = -1;
11002 char b = 0;
11003 if ((a < b) && memcmp(&a, &b, 1) < 0)
11004         exit(1);
11005 exit(0);
11006 }
11007 EOCP
11008         set try
11009         if eval $compile_ok; then
11010                 if ./try 2>/dev/null; then
11011                         echo "Yes, it can."
11012                         val="$define"
11013                 else
11014                         echo "No, it can't (it uses signed chars)."
11015                 fi
11016         else
11017                 echo "(I can't compile the test program, so we'll assume not...)"
11018         fi
11019         ;;
11020 esac
11021 $rm -f try.* try core
11022 set d_sanemcmp
11023 eval $setvar
11024
11025 : see if prototype for sbrk is available
11026 echo " "
11027 set d_sbrkproto sbrk $i_unistd unistd.h
11028 eval $hasproto
11029
11030 : see if select exists
11031 set select d_select
11032 eval $inlibc
11033
11034 : see if semctl exists
11035 set semctl d_semctl
11036 eval $inlibc
11037
11038 : see if semget exists
11039 set semget d_semget
11040 eval $inlibc
11041
11042 : see if semop exists
11043 set semop d_semop
11044 eval $inlibc
11045
11046 : see how much of the 'sem*(2)' library is present.
11047 h_sem=true
11048 echo " "
11049 case "$d_semctl$d_semget$d_semop" in
11050 *"$undef"*) h_sem=false;;
11051 esac
11052 case "$osname" in
11053 freebsd)
11054     case "`ipcs 2>&1`" in
11055     "SVID messages"*"not configured"*)
11056         echo "Your $osname does not have the sem*(2) configured." >&4
11057         h_sem=false
11058         val="$undef"
11059         set semctl d_semctl
11060         eval $setvar
11061         set semget d_semget
11062         eval $setvar
11063         set semop d_semop
11064         eval $setvar
11065         ;;
11066     esac
11067     ;;
11068 esac
11069 : we could also check for sys/ipc.h ...
11070 if $h_sem && $test `./findhdr sys/sem.h`; then
11071         echo "You have the full sem*(2) library." >&4
11072         val="$define"
11073 else
11074         echo "You don't have the full sem*(2) library." >&4
11075         val="$undef"
11076 fi
11077 set d_sem
11078 eval $setvar
11079
11080 : see whether sys/sem.h defines union semun
11081 echo " "
11082 $cat > try.c <<'END'
11083 #include <sys/types.h>
11084 #include <sys/ipc.h>
11085 #include <sys/sem.h>
11086 int main () { union semun semun; semun.buf = 0; }
11087 END
11088 set try
11089 if eval $compile; then
11090     echo "You have union semun in <sys/sem.h>." >&4
11091     val="$define"
11092 else
11093     echo "You do not have union semun in <sys/sem.h>." >&4
11094     val="$undef"
11095 fi
11096 $rm -f try try.c try.h
11097 set d_union_semun
11098 eval $setvar
11099
11100 : see how to do semctl IPC_STAT
11101 case "$d_sem" in
11102 $define)
11103     : see whether semctl IPC_STAT can use union semun
11104     echo " "
11105     $cat > try.h <<END
11106 #ifndef S_IRUSR
11107 #   ifdef S_IREAD
11108 #       define S_IRUSR S_IREAD
11109 #       define S_IWUSR S_IWRITE
11110 #       define S_IXUSR S_IEXEC
11111 #   else
11112 #       define S_IRUSR 0400
11113 #       define S_IWUSR 0200
11114 #       define S_IXUSR 0100
11115 #   endif
11116 #   define S_IRGRP (S_IRUSR>>3)
11117 #   define S_IWGRP (S_IWUSR>>3)
11118 #   define S_IXGRP (S_IXUSR>>3)
11119 #   define S_IROTH (S_IRUSR>>6)
11120 #   define S_IWOTH (S_IWUSR>>6)
11121 #   define S_IXOTH (S_IXUSR>>6)
11122 #endif
11123 #ifndef S_IRWXU
11124 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11125 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11126 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11127 #endif
11128 END
11129
11130     $cat > try.c <<END
11131 #include <sys/types.h>
11132 #include <sys/ipc.h>
11133 #include <sys/sem.h>
11134 #include <sys/stat.h>
11135 #include <stdio.h>
11136 #include <errno.h>
11137 #include "try.h"
11138 #ifndef errno
11139 extern int errno;
11140 #endif
11141 #$d_union_semun HAS_UNION_SEMUN
11142 int main() {
11143     union semun
11144 #ifndef HAS_UNION_SEMUN
11145     {
11146         int val;
11147         struct semid_ds *buf;
11148         unsigned short *array;
11149     }
11150 #endif
11151     arg;
11152     int sem, st;
11153
11154 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11155     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11156     if (sem > -1) {
11157         struct semid_ds argbuf;
11158         arg.buf = &argbuf;
11159 #       ifdef IPC_STAT
11160         st = semctl(sem, 0, IPC_STAT, arg);
11161         if (st == 0)
11162             printf("semun\n");
11163         else
11164 #       endif /* IPC_STAT */
11165             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11166 #       ifdef IPC_RMID
11167         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11168 #       endif /* IPC_RMID */
11169             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11170     } else
11171 #endif /* IPC_PRIVATE && ... */
11172         printf("semget failed: errno = %d\n", errno);
11173   return 0;
11174 }
11175 END
11176     val="$undef"
11177     set try
11178     if eval $compile; then
11179         xxx=`./try`
11180         case "$xxx" in
11181         semun) val="$define" ;;
11182         esac
11183     fi
11184     $rm -f try try.c
11185     set d_semctl_semun
11186     eval $setvar
11187     case "$d_semctl_semun" in
11188     $define)
11189         echo "You can use union semun for semctl IPC_STAT." >&4
11190         also='also'
11191         ;;
11192     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11193         also=''
11194         ;;
11195     esac
11196
11197     : see whether semctl IPC_STAT can use struct semid_ds pointer
11198     $cat > try.c <<'END'
11199 #include <sys/types.h>
11200 #include <sys/ipc.h>
11201 #include <sys/sem.h>
11202 #include <sys/stat.h>
11203 #include "try.h"
11204 #include <stdio.h>
11205 #include <errno.h>
11206 #ifndef errno
11207 extern int errno;
11208 #endif
11209 int main() {
11210     struct semid_ds arg;
11211     int sem, st;
11212
11213 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11214     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11215     if (sem > -1) {
11216 #       ifdef IPC_STAT
11217         st = semctl(sem, 0, IPC_STAT, &arg);
11218         if (st == 0)
11219             printf("semid_ds\n");
11220         else
11221 #       endif /* IPC_STAT */
11222             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11223 #       ifdef IPC_RMID
11224         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11225 #       endif /* IPC_RMID */
11226             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11227     } else
11228 #endif /* IPC_PRIVATE && ... */
11229         printf("semget failed: errno = %d\n", errno);
11230
11231     return 0;
11232 }
11233 END
11234     val="$undef"
11235     set try
11236     if eval $compile; then
11237         xxx=`./try`
11238         case "$xxx" in
11239         semid_ds) val="$define" ;;
11240         esac
11241     fi
11242     $rm -f try try.c
11243     set d_semctl_semid_ds
11244     eval $setvar
11245     case "$d_semctl_semid_ds" in
11246     $define)
11247         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11248         ;;
11249     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11250         ;;
11251     esac
11252     $rm -f try.h
11253     ;;
11254 *)  val="$undef"
11255
11256     # We do not have the full sem*(2) library, so assume we can not
11257     # use either.
11258
11259     set d_semctl_semun
11260     eval $setvar
11261
11262     set d_semctl_semid_ds
11263     eval $setvar
11264     ;;
11265 esac
11266
11267 : see if setegid exists
11268 set setegid d_setegid
11269 eval $inlibc
11270
11271 : see if seteuid exists
11272 set seteuid d_seteuid
11273 eval $inlibc
11274
11275 : see if setgrent exists
11276 set setgrent d_setgrent
11277 eval $inlibc
11278
11279 : see if sethostent exists
11280 set sethostent d_sethent
11281 eval $inlibc
11282
11283 : see if setlinebuf exists
11284 set setlinebuf d_setlinebuf
11285 eval $inlibc
11286
11287 : see if setlocale exists
11288 set setlocale d_setlocale
11289 eval $inlibc
11290
11291 : see if setnetent exists
11292 set setnetent d_setnent
11293 eval $inlibc
11294
11295 : see if setprotoent exists
11296 set setprotoent d_setpent
11297 eval $inlibc
11298
11299 : see if setpgid exists
11300 set setpgid d_setpgid
11301 eval $inlibc
11302
11303 : see if setpgrp2 exists
11304 set setpgrp2 d_setpgrp2
11305 eval $inlibc
11306
11307 : see if setpriority exists
11308 set setpriority d_setprior
11309 eval $inlibc
11310
11311 : see if setproctitle exists
11312 set setproctitle d_setproctitle
11313 eval $inlibc
11314
11315 : see if setpwent exists
11316 set setpwent d_setpwent
11317 eval $inlibc
11318
11319 : see if setregid exists
11320 set setregid d_setregid
11321 eval $inlibc
11322 set setresgid d_setresgid
11323 eval $inlibc
11324
11325 : see if setreuid exists
11326 set setreuid d_setreuid
11327 eval $inlibc
11328 set setresuid d_setresuid
11329 eval $inlibc
11330
11331 : see if setrgid exists
11332 set setrgid d_setrgid
11333 eval $inlibc
11334
11335 : see if setruid exists
11336 set setruid d_setruid
11337 eval $inlibc
11338
11339 : see if setservent exists
11340 set setservent d_setsent
11341 eval $inlibc
11342
11343 : see if setsid exists
11344 set setsid d_setsid
11345 eval $inlibc
11346
11347 : see if setvbuf exists
11348 set setvbuf d_setvbuf
11349 eval $inlibc
11350
11351 : see if sfio.h is available
11352 set sfio.h i_sfio
11353 eval $inhdr
11354
11355
11356 : see if sfio library is available
11357 case "$i_sfio" in
11358 $define)
11359         val=''
11360         set sfreserve val
11361         eval $inlibc
11362         ;;
11363 *)
11364         val="$undef"
11365         ;;
11366 esac
11367 : Ok, but do we want to use it.
11368 case "$val" in
11369 $define)
11370         case "$usesfio" in
11371         true|$define|[yY]*) dflt='y';;
11372         *) dflt='n';;
11373         esac
11374         echo "$package can use the sfio library, but it is experimental."
11375         case "$useperlio" in
11376         "$undef")
11377             echo "For sfio also the PerlIO abstraction layer is needed."
11378             echo "Earlier you said you wouldn't want that."
11379             ;;
11380         esac
11381         rp="You seem to have sfio available, do you want to try using it?"
11382         . ./myread
11383         case "$ans" in
11384         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11385                 useperlio="$define"
11386                 val="$define"
11387                 ;;
11388         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11389                 val="$undef"
11390                 : Remove sfio from list of libraries to use
11391                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11392                 shift
11393                 libs="$*"
11394                 echo "libs = $libs" >&4
11395                 ;;
11396         esac
11397         ;;
11398 *)      case "$usesfio" in
11399         true|$define|[yY]*)
11400                 echo "Sorry, cannot find sfio on this machine." >&4
11401                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11402                 val="$undef"
11403                 ;;
11404         esac
11405         ;;
11406 esac
11407 set d_sfio
11408 eval $setvar
11409 case "$d_sfio" in
11410 $define) usesfio='true';;
11411 *) usesfio='false';;
11412 esac
11413
11414 : see if shmctl exists
11415 set shmctl d_shmctl
11416 eval $inlibc
11417
11418 : see if shmget exists
11419 set shmget d_shmget
11420 eval $inlibc
11421
11422 : see if shmat exists
11423 set shmat d_shmat
11424 eval $inlibc
11425 : see what shmat returns
11426 case "$d_shmat" in
11427 "$define")
11428         $cat >shmat.c <<'END'
11429 #include <sys/shm.h>
11430 void *shmat();
11431 END
11432         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11433                 shmattype='void *'
11434         else
11435                 shmattype='char *'
11436         fi
11437         echo "and it returns ($shmattype)." >&4
11438         : see if a prototype for shmat is available
11439         xxx=`./findhdr sys/shm.h`
11440         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11441         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11442                 val="$define"
11443         else
11444                 val="$undef"
11445         fi
11446         $rm -f shmat.[co]
11447         ;;
11448 *)
11449         val="$undef"
11450         ;;
11451 esac
11452 set d_shmatprototype
11453 eval $setvar
11454
11455 : see if shmdt exists
11456 set shmdt d_shmdt
11457 eval $inlibc
11458
11459 : see how much of the 'shm*(2)' library is present.
11460 h_shm=true
11461 echo " "
11462 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11463 *"$undef"*) h_shm=false;;
11464 esac
11465 case "$osname" in
11466 freebsd)
11467     case "`ipcs 2>&1`" in
11468     "SVID shared memory"*"not configured"*)
11469         echo "Your $osname does not have the shm*(2) configured." >&4
11470         h_shm=false
11471         val="$undef"
11472         set shmctl d_shmctl
11473         evat $setvar
11474         set shmget d_shmget
11475         evat $setvar
11476         set shmat d_shmat
11477         evat $setvar
11478         set shmdt d_shmdt
11479         evat $setvar
11480         ;;
11481     esac
11482     ;;
11483 esac
11484 : we could also check for sys/ipc.h ...
11485 if $h_shm && $test `./findhdr sys/shm.h`; then
11486         echo "You have the full shm*(2) library." >&4
11487         val="$define"
11488 else
11489         echo "You don't have the full shm*(2) library." >&4
11490         val="$undef"
11491 fi
11492 set d_shm
11493 eval $setvar
11494
11495 echo " "
11496 : see if we have sigaction
11497 if set sigaction val -f d_sigaction; eval $csym; $val; then
11498         echo 'sigaction() found.' >&4
11499         $cat > try.c <<'EOP'
11500 #include <stdio.h>
11501 #include <sys/types.h>
11502 #include <signal.h>
11503 int main()
11504 {
11505     struct sigaction act, oact;
11506     act.sa_flags = 0;
11507     oact.sa_handler = 0;
11508     /* so that act and oact are used */
11509     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11510 }
11511 EOP
11512         set try
11513         if eval $compile_ok; then
11514                 val="$define"
11515         else
11516                 echo "But you don't seem to have a useable struct sigaction." >&4
11517                 val="$undef"
11518         fi
11519 else
11520         echo 'sigaction NOT found.' >&4
11521         val="$undef"
11522 fi
11523 set d_sigaction; eval $setvar
11524 $rm -f try try$_o try.c
11525
11526 : see if sigprocmask exists
11527 set sigprocmask d_sigprocmask
11528 eval $inlibc
11529
11530 : see if sigsetjmp exists
11531 echo " "
11532 case "$d_sigsetjmp" in
11533 '')
11534         $cat >try.c <<'EOP'
11535 #include <setjmp.h>
11536 sigjmp_buf env;
11537 int set = 1;
11538 int main()
11539 {
11540         if (sigsetjmp(env,1))
11541                 exit(set);
11542         set = 0;
11543         siglongjmp(env, 1);
11544         exit(1);
11545 }
11546 EOP
11547         set try
11548         if eval $compile; then
11549                 if ./try >/dev/null 2>&1; then
11550                         echo "POSIX sigsetjmp found." >&4
11551                         val="$define"
11552                 else
11553                         $cat >&4 <<EOM
11554 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11555 I'll ignore them.
11556 EOM
11557                         val="$undef"
11558                 fi
11559         else
11560                 echo "sigsetjmp not found." >&4
11561                 val="$undef"
11562         fi
11563         ;;
11564 *) val="$d_sigsetjmp"
11565         case "$d_sigsetjmp" in
11566         $define) echo "POSIX sigsetjmp found." >&4;;
11567         $undef) echo "sigsetjmp not found." >&4;;
11568         esac
11569         ;;
11570 esac
11571 set d_sigsetjmp
11572 eval $setvar
11573 $rm -f try.c try
11574
11575 : see if socks5_init exists
11576 set socks5_init d_socks5_init
11577 eval $inlibc
11578
11579 : see if sys/stat.h is available
11580 set sys/stat.h i_sysstat
11581 eval $inhdr
11582
11583
11584 : see if stat knows about block sizes
11585 echo " "
11586 echo "Checking to see if your struct stat has st_blocks field..." >&4
11587 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11588 eval $hasfield
11589
11590
11591 : see if this is a sys/vfs.h system
11592 set sys/vfs.h i_sysvfs
11593 eval $inhdr
11594
11595
11596 : see if this is a sys/statfs.h system
11597 set sys/statfs.h i_sysstatfs
11598 eval $inhdr
11599
11600
11601 echo " "
11602 echo "Checking to see if your system supports struct statfs..." >&4
11603 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
11604 eval $hasstruct
11605 case "$d_statfs_s" in
11606 "$define")      echo "Yes, it does."   ;;
11607 *)              echo "No, it doesn't." ;;
11608 esac
11609
11610
11611
11612 : see if struct statfs knows about f_flags
11613 case "$d_statfs_s" in
11614 define) 
11615         echo " "
11616         echo "Checking to see if your struct statfs has f_flags field..." >&4
11617         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
11618         eval $hasfield
11619         ;;
11620 *)      val="$undef"
11621         set d_statfs_f_flags
11622         eval $setvar
11623         ;;
11624 esac
11625 case "$d_statfs_f_flags" in
11626 "$define")      echo "Yes, it does."   ;;
11627 *)              echo "No, it doesn't." ;;
11628 esac
11629
11630 : see if _ptr and _cnt from stdio act std
11631 echo " "
11632
11633 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11634         echo "(Looks like you have stdio.h from BSD.)"
11635         case "$stdio_ptr" in
11636         '') stdio_ptr='((fp)->_p)'
11637                 ptr_lval=$define
11638                 ;;
11639         *)      ptr_lval=$d_stdio_ptr_lval;;
11640         esac
11641         case "$stdio_cnt" in
11642         '') stdio_cnt='((fp)->_r)'
11643                 cnt_lval=$define
11644                 ;;
11645         *)      cnt_lval=$d_stdio_cnt_lval;;
11646         esac
11647         case "$stdio_base" in
11648         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11649         esac
11650         case "$stdio_bufsiz" in
11651         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11652         esac
11653 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11654         echo "(Looks like you have stdio.h from Linux.)"
11655         case "$stdio_ptr" in
11656         '') stdio_ptr='((fp)->_IO_read_ptr)'
11657                 ptr_lval=$define
11658                 ;;
11659         *)      ptr_lval=$d_stdio_ptr_lval;;
11660         esac
11661         case "$stdio_cnt" in
11662         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11663                 cnt_lval=$undef
11664                 ;;
11665         *)      cnt_lval=$d_stdio_cnt_lval;;
11666         esac
11667         case "$stdio_base" in
11668         '') stdio_base='((fp)->_IO_read_base)';;
11669         esac
11670         case "$stdio_bufsiz" in
11671         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11672         esac
11673 else
11674         case "$stdio_ptr" in
11675         '') stdio_ptr='((fp)->_ptr)'
11676                 ptr_lval=$define
11677                 ;;
11678         *)      ptr_lval=$d_stdio_ptr_lval;;
11679         esac
11680         case "$stdio_cnt" in
11681         '') stdio_cnt='((fp)->_cnt)'
11682                 cnt_lval=$define
11683                 ;;
11684         *)      cnt_lval=$d_stdio_cnt_lval;;
11685         esac
11686         case "$stdio_base" in
11687         '') stdio_base='((fp)->_base)';;
11688         esac
11689         case "$stdio_bufsiz" in
11690         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11691         esac
11692 fi
11693
11694 : test whether _ptr and _cnt really work
11695 echo "Checking how std your stdio is..." >&4
11696 $cat >try.c <<EOP
11697 #include <stdio.h>
11698 #define FILE_ptr(fp)    $stdio_ptr
11699 #define FILE_cnt(fp)    $stdio_cnt
11700 int main() {
11701         FILE *fp = fopen("try.c", "r");
11702         char c = getc(fp);
11703         if (
11704                 18 <= FILE_cnt(fp) &&
11705                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11706         )
11707                 exit(0);
11708         exit(1);
11709 }
11710 EOP
11711 val="$undef"
11712 set try
11713 if eval $compile; then
11714         if ./try; then
11715                 echo "Your stdio acts pretty std."
11716                 val="$define"
11717         else
11718                 echo "Your stdio isn't very std."
11719         fi
11720 else
11721         echo "Your stdio doesn't appear very std."
11722 fi
11723 $rm -f try.c try
11724 set d_stdstdio
11725 eval $setvar
11726
11727 : Can _ptr be used as an lvalue?
11728 case "$d_stdstdio$ptr_lval" in
11729 $define$define) val=$define ;;
11730 *) val=$undef ;;
11731 esac
11732 set d_stdio_ptr_lval
11733 eval $setvar
11734
11735 : Can _cnt be used as an lvalue?
11736 case "$d_stdstdio$cnt_lval" in
11737 $define$define) val=$define ;;
11738 *) val=$undef ;;
11739 esac
11740 set d_stdio_cnt_lval
11741 eval $setvar
11742
11743
11744 : test whether setting _ptr sets _cnt as a side effect
11745 d_stdio_ptr_lval_sets_cnt="$undef"
11746 d_stdio_ptr_lval_nochange_cnt="$undef"
11747 case "$d_stdio_ptr_lval$d_stdstdio" in
11748 $define$define)
11749         echo "Checking to see what happens if we set the stdio ptr..." >&4
11750 $cat >try.c <<EOP
11751 #include <stdio.h>
11752 /* Can we scream? */
11753 /* Eat dust sed :-) */
11754 /* In the buffer space, no one can hear you scream. */
11755 #define FILE_ptr(fp)    $stdio_ptr
11756 #define FILE_cnt(fp)    $stdio_cnt
11757 #include <sys/types.h>
11758 int main() {
11759         FILE *fp = fopen("try.c", "r");
11760         int c;
11761         char *ptr;
11762         size_t cnt;
11763         if (!fp) {
11764             puts("Fail even to read");
11765             exit(1);
11766         }
11767         c = getc(fp); /* Read away the first # */
11768         if (c == EOF) {
11769             puts("Fail even to read");
11770             exit(1);
11771         }
11772         if (!(
11773                 18 <= FILE_cnt(fp) &&
11774                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11775         )) {
11776                 puts("Fail even to read");
11777                 exit (1);
11778         }
11779         ptr = (char*) FILE_ptr(fp);
11780         cnt = (size_t)FILE_cnt(fp);
11781
11782         FILE_ptr(fp) += 42;
11783
11784         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11785                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11786                 exit (1);
11787         }
11788         if (FILE_cnt(fp) <= 20) {
11789                 printf ("Fail (<20 chars to test)");
11790                 exit (1);
11791         }
11792         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11793                 puts("Fail compare");
11794                 exit (1);
11795         }
11796         if (cnt == FILE_cnt(fp)) {
11797                 puts("Pass_unchanged");
11798                 exit (0);
11799         }       
11800         if (FILE_cnt(fp) == (cnt - 42)) {
11801                 puts("Pass_changed");
11802                 exit (0);
11803         }
11804         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11805         return 1;
11806
11807 }
11808 EOP
11809         set try
11810         if eval $compile; then
11811                 case `./try$exe_ext` in
11812                 Pass_changed)
11813                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11814                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11815                 Pass_unchanged)
11816                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11817                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11818                 Fail*)
11819                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11820                 *)
11821                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11822         esac
11823         else
11824                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11825         fi
11826         $rm -f try.c try
11827         ;;
11828 esac
11829
11830 : see if _base is also standard
11831 val="$undef"
11832 case "$d_stdstdio" in
11833 $define)
11834         $cat >try.c <<EOP
11835 #include <stdio.h>
11836 #define FILE_base(fp)   $stdio_base
11837 #define FILE_bufsiz(fp) $stdio_bufsiz
11838 int main() {
11839         FILE *fp = fopen("try.c", "r");
11840         char c = getc(fp);
11841         if (
11842                 19 <= FILE_bufsiz(fp) &&
11843                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11844         )
11845                 exit(0);
11846         exit(1);
11847 }
11848 EOP
11849         set try
11850         if eval $compile; then
11851                 if ./try; then
11852                         echo "And its _base field acts std."
11853                         val="$define"
11854                 else
11855                         echo "But its _base field isn't std."
11856                 fi
11857         else
11858                 echo "However, it seems to be lacking the _base field."
11859         fi
11860         $rm -f try.c try
11861         ;;
11862 esac
11863 set d_stdiobase
11864 eval $setvar
11865
11866 $cat >&4 <<EOM
11867 Checking how to access stdio streams by file descriptor number...
11868 EOM
11869 case "$stdio_stream_array" in
11870 '')     $cat >try.c <<EOCP
11871 #include <stdio.h>
11872 int main() {
11873   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11874     printf("yes\n");
11875 }
11876 EOCP
11877         for s in _iob __iob __sF
11878         do
11879                 set try -DSTDIO_STREAM_ARRAY=$s
11880                 if eval $compile; then
11881                         case "`./try$exe_ext`" in
11882                         yes)    stdio_stream_array=$s; break ;;
11883                         esac
11884                 fi
11885         done
11886         $rm -f try.* try$exe_ext
11887 esac
11888 case "$stdio_stream_array" in
11889 '')     $cat >&4 <<EOM
11890 I can't figure out how to access stdio streams by file descriptor number.
11891 EOM
11892         d_stdio_stream_array="$undef"
11893         ;;
11894 *)      $cat >&4 <<EOM
11895 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11896 EOM
11897         d_stdio_stream_array="$define"
11898         ;;
11899 esac
11900
11901 : see if strcoll exists
11902 set strcoll d_strcoll
11903 eval $inlibc
11904
11905 : check for structure copying
11906 echo " "
11907 echo "Checking to see if your C compiler can copy structs..." >&4
11908 $cat >try.c <<'EOCP'
11909 int main()
11910 {
11911         struct blurfl {
11912                 int dyick;
11913         } foo, bar;
11914
11915         foo = bar;
11916 }
11917 EOCP
11918 if $cc -c try.c >/dev/null 2>&1 ; then
11919         val="$define"
11920         echo "Yup, it can."
11921 else
11922         val="$undef"
11923         echo "Nope, it can't."
11924 fi
11925 set d_strctcpy
11926 eval $setvar
11927 $rm -f try.*
11928
11929 : see if strerror and/or sys_errlist[] exist
11930 echo " "
11931 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11932     if set strerror val -f d_strerror; eval $csym; $val; then
11933                 echo 'strerror() found.' >&4
11934                 d_strerror="$define"
11935                 d_strerrm='strerror(e)'
11936                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11937                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11938                         d_syserrlst="$define"
11939                 else
11940                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11941                         d_syserrlst="$undef"
11942                 fi
11943     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11944                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11945                 echo 'strerror() found in string header.' >&4
11946                 d_strerror="$define"
11947                 d_strerrm='strerror(e)'
11948                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11949                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11950                                 d_syserrlst="$define"
11951                 else
11952                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11953                         d_syserrlst="$undef"
11954                 fi
11955     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11956                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11957                 d_strerror="$undef"
11958                 d_syserrlst="$define"
11959                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11960     else
11961                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11962                 d_strerror="$undef"
11963                 d_syserrlst="$undef"
11964                 d_strerrm='"unknown"'
11965     fi
11966 fi
11967
11968 : see if strtod exists
11969 set strtod d_strtod
11970 eval $inlibc
11971
11972 : see if strtol exists
11973 set strtol d_strtol
11974 eval $inlibc
11975
11976 : see if strtold exists
11977 set strtold d_strtold
11978 eval $inlibc
11979
11980 : see if strtoll exists
11981 set strtoll d_strtoll
11982 eval $inlibc
11983
11984 case "$d_longlong-$d_strtoll" in
11985 "$define-$define")
11986         $cat <<EOM
11987 Checking whether your strtoll() works okay...
11988 EOM
11989         $cat >try.c <<'EOCP'
11990 #include <errno.h>
11991 #ifdef __hpux
11992 #define strtoll __strtoll
11993 #endif
11994 #ifdef __EMX__
11995 #define strtoll _strtoll
11996 #endif
11997 #include <stdio.h>
11998 extern long long int strtoll(char *s, char **, int); 
11999 static int bad = 0;
12000 int check(char *s, long long ell, int een) {
12001         long long gll;
12002         errno = 0;
12003         gll = strtoll(s, 0, 10);
12004         if (!((gll == ell) && (errno == een)))
12005                 bad++;
12006 }
12007 int main() {
12008         check(" 1",                                      1LL, 0);
12009         check(" 0",                                      0LL, 0);
12010         check("-1",                                     -1LL, 0);
12011         check("-9223372036854775808", -9223372036854775808LL, 0);
12012         check("-9223372036854775808", -9223372036854775808LL, 0);
12013         check(" 9223372036854775807",  9223372036854775807LL, 0);
12014         check("-9223372036854775808", -9223372036854775808LL, 0);
12015         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12016         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12017         if (!bad)
12018                 printf("ok\n");
12019 }
12020 EOCP
12021         set try
12022         if eval $compile; then
12023                 yyy=`./try`
12024                 case "$yyy" in
12025                 ok) echo "Your strtoll() seems to be working okay." ;;
12026                 *) cat <<EOM >&4
12027 Your strtoll() doesn't seem to be working okay.
12028 EOM
12029                    d_strtoll="$undef"
12030                    ;;
12031                 esac
12032         else
12033                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12034                 d_strtoll="$undef"
12035         fi
12036         ;;
12037 esac
12038
12039 : see if strtoq exists
12040 set strtoq d_strtoq
12041 eval $inlibc
12042
12043 : see if strtoul exists
12044 set strtoul d_strtoul
12045 eval $inlibc
12046
12047 case "$d_strtoul" in
12048 "$define")
12049         $cat <<EOM
12050 Checking whether your strtoul() works okay...
12051 EOM
12052         $cat >try.c <<'EOCP'
12053 #include <errno.h>
12054 #include <stdio.h>
12055 extern unsigned long int strtoul(char *s, char **, int); 
12056 static int bad = 0;
12057 void check(char *s, unsigned long eul, int een) {
12058         unsigned long gul;
12059         errno = 0;
12060         gul = strtoul(s, 0, 10);
12061         if (!((gul == eul) && (errno == een)))
12062                 bad++;
12063 }
12064 int main() {
12065         check(" 1", 1L, 0);
12066         check(" 0", 0L, 0);
12067 EOCP
12068         case "$longsize" in
12069         8)
12070             $cat >>try.c <<'EOCP'
12071         check("18446744073709551615", 18446744073709551615UL, 0);
12072         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12073 #if 0 /* strtoul() for /^-/ strings is undefined. */
12074         check("-1", 18446744073709551615UL, 0);
12075         check("-18446744073709551614", 2, 0);
12076         check("-18446744073709551615", 1, 0);
12077         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12078         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12079 #endif
12080 EOCP
12081                 ;;
12082         4)
12083                     $cat >>try.c <<'EOCP'
12084         check("4294967295", 4294967295UL, 0);
12085         check("4294967296", 4294967295UL, ERANGE);
12086 #if 0 /* strtoul() for /^-/ strings is undefined. */
12087         check("-1", 4294967295UL, 0);
12088         check("-4294967294", 2, 0);
12089         check("-4294967295", 1, 0);
12090         check("-4294967296", 4294967295UL, ERANGE);
12091         check("-4294967297", 4294967295UL, ERANGE);
12092 #endif
12093 EOCP
12094                 ;;
12095         *)
12096 : Should we write these tests to be more portable by sprintf-ing
12097 : ~0 and then manipulating that char string as input for strtol?
12098                 ;;
12099         esac
12100         $cat >>try.c <<'EOCP'
12101         if (!bad)
12102                 printf("ok\n");
12103         return 0;
12104 }
12105 EOCP
12106         set try
12107         if eval $compile; then
12108                 case "`./try`" in
12109                 ok) echo "Your strtoul() seems to be working okay." ;;
12110                 *) cat <<EOM >&4
12111 Your strtoul() doesn't seem to be working okay.
12112 EOM
12113                    d_strtoul="$undef"
12114                    ;;
12115                 esac
12116         fi
12117         ;;
12118 esac
12119
12120 : see if strtoull exists
12121 set strtoull d_strtoull
12122 eval $inlibc
12123
12124 case "$d_longlong-$d_strtoull" in
12125 "$define-$define")
12126         $cat <<EOM
12127 Checking whether your strtoull() works okay...
12128 EOM
12129         $cat >try.c <<'EOCP'
12130 #include <errno.h>
12131 #ifdef __hpux
12132 #define strtoull __strtoull
12133 #endif
12134 #include <stdio.h>
12135 extern unsigned long long int strtoull(char *s, char **, int); 
12136 static int bad = 0;
12137 int check(char *s, long long eull, int een) {
12138         long long gull;
12139         errno = 0;
12140         gull = strtoull(s, 0, 10);
12141         if (!((gull == eull) && (errno == een)))
12142                 bad++;
12143 }
12144 int main() {
12145         check(" 1",                                        1LL, 0);
12146         check(" 0",                                        0LL, 0);
12147         check("18446744073709551615",  18446744073709551615ULL, 0);
12148         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12149 #if 0 /* strtoull() for /^-/ strings is undefined. */
12150         check("-1",                    18446744073709551615ULL, 0);
12151         check("-18446744073709551614",                     2LL, 0);
12152         check("-18446744073709551615",                     1LL, 0);
12153         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12154         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12155 #endif
12156         if (!bad)
12157                 printf("ok\n");
12158 }
12159 EOCP
12160         set try
12161         if eval $compile; then
12162                 case "`./try`" in
12163                 ok) echo "Your strtoull() seems to be working okay." ;;
12164                 *) cat <<EOM >&4
12165 Your strtoull() doesn't seem to be working okay.
12166 EOM
12167                    d_strtoull="$undef"
12168                    ;;
12169                 esac
12170         fi
12171         ;;
12172 esac
12173
12174 : see if strtouq exists
12175 set strtouq d_strtouq
12176 eval $inlibc
12177
12178 case "$d_strtouq" in
12179 "$define")
12180         $cat <<EOM
12181 Checking whether your strtouq() works okay...
12182 EOM
12183         $cat >try.c <<'EOCP'
12184 #include <errno.h>
12185 #include <stdio.h>
12186 extern unsigned long long int strtouq(char *s, char **, int); 
12187 static int bad = 0;
12188 void check(char *s, unsigned long long eull, int een) {
12189         unsigned long long gull;
12190         errno = 0;
12191         gull = strtouq(s, 0, 10);
12192         if (!((gull == eull) && (errno == een)))
12193                 bad++;
12194 }
12195 int main() {
12196         check(" 1",                                        1LL, 0);
12197         check(" 0",                                        0LL, 0);
12198         check("18446744073709551615",  18446744073709551615ULL, 0);
12199         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12200 #if 0 /* strtouq() for /^-/ strings is undefined. */
12201         check("-1",                    18446744073709551615ULL, 0);
12202         check("-18446744073709551614",                     2LL, 0);
12203         check("-18446744073709551615",                     1LL, 0);
12204         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12205         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12206 #endif
12207         if (!bad)
12208                 printf("ok\n");
12209         return 0;
12210 }
12211 EOCP
12212         set try
12213         if eval $compile; then
12214                 case "`./try`" in
12215                 ok) echo "Your strtouq() seems to be working okay." ;;
12216                 *) cat <<EOM >&4
12217 Your strtouq() doesn't seem to be working okay.
12218 EOM
12219                    d_strtouq="$undef"
12220                    ;;
12221                 esac
12222         fi
12223         ;;
12224 esac
12225
12226 : see if strxfrm exists
12227 set strxfrm d_strxfrm
12228 eval $inlibc
12229
12230 : see if symlink exists
12231 set symlink d_symlink
12232 eval $inlibc
12233
12234 : see if syscall exists
12235 set syscall d_syscall
12236 eval $inlibc
12237
12238 : see if sysconf exists
12239 set sysconf d_sysconf
12240 eval $inlibc
12241
12242 : see if system exists
12243 set system d_system
12244 eval $inlibc
12245
12246 : see if tcgetpgrp exists
12247 set tcgetpgrp d_tcgetpgrp
12248 eval $inlibc
12249
12250 : see if tcsetpgrp exists
12251 set tcsetpgrp d_tcsetpgrp
12252 eval $inlibc
12253
12254 : see if prototype for telldir is available
12255 echo " "
12256 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12257 eval $hasproto
12258
12259 : see if this is a sys/times.h system
12260 set sys/times.h i_systimes
12261 eval $inhdr
12262
12263 : see if times exists
12264 echo " "
12265 if set times val -f d_times; eval $csym; $val; then
12266         echo 'times() found.' >&4
12267         d_times="$define"
12268         inc=''
12269         case "$i_systimes" in
12270         "$define") inc='sys/times.h';;
12271         esac
12272         rp="What is the type returned by times() on this system?"
12273         set clock_t clocktype long stdio.h sys/types.h $inc
12274         eval $typedef_ask
12275 else
12276         echo 'times() NOT found, hope that will do.' >&4
12277         d_times="$undef"
12278         clocktype='int'
12279 fi
12280
12281 : see if truncate exists
12282 set truncate d_truncate
12283 eval $inlibc
12284
12285 : see if tzname[] exists
12286 echo " "
12287 if set tzname val -a d_tzname; eval $csym; $val; then
12288         val="$define"
12289         echo 'tzname[] found.' >&4
12290 else
12291         val="$undef"
12292         echo 'tzname[] NOT found.' >&4
12293 fi
12294 set d_tzname
12295 eval $setvar
12296
12297 : see if umask exists
12298 set umask d_umask
12299 eval $inlibc
12300
12301 : see if ustat exists
12302 set ustat d_ustat
12303 eval $inlibc
12304
12305 : backward compatibility for d_hvfork
12306 if test X$d_hvfork != X; then
12307         d_vfork="$d_hvfork"
12308         d_hvfork=''
12309 fi
12310 : see if there is a vfork
12311 val=''
12312 set vfork val
12313 eval $inlibc
12314
12315 : Ok, but do we want to use it. vfork is reportedly unreliable in 
12316 : perl on Solaris 2.x, and probably elsewhere.
12317 case "$val" in
12318 $define)
12319         echo " "
12320         case "$usevfork" in
12321         false) dflt='n';;
12322         *) dflt='y';;
12323         esac
12324         cat <<'EOM'
12325  
12326 Perl can only use a vfork() that doesn't suffer from strict
12327 restrictions on calling functions or modifying global data in
12328 the child.  For example, glibc-2.1 contains such a vfork()
12329 that is unsuitable.  If your system provides a proper fork()
12330 call, chances are that you do NOT want perl to use vfork().
12331
12332 EOM
12333         rp="Do you still want to use vfork()?"
12334         . ./myread
12335         case "$ans" in
12336         y|Y) ;;
12337         *)
12338                 echo "Ok, we won't use vfork()."
12339                 val="$undef"
12340                 ;;
12341         esac
12342         ;;
12343 esac
12344 set d_vfork
12345 eval $setvar
12346 case "$d_vfork" in
12347 $define) usevfork='true';;
12348 *) usevfork='false';;
12349 esac
12350
12351 : see if this is an sysdir system
12352 set sys/dir.h i_sysdir
12353 eval $inhdr
12354
12355 : see if this is an sysndir system
12356 set sys/ndir.h i_sysndir
12357 eval $inhdr
12358
12359 : see if closedir exists
12360 set closedir d_closedir
12361 eval $inlibc
12362
12363 case "$d_closedir" in
12364 "$define")
12365         echo " "
12366         echo "Checking whether closedir() returns a status..." >&4
12367         cat > closedir.c <<EOM
12368 #$i_dirent I_DIRENT             /**/
12369 #$i_sysdir I_SYS_DIR            /**/
12370 #$i_sysndir I_SYS_NDIR          /**/
12371 #$i_systypes I_SYS_TYPES        /**/
12372
12373 #if defined(I_SYS_TYPES)
12374 #include <sys/types.h>
12375 #endif
12376 #if defined(I_DIRENT)
12377 #include <dirent.h>
12378 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12379 #include <sys/dir.h>
12380 #endif
12381 #else
12382 #ifdef I_SYS_NDIR
12383 #include <sys/ndir.h>
12384 #else
12385 #ifdef I_SYS_DIR
12386 #ifdef hp9000s500
12387 #include <ndir.h>       /* may be wrong in the future */
12388 #else
12389 #include <sys/dir.h>
12390 #endif
12391 #endif
12392 #endif
12393 #endif 
12394 int main() { return closedir(opendir(".")); }
12395 EOM
12396         set closedir
12397         if eval $compile_ok; then
12398                 if ./closedir > /dev/null 2>&1 ; then
12399                         echo "Yes, it does."
12400                         val="$undef"
12401                 else
12402                         echo "No, it doesn't."
12403                         val="$define"
12404                 fi
12405         else
12406                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12407                 val="$define"
12408         fi
12409         ;;
12410 *)
12411         val="$undef";
12412         ;;
12413 esac
12414 set d_void_closedir
12415 eval $setvar
12416 $rm -f closedir*
12417 : see if there is a wait4
12418 set wait4 d_wait4
12419 eval $inlibc
12420
12421 : see if waitpid exists
12422 set waitpid d_waitpid
12423 eval $inlibc
12424
12425 : see if wcstombs exists
12426 set wcstombs d_wcstombs
12427 eval $inlibc
12428
12429 : see if wctomb exists
12430 set wctomb d_wctomb
12431 eval $inlibc
12432
12433 : preserve RCS keywords in files with variable substitution, grrr
12434 Date='$Date'
12435 Id='$Id'
12436 Log='$Log'
12437 RCSfile='$RCSfile'
12438 Revision='$Revision'
12439
12440 case "$crosscompile" in
12441 ''|[nN]*) crosscompile="$undef" ;;
12442 esac
12443
12444 case "$osname" in
12445 next|rhapsody|darwin) multiarch="$define" ;;
12446 esac
12447 case "$multiarch" in
12448 ''|[nN]*) multiarch="$undef" ;;
12449 esac
12450
12451 : check for alignment requirements
12452 echo " "
12453 case "$crosscompile$multiarch" in
12454 *$define*)
12455         $cat <<EOM
12456 You seem to be either cross-compiling or doing a multiarchitecture build,
12457 skipping the memory alignment check.
12458
12459 EOM
12460         case "$alignbytes" in
12461         '') alignbytes=8 ;;
12462         esac
12463         ;;
12464 *)
12465         case "$alignbytes" in
12466         '') echo "Checking alignment constraints..." >&4
12467                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12468                         $cat >try.c <<'EOCP'
12469 typedef long double NV;
12470 EOCP
12471                 else
12472                         $cat >try.c <<'EOCP'
12473 typedef double NV;
12474 EOCP
12475                 fi
12476                 $cat >>try.c <<'EOCP'
12477 #include <stdio.h>
12478 struct foobar {
12479         char foo;
12480         NV bar;
12481 } try_algn;
12482 int main()
12483 {
12484     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12485     return(0);
12486 }
12487 EOCP
12488                 set try
12489                 if eval $compile_ok; then
12490                         dflt=`./try`
12491                 else
12492                         dflt='8'
12493                         echo "(I can't seem to compile the test program...)"
12494                 fi
12495                 ;;
12496         *) dflt="$alignbytes"
12497                 ;;
12498         esac
12499         rp="Doubles must be aligned on a how-many-byte boundary?"
12500         . ./myread
12501         alignbytes="$ans"
12502         $rm -f try.c try
12503         ;;
12504 esac
12505
12506
12507 : set the base revision
12508 baserev=5.0
12509
12510 : check for ordering of bytes in a long
12511 echo " "
12512 case "$crosscompile$multiarch" in
12513 *$define*)
12514         $cat <<EOM
12515 You seem to be either cross-compiling or doing a multiarchitecture build,
12516 skipping the byteorder check.
12517
12518 EOM
12519         byteorder='0xffff'
12520         ;;
12521 *)
12522         case "$byteorder" in
12523         '')
12524                 $cat <<'EOM'
12525 In the following, larger digits indicate more significance.  A big-endian
12526 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12527 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12528 machines may have weird orders like 3412.  A Cray will report 87654321,
12529 an Alpha will report 12345678. If the test program works the default is
12530 probably right.
12531 I'm now running the test program...
12532 EOM
12533                 $cat >try.c <<'EOCP'
12534 #include <stdio.h>
12535 int main()
12536 {
12537         int i;
12538         union {
12539                 unsigned long l;
12540                 char c[sizeof(long)];
12541         } u;
12542
12543         if (sizeof(long) > 4)
12544                 u.l = (0x08070605L << 32) | 0x04030201L;
12545         else
12546                 u.l = 0x04030201L;
12547         for (i = 0; i < sizeof(long); i++)
12548                 printf("%c", u.c[i]+'0');
12549         printf("\n");
12550         exit(0);
12551 }
12552 EOCP
12553                 xxx_prompt=y
12554                 set try
12555                 if eval $compile && ./try > /dev/null; then
12556                         dflt=`./try`
12557                         case "$dflt" in
12558                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12559                                 echo "(The test program ran ok.)"
12560                                 echo "byteorder=$dflt"
12561                                 xxx_prompt=n
12562                         ;;
12563                         ????|????????) echo "(The test program ran ok.)" ;;
12564                         *) echo "(The test program didn't run right for some reason.)" ;;
12565                         esac
12566                 else
12567                         dflt='4321'
12568                         cat <<'EOM'
12569 (I can't seem to compile the test program.  Guessing big-endian...)
12570 EOM
12571                 fi
12572                 case "$xxx_prompt" in
12573                 y)
12574                         rp="What is the order of bytes in a long?"
12575                         . ./myread
12576                         byteorder="$ans"
12577                         ;;
12578                 *)      byteorder=$dflt
12579                         ;;
12580                 esac
12581                 ;;
12582         esac
12583         $rm -f try.c try
12584         ;;
12585 esac
12586
12587
12588 : how do we catenate cpp tokens here?
12589 echo " "
12590 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12591 $cat >cpp_stuff.c <<'EOCP'
12592 #define RCAT(a,b)a/**/b
12593 #define ACAT(a,b)a ## b
12594 RCAT(Rei,ser)
12595 ACAT(Cir,cus)
12596 EOCP
12597 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12598 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12599         echo "Oh!  Smells like ANSI's been here." >&4
12600         echo "We can catify or stringify, separately or together!"
12601         cpp_stuff=42
12602 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12603         echo "Ah, yes!  The good old days!" >&4
12604         echo "However, in the good old days we don't know how to stringify and"
12605         echo "catify at the same time."
12606         cpp_stuff=1
12607 else
12608         $cat >&4 <<EOM
12609 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12610 to have to edit the values of CAT[2-5] in config.h...
12611 EOM
12612         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12613 fi
12614 $rm -f cpp_stuff.*
12615
12616 : see if this is a db.h system
12617 set db.h i_db
12618 eval $inhdr
12619
12620 case "$i_db" in
12621 $define)
12622         : Check db version.
12623         echo " "
12624         echo "Checking Berkeley DB version ..." >&4
12625         $cat >try.c <<EOCP
12626 #$d_const HASCONST
12627 #ifndef HASCONST
12628 #define const
12629 #endif
12630 #include <sys/types.h>
12631 #include <stdio.h>
12632 #include <db.h>
12633 int main()
12634 {
12635 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12636     int Major, Minor, Patch ;
12637     unsigned long Version ;
12638     (void)db_version(&Major, &Minor, &Patch) ;
12639     printf("You have Berkeley DB Version 2 or greater\n");
12640
12641     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12642                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12643     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12644                 Major, Minor, Patch) ;
12645
12646     /* check that db.h & libdb are compatible */
12647     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12648         printf("db.h and libdb are incompatible\n") ;
12649         exit(3);        
12650     }
12651
12652     printf("db.h and libdb are compatible\n") ;
12653
12654     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12655                 + DB_VERSION_PATCH ;
12656
12657     /* needs to be >= 2.3.4 */
12658     if (Version < 2003004) {
12659     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12660         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12661         exit(2);        
12662     }
12663
12664     exit(0);
12665 #else
12666 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12667     printf("You have Berkeley DB Version 1\n");
12668     exit(0);    /* DB version < 2: the coast is clear. */
12669 #else
12670     exit(1);    /* <db.h> not Berkeley DB? */
12671 #endif
12672 #endif
12673 }
12674 EOCP
12675         set try
12676         if eval $compile_ok && ./try; then
12677                 echo 'Looks OK.' >&4
12678         else
12679                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12680                 i_db=$undef
12681                 case " $libs " in
12682                 *"-ldb "*)
12683                         : Remove db from list of libraries to use
12684                         echo "Removing unusable -ldb from library list" >&4
12685                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12686                         shift
12687                         libs="$*"
12688                         echo "libs = $libs" >&4
12689                         ;;
12690                 esac
12691         fi
12692         $rm -f try.*
12693         ;;
12694 esac
12695
12696 case "$i_db" in
12697 define)
12698         : Check the return type needed for hash 
12699         echo " "
12700         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12701         $cat >try.c <<EOCP
12702 #$d_const HASCONST
12703 #ifndef HASCONST
12704 #define const
12705 #endif
12706 #include <sys/types.h>
12707 #include <db.h>
12708
12709 #ifndef DB_VERSION_MAJOR
12710 u_int32_t hash_cb (ptr, size)
12711 const void *ptr;
12712 size_t size;
12713 {
12714 }
12715 HASHINFO info;
12716 int main()
12717 {
12718         info.hash = hash_cb;
12719 }
12720 #endif
12721 EOCP
12722         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12723                 if $contains warning try.out >>/dev/null 2>&1 ; then
12724                         db_hashtype='int'
12725                 else
12726                         db_hashtype='u_int32_t'
12727                 fi
12728         else
12729                 : XXX Maybe we should just give up here.
12730                 db_hashtype=u_int32_t
12731                 $cat try.out >&4
12732                 echo "Help:  I can't seem to compile the db test program." >&4
12733                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12734         fi
12735         $rm -f try.*
12736         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12737         ;;
12738 *)      db_hashtype=u_int32_t
12739         ;;
12740 esac
12741 case "$i_db" in
12742 define)
12743         : Check the return type needed for prefix 
12744         echo " "
12745         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12746         cat >try.c <<EOCP
12747 #$d_const HASCONST
12748 #ifndef HASCONST
12749 #define const
12750 #endif
12751 #include <sys/types.h>
12752 #include <db.h>
12753
12754 #ifndef DB_VERSION_MAJOR
12755 size_t prefix_cb (key1, key2)
12756 const DBT *key1;
12757 const DBT *key2;
12758 {
12759 }
12760 BTREEINFO info;
12761 int main()
12762 {
12763         info.prefix = prefix_cb;
12764 }
12765 #endif
12766 EOCP
12767         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12768                 if $contains warning try.out >>/dev/null 2>&1 ; then
12769                         db_prefixtype='int'
12770                 else
12771                         db_prefixtype='size_t'
12772                 fi
12773         else
12774                 db_prefixtype='size_t'
12775                 : XXX Maybe we should just give up here.
12776                 $cat try.out >&4
12777                 echo "Help:  I can't seem to compile the db test program." >&4
12778                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12779         fi
12780         $rm -f try.*
12781         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12782         ;;
12783 *)      db_prefixtype='size_t'
12784         ;;
12785 esac
12786
12787 : check for void type
12788 echo " "
12789 echo "Checking to see how well your C compiler groks the void type..." >&4
12790 case "$voidflags" in
12791 '')
12792         $cat >try.c <<'EOCP'
12793 #if TRY & 1
12794 void sub() {
12795 #else
12796 sub() {
12797 #endif
12798         extern void moo();      /* function returning void */
12799         void (*goo)();          /* ptr to func returning void */
12800 #if TRY & 8
12801         void *hue;              /* generic ptr */
12802 #endif
12803 #if TRY & 2
12804         void (*foo[10])();
12805 #endif
12806
12807 #if TRY & 4
12808         if(goo == moo) {
12809                 exit(0);
12810         }
12811 #endif
12812         exit(0);
12813 }
12814 int main() { sub(); }
12815 EOCP
12816         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12817                 voidflags=$defvoidused
12818         echo "Good.  It appears to support void to the level $package wants.">&4
12819                 if $contains warning .out >/dev/null 2>&1; then
12820                         echo "However, you might get some warnings that look like this:"
12821                         $cat .out
12822                 fi
12823         else
12824 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12825                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12826                         echo "It supports 1..."
12827                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12828                                 echo "It also supports 2..."
12829                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12830                                         voidflags=7
12831                                         echo "And it supports 4 but not 8 definitely."
12832                                 else
12833                                         echo "It doesn't support 4..."
12834                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12835                                                 voidflags=11
12836                                                 echo "But it supports 8."
12837                                         else
12838                                                 voidflags=3
12839                                                 echo "Neither does it support 8."
12840                                         fi
12841                                 fi
12842                         else
12843                                 echo "It does not support 2..."
12844                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12845                                         voidflags=13
12846                                         echo "But it supports 4 and 8."
12847                                 else
12848                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12849                                                 voidflags=5
12850                                                 echo "And it supports 4 but has not heard about 8."
12851                                         else
12852                                                 echo "However it supports 8 but not 4."
12853                                         fi
12854                                 fi
12855                         fi
12856                 else
12857                         echo "There is no support at all for void."
12858                         voidflags=0
12859                 fi
12860         fi
12861 esac
12862 case "$voidflags" in
12863 "$defvoidused") ;;
12864 *)      $cat >&4 <<'EOM'
12865   Support flag bits are:
12866     1: basic void declarations.
12867     2: arrays of pointers to functions returning void.
12868     4: operations between pointers to and addresses of void functions.
12869     8: generic void pointers.
12870 EOM
12871         dflt="$voidflags";
12872         rp="Your void support flags add up to what?"
12873         . ./myread
12874         voidflags="$ans"
12875         ;;
12876 esac
12877 $rm -f try.* .out
12878
12879
12880 : How can we generate normalized random numbers ?
12881 echo " "
12882 echo "Looking for a random number function..." >&4
12883 case "$randfunc" in
12884 '')
12885         if set drand48 val -f; eval $csym; $val; then
12886                 dflt="drand48"
12887                 echo "Good, found drand48()." >&4
12888         elif set random val -f; eval $csym; $val; then
12889                 dflt="random"
12890                 echo "OK, found random()." >&4
12891         else
12892                 dflt="rand"
12893                 echo "Yick, looks like I have to use rand()." >&4
12894         fi
12895         echo " "
12896         ;;
12897 *)
12898         dflt="$randfunc"
12899         ;;
12900 esac
12901 cont=true
12902
12903 case "$ccflags" in
12904 *-Dmy_rand=*|*-Dmy_srand=*)
12905         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12906         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12907         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12908         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12909         ;;
12910 esac
12911
12912 while $test "$cont"; do
12913         rp="Use which function to generate random numbers?"
12914         . ./myread
12915         if $test "$ans" = "$dflt"; then
12916                 : null
12917         else
12918                 randbits=''
12919         fi
12920         randfunc="$ans"
12921         if set $ans val -f; eval $csym; $val; then
12922                 cont=''
12923         else
12924                 dflt=y
12925                 rp="I cannot find function $ans. Use that name anyway?"
12926                 . ./myread
12927                 dflt=rand
12928                 case "$ans" in
12929                         [yY]*) cont='';;
12930                 esac
12931         fi
12932         case "$cont" in
12933         '')
12934                 case "$randfunc" in
12935                 drand48)
12936                         drand01="drand48()"
12937                         seedfunc="srand48"
12938                         randbits=48
12939                         randseedtype=long
12940                         ;;
12941                 rand|random)
12942                         case "$randbits" in
12943                         '')
12944 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12945                                 $cat >try.c <<EOCP
12946 #$i_unistd I_UNISTD
12947 #$i_stdlib I_STDLIB
12948 #include <stdio.h>
12949 #ifdef I_UNISTD
12950 #  include <unistd.h>
12951 #endif
12952 #ifdef I_STDLIB
12953 #  include <stdlib.h>
12954 #endif
12955 int main()
12956 {
12957         register int i;
12958         register unsigned long tmp;
12959         register unsigned long max = 0L;
12960
12961         for (i = 1000; i; i--) {
12962                 tmp = (unsigned long) $randfunc();
12963                 if (tmp > max) max = tmp;
12964         }
12965         for (i = 0; max; i++)
12966                 max /= 2;
12967         printf("%d\n",i);
12968 }
12969 EOCP
12970                                 set try
12971                                 if eval $compile_ok; then
12972                                         dflt=`try`
12973                                 else
12974                                         dflt='?'
12975                                         echo "(I can't seem to compile the test program...)"
12976                                 fi
12977                                 ;;
12978                         *)
12979                                 dflt="$randbits"
12980                                 ;;
12981                         esac
12982                         rp="How many bits does your $randfunc() function produce?"
12983                         . ./myread
12984                         randbits="$ans"
12985                         $rm -f try.c try
12986                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12987                         seedfunc="s$randfunc"
12988                         randseedtype=unsigned
12989                         ;;
12990                 *)
12991                         dflt="31"
12992                         rp="How many bits does your $randfunc() function produce?"
12993                         . ./myread
12994                         randbits="$ans"
12995                         seedfunc="s$randfunc"
12996                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12997                         if set $seedfunc val -f; eval $csym; $val; then
12998                                 echo "(Using $seedfunc() to seed random generator)"
12999                         else
13000                                 echo "(Warning: no $seedfunc() to seed random generator)"
13001                                 seedfunc=rand
13002                         fi
13003                         randseedtype=unsigned
13004                         ;;
13005                 esac
13006                 ;;
13007         esac
13008 done
13009
13010 echo " "
13011 echo "Determining whether or not we are on an EBCDIC system..." >&4
13012 $cat >tebcdic.c <<'EOM'
13013 int main()
13014 {
13015   if ('M'==0xd4) return 0;
13016   return 1;
13017 }
13018 EOM
13019
13020 val=$undef
13021 set tebcdic
13022 if eval $compile_ok; then
13023         if ./tebcdic; then
13024                 echo "You seem to speak EBCDIC." >&4
13025                 val="$define"
13026         else
13027                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13028         fi
13029 else
13030         echo "I'm unable to compile the test program." >&4
13031         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13032 fi
13033 $rm -f tebcdic.c tebcdic
13034 set ebcdic
13035 eval $setvar
13036
13037 echo " "
13038 $cat >&4 <<EOM
13039 Checking how to flush all pending stdio output...
13040 EOM
13041 # I only know how to find the first 32 possibly open files on SunOS.
13042 # See also hints/sunos_4_1.sh and util.c  --AD
13043 case "$osname" in
13044 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13045 esac
13046 $cat >>try.c <<EOCP
13047 #include <stdio.h>
13048 #$i_unistd I_UNISTD
13049 #ifdef I_UNISTD
13050 # include <unistd.h>
13051 #endif
13052 #$d_sysconf HAS_SYSCONF
13053 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13054 #ifdef HAS_STDIO_STREAM_ARRAY
13055 # define STDIO_STREAM_ARRAY $stdio_stream_array
13056 #endif
13057 int main() {
13058   FILE* p = fopen("try.out", "w");
13059 #ifdef TRY_FPUTC
13060   fputc('x', p);
13061 #else
13062 # ifdef TRY_FPRINTF
13063   fprintf(p, "x");
13064 # endif
13065 #endif
13066 #ifdef TRY_FFLUSH_NULL
13067   fflush(NULL);
13068 #endif
13069 #ifdef TRY_FFLUSH_ALL
13070   {
13071     long open_max = -1;
13072 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13073     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13074 # else
13075 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13076     open_max = sysconf(_SC_OPEN_MAX);
13077 #  else
13078 #   ifdef FOPEN_MAX
13079     open_max = FOPEN_MAX;
13080 #   else
13081 #    ifdef OPEN_MAX
13082     open_max = OPEN_MAX;
13083 #    else
13084 #     ifdef _NFILE
13085     open_max = _NFILE;
13086 #     endif
13087 #    endif
13088 #   endif
13089 #  endif
13090 # endif 
13091 # ifdef HAS_STDIO_STREAM_ARRAY
13092     if (open_max > 0) {
13093       long i;
13094       for (i = 0; i < open_max; i++)
13095             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13096                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13097                 STDIO_STREAM_ARRAY[i]._flag)
13098                 fflush(&STDIO_STREAM_ARRAY[i]);
13099     }   
13100   }
13101 # endif
13102 #endif
13103   _exit(42);
13104 }
13105 EOCP
13106 : first we have to find out how _not_ to flush
13107 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13108     output=''
13109     set try -DTRY_FPUTC
13110     if eval $compile; then
13111             $rm -f try.out
13112             ./try$exe_ext 2>/dev/null
13113             if $test ! -s try.out -a "X$?" = X42; then
13114                 output=-DTRY_FPUTC
13115             fi
13116     fi
13117     case "$output" in
13118     '')
13119             set try -DTRY_FPRINTF
13120             $rm -f try.out
13121             if eval $compile; then
13122                     $rm -f try.out
13123                     ./try$exe_ext 2>/dev/null
13124                     if $test ! -s try.out -a "X$?" = X42; then
13125                         output=-DTRY_FPRINTF
13126                     fi
13127             fi
13128         ;;
13129     esac
13130 fi
13131 : check for fflush NULL behaviour
13132 case "$fflushNULL" in
13133 '')     set try -DTRY_FFLUSH_NULL $output
13134         if eval $compile; then
13135                 $rm -f try.out
13136                 ./try$exe_ext 2>/dev/null
13137                 code="$?"
13138                 if $test -s try.out -a "X$code" = X42; then
13139                         fflushNULL="`$cat try.out`"
13140                 else
13141                         if $test "X$code" != X42; then
13142                                 $cat >&4 <<EOM
13143 (If this test failed, don't worry, we'll try another method shortly.)
13144 EOM
13145                         fi
13146                 fi
13147         fi
13148         $rm -f core try.core core.try.*
13149         case "$fflushNULL" in
13150         x)      $cat >&4 <<EOM
13151 Your fflush(NULL) works okay for output streams.
13152 Let's see if it clobbers input pipes...
13153 EOM
13154 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13155 # bug that improperly flushes the input end of pipes.  So we avoid the
13156 # autoflush on fork/system/exec support for now. :-(
13157 $cat >tryp.c <<EOCP
13158 #include <stdio.h>
13159 int
13160 main(int argc, char **argv)
13161 {
13162     char buf[1024];
13163     int i;
13164     char *bp = buf;
13165     while (1) {
13166         while ((i = getc(stdin)) != -1
13167                && (*bp++ = i) != '\n'
13168                && bp < &buf[1024])
13169         /* DO NOTHING */ ;
13170         *bp = '\0';
13171         fprintf(stdout, "%s", buf);
13172         fflush(NULL);
13173         if (i == -1)
13174             return 0;
13175         bp = buf;
13176     }
13177 }
13178 EOCP
13179                 fflushNULL="$define"
13180                 set tryp
13181                 if eval $compile; then
13182                     $rm -f tryp.out
13183                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13184                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13185                        $cat >&4 <<EOM
13186 fflush(NULL) seems to behave okay with input streams.
13187 EOM
13188                         fflushNULL="$define"
13189                     else
13190                         $cat >&4 <<EOM
13191 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13192 EOM
13193                         fflushNULL="$undef"
13194                     fi
13195                 fi
13196                 $rm -f core tryp.c tryp.core core.tryp.*
13197                 ;;
13198         '')     $cat >&4 <<EOM
13199 Your fflush(NULL) isn't working (contrary to ANSI C).
13200 EOM
13201                 fflushNULL="$undef"
13202                 ;;
13203         *)      $cat >&4 <<EOM
13204 Cannot figure out whether your fflush(NULL) works or not.
13205 I'm assuming it doesn't (contrary to ANSI C).
13206 EOM
13207                 fflushNULL="$undef"
13208                 ;;
13209         esac
13210         ;;
13211 $define|true|[yY]*)
13212         fflushNULL="$define"
13213         ;;
13214 *)
13215         fflushNULL="$undef"
13216         ;;
13217 esac
13218 : check explicit looping only if NULL did not work, and if the pipe
13219 : bug does not show up on an explicit flush too
13220 case "$fflushNULL" in
13221 "$undef")
13222         $cat >tryp.c <<EOCP
13223 #include <stdio.h>
13224 int
13225 main(int argc, char **argv)
13226 {
13227     char buf[1024];
13228     int i;
13229     char *bp = buf;
13230     while (1) {
13231         while ((i = getc(stdin)) != -1
13232                && (*bp++ = i) != '\n'
13233                && bp < &buf[1024])
13234         /* DO NOTHING */ ;
13235         *bp = '\0';
13236         fprintf(stdout, "%s", buf);
13237         fflush(stdin);
13238         if (i == -1)
13239             return 0;
13240         bp = buf;
13241     }
13242 }
13243 EOCP
13244         set tryp
13245         if eval $compile; then
13246             $rm -f tryp.out
13247             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13248             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13249                $cat >&4 <<EOM
13250 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13251 EOM
13252                 : now check for fflushall behaviour
13253                 case "$fflushall" in
13254                 '')     set try -DTRY_FFLUSH_ALL $output
13255                         if eval $compile; then
13256                                 $cat >&4 <<EOM
13257 (Now testing the other method--but note that this also may fail.)
13258 EOM
13259                                 $rm -f try.out
13260                                 ./try$exe_ext 2>/dev/null
13261                                 if $test -s try.out -a "X$?" = X42; then
13262                                         fflushall="`$cat try.out`"
13263                                 fi
13264                         fi
13265                         $rm -f core try.core core.try.*
13266                         case "$fflushall" in
13267                         x)      $cat >&4 <<EOM
13268 Whew. Flushing explicitly all the stdio streams works.
13269 EOM
13270                                 fflushall="$define"
13271                                 ;;
13272                         '')     $cat >&4 <<EOM
13273 Sigh. Flushing explicitly all the stdio streams doesn't work.
13274 EOM
13275                                 fflushall="$undef"
13276                                 ;;
13277                         *)      $cat >&4 <<EOM
13278 Cannot figure out whether flushing stdio streams explicitly works or not.
13279 I'm assuming it doesn't.
13280 EOM
13281                                 fflushall="$undef"
13282                                 ;;
13283                         esac
13284                         ;;
13285                 "$define"|true|[yY]*)
13286                         fflushall="$define"
13287                         ;;
13288                 *)
13289                         fflushall="$undef"
13290                         ;;
13291                 esac
13292             else
13293                 $cat >&4 <<EOM
13294 All is futile.  Even fflush(stdin) clobbers input pipes!
13295 EOM
13296                 fflushall="$undef"
13297             fi
13298         else
13299             fflushall="$undef"
13300         fi
13301         $rm -f core tryp.c tryp.core core.tryp.*
13302         ;;
13303 *)      fflushall="$undef"
13304         ;;
13305 esac
13306
13307 case "$fflushNULL$fflushall" in
13308 undefundef)
13309         $cat <<EOM
13310 OK, I give up.  I cannot figure out how to flush pending stdio output.
13311 We won't be flushing handles at all before fork/exec/popen.
13312 EOM
13313         ;;
13314 esac
13315 $rm -f try.* try$exe_ext
13316
13317 : Store the full pathname to the ar program for use in the C program
13318 : Respect a hint or command line value for full_ar.
13319 case "$full_ar" in
13320 '') full_ar=$ar ;;
13321 esac
13322
13323 : Store the full pathname to the sed program for use in the C program
13324 full_sed=$sed
13325
13326 : see what type gids are declared as in the kernel
13327 echo " "
13328 echo "Looking for the type for group ids returned by getgid()."
13329 set gid_t gidtype xxx stdio.h sys/types.h
13330 eval $typedef
13331 case "$gidtype" in
13332 xxx)
13333         xxx=`./findhdr sys/user.h`
13334         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13335         case $1 in
13336         unsigned) dflt="$1 $2" ;;
13337         *) dflt="$1" ;;
13338         esac
13339         ;;
13340 *) dflt="$gidtype";;
13341 esac
13342 case "$gidtype" in
13343 gid_t) echo "gid_t found." ;;
13344 *)      rp="What is the type for group ids returned by getgid()?"
13345         . ./myread
13346         gidtype="$ans"
13347         ;;
13348 esac
13349
13350 echo " "
13351 case "$gidtype" in
13352 *_t) zzz="$gidtype"     ;;
13353 *)   zzz="gid"          ;;
13354 esac
13355 echo "Checking the size of $zzz..." >&4 
13356 cat > try.c <<EOCP
13357 #include <sys/types.h>
13358 #include <stdio.h>
13359 int main() {
13360     printf("%d\n", (int)sizeof($gidtype));
13361     exit(0);
13362 }
13363 EOCP
13364 set try
13365 if eval $compile_ok; then
13366         yyy=`./try`
13367         case "$yyy" in
13368         '')     gidsize=4
13369                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13370                 ;;
13371         *)      gidsize=$yyy
13372                 echo "Your $zzz is $gidsize bytes long."
13373                 ;;
13374         esac
13375 else
13376         gidsize=4
13377         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13378 fi
13379
13380
13381 echo " "
13382 case "$gidtype" in
13383 *_t) zzz="$gidtype"     ;;
13384 *)   zzz="gid"          ;;
13385 esac
13386 echo "Checking the sign of $zzz..." >&4 
13387 cat > try.c <<EOCP
13388 #include <sys/types.h>
13389 #include <stdio.h>
13390 int main() {
13391         $gidtype foo = -1;
13392         if (foo < 0)
13393                 printf("-1\n");
13394         else
13395                 printf("1\n");
13396 }
13397 EOCP
13398 set try
13399 if eval $compile; then
13400         yyy=`./try`
13401         case "$yyy" in
13402         '')     gidsign=1
13403                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13404                 ;;
13405         *)      gidsign=$yyy
13406                 case "$gidsign" in
13407                  1) echo "Your $zzz is unsigned." ;;
13408                 -1) echo "Your $zzz is signed."   ;;
13409                 esac
13410                 ;;
13411         esac
13412 else
13413         gidsign=1
13414         echo "(I can't compile the test program--guessing unsigned.)" >&4
13415 fi
13416
13417
13418 echo " "
13419
13420 if $test X"$quadtype" != X; then
13421
13422 echo "Checking how to print 64-bit integers..." >&4
13423
13424 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13425         $cat >try.c <<'EOCP'
13426 #include <sys/types.h>
13427 #include <stdio.h>
13428 int main() {
13429   int q = 12345678901;
13430   printf("%ld\n", q);
13431 }
13432 EOCP
13433         set try
13434         if eval $compile; then
13435                 yyy=`./try$exe_ext`
13436                 case "$yyy" in
13437                 12345678901)
13438                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13439                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13440                         echo "We will use %d."
13441                         ;;
13442                 esac
13443         fi
13444 fi
13445
13446 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13447         $cat >try.c <<'EOCP'
13448 #include <sys/types.h>
13449 #include <stdio.h>
13450 int main() {
13451   long q = 12345678901;
13452   printf("%ld\n", q);
13453 }
13454 EOCP
13455         set try
13456         if eval $compile; then
13457                 yyy=`./try$exe_ext`
13458                 case "$yyy" in
13459                 12345678901)
13460                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13461                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13462                         echo "We will use %ld."
13463                         ;;
13464                 esac
13465         fi
13466 fi
13467
13468 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13469         $cat >try.c <<'EOCP'
13470 #include <sys/types.h>
13471 #include <inttypes.h>
13472 #include <stdio.h>
13473 int main() {
13474   int64_t q = 12345678901;
13475   printf("%" PRId64 "\n", q);
13476 }
13477 EOCP
13478         set try
13479         if eval $compile; then
13480                 yyy=`./try$exe_ext`
13481                 case "$yyy" in
13482                 12345678901)
13483                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13484                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13485                         echo "We will use the C9X style."
13486                         ;;
13487                 esac
13488         fi
13489 fi
13490
13491 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13492         $cat >try.c <<'EOCP'
13493 #include <sys/types.h>
13494 #include <stdio.h>
13495 int main() {
13496   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13497   printf("%lld\n", q);
13498 }
13499 EOCP
13500         set try
13501         if eval $compile; then
13502                 yyy=`./try$exe_ext`
13503                 case "$yyy" in
13504                 12345678901)
13505                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13506                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13507                         echo "We will use the %lld style."
13508                         ;;
13509                 esac
13510         fi
13511 fi
13512
13513 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13514         $cat >try.c <<EOCP
13515 #include <sys/types.h>
13516 #include <stdio.h>
13517 int main() {
13518   $quadtype q = 12345678901;
13519   printf("%Ld\n", q);
13520 }
13521 EOCP
13522         set try
13523         if eval $compile; then
13524                 yyy=`./try$exe_ext`
13525                 case "$yyy" in
13526                 12345678901)
13527                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13528                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13529                         echo "We will use %Ld."
13530                         ;;
13531                 esac
13532         fi
13533 fi
13534
13535 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13536         $cat >try.c <<EOCP
13537 #include <sys/types.h>
13538 #include <stdio.h>
13539 int main() {
13540   $quadtype q = 12345678901;
13541   printf("%qd\n", q);
13542 }
13543 EOCP
13544         set try
13545         if eval $compile; then
13546                 yyy=`./try$exe_ext`
13547                 case "$yyy" in
13548                 12345678901)
13549                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13550                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13551                         echo "We will use %qd."
13552                         ;;
13553                 esac
13554         fi
13555 fi
13556
13557 if $test X"$sPRId64" = X; then
13558         echo "Cannot figure out how to print 64-bit integers." >&4
13559 fi
13560
13561 $rm -f try try.*
13562
13563 fi
13564
13565 case "$sPRId64" in
13566 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13567         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13568         ;;
13569 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13570         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13571         ;;
13572 esac
13573
13574
13575 echo " "
13576 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13577
13578 if $test X"$ivsize" = X8; then
13579         ivdformat="$sPRId64"
13580         uvuformat="$sPRIu64"
13581         uvoformat="$sPRIo64"
13582         uvxformat="$sPRIx64"
13583         uvXUformat="$sPRIXU64"
13584 else
13585         if $test X"$ivsize" = X"$longsize"; then
13586                 ivdformat='"ld"'
13587                 uvuformat='"lu"'
13588                 uvoformat='"lo"'
13589                 uvxformat='"lx"'
13590                 uvXUformat='"lX"'
13591         else
13592                 if $test X"$ivsize" = X"$intsize"; then
13593                         ivdformat='"d"'
13594                         uvuformat='"u"'
13595                         uvoformat='"o"'
13596                         uvxformat='"x"'
13597                         uvXUformat='"X"'
13598                 else
13599                         : far out
13600                         if $test X"$ivsize" = X"$shortsize"; then
13601                                 ivdformat='"hd"'
13602                                 uvuformat='"hu"'
13603                                 uvoformat='"ho"'
13604                                 uvxformat='"hx"'
13605                                 uvXUformat='"hX"'
13606                         fi
13607                 fi
13608         fi
13609 fi
13610
13611 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13612         nveformat="$sPRIeldbl"
13613         nvfformat="$sPRIfldbl"
13614         nvgformat="$sPRIgldbl"
13615         nvEUformat="$sPRIEUldbl"
13616         nvFUformat="$sPRIFUldbl"
13617         nvGUformat="$sPRIGUldbl"
13618 else
13619         nveformat='"e"'
13620         nvfformat='"f"'
13621         nvgformat='"g"'
13622         nvEUformat='"E"'
13623         nvFUformat='"F"'
13624         nvGUformat='"G"'
13625 fi
13626
13627 case "$ivdformat" in
13628 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13629     exit 1
13630     ;;
13631 esac
13632
13633
13634 echo " "
13635 $echo "Checking the format string to be used for gids..." >&4
13636
13637 case "$gidsign" in
13638 -1)     if $test X"$gidsize" = X"$ivsize"; then
13639                 gidformat="$ivdformat"
13640         else
13641                 if $test X"$gidsize" = X"$longsize"; then
13642                         gidformat='"ld"'
13643                 else
13644                         if $test X"$gidsize" = X"$intsize"; then
13645                                 gidformat='"d"'
13646                         else
13647                                 if $test X"$gidsize" = X"$shortsize"; then
13648                                         gidformat='"hd"'
13649                                 fi
13650                         fi
13651                 fi
13652         fi
13653         ;;
13654 *)      if $test X"$gidsize" = X"$uvsize"; then
13655                 gidformat="$uvuformat"
13656         else
13657                 if $test X"$gidsize" = X"$longsize"; then
13658                         gidformat='"lu"'
13659                 else
13660                         if $test X"$gidsize" = X"$intsize"; then
13661                                 gidformat='"u"'
13662                         else
13663                                 if $test X"$gidsize" = X"$shortsize"; then
13664                                         gidformat='"hu"'
13665                                 fi
13666                         fi
13667                 fi
13668         fi
13669         ;;
13670 esac
13671
13672 : see if getgroups exists
13673 set getgroups d_getgrps
13674 eval $inlibc
13675
13676 : see if setgroups exists
13677 set setgroups d_setgrps
13678 eval $inlibc
13679
13680
13681 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13682 echo " "
13683 case "$d_getgrps$d_setgrps" in
13684 *define*)
13685         case "$groupstype" in
13686         '') dflt="$gidtype" ;;
13687         *)  dflt="$groupstype" ;;
13688         esac
13689         $cat <<EOM
13690 What type of pointer is the second argument to getgroups() and setgroups()?
13691 Usually this is the same as group ids, $gidtype, but not always.
13692
13693 EOM
13694         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13695         . ./myread
13696         groupstype="$ans"
13697         ;;
13698 *)  groupstype="$gidtype";;
13699 esac
13700
13701 echo " "
13702 echo "Checking if your $make program sets \$(MAKE)..." >&4
13703 case "$make_set_make" in
13704 '')
13705         $sed 's/^X //' > testmake.mak << 'EOF'
13706 Xall:
13707 X       @echo 'maketemp="$(MAKE)"'
13708 EOF
13709         case "`$make -f testmake.mak 2>/dev/null`" in
13710         *maketemp=*) make_set_make='#' ;;
13711         *)      make_set_make="MAKE=$make" ;;
13712         esac
13713         $rm -f testmake.mak
13714         ;;
13715 esac
13716 case "$make_set_make" in
13717 '#') echo "Yup, it does.";;
13718 *) echo "Nope, it doesn't.";;
13719 esac
13720
13721 : see what type is used for mode_t
13722 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13723 set mode_t modetype int stdio.h sys/types.h
13724 eval $typedef_ask
13725
13726 : see if stdarg is available
13727 echo " "
13728 if $test `./findhdr stdarg.h`; then
13729         echo "<stdarg.h> found." >&4
13730         valstd="$define"
13731 else
13732         echo "<stdarg.h> NOT found." >&4
13733         valstd="$undef"
13734 fi
13735
13736 : see if varags is available
13737 echo " "
13738 if $test `./findhdr varargs.h`; then
13739         echo "<varargs.h> found." >&4
13740 else
13741         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13742 fi
13743
13744 : set up the varargs testing programs
13745 $cat > varargs.c <<EOP
13746 #ifdef I_STDARG
13747 #include <stdarg.h>
13748 #endif
13749 #ifdef I_VARARGS
13750 #include <varargs.h>
13751 #endif
13752
13753 #ifdef I_STDARG
13754 int f(char *p, ...)
13755 #else
13756 int f(va_alist)
13757 va_dcl
13758 #endif
13759 {
13760         va_list ap;
13761 #ifndef I_STDARG
13762         char *p;
13763 #endif
13764 #ifdef I_STDARG
13765         va_start(ap,p);
13766 #else
13767         va_start(ap);
13768         p = va_arg(ap, char *);
13769 #endif
13770         va_end(ap);
13771 }
13772 EOP
13773 $cat > varargs <<EOP
13774 $startsh
13775 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13776         echo "true"
13777 else
13778         echo "false"
13779 fi
13780 $rm -f varargs$_o
13781 EOP
13782 chmod +x varargs
13783
13784 : now check which varargs header should be included
13785 echo " "
13786 i_varhdr=''
13787 case "$valstd" in
13788 "$define")
13789         if `./varargs I_STDARG`; then
13790                 val='stdarg.h'
13791         elif `./varargs I_VARARGS`; then
13792                 val='varargs.h'
13793         fi
13794         ;;
13795 *)
13796         if `./varargs I_VARARGS`; then
13797                 val='varargs.h'
13798         fi
13799         ;;
13800 esac
13801 case "$val" in
13802 '')
13803 echo "I could not find the definition for va_dcl... You have problems..." >&4
13804         val="$undef"; set i_stdarg; eval $setvar
13805         val="$undef"; set i_varargs; eval $setvar
13806         ;;
13807 *) 
13808         set i_varhdr
13809         eval $setvar
13810         case "$i_varhdr" in
13811         stdarg.h)
13812                 val="$define"; set i_stdarg; eval $setvar
13813                 val="$undef"; set i_varargs; eval $setvar
13814                 ;;
13815         varargs.h)
13816                 val="$undef"; set i_stdarg; eval $setvar
13817                 val="$define"; set i_varargs; eval $setvar
13818                 ;;
13819         esac
13820         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13821 esac
13822 $rm -f varargs*
13823
13824 : see if we need va_copy
13825 echo " "
13826 case "$i_stdarg" in
13827 "$define")
13828         $cat >try.c <<EOCP
13829 #include <stdarg.h>
13830 #include <stdio.h>
13831 #$i_stdlib I_STDLIB
13832 #ifdef I_STDLIB
13833 #include <stdlib.h>
13834 #endif
13835 #include <signal.h>
13836
13837 int
13838 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13839 {
13840   return vfprintf(f, fmt, *valp);
13841 }
13842  
13843 int    
13844 myvfprintf(FILE *f, const  char *fmt, va_list val)
13845 {
13846   return ivfprintf(f, fmt, &val);
13847 }
13848       
13849 int
13850 myprintf(char *fmt, ...) 
13851 {
13852   va_list val;
13853   va_start(val, fmt);
13854   return myvfprintf(stdout, fmt, val); 
13855 }         
13856
13857 int
13858 main(int ac, char **av)
13859 {
13860   signal(SIGSEGV, exit);
13861
13862   myprintf("%s%cs all right, then\n", "that", '\'');                            
13863   exit(0);      
13864 }
13865 EOCP
13866         set try
13867         if eval $compile && ./try 2>&1 >/dev/null; then
13868                 case "`./try`" in
13869                 "that's all right, then")
13870                         okay=yes
13871                         ;;
13872                 esac
13873         fi
13874         case "$okay" in
13875         yes)    echo "It seems that you don't need va_copy()." >&4
13876                 need_va_copy="$undef"
13877                 ;;
13878         *)      echo "It seems that va_copy() or similar will be needed." >&4
13879                 need_va_copy="$define"
13880                 ;;
13881         esac
13882         $rm -f try.* core core.* *.core *.core.*
13883         ;;
13884 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13885         ;;
13886 esac
13887
13888 : define a fucntion to check prototypes
13889 $cat > protochk <<EOSH
13890 $startsh
13891 cc="$cc"
13892 optimize="$optimize"
13893 ccflags="$ccflags"
13894 prototype="$prototype"
13895 define="$define"
13896 rm=$rm
13897 EOSH
13898
13899 $cat >> protochk <<'EOSH'
13900
13901 $rm -f try.c
13902 foo="$1"
13903 shift
13904 while test $# -ge 2; do
13905         case "$1" in
13906                 $define) echo "#include <$2>" >> try.c ;;
13907                 literal) echo "$2" >> try.c ;;
13908         esac
13909     shift 2
13910 done
13911 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13912 cat >> try.c <<'EOCP'
13913 #ifdef CAN_PROTOTYPE
13914 #define _(args) args
13915 #else
13916 #define _(args) ()
13917 #endif
13918 EOCP
13919 echo "$foo" >> try.c
13920 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13921 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13922 status=$?
13923 $rm -f try.[co]
13924 exit $status
13925 EOSH
13926 chmod +x protochk
13927 $eunicefix protochk
13928
13929 : see what type is used for size_t
13930 rp="What is the type used for the length parameter for string functions?"
13931 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13932 eval $typedef_ask
13933
13934 : check for type of arguments to gethostbyaddr. 
13935 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13936         case "$d_gethbyaddr" in
13937         $define)
13938                 $cat <<EOM
13939
13940 Checking to see what type of arguments are accepted by gethostbyaddr().
13941 EOM
13942                 hdrs="$define sys/types.h
13943                         $d_socket sys/socket.h 
13944                         $i_niin netinet/in.h 
13945                         $i_netdb netdb.h
13946                         $i_unistd unistd.h"
13947                 : The first arg can 'char *' or 'void *'
13948                 : The second arg is some of integral type
13949                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13950                         for yyy in size_t long int; do
13951                                 case "$netdb_host_type" in
13952                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13953                                         if ./protochk "$try" $hdrs; then
13954                                                 echo "Your system accepts $xxx for the first arg."
13955                                                 echo "...and $yyy for the second arg."
13956                                                 netdb_host_type="$xxx"
13957                                                 netdb_hlen_type="$yyy"
13958                                         fi
13959                                         ;;
13960                                 esac
13961                         done
13962                 done
13963                 : In case none of those worked, prompt the user.
13964                 case "$netdb_host_type" in
13965                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13966                         dflt='char *'
13967                         . ./myread
13968                         netdb_host_type=$ans
13969                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13970                         dflt="$sizetype"
13971                         . ./myread
13972                         netdb_hlen_type=$ans
13973                         ;;
13974                 esac
13975                 ;;
13976         *)      : no gethostbyaddr, so pick harmless defaults
13977                 netdb_host_type='char *'
13978                 netdb_hlen_type="$sizetype"
13979                 ;;
13980         esac
13981         # Remove the "const" if needed. -- but then we'll have a 
13982         # prototype clash!
13983         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13984 fi
13985
13986 : check for type of argument to gethostbyname. 
13987 if test "X$netdb_name_type" = X ; then
13988         case "$d_gethbyname" in
13989         $define)
13990                 $cat <<EOM
13991
13992 Checking to see what type of argument is accepted by gethostbyname().
13993 EOM
13994                 hdrs="$define sys/types.h
13995                         $d_socket sys/socket.h 
13996                         $i_niin netinet/in.h 
13997                         $i_netdb netdb.h
13998                         $i_unistd unistd.h"
13999                 for xxx in "const char *" "char *"; do
14000                         case "$netdb_name_type" in
14001                         '')     try="extern struct hostent *gethostbyname($xxx);"
14002                                 if ./protochk "$try" $hdrs; then
14003                                         echo "Your system accepts $xxx."
14004                                         netdb_name_type="$xxx"
14005                                 fi
14006                                 ;;
14007                         esac
14008                 done
14009                 : In case none of those worked, prompt the user.
14010                 case "$netdb_name_type" in
14011                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14012                         dflt='char *'
14013                         . ./myread
14014                         netdb_name_type=$ans
14015                         ;;
14016                 esac
14017                 ;;
14018         *)      : no gethostbyname, so pick harmless default
14019                 netdb_name_type='char *'
14020                 ;;
14021         esac
14022 fi
14023
14024 : check for type of 1st argument to getnetbyaddr. 
14025 if test "X$netdb_net_type" = X ; then
14026         case "$d_getnbyaddr" in
14027         $define)
14028                 $cat <<EOM
14029
14030 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14031 EOM
14032                 hdrs="$define sys/types.h
14033                         $d_socket sys/socket.h 
14034                         $i_niin netinet/in.h 
14035                         $i_netdb netdb.h
14036                         $i_unistd unistd.h"
14037                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14038                         case "$netdb_net_type" in
14039                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14040                                 if ./protochk "$try" $hdrs; then
14041                                         echo "Your system accepts $xxx."
14042                                         netdb_net_type="$xxx"
14043                                 fi
14044                                 ;;
14045                         esac
14046                 done
14047                 : In case none of those worked, prompt the user.
14048                 case "$netdb_net_type" in
14049                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14050                         dflt='long'
14051                         . ./myread
14052                         netdb_net_type=$ans
14053                         ;;
14054                 esac
14055                 ;;
14056         *)      : no getnetbyaddr, so pick harmless default
14057                 netdb_net_type='long'
14058                 ;;
14059         esac
14060 fi
14061 : locate the preferred pager for this system
14062 case "$pager" in
14063 '')
14064         dflt=''
14065         case "$pg" in
14066         /*) dflt=$pg;;
14067         [a-zA-Z]:/*) dflt=$pg;;
14068         esac
14069         case "$more" in
14070         /*) dflt=$more;;
14071         [a-zA-Z]:/*) dflt=$more;;
14072         esac
14073         case "$less" in
14074         /*) dflt=$less;;
14075         [a-zA-Z]:/*) dflt=$less;;
14076         esac
14077         case "$dflt" in
14078         '') dflt=/usr/ucb/more;;
14079         esac
14080         ;;
14081 *) dflt="$pager";;
14082 esac
14083 echo " "
14084 fn=f/
14085 rp='What pager is used on your system?'
14086 . ./getfile
14087 pager="$ans"
14088
14089 : see what type pids are declared as in the kernel
14090 rp="What is the type of process ids on this system?"
14091 set pid_t pidtype int stdio.h sys/types.h
14092 eval $typedef_ask
14093
14094 : Find earliest binary compatible site_perl subdirectory perl can use.
14095 case "$bincompat5005" in
14096 "$define") xs_apiversion='5.005' ;;
14097 *) xs_apiversion=$version ;;   # The current site_perl version.
14098 esac
14099 : Find earliest pure perl site_perl subdirectory perl can use.
14100 : The versioned directories started at 5.005.
14101 pm_apiversion='5.005'
14102
14103 : check for length of pointer
14104 echo " "
14105 case "$ptrsize" in
14106 '')
14107         echo "Checking to see how big your pointers are..." >&4
14108         if test "$voidflags" -gt 7; then
14109                 echo '#define VOID_PTR char *' > try.c
14110         else
14111                 echo '#define VOID_PTR void *' > try.c
14112         fi
14113         $cat >>try.c <<'EOCP'
14114 #include <stdio.h>
14115 int main()
14116 {
14117     printf("%d\n", (int)sizeof(VOID_PTR));
14118     exit(0);
14119 }
14120 EOCP
14121         set try
14122         if eval $compile_ok; then
14123                 ptrsize=`./try`
14124                 echo "Your pointers are $ptrsize bytes long."
14125         else
14126                 dflt='4'
14127                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
14128                 rp="What is the size of a pointer (in bytes)?"
14129                 . ./myread
14130                 ptrsize="$ans"
14131         fi
14132         ;;
14133 esac
14134 $rm -f try.c try
14135
14136 : see if ar generates random libraries by itself
14137 echo " "
14138 echo "Checking how to generate random libraries on your machine..." >&4
14139 echo 'int bar1() { return bar2(); }' > bar1.c
14140 echo 'int bar2() { return 2; }' > bar2.c
14141 $cat > foo.c <<'EOP'
14142 int main() { printf("%d\n", bar1()); exit(0); }
14143 EOP
14144 $cc $ccflags -c bar1.c >/dev/null 2>&1
14145 $cc $ccflags -c bar2.c >/dev/null 2>&1
14146 $cc $ccflags -c foo.c >/dev/null 2>&1
14147 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14148 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14149         ./foobar >/dev/null 2>&1; then
14150         echo "$ar appears to generate random libraries itself."
14151         orderlib=false
14152         ranlib=":"
14153 elif $ar ts bar$_a >/dev/null 2>&1 &&
14154         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14155         ./foobar >/dev/null 2>&1; then
14156                 echo "a table of contents needs to be added with '$ar ts'."
14157                 orderlib=false
14158                 ranlib="$ar ts"
14159 else
14160         case "$ranlib" in
14161         :) ranlib='';;
14162         '')
14163                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14164                 $test -f $ranlib || ranlib=''
14165                 ;;
14166         esac
14167         if $test -n "$ranlib"; then
14168                 echo "your system has '$ranlib'; we'll use that."
14169                 orderlib=false
14170         else
14171                 echo "your system doesn't seem to support random libraries"
14172                 echo "so we'll use lorder and tsort to order the libraries."
14173                 orderlib=true
14174                 ranlib=":"
14175         fi
14176 fi
14177 $rm -f foo* bar* 
14178
14179 : check for type of arguments to select. 
14180 case "$selecttype" in
14181 '') case "$d_select" in
14182         $define)
14183                 echo " "
14184                 $cat <<EOM
14185 Checking to see what type of arguments are accepted by select().
14186 EOM
14187                 hdrs="$define sys/types.h
14188                         $i_systime sys/time.h 
14189                         $i_sysselct sys/select.h
14190                         $d_socket sys/socket.h"
14191                 : The first arg can be int, unsigned, or size_t
14192                 : The last arg may or may not be 'const'
14193                 val=''
14194                 : void pointer has been seen but using that
14195                 : breaks the selectminbits test
14196                 for xxx in 'fd_set *' 'int *'; do
14197                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14198                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14199                                         case "$val" in
14200                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14201                                                 if ./protochk "$try" $hdrs; then
14202                                                         echo "Your system accepts $xxx."
14203                                                         val="$xxx"
14204                                                 fi
14205                                                 ;;
14206                                         esac
14207                                 done
14208                         done
14209                 done
14210                 case "$val" in
14211                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14212                         case "$d_fd_set" in
14213                                 $define) dflt="fd_set *" ;;
14214                                 *)              dflt="int *" ;;
14215                         esac
14216                         . ./myread
14217                         val=$ans
14218                         ;;
14219                 esac
14220                 selecttype="$val"
14221                 ;;
14222         *)      : no select, so pick a harmless default
14223                 selecttype='int *'
14224                 ;;
14225         esac
14226         ;;
14227 esac
14228
14229 : check for the select 'width'
14230 case "$selectminbits" in
14231 '') case "$d_select" in
14232         $define)
14233                 $cat <<EOM
14234
14235 Checking to see on how many bits at a time your select() operates...
14236 EOM
14237                 $cat >try.c <<EOCP
14238 #include <sys/types.h>
14239 #$i_time I_TIME
14240 #$i_systime I_SYS_TIME
14241 #$i_systimek I_SYS_TIME_KERNEL
14242 #ifdef I_TIME
14243 #   include <time.h>
14244 #endif
14245 #ifdef I_SYS_TIME
14246 #   ifdef I_SYS_TIME_KERNEL
14247 #       define KERNEL
14248 #   endif
14249 #   include <sys/time.h>
14250 #   ifdef I_SYS_TIME_KERNEL
14251 #       undef KERNEL
14252 #   endif
14253 #endif
14254 #$i_sysselct I_SYS_SELECT
14255 #ifdef I_SYS_SELECT
14256 #include <sys/select.h>
14257 #endif
14258 #$d_socket HAS_SOCKET
14259 #ifdef HAS_SOCKET
14260 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14261 #endif
14262 #include <stdio.h>
14263 $selecttype b;
14264 #define S sizeof(*(b))
14265 #define MINBITS 64
14266 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14267 #define NBITS  (NBYTES * 8)
14268 int main() {
14269     char s[NBYTES];
14270     struct timeval t;
14271     int i;
14272     FILE* fp;
14273     int fd;
14274
14275     fclose(stdin);
14276     fp = fopen("try.c", "r");
14277     if (fp == 0)
14278       exit(1);
14279     fd = fileno(fp);
14280     if (fd < 0)
14281       exit(2);
14282     b = ($selecttype)s;
14283     for (i = 0; i < NBITS; i++)
14284         FD_SET(i, b);
14285     t.tv_sec  = 0;
14286     t.tv_usec = 0;
14287     select(fd + 1, b, 0, 0, &t);
14288     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14289     printf("%d\n", i + 1);
14290     return 0;
14291 }
14292 EOCP
14293                 set try
14294                 if eval $compile_ok; then
14295                         selectminbits=`./try`
14296                         case "$selectminbits" in
14297                         '')     cat >&4 <<EOM
14298 Cannot figure out on how many bits at a time your select() operates.
14299 I'll play safe and guess it is 32 bits.
14300 EOM
14301                                 selectminbits=32
14302                                 bits="32 bits"
14303                                 ;;
14304                         1)      bits="1 bit" ;;
14305                         *)      bits="$selectminbits bits" ;;
14306                         esac
14307                         echo "Your select() operates on $bits at a time." >&4
14308                 else
14309                         rp='What is the minimum number of bits your select() operates on?'
14310                         case "$byteorder" in
14311                         1234|12345678)  dflt=32 ;;
14312                         *)              dflt=1  ;;
14313                         esac
14314                         . ./myread
14315                         val=$ans
14316                         selectminbits="$val"
14317                 fi
14318                 $rm -f try.* try
14319                 ;;
14320         *)      : no select, so pick a harmless default
14321                 selectminbits='32'
14322                 ;;
14323         esac
14324         ;;
14325 esac
14326
14327 : Trace out the files included by signal.h, then look for SIGxxx names.
14328 : Remove SIGARRAYSIZE used by HPUX.
14329 : Remove SIGSTKSIZE used by Linux.
14330 : Remove SIGSTKSZ used by Posix.
14331 : Remove SIGTYP void lines used by OS2.
14332 : Some cpps, like os390, dont give the file name anywhere
14333 if [ "X$fieldn" = X ]; then
14334         : Just make some guesses.  We check them later.
14335         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14336 else
14337         xxx=`echo '#include <signal.h>' |
14338         $cppstdin $cppminus $cppflags 2>/dev/null |
14339         $grep '^[       ]*#.*include' | 
14340         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14341 fi
14342 : Check this list of files to be sure we have parsed the cpp output ok.
14343 : This will also avoid potentially non-existent files, such 
14344 : as ../foo/bar.h
14345 xxxfiles=''
14346 for xx in $xxx /dev/null ; do
14347         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14348 done
14349 : If we have found no files, at least try signal.h
14350 case "$xxxfiles" in
14351 '')     xxxfiles=`./findhdr signal.h` ;;
14352 esac
14353 xxx=`awk '
14354 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14355         print substr($2, 4, 20)
14356 }
14357 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14358         print substr($3, 4, 20)
14359 }' $xxxfiles`
14360 : Append some common names just in case the awk scan failed.
14361 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14362 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14363 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14364 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14365 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14366
14367 : generate a few handy files for later
14368 $cat > signal.c <<'EOCP'
14369 #include <sys/types.h>
14370 #include <signal.h>
14371 #include <stdio.h>
14372 int main() {
14373
14374 /* Strange style to avoid deeply-nested #if/#else/#endif */
14375 #ifndef NSIG
14376 #  ifdef _NSIG
14377 #    define NSIG (_NSIG)
14378 #  endif
14379 #endif
14380
14381 #ifndef NSIG
14382 #  ifdef SIGMAX
14383 #    define NSIG (SIGMAX+1)
14384 #  endif
14385 #endif
14386
14387 #ifndef NSIG
14388 #  ifdef SIG_MAX
14389 #    define NSIG (SIG_MAX+1)
14390 #  endif
14391 #endif
14392
14393 #ifndef NSIG
14394 #  ifdef MAXSIG
14395 #    define NSIG (MAXSIG+1)
14396 #  endif
14397 #endif
14398
14399 #ifndef NSIG
14400 #  ifdef MAX_SIG
14401 #    define NSIG (MAX_SIG+1)
14402 #  endif
14403 #endif
14404
14405 #ifndef NSIG
14406 #  ifdef SIGARRAYSIZE
14407 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14408 #  endif
14409 #endif
14410
14411 #ifndef NSIG
14412 #  ifdef _sys_nsig
14413 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
14414 #  endif
14415 #endif
14416
14417 /* Default to some arbitrary number that's big enough to get most
14418    of the common signals.
14419 */
14420 #ifndef NSIG
14421 #    define NSIG 50
14422 #endif
14423
14424 printf("NSIG %d\n", NSIG);
14425
14426 #ifndef JUST_NSIG
14427
14428 EOCP
14429
14430 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14431 {
14432         printf "#ifdef SIG"; printf $1; printf "\n"
14433         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14434         printf $1; printf ");\n"
14435         printf "#endif\n"
14436 }
14437 END {
14438         printf "#endif /* JUST_NSIG */\n";
14439         printf "exit(0);\n}\n";
14440 }
14441 ' >>signal.c
14442 $cat >signal.awk <<'EOP'
14443 BEGIN { ndups = 0 }
14444 $1 ~ /^NSIG$/ { nsig = $2 }
14445 ($1 !~ /^NSIG$/) && (NF == 2) {
14446     if ($2 > maxsig) { maxsig = $2 }
14447     if (sig_name[$2]) {
14448         dup_name[ndups] = $1
14449         dup_num[ndups] = $2
14450         ndups++ 
14451     }
14452     else {
14453         sig_name[$2] = $1
14454         sig_num[$2] = $2
14455     }
14456 }
14457 END { 
14458     if (nsig == 0) {
14459         nsig = maxsig + 1
14460     }
14461     printf("NSIG %d\n", nsig);
14462     for (n = 1; n < nsig; n++) {
14463         if (sig_name[n]) {
14464             printf("%s %d\n", sig_name[n], sig_num[n])
14465         }
14466         else {
14467             printf("NUM%d %d\n", n, n) 
14468         }
14469     }
14470     for (n = 0; n < ndups; n++) {
14471         printf("%s %d\n", dup_name[n], dup_num[n])
14472     }
14473 }
14474 EOP
14475 $cat >signal_cmd <<EOS
14476 $startsh
14477 if $test -s signal.lst; then
14478     echo "Using your existing signal.lst file"
14479         exit 0
14480 fi
14481 xxx="$xxx"
14482 EOS
14483 $cat >>signal_cmd <<'EOS'
14484
14485 set signal
14486 if eval $compile_ok; then
14487         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14488 else
14489         echo "(I can't seem be able to compile the whole test program)" >&4
14490         echo "(I'll try it in little pieces.)" >&4
14491         set signal -DJUST_NSIG
14492         if eval $compile_ok; then
14493                 ./signal$_exe > signal.nsg
14494                 $cat signal.nsg
14495         else
14496                 echo "I can't seem to figure out how many signals you have." >&4
14497                 echo "Guessing 50." >&4
14498                 echo 'NSIG 50' > signal.nsg
14499         fi
14500         : Now look at all the signal names, one at a time.
14501         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14502                 $cat > signal.c <<EOCP
14503 #include <sys/types.h>
14504 #include <signal.h>
14505 #include <stdio.h>
14506 int main() {
14507 printf("$xx %d\n", SIG${xx});
14508 return 0;
14509 }
14510 EOCP
14511                 set signal
14512                 if eval $compile; then
14513                         echo "SIG${xx} found."
14514                         ./signal$_exe  >> signal.ls1
14515                 else
14516                         echo "SIG${xx} NOT found."
14517                 fi
14518         done
14519         if $test -s signal.ls1; then
14520                 $cat signal.nsg signal.ls1 |
14521                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14522         fi
14523
14524 fi
14525 if $test -s signal.lst; then
14526         :
14527 else
14528         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14529         echo 'kill -l' >signal
14530         set X `csh -f <signal`
14531         $rm -f signal
14532         shift
14533         case $# in
14534         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14535         esac
14536         echo $@ | $tr ' ' $trnl | \
14537             $awk '{ printf "%s %d\n", $1, ++s; }
14538                   END { printf "NSIG %d\n", ++s }' >signal.lst
14539 fi
14540 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14541 EOS
14542 chmod a+x signal_cmd
14543 $eunicefix signal_cmd
14544
14545 : generate list of signal names
14546 echo " "
14547 case "$sig_name_init" in
14548 '') doinit=yes ;;
14549 *)  case "$sig_num_init" in
14550     ''|*,*) doinit=yes ;;
14551     esac ;;
14552 esac
14553 case "$doinit" in
14554 yes)
14555         echo "Generating a list of signal names and numbers..." >&4
14556         . ./signal_cmd
14557         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14558         sig_name=`$awk 'BEGIN { printf "ZERO " }
14559                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14560         sig_num=`$awk  'BEGIN { printf "0 " }
14561                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14562         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14563                              !/^NSIG/   { printf "\"%s\", ", $1 }
14564                              END        { printf "0\n" }' signal.lst`
14565         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14566                              !/^NSIG/   { printf "%d, ", $2}
14567                              END        { printf "0\n"}' signal.lst`
14568         ;;
14569 esac
14570 echo "The following $sig_count signals are available:"
14571 echo " "
14572 echo $sig_name | $awk \
14573 'BEGIN { linelen = 0 }
14574 {
14575         for (i = 1; i <= NF; i++) {
14576                 name = "SIG" $i " "
14577                 linelen = linelen + length(name)
14578                 if (linelen > 70) {
14579                         printf "\n"
14580                         linelen = length(name)
14581                 }
14582                 printf "%s", name
14583         }
14584         printf "\n"
14585 }'
14586 sig_size=`echo $sig_name | awk '{print NF}'`
14587 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14588
14589 echo " "
14590 case "$sizetype" in
14591 *_t) zzz="$sizetype"    ;;
14592 *)   zzz="filesize"     ;;
14593 esac
14594 echo "Checking the size of $zzz..." >&4 
14595 cat > try.c <<EOCP
14596 #include <sys/types.h>
14597 #include <stdio.h>
14598 int main() {
14599     printf("%d\n", (int)sizeof($sizetype));
14600     exit(0);
14601 }
14602 EOCP
14603 set try
14604 if eval $compile_ok; then
14605         yyy=`./try`
14606         case "$yyy" in
14607         '')     sizesize=4
14608                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14609                 ;;
14610         *)      sizesize=$yyy
14611                 echo "Your $zzz size is $sizesize bytes."
14612                 ;;
14613         esac
14614 else
14615         sizesize=4
14616         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14617 fi
14618
14619
14620 : check for socklen_t
14621 echo " "
14622 echo "Checking to see if you have socklen_t..." >&4
14623 $cat >try.c <<EOCP
14624 #include <sys/types.h>
14625 #$d_socket HAS_SOCKET
14626 #ifdef HAS_SOCKET
14627 #include <sys/socket.h>
14628 #endif
14629 int main() { socklen_t x = 16; }
14630 EOCP
14631 set try
14632 if eval $compile; then
14633         val="$define"
14634         echo "You have socklen_t."
14635 else
14636         val="$undef"
14637         echo "You do not have socklen_t."
14638         case "$sizetype" in
14639         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14640         esac
14641 fi
14642 $rm -f try try.*
14643 set d_socklen_t
14644 eval $setvar
14645
14646 : see if this is a socks.h system
14647 set socks.h i_socks
14648 eval $inhdr
14649
14650 : check for type of the size argument to socket calls
14651 case "$d_socket" in
14652 "$define")
14653         $cat <<EOM
14654
14655 Checking to see what type is the last argument of accept().
14656 EOM
14657         yyy=''
14658         case "$d_socklen_t" in
14659         "$define") yyy="$yyy socklen_t"
14660         esac
14661         yyy="$yyy $sizetype int long unsigned"
14662         for xxx in $yyy; do
14663                 case "$socksizetype" in
14664                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14665                         case "$usesocks" in
14666                         "$define")
14667                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14668                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14669                                         socksizetype="$xxx"
14670                                 fi
14671                                 ;;
14672                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
14673                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14674                                         socksizetype="$xxx"
14675                                 fi
14676                                 ;;
14677                         esac
14678                         ;;
14679                 esac
14680         done
14681 : In case none of those worked, prompt the user.
14682         case "$socksizetype" in
14683         '')     rp='What is the type for socket address structure sizes?'
14684                 dflt='int'
14685                 . ./myread
14686                 socksizetype=$ans
14687                 ;;
14688         esac
14689         ;;
14690 *)      : no sockets, so pick relatively harmless default
14691         socksizetype='int'
14692         ;;
14693 esac
14694
14695 : see what type is used for signed size_t
14696 set ssize_t ssizetype int stdio.h sys/types.h
14697 eval $typedef
14698 dflt="$ssizetype"
14699 $cat > ssize.c <<EOM
14700 #include <stdio.h>
14701 #include <sys/types.h>
14702 #define Size_t $sizetype
14703 #define SSize_t $dflt
14704 int main()
14705 {
14706         if (sizeof(Size_t) == sizeof(SSize_t))
14707                 printf("$dflt\n");
14708         else if (sizeof(Size_t) == sizeof(int))
14709                 printf("int\n");
14710         else 
14711                 printf("long\n");
14712         exit(0);
14713 }
14714 EOM
14715 echo " "
14716 set ssize
14717 if eval $compile_ok && ./ssize > /dev/null; then
14718         ssizetype=`./ssize`
14719         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14720 else
14721         $cat >&4 <<EOM
14722 Help! I can't compile and run the ssize_t test program: please enlighten me!
14723 (This is probably a misconfiguration in your system or libraries, and
14724 you really ought to fix it.  Still, I'll try anyway.)
14725
14726 I need a type that is the same size as $sizetype, but is guaranteed to
14727 be signed.  Common values are ssize_t, int and long.
14728
14729 EOM
14730         rp="What signed type is the same size as $sizetype?"
14731         . ./myread
14732         ssizetype="$ans"
14733 fi
14734 $rm -f ssize ssize.*
14735
14736 : see what type of char stdio uses.
14737 echo " "
14738 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14739 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14740         echo "Your stdio uses unsigned chars." >&4
14741         stdchar="unsigned char"
14742 else
14743         echo "Your stdio uses signed chars." >&4
14744         stdchar="char"
14745 fi
14746 $rm -f stdioh
14747
14748
14749
14750 : see if time exists
14751 echo " "
14752 if test "X$d_time" = X -o X"$timetype" = X; then
14753     if set time val -f d_time; eval $csym; $val; then
14754                 echo 'time() found.' >&4
14755                 val="$define"
14756                 rp="What is the type returned by time() on this system?"
14757                 set time_t timetype long stdio.h sys/types.h
14758                 eval $typedef_ask
14759     else
14760                 echo 'time() not found, hope that will do.' >&4
14761                 val="$undef"
14762                 timetype='int';
14763     fi
14764     set d_time
14765     eval $setvar
14766 fi
14767
14768 : see what type uids are declared as in the kernel
14769 echo " "
14770 echo "Looking for the type for user ids returned by getuid()."
14771 set uid_t uidtype xxx stdio.h sys/types.h
14772 eval $typedef
14773 case "$uidtype" in
14774 xxx)
14775         xxx=`./findhdr sys/user.h`
14776         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14777         case $1 in
14778         unsigned) dflt="$1 $2" ;;
14779         *) dflt="$1" ;;
14780         esac
14781         ;;
14782 *) dflt="$uidtype";;
14783 esac
14784 case "$uidtype" in
14785 uid_t)  echo "uid_t found." ;;
14786 *)      rp="What is the type for user ids returned by getuid()?"
14787         . ./myread
14788         uidtype="$ans"
14789         ;;
14790 esac
14791
14792 echo " "
14793 case "$uidtype" in
14794 *_t) zzz="$uidtype"     ;;
14795 *)   zzz="uid"          ;;
14796 esac
14797 echo "Checking the size of $zzz..." >&4 
14798 cat > try.c <<EOCP
14799 #include <sys/types.h>
14800 #include <stdio.h>
14801 int main() {
14802     printf("%d\n", (int)sizeof($uidtype));
14803     exit(0);
14804 }
14805 EOCP
14806 set try
14807 if eval $compile_ok; then
14808         yyy=`./try`
14809         case "$yyy" in
14810         '')     uidsize=4
14811                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14812                 ;;
14813         *)      uidsize=$yyy
14814                 echo "Your $zzz is $uidsize bytes long."
14815                 ;;
14816         esac
14817 else
14818         uidsize=4
14819         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14820 fi
14821
14822 echo " "
14823 case "$uidtype" in
14824 *_t) zzz="$uidtype"     ;;
14825 *)   zzz="uid"          ;;
14826 esac
14827 echo "Checking the sign of $zzz..." >&4
14828 cat > try.c <<EOCP
14829 #include <sys/types.h>
14830 #include <stdio.h>
14831 int main() {
14832         $uidtype foo = -1;
14833         if (foo < 0)
14834                 printf("-1\n");
14835         else
14836                 printf("1\n");
14837 }
14838 EOCP
14839 set try
14840 if eval $compile; then
14841         yyy=`./try`
14842         case "$yyy" in
14843         '')     uidsign=1
14844                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14845                 ;;
14846         *)      uidsign=$yyy
14847                 case "$uidsign" in
14848                  1) echo "Your $zzz is unsigned." ;;
14849                 -1) echo "Your $zzz is signed."   ;;
14850                 esac
14851                 ;;
14852         esac
14853 else
14854         uidsign=1
14855         echo "(I can't compile the test program--guessing unsigned.)" >&4
14856 fi
14857
14858
14859
14860 echo " "
14861 $echo "Checking the format string to be used for uids..." >&4
14862
14863 case "$uidsign" in
14864 -1)     if $test X"$uidsize" = X"$ivsize"; then
14865                 uidformat="$ivdformat"
14866         else
14867                 if $test X"$uidsize" = X"$longsize"; then
14868                         uidformat='"ld"'
14869                 else
14870                         if $test X"$uidsize" = X"$intsize"; then
14871                                 uidformat='"d"'
14872                         else
14873                                 if $test X"$uidsize" = X"$shortsize"; then
14874                                         uidformat='"hd"'
14875                                 fi
14876                         fi
14877                 fi
14878         fi
14879         ;;
14880 *)      if $test X"$uidsize" = X"$uvsize"; then
14881                 uidformat="$uvuformat"
14882         else
14883                 if $test X"$uidsize" = X"$longsize"; then
14884                         uidformat='"lu"'
14885                 else
14886                         if $test X"$uidsize" = X"$intsize"; then
14887                                 uidformat='"u"'
14888                         else
14889                                 if $test X"$uidsize" = X"$shortsize"; then
14890                                         uidformat='"hu"'
14891                                 fi
14892                         fi
14893                 fi
14894         fi
14895         ;;
14896 esac
14897
14898 : see if dbm.h is available
14899 : see if dbmclose exists
14900 set dbmclose d_dbmclose
14901 eval $inlibc
14902
14903 case "$d_dbmclose" in
14904 $define)
14905         set dbm.h i_dbm
14906         eval $inhdr
14907         case "$i_dbm" in
14908         $define)
14909                 val="$undef"
14910                 set i_rpcsvcdbm
14911                 eval $setvar
14912                 ;;
14913         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14914                 eval $inhdr
14915                 ;;
14916         esac
14917         ;;
14918 *)      echo "We won't be including <dbm.h>"
14919         val="$undef"
14920         set i_dbm
14921         eval $setvar
14922         val="$undef"
14923         set i_rpcsvcdbm
14924         eval $setvar
14925         ;;
14926 esac
14927
14928 : see if this is a sys/file.h system
14929 val=''
14930 set sys/file.h val
14931 eval $inhdr
14932
14933 : do we need to include sys/file.h ?
14934 case "$val" in
14935 "$define")
14936         echo " "
14937         if $h_sysfile; then
14938                 val="$define"
14939                 echo "We'll be including <sys/file.h>." >&4
14940         else
14941                 val="$undef"
14942                 echo "We won't be including <sys/file.h>." >&4
14943         fi
14944         ;;
14945 *)
14946         h_sysfile=false
14947         ;;
14948 esac
14949 set i_sysfile
14950 eval $setvar
14951
14952 : see if fcntl.h is there
14953 val=''
14954 set fcntl.h val
14955 eval $inhdr
14956
14957 : see if we can include fcntl.h
14958 case "$val" in
14959 "$define")
14960         echo " "
14961         if $h_fcntl; then
14962                 val="$define"
14963                 echo "We'll be including <fcntl.h>." >&4
14964         else
14965                 val="$undef"
14966                 if $h_sysfile; then
14967         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14968                 else
14969                         echo "We won't be including <fcntl.h>." >&4
14970                 fi
14971         fi
14972         ;;
14973 *)
14974         h_fcntl=false
14975         val="$undef"
14976         ;;
14977 esac
14978 set i_fcntl
14979 eval $setvar
14980
14981 : see if this is a iconv.h system
14982 set iconv.h i_iconv
14983 eval $inhdr
14984
14985 : see if this is a ieeefp.h system
14986 set ieeefp.h i_ieeefp
14987 eval $inhdr
14988
14989 : see if this is a libutil.h system
14990 set libutil.h i_libutil
14991 eval $inhdr
14992
14993 : see if locale.h is available
14994 set locale.h i_locale
14995 eval $inhdr
14996
14997 : see if mach cthreads are available
14998 if test "X$usethreads" = "X$define"; then
14999         set mach/cthreads.h i_machcthr
15000         eval $inhdr
15001 else
15002         i_machcthr="$undef"
15003 fi
15004
15005
15006
15007 : see if this is a math.h system
15008 set math.h i_math
15009 eval $inhdr
15010
15011 : see if this is a mntent.h system
15012 set mntent.h i_mntent
15013 eval $inhdr
15014
15015 : see if ndbm.h is available
15016 set ndbm.h t_ndbm
15017 eval $inhdr
15018 case "$t_ndbm" in
15019 $define)
15020         : see if dbm_open exists
15021         set dbm_open d_dbm_open
15022         eval $inlibc
15023         case "$d_dbm_open" in
15024         $undef)
15025                 t_ndbm="$undef"
15026                 echo "We won't be including <ndbm.h>"
15027                 ;;
15028         esac
15029         ;;
15030 esac
15031 val="$t_ndbm"
15032 set i_ndbm
15033 eval $setvar
15034
15035 : see if net/errno.h is available
15036 val=''
15037 set net/errno.h val
15038 eval $inhdr
15039
15040 : Unfortunately, it causes problems on some systems.  Arrgh.
15041 case "$val" in
15042 $define)
15043         cat > try.c <<'EOM'
15044 #include <stdio.h>
15045 #include <errno.h>
15046 #include <net/errno.h>
15047 int func()
15048 {
15049         return ENOTSOCK;
15050 }
15051 EOM
15052         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15053                 echo "We'll be including <net/errno.h>." >&4
15054         else
15055                 echo "We won't be including <net/errno.h>." >&4
15056                 val="$undef"
15057         fi
15058         $rm -f try.* try
15059         ;;
15060 esac
15061 set i_neterrno
15062 eval $setvar
15063
15064 : see if netinet/tcp.h is available
15065 set netinet/tcp.h i_netinettcp
15066 eval $inhdr
15067
15068 : see if this is a poll.h system
15069 set poll.h i_poll
15070 eval $inhdr
15071
15072 : see if this is a prot.h system
15073 set prot.h i_prot
15074 eval $inhdr
15075
15076 echo " "
15077 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15078 $cat <<'EOSH' > Cppsym.know
15079 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15080 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15081 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
15082 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
15083 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15084 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15085 bull c cadmus clipper CMU COFF COMPILER_VERSION
15086 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15087 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15088 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15089 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15090 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15091 H3050R H3050RX hbullx20 hcx host_mips
15092 hp200 hp300 hp700 HP700 hp800 hp9000
15093 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15094 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15095 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15096 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15097 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15098 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15099 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15100 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15101 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15102 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15103 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15104 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15105 MATH_HAS_NO_SIDE_EFFECTS
15106 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15107 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15108 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15109 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15110 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15111 NetBSD news1500 news1700 news1800 news1900 news3700
15112 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15113 ns32016 ns32332 ns32k nsc32000
15114 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15115 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15116 pc532 pdp11 PGC PIC plexus PORTAR posix
15117 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15118 POSIX_C_SOURCE POSIX_SOURCE POWER
15119 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15120 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
15121 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15122 sony sony_news sonyrisc sparc sparclite spectrum
15123 stardent stdc STDC_EXT stratos sun sun3 sun386
15124 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15125 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15126 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15127 sysV68 sysV88 Tek4132 Tek4300 titan
15128 tower tower32 tower32_200 tower32_600 tower32_700
15129 tower32_800 tower32_850 tss
15130 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15131 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15132 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15133 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15134 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15135 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15136 z8000
15137 EOSH
15138 # Maybe put other stuff here too.
15139 cat <<EOSH >>Cppsym.know
15140 $osname
15141 EOSH
15142 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15143 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15144 $cat Cppsym.know > Cppsym.c
15145 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15146 $rm -f Cppsym.a Cppsym.b Cppsym.c
15147 cat <<EOSH > Cppsym
15148 $startsh
15149 if $test \$# -gt 0; then
15150     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15151     if $test -s Cppsym.got; then
15152         $rm -f Cppsym.got
15153         exit 0
15154     fi
15155     $rm -f Cppsym.got
15156     exit 1
15157 else
15158     $tr " " "$trnl" | ./Cppsym.try
15159     exit 0
15160 fi
15161 EOSH
15162 chmod +x Cppsym
15163 $eunicefix Cppsym
15164 cat <<EOSH > Cppsym.try
15165 $startsh
15166 cat <<'EOCP' > try.c
15167 #include <stdio.h>
15168 int main() {
15169 EOCP
15170 $awk \\
15171 EOSH
15172 cat <<'EOSH' >> Cppsym.try
15173 'length($1) > 0 {
15174     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
15175     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
15176     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
15177     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
15178 }'       >> try.c
15179 echo '}' >> try.c
15180 EOSH
15181 cat <<EOSH >> Cppsym.try
15182 ccflags="$ccflags"
15183 case "$osname-$gccversion" in
15184 irix-) ccflags="\$ccflags -woff 1178" ;;
15185 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15186 esac
15187 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15188 EOSH
15189 chmod +x Cppsym.try
15190 $eunicefix Cppsym.try
15191 ./Cppsym < Cppsym.know > Cppsym.true
15192 : now check the C compiler for additional symbols
15193 postprocess_cc_v=''
15194 case "$osname" in
15195 aix) postprocess_cc_v="|$tr , ' '" ;;
15196 esac
15197 $cat >ccsym <<EOS
15198 $startsh
15199 $cat >tmp.c <<EOF
15200 extern int foo;
15201 EOF
15202 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15203 do
15204         case "\$i" in
15205         -D*) echo "\$i" | $sed 's/^-D//';;
15206         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15207         esac
15208 done
15209 $rm -f try.c
15210 EOS
15211 postprocess_cc_v=''
15212 chmod +x ccsym
15213 $eunicefix ccsym
15214 ./ccsym > ccsym1.raw
15215 if $test -s ccsym1.raw; then
15216        $sort ccsym1.raw | $uniq >ccsym.raw
15217 else
15218        mv ccsym1.raw ccsym.raw
15219 fi
15220
15221 $awk '/\=/ { print $0; next }
15222         { print $0"=1" }' ccsym.raw >ccsym.list
15223 $awk '/\=/ { print $0; next }
15224         { print $0"=1" }' Cppsym.true >ccsym.true
15225 $comm -13 ccsym.true ccsym.list >ccsym.own
15226 $comm -12 ccsym.true ccsym.list >ccsym.com
15227 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15228 also=''
15229 if $test -z ccsym.raw; then
15230         echo "Your C compiler doesn't seem to define any symbols!" >&4
15231         echo " "
15232         echo "However, your C preprocessor defines the following symbols:"
15233         $cat Cppsym.true
15234         ccsymbols=''
15235         cppsymbols=`$cat Cppsym.true`
15236         cppsymbols=`echo $cppsymbols`
15237         cppccsymbols="$cppsymbols"
15238 else
15239         if $test -s ccsym.com; then
15240                 echo "Your C compiler and pre-processor define these symbols:"
15241                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15242                 also='also '
15243                 symbols='ones'
15244                 cppccsymbols=`$cat ccsym.com`
15245                 cppccsymbols=`echo $cppccsymbols`
15246                 $test "$silent" || sleep 1
15247         fi
15248         if $test -s ccsym.cpp; then
15249                 $test "$also" && echo " "
15250                 echo "Your C pre-processor ${also}defines the following symbols:"
15251                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15252                 also='further '
15253                 cppsymbols=`$cat ccsym.cpp`
15254                 cppsymbols=`echo $cppsymbols`
15255                 $test "$silent" || sleep 1
15256         fi
15257         if $test -s ccsym.own; then
15258                 $test "$also" && echo " "
15259                 echo "Your C compiler ${also}defines the following cpp symbols:"
15260                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15261                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15262                 ccsymbols=`$cat ccsym.own`
15263                 ccsymbols=`echo $ccsymbols`
15264                 $test "$silent" || sleep 1
15265         fi
15266 fi
15267 $rm -f ccsym* Cppsym.*
15268
15269 : see if this is a termio system
15270 val="$undef"
15271 val2="$undef"
15272 val3="$undef"
15273 if $test `./findhdr termios.h`; then
15274         set tcsetattr i_termios
15275         eval $inlibc
15276         val3="$i_termios"
15277 fi
15278 echo " "
15279 case "$val3" in
15280 "$define") echo "You have POSIX termios.h... good!" >&4;;
15281 *) if ./Cppsym pyr; then
15282                 case "`/bin/universe`" in
15283                 ucb) if $test `./findhdr sgtty.h`; then
15284                                 val2="$define"
15285                                 echo "<sgtty.h> found." >&4
15286                         else
15287                                 echo "System is pyramid with BSD universe."
15288                                 echo "<sgtty.h> not found--you could have problems." >&4
15289                         fi;;
15290                 *) if $test `./findhdr termio.h`; then
15291                                 val="$define"
15292                                 echo "<termio.h> found." >&4
15293                         else
15294                                 echo "System is pyramid with USG universe."
15295                                 echo "<termio.h> not found--you could have problems." >&4
15296                         fi;;
15297                 esac
15298         elif ./usg; then
15299                 if $test `./findhdr termio.h`; then
15300                         echo "<termio.h> found." >&4
15301                         val="$define"
15302                 elif $test `./findhdr sgtty.h`; then
15303                         echo "<sgtty.h> found." >&4
15304                         val2="$define"
15305                 else
15306 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15307                 fi
15308         else
15309                 if $test `./findhdr sgtty.h`; then
15310                         echo "<sgtty.h> found." >&4
15311                         val2="$define"
15312                 elif $test `./findhdr termio.h`; then
15313                         echo "<termio.h> found." >&4
15314                         val="$define"
15315                 else
15316 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15317                 fi
15318         fi;;
15319 esac
15320 set i_termio; eval $setvar
15321 val=$val2; set i_sgtty; eval $setvar
15322 val=$val3; set i_termios; eval $setvar
15323
15324 : see if this is a shadow.h system
15325 set shadow.h i_shadow
15326 eval $inhdr
15327
15328 : see if stddef is available
15329 set stddef.h i_stddef
15330 eval $inhdr
15331
15332 : see if this is a sunmath.h system
15333 set sunmath.h i_sunmath
15334 eval $inhdr
15335
15336 : see if sys/access.h is available
15337 set sys/access.h i_sysaccess
15338 eval $inhdr
15339
15340 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15341 set sys/filio.h i_sysfilio
15342 eval $inhdr
15343 echo " "
15344 if $test `./findhdr sys/ioctl.h`; then
15345         val="$define"
15346         echo '<sys/ioctl.h> found.' >&4
15347 else
15348         val="$undef"
15349         if $test $i_sysfilio = "$define"; then
15350             echo '<sys/ioctl.h> NOT found.' >&4
15351         else
15352                 $test $i_sgtty = "$define" && xxx="sgtty.h"
15353                 $test $i_termio = "$define" && xxx="termio.h"
15354                 $test $i_termios = "$define" && xxx="termios.h"
15355 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15356         fi
15357 fi
15358 set i_sysioctl
15359 eval $setvar
15360
15361
15362 : see if this is a syslog.h system
15363 set syslog.h i_syslog
15364 eval $inhdr
15365
15366
15367 : see if this is a sys/mode.h system
15368 set sys/mode.h i_sysmode
15369 eval $inhdr
15370
15371 : see if sys/resource.h has to be included
15372 set sys/resource.h i_sysresrc
15373 eval $inhdr
15374
15375 : see if sys/security.h is available
15376 set sys/security.h i_syssecrt
15377 eval $inhdr
15378
15379 : see if this is a sys/statvfs.h system
15380 set sys/statvfs.h i_sysstatvfs
15381 eval $inhdr
15382
15383 : see if this is a sys/uio.h system
15384 set sys/uio.h i_sysuio
15385 eval $inhdr
15386
15387 : see if this is a sys/un.h system
15388 set sys/un.h i_sysun
15389 eval $inhdr
15390
15391
15392 : see if this is a sys/utsname.h system
15393 set sys/utsname.h i_sysutsname
15394 eval $inhdr
15395
15396 : see if this is a syswait system
15397 set sys/wait.h i_syswait
15398 eval $inhdr
15399
15400 : see if this is a ustat.h system
15401 set ustat.h i_ustat
15402 eval $inhdr
15403
15404 : see if this is an utime system
15405 set utime.h i_utime
15406 eval $inhdr
15407
15408 : see if this is a values.h system
15409 set values.h i_values
15410 eval $inhdr
15411
15412 : see if this is a vfork system
15413 case "$d_vfork" in
15414 "$define")
15415         set vfork.h i_vfork
15416         eval $inhdr
15417         ;;
15418 *)
15419         i_vfork="$undef"
15420         ;;
15421 esac
15422
15423 : see if gdbm.h is available
15424 set gdbm.h t_gdbm
15425 eval $inhdr
15426 case "$t_gdbm" in
15427 $define)
15428         : see if gdbm_open exists
15429         set gdbm_open d_gdbm_open
15430         eval $inlibc
15431         case "$d_gdbm_open" in
15432         $undef)
15433                 t_gdbm="$undef"
15434                 echo "We won't be including <gdbm.h>"
15435                 ;;
15436         esac
15437         ;;
15438 esac
15439 val="$t_gdbm"
15440 set i_gdbm
15441 eval $setvar
15442
15443 echo " "
15444 echo "Looking for extensions..." >&4
15445 : If we are using the old config.sh, known_extensions may contain
15446 : old or inaccurate or duplicate values.
15447 known_extensions=''
15448 nonxs_extensions=''
15449 : We do not use find because it might not be available.
15450 : We do not just use MANIFEST because the user may have dropped
15451 : some additional extensions into the source tree and expect them
15452 : to be built.
15453
15454 : Function to recursively find available extensions, ignoring DynaLoader
15455 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15456 find_extensions='
15457     for xxx in *; do
15458        case "$xxx" in
15459            DynaLoader|dynaload) ;;
15460            *)
15461            if $test -f $xxx/$xxx.xs; then
15462                known_extensions="$known_extensions $1$xxx";
15463            elif $test -f $xxx/Makefile.PL; then
15464                nonxs_extensions="$nonxs_extensions $1$xxx";
15465            else
15466                if $test -d $xxx -a $# -lt 10; then
15467                    set $1$xxx/ $*;
15468                    cd $xxx;
15469                    eval $find_extensions;
15470                    cd ..;
15471                    shift;
15472                fi;
15473            fi
15474            ;;
15475        esac;
15476     done'
15477 tdir=`pwd`
15478 cd $rsrc/ext
15479 set X
15480 shift
15481 eval $find_extensions
15482 set X $nonxs_extensions
15483 shift
15484 nonxs_extensions="$*"
15485 set X $known_extensions
15486 shift
15487 known_extensions="$*"
15488 cd $tdir
15489
15490 : Now see which are supported on this system.
15491 avail_ext=''
15492 for xxx in $known_extensions ; do
15493         case "$xxx" in
15494         DB_File|db_file)
15495                 case "$i_db" in
15496                 $define) avail_ext="$avail_ext $xxx" ;;
15497                 esac
15498                 ;;
15499         GDBM_File|gdbm_fil)
15500                 case "$i_gdbm" in 
15501                 $define) avail_ext="$avail_ext $xxx" ;;
15502                 esac
15503                 ;;
15504         NDBM_File|ndbm_fil)
15505                 case "$i_ndbm" in
15506                 $define)
15507                     case "$osname-$use64bitint" in
15508                     hpux-define)
15509                         case "$libs" in
15510                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15511                         esac
15512                         ;;
15513                     *) avail_ext="$avail_ext $xxx" ;;
15514                     esac
15515                     ;;
15516                 esac
15517                 ;;
15518         ODBM_File|odbm_fil) 
15519                 case "${i_dbm}${i_rpcsvcdbm}" in
15520                 *"${define}"*)
15521                     case "$osname-$use64bitint" in
15522                     hpux-define)
15523                         case "$libs" in
15524                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15525                         esac
15526                         ;;
15527                     *) avail_ext="$avail_ext $xxx" ;;
15528                     esac
15529                     ;;
15530                 esac
15531                 ;;
15532         POSIX|posix)
15533                 case "$useposix" in
15534                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15535                 esac
15536                 ;;
15537         Opcode|opcode)
15538                 case "$useopcode" in
15539                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15540                 esac
15541                 ;;
15542         Socket|socket)
15543                 case "$d_socket" in 
15544                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15545                 esac
15546                 ;;
15547         Sys/Syslog|sys/syslog)
15548                 : XXX syslog requires socket
15549                 case "$d_socket" in 
15550                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15551                 esac
15552                 ;;
15553         Thread|thread)
15554                 case "$usethreads" in 
15555                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15556                 esac
15557                 ;;
15558         IPC/SysV|ipc/sysv)
15559                 : XXX Do we need a useipcsysv variable here
15560                 case "${d_msg}${d_sem}${d_shm}" in 
15561                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15562                 esac
15563                 ;;
15564         *)      avail_ext="$avail_ext $xxx"
15565                 ;;
15566         esac
15567 done
15568
15569 set X $avail_ext
15570 shift
15571 avail_ext="$*"
15572
15573 : Now see which nonxs extensions are supported on this system.
15574 : For now assume all are.
15575 nonxs_ext=''
15576 for xxx in $nonxs_extensions ; do
15577         case "$xxx" in
15578         *)      nonxs_ext="$nonxs_ext $xxx"
15579                 ;;
15580         esac
15581 done
15582
15583 set X $nonxs_ext
15584 shift
15585 nonxs_ext="$*"
15586
15587 case $usedl in
15588 $define)
15589         $cat <<EOM
15590 A number of extensions are supplied with $package.  You may choose to
15591 compile these extensions for dynamic loading (the default), compile
15592 them into the $package executable (static loading), or not include
15593 them at all.  Answer "none" to include no extensions.
15594 Note that DynaLoader is always built and need not be mentioned here.
15595
15596 EOM
15597         case "$dynamic_ext" in
15598         '') dflt="$avail_ext" ;;
15599         *)      dflt="$dynamic_ext"
15600                 # Perhaps we are reusing an old out-of-date config.sh.
15601                 case "$hint" in
15602                 previous)
15603                         if test X"$dynamic_ext" != X"$avail_ext"; then
15604                                 $cat <<EOM
15605 NOTICE:  Your previous config.sh list may be incorrect. 
15606 The extensions now available to you are 
15607         ${avail_ext}
15608 but the default list from your previous config.sh is
15609         ${dynamic_ext} 
15610
15611 EOM
15612                         fi
15613                         ;;
15614                 esac
15615                 ;;
15616         esac
15617         case "$dflt" in
15618         '')     dflt=none;;
15619         esac
15620         rp="What extensions do you wish to load dynamically?"
15621         . ./myread
15622         case "$ans" in
15623         none) dynamic_ext=' ' ;;
15624         *) dynamic_ext="$ans" ;;
15625         esac
15626
15627         case "$static_ext" in
15628         '')
15629                 : Exclude those already listed in dynamic linking
15630                 dflt=''
15631                 for xxx in $avail_ext; do
15632                         case " $dynamic_ext " in
15633                         *" $xxx "*) ;;
15634                         *) dflt="$dflt $xxx" ;;
15635                         esac
15636                 done
15637                 set X $dflt
15638                 shift
15639                 dflt="$*"
15640                 ;;
15641         *)  dflt="$static_ext" 
15642                 ;;
15643         esac
15644
15645         case "$dflt" in
15646         '')     dflt=none;;
15647         esac
15648         rp="What extensions do you wish to load statically?"
15649         . ./myread
15650         case "$ans" in
15651         none) static_ext=' ' ;;
15652         *) static_ext="$ans" ;;
15653         esac
15654         ;;
15655 *)
15656         $cat <<EOM
15657 A number of extensions are supplied with $package.  Answer "none" 
15658 to include no extensions. 
15659 Note that DynaLoader is always built and need not be mentioned here.
15660
15661 EOM
15662         case "$static_ext" in
15663         '') dflt="$avail_ext" ;;
15664         *)      dflt="$static_ext"
15665                 # Perhaps we are reusing an old out-of-date config.sh.
15666                 case "$hint" in
15667                 previous)
15668                         if test X"$static_ext" != X"$avail_ext"; then
15669                                 $cat <<EOM
15670 NOTICE:  Your previous config.sh list may be incorrect. 
15671 The extensions now available to you are 
15672         ${avail_ext}
15673 but the default list from your previous config.sh is
15674         ${static_ext} 
15675
15676 EOM
15677                         fi
15678                         ;;
15679                 esac
15680                 ;;
15681         esac
15682         : Exclude those that are not xs extensions
15683         case "$dflt" in
15684         '')     dflt=none;;
15685         esac
15686         rp="What extensions do you wish to include?"
15687         . ./myread
15688         case "$ans" in
15689         none) static_ext=' ' ;;
15690         *) static_ext="$ans" ;;
15691         esac
15692         ;;
15693 esac
15694
15695 set X $dynamic_ext $static_ext $nonxs_ext
15696 shift
15697 extensions="$*"
15698
15699 : Remove libraries needed only for extensions
15700 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15701 : The exception is SunOS 4.x, which needs them.
15702 case "${osname}X${osvers}" in
15703 sunos*X4*)
15704     perllibs="$libs"
15705     ;;
15706 *) case "$usedl" in
15707     $define|true|[yY]*)
15708             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15709             shift
15710             perllibs="$*"
15711             ;;
15712     *)  perllibs="$libs"
15713             ;;
15714     esac
15715     ;;
15716 esac
15717
15718 : Remove build directory name from cppstdin so it can be used from
15719 : either the present location or the final installed location.
15720 echo " "
15721 : Get out of the UU directory to get correct path name.
15722 cd ..
15723 case "$cppstdin" in
15724 `pwd`/cppstdin)
15725         echo "Stripping down cppstdin path name"
15726         cppstdin=cppstdin
15727         ;;
15728 esac
15729 cd UU
15730
15731 : end of configuration questions
15732 echo " "
15733 echo "End of configuration questions."
15734 echo " "
15735
15736 : back to where it started
15737 if test -d ../UU; then
15738         cd ..
15739 fi
15740
15741 : configuration may be patched via a 'config.over' file
15742 if $test -f config.over; then
15743         echo " "
15744         dflt=y
15745         rp='I see a config.over file.  Do you wish to load it?'
15746         . UU/myread
15747         case "$ans" in
15748         n*) echo "OK, I'll ignore it.";;
15749         *)      . ./config.over
15750                 echo "Configuration override changes have been loaded."
15751                 ;;
15752         esac
15753 fi
15754
15755 : in case they want portability, strip down executable paths
15756 case "$d_portable" in
15757 "$define")
15758         echo " "
15759         echo "Stripping down executable paths..." >&4
15760         for file in $loclist $trylist; do
15761                 eval temp=\$$file
15762                 eval $file=`basename $temp`
15763         done
15764         ;;
15765 esac
15766
15767 : create config.sh file
15768 echo " "
15769 echo "Creating config.sh..." >&4
15770 $spitshell <<EOT >config.sh
15771 $startsh
15772 #
15773 # This file was produced by running the Configure script. It holds all the
15774 # definitions figured out by Configure. Should you modify one of these values,
15775 # do not forget to propagate your changes by running "Configure -der". You may
15776 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15777 #
15778
15779 # Package name      : $package
15780 # Source directory  : $src
15781 # Configuration time: $cf_time
15782 # Configured by     : $cf_by
15783 # Target system     : $myuname
15784
15785 Author='$Author'
15786 Date='$Date'
15787 Header='$Header'
15788 Id='$Id'
15789 Locker='$Locker'
15790 Log='$Log'
15791 Mcc='$Mcc'
15792 RCSfile='$RCSfile'
15793 Revision='$Revision'
15794 Source='$Source'
15795 State='$State'
15796 _a='$_a'
15797 _exe='$_exe'
15798 _o='$_o'
15799 afs='$afs'
15800 alignbytes='$alignbytes'
15801 ansi2knr='$ansi2knr'
15802 aphostname='$aphostname'
15803 api_revision='$api_revision'
15804 api_subversion='$api_subversion'
15805 api_version='$api_version'
15806 api_versionstring='$api_versionstring'
15807 ar='$ar'
15808 archlib='$archlib'
15809 archlibexp='$archlibexp'
15810 archname64='$archname64'
15811 archname='$archname'
15812 archobjs='$archobjs'
15813 awk='$awk'
15814 baserev='$baserev'
15815 bash='$bash'
15816 bin='$bin'
15817 bincompat5005='$bincompat5005'
15818 binexp='$binexp'
15819 bison='$bison'
15820 byacc='$byacc'
15821 byteorder='$byteorder'
15822 c='$c'
15823 castflags='$castflags'
15824 cat='$cat'
15825 cc='$cc'
15826 cccdlflags='$cccdlflags'
15827 ccdlflags='$ccdlflags'
15828 ccflags='$ccflags'
15829 ccflags_uselargefiles='$ccflags_uselargefiles'
15830 ccname='$ccname'
15831 ccsymbols='$ccsymbols'
15832 ccversion='$ccversion'
15833 cf_by='$cf_by'
15834 cf_email='$cf_email'
15835 cf_time='$cf_time'
15836 charsize='$charsize'
15837 chgrp='$chgrp'
15838 chmod='$chmod'
15839 chown='$chown'
15840 clocktype='$clocktype'
15841 comm='$comm'
15842 compress='$compress'
15843 contains='$contains'
15844 cp='$cp'
15845 cpio='$cpio'
15846 cpp='$cpp'
15847 cpp_stuff='$cpp_stuff'
15848 cppccsymbols='$cppccsymbols'
15849 cppflags='$cppflags'
15850 cpplast='$cpplast'
15851 cppminus='$cppminus'
15852 cpprun='$cpprun'
15853 cppstdin='$cppstdin'
15854 cppsymbols='$cppsymbols'
15855 crosscompile='$crosscompile'
15856 cryptlib='$cryptlib'
15857 csh='$csh'
15858 d_Gconvert='$d_Gconvert'
15859 d_PRIEUldbl='$d_PRIEUldbl'
15860 d_PRIFUldbl='$d_PRIFUldbl'
15861 d_PRIGUldbl='$d_PRIGUldbl'
15862 d_PRIXU64='$d_PRIXU64'
15863 d_PRId64='$d_PRId64'
15864 d_PRIeldbl='$d_PRIeldbl'
15865 d_PRIfldbl='$d_PRIfldbl'
15866 d_PRIgldbl='$d_PRIgldbl'
15867 d_PRIi64='$d_PRIi64'
15868 d_PRIo64='$d_PRIo64'
15869 d_PRIu64='$d_PRIu64'
15870 d_PRIx64='$d_PRIx64'
15871 d_SCNfldbl='$d_SCNfldbl'
15872 d__fwalk='$d__fwalk'
15873 d_access='$d_access'
15874 d_accessx='$d_accessx'
15875 d_alarm='$d_alarm'
15876 d_archlib='$d_archlib'
15877 d_atolf='$d_atolf'
15878 d_atoll='$d_atoll'
15879 d_attribut='$d_attribut'
15880 d_bcmp='$d_bcmp'
15881 d_bcopy='$d_bcopy'
15882 d_bincompat5005='$d_bincompat5005'
15883 d_bsd='$d_bsd'
15884 d_bsdgetpgrp='$d_bsdgetpgrp'
15885 d_bsdsetpgrp='$d_bsdsetpgrp'
15886 d_bzero='$d_bzero'
15887 d_casti32='$d_casti32'
15888 d_castneg='$d_castneg'
15889 d_charvspr='$d_charvspr'
15890 d_chown='$d_chown'
15891 d_chroot='$d_chroot'
15892 d_chsize='$d_chsize'
15893 d_closedir='$d_closedir'
15894 d_const='$d_const'
15895 d_crypt='$d_crypt'
15896 d_csh='$d_csh'
15897 d_cuserid='$d_cuserid'
15898 d_dbl_dig='$d_dbl_dig'
15899 d_difftime='$d_difftime'
15900 d_dirnamlen='$d_dirnamlen'
15901 d_dlerror='$d_dlerror'
15902 d_dlopen='$d_dlopen'
15903 d_dlsymun='$d_dlsymun'
15904 d_dosuid='$d_dosuid'
15905 d_drand48proto='$d_drand48proto'
15906 d_dup2='$d_dup2'
15907 d_eaccess='$d_eaccess'
15908 d_endgrent='$d_endgrent'
15909 d_endhent='$d_endhent'
15910 d_endnent='$d_endnent'
15911 d_endpent='$d_endpent'
15912 d_endpwent='$d_endpwent'
15913 d_endsent='$d_endsent'
15914 d_eofnblk='$d_eofnblk'
15915 d_eunice='$d_eunice'
15916 d_fchmod='$d_fchmod'
15917 d_fchown='$d_fchown'
15918 d_fcntl='$d_fcntl'
15919 d_fcntl_can_lock='$d_fcntl_can_lock'
15920 d_fd_macros='$d_fd_macros'
15921 d_fd_set='$d_fd_set'
15922 d_fds_bits='$d_fds_bits'
15923 d_fgetpos='$d_fgetpos'
15924 d_flexfnam='$d_flexfnam'
15925 d_flock='$d_flock'
15926 d_fork='$d_fork'
15927 d_fpathconf='$d_fpathconf'
15928 d_fpos64_t='$d_fpos64_t'
15929 d_frexpl='$d_frexpl'
15930 d_fs_data_s='$d_fs_data_s'
15931 d_fseeko='$d_fseeko'
15932 d_fsetpos='$d_fsetpos'
15933 d_fstatfs='$d_fstatfs'
15934 d_fstatvfs='$d_fstatvfs'
15935 d_fsync='$d_fsync'
15936 d_ftello='$d_ftello'
15937 d_ftime='$d_ftime'
15938 d_getcwd='$d_getcwd'
15939 d_getespwnam='$d_getespwnam'
15940 d_getfsstat='$d_getfsstat'
15941 d_getgrent='$d_getgrent'
15942 d_getgrps='$d_getgrps'
15943 d_gethbyaddr='$d_gethbyaddr'
15944 d_gethbyname='$d_gethbyname'
15945 d_gethent='$d_gethent'
15946 d_gethname='$d_gethname'
15947 d_gethostprotos='$d_gethostprotos'
15948 d_getlogin='$d_getlogin'
15949 d_getmnt='$d_getmnt'
15950 d_getmntent='$d_getmntent'
15951 d_getnbyaddr='$d_getnbyaddr'
15952 d_getnbyname='$d_getnbyname'
15953 d_getnent='$d_getnent'
15954 d_getnetprotos='$d_getnetprotos'
15955 d_getpagsz='$d_getpagsz'
15956 d_getpbyname='$d_getpbyname'
15957 d_getpbynumber='$d_getpbynumber'
15958 d_getpent='$d_getpent'
15959 d_getpgid='$d_getpgid'
15960 d_getpgrp2='$d_getpgrp2'
15961 d_getpgrp='$d_getpgrp'
15962 d_getppid='$d_getppid'
15963 d_getprior='$d_getprior'
15964 d_getprotoprotos='$d_getprotoprotos'
15965 d_getprpwnam='$d_getprpwnam'
15966 d_getpwent='$d_getpwent'
15967 d_getsbyname='$d_getsbyname'
15968 d_getsbyport='$d_getsbyport'
15969 d_getsent='$d_getsent'
15970 d_getservprotos='$d_getservprotos'
15971 d_getspnam='$d_getspnam'
15972 d_gettimeod='$d_gettimeod'
15973 d_gnulibc='$d_gnulibc'
15974 d_grpasswd='$d_grpasswd'
15975 d_hasmntopt='$d_hasmntopt'
15976 d_htonl='$d_htonl'
15977 d_iconv='$d_iconv'
15978 d_index='$d_index'
15979 d_inetaton='$d_inetaton'
15980 d_int64_t='$d_int64_t'
15981 d_isascii='$d_isascii'
15982 d_isnan='$d_isnan'
15983 d_isnanl='$d_isnanl'
15984 d_killpg='$d_killpg'
15985 d_lchown='$d_lchown'
15986 d_ldbl_dig='$d_ldbl_dig'
15987 d_link='$d_link'
15988 d_locconv='$d_locconv'
15989 d_lockf='$d_lockf'
15990 d_longdbl='$d_longdbl'
15991 d_longlong='$d_longlong'
15992 d_lseekproto='$d_lseekproto'
15993 d_lstat='$d_lstat'
15994 d_madvise='$d_madvise'
15995 d_mblen='$d_mblen'
15996 d_mbstowcs='$d_mbstowcs'
15997 d_mbtowc='$d_mbtowc'
15998 d_memchr='$d_memchr'
15999 d_memcmp='$d_memcmp'
16000 d_memcpy='$d_memcpy'
16001 d_memmove='$d_memmove'
16002 d_memset='$d_memset'
16003 d_mkdir='$d_mkdir'
16004 d_mkdtemp='$d_mkdtemp'
16005 d_mkfifo='$d_mkfifo'
16006 d_mkstemp='$d_mkstemp'
16007 d_mkstemps='$d_mkstemps'
16008 d_mktime='$d_mktime'
16009 d_mmap='$d_mmap'
16010 d_modfl='$d_modfl'
16011 d_mprotect='$d_mprotect'
16012 d_msg='$d_msg'
16013 d_msg_ctrunc='$d_msg_ctrunc'
16014 d_msg_dontroute='$d_msg_dontroute'
16015 d_msg_oob='$d_msg_oob'
16016 d_msg_peek='$d_msg_peek'
16017 d_msg_proxy='$d_msg_proxy'
16018 d_msgctl='$d_msgctl'
16019 d_msgget='$d_msgget'
16020 d_msgrcv='$d_msgrcv'
16021 d_msgsnd='$d_msgsnd'
16022 d_msync='$d_msync'
16023 d_munmap='$d_munmap'
16024 d_mymalloc='$d_mymalloc'
16025 d_nice='$d_nice'
16026 d_nv_preserves_uv='$d_nv_preserves_uv'
16027 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16028 d_off64_t='$d_off64_t'
16029 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16030 d_oldpthreads='$d_oldpthreads'
16031 d_oldsock='$d_oldsock'
16032 d_open3='$d_open3'
16033 d_pathconf='$d_pathconf'
16034 d_pause='$d_pause'
16035 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16036 d_phostname='$d_phostname'
16037 d_pipe='$d_pipe'
16038 d_poll='$d_poll'
16039 d_portable='$d_portable'
16040 d_pthread_yield='$d_pthread_yield'
16041 d_pwage='$d_pwage'
16042 d_pwchange='$d_pwchange'
16043 d_pwclass='$d_pwclass'
16044 d_pwcomment='$d_pwcomment'
16045 d_pwexpire='$d_pwexpire'
16046 d_pwgecos='$d_pwgecos'
16047 d_pwpasswd='$d_pwpasswd'
16048 d_pwquota='$d_pwquota'
16049 d_qgcvt='$d_qgcvt'
16050 d_quad='$d_quad'
16051 d_readdir='$d_readdir'
16052 d_readlink='$d_readlink'
16053 d_rename='$d_rename'
16054 d_rewinddir='$d_rewinddir'
16055 d_rmdir='$d_rmdir'
16056 d_safebcpy='$d_safebcpy'
16057 d_safemcpy='$d_safemcpy'
16058 d_sanemcmp='$d_sanemcmp'
16059 d_sbrkproto='$d_sbrkproto'
16060 d_sched_yield='$d_sched_yield'
16061 d_scm_rights='$d_scm_rights'
16062 d_seekdir='$d_seekdir'
16063 d_select='$d_select'
16064 d_sem='$d_sem'
16065 d_semctl='$d_semctl'
16066 d_semctl_semid_ds='$d_semctl_semid_ds'
16067 d_semctl_semun='$d_semctl_semun'
16068 d_semget='$d_semget'
16069 d_semop='$d_semop'
16070 d_setegid='$d_setegid'
16071 d_seteuid='$d_seteuid'
16072 d_setgrent='$d_setgrent'
16073 d_setgrps='$d_setgrps'
16074 d_sethent='$d_sethent'
16075 d_setlinebuf='$d_setlinebuf'
16076 d_setlocale='$d_setlocale'
16077 d_setnent='$d_setnent'
16078 d_setpent='$d_setpent'
16079 d_setpgid='$d_setpgid'
16080 d_setpgrp2='$d_setpgrp2'
16081 d_setpgrp='$d_setpgrp'
16082 d_setprior='$d_setprior'
16083 d_setproctitle='$d_setproctitle'
16084 d_setpwent='$d_setpwent'
16085 d_setregid='$d_setregid'
16086 d_setresgid='$d_setresgid'
16087 d_setresuid='$d_setresuid'
16088 d_setreuid='$d_setreuid'
16089 d_setrgid='$d_setrgid'
16090 d_setruid='$d_setruid'
16091 d_setsent='$d_setsent'
16092 d_setsid='$d_setsid'
16093 d_setvbuf='$d_setvbuf'
16094 d_sfio='$d_sfio'
16095 d_shm='$d_shm'
16096 d_shmat='$d_shmat'
16097 d_shmatprototype='$d_shmatprototype'
16098 d_shmctl='$d_shmctl'
16099 d_shmdt='$d_shmdt'
16100 d_shmget='$d_shmget'
16101 d_sigaction='$d_sigaction'
16102 d_sigprocmask='$d_sigprocmask'
16103 d_sigsetjmp='$d_sigsetjmp'
16104 d_socket='$d_socket'
16105 d_socklen_t='$d_socklen_t'
16106 d_sockpair='$d_sockpair'
16107 d_socks5_init='$d_socks5_init'
16108 d_sqrtl='$d_sqrtl'
16109 d_statblks='$d_statblks'
16110 d_statfs_f_flags='$d_statfs_f_flags'
16111 d_statfs_s='$d_statfs_s'
16112 d_statvfs='$d_statvfs'
16113 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16114 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16115 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16116 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16117 d_stdio_stream_array='$d_stdio_stream_array'
16118 d_stdiobase='$d_stdiobase'
16119 d_stdstdio='$d_stdstdio'
16120 d_strchr='$d_strchr'
16121 d_strcoll='$d_strcoll'
16122 d_strctcpy='$d_strctcpy'
16123 d_strerrm='$d_strerrm'
16124 d_strerror='$d_strerror'
16125 d_strtod='$d_strtod'
16126 d_strtol='$d_strtol'
16127 d_strtold='$d_strtold'
16128 d_strtoll='$d_strtoll'
16129 d_strtoq='$d_strtoq'
16130 d_strtoul='$d_strtoul'
16131 d_strtoull='$d_strtoull'
16132 d_strtouq='$d_strtouq'
16133 d_strxfrm='$d_strxfrm'
16134 d_suidsafe='$d_suidsafe'
16135 d_symlink='$d_symlink'
16136 d_syscall='$d_syscall'
16137 d_sysconf='$d_sysconf'
16138 d_sysernlst='$d_sysernlst'
16139 d_syserrlst='$d_syserrlst'
16140 d_system='$d_system'
16141 d_tcgetpgrp='$d_tcgetpgrp'
16142 d_tcsetpgrp='$d_tcsetpgrp'
16143 d_telldir='$d_telldir'
16144 d_telldirproto='$d_telldirproto'
16145 d_time='$d_time'
16146 d_times='$d_times'
16147 d_truncate='$d_truncate'
16148 d_tzname='$d_tzname'
16149 d_umask='$d_umask'
16150 d_uname='$d_uname'
16151 d_union_semun='$d_union_semun'
16152 d_ustat='$d_ustat'
16153 d_vendorarch='$d_vendorarch'
16154 d_vendorbin='$d_vendorbin'
16155 d_vendorlib='$d_vendorlib'
16156 d_vfork='$d_vfork'
16157 d_void_closedir='$d_void_closedir'
16158 d_voidsig='$d_voidsig'
16159 d_voidtty='$d_voidtty'
16160 d_volatile='$d_volatile'
16161 d_vprintf='$d_vprintf'
16162 d_wait4='$d_wait4'
16163 d_waitpid='$d_waitpid'
16164 d_wcstombs='$d_wcstombs'
16165 d_wctomb='$d_wctomb'
16166 d_xenix='$d_xenix'
16167 date='$date'
16168 db_hashtype='$db_hashtype'
16169 db_prefixtype='$db_prefixtype'
16170 defvoidused='$defvoidused'
16171 direntrytype='$direntrytype'
16172 dlext='$dlext'
16173 dlsrc='$dlsrc'
16174 doublesize='$doublesize'
16175 drand01='$drand01'
16176 dynamic_ext='$dynamic_ext'
16177 eagain='$eagain'
16178 ebcdic='$ebcdic'
16179 echo='$echo'
16180 egrep='$egrep'
16181 emacs='$emacs'
16182 eunicefix='$eunicefix'
16183 exe_ext='$exe_ext'
16184 expr='$expr'
16185 extensions='$extensions'
16186 fflushNULL='$fflushNULL'
16187 fflushall='$fflushall'
16188 find='$find'
16189 firstmakefile='$firstmakefile'
16190 flex='$flex'
16191 fpossize='$fpossize'
16192 fpostype='$fpostype'
16193 freetype='$freetype'
16194 full_ar='$full_ar'
16195 full_csh='$full_csh'
16196 full_sed='$full_sed'
16197 gccosandvers='$gccosandvers'
16198 gccversion='$gccversion'
16199 gidformat='$gidformat'
16200 gidsign='$gidsign'
16201 gidsize='$gidsize'
16202 gidtype='$gidtype'
16203 glibpth='$glibpth'
16204 grep='$grep'
16205 groupcat='$groupcat'
16206 groupstype='$groupstype'
16207 gzip='$gzip'
16208 h_fcntl='$h_fcntl'
16209 h_sysfile='$h_sysfile'
16210 hint='$hint'
16211 hostcat='$hostcat'
16212 i16size='$i16size'
16213 i16type='$i16type'
16214 i32size='$i32size'
16215 i32type='$i32type'
16216 i64size='$i64size'
16217 i64type='$i64type'
16218 i8size='$i8size'
16219 i8type='$i8type'
16220 i_arpainet='$i_arpainet'
16221 i_bsdioctl='$i_bsdioctl'
16222 i_db='$i_db'
16223 i_dbm='$i_dbm'
16224 i_dirent='$i_dirent'
16225 i_dld='$i_dld'
16226 i_dlfcn='$i_dlfcn'
16227 i_fcntl='$i_fcntl'
16228 i_float='$i_float'
16229 i_gdbm='$i_gdbm'
16230 i_grp='$i_grp'
16231 i_iconv='$i_iconv'
16232 i_ieeefp='$i_ieeefp'
16233 i_inttypes='$i_inttypes'
16234 i_libutil='$i_libutil'
16235 i_limits='$i_limits'
16236 i_locale='$i_locale'
16237 i_machcthr='$i_machcthr'
16238 i_malloc='$i_malloc'
16239 i_math='$i_math'
16240 i_memory='$i_memory'
16241 i_mntent='$i_mntent'
16242 i_ndbm='$i_ndbm'
16243 i_netdb='$i_netdb'
16244 i_neterrno='$i_neterrno'
16245 i_netinettcp='$i_netinettcp'
16246 i_niin='$i_niin'
16247 i_poll='$i_poll'
16248 i_prot='$i_prot'
16249 i_pthread='$i_pthread'
16250 i_pwd='$i_pwd'
16251 i_rpcsvcdbm='$i_rpcsvcdbm'
16252 i_sfio='$i_sfio'
16253 i_sgtty='$i_sgtty'
16254 i_shadow='$i_shadow'
16255 i_socks='$i_socks'
16256 i_stdarg='$i_stdarg'
16257 i_stddef='$i_stddef'
16258 i_stdlib='$i_stdlib'
16259 i_string='$i_string'
16260 i_sunmath='$i_sunmath'
16261 i_sysaccess='$i_sysaccess'
16262 i_sysdir='$i_sysdir'
16263 i_sysfile='$i_sysfile'
16264 i_sysfilio='$i_sysfilio'
16265 i_sysin='$i_sysin'
16266 i_sysioctl='$i_sysioctl'
16267 i_syslog='$i_syslog'
16268 i_sysmman='$i_sysmman'
16269 i_sysmode='$i_sysmode'
16270 i_sysmount='$i_sysmount'
16271 i_sysndir='$i_sysndir'
16272 i_sysparam='$i_sysparam'
16273 i_sysresrc='$i_sysresrc'
16274 i_syssecrt='$i_syssecrt'
16275 i_sysselct='$i_sysselct'
16276 i_syssockio='$i_syssockio'
16277 i_sysstat='$i_sysstat'
16278 i_sysstatfs='$i_sysstatfs'
16279 i_sysstatvfs='$i_sysstatvfs'
16280 i_systime='$i_systime'
16281 i_systimek='$i_systimek'
16282 i_systimes='$i_systimes'
16283 i_systypes='$i_systypes'
16284 i_sysuio='$i_sysuio'
16285 i_sysun='$i_sysun'
16286 i_sysutsname='$i_sysutsname'
16287 i_sysvfs='$i_sysvfs'
16288 i_syswait='$i_syswait'
16289 i_termio='$i_termio'
16290 i_termios='$i_termios'
16291 i_time='$i_time'
16292 i_unistd='$i_unistd'
16293 i_ustat='$i_ustat'
16294 i_utime='$i_utime'
16295 i_values='$i_values'
16296 i_varargs='$i_varargs'
16297 i_varhdr='$i_varhdr'
16298 i_vfork='$i_vfork'
16299 ignore_versioned_solibs='$ignore_versioned_solibs'
16300 inc_version_list='$inc_version_list'
16301 inc_version_list_init='$inc_version_list_init'
16302 incpath='$incpath'
16303 inews='$inews'
16304 installarchlib='$installarchlib'
16305 installbin='$installbin'
16306 installman1dir='$installman1dir'
16307 installman3dir='$installman3dir'
16308 installprefix='$installprefix'
16309 installprefixexp='$installprefixexp'
16310 installprivlib='$installprivlib'
16311 installscript='$installscript'
16312 installsitearch='$installsitearch'
16313 installsitebin='$installsitebin'
16314 installsitelib='$installsitelib'
16315 installstyle='$installstyle'
16316 installusrbinperl='$installusrbinperl'
16317 installvendorarch='$installvendorarch'
16318 installvendorbin='$installvendorbin'
16319 installvendorlib='$installvendorlib'
16320 intsize='$intsize'
16321 issymlink='$issymlink'
16322 ivdformat='$ivdformat'
16323 ivsize='$ivsize'
16324 ivtype='$ivtype'
16325 known_extensions='$known_extensions'
16326 ksh='$ksh'
16327 ld='$ld'
16328 lddlflags='$lddlflags'
16329 ldflags='$ldflags'
16330 ldflags_uselargefiles='$ldflags_uselargefiles'
16331 ldlibpthname='$ldlibpthname'
16332 less='$less'
16333 lib_ext='$lib_ext'
16334 libc='$libc'
16335 libperl='$libperl'
16336 libpth='$libpth'
16337 libs='$libs'
16338 libsdirs='$libsdirs'
16339 libsfiles='$libsfiles'
16340 libsfound='$libsfound'
16341 libspath='$libspath'
16342 libswanted='$libswanted'
16343 libswanted_uselargefiles='$libswanted_uselargefiles'
16344 line='$line'
16345 lint='$lint'
16346 lkflags='$lkflags'
16347 ln='$ln'
16348 lns='$lns'
16349 locincpth='$locincpth'
16350 loclibpth='$loclibpth'
16351 longdblsize='$longdblsize'
16352 longlongsize='$longlongsize'
16353 longsize='$longsize'
16354 lp='$lp'
16355 lpr='$lpr'
16356 ls='$ls'
16357 lseeksize='$lseeksize'
16358 lseektype='$lseektype'
16359 mail='$mail'
16360 mailx='$mailx'
16361 make='$make'
16362 make_set_make='$make_set_make'
16363 mallocobj='$mallocobj'
16364 mallocsrc='$mallocsrc'
16365 malloctype='$malloctype'
16366 man1dir='$man1dir'
16367 man1direxp='$man1direxp'
16368 man1ext='$man1ext'
16369 man3dir='$man3dir'
16370 man3direxp='$man3direxp'
16371 man3ext='$man3ext'
16372 mips_type='$mips_type'
16373 mkdir='$mkdir'
16374 mmaptype='$mmaptype'
16375 modetype='$modetype'
16376 more='$more'
16377 multiarch='$multiarch'
16378 mv='$mv'
16379 myarchname='$myarchname'
16380 mydomain='$mydomain'
16381 myhostname='$myhostname'
16382 myuname='$myuname'
16383 n='$n'
16384 need_va_copy='$need_va_copy'
16385 netdb_hlen_type='$netdb_hlen_type'
16386 netdb_host_type='$netdb_host_type'
16387 netdb_name_type='$netdb_name_type'
16388 netdb_net_type='$netdb_net_type'
16389 nm='$nm'
16390 nm_opt='$nm_opt'
16391 nm_so_opt='$nm_so_opt'
16392 nonxs_ext='$nonxs_ext'
16393 nroff='$nroff'
16394 nvEUformat='$nvEUformat'
16395 nvFUformat='$nvFUformat'
16396 nvGUformat='$nvGUformat'
16397 nveformat='$nveformat'
16398 nvfformat='$nvfformat'
16399 nvgformat='$nvgformat'
16400 nvsize='$nvsize'
16401 nvtype='$nvtype'
16402 o_nonblock='$o_nonblock'
16403 obj_ext='$obj_ext'
16404 old_pthread_create_joinable='$old_pthread_create_joinable'
16405 optimize='$optimize'
16406 orderlib='$orderlib'
16407 osname='$osname'
16408 osvers='$osvers'
16409 otherlibdirs='$otherlibdirs'
16410 package='$package'
16411 pager='$pager'
16412 passcat='$passcat'
16413 patchlevel='$patchlevel'
16414 path_sep='$path_sep'
16415 perl5='$perl5'
16416 perl='$perl'
16417 perladmin='$perladmin'
16418 perllibs='$perllibs'
16419 perlpath='$perlpath'
16420 pg='$pg'
16421 phostname='$phostname'
16422 pidtype='$pidtype'
16423 plibpth='$plibpth'
16424 pm_apiversion='$pm_apiversion'
16425 pmake='$pmake'
16426 pr='$pr'
16427 prefix='$prefix'
16428 prefixexp='$prefixexp'
16429 privlib='$privlib'
16430 privlibexp='$privlibexp'
16431 prototype='$prototype'
16432 ptrsize='$ptrsize'
16433 quadkind='$quadkind'
16434 quadtype='$quadtype'
16435 randbits='$randbits'
16436 randfunc='$randfunc'
16437 randseedtype='$randseedtype'
16438 ranlib='$ranlib'
16439 rd_nodata='$rd_nodata'
16440 revision='$revision'
16441 rm='$rm'
16442 rmail='$rmail'
16443 runnm='$runnm'
16444 sPRIEUldbl='$sPRIEUldbl'
16445 sPRIFUldbl='$sPRIFUldbl'
16446 sPRIGUldbl='$sPRIGUldbl'
16447 sPRIXU64='$sPRIXU64'
16448 sPRId64='$sPRId64'
16449 sPRIeldbl='$sPRIeldbl'
16450 sPRIfldbl='$sPRIfldbl'
16451 sPRIgldbl='$sPRIgldbl'
16452 sPRIi64='$sPRIi64'
16453 sPRIo64='$sPRIo64'
16454 sPRIu64='$sPRIu64'
16455 sPRIx64='$sPRIx64'
16456 sSCNfldbl='$sSCNfldbl'
16457 sched_yield='$sched_yield'
16458 scriptdir='$scriptdir'
16459 scriptdirexp='$scriptdirexp'
16460 sed='$sed'
16461 seedfunc='$seedfunc'
16462 selectminbits='$selectminbits'
16463 selecttype='$selecttype'
16464 sendmail='$sendmail'
16465 sh='$sh'
16466 shar='$shar'
16467 sharpbang='$sharpbang'
16468 shmattype='$shmattype'
16469 shortsize='$shortsize'
16470 shrpenv='$shrpenv'
16471 shsharp='$shsharp'
16472 sig_count='$sig_count'
16473 sig_name='$sig_name'
16474 sig_name_init='$sig_name_init'
16475 sig_num='$sig_num'
16476 sig_num_init='$sig_num_init'
16477 sig_size='$sig_size'
16478 signal_t='$signal_t'
16479 sitearch='$sitearch'
16480 sitearchexp='$sitearchexp'
16481 sitebin='$sitebin'
16482 sitebinexp='$sitebinexp'
16483 sitelib='$sitelib'
16484 sitelib_stem='$sitelib_stem'
16485 sitelibexp='$sitelibexp'
16486 siteprefix='$siteprefix'
16487 siteprefixexp='$siteprefixexp'
16488 sizesize='$sizesize'
16489 sizetype='$sizetype'
16490 sleep='$sleep'
16491 smail='$smail'
16492 so='$so'
16493 sockethdr='$sockethdr'
16494 socketlib='$socketlib'
16495 socksizetype='$socksizetype'
16496 sort='$sort'
16497 spackage='$spackage'
16498 spitshell='$spitshell'
16499 src='$src'
16500 ssizetype='$ssizetype'
16501 startperl='$startperl'
16502 startsh='$startsh'
16503 static_ext='$static_ext'
16504 stdchar='$stdchar'
16505 stdio_base='$stdio_base'
16506 stdio_bufsiz='$stdio_bufsiz'
16507 stdio_cnt='$stdio_cnt'
16508 stdio_filbuf='$stdio_filbuf'
16509 stdio_ptr='$stdio_ptr'
16510 stdio_stream_array='$stdio_stream_array'
16511 strings='$strings'
16512 submit='$submit'
16513 subversion='$subversion'
16514 sysman='$sysman'
16515 tail='$tail'
16516 tar='$tar'
16517 tbl='$tbl'
16518 tee='$tee'
16519 test='$test'
16520 timeincl='$timeincl'
16521 timetype='$timetype'
16522 touch='$touch'
16523 tr='$tr'
16524 trnl='$trnl'
16525 troff='$troff'
16526 u16size='$u16size'
16527 u16type='$u16type'
16528 u32size='$u32size'
16529 u32type='$u32type'
16530 u64size='$u64size'
16531 u64type='$u64type'
16532 u8size='$u8size'
16533 u8type='$u8type'
16534 uidformat='$uidformat'
16535 uidsign='$uidsign'
16536 uidsize='$uidsize'
16537 uidtype='$uidtype'
16538 uname='$uname'
16539 uniq='$uniq'
16540 uquadtype='$uquadtype'
16541 use5005threads='$use5005threads'
16542 use64bitall='$use64bitall'
16543 use64bitint='$use64bitint'
16544 usedl='$usedl'
16545 useithreads='$useithreads'
16546 uselargefiles='$uselargefiles'
16547 uselongdouble='$uselongdouble'
16548 usemorebits='$usemorebits'
16549 usemultiplicity='$usemultiplicity'
16550 usemymalloc='$usemymalloc'
16551 usenm='$usenm'
16552 useopcode='$useopcode'
16553 useperlio='$useperlio'
16554 useposix='$useposix'
16555 usesfio='$usesfio'
16556 useshrplib='$useshrplib'
16557 usesocks='$usesocks'
16558 usethreads='$usethreads'
16559 usevendorprefix='$usevendorprefix'
16560 usevfork='$usevfork'
16561 usrinc='$usrinc'
16562 uuname='$uuname'
16563 uvXUformat='$uvXUformat'
16564 uvoformat='$uvoformat'
16565 uvsize='$uvsize'
16566 uvtype='$uvtype'
16567 uvuformat='$uvuformat'
16568 uvxformat='$uvxformat'
16569 vendorarch='$vendorarch'
16570 vendorarchexp='$vendorarchexp'
16571 vendorbin='$vendorbin'
16572 vendorbinexp='$vendorbinexp'
16573 vendorlib='$vendorlib'
16574 vendorlib_stem='$vendorlib_stem'
16575 vendorlibexp='$vendorlibexp'
16576 vendorprefix='$vendorprefix'
16577 vendorprefixexp='$vendorprefixexp'
16578 version='$version'
16579 versiononly='$versiononly'
16580 vi='$vi'
16581 voidflags='$voidflags'
16582 xlibpth='$xlibpth'
16583 xs_apiversion='$xs_apiversion'
16584 zcat='$zcat'
16585 zip='$zip'
16586 EOT
16587
16588 : Add in command line options if available
16589 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16590
16591 : add special variables
16592 $test -f $src/patchlevel.h && \
16593 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16594 echo "CONFIGDOTSH=true" >>config.sh
16595
16596 : propagate old symbols
16597 if $test -f UU/config.sh; then
16598         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16599         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16600         $sort | $uniq -u >UU/oldsyms
16601         set X `cat UU/oldsyms`
16602         shift
16603         case $# in
16604         0) ;;
16605         *)
16606                 cat <<EOM
16607 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16608 EOM
16609                 echo "# Variables propagated from previous config.sh file." >>config.sh
16610                 for sym in `cat UU/oldsyms`; do
16611                         echo "    Propagating $hint variable "'$'"$sym..."
16612                         eval 'tmp="$'"${sym}"'"'
16613                         echo "$tmp" | \
16614                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16615                 done
16616                 ;;
16617         esac
16618 fi
16619
16620 : Finish up by extracting the .SH files
16621 case "$alldone" in
16622 exit)
16623         $rm -rf UU
16624         echo "Done."
16625         exit 0
16626         ;;
16627 cont)
16628         ;;
16629 '')
16630         dflt=''
16631         nostick=true
16632         $cat <<EOM
16633
16634 If you'd like to make any changes to the config.sh file before I begin
16635 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16636
16637 EOM
16638         rp="Press return or use a shell escape to edit config.sh:"
16639         . UU/myread
16640         nostick=''
16641         case "$ans" in
16642         '') ;;
16643         *) : in case they cannot read
16644                 sh 1>&4 -c "$ans";;
16645         esac
16646         ;;
16647 esac
16648
16649 : if this fails, just run all the .SH files by hand
16650 . ./config.sh
16651
16652 echo " "
16653 exec 1>&4
16654 . ./UU/extract
16655
16656 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16657         dflt=y
16658         case "$silent" in
16659         true) ;;
16660         *)
16661                 $cat <<EOM
16662
16663 Now you need to generate make dependencies by running "$make depend".
16664 You might prefer to run it in background: "$make depend > makedepend.out &"
16665 It can take a while, so you might not want to run it right now.
16666
16667 EOM
16668                 ;;
16669         esac
16670         rp="Run $make depend now?"
16671         . UU/myread
16672         case "$ans" in
16673         y*)
16674                 $make depend && echo "Now you must run '$make'."
16675                 ;;
16676         *)
16677                 echo "You must run '$make depend' then '$make'."
16678                 ;;
16679         esac
16680 elif test -f [Mm]akefile; then
16681         echo " "
16682         echo "Now you must run a $make."
16683 else
16684         echo "Done."
16685 fi
16686
16687 if $test -f Policy.sh; then
16688     $cat <<EOM
16689
16690 If you compile $package on a different machine or from a different object
16691 directory, copy the Policy.sh file from this object directory to the
16692 new one before you run Configure -- this will help you with most of
16693 the policy defaults.
16694
16695 EOM
16696 fi
16697 if $test -f config.msg; then
16698     echo "Hmm.  I also noted the following information while running:"
16699     echo " "
16700     $cat config.msg >&4
16701     $rm -f config.msg
16702 fi
16703 $rm -f kit*isdone ark*isdone
16704 $rm -rf UU
16705
16706 : End of Configure
16707