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