dadb98acaecaabbd21fd98499cbd1f4a84c89c3e
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Wed Oct  4 01:09:27 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >/tmp/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 >/tmp/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 /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/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_access=''
312 d_accessx=''
313 d_alarm=''
314 d_attribut=''
315 d_bcmp=''
316 d_bcopy=''
317 d_bzero=''
318 d_casti32=''
319 castflags=''
320 d_castneg=''
321 d_chown=''
322 d_chroot=''
323 d_chsize=''
324 d_closedir=''
325 d_void_closedir=''
326 d_const=''
327 cryptlib=''
328 d_crypt=''
329 d_csh=''
330 full_csh=''
331 d_cuserid=''
332 d_dbl_dig=''
333 d_difftime=''
334 d_dlerror=''
335 d_dlopen=''
336 d_dlsymun=''
337 d_dosuid=''
338 d_suidsafe=''
339 d_drand48proto=''
340 d_dup2=''
341 d_eaccess=''
342 d_endgrent=''
343 d_endhent=''
344 d_endnent=''
345 d_endpent=''
346 d_endpwent=''
347 d_endsent=''
348 d_fchmod=''
349 d_fchown=''
350 d_fcntl=''
351 d_fd_macros=''
352 d_fd_set=''
353 d_fds_bits=''
354 d_fgetpos=''
355 d_flexfnam=''
356 d_flock=''
357 d_fork=''
358 d_fpos64_t=''
359 d_frexpl=''
360 d_fs_data_s=''
361 d_fseeko=''
362 d_fsetpos=''
363 d_fstatfs=''
364 d_ftello=''
365 d_ftime=''
366 d_gettimeod=''
367 d_Gconvert=''
368 d_getcwd=''
369 d_getespwnam=''
370 d_getfsstat=''
371 d_getgrent=''
372 d_getgrps=''
373 d_gethbyaddr=''
374 d_gethbyname=''
375 d_gethent=''
376 aphostname=''
377 d_gethname=''
378 d_phostname=''
379 d_uname=''
380 d_gethostprotos=''
381 d_getlogin=''
382 d_getmnt=''
383 d_getmntent=''
384 d_getnbyaddr=''
385 d_getnbyname=''
386 d_getnent=''
387 d_getnetprotos=''
388 d_getpent=''
389 d_getpgid=''
390 d_getpgrp2=''
391 d_bsdgetpgrp=''
392 d_getpgrp=''
393 d_getppid=''
394 d_getprior=''
395 d_getpbyname=''
396 d_getpbynumber=''
397 d_getprotoprotos=''
398 d_getprpwnam=''
399 d_getpwent=''
400 d_getsent=''
401 d_getservprotos=''
402 d_getspnam=''
403 d_getsbyname=''
404 d_getsbyport=''
405 d_gnulibc=''
406 d_hasmntopt=''
407 d_htonl=''
408 d_iconv=''
409 d_inetaton=''
410 d_int64_t=''
411 d_isascii=''
412 d_isnan=''
413 d_isnanl=''
414 d_killpg=''
415 d_lchown=''
416 d_ldbl_dig=''
417 d_link=''
418 d_locconv=''
419 d_lockf=''
420 d_longdbl=''
421 longdblsize=''
422 d_longlong=''
423 longlongsize=''
424 d_lseekproto=''
425 d_lstat=''
426 d_madvise=''
427 d_mblen=''
428 d_mbstowcs=''
429 d_mbtowc=''
430 d_memchr=''
431 d_memcmp=''
432 d_memcpy=''
433 d_memmove=''
434 d_memset=''
435 d_mkdir=''
436 d_mkdtemp=''
437 d_mkfifo=''
438 d_mkstemp=''
439 d_mkstemps=''
440 d_mktime=''
441 d_mmap=''
442 mmaptype=''
443 d_modfl=''
444 d_mprotect=''
445 d_msg=''
446 d_msgctl=''
447 d_msgget=''
448 d_msgrcv=''
449 d_msgsnd=''
450 d_msync=''
451 d_munmap=''
452 d_nice=''
453 d_off64_t=''
454 d_open3=''
455 d_fpathconf=''
456 d_pathconf=''
457 d_pause=''
458 d_pipe=''
459 d_poll=''
460 d_portable=''
461 d_old_pthread_create_joinable=''
462 old_pthread_create_joinable=''
463 d_pthread_yield=''
464 d_sched_yield=''
465 sched_yield=''
466 d_qgcvt=''
467 d_readdir=''
468 d_rewinddir=''
469 d_seekdir=''
470 d_telldir=''
471 d_readlink=''
472 d_rename=''
473 d_rmdir=''
474 d_safebcpy=''
475 d_safemcpy=''
476 d_sanemcmp=''
477 d_select=''
478 d_sem=''
479 d_semctl=''
480 d_semget=''
481 d_semop=''
482 d_setegid=''
483 d_seteuid=''
484 d_setgrent=''
485 d_setgrps=''
486 d_sethent=''
487 d_setlinebuf=''
488 d_setlocale=''
489 d_setnent=''
490 d_setpent=''
491 d_setpgid=''
492 d_setpgrp2=''
493 d_bsdsetpgrp=''
494 d_setpgrp=''
495 d_setprior=''
496 d_setproctitle=''
497 d_setpwent=''
498 d_setregid=''
499 d_setresgid=''
500 d_setresuid=''
501 d_setreuid=''
502 d_setrgid=''
503 d_setruid=''
504 d_setsent=''
505 d_setsid=''
506 d_setvbuf=''
507 d_sfio=''
508 usesfio=''
509 d_shm=''
510 d_shmat=''
511 d_shmatprototype=''
512 shmattype=''
513 d_shmctl=''
514 d_shmdt=''
515 d_shmget=''
516 d_sigaction=''
517 d_sigsetjmp=''
518 d_msg_ctrunc=''
519 d_msg_dontroute=''
520 d_msg_oob=''
521 d_msg_peek=''
522 d_msg_proxy=''
523 d_oldsock=''
524 d_scm_rights=''
525 d_socket=''
526 d_sockpair=''
527 sockethdr=''
528 socketlib=''
529 d_socklen_t=''
530 d_socks5_init=''
531 d_sqrtl=''
532 d_statblks=''
533 d_statfs_f_flags=''
534 d_statfs_s=''
535 d_fstatvfs=''
536 d_statvfs=''
537 d_stdio_cnt_lval=''
538 d_stdio_ptr_lval=''
539 d_stdiobase=''
540 d_stdstdio=''
541 stdio_base=''
542 stdio_bufsiz=''
543 stdio_cnt=''
544 stdio_filbuf=''
545 stdio_ptr=''
546 d_index=''
547 d_strchr=''
548 d_strcoll=''
549 d_strctcpy=''
550 d_strerrm=''
551 d_strerror=''
552 d_sysernlst=''
553 d_syserrlst=''
554 d_strtod=''
555 d_strtol=''
556 d_strtold=''
557 d_strtoll=''
558 d_strtoul=''
559 d_strtoull=''
560 d_strtouq=''
561 d_strxfrm=''
562 d_symlink=''
563 d_syscall=''
564 d_sysconf=''
565 d_system=''
566 d_tcgetpgrp=''
567 d_tcsetpgrp=''
568 d_telldirproto=''
569 d_time=''
570 timetype=''
571 clocktype=''
572 d_times=''
573 d_truncate=''
574 d_tzname=''
575 d_umask=''
576 d_semctl_semid_ds=''
577 d_semctl_semun=''
578 d_union_semun=''
579 d_ustat=''
580 d_vfork=''
581 usevfork=''
582 d_voidsig=''
583 signal_t=''
584 d_volatile=''
585 d_charvspr=''
586 d_vprintf=''
587 d_wait4=''
588 d_waitpid=''
589 d_wcstombs=''
590 d_wctomb=''
591 dlext=''
592 cccdlflags=''
593 ccdlflags=''
594 dlsrc=''
595 ld=''
596 lddlflags=''
597 usedl=''
598 doublesize=''
599 ebcdic=''
600 fflushNULL=''
601 fflushall=''
602 fpossize=''
603 fpostype=''
604 gccosandvers=''
605 gccversion=''
606 gidformat=''
607 gidsign=''
608 gidsize=''
609 gidtype=''
610 groupstype=''
611 h_fcntl=''
612 h_sysfile=''
613 i_arpainet=''
614 db_hashtype=''
615 db_prefixtype=''
616 i_db=''
617 i_dbm=''
618 i_rpcsvcdbm=''
619 d_dirnamlen=''
620 direntrytype=''
621 i_dirent=''
622 i_dld=''
623 i_dlfcn=''
624 i_fcntl=''
625 i_float=''
626 i_gdbm=''
627 d_grpasswd=''
628 i_grp=''
629 i_iconv=''
630 i_ieeefp=''
631 i_inttypes=''
632 i_libutil=''
633 i_limits=''
634 i_locale=''
635 i_machcthr=''
636 i_malloc=''
637 i_math=''
638 i_memory=''
639 i_mntent=''
640 i_ndbm=''
641 i_netdb=''
642 i_neterrno=''
643 i_netinettcp=''
644 i_niin=''
645 i_sysin=''
646 i_poll=''
647 i_prot=''
648 i_pthread=''
649 d_pwage=''
650 d_pwchange=''
651 d_pwclass=''
652 d_pwcomment=''
653 d_pwexpire=''
654 d_pwgecos=''
655 d_pwpasswd=''
656 d_pwquota=''
657 i_pwd=''
658 i_sfio=''
659 i_shadow=''
660 i_socks=''
661 i_stddef=''
662 i_stdlib=''
663 i_string=''
664 strings=''
665 i_sunmath=''
666 i_sysaccess=''
667 i_sysdir=''
668 i_sysfile=''
669 d_voidtty=''
670 i_bsdioctl=''
671 i_sysfilio=''
672 i_sysioctl=''
673 i_syssockio=''
674 i_syslog=''
675 i_sysmman=''
676 i_sysmode=''
677 i_sysmount=''
678 i_sysndir=''
679 i_sysparam=''
680 i_sysresrc=''
681 i_syssecrt=''
682 i_sysselct=''
683 i_sysstat=''
684 i_sysstatfs=''
685 i_sysstatvfs=''
686 i_systimes=''
687 i_systypes=''
688 i_sysuio=''
689 i_sysun=''
690 i_sysutsname=''
691 i_sysvfs=''
692 i_syswait=''
693 i_sgtty=''
694 i_termio=''
695 i_termios=''
696 i_systime=''
697 i_systimek=''
698 i_time=''
699 timeincl=''
700 i_unistd=''
701 i_ustat=''
702 i_utime=''
703 i_values=''
704 i_stdarg=''
705 i_varargs=''
706 i_varhdr=''
707 i_vfork=''
708 inc_version_list=''
709 inc_version_list_init=''
710 installprefix=''
711 installprefixexp=''
712 installstyle=''
713 installusrbinperl=''
714 intsize=''
715 longsize=''
716 shortsize=''
717 libc=''
718 ldlibpthname=''
719 libperl=''
720 shrpenv=''
721 useshrplib=''
722 glibpth=''
723 libpth=''
724 loclibpth=''
725 plibpth=''
726 xlibpth=''
727 ignore_versioned_solibs=''
728 libs=''
729 libsdirs=''
730 libsfiles=''
731 libsfound=''
732 libspath=''
733 lns=''
734 d_PRIEUldbl=''
735 d_PRIFUldbl=''
736 d_PRIGUldbl=''
737 d_PRIeldbl=''
738 d_PRIfldbl=''
739 d_PRIgldbl=''
740 d_SCNfldbl=''
741 sPRIEUldbl=''
742 sPRIFUldbl=''
743 sPRIGUldbl=''
744 sPRIeldbl=''
745 sPRIfldbl=''
746 sPRIgldbl=''
747 sSCNfldbl=''
748 lseeksize=''
749 lseektype=''
750 make_set_make=''
751 d_mymalloc=''
752 freetype=''
753 mallocobj=''
754 mallocsrc=''
755 malloctype=''
756 usemymalloc=''
757 installman1dir=''
758 man1dir=''
759 man1direxp=''
760 man1ext=''
761 installman3dir=''
762 man3dir=''
763 man3direxp=''
764 man3ext=''
765 modetype=''
766 multiarch=''
767 mydomain=''
768 myhostname=''
769 phostname=''
770 c=''
771 n=''
772 d_eofnblk=''
773 eagain=''
774 o_nonblock=''
775 rd_nodata=''
776 netdb_hlen_type=''
777 netdb_host_type=''
778 netdb_name_type=''
779 netdb_net_type=''
780 groupcat=''
781 hostcat=''
782 passcat=''
783 orderlib=''
784 ranlib=''
785 d_perl_otherlibdirs=''
786 otherlibdirs=''
787 package=''
788 spackage=''
789 pager=''
790 api_revision=''
791 api_subversion=''
792 api_version=''
793 api_versionstring=''
794 patchlevel=''
795 revision=''
796 subversion=''
797 version=''
798 perl5=''
799 perladmin=''
800 perlpath=''
801 d_nv_preserves_uv=''
802 d_nv_preserves_uv_bits=''
803 i16size=''
804 i16type=''
805 i32size=''
806 i32type=''
807 i64size=''
808 i64type=''
809 i8size=''
810 i8type=''
811 ivsize=''
812 ivtype=''
813 nvsize=''
814 nvtype=''
815 u16size=''
816 u16type=''
817 u32size=''
818 u32type=''
819 u64size=''
820 u64type=''
821 u8size=''
822 u8type=''
823 uvsize=''
824 uvtype=''
825 ivdformat=''
826 nvEUformat=''
827 nvFUformat=''
828 nvGUformat=''
829 nveformat=''
830 nvfformat=''
831 nvgformat=''
832 uvXUformat=''
833 uvoformat=''
834 uvuformat=''
835 uvxformat=''
836 pidtype=''
837 prefix=''
838 prefixexp=''
839 installprivlib=''
840 privlib=''
841 privlibexp=''
842 prototype=''
843 ptrsize=''
844 d_PRIXU64=''
845 d_PRId64=''
846 d_PRIi64=''
847 d_PRIo64=''
848 d_PRIu64=''
849 d_PRIx64=''
850 sPRIXU64=''
851 sPRId64=''
852 sPRIi64=''
853 sPRIo64=''
854 sPRIu64=''
855 sPRIx64=''
856 d_quad=''
857 quadkind=''
858 quadtype=''
859 uquadtype=''
860 drand01=''
861 randbits=''
862 randfunc=''
863 randseedtype=''
864 seedfunc=''
865 installscript=''
866 scriptdir=''
867 scriptdirexp=''
868 selectminbits=''
869 selecttype=''
870 sh=''
871 sig_count=''
872 sig_name=''
873 sig_name_init=''
874 sig_num=''
875 sig_num_init=''
876 installsitearch=''
877 sitearch=''
878 sitearchexp=''
879 installsitebin=''
880 sitebin=''
881 sitebinexp=''
882 installsitelib=''
883 sitelib=''
884 sitelib_stem=''
885 sitelibexp=''
886 siteprefix=''
887 siteprefixexp=''
888 sizesize=''
889 sizetype=''
890 so=''
891 socksizetype=''
892 sharpbang=''
893 shsharp=''
894 spitshell=''
895 src=''
896 ssizetype=''
897 startperl=''
898 startsh=''
899 stdchar=''
900 d_stdio_stream_array=''
901 stdio_stream_array=''
902 sysman=''
903 trnl=''
904 uidformat=''
905 uidsign=''
906 uidsize=''
907 uidtype=''
908 archname64=''
909 use64bitall=''
910 use64bitint=''
911 ccflags_uselargefiles=''
912 ldflags_uselargefiles=''
913 libswanted_uselargefiles=''
914 uselargefiles=''
915 uselongdouble=''
916 usemorebits=''
917 usemultiplicity=''
918 nm_opt=''
919 nm_so_opt=''
920 runnm=''
921 usenm=''
922 useperlio=''
923 usesocks=''
924 d_oldpthreads=''
925 use5005threads=''
926 useithreads=''
927 usethreads=''
928 incpath=''
929 mips_type=''
930 usrinc=''
931 d_vendorarch=''
932 installvendorarch=''
933 vendorarch=''
934 vendorarchexp=''
935 d_vendorbin=''
936 installvendorbin=''
937 vendorbin=''
938 vendorbinexp=''
939 d_vendorlib=''
940 installvendorlib=''
941 vendorlib=''
942 vendorlib_stem=''
943 vendorlibexp=''
944 usevendorprefix=''
945 vendorprefix=''
946 vendorprefixexp=''
947 defvoidused=''
948 voidflags=''
949 pm_apiversion=''
950 xs_apiversion=''
951 CONFIG=''
952
953 define='define'
954 undef='undef'
955 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
956 rmlist=''
957
958 : We must find out about Eunice early
959 eunicefix=':'
960 if test -f /etc/unixtovms; then
961         eunicefix=/etc/unixtovms
962 fi
963 if test -f /etc/unixtovms.exe; then
964         eunicefix=/etc/unixtovms.exe
965 fi
966
967 i_whoami=''
968 ccname=''
969 ccversion=''
970 perllibs=''
971 : set useposix=false in your hint file to disable the POSIX extension.
972 useposix=true
973 : set useopcode=false in your hint file to disable the Opcode extension.
974 useopcode=true
975 : Trailing extension.  Override this in a hint file, if needed.
976 _exe=''
977 : Extra object files, if any, needed on this platform.
978 archobjs=''
979 archname=''
980 : Possible local include directories to search.
981 : Set locincpth to "" in a hint file to defeat local include searches.
982 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
983 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
984 :
985 : no include file wanted by default
986 inclwanted=''
987
988 groupstype=''
989 : change the next line if compiling for Xenix/286 on Xenix/386
990 xlibpth='/usr/lib/386 /lib/386'
991 : Possible local library directories to search.
992 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
993 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
994
995 : general looking path for locating libraries
996 glibpth="/lib /usr/lib $xlibpth"
997 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
998 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
999 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1000
1001 : Private path used by Configure to find libraries.  Its value
1002 : is prepended to libpth. This variable takes care of special
1003 : machines, like the mips.  Usually, it should be empty.
1004 plibpth=''
1005
1006 : default library list
1007 libswanted=''
1008 : some systems want to use only the non-versioned libso:s
1009 ignore_versioned_solibs=''
1010 archname64=''
1011 ccflags_uselargefiles=''
1012 ldflags_uselargefiles=''
1013 libswanted_uselargefiles=''
1014 : set usemultiplicity on the Configure command line to enable multiplicity.
1015 : set usesocks on the Configure command line to enable socks.
1016 : set usethreads on the Configure command line to enable threads.
1017 : full support for void wanted by default
1018 defvoidused=15
1019
1020 : List of libraries we want.
1021 : If anyone needs -lnet, put it in a hint file.
1022 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1023 libswanted="$libswanted dld ld sun m c cposix posix"
1024 libswanted="$libswanted ndir dir crypt sec"
1025 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1026 : We probably want to search /usr/shlib before most other libraries.
1027 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1028 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1029 glibpth="/usr/shlib $glibpth"
1030 : Do not use vfork unless overridden by a hint file.
1031 usevfork=false
1032
1033 : Find the basic shell for Bourne shell scripts
1034 case "$sh" in
1035 '')
1036         case "$SYSTYPE" in
1037         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1038         *) xxx='/bin/sh';;
1039         esac
1040         if test -f "$xxx"; then
1041                 sh="$xxx"
1042         else
1043                 : Build up a list and do a single loop so we can 'break' out.
1044                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1045                 for xxx in sh bash ksh pdksh ash; do
1046                         for p in $pth; do
1047                                 try="$try ${p}/${xxx}"
1048                         done
1049                 done
1050                 for xxx in $try; do
1051                         if test -f "$xxx"; then
1052                                 sh="$xxx";
1053                                 break
1054                         elif test -f "$xxx.exe"; then
1055                                 sh="$xxx";
1056                                 break
1057                         fi
1058                 done
1059         fi
1060         ;;
1061 esac
1062
1063 case "$sh" in
1064 '')     cat <<EOM >&2
1065 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1066
1067 Usually it's in /bin/sh.  How did you even get this far?
1068 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1069 we'll try to straighten this all out.
1070 EOM
1071         exit 1
1072         ;;
1073 esac
1074
1075 : see if sh knows # comments
1076 if `$sh -c '#' >/dev/null 2>&1`; then
1077         shsharp=true
1078         spitshell=cat
1079         xcat=/bin/cat
1080         test -f $xcat || xcat=/usr/bin/cat
1081         echo "#!$xcat" >try
1082         $eunicefix try
1083         chmod +x try
1084         ./try > today
1085         if test -s today; then
1086                 sharpbang='#!'
1087         else
1088                 echo "#! $xcat" > try
1089                 $eunicefix try
1090                 chmod +x try
1091                 ./try > today
1092                 if test -s today; then
1093                         sharpbang='#! '
1094                 else
1095                         sharpbang=': use '
1096                 fi
1097         fi
1098 else
1099         echo " "
1100         echo "Your $sh doesn't grok # comments--I will strip them later on."
1101         shsharp=false
1102         cd ..
1103         echo "exec grep -v '^[  ]*#'" >spitshell
1104         chmod +x spitshell
1105         $eunicefix spitshell
1106         spitshell=`pwd`/spitshell
1107         cd UU
1108         echo "I presume that if # doesn't work, #! won't work either!"
1109         sharpbang=': use '
1110 fi
1111 rm -f try today
1112
1113 : figure out how to guarantee sh startup
1114 case "$startsh" in
1115 '') startsh=${sharpbang}${sh} ;;
1116 *)
1117 esac
1118 cat >try <<EOSS
1119 $startsh
1120 set abc
1121 test "$?abc" != 1
1122 EOSS
1123
1124 chmod +x try
1125 $eunicefix try
1126 if ./try; then
1127         : echo "Yup, it does."
1128 else
1129         echo "Hmm... '$startsh' does not guarantee sh startup..."
1130         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1131 fi
1132 rm -f try
1133
1134
1135 : Save command line options in file UU/cmdline.opt for later use in
1136 : generating config.sh.
1137 cat > cmdline.opt <<EOSH
1138 # Configure command line arguments.
1139 config_arg0='$0'
1140 config_args='$*'
1141 config_argc=$#
1142 EOSH
1143 argn=1
1144 for arg in "$@"; do
1145         cat >>cmdline.opt <<EOSH
1146 config_arg$argn='$arg'
1147 EOSH
1148         argn=`expr $argn + 1`
1149 done
1150
1151 : produce awk script to parse command line options
1152 cat >options.awk <<'EOF'
1153 BEGIN {
1154         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1155
1156         len = length(optstr);
1157         for (i = 1; i <= len; i++) {
1158                 c = substr(optstr, i, 1);
1159                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1160                 if (a == ":") {
1161                         arg[c] = 1;
1162                         i++;
1163                 }
1164                 opt[c] = 1;
1165         }
1166 }
1167 {
1168         expect = 0;
1169         str = $0;
1170         if (substr(str, 1, 1) != "-") {
1171                 printf("'%s'\n", str);
1172                 next;
1173         }
1174         len = length($0);
1175         for (i = 2; i <= len; i++) {
1176                 c = substr(str, i, 1);
1177                 if (!opt[c]) {
1178                         printf("-%s\n", substr(str, i));
1179                         next;
1180                 }
1181                 printf("-%s\n", c);
1182                 if (arg[c]) {
1183                         if (i < len)
1184                                 printf("'%s'\n", substr(str, i + 1));
1185                         else
1186                                 expect = 1;
1187                         next;
1188                 }
1189         }
1190 }
1191 END {
1192         if (expect)
1193                 print "?";
1194 }
1195 EOF
1196
1197 : process the command line options
1198 set X `for arg in "$@"; do echo "X$arg"; done |
1199         sed -e s/X// | awk -f options.awk`
1200 eval "set $*"
1201 shift
1202 rm -f options.awk
1203
1204 : set up default values
1205 fastread=''
1206 reuseval=false
1207 config_sh=''
1208 alldone=''
1209 error=''
1210 silent=''
1211 extractsh=''
1212 override=''
1213 knowitall=''
1214 rm -f optdef.sh posthint.sh
1215 cat >optdef.sh <<EOS
1216 $startsh
1217 EOS
1218
1219
1220 : option parsing
1221 while test $# -gt 0; do
1222         case "$1" in
1223         -d) shift; fastread=yes;;
1224         -e) shift; alldone=cont;;
1225         -f)
1226                 shift
1227                 cd ..
1228                 if test -r "$1"; then
1229                         config_sh="$1"
1230                 else
1231                         echo "$me: cannot read config file $1." >&2
1232                         error=true
1233                 fi
1234                 cd UU
1235                 shift;;
1236         -h) shift; error=true;;
1237         -r) shift; reuseval=true;;
1238         -s) shift; silent=true; realsilent=true;;
1239         -E) shift; alldone=exit;;
1240         -K) shift; knowitall=true;;
1241         -O) shift; override=true;;
1242         -S) shift; silent=true; extractsh=true;;
1243         -D)
1244                 shift
1245                 case "$1" in
1246                 *=)
1247                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1248                         echo "$me: ignoring -D $1" >&2
1249                         ;;
1250                 *=*) echo "$1" | \
1251                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1252                 *) echo "$1='define'" >> optdef.sh;;
1253                 esac
1254                 shift
1255                 ;;
1256         -U)
1257                 shift
1258                 case "$1" in
1259                 *=) echo "$1" >> optdef.sh;;
1260                 *=*)
1261                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1262                         echo "$me: ignoring -U $1" >&2
1263                         ;;
1264                 *) echo "$1='undef'" >> optdef.sh;;
1265                 esac
1266                 shift
1267                 ;;
1268         -A)
1269             shift
1270             xxx=''
1271             yyy="$1"
1272             zzz=''
1273             uuu=undef
1274             case "$yyy" in
1275             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1276                  case "$zzz" in
1277                  *:*) zzz='' ;;
1278                  *)   xxx=append
1279                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1280                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1281                  esac
1282                  ;;
1283             esac
1284             case "$xxx" in
1285             '')  case "$yyy" in
1286                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1287                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1288                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1289                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1290                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1291                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1292                  esac
1293                  ;;       
1294             esac
1295             case "$xxx" in
1296             append)
1297                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1298             clear)
1299                 echo "$yyy=''"                  >> posthint.sh ;;
1300             define)
1301                 case "$zzz" in
1302                 '') zzz=define ;;
1303                 esac
1304                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1305             eval)
1306                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1307             prepend)
1308                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1309             undef)
1310                 case "$zzz" in
1311                 '') zzz="$uuu" ;;
1312                 esac
1313                 echo "$yyy=$zzz"                >> posthint.sh ;;
1314             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1315             esac
1316             shift
1317             ;;
1318         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1319             exit 0;;
1320         --) break;;
1321         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1322         *) break;;
1323         esac
1324 done
1325
1326 case "$error" in
1327 true)
1328         cat >&2 <<EOM
1329 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1330                  [-U symbol] [-U symbol=] [-A command:symbol...]
1331   -d : use defaults for all answers.
1332   -e : go on without questioning past the production of config.sh.
1333   -f : specify an alternate default configuration file.
1334   -h : print this help message and exit (with an error status).
1335   -r : reuse C symbols value if possible (skips costly nm extraction).
1336   -s : silent mode, only echoes questions and essential information.
1337   -D : define symbol to have some value:
1338          -D symbol         symbol gets the value 'define'
1339          -D symbol=value   symbol gets the value 'value'
1340   -E : stop at the end of questions, after having produced config.sh.
1341   -K : do not use unless you know what you are doing.
1342   -O : let -D and -U override definitions from loaded configuration file.
1343   -S : perform variable substitutions on all .SH files (can mix with -f)
1344   -U : undefine symbol:
1345          -U symbol    symbol gets the value 'undef'
1346          -U symbol=   symbol gets completely empty
1347   -A : manipulate symbol after the platform specific hints have been applied:
1348          -A symbol=value                append " "value to symbol
1349          -A append:symbol=value         append value to symbol
1350          -A define:symbol=value         define symbol to have value
1351          -A clear:symbol                define symbol to be ''
1352          -A define:symbol               define symbol to be 'define'
1353          -A eval:symbol=value           define symbol to be eval of value
1354          -A prepend:symbol=value        prepend value to symbol
1355          -A undef:symbol                define symbol to be 'undef'
1356          -A undef:symbol=               define symbol to be ''
1357   -V : print version number and exit (with a zero status).
1358 EOM
1359         exit 1
1360         ;;
1361 esac
1362
1363 : Sanity checks
1364 case "$fastread$alldone" in
1365 yescont|yesexit) ;;
1366 *)
1367         case "$extractsh" in
1368         true) ;;
1369         *)
1370                 if test ! -t 0; then
1371                         echo "Say 'sh Configure', not 'sh <Configure'"
1372                         exit 1
1373                 fi
1374                 ;;
1375         esac
1376         ;;
1377 esac
1378
1379 exec 4>&1
1380 case "$silent" in
1381 true) exec 1>/dev/null;;
1382 esac
1383
1384 : run the defines and the undefines, if any, but leave the file out there...
1385 touch optdef.sh
1386 . ./optdef.sh
1387 : create the posthint manipulation script and leave the file out there...
1388 touch posthint.sh
1389
1390 : set package name
1391 package=perl5
1392 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1393 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1394 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1395 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1396 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1397 esac
1398
1399 : Some greps do not return status, grrr.
1400 echo "grimblepritz" >grimble
1401 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1402         contains=contains
1403 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1404         contains=grep
1405 else
1406         contains=contains
1407 fi
1408 rm -f grimble
1409 : the following should work in any shell
1410 case "$contains" in
1411 contains*)
1412         echo " "
1413         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1414         cat >contains <<'EOSS'
1415 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1416 EOSS
1417 chmod +x contains
1418 esac
1419
1420 : Find the path to the source tree
1421 case "$src" in
1422 '') case "$0" in
1423     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1424          case "$src" in
1425          /*)    ;;
1426          *)     src=`cd ../$src && pwd` ;;
1427          esac
1428          ;;
1429     *)   src='.';;
1430     esac;;
1431 esac
1432 case "$src" in
1433 '')     src=/
1434         rsrc=/
1435         ;;
1436 /*) rsrc="$src";;
1437 *) rsrc="../$src";;
1438 esac
1439 if test -f $rsrc/Configure && \
1440         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1441 then
1442    : found it, so we are ok.
1443 else
1444         rsrc=''
1445         for src in . .. ../.. ../../.. ../../../..; do
1446                 if test -f ../$src/Configure && \
1447                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1448                 then
1449                         rsrc=../$src
1450                         break
1451                 fi
1452         done
1453 fi
1454 case "$rsrc" in
1455 '')
1456         cat <<EOM >&4
1457
1458 Sorry, I can't seem to locate the source dir for $package.  Please start
1459 Configure with an explicit path -- i.e. /some/path/Configure.
1460
1461 EOM
1462         exit 1
1463         ;;
1464 ../.)   rsrc='..';;
1465 *)
1466         echo " "
1467         echo "Sources for $package found in \"$src\"." >&4
1468         ;;
1469 esac
1470
1471 : script used to extract .SH files with variable substitutions
1472 cat >extract <<'EOS'
1473 CONFIGDOTSH=true
1474 echo "Doing variable substitutions on .SH files..."
1475 if test -f $src/MANIFEST; then
1476         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1477 else
1478         echo "(Looking for .SH files under the source directory.)"
1479         set x `(cd $src; find . -name "*.SH" -print)`
1480 fi
1481 shift
1482 case $# in
1483 0) set x `(cd $src; echo *.SH)`; shift;;
1484 esac
1485 if test ! -f $src/$1; then
1486         shift
1487 fi
1488 mkdir_p='
1489 name=$1;
1490 create="";
1491 while test $name; do
1492         if test ! -d "$name"; then
1493                 create="$name $create";
1494                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1495                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1496         else
1497                 name="";
1498         fi;
1499 done;
1500 for file in $create; do
1501         mkdir $file;
1502 done
1503 '
1504 for file in $*; do
1505         case "$src" in
1506         ".")
1507                 case "$file" in
1508                 */*)
1509                         dir=`expr X$file : 'X\(.*\)/'`
1510                         file=`expr X$file : 'X.*/\(.*\)'`
1511                         (cd $dir && . ./$file)
1512                         ;;
1513                 *)
1514                         . ./$file
1515                         ;;
1516                 esac
1517                 ;;
1518         *)
1519                 case "$file" in
1520                 */*)
1521                         dir=`expr X$file : 'X\(.*\)/'`
1522                         file=`expr X$file : 'X.*/\(.*\)'`
1523                         (set x $dir; shift; eval $mkdir_p)
1524                         sh <$src/$dir/$file
1525                         ;;
1526                 *)
1527                         sh <$src/$file
1528                         ;;
1529                 esac
1530                 ;;
1531         esac
1532 done
1533 if test -f $src/config_h.SH; then
1534         if test ! -f config.h; then
1535         : oops, they left it out of MANIFEST, probably, so do it anyway.
1536         . $src/config_h.SH
1537         fi
1538 fi
1539 EOS
1540
1541 : extract files and exit if asked to do so
1542 case "$extractsh" in
1543 true)
1544         case "$realsilent" in
1545         true) ;;
1546         *) exec 1>&4;;
1547         esac
1548         case "$config_sh" in
1549         '') config_sh='config.sh';;
1550         esac
1551         echo " "
1552         echo "Fetching answers from $config_sh..."
1553         cd ..
1554         . $config_sh
1555         test "$override" && . ./optdef.sh
1556         echo " "
1557         . UU/extract
1558         rm -rf UU
1559         echo "Done."
1560         exit 0
1561         ;;
1562 esac
1563
1564 : Eunice requires " " instead of "", can you believe it
1565 echo " "
1566 : Here we go...
1567 echo "Beginning of configuration questions for $package."
1568
1569 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1570
1571 : first determine how to suppress newline on echo command
1572 echo " "
1573 echo "Checking echo to see how to suppress newlines..."
1574 (echo "hi there\c" ; echo " ") >.echotmp
1575 if $contains c .echotmp >/dev/null 2>&1 ; then
1576         echo "...using -n."
1577         n='-n'
1578         c=''
1579 else
1580         cat <<'EOM'
1581 ...using \c
1582 EOM
1583         n=''
1584         c='\c'
1585 fi
1586 echo $n "The star should be here-->$c"
1587 echo '*'
1588 rm -f .echotmp
1589
1590 : Now test for existence of everything in MANIFEST
1591 echo " "
1592 if test -f $rsrc/MANIFEST; then
1593         echo "First let's make sure your kit is complete.  Checking..." >&4
1594         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1595         rm -f missing
1596         tmppwd=`pwd`
1597         for filelist in x??; do
1598                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1599         done
1600         if test -s missing; then
1601                 cat missing >&4
1602                 cat >&4 <<'EOM'
1603
1604 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1605
1606 You have the option of continuing the configuration process, despite the
1607 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1608 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1609 and contact the author (perlbug@perl.org).
1610
1611 EOM
1612                 echo $n "Continue? [n] $c" >&4
1613                 read ans
1614                 case "$ans" in
1615                 y*)
1616                         echo "Continuing..." >&4
1617                         rm -f missing
1618                         ;;
1619                 *)
1620                         echo "ABORTING..." >&4
1621                         kill $$
1622                         ;;
1623                 esac
1624         else
1625                 echo "Looks good..."
1626         fi
1627 else
1628         echo "There is no MANIFEST file.  I hope your kit is complete !"
1629 fi
1630 rm -f missing x??
1631
1632 echo " "
1633 : Find the appropriate value for a newline for tr
1634 if test -n "$DJGPP"; then
1635        trnl='\012'
1636 fi
1637 if test X"$trnl" = X; then
1638         case "`echo foo|tr '\n' x 2>/dev/null`" in
1639         foox) trnl='\n' ;;
1640         esac
1641 fi
1642 if test X"$trnl" = X; then
1643         case "`echo foo|tr '\012' x 2>/dev/null`" in
1644         foox) trnl='\012' ;;
1645         esac
1646 fi
1647 if test X"$trnl" = X; then
1648         cat <<EOM >&2
1649
1650 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1651
1652 EOM
1653         exit 1
1654 fi
1655
1656 : compute the number of columns on the terminal for proper question formatting
1657 case "$COLUMNS" in
1658 '') COLUMNS='80';;
1659 esac
1660
1661 : set up the echo used in my read
1662 myecho="case \"\$xxxm\" in
1663 '') echo $n \"\$rp $c\" >&4;;
1664 *) case \"\$rp\" in
1665         '') echo $n \"[\$xxxm] $c\";;
1666         *)
1667                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1668                         echo \"\$rp\" >&4
1669                         echo $n \"[\$xxxm] $c\" >&4
1670                 else
1671                         echo $n \"\$rp [\$xxxm] $c\" >&4
1672                 fi
1673                 ;;
1674         esac;;
1675 esac"
1676
1677 : now set up to do reads with possible shell escape and default assignment
1678 cat <<EOSC >myread
1679 $startsh
1680 xxxm=\$dflt
1681 $myecho
1682 ans='!'
1683 case "\$fastread" in
1684 yes) case "\$dflt" in
1685         '') ;;
1686         *) ans='';
1687                 case "\$silent-\$rp" in
1688                 true-) ;;
1689                 *) echo " " >&4;;
1690                 esac;;
1691         esac;;
1692 *) case "\$silent" in
1693         true) case "\$rp" in
1694                 '') ans='';;
1695                 esac;;
1696         esac;;
1697 esac
1698 while expr "X\$ans" : "X!" >/dev/null; do
1699         read answ
1700         set x \$xxxm
1701         shift
1702         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1703         case  "\$answ" in
1704         "!")
1705                 sh 1>&4
1706                 echo " "
1707                 $myecho
1708                 ;;
1709         !*)
1710                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1711                 shift
1712                 sh 1>&4 -c "\$*"
1713                 echo " "
1714                 $myecho
1715                 ;;
1716         "\$ans")
1717                 case "\$ans" in
1718                 \\&*)
1719                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1720                         shift
1721                         case "\$1" in
1722                         -d)
1723                                 fastread=yes
1724                                 echo "(OK, I'll run with -d after this question.)" >&4
1725                                 ;;
1726                         -*)
1727                                 echo "*** Sorry, \$1 not supported yet." >&4
1728                                 ;;
1729                         esac
1730                         $myecho
1731                         ans=!
1732                         ;;
1733                 esac;;
1734         *)
1735                 case "\$aok" in
1736                 y)
1737                         echo "*** Substitution done -- please confirm."
1738                         xxxm="\$ans"
1739                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1740                         xxxm="\$ans"
1741                         ans=!
1742                         ;;
1743                 *)
1744                         echo "*** Error -- try again."
1745                         ans=!
1746                         ;;
1747                 esac
1748                 $myecho
1749                 ;;
1750         esac
1751         case "\$ans\$xxxm\$nostick" in
1752         '')
1753                 ans=!
1754                 $myecho
1755                 ;;
1756         esac
1757 done
1758 case "\$ans" in
1759 '') ans="\$xxxm";;
1760 esac
1761 EOSC
1762
1763 : create .config dir to save info across Configure sessions
1764 test -d ../.config || mkdir ../.config
1765 cat >../.config/README <<EOF
1766 This directory created by Configure to save information that should
1767 persist across sessions for $package.
1768
1769 You may safely delete it if you wish.
1770 EOF
1771
1772 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1773 case "$usedevel" in
1774 $define|true|[yY]*) ;;
1775 *) case "$xversion" in
1776    *[13579])
1777         cat >&4 <<EOH
1778 *** WHOA THERE!!! ***
1779
1780     This is an UNSTABLE DEVELOPMENT release.
1781     The version of this $package distribution is $xversion, that is, odd,
1782     (as opposed to even) and that signifies a development release.
1783     If you want a maintenance release, you want an even-numbered version.
1784
1785     Do ***NOT*** install this into production use.
1786     Data corruption and crashes are possible.
1787
1788     It is most seriously suggested that you do not continue any further
1789     unless you want to help in developing and debugging Perl.
1790
1791 EOH
1792         rp='Do you really want to continue?'
1793         dflt='n'
1794         . ./myread
1795         case "$ans" in
1796         [yY]) echo >&4 "Okay, continuing." ;;
1797         *) echo >&4 "Okay, bye."
1798            exit 1
1799            ;;
1800         esac
1801         ;;
1802     esac
1803     ;;
1804 esac
1805
1806 : general instructions
1807 needman=true
1808 firsttime=true
1809 user=`(logname) 2>/dev/null`
1810 case "$user" in
1811 '') user=`whoami 2>&1`;;
1812 esac
1813 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1814         firsttime=false
1815         echo " "
1816         rp='Would you like to see the instructions?'
1817         dflt=n
1818         . ./myread
1819         case "$ans" in
1820         [yY]*) ;;
1821         *) needman=false;;
1822         esac
1823 fi
1824 if $needman; then
1825         cat <<EOH
1826
1827 This installation shell script will examine your system and ask you questions
1828 to determine how the perl5 package should be installed. If you get
1829 stuck on a question, you may use a ! shell escape to start a subshell or
1830 execute a command.  Many of the questions will have default answers in square
1831 brackets; typing carriage return will give you the default.
1832
1833 On some of the questions which ask for file or directory names you are allowed
1834 to use the ~name construct to specify the login directory belonging to "name",
1835 even if you don't have a shell which knows about that.  Questions where this is
1836 allowed will be marked "(~name ok)".
1837
1838 EOH
1839         rp=''
1840         dflt='Type carriage return to continue'
1841         . ./myread
1842         cat <<'EOH'
1843
1844 The prompter used in this script allows you to use shell variables and
1845 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1846 in the default answer, as if the default line was a set of arguments given to a
1847 script shell.  This means you may also use $* to repeat the whole default line,
1848 so you do not have to re-type everything to add something to the default.
1849
1850 Everytime there is a substitution, you will have to confirm.  If there is an
1851 error (e.g. an unmatched backtick), the default answer will remain unchanged
1852 and you will be prompted again.
1853
1854 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1855 the questions and use the computed defaults (or the previous answers if there
1856 was already a config.sh file). Type 'Configure -h' for a list of options.
1857 You may also start interactively and then answer '& -d' at any prompt to turn
1858 on the non-interactive behaviour for the remainder of the execution.
1859
1860 EOH
1861         . ./myread
1862         cat <<EOH
1863
1864 Much effort has been expended to ensure that this shell script will run on any
1865 Unix system.  If despite that it blows up on yours, your best bet is to edit
1866 Configure and run it again.  If you can't run Configure for some reason,
1867 you'll have to generate a config.sh file by hand.  Whatever problems you
1868 have, let me (perlbug@perl.org) know how I blew it.
1869
1870 This installation script affects things in two ways:
1871
1872 1) it may do direct variable substitutions on some of the files included
1873    in this kit.
1874 2) it builds a config.h file for inclusion in C programs.  You may edit
1875    any of these files as the need arises after running this script.
1876
1877 If you make a mistake on a question, there is no easy way to back up to it
1878 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1879 files.  Configure will offer to let you do this before it runs the SH files.
1880
1881 EOH
1882         dflt='Type carriage return to continue'
1883         . ./myread
1884         case "$firsttime" in
1885         true) echo $user >>../.config/instruct;;
1886         esac
1887 fi
1888
1889 : find out where common programs are
1890 echo " "
1891 echo "Locating common programs..." >&4
1892 cat <<EOSC >loc
1893 $startsh
1894 case \$# in
1895 0) exit 1;;
1896 esac
1897 thing=\$1
1898 shift
1899 dflt=\$1
1900 shift
1901 for dir in \$*; do
1902         case "\$thing" in
1903         .)
1904         if test -d \$dir/\$thing; then
1905                 echo \$dir
1906                 exit 0
1907         fi
1908         ;;
1909         *)
1910         for thisthing in \$dir/\$thing; do
1911                 : just loop through to pick last item
1912         done
1913         if test -f \$thisthing; then
1914                 echo \$thisthing
1915                 exit 0
1916         elif test -f \$dir/\$thing.exe; then
1917                 if test -n "$DJGPP"; then
1918                         echo \$dir/\$thing.exe
1919                 else
1920                         : on Eunice apparently
1921                         echo \$dir/\$thing
1922                 fi
1923                 exit 0
1924         fi
1925         ;;
1926         esac
1927 done
1928 echo \$dflt
1929 exit 1
1930 EOSC
1931 chmod +x loc
1932 $eunicefix loc
1933 loclist="
1934 awk
1935 cat
1936 comm
1937 cp
1938 echo
1939 expr
1940 grep
1941 ls
1942 make
1943 mkdir
1944 rm
1945 sed
1946 sort
1947 touch
1948 tr
1949 uniq
1950 "
1951 trylist="
1952 Mcc
1953 ar
1954 byacc
1955 cpp
1956 csh
1957 date
1958 egrep
1959 gzip
1960 less
1961 ln
1962 more
1963 nm
1964 nroff
1965 pg
1966 test
1967 uname
1968 zip
1969 "
1970 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1971 pth="$pth /lib /usr/lib"
1972 for file in $loclist; do
1973         eval xxx=\$$file
1974         case "$xxx" in
1975         /*|?:[\\/]*)
1976                 if test -f "$xxx"; then
1977                         : ok
1978                 else
1979                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1980                         xxx=`./loc $file $file $pth`
1981                 fi
1982                 ;;
1983         '') xxx=`./loc $file $file $pth`;;
1984         *) xxx=`./loc $xxx $xxx $pth`;;
1985         esac
1986         eval $file=$xxx
1987         eval _$file=$xxx
1988         case "$xxx" in
1989         /*)
1990                 echo $file is in $xxx.
1991                 ;;
1992         ?:[\\/]*)
1993                 echo $file is in $xxx.
1994                 ;;
1995         *)
1996                 echo "I don't know where '$file' is, and my life depends on it." >&4
1997                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1998                 exit 1
1999                 ;;
2000         esac
2001 done
2002 echo " "
2003 echo "Don't worry if any of the following aren't found..."
2004 say=offhand
2005 for file in $trylist; do
2006         eval xxx=\$$file
2007         case "$xxx" in
2008         /*|?:[\\/]*)
2009                 if test -f "$xxx"; then
2010                         : ok
2011                 else
2012                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2013                         xxx=`./loc $file $file $pth`
2014                 fi
2015                 ;;
2016         '') xxx=`./loc $file $file $pth`;;
2017         *) xxx=`./loc $xxx $xxx $pth`;;
2018         esac
2019         eval $file=$xxx
2020         eval _$file=$xxx
2021         case "$xxx" in
2022         /*)
2023                 echo $file is in $xxx.
2024                 ;;
2025         ?:[\\/]*)
2026                 echo $file is in $xxx.
2027                 ;;
2028         *)
2029                 echo "I don't see $file out there, $say."
2030                 say=either
2031                 ;;
2032         esac
2033 done
2034 case "$egrep" in
2035 egrep)
2036         echo "Substituting grep for egrep."
2037         egrep=$grep
2038         ;;
2039 esac
2040 case "$ln" in
2041 ln)
2042         echo "Substituting cp for ln."
2043         ln=$cp
2044         ;;
2045 esac
2046 case "$test" in
2047 test)
2048         echo "Hopefully test is built into your sh."
2049         ;;
2050 *)
2051         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2052                 echo "Using the test built into your sh."
2053                 test=test
2054                 _test=test
2055         fi
2056         ;;
2057 esac
2058 case "$echo" in
2059 echo)
2060         echo "Hopefully echo is built into your sh."
2061         ;;
2062 '') ;;
2063 *)
2064         echo " "
2065 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2066         $echo $n "hi there$c" >foo1
2067         echo $n "hi there$c" >foo2
2068         if cmp foo1 foo2 >/dev/null 2>&1; then
2069                 echo "They are compatible.  In fact, they may be identical."
2070         else
2071                 case "$n" in
2072                 '-n') n='' c='\c';;
2073                 *) n='-n' c='';;
2074                 esac
2075                 cat <<FOO
2076 They are not compatible!  You are probably running ksh on a non-USG system.
2077 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2078 have echo built in and we may have to run some Bourne shell scripts.  That
2079 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2080
2081 FOO
2082                 $echo $n "The star should be here-->$c"
2083                 $echo "*"
2084         fi
2085         $rm -f foo1 foo2
2086         ;;
2087 esac
2088
2089 cat <<EOS >checkcc
2090 $startsh
2091 EOS
2092 cat <<'EOSC' >>checkcc
2093 case "$cc" in
2094 '') ;;
2095 *)  $rm -f try try.*
2096     $cat >try.c <<EOM
2097 int main(int argc, char *argv[]) {
2098   return 0;
2099 }
2100 EOM
2101     if $cc -o try try.c; then
2102        :
2103     else
2104         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2105         despair=yes
2106         trygcc=yes
2107         case "$cc" in
2108         *gcc*) trygcc=no ;;
2109         esac
2110         case "`$cc -v -c try.c 2>&1`" in
2111         *gcc*) trygcc=no ;;
2112         esac
2113         if $test X"$trygcc" = Xyes; then
2114             if gcc -o try -c try.c; then
2115                 echo " "
2116                 echo "You seem to have a working gcc, though." >&4
2117                 rp="Would you like to use it?"
2118                 dflt=y
2119                 if $test -f myread; then
2120                     . ./myread
2121                 else
2122                     if $test -f UU/myread; then
2123                         . ./UU/myread
2124                     else
2125                         echo "Cannot find myread, sorry.  Aborting." >&2
2126                         exit 1
2127                     fi
2128                 fi  
2129                 case "$ans" in
2130                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2131                 esac
2132             fi
2133         fi
2134         if $test X"$despair" = Xyes; then
2135             echo "You need to find a working C compiler." >&4
2136             echo "I cannot continue any further, aborting." >&4
2137             exit 1
2138         fi
2139     fi
2140     $rm -f try try.*
2141     ;;
2142 esac
2143 EOSC
2144
2145 : determine whether symbolic links are supported
2146 echo " "
2147 $touch blurfl
2148 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2149         echo "Symbolic links are supported." >&4
2150         lns="$ln -s"
2151 else
2152         echo "Symbolic links are NOT supported." >&4
2153         lns="$ln"
2154 fi
2155 $rm -f blurfl sym
2156
2157 : see whether [:lower:] and [:upper:] are supported character classes
2158 echo " "
2159 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2160 ABYZ)
2161         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2162         up='[:upper:]'
2163         low='[:lower:]'
2164         ;;
2165 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2166         # (0xc9 and 0xd1), therefore that is a nice testing point.
2167         if test "X$up" = X -o "X$low" = X; then
2168             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2169             ij) up='[A-Z]'
2170                 low='[a-z]'
2171                 ;;
2172             esac
2173         fi
2174         if test "X$up" = X -o "X$low" = X; then
2175             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2176             ij) up='A-Z'
2177                 low='a-z'
2178                 ;;
2179             esac
2180         fi
2181         if test "X$up" = X -o "X$low" = X; then
2182             case "`echo IJ | od -x 2>/dev/null`" in
2183             *C9D1*|*c9d1*)
2184                 echo "Hey, this might be EBCDIC." >&4
2185                 if test "X$up" = X -o "X$low" = X; then
2186                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2187                     ij) up='[A-IJ-RS-Z]'
2188                         low='[a-ij-rs-z]'
2189                         ;;
2190                     esac
2191                 fi
2192                 if test "X$up" = X -o "X$low" = X; then
2193                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2194                     ij) up='A-IJ-RS-Z'
2195                         low='a-ij-rs-z'
2196                         ;;
2197                     esac
2198                 fi
2199                 ;;
2200             esac
2201         fi
2202 esac
2203 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2204 ij)
2205     echo "Using $up and $low to convert case." >&4
2206     ;;
2207 *)
2208     echo "I don't know how to translate letters from upper to lower case." >&4
2209     echo "Your tr is not acting any way I know of." >&4
2210     exit 1
2211     ;;
2212 esac
2213 : set up the translation script tr, must be called with ./tr of course
2214 cat >tr <<EOSC
2215 $startsh
2216 case "\$1\$2" in
2217 '[A-Z][a-z]') exec $tr '$up' '$low';;
2218 '[a-z][A-Z]') exec $tr '$low' '$up';;
2219 esac
2220 exec $tr "\$@"
2221 EOSC
2222 chmod +x tr
2223 $eunicefix tr
2224
2225 : Try to determine whether config.sh was made on this system
2226 case "$config_sh" in
2227 '')
2228 myuname=`$uname -a 2>/dev/null`
2229 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2230 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2231 # because the A-Z/a-z are not consecutive.
2232 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2233         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2234 newmyuname="$myuname"
2235 dflt=n
2236 case "$knowitall" in
2237 '')
2238         if test -f ../config.sh; then
2239                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2240                         eval "`grep myuname= ../config.sh`"
2241                 fi
2242                 if test "X$myuname" = "X$newmyuname"; then
2243                         dflt=y
2244                 fi
2245         fi
2246         ;;
2247 *) dflt=y;;
2248 esac
2249
2250 : Get old answers from old config file if Configure was run on the
2251 : same system, otherwise use the hints.
2252 hint=default
2253 cd ..
2254 if test -f config.sh; then
2255         echo " "
2256         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2257         . UU/myread
2258         case "$ans" in
2259         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2260         *)  echo "Fetching default answers from your old config.sh file..." >&4
2261                 tmp_n="$n"
2262                 tmp_c="$c"
2263                 tmp_sh="$sh"
2264                 . ./config.sh
2265                 cp config.sh UU
2266                 n="$tmp_n"
2267                 c="$tmp_c"
2268                 : Older versions did not always set $sh.  Catch re-use of such
2269                 : an old config.sh.
2270                 case "$sh" in
2271                 '') sh="$tmp_sh" ;;
2272                 esac
2273                 hint=previous
2274                 ;;
2275         esac
2276 fi
2277 . ./UU/checkcc
2278 if test ! -f config.sh; then
2279         $cat <<EOM
2280
2281 First time through, eh?  I have some defaults handy for some systems
2282 that need some extra help getting the Configure answers right:
2283
2284 EOM
2285         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2286         dflt=''
2287         : Half the following guesses are probably wrong... If you have better
2288         : tests or hints, please send them to perlbug@perl.org
2289         : The metaconfig authors would also appreciate a copy...
2290         $test -f /irix && osname=irix
2291         $test -f /xenix && osname=sco_xenix
2292         $test -f /dynix && osname=dynix
2293         $test -f /dnix && osname=dnix
2294         $test -f /lynx.os && osname=lynxos
2295         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2296         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2297         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2298         $test -f /bin/mips && /bin/mips && osname=mips
2299         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2300                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2301         $test -d /usr/apollo/bin && osname=apollo
2302         $test -f /etc/saf/_sactab && osname=svr4
2303         $test -d /usr/include/minix && osname=minix
2304         if $test -d /MachTen -o -d /MachTen_Folder; then
2305                 osname=machten
2306                 if $test -x /sbin/version; then
2307                         osvers=`/sbin/version | $awk '{print $2}' |
2308                         $sed -e 's/[A-Za-z]$//'`
2309                 elif $test -x /usr/etc/version; then
2310                         osvers=`/usr/etc/version | $awk '{print $2}' |
2311                         $sed -e 's/[A-Za-z]$//'`
2312                 else
2313                         osvers="$2.$3"
2314                 fi
2315         fi
2316
2317         $test -f /sys/posix.dll &&
2318                 $test -f /usr/bin/what &&
2319                 set X `/usr/bin/what /sys/posix.dll` &&
2320                 $test "$3" = UWIN &&
2321                 osname=uwin &&
2322                 osvers="$5"
2323
2324         if $test -f $uname; then
2325                 set X $myuname
2326                 shift
2327
2328                 case "$5" in
2329                 fps*) osname=fps ;;
2330                 mips*)
2331                         case "$4" in
2332                         umips) osname=umips ;;
2333                         *) osname=mips ;;
2334                         esac;;
2335                 [23]100) osname=mips ;;
2336                 next*) osname=next ;;
2337                 i386*)
2338                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2339                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2340                                 osname='sco'
2341                                 osvers=$tmp
2342                         elif $test -f /etc/kconfig; then
2343                                 osname=isc
2344                                 if test "$lns" = "$ln -s"; then
2345                                         osvers=4
2346                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2347                                         osvers=3
2348                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2349                                         osvers=2
2350                                 fi
2351                         fi
2352                         tmp=''
2353                         ;;
2354                 pc*)
2355                         if test -n "$DJGPP"; then
2356                                 osname=dos
2357                                 osvers=djgpp
2358                         fi
2359                         ;;
2360                 esac
2361
2362                 case "$1" in
2363                 aix) osname=aix
2364                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2365                         case "$tmp" in
2366                         'not found') osvers="$4"."$3" ;;
2367                         '<3240'|'<>3240') osvers=3.2.0 ;;
2368                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2369                         '=3250'|'>3250') osvers=3.2.5 ;;
2370                         *) osvers=$tmp;;
2371                         esac
2372                         ;;
2373                 bsd386) osname=bsd386
2374                         osvers=`$uname -r`
2375                         ;;
2376                 cygwin*) osname=cygwin
2377                         osvers="$3"
2378                         ;;
2379                 *dc.osx) osname=dcosx
2380                         osvers="$3"
2381                         ;;
2382                 dnix) osname=dnix
2383                         osvers="$3"
2384                         ;;
2385                 domainos) osname=apollo
2386                         osvers="$3"
2387                         ;;
2388                 dgux) osname=dgux 
2389                         osvers="$3"
2390                         ;;
2391                 dynixptx*) osname=dynixptx
2392                         osvers=`echo "$4"|sed 's/^v//'`
2393                         ;;
2394                 freebsd) osname=freebsd 
2395                         osvers="$3" ;;
2396                 genix) osname=genix ;;
2397                 hp*) osname=hpux 
2398                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2399                         ;;
2400                 irix*) osname=irix
2401                         case "$3" in
2402                         4*) osvers=4 ;;
2403                         5*) osvers=5 ;;
2404                         *)      osvers="$3" ;;
2405                         esac
2406                         ;;
2407                 linux) osname=linux
2408                         case "$3" in
2409                         *)      osvers="$3" ;;
2410                         esac
2411                         ;;
2412                 MiNT) osname=mint
2413                         ;;
2414                 netbsd*) osname=netbsd
2415                         osvers="$3"
2416                         ;;
2417                 news-os) osvers="$3"
2418                         case "$3" in
2419                         4*) osname=newsos4 ;;
2420                         *) osname=newsos ;;
2421                         esac
2422                         ;;
2423                 next*) osname=next ;;
2424                 POSIX-BC | posix-bc ) osname=posix-bc
2425                         osvers="$3"
2426                         ;;
2427                 powerux | power_ux | powermax_os | powermaxos | \
2428                 powerunix | power_unix) osname=powerux
2429                         osvers="$3"
2430                         ;;
2431                 qnx) osname=qnx
2432                         osvers="$4"
2433                         ;;
2434                 solaris) osname=solaris
2435                         case "$3" in
2436                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2437                         *)      osvers="$3" ;;
2438                         esac
2439                         ;;
2440                 sunos) osname=sunos
2441                         case "$3" in
2442                         5*) osname=solaris
2443                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2444                         *)      osvers="$3" ;;
2445                         esac
2446                         ;;
2447                 titanos) osname=titanos
2448                         case "$3" in
2449                         1*) osvers=1 ;;
2450                         2*) osvers=2 ;;
2451                         3*) osvers=3 ;;
2452                         4*) osvers=4 ;;
2453                         *)      osvers="$3" ;;
2454                         esac
2455                         ;;
2456                 ultrix) osname=ultrix
2457                         osvers="$3"
2458                         ;;
2459                 osf1|mls+)      case "$5" in
2460                                 alpha)
2461                                         osname=dec_osf
2462                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2463                                         case "$osvers" in
2464                                         [1-9].[0-9]*) ;;
2465                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2466                                         esac
2467                                         ;;
2468                         hp*)    osname=hp_osf1  ;;
2469                         mips)   osname=mips_osf1 ;;
2470                         esac
2471                         ;;
2472                 unixware) osname=svr5
2473                         osvers="$4"
2474                         ;;
2475                 uts) osname=uts
2476                         osvers="$3"
2477                         ;;
2478                 $2) case "$osname" in
2479                         *isc*) ;;
2480                         *freebsd*) ;;
2481                         svr*)
2482                                 : svr4.x or possibly later
2483                                 case "svr$3" in 
2484                                 ${osname}*)
2485                                         osname=svr$3
2486                                         osvers=$4
2487                                         ;;
2488                                 esac
2489                                 case "$osname" in
2490                                 svr4.0)
2491                                         : Check for ESIX
2492                                         if test -f /stand/boot ; then
2493                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2494                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2495                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2496                                                         if test -n "$isesix"; then
2497                                                                 osname=esix4
2498                                                         fi
2499                                                 fi
2500                                         fi
2501                                         ;;
2502                                 esac
2503                                 ;;
2504                         *)      if test -f /etc/systemid; then
2505                                         osname=sco
2506                                         set `echo $3 | $sed 's/\./ /g'` $4
2507                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2508                                                 osvers=$1.$2.$3
2509                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2510                                                 osvers=$1.$2
2511                                         elif $test -f $src/hints/sco_$1.sh; then
2512                                                 osvers=$1
2513                                         fi
2514                                 else
2515                                         case "$osname" in
2516                                         '') : Still unknown.  Probably a generic Sys V.
2517                                                 osname="sysv"
2518                                                 osvers="$3"
2519                                                 ;;
2520                                         esac
2521                                 fi
2522                                 ;;
2523                         esac
2524                         ;;
2525                 *)      case "$osname" in
2526                         '') : Still unknown.  Probably a generic BSD.
2527                                 osname="$1"
2528                                 osvers="$3"
2529                                 ;;
2530                         esac
2531                         ;;
2532                 esac
2533         else
2534                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2535                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2536                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2537                                 osname=news_os
2538                         fi
2539                         $rm -f UU/kernel.what
2540                 elif test -d c:/.; then
2541                         set X $myuname
2542                         osname=os2
2543                         osvers="$5"
2544                 fi
2545         fi
2546         
2547         : Now look for a hint file osname_osvers, unless one has been
2548         : specified already.
2549         case "$hintfile" in
2550         ''|' ')
2551                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2552                 : Also try without trailing minor version numbers.
2553                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2554                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2555                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2556                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2557                 case "$file" in
2558                 '') dflt=none ;;
2559                 *)  case "$osvers" in
2560                         '') dflt=$file
2561                                 ;;
2562                         *)  if $test -f $src/hints/$file.sh ; then
2563                                         dflt=$file
2564                                 elif $test -f $src/hints/$xfile.sh ; then
2565                                         dflt=$xfile
2566                                 elif $test -f $src/hints/$xxfile.sh ; then
2567                                         dflt=$xxfile
2568                                 elif $test -f $src/hints/$xxxfile.sh ; then
2569                                         dflt=$xxxfile
2570                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2571                                         dflt=$xxxxfile
2572                                 elif $test -f "$src/hints/${osname}.sh" ; then
2573                                         dflt="${osname}"
2574                                 else
2575                                         dflt=none
2576                                 fi
2577                                 ;;
2578                         esac
2579                         ;;
2580                 esac
2581                 if $test -f Policy.sh ; then
2582                         case "$dflt" in
2583                         *Policy*) ;;
2584                         none) dflt="Policy" ;;
2585                         *) dflt="Policy $dflt" ;;
2586                         esac
2587                 fi
2588                 ;;
2589         *)
2590                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2591                 ;;
2592         esac
2593
2594         if $test -f Policy.sh ; then
2595                 $cat <<EOM
2596
2597 There's also a Policy hint file available, which should make the
2598 site-specific (policy) questions easier to answer.
2599 EOM
2600
2601         fi
2602
2603         $cat <<EOM
2604
2605 You may give one or more space-separated answers, or "none" if appropriate.
2606 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2607 is a good thing.  DO NOT give a wrong version or a wrong OS.
2608
2609 EOM
2610
2611         rp="Which of these apply, if any?"
2612         . UU/myread
2613         tans=$ans
2614         for file in $tans; do
2615                 if $test X$file = XPolicy -a -f Policy.sh; then
2616                         . Policy.sh
2617                         $cat Policy.sh >> UU/config.sh
2618                 elif $test -f $src/hints/$file.sh; then
2619                         . $src/hints/$file.sh
2620                         $cat $src/hints/$file.sh >> UU/config.sh
2621                 elif $test X$tans = X -o X$tans = Xnone ; then
2622                         : nothing
2623                 else
2624                         : Give one chance to correct a possible typo.
2625                         echo "$file.sh does not exist"
2626                         dflt=$file
2627                         rp="hint to use instead?"
2628                         . UU/myread
2629                         for file in $ans; do
2630                                 if $test -f "$src/hints/$file.sh"; then
2631                                         . $src/hints/$file.sh
2632                                         $cat $src/hints/$file.sh >> UU/config.sh
2633                                 elif $test X$ans = X -o X$ans = Xnone ; then
2634                                         : nothing
2635                                 else
2636                                         echo "$file.sh does not exist -- ignored."
2637                                 fi
2638                         done
2639                 fi
2640         done
2641
2642         hint=recommended
2643         : Remember our hint file for later.
2644         if $test -f "$src/hints/$file.sh" ; then
2645                 hintfile="$file"
2646         else
2647                 hintfile=''
2648         fi
2649 fi
2650 cd UU
2651 ;;
2652 *)
2653         echo " "
2654         echo "Fetching default answers from $config_sh..." >&4
2655         tmp_n="$n"
2656         tmp_c="$c"
2657         cd ..
2658         cp $config_sh config.sh 2>/dev/null
2659         chmod +w config.sh
2660         . ./config.sh
2661         cd UU
2662         cp ../config.sh .
2663         n="$tmp_n"
2664         c="$tmp_c"
2665         hint=previous
2666         ;;
2667 esac
2668 test "$override" && . ./optdef.sh
2669 myuname="$newmyuname"
2670
2671 : Restore computed paths
2672 for file in $loclist $trylist; do
2673         eval $file="\$_$file"
2674 done
2675
2676 cat << EOM
2677
2678 Configure uses the operating system name and version to set some defaults.
2679 The default value is probably right if the name rings a bell. Otherwise,
2680 since spelling matters for me, either accept the default or answer "none"
2681 to leave it blank.
2682
2683 EOM
2684 case "$osname" in
2685         ''|' ')
2686                 case "$hintfile" in
2687                 ''|' '|none) dflt=none ;;
2688                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2689                 esac
2690                 ;;
2691         *) dflt="$osname" ;;
2692 esac
2693 rp="Operating system name?"
2694 . ./myread
2695 case "$ans" in
2696 none)  osname='' ;;
2697 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2698 esac
2699 echo " "
2700 case "$osvers" in
2701         ''|' ')
2702                 case "$hintfile" in
2703                 ''|' '|none) dflt=none ;;
2704                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2705                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2706                         case "$dflt" in
2707                         ''|' ') dflt=none ;;
2708                         esac
2709                         ;;
2710                 esac
2711                 ;;
2712         *) dflt="$osvers" ;;
2713 esac
2714 rp="Operating system version?"
2715 . ./myread
2716 case "$ans" in
2717 none)  osvers='' ;;
2718 *) osvers="$ans" ;;
2719 esac
2720
2721
2722 . ./posthint.sh
2723
2724 : who configured the system
2725 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2726 cf_by=`(logname) 2>/dev/null`
2727 case "$cf_by" in
2728 "")
2729         cf_by=`(whoami) 2>/dev/null`
2730         case "$cf_by" in
2731         "") cf_by=unknown ;;
2732         esac ;;
2733 esac
2734
2735 : set up the script used to warn in case of inconsistency
2736 cat <<EOS >whoa
2737 $startsh
2738 EOS
2739 cat <<'EOSC' >>whoa
2740 dflt=y
2741 echo " "
2742 echo "*** WHOA THERE!!! ***" >&4
2743 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2744 rp="    Keep the $hint value?"
2745 . ./myread
2746 case "$ans" in
2747 y) td=$was; tu=$was;;
2748 esac
2749 EOSC
2750
2751 : function used to set $1 to $val
2752 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2753 case "$val$was" in
2754 $define$undef) . ./whoa; eval "$var=\$td";;
2755 $undef$define) . ./whoa; eval "$var=\$tu";;
2756 *) eval "$var=$val";;
2757 esac'
2758
2759 case "$usethreads" in
2760 $define|true|[yY]*)     dflt='y';;
2761 *) dflt='n';;
2762 esac
2763 cat <<EOM
2764
2765 Perl can be built to take advantage of threads on some systems.
2766 To do so, Configure can be run with -Dusethreads.
2767
2768 Note that threading is a highly experimental feature, and
2769 some known race conditions still remain.  If you choose to try
2770 it, be very sure to not actually deploy it for production
2771 purposes.  README.threads has more details, and is required
2772 reading if you enable threads.
2773
2774 If this doesn't make any sense to you, just accept the default '$dflt'.
2775 EOM
2776 rp='Build a threading Perl?'
2777 . ./myread
2778 case "$ans" in
2779 y|Y)    val="$define" ;;
2780 *)      val="$undef" ;;
2781 esac
2782 set usethreads
2783 eval $setvar
2784
2785 case "$usethreads" in
2786 $define)
2787         $cat <<EOM
2788
2789 As of 5.5.640, Perl has two different internal threading implementations,
2790 the 5.005 version (5005threads) and an interpreter-based version
2791 (ithreads) that has one interpreter per thread.  Both are very 
2792 experimental.  This arrangement exists to help developers work out
2793 which one is better.
2794
2795 If you're a casual user, you probably don't want interpreter-threads
2796 at this time.  There doesn't yet exist a way to create threads from
2797 within Perl in this model, i.e., "use Thread;" will NOT work.
2798 EOM
2799         : Default to ithreads unless overridden on command line or with
2800         : old config.sh
2801         dflt='y'
2802         case "$use5005threads" in
2803                 $define|true|[yY]*) dflt='n';;
2804         esac
2805         case "$useithreads" in
2806                 $undef|false|[nN]*) dflt='n';;
2807         esac
2808         rp='Use interpreter-based ithreads?'
2809         . ./myread
2810         case "$ans" in
2811         y|Y)    val="$define" ;;
2812         *)      val="$undef" ;;
2813         esac
2814         set useithreads
2815         eval $setvar
2816         : Now set use5005threads to the opposite value.
2817         case "$useithreads" in
2818         $define) val="$undef" ;;
2819         *) val="$define" ;;
2820         esac
2821         set use5005threads
2822         eval $setvar
2823         ;;
2824 *)
2825         useithreads="$undef"
2826         use5005threads="$undef"
2827         ;;
2828 esac
2829
2830 case "$d_oldpthreads" in
2831 '')     : Configure tests would be welcome here.  For now, assume undef.
2832         val="$undef" ;;
2833 *)      val="$d_oldpthreads" ;;
2834 esac
2835 set d_oldpthreads
2836 eval $setvar
2837
2838
2839 case "$usethreads" in
2840 "$define"|true|[yY]*)
2841 : Look for a hint-file generated 'call-back-unit'.  If the
2842 : user has specified that a threading perl is to be built,
2843 : we may need to set or change some other defaults.
2844         if $test -f usethreads.cbu; then
2845                 echo "Your platform has some specific hints for threaded builds, using them..."
2846                 . ./usethreads.cbu
2847         else
2848                 $cat <<EOM
2849 (Your platform doesn't have any specific hints for threaded builds.
2850  Assuming POSIX threads, then.)
2851 EOM
2852         fi
2853         ;;
2854 esac
2855
2856 cat <<EOM
2857
2858 Perl can be built so that multiple Perl interpreters can coexist
2859 within the same Perl executable.
2860 EOM
2861
2862 case "$useithreads" in
2863 $define)
2864         cat <<EOM
2865 This multiple interpreter support is required for interpreter-based threads.
2866 EOM
2867         val="$define"
2868         ;;
2869 *)      case "$usemultiplicity" in
2870         $define|true|[yY]*)     dflt='y';;
2871         *) dflt='n';;
2872         esac
2873         echo " "
2874         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2875         rp='Build Perl for multiplicity?'
2876         . ./myread
2877         case "$ans" in
2878         y|Y)    val="$define" ;;
2879         *)      val="$undef" ;;
2880         esac
2881         ;;
2882 esac
2883 set usemultiplicity
2884 eval $setvar
2885
2886 : make some quick guesses about what we are up against
2887 echo " "
2888 $echo $n "Hmm...  $c"
2889 echo exit 1 >bsd
2890 echo exit 1 >usg
2891 echo exit 1 >v7
2892 echo exit 1 >osf1
2893 echo exit 1 >eunice
2894 echo exit 1 >xenix
2895 echo exit 1 >venix
2896 echo exit 1 >os2
2897 d_bsd="$undef"
2898 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2899 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2900 then
2901         echo "Looks kind of like an OSF/1 system, but we'll see..."
2902         echo exit 0 >osf1
2903 elif test `echo abc | tr a-z A-Z` = Abc ; then
2904         xxx=`./loc addbib blurfl $pth`
2905         if $test -f $xxx; then
2906         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2907                 echo exit 0 >bsd
2908                 echo exit 0 >usg
2909         else
2910                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2911                         echo "Looks kind of like an extended USG system, but we'll see..."
2912                 else
2913                         echo "Looks kind of like a USG system, but we'll see..."
2914                 fi
2915                 echo exit 0 >usg
2916         fi
2917 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2918         echo "Looks kind of like a BSD system, but we'll see..."
2919         d_bsd="$define"
2920         echo exit 0 >bsd
2921 else
2922         echo "Looks kind of like a Version 7 system, but we'll see..."
2923         echo exit 0 >v7
2924 fi
2925 case "$eunicefix" in
2926 *unixtovms*)
2927         $cat <<'EOI'
2928 There is, however, a strange, musty smell in the air that reminds me of
2929 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2930 EOI
2931         echo exit 0 >eunice
2932         d_eunice="$define"
2933 : it so happens the Eunice I know will not run shell scripts in Unix format
2934         ;;
2935 *)
2936         echo " "
2937         echo "Congratulations.  You aren't running Eunice."
2938         d_eunice="$undef"
2939         ;;
2940 esac
2941 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2942 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2943 : semicolon as a patch separator
2944 case "$p_" in
2945 :) ;;
2946 *)
2947         $cat <<'EOI'
2948 I have the feeling something is not exactly right, however...don't tell me...
2949 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2950 (Or you may be running DOS with DJGPP.)
2951 EOI
2952         echo exit 0 >os2
2953         ;;
2954 esac
2955 if test -f /xenix; then
2956         echo "Actually, this looks more like a XENIX system..."
2957         echo exit 0 >xenix
2958         d_xenix="$define"
2959 else
2960         echo " "
2961         echo "It's not Xenix..."
2962         d_xenix="$undef"
2963 fi
2964 chmod +x xenix
2965 $eunicefix xenix
2966 if test -f /venix; then
2967         echo "Actually, this looks more like a VENIX system..."
2968         echo exit 0 >venix
2969 else
2970         echo " "
2971         if ./xenix; then
2972                 : null
2973         else
2974                 echo "Nor is it Venix..."
2975         fi
2976 fi
2977 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2978 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2979 $rm -f foo
2980
2981 case "$cc" in
2982 '') dflt=cc;;
2983 *) dflt="$cc";;
2984 esac
2985 rp="Use which C compiler?"
2986 . ./myread
2987 cc="$ans"
2988 : Look for a hint-file generated 'call-back-unit'.  Now that the
2989 : user has specified the compiler, we may need to set or change some
2990 : other defaults.
2991 if $test -f cc.cbu; then
2992     . ./cc.cbu
2993 fi
2994 . ./checkcc
2995
2996 echo " "
2997 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2998 $cat >gccvers.c <<EOM
2999 #include <stdio.h>
3000 int main() {
3001 #ifdef __GNUC__
3002 #ifdef __VERSION__
3003         printf("%s\n", __VERSION__);
3004 #else
3005         printf("%s\n", "1");
3006 #endif
3007 #endif
3008         exit(0);
3009 }
3010 EOM
3011 if $cc $ldflags -o gccvers gccvers.c; then
3012         gccversion=`./gccvers`
3013         case "$gccversion" in
3014         '') echo "You are not using GNU cc." ;;
3015         *)  echo "You are using GNU cc $gccversion."
3016             ccname=gcc  
3017             ;;
3018         esac
3019 else
3020         echo " "
3021         echo "*** WHOA THERE!!! ***" >&4
3022         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3023         case "$knowitall" in
3024         '')
3025         echo "    You'd better start hunting for one and let me know about it." >&4
3026                 exit 1
3027                 ;;
3028         esac
3029 fi
3030 $rm -f gccvers*
3031 case "$gccversion" in
3032 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3033 esac
3034 case "$gccversion" in
3035 '') gccosandvers='' ;;
3036 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3037    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3038    gccshortvers=''
3039    case "$gccosandvers" in
3040    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3041    $osname$osvers) ;; # looking good
3042    $osname*) cat <<EOM >&4
3043
3044 *** WHOA THERE!!! ***
3045
3046     Your gcc has not been compiled for the exact release of
3047     your operating system ($gccosandvers versus $osname$osvers).
3048
3049     In general it is a good idea to keep gcc synchronized with
3050     the operating system because otherwise serious problems
3051     may ensue when trying to compile software, like Perl.
3052
3053     I'm trying to be optimistic here, though, and will continue.
3054     If later during the configuration and build icky compilation
3055     problems appear (headerfile conflicts being the most common
3056     manifestation), I suggest reinstalling the gcc to match
3057     your operating system release.
3058
3059 EOM
3060       ;;
3061    *) gccosandvers='' ;; # failed to parse, better be silent
3062    esac
3063    ;;
3064 esac
3065 case "$ccname" in
3066 '') ccname="$cc" ;;
3067 esac
3068
3069 : see how we invoke the C preprocessor
3070 echo " "
3071 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3072 cat <<'EOT' >testcpp.c
3073 #define ABC abc
3074 #define XYZ xyz
3075 ABC.XYZ
3076 EOT
3077 cd ..
3078 if test ! -f cppstdin; then
3079         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3080                 # AIX cc -E doesn't show the absolute headerfile
3081                 # locations but we'll cheat by using the -M flag.
3082                 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
3083         else
3084                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3085         fi
3086 else
3087         echo "Keeping your $hint cppstdin wrapper."
3088 fi
3089 chmod 755 cppstdin
3090 wrapper=`pwd`/cppstdin
3091 ok='false'
3092 cd UU
3093
3094 if $test "X$cppstdin" != "X" && \
3095         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3096         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3097 then
3098         echo "You used to use $cppstdin $cppminus so we'll use that again."
3099         case "$cpprun" in
3100         '') echo "But let's see if we can live without a wrapper..." ;;
3101         *)
3102                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3103                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3104                 then
3105                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3106                         ok='true'
3107                 else
3108                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3109                 fi
3110                 ;;
3111         esac
3112 else
3113         case "$cppstdin" in
3114         '') ;;
3115         *)
3116                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3117                 ;;
3118         esac
3119 fi
3120
3121 if $ok; then
3122         : nothing
3123 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3124         $cc -E <testcpp.c >testcpp.out 2>&1; \
3125         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3126         echo "Yup, it does."
3127         x_cpp="$cc -E"
3128         x_minus='';
3129 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3130         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3131         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3132         echo "Yup, it does."
3133         x_cpp="$cc -E"
3134         x_minus='-';
3135 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3136         $cc -P <testcpp.c >testcpp.out 2>&1; \
3137         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3138         echo "Yipee, that works!"
3139         x_cpp="$cc -P"
3140         x_minus='';
3141 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3142         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3143         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3144         echo "At long last!"
3145         x_cpp="$cc -P"
3146         x_minus='-';
3147 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3148         $cpp <testcpp.c >testcpp.out 2>&1; \
3149         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3150         echo "It works!"
3151         x_cpp="$cpp"
3152         x_minus='';
3153 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3154         $cpp - <testcpp.c >testcpp.out 2>&1; \
3155         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3156         echo "Hooray, it works!  I was beginning to wonder."
3157         x_cpp="$cpp"
3158         x_minus='-';
3159 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3160         $wrapper <testcpp.c >testcpp.out 2>&1; \
3161         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3162         x_cpp="$wrapper"
3163         x_minus=''
3164         echo "Eureka!"
3165 else
3166         dflt=''
3167         rp="No dice.  I can't find a C preprocessor.  Name one:"
3168         . ./myread
3169         x_cpp="$ans"
3170         x_minus=''
3171         $x_cpp <testcpp.c >testcpp.out 2>&1
3172         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3173                 echo "OK, that will do." >&4
3174         else
3175 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3176                 exit 1
3177         fi
3178 fi
3179
3180 case "$ok" in
3181 false)
3182         cppstdin="$x_cpp"
3183         cppminus="$x_minus"
3184         cpprun="$x_cpp"
3185         cpplast="$x_minus"
3186         set X $x_cpp
3187         shift
3188         case "$1" in
3189         "$cpp")
3190                 echo "Perhaps can we force $cc -E using a wrapper..."
3191                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3192                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3193                 then
3194                         echo "Yup, we can."
3195                         cppstdin="$wrapper"
3196                         cppminus='';
3197                 else
3198                         echo "Nope, we'll have to live without it..."
3199                 fi
3200                 ;;
3201         esac
3202         case "$cpprun" in
3203         "$wrapper")
3204                 cpprun=''
3205                 cpplast=''
3206                 ;;
3207         esac
3208         ;;
3209 esac
3210
3211 case "$cppstdin" in
3212 "$wrapper"|'cppstdin') ;;
3213 *) $rm -f $wrapper;;
3214 esac
3215 $rm -f testcpp.c testcpp.out
3216
3217 : decide how portable to be.  Allow command line overrides.
3218 case "$d_portable" in
3219 "$undef") ;;
3220 *)      d_portable="$define" ;;
3221 esac
3222
3223 : set up shell script to do ~ expansion
3224 cat >filexp <<EOSS
3225 $startsh
3226 : expand filename
3227 case "\$1" in
3228  ~/*|~)
3229         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3230         ;;
3231  ~*)
3232         if $test -f /bin/csh; then
3233                 /bin/csh -f -c "glob \$1"
3234                 failed=\$?
3235                 echo ""
3236                 exit \$failed
3237         else
3238                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3239                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3240                 if $test ! -d "\$dir"; then
3241                         me=\`basename \$0\`
3242                         echo "\$me: can't locate home directory for: \$name" >&2
3243                         exit 1
3244                 fi
3245                 case "\$1" in
3246                 */*)
3247                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3248                         ;;
3249                 *)
3250                         echo \$dir
3251                         ;;
3252                 esac
3253         fi
3254         ;;
3255 *)
3256         echo \$1
3257         ;;
3258 esac
3259 EOSS
3260 chmod +x filexp
3261 $eunicefix filexp
3262
3263 : now set up to get a file name
3264 cat <<EOS >getfile
3265 $startsh
3266 EOS
3267 cat <<'EOSC' >>getfile
3268 tilde=''
3269 fullpath=''
3270 already=''
3271 skip=''
3272 none_ok=''
3273 exp_file=''
3274 nopath_ok=''
3275 orig_rp="$rp"
3276 orig_dflt="$dflt"
3277 case "$gfpth" in
3278 '') gfpth='.' ;;
3279 esac
3280
3281 case "$fn" in
3282 *\(*)
3283         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3284         fn=`echo $fn | sed 's/(.*)//'`
3285         ;;
3286 esac
3287
3288 case "$fn" in
3289 *:*)
3290         loc_file=`expr $fn : '.*:\(.*\)'`
3291         fn=`expr $fn : '\(.*\):.*'`
3292         ;;
3293 esac
3294
3295 case "$fn" in
3296 *~*) tilde=true;;
3297 esac
3298 case "$fn" in
3299 */*) fullpath=true;;
3300 esac
3301 case "$fn" in
3302 *+*) skip=true;;
3303 esac
3304 case "$fn" in
3305 *n*) none_ok=true;;
3306 esac
3307 case "$fn" in
3308 *e*) exp_file=true;;
3309 esac
3310 case "$fn" in
3311 *p*) nopath_ok=true;;
3312 esac
3313
3314 case "$fn" in
3315 *f*) type='File';;
3316 *d*) type='Directory';;
3317 *l*) type='Locate';;
3318 esac
3319
3320 what="$type"
3321 case "$what" in
3322 Locate) what='File';;
3323 esac
3324
3325 case "$exp_file" in
3326 '')
3327         case "$d_portable" in
3328         "$define") ;;
3329         *) exp_file=true;;
3330         esac
3331         ;;
3332 esac
3333
3334 cd ..
3335 while test "$type"; do
3336         redo=''
3337         rp="$orig_rp"
3338         dflt="$orig_dflt"
3339         case "$tilde" in
3340         true) rp="$rp (~name ok)";;
3341         esac
3342         . UU/myread
3343         if test -f UU/getfile.ok && \
3344                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3345         then
3346                 value="$ans"
3347                 ansexp="$ans"
3348                 break
3349         fi
3350         case "$ans" in
3351         none)
3352                 value=''
3353                 ansexp=''
3354                 case "$none_ok" in
3355                 true) type='';;
3356                 esac
3357                 ;;
3358         *)
3359                 case "$tilde" in
3360                 '') value="$ans"
3361                         ansexp="$ans";;
3362                 *)
3363                         value=`UU/filexp $ans`
3364                         case $? in
3365                         0)
3366                                 if test "$ans" != "$value"; then
3367                                         echo "(That expands to $value on this system.)"
3368                                 fi
3369                                 ;;
3370                         *) value="$ans";;
3371                         esac
3372                         ansexp="$value"
3373                         case "$exp_file" in
3374                         '') value="$ans";;
3375                         esac
3376                         ;;
3377                 esac
3378                 case "$fullpath" in
3379                 true)
3380                         case "$ansexp" in
3381                         /*) value="$ansexp" ;;
3382                         [a-zA-Z]:/*) value="$ansexp" ;;
3383                         *)
3384                                 redo=true
3385                                 case "$already" in
3386                                 true)
3387                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3388                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3389                                         ;;
3390                                 *)
3391                                 echo "Please give a full path name, starting with slash." >&4
3392                                         case "$tilde" in
3393                                         true)
3394                                 echo "Note that using ~name is ok provided it expands well." >&4
3395                                                 already=true
3396                                                 ;;
3397                                         esac
3398                                 esac
3399                                 ;;
3400                         esac
3401                         ;;
3402                 esac
3403                 case "$redo" in
3404                 '')
3405                         case "$type" in
3406                         File)
3407                                 for fp in $gfpth; do
3408                                         if test "X$fp" = X.; then
3409                                             pf="$ansexp"
3410                                         else    
3411                                             pf="$fp/$ansexp"
3412                                         fi
3413                                         if test -f "$pf"; then
3414                                                 type=''
3415                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3416                                         then
3417                                                 echo "($value is not a plain file, but that's ok.)"
3418                                                 type=''
3419                                         fi
3420                                         if test X"$type" = X; then
3421                                             value="$pf"
3422                                             break
3423                                         fi
3424                                 done
3425                                 ;;
3426                         Directory)
3427                                 for fp in $gfpth; do
3428                                         if test "X$fp" = X.; then
3429                                             dir="$ans"
3430                                             direxp="$ansexp"
3431                                         else    
3432                                             dir="$fp/$ansexp"
3433                                             direxp="$fp/$ansexp"
3434                                         fi
3435                                         if test -d "$direxp"; then
3436                                                 type=''
3437                                                 value="$dir"
3438                                                 break
3439                                         fi
3440                                 done
3441                                 ;;
3442                         Locate)
3443                                 if test -d "$ansexp"; then
3444                                         echo "(Looking for $loc_file in directory $value.)"
3445                                         value="$value/$loc_file"
3446                                         ansexp="$ansexp/$loc_file"
3447                                 fi
3448                                 if test -f "$ansexp"; then
3449                                         type=''
3450                                 fi
3451                                 case "$nopath_ok" in
3452                                 true)   case "$value" in
3453                                         */*) ;;
3454                                         *)      echo "Assuming $value will be in people's path."
3455                                                 type=''
3456                                                 ;;
3457                                         esac
3458                                         ;;
3459                                 esac
3460                                 ;;
3461                         esac
3462
3463                         case "$skip" in
3464                         true) type='';
3465                         esac
3466
3467                         case "$type" in
3468                         '') ;;
3469                         *)
3470                                 if test "$fastread" = yes; then
3471                                         dflt=y
3472                                 else
3473                                         dflt=n
3474                                 fi
3475                                 rp="$what $value doesn't exist.  Use that name anyway?"
3476                                 . UU/myread
3477                                 dflt=''
3478                                 case "$ans" in
3479                                 y*) type='';;
3480                                 *) echo " ";;
3481                                 esac
3482                                 ;;
3483                         esac
3484                         ;;
3485                 esac
3486                 ;;
3487         esac
3488 done
3489 cd UU
3490 ans="$value"
3491 rp="$orig_rp"
3492 dflt="$orig_dflt"
3493 rm -f getfile.ok
3494 test "X$gfpthkeep" != Xy && gfpth=""
3495 EOSC
3496
3497 : What should the include directory be ?
3498 echo " "
3499 $echo $n "Hmm...  $c"
3500 dflt='/usr/include'
3501 incpath=''
3502 mips_type=''
3503 if $test -f /bin/mips && /bin/mips; then
3504         echo "Looks like a MIPS system..."
3505         $cat >usr.c <<'EOCP'
3506 #ifdef SYSTYPE_BSD43
3507 /bsd43
3508 #endif
3509 EOCP
3510         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3511                 dflt='/bsd43/usr/include'
3512                 incpath='/bsd43'
3513                 mips_type='BSD 4.3'
3514         else
3515                 mips_type='System V'
3516         fi
3517         $rm -f usr.c usr.out
3518         echo "and you're compiling with the $mips_type compiler and libraries."
3519         xxx_prompt=y
3520         echo "exit 0" >mips
3521 else
3522         echo "Doesn't look like a MIPS system."
3523         xxx_prompt=n
3524         echo "exit 1" >mips
3525 fi
3526 chmod +x mips
3527 $eunicefix mips
3528 case "$usrinc" in
3529 '') ;;
3530 *) dflt="$usrinc";;
3531 esac
3532 case "$xxx_prompt" in
3533 y)      fn=d/
3534         echo " "
3535         rp='Where are the include files you want to use?'
3536         . ./getfile
3537         usrinc="$ans"
3538         ;;
3539 *)      usrinc="$dflt"
3540         ;;
3541 esac
3542
3543 : Set private lib path
3544 case "$plibpth" in
3545 '') if ./mips; then
3546                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3547         fi;;
3548 esac
3549 case "$libpth" in
3550 ' ') dlist='';;
3551 '') dlist="$loclibpth $plibpth $glibpth";;
3552 *) dlist="$libpth";;
3553 esac
3554
3555 : Now check and see which directories actually exist, avoiding duplicates
3556 libpth=''
3557 for xxx in $dlist
3558 do
3559     if $test -d $xxx; then
3560                 case " $libpth " in
3561                 *" $xxx "*) ;;
3562                 *) libpth="$libpth $xxx";;
3563                 esac
3564     fi
3565 done
3566 $cat <<'EOM'
3567
3568 Some systems have incompatible or broken versions of libraries.  Among
3569 the directories listed in the question below, please remove any you
3570 know not to be holding relevant libraries, and add any that are needed.
3571 Say "none" for none.
3572
3573 EOM
3574 case "$libpth" in
3575 '') dflt='none';;
3576 *)
3577         set X $libpth
3578         shift
3579         dflt=${1+"$@"}
3580         ;;
3581 esac
3582 rp="Directories to use for library searches?"
3583 . ./myread
3584 case "$ans" in
3585 none) libpth=' ';;
3586 *) libpth="$ans";;
3587 esac
3588
3589 : compute shared library extension
3590 case "$so" in
3591 '')
3592         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3593                 dflt='sl'
3594         else
3595                 dflt='so'
3596         fi
3597         ;;
3598 *) dflt="$so";;
3599 esac
3600 $cat <<EOM
3601
3602 On some systems, shared libraries may be available.  Answer 'none' if
3603 you want to suppress searching of shared libraries for the remainder
3604 of this configuration.
3605
3606 EOM
3607 rp='What is the file extension used for shared libraries?'
3608 . ./myread
3609 so="$ans"
3610
3611 : Define several unixisms.
3612 : Hints files or command line option can be used to override them.
3613 : The convoluted testing is in case hints files set either the old
3614 : or the new name.
3615 case "$_exe" in
3616 '')     case "$exe_ext" in
3617     '') ;;
3618         *)      _exe="$exe_ext" ;;
3619         esac
3620         ;;
3621 esac
3622 case "$_a" in
3623 '')     case "$lib_ext" in
3624     '') _a='.a';;
3625         *)      _a="$lib_ext" ;;
3626         esac
3627         ;;
3628 esac
3629 case "$_o" in
3630 '') case "$obj_ext" in
3631         '')     _o='.o';;
3632         *)      _o="$obj_ext";;
3633         esac
3634         ;;
3635 esac
3636 case "$p_" in
3637 '') case "$path_sep" in
3638         '')     p_=':';;
3639         *)      p_="$path_sep";;
3640         esac
3641         ;;
3642 esac
3643 exe_ext=$_exe
3644 lib_ext=$_a
3645 obj_ext=$_o
3646 path_sep=$p_
3647
3648 : Which makefile gets called first.  This is used by make depend.
3649 case "$firstmakefile" in
3650 '') firstmakefile='makefile';;
3651 esac
3652
3653 case "$usesocks" in
3654 $define|true|[yY]*)     dflt='y';;
3655 *) dflt='n';;
3656 esac
3657 cat <<EOM
3658
3659 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3660 Configure must be run with -Dusesocks.
3661
3662 If this doesn't make any sense to you, just accept the default '$dflt'.
3663 EOM
3664 rp='Build Perl for SOCKS?'
3665 . ./myread
3666 case "$ans" in
3667 y|Y)    val="$define" ;;     
3668 *)      val="$undef" ;;
3669 esac
3670 set usesocks
3671 eval $setvar
3672
3673 : Looking for optional libraries
3674 echo " "
3675 echo "Checking for optional libraries..." >&4
3676 case "$libs" in
3677 ' '|'') dflt='';;
3678 *) dflt="$libs";;
3679 esac
3680 case "$libswanted" in
3681 '') libswanted='c_s';;
3682 esac
3683 case "$usesocks" in
3684 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3685 esac
3686 libsfound=''
3687 libsfiles=''
3688 libsdirs=''
3689 libspath=''
3690 for thisdir in $libpth $xlibpth; do
3691   test -d $thisdir && libspath="$libspath $thisdir"
3692 done
3693 for thislib in $libswanted; do
3694         for thisdir in $libspath; do
3695             xxx=''
3696             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3697                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3698                 $test -f "$xxx" && eval $libscheck
3699                 $test -f "$xxx" && libstyle=shared
3700             fi
3701             if test ! -f "$xxx"; then
3702                 xxx=$thisdir/lib$thislib.$so
3703                 $test -f "$xxx" && eval $libscheck
3704                 $test -f "$xxx" && libstyle=shared
3705             fi  
3706             if test ! -f "$xxx"; then
3707                 xxx=$thisdir/lib$thislib$_a
3708                 $test -f "$xxx" && eval $libscheck
3709                 $test -f "$xxx" && libstyle=static
3710             fi
3711             if test ! -f "$xxx"; then
3712                 xxx=$thisdir/$thislib$_a
3713                 $test -f "$xxx" && eval $libscheck
3714                 $test -f "$xxx" && libstyle=static
3715             fi
3716             if test ! -f "$xxx"; then
3717                 xxx=$thisdir/lib${thislib}_s$_a
3718                 $test -f "$xxx" && eval $libscheck
3719                 $test -f "$xxx" && libstyle=static
3720                 $test -f "$xxx" && thislib=${thislib}_s
3721             fi
3722             if test ! -f "$xxx"; then
3723                 xxx=$thisdir/Slib$thislib$_a
3724                 $test -f "$xxx" && eval $libscheck
3725                 $test -f "$xxx" && libstyle=static
3726             fi
3727             if $test -f "$xxx"; then
3728                 case "$libstyle" in
3729                 shared) echo "Found -l$thislib (shared)." ;;
3730                 static) echo "Found -l$thislib." ;;
3731                 *)      echo "Found -l$thislib ($libstyle)." ;;
3732                 esac
3733                 case " $dflt " in
3734                 *"-l$thislib "*);;
3735                 *) dflt="$dflt -l$thislib"
3736                    libsfound="$libsfound $xxx"
3737                    yyy=`basename $xxx`
3738                    libsfiles="$libsfiles $yyy"
3739                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3740                    case " $libsdirs " in
3741                    *" $yyy "*) ;;
3742                    *) libsdirs="$libsdirs $yyy" ;;
3743                    esac
3744                    ;;
3745                 esac
3746                 break
3747             fi  
3748         done
3749         if $test ! -f "$xxx"; then
3750             echo "No -l$thislib."
3751         fi
3752 done
3753 set X $dflt
3754 shift
3755 dflt="$*"
3756 case "$libs" in
3757 '') dflt="$dflt";;
3758 *) dflt="$libs";;
3759 esac
3760 case "$dflt" in
3761 ' '|'') dflt='none';;
3762 esac
3763
3764 $cat <<EOM
3765
3766 In order to compile $package on your machine, a number of libraries
3767 are usually needed.  Include any other special libraries here as well.
3768 Say "none" for none.  The default list is almost always right.
3769 EOM
3770
3771 echo " "
3772 rp="What libraries to use?"
3773 . ./myread
3774 case "$ans" in
3775 none) libs=' ';;
3776 *) libs="$ans";;
3777 esac
3778
3779 : determine optimization, if desired, or use for debug flag also
3780 case "$optimize" in
3781 ' '|$undef) dflt='none';;
3782 '') dflt='-O';;
3783 *) dflt="$optimize";;
3784 esac
3785 $cat <<EOH
3786
3787 By default, $package compiles with the -O flag to use the optimizer.
3788 Alternately, you might want to use the symbolic debugger, which uses
3789 the -g flag (on traditional Unix systems).  Either flag can be
3790 specified here.  To use neither flag, specify the word "none".
3791
3792 EOH
3793 rp="What optimizer/debugger flag should be used?"
3794 . ./myread
3795 optimize="$ans"
3796 case "$optimize" in
3797 'none') optimize=" ";;
3798 esac
3799
3800 dflt=''
3801 : We will not override a previous value, but we might want to
3802 : augment a hint file
3803 case "$hint" in
3804 default|recommended)
3805         case "$gccversion" in
3806         1*) dflt='-fpcc-struct-return' ;;
3807         esac
3808         case "$optimize" in
3809         *-g*) dflt="$dflt -DDEBUGGING";;
3810         esac
3811         case "$gccversion" in
3812         2*) if test -d /etc/conf/kconfig.d &&
3813                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3814                 then
3815                         dflt="$dflt -posix"
3816                 fi
3817                 ;;
3818         esac
3819         case "$gccversion" in
3820         1*) ;;
3821         2.[0-8]*) ;;
3822         ?*)     echo " "
3823                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3824                 echo 'int main(void) { return 0; }' > gcctest.c
3825                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3826                         echo "Yes, it does." 2>&1
3827                         case "$ccflags" in
3828                         *strict-aliasing*) 
3829                                 echo "Leaving current flags $ccflags alone." 2>&1
3830                                 ;;
3831                         *) dflt="$dflt -fno-strict-aliasing" ;;
3832                         esac
3833                 else
3834                         echo "Nope, it doesn't, but that's ok." 2>&1
3835                 fi
3836                 ;;
3837         esac
3838         ;;
3839 esac
3840
3841 case "$mips_type" in
3842 *BSD*|'') inclwanted="$locincpth $usrinc";;
3843 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3844 esac
3845 for thisincl in $inclwanted; do
3846         if $test -d $thisincl; then
3847                 if $test x$thisincl != x$usrinc; then
3848                         case "$dflt" in
3849                         *" -I$thisincl "*);;
3850                         *) dflt="$dflt -I$thisincl ";;
3851                         esac
3852                 fi
3853         fi
3854 done
3855
3856 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3857         xxx=true;
3858 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3859         xxx=true;
3860 else
3861         xxx=false;
3862 fi;
3863 if $xxx; then
3864         case "$dflt" in
3865         *$2*);;
3866         *) dflt="$dflt -D$2";;
3867         esac;
3868 fi'
3869
3870 set signal.h LANGUAGE_C; eval $inctest
3871
3872 case "$usesocks" in
3873 $define)
3874         ccflags="$ccflags -DSOCKS"
3875         ;;
3876 esac
3877
3878 case "$hint" in
3879 default|recommended) dflt="$ccflags $dflt" ;;
3880 *) dflt="$ccflags";;
3881 esac
3882
3883 case "$dflt" in
3884 ''|' ') dflt=none;;
3885 esac
3886
3887 $cat <<EOH
3888
3889 Your C compiler may want other flags.  For this question you should include
3890 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3891 but you should NOT include libraries or ld flags like -lwhatever.  If you
3892 want $package to honor its debug switch, you should include -DDEBUGGING here.
3893 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3894
3895 To use no flags, specify the word "none".
3896
3897 EOH
3898 set X $dflt
3899 shift
3900 dflt=${1+"$@"}
3901 rp="Any additional cc flags?"
3902 . ./myread
3903 case "$ans" in
3904 none) ccflags='';;
3905 *) ccflags="$ans";;
3906 esac
3907
3908 : the following weeds options from ccflags that are of no interest to cpp
3909 cppflags="$ccflags"
3910 case "$gccversion" in
3911 1*) cppflags="$cppflags -D__GNUC__"
3912 esac
3913 case "$mips_type" in
3914 '');;
3915 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3916 esac
3917 case "$cppflags" in
3918 '');;
3919 *)
3920         echo " "
3921         echo "Let me guess what the preprocessor flags are..." >&4
3922         set X $cppflags
3923         shift
3924         cppflags=''
3925         $cat >cpp.c <<'EOM'
3926 #define BLURFL foo
3927
3928 BLURFL xx LFRULB
3929 EOM
3930         previous=''
3931         for flag in $*
3932         do
3933                 case "$flag" in
3934                 -*) ftry="$flag";;
3935                 *) ftry="$previous $flag";;
3936                 esac
3937                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3938                         >cpp1.out 2>/dev/null && \
3939                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3940                         >cpp2.out 2>/dev/null && \
3941                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3942                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3943                 then
3944                         cppflags="$cppflags $ftry"
3945                         previous=''
3946                 else
3947                         previous="$flag"
3948                 fi
3949         done
3950         set X $cppflags
3951         shift
3952         cppflags=${1+"$@"}
3953         case "$cppflags" in
3954         *-*)  echo "They appear to be: $cppflags";;
3955         esac
3956         $rm -f cpp.c cpp?.out
3957         ;;
3958 esac
3959
3960 : flags used in final linking phase
3961 case "$ldflags" in
3962 '') if ./venix; then
3963                 dflt='-i -z'
3964         else
3965                 dflt=''
3966         fi
3967         case "$ccflags" in
3968         *-posix*) dflt="$dflt -posix" ;;
3969         esac
3970         ;;
3971 *) dflt="$ldflags";;
3972 esac
3973
3974 : Try to guess additional flags to pick up local libraries.
3975 for thislibdir in $libpth; do
3976         case " $loclibpth " in
3977         *" $thislibdir "*)
3978                 case "$dflt " in 
3979                 *"-L$thislibdir "*) ;;
3980                 *)  dflt="$dflt -L$thislibdir" ;;
3981                 esac
3982                 ;;
3983         esac
3984 done
3985
3986 case "$dflt" in
3987 '') dflt='none' ;;
3988 esac
3989
3990 $cat <<EOH
3991
3992 Your C linker may need flags.  For this question you should
3993 include -L/whatever and any other flags used by the C linker, but you
3994 should NOT include libraries like -lwhatever.
3995
3996 Make sure you include the appropriate -L/path flags if your C linker
3997 does not normally search all of the directories you specified above,
3998 namely
3999         $libpth
4000 To use no flags, specify the word "none".
4001
4002 EOH
4003
4004 rp="Any additional ld flags (NOT including libraries)?"
4005 . ./myread
4006 case "$ans" in
4007 none) ldflags='';;
4008 *) ldflags="$ans";;
4009 esac
4010 rmlist="$rmlist pdp11"
4011
4012 : coherency check
4013 echo " "
4014 echo "Checking your choice of C compiler and flags for coherency..." >&4
4015 $cat > try.c <<'EOF'
4016 #include <stdio.h>
4017 int main() { printf("Ok\n"); exit(0); }
4018 EOF
4019 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4020 shift
4021 $cat >try.msg <<'EOM'
4022 I've tried to compile and run the following simple program:
4023
4024 EOM
4025 $cat try.c >> try.msg
4026
4027 $cat >> try.msg <<EOM
4028
4029 I used the command:
4030
4031         $*
4032         ./try
4033
4034 and I got the following output:
4035
4036 EOM
4037 dflt=y
4038 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4039         if sh -c './try' >>try.msg 2>&1; then
4040                 xxx=`./try`
4041                 case "$xxx" in
4042                 "Ok") dflt=n ;;
4043                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4044                         case " $libs " in
4045                         *" -lsfio "*)
4046                                 cat >> try.msg <<'EOQS'
4047 If $libs contains -lsfio, and sfio is mis-configured, then it
4048 sometimes (apparently) runs and exits with a 0 status, but with no
4049 output!  It may have to do with sfio's use of _exit vs. exit.
4050
4051 EOQS
4052                                 rp="You have a big problem.  Shall I abort Configure"
4053                                 dflt=y
4054                                 ;;
4055                         esac
4056                         ;;
4057                 esac
4058         else
4059                 echo "The program compiled OK, but exited with status $?." >>try.msg
4060                 rp="You have a problem.  Shall I abort Configure"
4061                 dflt=y
4062         fi
4063 else
4064         echo "I can't compile the test program." >>try.msg
4065         rp="You have a BIG problem.  Shall I abort Configure"
4066         dflt=y
4067 fi
4068 case "$dflt" in
4069 y)
4070         $cat try.msg >&4
4071         case "$knowitall" in
4072         '')
4073                 echo "(The supplied flags or libraries might be incorrect.)"
4074                 ;;
4075         *) dflt=n;;
4076         esac
4077         echo " "
4078         . ./myread
4079         case "$ans" in
4080         n*|N*) ;;
4081         *)      echo "Ok.  Stopping Configure." >&4
4082                 exit 1
4083                 ;;
4084         esac
4085         ;;
4086 n) echo "OK, that should do.";;
4087 esac
4088 $rm -f try try.* core
4089
4090 : define an is-a-typedef? function
4091 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4092 case "$inclist" in
4093 "") inclist="sys/types.h";;
4094 esac;
4095 eval "varval=\$$var";
4096 case "$varval" in
4097 "")
4098         $rm -f temp.c;
4099         for inc in $inclist; do
4100                 echo "#include <$inc>" >>temp.c;
4101         done;
4102         echo "#ifdef $type" >> temp.c;
4103         echo "printf(\"We have $type\");" >> temp.c;
4104         echo "#endif" >> temp.c;
4105         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4106         if $contains $type temp.E >/dev/null 2>&1; then
4107                 eval "$var=\$type";
4108         else
4109                 eval "$var=\$def";
4110         fi;
4111         $rm -f temp.?;;
4112 *) eval "$var=\$varval";;
4113 esac'
4114
4115 : define an is-a-typedef? function that prompts if the type is not available.
4116 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4117 case "$inclist" in
4118 "") inclist="sys/types.h";;
4119 esac;
4120 eval "varval=\$$var";
4121 case "$varval" in
4122 "")
4123         $rm -f temp.c;
4124         for inc in $inclist; do
4125                 echo "#include <$inc>" >>temp.c;
4126         done;
4127         echo "#ifdef $type" >> temp.c;
4128         echo "printf(\"We have $type\");" >> temp.c;
4129         echo "#endif" >> temp.c;
4130         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4131         echo " " ;
4132         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4133         if $contains $type temp.E >/dev/null 2>&1; then
4134                 echo "$type found." >&4;
4135                 eval "$var=\$type";
4136         else
4137                 echo "$type NOT found." >&4;
4138                 dflt="$def";
4139                 . ./myread ;
4140                 eval "$var=\$ans";
4141         fi;
4142         $rm -f temp.?;;
4143 *) eval "$var=\$varval";;
4144 esac'
4145
4146 : define a shorthand compile call
4147 compile='
4148 mc_file=$1;
4149 shift;
4150 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4151 : define a shorthand compile call for compilations that should be ok.
4152 compile_ok='
4153 mc_file=$1;
4154 shift;
4155 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4156
4157 : check for lengths of integral types
4158 echo " "
4159 case "$intsize" in
4160 '')
4161         echo "Checking to see how big your integers are..." >&4
4162         $cat >intsize.c <<'EOCP'
4163 #include <stdio.h>
4164 int main()
4165 {
4166         printf("intsize=%d;\n", (int)sizeof(int));
4167         printf("longsize=%d;\n", (int)sizeof(long));
4168         printf("shortsize=%d;\n", (int)sizeof(short));
4169         exit(0);
4170 }
4171 EOCP
4172         set intsize
4173         if eval $compile_ok && ./intsize > /dev/null; then
4174                 eval `./intsize`
4175                 echo "Your integers are $intsize bytes long."
4176                 echo "Your long integers are $longsize bytes long."
4177                 echo "Your short integers are $shortsize bytes long."
4178         else
4179                 $cat >&4 <<EOM
4180 !
4181 Help! I can't compile and run the intsize test program: please enlighten me!
4182 (This is probably a misconfiguration in your system or libraries, and
4183 you really ought to fix it.  Still, I'll try anyway.)
4184 !
4185 EOM
4186                 dflt=4
4187                 rp="What is the size of an integer (in bytes)?"
4188                 . ./myread
4189                 intsize="$ans"
4190                 dflt=$intsize
4191                 rp="What is the size of a long integer (in bytes)?"
4192                 . ./myread
4193                 longsize="$ans"
4194                 dflt=2
4195                 rp="What is the size of a short integer (in bytes)?"
4196                 . ./myread
4197                 shortsize="$ans"
4198         fi
4199         ;;
4200 esac
4201 $rm -f intsize intsize.*
4202
4203 : see what type lseek is declared as in the kernel
4204 rp="What is the type used for lseek's offset on this system?"
4205 set off_t lseektype long stdio.h sys/types.h
4206 eval $typedef_ask
4207
4208 echo " "
4209 echo "Checking to see how big your file offsets are..." >&4
4210 $cat >try.c <<EOCP
4211 #include <sys/types.h>
4212 #include <stdio.h>
4213 int main()
4214 {
4215     printf("%d\n", (int)sizeof($lseektype));
4216     return(0); 
4217 }
4218 EOCP
4219 set try
4220 if eval $compile_ok; then
4221         lseeksize=`./try`
4222         echo "Your file offsets are $lseeksize bytes long."
4223 else
4224         dflt=$longsize
4225         echo " "
4226         echo "(I can't seem to compile the test program.  Guessing...)"
4227         rp="What is the size of your file offsets (in bytes)?"
4228         . ./myread
4229         lseeksize="$ans"
4230 fi
4231 $rm -f try.c try
4232
4233 : see what type file positions are declared as in the library
4234 rp="What is the type for file position used by fsetpos()?"
4235 set fpos_t fpostype long stdio.h sys/types.h
4236 eval $typedef_ask
4237
4238 echo " "
4239 case "$fpostype" in
4240 *_t) zzz="$fpostype"    ;;
4241 *)   zzz="fpos_t"       ;;
4242 esac
4243 echo "Checking the size of $zzz..." >&4 
4244 cat > try.c <<EOCP
4245 #include <sys/types.h>
4246 #include <stdio.h>
4247 int main() {
4248     printf("%d\n", (int)sizeof($fpostype));
4249     exit(0);
4250 }
4251 EOCP
4252 set try
4253 if eval $compile_ok; then
4254         yyy=`./try`
4255         case "$yyy" in
4256         '')     fpossize=4
4257                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4258                 ;;
4259         *)      fpossize=$yyy
4260                 echo "Your $zzz is $fpossize bytes long."
4261                 ;;
4262         esac
4263 else
4264         dflt="$longsize"
4265         echo " " >&4
4266         echo "(I can't compile the test program.  Guessing...)" >&4
4267         rp="What is the size of your file positions (in bytes)?"
4268         . ./myread
4269         fpossize="$ans"
4270 fi
4271
4272
4273
4274 # Backward compatibility (uselfs is deprecated).
4275 case "$uselfs" in
4276 "$define"|true|[yY]*)
4277         cat <<EOM >&4
4278
4279 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4280 EOM
4281         uselargefiles="$define"
4282         ;;
4283 esac                          
4284
4285 case "$lseeksize:$fpossize" in
4286 8:8) cat <<EOM
4287
4288 You can have files larger than 2 gigabytes.
4289 EOM
4290    val="$define" ;;
4291 *)    case "$uselargefiles" in
4292    "$undef"|false|[nN]*) dflt='n' ;;
4293    *)   dflt='y' ;;
4294    esac
4295    cat <<EOM
4296
4297 Perl can be built to understand large files (files larger than 2 gigabytes)
4298 on some systems.  To do so, Configure can be run with -Duselargefiles.
4299
4300 If this doesn't make any sense to you, just accept the default '$dflt'.
4301 EOM
4302    rp='Try to understand large files, if available?'
4303    . ./myread
4304    case "$ans" in
4305    y|Y)         val="$define" ;;
4306    *)           val="$undef"  ;;
4307    esac
4308    ;;
4309 esac
4310 set uselargefiles
4311 eval $setvar
4312 case "$uselargefiles" in
4313 "$define")
4314 : Look for a hint-file generated 'call-back-unit'.  If the
4315 : user has specified that a large files perl is to be built,
4316 : we may need to set or change some other defaults.
4317         if $test -f uselargefiles.cbu; then
4318                 echo "Your platform has some specific hints for large file builds, using them..."
4319                 . ./uselargefiles.cbu
4320                 echo " "
4321                 echo "Rechecking to see how big your file offsets are..." >&4
4322                 $cat >try.c <<EOCP
4323 #include <sys/types.h>
4324 #include <stdio.h>
4325 int main()
4326 {
4327     printf("%d\n", (int)sizeof($lseektype));
4328     return(0); 
4329 }
4330 EOCP
4331                 set try
4332                 if eval $compile_ok; then
4333                         lseeksize=`./try`
4334                         $echo "Your file offsets are now $lseeksize bytes long."
4335                 else
4336                         dflt="$lseeksize"
4337                         echo " "
4338                         echo "(I can't seem to compile the test program.  Guessing...)"
4339                         rp="What is the size of your file offsets (in bytes)?"
4340                         . ./myread
4341                         lseeksize="$ans"
4342                 fi
4343                 case "$fpostype" in
4344                 *_t) zzz="$fpostype"    ;;
4345                 *)   zzz="fpos_t"       ;;
4346                 esac
4347                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4348                 $cat > try.c <<EOCP
4349 #include <sys/types.h>
4350 #include <stdio.h>
4351 int main() {
4352     printf("%d\n", (int)sizeof($fpostype));
4353     exit(0);
4354 }
4355 EOCP
4356                 set try
4357                 if eval $compile_ok; then
4358                         yyy=`./try`
4359                         dflt="$lseeksize"
4360                         case "$yyy" in
4361                         '')     echo " "
4362                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4363                                 ;;
4364                         *)      fpossize=$yyy
4365                                 echo " $fpossize bytes." >&4
4366                                 ;;
4367                         esac
4368                 else
4369                         dflt="$fpossize"
4370                         echo " "
4371                         echo "(I can't compile the test program.  Guessing...)" >&4
4372                         rp="What is the size of your file positions (in bytes)?"
4373                         . ./myread
4374                         fpossize="$ans"
4375                 fi
4376                 $rm -f try.c try
4377         fi
4378         ;;
4379 esac
4380
4381
4382 case "$usemorebits" in
4383 "$define"|true|[yY]*)
4384         use64bitint="$define"
4385         uselongdouble="$define"
4386         usemorebits="$define"
4387         ;;
4388 *)      usemorebits="$undef"
4389         ;;
4390 esac
4391
4392
4393 case "$uselonglong" in
4394 "$define"|true|[yY]*)
4395         cat <<EOM >&4
4396
4397 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4398 EOM
4399         use64bitint="$define"
4400         ;;
4401 esac                          
4402 case "$use64bits" in
4403 "$define"|true|[yY]*)
4404         cat <<EOM >&4
4405
4406 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4407 EOM
4408         use64bitint="$define"
4409         ;;
4410 esac                          
4411 case "$use64bitints" in
4412 "$define"|true|[yY]*)
4413         cat <<EOM >&4
4414
4415 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4416 EOM
4417         use64bitint="$define"
4418         ;;
4419 esac                          
4420 case "$use64bitsint" in
4421 "$define"|true|[yY]*)
4422         cat <<EOM >&4
4423
4424 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4425 EOM
4426         use64bitint="$define"
4427         ;;
4428 esac                          
4429 case "$uselonglongs" in
4430 "$define"|true|[yY]*)
4431         cat <<EOM >&4
4432
4433 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4434 EOM
4435         use64bitint="$define"
4436         ;;
4437 esac                          
4438 case "$use64bitsall" in
4439 "$define"|true|[yY]*)
4440         cat <<EOM >&4
4441
4442 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4443 EOM
4444         use64bitall="$define"
4445         ;;
4446 esac                          
4447
4448 case "$ccflags" in
4449 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4450 esac
4451 case "$use64bitall" in
4452 "$define"|true|[yY]*) use64bitint="$define" ;;
4453 esac
4454
4455 case "$longsize" in
4456 8) cat <<EOM
4457
4458 You have natively 64-bit long integers.
4459 EOM
4460    val="$define"
4461    ;;
4462 *) case "$use64bitint" in
4463    "$define"|true|[yY]*) dflt='y';;
4464    *) dflt='n';;
4465    esac
4466    cat <<EOM
4467
4468 Perl can be built to take advantage of 64-bit integer types
4469 on some systems.  To do so, Configure can be run with -Duse64bitint.
4470 Choosing this option will most probably introduce binary incompatibilities.
4471
4472 If this doesn't make any sense to you, just accept the default '$dflt'.
4473 EOM
4474    rp='Try to use 64-bit integers, if available?'
4475    . ./myread
4476    case "$ans" in
4477    [yY]*) val="$define" ;;
4478    *)     val="$undef"  ;;
4479    esac
4480    ;;
4481 esac
4482 set use64bitint
4483 eval $setvar
4484
4485 case "$use64bitall" in
4486 "$define"|true|[yY]*) dflt='y' ;;
4487 *) case "$longsize" in
4488    8) dflt='y' ;;
4489    *) dflt='n' ;;
4490    esac
4491    ;;
4492 esac    
4493 cat <<EOM
4494
4495 You may also choose to try maximal 64-bitness.  It means using as much
4496 64-bitness as possible on the platform.  This in turn means even more
4497 binary incompatibilities.  On the other hand, your platform may not
4498 have any more 64-bitness available than what you already have chosen.
4499
4500 If this doesn't make any sense to you, just accept the default '$dflt'.
4501 EOM
4502 rp='Try to use maximal 64-bit support, if available?'
4503 . ./myread
4504 case "$ans" in
4505 [yY]*) val="$define" ;;
4506 *)     val="$undef"  ;;
4507 esac
4508 set use64bitall
4509 eval $setvar
4510 case "$use64bitall" in
4511 "$define")
4512         case "$use64bitint" in
4513         "$undef")
4514                 cat <<EOM
4515
4516 Since you have chosen a maximally 64-bit build, I'm also turning on
4517 the use of 64-bit integers.
4518 EOM
4519                 use64bitint="$define" ;;
4520         esac
4521         ;;
4522 esac
4523
4524 case "$use64bitint" in
4525 "$define"|true|[yY]*)
4526 : Look for a hint-file generated 'call-back-unit'.  If the
4527 : user has specified that a 64-bit perl is to be built,
4528 : we may need to set or change some other defaults.
4529         if $test -f use64bitint.cbu; then
4530                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4531                 . ./use64bitint.cbu
4532         fi
4533         case "$longsize" in
4534         4) case "$archname64" in
4535            '') archname64=64int ;;
4536            esac
4537            ;;
4538         esac
4539         ;;
4540 esac
4541
4542 case "$use64bitall" in
4543 "$define"|true|[yY]*)
4544 : Look for a hint-file generated 'call-back-unit'.  If the
4545 : user has specified that a maximally 64-bit perl is to be built,
4546 : we may need to set or change some other defaults.
4547         if $test -f use64bitall.cbu; then
4548                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4549                 . ./use64bitall.cbu
4550         fi
4551         case "$longsize" in
4552         4) case "$archname64" in
4553            ''|64int) archname64=64all ;;
4554            esac
4555            ;;
4556         esac
4557         ;;
4558 esac
4559
4560 echo " "
4561 echo "Checking for GNU C Library..." >&4
4562 cat >gnulibc.c <<EOM
4563 #include <stdio.h>
4564 int main()
4565 {
4566 #ifdef __GLIBC__
4567     exit(0);
4568 #else
4569     exit(1);
4570 #endif
4571 }
4572 EOM
4573 set gnulibc
4574 if eval $compile_ok && ./gnulibc; then
4575         val="$define"
4576         echo "You are using the GNU C Library"
4577 else
4578         val="$undef"
4579         echo "You are not using the GNU C Library"
4580 fi
4581 $rm -f gnulibc*
4582 set d_gnulibc
4583 eval $setvar
4584
4585 : see if nm is to be used to determine whether a symbol is defined or not
4586 case "$usenm" in
4587 '')
4588         dflt=''
4589         case "$d_gnulibc" in
4590         "$define")
4591                 echo " "
4592                 echo "nm probably won't work on the GNU C Library." >&4
4593                 dflt=n
4594                 ;;
4595         esac
4596         case "$dflt" in
4597         '') 
4598                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4599                         echo " "
4600                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4601                         echo "'nm' won't be sufficient on this sytem." >&4
4602                         dflt=n
4603                 fi
4604                 ;;
4605         esac
4606         case "$dflt" in
4607         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4608                 if $test $dflt -gt 20; then
4609                         dflt=y
4610                 else
4611                         dflt=n
4612                 fi
4613                 ;;
4614         esac
4615         ;;
4616 *)
4617         case "$usenm" in
4618         true|$define) dflt=y;;
4619         *) dflt=n;;
4620         esac
4621         ;;
4622 esac
4623 $cat <<EOM
4624
4625 I can use $nm to extract the symbols from your C libraries. This
4626 is a time consuming task which may generate huge output on the disk (up
4627 to 3 megabytes) but that should make the symbols extraction faster. The
4628 alternative is to skip the 'nm' extraction part and to compile a small
4629 test program instead to determine whether each symbol is present. If
4630 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4631 this may be the best solution.
4632
4633 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4634
4635 EOM
4636 rp="Shall I use $nm to extract C symbols from the libraries?"
4637 . ./myread
4638 case "$ans" in
4639 [Nn]*) usenm=false;;
4640 *) usenm=true;;
4641 esac
4642
4643 runnm=$usenm
4644 case "$reuseval" in
4645 true) runnm=false;;
4646 esac
4647
4648 : nm options which may be necessary
4649 case "$nm_opt" in
4650 '') if $test -f /mach_boot; then
4651                 nm_opt=''       # Mach
4652         elif $test -d /usr/ccs/lib; then
4653                 nm_opt='-p'     # Solaris (and SunOS?)
4654         elif $test -f /dgux; then
4655                 nm_opt='-p'     # DG-UX
4656         elif $test -f /lib64/rld; then
4657                 nm_opt='-p'     # 64-bit Irix
4658         else
4659                 nm_opt=''
4660         fi;;
4661 esac
4662
4663 : nm options which may be necessary for shared libraries but illegal
4664 : for archive libraries.  Thank you, Linux.
4665 case "$nm_so_opt" in
4666 '')     case "$myuname" in
4667         *linux*)
4668                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4669                         nm_so_opt='--dynamic'
4670                 fi
4671                 ;;
4672         esac
4673         ;;
4674 esac
4675
4676 case "$runnm" in
4677 true)
4678 : get list of predefined functions in a handy place
4679 echo " "
4680 case "$libc" in
4681 '') libc=unknown
4682         case "$libs" in
4683         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4684         esac
4685         ;;
4686 esac
4687 libnames='';
4688 case "$libs" in
4689 '') ;;
4690 *)  for thislib in $libs; do
4691         case "$thislib" in
4692         -lc|-lc_s)
4693                 : Handle C library specially below.
4694                 ;;
4695         -l*)
4696                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4697                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4698                         :
4699                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4700                         :
4701                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4702                         :
4703                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4704                         :
4705                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4706                         :
4707                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4708                         :
4709                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4710                         :
4711                 else
4712                         try=''
4713                 fi
4714                 libnames="$libnames $try"
4715                 ;;
4716         *) libnames="$libnames $thislib" ;;
4717         esac
4718         done
4719         ;;
4720 esac
4721 xxx=normal
4722 case "$libc" in
4723 unknown)
4724         set /lib/libc.$so
4725         for xxx in $libpth; do
4726                 $test -r $1 || set $xxx/libc.$so
4727                 : The messy sed command sorts on library version numbers.
4728                 $test -r $1 || \
4729                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4730                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4731                                 h
4732                                 s/[0-9][0-9]*/0000&/g
4733                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4734                                 G
4735                                 s/\n/ /' | \
4736                          sort | $sed -e 's/^.* //'`
4737                 eval set \$$#
4738         done
4739         $test -r $1 || set /usr/ccs/lib/libc.$so
4740         $test -r $1 || set /lib/libsys_s$_a
4741         ;;
4742 *)
4743         set blurfl
4744         ;;
4745 esac
4746 if $test -r "$1"; then
4747         echo "Your (shared) C library seems to be in $1."
4748         libc="$1"
4749 elif $test -r /lib/libc && $test -r /lib/clib; then
4750         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4751         xxx=apollo
4752         libc='/lib/clib /lib/libc'
4753         if $test -r /lib/syslib; then
4754                 echo "(Your math library is in /lib/syslib.)"
4755                 libc="$libc /lib/syslib"
4756         fi
4757 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4758         echo "Your C library seems to be in $libc, as you said before."
4759 elif $test -r $incpath/usr/lib/libc$_a; then
4760         libc=$incpath/usr/lib/libc$_a;
4761         echo "Your C library seems to be in $libc.  That's fine."
4762 elif $test -r /lib/libc$_a; then
4763         libc=/lib/libc$_a;
4764         echo "Your C library seems to be in $libc.  You're normal."
4765 else
4766         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4767                 :
4768         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4769                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4770         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4771                 :
4772         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4773                 :
4774         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4775                 :
4776         else
4777                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4778         fi
4779         if $test -r "$tans"; then
4780                 echo "Your C library seems to be in $tans, of all places."
4781                 libc=$tans
4782         else
4783                 libc='blurfl'
4784         fi
4785 fi
4786 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4787         dflt="$libc"
4788         cat <<EOM
4789
4790 If the guess above is wrong (which it might be if you're using a strange
4791 compiler, or your machine supports multiple models), you can override it here.
4792
4793 EOM
4794 else
4795         dflt=''
4796         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4797         cat >&4 <<EOM
4798 I can't seem to find your C library.  I've looked in the following places:
4799
4800 EOM
4801         $sed 's/^/      /' libpath
4802         cat <<EOM
4803
4804 None of these seems to contain your C library. I need to get its name...
4805
4806 EOM
4807 fi
4808 fn=f
4809 rp='Where is your C library?'
4810 . ./getfile
4811 libc="$ans"
4812
4813 echo " "
4814 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4815 set X `cat libnames`
4816 shift
4817 xxx=files
4818 case $# in 1) xxx=file; esac
4819 echo "Extracting names from the following $xxx for later perusal:" >&4
4820 echo " "
4821 $sed 's/^/      /' libnames >&4
4822 echo " "
4823 $echo $n "This may take a while...$c" >&4
4824
4825 for file in $*; do
4826         case $file in
4827         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4828         *) $nm $nm_opt $file 2>/dev/null;;
4829         esac
4830 done >libc.tmp
4831
4832 $echo $n ".$c"
4833 $grep fprintf libc.tmp > libc.ptf
4834 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4835 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4836 xxx='[ADTSIW]'
4837 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4838         eval $xscan;\
4839         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4840                 eval $xrun
4841 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4842         eval $xscan;\
4843         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4844                 eval $xrun
4845 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4846         eval $xscan;\
4847         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4848                 eval $xrun
4849 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4850         eval $xscan;\
4851         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4852                 eval $xrun
4853 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4854         eval $xscan;\
4855         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4856                 eval $xrun
4857 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4858         eval $xscan;\
4859         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4860                 eval $xrun
4861 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4862                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4863         eval $xscan;\
4864         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4865                 eval $xrun
4866 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4867         eval $xscan;\
4868         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4869                 eval $xrun
4870 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4871         eval $xscan;\
4872         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873                 eval $xrun
4874 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4875         eval $xscan;\
4876         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877                 eval $xrun
4878 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4879         eval $xscan;\
4880         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4881                 eval $xrun
4882 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4883         eval $xscan;\
4884         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4885                 eval $xrun
4886 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4887         eval $xscan;\
4888         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4889                 eval $xrun
4890 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4891         eval $xscan;\
4892         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893                 eval $xrun
4894 else
4895         $nm -p $* 2>/dev/null >libc.tmp
4896         $grep fprintf libc.tmp > libc.ptf
4897         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4898                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4899         then
4900                 nm_opt='-p'
4901                 eval $xrun
4902         else
4903                 echo " "
4904                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4905                 com=''
4906                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4907                         for thisname in $libnames $libc; do
4908                                 $ar t $thisname >>libc.tmp
4909                         done
4910                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4911                         echo "Ok." >&4
4912                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4913                         # Repeat libc to extract forwarders to DLL entries too
4914                         for thisname in $libnames $libc; do
4915                                 $ar tv $thisname >>libc.tmp
4916                                 # Revision 50 of EMX has bug in $ar.
4917                                 # it will not extract forwarders to DLL entries
4918                                 # Use emximp which will extract exactly them.
4919                                 emximp -o tmp.imp $thisname \
4920                                     2>/dev/null && \
4921                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4922                                     < tmp.imp >>libc.tmp
4923                                 $rm tmp.imp
4924                         done
4925                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4926                         echo "Ok." >&4
4927                 else
4928                         echo "$ar didn't seem to work right." >&4
4929                         echo "Maybe this is a Cray...trying bld instead..." >&4
4930                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4931                         then
4932                                 for thisname in $libnames; do
4933                                         bld t $libnames | \
4934                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4935                                         $ar t $thisname >>libc.tmp
4936                                 done
4937                                 echo "Ok." >&4
4938                         else
4939                                 echo "That didn't work either.  Giving up." >&4
4940                                 exit 1
4941                         fi
4942                 fi
4943         fi
4944 fi
4945 nm_extract="$com"
4946 if $test -f /lib/syscalls.exp; then
4947         echo " "
4948         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4949         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4950 fi
4951 ;;
4952 esac
4953 $rm -f libnames libpath
4954
4955 : is a C symbol defined?
4956 csym='tlook=$1;
4957 case "$3" in
4958 -v) tf=libc.tmp; tc=""; tdc="";;
4959 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4960 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4961 esac;
4962 tx=yes;
4963 case "$reuseval-$4" in
4964 true-) ;;
4965 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4966 esac;
4967 case "$tx" in
4968 yes)
4969         case "$runnm" in
4970         true)
4971                 if $contains $tlook $tf >/dev/null 2>&1;
4972                 then tval=true;
4973                 else tval=false;
4974                 fi;;
4975         *)
4976                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4977                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4978                 then tval=true;
4979                 else tval=false;
4980                 fi;
4981                 $rm -f t t.c;;
4982         esac;;
4983 *)
4984         case "$tval" in
4985         $define) tval=true;;
4986         *) tval=false;;
4987         esac;;
4988 esac;
4989 eval "$2=$tval"'
4990
4991 : define an is-in-libc? function
4992 inlibc='echo " "; td=$define; tu=$undef;
4993 sym=$1; var=$2; eval "was=\$$2";
4994 tx=yes;
4995 case "$reuseval$was" in
4996 true) ;;
4997 true*) tx=no;;
4998 esac;
4999 case "$tx" in
5000 yes)
5001         set $sym tres -f;
5002         eval $csym;
5003         case "$tres" in
5004         true)
5005                 echo "$sym() found." >&4;
5006                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5007         *)
5008                 echo "$sym() NOT found." >&4;
5009                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5010         esac;;
5011 *)
5012         case "$was" in
5013         $define) echo "$sym() found." >&4;;
5014         *) echo "$sym() NOT found." >&4;;
5015         esac;;
5016 esac'
5017
5018 : see if sqrtl exists
5019 set sqrtl d_sqrtl
5020 eval $inlibc
5021
5022 case "$ccflags" in
5023 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5024 esac
5025
5026 case "$uselongdouble" in
5027 $define|true|[yY]*)     dflt='y';;
5028 *) dflt='n';;
5029 esac
5030 cat <<EOM
5031
5032 Perl can be built to take advantage of long doubles which
5033 (if available) may give more accuracy and range for floating point numbers.
5034
5035 If this doesn't make any sense to you, just accept the default '$dflt'.
5036 EOM
5037 rp='Try to use long doubles if available?'
5038 . ./myread
5039 case "$ans" in
5040 y|Y)    val="$define"   ;;
5041 *)      val="$undef"    ;;
5042 esac
5043 set uselongdouble
5044 eval $setvar
5045
5046 case "$uselongdouble" in
5047 true|[yY]*) uselongdouble="$define" ;;
5048 esac
5049
5050 case "$uselongdouble" in
5051 $define)
5052 : Look for a hint-file generated 'call-back-unit'.  If the
5053 : user has specified that long doubles should be used,
5054 : we may need to set or change some other defaults.
5055         if $test -f uselongdouble.cbu; then
5056                 echo "Your platform has some specific hints for long doubles, using them..."
5057                 . ./uselongdouble.cbu
5058         else
5059                 $cat <<EOM
5060 (Your platform doesn't have any specific hints for long doubles.)
5061 EOM
5062         fi
5063         ;;
5064 esac
5065
5066 case "$uselongdouble:$d_sqrtl" in
5067 $define:$undef)
5068                 $cat <<EOM >&4
5069
5070 *** You requested the use of long doubles but you do not seem to have
5071 *** the mathematic functions for long doubles.  I'm disabling the use
5072 *** of long doubles.
5073
5074 EOM
5075         uselongdouble=$undef
5076         ;;
5077 esac
5078
5079 : check for length of double
5080 echo " "
5081 case "$doublesize" in
5082 '')
5083         echo "Checking to see how big your double precision numbers are..." >&4
5084         $cat >try.c <<'EOCP'
5085 #include <stdio.h>
5086 int main()
5087 {
5088     printf("%d\n", (int)sizeof(double));
5089     exit(0);
5090 }
5091 EOCP
5092         set try
5093         if eval $compile_ok; then
5094                 doublesize=`./try`
5095                 echo "Your double is $doublesize bytes long."
5096         else
5097                 dflt='8'
5098                 echo "(I can't seem to compile the test program.  Guessing...)"
5099                 rp="What is the size of a double precision number (in bytes)?"
5100                 . ./myread
5101                 doublesize="$ans"
5102         fi
5103         ;;
5104 esac
5105 $rm -f try.c try
5106
5107 : check for long doubles
5108 echo " "
5109 echo "Checking to see if you have long double..." >&4
5110 echo 'int main() { long double x = 7.0; }' > try.c
5111 set try
5112 if eval $compile; then
5113         val="$define"
5114         echo "You have long double."
5115 else
5116         val="$undef"
5117         echo "You do not have long double."
5118 fi
5119 $rm try.*
5120 set d_longdbl
5121 eval $setvar
5122
5123 : check for length of long double
5124 case "${d_longdbl}${longdblsize}" in
5125 $define)
5126         echo " "
5127         echo "Checking to see how big your long doubles are..." >&4
5128         $cat >try.c <<'EOCP'
5129 #include <stdio.h>
5130 int main()
5131 {
5132         printf("%d\n", sizeof(long double));
5133 }
5134 EOCP
5135         set try
5136         set try
5137         if eval $compile; then
5138                 longdblsize=`./try$exe_ext`
5139                 echo "Your long doubles are $longdblsize bytes long."
5140         else
5141                 dflt='8'
5142                 echo " "
5143                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5144                 rp="What is the size of a long double (in bytes)?"
5145                 . ./myread
5146                 longdblsize="$ans"
5147         fi
5148         if $test "X$doublesize" = "X$longdblsize"; then
5149                 echo "(That isn't any different from an ordinary double.)"
5150         fi      
5151         ;;
5152 esac
5153 $rm -f try.* try
5154
5155 : determine the architecture name
5156 echo " "
5157 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5158         tarch=`arch`"-$osname"
5159 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5160         if uname -m > tmparch 2>&1 ; then
5161                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5162                         -e 's/$/'"-$osname/" tmparch`
5163         else
5164                 tarch="$osname"
5165         fi
5166         $rm -f tmparch
5167 else
5168         tarch="$osname"
5169 fi
5170 case "$myarchname" in
5171 ''|"$tarch") ;;
5172 *)
5173         echo "(Your architecture name used to be $myarchname.)"
5174         archname=''
5175         ;;
5176 esac
5177 myarchname="$tarch"
5178 case "$archname" in
5179 '') dflt="$tarch";;
5180 *) dflt="$archname";;
5181 esac
5182 rp='What is your architecture name'
5183 . ./myread
5184 archname="$ans"
5185 case "$usethreads" in
5186 $define)
5187         echo "Threads selected." >&4
5188         case "$archname" in
5189         *-thread*) echo "...and architecture name already has -thread." >&4
5190                 ;;
5191         *)      archname="$archname-thread"
5192                 echo "...setting architecture name to $archname." >&4
5193                 ;;
5194         esac
5195         ;;
5196 esac
5197 case "$usemultiplicity" in
5198 $define)
5199         echo "Multiplicity selected." >&4
5200         case "$archname" in
5201         *-multi*) echo "...and architecture name already has -multi." >&4
5202                 ;;
5203         *)      archname="$archname-multi"
5204                 echo "...setting architecture name to $archname." >&4
5205                 ;;
5206         esac
5207         ;;
5208 esac
5209 case "$use64bitint$use64bitall" in
5210 *"$define"*)
5211         case "$archname64" in
5212         '')
5213                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5214                 ;;
5215         *)
5216                 case "$use64bitint" in
5217                 "$define") echo "64 bit integers selected." >&4 ;;
5218                 esac
5219                 case "$use64bitall" in
5220                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5221                 esac
5222                 case "$archname" in
5223                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5224                         ;;
5225                 *)      archname="$archname-$archname64"
5226                         echo "...setting architecture name to $archname." >&4
5227                         ;;
5228                 esac
5229                 ;;
5230         esac
5231 esac
5232 case "$uselongdouble" in
5233 $define)
5234         echo "Long doubles selected." >&4
5235         case "$longdblsize" in
5236         $doublesize)
5237                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5238                 ;;
5239         *)
5240                 case "$archname" in
5241                 *-ld*) echo "...and architecture name already has -ld." >&4
5242                         ;;
5243                 *)      archname="$archname-ld"
5244                         echo "...setting architecture name to $archname." >&4
5245                         ;;
5246                 esac
5247                 ;;
5248         esac
5249         ;;
5250 esac
5251
5252 : determine root of directory hierarchy where package will be installed.
5253 case "$prefix" in
5254 '')
5255         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5256         ;;
5257 *)
5258         dflt="$prefix"
5259         ;;
5260 esac
5261 $cat <<EOM
5262
5263 By default, $package will be installed in $dflt/bin, manual pages
5264 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5265 installation directories. Typically this is something like /usr/local.
5266 If you wish to have binaries under /usr/bin but other parts of the
5267 installation under /usr/local, that's ok: you will be prompted
5268 separately for each of the installation directories, the prefix being
5269 only used to set the defaults.
5270
5271 EOM
5272 fn=d~
5273 rp='Installation prefix to use?'
5274 . ./getfile
5275 oldprefix=''
5276 case "$prefix" in
5277 '') ;;
5278 *)
5279         case "$ans" in
5280         "$prefix") ;;
5281         *) oldprefix="$prefix";;
5282         esac
5283         ;;
5284 esac
5285 prefix="$ans"
5286 prefixexp="$ansexp"
5287
5288 : is AFS running?
5289 echo " "
5290 case "$afs" in
5291 $define|true)   afs=true ;;
5292 $undef|false)   afs=false ;;
5293 *)      if test -d /afs; then
5294                 afs=true
5295         else
5296                 afs=false
5297         fi
5298         ;;
5299 esac
5300 if $afs; then
5301         echo "AFS may be running... I'll be extra cautious then..." >&4
5302 else
5303         echo "AFS does not seem to be running..." >&4
5304 fi
5305
5306 : determine installation prefix for where package is to be installed.
5307 if $afs; then 
5308 $cat <<EOM
5309
5310 Since you are running AFS, I need to distinguish the directory in which
5311 files will reside from the directory in which they are installed (and from
5312 which they are presumably copied to the former directory by occult means).
5313
5314 EOM
5315         case "$installprefix" in
5316         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5317         *) dflt="$installprefix";;
5318         esac
5319 else
5320 $cat <<EOM
5321
5322 In some special cases, particularly when building $package for distribution,
5323 it is convenient to distinguish between the directory in which files should 
5324 be installed from the directory ($prefix) in which they 
5325 will eventually reside.  For most users, these two directories are the same.
5326
5327 EOM
5328         case "$installprefix" in
5329         '') dflt=$prefix ;;
5330         *) dflt=$installprefix;;
5331         esac
5332 fi
5333 fn=d~
5334 rp='What installation prefix should I use for installing files?'
5335 . ./getfile
5336 installprefix="$ans"
5337 installprefixexp="$ansexp"
5338
5339 : set the prefixit variable, to compute a suitable default value
5340 prefixit='case "$3" in
5341 ""|none)
5342         case "$oldprefix" in
5343         "") eval "$1=\"\$$2\"";;
5344         *)
5345                 case "$3" in
5346                 "") eval "$1=";;
5347                 none)
5348                         eval "tp=\"\$$2\"";
5349                         case "$tp" in
5350                         ""|" ") eval "$1=\"\$$2\"";;
5351                         *) eval "$1=";;
5352                         esac;;
5353                 esac;;
5354         esac;;
5355 *)
5356         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5357         case "$tp" in
5358         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5359         /*-$oldprefix/*|\~*-$oldprefix/*)
5360                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5361         *) eval "$1=\"\$$2\"";;
5362         esac;;
5363 esac'
5364
5365
5366 : get the patchlevel
5367 echo " "
5368 echo "Getting the current patchlevel..." >&4
5369 if $test -r $rsrc/patchlevel.h;then
5370         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5371         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5372         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5373         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5374         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5375         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5376 else
5377         revision=0
5378         patchlevel=0
5379         subversion=0
5380         api_revision=0
5381         api_version=0
5382         api_subversion=0
5383 fi
5384 $echo "(You have $package version $patchlevel subversion $subversion.)"
5385 case "$osname" in
5386 dos|vms)
5387         : XXX Should be a Configure test for double-dots in filenames.
5388         version=`echo $revision $patchlevel $subversion | \
5389                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5390         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5391                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5392         ;;
5393 *)
5394         version=`echo $revision $patchlevel $subversion | \
5395                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5396         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5397                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5398         ;;
5399 esac
5400 : Special case the 5.005_xx maintenance series, which used 5.005
5401 : without any subversion label as a subdirectory in $sitelib
5402 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5403         api_versionstring='5.005'
5404 fi
5405
5406 : determine installation style
5407 : For now, try to deduce it from prefix unless it is already set.
5408 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5409 case "$installstyle" in
5410 '')     case "$prefix" in
5411                 *perl*) dflt='lib';;
5412                 *) dflt='lib/perl5' ;;
5413         esac
5414         ;;
5415 *)      dflt="$installstyle" ;;
5416 esac
5417 : Probably not worth prompting for this since we prompt for all
5418 : the directories individually, and the prompt would be too long and
5419 : confusing anyway.
5420 installstyle=$dflt
5421
5422 : determine where private library files go
5423 : Usual default is /usr/local/lib/perl5/$version.
5424 : Also allow things like /opt/perl/lib/$version, since 
5425 : /opt/perl/lib/perl5... would be redundant.
5426 : The default "style" setting is made in installstyle.U
5427 case "$installstyle" in
5428 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5429 *)       set dflt privlib lib/$version ;;
5430 esac
5431 eval $prefixit
5432 $cat <<EOM
5433
5434 There are some auxiliary files for $package that need to be put into a
5435 private library directory that is accessible by everyone.
5436
5437 EOM
5438 fn=d~+
5439 rp='Pathname where the private library files will reside?'
5440 . ./getfile
5441 privlib="$ans"
5442 privlibexp="$ansexp"
5443 : Change installation prefix, if necessary.
5444 if $test X"$prefix" != X"$installprefix"; then
5445         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5446 else
5447         installprivlib="$privlibexp"
5448 fi
5449
5450 : set the prefixup variable, to restore leading tilda escape
5451 prefixup='case "$prefixexp" in
5452 "$prefix") ;;
5453 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5454 esac'
5455
5456 : determine where public architecture dependent libraries go
5457 set archlib archlib
5458 eval $prefixit
5459 : privlib default is /usr/local/lib/$package/$version
5460 : archlib default is /usr/local/lib/$package/$version/$archname
5461 : privlib may have an optional trailing /share.
5462 tdflt=`echo $privlib | $sed 's,/share$,,'`
5463 tdflt=$tdflt/$archname
5464 case "$archlib" in
5465 '')     dflt=$tdflt
5466         ;;
5467 *)      dflt="$archlib"
5468     ;;
5469 esac
5470 $cat <<EOM
5471
5472 $spackage contains architecture-dependent library files.  If you are
5473 sharing libraries in a heterogeneous environment, you might store
5474 these files in a separate location.  Otherwise, you can just include
5475 them with the rest of the public library files.
5476
5477 EOM
5478 fn=d+~
5479 rp='Where do you want to put the public architecture-dependent libraries?'
5480 . ./getfile
5481 archlib="$ans"
5482 archlibexp="$ansexp"
5483 if $test X"$archlib" = X"$privlib"; then
5484         d_archlib="$undef"
5485 else
5486         d_archlib="$define"
5487 fi
5488 : Change installation prefix, if necessary.
5489 if $test X"$prefix" != X"$installprefix"; then
5490         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5491 else
5492         installarchlib="$archlibexp"
5493 fi
5494
5495
5496 : Binary compatibility with 5.005 is not possible for builds
5497 : with advanced features
5498 case "$usethreads$usemultiplicity" in
5499 *define*)
5500         bincompat5005="$undef"
5501         d_bincompat5005="$undef"
5502         ;;
5503 *)      $cat <<EOM
5504
5505 This version of Perl can be compiled for binary compatibility with 5.005.
5506 If you decide to do so, you will be able to continue using most of the
5507 extensions that were compiled for Perl 5.005.
5508
5509 EOM
5510         case "$bincompat5005$d_bincompat5005" in
5511         *"$undef"*) dflt=n ;;
5512         *) dflt=y ;;
5513         esac
5514         rp='Binary compatibility with Perl 5.005?'
5515         . ./myread
5516         case "$ans" in
5517         y*) val="$define" ;;
5518         *)  val="$undef" ;;
5519         esac
5520         set d_bincompat5005
5521         eval $setvar
5522         case "$d_bincompat5005" in
5523         "$define")
5524                 bincompat5005="$define"
5525                 ;;
5526         *)      bincompat5005="$undef"
5527                 d_bincompat5005="$undef"
5528                 ;;
5529         esac
5530         ;;
5531 esac
5532
5533
5534 : see if setuid scripts can be secure
5535 $cat <<EOM
5536
5537 Some kernels have a bug that prevents setuid #! scripts from being
5538 secure.  Some sites have disabled setuid #! scripts because of this.
5539
5540 First let's decide if your kernel supports secure setuid #! scripts.
5541 (If setuid #! scripts would be secure but have been disabled anyway,
5542 don't say that they are secure if asked.)
5543
5544 EOM
5545
5546 val="$undef"
5547 if $test -d /dev/fd; then
5548         echo "#!$ls" >reflect
5549         chmod +x,u+s reflect
5550         ./reflect >flect 2>&1
5551         if $contains "/dev/fd" flect >/dev/null; then
5552                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5553                 val="$define"
5554         else
5555                 $cat <<EOM
5556 If you are not sure if they are secure, I can check but I'll need a
5557 username and password different from the one you are using right now.
5558 If you don't have such a username or don't want me to test, simply
5559 enter 'none'.
5560
5561 EOM
5562                 rp='Other username to test security of setuid scripts with?'
5563                 dflt='none'
5564                 . ./myread
5565                 case "$ans" in
5566                 n|none)
5567                         case "$d_suidsafe" in
5568                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5569                                 dflt=n;;
5570                         "$undef")
5571                                 echo "Well, the $hint value is *not* secure." >&4
5572                                 dflt=n;;
5573                         *)      echo "Well, the $hint value *is* secure." >&4
5574                                 dflt=y;;
5575                         esac
5576                         ;;
5577                 *)
5578                         $rm -f reflect flect
5579                         echo "#!$ls" >reflect
5580                         chmod +x,u+s reflect
5581                         echo >flect
5582                         chmod a+w flect
5583                         echo '"su" will (probably) prompt you for '"$ans's password."
5584                         su $ans -c './reflect >flect'
5585                         if $contains "/dev/fd" flect >/dev/null; then
5586                                 echo "Okay, it looks like setuid scripts are secure." >&4
5587                                 dflt=y
5588                         else
5589                                 echo "I don't think setuid scripts are secure." >&4
5590                                 dflt=n
5591                         fi
5592                         ;;
5593                 esac
5594                 rp='Does your kernel have *secure* setuid scripts?'
5595                 . ./myread
5596                 case "$ans" in
5597                 [yY]*)  val="$define";;
5598                 *)      val="$undef";;
5599                 esac
5600         fi
5601 else
5602         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5603         echo "(That's for file descriptors, not floppy disks.)"
5604         val="$undef"
5605 fi
5606 set d_suidsafe
5607 eval $setvar
5608
5609 $rm -f reflect flect
5610
5611 : now see if they want to do setuid emulation
5612 echo " "
5613 val="$undef"
5614 case "$d_suidsafe" in
5615 "$define")
5616         val="$undef"
5617         echo "No need to emulate SUID scripts since they are secure here." >& 4
5618         ;;
5619 *)
5620         $cat <<EOM
5621 Some systems have disabled setuid scripts, especially systems where
5622 setuid scripts cannot be secure.  On systems where setuid scripts have
5623 been disabled, the setuid/setgid bits on scripts are currently
5624 useless.  It is possible for $package to detect those bits and emulate
5625 setuid/setgid in a secure fashion.  This emulation will only work if
5626 setuid scripts have been disabled in your kernel.
5627
5628 EOM
5629         case "$d_dosuid" in
5630         "$define") dflt=y ;;
5631         *) dflt=n ;;
5632         esac
5633         rp="Do you want to do setuid/setgid emulation?"
5634         . ./myread
5635         case "$ans" in
5636         [yY]*)  val="$define";;
5637         *)      val="$undef";;
5638         esac
5639         ;;
5640 esac
5641 set d_dosuid
5642 eval $setvar
5643
5644 : determine filename position in cpp output
5645 echo " "
5646 echo "Computing filename position in cpp output for #include directives..." >&4
5647 echo '#include <stdio.h>' > foo.c
5648 $cat >fieldn <<EOF
5649 $startsh
5650 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5651 $grep '^[       ]*#.*stdio\.h' | \
5652 while read cline; do
5653         pos=1
5654         set \$cline
5655         while $test \$# -gt 0; do
5656                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5657                         echo "\$pos"
5658                         exit 0
5659                 fi
5660                 shift
5661                 pos=\`expr \$pos + 1\`
5662         done
5663 done
5664 EOF
5665 chmod +x fieldn
5666 fieldn=`./fieldn`
5667 $rm -f foo.c fieldn
5668 case $fieldn in
5669 '') pos='???';;
5670 1) pos=first;;
5671 2) pos=second;;
5672 3) pos=third;;
5673 *) pos="${fieldn}th";;
5674 esac
5675 echo "Your cpp writes the filename in the $pos field of the line."
5676
5677 : locate header file
5678 $cat >findhdr <<EOF
5679 $startsh
5680 wanted=\$1
5681 name=''
5682 for usrincdir in $usrinc
5683 do
5684         if test -f \$usrincdir/\$wanted; then
5685                 echo "\$usrincdir/\$wanted"
5686                 exit 0
5687         fi
5688 done
5689 awkprg='{ print \$$fieldn }'
5690 echo "#include <\$wanted>" > foo\$\$.c
5691 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5692 $grep "^[       ]*#.*\$wanted" | \
5693 while read cline; do
5694         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5695         case "\$name" in
5696         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5697         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5698         *) exit 2;;
5699         esac;
5700 done;
5701 #
5702 # status = 0: grep returned 0 lines, case statement not executed
5703 # status = 1: headerfile found
5704 # status = 2: while loop executed, no headerfile found
5705 #
5706 status=\$?
5707 $rm -f foo\$\$.c;
5708 if test \$status -eq 1; then
5709         exit 0;
5710 fi
5711 exit 1
5712 EOF
5713 chmod +x findhdr
5714
5715 : define an alternate in-header-list? function
5716 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5717 cont=true; xxf="echo \"<\$1> found.\" >&4";
5718 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5719 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5720 esac;
5721 case $# in 4) instead=instead;; *) instead="at last";; esac;
5722 while $test "$cont"; do
5723         xxx=`./findhdr $1`
5724         var=$2; eval "was=\$$2";
5725         if $test "$xxx" && $test -r "$xxx";
5726         then eval $xxf;
5727         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5728                 cont="";
5729         else eval $xxnf;
5730         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5731         set $yyy; shift; shift; yyy=$@;
5732         case $# in 0) cont="";;
5733         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5734                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5735         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5736                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5737         esac;
5738 done;
5739 while $test "$yyy";
5740 do set $yyy; var=$2; eval "was=\$$2";
5741         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5742         set $yyy; shift; shift; yyy=$@;
5743 done'
5744
5745 : see if this is a malloc.h system
5746 set malloc.h i_malloc
5747 eval $inhdr
5748
5749 : see if stdlib is available
5750 set stdlib.h i_stdlib
5751 eval $inhdr
5752
5753 : determine which malloc to compile in
5754 echo " "
5755 case "$usemymalloc" in
5756 ''|[yY]*|true|$define)  dflt='y' ;;
5757 *)      dflt='n' ;;
5758 esac
5759 rp="Do you wish to attempt to use the malloc that comes with $package?"
5760 . ./myread
5761 usemymalloc="$ans"
5762 case "$ans" in
5763 y*|true)
5764         usemymalloc='y'
5765         mallocsrc='malloc.c'
5766         mallocobj="malloc$_o"
5767         d_mymalloc="$define"
5768         case "$libs" in
5769         *-lmalloc*)
5770                 : Remove malloc from list of libraries to use
5771                 echo "Removing unneeded -lmalloc from library list" >&4
5772                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5773                 shift
5774                 libs="$*"
5775                 echo "libs = $libs" >&4
5776                 ;;
5777         esac
5778         ;;
5779 *)
5780         usemymalloc='n'
5781         mallocsrc=''
5782         mallocobj=''
5783         d_mymalloc="$undef"
5784         ;;
5785 esac
5786
5787 : compute the return types of malloc and free
5788 echo " "
5789 $cat >malloc.c <<END
5790 #$i_malloc I_MALLOC
5791 #$i_stdlib I_STDLIB
5792 #include <stdio.h>
5793 #include <sys/types.h>
5794 #ifdef I_MALLOC
5795 #include <malloc.h>
5796 #endif
5797 #ifdef I_STDLIB
5798 #include <stdlib.h>
5799 #endif
5800 #ifdef TRY_MALLOC
5801 void *malloc();
5802 #endif
5803 #ifdef TRY_FREE
5804 void free();
5805 #endif
5806 END
5807 case "$malloctype" in
5808 '')
5809         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5810                 malloctype='void *'
5811         else
5812                 malloctype='char *'
5813         fi
5814         ;;
5815 esac
5816 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5817
5818 case "$freetype" in
5819 '')
5820         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5821                 freetype='void'
5822         else
5823                 freetype='int'
5824         fi
5825         ;;
5826 esac
5827 echo "Your system uses $freetype free(), it would seem." >&4
5828 $rm -f malloc.[co]
5829 $cat <<EOM
5830
5831 After $package is installed, you may wish to install various
5832 add-on modules and utilities.  Typically, these add-ons will
5833 be installed under $prefix with the rest
5834 of this package.  However, you may wish to install such add-ons
5835 elsewhere under a different prefix.
5836
5837 If you do not wish to put everything under a single prefix, that's
5838 ok.  You will be prompted for the individual locations; this siteprefix
5839 is only used to suggest the defaults.
5840
5841 The default should be fine for most people.
5842
5843 EOM
5844 fn=d~+
5845 rp='Installation prefix to use for add-on modules and utilities?'
5846 : XXX Here might be another good place for an installstyle setting.
5847 case "$siteprefix" in
5848 '') dflt=$prefix ;;
5849 *)  dflt=$siteprefix ;;
5850 esac
5851 . ./getfile
5852 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5853 oldsiteprefix=''
5854 case "$siteprefix" in
5855 '') ;;
5856 *)      case "$ans" in
5857         "$prefix") ;;
5858         *) oldsiteprefix="$prefix";;
5859         esac
5860         ;;
5861 esac
5862 siteprefix="$ans"
5863 siteprefixexp="$ansexp"
5864
5865 : determine where site specific libraries go.
5866 : Usual default is /usr/local/lib/perl5/site_perl/$version
5867 : The default "style" setting is made in installstyle.U
5868 : XXX No longer works with Prefixit stuff.
5869 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5870 case "$sitelib" in
5871 '') case "$installstyle" in
5872         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5873         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5874         esac
5875         ;;
5876 *)      dflt="$sitelib"
5877         ;;
5878 esac
5879 $cat <<EOM
5880
5881 The installation process will create a directory for
5882 site-specific extensions and modules.  Most users find it convenient
5883 to place all site-specific files in this directory rather than in the
5884 main distribution directory.
5885
5886 EOM
5887 fn=d~+
5888 rp='Pathname for the site-specific library files?'
5889 . ./getfile
5890 sitelib="$ans"
5891 sitelibexp="$ansexp"
5892 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5893 : Change installation prefix, if necessary.
5894 if $test X"$prefix" != X"$installprefix"; then
5895         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5896 else
5897         installsitelib="$sitelibexp"
5898 fi
5899
5900 : determine where site specific architecture-dependent libraries go.
5901 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5902 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5903 : sitelib may have an optional trailing /share.
5904 case "$sitearch" in
5905 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5906         dflt="$dflt/$archname"
5907         ;;
5908 *)      dflt="$sitearch"
5909         ;;
5910 esac
5911 set sitearch sitearch none
5912 eval $prefixit
5913 $cat <<EOM
5914
5915 The installation process will also create a directory for
5916 architecture-dependent site-specific extensions and modules.
5917
5918 EOM
5919 fn=d~+
5920 rp='Pathname for the site-specific architecture-dependent library files?'
5921 . ./getfile
5922 sitearch="$ans"
5923 sitearchexp="$ansexp"
5924 : Change installation prefix, if necessary.
5925 if $test X"$prefix" != X"$installprefix"; then
5926         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5927 else
5928         installsitearch="$sitearchexp"
5929 fi
5930
5931 $cat <<EOM
5932
5933 The installation process will also create a directory for
5934 vendor-supplied add-ons.  Vendors who supply perl with their system
5935 may find it convenient to place all vendor-supplied files in this
5936 directory rather than in the main distribution directory.  This will
5937 ease upgrades between binary-compatible maintenance versions of perl.
5938
5939 Of course you may also use these directories in whatever way you see
5940 fit.  For example, you might use them to access modules shared over a
5941 company-wide network.
5942
5943 The default answer should be fine for most people.
5944 This causes further questions about vendor add-ons to be skipped
5945 and no vendor-specific directories will be configured for perl.
5946
5947 EOM
5948 rp='Do you want to configure vendor-specific add-on directories?'
5949 case "$usevendorprefix" in
5950 define|true|[yY]*) dflt=y ;;
5951 *)      : User may have set vendorprefix directly on Configure command line.
5952         case "$vendorprefix" in
5953         ''|' ') dflt=n ;;
5954         *)      dflt=y ;;
5955         esac
5956         ;;
5957 esac
5958 . ./myread
5959 case "$ans" in
5960 [yY]*)  fn=d~+
5961         rp='Installation prefix to use for vendor-supplied add-ons?'
5962         case "$vendorprefix" in
5963         '') dflt='' ;;
5964         *)  dflt=$vendorprefix ;;
5965         esac
5966         . ./getfile
5967         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5968         oldvendorprefix=''
5969         case "$vendorprefix" in
5970         '') ;;
5971         *)      case "$ans" in
5972                 "$prefix") ;;
5973                 *) oldvendorprefix="$prefix";;
5974                 esac
5975                 ;;
5976         esac
5977         usevendorprefix="$define"
5978         vendorprefix="$ans"
5979         vendorprefixexp="$ansexp"
5980         ;;
5981 *)      usevendorprefix="$undef"
5982         vendorprefix=''
5983         vendorprefixexp=''
5984         ;;
5985 esac
5986
5987 case "$vendorprefix" in
5988 '')     d_vendorlib="$undef"
5989         vendorlib=''
5990         vendorlibexp=''
5991         ;;
5992 *)      d_vendorlib="$define"
5993         : determine where vendor-supplied modules go.
5994         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5995         case "$vendorlib" in
5996         '')
5997                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5998                 case "$installstyle" in
5999                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6000                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6001                 esac
6002                 ;;
6003         *)      dflt="$vendorlib"
6004                 ;;
6005         esac
6006         fn=d~+
6007         rp='Pathname for the vendor-supplied library files?'
6008         . ./getfile
6009         vendorlib="$ans"
6010         vendorlibexp="$ansexp"
6011         ;;
6012 esac
6013 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6014 : Change installation prefix, if necessary.
6015 if $test X"$prefix" != X"$installprefix"; then
6016         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6017 else
6018         installvendorlib="$vendorlibexp"
6019 fi
6020
6021 case "$vendorprefix" in
6022 '')     d_vendorarch="$undef"
6023         vendorarch=''
6024         vendorarchexp=''
6025         ;;
6026 *)      d_vendorarch="$define"
6027         : determine where vendor-supplied architecture-dependent libraries go.
6028         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6029         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6030         : vendorlib may have an optional trailing /share.
6031         case "$vendorarch" in
6032         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6033                 dflt="$dflt/$archname"
6034                 ;;
6035         *)      dflt="$vendorarch" ;;
6036         esac
6037         fn=d~+
6038         rp='Pathname for vendor-supplied architecture-dependent files?'
6039         . ./getfile
6040         vendorarch="$ans"
6041         vendorarchexp="$ansexp"
6042         ;;
6043 esac
6044 : Change installation prefix, if necessary.
6045 if $test X"$prefix" != X"$installprefix"; then
6046         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6047 else
6048         installvendorarch="$vendorarchexp"
6049 fi
6050
6051 : Final catch-all directories to search
6052 $cat <<EOM
6053
6054 Lastly, you can have perl look in other directories for extensions and
6055 modules in addition to those already specified.
6056 These directories will be searched after 
6057         $sitearch 
6058         $sitelib 
6059 EOM
6060 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6061 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6062 echo ' '
6063 case "$otherlibdirs" in
6064 ''|' ') dflt='none' ;;
6065 *)      dflt="$otherlibdirs" ;;
6066 esac
6067 $cat <<EOM
6068 Enter a colon-separated set of extra paths to include in perl's @INC
6069 search path, or enter 'none' for no extra paths.
6070
6071 EOM
6072
6073 rp='Colon-separated list of additional directories for perl to search?'
6074 . ./myread
6075 case "$ans" in
6076 ' '|''|none)    otherlibdirs=' ' ;;     
6077 *)      otherlibdirs="$ans" ;;
6078 esac
6079 case "$otherlibdirs" in
6080 ' ') val=$undef ;;
6081 *)      val=$define ;;
6082 esac
6083 set d_perl_otherlibdirs
6084 eval $setvar
6085
6086 : Cruising for prototypes
6087 echo " "
6088 echo "Checking out function prototypes..." >&4
6089 $cat >prototype.c <<'EOCP'
6090 int main(int argc, char *argv[]) {
6091         exit(0);}
6092 EOCP
6093 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6094         echo "Your C compiler appears to support function prototypes."
6095         val="$define"
6096 else
6097         echo "Your C compiler doesn't seem to understand function prototypes."
6098         val="$undef"
6099 fi
6100 set prototype
6101 eval $setvar
6102 $rm -f prototype*
6103
6104 case "$prototype" in
6105 "$define") ;;
6106 *)      ansi2knr='ansi2knr'
6107         echo " "
6108         cat <<EOM >&4
6109
6110 $me:  FATAL ERROR:
6111 This version of $package can only be compiled by a compiler that 
6112 understands function prototypes.  Unfortunately, your C compiler 
6113         $cc $ccflags
6114 doesn't seem to understand them.  Sorry about that.
6115
6116 If GNU cc is available for your system, perhaps you could try that instead.  
6117
6118 Eventually, we hope to support building Perl with pre-ANSI compilers.
6119 If you would like to help in that effort, please contact <perlbug@perl.org>.
6120
6121 Aborting Configure now.
6122 EOM
6123         exit 2
6124         ;;
6125 esac
6126
6127 : determine where public executables go
6128 echo " "
6129 set dflt bin bin
6130 eval $prefixit
6131 fn=d~
6132 rp='Pathname where the public executables will reside?'
6133 . ./getfile
6134 if $test "X$ansexp" != "X$binexp"; then
6135         installbin=''
6136 fi
6137 bin="$ans"
6138 binexp="$ansexp"
6139 : Change installation prefix, if necessary.
6140 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6141 if $test X"$prefix" != X"$installprefix"; then
6142         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6143 else
6144         installbin="$binexp"
6145 fi
6146
6147 : Find perl5.005 or later.
6148 echo "Looking for a previously installed perl5.005 or later... "
6149 case "$perl5" in
6150 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6151                 : Check if this perl is recent and can load a simple module
6152                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6153                         perl5=$tdir/perl
6154                         break;
6155                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6156                         perl5=$tdir/perl
6157                         break;
6158                 fi
6159         done
6160         ;;
6161 *)      perl5="$perl5"
6162         ;;
6163 esac
6164 case "$perl5" in
6165 '')     echo "None found.  That's ok.";;
6166 *)      echo "Using $perl5." ;;
6167 esac
6168
6169 : Determine list of previous versions to include in @INC
6170 $cat > getverlist <<EOPL
6171 #!$perl5 -w
6172 use File::Basename;
6173 \$api_versionstring = "$api_versionstring";
6174 \$version = "$version";
6175 \$stem = "$sitelib_stem";
6176 \$archname = "$archname";
6177 EOPL
6178         $cat >> getverlist <<'EOPL'
6179 # Can't have leading @ because metaconfig interprets it as a command!
6180 ;@inc_version_list=();
6181 # XXX Redo to do opendir/readdir? 
6182 if (-d $stem) {
6183     chdir($stem);
6184     ;@candidates = glob("5.*");
6185 }
6186 else {
6187     ;@candidates = ();
6188 }
6189
6190 # XXX ToDo:  These comparisons must be reworked when two-digit
6191 # subversions come along, so that 5.7.10 compares as greater than
6192 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6193 # widespread that we can use the built-in version vectors rather
6194 # than reinventing them here.  For 5.6.0, however, we must
6195 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6196 foreach $d (@candidates) {
6197     if ($d lt $version) {
6198         if ($d ge $api_versionstring) {
6199             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6200         }
6201         elsif ($d ge "5.005") {
6202             unshift(@inc_version_list, grep { -d } $d);
6203         }
6204     }
6205     else {
6206         # Skip newer version.  I.e. don't look in
6207         # 5.7.0 if we're installing 5.6.1.
6208     }
6209 }
6210
6211 if (@inc_version_list) {
6212     print join(' ', @inc_version_list);
6213 }
6214 else {
6215     # Blank space to preserve value for next Configure run.
6216     print " ";
6217 }
6218 EOPL
6219 chmod +x getverlist
6220 case "$inc_version_list" in
6221 '')     if test -x "$perl5"; then
6222                 dflt=`$perl5 getverlist`
6223         else
6224                 dflt='none'
6225         fi
6226         ;;
6227 $undef) dflt='none' ;;
6228 *)  dflt="$inc_version_list" ;;
6229 esac
6230 case "$dflt" in
6231 ''|' ') dflt=none ;;
6232 esac
6233 case "$dflt" in
6234 5.005) case "$bincompat5005" in
6235        $define|true|[yY]*) ;;
6236        *) dflt=none ;;
6237        esac
6238        ;;
6239 esac
6240 $cat <<'EOM'
6241
6242 In order to ease the process of upgrading, this version of perl 
6243 can be configured to use modules built and installed with earlier 
6244 versions of perl that were installed under $prefix.  Specify here
6245 the list of earlier versions that this version of perl should check.
6246 If Configure detected no earlier versions of perl installed under
6247 $prefix, then the list will be empty.  Answer 'none' to tell perl
6248 to not search earlier versions.
6249
6250 The default should almost always be sensible, so if you're not sure,
6251 just accept the default.
6252 EOM
6253
6254 rp='List of earlier versions to include in @INC?'
6255 . ./myread
6256 case "$ans" in
6257 [Nn]one|''|' ') inc_version_list=' ' ;;
6258 *) inc_version_list="$ans" ;;
6259 esac
6260 case "$inc_version_list" in
6261 ''|' ') 
6262         inc_version_list_init='0';;
6263 *)      inc_version_list_init=`echo $inc_version_list |
6264                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6265         ;;
6266 esac
6267 $rm -f getverlist
6268
6269 : determine whether to install perl also as /usr/bin/perl
6270
6271 echo " "
6272 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6273         $cat <<EOM
6274 Many scripts expect perl to be installed as /usr/bin/perl.
6275 I can install the perl you are about to compile also as /usr/bin/perl
6276 (in addition to $installbin/perl).
6277 EOM
6278         case "$installusrbinperl" in
6279         "$undef"|[nN]*) dflt='n';;
6280         *)              dflt='y';;
6281         esac
6282         rp="Do you want to install perl as /usr/bin/perl?"
6283         . ./myread
6284         case "$ans" in
6285         [yY]*)  val="$define";;
6286         *)      val="$undef" ;;
6287         esac
6288 else
6289         val="$undef"
6290 fi
6291 set installusrbinperl
6292 eval $setvar
6293
6294 : see if dld is available
6295 set dld.h i_dld
6296 eval $inhdr
6297
6298 : see if dlopen exists
6299 xxx_runnm="$runnm"
6300 runnm=false
6301 set dlopen d_dlopen
6302 eval $inlibc
6303 runnm="$xxx_runnm"
6304
6305 : determine which dynamic loading, if any, to compile in
6306 echo " "
6307 dldir="ext/DynaLoader"
6308 case "$usedl" in
6309 $define|y|true)
6310         dflt='y'
6311         usedl="$define"
6312         ;;
6313 $undef|n|false)
6314         dflt='n'
6315         usedl="$undef"
6316         ;;
6317 *) 
6318         dflt='n'
6319         case "$d_dlopen" in
6320             $define) dflt='y' ;;
6321         esac
6322         case "$i_dld" in
6323             $define) dflt='y' ;;
6324         esac
6325         : Does a dl_xxx.xs file exist for this operating system
6326         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6327         ;;
6328 esac
6329 rp="Do you wish to use dynamic loading?"
6330 . ./myread
6331 usedl="$ans"
6332 case "$ans" in
6333 y*) usedl="$define"
6334         case "$dlsrc" in
6335         '')
6336                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6337                         dflt="$dldir/dl_${osname}.xs"
6338                 elif $test "$d_dlopen" = "$define" ; then
6339                         dflt="$dldir/dl_dlopen.xs"
6340                 elif $test "$i_dld" = "$define" ; then
6341                         dflt="$dldir/dl_dld.xs"
6342                 else
6343                         dflt=''
6344                 fi
6345                 ;;
6346         *)      dflt="$dldir/$dlsrc"
6347                 ;;
6348         esac
6349     echo "The following dynamic loading files are available:"
6350         : Can not go over to $dldir because getfile has path hard-coded in.
6351         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6352         rp="Source file to use for dynamic loading"
6353         fn="fne"
6354         gfpth="$src"
6355         . ./getfile
6356         usedl="$define"
6357         : emulate basename
6358         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6359
6360         $cat << EOM
6361
6362 Some systems may require passing special flags to $cc -c to
6363 compile modules that will be used to create a shared library.
6364 To use no flags, say "none".
6365
6366 EOM
6367     case "$cccdlflags" in
6368     '') case "$gccversion" in
6369                 '') case "$osname" in
6370                         hpux)   dflt='+z' ;;
6371                         next)   dflt='none' ;;
6372                         irix*)  dflt='-KPIC' ;;
6373                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6374                         sunos)  dflt='-pic' ;;
6375                         *)      dflt='none' ;;
6376                     esac
6377                         ;;
6378                 *)  case "$osname" in
6379                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6380                         *)      dflt='-fpic' ;;
6381                     esac ;;
6382             esac ;;
6383         ' ') dflt='none' ;;
6384     *)  dflt="$cccdlflags" ;;
6385     esac
6386     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6387     . ./myread
6388     case "$ans" in
6389     none) cccdlflags=' ' ;;
6390     *) cccdlflags="$ans" ;;
6391     esac
6392
6393     cat << EOM
6394
6395 Some systems use ld to create libraries that can be dynamically loaded,
6396 while other systems (such as those using ELF) use $cc.
6397
6398 EOM
6399         case "$ld" in
6400         '')     $cat >try.c <<'EOM'
6401 /* Test for whether ELF binaries are produced */
6402 #include <fcntl.h>
6403 #include <stdlib.h>
6404 int main() {
6405         char b[4];
6406         int i = open("a.out",O_RDONLY);
6407         if(i == -1) 
6408                 exit(1); /* fail */
6409         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6410                 exit(0); /* succeed (yes, it's ELF) */
6411         else
6412                 exit(1); /* fail */
6413 }
6414 EOM
6415                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6416                         cat <<EOM
6417 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6418 EOM
6419                         dflt="$cc"
6420                 else
6421                         echo "I'll use ld to build dynamic libraries."
6422                         dflt='ld'
6423                 fi
6424                 rm -f try.c a.out
6425                 ;;
6426         *)      dflt="$ld"
6427                 ;;
6428         esac
6429
6430     rp="What command should be used to create dynamic libraries?"
6431     . ./myread
6432         ld="$ans"
6433
6434     cat << EOM
6435
6436 Some systems may require passing special flags to $ld to create a
6437 library that can be dynamically loaded.  If your ld flags include
6438 -L/other/path options to locate libraries outside your loader's normal
6439 search path, you may need to specify those -L options here as well.  To
6440 use no flags, say "none".
6441
6442 EOM
6443     case "$lddlflags" in
6444     '') case "$osname" in
6445                         beos) dflt='-nostart' ;;
6446                         hpux) dflt='-b';
6447                               case "$gccversion" in
6448                               '') dflt="$dflt +vnocompatwarnings" ;;
6449                               esac
6450                               ;;        
6451                         linux|irix*)    dflt='-shared' ;;
6452                         next)  dflt='none' ;;
6453                         solaris) dflt='-G' ;;
6454                         sunos) dflt='-assert nodefinitions' ;;
6455                         svr4*|esix*) dflt="-G $ldflags" ;;
6456                 *)     dflt='none' ;;
6457                         esac
6458                         ;;
6459     *) dflt="$lddlflags" ;;
6460     esac
6461
6462         : Try to guess additional flags to pick up local libraries.
6463         : Be careful not to append to a plain 'none'
6464         case "$dflt" in
6465         none) dflt='' ;;
6466         esac
6467         for thisflag in $ldflags; do
6468                 case "$thisflag" in
6469                 -L*|-R*)
6470                         case " $dflt " in
6471                         *" $thisflag "*) ;;
6472                         *) dflt="$dflt $thisflag" ;;
6473                         esac
6474                         ;;
6475                 esac
6476         done
6477
6478         case "$dflt" in
6479         ''|' ') dflt='none' ;;
6480         esac
6481
6482     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6483     . ./myread
6484     case "$ans" in
6485     none) lddlflags=' ' ;;
6486     *) lddlflags="$ans" ;;
6487     esac
6488
6489         cat <<EOM
6490
6491 Some systems may require passing special flags to $cc to indicate that
6492 the resulting executable will use dynamic linking.  To use no flags,
6493 say "none".
6494
6495 EOM
6496     case "$ccdlflags" in
6497     '') case "$osname" in
6498                 hpux)   dflt='-Wl,-E' ;;
6499                 linux)  dflt='-rdynamic' ;;
6500                 next)   dflt='none' ;;
6501                 sunos)  dflt='none' ;;
6502                 *)      dflt='none' ;;
6503             esac ;;
6504     ' ')  dflt='none' ;;
6505     *)  dflt="$ccdlflags" ;;
6506     esac
6507     rp="Any special flags to pass to $cc to use dynamic linking?"
6508     . ./myread
6509     case "$ans" in
6510     none) ccdlflags=' ' ;;
6511     *) ccdlflags="$ans" ;;
6512     esac
6513     ;;
6514 *)  usedl="$undef"
6515         ld='ld'
6516     dlsrc='dl_none.xs'
6517     lddlflags=''
6518     ccdlflags=''
6519     ;;
6520 esac
6521
6522 also=''
6523 case "$usedl" in
6524 $undef)
6525         # No dynamic loading being used, so don't bother even to prompt.
6526         useshrplib='false'
6527         ;;
6528 *)      case "$useshrplib" in
6529         '')     case "$osname" in
6530                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6531                         dflt=y
6532                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6533                         ;;
6534                 next*)
6535                         case "$osvers" in
6536                         4*)     dflt=y
6537                                 also='Building a shared libperl is needed for MAB support.'
6538                                 ;;
6539                         *)      dflt=n
6540                                 ;;
6541                         esac
6542                         ;;
6543                 *)      dflt=n
6544                         ;;
6545                 esac
6546                 ;;
6547         $define|true|[Yy]*)
6548                 dflt=y
6549                 ;;
6550         *)      dflt=n
6551                 ;;
6552         esac
6553         $cat << EOM
6554
6555 The perl executable is normally obtained by linking perlmain.c with
6556 libperl${_a}, any static extensions (usually just DynaLoader), and
6557 any other libraries needed on this system (such as -lm, etc.).  Since
6558 your system supports dynamic loading, it is probably possible to build
6559 a shared libperl.$so.  If you will have more than one executable linked
6560 to libperl.$so, this will significantly reduce the size of each
6561 executable, but it may have a noticeable affect on performance.  The
6562 default is probably sensible for your system.
6563 $also
6564
6565 EOM
6566         rp="Build a shared libperl.$so (y/n)"
6567         . ./myread
6568         case "$ans" in
6569         true|$define|[Yy]*)
6570                 useshrplib='true'  ;;
6571         *)      useshrplib='false' ;;
6572         esac
6573         ;;
6574 esac
6575
6576 case "$useshrplib" in
6577 true)
6578         case "$libperl" in
6579         '')
6580                 # Figure out a good name for libperl.so.  Since it gets stored in
6581                 # a version-specific architecture-dependent library, the version
6582                 # number isn't really that important, except for making cc/ld happy.
6583                 #
6584                 # A name such as libperl.so.3.1
6585                 majmin="libperl.$so.$patchlevel.$subversion"
6586                 # A name such as libperl.so.301
6587                 majonly=`echo $patchlevel $subversion |
6588                         $awk '{printf "%d%02d", $1, $2}'`
6589                 majonly=libperl.$so.$majonly
6590                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6591                 # rely on figuring it out from the naming of libc.
6592                 case "${osname}${osvers}" in
6593                 next4*)
6594                         dflt=libperl.5.$so
6595                         # XXX How handle the --version stuff for MAB?
6596                         ;;
6597                 linux*)  # ld won't link with a bare -lperl otherwise.
6598                         dflt=libperl.$so
6599                         ;;
6600                 cygwin*) # include version
6601                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6602                         ;;
6603                 *)      # Try to guess based on whether libc has major.minor.
6604                         case "$libc" in
6605                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6606                         *libc.$so.[0-9]*) dflt=$majonly ;;
6607                         *)      dflt=libperl.$so ;;
6608                         esac
6609                         ;;
6610                 esac
6611                 ;;
6612         *)      dflt=$libperl
6613                 ;;
6614         esac
6615         cat << EOM
6616
6617 I need to select a good name for the shared libperl.  If your system uses
6618 library names with major and minor numbers, then you might want something
6619 like $majmin.  Alternatively, if your system uses a single version
6620 number for shared libraries, then you might want to use $majonly.
6621 Or, your system might be quite happy with a simple libperl.$so.
6622
6623 Since the shared libperl will get installed into a version-specific
6624 architecture-dependent directory, the version number of the shared perl
6625 library probably isn't important, so the default should be o.k.
6626
6627 EOM
6628         rp='What name do you want to give to the shared libperl?'
6629         . ./myread
6630         libperl=$ans
6631         echo "Ok, I'll use $libperl"
6632         ;;
6633 *)
6634         libperl="libperl${_a}"
6635         ;;
6636 esac
6637
6638 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6639 case "$shrpdir" in
6640 '') ;;
6641 *)      $cat >&4 <<EOM
6642 WARNING:  Use of the shrpdir variable for the installation location of
6643 the shared $libperl is not supported.  It was never documented and
6644 will not work in this version.  Let me (perlbug@perl.org)
6645 know of any problems this may cause.
6646
6647 EOM
6648         case "$shrpdir" in
6649         "$archlibexp/CORE")
6650                 $cat >&4 <<EOM
6651 But your current setting of $shrpdir is
6652 the default anyway, so it's harmless.
6653 EOM
6654                 ;;
6655         *)
6656                 $cat >&4 <<EOM
6657 Further, your current attempted setting of $shrpdir
6658 conflicts with the value of $archlibexp/CORE
6659 that installperl will use.
6660 EOM
6661                 ;;
6662         esac
6663         ;;
6664 esac
6665
6666 # How will the perl executable find the installed shared $libperl?
6667 # Add $xxx to ccdlflags.
6668 # If we can't figure out a command-line option, use $shrpenv to
6669 # set env LD_RUN_PATH.  The main perl makefile uses this.
6670 shrpdir=$archlibexp/CORE
6671 xxx=''
6672 tmp_shrpenv=''
6673 if "$useshrplib"; then
6674     case "$osname" in 
6675         aix)
6676                 # We'll set it in Makefile.SH...
6677                 ;;
6678         solaris|netbsd)
6679                 xxx="-R $shrpdir"
6680                 ;;
6681         freebsd)
6682                 xxx="-Wl,-R$shrpdir"
6683                 ;;
6684         linux|irix*|dec_osf)
6685                 xxx="-Wl,-rpath,$shrpdir"
6686                 ;;
6687         next)
6688                 # next doesn't like the default...
6689                 ;;
6690         beos)
6691                 # beos doesn't like the default, either.
6692                 ;;
6693         hpux*)
6694                 # hpux doesn't like the default, either.
6695                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6696                 ;;
6697         *)
6698                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6699                 ;;
6700         esac
6701         case "$xxx" in
6702         '') ;;
6703         *)      
6704                 # Only add $xxx if it isn't already in ccdlflags.
6705                 case " $ccdlflags " in
6706                 *" $xxx "*)     ;;
6707                 *)      ccdlflags="$ccdlflags $xxx"
6708                         cat <<EOM >&4
6709
6710 Adding $xxx to the flags
6711 passed to $ld so that the perl executable will find the 
6712 installed shared $libperl.
6713
6714 EOM
6715                         ;;
6716                 esac
6717                 ;;
6718         esac
6719 fi
6720 # Fix ccdlflags in AIX for building external extensions.
6721 # (For building Perl itself bare -bE:perl.exp is needed,
6722 #  Makefile.SH takes care of this.)
6723 case "$osname" in
6724 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6725 esac
6726 # Respect a hint or command-line value.
6727 case "$shrpenv" in
6728 '') shrpenv="$tmp_shrpenv" ;;
6729 esac
6730 case "$ldlibpthname" in
6731 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6732 none)   ldlibpthname='' ;;
6733 esac
6734
6735 : determine where manual pages are on this system
6736 echo " "
6737 case "$sysman" in
6738 '') 
6739         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6740         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6741         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6742         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6743         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6744         sysman=`./loc . /usr/man/man1 $syspath`
6745         ;;
6746 esac
6747 if $test -d "$sysman"; then
6748         echo "System manual is in $sysman." >&4
6749 else
6750         echo "Could not find manual pages in source form." >&4
6751 fi
6752
6753 : determine where manual pages go
6754 set man1dir man1dir none
6755 eval $prefixit
6756 $cat <<EOM
6757
6758 $spackage has manual pages available in source form.
6759 EOM
6760 case "$nroff" in
6761 nroff)
6762         echo "However, you don't have nroff, so they're probably useless to you."
6763         case "$man1dir" in
6764         '') man1dir="none";;
6765         esac;;
6766 esac
6767 echo "If you don't want the manual sources installed, answer 'none'."
6768 case "$man1dir" in
6769 ' ') dflt=none
6770         ;;
6771 '')
6772         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6773         lookpath="$lookpath $prefixexp/man/p_man/man1"
6774         lookpath="$lookpath $prefixexp/man/u_man/man1"
6775         lookpath="$lookpath $prefixexp/man/man.1"
6776         case "$sysman" in
6777         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6778         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6779         esac
6780         set dflt
6781         eval $prefixup
6782         ;;
6783 *)  dflt="$man1dir"
6784         ;;
6785 esac
6786 echo " "
6787 fn=dn+~
6788 rp="Where do the main $spackage manual pages (source) go?"
6789 . ./getfile
6790 if $test "X$man1direxp" != "X$ansexp"; then
6791         installman1dir=''
6792 fi
6793 man1dir="$ans"
6794 man1direxp="$ansexp"
6795 case "$man1dir" in
6796 '')     man1dir=' '
6797         installman1dir='';;
6798 esac
6799
6800 : Change installation prefix, if necessary.
6801 if $test X"$prefix" != X"$installprefix"; then
6802         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6803 else
6804         installman1dir="$man1direxp"
6805 fi
6806
6807 : What suffix to use on installed man pages
6808
6809 case "$man1dir" in
6810 ' ')
6811         man1ext='0'
6812         ;;
6813 *)
6814         rp="What suffix should be used for the main $spackage man pages?"
6815         case "$man1ext" in
6816         '')     case "$man1dir" in
6817                 *1)  dflt=1 ;;
6818                 *1p) dflt=1p ;;
6819                 *1pm) dflt=1pm ;;
6820                 *l) dflt=l;;
6821                 *n) dflt=n;;
6822                 *o) dflt=o;;
6823                 *p) dflt=p;;
6824                 *C) dflt=C;;
6825                 *L) dflt=L;;
6826                 *L1) dflt=L1;;
6827                 *) dflt=1;;
6828                 esac
6829                 ;;
6830         *)      dflt="$man1ext";;
6831         esac
6832         . ./myread
6833         man1ext="$ans"
6834         ;;
6835 esac
6836
6837 : see if we can have long filenames
6838 echo " "
6839 first=123456789abcdef
6840 $rm -f $first
6841 if (echo hi >$first) 2>/dev/null; then
6842         if $test -f 123456789abcde; then
6843                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6844                 val="$undef"
6845         else
6846                 echo 'You can have filenames longer than 14 characters.'>&4
6847                 val="$define"
6848         fi
6849 else
6850         $cat <<'EOM'
6851 You can't have filenames longer than 14 chars.
6852 You can't even think about them!
6853 EOM
6854         val="$undef"
6855 fi 
6856 set d_flexfnam
6857 eval $setvar
6858 $rm -rf 123456789abcde*
6859
6860 : determine where library module manual pages go
6861 set man3dir man3dir none
6862 eval $prefixit
6863 $cat <<EOM
6864
6865 $spackage has manual pages for many of the library modules.
6866 EOM
6867
6868 case "$nroff" in
6869 nroff)
6870         $cat <<'EOM'
6871 However, you don't have nroff, so they're probably useless to you.
6872 EOM
6873         case "$man3dir" in
6874         '') man3dir="none";;
6875         esac;;
6876 esac
6877
6878 case "$d_flexfnam" in
6879 undef)
6880         $cat <<'EOM'
6881 However, your system can't handle the long file names like File::Basename.3. 
6882 EOM
6883         case "$man3dir" in
6884         '') man3dir="none";;
6885         esac;;
6886 esac
6887
6888 echo "If you don't want the manual sources installed, answer 'none'."
6889 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6890 case "$man3dir" in
6891 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6892         if $test -d "$privlib/man/man3"; then
6893                 cat <<EOM >&4
6894
6895 WARNING:  Previous versions of perl installed man3 pages into
6896 $privlib/man/man3.  This version will suggest a 
6897 new default of $dflt.  
6898 EOM
6899                 tdflt=$dflt
6900                 dflt='n'
6901                 rp='Do you wish to preserve the old behavior?(y/n)'
6902                 . ./myread
6903                 case "$ans" in
6904                 y*) dflt="$privlib/man/man3" ;;
6905                 *)  dflt=$tdflt ;;
6906                 esac
6907     fi
6908         ;;
6909 *)      dflt="$man3dir" ;;
6910 esac
6911 case "$dflt" in
6912 ' ') dflt=none ;;
6913 esac
6914 echo " "
6915 fn=dn+~
6916 rp="Where do the $package library man pages (source) go?"
6917 . ./getfile
6918 man3dir="$ans"
6919 man3direxp="$ansexp"
6920 case "$man3dir" in
6921 '')     man3dir=' '
6922         installman3dir='';;
6923 esac
6924
6925 : Change installation prefix, if necessary.
6926 if $test X"$prefix" != X"$installprefix"; then
6927         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6928 else
6929         installman3dir="$man3direxp"
6930 fi
6931
6932 : What suffix to use on installed man pages
6933 case "$man3dir" in
6934 ' ')
6935         man3ext='0'
6936         ;;
6937 *)
6938         rp="What suffix should be used for the $package library man pages?"
6939         case "$man3ext" in
6940         '')     case "$man3dir" in
6941                 *3)  dflt=3 ;;
6942                 *3p) dflt=3p ;;
6943                 *3pm) dflt=3pm ;;
6944                 *l) dflt=l;;
6945                 *n) dflt=n;;
6946                 *o) dflt=o;;
6947                 *p) dflt=p;;
6948                 *C) dflt=C;;
6949                 *L) dflt=L;;
6950                 *L3) dflt=L3;;
6951                 *) dflt=3;;
6952                 esac
6953                 ;;
6954         *)      dflt="$man3ext";;
6955         esac
6956         . ./myread
6957         man3ext="$ans"
6958         ;;
6959 esac
6960
6961 : see if we have to deal with yellow pages, now NIS.
6962 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6963         if $test -f /usr/etc/nibindd; then
6964                 echo " "
6965                 echo "I'm fairly confident you're on a NeXT."
6966                 echo " "
6967                 rp='Do you get the hosts file via NetInfo?'
6968                 dflt=y
6969                 case "$hostcat" in
6970                 nidump*) ;;
6971                 '') ;;
6972                 *) dflt=n;;
6973                 esac
6974                 . ./myread
6975                 case "$ans" in
6976                 y*) hostcat='nidump hosts .';;
6977                 *)      case "$hostcat" in
6978                         nidump*) hostcat='';;
6979                         esac
6980                         ;;
6981                 esac
6982         fi
6983         case "$hostcat" in
6984         nidump*) ;;
6985         *)
6986                 case "$hostcat" in
6987                 *ypcat*) dflt=y;;
6988                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6989                                 dflt=y
6990                         else
6991                                 dflt=n
6992                         fi;;
6993                 *) dflt=n;;
6994                 esac
6995                 echo " "
6996                 rp='Are you getting the hosts file via yellow pages?'
6997                 . ./myread
6998                 case "$ans" in
6999                 y*) hostcat='ypcat hosts';;
7000                 *) hostcat='cat /etc/hosts';;
7001                 esac
7002                 ;;
7003         esac
7004 fi
7005 case "$hostcat" in
7006 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7007 esac
7008 case "$groupcat" in
7009 '') test -f /etc/group && groupcat='cat /etc/group';;
7010 esac
7011 case "$passcat" in
7012 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7013 esac
7014
7015 : now get the host name
7016 echo " "
7017 echo "Figuring out host name..." >&4
7018 case "$myhostname" in
7019 '') cont=true
7020         echo 'Maybe "hostname" will work...'
7021         if tans=`sh -c hostname 2>&1` ; then
7022                 myhostname=$tans
7023                 phostname=hostname
7024                 cont=''
7025         fi
7026         ;;
7027 *) cont='';;
7028 esac
7029 if $test "$cont"; then
7030         if ./xenix; then
7031                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7032                 if tans=`cat /etc/systemid 2>&1` ; then
7033                         myhostname=$tans
7034                         phostname='cat /etc/systemid'
7035                         echo "Whadyaknow.  Xenix always was a bit strange..."
7036                         cont=''
7037                 fi
7038         elif $test -r /etc/systemid; then
7039                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7040         fi
7041 fi
7042 if $test "$cont"; then
7043         echo 'No, maybe "uuname -l" will work...'
7044         if tans=`sh -c 'uuname -l' 2>&1` ; then
7045                 myhostname=$tans
7046                 phostname='uuname -l'
7047         else
7048                 echo 'Strange.  Maybe "uname -n" will work...'
7049                 if tans=`sh -c 'uname -n' 2>&1` ; then
7050                         myhostname=$tans
7051                         phostname='uname -n'
7052                 else
7053                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7054                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7055                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7056                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7057                         else
7058                                 case "$myhostname" in
7059                                 '') echo "Does this machine have an identity crisis or something?"
7060                                         phostname='';;
7061                                 *)
7062                                         echo "Well, you said $myhostname before..."
7063                                         phostname='echo $myhostname';;
7064                                 esac
7065                         fi
7066                 fi
7067         fi
7068 fi
7069 : you do not want to know about this
7070 set $myhostname
7071 myhostname=$1
7072
7073 : verify guess
7074 if $test "$myhostname" ; then
7075         dflt=y
7076         rp='Your host name appears to be "'$myhostname'".'" Right?"
7077         . ./myread
7078         case "$ans" in
7079         y*) ;;
7080         *) myhostname='';;
7081         esac
7082 fi
7083
7084 : bad guess or no guess
7085 while $test "X$myhostname" = X ; do
7086         dflt=''
7087         rp="Please type the (one word) name of your host:"
7088         . ./myread
7089         myhostname="$ans"
7090 done
7091
7092 : translate upper to lower if necessary
7093 case "$myhostname" in
7094 *[A-Z]*)
7095         echo "(Normalizing case in your host name)"
7096         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7097         ;;
7098 esac
7099
7100 case "$myhostname" in
7101 *.*)
7102         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7103         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7104         echo "(Trimming domain name from host name--host name is now $myhostname)"
7105         ;;
7106 *) case "$mydomain" in
7107         '')
7108                 {
7109                         test "X$hostcat" = "Xypcat hosts" &&
7110                         ypmatch "$myhostname" hosts 2>/dev/null |\
7111                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7112                         $test -s hosts
7113                 } || {
7114                         test "X$hostcat" != "X" &&
7115                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7116                                         /[       ]$myhostname[  . ]/p" > hosts
7117                 }
7118                 tmp_re="[       . ]"
7119                 if $test -f hosts; then
7120                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7121                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7122                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7123                                 hosts | $sort | $uniq | \
7124                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7125                         case `$echo X$dflt` in
7126                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7127                                 dflt=.
7128                                 ;;
7129                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7130                                 ;;
7131                         esac
7132                 else
7133                         echo "(I cannot locate a hosts database anywhere)"
7134                         dflt=.
7135                 fi
7136                 case "$dflt" in
7137                 .)
7138                         tans=`./loc resolv.conf X /etc /usr/etc`
7139                         if $test -f "$tans"; then
7140                                 echo "(Attempting domain name extraction from $tans)"
7141                                 dflt=.`$sed -n -e 's/   / /g' \
7142                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7143                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7144                                 case "$dflt" in
7145                                 .) dflt=.`$sed -n -e 's/        / /g' \
7146                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7147                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7148                                         ;;
7149                                 esac
7150                         fi
7151                         ;;
7152                 esac
7153                 case "$dflt" in
7154                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7155                         dflt=.`sh -c domainname 2>/dev/null`
7156                         case "$dflt" in
7157                         '') dflt='.';;
7158                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7159                         esac
7160                         ;;
7161                 esac
7162                 case "$dflt" in
7163                 .) echo "(Lost all hope -- silly guess then)"
7164                         dflt='.uucp'
7165                         ;;
7166                 esac
7167                 $rm -f hosts
7168                 ;;
7169         *) dflt="$mydomain";;
7170         esac;;
7171 esac
7172 echo " "
7173 rp="What is your domain name?"
7174 . ./myread
7175 tans="$ans"
7176 case "$ans" in
7177 '') ;;
7178 .*) ;;
7179 *) tans=".$tans";;
7180 esac
7181 mydomain="$tans"
7182
7183 : translate upper to lower if necessary
7184 case "$mydomain" in
7185 *[A-Z]*)
7186         echo "(Normalizing case in your domain name)"
7187         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7188         ;;
7189 esac
7190
7191 : a little sanity check here
7192 case "$phostname" in
7193 '') ;;
7194 *)
7195         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7196         $myhostname$mydomain|$myhostname) ;;
7197         *)
7198                 case "$phostname" in
7199                 sed*)
7200                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7201                         ;;
7202                 *)
7203                         echo "(That doesn't agree with your $phostname command, by the way.)"
7204                         ;;
7205                 esac
7206         ;;
7207         esac
7208         ;;
7209 esac
7210
7211 $cat <<EOM
7212
7213 I need to get your e-mail address in Internet format if possible, i.e.
7214 something like user@host.domain. Please answer accurately since I have
7215 no easy means to double check it. The default value provided below
7216 is most probably close to reality but may not be valid from outside
7217 your organization...
7218
7219 EOM
7220 cont=x
7221 while test "$cont"; do
7222         case "$cf_email" in
7223         '') dflt="$cf_by@$myhostname$mydomain";;
7224         *) dflt="$cf_email";;
7225         esac
7226         rp='What is your e-mail address?'
7227         . ./myread
7228         cf_email="$ans"
7229         case "$cf_email" in
7230         *@*.*) cont='' ;;
7231         *)
7232                 rp='Address does not look like an Internet one.  Use it anyway?'
7233                 case "$fastread" in
7234                 yes) dflt=y ;;
7235                 *) dflt=n ;;
7236                 esac
7237                 . ./myread
7238                 case "$ans" in
7239                 y*) cont='' ;;
7240                 *) echo " " ;;
7241                 esac
7242                 ;;
7243         esac
7244 done
7245
7246 $cat <<EOM
7247
7248 If you or somebody else will be maintaining perl at your site, please
7249 fill in the correct e-mail address here so that they may be contacted
7250 if necessary. Currently, the "perlbug" program included with perl
7251 will send mail to this address in addition to perlbug@perl.org. You may
7252 enter "none" for no administrator.
7253
7254 EOM
7255 case "$perladmin" in
7256 '') dflt="$cf_email";;
7257 *) dflt="$perladmin";;
7258 esac
7259 rp='Perl administrator e-mail address'
7260 . ./myread
7261 perladmin="$ans"
7262
7263 : figure out how to guarantee perl startup
7264 case "$startperl" in
7265 '')
7266         case "$sharpbang" in
7267         *!)
7268                 $cat <<EOH
7269
7270 I can use the #! construct to start perl on your system. This will
7271 make startup of perl scripts faster, but may cause problems if you
7272 want to share those scripts and perl is not in a standard place
7273 ($binexp/perl) on all your platforms. The alternative is to force
7274 a shell by starting the script with a single ':' character.
7275
7276 EOH
7277                 dflt="$binexp/perl"
7278                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7279                 . ./myread
7280                 case "$ans" in
7281                 none)   startperl=": # use perl";;
7282                 *)      startperl="#!$ans"
7283                         if $test 30 -lt `echo "$ans" | wc -c`; then
7284                                 $cat >&4 <<EOM
7285
7286 WARNING:  Some systems limit the #! command to 32 characters.
7287 If you experience difficulty running Perl scripts with #!, try
7288 installing Perl in a directory with a shorter pathname.
7289
7290 EOM
7291                         fi ;;
7292                 esac
7293                 ;;
7294         *) startperl=": # use perl"
7295                 ;;
7296         esac
7297         ;;
7298 esac
7299 echo "I'll use $startperl to start perl scripts."
7300
7301 : figure best path for perl in scripts
7302 case "$perlpath" in
7303 '')
7304         perlpath="$binexp/perl"
7305         case "$startperl" in
7306         *!*) ;;
7307         *)
7308                 $cat <<EOH
7309
7310 I will use the "eval 'exec'" idiom to start Perl on your system.
7311 I can use the full path of your Perl binary for this purpose, but
7312 doing so may cause problems if you want to share those scripts and
7313 Perl is not always in a standard place ($binexp/perl).
7314
7315 EOH
7316                 dflt="$binexp/perl"
7317                 rp="What path shall I use in \"eval 'exec'\"?"
7318                 . ./myread
7319                 perlpath="$ans"
7320                 ;;
7321         esac
7322         ;;
7323 esac
7324 case "$startperl" in
7325 *!*)    ;;
7326 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7327 esac
7328
7329 : determine where public executable scripts go
7330 set scriptdir scriptdir
7331 eval $prefixit
7332 case "$scriptdir" in
7333 '')
7334         dflt="$bin"
7335         : guess some guesses
7336         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7337         $test -d /usr/share/bin     && dflt=/usr/share/bin
7338         $test -d /usr/local/script  && dflt=/usr/local/script
7339         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7340         $test -d $prefixexp/script  && dflt=$prefixexp/script
7341         set dflt
7342         eval $prefixup
7343         ;;
7344 *)  dflt="$scriptdir"
7345         ;;
7346 esac
7347 $cat <<EOM
7348  
7349 Some installations have a separate directory just for executable scripts so
7350 that they can mount it across multiple architectures but keep the scripts in
7351 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7352 Or you might just lump your scripts in with all your other executables.
7353  
7354 EOM
7355 fn=d~
7356 rp='Where do you keep publicly executable scripts?'
7357 . ./getfile
7358 if $test "X$ansexp" != "X$scriptdirexp"; then
7359         installscript=''
7360 fi
7361 scriptdir="$ans"
7362 scriptdirexp="$ansexp"
7363 : Change installation prefix, if necessary.
7364 if $test X"$prefix" != X"$installprefix"; then
7365         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7366 else
7367         installscript="$scriptdirexp"
7368 fi
7369
7370 : determine where add-on public executables go
7371 case "$sitebin" in
7372 '')     dflt=$siteprefix/bin ;;
7373 *)      dflt=$sitebin ;;
7374 esac
7375 fn=d~
7376 rp='Pathname where the add-on public executables should be installed?'
7377 . ./getfile
7378 sitebin="$ans"
7379 sitebinexp="$ansexp"
7380 : Change installation prefix, if necessary.
7381 if $test X"$prefix" != X"$installprefix"; then
7382         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7383 else
7384         installsitebin="$sitebinexp"
7385 fi
7386
7387 case "$useperlio" in
7388 $define|true|[yY]*)     dflt='y';;
7389 *) dflt='n';;
7390 esac
7391 cat <<EOM
7392
7393 Previous version of $package used the standard IO mechanisms as defined
7394 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7395 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7396 the default.  This abstraction layer can use AT&T's sfio (if you already
7397 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7398 problems with some extension modules.  Using PerlIO with stdio is safe,
7399 but it is slower than plain stdio and therefore is not the default.
7400
7401 If this doesn't make any sense to you, just accept the default '$dflt'.
7402 EOM
7403 rp='Use the experimental PerlIO abstraction layer?'
7404 . ./myread
7405 case "$ans" in
7406 y|Y) 
7407         val="$define"
7408         ;;     
7409 *)      
7410         echo "Ok, doing things the stdio way"
7411         val="$undef"
7412         ;;
7413 esac
7414 set useperlio
7415 eval $setvar 
7416
7417 case "$vendorprefix" in
7418 '')     d_vendorbin="$undef"
7419         vendorbin=''
7420         vendorbinexp=''
7421         ;;
7422 *)      d_vendorbin="$define"
7423         : determine where vendor-supplied executables go.
7424         case "$vendorbin" in
7425         '') dflt=$vendorprefix/bin ;;
7426         *)      dflt="$vendorbin" ;;
7427         esac
7428         fn=d~+
7429         rp='Pathname for the vendor-supplied executables directory?'
7430         . ./getfile
7431         vendorbin="$ans"
7432         vendorbinexp="$ansexp"
7433         ;;
7434 esac
7435 : Change installation prefix, if necessary.
7436 if $test X"$prefix" != X"$installprefix"; then
7437         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7438 else
7439         installvendorbin="$vendorbinexp"
7440 fi
7441
7442 : see if qgcvt exists
7443 set qgcvt d_qgcvt
7444 eval $inlibc
7445
7446 echo " "
7447
7448 if $test X"$d_longdbl" = X"$define"; then
7449
7450 echo "Checking how to print long doubles..." >&4
7451
7452 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7453         $cat >try.c <<'EOCP'
7454 #include <sys/types.h>
7455 #include <stdio.h>
7456 int main() {
7457   double d = 123.456;
7458   printf("%.3f\n", d);
7459 }
7460 EOCP
7461         set try
7462         if eval $compile; then
7463                 yyy=`./try$exe_ext`
7464                 case "$yyy" in
7465                 123.456)
7466                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7467                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7468                         echo "We will use %f."
7469                         ;;
7470                 esac
7471         fi
7472 fi
7473
7474 if $test X"$sPRIfldbl" = X; then
7475         $cat >try.c <<'EOCP'
7476 #include <sys/types.h>
7477 #include <stdio.h>
7478 int main() {
7479   long double d = 123.456;
7480   printf("%.3llf\n", d);
7481 }
7482 EOCP
7483         set try
7484         if eval $compile; then
7485                 yyy=`./try$exe_ext`
7486                 case "$yyy" in
7487                 123.456)
7488                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7489                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7490                         echo "We will use %llf."
7491                         ;;
7492                 esac
7493         fi
7494 fi
7495
7496 if $test X"$sPRIfldbl" = X; then
7497         $cat >try.c <<'EOCP'
7498 #include <sys/types.h>
7499 #include <stdio.h>
7500 int main() {
7501   long double d = 123.456;
7502   printf("%.3Lf\n", d);
7503 }
7504 EOCP
7505         set try
7506         if eval $compile; then
7507                 yyy=`./try$exe_ext`
7508                 case "$yyy" in
7509                 123.456)
7510                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7511                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7512                         echo "We will use %Lf."
7513                         ;;
7514                 esac
7515         fi
7516 fi
7517
7518 if $test X"$sPRIfldbl" = X; then
7519         $cat >try.c <<'EOCP'
7520 #include <sys/types.h>
7521 #include <stdio.h>
7522 int main() {
7523   long double d = 123.456;
7524   printf("%.3lf\n", d);
7525 }
7526 EOCP
7527         set try
7528         if eval $compile; then
7529                 yyy=`./try$exe_ext`
7530                 case "$yyy" in
7531                 123.456)
7532                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7533                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7534                         echo "We will use %lf."
7535                         ;;
7536                 esac
7537         fi
7538 fi
7539
7540 if $test X"$sPRIfldbl" = X; then
7541         echo "Cannot figure out how to print long doubles." >&4
7542 else
7543         sSCNfldbl=$sPRIfldbl    # expect consistency
7544 fi
7545
7546 $rm -f try try.*
7547
7548 fi # d_longdbl
7549
7550 case "$sPRIfldbl" in
7551 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7552         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7553         d_SCNfldbl="$undef";
7554         ;;
7555 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7556         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7557         d_SCNfldbl="$define";
7558         ;;
7559 esac
7560
7561 : Check how to convert floats to strings.
7562 echo " "
7563 echo "Checking for an efficient way to convert floats to strings."
7564 echo " " > try.c
7565 case "$uselongdouble" in
7566 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7567 esac
7568 case "$d_longdbl" in
7569 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7570 esac
7571 case "$d_PRIgldbl" in
7572 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7573 esac
7574 $cat >>try.c <<EOP
7575 #ifdef TRY_gconvert
7576 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7577 char *myname = "gconvert";
7578 #endif
7579 #ifdef TRY_gcvt
7580 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7581 char *myname = "gcvt";
7582 #endif
7583 #ifdef TRY_qgcvt
7584 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7585 char *myname = "qgcvt";
7586 #define DOUBLETYPE long double
7587 #endif
7588 #ifdef TRY_sprintf
7589 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7590 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7591 #else
7592 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7593 #endif
7594 char *myname = "sprintf";
7595 #endif
7596
7597 #ifndef DOUBLETYPE
7598 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7599 #define DOUBLETYPE long double
7600 #else
7601 #define DOUBLETYPE double
7602 #endif
7603 #endif
7604
7605 #include <stdio.h>
7606
7607 #define I_STDLIB $i_stdlib
7608 #ifdef I_STDLIB
7609 #include <stdlib.h>
7610 #endif
7611
7612 int
7613 checkit(expect, got)
7614 char *expect;
7615 char *got;
7616 {
7617     if (strcmp(expect, got)) {
7618                 printf("%s oddity:  Expected %s, got %s\n",
7619                         myname, expect, got);
7620                 exit(1);
7621         }
7622 }
7623
7624 int main()
7625
7626         char buf[64]; 
7627         buf[63] = '\0';
7628
7629         /* This must be 1st test on (which?) platform */
7630         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7631         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7632         checkit("0.1", buf);
7633
7634         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7635         checkit("1", buf);
7636
7637         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7638         checkit("1.1", buf);
7639
7640         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7641         checkit("1.01", buf);
7642
7643         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7644         checkit("1.001", buf);
7645
7646         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7647         checkit("1.0001", buf);
7648
7649         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7650         checkit("1.00001", buf);
7651
7652         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7653         checkit("1.000001", buf);
7654
7655         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7656         checkit("0", buf);
7657
7658         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7659         checkit("-1", buf);
7660
7661         /* Some Linux gcvt's give 1.e+5 here. */
7662         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7663         checkit("100000", buf);
7664         
7665         /* Some Linux gcvt's give -1.e+5 here. */
7666         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7667         checkit("-100000", buf);
7668
7669         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7670         checkit("123.456", buf);
7671
7672         exit(0);
7673 }
7674 EOP
7675 case "$d_Gconvert" in
7676 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7677 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7678 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7679 *) xxx_list='gconvert gcvt sprintf' ;;
7680 esac
7681
7682 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7683 "$define$define$define")
7684     # for long doubles prefer first qgcvt, then sprintf
7685     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7686     xxx_list="sprintf $xxx_list"
7687     case "$d_qgcvt" in
7688     "$define") xxx_list="qgcvt $xxx_list" ;;
7689     esac
7690     ;;
7691 esac
7692
7693 for xxx_convert in $xxx_list; do
7694         echo "Trying $xxx_convert..."
7695         $rm -f try try$_o
7696         set try -DTRY_$xxx_convert
7697         if eval $compile; then
7698                 echo "$xxx_convert() found." >&4
7699                 if ./try; then
7700                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7701                         break;
7702                 else
7703                         echo "...But $xxx_convert didn't work as I expected."
7704                 fi
7705         else
7706                 echo "$xxx_convert NOT found." >&4
7707         fi
7708 done
7709         
7710 case "$xxx_convert" in
7711 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7712 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7713 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7714 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7715    "$define$define$define")
7716       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7717    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7718    esac
7719    ;;  
7720 esac
7721
7722 : Initialize h_fcntl
7723 h_fcntl=false
7724
7725 : Initialize h_sysfile
7726 h_sysfile=false
7727
7728 : access call always available on UNIX
7729 set access d_access
7730 eval $inlibc
7731
7732 : locate the flags for 'access()'
7733 case "$d_access" in
7734 "$define")
7735         echo " "
7736         $cat >access.c <<'EOCP'
7737 #include <sys/types.h>
7738 #ifdef I_FCNTL
7739 #include <fcntl.h>
7740 #endif
7741 #ifdef I_SYS_FILE
7742 #include <sys/file.h>
7743 #endif
7744 #ifdef I_UNISTD
7745 #include <unistd.h>
7746 #endif
7747 int main() {
7748         exit(R_OK);
7749 }
7750 EOCP
7751         : check sys/file.h first, no particular reason here
7752         if $test `./findhdr sys/file.h` && \
7753                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7754                 h_sysfile=true;
7755                 echo "<sys/file.h> defines the *_OK access constants." >&4
7756         elif $test `./findhdr fcntl.h` && \
7757                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7758                 h_fcntl=true;
7759                 echo "<fcntl.h> defines the *_OK access constants." >&4
7760         elif $test `./findhdr unistd.h` && \
7761                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7762                 echo "<unistd.h> defines the *_OK access constants." >&4
7763         else
7764                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7765         fi
7766         ;;
7767 esac
7768 $rm -f access*
7769
7770 : see if accessx exists
7771 set accessx d_accessx
7772 eval $inlibc
7773
7774 : see if alarm exists
7775 set alarm d_alarm
7776 eval $inlibc
7777
7778 : see if atolf exists
7779 set atolf d_atolf
7780 eval $inlibc
7781
7782 : see if atoll exists
7783 set atoll d_atoll
7784 eval $inlibc
7785
7786 : Look for GNU-cc style attribute checking
7787 echo " "
7788 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7789 $cat >attrib.c <<'EOCP'
7790 #include <stdio.h>
7791 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7792 EOCP
7793 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7794         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7795                 echo "Your C compiler doesn't fully support __attribute__."
7796                 val="$undef"
7797         else
7798                 echo "Your C compiler supports __attribute__."
7799                 val="$define"
7800         fi
7801 else
7802         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7803         val="$undef"
7804 fi
7805 set d_attribut
7806 eval $setvar
7807 $rm -f attrib*
7808
7809 : see if bcmp exists
7810 set bcmp d_bcmp
7811 eval $inlibc
7812
7813 : see if bcopy exists
7814 set bcopy d_bcopy
7815 eval $inlibc
7816
7817 : see if this is a unistd.h system
7818 set unistd.h i_unistd
7819 eval $inhdr
7820
7821 : see if getpgrp exists
7822 set getpgrp d_getpgrp
7823 eval $inlibc
7824
7825 case "$d_getpgrp" in
7826 "$define")
7827         echo " "
7828         echo "Checking to see which flavor of getpgrp is in use..."
7829         $cat >set.c <<EOP
7830 #$i_unistd I_UNISTD
7831 #include <sys/types.h>
7832 #ifdef I_UNISTD
7833 #  include <unistd.h>
7834 #endif
7835 int main()
7836 {
7837         if (getuid() == 0) {
7838                 printf("(I see you are running Configure as super-user...)\n");
7839                 setuid(1);
7840         }
7841 #ifdef TRY_BSD_PGRP
7842         if (getpgrp(1) == 0)
7843                 exit(0);
7844 #else
7845         if (getpgrp() > 0)
7846                 exit(0);
7847 #endif
7848         exit(1);
7849 }
7850 EOP
7851         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7852                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7853                 val="$define"
7854         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7855                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7856                 val="$undef"
7857         else
7858                 echo "I can't seem to compile and run the test program."
7859                 if ./usg; then
7860                         xxx="a USG one, i.e. you use getpgrp()."
7861                 else
7862                         # SVR4 systems can appear rather BSD-ish.
7863                         case "$i_unistd" in
7864                         $undef)
7865                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7866                                 val="$define"
7867                                 ;;
7868                         $define)
7869                                 xxx="probably a USG one, i.e. you use getpgrp()."
7870                                 val="$undef"
7871                                 ;;
7872                         esac
7873                 fi
7874                 echo "Assuming your getpgrp is $xxx" >&4
7875         fi
7876         ;;
7877 *) val="$undef";;
7878 esac
7879 set d_bsdgetpgrp
7880 eval $setvar
7881 $rm -f set set.c
7882
7883 : see if setpgrp exists
7884 set setpgrp d_setpgrp
7885 eval $inlibc
7886
7887 case "$d_setpgrp" in
7888 "$define")
7889         echo " "
7890         echo "Checking to see which flavor of setpgrp is in use..."
7891         $cat >set.c <<EOP
7892 #$i_unistd I_UNISTD
7893 #include <sys/types.h>
7894 #ifdef I_UNISTD
7895 #  include <unistd.h>
7896 #endif
7897 int main()
7898 {
7899         if (getuid() == 0) {
7900                 printf("(I see you are running Configure as super-user...)\n");
7901                 setuid(1);
7902         }
7903 #ifdef TRY_BSD_PGRP
7904         if (-1 == setpgrp(1, 1))
7905                 exit(0);
7906 #else
7907         if (setpgrp() != -1)
7908                 exit(0);
7909 #endif
7910         exit(1);
7911 }
7912 EOP
7913         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7914                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7915                 val="$define"
7916         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7917                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7918                 val="$undef"
7919         else
7920                 echo "(I can't seem to compile and run the test program.)"
7921                 if ./usg; then
7922                         xxx="a USG one, i.e. you use setpgrp()."
7923                 else
7924                         # SVR4 systems can appear rather BSD-ish.
7925                         case "$i_unistd" in
7926                         $undef)
7927                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7928                                 val="$define"
7929                                 ;;
7930                         $define)
7931                                 xxx="probably a USG one, i.e. you use setpgrp()."
7932                                 val="$undef"
7933                                 ;;
7934                         esac
7935                 fi
7936                 echo "Assuming your setpgrp is $xxx" >&4
7937         fi
7938         ;;
7939 *) val="$undef";;
7940 esac
7941 set d_bsdsetpgrp
7942 eval $setvar
7943 $rm -f set set.c
7944 : see if bzero exists
7945 set bzero d_bzero
7946 eval $inlibc
7947
7948 : see if signal is declared as pointer to function returning int or void
7949 echo " "
7950 xxx=`./findhdr signal.h`
7951 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7952 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7953         echo "You have int (*signal())() instead of void." >&4
7954         val="$undef"
7955 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7956         echo "You have void (*signal())()." >&4
7957         val="$define"
7958 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7959         echo "You have int (*signal())() instead of void." >&4
7960         val="$undef"
7961 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7962         echo "You have void (*signal())()." >&4
7963         val="$define"
7964 else
7965         case "$d_voidsig" in
7966         '')
7967         echo "I can't determine whether signal handler returns void or int..." >&4
7968                 dflt=void
7969                 rp="What type does your signal handler return?"
7970                 . ./myread
7971                 case "$ans" in
7972                 v*) val="$define";;
7973                 *) val="$undef";;
7974                 esac;;
7975         "$define")
7976                 echo "As you already told me, signal handler returns void." >&4
7977                 val="$define"
7978                 ;;
7979         *)      echo "As you already told me, signal handler returns int." >&4
7980                 val="$undef"
7981                 ;;
7982         esac
7983 fi
7984 set d_voidsig
7985 eval $setvar
7986 case "$d_voidsig" in
7987 "$define") signal_t="void";;
7988 *) signal_t="int";;
7989 esac
7990 $rm -f $$.tmp
7991
7992 : check for ability to cast large floats to 32-bit ints.
7993 echo " "
7994 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7995 if $test "$intsize" -ge 4; then
7996         xxx=int
7997 else
7998         xxx=long
7999 fi
8000 $cat >try.c <<EOCP
8001 #include <stdio.h>
8002 #include <sys/types.h>
8003 #include <signal.h>
8004 $signal_t blech(s) int s; { exit(3); }
8005 int main()
8006 {
8007         $xxx i32;
8008         double f, g;
8009         int result = 0;
8010         char str[16];
8011         signal(SIGFPE, blech);
8012
8013         /* Don't let compiler optimize the test away.  Store the number 
8014            in a writable string for gcc to pass to sscanf under HP/UX.
8015         */
8016         sprintf(str, "2147483647");
8017         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8018         g = 10 * f;
8019         i32  = ($xxx) g;
8020
8021         /* x86 processors will probably give 0x8000 0000, which is a
8022        sign change.  We don't want that.  We want to mimic SPARC
8023            behavior here, which is to preserve the sign and give
8024            back 0x7fff ffff.
8025         */
8026         if (i32 != ($xxx) f)
8027                 result |= 1;
8028         exit(result);
8029 }
8030 EOCP
8031 set try
8032 if eval $compile_ok; then
8033         ./try
8034         yyy=$?
8035 else
8036         echo "(I can't seem to compile the test program--assuming it can't)"
8037         yyy=1
8038 fi
8039 case "$yyy" in
8040 0)      val="$define"
8041         echo "Yup, it can."
8042         ;;
8043 *)      val="$undef"
8044         echo "Nope, it can't."
8045         ;;
8046 esac
8047 set d_casti32
8048 eval $setvar
8049 $rm -f try try.*
8050
8051 : check for ability to cast negative floats to unsigned
8052 echo " "
8053 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8054 $cat >try.c <<EOCP
8055 #include <stdio.h>
8056 #include <sys/types.h>
8057 #include <signal.h>
8058 $signal_t blech(s) int s; { exit(7); }
8059 $signal_t blech_in_list(s) int s; { exit(4); }
8060 unsigned long dummy_long(p) unsigned long p; { return p; }
8061 unsigned int dummy_int(p) unsigned int p; { return p; }
8062 unsigned short dummy_short(p) unsigned short p; { return p; }
8063 int main()
8064 {
8065         double f;
8066         unsigned long along;
8067         unsigned int aint;
8068         unsigned short ashort;
8069         int result = 0;
8070         char str[16];
8071         
8072         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8073            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8074            optimized the whole file away
8075         */
8076         /* Store the number in a writable string for gcc to pass to 
8077            sscanf under HP/UX.
8078         */
8079         sprintf(str, "-123");
8080         sscanf(str, "%lf", &f);  /* f = -123.; */
8081
8082         signal(SIGFPE, blech);
8083         along = (unsigned long)f;
8084         aint = (unsigned int)f;
8085         ashort = (unsigned short)f;
8086         if (along != (unsigned long)-123)
8087                 result |= 1;
8088         if (aint != (unsigned int)-123)
8089                 result |= 1;
8090         if (ashort != (unsigned short)-123)
8091                 result |= 1;
8092         sprintf(str, "1073741824.");
8093         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8094         f = f + f;
8095         along = 0;
8096         along = (unsigned long)f;
8097         if (along != 0x80000000)
8098                 result |= 2;
8099         f -= 1.;
8100         along = 0;
8101         along = (unsigned long)f;
8102         if (along != 0x7fffffff)
8103                 result |= 1;
8104         f += 2.;
8105         along = 0;
8106         along = (unsigned long)f;
8107         if (along != 0x80000001)
8108                 result |= 2;
8109         if (result)
8110                 exit(result);
8111         signal(SIGFPE, blech_in_list);
8112         sprintf(str, "123.");
8113         sscanf(str, "%lf", &f);  /* f = 123.; */
8114         along = dummy_long((unsigned long)f);
8115         aint = dummy_int((unsigned int)f);
8116         ashort = dummy_short((unsigned short)f);
8117         if (along != (unsigned long)123)
8118                 result |= 4;
8119         if (aint != (unsigned int)123)
8120                 result |= 4;
8121         if (ashort != (unsigned short)123)
8122                 result |= 4;
8123         exit(result);
8124
8125 }
8126 EOCP
8127 set try
8128 if eval $compile_ok; then
8129         ./try
8130         castflags=$?
8131 else
8132         echo "(I can't seem to compile the test program--assuming it can't)"
8133         castflags=7
8134 fi
8135 case "$castflags" in
8136 0)      val="$define"
8137         echo "Yup, it can."
8138         ;;
8139 *)      val="$undef"
8140         echo "Nope, it can't."
8141         ;;
8142 esac
8143 set d_castneg
8144 eval $setvar
8145 $rm -f try.*
8146
8147 : see if vprintf exists
8148 echo " "
8149 if set vprintf val -f d_vprintf; eval $csym; $val; then
8150         echo 'vprintf() found.' >&4
8151         val="$define"
8152         $cat >vprintf.c <<'EOF'
8153 #include <varargs.h>
8154
8155 int main() { xxx("foo"); }
8156
8157 xxx(va_alist)
8158 va_dcl
8159 {
8160         va_list args;
8161         char buf[10];
8162
8163         va_start(args);
8164         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8165 }
8166 EOF
8167         set vprintf
8168         if eval $compile && ./vprintf; then
8169                 echo "Your vsprintf() returns (int)." >&4
8170                 val2="$undef"
8171         else
8172                 echo "Your vsprintf() returns (char*)." >&4
8173                 val2="$define"
8174         fi
8175 else
8176         echo 'vprintf() NOT found.' >&4
8177                 val="$undef"
8178                 val2="$undef"
8179 fi
8180 set d_vprintf
8181 eval $setvar
8182 val=$val2
8183 set d_charvspr
8184 eval $setvar
8185
8186 : see if chown exists
8187 set chown d_chown
8188 eval $inlibc
8189
8190 : see if chroot exists
8191 set chroot d_chroot
8192 eval $inlibc
8193
8194 : see if chsize exists
8195 set chsize d_chsize
8196 eval $inlibc
8197
8198 : check for const keyword
8199 echo " "
8200 echo 'Checking to see if your C compiler knows about "const"...' >&4
8201 $cat >const.c <<'EOCP'
8202 typedef struct spug { int drokk; } spug;
8203 int main()
8204 {
8205         const char *foo;
8206         const spug y;
8207 }
8208 EOCP
8209 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8210         val="$define"
8211         echo "Yup, it does."
8212 else
8213         val="$undef"
8214         echo "Nope, it doesn't."
8215 fi
8216 set d_const
8217 eval $setvar
8218
8219 : see if crypt exists
8220 echo " "
8221 if set crypt val -f d_crypt; eval $csym; $val; then
8222         echo 'crypt() found.' >&4
8223         val="$define"
8224         cryptlib=''
8225 else
8226         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8227         if $test -z "$cryptlib"; then
8228                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8229         else
8230                 cryptlib=-lcrypt
8231         fi
8232         if $test -z "$cryptlib"; then
8233                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8234         else
8235                 cryptlib=-lcrypt
8236         fi
8237         if $test -z "$cryptlib"; then
8238                 cryptlib=`./loc libcrypt$_a "" $libpth`
8239         else
8240                 cryptlib=-lcrypt
8241         fi
8242         if $test -z "$cryptlib"; then
8243                 echo 'crypt() NOT found.' >&4
8244                 val="$undef"
8245         else
8246                 val="$define"
8247         fi
8248 fi
8249 set d_crypt
8250 eval $setvar
8251
8252 : get csh whereabouts
8253 case "$csh" in
8254 'csh') val="$undef" ;;
8255 *) val="$define" ;;
8256 esac
8257 set d_csh
8258 eval $setvar
8259 : Respect a hint or command line value for full_csh.
8260 case "$full_csh" in
8261 '') full_csh=$csh ;;
8262 esac
8263
8264 : see if cuserid exists
8265 set cuserid d_cuserid
8266 eval $inlibc
8267
8268 : see if this is a limits.h system
8269 set limits.h i_limits
8270 eval $inhdr
8271
8272 : see if this is a float.h system
8273 set float.h i_float
8274 eval $inhdr
8275
8276 : See if number of significant digits in a double precision number is known
8277 echo " "
8278 $cat >dbl_dig.c <<EOM
8279 #$i_limits I_LIMITS
8280 #$i_float I_FLOAT
8281 #ifdef I_LIMITS
8282 #include <limits.h>
8283 #endif
8284 #ifdef I_FLOAT
8285 #include <float.h>
8286 #endif
8287 #ifdef DBL_DIG
8288 printf("Contains DBL_DIG");
8289 #endif
8290 EOM
8291 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8292 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8293         echo "DBL_DIG found." >&4
8294         val="$define"
8295 else
8296         echo "DBL_DIG NOT found." >&4
8297         val="$undef"
8298 fi
8299 $rm -f dbl_dig.?
8300 set d_dbl_dig
8301 eval $setvar
8302
8303 : see if difftime exists
8304 set difftime d_difftime
8305 eval $inlibc
8306
8307 : see if this is a dirent system
8308 echo " "
8309 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8310         val="$define"
8311         echo "<dirent.h> found." >&4
8312 else
8313         val="$undef"
8314         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8315                 echo "<sys/dir.h> found." >&4
8316                 echo " "
8317         else
8318                 xinc=`./findhdr sys/ndir.h`
8319         fi
8320         echo "<dirent.h> NOT found." >&4
8321 fi
8322 set i_dirent
8323 eval $setvar
8324
8325 : Look for type of directory structure.
8326 echo " "
8327 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8328
8329 case "$direntrytype" in
8330 ''|' ')
8331         case "$i_dirent" in
8332         $define) guess1='struct dirent' ;;
8333         *) guess1='struct direct'  ;;
8334         esac
8335         ;;
8336 *)      guess1="$direntrytype"
8337         ;;
8338 esac
8339
8340 case "$guess1" in
8341 'struct dirent') guess2='struct direct' ;;
8342 *) guess2='struct dirent' ;;
8343 esac
8344                 
8345 if $contains "$guess1" try.c >/dev/null 2>&1; then
8346         direntrytype="$guess1"
8347         echo "Your directory entries are $direntrytype." >&4
8348 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8349         direntrytype="$guess2"
8350         echo "Your directory entries seem to be $direntrytype." >&4
8351 else
8352         echo "I don't recognize your system's directory entries." >&4
8353         rp="What type is used for directory entries on this system?"
8354         dflt="$guess1"
8355         . ./myread
8356         direntrytype="$ans"
8357 fi
8358 $rm -f try.c
8359
8360
8361 : see if the directory entry stores field length
8362 echo " "
8363 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8364 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8365         echo "Good, your directory entry keeps length information in d_namlen." >&4
8366         val="$define"
8367 else
8368         echo "Your directory entry does not know about the d_namlen field." >&4
8369         val="$undef"
8370 fi
8371 set d_dirnamlen
8372 eval $setvar
8373 $rm -f try.c
8374
8375 : see if dlerror exists
8376 xxx_runnm="$runnm"
8377 runnm=false
8378 set dlerror d_dlerror
8379 eval $inlibc
8380 runnm="$xxx_runnm"
8381
8382 : see if dlfcn is available
8383 set dlfcn.h i_dlfcn
8384 eval $inhdr
8385
8386 case "$usedl" in
8387 $define|y|true)
8388         $cat << EOM
8389
8390 On a few systems, the dynamically loaded modules that perl generates and uses
8391 will need a different extension than shared libs. The default will probably
8392 be appropriate.
8393
8394 EOM
8395         case "$dlext" in
8396         '')     dflt="$so" ;;
8397         *)      dflt="$dlext" ;;
8398         esac
8399         rp='What is the extension of dynamically loaded modules'
8400         . ./myread
8401         dlext="$ans"
8402         ;;
8403 *)
8404         dlext="none"
8405         ;;
8406 esac
8407
8408 : Check if dlsym need a leading underscore
8409 echo " "
8410 val="$undef"
8411
8412 case "$dlsrc" in
8413 dl_dlopen.xs)
8414         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8415         $cat >dyna.c <<'EOM'
8416 fred () { }
8417 EOM
8418
8419 $cat >fred.c<<EOM
8420
8421 #include <stdio.h>
8422 #$i_dlfcn I_DLFCN
8423 #ifdef I_DLFCN
8424 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8425 #else
8426 #include <sys/types.h>
8427 #include <nlist.h>
8428 #include <link.h>
8429 #endif
8430
8431 extern int fred() ;
8432
8433 int main()
8434 {
8435     void * handle ;
8436     void * symbol ;
8437 #ifndef RTLD_LAZY
8438     int mode = 1 ;
8439 #else
8440     int mode = RTLD_LAZY ;
8441 #endif
8442     handle = dlopen("./dyna.$dlext", mode) ;
8443     if (handle == NULL) {
8444         printf ("1\n") ;
8445         fflush (stdout) ;
8446         exit(0);
8447     }
8448     symbol = dlsym(handle, "fred") ;
8449     if (symbol == NULL) {
8450         /* try putting a leading underscore */
8451         symbol = dlsym(handle, "_fred") ;
8452         if (symbol == NULL) {
8453             printf ("2\n") ;
8454             fflush (stdout) ;
8455             exit(0);
8456         }
8457         printf ("3\n") ;
8458     }
8459     else
8460         printf ("4\n") ;
8461     fflush (stdout) ;
8462     exit(0);
8463 }
8464 EOM
8465         : Call the object file tmp-dyna.o in case dlext=o.
8466         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8467                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8468                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8469                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8470                 xxx=`./fred`
8471                 case $xxx in
8472                 1)      echo "Test program failed using dlopen." >&4
8473                         echo "Perhaps you should not use dynamic loading." >&4;;
8474                 2)      echo "Test program failed using dlsym." >&4
8475                         echo "Perhaps you should not use dynamic loading." >&4;;
8476                 3)      echo "dlsym needs a leading underscore" >&4
8477                         val="$define" ;;
8478                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8479                 esac
8480         else
8481                 echo "I can't compile and run the test program." >&4
8482                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8483         fi
8484         ;;
8485 esac
8486                 
8487 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8488
8489 set d_dlsymun
8490 eval $setvar
8491
8492 hasproto='varname=$1; func=$2; shift; shift;
8493 while $test $# -ge 2; do
8494         case "$1" in
8495         $define) echo "#include <$2>";;
8496         esac ;
8497     shift 2;
8498 done > try.c;
8499 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8500 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8501         echo "$func() prototype found.";
8502         val="$define";
8503 else
8504         echo "$func() prototype NOT found.";
8505         val="$undef";
8506 fi;
8507 set $varname;
8508 eval $setvar;
8509 $rm -f try.c tryout.c'
8510
8511 : see if prototype for drand48 is available
8512 echo " "
8513 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8514 eval $hasproto
8515
8516 : see if dup2 exists
8517 set dup2 d_dup2
8518 eval $inlibc
8519
8520 : see if eaccess exists
8521 set eaccess d_eaccess
8522 eval $inlibc
8523
8524 : see if endgrent exists
8525 set endgrent d_endgrent
8526 eval $inlibc
8527
8528 : see if endhostent exists
8529 set endhostent d_endhent
8530 eval $inlibc
8531
8532 : see if endnetent exists
8533 set endnetent d_endnent
8534 eval $inlibc
8535
8536 : see if endprotoent exists
8537 set endprotoent d_endpent
8538 eval $inlibc
8539
8540 : see if endpwent exists
8541 set endpwent d_endpwent
8542 eval $inlibc
8543
8544 : see if endservent exists
8545 set endservent d_endsent
8546 eval $inlibc
8547
8548 : Locate the flags for 'open()'
8549 echo " "
8550 $cat >open3.c <<'EOCP'
8551 #include <sys/types.h>
8552 #ifdef I_FCNTL
8553 #include <fcntl.h>
8554 #endif
8555 #ifdef I_SYS_FILE
8556 #include <sys/file.h>
8557 #endif
8558 int main() {
8559         if(O_RDONLY);
8560 #ifdef O_TRUNC
8561         exit(0);
8562 #else
8563         exit(1);
8564 #endif
8565 }
8566 EOCP
8567 : check sys/file.h first to get FREAD on Sun
8568 if $test `./findhdr sys/file.h` && \
8569                 set open3 -DI_SYS_FILE && eval $compile; then
8570         h_sysfile=true;
8571         echo "<sys/file.h> defines the O_* constants..." >&4
8572         if ./open3; then
8573                 echo "and you have the 3 argument form of open()." >&4
8574                 val="$define"
8575         else
8576                 echo "but not the 3 argument form of open().  Oh, well." >&4
8577                 val="$undef"
8578         fi
8579 elif $test `./findhdr fcntl.h` && \
8580                 set open3 -DI_FCNTL && eval $compile; then
8581         h_fcntl=true;
8582         echo "<fcntl.h> defines the O_* constants..." >&4
8583         if ./open3; then
8584                 echo "and you have the 3 argument form of open()." >&4
8585                 val="$define"
8586         else
8587                 echo "but not the 3 argument form of open().  Oh, well." >&4
8588                 val="$undef"
8589         fi
8590 else
8591         val="$undef"
8592         echo "I can't find the O_* constant definitions!  You got problems." >&4
8593 fi
8594 set d_open3
8595 eval $setvar
8596 $rm -f open3*
8597
8598 : see which of string.h or strings.h is needed
8599 echo " "
8600 strings=`./findhdr string.h`
8601 if $test "$strings" && $test -r "$strings"; then
8602         echo "Using <string.h> instead of <strings.h>." >&4
8603         val="$define"
8604 else
8605         val="$undef"
8606         strings=`./findhdr strings.h`
8607         if $test "$strings" && $test -r "$strings"; then
8608                 echo "Using <strings.h> instead of <string.h>." >&4
8609         else
8610                 echo "No string header found -- You'll surely have problems." >&4
8611         fi
8612 fi
8613 set i_string
8614 eval $setvar
8615 case "$i_string" in
8616 "$undef") strings=`./findhdr strings.h`;;
8617 *)        strings=`./findhdr string.h`;;
8618 esac
8619
8620 : check for non-blocking I/O stuff
8621 case "$h_sysfile" in
8622 true) echo "#include <sys/file.h>" > head.c;;
8623 *)
8624         case "$h_fcntl" in
8625         true) echo "#include <fcntl.h>" > head.c;;
8626         *) echo "#include <sys/fcntl.h>" > head.c;;
8627         esac
8628         ;;
8629 esac
8630 echo " "
8631 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8632 case "$o_nonblock" in
8633 '')
8634         $cat head.c > try.c
8635         $cat >>try.c <<'EOCP'
8636 #include <stdio.h>
8637 int main() {
8638 #ifdef O_NONBLOCK
8639         printf("O_NONBLOCK\n");
8640         exit(0);
8641 #endif
8642 #ifdef O_NDELAY
8643         printf("O_NDELAY\n");
8644         exit(0);
8645 #endif
8646 #ifdef FNDELAY
8647         printf("FNDELAY\n");
8648         exit(0);
8649 #endif
8650         exit(0);
8651 }
8652 EOCP
8653         set try
8654         if eval $compile_ok; then
8655                 o_nonblock=`./try`
8656                 case "$o_nonblock" in
8657                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8658                 *) echo "Seems like we can use $o_nonblock.";;
8659                 esac
8660         else
8661                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8662         fi
8663         ;;
8664 *) echo "Using $hint value $o_nonblock.";;
8665 esac
8666 $rm -f try try.* .out core
8667
8668 echo " "
8669 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8670 case "$eagain" in
8671 '')
8672         $cat head.c > try.c
8673         $cat >>try.c <<EOCP
8674 #include <errno.h>
8675 #include <sys/types.h>
8676 #include <signal.h>
8677 #include <stdio.h> 
8678 #define MY_O_NONBLOCK $o_nonblock
8679 #ifndef errno  /* XXX need better Configure test */
8680 extern int errno;
8681 #endif
8682 #$i_unistd I_UNISTD
8683 #ifdef I_UNISTD
8684 #include <unistd.h>
8685 #endif
8686 #$i_string I_STRING
8687 #ifdef I_STRING
8688 #include <string.h>
8689 #else
8690 #include <strings.h>
8691 #endif
8692 $signal_t blech(x) int x; { exit(3); }
8693 EOCP
8694         $cat >> try.c <<'EOCP'
8695 int main()
8696 {
8697         int pd[2];
8698         int pu[2];
8699         char buf[1];
8700         char string[100];
8701
8702         pipe(pd);       /* Down: child -> parent */
8703         pipe(pu);       /* Up: parent -> child */
8704         if (0 != fork()) {
8705                 int ret;
8706                 close(pd[1]);   /* Parent reads from pd[0] */
8707                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8708                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8709                         exit(1);
8710                 signal(SIGALRM, blech);
8711                 alarm(5);
8712                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8713                         exit(2);
8714                 sprintf(string, "%d\n", ret);
8715                 write(2, string, strlen(string));
8716                 alarm(0);
8717 #ifdef EAGAIN
8718                 if (errno == EAGAIN) {
8719                         printf("EAGAIN\n");
8720                         goto ok;
8721                 }
8722 #endif
8723 #ifdef EWOULDBLOCK
8724                 if (errno == EWOULDBLOCK)
8725                         printf("EWOULDBLOCK\n");
8726 #endif
8727         ok:
8728                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8729                 sleep(2);                               /* Give it time to close our pipe */
8730                 alarm(5);
8731                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8732                 alarm(0);
8733                 sprintf(string, "%d\n", ret);
8734                 write(3, string, strlen(string));
8735                 exit(0);
8736         }
8737
8738         close(pd[0]);                   /* We write to pd[1] */
8739         close(pu[1]);                   /* We read from pu[0] */
8740         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8741         close(pd[1]);                   /* Pipe pd is now fully closed! */
8742         exit(0);                                /* Bye bye, thank you for playing! */
8743 }
8744 EOCP
8745         set try
8746         if eval $compile_ok; then
8747                 echo "$startsh" >mtry
8748                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8749                 chmod +x mtry
8750                 ./mtry >/dev/null 2>&1
8751                 case $? in
8752                 0) eagain=`$cat try.out`;;
8753                 1) echo "Could not perform non-blocking setting!";;
8754                 2) echo "I did a successful read() for something that was not there!";;
8755                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8756                 *) echo "Something terribly wrong happened during testing.";;
8757                 esac
8758                 rd_nodata=`$cat try.ret`
8759                 echo "A read() system call with no data present returns $rd_nodata."
8760                 case "$rd_nodata" in
8761                 0|-1) ;;
8762                 *)
8763                         echo "(That's peculiar, fixing that to be -1.)"
8764                         rd_nodata=-1
8765                         ;;
8766                 esac
8767                 case "$eagain" in
8768                 '')
8769                         echo "Forcing errno EAGAIN on read() with no data available."
8770                         eagain=EAGAIN
8771                         ;;
8772                 *)
8773                         echo "Your read() sets errno to $eagain when no data is available."
8774                         ;;
8775                 esac
8776                 status=`$cat try.err`
8777                 case "$status" in
8778                 0) echo "And it correctly returns 0 to signal EOF.";;
8779                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8780                 *) echo "However, your read() returns '$status' on EOF??";;
8781                 esac
8782                 val="$define"
8783                 if test "$status" = "$rd_nodata"; then
8784                         echo "WARNING: you can't distinguish between EOF and no data!"
8785                         val="$undef"
8786                 fi
8787         else
8788                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8789                 eagain=EAGAIN
8790         fi
8791         set d_eofnblk
8792         eval $setvar
8793         ;;
8794 *)
8795         echo "Using $hint value $eagain."
8796         echo "Your read() returns $rd_nodata when no data is present."
8797         case "$d_eofnblk" in
8798         "$define") echo "And you can see EOF because read() returns 0.";;
8799         "$undef") echo "But you can't see EOF status from read() returned value.";;
8800         *)
8801                 echo "(Assuming you can't see EOF status from read anyway.)"
8802                 d_eofnblk=$undef
8803                 ;;
8804         esac
8805         ;;
8806 esac
8807 $rm -f try try.* .out core head.c mtry
8808
8809 : see if fchmod exists
8810 set fchmod d_fchmod
8811 eval $inlibc
8812
8813 : see if fchown exists
8814 set fchown d_fchown
8815 eval $inlibc
8816
8817 : see if this is an fcntl system
8818 set fcntl d_fcntl
8819 eval $inlibc
8820
8821 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8822 while $test $# -ge 2; do
8823         case "$1" in
8824         $define) echo "#include <$2>";;
8825         esac ;
8826     shift 2;
8827 done > try.c;
8828 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8829 set try;
8830 if eval $compile; then
8831         val="$define";
8832 else
8833         val="$undef";
8834 fi;
8835 set $varname;
8836 eval $setvar;
8837 $rm -f try.c try.o'
8838
8839 socketlib=''
8840 sockethdr=''
8841 : see whether socket exists
8842 echo " "
8843 $echo $n "Hmm... $c" >&4
8844 if set socket val -f d_socket; eval $csym; $val; then
8845         echo "Looks like you have Berkeley networking support." >&4
8846         d_socket="$define"
8847         if set setsockopt val -f; eval $csym; $val; then
8848                 d_oldsock="$undef"
8849         else
8850                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8851                 d_oldsock="$define"
8852         fi
8853 else
8854         if $contains socklib libc.list >/dev/null 2>&1; then
8855                 echo "Looks like you have Berkeley networking support." >&4
8856                 d_socket="$define"
8857                 : we will have to assume that it supports the 4.2 BSD interface
8858                 d_oldsock="$undef"
8859         else
8860                 echo "You don't have Berkeley networking in libc$_a..." >&4
8861                 if test "X$d_socket" = "X$define"; then
8862                    echo "...but you seem to believe that you have sockets." >&4
8863                 else
8864                         for net in net socket
8865                         do
8866                                 if test -f /usr/lib/lib$net$_a; then
8867                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8868                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8869                                         if $contains socket libc.list >/dev/null 2>&1; then
8870                                                 d_socket="$define"
8871                                                 socketlib="-l$net"
8872                                                 case "$net" in
8873                                                 net)
8874                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8875                                                         sockethdr="-I/usr/netinclude"
8876                                                         ;;
8877                                                 esac
8878                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8879                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8880                                                         d_oldsock="$undef"
8881                                                 else
8882                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8883                                                         d_oldsock="$define"
8884                                                 fi
8885                                                 break
8886                                         fi
8887                                 fi
8888                         done
8889                         if test "X$d_socket" != "X$define"; then
8890                            echo "or anywhere else I see." >&4
8891                            d_socket="$undef"
8892                            d_oldsock="$undef"
8893                         fi
8894                 fi
8895         fi
8896 fi
8897
8898 : see if socketpair exists
8899 set socketpair d_sockpair
8900 eval $inlibc
8901
8902
8903 echo " "
8904 echo "Checking the availability of certain socket constants..." >& 4
8905 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8906         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8907         $cat >try.c <<EOF
8908 #include <sys/types.h>
8909 #include <sys/socket.h>
8910 int main() {
8911     int i = $ENUM;
8912 }
8913 EOF
8914         val="$undef"
8915         set try; if eval $compile; then
8916                 val="$define"
8917         fi
8918         set d_${enum}; eval $setvar
8919         $rm -f try.c try
8920 done
8921
8922 : see if sys/select.h has to be included
8923 set sys/select.h i_sysselct
8924 eval $inhdr
8925
8926 : see if we should include time.h, sys/time.h, or both
8927 echo " "
8928 if test "X$timeincl" = X; then
8929         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8930         $echo $n "I'm now running the test program...$c"
8931         $cat >try.c <<'EOCP'
8932 #include <sys/types.h>
8933 #ifdef I_TIME
8934 #include <time.h>
8935 #endif
8936 #ifdef I_SYSTIME
8937 #ifdef SYSTIMEKERNEL
8938 #define KERNEL
8939 #endif
8940 #include <sys/time.h>
8941 #endif
8942 #ifdef I_SYSSELECT
8943 #include <sys/select.h>
8944 #endif
8945 int main()
8946 {
8947         struct tm foo;
8948 #ifdef S_TIMEVAL
8949         struct timeval bar;
8950 #endif
8951 #ifdef S_TIMEZONE
8952         struct timezone tzp;
8953 #endif
8954         if (foo.tm_sec == foo.tm_sec)
8955                 exit(0);
8956 #ifdef S_TIMEVAL
8957         if (bar.tv_sec == bar.tv_sec)
8958                 exit(0);
8959 #endif
8960         exit(1);
8961 }
8962 EOCP
8963         flags=''
8964         for s_timezone in '-DS_TIMEZONE' ''; do
8965         sysselect=''
8966         for s_timeval in '-DS_TIMEVAL' ''; do
8967         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8968         for i_time in '' '-DI_TIME'; do
8969         for i_systime in '-DI_SYSTIME' ''; do
8970                 case "$flags" in
8971                 '') $echo $n ".$c"
8972                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8973                         if eval $compile; then
8974                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8975                                 shift
8976                                 flags="$*"
8977                                 echo " "
8978                                 $echo $n "Succeeded with $flags$c"
8979                         fi
8980                         ;;
8981                 esac
8982         done
8983         done
8984         done
8985         done
8986         done
8987         timeincl=''
8988         echo " "
8989         case "$flags" in
8990         *SYSTIMEKERNEL*) i_systimek="$define"
8991                 timeincl=`./findhdr sys/time.h`
8992                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8993         *) i_systimek="$undef";;
8994         esac
8995         case "$flags" in
8996         *I_TIME*) i_time="$define"
8997                 timeincl=`./findhdr time.h`" $timeincl"
8998                 echo "We'll include <time.h>." >&4;;
8999         *) i_time="$undef";;
9000         esac
9001         case "$flags" in
9002         *I_SYSTIME*) i_systime="$define"
9003                 timeincl=`./findhdr sys/time.h`" $timeincl"
9004                 echo "We'll include <sys/time.h>." >&4;;
9005         *) i_systime="$undef";;
9006         esac
9007         $rm -f try.c try
9008 fi
9009
9010 : check for fd_set items
9011 $cat <<EOM
9012
9013 Checking to see how well your C compiler handles fd_set and friends ...
9014 EOM
9015 $cat >fd_set.c <<EOCP
9016 #$i_systime I_SYS_TIME
9017 #$i_sysselct I_SYS_SELECT
9018 #$d_socket HAS_SOCKET
9019 #include <sys/types.h>
9020 #ifdef HAS_SOCKET
9021 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9022 #endif
9023 #ifdef I_SYS_TIME
9024 #include <sys/time.h>
9025 #endif
9026 #ifdef I_SYS_SELECT
9027 #include <sys/select.h>
9028 #endif
9029 int main() {
9030         fd_set fds;
9031
9032 #ifdef TRYBITS
9033         if(fds.fds_bits);
9034 #endif
9035
9036 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9037         exit(0);
9038 #else
9039         exit(1);
9040 #endif
9041 }
9042 EOCP
9043 set fd_set -DTRYBITS
9044 if eval $compile; then
9045         d_fds_bits="$define"
9046         d_fd_set="$define"
9047         echo "Well, your system knows about the normal fd_set typedef..." >&4
9048         if ./fd_set; then
9049                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9050                 d_fd_macros="$define"
9051         else
9052                 $cat >&4 <<'EOM'
9053 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9054 EOM
9055                 d_fd_macros="$undef"
9056         fi
9057 else
9058         $cat <<'EOM'
9059 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9060 EOM
9061         set fd_set
9062         if eval $compile; then
9063                 d_fds_bits="$undef"
9064                 d_fd_set="$define"
9065                 echo "Well, your system has some sort of fd_set available..." >&4
9066                 if ./fd_set; then
9067                         echo "and you have the normal fd_set macros." >&4
9068                         d_fd_macros="$define"
9069                 else
9070                         $cat <<'EOM'
9071 but not the normal fd_set macros!  Gross!  More work for me...
9072 EOM
9073                         d_fd_macros="$undef"
9074                 fi
9075         else
9076         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9077                 d_fd_set="$undef"
9078                 d_fds_bits="$undef"
9079                 d_fd_macros="$undef"
9080         fi
9081 fi
9082 $rm -f fd_set*
9083
9084 : see if fgetpos exists
9085 set fgetpos d_fgetpos
9086 eval $inlibc
9087
9088 : see if flock exists
9089 set flock d_flock
9090 eval $inlibc
9091
9092 : see if fork exists
9093 set fork d_fork
9094 eval $inlibc
9095
9096 : see if pathconf exists
9097 set pathconf d_pathconf
9098 eval $inlibc
9099
9100 : see if fpathconf exists
9101 set fpathconf d_fpathconf
9102 eval $inlibc
9103
9104
9105 : check for fpos64_t
9106 echo " "
9107 echo "Checking to see if you have fpos64_t..." >&4
9108 $cat >try.c <<EOCP
9109 #include <stdio.h>
9110 int main() { fpos64_t x = 7; }
9111 EOCP
9112 set try
9113 if eval $compile; then
9114         val="$define"
9115         echo "You have fpos64_t."
9116 else
9117         val="$undef"
9118         echo "You do not have fpos64_t."
9119         case "$fpossize" in
9120         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9121         esac
9122 fi
9123 $rm -f try.* try
9124 set d_fpos64_t
9125 eval $setvar
9126
9127 : see if frexpl exists
9128 set frexpl d_frexpl
9129 eval $inlibc
9130
9131 hasstruct='varname=$1; struct=$2; shift; shift;
9132 while $test $# -ge 2; do
9133         case "$1" in
9134         $define) echo "#include <$2>";;
9135         esac ;
9136     shift 2;
9137 done > try.c;
9138 echo "int main () { struct $struct foo; }" >> try.c;
9139 set try;
9140 if eval $compile; then
9141         val="$define";
9142 else
9143         val="$undef";
9144 fi;
9145 set $varname;
9146 eval $setvar;
9147 $rm -f try.c try.o'
9148
9149 : see if this is a sys/param system
9150 set sys/param.h i_sysparam
9151 eval $inhdr
9152
9153 : see if this is a sys/mount.h system
9154 set sys/mount.h i_sysmount
9155 eval $inhdr
9156
9157 : see if sys/types.h has to be included
9158 set sys/types.h i_systypes
9159 eval $inhdr
9160
9161
9162 echo " "
9163 echo "Checking to see if your system supports struct fs_data..." >&4
9164 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9165 eval $hasstruct
9166 case "$d_fs_data_s" in
9167 "$define")      echo "Yes, it does."   ;;
9168 *)              echo "No, it doesn't." ;;
9169 esac
9170
9171 : see if fseeko exists
9172 set fseeko d_fseeko
9173 eval $inlibc
9174 case "$longsize" in
9175 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9176 esac
9177
9178 : see if fsetpos exists
9179 set fsetpos d_fsetpos
9180 eval $inlibc
9181
9182
9183 : see if fstatfs exists
9184 set fstatfs d_fstatfs
9185 eval $inlibc
9186
9187
9188 : see if statvfs exists
9189 set statvfs d_statvfs
9190 eval $inlibc
9191
9192 : see if fstatvfs exists
9193 set fstatvfs d_fstatvfs
9194 eval $inlibc
9195
9196
9197 : see if ftello exists
9198 set ftello d_ftello
9199 eval $inlibc
9200 case "$longsize" in
9201 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9202 esac
9203
9204 : see if getcwd exists
9205 set getcwd d_getcwd
9206 eval $inlibc
9207
9208 : see if getespwnam exists
9209 set getespwnam d_getespwnam
9210 eval $inlibc
9211
9212
9213 : see if getfsstat exists
9214 set getfsstat d_getfsstat
9215 eval $inlibc
9216
9217 : see if getgrent exists
9218 set getgrent d_getgrent
9219 eval $inlibc
9220
9221 : see if gethostbyaddr exists
9222 set gethostbyaddr d_gethbyaddr
9223 eval $inlibc
9224
9225 : see if gethostbyname exists
9226 set gethostbyname d_gethbyname
9227 eval $inlibc
9228
9229 : see if gethostent exists
9230 set gethostent d_gethent
9231 eval $inlibc
9232
9233 : see how we will look up host name
9234 echo " "
9235 call=''
9236 if set gethostname val -f d_gethname; eval $csym; $val; then
9237         echo 'gethostname() found.' >&4
9238         d_gethname="$define"
9239         call=gethostname
9240 fi
9241 if set uname val -f d_uname; eval $csym; $val; then
9242         if ./xenix; then
9243                 $cat <<'EOM'
9244 uname() was found, but you're running xenix, and older versions of xenix
9245 have a broken uname(). If you don't really know whether your xenix is old
9246 enough to have a broken system call, use the default answer.
9247
9248 EOM
9249                 dflt=y
9250                 case "$d_uname" in
9251                 "$define") dflt=n;;
9252                 esac
9253                 rp='Is your uname() broken?'
9254                 . ./myread
9255                 case "$ans" in
9256                 n*) d_uname="$define"; call=uname;;
9257                 esac
9258         else
9259                 echo 'uname() found.' >&4
9260                 d_uname="$define"
9261                 case "$call" in
9262                 '') call=uname ;;
9263                 esac
9264         fi
9265 fi
9266 case "$d_gethname" in
9267 '') d_gethname="$undef";;
9268 esac
9269 case "$d_uname" in
9270 '') d_uname="$undef";;
9271 esac
9272 case "$d_uname$d_gethname" in
9273 *define*)
9274         dflt=n
9275         cat <<EOM
9276  
9277 Every now and then someone has a $call() that lies about the hostname
9278 but can't be fixed for political or economic reasons.  If you wish, I can
9279 pretend $call() isn't there and maybe compute hostname at run-time
9280 thanks to the '$phostname' command.
9281
9282 EOM
9283         rp="Shall I ignore $call() from now on?"
9284         . ./myread
9285         case "$ans" in
9286         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9287         esac;;
9288 esac
9289 case "$phostname" in
9290 '') aphostname='';;
9291 *) case "$aphostname" in
9292         /*) ;;
9293         *) set X $phostname
9294                 shift
9295                 file=$1
9296                 shift
9297                 file=`./loc $file $file $pth`
9298                 aphostname=`echo $file $*`
9299                 ;;
9300         esac
9301         ;;
9302 esac
9303 case "$d_uname$d_gethname" in
9304 *define*) ;;
9305 *)
9306         case "$phostname" in
9307         '')
9308                 echo "There will be no way for $package to get your hostname." >&4;;
9309         *)
9310         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9311                 ;;
9312         esac;;
9313 esac
9314 case "$d_phostname" in
9315 '') d_phostname="$undef";;
9316 esac
9317
9318 : see if this is a netdb.h system
9319 set netdb.h i_netdb
9320 eval $inhdr
9321
9322 : see if prototypes for various gethostxxx netdb.h functions are available
9323 echo " "
9324 set d_gethostprotos gethostent $i_netdb netdb.h
9325 eval $hasproto
9326
9327 : see if getlogin exists
9328 set getlogin d_getlogin
9329 eval $inlibc
9330
9331 : see if getmnt exists
9332 set getmnt d_getmnt
9333 eval $inlibc
9334
9335 : see if getmntent exists
9336 set getmntent d_getmntent
9337 eval $inlibc
9338
9339 : see if getnetbyaddr exists
9340 set getnetbyaddr d_getnbyaddr
9341 eval $inlibc
9342
9343 : see if getnetbyname exists
9344 set getnetbyname d_getnbyname
9345 eval $inlibc
9346
9347 : see if getnetent exists
9348 set getnetent d_getnent
9349 eval $inlibc
9350
9351 : see if prototypes for various getnetxxx netdb.h functions are available
9352 echo " "
9353 set d_getnetprotos getnetent $i_netdb netdb.h
9354 eval $hasproto
9355
9356
9357 : see if getprotobyname exists
9358 set getprotobyname d_getpbyname
9359 eval $inlibc
9360
9361 : see if getprotobynumber exists
9362 set getprotobynumber d_getpbynumber
9363 eval $inlibc
9364
9365 : see if getprotoent exists
9366 set getprotoent d_getpent
9367 eval $inlibc
9368
9369 : see if getpgid exists
9370 set getpgid d_getpgid
9371 eval $inlibc
9372
9373 : see if getpgrp2 exists
9374 set getpgrp2 d_getpgrp2
9375 eval $inlibc
9376
9377 : see if getppid exists
9378 set getppid d_getppid
9379 eval $inlibc
9380
9381 : see if getpriority exists
9382 set getpriority d_getprior
9383 eval $inlibc
9384
9385 : see if prototypes for various getprotoxxx netdb.h functions are available
9386 echo " "
9387 set d_getprotoprotos getprotoent $i_netdb netdb.h
9388 eval $hasproto
9389
9390 : see if getprpwnam exists
9391 set getprpwnam d_getprpwnam
9392 eval $inlibc
9393
9394 : see if getpwent exists
9395 set getpwent d_getpwent
9396 eval $inlibc
9397
9398
9399 : see if getservbyname exists
9400 set getservbyname d_getsbyname
9401 eval $inlibc
9402
9403 : see if getservbyport exists
9404 set getservbyport d_getsbyport
9405 eval $inlibc
9406
9407 : see if getservent exists
9408 set getservent d_getsent
9409 eval $inlibc
9410
9411 : see if prototypes for various getservxxx netdb.h functions are available
9412 echo " "
9413 set d_getservprotos getservent $i_netdb netdb.h
9414 eval $hasproto
9415
9416 : see if getspnam exists
9417 set getspnam d_getspnam
9418 eval $inlibc
9419
9420 : see if gettimeofday or ftime exists
9421 set gettimeofday d_gettimeod
9422 eval $inlibc
9423 case "$d_gettimeod" in
9424 "$undef")
9425         set ftime d_ftime 
9426         eval $inlibc
9427         ;;
9428 *)
9429         val="$undef"; set d_ftime; eval $setvar
9430         ;;
9431 esac
9432 case "$d_gettimeod$d_ftime" in
9433 "$undef$undef")
9434         echo " "
9435         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9436         ;;
9437 esac
9438
9439 : see if this is an grp system
9440 set grp.h i_grp
9441 eval $inhdr
9442
9443 case "$i_grp" in
9444 $define)
9445         xxx=`./findhdr grp.h`
9446         $cppstdin $cppflags $cppminus < $xxx >$$.h
9447
9448         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9449                 val="$define"
9450         else
9451                 val="$undef"
9452         fi
9453         set d_grpasswd
9454         eval $setvar
9455
9456         $rm -f $$.h
9457         ;;
9458 *)
9459         val="$undef";
9460         set d_grpasswd; eval $setvar
9461         ;;
9462 esac
9463
9464 : see if hasmntopt exists
9465 set hasmntopt d_hasmntopt
9466 eval $inlibc
9467
9468 : see if this is a netinet/in.h or sys/in.h system
9469 set netinet/in.h i_niin sys/in.h i_sysin
9470 eval $inhdr
9471
9472 : see if arpa/inet.h has to be included
9473 set arpa/inet.h i_arpainet
9474 eval $inhdr
9475
9476 : see if htonl --and friends-- exists
9477 val=''
9478 set htonl val
9479 eval $inlibc
9480
9481 : Maybe they are macros.
9482 case "$val" in
9483 $undef)
9484         $cat >htonl.c <<EOM
9485 #include <stdio.h>
9486 #include <sys/types.h>
9487 #$i_niin I_NETINET_IN
9488 #$i_sysin I_SYS_IN
9489 #$i_arpainet I_ARPA_INET
9490 #ifdef I_NETINET_IN
9491 #include <netinet/in.h>
9492 #endif
9493 #ifdef I_SYS_IN
9494 #include <sys/in.h>
9495 #endif
9496 #ifdef I_ARPA_INET
9497 #include <arpa/inet.h>
9498 #endif
9499 #ifdef htonl
9500 printf("Defined as a macro.");
9501 #endif
9502 EOM
9503         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9504         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9505                 val="$define"
9506                 echo "But it seems to be defined as a macro." >&4
9507         fi
9508         $rm -f htonl.?
9509         ;;
9510 esac
9511 set d_htonl
9512 eval $setvar
9513
9514 : see if iconv exists
9515 set iconv d_iconv
9516 eval $inlibc
9517
9518 : index or strchr
9519 echo " "
9520 if set index val -f; eval $csym; $val; then
9521         if set strchr val -f d_strchr; eval $csym; $val; then
9522                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9523                         val="$define"
9524                         vali="$undef"
9525                         echo "strchr() found." >&4
9526                 else
9527                         val="$undef"
9528                         vali="$define"
9529                         echo "index() found." >&4
9530                 fi
9531         else
9532                 val="$undef"
9533                 vali="$define"
9534                 echo "index() found." >&4
9535         fi
9536 else
9537         if set strchr val -f d_strchr; eval $csym; $val; then
9538                 val="$define"
9539                 vali="$undef"
9540                 echo "strchr() found." >&4
9541         else
9542                 echo "No index() or strchr() found!" >&4
9543                 val="$undef"
9544                 vali="$undef"
9545         fi
9546 fi
9547 set d_strchr; eval $setvar
9548 val="$vali"
9549 set d_index; eval $setvar
9550
9551 : check whether inet_aton exists
9552 set inet_aton d_inetaton
9553 eval $inlibc
9554
9555 : see if inttypes.h is available
9556 : we want a real compile instead of Inhdr because some systems
9557 : have an inttypes.h which includes non-existent headers
9558 echo " "
9559 $cat >try.c <<EOCP
9560 #include <inttypes.h>
9561 int main() {
9562         static int32_t foo32 = 0x12345678;
9563 }
9564 EOCP
9565 set try
9566 if eval $compile; then
9567         echo "<inttypes.h> found." >&4
9568         val="$define"
9569 else
9570         echo "<inttypes.h> NOT found." >&4
9571         val="$undef"
9572 fi
9573 $rm -f try.c try
9574 set i_inttypes
9575 eval $setvar
9576
9577 : check for int64_t
9578 echo " "
9579 echo "Checking to see if you have int64_t..." >&4
9580 $cat >try.c <<EOCP
9581 #include <sys/types.h>
9582 #$i_inttypes I_INTTYPES
9583 #ifdef I_INTTYPES
9584 #include <inttypes.h>
9585 #endif
9586 int main() { int64_t x = 7; }
9587 EOCP
9588 set try
9589 if eval $compile; then
9590         val="$define"
9591         echo "You have int64_t."
9592 else
9593         val="$undef"
9594         echo "You do not have int64_t."
9595 fi
9596 $rm -f try try.*
9597 set d_int64_t
9598 eval $setvar
9599
9600 : Look for isascii
9601 echo " "
9602 $cat >isascii.c <<'EOCP'
9603 #include <stdio.h>
9604 #include <ctype.h>
9605 int main() {
9606         int c = 'A';
9607         if (isascii(c))
9608                 exit(0);
9609         else
9610                 exit(1);
9611 }
9612 EOCP
9613 set isascii
9614 if eval $compile; then
9615         echo "isascii() found." >&4
9616         val="$define"
9617 else
9618         echo "isascii() NOT found." >&4
9619         val="$undef"
9620 fi
9621 set d_isascii
9622 eval $setvar
9623 $rm -f isascii*
9624
9625 : see if isnan exists
9626 set isnan d_isnan
9627 eval $inlibc
9628
9629 : see if isnanl exists
9630 set isnanl d_isnanl
9631 eval $inlibc
9632
9633 : see if killpg exists
9634 set killpg d_killpg
9635 eval $inlibc
9636
9637 : see if lchown exists
9638 echo " "
9639 $cat > try.c <<'EOCP'
9640 /* System header to define __stub macros and hopefully few prototypes,
9641     which can conflict with char lchown(); below.  */
9642 #include <assert.h>
9643 /* Override any gcc2 internal prototype to avoid an error.  */
9644 /* We use char because int might match the return type of a gcc2
9645    builtin and then its argument prototype would still apply.  */
9646 char lchown();
9647 int main() {
9648     /*  The GNU C library defines this for functions which it implements
9649         to always fail with ENOSYS.  Some functions are actually named
9650         something starting with __ and the normal name is an alias.  */
9651 #if defined (__stub_lchown) || defined (__stub___lchown)
9652 choke me
9653 #else
9654 lchown();
9655 #endif
9656 ; return 0; }
9657 EOCP
9658 set try
9659 if eval $compile; then
9660     $echo "lchown() found." >&4
9661     val="$define"
9662 else
9663     $echo "lchown() NOT found." >&4
9664     val="$undef"
9665 fi
9666 set d_lchown
9667 eval $setvar
9668
9669 : See if number of significant digits in a double precision number is known
9670 echo " "
9671 $cat >ldbl_dig.c <<EOM
9672 #$i_limits I_LIMITS
9673 #$i_float I_FLOAT
9674 #ifdef I_LIMITS
9675 #include <limits.h>
9676 #endif
9677 #ifdef I_FLOAT
9678 #include <float.h>
9679 #endif
9680 #ifdef LDBL_DIG
9681 printf("Contains LDBL_DIG");
9682 #endif
9683 EOM
9684 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9685 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9686         echo "LDBL_DIG found." >&4
9687         val="$define"
9688 else
9689         echo "LDBL_DIG NOT found." >&4
9690         val="$undef"
9691 fi
9692 $rm -f ldbl_dig.?
9693 set d_ldbl_dig
9694 eval $setvar
9695
9696 : see if link exists
9697 set link d_link
9698 eval $inlibc
9699
9700 : see if localeconv exists
9701 set localeconv d_locconv
9702 eval $inlibc
9703
9704 : see if lockf exists
9705 set lockf d_lockf
9706 eval $inlibc
9707
9708 : check for long long
9709 echo " "
9710 echo "Checking to see if you have long long..." >&4
9711 echo 'int main() { long long x = 7; return 0; }' > try.c
9712 set try
9713 if eval $compile; then
9714         val="$define"
9715         echo "You have long long."
9716 else
9717         val="$undef"
9718         echo "You do not have long long."
9719 fi
9720 $rm try.*
9721 set d_longlong
9722 eval $setvar
9723
9724 : check for length of long long
9725 case "${d_longlong}${longlongsize}" in
9726 $define)
9727         echo " "
9728         echo "Checking to see how big your long longs are..." >&4
9729         $cat >try.c <<'EOCP'
9730 #include <stdio.h>
9731 int main()
9732 {
9733     printf("%d\n", (int)sizeof(long long));
9734     return(0);
9735 }
9736 EOCP
9737         set try
9738         if eval $compile_ok; then
9739                 longlongsize=`./try$exe_ext`
9740                 echo "Your long longs are $longlongsize bytes long."
9741         else
9742                 dflt='8'
9743                 echo " "
9744                 echo "(I can't seem to compile the test program.  Guessing...)"
9745                 rp="What is the size of a long long (in bytes)?"
9746                 . ./myread
9747                 longlongsize="$ans"
9748         fi
9749         if $test "X$longsize" = "X$longlongsize"; then
9750                 echo "(That isn't any different from an ordinary long.)"
9751         fi      
9752         ;;
9753 esac
9754 $rm -f try.* try
9755
9756 : see if prototype for lseek is available
9757 echo " "
9758 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9759 eval $hasproto
9760
9761 : see if lstat exists
9762 set lstat d_lstat
9763 eval $inlibc
9764
9765 : see if madvise exists
9766 set madvise d_madvise
9767 eval $inlibc
9768
9769 : see if mblen exists
9770 set mblen d_mblen
9771 eval $inlibc
9772
9773 : see if mbstowcs exists
9774 set mbstowcs d_mbstowcs
9775 eval $inlibc
9776
9777 : see if mbtowc exists
9778 set mbtowc d_mbtowc
9779 eval $inlibc
9780
9781 : see if memchr exists
9782 set memchr d_memchr
9783 eval $inlibc
9784
9785 : see if memcmp exists
9786 set memcmp d_memcmp
9787 eval $inlibc
9788
9789 : see if memcpy exists
9790 set memcpy d_memcpy
9791 eval $inlibc
9792
9793 : see if memmove exists
9794 set memmove d_memmove
9795 eval $inlibc
9796
9797 : see if memset exists
9798 set memset d_memset
9799 eval $inlibc
9800
9801 : see if mkdir exists
9802 set mkdir d_mkdir
9803 eval $inlibc
9804
9805 : see if mkdtemp exists
9806 set mkdtemp d_mkdtemp
9807 eval $inlibc
9808
9809 : see if mkfifo exists
9810 set mkfifo d_mkfifo
9811 eval $inlibc
9812
9813 : see if mkstemp exists
9814 set mkstemp d_mkstemp
9815 eval $inlibc
9816
9817 : see if mkstemps exists
9818 set mkstemps d_mkstemps
9819 eval $inlibc
9820
9821 : see if mktime exists
9822 set mktime d_mktime
9823 eval $inlibc
9824
9825 : see if this is a sys/mman.h system
9826 set sys/mman.h i_sysmman
9827 eval $inhdr
9828
9829 : see if mmap exists
9830 set mmap d_mmap
9831 eval $inlibc
9832 : see what shmat returns
9833 : default to something harmless
9834 mmaptype='void *'
9835 case "$i_sysmman$d_mmap" in
9836 "$define$define")
9837         $cat >mmap.c <<'END'
9838 #include <sys/mman.h>
9839 void *mmap();
9840 END
9841         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9842                 mmaptype='void *'
9843         else
9844                 mmaptype='caddr_t'
9845         fi
9846         echo "and it returns ($mmaptype)." >&4
9847         ;;
9848 esac
9849
9850
9851
9852 : see if modfl exists
9853 set modfl d_modfl
9854 eval $inlibc
9855
9856 : see if mprotect exists
9857 set mprotect d_mprotect
9858 eval $inlibc
9859
9860 : see if msgctl exists
9861 set msgctl d_msgctl
9862 eval $inlibc
9863
9864 : see if msgget exists
9865 set msgget d_msgget
9866 eval $inlibc
9867
9868 : see if msgsnd exists
9869 set msgsnd d_msgsnd
9870 eval $inlibc
9871
9872 : see if msgrcv exists
9873 set msgrcv d_msgrcv
9874 eval $inlibc
9875
9876 : see how much of the 'msg*(2)' library is present.
9877 h_msg=true
9878 echo " "
9879 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9880 *"$undef"*) h_msg=false;;
9881 esac
9882 case "$osname" in
9883 freebsd)
9884     case "`ipcs 2>&1`" in
9885     "SVID messages"*"not configured"*)
9886         echo "Your $osname does not have the msg*(2) configured." >&4
9887         h_msg=false
9888         val="$undef"
9889         set msgctl d_msgctl
9890         eval $setvar
9891         set msgget d_msgget
9892         eval $setvar
9893         set msgsnd d_msgsnd
9894         eval $setvar
9895         set msgrcv d_msgrcv
9896         eval $setvar
9897         ;;
9898     esac
9899     ;;
9900 esac
9901 : we could also check for sys/ipc.h ...
9902 if $h_msg && $test `./findhdr sys/msg.h`; then
9903         echo "You have the full msg*(2) library." >&4
9904         val="$define"
9905 else
9906         echo "You don't have the full msg*(2) library." >&4
9907         val="$undef"
9908 fi
9909 set d_msg
9910 eval $setvar
9911
9912 : see if msync exists
9913 set msync d_msync
9914 eval $inlibc
9915
9916 : see if munmap exists
9917 set munmap d_munmap
9918 eval $inlibc
9919
9920 : see if nice exists
9921 set nice d_nice
9922 eval $inlibc
9923
9924
9925 echo " "
9926 echo "Checking which 64-bit integer type we could use..." >&4
9927
9928 case "$intsize" in
9929 8) val=int
9930    set quadtype
9931    eval $setvar
9932    val='"unsigned int"'
9933    set uquadtype
9934    eval $setvar
9935    quadkind=1
9936    ;;
9937 *) case "$longsize" in
9938    8) val=long
9939       set quadtype
9940       eval $setvar
9941       val='"unsigned long"'
9942       set uquadtype
9943       eval $setvar
9944       quadkind=2
9945       ;;
9946    *) case "$d_longlong:$longlongsize" in
9947       define:8)
9948         val='"long long"'
9949         set quadtype
9950         eval $setvar
9951         val='"unsigned long long"'
9952         set uquadtype
9953         eval $setvar
9954         quadkind=3
9955         ;;
9956       *) case "$d_int64_t" in
9957          define)
9958            val=int64_t
9959            set quadtype
9960            eval $setvar
9961            val=uint64_t
9962            set uquadtype
9963            eval $setvar
9964            quadkind=4
9965            ;;
9966          esac
9967          ;;
9968       esac
9969       ;;
9970    esac
9971    ;;
9972 esac
9973
9974 case "$quadtype" in
9975 '')     echo "Alas, no 64-bit integer types in sight." >&4
9976         d_quad="$undef"
9977         ;;
9978 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9979             verb="will"
9980         else
9981             verb="could"
9982         fi
9983         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9984         d_quad="$define"
9985         ;;
9986 esac
9987
9988 : check for length of character
9989 echo " "
9990 case "$charsize" in
9991 '')
9992         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9993         $cat >try.c <<'EOCP'
9994 #include <stdio.h>
9995 int main()
9996 {
9997     printf("%d\n", (int)sizeof(char));
9998     exit(0);
9999 }
10000 EOCP
10001         set try
10002         if eval $compile_ok; then
10003                 dflt=`./try`
10004         else
10005                 dflt='1'
10006                 echo "(I can't seem to compile the test program.  Guessing...)"
10007         fi
10008         ;;
10009 *)
10010         dflt="$charsize"
10011         ;;
10012 esac
10013 rp="What is the size of a character (in bytes)?"
10014 . ./myread
10015 charsize="$ans"
10016 $rm -f try.c try
10017
10018
10019 echo " "
10020 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10021
10022 case "$use64bitint:$d_quad:$quadtype" in
10023 define:define:?*)
10024         ivtype="$quadtype"
10025         uvtype="$uquadtype"
10026         ivsize=8
10027         uvsize=8
10028         ;;
10029 *)      ivtype="long"
10030         uvtype="unsigned long"
10031         ivsize=$longsize
10032         uvsize=$longsize
10033         ;;
10034 esac
10035
10036 case "$uselongdouble:$d_longdbl" in
10037 define:define)
10038         nvtype="long double"
10039         nvsize=$longdblsize
10040         ;;
10041 *)      nvtype=double
10042         nvsize=$doublesize
10043         ;;
10044 esac
10045
10046 $echo "(IV will be "$ivtype", $ivsize bytes)"
10047 $echo "(UV will be "$uvtype", $uvsize bytes)"
10048 $echo "(NV will be "$nvtype", $nvsize bytes)"
10049
10050 $cat >try.c <<EOCP
10051 #$i_inttypes I_INTTYPES
10052 #ifdef I_INTTYPES
10053 #include <inttypes.h>
10054 #endif
10055 #include <stdio.h>
10056 int main() {
10057 #ifdef INT8
10058    int8_t i =  INT8_MAX;
10059   uint8_t u = UINT8_MAX;
10060   printf("int8_t\n");
10061 #endif
10062 #ifdef INT16
10063    int16_t i =  INT16_MAX;
10064   uint16_t i = UINT16_MAX;
10065   printf("int16_t\n");
10066 #endif
10067 #ifdef INT32
10068    int32_t i =  INT32_MAX;
10069   uint32_t u = UINT32_MAX;
10070   printf("int32_t\n");
10071 #endif
10072 }
10073 EOCP
10074
10075 case "$i8type" in
10076 '')     case "$charsize" in
10077         1)      i8type=char
10078                 u8type="unsigned char"
10079                 i8size=$charsize
10080                 u8size=$charsize
10081                 ;;
10082         esac
10083         ;;
10084 esac
10085 case "$i8type" in
10086 '')     set try -DINT8
10087         if eval $compile; then
10088                 case "`./try$exe_ext`" in
10089                 int8_t) i8type=int8_t
10090                         u8type=uint8_t
10091                         i8size=1
10092                         u8size=1
10093                         ;;
10094                 esac
10095         fi
10096         ;;
10097 esac
10098 case "$i8type" in
10099 '')     if $test $charsize -ge 1; then
10100                 i8type=char
10101                 u8type="unsigned char"
10102                 i8size=$charsize
10103                 u8size=$charsize
10104         fi
10105         ;;
10106 esac
10107
10108 case "$i16type" in
10109 '')     case "$shortsize" in
10110         2)      i16type=short
10111                 u16type="unsigned short"
10112                 i16size=$shortsize
10113                 u16size=$shortsize
10114                 ;;
10115         esac
10116         ;;
10117 esac
10118 case "$i16type" in
10119 '')     set try -DINT16
10120         if eval $compile; then
10121                 case "`./try$exe_ext`" in
10122                 int16_t)
10123                         i16type=int16_t
10124                         u16type=uint16_t
10125                         i16size=2
10126                         u16size=2
10127                         ;;
10128                 esac
10129         fi
10130         ;;
10131 esac
10132 case "$i16type" in
10133 '')     if $test $shortsize -ge 2; then
10134                 i16type=short
10135                 u16type="unsigned short"
10136                 i16size=$shortsize
10137                 u16size=$shortsize
10138         fi
10139         ;;
10140 esac
10141
10142 case "$i32type" in
10143 '')     case "$longsize" in
10144         4)      i32type=long
10145                 u32type="unsigned long"
10146                 i32size=$longsize
10147                 u32size=$longsize
10148                 ;;
10149         *)      case "$intsize" in
10150                 4)      i32type=int
10151                         u32type="unsigned int"
10152                         i32size=$intsize
10153                         u32size=$intsize
10154                         ;;
10155                 esac
10156                 ;;
10157         esac
10158         ;;
10159 esac
10160 case "$i32type" in
10161 '')     set try -DINT32
10162         if eval $compile; then
10163                 case "`./try$exe_ext`" in
10164                 int32_t)
10165                         i32type=int32_t
10166                         u32type=uint32_t
10167                         i32size=4
10168                         u32size=4
10169                         ;;
10170                 esac
10171         fi
10172         ;;
10173 esac
10174 case "$i32type" in
10175 '')     if $test $intsize -ge 4; then
10176                 i32type=int
10177                 u32type="unsigned int"
10178                 i32size=$intsize
10179                 u32size=$intsize
10180         fi
10181         ;;
10182 esac
10183
10184 case "$i64type" in
10185 '')     case "$d_quad:$quadtype" in
10186         define:?*)
10187                 i64type="$quadtype"
10188                 u64type="$uquadtype"
10189                 i64size=8
10190                 u64size=8
10191                 ;;
10192         esac
10193         ;;
10194 esac
10195
10196 $echo "Checking whether your NVs can preserve your UVs..." >&4
10197 $cat <<EOP >try.c
10198 #include <stdio.h>
10199 int main() {
10200     $uvtype k = ($uvtype)~0, l;
10201     $nvtype d;
10202     l = k;
10203     d = ($nvtype)l;
10204     l = ($uvtype)d;
10205     if (l == k)
10206        printf("preserve\n");
10207     exit(0);
10208 }
10209 EOP
10210 set try
10211 if eval $compile; then
10212         case "`./try$exe_ext`" in
10213         preserve) d_nv_preserves_uv="$define" ;;
10214         esac
10215 fi      
10216 case "$d_nv_preserves_uv" in
10217 $define) $echo "Yes, they can."  2>&1 ;;
10218 *)       $echo "No, they can't." 2>&1
10219          d_nv_preserves_uv="$undef"
10220          ;;
10221 esac
10222
10223 $rm -f try.* try
10224
10225 case "$d_nv_preserves_uv" in
10226 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10227 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10228         $cat <<EOP >try.c
10229 #include <stdio.h>
10230 int main() {
10231     $uvtype u = 0;
10232     int     n = 8 * $uvsize;
10233     int     i;
10234     for (i = 0; i < n; i++) {
10235       u = u << 1 | ($uvtype)1;
10236       if (($uvtype)($nvtype)u != u)
10237         break;
10238     }
10239     printf("%d\n", i);
10240     exit(0);
10241 }
10242 EOP
10243         set try
10244         if eval $compile; then
10245                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10246         fi
10247         case "$d_nv_preserves_uv_bits" in
10248         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10249         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10250                 d_nv_preserves_uv_bits="$undef"
10251                 ;;
10252         esac
10253         $rm -f try.* try
10254         ;;
10255 esac
10256
10257
10258 : check for off64_t
10259 echo " "
10260 echo "Checking to see if you have off64_t..." >&4
10261 $cat >try.c <<EOCP
10262 #include <sys/types.h>
10263 #include <unistd.h>
10264 int main() { off64_t x = 7; }
10265 EOCP
10266 set try
10267 if eval $compile; then
10268         val="$define"
10269         echo "You have off64_t."
10270 else
10271         val="$undef"
10272         echo "You do not have off64_t."
10273         case "$lseeksize" in
10274         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10275         esac
10276 fi
10277 $rm -f try.* try
10278 set d_off64_t
10279 eval $setvar
10280
10281 : see if POSIX threads are available
10282 set pthread.h i_pthread
10283 eval $inhdr
10284
10285
10286
10287
10288 : how to create joinable pthreads
10289 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10290         echo " "
10291         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10292         $cat >try.c <<'EOCP'
10293 #include <pthread.h>
10294 int main() {
10295     int detachstate = JOINABLE;
10296 }
10297 EOCP
10298         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10299         if eval $compile; then
10300                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10301                 val="$undef" # Yes, undef.
10302                 set d_old_pthread_create_joinable
10303                 eval $setvar
10304                 val=""
10305                 set old_pthread_create_joinable
10306                 eval $setvar
10307         else
10308                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10309                 if eval $compile; then
10310                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10311                         val="$define"
10312                         set d_old_pthread_create_joinable
10313                         eval $setvar
10314                         val=PTHREAD_CREATE_UNDETACHED
10315                         set old_pthread_create_joinable
10316                         eval $setvar
10317                 else            
10318                         set try -DJOINABLE=__UNDETACHED
10319                         if eval $compile; then
10320                                 echo "You seem to use __UNDETACHED." >&4
10321                                 val="$define"
10322                                 set d_old_pthread_create_joinable
10323                                 eval $setvar
10324                                 val=__UNDETACHED
10325                                 set old_pthread_create_joinable
10326                                 eval $setvar
10327                         else
10328                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10329                                 val="$define"
10330                                 set d_old_pthread_create_joinable
10331                                 eval $setvar
10332                                 val=0
10333                                 set old_pthread_create_joinable
10334                                 eval $setvar
10335                         fi
10336                 fi
10337         fi
10338         $rm -f try try.*
10339 else
10340     d_old_pthread_create_joinable="$undef"
10341     old_pthread_create_joinable=""
10342 fi
10343
10344 : see if pause exists
10345 set pause d_pause
10346 eval $inlibc
10347
10348 : see if pipe exists
10349 set pipe d_pipe
10350 eval $inlibc
10351
10352 : see if poll exists
10353 set poll d_poll
10354 eval $inlibc
10355
10356
10357 : see whether the various POSIXish _yields exist
10358 $cat >try.c <<EOP
10359 #include <pthread.h>
10360 #include <stdio.h>
10361 int main() {
10362 #ifdef SCHED_YIELD
10363         sched_yield();
10364 #else
10365 #ifdef PTHREAD_YIELD
10366         pthread_yield();
10367 #else
10368 #ifdef PTHREAD_YIELD_NULL
10369         pthread_yield(NULL);
10370 #endif
10371 #endif
10372 #endif
10373 }
10374 EOP
10375 : see if sched_yield exists
10376 set try -DSCHED_YIELD
10377 if eval $compile; then
10378     val="$define"
10379     sched_yield='sched_yield()'
10380 else
10381     val="$undef"
10382 fi
10383 case "$usethreads" in
10384 $define)
10385         case "$val" in
10386         $define) echo 'sched_yield() found.' >&4        ;;
10387         *)       echo 'sched_yield() NOT found.' >&4    ;;
10388         esac
10389 esac
10390 set d_sched_yield
10391 eval $setvar
10392
10393 : see if pthread_yield exists
10394 set try -DPTHREAD_YIELD
10395 if eval $compile; then
10396     val="$define"
10397     case "$sched_yield" in
10398     '') sched_yield='pthread_yield()' ;;
10399     esac
10400 else
10401     set try -DPTHREAD_YIELD_NULL
10402     if eval $compile; then
10403         val="$define"
10404         case "$sched_yield" in
10405         '') sched_yield='pthread_yield(NULL)' ;;
10406         esac
10407     else
10408         val="$undef"
10409     fi
10410 fi
10411 case "$usethreads" in
10412 $define)
10413         case "$val" in
10414         $define) echo 'pthread_yield() found.' >&4      ;;
10415         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10416         esac
10417         ;;
10418 esac
10419 set d_pthread_yield
10420 eval $setvar
10421
10422 case "$sched_yield" in
10423 '') sched_yield=undef ;;
10424 esac
10425
10426 $rm -f try try.*
10427
10428 : see if this is a pwd.h system
10429 set pwd.h i_pwd
10430 eval $inhdr
10431
10432 case "$i_pwd" in
10433 $define)
10434         xxx=`./findhdr pwd.h`
10435         $cppstdin $cppflags $cppminus < $xxx >$$.h
10436
10437         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10438                 val="$define"
10439         else
10440                 val="$undef"
10441         fi
10442         set d_pwquota
10443         eval $setvar
10444
10445         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10446                 val="$define"
10447         else
10448                 val="$undef"
10449         fi
10450         set d_pwage
10451         eval $setvar
10452
10453         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10454                 val="$define"
10455         else
10456                 val="$undef"
10457         fi
10458         set d_pwchange
10459         eval $setvar
10460
10461         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10462                 val="$define"
10463         else
10464                 val="$undef"
10465         fi
10466         set d_pwclass
10467         eval $setvar
10468
10469         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10470                 val="$define"
10471         else
10472                 val="$undef"
10473         fi
10474         set d_pwexpire
10475         eval $setvar
10476
10477         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10478                 val="$define"
10479         else
10480                 val="$undef"
10481         fi
10482         set d_pwcomment
10483         eval $setvar
10484
10485         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10486                 val="$define"
10487         else
10488                 val="$undef"
10489         fi
10490         set d_pwgecos
10491         eval $setvar
10492
10493         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10494                 val="$define"
10495         else
10496                 val="$undef"
10497         fi
10498         set d_pwpasswd
10499         eval $setvar
10500
10501         $rm -f $$.h
10502         ;;
10503 *)
10504         val="$undef"; 
10505         set d_pwquota; eval $setvar
10506         set d_pwage; eval $setvar
10507         set d_pwchange; eval $setvar
10508         set d_pwclass; eval $setvar
10509         set d_pwexpire; eval $setvar
10510         set d_pwcomment; eval $setvar
10511         set d_pwgecos; eval $setvar
10512         set d_pwpasswd; eval $setvar
10513         ;;
10514 esac
10515
10516 : see if readdir and friends exist
10517 set readdir d_readdir
10518 eval $inlibc
10519 set seekdir d_seekdir
10520 eval $inlibc
10521 set telldir d_telldir
10522 eval $inlibc
10523 set rewinddir d_rewinddir
10524 eval $inlibc
10525
10526 : see if readlink exists
10527 set readlink d_readlink
10528 eval $inlibc
10529
10530 : see if rename exists
10531 set rename d_rename
10532 eval $inlibc
10533
10534 : see if rmdir exists
10535 set rmdir d_rmdir
10536 eval $inlibc
10537
10538 : see if memory.h is available.
10539 val=''
10540 set memory.h val
10541 eval $inhdr
10542
10543 : See if it conflicts with string.h
10544 case "$val" in
10545 $define)
10546         case "$strings" in
10547         '') ;;
10548         *)
10549                 $cppstdin $cppflags $cppminus < $strings > mem.h
10550                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10551                         echo " "
10552                         echo "We won't be including <memory.h>."
10553                         val="$undef"
10554                 fi
10555                 $rm -f mem.h
10556                 ;;
10557         esac
10558 esac
10559 set i_memory
10560 eval $setvar
10561
10562 : can bcopy handle overlapping blocks?
10563 val="$undef"
10564 case "$d_bcopy" in
10565 "$define")
10566         echo " "
10567         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10568         $cat >try.c <<EOCP
10569 #$i_memory I_MEMORY
10570 #$i_stdlib I_STDLIB
10571 #$i_string I_STRING
10572 #$i_unistd I_UNISTD
10573 EOCP
10574         $cat >>try.c <<'EOCP'
10575 #include <stdio.h>
10576 #ifdef I_MEMORY
10577 #  include <memory.h>
10578 #endif
10579 #ifdef I_STDLIB
10580 #  include <stdlib.h>
10581 #endif
10582 #ifdef I_STRING
10583 #  include <string.h>
10584 #else
10585 #  include <strings.h>
10586 #endif
10587 #ifdef I_UNISTD
10588 #  include <unistd.h>  /* Needed for NetBSD */
10589 #endif
10590 int main()
10591 {
10592 char buf[128], abc[128];
10593 char *b;
10594 int len;
10595 int off;
10596 int align;
10597
10598 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10599
10600 for (align = 7; align >= 0; align--) {
10601         for (len = 36; len; len--) {
10602                 b = buf+align;
10603                 bcopy(abc, b, len);
10604                 for (off = 1; off <= len; off++) {
10605                         bcopy(b, b+off, len);
10606                         bcopy(b+off, b, len);
10607                         if (bcmp(b, abc, len))
10608                                 exit(1);
10609                 }
10610         }
10611 }
10612 exit(0);
10613 }
10614 EOCP
10615         set try
10616         if eval $compile_ok; then
10617                 if ./try 2>/dev/null; then
10618                         echo "Yes, it can."
10619                         val="$define"
10620                 else
10621                         echo "It can't, sorry."
10622                         case "$d_memmove" in
10623                         "$define") echo "But that's Ok since you have memmove()." ;;
10624                         esac
10625                 fi
10626         else
10627                 echo "(I can't compile the test program, so we'll assume not...)"
10628                 case "$d_memmove" in
10629                 "$define") echo "But that's Ok since you have memmove()." ;;
10630                 esac
10631         fi
10632         ;;
10633 esac
10634 $rm -f try.* try core
10635 set d_safebcpy
10636 eval $setvar
10637
10638 : can memcpy handle overlapping blocks?
10639 val="$undef"
10640 case "$d_memcpy" in
10641 "$define")
10642         echo " "
10643         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10644         $cat >try.c <<EOCP
10645 #$i_memory I_MEMORY
10646 #$i_stdlib I_STDLIB
10647 #$i_string I_STRING
10648 #$i_unistd I_UNISTD
10649 EOCP
10650         $cat >>try.c <<'EOCP'
10651 #include <stdio.h>
10652 #ifdef I_MEMORY
10653 #  include <memory.h>
10654 #endif
10655 #ifdef I_STDLIB
10656 #  include <stdlib.h>
10657 #endif
10658 #ifdef I_STRING
10659 #  include <string.h>
10660 #else
10661 #  include <strings.h>
10662 #endif
10663 #ifdef I_UNISTD
10664 #  include <unistd.h>  /* Needed for NetBSD */
10665 #endif
10666 int main()
10667 {
10668 char buf[128], abc[128];
10669 char *b;
10670 int len;
10671 int off;
10672 int align;
10673
10674 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10675    try to store the string in read-only memory. */
10676 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10677
10678 for (align = 7; align >= 0; align--) {
10679         for (len = 36; len; len--) {
10680                 b = buf+align;
10681                 memcpy(b, abc, len);
10682                 for (off = 1; off <= len; off++) {
10683                         memcpy(b+off, b, len);
10684                         memcpy(b, b+off, len);
10685                         if (memcmp(b, abc, len))
10686                                 exit(1);
10687                 }
10688         }
10689 }
10690 exit(0);
10691 }
10692 EOCP
10693         set try
10694         if eval $compile_ok; then
10695                 if ./try 2>/dev/null; then
10696                         echo "Yes, it can."
10697                         val="$define"
10698                 else
10699                         echo "It can't, sorry."
10700                         case "$d_memmove" in
10701                         "$define") echo "But that's Ok since you have memmove()." ;;
10702                         esac
10703                 fi
10704         else
10705                 echo "(I can't compile the test program, so we'll assume not...)"
10706                 case "$d_memmove" in
10707                 "$define") echo "But that's Ok since you have memmove()." ;;
10708                 esac
10709         fi
10710         ;;
10711 esac
10712 $rm -f try.* try core
10713 set d_safemcpy
10714 eval $setvar
10715
10716 : can memcmp be trusted to compare relative magnitude?
10717 val="$undef"
10718 case "$d_memcmp" in
10719 "$define")
10720         echo " "
10721         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10722         $cat >try.c <<EOCP
10723 #$i_memory I_MEMORY
10724 #$i_stdlib I_STDLIB
10725 #$i_string I_STRING
10726 #$i_unistd I_UNISTD
10727 EOCP
10728         $cat >>try.c <<'EOCP'
10729 #include <stdio.h>
10730 #ifdef I_MEMORY
10731 #  include <memory.h>
10732 #endif
10733 #ifdef I_STDLIB
10734 #  include <stdlib.h>
10735 #endif
10736 #ifdef I_STRING
10737 #  include <string.h>
10738 #else
10739 #  include <strings.h>
10740 #endif
10741 #ifdef I_UNISTD
10742 #  include <unistd.h>  /* Needed for NetBSD */
10743 #endif
10744 int main()
10745 {
10746 char a = -1;
10747 char b = 0;
10748 if ((a < b) && memcmp(&a, &b, 1) < 0)
10749         exit(1);
10750 exit(0);
10751 }
10752 EOCP
10753         set try
10754         if eval $compile_ok; then
10755                 if ./try 2>/dev/null; then
10756                         echo "Yes, it can."
10757                         val="$define"
10758                 else
10759                         echo "No, it can't (it uses signed chars)."
10760                 fi
10761         else
10762                 echo "(I can't compile the test program, so we'll assume not...)"
10763         fi
10764         ;;
10765 esac
10766 $rm -f try.* try core
10767 set d_sanemcmp
10768 eval $setvar
10769
10770 : see if select exists
10771 set select d_select
10772 eval $inlibc
10773
10774 : see if semctl exists
10775 set semctl d_semctl
10776 eval $inlibc
10777
10778 : see if semget exists
10779 set semget d_semget
10780 eval $inlibc
10781
10782 : see if semop exists
10783 set semop d_semop
10784 eval $inlibc
10785
10786 : see how much of the 'sem*(2)' library is present.
10787 h_sem=true
10788 echo " "
10789 case "$d_semctl$d_semget$d_semop" in
10790 *"$undef"*) h_sem=false;;
10791 esac
10792 case "$osname" in
10793 freebsd)
10794     case "`ipcs 2>&1`" in
10795     "SVID messages"*"not configured"*)
10796         echo "Your $osname does not have the sem*(2) configured." >&4
10797         h_sem=false
10798         val="$undef"
10799         set semctl d_semctl
10800         eval $setvar
10801         set semget d_semget
10802         eval $setvar
10803         set semop d_semop
10804         eval $setvar
10805         ;;
10806     esac
10807     ;;
10808 esac
10809 : we could also check for sys/ipc.h ...
10810 if $h_sem && $test `./findhdr sys/sem.h`; then
10811         echo "You have the full sem*(2) library." >&4
10812         val="$define"
10813 else
10814         echo "You don't have the full sem*(2) library." >&4
10815         val="$undef"
10816 fi
10817 set d_sem
10818 eval $setvar
10819
10820 : see whether sys/sem.h defines union semun
10821 echo " "
10822 $cat > try.c <<'END'
10823 #include <sys/types.h>
10824 #include <sys/ipc.h>
10825 #include <sys/sem.h>
10826 int main () { union semun semun; semun.buf = 0; }
10827 END
10828 set try
10829 if eval $compile; then
10830     echo "You have union semun in <sys/sem.h>." >&4
10831     val="$define"
10832 else
10833     echo "You do not have union semun in <sys/sem.h>." >&4
10834     val="$undef"
10835 fi
10836 $rm -f try try.c try.h
10837 set d_union_semun
10838 eval $setvar
10839
10840 : see how to do semctl IPC_STAT
10841 case "$d_sem" in
10842 $define)
10843     : see whether semctl IPC_STAT can use union semun
10844     echo " "
10845     $cat > try.h <<END
10846 #ifndef S_IRUSR
10847 #   ifdef S_IREAD
10848 #       define S_IRUSR S_IREAD
10849 #       define S_IWUSR S_IWRITE
10850 #       define S_IXUSR S_IEXEC
10851 #   else
10852 #       define S_IRUSR 0400
10853 #       define S_IWUSR 0200
10854 #       define S_IXUSR 0100
10855 #   endif
10856 #   define S_IRGRP (S_IRUSR>>3)
10857 #   define S_IWGRP (S_IWUSR>>3)
10858 #   define S_IXGRP (S_IXUSR>>3)
10859 #   define S_IROTH (S_IRUSR>>6)
10860 #   define S_IWOTH (S_IWUSR>>6)
10861 #   define S_IXOTH (S_IXUSR>>6)
10862 #endif
10863 #ifndef S_IRWXU
10864 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10865 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10866 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10867 #endif
10868 END
10869
10870     $cat > try.c <<END
10871 #include <sys/types.h>
10872 #include <sys/ipc.h>
10873 #include <sys/sem.h>
10874 #include <sys/stat.h>
10875 #include <stdio.h>
10876 #include <errno.h>
10877 #include "try.h"
10878 #ifndef errno
10879 extern int errno;
10880 #endif
10881 #$d_union_semun HAS_UNION_SEMUN
10882 int main() {
10883     union semun
10884 #ifndef HAS_UNION_SEMUN
10885     {
10886         int val;
10887         struct semid_ds *buf;
10888         unsigned short *array;
10889     }
10890 #endif
10891     arg;
10892     int sem, st;
10893
10894 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10895     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10896     if (sem > -1) {
10897         struct semid_ds argbuf;
10898         arg.buf = &argbuf;
10899 #       ifdef IPC_STAT
10900         st = semctl(sem, 0, IPC_STAT, arg);
10901         if (st == 0)
10902             printf("semun\n");
10903         else
10904 #       endif /* IPC_STAT */
10905             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10906 #       ifdef IPC_RMID
10907         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10908 #       endif /* IPC_RMID */
10909             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10910     } else
10911 #endif /* IPC_PRIVATE && ... */
10912         printf("semget failed: errno = %d\n", errno);
10913   return 0;
10914 }
10915 END
10916     val="$undef"
10917     set try
10918     if eval $compile; then
10919         xxx=`./try`
10920         case "$xxx" in
10921         semun) val="$define" ;;
10922         esac
10923     fi
10924     $rm -f try try.c
10925     set d_semctl_semun
10926     eval $setvar
10927     case "$d_semctl_semun" in
10928     $define)
10929         echo "You can use union semun for semctl IPC_STAT." >&4
10930         also='also'
10931         ;;
10932     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10933         also=''
10934         ;;
10935     esac
10936
10937     : see whether semctl IPC_STAT can use struct semid_ds pointer
10938     $cat > try.c <<'END'
10939 #include <sys/types.h>
10940 #include <sys/ipc.h>
10941 #include <sys/sem.h>
10942 #include <sys/stat.h>
10943 #include "try.h"
10944 #include <stdio.h>
10945 #include <errno.h>
10946 #ifndef errno
10947 extern int errno;
10948 #endif
10949 int main() {
10950     struct semid_ds arg;
10951     int sem, st;
10952
10953 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10954     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10955     if (sem > -1) {
10956 #       ifdef IPC_STAT
10957         st = semctl(sem, 0, IPC_STAT, &arg);
10958         if (st == 0)
10959             printf("semid_ds\n");
10960         else
10961 #       endif /* IPC_STAT */
10962             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10963 #       ifdef IPC_RMID
10964         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10965 #       endif /* IPC_RMID */
10966             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10967     } else
10968 #endif /* IPC_PRIVATE && ... */
10969         printf("semget failed: errno = %d\n", errno);
10970
10971     return 0;
10972 }
10973 END
10974     val="$undef"
10975     set try
10976     if eval $compile; then
10977         xxx=`./try`
10978         case "$xxx" in
10979         semid_ds) val="$define" ;;
10980         esac
10981     fi
10982     $rm -f try try.c
10983     set d_semctl_semid_ds
10984     eval $setvar
10985     case "$d_semctl_semid_ds" in
10986     $define)
10987         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10988         ;;
10989     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10990         ;;
10991     esac
10992     $rm -f try.h
10993     ;;
10994 *)  val="$undef"
10995
10996     # We do not have the full sem*(2) library, so assume we can not
10997     # use either.
10998
10999     set d_semctl_semun
11000     eval $setvar
11001
11002     set d_semctl_semid_ds
11003     eval $setvar
11004     ;;
11005 esac
11006
11007 : see if setegid exists
11008 set setegid d_setegid
11009 eval $inlibc
11010
11011 : see if seteuid exists
11012 set seteuid d_seteuid
11013 eval $inlibc
11014
11015 : see if setgrent exists
11016 set setgrent d_setgrent
11017 eval $inlibc
11018
11019 : see if sethostent exists
11020 set sethostent d_sethent
11021 eval $inlibc
11022
11023 : see if setlinebuf exists
11024 set setlinebuf d_setlinebuf
11025 eval $inlibc
11026
11027 : see if setlocale exists
11028 set setlocale d_setlocale
11029 eval $inlibc
11030
11031 : see if setnetent exists
11032 set setnetent d_setnent
11033 eval $inlibc
11034
11035 : see if setprotoent exists
11036 set setprotoent d_setpent
11037 eval $inlibc
11038
11039 : see if setpgid exists
11040 set setpgid d_setpgid
11041 eval $inlibc
11042
11043 : see if setpgrp2 exists
11044 set setpgrp2 d_setpgrp2
11045 eval $inlibc
11046
11047 : see if setpriority exists
11048 set setpriority d_setprior
11049 eval $inlibc
11050
11051 : see if setproctitle exists
11052 set setproctitle d_setproctitle
11053 eval $inlibc
11054
11055 : see if setpwent exists
11056 set setpwent d_setpwent
11057 eval $inlibc
11058
11059 : see if setregid exists
11060 set setregid d_setregid
11061 eval $inlibc
11062 set setresgid d_setresgid
11063 eval $inlibc
11064
11065 : see if setreuid exists
11066 set setreuid d_setreuid
11067 eval $inlibc
11068 set setresuid d_setresuid
11069 eval $inlibc
11070
11071 : see if setrgid exists
11072 set setrgid d_setrgid
11073 eval $inlibc
11074
11075 : see if setruid exists
11076 set setruid d_setruid
11077 eval $inlibc
11078
11079 : see if setservent exists
11080 set setservent d_setsent
11081 eval $inlibc
11082
11083 : see if setsid exists
11084 set setsid d_setsid
11085 eval $inlibc
11086
11087 : see if setvbuf exists
11088 set setvbuf d_setvbuf
11089 eval $inlibc
11090
11091 : see if sfio.h is available
11092 set sfio.h i_sfio
11093 eval $inhdr
11094
11095
11096 : see if sfio library is available
11097 case "$i_sfio" in
11098 $define)
11099         val=''
11100         set sfreserve val
11101         eval $inlibc
11102         ;;
11103 *)
11104         val="$undef"
11105         ;;
11106 esac
11107 : Ok, but do we want to use it.
11108 case "$val" in
11109 $define)
11110         case "$usesfio" in
11111         true|$define|[yY]*) dflt='y';;
11112         *) dflt='n';;
11113         esac
11114         echo "$package can use the sfio library, but it is experimental."
11115         case "$useperlio" in
11116         "$undef")
11117             echo "For sfio also the PerlIO abstraction layer is needed."
11118             echo "Earlier you said you wouldn't want that."
11119             ;;
11120         esac
11121         rp="You seem to have sfio available, do you want to try using it?"
11122         . ./myread
11123         case "$ans" in
11124         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11125                 useperlio="$define"
11126                 val="$define"
11127                 ;;
11128         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11129                 val="$undef"
11130                 : Remove sfio from list of libraries to use
11131                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11132                 shift
11133                 libs="$*"
11134                 echo "libs = $libs" >&4
11135                 ;;
11136         esac
11137         ;;
11138 *)      case "$usesfio" in
11139         true|$define|[yY]*)
11140                 echo "Sorry, cannot find sfio on this machine." >&4
11141                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11142                 val="$undef"
11143                 ;;
11144         esac
11145         ;;
11146 esac
11147 set d_sfio
11148 eval $setvar
11149 case "$d_sfio" in
11150 $define) usesfio='true';;
11151 *) usesfio='false';;
11152 esac
11153
11154 : see if shmctl exists
11155 set shmctl d_shmctl
11156 eval $inlibc
11157
11158 : see if shmget exists
11159 set shmget d_shmget
11160 eval $inlibc
11161
11162 : see if shmat exists
11163 set shmat d_shmat
11164 eval $inlibc
11165 : see what shmat returns
11166 case "$d_shmat" in
11167 "$define")
11168         $cat >shmat.c <<'END'
11169 #include <sys/shm.h>
11170 void *shmat();
11171 END
11172         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11173                 shmattype='void *'
11174         else
11175                 shmattype='char *'
11176         fi
11177         echo "and it returns ($shmattype)." >&4
11178         : see if a prototype for shmat is available
11179         xxx=`./findhdr sys/shm.h`
11180         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11181         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11182                 val="$define"
11183         else
11184                 val="$undef"
11185         fi
11186         $rm -f shmat.[co]
11187         ;;
11188 *)
11189         val="$undef"
11190         ;;
11191 esac
11192 set d_shmatprototype
11193 eval $setvar
11194
11195 : see if shmdt exists
11196 set shmdt d_shmdt
11197 eval $inlibc
11198
11199 : see how much of the 'shm*(2)' library is present.
11200 h_shm=true
11201 echo " "
11202 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11203 *"$undef"*) h_shm=false;;
11204 esac
11205 case "$osname" in
11206 freebsd)
11207     case "`ipcs 2>&1`" in
11208     "SVID shared memory"*"not configured"*)
11209         echo "Your $osname does not have the shm*(2) configured." >&4
11210         h_shm=false
11211         val="$undef"
11212         set shmctl d_shmctl
11213         evat $setvar
11214         set shmget d_shmget
11215         evat $setvar
11216         set shmat d_shmat
11217         evat $setvar
11218         set shmdt d_shmdt
11219         evat $setvar
11220         ;;
11221     esac
11222     ;;
11223 esac
11224 : we could also check for sys/ipc.h ...
11225 if $h_shm && $test `./findhdr sys/shm.h`; then
11226         echo "You have the full shm*(2) library." >&4
11227         val="$define"
11228 else
11229         echo "You don't have the full shm*(2) library." >&4
11230         val="$undef"
11231 fi
11232 set d_shm
11233 eval $setvar
11234
11235 echo " "
11236 : see if we have sigaction
11237 if set sigaction val -f d_sigaction; eval $csym; $val; then
11238         echo 'sigaction() found.' >&4
11239         $cat > try.c <<'EOP'
11240 #include <stdio.h>
11241 #include <sys/types.h>
11242 #include <signal.h>
11243 int main()
11244 {
11245     struct sigaction act, oact;
11246     act.sa_flags = 0;
11247     oact.sa_handler = 0;
11248     /* so that act and oact are used */
11249     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11250 }
11251 EOP
11252         set try
11253         if eval $compile_ok; then
11254                 val="$define"
11255         else
11256                 echo "But you don't seem to have a useable struct sigaction." >&4
11257                 val="$undef"
11258         fi
11259 else
11260         echo 'sigaction NOT found.' >&4
11261         val="$undef"
11262 fi
11263 set d_sigaction; eval $setvar
11264 $rm -f try try$_o try.c
11265
11266 : see if sigsetjmp exists
11267 echo " "
11268 case "$d_sigsetjmp" in
11269 '')
11270         $cat >try.c <<'EOP'
11271 #include <setjmp.h>
11272 sigjmp_buf env;
11273 int set = 1;
11274 int main()
11275 {
11276         if (sigsetjmp(env,1))
11277                 exit(set);
11278         set = 0;
11279         siglongjmp(env, 1);
11280         exit(1);
11281 }
11282 EOP
11283         set try
11284         if eval $compile; then
11285                 if ./try >/dev/null 2>&1; then
11286                         echo "POSIX sigsetjmp found." >&4
11287                         val="$define"
11288                 else
11289                         $cat >&4 <<EOM
11290 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11291 I'll ignore them.
11292 EOM
11293                         val="$undef"
11294                 fi
11295         else
11296                 echo "sigsetjmp not found." >&4
11297                 val="$undef"
11298         fi
11299         ;;
11300 *) val="$d_sigsetjmp"
11301         case "$d_sigsetjmp" in
11302         $define) echo "POSIX sigsetjmp found." >&4;;
11303         $undef) echo "sigsetjmp not found." >&4;;
11304         esac
11305         ;;
11306 esac
11307 set d_sigsetjmp
11308 eval $setvar
11309 $rm -f try.c try
11310
11311 : see if socks5_init exists
11312 set socks5_init d_socks5_init
11313 eval $inlibc
11314
11315 : see if sys/stat.h is available
11316 set sys/stat.h i_sysstat
11317 eval $inhdr
11318
11319
11320 : see if stat knows about block sizes
11321 echo " "
11322 echo "Checking to see if your struct stat has st_blocks field..." >&4
11323 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11324 eval $hasfield
11325
11326
11327 : see if this is a sys/vfs.h system
11328 set sys/vfs.h i_sysvfs
11329 eval $inhdr
11330
11331
11332 : see if this is a sys/statfs.h system
11333 set sys/statfs.h i_sysstatfs
11334 eval $inhdr
11335
11336
11337 echo " "
11338 echo "Checking to see if your system supports struct statfs..." >&4
11339 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
11340 eval $hasstruct
11341 case "$d_statfs_s" in
11342 "$define")      echo "Yes, it does."   ;;
11343 *)              echo "No, it doesn't." ;;
11344 esac
11345
11346
11347
11348 : see if struct statfs knows about f_flags
11349 case "$d_statfs_s" in
11350 define) 
11351         echo " "
11352         echo "Checking to see if your struct statfs has f_flags field..." >&4
11353         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
11354         eval $hasfield
11355         ;;
11356 *)      val="$undef"
11357         set d_statfs_f_flags
11358         eval $setvar
11359         ;;
11360 esac
11361 case "$d_statfs_f_flags" in
11362 "$define")      echo "Yes, it does."   ;;
11363 *)              echo "No, it doesn't." ;;
11364 esac
11365
11366 : see if _ptr and _cnt from stdio act std
11367 echo " "
11368 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11369         echo "(Looks like you have stdio.h from Linux.)"
11370         case "$stdio_ptr" in
11371         '') stdio_ptr='((fp)->_IO_read_ptr)'
11372                 ptr_lval=$define
11373                 ;;
11374         *)      ptr_lval=$d_stdio_ptr_lval;;
11375         esac
11376         case "$stdio_cnt" in
11377         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11378                 cnt_lval=$undef
11379                 ;;
11380         *)      cnt_lval=$d_stdio_cnt_lval;;
11381         esac
11382         case "$stdio_base" in
11383         '') stdio_base='((fp)->_IO_read_base)';;
11384         esac
11385         case "$stdio_bufsiz" in
11386         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11387         esac
11388 else
11389         case "$stdio_ptr" in
11390         '') stdio_ptr='((fp)->_ptr)'
11391                 ptr_lval=$define
11392                 ;;
11393         *)      ptr_lval=$d_stdio_ptr_lval;;
11394         esac
11395         case "$stdio_cnt" in
11396         '') stdio_cnt='((fp)->_cnt)'
11397                 cnt_lval=$define
11398                 ;;
11399         *)      cnt_lval=$d_stdio_cnt_lval;;
11400         esac
11401         case "$stdio_base" in
11402         '') stdio_base='((fp)->_base)';;
11403         esac
11404         case "$stdio_bufsiz" in
11405         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11406         esac
11407 fi
11408 : test whether _ptr and _cnt really work
11409 echo "Checking how std your stdio is..." >&4
11410 $cat >try.c <<EOP
11411 #include <stdio.h>
11412 #define FILE_ptr(fp)    $stdio_ptr
11413 #define FILE_cnt(fp)    $stdio_cnt
11414 int main() {
11415         FILE *fp = fopen("try.c", "r");
11416         char c = getc(fp);
11417         if (
11418                 18 <= FILE_cnt(fp) &&
11419                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11420         )
11421                 exit(0);
11422         exit(1);
11423 }
11424 EOP
11425 val="$undef"
11426 set try
11427 if eval $compile; then
11428         if ./try; then
11429                 echo "Your stdio acts pretty std."
11430                 val="$define"
11431         else
11432                 echo "Your stdio isn't very std."
11433         fi
11434 else
11435         echo "Your stdio doesn't appear very std."
11436 fi
11437 $rm -f try.c try
11438 set d_stdstdio
11439 eval $setvar
11440
11441 : Can _ptr be used as an lvalue?
11442 case "$d_stdstdio$ptr_lval" in
11443 $define$define) val=$define ;;
11444 *) val=$undef ;;
11445 esac
11446 set d_stdio_ptr_lval
11447 eval $setvar
11448
11449 : Can _cnt be used as an lvalue?
11450 case "$d_stdstdio$cnt_lval" in
11451 $define$define) val=$define ;;
11452 *) val=$undef ;;
11453 esac
11454 set d_stdio_cnt_lval
11455 eval $setvar
11456
11457 : see if _base is also standard
11458 val="$undef"
11459 case "$d_stdstdio" in
11460 $define)
11461         $cat >try.c <<EOP
11462 #include <stdio.h>
11463 #define FILE_base(fp)   $stdio_base
11464 #define FILE_bufsiz(fp) $stdio_bufsiz
11465 int main() {
11466         FILE *fp = fopen("try.c", "r");
11467         char c = getc(fp);
11468         if (
11469                 19 <= FILE_bufsiz(fp) &&
11470                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11471         )
11472                 exit(0);
11473         exit(1);
11474 }
11475 EOP
11476         set try
11477         if eval $compile; then
11478                 if ./try; then
11479                         echo "And its _base field acts std."
11480                         val="$define"
11481                 else
11482                         echo "But its _base field isn't std."
11483                 fi
11484         else
11485                 echo "However, it seems to be lacking the _base field."
11486         fi
11487         $rm -f try.c try
11488         ;;
11489 esac
11490 set d_stdiobase
11491 eval $setvar
11492
11493 $cat >&4 <<EOM
11494 Checking how to access stdio streams by file descriptor number...
11495 EOM
11496 case "$stdio_stream_array" in
11497 '')     $cat >try.c <<EOCP
11498 #include <stdio.h>
11499 int main() {
11500   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11501     printf("yes\n");
11502 }
11503 EOCP
11504         for s in _iob __iob __sF
11505         do
11506                 set try -DSTDIO_STREAM_ARRAY=$s
11507                 if eval $compile; then
11508                         case "`./try$exe_ext`" in
11509                         yes)    stdio_stream_array=$s; break ;;
11510                         esac
11511                 fi
11512         done
11513         $rm -f try.* try$exe_ext
11514 esac
11515 case "$stdio_stream_array" in
11516 '')     $cat >&4 <<EOM
11517 I can't figure out how to access stdio streams by file descriptor number.
11518 EOM
11519         d_stdio_stream_array="$undef"
11520         ;;
11521 *)      $cat >&4 <<EOM
11522 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11523 EOM
11524         d_stdio_stream_array="$define"
11525         ;;
11526 esac
11527
11528 : see if strcoll exists
11529 set strcoll d_strcoll
11530 eval $inlibc
11531
11532 : check for structure copying
11533 echo " "
11534 echo "Checking to see if your C compiler can copy structs..." >&4
11535 $cat >try.c <<'EOCP'
11536 int main()
11537 {
11538         struct blurfl {
11539                 int dyick;
11540         } foo, bar;
11541
11542         foo = bar;
11543 }
11544 EOCP
11545 if $cc -c try.c >/dev/null 2>&1 ; then
11546         val="$define"
11547         echo "Yup, it can."
11548 else
11549         val="$undef"
11550         echo "Nope, it can't."
11551 fi
11552 set d_strctcpy
11553 eval $setvar
11554 $rm -f try.*
11555
11556 : see if strerror and/or sys_errlist[] exist
11557 echo " "
11558 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11559     if set strerror val -f d_strerror; eval $csym; $val; then
11560                 echo 'strerror() found.' >&4
11561                 d_strerror="$define"
11562                 d_strerrm='strerror(e)'
11563                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11564                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11565                         d_syserrlst="$define"
11566                 else
11567                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11568                         d_syserrlst="$undef"
11569                 fi
11570     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11571                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11572                 echo 'strerror() found in string header.' >&4
11573                 d_strerror="$define"
11574                 d_strerrm='strerror(e)'
11575                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11576                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11577                                 d_syserrlst="$define"
11578                 else
11579                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11580                         d_syserrlst="$undef"
11581                 fi
11582     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11583                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11584                 d_strerror="$undef"
11585                 d_syserrlst="$define"
11586                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11587     else
11588                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11589                 d_strerror="$undef"
11590                 d_syserrlst="$undef"
11591                 d_strerrm='"unknown"'
11592     fi
11593 fi
11594
11595 : see if strtod exists
11596 set strtod d_strtod
11597 eval $inlibc
11598
11599 : see if strtol exists
11600 set strtol d_strtol
11601 eval $inlibc
11602
11603 : see if strtold exists
11604 set strtold d_strtold
11605 eval $inlibc
11606
11607 : see if strtoll exists
11608 set strtoll d_strtoll
11609 eval $inlibc
11610
11611 case "$d_longlong-$d_strtoll" in
11612 "$define-$define")
11613         $cat <<EOM
11614 Checking whether your strtoll() works okay...
11615 EOM
11616         $cat >try.c <<'EOCP'
11617 #include <errno.h>
11618 #ifdef __hpux
11619 #define strtoll __strtoll
11620 #endif
11621 #ifdef __EMX__
11622 #define strtoll _strtoll
11623 #endif
11624 #include <stdio.h>
11625 extern long long int strtoll(char *s, char **, int); 
11626 static int bad = 0;
11627 int check(char *s, long long ell, int een) {
11628         long long gll;
11629         errno = 0;
11630         gll = strtoll(s, 0, 10);
11631         if (!((gll == ell) && (errno == een)))
11632                 bad++;
11633 }
11634 int main() {
11635         check(" 1",                                      1LL, 0);
11636         check(" 0",                                      0LL, 0);
11637         check("-1",                                     -1LL, 0);
11638         check("-9223372036854775808", -9223372036854775808LL, 0);
11639         check("-9223372036854775808", -9223372036854775808LL, 0);
11640         check(" 9223372036854775807",  9223372036854775807LL, 0);
11641         check("-9223372036854775808", -9223372036854775808LL, 0);
11642         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11643         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11644         if (!bad)
11645                 printf("ok\n");
11646 }
11647 EOCP
11648         set try
11649         if eval $compile; then
11650                 yyy=`./try`
11651                 case "$yyy" in
11652                 ok) echo "Your strtoll() seems to be working okay." ;;
11653                 *) cat <<EOM >&4
11654 Your strtoll() doesn't seem to be working okay.
11655 EOM
11656                    d_strtoll="$undef"
11657                    ;;
11658                 esac
11659         else
11660                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11661                 d_strtoll="$undef"
11662         fi
11663         ;;
11664 esac
11665
11666 : see if strtoul exists
11667 set strtoul d_strtoul
11668 eval $inlibc
11669
11670 : see if strtoull exists
11671 set strtoull d_strtoull
11672 eval $inlibc
11673
11674 case "$d_longlong-$d_strtoull" in
11675 "$define-$define")
11676         $cat <<EOM
11677 Checking whether your strtoull() works okay...
11678 EOM
11679         $cat >try.c <<'EOCP'
11680 #include <errno.h>
11681 #ifdef __hpux
11682 #define strtoull __strtoull
11683 #endif
11684 #include <stdio.h>
11685 extern unsigned long long int strtoull(char *s, char **, int); 
11686 static int bad = 0;
11687 int check(char *s, long long eull, int een) {
11688         long long gull;
11689         errno = 0;
11690         gull = strtoull(s, 0, 10);
11691         if (!((gull == eull) && (errno == een)))
11692                 bad++;
11693 }
11694 int main() {
11695         check(" 1",                                       1LL, 0);
11696         check(" 0",                                       0LL, 0);
11697         check("18446744073709551615", 18446744073709551615ULL, 0);
11698         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11699         if (!bad)
11700                 printf("ok\n");
11701 }
11702 EOCP
11703         set try
11704         if eval $compile; then
11705                 case "`./try`" in
11706                 ok) echo "Your strtoull() seems to be working okay." ;;
11707                 *) cat <<EOM >&4
11708 Your strtoull() doesn't seem to be working okay.
11709 EOM
11710                    d_strtoull="$undef"
11711                    ;;
11712                 esac
11713         fi
11714         ;;
11715 esac
11716
11717 : see if strtouq exists
11718 set strtouq d_strtouq
11719 eval $inlibc
11720
11721 : see if strxfrm exists
11722 set strxfrm d_strxfrm
11723 eval $inlibc
11724
11725 : see if symlink exists
11726 set symlink d_symlink
11727 eval $inlibc
11728
11729 : see if syscall exists
11730 set syscall d_syscall
11731 eval $inlibc
11732
11733 : see if sysconf exists
11734 set sysconf d_sysconf
11735 eval $inlibc
11736
11737 : see if system exists
11738 set system d_system
11739 eval $inlibc
11740
11741 : see if tcgetpgrp exists
11742 set tcgetpgrp d_tcgetpgrp
11743 eval $inlibc
11744
11745 : see if tcsetpgrp exists
11746 set tcsetpgrp d_tcsetpgrp
11747 eval $inlibc
11748
11749 : see if prototype for telldir is available
11750 echo " "
11751 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11752 eval $hasproto
11753
11754 : see if this is a sys/times.h system
11755 set sys/times.h i_systimes
11756 eval $inhdr
11757
11758 : see if times exists
11759 echo " "
11760 if set times val -f d_times; eval $csym; $val; then
11761         echo 'times() found.' >&4
11762         d_times="$define"
11763         inc=''
11764         case "$i_systimes" in
11765         "$define") inc='sys/times.h';;
11766         esac
11767         rp="What is the type returned by times() on this system?"
11768         set clock_t clocktype long stdio.h sys/types.h $inc
11769         eval $typedef_ask
11770 else
11771         echo 'times() NOT found, hope that will do.' >&4
11772         d_times="$undef"
11773         clocktype='int'
11774 fi
11775
11776 : see if truncate exists
11777 set truncate d_truncate
11778 eval $inlibc
11779
11780 : see if tzname[] exists
11781 echo " "
11782 if set tzname val -a d_tzname; eval $csym; $val; then
11783         val="$define"
11784         echo 'tzname[] found.' >&4
11785 else
11786         val="$undef"
11787         echo 'tzname[] NOT found.' >&4
11788 fi
11789 set d_tzname
11790 eval $setvar
11791
11792 : see if umask exists
11793 set umask d_umask
11794 eval $inlibc
11795
11796 : see if ustat exists
11797 set ustat d_ustat
11798 eval $inlibc
11799
11800 : backward compatibility for d_hvfork
11801 if test X$d_hvfork != X; then
11802         d_vfork="$d_hvfork"
11803         d_hvfork=''
11804 fi
11805 : see if there is a vfork
11806 val=''
11807 set vfork val
11808 eval $inlibc
11809
11810 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11811 : perl on Solaris 2.x, and probably elsewhere.
11812 case "$val" in
11813 $define)
11814         echo " "
11815         case "$usevfork" in
11816         false) dflt='n';;
11817         *) dflt='y';;
11818         esac
11819         cat <<'EOM'
11820  
11821 Perl can only use a vfork() that doesn't suffer from strict
11822 restrictions on calling functions or modifying global data in
11823 the child.  For example, glibc-2.1 contains such a vfork()
11824 that is unsuitable.  If your system provides a proper fork()
11825 call, chances are that you do NOT want perl to use vfork().
11826
11827 EOM
11828         rp="Do you still want to use vfork()?"
11829         . ./myread
11830         case "$ans" in
11831         y|Y) ;;
11832         *)
11833                 echo "Ok, we won't use vfork()."
11834                 val="$undef"
11835                 ;;
11836         esac
11837         ;;
11838 esac
11839 set d_vfork
11840 eval $setvar
11841 case "$d_vfork" in
11842 $define) usevfork='true';;
11843 *) usevfork='false';;
11844 esac
11845
11846 : see if this is an sysdir system
11847 set sys/dir.h i_sysdir
11848 eval $inhdr
11849
11850 : see if this is an sysndir system
11851 set sys/ndir.h i_sysndir
11852 eval $inhdr
11853
11854 : see if closedir exists
11855 set closedir d_closedir
11856 eval $inlibc
11857
11858 case "$d_closedir" in
11859 "$define")
11860         echo " "
11861         echo "Checking whether closedir() returns a status..." >&4
11862         cat > closedir.c <<EOM
11863 #$i_dirent I_DIRENT             /**/
11864 #$i_sysdir I_SYS_DIR            /**/
11865 #$i_sysndir I_SYS_NDIR          /**/
11866 #$i_systypes I_SYS_TYPES        /**/
11867
11868 #if defined(I_SYS_TYPES)
11869 #include <sys/types.h>
11870 #endif
11871 #if defined(I_DIRENT)
11872 #include <dirent.h>
11873 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11874 #include <sys/dir.h>
11875 #endif
11876 #else
11877 #ifdef I_SYS_NDIR
11878 #include <sys/ndir.h>
11879 #else
11880 #ifdef I_SYS_DIR
11881 #ifdef hp9000s500
11882 #include <ndir.h>       /* may be wrong in the future */
11883 #else
11884 #include <sys/dir.h>
11885 #endif
11886 #endif
11887 #endif
11888 #endif 
11889 int main() { return closedir(opendir(".")); }
11890 EOM
11891         set closedir
11892         if eval $compile_ok; then
11893                 if ./closedir > /dev/null 2>&1 ; then
11894                         echo "Yes, it does."
11895                         val="$undef"
11896                 else
11897                         echo "No, it doesn't."
11898                         val="$define"
11899                 fi
11900         else
11901                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11902                 val="$define"
11903         fi
11904         ;;
11905 *)
11906         val="$undef";
11907         ;;
11908 esac
11909 set d_void_closedir
11910 eval $setvar
11911 $rm -f closedir*
11912 : check for volatile keyword
11913 echo " "
11914 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11915 $cat >try.c <<'EOCP'
11916 int main()
11917 {
11918         typedef struct _goo_struct goo_struct;
11919         goo_struct * volatile goo = ((goo_struct *)0);
11920         struct _goo_struct {
11921                 long long_int;
11922                 int reg_int;
11923                 char char_var;
11924         };
11925         typedef unsigned short foo_t;
11926         char *volatile foo;
11927         volatile int bar;
11928         volatile foo_t blech;
11929         foo = foo;
11930 }
11931 EOCP
11932 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11933         val="$define"
11934         echo "Yup, it does."
11935 else
11936         val="$undef"
11937         echo "Nope, it doesn't."
11938 fi
11939 set d_volatile
11940 eval $setvar
11941 $rm -f try.*
11942
11943 : see if there is a wait4
11944 set wait4 d_wait4
11945 eval $inlibc
11946
11947 : see if waitpid exists
11948 set waitpid d_waitpid
11949 eval $inlibc
11950
11951 : see if wcstombs exists
11952 set wcstombs d_wcstombs
11953 eval $inlibc
11954
11955 : see if wctomb exists
11956 set wctomb d_wctomb
11957 eval $inlibc
11958
11959 : preserve RCS keywords in files with variable substitution, grrr
11960 Date='$Date'
11961 Id='$Id'
11962 Log='$Log'
11963 RCSfile='$RCSfile'
11964 Revision='$Revision'
11965
11966 case "$crosscompile" in
11967 ''|[nN]*) crosscompile="$undef" ;;
11968 esac
11969
11970 case "$osname" in
11971 next|rhapsody|darwin) multiarch="$define" ;;
11972 esac
11973 case "$multiarch" in
11974 ''|[nN]*) multiarch="$undef" ;;
11975 esac
11976
11977 : check for alignment requirements
11978 echo " "
11979 case "$crosscompile$multiarch" in
11980 *$define*)
11981         $cat <<EOM
11982 You seem to be either cross-compiling or doing a multiarchitecture build,
11983 skipping the memory alignment check.
11984
11985 EOM
11986         case "$alignbytes" in
11987         '') alignbytes=8 ;;
11988         esac
11989         ;;
11990 *)
11991         case "$alignbytes" in
11992         '') echo "Checking alignment constraints..." >&4
11993                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11994                         $cat >try.c <<'EOCP'
11995 typedef long double NV;
11996 EOCP
11997                 else
11998                         $cat >try.c <<'EOCP'
11999 typedef double NV;
12000 EOCP
12001                 fi
12002                 $cat >>try.c <<'EOCP'
12003 #include <stdio.h>
12004 struct foobar {
12005         char foo;
12006         NV bar;
12007 } try_algn;
12008 int main()
12009 {
12010     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12011     return(0);
12012 }
12013 EOCP
12014                 set try
12015                 if eval $compile_ok; then
12016                         dflt=`./try`
12017                 else
12018                         dflt='8'
12019                         echo "(I can't seem to compile the test program...)"
12020                 fi
12021                 ;;
12022         *) dflt="$alignbytes"
12023                 ;;
12024         esac
12025         rp="Doubles must be aligned on a how-many-byte boundary?"
12026         . ./myread
12027         alignbytes="$ans"
12028         $rm -f try.c try
12029         ;;
12030 esac
12031
12032
12033 : set the base revision
12034 baserev=5.0
12035
12036 : check for ordering of bytes in a long
12037 echo " "
12038 case "$crosscompile$multiarch" in
12039 *$define*)
12040         $cat <<EOM
12041 You seem to be either cross-compiling or doing a multiarchitecture build,
12042 skipping the byteorder check.
12043
12044 EOM
12045         byteorder='0xffff'
12046         ;;
12047 *)
12048         case "$byteorder" in
12049         '')
12050                 $cat <<'EOM'
12051 In the following, larger digits indicate more significance.  A big-endian
12052 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12053 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12054 machines may have weird orders like 3412.  A Cray will report 87654321,
12055 an Alpha will report 12345678. If the test program works the default is
12056 probably right.
12057 I'm now running the test program...
12058 EOM
12059                 $cat >try.c <<'EOCP'
12060 #include <stdio.h>
12061 int main()
12062 {
12063         int i;
12064         union {
12065                 unsigned long l;
12066                 char c[sizeof(long)];
12067         } u;
12068
12069         if (sizeof(long) > 4)
12070                 u.l = (0x08070605L << 32) | 0x04030201L;
12071         else
12072                 u.l = 0x04030201L;
12073         for (i = 0; i < sizeof(long); i++)
12074                 printf("%c", u.c[i]+'0');
12075         printf("\n");
12076         exit(0);
12077 }
12078 EOCP
12079                 xxx_prompt=y
12080                 set try
12081                 if eval $compile && ./try > /dev/null; then
12082                         dflt=`./try`
12083                         case "$dflt" in
12084                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12085                                 echo "(The test program ran ok.)"
12086                                 echo "byteorder=$dflt"
12087                                 xxx_prompt=n
12088                         ;;
12089                         ????|????????) echo "(The test program ran ok.)" ;;
12090                         *) echo "(The test program didn't run right for some reason.)" ;;
12091                         esac
12092                 else
12093                         dflt='4321'
12094                         cat <<'EOM'
12095 (I can't seem to compile the test program.  Guessing big-endian...)
12096 EOM
12097                 fi
12098                 case "$xxx_prompt" in
12099                 y)
12100                         rp="What is the order of bytes in a long?"
12101                         . ./myread
12102                         byteorder="$ans"
12103                         ;;
12104                 *)      byteorder=$dflt
12105                         ;;
12106                 esac
12107                 ;;
12108         esac
12109         $rm -f try.c try
12110         ;;
12111 esac
12112
12113
12114 : how do we catenate cpp tokens here?
12115 echo " "
12116 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12117 $cat >cpp_stuff.c <<'EOCP'
12118 #define RCAT(a,b)a/**/b
12119 #define ACAT(a,b)a ## b
12120 RCAT(Rei,ser)
12121 ACAT(Cir,cus)
12122 EOCP
12123 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12124 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12125         echo "Oh!  Smells like ANSI's been here." >&4
12126         echo "We can catify or stringify, separately or together!"
12127         cpp_stuff=42
12128 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12129         echo "Ah, yes!  The good old days!" >&4
12130         echo "However, in the good old days we don't know how to stringify and"
12131         echo "catify at the same time."
12132         cpp_stuff=1
12133 else
12134         $cat >&4 <<EOM
12135 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12136 to have to edit the values of CAT[2-5] in config.h...
12137 EOM
12138         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12139 fi
12140 $rm -f cpp_stuff.*
12141
12142 : see if this is a db.h system
12143 set db.h i_db
12144 eval $inhdr
12145
12146 case "$i_db" in
12147 $define)
12148         : Check db version.
12149         echo " "
12150         echo "Checking Berkeley DB version ..." >&4
12151         $cat >try.c <<EOCP
12152 #$d_const HASCONST
12153 #ifndef HASCONST
12154 #define const
12155 #endif
12156 #include <sys/types.h>
12157 #include <stdio.h>
12158 #include <db.h>
12159 int main()
12160 {
12161 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12162     int Major, Minor, Patch ;
12163     unsigned long Version ;
12164     (void)db_version(&Major, &Minor, &Patch) ;
12165     printf("You have Berkeley DB Version 2 or greater\n");
12166
12167     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12168                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12169     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12170                 Major, Minor, Patch) ;
12171
12172     /* check that db.h & libdb are compatible */
12173     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12174         printf("db.h and libdb are incompatible\n") ;
12175         exit(3);        
12176     }
12177
12178     printf("db.h and libdb are compatible\n") ;
12179
12180     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12181                 + DB_VERSION_PATCH ;
12182
12183     /* needs to be >= 2.3.4 */
12184     if (Version < 2003004) {
12185     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12186         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12187         exit(2);        
12188     }
12189
12190     exit(0);
12191 #else
12192 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12193     printf("You have Berkeley DB Version 1\n");
12194     exit(0);    /* DB version < 2: the coast is clear. */
12195 #else
12196     exit(1);    /* <db.h> not Berkeley DB? */
12197 #endif
12198 #endif
12199 }
12200 EOCP
12201         set try
12202         if eval $compile_ok && ./try; then
12203                 echo 'Looks OK.' >&4
12204         else
12205                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12206                 i_db=$undef
12207                 case " $libs " in
12208                 *"-ldb "*)
12209                         : Remove db from list of libraries to use
12210                         echo "Removing unusable -ldb from library list" >&4
12211                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12212                         shift
12213                         libs="$*"
12214                         echo "libs = $libs" >&4
12215                         ;;
12216                 esac
12217         fi
12218         $rm -f try.*
12219         ;;
12220 esac
12221
12222 case "$i_db" in
12223 define)
12224         : Check the return type needed for hash 
12225         echo " "
12226         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12227         $cat >try.c <<EOCP
12228 #$d_const HASCONST
12229 #ifndef HASCONST
12230 #define const
12231 #endif
12232 #include <sys/types.h>
12233 #include <db.h>
12234
12235 #ifndef DB_VERSION_MAJOR
12236 u_int32_t hash_cb (ptr, size)
12237 const void *ptr;
12238 size_t size;
12239 {
12240 }
12241 HASHINFO info;
12242 int main()
12243 {
12244         info.hash = hash_cb;
12245 }
12246 #endif
12247 EOCP
12248         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12249                 if $contains warning try.out >>/dev/null 2>&1 ; then
12250                         db_hashtype='int'
12251                 else
12252                         db_hashtype='u_int32_t'
12253                 fi
12254         else
12255                 : XXX Maybe we should just give up here.
12256                 db_hashtype=u_int32_t
12257                 $cat try.out >&4
12258                 echo "Help:  I can't seem to compile the db test program." >&4
12259                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12260         fi
12261         $rm -f try.*
12262         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12263         ;;
12264 *)      db_hashtype=u_int32_t
12265         ;;
12266 esac
12267 case "$i_db" in
12268 define)
12269         : Check the return type needed for prefix 
12270         echo " "
12271         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12272         cat >try.c <<EOCP
12273 #$d_const HASCONST
12274 #ifndef HASCONST
12275 #define const
12276 #endif
12277 #include <sys/types.h>
12278 #include <db.h>
12279
12280 #ifndef DB_VERSION_MAJOR
12281 size_t prefix_cb (key1, key2)
12282 const DBT *key1;
12283 const DBT *key2;
12284 {
12285 }
12286 BTREEINFO info;
12287 int main()
12288 {
12289         info.prefix = prefix_cb;
12290 }
12291 #endif
12292 EOCP
12293         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12294                 if $contains warning try.out >>/dev/null 2>&1 ; then
12295                         db_prefixtype='int'
12296                 else
12297                         db_prefixtype='size_t'
12298                 fi
12299         else
12300                 db_prefixtype='size_t'
12301                 : XXX Maybe we should just give up here.
12302                 $cat try.out >&4
12303                 echo "Help:  I can't seem to compile the db test program." >&4
12304                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12305         fi
12306         $rm -f try.*
12307         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12308         ;;
12309 *)      db_prefixtype='size_t'
12310         ;;
12311 esac
12312
12313 : check for void type
12314 echo " "
12315 echo "Checking to see how well your C compiler groks the void type..." >&4
12316 case "$voidflags" in
12317 '')
12318         $cat >try.c <<'EOCP'
12319 #if TRY & 1
12320 void sub() {
12321 #else
12322 sub() {
12323 #endif
12324         extern void moo();      /* function returning void */
12325         void (*goo)();          /* ptr to func returning void */
12326 #if TRY & 8
12327         void *hue;              /* generic ptr */
12328 #endif
12329 #if TRY & 2
12330         void (*foo[10])();
12331 #endif
12332
12333 #if TRY & 4
12334         if(goo == moo) {
12335                 exit(0);
12336         }
12337 #endif
12338         exit(0);
12339 }
12340 int main() { sub(); }
12341 EOCP
12342         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12343                 voidflags=$defvoidused
12344         echo "Good.  It appears to support void to the level $package wants.">&4
12345                 if $contains warning .out >/dev/null 2>&1; then
12346                         echo "However, you might get some warnings that look like this:"
12347                         $cat .out
12348                 fi
12349         else
12350 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12351                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12352                         echo "It supports 1..."
12353                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12354                                 echo "It also supports 2..."
12355                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12356                                         voidflags=7
12357                                         echo "And it supports 4 but not 8 definitely."
12358                                 else
12359                                         echo "It doesn't support 4..."
12360                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12361                                                 voidflags=11
12362                                                 echo "But it supports 8."
12363                                         else
12364                                                 voidflags=3
12365                                                 echo "Neither does it support 8."
12366                                         fi
12367                                 fi
12368                         else
12369                                 echo "It does not support 2..."
12370                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12371                                         voidflags=13
12372                                         echo "But it supports 4 and 8."
12373                                 else
12374                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12375                                                 voidflags=5
12376                                                 echo "And it supports 4 but has not heard about 8."
12377                                         else
12378                                                 echo "However it supports 8 but not 4."
12379                                         fi
12380                                 fi
12381                         fi
12382                 else
12383                         echo "There is no support at all for void."
12384                         voidflags=0
12385                 fi
12386         fi
12387 esac
12388 case "$voidflags" in
12389 "$defvoidused") ;;
12390 *)      $cat >&4 <<'EOM'
12391   Support flag bits are:
12392     1: basic void declarations.
12393     2: arrays of pointers to functions returning void.
12394     4: operations between pointers to and addresses of void functions.
12395     8: generic void pointers.
12396 EOM
12397         dflt="$voidflags";
12398         rp="Your void support flags add up to what?"
12399         . ./myread
12400         voidflags="$ans"
12401         ;;
12402 esac
12403 $rm -f try.* .out
12404
12405
12406 : How can we generate normalized random numbers ?
12407 echo " "
12408 echo "Looking for a random number function..." >&4
12409 case "$randfunc" in
12410 '')
12411         if set drand48 val -f; eval $csym; $val; then
12412                 dflt="drand48"
12413                 echo "Good, found drand48()." >&4
12414         elif set random val -f; eval $csym; $val; then
12415                 dflt="random"
12416                 echo "OK, found random()." >&4
12417         else
12418                 dflt="rand"
12419                 echo "Yick, looks like I have to use rand()." >&4
12420         fi
12421         echo " "
12422         ;;
12423 *)
12424         dflt="$randfunc"
12425         ;;
12426 esac
12427 cont=true
12428
12429 case "$ccflags" in
12430 *-Dmy_rand=*|*-Dmy_srand=*)
12431         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12432         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12433         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12434         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12435         ;;
12436 esac
12437
12438 while $test "$cont"; do
12439         rp="Use which function to generate random numbers?"
12440         . ./myread
12441         if $test "$ans" = "$dflt"; then
12442                 : null
12443         else
12444                 randbits=''
12445         fi
12446         randfunc="$ans"
12447         if set $ans val -f; eval $csym; $val; then
12448                 cont=''
12449         else
12450                 dflt=y
12451                 rp="I cannot find function $ans. Use that name anyway?"
12452                 . ./myread
12453                 dflt=rand
12454                 case "$ans" in
12455                         [yY]*) cont='';;
12456                 esac
12457         fi
12458         case "$cont" in
12459         '')
12460                 case "$randfunc" in
12461                 drand48)
12462                         drand01="drand48()"
12463                         seedfunc="srand48"
12464                         randbits=48
12465                         randseedtype=long
12466                         ;;
12467                 rand|random)
12468                         case "$randbits" in
12469                         '')
12470 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12471                                 $cat >try.c <<EOCP
12472 #$i_unistd I_UNISTD
12473 #$i_stdlib I_STDLIB
12474 #include <stdio.h>
12475 #ifdef I_UNISTD
12476 #  include <unistd.h>
12477 #endif
12478 #ifdef I_STDLIB
12479 #  include <stdlib.h>
12480 #endif
12481 int main()
12482 {
12483         register int i;
12484         register unsigned long tmp;
12485         register unsigned long max = 0L;
12486
12487         for (i = 1000; i; i--) {
12488                 tmp = (unsigned long) $randfunc();
12489                 if (tmp > max) max = tmp;
12490         }
12491         for (i = 0; max; i++)
12492                 max /= 2;
12493         printf("%d\n",i);
12494 }
12495 EOCP
12496                                 set try
12497                                 if eval $compile_ok; then
12498                                         dflt=`try`
12499                                 else
12500                                         dflt='?'
12501                                         echo "(I can't seem to compile the test program...)"
12502                                 fi
12503                                 ;;
12504                         *)
12505                                 dflt="$randbits"
12506                                 ;;
12507                         esac
12508                         rp="How many bits does your $randfunc() function produce?"
12509                         . ./myread
12510                         randbits="$ans"
12511                         $rm -f try.c try
12512                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12513                         seedfunc="s$randfunc"
12514                         randseedtype=unsigned
12515                         ;;
12516                 *)
12517                         dflt="31"
12518                         rp="How many bits does your $randfunc() function produce?"
12519                         . ./myread
12520                         randbits="$ans"
12521                         seedfunc="s$randfunc"
12522                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12523                         if set $seedfunc val -f; eval $csym; $val; then
12524                                 echo "(Using $seedfunc() to seed random generator)"
12525                         else
12526                                 echo "(Warning: no $seedfunc() to seed random generator)"
12527                                 seedfunc=rand
12528                         fi
12529                         randseedtype=unsigned
12530                         ;;
12531                 esac
12532                 ;;
12533         esac
12534 done
12535
12536 echo " "
12537 echo "Determining whether or not we are on an EBCDIC system..." >&4
12538 $cat >tebcdic.c <<'EOM'
12539 int main()
12540 {
12541   if ('M'==0xd4) return 0;
12542   return 1;
12543 }
12544 EOM
12545
12546 val=$undef
12547 set tebcdic
12548 if eval $compile_ok; then
12549         if ./tebcdic; then
12550                 echo "You seem to speak EBCDIC." >&4
12551                 val="$define"
12552         else
12553                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12554         fi
12555 else
12556         echo "I'm unable to compile the test program." >&4
12557         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12558 fi
12559 $rm -f tebcdic.c tebcdic
12560 set ebcdic
12561 eval $setvar
12562
12563 echo " "
12564 $cat >&4 <<EOM
12565 Checking how to flush all pending stdio output...
12566 EOM
12567 # I only know how to find the first 32 possibly open files on SunOS.
12568 # See also hints/sunos_4_1.sh and util.c  --AD
12569 case "$osname" in
12570 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12571 esac
12572 $cat >>try.c <<EOCP
12573 #include <stdio.h>
12574 #$i_unistd I_UNISTD
12575 #ifdef I_UNISTD
12576 # include <unistd.h>
12577 #endif
12578 #$d_sysconf HAS_SYSCONF
12579 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12580 #ifdef HAS_STDIO_STREAM_ARRAY
12581 # define STDIO_STREAM_ARRAY $stdio_stream_array
12582 #endif
12583 int main() {
12584   FILE* p = fopen("try.out", "w");
12585 #ifdef TRY_FPUTC
12586   fputc('x', p);
12587 #else
12588 # ifdef TRY_FPRINTF
12589   fprintf(p, "x");
12590 # endif
12591 #endif
12592 #ifdef TRY_FFLUSH_NULL
12593   fflush(NULL);
12594 #endif
12595 #ifdef TRY_FFLUSH_ALL
12596   {
12597     long open_max = -1;
12598 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12599     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12600 # else
12601 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12602     open_max = sysconf(_SC_OPEN_MAX);
12603 #  else
12604 #   ifdef FOPEN_MAX
12605     open_max = FOPEN_MAX;
12606 #   else
12607 #    ifdef OPEN_MAX
12608     open_max = OPEN_MAX;
12609 #    else
12610 #     ifdef _NFILE
12611     open_max = _NFILE;
12612 #     endif
12613 #    endif
12614 #   endif
12615 #  endif
12616 # endif 
12617 # ifdef HAS_STDIO_STREAM_ARRAY
12618     if (open_max > 0) {
12619       long i;
12620       for (i = 0; i < open_max; i++)
12621             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12622                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12623                 STDIO_STREAM_ARRAY[i]._flag)
12624                 fflush(&STDIO_STREAM_ARRAY[i]);
12625     }   
12626   }
12627 # endif
12628 #endif
12629   _exit(42);
12630 }
12631 EOCP
12632 : first we have to find out how _not_ to flush
12633 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12634     output=''
12635     set try -DTRY_FPUTC
12636     if eval $compile; then
12637             $rm -f try.out
12638             ./try$exe_ext 2>/dev/null
12639             if $test ! -s try.out -a "X$?" = X42; then
12640                 output=-DTRY_FPUTC
12641             fi
12642     fi
12643     case "$output" in
12644     '')
12645             set try -DTRY_FPRINTF
12646             $rm -f try.out
12647             if eval $compile; then
12648                     $rm -f try.out
12649                     ./try$exe_ext 2>/dev/null
12650                     if $test ! -s try.out -a "X$?" = X42; then
12651                         output=-DTRY_FPRINTF
12652                     fi
12653             fi
12654         ;;
12655     esac
12656 fi
12657 : check for fflush NULL behaviour
12658 case "$fflushNULL" in
12659 '')     set try -DTRY_FFLUSH_NULL $output
12660         if eval $compile; then
12661                 $rm -f try.out
12662                 ./try$exe_ext 2>/dev/null
12663                 code="$?"
12664                 if $test -s try.out -a "X$code" = X42; then
12665                         fflushNULL="`$cat try.out`"
12666                 else
12667                         if $test "X$code" != X42; then
12668                                 $cat >&4 <<EOM
12669 (If this test failed, don't worry, we'll try another method shortly.)
12670 EOM
12671                         fi
12672                 fi
12673         fi
12674         $rm -f core try.core core.try.*
12675         case "$fflushNULL" in
12676         x)      $cat >&4 <<EOM
12677 Your fflush(NULL) works okay for output streams.
12678 Let's see if it clobbers input pipes...
12679 EOM
12680 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12681 # bug that improperly flushes the input end of pipes.  So we avoid the
12682 # autoflush on fork/system/exec support for now. :-(
12683 $cat >tryp.c <<EOCP
12684 #include <stdio.h>
12685 int
12686 main(int argc, char **argv)
12687 {
12688     char buf[1024];
12689     int i;
12690     char *bp = buf;
12691     while (1) {
12692         while ((i = getc(stdin)) != -1
12693                && (*bp++ = i) != '\n'
12694                && bp < &buf[1024])
12695         /* DO NOTHING */ ;
12696         *bp = '\0';
12697         fprintf(stdout, "%s", buf);
12698         fflush(NULL);
12699         if (i == -1)
12700             return 0;
12701         bp = buf;
12702     }
12703 }
12704 EOCP
12705                 fflushNULL="$define"
12706                 set tryp
12707                 if eval $compile; then
12708                     $rm -f tryp.out
12709                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12710                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12711                        $cat >&4 <<EOM
12712 fflush(NULL) seems to behave okay with input streams.
12713 EOM
12714                         fflushNULL="$define"
12715                     else
12716                         $cat >&4 <<EOM
12717 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12718 EOM
12719                         fflushNULL="$undef"
12720                     fi
12721                 fi
12722                 $rm -f core tryp.c tryp.core core.tryp.*
12723                 ;;
12724         '')     $cat >&4 <<EOM
12725 Your fflush(NULL) isn't working (contrary to ANSI C).
12726 EOM
12727                 fflushNULL="$undef"
12728                 ;;
12729         *)      $cat >&4 <<EOM
12730 Cannot figure out whether your fflush(NULL) works or not.
12731 I'm assuming it doesn't (contrary to ANSI C).
12732 EOM
12733                 fflushNULL="$undef"
12734                 ;;
12735         esac
12736         ;;
12737 $define|true|[yY]*)
12738         fflushNULL="$define"
12739         ;;
12740 *)
12741         fflushNULL="$undef"
12742         ;;
12743 esac
12744 : check explicit looping only if NULL did not work, and if the pipe
12745 : bug does not show up on an explicit flush too
12746 case "$fflushNULL" in
12747 "$undef")
12748         $cat >tryp.c <<EOCP
12749 #include <stdio.h>
12750 int
12751 main(int argc, char **argv)
12752 {
12753     char buf[1024];
12754     int i;
12755     char *bp = buf;
12756     while (1) {
12757         while ((i = getc(stdin)) != -1
12758                && (*bp++ = i) != '\n'
12759                && bp < &buf[1024])
12760         /* DO NOTHING */ ;
12761         *bp = '\0';
12762         fprintf(stdout, "%s", buf);
12763         fflush(stdin);
12764         if (i == -1)
12765             return 0;
12766         bp = buf;
12767     }
12768 }
12769 EOCP
12770         set tryp
12771         if eval $compile; then
12772             $rm -f tryp.out
12773             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12774             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12775                $cat >&4 <<EOM
12776 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12777 EOM
12778                 : now check for fflushall behaviour
12779                 case "$fflushall" in
12780                 '')     set try -DTRY_FFLUSH_ALL $output
12781                         if eval $compile; then
12782                                 $cat >&4 <<EOM
12783 (Now testing the other method--but note that this also may fail.)
12784 EOM
12785                                 $rm -f try.out
12786                                 ./try$exe_ext 2>/dev/null
12787                                 if $test -s try.out -a "X$?" = X42; then
12788                                         fflushall="`$cat try.out`"
12789                                 fi
12790                         fi
12791                         $rm -f core try.core core.try.*
12792                         case "$fflushall" in
12793                         x)      $cat >&4 <<EOM
12794 Whew. Flushing explicitly all the stdio streams works.
12795 EOM
12796                                 fflushall="$define"
12797                                 ;;
12798                         '')     $cat >&4 <<EOM
12799 Sigh. Flushing explicitly all the stdio streams doesn't work.
12800 EOM
12801                                 fflushall="$undef"
12802                                 ;;
12803                         *)      $cat >&4 <<EOM
12804 Cannot figure out whether flushing stdio streams explicitly works or not.
12805 I'm assuming it doesn't.
12806 EOM
12807                                 fflushall="$undef"
12808                                 ;;
12809                         esac
12810                         ;;
12811                 "$define"|true|[yY]*)
12812                         fflushall="$define"
12813                         ;;
12814                 *)
12815                         fflushall="$undef"
12816                         ;;
12817                 esac
12818             else
12819                 $cat >&4 <<EOM
12820 All is futile.  Even fflush(stdin) clobbers input pipes!
12821 EOM
12822                 fflushall="$undef"
12823             fi
12824         else
12825             fflushall="$undef"
12826         fi
12827         $rm -f core tryp.c tryp.core core.tryp.*
12828         ;;
12829 *)      fflushall="$undef"
12830         ;;
12831 esac
12832
12833 case "$fflushNULL$fflushall" in
12834 undefundef)
12835         $cat <<EOM
12836 OK, I give up.  I cannot figure out how to flush pending stdio output.
12837 We won't be flushing handles at all before fork/exec/popen.
12838 EOM
12839         ;;
12840 esac
12841 $rm -f try.* try$exe_ext
12842
12843 : Store the full pathname to the ar program for use in the C program
12844 : Respect a hint or command line value for full_ar.
12845 case "$full_ar" in
12846 '') full_ar=$ar ;;
12847 esac
12848
12849 : Store the full pathname to the sed program for use in the C program
12850 full_sed=$sed
12851
12852 : see what type gids are declared as in the kernel
12853 echo " "
12854 echo "Looking for the type for group ids returned by getgid()."
12855 set gid_t gidtype xxx stdio.h sys/types.h
12856 eval $typedef
12857 case "$gidtype" in
12858 xxx)
12859         xxx=`./findhdr sys/user.h`
12860         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12861         case $1 in
12862         unsigned) dflt="$1 $2" ;;
12863         *) dflt="$1" ;;
12864         esac
12865         ;;
12866 *) dflt="$gidtype";;
12867 esac
12868 case "$gidtype" in
12869 gid_t) echo "gid_t found." ;;
12870 *)      rp="What is the type for group ids returned by getgid()?"
12871         . ./myread
12872         gidtype="$ans"
12873         ;;
12874 esac
12875
12876 echo " "
12877 case "$gidtype" in
12878 *_t) zzz="$gidtype"     ;;
12879 *)   zzz="gid"          ;;
12880 esac
12881 echo "Checking the size of $zzz..." >&4 
12882 cat > try.c <<EOCP
12883 #include <sys/types.h>
12884 #include <stdio.h>
12885 int main() {
12886     printf("%d\n", (int)sizeof($gidtype));
12887     exit(0);
12888 }
12889 EOCP
12890 set try
12891 if eval $compile_ok; then
12892         yyy=`./try`
12893         case "$yyy" in
12894         '')     gidsize=4
12895                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12896                 ;;
12897         *)      gidsize=$yyy
12898                 echo "Your $zzz is $gidsize bytes long."
12899                 ;;
12900         esac
12901 else
12902         gidsize=4
12903         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12904 fi
12905
12906
12907 echo " "
12908 case "$gidtype" in
12909 *_t) zzz="$gidtype"     ;;
12910 *)   zzz="gid"          ;;
12911 esac
12912 echo "Checking the sign of $zzz..." >&4 
12913 cat > try.c <<EOCP
12914 #include <sys/types.h>
12915 #include <stdio.h>
12916 int main() {
12917         $gidtype foo = -1;
12918         if (foo < 0)
12919                 printf("-1\n");
12920         else
12921                 printf("1\n");
12922 }
12923 EOCP
12924 set try
12925 if eval $compile; then
12926         yyy=`./try`
12927         case "$yyy" in
12928         '')     gidsign=1
12929                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12930                 ;;
12931         *)      gidsign=$yyy
12932                 case "$gidsign" in
12933                  1) echo "Your $zzz is unsigned." ;;
12934                 -1) echo "Your $zzz is signed."   ;;
12935                 esac
12936                 ;;
12937         esac
12938 else
12939         gidsign=1
12940         echo "(I can't compile the test program--guessing unsigned.)" >&4
12941 fi
12942
12943
12944 echo " "
12945
12946 if $test X"$quadtype" != X; then
12947
12948 echo "Checking how to print 64-bit integers..." >&4
12949
12950 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12951         $cat >try.c <<'EOCP'
12952 #include <sys/types.h>
12953 #include <stdio.h>
12954 int main() {
12955   int q = 12345678901;
12956   printf("%ld\n", q);
12957 }
12958 EOCP
12959         set try
12960         if eval $compile; then
12961                 yyy=`./try$exe_ext`
12962                 case "$yyy" in
12963                 12345678901)
12964                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12965                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
12966                         echo "We will use %d."
12967                         ;;
12968                 esac
12969         fi
12970 fi
12971
12972 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12973         $cat >try.c <<'EOCP'
12974 #include <sys/types.h>
12975 #include <stdio.h>
12976 int main() {
12977   long q = 12345678901;
12978   printf("%ld\n", q);
12979 }
12980 EOCP
12981         set try
12982         if eval $compile; then
12983                 yyy=`./try$exe_ext`
12984                 case "$yyy" in
12985                 12345678901)
12986                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12987                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
12988                         echo "We will use %ld."
12989                         ;;
12990                 esac
12991         fi
12992 fi
12993
12994 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12995         $cat >try.c <<'EOCP'
12996 #include <sys/types.h>
12997 #include <inttypes.h>
12998 #include <stdio.h>
12999 int main() {
13000   int64_t q = 12345678901;
13001   printf("%" PRId64 "\n", q);
13002 }
13003 EOCP
13004         set try
13005         if eval $compile; then
13006                 yyy=`./try$exe_ext`
13007                 case "$yyy" in
13008                 12345678901)
13009                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13010                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13011                         echo "We will use the C9X style."
13012                         ;;
13013                 esac
13014         fi
13015 fi
13016
13017 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13018         $cat >try.c <<'EOCP'
13019 #include <sys/types.h>
13020 #include <stdio.h>
13021 int main() {
13022   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13023   printf("%lld\n", q);
13024 }
13025 EOCP
13026         set try
13027         if eval $compile; then
13028                 yyy=`./try$exe_ext`
13029                 case "$yyy" in
13030                 12345678901)
13031                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13032                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13033                         echo "We will use the %lld style."
13034                         ;;
13035                 esac
13036         fi
13037 fi
13038
13039 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13040         $cat >try.c <<EOCP
13041 #include <sys/types.h>
13042 #include <stdio.h>
13043 int main() {
13044   $quadtype q = 12345678901;
13045   printf("%Ld\n", q);
13046 }
13047 EOCP
13048         set try
13049         if eval $compile; then
13050                 yyy=`./try$exe_ext`
13051                 case "$yyy" in
13052                 12345678901)
13053                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13054                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13055                         echo "We will use %Ld."
13056                         ;;
13057                 esac
13058         fi
13059 fi
13060
13061 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13062         $cat >try.c <<EOCP
13063 #include <sys/types.h>
13064 #include <stdio.h>
13065 int main() {
13066   $quadtype q = 12345678901;
13067   printf("%qd\n", q);
13068 }
13069 EOCP
13070         set try
13071         if eval $compile; then
13072                 yyy=`./try$exe_ext`
13073                 case "$yyy" in
13074                 12345678901)
13075                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13076                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13077                         echo "We will use %qd."
13078                         ;;
13079                 esac
13080         fi
13081 fi
13082
13083 if $test X"$sPRId64" = X; then
13084         echo "Cannot figure out how to print 64-bit integers." >&4
13085 fi
13086
13087 $rm -f try try.*
13088
13089 fi
13090
13091 case "$sPRId64" in
13092 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13093         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13094         ;;
13095 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13096         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13097         ;;
13098 esac
13099
13100
13101 echo " "
13102 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13103
13104 if $test X"$ivsize" = X8; then
13105         ivdformat="$sPRId64"
13106         uvuformat="$sPRIu64"
13107         uvoformat="$sPRIo64"
13108         uvxformat="$sPRIx64"
13109         uvXUformat="$sPRIXU64"
13110 else
13111         if $test X"$ivsize" = X"$longsize"; then
13112                 ivdformat='"ld"'
13113                 uvuformat='"lu"'
13114                 uvoformat='"lo"'
13115                 uvxformat='"lx"'
13116                 uvXUformat='"lX"'
13117         else
13118                 if $test X"$ivsize" = X"$intsize"; then
13119                         ivdformat='"d"'
13120                         uvuformat='"u"'
13121                         uvoformat='"o"'
13122                         uvxformat='"x"'
13123                         uvXUformat='"X"'
13124                 else
13125                         : far out
13126                         if $test X"$ivsize" = X"$shortsize"; then
13127                                 ivdformat='"hd"'
13128                                 uvuformat='"hu"'
13129                                 uvoformat='"ho"'
13130                                 uvxformat='"hx"'
13131                                 uvXUformat='"hX"'
13132                         fi
13133                 fi
13134         fi
13135 fi
13136
13137 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13138         nveformat="$sPRIeldbl"
13139         nvfformat="$sPRIfldbl"
13140         nvgformat="$sPRIgldbl"
13141         nvEUformat="$sPRIEUldbl"
13142         nvFUformat="$sPRIFUldbl"
13143         nvGUformat="$sPRIGUldbl"
13144 else
13145         nveformat='"e"'
13146         nvfformat='"f"'
13147         nvgformat='"g"'
13148         nvEUformat='"E"'
13149         nvFUformat='"F"'
13150         nvGUformat='"G"'
13151 fi
13152
13153 case "$ivdformat" in
13154 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13155     exit 1
13156     ;;
13157 esac
13158
13159
13160 echo " "
13161 $echo "Checking the format string to be used for gids..." >&4
13162
13163 case "$gidsign" in
13164 -1)     if $test X"$gidsize" = X"$ivsize"; then
13165                 gidformat="$ivdformat"
13166         else
13167                 if $test X"$gidsize" = X"$longsize"; then
13168                         gidformat='"ld"'
13169                 else
13170                         if $test X"$gidsize" = X"$intsize"; then
13171                                 gidformat='"d"'
13172                         else
13173                                 if $test X"$gidsize" = X"$shortsize"; then
13174                                         gidformat='"hd"'
13175                                 fi
13176                         fi
13177                 fi
13178         fi
13179         ;;
13180 *)      if $test X"$gidsize" = X"$uvsize"; then
13181                 gidformat="$uvuformat"
13182         else
13183                 if $test X"$gidsize" = X"$longsize"; then
13184                         gidformat='"lu"'
13185                 else
13186                         if $test X"$gidsize" = X"$intsize"; then
13187                                 gidformat='"u"'
13188                         else
13189                                 if $test X"$gidsize" = X"$shortsize"; then
13190                                         gidformat='"hu"'
13191                                 fi
13192                         fi
13193                 fi
13194         fi
13195         ;;
13196 esac
13197
13198 : see if getgroups exists
13199 set getgroups d_getgrps
13200 eval $inlibc
13201
13202 : see if setgroups exists
13203 set setgroups d_setgrps
13204 eval $inlibc
13205
13206
13207 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13208 echo " "
13209 case "$d_getgrps$d_setgrps" in
13210 *define*)
13211         case "$groupstype" in
13212         '') dflt="$gidtype" ;;
13213         *)  dflt="$groupstype" ;;
13214         esac
13215         $cat <<EOM
13216 What type of pointer is the second argument to getgroups() and setgroups()?
13217 Usually this is the same as group ids, $gidtype, but not always.
13218
13219 EOM
13220         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13221         . ./myread
13222         groupstype="$ans"
13223         ;;
13224 *)  groupstype="$gidtype";;
13225 esac
13226
13227 echo " "
13228 echo "Checking if your $make program sets \$(MAKE)..." >&4
13229 case "$make_set_make" in
13230 '')
13231         $sed 's/^X //' > testmake.mak << 'EOF'
13232 Xall:
13233 X       @echo 'maketemp="$(MAKE)"'
13234 EOF
13235         case "`$make -f testmake.mak 2>/dev/null`" in
13236         *maketemp=*) make_set_make='#' ;;
13237         *)      make_set_make="MAKE=$make" ;;
13238         esac
13239         $rm -f testmake.mak
13240         ;;
13241 esac
13242 case "$make_set_make" in
13243 '#') echo "Yup, it does.";;
13244 *) echo "Nope, it doesn't.";;
13245 esac
13246
13247 : see what type is used for mode_t
13248 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13249 set mode_t modetype int stdio.h sys/types.h
13250 eval $typedef_ask
13251
13252 : define a fucntion to check prototypes
13253 $cat > protochk <<EOSH
13254 $startsh
13255 cc="$cc"
13256 optimize="$optimize"
13257 ccflags="$ccflags"
13258 prototype="$prototype"
13259 define="$define"
13260 rm=$rm
13261 EOSH
13262
13263 $cat >> protochk <<'EOSH'
13264
13265 $rm -f try.c
13266 foo="$1"
13267 shift
13268 while test $# -ge 2; do
13269         case "$1" in
13270                 $define) echo "#include <$2>" >> try.c ;;
13271                 literal) echo "$2" >> try.c ;;
13272         esac
13273     shift 2
13274 done
13275 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13276 cat >> try.c <<'EOCP'
13277 #ifdef CAN_PROTOTYPE
13278 #define _(args) args
13279 #else
13280 #define _(args) ()
13281 #endif
13282 EOCP
13283 echo "$foo" >> try.c
13284 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13285 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13286 status=$?
13287 $rm -f try.[co]
13288 exit $status
13289 EOSH
13290 chmod +x protochk
13291 $eunicefix protochk
13292
13293 : see what type is used for size_t
13294 rp="What is the type used for the length parameter for string functions?"
13295 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13296 eval $typedef_ask
13297
13298 : check for type of arguments to gethostbyaddr. 
13299 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13300         case "$d_gethbyaddr" in
13301         $define)
13302                 $cat <<EOM
13303
13304 Checking to see what type of arguments are accepted by gethostbyaddr().
13305 EOM
13306                 hdrs="$define sys/types.h
13307                         $d_socket sys/socket.h 
13308                         $i_niin netinet/in.h 
13309                         $i_netdb netdb.h
13310                         $i_unistd unistd.h"
13311                 : The first arg can 'char *' or 'void *'
13312                 : The second arg is some of integral type
13313                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13314                         for yyy in size_t long int; do
13315                                 case "$netdb_host_type" in
13316                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13317                                         if ./protochk "$try" $hdrs; then
13318                                                 echo "Your system accepts $xxx for the first arg."
13319                                                 echo "...and $yyy for the second arg."
13320                                                 netdb_host_type="$xxx"
13321                                                 netdb_hlen_type="$yyy"
13322                                         fi
13323                                         ;;
13324                                 esac
13325                         done
13326                 done
13327                 : In case none of those worked, prompt the user.
13328                 case "$netdb_host_type" in
13329                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13330                         dflt='char *'
13331                         . ./myread
13332                         netdb_host_type=$ans
13333                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13334                         dflt="$sizetype"
13335                         . ./myread
13336                         netdb_hlen_type=$ans
13337                         ;;
13338                 esac
13339                 ;;
13340         *)      : no gethostbyaddr, so pick harmless defaults
13341                 netdb_host_type='char *'
13342                 netdb_hlen_type="$sizetype"
13343                 ;;
13344         esac
13345         # Remove the "const" if needed. -- but then we'll have a 
13346         # prototype clash!
13347         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13348 fi
13349
13350 : check for type of argument to gethostbyname. 
13351 if test "X$netdb_name_type" = X ; then
13352         case "$d_gethbyname" in
13353         $define)
13354                 $cat <<EOM
13355
13356 Checking to see what type of argument is accepted by gethostbyname().
13357 EOM
13358                 hdrs="$define sys/types.h
13359                         $d_socket sys/socket.h 
13360                         $i_niin netinet/in.h 
13361                         $i_netdb netdb.h
13362                         $i_unistd unistd.h"
13363                 for xxx in "const char *" "char *"; do
13364                         case "$netdb_name_type" in
13365                         '')     try="extern struct hostent *gethostbyname($xxx);"
13366                                 if ./protochk "$try" $hdrs; then
13367                                         echo "Your system accepts $xxx."
13368                                         netdb_name_type="$xxx"
13369                                 fi
13370                                 ;;
13371                         esac
13372                 done
13373                 : In case none of those worked, prompt the user.
13374                 case "$netdb_name_type" in
13375                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13376                         dflt='char *'
13377                         . ./myread
13378                         netdb_name_type=$ans
13379                         ;;
13380                 esac
13381                 ;;
13382         *)      : no gethostbyname, so pick harmless default
13383                 netdb_name_type='char *'
13384                 ;;
13385         esac
13386 fi
13387
13388 : check for type of 1st argument to getnetbyaddr. 
13389 if test "X$netdb_net_type" = X ; then
13390         case "$d_getnbyaddr" in
13391         $define)
13392                 $cat <<EOM
13393
13394 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13395 EOM
13396                 hdrs="$define sys/types.h
13397                         $d_socket sys/socket.h 
13398                         $i_niin netinet/in.h 
13399                         $i_netdb netdb.h
13400                         $i_unistd unistd.h"
13401                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13402                         case "$netdb_net_type" in
13403                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13404                                 if ./protochk "$try" $hdrs; then
13405                                         echo "Your system accepts $xxx."
13406                                         netdb_net_type="$xxx"
13407                                 fi
13408                                 ;;
13409                         esac
13410                 done
13411                 : In case none of those worked, prompt the user.
13412                 case "$netdb_net_type" in
13413                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13414                         dflt='long'
13415                         . ./myread
13416                         netdb_net_type=$ans
13417                         ;;
13418                 esac
13419                 ;;
13420         *)      : no getnetbyaddr, so pick harmless default
13421                 netdb_net_type='long'
13422                 ;;
13423         esac
13424 fi
13425 : locate the preferred pager for this system
13426 case "$pager" in
13427 '')
13428         dflt=''
13429         case "$pg" in
13430         /*) dflt=$pg;;
13431         [a-zA-Z]:/*) dflt=$pg;;
13432         esac
13433         case "$more" in
13434         /*) dflt=$more;;
13435         [a-zA-Z]:/*) dflt=$more;;
13436         esac
13437         case "$less" in
13438         /*) dflt=$less;;
13439         [a-zA-Z]:/*) dflt=$less;;
13440         esac
13441         case "$dflt" in
13442         '') dflt=/usr/ucb/more;;
13443         esac
13444         ;;
13445 *) dflt="$pager";;
13446 esac
13447 echo " "
13448 fn=f/
13449 rp='What pager is used on your system?'
13450 . ./getfile
13451 pager="$ans"
13452
13453 : see what type pids are declared as in the kernel
13454 rp="What is the type of process ids on this system?"
13455 set pid_t pidtype int stdio.h sys/types.h
13456 eval $typedef_ask
13457
13458 : Find earliest binary compatible site_perl subdirectory perl can use.
13459 case "$bincompat5005" in
13460 "$define") xs_apiversion='5.005' ;;
13461 *) xs_apiversion=$version ;;   # The current site_perl version.
13462 esac
13463 : Find earliest pure perl site_perl subdirectory perl can use.
13464 : The versioned directories started at 5.005.
13465 pm_apiversion='5.005'
13466
13467 : check for length of pointer
13468 echo " "
13469 case "$ptrsize" in
13470 '')
13471         echo "Checking to see how big your pointers are..." >&4
13472         if test "$voidflags" -gt 7; then
13473                 echo '#define VOID_PTR char *' > try.c
13474         else
13475                 echo '#define VOID_PTR void *' > try.c
13476         fi
13477         $cat >>try.c <<'EOCP'
13478 #include <stdio.h>
13479 int main()
13480 {
13481     printf("%d\n", (int)sizeof(VOID_PTR));
13482     exit(0);
13483 }
13484 EOCP
13485         set try
13486         if eval $compile_ok; then
13487                 ptrsize=`./try`
13488                 echo "Your pointers are $ptrsize bytes long."
13489         else
13490                 dflt='4'
13491                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13492                 rp="What is the size of a pointer (in bytes)?"
13493                 . ./myread
13494                 ptrsize="$ans"
13495         fi
13496         ;;
13497 esac
13498 $rm -f try.c try
13499
13500 : see if ar generates random libraries by itself
13501 echo " "
13502 echo "Checking how to generate random libraries on your machine..." >&4
13503 echo 'int bar1() { return bar2(); }' > bar1.c
13504 echo 'int bar2() { return 2; }' > bar2.c
13505 $cat > foo.c <<'EOP'
13506 int main() { printf("%d\n", bar1()); exit(0); }
13507 EOP
13508 $cc $ccflags -c bar1.c >/dev/null 2>&1
13509 $cc $ccflags -c bar2.c >/dev/null 2>&1
13510 $cc $ccflags -c foo.c >/dev/null 2>&1
13511 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13512 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13513         ./foobar >/dev/null 2>&1; then
13514         echo "$ar appears to generate random libraries itself."
13515         orderlib=false
13516         ranlib=":"
13517 elif $ar ts bar$_a >/dev/null 2>&1 &&
13518         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13519         ./foobar >/dev/null 2>&1; then
13520                 echo "a table of contents needs to be added with '$ar ts'."
13521                 orderlib=false
13522                 ranlib="$ar ts"
13523 else
13524         case "$ranlib" in
13525         :) ranlib='';;
13526         '')
13527                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13528                 $test -f $ranlib || ranlib=''
13529                 ;;
13530         esac
13531         if $test -n "$ranlib"; then
13532                 echo "your system has '$ranlib'; we'll use that."
13533                 orderlib=false
13534         else
13535                 echo "your system doesn't seem to support random libraries"
13536                 echo "so we'll use lorder and tsort to order the libraries."
13537                 orderlib=true
13538                 ranlib=":"
13539         fi
13540 fi
13541 $rm -f foo* bar* 
13542
13543 : check for type of arguments to select. 
13544 case "$selecttype" in
13545 '') case "$d_select" in
13546         $define)
13547                 echo " "
13548                 $cat <<EOM
13549 Checking to see what type of arguments are accepted by select().
13550 EOM
13551                 hdrs="$define sys/types.h
13552                         $i_systime sys/time.h 
13553                         $i_sysselct sys/select.h
13554                         $d_socket sys/socket.h"
13555                 : The first arg can be int, unsigned, or size_t
13556                 : The last arg may or may not be 'const'
13557                 val=''
13558                 : void pointer has been seen but using that
13559                 : breaks the selectminbits test
13560                 for xxx in 'fd_set *' 'int *'; do
13561                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13562                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13563                                         case "$val" in
13564                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13565                                                 if ./protochk "$try" $hdrs; then
13566                                                         echo "Your system accepts $xxx."
13567                                                         val="$xxx"
13568                                                 fi
13569                                                 ;;
13570                                         esac
13571                                 done
13572                         done
13573                 done
13574                 case "$val" in
13575                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13576                         case "$d_fd_set" in
13577                                 $define) dflt="fd_set *" ;;
13578                                 *)              dflt="int *" ;;
13579                         esac
13580                         . ./myread
13581                         val=$ans
13582                         ;;
13583                 esac
13584                 selecttype="$val"
13585                 ;;
13586         *)      : no select, so pick a harmless default
13587                 selecttype='int *'
13588                 ;;
13589         esac
13590         ;;
13591 esac
13592
13593 : check for the select 'width'
13594 case "$selectminbits" in
13595 '') case "$d_select" in
13596         $define)
13597                 $cat <<EOM
13598
13599 Checking to see on how many bits at a time your select() operates...
13600 EOM
13601                 $cat >try.c <<EOCP
13602 #include <sys/types.h>
13603 #$i_time I_TIME
13604 #$i_systime I_SYS_TIME
13605 #$i_systimek I_SYS_TIME_KERNEL
13606 #ifdef I_TIME
13607 #   include <time.h>
13608 #endif
13609 #ifdef I_SYS_TIME
13610 #   ifdef I_SYS_TIME_KERNEL
13611 #       define KERNEL
13612 #   endif
13613 #   include <sys/time.h>
13614 #   ifdef I_SYS_TIME_KERNEL
13615 #       undef KERNEL
13616 #   endif
13617 #endif
13618 #$i_sysselct I_SYS_SELECT
13619 #ifdef I_SYS_SELECT
13620 #include <sys/select.h>
13621 #endif
13622 #$d_socket HAS_SOCKET
13623 #ifdef HAS_SOCKET
13624 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13625 #endif
13626 #include <stdio.h>
13627 $selecttype b;
13628 #define S sizeof(*(b))
13629 #define MINBITS 64
13630 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13631 #define NBITS  (NBYTES * 8)
13632 int main() {
13633     char s[NBYTES];
13634     struct timeval t;
13635     int i;
13636     FILE* fp;
13637     int fd;
13638
13639     fclose(stdin);
13640     fp = fopen("try.c", "r");
13641     if (fp == 0)
13642       exit(1);
13643     fd = fileno(fp);
13644     if (fd < 0)
13645       exit(2);
13646     b = ($selecttype)s;
13647     for (i = 0; i < NBITS; i++)
13648         FD_SET(i, b);
13649     t.tv_sec  = 0;
13650     t.tv_usec = 0;
13651     select(fd + 1, b, 0, 0, &t);
13652     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13653     printf("%d\n", i + 1);
13654     return 0;
13655 }
13656 EOCP
13657                 set try
13658                 if eval $compile_ok; then
13659                         selectminbits=`./try`
13660                         case "$selectminbits" in
13661                         '')     cat >&4 <<EOM
13662 Cannot figure out on how many bits at a time your select() operates.
13663 I'll play safe and guess it is 32 bits.
13664 EOM
13665                                 selectminbits=32
13666                                 bits="32 bits"
13667                                 ;;
13668                         1)      bits="1 bit" ;;
13669                         *)      bits="$selectminbits bits" ;;
13670                         esac
13671                         echo "Your select() operates on $bits at a time." >&4
13672                 else
13673                         rp='What is the minimum number of bits your select() operates on?'
13674                         case "$byteorder" in
13675                         1234|12345678)  dflt=32 ;;
13676                         *)              dflt=1  ;;
13677                         esac
13678                         . ./myread
13679                         val=$ans
13680                         selectminbits="$val"
13681                 fi
13682                 $rm -f try.* try
13683                 ;;
13684         *)      : no select, so pick a harmless default
13685                 selectminbits='32'
13686                 ;;
13687         esac
13688         ;;
13689 esac
13690
13691 : Trace out the files included by signal.h, then look for SIGxxx names.
13692 : Remove SIGARRAYSIZE used by HPUX.
13693 : Remove SIGSTKSIZE used by Linux.
13694 : Remove SIGSTKSZ used by Posix.
13695 : Remove SIGTYP void lines used by OS2.
13696 : Some cpps, like os390, dont give the file name anywhere
13697 if [ "X$fieldn" = X ]; then
13698         : Just make some guesses.  We check them later.
13699         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13700 else
13701         xxx=`echo '#include <signal.h>' |
13702         $cppstdin $cppminus $cppflags 2>/dev/null |
13703         $grep '^[       ]*#.*include' | 
13704         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13705 fi
13706 : Check this list of files to be sure we have parsed the cpp output ok.
13707 : This will also avoid potentially non-existent files, such 
13708 : as ../foo/bar.h
13709 xxxfiles=''
13710 for xx in $xxx /dev/null ; do
13711         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13712 done
13713 : If we have found no files, at least try signal.h
13714 case "$xxxfiles" in
13715 '')     xxxfiles=`./findhdr signal.h` ;;
13716 esac
13717 xxx=`awk '
13718 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13719         print substr($2, 4, 20)
13720 }
13721 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13722         print substr($3, 4, 20)
13723 }' $xxxfiles`
13724 : Append some common names just in case the awk scan failed.
13725 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13726 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13727 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13728 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13729 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13730
13731 : generate a few handy files for later
13732 $cat > signal.c <<'EOCP'
13733 #include <sys/types.h>
13734 #include <signal.h>
13735 #include <stdio.h>
13736 int main() {
13737
13738 /* Strange style to avoid deeply-nested #if/#else/#endif */
13739 #ifndef NSIG
13740 #  ifdef _NSIG
13741 #    define NSIG (_NSIG)
13742 #  endif
13743 #endif
13744
13745 #ifndef NSIG
13746 #  ifdef SIGMAX
13747 #    define NSIG (SIGMAX+1)
13748 #  endif
13749 #endif
13750
13751 #ifndef NSIG
13752 #  ifdef SIG_MAX
13753 #    define NSIG (SIG_MAX+1)
13754 #  endif
13755 #endif
13756
13757 #ifndef NSIG
13758 #  ifdef MAXSIG
13759 #    define NSIG (MAXSIG+1)
13760 #  endif
13761 #endif
13762
13763 #ifndef NSIG
13764 #  ifdef MAX_SIG
13765 #    define NSIG (MAX_SIG+1)
13766 #  endif
13767 #endif
13768
13769 #ifndef NSIG
13770 #  ifdef SIGARRAYSIZE
13771 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13772 #  endif
13773 #endif
13774
13775 #ifndef NSIG
13776 #  ifdef _sys_nsig
13777 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13778 #  endif
13779 #endif
13780
13781 /* Default to some arbitrary number that's big enough to get most
13782    of the common signals.
13783 */
13784 #ifndef NSIG
13785 #    define NSIG 50
13786 #endif
13787
13788 printf("NSIG %d\n", NSIG);
13789
13790 #ifndef JUST_NSIG
13791
13792 EOCP
13793
13794 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13795 {
13796         printf "#ifdef SIG"; printf $1; printf "\n"
13797         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13798         printf $1; printf ");\n"
13799         printf "#endif\n"
13800 }
13801 END {
13802         printf "#endif /* JUST_NSIG */\n";
13803         printf "exit(0);\n}\n";
13804 }
13805 ' >>signal.c
13806 $cat >signal.awk <<'EOP'
13807 BEGIN { ndups = 0 }
13808 $1 ~ /^NSIG$/ { nsig = $2 }
13809 ($1 !~ /^NSIG$/) && (NF == 2) {
13810     if ($2 > maxsig) { maxsig = $2 }
13811     if (sig_name[$2]) {
13812         dup_name[ndups] = $1
13813         dup_num[ndups] = $2
13814         ndups++ 
13815     }
13816     else {
13817         sig_name[$2] = $1
13818         sig_num[$2] = $2
13819     }
13820 }
13821 END { 
13822     if (nsig == 0) {
13823         nsig = maxsig + 1
13824     }
13825     printf("NSIG %d\n", nsig);
13826     for (n = 1; n < nsig; n++) {
13827         if (sig_name[n]) {
13828             printf("%s %d\n", sig_name[n], sig_num[n])
13829         }
13830         else {
13831             printf("NUM%d %d\n", n, n) 
13832         }
13833     }
13834     for (n = 0; n < ndups; n++) {
13835         printf("%s %d\n", dup_name[n], dup_num[n])
13836     }
13837 }
13838 EOP
13839 $cat >signal_cmd <<EOS
13840 $startsh
13841 if $test -s signal.lst; then
13842     echo "Using your existing signal.lst file"
13843         exit 0
13844 fi
13845 xxx="$xxx"
13846 EOS
13847 $cat >>signal_cmd <<'EOS'
13848
13849 set signal
13850 if eval $compile_ok; then
13851         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13852 else
13853         echo "(I can't seem be able to compile the whole test program)" >&4
13854         echo "(I'll try it in little pieces.)" >&4
13855         set signal -DJUST_NSIG
13856         if eval $compile_ok; then
13857                 ./signal$_exe > signal.nsg
13858                 $cat signal.nsg
13859         else
13860                 echo "I can't seem to figure out how many signals you have." >&4
13861                 echo "Guessing 50." >&4
13862                 echo 'NSIG 50' > signal.nsg
13863         fi
13864         : Now look at all the signal names, one at a time.
13865         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13866                 $cat > signal.c <<EOCP
13867 #include <sys/types.h>
13868 #include <signal.h>
13869 #include <stdio.h>
13870 int main() {
13871 printf("$xx %d\n", SIG${xx});
13872 return 0;
13873 }
13874 EOCP
13875                 set signal
13876                 if eval $compile; then
13877                         echo "SIG${xx} found."
13878                         ./signal$_exe  >> signal.ls1
13879                 else
13880                         echo "SIG${xx} NOT found."
13881                 fi
13882         done
13883         if $test -s signal.ls1; then
13884                 $cat signal.nsg signal.ls1 |
13885                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13886         fi
13887
13888 fi
13889 if $test -s signal.lst; then
13890         :
13891 else
13892         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13893         echo 'kill -l' >signal
13894         set X `csh -f <signal`
13895         $rm -f signal
13896         shift
13897         case $# in
13898         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13899         esac
13900         echo $@ | $tr ' ' $trnl | \
13901             $awk '{ printf "%s %d\n", $1, ++s; }
13902                   END { printf "NSIG %d\n", ++s }' >signal.lst
13903 fi
13904 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13905 EOS
13906 chmod a+x signal_cmd
13907 $eunicefix signal_cmd
13908
13909 : generate list of signal names
13910 echo " "
13911 case "$sig_name_init" in
13912 '') doinit=yes ;;
13913 *)  case "$sig_num_init" in
13914     ''|*,*) doinit=yes ;;
13915     esac ;;
13916 esac
13917 case "$doinit" in
13918 yes)
13919         echo "Generating a list of signal names and numbers..." >&4
13920         . ./signal_cmd
13921         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13922         sig_name=`$awk 'BEGIN { printf "ZERO " }
13923                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13924         sig_num=`$awk  'BEGIN { printf "0 " }
13925                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13926         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13927                              !/^NSIG/   { printf "\"%s\", ", $1 }
13928                              END        { printf "0\n" }' signal.lst`
13929         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13930                              !/^NSIG/   { printf "%d, ", $2}
13931                              END        { printf "0\n"}' signal.lst`
13932         ;;
13933 esac
13934 echo "The following $sig_count signals are available:"
13935 echo " "
13936 echo $sig_name | $awk \
13937 'BEGIN { linelen = 0 }
13938 {
13939         for (i = 1; i <= NF; i++) {
13940                 name = "SIG" $i " "
13941                 linelen = linelen + length(name)
13942                 if (linelen > 70) {
13943                         printf "\n"
13944                         linelen = length(name)
13945                 }
13946                 printf "%s", name
13947         }
13948         printf "\n"
13949 }'
13950 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13951
13952 echo " "
13953 case "$sizetype" in
13954 *_t) zzz="$sizetype"    ;;
13955 *)   zzz="filesize"     ;;
13956 esac
13957 echo "Checking the size of $zzz..." >&4 
13958 cat > try.c <<EOCP
13959 #include <sys/types.h>
13960 #include <stdio.h>
13961 int main() {
13962     printf("%d\n", (int)sizeof($sizetype));
13963     exit(0);
13964 }
13965 EOCP
13966 set try
13967 if eval $compile_ok; then
13968         yyy=`./try`
13969         case "$yyy" in
13970         '')     sizesize=4
13971                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13972                 ;;
13973         *)      sizesize=$yyy
13974                 echo "Your $zzz size is $sizesize bytes."
13975                 ;;
13976         esac
13977 else
13978         sizesize=4
13979         echo "(I can't compile the test program--guessing $sizesize.)" >&4
13980 fi
13981
13982
13983 : check for socklen_t
13984 echo " "
13985 echo "Checking to see if you have socklen_t..." >&4
13986 $cat >try.c <<EOCP
13987 #include <sys/types.h>
13988 #$d_socket HAS_SOCKET
13989 #ifdef HAS_SOCKET
13990 #include <sys/socket.h>
13991 #endif
13992 int main() { socklen_t x = 16; }
13993 EOCP
13994 set try
13995 if eval $compile; then
13996         val="$define"
13997         echo "You have socklen_t."
13998 else
13999         val="$undef"
14000         echo "You do not have socklen_t."
14001         case "$sizetype" in
14002         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14003         esac
14004 fi
14005 $rm -f try try.*
14006 set d_socklen_t
14007 eval $setvar
14008
14009 : check for type of the size argument to socket calls
14010 case "$d_socket" in
14011 "$define")
14012         $cat <<EOM
14013
14014 Checking to see what type is the last argument of accept().
14015 EOM
14016         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14017         yyy=''
14018         case "$d_socklen_t" in
14019         "$define") yyy="$yyy socklen_t"
14020         esac
14021         yyy="$yyy $sizetype int long unsigned"
14022         for xxx in $yyy; do
14023                 case "$socksizetype" in
14024                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14025                         if ./protochk "$try" $hdrs; then
14026                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14027                                 socksizetype="$xxx"
14028                         fi
14029                         ;;
14030                 esac
14031         done
14032 : In case none of those worked, prompt the user.
14033         case "$socksizetype" in
14034         '')     rp='What is the type for socket address structure sizes?'
14035                 dflt='int'
14036                 . ./myread
14037                 socksizetype=$ans
14038                 ;;
14039         esac
14040         ;;
14041 *)      : no sockets, so pick relatively harmless default
14042         socksizetype='int'
14043         ;;
14044 esac
14045
14046 : see what type is used for signed size_t
14047 set ssize_t ssizetype int stdio.h sys/types.h
14048 eval $typedef
14049 dflt="$ssizetype"
14050 $cat > ssize.c <<EOM
14051 #include <stdio.h>
14052 #include <sys/types.h>
14053 #define Size_t $sizetype
14054 #define SSize_t $dflt
14055 int main()
14056 {
14057         if (sizeof(Size_t) == sizeof(SSize_t))
14058                 printf("$dflt\n");
14059         else if (sizeof(Size_t) == sizeof(int))
14060                 printf("int\n");
14061         else 
14062                 printf("long\n");
14063         exit(0);
14064 }
14065 EOM
14066 echo " "
14067 set ssize
14068 if eval $compile_ok && ./ssize > /dev/null; then
14069         ssizetype=`./ssize`
14070         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14071 else
14072         $cat >&4 <<EOM
14073 Help! I can't compile and run the ssize_t test program: please enlighten me!
14074 (This is probably a misconfiguration in your system or libraries, and
14075 you really ought to fix it.  Still, I'll try anyway.)
14076
14077 I need a type that is the same size as $sizetype, but is guaranteed to
14078 be signed.  Common values are ssize_t, int and long.
14079
14080 EOM
14081         rp="What signed type is the same size as $sizetype?"
14082         . ./myread
14083         ssizetype="$ans"
14084 fi
14085 $rm -f ssize ssize.*
14086
14087 : see what type of char stdio uses.
14088 echo " "
14089 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14090         echo "Your stdio uses unsigned chars." >&4
14091         stdchar="unsigned char"
14092 else
14093         echo "Your stdio uses signed chars." >&4
14094         stdchar="char"
14095 fi
14096
14097 : see if time exists
14098 echo " "
14099 if test "X$d_time" = X -o X"$timetype" = X; then
14100     if set time val -f d_time; eval $csym; $val; then
14101                 echo 'time() found.' >&4
14102                 val="$define"
14103                 rp="What is the type returned by time() on this system?"
14104                 set time_t timetype long stdio.h sys/types.h
14105                 eval $typedef_ask
14106     else
14107                 echo 'time() not found, hope that will do.' >&4
14108                 val="$undef"
14109                 timetype='int';
14110     fi
14111     set d_time
14112     eval $setvar
14113 fi
14114
14115 : see what type uids are declared as in the kernel
14116 echo " "
14117 echo "Looking for the type for user ids returned by getuid()."
14118 set uid_t uidtype xxx stdio.h sys/types.h
14119 eval $typedef
14120 case "$uidtype" in
14121 xxx)
14122         xxx=`./findhdr sys/user.h`
14123         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14124         case $1 in
14125         unsigned) dflt="$1 $2" ;;
14126         *) dflt="$1" ;;
14127         esac
14128         ;;
14129 *) dflt="$uidtype";;
14130 esac
14131 case "$uidtype" in
14132 uid_t)  echo "uid_t found." ;;
14133 *)      rp="What is the type for user ids returned by getuid()?"
14134         . ./myread
14135         uidtype="$ans"
14136         ;;
14137 esac
14138
14139 echo " "
14140 case "$uidtype" in
14141 *_t) zzz="$uidtype"     ;;
14142 *)   zzz="uid"          ;;
14143 esac
14144 echo "Checking the size of $zzz..." >&4 
14145 cat > try.c <<EOCP
14146 #include <sys/types.h>
14147 #include <stdio.h>
14148 int main() {
14149     printf("%d\n", (int)sizeof($uidtype));
14150     exit(0);
14151 }
14152 EOCP
14153 set try
14154 if eval $compile_ok; then
14155         yyy=`./try`
14156         case "$yyy" in
14157         '')     uidsize=4
14158                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14159                 ;;
14160         *)      uidsize=$yyy
14161                 echo "Your $zzz is $uidsize bytes long."
14162                 ;;
14163         esac
14164 else
14165         uidsize=4
14166         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14167 fi
14168
14169 echo " "
14170 case "$uidtype" in
14171 *_t) zzz="$uidtype"     ;;
14172 *)   zzz="uid"          ;;
14173 esac
14174 echo "Checking the sign of $zzz..." >&4
14175 cat > try.c <<EOCP
14176 #include <sys/types.h>
14177 #include <stdio.h>
14178 int main() {
14179         $uidtype foo = -1;
14180         if (foo < 0)
14181                 printf("-1\n");
14182         else
14183                 printf("1\n");
14184 }
14185 EOCP
14186 set try
14187 if eval $compile; then
14188         yyy=`./try`
14189         case "$yyy" in
14190         '')     uidsign=1
14191                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14192                 ;;
14193         *)      uidsign=$yyy
14194                 case "$uidsign" in
14195                  1) echo "Your $zzz is unsigned." ;;
14196                 -1) echo "Your $zzz is signed."   ;;
14197                 esac
14198                 ;;
14199         esac
14200 else
14201         uidsign=1
14202         echo "(I can't compile the test program--guessing unsigned.)" >&4
14203 fi
14204
14205
14206
14207 echo " "
14208 $echo "Checking the format string to be used for uids..." >&4
14209
14210 case "$uidsign" in
14211 -1)     if $test X"$uidsize" = X"$ivsize"; then
14212                 uidformat="$ivdformat"
14213         else
14214                 if $test X"$uidsize" = X"$longsize"; then
14215                         uidformat='"ld"'
14216                 else
14217                         if $test X"$uidsize" = X"$intsize"; then
14218                                 uidformat='"d"'
14219                         else
14220                                 if $test X"$uidsize" = X"$shortsize"; then
14221                                         uidformat='"hd"'
14222                                 fi
14223                         fi
14224                 fi
14225         fi
14226         ;;
14227 *)      if $test X"$uidsize" = X"$uvsize"; then
14228                 uidformat="$uvuformat"
14229         else
14230                 if $test X"$uidsize" = X"$longsize"; then
14231                         uidformat='"lu"'
14232                 else
14233                         if $test X"$uidsize" = X"$intsize"; then
14234                                 uidformat='"u"'
14235                         else
14236                                 if $test X"$uidsize" = X"$shortsize"; then
14237                                         uidformat='"hu"'
14238                                 fi
14239                         fi
14240                 fi
14241         fi
14242         ;;
14243 esac
14244
14245 : see if dbm.h is available
14246 : see if dbmclose exists
14247 set dbmclose d_dbmclose
14248 eval $inlibc
14249
14250 case "$d_dbmclose" in
14251 $define)
14252         set dbm.h i_dbm
14253         eval $inhdr
14254         case "$i_dbm" in
14255         $define)
14256                 val="$undef"
14257                 set i_rpcsvcdbm
14258                 eval $setvar
14259                 ;;
14260         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14261                 eval $inhdr
14262                 ;;
14263         esac
14264         ;;
14265 *)      echo "We won't be including <dbm.h>"
14266         val="$undef"
14267         set i_dbm
14268         eval $setvar
14269         val="$undef"
14270         set i_rpcsvcdbm
14271         eval $setvar
14272         ;;
14273 esac
14274
14275 : see if this is a sys/file.h system
14276 val=''
14277 set sys/file.h val
14278 eval $inhdr
14279
14280 : do we need to include sys/file.h ?
14281 case "$val" in
14282 "$define")
14283         echo " "
14284         if $h_sysfile; then
14285                 val="$define"
14286                 echo "We'll be including <sys/file.h>." >&4
14287         else
14288                 val="$undef"
14289                 echo "We won't be including <sys/file.h>." >&4
14290         fi
14291         ;;
14292 *)
14293         h_sysfile=false
14294         ;;
14295 esac
14296 set i_sysfile
14297 eval $setvar
14298
14299 : see if fcntl.h is there
14300 val=''
14301 set fcntl.h val
14302 eval $inhdr
14303
14304 : see if we can include fcntl.h
14305 case "$val" in
14306 "$define")
14307         echo " "
14308         if $h_fcntl; then
14309                 val="$define"
14310                 echo "We'll be including <fcntl.h>." >&4
14311         else
14312                 val="$undef"
14313                 if $h_sysfile; then
14314         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14315                 else
14316                         echo "We won't be including <fcntl.h>." >&4
14317                 fi
14318         fi
14319         ;;
14320 *)
14321         h_fcntl=false
14322         val="$undef"
14323         ;;
14324 esac
14325 set i_fcntl
14326 eval $setvar
14327
14328 : see if this is a iconv.h system
14329 set iconv.h i_iconv
14330 eval $inhdr
14331
14332 : see if this is a ieeefp.h system
14333 set ieeefp.h i_ieeefp
14334 eval $inhdr
14335
14336 : see if this is a libutil.h system
14337 set libutil.h i_libutil
14338 eval $inhdr
14339
14340 : see if locale.h is available
14341 set locale.h i_locale
14342 eval $inhdr
14343
14344 : see if mach cthreads are available
14345 if test "X$usethreads" = "X$define"; then
14346         set mach/cthreads.h i_machcthr
14347         eval $inhdr
14348 else
14349         i_machcthr="$undef"
14350 fi
14351
14352
14353
14354 : see if this is a math.h system
14355 set math.h i_math
14356 eval $inhdr
14357
14358 : see if this is a mntent.h system
14359 set mntent.h i_mntent
14360 eval $inhdr
14361
14362 : see if ndbm.h is available
14363 set ndbm.h t_ndbm
14364 eval $inhdr
14365 case "$t_ndbm" in
14366 $define)
14367         : see if dbm_open exists
14368         set dbm_open d_dbm_open
14369         eval $inlibc
14370         case "$d_dbm_open" in
14371         $undef)
14372                 t_ndbm="$undef"
14373                 echo "We won't be including <ndbm.h>"
14374                 ;;
14375         esac
14376         ;;
14377 esac
14378 val="$t_ndbm"
14379 set i_ndbm
14380 eval $setvar
14381
14382 : see if net/errno.h is available
14383 val=''
14384 set net/errno.h val
14385 eval $inhdr
14386
14387 : Unfortunately, it causes problems on some systems.  Arrgh.
14388 case "$val" in
14389 $define)
14390         cat > try.c <<'EOM'
14391 #include <stdio.h>
14392 #include <errno.h>
14393 #include <net/errno.h>
14394 int func()
14395 {
14396         return ENOTSOCK;
14397 }
14398 EOM
14399         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14400                 echo "We'll be including <net/errno.h>." >&4
14401         else
14402                 echo "We won't be including <net/errno.h>." >&4
14403                 val="$undef"
14404         fi
14405         $rm -f try.* try
14406         ;;
14407 esac
14408 set i_neterrno
14409 eval $setvar
14410
14411 : see if netinet/tcp.h is available
14412 set netinet/tcp.h i_netinettcp
14413 eval $inhdr
14414
14415 : see if this is a poll.h system
14416 set poll.h i_poll
14417 eval $inhdr
14418
14419 : see if this is a prot.h system
14420 set prot.h i_prot
14421 eval $inhdr
14422
14423 echo " "
14424 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14425 $cat <<'EOSH' > Cppsym.know
14426 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14427 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14428 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14429 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14430 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14431 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14432 bull c cadmus clipper CMU COFF COMPILER_VERSION
14433 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14434 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14435 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14436 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14437 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14438 H3050R H3050RX hbullx20 hcx host_mips
14439 hp200 hp300 hp700 HP700 hp800 hp9000
14440 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14441 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14442 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14443 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14444 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14445 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14446 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14447 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14448 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14449 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14450 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14451 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14452 MATH_HAS_NO_SIDE_EFFECTS
14453 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14454 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14455 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14456 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14457 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14458 NetBSD news1500 news1700 news1800 news1900 news3700
14459 news700 news800 news900 NeXT NLS ns16000 ns32000
14460 ns32016 ns32332 ns32k nsc32000
14461 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14462 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14463 pc532 pdp11 PGC PIC plexus PORTAR posix
14464 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14465 POSIX_C_SOURCE POSIX_SOURCE POWER
14466 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14467 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14468 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14469 sony sony_news sonyrisc sparc sparclite spectrum
14470 stardent stdc STDC_EXT stratos sun sun3 sun386
14471 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14472 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14473 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14474 sysV68 sysV88 Tek4132 Tek4300 titan
14475 tower tower32 tower32_200 tower32_600 tower32_700
14476 tower32_800 tower32_850 tss
14477 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14478 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14479 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14480 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14481 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14482 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14483 z8000
14484 EOSH
14485 # Maybe put other stuff here too.
14486 cat <<EOSH >>Cppsym.know
14487 $osname
14488 EOSH
14489 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14490 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14491 $cat Cppsym.know > Cppsym.c
14492 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14493 $rm -f Cppsym.a Cppsym.b Cppsym.c
14494 cat <<EOSH > Cppsym
14495 $startsh
14496 if $test \$# -gt 0; then
14497     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14498     if $test -s Cppsym.got; then
14499         $rm -f Cppsym.got
14500         exit 0
14501     fi
14502     $rm -f Cppsym.got
14503     exit 1
14504 else
14505     $tr " " "$trnl" | ./Cppsym.try
14506     exit 0
14507 fi
14508 EOSH
14509 chmod +x Cppsym
14510 $eunicefix Cppsym
14511 cat <<EOSH > Cppsym.try
14512 $startsh
14513 cat <<'EOCP' > try.c
14514 #include <stdio.h>
14515 int main() {
14516 EOCP
14517 $awk \\
14518 EOSH
14519 cat <<'EOSH' >> Cppsym.try
14520 'length($1) > 0 {
14521     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
14522     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
14523     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
14524     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
14525 }'       >> try.c
14526 echo '}' >> try.c
14527 EOSH
14528 cat <<EOSH >> Cppsym.try
14529 ccflags="$ccflags"
14530 case "$osname-$gccversion" in
14531 irix-) ccflags="\$ccflags -woff 1178" ;;
14532 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14533 esac
14534 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14535 EOSH
14536 chmod +x Cppsym.try
14537 $eunicefix Cppsym.try
14538 ./Cppsym < Cppsym.know > Cppsym.true
14539 : now check the C compiler for additional symbols
14540 postprocess_cc_v=''
14541 case "$osname" in
14542 aix) postprocess_cc_v="|$tr , ' '" ;;
14543 esac
14544 $cat >ccsym <<EOS
14545 $startsh
14546 $cat >tmp.c <<EOF
14547 extern int foo;
14548 EOF
14549 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14550 do
14551         case "\$i" in
14552         -D*) echo "\$i" | $sed 's/^-D//';;
14553         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14554         esac
14555 done
14556 $rm -f try.c
14557 EOS
14558 postprocess_cc_v=''
14559 chmod +x ccsym
14560 $eunicefix ccsym
14561 ./ccsym > ccsym1.raw
14562 if $test -s ccsym1.raw; then
14563        $sort ccsym1.raw | $uniq >ccsym.raw
14564 else
14565        mv ccsym1.raw ccsym.raw
14566 fi
14567
14568 $awk '/\=/ { print $0; next }
14569         { print $0"=1" }' ccsym.raw >ccsym.list
14570 $awk '/\=/ { print $0; next }
14571         { print $0"=1" }' Cppsym.true >ccsym.true
14572 $comm -13 ccsym.true ccsym.list >ccsym.own
14573 $comm -12 ccsym.true ccsym.list >ccsym.com
14574 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14575 also=''
14576 if $test -z ccsym.raw; then
14577         echo "Your C compiler doesn't seem to define any symbols!" >&4
14578         echo " "
14579         echo "However, your C preprocessor defines the following symbols:"
14580         $cat Cppsym.true
14581         ccsymbols=''
14582         cppsymbols=`$cat Cppsym.true`
14583         cppsymbols=`echo $cppsymbols`
14584         cppccsymbols="$cppsymbols"
14585 else
14586         if $test -s ccsym.com; then
14587                 echo "Your C compiler and pre-processor define these symbols:"
14588                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14589                 also='also '
14590                 symbols='ones'
14591                 cppccsymbols=`$cat ccsym.com`
14592                 cppccsymbols=`echo $cppccsymbols`
14593                 $test "$silent" || sleep 1
14594         fi
14595         if $test -s ccsym.cpp; then
14596                 $test "$also" && echo " "
14597                 echo "Your C pre-processor ${also}defines the following symbols:"
14598                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14599                 also='further '
14600                 cppsymbols=`$cat ccsym.cpp`
14601                 cppsymbols=`echo $cppsymbols`
14602                 $test "$silent" || sleep 1
14603         fi
14604         if $test -s ccsym.own; then
14605                 $test "$also" && echo " "
14606                 echo "Your C compiler ${also}defines the following cpp symbols:"
14607                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14608                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14609                 ccsymbols=`$cat ccsym.own`
14610                 ccsymbols=`echo $ccsymbols`
14611                 $test "$silent" || sleep 1
14612         fi
14613 fi
14614 $rm -f ccsym* Cppsym.*
14615
14616 : see if this is a termio system
14617 val="$undef"
14618 val2="$undef"
14619 val3="$undef"
14620 if $test `./findhdr termios.h`; then
14621         set tcsetattr i_termios
14622         eval $inlibc
14623         val3="$i_termios"
14624 fi
14625 echo " "
14626 case "$val3" in
14627 "$define") echo "You have POSIX termios.h... good!" >&4;;
14628 *) if ./Cppsym pyr; then
14629                 case "`/bin/universe`" in
14630                 ucb) if $test `./findhdr sgtty.h`; then
14631                                 val2="$define"
14632                                 echo "<sgtty.h> found." >&4
14633                         else
14634                                 echo "System is pyramid with BSD universe."
14635                                 echo "<sgtty.h> not found--you could have problems." >&4
14636                         fi;;
14637                 *) if $test `./findhdr termio.h`; then
14638                                 val="$define"
14639                                 echo "<termio.h> found." >&4
14640                         else
14641                                 echo "System is pyramid with USG universe."
14642                                 echo "<termio.h> not found--you could have problems." >&4
14643                         fi;;
14644                 esac
14645         elif ./usg; then
14646                 if $test `./findhdr termio.h`; then
14647                         echo "<termio.h> found." >&4
14648                         val="$define"
14649                 elif $test `./findhdr sgtty.h`; then
14650                         echo "<sgtty.h> found." >&4
14651                         val2="$define"
14652                 else
14653 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14654                 fi
14655         else
14656                 if $test `./findhdr sgtty.h`; then
14657                         echo "<sgtty.h> found." >&4
14658                         val2="$define"
14659                 elif $test `./findhdr termio.h`; then
14660                         echo "<termio.h> found." >&4
14661                         val="$define"
14662                 else
14663 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14664                 fi
14665         fi;;
14666 esac
14667 set i_termio; eval $setvar
14668 val=$val2; set i_sgtty; eval $setvar
14669 val=$val3; set i_termios; eval $setvar
14670
14671 : see if this is a shadow.h system
14672 set shadow.h i_shadow
14673 eval $inhdr
14674
14675 : see if this is a socks.h system
14676 set socks.h i_socks
14677 eval $inhdr
14678
14679 : see if stdarg is available
14680 echo " "
14681 if $test `./findhdr stdarg.h`; then
14682         echo "<stdarg.h> found." >&4
14683         valstd="$define"
14684 else
14685         echo "<stdarg.h> NOT found." >&4
14686         valstd="$undef"
14687 fi
14688
14689 : see if varags is available
14690 echo " "
14691 if $test `./findhdr varargs.h`; then
14692         echo "<varargs.h> found." >&4
14693 else
14694         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14695 fi
14696
14697 : set up the varargs testing programs
14698 $cat > varargs.c <<EOP
14699 #ifdef I_STDARG
14700 #include <stdarg.h>
14701 #endif
14702 #ifdef I_VARARGS
14703 #include <varargs.h>
14704 #endif
14705
14706 #ifdef I_STDARG
14707 int f(char *p, ...)
14708 #else
14709 int f(va_alist)
14710 va_dcl
14711 #endif
14712 {
14713         va_list ap;
14714 #ifndef I_STDARG
14715         char *p;
14716 #endif
14717 #ifdef I_STDARG
14718         va_start(ap,p);
14719 #else
14720         va_start(ap);
14721         p = va_arg(ap, char *);
14722 #endif
14723         va_end(ap);
14724 }
14725 EOP
14726 $cat > varargs <<EOP
14727 $startsh
14728 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14729         echo "true"
14730 else
14731         echo "false"
14732 fi
14733 $rm -f varargs$_o
14734 EOP
14735 chmod +x varargs
14736
14737 : now check which varargs header should be included
14738 echo " "
14739 i_varhdr=''
14740 case "$valstd" in
14741 "$define")
14742         if `./varargs I_STDARG`; then
14743                 val='stdarg.h'
14744         elif `./varargs I_VARARGS`; then
14745                 val='varargs.h'
14746         fi
14747         ;;
14748 *)
14749         if `./varargs I_VARARGS`; then
14750                 val='varargs.h'
14751         fi
14752         ;;
14753 esac
14754 case "$val" in
14755 '')
14756 echo "I could not find the definition for va_dcl... You have problems..." >&4
14757         val="$undef"; set i_stdarg; eval $setvar
14758         val="$undef"; set i_varargs; eval $setvar
14759         ;;
14760 *) 
14761         set i_varhdr
14762         eval $setvar
14763         case "$i_varhdr" in
14764         stdarg.h)
14765                 val="$define"; set i_stdarg; eval $setvar
14766                 val="$undef"; set i_varargs; eval $setvar
14767                 ;;
14768         varargs.h)
14769                 val="$undef"; set i_stdarg; eval $setvar
14770                 val="$define"; set i_varargs; eval $setvar
14771                 ;;
14772         esac
14773         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14774 esac
14775 $rm -f varargs*
14776
14777 : see if stddef is available
14778 set stddef.h i_stddef
14779 eval $inhdr
14780
14781 : see if this is a sunmath.h system
14782 set sunmath.h i_sunmath
14783 eval $inhdr
14784
14785 : see if sys/access.h is available
14786 set sys/access.h i_sysaccess
14787 eval $inhdr
14788
14789 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14790 set sys/filio.h i_sysfilio
14791 eval $inhdr
14792 echo " "
14793 if $test `./findhdr sys/ioctl.h`; then
14794         val="$define"
14795         echo '<sys/ioctl.h> found.' >&4
14796 else
14797         val="$undef"
14798         if $test $i_sysfilio = "$define"; then
14799             echo '<sys/ioctl.h> NOT found.' >&4
14800         else
14801                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14802                 $test $i_termio = "$define" && xxx="termio.h"
14803                 $test $i_termios = "$define" && xxx="termios.h"
14804 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14805         fi
14806 fi
14807 set i_sysioctl
14808 eval $setvar
14809
14810
14811 : see if this is a syslog.h system
14812 set syslog.h i_syslog
14813 eval $inhdr
14814
14815
14816 : see if this is a sys/mode.h system
14817 set sys/mode.h i_sysmode
14818 eval $inhdr
14819
14820 : see if sys/resource.h has to be included
14821 set sys/resource.h i_sysresrc
14822 eval $inhdr
14823
14824 : see if sys/security.h is available
14825 set sys/security.h i_syssecrt
14826 eval $inhdr
14827
14828 : see if this is a sys/statvfs.h system
14829 set sys/statvfs.h i_sysstatvfs
14830 eval $inhdr
14831
14832 : see if this is a sys/uio.h system
14833 set sys/uio.h i_sysuio
14834 eval $inhdr
14835
14836 : see if this is a sys/un.h system
14837 set sys/un.h i_sysun
14838 eval $inhdr
14839
14840
14841 : see if this is a sys/utsname.h system
14842 set sys/utsname.h i_sysutsname
14843 eval $inhdr
14844
14845 : see if this is a syswait system
14846 set sys/wait.h i_syswait
14847 eval $inhdr
14848
14849 : see if this is a ustat.h system
14850 set ustat.h i_ustat
14851 eval $inhdr
14852
14853 : see if this is an utime system
14854 set utime.h i_utime
14855 eval $inhdr
14856
14857 : see if this is a values.h system
14858 set values.h i_values
14859 eval $inhdr
14860
14861 : see if this is a vfork system
14862 case "$d_vfork" in
14863 "$define")
14864         set vfork.h i_vfork
14865         eval $inhdr
14866         ;;
14867 *)
14868         i_vfork="$undef"
14869         ;;
14870 esac
14871
14872 : see if gdbm.h is available
14873 set gdbm.h t_gdbm
14874 eval $inhdr
14875 case "$t_gdbm" in
14876 $define)
14877         : see if gdbm_open exists
14878         set gdbm_open d_gdbm_open
14879         eval $inlibc
14880         case "$d_gdbm_open" in
14881         $undef)
14882                 t_gdbm="$undef"
14883                 echo "We won't be including <gdbm.h>"
14884                 ;;
14885         esac
14886         ;;
14887 esac
14888 val="$t_gdbm"
14889 set i_gdbm
14890 eval $setvar
14891
14892 echo " "
14893 echo "Looking for extensions..." >&4
14894 : If we are using the old config.sh, known_extensions may contain
14895 : old or inaccurate or duplicate values.
14896 known_extensions=''
14897 nonxs_extensions=''
14898 : We do not use find because it might not be available.
14899 : We do not just use MANIFEST because the user may have dropped
14900 : some additional extensions into the source tree and expect them
14901 : to be built.
14902
14903 : Function to recursively find available extensions, ignoring DynaLoader
14904 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14905 find_extensions='
14906     for xxx in *; do
14907        case "$xxx" in
14908            DynaLoader|dynaload) ;;
14909            *)
14910            if $test -f $xxx/$xxx.xs; then
14911                known_extensions="$known_extensions $1$xxx";
14912            elif $test -f $xxx/Makefile.PL; then
14913                nonxs_extensions="$nonxs_extensions $1$xxx";
14914            else
14915                if $test -d $xxx -a $# -lt 10; then
14916                    set $1$xxx/ $*;
14917                    cd $xxx;
14918                    eval $find_extensions;
14919                    cd ..;
14920                    shift;
14921                fi;
14922            fi
14923            ;;
14924        esac;
14925     done'
14926 tdir=`pwd`
14927 cd $rsrc/ext
14928 set X
14929 shift
14930 eval $find_extensions
14931 set X $nonxs_extensions
14932 shift
14933 nonxs_extensions="$*"
14934 set X $known_extensions
14935 shift
14936 known_extensions="$*"
14937 cd $tdir
14938
14939 : Now see which are supported on this system.
14940 avail_ext=''
14941 for xxx in $known_extensions ; do
14942         case "$xxx" in
14943         DB_File|db_file)
14944                 case "$i_db" in
14945                 $define) avail_ext="$avail_ext $xxx" ;;
14946                 esac
14947                 ;;
14948         GDBM_File|gdbm_fil)
14949                 case "$i_gdbm" in 
14950                 $define) avail_ext="$avail_ext $xxx" ;;
14951                 esac
14952                 ;;
14953         NDBM_File|ndbm_fil)
14954                 case "$i_ndbm" in
14955                 $define)
14956                     case "$osname-$use64bitint" in
14957                     hpux-define)
14958                         case "$libs" in
14959                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14960                         esac
14961                         ;;
14962                     *) avail_ext="$avail_ext $xxx" ;;
14963                     esac
14964                     ;;
14965                 esac
14966                 ;;
14967         ODBM_File|odbm_fil) 
14968                 case "${i_dbm}${i_rpcsvcdbm}" in
14969                 *"${define}"*)
14970                     case "$osname-$use64bitint" in
14971                     hpux-define)
14972                         case "$libs" in
14973                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14974                         esac
14975                         ;;
14976                     *) avail_ext="$avail_ext $xxx" ;;
14977                     esac
14978                     ;;
14979                 esac
14980                 ;;
14981         POSIX|posix)
14982                 case "$useposix" in
14983                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14984                 esac
14985                 ;;
14986         Opcode|opcode)
14987                 case "$useopcode" in
14988                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14989                 esac
14990                 ;;
14991         Socket|socket)
14992                 case "$d_socket" in 
14993                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14994                 esac
14995                 ;;
14996         Sys/Syslog|sys/syslog)
14997                 : XXX syslog requires socket
14998                 case "$d_socket" in 
14999                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15000                 esac
15001                 ;;
15002         Thread|thread)
15003                 case "$usethreads" in 
15004                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15005                 esac
15006                 ;;
15007         IPC/SysV|ipc/sysv)
15008                 : XXX Do we need a useipcsysv variable here
15009                 case "${d_msg}${d_sem}${d_shm}" in 
15010                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15011                 esac
15012                 ;;
15013         *)      avail_ext="$avail_ext $xxx"
15014                 ;;
15015         esac
15016 done
15017
15018 set X $avail_ext
15019 shift
15020 avail_ext="$*"
15021
15022 : Now see which nonxs extensions are supported on this system.
15023 : For now assume all are.
15024 nonxs_ext=''
15025 for xxx in $nonxs_extensions ; do
15026         case "$xxx" in
15027         *)      nonxs_ext="$nonxs_ext $xxx"
15028                 ;;
15029         esac
15030 done
15031
15032 set X $nonxs_ext
15033 shift
15034 nonxs_ext="$*"
15035
15036 case $usedl in
15037 $define)
15038         $cat <<EOM
15039 A number of extensions are supplied with $package.  You may choose to
15040 compile these extensions for dynamic loading (the default), compile
15041 them into the $package executable (static loading), or not include
15042 them at all.  Answer "none" to include no extensions.
15043 Note that DynaLoader is always built and need not be mentioned here.
15044
15045 EOM
15046         case "$dynamic_ext" in
15047         '') dflt="$avail_ext" ;;
15048         *)      dflt="$dynamic_ext"
15049                 # Perhaps we are reusing an old out-of-date config.sh.
15050                 case "$hint" in
15051                 previous)
15052                         if test X"$dynamic_ext" != X"$avail_ext"; then
15053                                 $cat <<EOM
15054 NOTICE:  Your previous config.sh list may be incorrect. 
15055 The extensions now available to you are 
15056         ${avail_ext}
15057 but the default list from your previous config.sh is
15058         ${dynamic_ext} 
15059
15060 EOM
15061                         fi
15062                         ;;
15063                 esac
15064                 ;;
15065         esac
15066         case "$dflt" in
15067         '')     dflt=none;;
15068         esac
15069         rp="What extensions do you wish to load dynamically?"
15070         . ./myread
15071         case "$ans" in
15072         none) dynamic_ext=' ' ;;
15073         *) dynamic_ext="$ans" ;;
15074         esac
15075
15076         case "$static_ext" in
15077         '')
15078                 : Exclude those already listed in dynamic linking
15079                 dflt=''
15080                 for xxx in $avail_ext; do
15081                         case " $dynamic_ext " in
15082                         *" $xxx "*) ;;
15083                         *) dflt="$dflt $xxx" ;;
15084                         esac
15085                 done
15086                 set X $dflt
15087                 shift
15088                 dflt="$*"
15089                 ;;
15090         *)  dflt="$static_ext" 
15091                 ;;
15092         esac
15093
15094         case "$dflt" in
15095         '')     dflt=none;;
15096         esac
15097         rp="What extensions do you wish to load statically?"
15098         . ./myread
15099         case "$ans" in
15100         none) static_ext=' ' ;;
15101         *) static_ext="$ans" ;;
15102         esac
15103         ;;
15104 *)
15105         $cat <<EOM
15106 A number of extensions are supplied with $package.  Answer "none" 
15107 to include no extensions. 
15108 Note that DynaLoader is always built and need not be mentioned here.
15109
15110 EOM
15111         case "$static_ext" in
15112         '') dflt="$avail_ext" ;;
15113         *)      dflt="$static_ext"
15114                 # Perhaps we are reusing an old out-of-date config.sh.
15115                 case "$hint" in
15116                 previous)
15117                         if test X"$static_ext" != X"$avail_ext"; then
15118                                 $cat <<EOM
15119 NOTICE:  Your previous config.sh list may be incorrect. 
15120 The extensions now available to you are 
15121         ${avail_ext}
15122 but the default list from your previous config.sh is
15123         ${static_ext} 
15124
15125 EOM
15126                         fi
15127                         ;;
15128                 esac
15129                 ;;
15130         esac
15131         : Exclude those that are not xs extensions
15132         case "$dflt" in
15133         '')     dflt=none;;
15134         esac
15135         rp="What extensions do you wish to include?"
15136         . ./myread
15137         case "$ans" in
15138         none) static_ext=' ' ;;
15139         *) static_ext="$ans" ;;
15140         esac
15141         ;;
15142 esac
15143
15144 set X $dynamic_ext $static_ext $nonxs_ext
15145 shift
15146 extensions="$*"
15147
15148 : Remove libraries needed only for extensions
15149 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15150 case "$usedl" in
15151 $define|true|[yY]*)
15152         set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15153         shift
15154         perllibs="$*"
15155         ;;
15156 *)      perllibs="$libs"
15157         ;;
15158 esac
15159
15160 : Remove build directory name from cppstdin so it can be used from
15161 : either the present location or the final installed location.
15162 echo " "
15163 : Get out of the UU directory to get correct path name.
15164 cd ..
15165 case "$cppstdin" in
15166 `pwd`/cppstdin)
15167         echo "Stripping down cppstdin path name"
15168         cppstdin=cppstdin
15169         ;;
15170 esac
15171 cd UU
15172
15173 : end of configuration questions
15174 echo " "
15175 echo "End of configuration questions."
15176 echo " "
15177
15178 : back to where it started
15179 if test -d ../UU; then
15180         cd ..
15181 fi
15182
15183 : configuration may be patched via a 'config.over' file
15184 if $test -f config.over; then
15185         echo " "
15186         dflt=y
15187         rp='I see a config.over file.  Do you wish to load it?'
15188         . UU/myread
15189         case "$ans" in
15190         n*) echo "OK, I'll ignore it.";;
15191         *)      . ./config.over
15192                 echo "Configuration override changes have been loaded."
15193                 ;;
15194         esac
15195 fi
15196
15197 : in case they want portability, strip down executable paths
15198 case "$d_portable" in
15199 "$define")
15200         echo " "
15201         echo "Stripping down executable paths..." >&4
15202         for file in $loclist $trylist; do
15203                 eval temp=\$$file
15204                 eval $file=`basename $temp`
15205         done
15206         ;;
15207 esac
15208
15209 : create config.sh file
15210 echo " "
15211 echo "Creating config.sh..." >&4
15212 $spitshell <<EOT >config.sh
15213 $startsh
15214 #
15215 # This file was produced by running the Configure script. It holds all the
15216 # definitions figured out by Configure. Should you modify one of these values,
15217 # do not forget to propagate your changes by running "Configure -der". You may
15218 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15219 #
15220
15221 # Package name      : $package
15222 # Source directory  : $src
15223 # Configuration time: $cf_time
15224 # Configured by     : $cf_by
15225 # Target system     : $myuname
15226
15227 Author='$Author'
15228 Date='$Date'
15229 Header='$Header'
15230 Id='$Id'
15231 Locker='$Locker'
15232 Log='$Log'
15233 Mcc='$Mcc'
15234 RCSfile='$RCSfile'
15235 Revision='$Revision'
15236 Source='$Source'
15237 State='$State'
15238 _a='$_a'
15239 _exe='$_exe'
15240 _o='$_o'
15241 afs='$afs'
15242 alignbytes='$alignbytes'
15243 ansi2knr='$ansi2knr'
15244 aphostname='$aphostname'
15245 api_revision='$api_revision'
15246 api_subversion='$api_subversion'
15247 api_version='$api_version'
15248 api_versionstring='$api_versionstring'
15249 ar='$ar'
15250 archlib='$archlib'
15251 archlibexp='$archlibexp'
15252 archname64='$archname64'
15253 archname='$archname'
15254 archobjs='$archobjs'
15255 awk='$awk'
15256 baserev='$baserev'
15257 bash='$bash'
15258 bin='$bin'
15259 bincompat5005='$bincompat5005'
15260 binexp='$binexp'
15261 bison='$bison'
15262 byacc='$byacc'
15263 byteorder='$byteorder'
15264 c='$c'
15265 castflags='$castflags'
15266 cat='$cat'
15267 cc='$cc'
15268 cccdlflags='$cccdlflags'
15269 ccdlflags='$ccdlflags'
15270 ccflags='$ccflags'
15271 ccflags_uselargefiles='$ccflags_uselargefiles'
15272 ccname='$ccname'
15273 ccsymbols='$ccsymbols'
15274 ccversion='$ccversion'
15275 cf_by='$cf_by'
15276 cf_email='$cf_email'
15277 cf_time='$cf_time'
15278 charsize='$charsize'
15279 chgrp='$chgrp'
15280 chmod='$chmod'
15281 chown='$chown'
15282 clocktype='$clocktype'
15283 comm='$comm'
15284 compress='$compress'
15285 contains='$contains'
15286 cp='$cp'
15287 cpio='$cpio'
15288 cpp='$cpp'
15289 cpp_stuff='$cpp_stuff'
15290 cppccsymbols='$cppccsymbols'
15291 cppflags='$cppflags'
15292 cpplast='$cpplast'
15293 cppminus='$cppminus'
15294 cpprun='$cpprun'
15295 cppstdin='$cppstdin'
15296 cppsymbols='$cppsymbols'
15297 crosscompile='$crosscompile'
15298 cryptlib='$cryptlib'
15299 csh='$csh'
15300 d_Gconvert='$d_Gconvert'
15301 d_PRIEUldbl='$d_PRIEUldbl'
15302 d_PRIFUldbl='$d_PRIFUldbl'
15303 d_PRIGUldbl='$d_PRIGUldbl'
15304 d_PRIXU64='$d_PRIXU64'
15305 d_PRId64='$d_PRId64'
15306 d_PRIeldbl='$d_PRIeldbl'
15307 d_PRIfldbl='$d_PRIfldbl'
15308 d_PRIgldbl='$d_PRIgldbl'
15309 d_PRIi64='$d_PRIi64'
15310 d_PRIo64='$d_PRIo64'
15311 d_PRIu64='$d_PRIu64'
15312 d_PRIx64='$d_PRIx64'
15313 d_SCNfldbl='$d_SCNfldbl'
15314 d_access='$d_access'
15315 d_accessx='$d_accessx'
15316 d_alarm='$d_alarm'
15317 d_archlib='$d_archlib'
15318 d_atolf='$d_atolf'
15319 d_atoll='$d_atoll'
15320 d_attribut='$d_attribut'
15321 d_bcmp='$d_bcmp'
15322 d_bcopy='$d_bcopy'
15323 d_bincompat5005='$d_bincompat5005'
15324 d_bsd='$d_bsd'
15325 d_bsdgetpgrp='$d_bsdgetpgrp'
15326 d_bsdsetpgrp='$d_bsdsetpgrp'
15327 d_bzero='$d_bzero'
15328 d_casti32='$d_casti32'
15329 d_castneg='$d_castneg'
15330 d_charvspr='$d_charvspr'
15331 d_chown='$d_chown'
15332 d_chroot='$d_chroot'
15333 d_chsize='$d_chsize'
15334 d_closedir='$d_closedir'
15335 d_const='$d_const'
15336 d_crypt='$d_crypt'
15337 d_csh='$d_csh'
15338 d_cuserid='$d_cuserid'
15339 d_dbl_dig='$d_dbl_dig'
15340 d_difftime='$d_difftime'
15341 d_dirnamlen='$d_dirnamlen'
15342 d_dlerror='$d_dlerror'
15343 d_dlopen='$d_dlopen'
15344 d_dlsymun='$d_dlsymun'
15345 d_dosuid='$d_dosuid'
15346 d_drand48proto='$d_drand48proto'
15347 d_dup2='$d_dup2'
15348 d_eaccess='$d_eaccess'
15349 d_endgrent='$d_endgrent'
15350 d_endhent='$d_endhent'
15351 d_endnent='$d_endnent'
15352 d_endpent='$d_endpent'
15353 d_endpwent='$d_endpwent'
15354 d_endsent='$d_endsent'
15355 d_eofnblk='$d_eofnblk'
15356 d_eunice='$d_eunice'
15357 d_fchmod='$d_fchmod'
15358 d_fchown='$d_fchown'
15359 d_fcntl='$d_fcntl'
15360 d_fd_macros='$d_fd_macros'
15361 d_fd_set='$d_fd_set'
15362 d_fds_bits='$d_fds_bits'
15363 d_fgetpos='$d_fgetpos'
15364 d_flexfnam='$d_flexfnam'
15365 d_flock='$d_flock'
15366 d_fork='$d_fork'
15367 d_fpathconf='$d_fpathconf'
15368 d_fpos64_t='$d_fpos64_t'
15369 d_frexpl='$d_frexpl'
15370 d_fs_data_s='$d_fs_data_s'
15371 d_fseeko='$d_fseeko'
15372 d_fsetpos='$d_fsetpos'
15373 d_fstatfs='$d_fstatfs'
15374 d_fstatvfs='$d_fstatvfs'
15375 d_ftello='$d_ftello'
15376 d_ftime='$d_ftime'
15377 d_getcwd='$d_getcwd'
15378 d_getespwnam='$d_getespwnam'
15379 d_getfsstat='$d_getfsstat'
15380 d_getgrent='$d_getgrent'
15381 d_getgrps='$d_getgrps'
15382 d_gethbyaddr='$d_gethbyaddr'
15383 d_gethbyname='$d_gethbyname'
15384 d_gethent='$d_gethent'
15385 d_gethname='$d_gethname'
15386 d_gethostprotos='$d_gethostprotos'
15387 d_getlogin='$d_getlogin'
15388 d_getmnt='$d_getmnt'
15389 d_getmntent='$d_getmntent'
15390 d_getnbyaddr='$d_getnbyaddr'
15391 d_getnbyname='$d_getnbyname'
15392 d_getnent='$d_getnent'
15393 d_getnetprotos='$d_getnetprotos'
15394 d_getpbyname='$d_getpbyname'
15395 d_getpbynumber='$d_getpbynumber'
15396 d_getpent='$d_getpent'
15397 d_getpgid='$d_getpgid'
15398 d_getpgrp2='$d_getpgrp2'
15399 d_getpgrp='$d_getpgrp'
15400 d_getppid='$d_getppid'
15401 d_getprior='$d_getprior'
15402 d_getprotoprotos='$d_getprotoprotos'
15403 d_getprpwnam='$d_getprpwnam'
15404 d_getpwent='$d_getpwent'
15405 d_getsbyname='$d_getsbyname'
15406 d_getsbyport='$d_getsbyport'
15407 d_getsent='$d_getsent'
15408 d_getservprotos='$d_getservprotos'
15409 d_getspnam='$d_getspnam'
15410 d_gettimeod='$d_gettimeod'
15411 d_gnulibc='$d_gnulibc'
15412 d_grpasswd='$d_grpasswd'
15413 d_hasmntopt='$d_hasmntopt'
15414 d_htonl='$d_htonl'
15415 d_iconv='$d_iconv'
15416 d_index='$d_index'
15417 d_inetaton='$d_inetaton'
15418 d_int64_t='$d_int64_t'
15419 d_isascii='$d_isascii'
15420 d_isnan='$d_isnan'
15421 d_isnanl='$d_isnanl'
15422 d_killpg='$d_killpg'
15423 d_lchown='$d_lchown'
15424 d_ldbl_dig='$d_ldbl_dig'
15425 d_link='$d_link'
15426 d_locconv='$d_locconv'
15427 d_lockf='$d_lockf'
15428 d_longdbl='$d_longdbl'
15429 d_longlong='$d_longlong'
15430 d_lseekproto='$d_lseekproto'
15431 d_lstat='$d_lstat'
15432 d_madvise='$d_madvise'
15433 d_mblen='$d_mblen'
15434 d_mbstowcs='$d_mbstowcs'
15435 d_mbtowc='$d_mbtowc'
15436 d_memchr='$d_memchr'
15437 d_memcmp='$d_memcmp'
15438 d_memcpy='$d_memcpy'
15439 d_memmove='$d_memmove'
15440 d_memset='$d_memset'
15441 d_mkdir='$d_mkdir'
15442 d_mkdtemp='$d_mkdtemp'
15443 d_mkfifo='$d_mkfifo'
15444 d_mkstemp='$d_mkstemp'
15445 d_mkstemps='$d_mkstemps'
15446 d_mktime='$d_mktime'
15447 d_mmap='$d_mmap'
15448 d_modfl='$d_modfl'
15449 d_mprotect='$d_mprotect'
15450 d_msg='$d_msg'
15451 d_msg_ctrunc='$d_msg_ctrunc'
15452 d_msg_dontroute='$d_msg_dontroute'
15453 d_msg_oob='$d_msg_oob'
15454 d_msg_peek='$d_msg_peek'
15455 d_msg_proxy='$d_msg_proxy'
15456 d_msgctl='$d_msgctl'
15457 d_msgget='$d_msgget'
15458 d_msgrcv='$d_msgrcv'
15459 d_msgsnd='$d_msgsnd'
15460 d_msync='$d_msync'
15461 d_munmap='$d_munmap'
15462 d_mymalloc='$d_mymalloc'
15463 d_nice='$d_nice'
15464 d_nv_preserves_uv='$d_nv_preserves_uv'
15465 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15466 d_off64_t='$d_off64_t'
15467 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15468 d_oldpthreads='$d_oldpthreads'
15469 d_oldsock='$d_oldsock'
15470 d_open3='$d_open3'
15471 d_pathconf='$d_pathconf'
15472 d_pause='$d_pause'
15473 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15474 d_phostname='$d_phostname'
15475 d_pipe='$d_pipe'
15476 d_poll='$d_poll'
15477 d_portable='$d_portable'
15478 d_pthread_yield='$d_pthread_yield'
15479 d_pwage='$d_pwage'
15480 d_pwchange='$d_pwchange'
15481 d_pwclass='$d_pwclass'
15482 d_pwcomment='$d_pwcomment'
15483 d_pwexpire='$d_pwexpire'
15484 d_pwgecos='$d_pwgecos'
15485 d_pwpasswd='$d_pwpasswd'
15486 d_pwquota='$d_pwquota'
15487 d_qgcvt='$d_qgcvt'
15488 d_quad='$d_quad'
15489 d_readdir='$d_readdir'
15490 d_readlink='$d_readlink'
15491 d_rename='$d_rename'
15492 d_rewinddir='$d_rewinddir'
15493 d_rmdir='$d_rmdir'
15494 d_safebcpy='$d_safebcpy'
15495 d_safemcpy='$d_safemcpy'
15496 d_sanemcmp='$d_sanemcmp'
15497 d_sched_yield='$d_sched_yield'
15498 d_scm_rights='$d_scm_rights'
15499 d_seekdir='$d_seekdir'
15500 d_select='$d_select'
15501 d_sem='$d_sem'
15502 d_semctl='$d_semctl'
15503 d_semctl_semid_ds='$d_semctl_semid_ds'
15504 d_semctl_semun='$d_semctl_semun'
15505 d_semget='$d_semget'
15506 d_semop='$d_semop'
15507 d_setegid='$d_setegid'
15508 d_seteuid='$d_seteuid'
15509 d_setgrent='$d_setgrent'
15510 d_setgrps='$d_setgrps'
15511 d_sethent='$d_sethent'
15512 d_setlinebuf='$d_setlinebuf'
15513 d_setlocale='$d_setlocale'
15514 d_setnent='$d_setnent'
15515 d_setpent='$d_setpent'
15516 d_setpgid='$d_setpgid'
15517 d_setpgrp2='$d_setpgrp2'
15518 d_setpgrp='$d_setpgrp'
15519 d_setprior='$d_setprior'
15520 d_setproctitle='$d_setproctitle'
15521 d_setpwent='$d_setpwent'
15522 d_setregid='$d_setregid'
15523 d_setresgid='$d_setresgid'
15524 d_setresuid='$d_setresuid'
15525 d_setreuid='$d_setreuid'
15526 d_setrgid='$d_setrgid'
15527 d_setruid='$d_setruid'
15528 d_setsent='$d_setsent'
15529 d_setsid='$d_setsid'
15530 d_setvbuf='$d_setvbuf'
15531 d_sfio='$d_sfio'
15532 d_shm='$d_shm'
15533 d_shmat='$d_shmat'
15534 d_shmatprototype='$d_shmatprototype'
15535 d_shmctl='$d_shmctl'
15536 d_shmdt='$d_shmdt'
15537 d_shmget='$d_shmget'
15538 d_sigaction='$d_sigaction'
15539 d_sigsetjmp='$d_sigsetjmp'
15540 d_socket='$d_socket'
15541 d_socklen_t='$d_socklen_t'
15542 d_sockpair='$d_sockpair'
15543 d_socks5_init='$d_socks5_init'
15544 d_sqrtl='$d_sqrtl'
15545 d_statblks='$d_statblks'
15546 d_statfs_f_flags='$d_statfs_f_flags'
15547 d_statfs_s='$d_statfs_s'
15548 d_statvfs='$d_statvfs'
15549 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15550 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15551 d_stdio_stream_array='$d_stdio_stream_array'
15552 d_stdiobase='$d_stdiobase'
15553 d_stdstdio='$d_stdstdio'
15554 d_strchr='$d_strchr'
15555 d_strcoll='$d_strcoll'
15556 d_strctcpy='$d_strctcpy'
15557 d_strerrm='$d_strerrm'
15558 d_strerror='$d_strerror'
15559 d_strtod='$d_strtod'
15560 d_strtol='$d_strtol'
15561 d_strtold='$d_strtold'
15562 d_strtoll='$d_strtoll'
15563 d_strtoul='$d_strtoul'
15564 d_strtoull='$d_strtoull'
15565 d_strtouq='$d_strtouq'
15566 d_strxfrm='$d_strxfrm'
15567 d_suidsafe='$d_suidsafe'
15568 d_symlink='$d_symlink'
15569 d_syscall='$d_syscall'
15570 d_sysconf='$d_sysconf'
15571 d_sysernlst='$d_sysernlst'
15572 d_syserrlst='$d_syserrlst'
15573 d_system='$d_system'
15574 d_tcgetpgrp='$d_tcgetpgrp'
15575 d_tcsetpgrp='$d_tcsetpgrp'
15576 d_telldir='$d_telldir'
15577 d_telldirproto='$d_telldirproto'
15578 d_time='$d_time'
15579 d_times='$d_times'
15580 d_truncate='$d_truncate'
15581 d_tzname='$d_tzname'
15582 d_umask='$d_umask'
15583 d_uname='$d_uname'
15584 d_union_semun='$d_union_semun'
15585 d_ustat='$d_ustat'
15586 d_vendorarch='$d_vendorarch'
15587 d_vendorbin='$d_vendorbin'
15588 d_vendorlib='$d_vendorlib'
15589 d_vfork='$d_vfork'
15590 d_void_closedir='$d_void_closedir'
15591 d_voidsig='$d_voidsig'
15592 d_voidtty='$d_voidtty'
15593 d_volatile='$d_volatile'
15594 d_vprintf='$d_vprintf'
15595 d_wait4='$d_wait4'
15596 d_waitpid='$d_waitpid'
15597 d_wcstombs='$d_wcstombs'
15598 d_wctomb='$d_wctomb'
15599 d_xenix='$d_xenix'
15600 date='$date'
15601 db_hashtype='$db_hashtype'
15602 db_prefixtype='$db_prefixtype'
15603 defvoidused='$defvoidused'
15604 direntrytype='$direntrytype'
15605 dlext='$dlext'
15606 dlsrc='$dlsrc'
15607 doublesize='$doublesize'
15608 drand01='$drand01'
15609 dynamic_ext='$dynamic_ext'
15610 eagain='$eagain'
15611 ebcdic='$ebcdic'
15612 echo='$echo'
15613 egrep='$egrep'
15614 emacs='$emacs'
15615 eunicefix='$eunicefix'
15616 exe_ext='$exe_ext'
15617 expr='$expr'
15618 extensions='$extensions'
15619 fflushNULL='$fflushNULL'
15620 fflushall='$fflushall'
15621 find='$find'
15622 firstmakefile='$firstmakefile'
15623 flex='$flex'
15624 fpossize='$fpossize'
15625 fpostype='$fpostype'
15626 freetype='$freetype'
15627 full_ar='$full_ar'
15628 full_csh='$full_csh'
15629 full_sed='$full_sed'
15630 gccosandvers='$gccosandvers'
15631 gccversion='$gccversion'
15632 gidformat='$gidformat'
15633 gidsign='$gidsign'
15634 gidsize='$gidsize'
15635 gidtype='$gidtype'
15636 glibpth='$glibpth'
15637 grep='$grep'
15638 groupcat='$groupcat'
15639 groupstype='$groupstype'
15640 gzip='$gzip'
15641 h_fcntl='$h_fcntl'
15642 h_sysfile='$h_sysfile'
15643 hint='$hint'
15644 hostcat='$hostcat'
15645 i16size='$i16size'
15646 i16type='$i16type'
15647 i32size='$i32size'
15648 i32type='$i32type'
15649 i64size='$i64size'
15650 i64type='$i64type'
15651 i8size='$i8size'
15652 i8type='$i8type'
15653 i_arpainet='$i_arpainet'
15654 i_bsdioctl='$i_bsdioctl'
15655 i_db='$i_db'
15656 i_dbm='$i_dbm'
15657 i_dirent='$i_dirent'
15658 i_dld='$i_dld'
15659 i_dlfcn='$i_dlfcn'
15660 i_fcntl='$i_fcntl'
15661 i_float='$i_float'
15662 i_gdbm='$i_gdbm'
15663 i_grp='$i_grp'
15664 i_iconv='$i_iconv'
15665 i_ieeefp='$i_ieeefp'
15666 i_inttypes='$i_inttypes'
15667 i_libutil='$i_libutil'
15668 i_limits='$i_limits'
15669 i_locale='$i_locale'
15670 i_machcthr='$i_machcthr'
15671 i_malloc='$i_malloc'
15672 i_math='$i_math'
15673 i_memory='$i_memory'
15674 i_mntent='$i_mntent'
15675 i_ndbm='$i_ndbm'
15676 i_netdb='$i_netdb'
15677 i_neterrno='$i_neterrno'
15678 i_netinettcp='$i_netinettcp'
15679 i_niin='$i_niin'
15680 i_poll='$i_poll'
15681 i_prot='$i_prot'
15682 i_pthread='$i_pthread'
15683 i_pwd='$i_pwd'
15684 i_rpcsvcdbm='$i_rpcsvcdbm'
15685 i_sfio='$i_sfio'
15686 i_sgtty='$i_sgtty'
15687 i_shadow='$i_shadow'
15688 i_socks='$i_socks'
15689 i_stdarg='$i_stdarg'
15690 i_stddef='$i_stddef'
15691 i_stdlib='$i_stdlib'
15692 i_string='$i_string'
15693 i_sunmath='$i_sunmath'
15694 i_sysaccess='$i_sysaccess'
15695 i_sysdir='$i_sysdir'
15696 i_sysfile='$i_sysfile'
15697 i_sysfilio='$i_sysfilio'
15698 i_sysin='$i_sysin'
15699 i_sysioctl='$i_sysioctl'
15700 i_syslog='$i_syslog'
15701 i_sysmman='$i_sysmman'
15702 i_sysmode='$i_sysmode'
15703 i_sysmount='$i_sysmount'
15704 i_sysndir='$i_sysndir'
15705 i_sysparam='$i_sysparam'
15706 i_sysresrc='$i_sysresrc'
15707 i_syssecrt='$i_syssecrt'
15708 i_sysselct='$i_sysselct'
15709 i_syssockio='$i_syssockio'
15710 i_sysstat='$i_sysstat'
15711 i_sysstatfs='$i_sysstatfs'
15712 i_sysstatvfs='$i_sysstatvfs'
15713 i_systime='$i_systime'
15714 i_systimek='$i_systimek'
15715 i_systimes='$i_systimes'
15716 i_systypes='$i_systypes'
15717 i_sysuio='$i_sysuio'
15718 i_sysun='$i_sysun'
15719 i_sysutsname='$i_sysutsname'
15720 i_sysvfs='$i_sysvfs'
15721 i_syswait='$i_syswait'
15722 i_termio='$i_termio'
15723 i_termios='$i_termios'
15724 i_time='$i_time'
15725 i_unistd='$i_unistd'
15726 i_ustat='$i_ustat'
15727 i_utime='$i_utime'
15728 i_values='$i_values'
15729 i_varargs='$i_varargs'
15730 i_varhdr='$i_varhdr'
15731 i_vfork='$i_vfork'
15732 ignore_versioned_solibs='$ignore_versioned_solibs'
15733 inc_version_list='$inc_version_list'
15734 inc_version_list_init='$inc_version_list_init'
15735 incpath='$incpath'
15736 inews='$inews'
15737 installarchlib='$installarchlib'
15738 installbin='$installbin'
15739 installman1dir='$installman1dir'
15740 installman3dir='$installman3dir'
15741 installprefix='$installprefix'
15742 installprefixexp='$installprefixexp'
15743 installprivlib='$installprivlib'
15744 installscript='$installscript'
15745 installsitearch='$installsitearch'
15746 installsitebin='$installsitebin'
15747 installsitelib='$installsitelib'
15748 installstyle='$installstyle'
15749 installusrbinperl='$installusrbinperl'
15750 installvendorarch='$installvendorarch'
15751 installvendorbin='$installvendorbin'
15752 installvendorlib='$installvendorlib'
15753 intsize='$intsize'
15754 ivdformat='$ivdformat'
15755 ivsize='$ivsize'
15756 ivtype='$ivtype'
15757 known_extensions='$known_extensions'
15758 ksh='$ksh'
15759 ld='$ld'
15760 lddlflags='$lddlflags'
15761 ldflags='$ldflags'
15762 ldflags_uselargefiles='$ldflags_uselargefiles'
15763 ldlibpthname='$ldlibpthname'
15764 less='$less'
15765 lib_ext='$lib_ext'
15766 libc='$libc'
15767 libperl='$libperl'
15768 libpth='$libpth'
15769 libs='$libs'
15770 libsdirs='$libsdirs'
15771 libsfiles='$libsfiles'
15772 libsfound='$libsfound'
15773 libspath='$libspath'
15774 libswanted='$libswanted'
15775 libswanted_uselargefiles='$libswanted_uselargefiles'
15776 line='$line'
15777 lint='$lint'
15778 lkflags='$lkflags'
15779 ln='$ln'
15780 lns='$lns'
15781 locincpth='$locincpth'
15782 loclibpth='$loclibpth'
15783 longdblsize='$longdblsize'
15784 longlongsize='$longlongsize'
15785 longsize='$longsize'
15786 lp='$lp'
15787 lpr='$lpr'
15788 ls='$ls'
15789 lseeksize='$lseeksize'
15790 lseektype='$lseektype'
15791 mail='$mail'
15792 mailx='$mailx'
15793 make='$make'
15794 make_set_make='$make_set_make'
15795 mallocobj='$mallocobj'
15796 mallocsrc='$mallocsrc'
15797 malloctype='$malloctype'
15798 man1dir='$man1dir'
15799 man1direxp='$man1direxp'
15800 man1ext='$man1ext'
15801 man3dir='$man3dir'
15802 man3direxp='$man3direxp'
15803 man3ext='$man3ext'
15804 mips_type='$mips_type'
15805 mkdir='$mkdir'
15806 mmaptype='$mmaptype'
15807 modetype='$modetype'
15808 more='$more'
15809 multiarch='$multiarch'
15810 mv='$mv'
15811 myarchname='$myarchname'
15812 mydomain='$mydomain'
15813 myhostname='$myhostname'
15814 myuname='$myuname'
15815 n='$n'
15816 netdb_hlen_type='$netdb_hlen_type'
15817 netdb_host_type='$netdb_host_type'
15818 netdb_name_type='$netdb_name_type'
15819 netdb_net_type='$netdb_net_type'
15820 nm='$nm'
15821 nm_opt='$nm_opt'
15822 nm_so_opt='$nm_so_opt'
15823 nonxs_ext='$nonxs_ext'
15824 nroff='$nroff'
15825 nvEUformat='$nvEUformat'
15826 nvFUformat='$nvFUformat'
15827 nvGUformat='$nvGUformat'
15828 nveformat='$nveformat'
15829 nvfformat='$nvfformat'
15830 nvgformat='$nvgformat'
15831 nvsize='$nvsize'
15832 nvtype='$nvtype'
15833 o_nonblock='$o_nonblock'
15834 obj_ext='$obj_ext'
15835 old_pthread_create_joinable='$old_pthread_create_joinable'
15836 optimize='$optimize'
15837 orderlib='$orderlib'
15838 osname='$osname'
15839 osvers='$osvers'
15840 otherlibdirs='$otherlibdirs'
15841 package='$package'
15842 pager='$pager'
15843 passcat='$passcat'
15844 patchlevel='$patchlevel'
15845 path_sep='$path_sep'
15846 perl5='$perl5'
15847 perl='$perl'
15848 perladmin='$perladmin'
15849 perllibs='$perllibs'
15850 perlpath='$perlpath'
15851 pg='$pg'
15852 phostname='$phostname'
15853 pidtype='$pidtype'
15854 plibpth='$plibpth'
15855 pm_apiversion='$pm_apiversion'
15856 pmake='$pmake'
15857 pr='$pr'
15858 prefix='$prefix'
15859 prefixexp='$prefixexp'
15860 privlib='$privlib'
15861 privlibexp='$privlibexp'
15862 prototype='$prototype'
15863 ptrsize='$ptrsize'
15864 quadkind='$quadkind'
15865 quadtype='$quadtype'
15866 randbits='$randbits'
15867 randfunc='$randfunc'
15868 randseedtype='$randseedtype'
15869 ranlib='$ranlib'
15870 rd_nodata='$rd_nodata'
15871 revision='$revision'
15872 rm='$rm'
15873 rmail='$rmail'
15874 runnm='$runnm'
15875 sPRIEUldbl='$sPRIEUldbl'
15876 sPRIFUldbl='$sPRIFUldbl'
15877 sPRIGUldbl='$sPRIGUldbl'
15878 sPRIXU64='$sPRIXU64'
15879 sPRId64='$sPRId64'
15880 sPRIeldbl='$sPRIeldbl'
15881 sPRIfldbl='$sPRIfldbl'
15882 sPRIgldbl='$sPRIgldbl'
15883 sPRIi64='$sPRIi64'
15884 sPRIo64='$sPRIo64'
15885 sPRIu64='$sPRIu64'
15886 sPRIx64='$sPRIx64'
15887 sSCNfldbl='$sSCNfldbl'
15888 sched_yield='$sched_yield'
15889 scriptdir='$scriptdir'
15890 scriptdirexp='$scriptdirexp'
15891 sed='$sed'
15892 seedfunc='$seedfunc'
15893 selectminbits='$selectminbits'
15894 selecttype='$selecttype'
15895 sendmail='$sendmail'
15896 sh='$sh'
15897 shar='$shar'
15898 sharpbang='$sharpbang'
15899 shmattype='$shmattype'
15900 shortsize='$shortsize'
15901 shrpenv='$shrpenv'
15902 shsharp='$shsharp'
15903 sig_count='$sig_count'
15904 sig_name='$sig_name'
15905 sig_name_init='$sig_name_init'
15906 sig_num='$sig_num'
15907 sig_num_init='$sig_num_init'
15908 signal_t='$signal_t'
15909 sitearch='$sitearch'
15910 sitearchexp='$sitearchexp'
15911 sitebin='$sitebin'
15912 sitebinexp='$sitebinexp'
15913 sitelib='$sitelib'
15914 sitelib_stem='$sitelib_stem'
15915 sitelibexp='$sitelibexp'
15916 siteprefix='$siteprefix'
15917 siteprefixexp='$siteprefixexp'
15918 sizesize='$sizesize'
15919 sizetype='$sizetype'
15920 sleep='$sleep'
15921 smail='$smail'
15922 so='$so'
15923 sockethdr='$sockethdr'
15924 socketlib='$socketlib'
15925 socksizetype='$socksizetype'
15926 sort='$sort'
15927 spackage='$spackage'
15928 spitshell='$spitshell'
15929 src='$src'
15930 ssizetype='$ssizetype'
15931 startperl='$startperl'
15932 startsh='$startsh'
15933 static_ext='$static_ext'
15934 stdchar='$stdchar'
15935 stdio_base='$stdio_base'
15936 stdio_bufsiz='$stdio_bufsiz'
15937 stdio_cnt='$stdio_cnt'
15938 stdio_filbuf='$stdio_filbuf'
15939 stdio_ptr='$stdio_ptr'
15940 stdio_stream_array='$stdio_stream_array'
15941 strings='$strings'
15942 submit='$submit'
15943 subversion='$subversion'
15944 sysman='$sysman'
15945 tail='$tail'
15946 tar='$tar'
15947 tbl='$tbl'
15948 tee='$tee'
15949 test='$test'
15950 timeincl='$timeincl'
15951 timetype='$timetype'
15952 touch='$touch'
15953 tr='$tr'
15954 trnl='$trnl'
15955 troff='$troff'
15956 u16size='$u16size'
15957 u16type='$u16type'
15958 u32size='$u32size'
15959 u32type='$u32type'
15960 u64size='$u64size'
15961 u64type='$u64type'
15962 u8size='$u8size'
15963 u8type='$u8type'
15964 uidformat='$uidformat'
15965 uidsign='$uidsign'
15966 uidsize='$uidsize'
15967 uidtype='$uidtype'
15968 uname='$uname'
15969 uniq='$uniq'
15970 uquadtype='$uquadtype'
15971 use5005threads='$use5005threads'
15972 use64bitall='$use64bitall'
15973 use64bitint='$use64bitint'
15974 usedl='$usedl'
15975 useithreads='$useithreads'
15976 uselargefiles='$uselargefiles'
15977 uselongdouble='$uselongdouble'
15978 usemorebits='$usemorebits'
15979 usemultiplicity='$usemultiplicity'
15980 usemymalloc='$usemymalloc'
15981 usenm='$usenm'
15982 useopcode='$useopcode'
15983 useperlio='$useperlio'
15984 useposix='$useposix'
15985 usesfio='$usesfio'
15986 useshrplib='$useshrplib'
15987 usesocks='$usesocks'
15988 usethreads='$usethreads'
15989 usevendorprefix='$usevendorprefix'
15990 usevfork='$usevfork'
15991 usrinc='$usrinc'
15992 uuname='$uuname'
15993 uvXUformat='$uvXUformat'
15994 uvoformat='$uvoformat'
15995 uvsize='$uvsize'
15996 uvtype='$uvtype'
15997 uvuformat='$uvuformat'
15998 uvxformat='$uvxformat'
15999 vendorarch='$vendorarch'
16000 vendorarchexp='$vendorarchexp'
16001 vendorbin='$vendorbin'
16002 vendorbinexp='$vendorbinexp'
16003 vendorlib='$vendorlib'
16004 vendorlib_stem='$vendorlib_stem'
16005 vendorlibexp='$vendorlibexp'
16006 vendorprefix='$vendorprefix'
16007 vendorprefixexp='$vendorprefixexp'
16008 version='$version'
16009 vi='$vi'
16010 voidflags='$voidflags'
16011 xlibpth='$xlibpth'
16012 xs_apiversion='$xs_apiversion'
16013 zcat='$zcat'
16014 zip='$zip'
16015 EOT
16016
16017 : Add in command line options if available
16018 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16019
16020 : add special variables
16021 $test -f $src/patchlevel.h && \
16022 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16023 echo "CONFIGDOTSH=true" >>config.sh
16024
16025 : propagate old symbols
16026 if $test -f UU/config.sh; then
16027         <UU/config.sh sort | uniq >UU/oldconfig.sh
16028         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16029         sort | uniq -u >UU/oldsyms
16030         set X `cat UU/oldsyms`
16031         shift
16032         case $# in
16033         0) ;;
16034         *)
16035                 cat <<EOM
16036 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16037 EOM
16038                 echo "# Variables propagated from previous config.sh file." >>config.sh
16039                 for sym in `cat UU/oldsyms`; do
16040                         echo "    Propagating $hint variable "'$'"$sym..."
16041                         eval 'tmp="$'"${sym}"'"'
16042                         echo "$tmp" | \
16043                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16044                 done
16045                 ;;
16046         esac
16047 fi
16048
16049 : Finish up by extracting the .SH files
16050 case "$alldone" in
16051 exit)
16052         $rm -rf UU
16053         echo "Done."
16054         exit 0
16055         ;;
16056 cont)
16057         ;;
16058 '')
16059         dflt=''
16060         nostick=true
16061         $cat <<EOM
16062
16063 If you'd like to make any changes to the config.sh file before I begin
16064 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16065
16066 EOM
16067         rp="Press return or use a shell escape to edit config.sh:"
16068         . UU/myread
16069         nostick=''
16070         case "$ans" in
16071         '') ;;
16072         *) : in case they cannot read
16073                 sh 1>&4 -c "$ans";;
16074         esac
16075         ;;
16076 esac
16077
16078 : if this fails, just run all the .SH files by hand
16079 . ./config.sh
16080
16081 echo " "
16082 exec 1>&4
16083 . ./UU/extract
16084
16085 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16086         dflt=y
16087         case "$silent" in
16088         true) ;;
16089         *)
16090                 $cat <<EOM
16091
16092 Now you need to generate make dependencies by running "$make depend".
16093 You might prefer to run it in background: "$make depend > makedepend.out &"
16094 It can take a while, so you might not want to run it right now.
16095
16096 EOM
16097                 ;;
16098         esac
16099         rp="Run $make depend now?"
16100         . UU/myread
16101         case "$ans" in
16102         y*)
16103                 $make depend && echo "Now you must run '$make'."
16104                 ;;
16105         *)
16106                 echo "You must run '$make depend' then '$make'."
16107                 ;;
16108         esac
16109 elif test -f [Mm]akefile; then
16110         echo " "
16111         echo "Now you must run a $make."
16112 else
16113         echo "Done."
16114 fi
16115
16116 if $test -f Policy.sh; then
16117     $cat <<EOM
16118
16119 If you compile $package on a different machine or from a different object
16120 directory, copy the Policy.sh file from this object directory to the
16121 new one before you run Configure -- this will help you with most of
16122 the policy defaults.
16123
16124 EOM
16125 fi
16126 if $test -f config.msg; then
16127     echo "Hmm.  I also noted the following information while running:"
16128     echo " "
16129     $cat config.msg >&4
16130     $rm -f config.msg
16131 fi
16132 $rm -f kit*isdone ark*isdone
16133 $rm -rf UU
16134
16135 : End of Configure
16136