logic fixes
[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 Fri Feb 11 21:50:12 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
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 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getcwd=''
366 d_getgrent=''
367 d_getgrps=''
368 d_gethbyaddr=''
369 d_gethbyname=''
370 d_gethent=''
371 aphostname=''
372 d_gethname=''
373 d_phostname=''
374 d_uname=''
375 d_gethostprotos=''
376 d_getlogin=''
377 d_getmnt=''
378 d_getmntent=''
379 d_getnbyaddr=''
380 d_getnbyname=''
381 d_getnent=''
382 d_getnetprotos=''
383 d_getpent=''
384 d_getpgid=''
385 d_getpgrp2=''
386 d_bsdgetpgrp=''
387 d_getpgrp=''
388 d_getppid=''
389 d_getprior=''
390 d_getpbyname=''
391 d_getpbynumber=''
392 d_getprotoprotos=''
393 d_getpwent=''
394 d_getsent=''
395 d_getservprotos=''
396 d_getspent=''
397 d_getspnam=''
398 d_getsbyname=''
399 d_getsbyport=''
400 d_gnulibc=''
401 d_hasmntopt=''
402 d_htonl=''
403 d_iconv=''
404 d_inetaton=''
405 d_int64t=''
406 d_isascii=''
407 d_killpg=''
408 d_lchown=''
409 d_ldbl_dig=''
410 d_link=''
411 d_locconv=''
412 d_lockf=''
413 d_longdbl=''
414 longdblsize=''
415 d_longlong=''
416 longlongsize=''
417 d_lstat=''
418 d_mblen=''
419 d_mbstowcs=''
420 d_mbtowc=''
421 d_memchr=''
422 d_memcmp=''
423 d_memcpy=''
424 d_memmove=''
425 d_memset=''
426 d_mkdir=''
427 d_mkdtemp=''
428 d_mkfifo=''
429 d_mkstemp=''
430 d_mkstemps=''
431 d_mktime=''
432 d_mmap=''
433 mmaptype=''
434 d_mprotect=''
435 d_msg=''
436 d_msgctl=''
437 d_msgget=''
438 d_msgrcv=''
439 d_msgsnd=''
440 d_msync=''
441 d_munmap=''
442 d_nice=''
443 d_open3=''
444 d_fpathconf=''
445 d_pathconf=''
446 d_pause=''
447 d_pipe=''
448 d_poll=''
449 d_portable=''
450 d_old_pthread_create_joinable=''
451 old_pthread_create_joinable=''
452 d_pthread_yield=''
453 d_sched_yield=''
454 sched_yield=''
455 d_readdir=''
456 d_rewinddir=''
457 d_seekdir=''
458 d_telldir=''
459 d_readlink=''
460 d_rename=''
461 d_rmdir=''
462 d_safebcpy=''
463 d_safemcpy=''
464 d_sanemcmp=''
465 d_select=''
466 d_sem=''
467 d_semctl=''
468 d_semget=''
469 d_semop=''
470 d_setegid=''
471 d_seteuid=''
472 d_setgrent=''
473 d_setgrps=''
474 d_sethent=''
475 d_setlinebuf=''
476 d_setlocale=''
477 d_setnent=''
478 d_setpent=''
479 d_setpgid=''
480 d_setpgrp2=''
481 d_bsdsetpgrp=''
482 d_setpgrp=''
483 d_setprior=''
484 d_setpwent=''
485 d_setregid=''
486 d_setresgid=''
487 d_setresuid=''
488 d_setreuid=''
489 d_setrgid=''
490 d_setruid=''
491 d_setsent=''
492 d_setsid=''
493 d_setspent=''
494 d_setvbuf=''
495 d_sfio=''
496 usesfio=''
497 d_shm=''
498 d_shmat=''
499 d_shmatprototype=''
500 shmattype=''
501 d_shmctl=''
502 d_shmdt=''
503 d_shmget=''
504 d_sigaction=''
505 d_sigsetjmp=''
506 d_msg_ctrunc=''
507 d_msg_dontroute=''
508 d_msg_oob=''
509 d_msg_peek=''
510 d_msg_proxy=''
511 d_oldsock=''
512 d_scm_rights=''
513 d_socket=''
514 d_sockpair=''
515 sockethdr=''
516 socketlib=''
517 d_sqrtl=''
518 d_statblks=''
519 d_statfs_f_flags=''
520 d_statfs_s=''
521 d_fstatvfs=''
522 d_statvfs=''
523 d_stdio_cnt_lval=''
524 d_stdio_ptr_lval=''
525 d_stdiobase=''
526 d_stdstdio=''
527 stdio_base=''
528 stdio_bufsiz=''
529 stdio_cnt=''
530 stdio_filbuf=''
531 stdio_ptr=''
532 d_index=''
533 d_strchr=''
534 d_strcoll=''
535 d_strctcpy=''
536 d_strerrm=''
537 d_strerror=''
538 d_sysernlst=''
539 d_syserrlst=''
540 d_strtod=''
541 d_strtol=''
542 d_strtold=''
543 d_strtoll=''
544 d_strtoul=''
545 d_strtoull=''
546 d_strtouq=''
547 d_strxfrm=''
548 d_symlink=''
549 d_syscall=''
550 d_sysconf=''
551 d_system=''
552 d_tcgetpgrp=''
553 d_tcsetpgrp=''
554 d_telldirproto=''
555 d_time=''
556 timetype=''
557 clocktype=''
558 d_times=''
559 d_truncate=''
560 d_tzname=''
561 d_umask=''
562 d_semctl_semid_ds=''
563 d_semctl_semun=''
564 d_union_semun=''
565 d_ustat=''
566 d_vfork=''
567 usevfork=''
568 d_voidsig=''
569 signal_t=''
570 d_volatile=''
571 d_charvspr=''
572 d_vprintf=''
573 d_wait4=''
574 d_waitpid=''
575 d_wcstombs=''
576 d_wctomb=''
577 dlext=''
578 cccdlflags=''
579 ccdlflags=''
580 dlsrc=''
581 ld=''
582 lddlflags=''
583 usedl=''
584 doublesize=''
585 ebcdic=''
586 fflushNULL=''
587 fflushall=''
588 fpossize=''
589 fpostype=''
590 gidformat=''
591 gidsign=''
592 gidsize=''
593 gidtype=''
594 groupstype=''
595 h_fcntl=''
596 h_sysfile=''
597 i_arpainet=''
598 db_hashtype=''
599 db_prefixtype=''
600 i_db=''
601 i_dbm=''
602 i_rpcsvcdbm=''
603 d_dirnamlen=''
604 direntrytype=''
605 i_dirent=''
606 i_dld=''
607 i_dlfcn=''
608 i_fcntl=''
609 i_float=''
610 i_gdbm=''
611 d_grpasswd=''
612 i_grp=''
613 i_iconv=''
614 i_inttypes=''
615 i_limits=''
616 i_locale=''
617 i_machcthr=''
618 i_malloc=''
619 i_math=''
620 i_memory=''
621 i_mntent=''
622 i_ndbm=''
623 i_netdb=''
624 i_neterrno=''
625 i_netinettcp=''
626 i_niin=''
627 i_sysin=''
628 i_poll=''
629 i_pthread=''
630 d_pwage=''
631 d_pwchange=''
632 d_pwclass=''
633 d_pwcomment=''
634 d_pwexpire=''
635 d_pwgecos=''
636 d_pwpasswd=''
637 d_pwquota=''
638 i_pwd=''
639 i_sfio=''
640 i_shadow=''
641 i_socks=''
642 i_stddef=''
643 i_stdlib=''
644 i_string=''
645 strings=''
646 i_sysaccess=''
647 i_sysdir=''
648 i_sysfile=''
649 d_voidtty=''
650 i_bsdioctl=''
651 i_sysfilio=''
652 i_sysioctl=''
653 i_syssockio=''
654 i_syslog=''
655 i_sysmman=''
656 i_sysmount=''
657 i_sysndir=''
658 i_sysparam=''
659 i_sysresrc=''
660 i_syssecrt=''
661 i_sysselct=''
662 i_sysstat=''
663 i_sysstatfs=''
664 i_sysstatvfs=''
665 i_systimes=''
666 i_systypes=''
667 i_sysuio=''
668 i_sysun=''
669 i_sysvfs=''
670 i_syswait=''
671 i_sgtty=''
672 i_termio=''
673 i_termios=''
674 i_systime=''
675 i_systimek=''
676 i_time=''
677 timeincl=''
678 i_unistd=''
679 i_ustat=''
680 i_utime=''
681 i_values=''
682 i_stdarg=''
683 i_varargs=''
684 i_varhdr=''
685 i_vfork=''
686 inc_version_list=''
687 inc_version_list_init=''
688 installprefix=''
689 installprefixexp=''
690 installstyle=''
691 installusrbinperl=''
692 intsize=''
693 longsize=''
694 shortsize=''
695 d_fpos64_t=''
696 d_off64_t=''
697 libc=''
698 ldlibpthname=''
699 libperl=''
700 shrpenv=''
701 useshrplib=''
702 glibpth=''
703 libpth=''
704 loclibpth=''
705 plibpth=''
706 xlibpth=''
707 ignore_versioned_solibs=''
708 libs=''
709 libsdirs=''
710 libsfiles=''
711 libsfound=''
712 lns=''
713 d_PRIEldbl=''
714 d_PRIFldbl=''
715 d_PRIGldbl=''
716 d_PRIeldbl=''
717 d_PRIfldbl=''
718 d_PRIgldbl=''
719 sPRIEldbl=''
720 sPRIFldbl=''
721 sPRIGldbl=''
722 sPRIeldbl=''
723 sPRIfldbl=''
724 sPRIgldbl=''
725 lseeksize=''
726 lseektype=''
727 make_set_make=''
728 d_mymalloc=''
729 freetype=''
730 mallocobj=''
731 mallocsrc=''
732 malloctype=''
733 usemymalloc=''
734 installman1dir=''
735 man1dir=''
736 man1direxp=''
737 man1ext=''
738 installman3dir=''
739 man3dir=''
740 man3direxp=''
741 man3ext=''
742 huge=''
743 large=''
744 medium=''
745 models=''
746 small=''
747 split=''
748 modetype=''
749 multiarch=''
750 mydomain=''
751 myhostname=''
752 phostname=''
753 c=''
754 n=''
755 d_eofnblk=''
756 eagain=''
757 o_nonblock=''
758 rd_nodata=''
759 netdb_hlen_type=''
760 netdb_host_type=''
761 netdb_name_type=''
762 netdb_net_type=''
763 groupcat=''
764 hostcat=''
765 passcat=''
766 orderlib=''
767 ranlib=''
768 package=''
769 spackage=''
770 pager=''
771 api_revision=''
772 api_subversion=''
773 api_version=''
774 api_versionstring=''
775 patchlevel=''
776 subversion=''
777 version=''
778 perladmin=''
779 perlpath=''
780 d_nv_preserves_uv=''
781 i16size=''
782 i16type=''
783 i32size=''
784 i32type=''
785 i64size=''
786 i64type=''
787 i8size=''
788 i8type=''
789 ivsize=''
790 ivtype=''
791 nvsize=''
792 nvtype=''
793 u16size=''
794 u16type=''
795 u32size=''
796 u32type=''
797 u64size=''
798 u64type=''
799 u8size=''
800 u8type=''
801 uvsize=''
802 uvtype=''
803 ivdformat=''
804 uvoformat=''
805 uvuformat=''
806 uvxformat=''
807 pidtype=''
808 prefix=''
809 prefixexp=''
810 installprivlib=''
811 privlib=''
812 privlibexp=''
813 prototype=''
814 ptrsize=''
815 d_PRIX64=''
816 d_PRId64=''
817 d_PRIi64=''
818 d_PRIo64=''
819 d_PRIu64=''
820 d_PRIx64=''
821 sPRIX64=''
822 sPRId64=''
823 sPRIi64=''
824 sPRIo64=''
825 sPRIu64=''
826 sPRIx64=''
827 d_quad=''
828 quadkind=''
829 quadtype=''
830 uquadtype=''
831 drand01=''
832 randbits=''
833 randfunc=''
834 randseedtype=''
835 seedfunc=''
836 installscript=''
837 scriptdir=''
838 scriptdirexp=''
839 selectminbits=''
840 selecttype=''
841 sh=''
842 sig_count=''
843 sig_name=''
844 sig_name_init=''
845 sig_num=''
846 sig_num_init=''
847 installsitearch=''
848 sitearch=''
849 sitearchexp=''
850 installsitebin=''
851 sitebin=''
852 sitebinexp=''
853 installsitelib=''
854 sitelib=''
855 sitelibexp=''
856 siteprefix=''
857 siteprefixexp=''
858 sizetype=''
859 so=''
860 sharpbang=''
861 shsharp=''
862 spitshell=''
863 src=''
864 ssizetype=''
865 startperl=''
866 startsh=''
867 stdchar=''
868 d_stdio_stream_array=''
869 stdio_stream_array=''
870 sysman=''
871 trnl=''
872 uidformat=''
873 uidsign=''
874 uidsize=''
875 uidtype=''
876 archname64=''
877 use64bits=''
878 uselargefiles=''
879 uselongdouble=''
880 uselonglong=''
881 usemorebits=''
882 usemultiplicity=''
883 nm_opt=''
884 nm_so_opt=''
885 runnm=''
886 usenm=''
887 useperlio=''
888 usesocks=''
889 d_oldpthreads=''
890 use5005threads=''
891 useithreads=''
892 usethreads=''
893 incpath=''
894 mips_type=''
895 usrinc=''
896 d_vendorbin=''
897 installvendorbin=''
898 vendorbin=''
899 vendorbinexp=''
900 d_vendorlib=''
901 installvendorlib=''
902 vendorlib=''
903 vendorlibexp=''
904 usevendorprefix=''
905 vendorprefix=''
906 vendorprefixexp=''
907 defvoidused=''
908 voidflags=''
909 pm_apiversion=''
910 xs_apiversion=''
911 CONFIG=''
912
913 define='define'
914 undef='undef'
915 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
916 rmlist=''
917
918 : We must find out about Eunice early
919 eunicefix=':'
920 if test -f /etc/unixtovms; then
921         eunicefix=/etc/unixtovms
922 fi
923 if test -f /etc/unixtovms.exe; then
924         eunicefix=/etc/unixtovms.exe
925 fi
926
927 i_whoami=''
928 : set useposix=false in your hint file to disable the POSIX extension.
929 useposix=true
930 : set useopcode=false in your hint file to disable the Opcode extension.
931 useopcode=true
932 : Trailing extension.  Override this in a hint file, if needed.
933 _exe=''
934 : Extra object files, if any, needed on this platform.
935 archobjs=''
936 : Possible local include directories to search.
937 : Set locincpth to "" in a hint file to defeat local include searches.
938 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
939 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
940 :
941 : no include file wanted by default
942 inclwanted=''
943
944 groupstype=''
945 : change the next line if compiling for Xenix/286 on Xenix/386
946 xlibpth='/usr/lib/386 /lib/386'
947
948 : Possible local library directories to search.
949 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
950 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
951
952 : general looking path for locating libraries
953 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
954 glibpth="$glibpth /lib /usr/lib $xlibpth"
955 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
956 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
957
958 : Private path used by Configure to find libraries.  Its value
959 : is prepended to libpth. This variable takes care of special
960 : machines, like the mips.  Usually, it should be empty.
961 plibpth=''
962
963 : default library list
964 libswanted=''
965 : some systems want to use only the non-versioned libso:s
966 ignore_versioned_solibs=''
967 : set usemultiplicity on the Configure command line to enable multiplicity.
968 : set usesocks on the Configure command line to enable socks.
969 : set usethreads on the Configure command line to enable threads.
970 : full support for void wanted by default
971 defvoidused=15
972
973 : List of libraries we want.
974 : If anyone needs -lnet, put it in a hint file.
975 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
976 libswanted="$libswanted dld ld sun m c cposix posix"
977 libswanted="$libswanted ndir dir crypt sec"
978 libswanted="$libswanted ucb bsd BSD PW x"
979 : We probably want to search /usr/shlib before most other libraries.
980 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
981 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
982 glibpth="/usr/shlib $glibpth"
983 : Do not use vfork unless overridden by a hint file.
984 usevfork=false
985
986 : Find the basic shell for Bourne shell scripts
987 case "$sh" in
988 '')
989         case "$SYSTYPE" in
990         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
991         *) xxx='/bin/sh';;
992         esac
993         if test -f "$xxx"; then
994                 sh="$xxx"
995         else
996                 : Build up a list and do a single loop so we can 'break' out.
997                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
998                 for xxx in sh bash ksh pdksh ash; do
999                         for p in $pth; do
1000                                 try="$try ${p}/${xxx}"
1001                         done
1002                 done
1003                 for xxx in $try; do
1004                         if test -f "$xxx"; then
1005                                 sh="$xxx";
1006                                 break
1007                         elif test -f "$xxx.exe"; then
1008                                 sh="$xxx";
1009                                 break
1010                         fi
1011                 done
1012         fi
1013         ;;
1014 esac
1015
1016 case "$sh" in
1017 '')     cat <<EOM >&2
1018 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1019
1020 Usually it's in /bin/sh.  How did you even get this far?
1021 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1022 we'll try to straighten this all out.
1023 EOM
1024         exit 1
1025         ;;
1026 esac
1027
1028 : see if sh knows # comments
1029 if `$sh -c '#' >/dev/null 2>&1`; then
1030         shsharp=true
1031         spitshell=cat
1032         xcat=/bin/cat
1033         test -f $xcat || xcat=/usr/bin/cat
1034         echo "#!$xcat" >try
1035         $eunicefix try
1036         chmod +x try
1037         ./try > today
1038         if test -s today; then
1039                 sharpbang='#!'
1040         else
1041                 echo "#! $xcat" > try
1042                 $eunicefix try
1043                 chmod +x try
1044                 ./try > today
1045                 if test -s today; then
1046                         sharpbang='#! '
1047                 else
1048                         sharpbang=': use '
1049                 fi
1050         fi
1051 else
1052         echo " "
1053         echo "Your $sh doesn't grok # comments--I will strip them later on."
1054         shsharp=false
1055         cd ..
1056         echo "exec grep -v '^[  ]*#'" >spitshell
1057         chmod +x spitshell
1058         $eunicefix spitshell
1059         spitshell=`pwd`/spitshell
1060         cd UU
1061         echo "I presume that if # doesn't work, #! won't work either!"
1062         sharpbang=': use '
1063 fi
1064 rm -f try today
1065
1066 : figure out how to guarantee sh startup
1067 case "$startsh" in
1068 '') startsh=${sharpbang}${sh} ;;
1069 *)
1070 esac
1071 cat >try <<EOSS
1072 $startsh
1073 set abc
1074 test "$?abc" != 1
1075 EOSS
1076
1077 chmod +x try
1078 $eunicefix try
1079 if ./try; then
1080         : echo "Yup, it does."
1081 else
1082         echo "Hmm... '$startsh' does not guarantee sh startup..."
1083         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1084 fi
1085 rm -f try
1086
1087
1088 : Save command line options in file UU/cmdline.opt for later use in
1089 : generating config.sh.
1090 cat > cmdline.opt <<EOSH
1091 # Configure command line arguments.
1092 config_arg0='$0'
1093 config_args='$*'
1094 config_argc=$#
1095 EOSH
1096 argn=1
1097 for arg in "$@"; do
1098         cat >>cmdline.opt <<EOSH
1099 config_arg$argn='$arg'
1100 EOSH
1101         argn=`expr $argn + 1`
1102 done
1103
1104 : produce awk script to parse command line options
1105 cat >options.awk <<'EOF'
1106 BEGIN {
1107         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1108
1109         len = length(optstr);
1110         for (i = 1; i <= len; i++) {
1111                 c = substr(optstr, i, 1);
1112                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1113                 if (a == ":") {
1114                         arg[c] = 1;
1115                         i++;
1116                 }
1117                 opt[c] = 1;
1118         }
1119 }
1120 {
1121         expect = 0;
1122         str = $0;
1123         if (substr(str, 1, 1) != "-") {
1124                 printf("'%s'\n", str);
1125                 next;
1126         }
1127         len = length($0);
1128         for (i = 2; i <= len; i++) {
1129                 c = substr(str, i, 1);
1130                 if (!opt[c]) {
1131                         printf("-%s\n", substr(str, i));
1132                         next;
1133                 }
1134                 printf("-%s\n", c);
1135                 if (arg[c]) {
1136                         if (i < len)
1137                                 printf("'%s'\n", substr(str, i + 1));
1138                         else
1139                                 expect = 1;
1140                         next;
1141                 }
1142         }
1143 }
1144 END {
1145         if (expect)
1146                 print "?";
1147 }
1148 EOF
1149
1150 : process the command line options
1151 set X `for arg in "$@"; do echo "X$arg"; done |
1152         sed -e s/X// | awk -f options.awk`
1153 eval "set $*"
1154 shift
1155 rm -f options.awk
1156
1157 : set up default values
1158 fastread=''
1159 reuseval=false
1160 config_sh=''
1161 alldone=''
1162 error=''
1163 silent=''
1164 extractsh=''
1165 override=''
1166 knowitall=''
1167 rm -f optdef.sh posthint.sh
1168 cat >optdef.sh <<EOS
1169 $startsh
1170 EOS
1171
1172
1173 : option parsing
1174 while test $# -gt 0; do
1175         case "$1" in
1176         -d) shift; fastread=yes;;
1177         -e) shift; alldone=cont;;
1178         -f)
1179                 shift
1180                 cd ..
1181                 if test -r "$1"; then
1182                         config_sh="$1"
1183                 else
1184                         echo "$me: cannot read config file $1." >&2
1185                         error=true
1186                 fi
1187                 cd UU
1188                 shift;;
1189         -h) shift; error=true;;
1190         -r) shift; reuseval=true;;
1191         -s) shift; silent=true; realsilent=true;;
1192         -E) shift; alldone=exit;;
1193         -K) shift; knowitall=true;;
1194         -O) shift; override=true;;
1195         -S) shift; silent=true; extractsh=true;;
1196         -D)
1197                 shift
1198                 case "$1" in
1199                 *=)
1200                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1201                         echo "$me: ignoring -D $1" >&2
1202                         ;;
1203                 *=*) echo "$1" | \
1204                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1205                 *) echo "$1='define'" >> optdef.sh;;
1206                 esac
1207                 shift
1208                 ;;
1209         -U)
1210                 shift
1211                 case "$1" in
1212                 *=) echo "$1" >> optdef.sh;;
1213                 *=*)
1214                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1215                         echo "$me: ignoring -U $1" >&2
1216                         ;;
1217                 *) echo "$1='undef'" >> optdef.sh;;
1218                 esac
1219                 shift
1220                 ;;
1221         -A)
1222             shift
1223             xxx=''
1224             yyy="$1"
1225             zzz=''
1226             uuu=undef
1227             case "$yyy" in
1228             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1229                  case "$zzz" in
1230                  *:*) zzz='' ;;
1231                  *)   xxx=append
1232                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1233                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1234                  esac
1235                  ;;
1236             esac
1237             case "$xxx" in
1238             '')  case "$yyy" in
1239                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1240                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1241                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1242                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1243                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1244                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1245                  esac
1246                  ;;       
1247             esac
1248             case "$xxx" in
1249             append)
1250                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1251             clear)
1252                 echo "$yyy=''"                  >> posthint.sh ;;
1253             define)
1254                 case "$zzz" in
1255                 '') zzz=define ;;
1256                 esac
1257                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1258             eval)
1259                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1260             prepend)
1261                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1262             undef)
1263                 case "$zzz" in
1264                 '') zzz="$uuu" ;;
1265                 esac
1266                 echo "$yyy=$zzz"                >> posthint.sh ;;
1267             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1268             esac
1269             ;;
1270         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1271             exit 0;;
1272         --) break;;
1273         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1274         *) break;;
1275         esac
1276 done
1277
1278 case "$error" in
1279 true)
1280         cat >&2 <<EOM
1281 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1282                  [-U symbol] [-U symbol=] [-A command:symbol...]
1283   -d : use defaults for all answers.
1284   -e : go on without questioning past the production of config.sh.
1285   -f : specify an alternate default configuration file.
1286   -h : print this help message and exit (with an error status).
1287   -r : reuse C symbols value if possible (skips costly nm extraction).
1288   -s : silent mode, only echoes questions and essential information.
1289   -D : define symbol to have some value:
1290          -D symbol         symbol gets the value 'define'
1291          -D symbol=value   symbol gets the value 'value'
1292   -E : stop at the end of questions, after having produced config.sh.
1293   -K : do not use unless you know what you are doing.
1294   -O : let -D and -U override definitions from loaded configuration file.
1295   -S : perform variable substitutions on all .SH files (can mix with -f)
1296   -U : undefine symbol:
1297          -U symbol    symbol gets the value 'undef'
1298          -U symbol=   symbol gets completely empty
1299   -A : manipulate symbol after the platform specific hints have been applied:
1300          -A symbol=value                append " "value to symbol
1301          -A append:symbol=value         append value to symbol
1302          -A define:symbol=value         define symbol to have value
1303          -A clear:symbol                define symbol to be ''
1304          -A define:symbol               define symbol to be 'define'
1305          -A eval:symbol=value           define symbol to be eval of value
1306          -A prepend:symbol=value        prepend value to symbol
1307          -A undef:symbol                define symbol to be 'undef'
1308          -A undef:symbol=               define symbol to be ''
1309   -V : print version number and exit (with a zero status).
1310 EOM
1311         exit 1
1312         ;;
1313 esac
1314
1315 : Sanity checks
1316 case "$fastread$alldone" in
1317 yescont|yesexit) ;;
1318 *)
1319         if test ! -t 0; then
1320                 echo "Say 'sh Configure', not 'sh <Configure'"
1321                 exit 1
1322         fi
1323         ;;
1324 esac
1325
1326 exec 4>&1
1327 case "$silent" in
1328 true) exec 1>/dev/null;;
1329 esac
1330
1331 : run the defines and the undefines, if any, but leave the file out there...
1332 touch optdef.sh
1333 . ./optdef.sh
1334 : create the posthint manipulation script and leave the file out there...
1335 touch posthint.sh
1336
1337 : set package name
1338 package=perl5
1339 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1340 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1341 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1342 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1343 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1344 esac
1345
1346 : Some greps do not return status, grrr.
1347 echo "grimblepritz" >grimble
1348 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1349         contains=contains
1350 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1351         contains=grep
1352 else
1353         contains=contains
1354 fi
1355 rm -f grimble
1356 : the following should work in any shell
1357 case "$contains" in
1358 contains*)
1359         echo " "
1360         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1361         cat >contains <<'EOSS'
1362 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1363 EOSS
1364 chmod +x contains
1365 esac
1366
1367 : Find the path to the source tree
1368 case "$src" in
1369 '') case "$0" in
1370     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1371          case "$src" in
1372          /*)    ;;
1373          *)     src=`cd ../$src && pwd` ;;
1374          esac
1375          ;;
1376     *)   src='.';;
1377     esac;;
1378 esac
1379 case "$src" in
1380 '')     src=/
1381         rsrc=/
1382         ;;
1383 /*) rsrc="$src";;
1384 *) rsrc="../$src";;
1385 esac
1386 if test -f $rsrc/Configure && \
1387         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1388 then
1389    : found it, so we are ok.
1390 else
1391         rsrc=''
1392         for src in . .. ../.. ../../.. ../../../..; do
1393                 if test -f ../$src/Configure && \
1394                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1395                 then
1396                         rsrc=../$src
1397                         break
1398                 fi
1399         done
1400 fi
1401 case "$rsrc" in
1402 '')
1403         cat <<EOM >&4
1404
1405 Sorry, I can't seem to locate the source dir for $package.  Please start
1406 Configure with an explicit path -- i.e. /some/path/Configure.
1407
1408 EOM
1409         exit 1
1410         ;;
1411 ../.)   rsrc='..';;
1412 *)
1413         echo " "
1414         echo "Sources for $package found in \"$src\"." >&4
1415         ;;
1416 esac
1417
1418 : script used to extract .SH files with variable substitutions
1419 cat >extract <<'EOS'
1420 CONFIGDOTSH=true
1421 echo "Doing variable substitutions on .SH files..."
1422 if test -f $src/MANIFEST; then
1423         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1424 else
1425         echo "(Looking for .SH files under the source directory.)"
1426         set x `(cd $src; find . -name "*.SH" -print)`
1427 fi
1428 shift
1429 case $# in
1430 0) set x `(cd $src; echo *.SH)`; shift;;
1431 esac
1432 if test ! -f $src/$1; then
1433         shift
1434 fi
1435 mkdir_p='
1436 name=$1;
1437 create="";
1438 while test $name; do
1439         if test ! -d "$name"; then
1440                 create="$name $create";
1441                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1442                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1443         else
1444                 name="";
1445         fi;
1446 done;
1447 for file in $create; do
1448         mkdir $file;
1449 done
1450 '
1451 for file in $*; do
1452         case "$src" in
1453         ".")
1454                 case "$file" in
1455                 */*)
1456                         dir=`expr X$file : 'X\(.*\)/'`
1457                         file=`expr X$file : 'X.*/\(.*\)'`
1458                         (cd $dir && . ./$file)
1459                         ;;
1460                 *)
1461                         . ./$file
1462                         ;;
1463                 esac
1464                 ;;
1465         *)
1466                 case "$file" in
1467                 */*)
1468                         dir=`expr X$file : 'X\(.*\)/'`
1469                         file=`expr X$file : 'X.*/\(.*\)'`
1470                         (set x $dir; shift; eval $mkdir_p)
1471                         sh <$src/$dir/$file
1472                         ;;
1473                 *)
1474                         sh <$src/$file
1475                         ;;
1476                 esac
1477                 ;;
1478         esac
1479 done
1480 if test -f $src/config_h.SH; then
1481         if test ! -f config.h; then
1482         : oops, they left it out of MANIFEST, probably, so do it anyway.
1483         . $src/config_h.SH
1484         fi
1485 fi
1486 EOS
1487
1488 : extract files and exit if asked to do so
1489 case "$extractsh" in
1490 true)
1491         case "$realsilent" in
1492         true) ;;
1493         *) exec 1>&4;;
1494         esac
1495         case "$config_sh" in
1496         '') config_sh='config.sh';;
1497         esac
1498         echo " "
1499         echo "Fetching answers from $config_sh..."
1500         cd ..
1501         . $config_sh
1502         test "$override" && . ./optdef.sh
1503         echo " "
1504         . UU/extract
1505         rm -rf UU
1506         echo "Done."
1507         exit 0
1508         ;;
1509 esac
1510
1511 : Eunice requires " " instead of "", can you believe it
1512 echo " "
1513 : Here we go...
1514 echo "Beginning of configuration questions for $package."
1515
1516 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1517
1518 : first determine how to suppress newline on echo command
1519 echo " "
1520 echo "Checking echo to see how to suppress newlines..."
1521 (echo "hi there\c" ; echo " ") >.echotmp
1522 if $contains c .echotmp >/dev/null 2>&1 ; then
1523         echo "...using -n."
1524         n='-n'
1525         c=''
1526 else
1527         cat <<'EOM'
1528 ...using \c
1529 EOM
1530         n=''
1531         c='\c'
1532 fi
1533 echo $n "The star should be here-->$c"
1534 echo '*'
1535 rm -f .echotmp
1536
1537 : Now test for existence of everything in MANIFEST
1538 echo " "
1539 if test -f $rsrc/MANIFEST; then
1540         echo "First let's make sure your kit is complete.  Checking..." >&4
1541         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1542         rm -f missing
1543         tmppwd=`pwd`
1544         for filelist in x??; do
1545                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1546         done
1547         if test -s missing; then
1548                 cat missing >&4
1549                 cat >&4 <<'EOM'
1550
1551 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1552
1553 You have the option of continuing the configuration process, despite the
1554 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1555 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1556 and contact the author (perlbug@perl.com).
1557
1558 EOM
1559                 echo $n "Continue? [n] $c" >&4
1560                 read ans
1561                 case "$ans" in
1562                 y*)
1563                         echo "Continuing..." >&4
1564                         rm -f missing
1565                         ;;
1566                 *)
1567                         echo "ABORTING..." >&4
1568                         kill $$
1569                         ;;
1570                 esac
1571         else
1572                 echo "Looks good..."
1573         fi
1574 else
1575         echo "There is no MANIFEST file.  I hope your kit is complete !"
1576 fi
1577 rm -f missing x??
1578
1579 echo " "
1580 : Find the appropriate value for a newline for tr
1581 if test -n "$DJGPP"; then
1582        trnl='\012'
1583 fi
1584 if test X"$trnl" = X; then
1585         case "`echo foo|tr '\n' x 2>/dev/null`" in
1586         foox) trnl='\n' ;;
1587         esac
1588 fi
1589 if test X"$trnl" = X; then
1590         case "`echo foo|tr '\012' x 2>/dev/null`" in
1591         foox) trnl='\012' ;;
1592         esac
1593 fi
1594 if test X"$trnl" = X; then
1595         cat <<EOM >&2
1596
1597 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1598
1599 EOM
1600         exit 1
1601 fi
1602
1603 : compute the number of columns on the terminal for proper question formatting
1604 case "$COLUMNS" in
1605 '') COLUMNS='80';;
1606 esac
1607
1608 : set up the echo used in my read
1609 myecho="case \"\$xxxm\" in
1610 '') echo $n \"\$rp $c\" >&4;;
1611 *) case \"\$rp\" in
1612         '') echo $n \"[\$xxxm] $c\";;
1613         *)
1614                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1615                         echo \"\$rp\" >&4
1616                         echo $n \"[\$xxxm] $c\" >&4
1617                 else
1618                         echo $n \"\$rp [\$xxxm] $c\" >&4
1619                 fi
1620                 ;;
1621         esac;;
1622 esac"
1623
1624 : now set up to do reads with possible shell escape and default assignment
1625 cat <<EOSC >myread
1626 $startsh
1627 xxxm=\$dflt
1628 $myecho
1629 ans='!'
1630 case "\$fastread" in
1631 yes) case "\$dflt" in
1632         '') ;;
1633         *) ans='';
1634                 case "\$silent-\$rp" in
1635                 true-) ;;
1636                 *) echo " " >&4;;
1637                 esac;;
1638         esac;;
1639 *) case "\$silent" in
1640         true) case "\$rp" in
1641                 '') ans='';;
1642                 esac;;
1643         esac;;
1644 esac
1645 while expr "X\$ans" : "X!" >/dev/null; do
1646         read answ
1647         set x \$xxxm
1648         shift
1649         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1650         case  "\$answ" in
1651         "!")
1652                 sh 1>&4
1653                 echo " "
1654                 $myecho
1655                 ;;
1656         !*)
1657                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1658                 shift
1659                 sh 1>&4 -c "\$*"
1660                 echo " "
1661                 $myecho
1662                 ;;
1663         "\$ans")
1664                 case "\$ans" in
1665                 \\&*)
1666                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1667                         shift
1668                         case "\$1" in
1669                         -d)
1670                                 fastread=yes
1671                                 echo "(OK, I'll run with -d after this question.)" >&4
1672                                 ;;
1673                         -*)
1674                                 echo "*** Sorry, \$1 not supported yet." >&4
1675                                 ;;
1676                         esac
1677                         $myecho
1678                         ans=!
1679                         ;;
1680                 esac;;
1681         *)
1682                 case "\$aok" in
1683                 y)
1684                         echo "*** Substitution done -- please confirm."
1685                         xxxm="\$ans"
1686                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1687                         xxxm="\$ans"
1688                         ans=!
1689                         ;;
1690                 *)
1691                         echo "*** Error -- try again."
1692                         ans=!
1693                         ;;
1694                 esac
1695                 $myecho
1696                 ;;
1697         esac
1698         case "\$ans\$xxxm\$nostick" in
1699         '')
1700                 ans=!
1701                 $myecho
1702                 ;;
1703         esac
1704 done
1705 case "\$ans" in
1706 '') ans="\$xxxm";;
1707 esac
1708 EOSC
1709
1710 : create .config dir to save info across Configure sessions
1711 test -d ../.config || mkdir ../.config
1712 cat >../.config/README <<EOF
1713 This directory created by Configure to save information that should
1714 persist across sessions for $package.
1715
1716 You may safely delete it if you wish.
1717 EOF
1718
1719 : general instructions
1720 needman=true
1721 firsttime=true
1722 user=`(logname) 2>/dev/null`
1723 case "$user" in
1724 '') user=`whoami 2>&1`;;
1725 esac
1726 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1727         firsttime=false
1728         echo " "
1729         rp='Would you like to see the instructions?'
1730         dflt=n
1731         . ./myread
1732         case "$ans" in
1733         [yY]*) ;;
1734         *) needman=false;;
1735         esac
1736 fi
1737 if $needman; then
1738         cat <<EOH
1739
1740 This installation shell script will examine your system and ask you questions
1741 to determine how the perl5 package should be installed. If you get
1742 stuck on a question, you may use a ! shell escape to start a subshell or
1743 execute a command.  Many of the questions will have default answers in square
1744 brackets; typing carriage return will give you the default.
1745
1746 On some of the questions which ask for file or directory names you are allowed
1747 to use the ~name construct to specify the login directory belonging to "name",
1748 even if you don't have a shell which knows about that.  Questions where this is
1749 allowed will be marked "(~name ok)".
1750
1751 EOH
1752         rp=''
1753         dflt='Type carriage return to continue'
1754         . ./myread
1755         cat <<'EOH'
1756
1757 The prompter used in this script allows you to use shell variables and
1758 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1759 in the default answer, as if the default line was a set of arguments given to a
1760 script shell.  This means you may also use $* to repeat the whole default line,
1761 so you do not have to re-type everything to add something to the default.
1762
1763 Everytime there is a substitution, you will have to confirm.  If there is an
1764 error (e.g. an unmatched backtick), the default answer will remain unchanged
1765 and you will be prompted again.
1766
1767 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1768 the questions and use the computed defaults (or the previous answers if there
1769 was already a config.sh file). Type 'Configure -h' for a list of options.
1770 You may also start interactively and then answer '& -d' at any prompt to turn
1771 on the non-interactive behaviour for the remainder of the execution.
1772
1773 EOH
1774         . ./myread
1775         cat <<EOH
1776
1777 Much effort has been expended to ensure that this shell script will run on any
1778 Unix system.  If despite that it blows up on yours, your best bet is to edit
1779 Configure and run it again.  If you can't run Configure for some reason,
1780 you'll have to generate a config.sh file by hand.  Whatever problems you
1781 have, let me (perlbug@perl.com) know how I blew it.
1782
1783 This installation script affects things in two ways:
1784
1785 1) it may do direct variable substitutions on some of the files included
1786    in this kit.
1787 2) it builds a config.h file for inclusion in C programs.  You may edit
1788    any of these files as the need arises after running this script.
1789
1790 If you make a mistake on a question, there is no easy way to back up to it
1791 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1792 files.  Configure will offer to let you do this before it runs the SH files.
1793
1794 EOH
1795         dflt='Type carriage return to continue'
1796         . ./myread
1797         case "$firsttime" in
1798         true) echo $user >>../.config/instruct;;
1799         esac
1800 fi
1801
1802 : find out where common programs are
1803 echo " "
1804 echo "Locating common programs..." >&4
1805 cat <<EOSC >loc
1806 $startsh
1807 case \$# in
1808 0) exit 1;;
1809 esac
1810 thing=\$1
1811 shift
1812 dflt=\$1
1813 shift
1814 for dir in \$*; do
1815         case "\$thing" in
1816         .)
1817         if test -d \$dir/\$thing; then
1818                 echo \$dir
1819                 exit 0
1820         fi
1821         ;;
1822         *)
1823         for thisthing in \$dir/\$thing; do
1824                 : just loop through to pick last item
1825         done
1826         if test -f \$thisthing; then
1827                 echo \$thisthing
1828                 exit 0
1829         elif test -f \$dir/\$thing.exe; then
1830                 if test -n "$DJGPP"; then
1831                         echo \$dir/\$thing.exe
1832                 else
1833                         : on Eunice apparently
1834                         echo \$dir/\$thing
1835                 fi
1836                 exit 0
1837         fi
1838         ;;
1839         esac
1840 done
1841 echo \$dflt
1842 exit 1
1843 EOSC
1844 chmod +x loc
1845 $eunicefix loc
1846 loclist="
1847 awk
1848 cat
1849 comm
1850 cp
1851 echo
1852 expr
1853 grep
1854 ls
1855 make
1856 mkdir
1857 rm
1858 sed
1859 sort
1860 touch
1861 tr
1862 uniq
1863 "
1864 trylist="
1865 Mcc
1866 ar
1867 byacc
1868 cpp
1869 csh
1870 date
1871 egrep
1872 gzip
1873 less
1874 ln
1875 more
1876 nm
1877 nroff
1878 perl
1879 pg
1880 test
1881 uname
1882 zip
1883 "
1884 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1885 pth="$pth /lib /usr/lib"
1886 for file in $loclist; do
1887         eval xxx=\$$file
1888         case "$xxx" in
1889         /*|?:[\\/]*)
1890                 if test -f "$xxx"; then
1891                         : ok
1892                 else
1893                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1894                         xxx=`./loc $file $file $pth`
1895                 fi
1896                 ;;
1897         '') xxx=`./loc $file $file $pth`;;
1898         *) xxx=`./loc $xxx $xxx $pth`;;
1899         esac
1900         eval $file=$xxx
1901         eval _$file=$xxx
1902         case "$xxx" in
1903         /*)
1904                 echo $file is in $xxx.
1905                 ;;
1906         ?:[\\/]*)
1907                 echo $file is in $xxx.
1908                 ;;
1909         *)
1910                 echo "I don't know where '$file' is, and my life depends on it." >&4
1911                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1912                 exit 1
1913                 ;;
1914         esac
1915 done
1916 echo " "
1917 echo "Don't worry if any of the following aren't found..."
1918 say=offhand
1919 for file in $trylist; do
1920         eval xxx=\$$file
1921         case "$xxx" in
1922         /*|?:[\\/]*)
1923                 if test -f "$xxx"; then
1924                         : ok
1925                 else
1926                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1927                         xxx=`./loc $file $file $pth`
1928                 fi
1929                 ;;
1930         '') xxx=`./loc $file $file $pth`;;
1931         *) xxx=`./loc $xxx $xxx $pth`;;
1932         esac
1933         eval $file=$xxx
1934         eval _$file=$xxx
1935         case "$xxx" in
1936         /*)
1937                 echo $file is in $xxx.
1938                 ;;
1939         ?:[\\/]*)
1940                 echo $file is in $xxx.
1941                 ;;
1942         *)
1943                 echo "I don't see $file out there, $say."
1944                 say=either
1945                 ;;
1946         esac
1947 done
1948 case "$egrep" in
1949 egrep)
1950         echo "Substituting grep for egrep."
1951         egrep=$grep
1952         ;;
1953 esac
1954 case "$ln" in
1955 ln)
1956         echo "Substituting cp for ln."
1957         ln=$cp
1958         ;;
1959 esac
1960 case "$test" in
1961 test)
1962         echo "Hopefully test is built into your sh."
1963         ;;
1964 *)
1965         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1966                 echo "Using the test built into your sh."
1967                 test=test
1968                 _test=test
1969         fi
1970         ;;
1971 esac
1972 case "$echo" in
1973 echo)
1974         echo "Hopefully echo is built into your sh."
1975         ;;
1976 '') ;;
1977 *)
1978         echo " "
1979 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1980         $echo $n "hi there$c" >foo1
1981         echo $n "hi there$c" >foo2
1982         if cmp foo1 foo2 >/dev/null 2>&1; then
1983                 echo "They are compatible.  In fact, they may be identical."
1984         else
1985                 case "$n" in
1986                 '-n') n='' c='\c';;
1987                 *) n='-n' c='';;
1988                 esac
1989                 cat <<FOO
1990 They are not compatible!  You are probably running ksh on a non-USG system.
1991 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1992 have echo built in and we may have to run some Bourne shell scripts.  That
1993 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1994
1995 FOO
1996                 $echo $n "The star should be here-->$c"
1997                 $echo "*"
1998         fi
1999         $rm -f foo1 foo2
2000         ;;
2001 esac
2002
2003 : determine whether symbolic links are supported
2004 echo " "
2005 $touch blurfl
2006 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2007         echo "Symbolic links are supported." >&4
2008         lns="$ln -s"
2009 else
2010         echo "Symbolic links are NOT supported." >&4
2011         lns="$ln"
2012 fi
2013 $rm -f blurfl sym
2014
2015 : see whether [:lower:] and [:upper:] are supported character classes
2016 echo " "
2017 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2018 ABYZ)
2019         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2020         up='[:upper:]'
2021         low='[:lower:]'
2022         ;;
2023 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2024         # (0xc9 and 0xd1), therefore that is a nice testing point.
2025         if test "X$up" = X -o "X$low" = X; then
2026             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2027             ij) up='[A-Z]'
2028                 low='[a-z]'
2029                 ;;
2030             esac
2031         fi
2032         if test "X$up" = X -o "X$low" = X; then
2033             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2034             ij) up='A-Z'
2035                 low='a-z'
2036                 ;;
2037             esac
2038         fi
2039         if test "X$up" = X -o "X$low" = X; then
2040             case "`echo IJ | od -x 2>/dev/null`" in
2041             *C9D1*|*c9d1*)
2042                 echo "Hey, this might be EBCDIC." >&4
2043                 if test "X$up" = X -o "X$low" = X; then
2044                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2045                     ij) up='[A-IJ-RS-Z]'
2046                         low='[a-ij-rs-z]'
2047                         ;;
2048                     esac
2049                 fi
2050                 if test "X$up" = X -o "X$low" = X; then
2051                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2052                     ij) up='A-IJ-RS-Z'
2053                         low='a-ij-rs-z'
2054                         ;;
2055                     esac
2056                 fi
2057                 ;;
2058             esac
2059         fi
2060 esac
2061 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2062 ij)
2063     echo "Using $up and $low to convert case." >&4
2064     ;;
2065 *)
2066     echo "I don't know how to translate letters from upper to lower case." >&4
2067     echo "Your tr is not acting any way I know of." >&4
2068     exit 1
2069     ;;
2070 esac
2071 : set up the translation script tr, must be called with ./tr of course
2072 cat >tr <<EOSC
2073 $startsh
2074 case "\$1\$2" in
2075 '[A-Z][a-z]') exec $tr '$up' '$low';;
2076 '[a-z][A-Z]') exec $tr '$low' '$up';;
2077 esac
2078 exec $tr "\$@"
2079 EOSC
2080 chmod +x tr
2081 $eunicefix tr
2082
2083 : Try to determine whether config.sh was made on this system
2084 case "$config_sh" in
2085 '')
2086 myuname=`$uname -a 2>/dev/null`
2087 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2088 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2089 # because the A-Z/a-z are not consecutive.
2090 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2091         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2092 newmyuname="$myuname"
2093 dflt=n
2094 case "$knowitall" in
2095 '')
2096         if test -f ../config.sh; then
2097                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2098                         eval "`grep myuname= ../config.sh`"
2099                 fi
2100                 if test "X$myuname" = "X$newmyuname"; then
2101                         dflt=y
2102                 fi
2103         fi
2104         ;;
2105 *) dflt=y;;
2106 esac
2107
2108 : Get old answers from old config file if Configure was run on the
2109 : same system, otherwise use the hints.
2110 hint=default
2111 cd ..
2112 if test -f config.sh; then
2113         echo " "
2114         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2115         . UU/myread
2116         case "$ans" in
2117         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2118         *)  echo "Fetching default answers from your old config.sh file..." >&4
2119                 tmp_n="$n"
2120                 tmp_c="$c"
2121                 tmp_sh="$sh"
2122                 . ./config.sh
2123                 cp config.sh UU
2124                 n="$tmp_n"
2125                 c="$tmp_c"
2126                 : Older versions did not always set $sh.  Catch re-use of such
2127                 : an old config.sh.
2128                 case "$sh" in
2129                 '') sh="$tmp_sh" ;;
2130                 esac
2131                 hint=previous
2132                 ;;
2133         esac
2134 fi
2135 if test ! -f config.sh; then
2136         $cat <<EOM
2137
2138 First time through, eh?  I have some defaults handy for some systems
2139 that need some extra help getting the Configure answers right:
2140
2141 EOM
2142         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2143         dflt=''
2144         : Half the following guesses are probably wrong... If you have better
2145         : tests or hints, please send them to perlbug@perl.com
2146         : The metaconfig authors would also appreciate a copy...
2147         $test -f /irix && osname=irix
2148         $test -f /xenix && osname=sco_xenix
2149         $test -f /dynix && osname=dynix
2150         $test -f /dnix && osname=dnix
2151         $test -f /lynx.os && osname=lynxos
2152         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2153         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2154         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2155         $test -f /bin/mips && /bin/mips && osname=mips
2156         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2157                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2158         $test -d /usr/apollo/bin && osname=apollo
2159         $test -f /etc/saf/_sactab && osname=svr4
2160         $test -d /usr/include/minix && osname=minix
2161         if $test -d /MachTen -o -d /MachTen_Folder; then
2162                 osname=machten
2163                 if $test -x /sbin/version; then
2164                         osvers=`/sbin/version | $awk '{print $2}' |
2165                         $sed -e 's/[A-Za-z]$//'`
2166                 elif $test -x /usr/etc/version; then
2167                         osvers=`/usr/etc/version | $awk '{print $2}' |
2168                         $sed -e 's/[A-Za-z]$//'`
2169                 else
2170                         osvers="$2.$3"
2171                 fi
2172         fi
2173
2174         $test -f /sys/posix.dll &&
2175                 $test -f /usr/bin/what &&
2176                 set X `/usr/bin/what /sys/posix.dll` &&
2177                 $test "$3" = UWIN &&
2178                 osname=uwin &&
2179                 osvers="$5"
2180
2181         if $test -f $uname; then
2182                 set X $myuname
2183                 shift
2184
2185                 case "$5" in
2186                 fps*) osname=fps ;;
2187                 mips*)
2188                         case "$4" in
2189                         umips) osname=umips ;;
2190                         *) osname=mips ;;
2191                         esac;;
2192                 [23]100) osname=mips ;;
2193                 next*) osname=next ;;
2194                 i386*)
2195                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2196                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2197                                 osname='sco'
2198                                 osvers=$tmp
2199                         elif $test -f /etc/kconfig; then
2200                                 osname=isc
2201                                 if test "$lns" = "$ln -s"; then
2202                                         osvers=4
2203                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2204                                         osvers=3
2205                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2206                                         osvers=2
2207                                 fi
2208                         fi
2209                         tmp=''
2210                         ;;
2211                 pc*)
2212                         if test -n "$DJGPP"; then
2213                                 osname=dos
2214                                 osvers=djgpp
2215                         fi
2216                         ;;
2217                 esac
2218
2219                 case "$1" in
2220                 aix) osname=aix
2221                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2222                         case "$tmp" in
2223                         'not found') osvers="$4"."$3" ;;
2224                         '<3240'|'<>3240') osvers=3.2.0 ;;
2225                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2226                         '=3250'|'>3250') osvers=3.2.5 ;;
2227                         *) osvers=$tmp;;
2228                         esac
2229                         ;;
2230                 bsd386) osname=bsd386
2231                         osvers=`$uname -r`
2232                         ;;
2233                 cygwin*) osname=cygwin
2234                         osvers="$3"
2235                         ;;
2236                 *dc.osx) osname=dcosx
2237                         osvers="$3"
2238                         ;;
2239                 dnix) osname=dnix
2240                         osvers="$3"
2241                         ;;
2242                 domainos) osname=apollo
2243                         osvers="$3"
2244                         ;;
2245                 dgux) osname=dgux 
2246                         osvers="$3"
2247                         ;;
2248                 dynixptx*) osname=dynixptx
2249                         osvers=`echo "$4"|sed 's/^v//'`
2250                         ;;
2251                 freebsd) osname=freebsd 
2252                         osvers="$3" ;;
2253                 genix) osname=genix ;;
2254                 hp*) osname=hpux 
2255                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2256                         ;;
2257                 irix*) osname=irix
2258                         case "$3" in
2259                         4*) osvers=4 ;;
2260                         5*) osvers=5 ;;
2261                         *)      osvers="$3" ;;
2262                         esac
2263                         ;;
2264                 linux) osname=linux
2265                         case "$3" in
2266                         *)      osvers="$3" ;;
2267                         esac
2268                         ;;
2269                 MiNT) osname=mint
2270                         ;;
2271                 netbsd*) osname=netbsd
2272                         osvers="$3"
2273                         ;;
2274                 news-os) osvers="$3"
2275                         case "$3" in
2276                         4*) osname=newsos4 ;;
2277                         *) osname=newsos ;;
2278                         esac
2279                         ;;
2280                 next*) osname=next ;;
2281                 POSIX-BC | posix-bc ) osname=posix-bc
2282                         osvers="$3"
2283                         ;;
2284                 powerux | power_ux | powermax_os | powermaxos | \
2285                 powerunix | power_unix) osname=powerux
2286                         osvers="$3"
2287                         ;;
2288                 qnx) osname=qnx
2289                         osvers="$4"
2290                         ;;
2291                 solaris) osname=solaris
2292                         case "$3" in
2293                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2294                         *)      osvers="$3" ;;
2295                         esac
2296                         ;;
2297                 sunos) osname=sunos
2298                         case "$3" in
2299                         5*) osname=solaris
2300                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2301                         *)      osvers="$3" ;;
2302                         esac
2303                         ;;
2304                 titanos) osname=titanos
2305                         case "$3" in
2306                         1*) osvers=1 ;;
2307                         2*) osvers=2 ;;
2308                         3*) osvers=3 ;;
2309                         4*) osvers=4 ;;
2310                         *)      osvers="$3" ;;
2311                         esac
2312                         ;;
2313                 ultrix) osname=ultrix
2314                         osvers="$3"
2315                         ;;
2316                 osf1|mls+)      case "$5" in
2317                                 alpha)
2318                                         osname=dec_osf
2319                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2320                                         ;;
2321                         hp*)    osname=hp_osf1  ;;
2322                         mips)   osname=mips_osf1 ;;
2323                         esac
2324                         ;;
2325                 unixware) osname=svr5
2326                         osvers="$4"
2327                         ;;
2328                 uts) osname=uts
2329                         osvers="$3"
2330                         ;;
2331                 $2) case "$osname" in
2332                         *isc*) ;;
2333                         *freebsd*) ;;
2334                         svr*)
2335                                 : svr4.x or possibly later
2336                                 case "svr$3" in 
2337                                 ${osname}*)
2338                                         osname=svr$3
2339                                         osvers=$4
2340                                         ;;
2341                                 esac
2342                                 case "$osname" in
2343                                 svr4.0)
2344                                         : Check for ESIX
2345                                         if test -f /stand/boot ; then
2346                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2347                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2348                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2349                                                         if test -n "$isesix"; then
2350                                                                 osname=esix4
2351                                                         fi
2352                                                 fi
2353                                         fi
2354                                         ;;
2355                                 esac
2356                                 ;;
2357                         *)      if test -f /etc/systemid; then
2358                                         osname=sco
2359                                         set `echo $3 | $sed 's/\./ /g'` $4
2360                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2361                                                 osvers=$1.$2.$3
2362                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2363                                                 osvers=$1.$2
2364                                         elif $test -f $src/hints/sco_$1.sh; then
2365                                                 osvers=$1
2366                                         fi
2367                                 else
2368                                         case "$osname" in
2369                                         '') : Still unknown.  Probably a generic Sys V.
2370                                                 osname="sysv"
2371                                                 osvers="$3"
2372                                                 ;;
2373                                         esac
2374                                 fi
2375                                 ;;
2376                         esac
2377                         ;;
2378                 *)      case "$osname" in
2379                         '') : Still unknown.  Probably a generic BSD.
2380                                 osname="$1"
2381                                 osvers="$3"
2382                                 ;;
2383                         esac
2384                         ;;
2385                 esac
2386         else
2387                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2388                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2389                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2390                                 osname=news_os
2391                         fi
2392                         $rm -f UU/kernel.what
2393                 elif test -d c:/.; then
2394                         set X $myuname
2395                         osname=os2
2396                         osvers="$5"
2397                 fi
2398         fi
2399         
2400         : Now look for a hint file osname_osvers, unless one has been
2401         : specified already.
2402         case "$hintfile" in
2403         ''|' ')
2404                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2405                 : Also try without trailing minor version numbers.
2406                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2407                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2408                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2409                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2410                 case "$file" in
2411                 '') dflt=none ;;
2412                 *)  case "$osvers" in
2413                         '') dflt=$file
2414                                 ;;
2415                         *)  if $test -f $src/hints/$file.sh ; then
2416                                         dflt=$file
2417                                 elif $test -f $src/hints/$xfile.sh ; then
2418                                         dflt=$xfile
2419                                 elif $test -f $src/hints/$xxfile.sh ; then
2420                                         dflt=$xxfile
2421                                 elif $test -f $src/hints/$xxxfile.sh ; then
2422                                         dflt=$xxxfile
2423                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2424                                         dflt=$xxxxfile
2425                                 elif $test -f "$src/hints/${osname}.sh" ; then
2426                                         dflt="${osname}"
2427                                 else
2428                                         dflt=none
2429                                 fi
2430                                 ;;
2431                         esac
2432                         ;;
2433                 esac
2434                 if $test -f Policy.sh ; then
2435                         case "$dflt" in
2436                         *Policy*) ;;
2437                         none) dflt="Policy" ;;
2438                         *) dflt="Policy $dflt" ;;
2439                         esac
2440                 fi
2441                 ;;
2442         *)
2443                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2444                 ;;
2445         esac
2446
2447         if $test -f Policy.sh ; then
2448                 $cat <<EOM
2449
2450 There's also a Policy hint file available, which should make the
2451 site-specific (policy) questions easier to answer.
2452 EOM
2453
2454         fi
2455
2456         $cat <<EOM
2457
2458 You may give one or more space-separated answers, or "none" if appropriate.
2459 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2460 is a good thing.  DO NOT give a wrong version or a wrong OS.
2461
2462 EOM
2463
2464         rp="Which of these apply, if any?"
2465         . UU/myread
2466         tans=$ans
2467         for file in $tans; do
2468                 if $test X$file = XPolicy -a -f Policy.sh; then
2469                         . Policy.sh
2470                         $cat Policy.sh >> UU/config.sh
2471                 elif $test -f $src/hints/$file.sh; then
2472                         . $src/hints/$file.sh
2473                         $cat $src/hints/$file.sh >> UU/config.sh
2474                 elif $test X$tans = X -o X$tans = Xnone ; then
2475                         : nothing
2476                 else
2477                         : Give one chance to correct a possible typo.
2478                         echo "$file.sh does not exist"
2479                         dflt=$file
2480                         rp="hint to use instead?"
2481                         . UU/myread
2482                         for file in $ans; do
2483                                 if $test -f "$src/hints/$file.sh"; then
2484                                         . $src/hints/$file.sh
2485                                         $cat $src/hints/$file.sh >> UU/config.sh
2486                                 elif $test X$ans = X -o X$ans = Xnone ; then
2487                                         : nothing
2488                                 else
2489                                         echo "$file.sh does not exist -- ignored."
2490                                 fi
2491                         done
2492                 fi
2493         done
2494
2495         hint=recommended
2496         : Remember our hint file for later.
2497         if $test -f "$src/hints/$file.sh" ; then
2498                 hintfile="$file"
2499         else
2500                 hintfile=''
2501         fi
2502 fi
2503 cd UU
2504 ;;
2505 *)
2506         echo " "
2507         echo "Fetching default answers from $config_sh..." >&4
2508         tmp_n="$n"
2509         tmp_c="$c"
2510         cd ..
2511         cp $config_sh config.sh 2>/dev/null
2512         chmod +w config.sh
2513         . ./config.sh
2514         cd UU
2515         cp ../config.sh .
2516         n="$tmp_n"
2517         c="$tmp_c"
2518         hint=previous
2519         ;;
2520 esac
2521 test "$override" && . ./optdef.sh
2522 myuname="$newmyuname"
2523
2524 : Restore computed paths
2525 for file in $loclist $trylist; do
2526         eval $file="\$_$file"
2527 done
2528
2529 cat << EOM
2530
2531 Configure uses the operating system name and version to set some defaults.
2532 The default value is probably right if the name rings a bell. Otherwise,
2533 since spelling matters for me, either accept the default or answer "none"
2534 to leave it blank.
2535
2536 EOM
2537 case "$osname" in
2538         ''|' ')
2539                 case "$hintfile" in
2540                 ''|' '|none) dflt=none ;;
2541                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2542                 esac
2543                 ;;
2544         *) dflt="$osname" ;;
2545 esac
2546 rp="Operating system name?"
2547 . ./myread
2548 case "$ans" in
2549 none)  osname='' ;;
2550 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2551 esac
2552 echo " "
2553 case "$osvers" in
2554         ''|' ')
2555                 case "$hintfile" in
2556                 ''|' '|none) dflt=none ;;
2557                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2558                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2559                         case "$dflt" in
2560                         ''|' ') dflt=none ;;
2561                         esac
2562                         ;;
2563                 esac
2564                 ;;
2565         *) dflt="$osvers" ;;
2566 esac
2567 rp="Operating system version?"
2568 . ./myread
2569 case "$ans" in
2570 none)  osvers='' ;;
2571 *) osvers="$ans" ;;
2572 esac
2573
2574
2575 . ./posthint.sh
2576
2577 : who configured the system
2578 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2579 cf_by=`(logname) 2>/dev/null`
2580 case "$cf_by" in
2581 "")
2582         cf_by=`(whoami) 2>/dev/null`
2583         case "$cf_by" in
2584         "") cf_by=unknown ;;
2585         esac ;;
2586 esac
2587
2588 : set up the script used to warn in case of inconsistency
2589 cat <<EOS >whoa
2590 $startsh
2591 EOS
2592 cat <<'EOSC' >>whoa
2593 dflt=y
2594 echo " "
2595 echo "*** WHOA THERE!!! ***" >&4
2596 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2597 rp="    Keep the $hint value?"
2598 . ./myread
2599 case "$ans" in
2600 y) td=$was; tu=$was;;
2601 esac
2602 EOSC
2603
2604 : function used to set $1 to $val
2605 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2606 case "$val$was" in
2607 $define$undef) . ./whoa; eval "$var=\$td";;
2608 $undef$define) . ./whoa; eval "$var=\$tu";;
2609 *) eval "$var=$val";;
2610 esac'
2611
2612 cat <<EOM
2613
2614 Perl can be built to take advantage of threads on some systems.
2615 To do so, Configure must be run with -Dusethreads.
2616
2617 Note that threading is a highly experimental feature, and
2618 some known race conditions still remain.  If you choose to try
2619 it, be very sure to not actually deploy it for production
2620 purposes.  README.threads has more details, and is required
2621 reading if you enable threads.
2622 EOM
2623 case "$usethreads" in
2624 $define|true|[yY]*)     dflt='y';;
2625 *) dflt='n';;
2626 esac
2627 rp='Build a threading Perl?'
2628 . ./myread
2629 case "$ans" in
2630 y|Y)    val="$define" ;;
2631 *)      val="$undef" ;;
2632 esac
2633 set usethreads
2634 eval $setvar
2635
2636 case "$usethreads" in
2637 $define)
2638         $cat <<EOM
2639
2640 As of 5.5.640, Perl has two different internal threading implementations,
2641 the 5.005 version (5005threads) and an interpreter-based version
2642 (ithreads) that has one interpreter per thread.  Both are very 
2643 experimental.  This arrangement exists to help developers work out
2644 which one is better.
2645
2646 If you're a casual user, you probably don't want interpreter-threads
2647 at this time.  There doesn't yet exist a way to create threads from
2648 within Perl in this model, i.e., "use Thread;" will NOT work.
2649 EOM
2650         : Default to ithreads unless overridden on command line or with
2651         : old config.sh
2652         dflt='y'
2653         case "$use5005threads" in
2654                 $define|true|[yY]*) dflt='n';;
2655         esac
2656         case "$useithreads" in
2657                 $undef|false|[nN]*) dflt='n';;
2658         esac
2659         rp='Use interpreter-based ithreads?'
2660         . ./myread
2661         case "$ans" in
2662         y|Y)    val="$define" ;;
2663         *)      val="$undef" ;;
2664         esac
2665         set useithreads
2666         eval $setvar
2667         : Now set use5005threads to the opposite value.
2668         case "$useithreads" in
2669         $define) val="$undef" ;;
2670         *) val="$define" ;;
2671         esac
2672         set use5005threads
2673         eval $setvar
2674         ;;
2675 *)
2676         useithreads="$undef"
2677         use5005threads="$undef"
2678         ;;
2679 esac
2680
2681 case "$d_oldpthreads" in
2682 '')     : Configure tests would be welcome here.  For now, assume undef.
2683         val="$undef" ;;
2684 *)      val="$d_oldpthreads" ;;
2685 esac
2686 set d_oldpthreads
2687 eval $setvar
2688
2689
2690 case "$usethreads" in
2691 "$define"|true|[yY]*)
2692 : Look for a hint-file generated 'call-back-unit'.  If the
2693 : user has specified that a threading perl is to be built,
2694 : we may need to set or change some other defaults.
2695         if $test -f usethreads.cbu; then
2696                 echo "Your platform has some specific hints for threaded builds, using them..."
2697                 . ./usethreads.cbu
2698         else
2699                 $cat <<EOM
2700 (Your platform doesn't have any specific hints for threaded builds.
2701  Assuming POSIX threads, then.)
2702 EOM
2703         fi
2704         ;;
2705 esac
2706
2707 cat <<EOM
2708
2709 Perl can be built so that multiple Perl interpreters can coexist
2710 within the same Perl executable.
2711 EOM
2712
2713 case "$useithreads" in
2714 $define)
2715         cat <<EOM
2716 This multiple interpreter support is required for interpreter-based threads.
2717 EOM
2718         val="$define"
2719         ;;
2720 *)
2721         echo 'Normally you do not need this and you should answer no.'
2722         case "$usemultiplicity" in
2723         $define|true|[yY]*)     dflt='y';;
2724         *) dflt='n';;
2725         esac
2726         rp='Build Perl for multiplicity?'
2727         . ./myread
2728         case "$ans" in
2729         y|Y)    val="$define" ;;
2730         *)      val="$undef" ;;
2731         esac
2732         ;;
2733 esac
2734 set usemultiplicity
2735 eval $setvar
2736
2737 : determine where manual pages are on this system
2738 echo " "
2739 case "$sysman" in
2740 '') 
2741         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2742         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2743         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2744         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2745         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2746         sysman=`./loc . /usr/man/man1 $syspath`
2747         ;;
2748 esac
2749 if $test -d "$sysman"; then
2750         echo "System manual is in $sysman." >&4
2751 else
2752         echo "Could not find manual pages in source form." >&4
2753 fi
2754
2755 : see what memory models we can support
2756 case "$models" in
2757 '')
2758         $cat >pdp11.c <<'EOP'
2759 int main() {
2760 #ifdef pdp11
2761         exit(0);
2762 #else
2763         exit(1);
2764 #endif
2765 }
2766 EOP
2767         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2768         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2769                 dflt='unsplit split'
2770         else
2771                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2772                 case "$tans" in
2773                 X) dflt='none';;
2774                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2775                                 dflt='small'
2776                         else
2777                                 dflt=''
2778                         fi
2779                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2780                                 dflt="$dflt medium"
2781                         fi
2782                         if $test -d /lib/large || $test -d /usr/lib/large; then
2783                                 dflt="$dflt large"
2784                         fi
2785                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2786                                 dflt="$dflt huge"
2787                         fi
2788                 esac
2789         fi;;
2790 *) dflt="$models";;
2791 esac
2792 $cat <<EOM
2793  
2794 Some systems have different model sizes.  On most systems they are called
2795 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2796 split.  If your system doesn't support different memory models, say "none".
2797 If you wish to force everything to one memory model, say "none" here and
2798 put the appropriate flags later when it asks you for other cc and ld flags.
2799 Venix systems may wish to put "none" and let the compiler figure things out.
2800 (In the following question multiple model names should be space separated.)
2801
2802 The default for most systems is "none".
2803
2804 EOM
2805 rp="Which memory models are supported?"
2806 . ./myread
2807 models="$ans"
2808
2809 case "$models" in
2810 none)
2811         small=''
2812         medium=''
2813         large=''
2814         huge=''
2815         unsplit=''
2816         split=''
2817         ;;
2818 *split)
2819         case "$split" in
2820         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2821                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2822                         dflt='-i'
2823                 else
2824                         dflt='none'
2825                 fi;;
2826         *) dflt="$split";;
2827         esac
2828         rp="What flag indicates separate I and D space?"
2829         . ./myread
2830         tans="$ans"
2831         case "$tans" in
2832         none) tans='';;
2833         esac
2834         split="$tans"
2835         unsplit='';;
2836 *large*|*small*|*medium*|*huge*)
2837         case "$models" in
2838         *large*)
2839                 case "$large" in
2840                 '') dflt='-Ml';;
2841                 *) dflt="$large";;
2842                 esac
2843         rp="What flag indicates large model?"
2844         . ./myread
2845         tans="$ans"
2846         case "$tans" in
2847         none) tans='';
2848         esac
2849         large="$tans";;
2850         *) large='';;
2851         esac
2852         case "$models" in
2853         *huge*) case "$huge" in
2854                 '') dflt='-Mh';;
2855                 *) dflt="$huge";;
2856                 esac
2857                 rp="What flag indicates huge model?"
2858                 . ./myread
2859                 tans="$ans"
2860                 case "$tans" in
2861                 none) tans='';
2862                 esac
2863                 huge="$tans";;
2864         *) huge="$large";;
2865         esac
2866         case "$models" in
2867         *medium*) case "$medium" in
2868                 '') dflt='-Mm';;
2869                 *) dflt="$medium";;
2870                 esac
2871                 rp="What flag indicates medium model?"
2872                 . ./myread
2873                 tans="$ans"
2874                 case "$tans" in
2875                 none) tans='';
2876                 esac
2877                 medium="$tans";;
2878         *) medium="$large";;
2879         esac
2880         case "$models" in
2881         *small*) case "$small" in
2882                 '') dflt='none';;
2883                 *) dflt="$small";;
2884                 esac
2885                 rp="What flag indicates small model?"
2886                 . ./myread
2887                 tans="$ans"
2888                 case "$tans" in
2889                 none) tans='';
2890                 esac
2891                 small="$tans";;
2892         *) small='';;
2893         esac
2894         ;;
2895 *)
2896         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2897         ;;
2898 esac
2899 $rm -f pdp11.* pdp11
2900
2901 : make some quick guesses about what we are up against
2902 echo " "
2903 $echo $n "Hmm...  $c"
2904 echo exit 1 >bsd
2905 echo exit 1 >usg
2906 echo exit 1 >v7
2907 echo exit 1 >osf1
2908 echo exit 1 >eunice
2909 echo exit 1 >xenix
2910 echo exit 1 >venix
2911 echo exit 1 >os2
2912 d_bsd="$undef"
2913 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2914 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2915 then
2916         echo "Looks kind of like an OSF/1 system, but we'll see..."
2917         echo exit 0 >osf1
2918 elif test `echo abc | tr a-z A-Z` = Abc ; then
2919         xxx=`./loc addbib blurfl $pth`
2920         if $test -f $xxx; then
2921         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2922                 echo exit 0 >bsd
2923                 echo exit 0 >usg
2924         else
2925                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2926                         echo "Looks kind of like an extended USG system, but we'll see..."
2927                 else
2928                         echo "Looks kind of like a USG system, but we'll see..."
2929                 fi
2930                 echo exit 0 >usg
2931         fi
2932 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2933         echo "Looks kind of like a BSD system, but we'll see..."
2934         d_bsd="$define"
2935         echo exit 0 >bsd
2936 else
2937         echo "Looks kind of like a Version 7 system, but we'll see..."
2938         echo exit 0 >v7
2939 fi
2940 case "$eunicefix" in
2941 *unixtovms*)
2942         $cat <<'EOI'
2943 There is, however, a strange, musty smell in the air that reminds me of
2944 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2945 EOI
2946         echo exit 0 >eunice
2947         d_eunice="$define"
2948 : it so happens the Eunice I know will not run shell scripts in Unix format
2949         ;;
2950 *)
2951         echo " "
2952         echo "Congratulations.  You aren't running Eunice."
2953         d_eunice="$undef"
2954         ;;
2955 esac
2956 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2957 case "$p_" in
2958 :) ;;
2959 *)
2960         $cat <<'EOI'
2961 I have the feeling something is not exactly right, however...don't tell me...
2962 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2963 EOI
2964         echo exit 0 >os2
2965         ;;
2966 esac
2967 if test -f /xenix; then
2968         echo "Actually, this looks more like a XENIX system..."
2969         echo exit 0 >xenix
2970         d_xenix="$define"
2971 else
2972         echo " "
2973         echo "It's not Xenix..."
2974         d_xenix="$undef"
2975 fi
2976 chmod +x xenix
2977 $eunicefix xenix
2978 if test -f /venix; then
2979         echo "Actually, this looks more like a VENIX system..."
2980         echo exit 0 >venix
2981 else
2982         echo " "
2983         if ./xenix; then
2984                 : null
2985         else
2986                 echo "Nor is it Venix..."
2987         fi
2988 fi
2989 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2990 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2991 $rm -f foo
2992
2993 : see if we need a special compiler
2994 echo " "
2995 if ./usg; then
2996         case "$cc" in
2997         '') case "$Mcc" in
2998                 /*) dflt='Mcc';;
2999                 *) case "$large" in
3000                         -M*) dflt='cc';;
3001                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3002                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3003                                                 dflt='cc'
3004                                         else
3005                                                 dflt='cc -M'
3006                                         fi
3007                                 else
3008                                         dflt='cc'
3009                                 fi;;
3010                         esac;;
3011                 esac;;
3012         *)  dflt="$cc";;
3013         esac
3014         case "$dflt" in
3015         *M*)    $cat <<'EOM'
3016 On some older systems the default C compiler will not resolve multiple global
3017 references that happen to have the same name.  On some such systems the "Mcc"
3018 command may be used to force these to be resolved.  On other systems a "cc -M"
3019 command is required.  (Note that the -M flag on other systems indicates a
3020 memory model to use!) If you have the Gnu C compiler, you might wish to use
3021 that instead.
3022
3023 EOM
3024         ;;
3025         esac
3026         rp="Use which C compiler?"
3027         . ./myread
3028         cc="$ans"
3029 else
3030         case "$cc" in
3031         '') dflt=cc;;
3032         *) dflt="$cc";;
3033         esac
3034         rp="Use which C compiler?"
3035         . ./myread
3036         cc="$ans"
3037 fi
3038 : Look for a hint-file generated 'call-back-unit'.  Now that the
3039 : user has specified the compiler, we may need to set or change some
3040 : other defaults.
3041 if $test -f cc.cbu; then
3042     . ./cc.cbu
3043 fi
3044 echo " "
3045 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3046 $cat >gccvers.c <<EOM
3047 #include <stdio.h>
3048 int main() {
3049 #ifdef __GNUC__
3050 #ifdef __VERSION__
3051         printf("%s\n", __VERSION__);
3052 #else
3053         printf("%s\n", "1");
3054 #endif
3055 #endif
3056         exit(0);
3057 }
3058 EOM
3059 if $cc -o gccvers gccvers.c; then
3060         gccversion=`./gccvers`
3061         case "$gccversion" in
3062         '') echo "You are not using GNU cc." ;;
3063         *)  echo "You are using GNU cc $gccversion."
3064             ;;
3065         esac
3066 else
3067         echo " "
3068         echo "*** WHOA THERE!!! ***" >&4
3069         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3070         case "$knowitall" in
3071         '')
3072         echo "    You'd better start hunting for one and let me know about it." >&4
3073                 exit 1
3074                 ;;
3075         esac
3076 fi
3077 $rm -f gccvers*
3078 case "$gccversion" in
3079 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3080 esac
3081
3082 : decide how portable to be.  Allow command line overrides.
3083 case "$d_portable" in
3084 "$undef") ;;
3085 *)      d_portable="$define" ;;
3086 esac
3087
3088 : set up shell script to do ~ expansion
3089 cat >filexp <<EOSS
3090 $startsh
3091 : expand filename
3092 case "\$1" in
3093  ~/*|~)
3094         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3095         ;;
3096  ~*)
3097         if $test -f /bin/csh; then
3098                 /bin/csh -f -c "glob \$1"
3099                 failed=\$?
3100                 echo ""
3101                 exit \$failed
3102         else
3103                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3104                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3105                 if $test ! -d "\$dir"; then
3106                         me=\`basename \$0\`
3107                         echo "\$me: can't locate home directory for: \$name" >&2
3108                         exit 1
3109                 fi
3110                 case "\$1" in
3111                 */*)
3112                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3113                         ;;
3114                 *)
3115                         echo \$dir
3116                         ;;
3117                 esac
3118         fi
3119         ;;
3120 *)
3121         echo \$1
3122         ;;
3123 esac
3124 EOSS
3125 chmod +x filexp
3126 $eunicefix filexp
3127
3128 : now set up to get a file name
3129 cat <<EOS >getfile
3130 $startsh
3131 EOS
3132 cat <<'EOSC' >>getfile
3133 tilde=''
3134 fullpath=''
3135 already=''
3136 skip=''
3137 none_ok=''
3138 exp_file=''
3139 nopath_ok=''
3140 orig_rp="$rp"
3141 orig_dflt="$dflt"
3142 case "$gfpth" in
3143 '') gfpth='.' ;;
3144 esac
3145
3146 case "$fn" in
3147 *\(*)
3148         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3149         fn=`echo $fn | sed 's/(.*)//'`
3150         ;;
3151 esac
3152
3153 case "$fn" in
3154 *:*)
3155         loc_file=`expr $fn : '.*:\(.*\)'`
3156         fn=`expr $fn : '\(.*\):.*'`
3157         ;;
3158 esac
3159
3160 case "$fn" in
3161 *~*) tilde=true;;
3162 esac
3163 case "$fn" in
3164 */*) fullpath=true;;
3165 esac
3166 case "$fn" in
3167 *+*) skip=true;;
3168 esac
3169 case "$fn" in
3170 *n*) none_ok=true;;
3171 esac
3172 case "$fn" in
3173 *e*) exp_file=true;;
3174 esac
3175 case "$fn" in
3176 *p*) nopath_ok=true;;
3177 esac
3178
3179 case "$fn" in
3180 *f*) type='File';;
3181 *d*) type='Directory';;
3182 *l*) type='Locate';;
3183 esac
3184
3185 what="$type"
3186 case "$what" in
3187 Locate) what='File';;
3188 esac
3189
3190 case "$exp_file" in
3191 '')
3192         case "$d_portable" in
3193         "$define") ;;
3194         *) exp_file=true;;
3195         esac
3196         ;;
3197 esac
3198
3199 cd ..
3200 while test "$type"; do
3201         redo=''
3202         rp="$orig_rp"
3203         dflt="$orig_dflt"
3204         case "$tilde" in
3205         true) rp="$rp (~name ok)";;
3206         esac
3207         . UU/myread
3208         if test -f UU/getfile.ok && \
3209                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3210         then
3211                 value="$ans"
3212                 ansexp="$ans"
3213                 break
3214         fi
3215         case "$ans" in
3216         none)
3217                 value=''
3218                 ansexp=''
3219                 case "$none_ok" in
3220                 true) type='';;
3221                 esac
3222                 ;;
3223         *)
3224                 case "$tilde" in
3225                 '') value="$ans"
3226                         ansexp="$ans";;
3227                 *)
3228                         value=`UU/filexp $ans`
3229                         case $? in
3230                         0)
3231                                 if test "$ans" != "$value"; then
3232                                         echo "(That expands to $value on this system.)"
3233                                 fi
3234                                 ;;
3235                         *) value="$ans";;
3236                         esac
3237                         ansexp="$value"
3238                         case "$exp_file" in
3239                         '') value="$ans";;
3240                         esac
3241                         ;;
3242                 esac
3243                 case "$fullpath" in
3244                 true)
3245                         case "$ansexp" in
3246                         /*) value="$ansexp" ;;
3247                         *)
3248                                 redo=true
3249                                 case "$already" in
3250                                 true)
3251                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3252                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3253                                         ;;
3254                                 *)
3255                                 echo "Please give a full path name, starting with slash." >&4
3256                                         case "$tilde" in
3257                                         true)
3258                                 echo "Note that using ~name is ok provided it expands well." >&4
3259                                                 already=true
3260                                                 ;;
3261                                         esac
3262                                 esac
3263                                 ;;
3264                         esac
3265                         ;;
3266                 esac
3267                 case "$redo" in
3268                 '')
3269                         case "$type" in
3270                         File)
3271                                 for fp in $gfpth; do
3272                                         if test "X$fp" = X.; then
3273                                             pf="$ansexp"
3274                                         else    
3275                                             pf="$fp/$ansexp"
3276                                         fi
3277                                         if test -f "$pf"; then
3278                                                 type=''
3279                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3280                                         then
3281                                                 echo "($value is not a plain file, but that's ok.)"
3282                                                 type=''
3283                                         fi
3284                                         if test X"$type" = X; then
3285                                             value="$pf"
3286                                             break
3287                                         fi
3288                                 done
3289                                 ;;
3290                         Directory)
3291                                 for fp in $gfpth; do
3292                                         if test "X$fp" = X.; then
3293                                             pf="$ansexp"
3294                                         else    
3295                                             pf="$fp/$ansexp"
3296                                         fi
3297                                         if test -d "$pf"; then
3298                                                 type=''
3299                                                 value="$pf"
3300                                                 break
3301                                         fi
3302                                 done
3303                                 ;;
3304                         Locate)
3305                                 if test -d "$ansexp"; then
3306                                         echo "(Looking for $loc_file in directory $value.)"
3307                                         value="$value/$loc_file"
3308                                         ansexp="$ansexp/$loc_file"
3309                                 fi
3310                                 if test -f "$ansexp"; then
3311                                         type=''
3312                                 fi
3313                                 case "$nopath_ok" in
3314                                 true)   case "$value" in
3315                                         */*) ;;
3316                                         *)      echo "Assuming $value will be in people's path."
3317                                                 type=''
3318                                                 ;;
3319                                         esac
3320                                         ;;
3321                                 esac
3322                                 ;;
3323                         esac
3324
3325                         case "$skip" in
3326                         true) type='';
3327                         esac
3328
3329                         case "$type" in
3330                         '') ;;
3331                         *)
3332                                 if test "$fastread" = yes; then
3333                                         dflt=y
3334                                 else
3335                                         dflt=n
3336                                 fi
3337                                 rp="$what $value doesn't exist.  Use that name anyway?"
3338                                 . UU/myread
3339                                 dflt=''
3340                                 case "$ans" in
3341                                 y*) type='';;
3342                                 *) echo " ";;
3343                                 esac
3344                                 ;;
3345                         esac
3346                         ;;
3347                 esac
3348                 ;;
3349         esac
3350 done
3351 cd UU
3352 ans="$value"
3353 rp="$orig_rp"
3354 dflt="$orig_dflt"
3355 rm -f getfile.ok
3356 test "X$gfpthkeep" != Xy && gfpth=""
3357 EOSC
3358
3359 : What should the include directory be ?
3360 echo " "
3361 $echo $n "Hmm...  $c"
3362 dflt='/usr/include'
3363 incpath=''
3364 mips_type=''
3365 if $test -f /bin/mips && /bin/mips; then
3366         echo "Looks like a MIPS system..."
3367         $cat >usr.c <<'EOCP'
3368 #ifdef SYSTYPE_BSD43
3369 /bsd43
3370 #endif
3371 EOCP
3372         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3373                 dflt='/bsd43/usr/include'
3374                 incpath='/bsd43'
3375                 mips_type='BSD 4.3'
3376         else
3377                 mips_type='System V'
3378         fi
3379         $rm -f usr.c usr.out
3380         echo "and you're compiling with the $mips_type compiler and libraries."
3381         xxx_prompt=y
3382         echo "exit 0" >mips
3383 else
3384         echo "Doesn't look like a MIPS system."
3385         xxx_prompt=n
3386         echo "exit 1" >mips
3387 fi
3388 chmod +x mips
3389 $eunicefix mips
3390 case "$usrinc" in
3391 '') ;;
3392 *) dflt="$usrinc";;
3393 esac
3394 case "$xxx_prompt" in
3395 y)      fn=d/
3396         echo " "
3397         rp='Where are the include files you want to use?'
3398         . ./getfile
3399         usrinc="$ans"
3400         ;;
3401 *)      usrinc="$dflt"
3402         ;;
3403 esac
3404
3405 : see how we invoke the C preprocessor
3406 echo " "
3407 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3408 cat <<'EOT' >testcpp.c
3409 #define ABC abc
3410 #define XYZ xyz
3411 ABC.XYZ
3412 EOT
3413 cd ..
3414 if test ! -f cppstdin; then
3415         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3416                 # AIX cc -E doesn't show the absolute headerfile
3417                 # locations but we'll cheat by using the -M flag.
3418                 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
3419         else
3420                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3421         fi
3422 else
3423         echo "Keeping your $hint cppstdin wrapper."
3424 fi
3425 chmod 755 cppstdin
3426 wrapper=`pwd`/cppstdin
3427 ok='false'
3428 cd UU
3429
3430 if $test "X$cppstdin" != "X" && \
3431         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3432         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3433 then
3434         echo "You used to use $cppstdin $cppminus so we'll use that again."
3435         case "$cpprun" in
3436         '') echo "But let's see if we can live without a wrapper..." ;;
3437         *)
3438                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3439                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3440                 then
3441                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3442                         ok='true'
3443                 else
3444                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3445                 fi
3446                 ;;
3447         esac
3448 else
3449         case "$cppstdin" in
3450         '') ;;
3451         *)
3452                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3453                 ;;
3454         esac
3455 fi
3456
3457 if $ok; then
3458         : nothing
3459 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3460         $cc -E <testcpp.c >testcpp.out 2>&1; \
3461         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3462         echo "Yup, it does."
3463         x_cpp="$cc -E"
3464         x_minus='';
3465 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3466         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3467         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3468         echo "Yup, it does."
3469         x_cpp="$cc -E"
3470         x_minus='-';
3471 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3472         $cc -P <testcpp.c >testcpp.out 2>&1; \
3473         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474         echo "Yipee, that works!"
3475         x_cpp="$cc -P"
3476         x_minus='';
3477 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3478         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3479         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480         echo "At long last!"
3481         x_cpp="$cc -P"
3482         x_minus='-';
3483 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3484         $cpp <testcpp.c >testcpp.out 2>&1; \
3485         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486         echo "It works!"
3487         x_cpp="$cpp"
3488         x_minus='';
3489 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3490         $cpp - <testcpp.c >testcpp.out 2>&1; \
3491         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492         echo "Hooray, it works!  I was beginning to wonder."
3493         x_cpp="$cpp"
3494         x_minus='-';
3495 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3496         $wrapper <testcpp.c >testcpp.out 2>&1; \
3497         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3498         x_cpp="$wrapper"
3499         x_minus=''
3500         echo "Eureka!"
3501 else
3502         dflt=''
3503         rp="No dice.  I can't find a C preprocessor.  Name one:"
3504         . ./myread
3505         x_cpp="$ans"
3506         x_minus=''
3507         $x_cpp <testcpp.c >testcpp.out 2>&1
3508         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3509                 echo "OK, that will do." >&4
3510         else
3511 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3512                 exit 1
3513         fi
3514 fi
3515
3516 case "$ok" in
3517 false)
3518         cppstdin="$x_cpp"
3519         cppminus="$x_minus"
3520         cpprun="$x_cpp"
3521         cpplast="$x_minus"
3522         set X $x_cpp
3523         shift
3524         case "$1" in
3525         "$cpp")
3526                 echo "Perhaps can we force $cc -E using a wrapper..."
3527                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3528                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3529                 then
3530                         echo "Yup, we can."
3531                         cppstdin="$wrapper"
3532                         cppminus='';
3533                 else
3534                         echo "Nope, we'll have to live without it..."
3535                 fi
3536                 ;;
3537         esac
3538         case "$cpprun" in
3539         "$wrapper")
3540                 cpprun=''
3541                 cpplast=''
3542                 ;;
3543         esac
3544         ;;
3545 esac
3546
3547 case "$cppstdin" in
3548 "$wrapper"|'cppstdin') ;;
3549 *) $rm -f $wrapper;;
3550 esac
3551 $rm -f testcpp.c testcpp.out
3552
3553 : Set private lib path
3554 case "$plibpth" in
3555 '') if ./mips; then
3556                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3557         fi;;
3558 esac
3559 case "$libpth" in
3560 ' ') dlist='';;
3561 '') dlist="$loclibpth $plibpth $glibpth";;
3562 *) dlist="$libpth";;
3563 esac
3564
3565 : Now check and see which directories actually exist, avoiding duplicates
3566 libpth=''
3567 for xxx in $dlist
3568 do
3569     if $test -d $xxx; then
3570                 case " $libpth " in
3571                 *" $xxx "*) ;;
3572                 *) libpth="$libpth $xxx";;
3573                 esac
3574     fi
3575 done
3576 $cat <<'EOM'
3577
3578 Some systems have incompatible or broken versions of libraries.  Among
3579 the directories listed in the question below, please remove any you
3580 know not to be holding relevant libraries, and add any that are needed.
3581 Say "none" for none.
3582
3583 EOM
3584 case "$libpth" in
3585 '') dflt='none';;
3586 *)
3587         set X $libpth
3588         shift
3589         dflt=${1+"$@"}
3590         ;;
3591 esac
3592 rp="Directories to use for library searches?"
3593 . ./myread
3594 case "$ans" in
3595 none) libpth=' ';;
3596 *) libpth="$ans";;
3597 esac
3598
3599 : compute shared library extension
3600 case "$so" in
3601 '')
3602         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3603                 dflt='sl'
3604         else
3605                 dflt='so'
3606         fi
3607         ;;
3608 *) dflt="$so";;
3609 esac
3610 $cat <<EOM
3611
3612 On some systems, shared libraries may be available.  Answer 'none' if
3613 you want to suppress searching of shared libraries for the remainder
3614 of this configuration.
3615
3616 EOM
3617 rp='What is the file extension used for shared libraries?'
3618 . ./myread
3619 so="$ans"
3620
3621 : Define several unixisms.
3622 : Hints files or command line option can be used to override them.
3623 : The convoluted testing is in case hints files set either the old
3624 : or the new name.
3625 case "$_exe" in
3626 '')     case "$exe_ext" in
3627     '') ;;
3628         *)      _exe="$exe_ext" ;;
3629         esac
3630         ;;
3631 esac
3632 case "$_a" in
3633 '')     case "$lib_ext" in
3634     '') _a='.a';;
3635         *)      _a="$lib_ext" ;;
3636         esac
3637         ;;
3638 esac
3639 case "$_o" in
3640 '') case "$obj_ext" in
3641         '')     _o='.o';;
3642         *)      _o="$obj_ext";;
3643         esac
3644         ;;
3645 esac
3646 case "$p_" in
3647 '') case "$path_sep" in
3648         '')     p_=':';;
3649         *)      p_="$path_sep";;
3650         esac
3651         ;;
3652 esac
3653 exe_ext=$_exe
3654 lib_ext=$_a
3655 obj_ext=$_o
3656 path_sep=$p_
3657
3658 : Which makefile gets called first.  This is used by make depend.
3659 case "$firstmakefile" in
3660 '') firstmakefile='makefile';;
3661 esac
3662
3663 cat <<EOM
3664
3665 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3666 Configure must be run with -Dusesocks.
3667
3668 Normally you do not need this and you should answer no.
3669
3670 EOM
3671 case "$usesocks" in
3672 $define|true|[yY]*)     dflt='y';;
3673 *) dflt='n';;
3674 esac
3675 rp='Build Perl for SOCKS?'
3676 . ./myread
3677 case "$ans" in
3678 y|Y)    val="$define" ;;     
3679 *)      val="$undef" ;;
3680 esac
3681 set usesocks
3682 eval $setvar
3683
3684 : Looking for optional libraries
3685 echo " "
3686 echo "Checking for optional libraries..." >&4
3687 case "$libs" in
3688 ' '|'') dflt='';;
3689 *) dflt="$libs";;
3690 esac
3691 case "$libswanted" in
3692 '') libswanted='c_s';;
3693 esac
3694 case "$usesocks" in
3695 $define)
3696         libswanted="$libswanted socks5 socks5_sh"
3697         ;;
3698 esac
3699 for thislib in $libswanted; do
3700         
3701         libname="$thislib"
3702         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`
3703            $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X" ; then
3704                 libstyle=shared
3705         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3706                 libstyle=shared
3707         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3708                 libstyle=static
3709         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3710                 libstyle=static
3711         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3712                 libstyle=static
3713                 libname=${thislib}_s
3714         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3715                 libstyle="static"
3716         fi
3717         if $test -f "$xxx"; then
3718                 eval $libscheck
3719         fi
3720         if $test -f "$xxx"; then
3721                 case "$libstyle" in
3722                 shared) echo "Found -l$libname (shared)." ;;
3723                 static) echo "Found -l$libname." ;;
3724                 *)      echo "Found -l$libname ($libstyle)." ;;
3725                 esac
3726                 case " $dflt " in
3727                 *"-l$thislib "*);;
3728                 *) dflt="$dflt -l$libname"
3729                    libsfound="$libsfound $xxx"
3730                    yyy=`basename $xxx`
3731                    libsfiles="$libsfiles $yyy"
3732                    yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3733                    case " $libsdirs " in
3734                    *" $yyy "*) ;;
3735                    *) libsdirs="$libsdirs $yyy" ;;
3736                    esac
3737                    ;;
3738                 esac
3739         else
3740                 echo "No -l$thislib."
3741         fi
3742 done
3743 set X $dflt
3744 shift
3745 dflt="$*"
3746 case "$libs" in
3747 '') dflt="$dflt";;
3748 *) dflt="$libs";;
3749 esac
3750 case "$dflt" in
3751 ' '|'') dflt='none';;
3752 esac
3753
3754 $cat <<EOM
3755
3756 In order to compile $package on your machine, a number of libraries
3757 are usually needed.  Include any other special libraries here as well.
3758 Say "none" for none.  The default list is almost always right.
3759 EOM
3760
3761 echo " "
3762 rp="What libraries to use?"
3763 . ./myread
3764 case "$ans" in
3765 none) libs=' ';;
3766 *) libs="$ans";;
3767 esac
3768
3769 : determine optimization, if desired, or use for debug flag also
3770 case "$optimize" in
3771 ' '|$undef) dflt='none';;
3772 '') dflt='-O';;
3773 *) dflt="$optimize";;
3774 esac
3775 $cat <<EOH
3776
3777 By default, $package compiles with the -O flag to use the optimizer.
3778 Alternately, you might want to use the symbolic debugger, which uses
3779 the -g flag (on traditional Unix systems).  Either flag can be
3780 specified here.  To use neither flag, specify the word "none".
3781
3782 EOH
3783 rp="What optimizer/debugger flag should be used?"
3784 . ./myread
3785 optimize="$ans"
3786 case "$optimize" in
3787 'none') optimize=" ";;
3788 esac
3789
3790 dflt=''
3791 : We will not override a previous value, but we might want to
3792 : augment a hint file
3793 case "$hint" in
3794 default|recommended)
3795         case "$gccversion" in
3796         1*) dflt='-fpcc-struct-return' ;;
3797         esac
3798         case "$optimize" in
3799         *-g*) dflt="$dflt -DDEBUGGING";;
3800         esac
3801         case "$gccversion" in
3802         2*) if test -d /etc/conf/kconfig.d &&
3803                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3804                 then
3805                         dflt="$dflt -posix"
3806                 fi
3807                 ;;
3808         esac
3809         case "$gccversion" in
3810         1*) ;;
3811         2.[0-8]*) ;;
3812         ?*)     echo " "
3813                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3814                 echo 'int main(void) { return 0; }' > gcctest.c
3815                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3816                         echo "Yes, it does." 2>&1
3817                         case "$ccflags" in
3818                         *strict-aliasing*) 
3819                                 echo "Leaving current flags $ccflags alone." 2>&1
3820                                 ;;
3821                         *) dflt="$dflt -fno-strict-aliasing" ;;
3822                         esac
3823                 else
3824                         echo "Nope, it doesn't, but that's ok." 2>&1
3825                 fi
3826                 ;;
3827         esac
3828         ;;
3829 esac
3830
3831 case "$mips_type" in
3832 *BSD*|'') inclwanted="$locincpth $usrinc";;
3833 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3834 esac
3835 for thisincl in $inclwanted; do
3836         if $test -d $thisincl; then
3837                 if $test x$thisincl != x$usrinc; then
3838                         case "$dflt" in
3839                         *$thisincl*);;
3840                         *) dflt="$dflt -I$thisincl";;
3841                         esac
3842                 fi
3843         fi
3844 done
3845
3846 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3847         xxx=true;
3848 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3849         xxx=true;
3850 else
3851         xxx=false;
3852 fi;
3853 if $xxx; then
3854         case "$dflt" in
3855         *$2*);;
3856         *) dflt="$dflt -D$2";;
3857         esac;
3858 fi'
3859
3860 set signal.h LANGUAGE_C; eval $inctest
3861
3862 case "$usesocks" in
3863 $define)
3864         ccflags="$ccflags -DSOCKS"
3865         ;;
3866 esac
3867
3868 case "$hint" in
3869 default|recommended) dflt="$ccflags $dflt" ;;
3870 *) dflt="$ccflags";;
3871 esac
3872
3873 case "$dflt" in
3874 ''|' ') dflt=none;;
3875 esac
3876 $cat <<EOH
3877
3878 Your C compiler may want other flags.  For this question you should include
3879 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3880 but you should NOT include libraries or ld flags like -lwhatever.  If you
3881 want $package to honor its debug switch, you should include -DDEBUGGING here.
3882 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3883
3884 To use no flags, specify the word "none".
3885
3886 EOH
3887 set X $dflt
3888 shift
3889 dflt=${1+"$@"}
3890 rp="Any additional cc flags?"
3891 . ./myread
3892 case "$ans" in
3893 none) ccflags='';;
3894 *) ccflags="$ans";;
3895 esac
3896
3897 : the following weeds options from ccflags that are of no interest to cpp
3898 cppflags="$ccflags"
3899 case "$gccversion" in
3900 1*) cppflags="$cppflags -D__GNUC__"
3901 esac
3902 case "$mips_type" in
3903 '');;
3904 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3905 esac
3906 case "$cppflags" in
3907 '');;
3908 *)
3909         echo " "
3910         echo "Let me guess what the preprocessor flags are..." >&4
3911         set X $cppflags
3912         shift
3913         cppflags=''
3914         $cat >cpp.c <<'EOM'
3915 #define BLURFL foo
3916
3917 BLURFL xx LFRULB
3918 EOM
3919         previous=''
3920         for flag in $*
3921         do
3922                 case "$flag" in
3923                 -*) ftry="$flag";;
3924                 *) ftry="$previous $flag";;
3925                 esac
3926                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3927                         >cpp1.out 2>/dev/null && \
3928                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3929                         >cpp2.out 2>/dev/null && \
3930                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3931                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3932                 then
3933                         cppflags="$cppflags $ftry"
3934                         previous=''
3935                 else
3936                         previous="$flag"
3937                 fi
3938         done
3939         set X $cppflags
3940         shift
3941         cppflags=${1+"$@"}
3942         case "$cppflags" in
3943         *-*)  echo "They appear to be: $cppflags";;
3944         esac
3945         $rm -f cpp.c cpp?.out
3946         ;;
3947 esac
3948
3949 : flags used in final linking phase
3950 case "$ldflags" in
3951 '') if ./venix; then
3952                 dflt='-i -z'
3953         else
3954                 dflt=''
3955         fi
3956         case "$ccflags" in
3957         *-posix*) dflt="$dflt -posix" ;;
3958         esac
3959         ;;
3960 *) dflt="$ldflags";;
3961 esac
3962
3963 : Try to guess additional flags to pick up local libraries.
3964 for thislibdir in $libpth; do
3965         case " $loclibpth " in
3966         *" $thislibdir "*)
3967                 case "$dflt " in 
3968                 *"-L$thislibdir "*) ;;
3969                 *)  dflt="$dflt -L$thislibdir" ;;
3970                 esac
3971                 ;;
3972         esac
3973 done
3974
3975 case "$dflt" in
3976 '') dflt='none' ;;
3977 esac
3978
3979 $cat <<EOH
3980
3981 Your C linker may need flags.  For this question you should
3982 include -L/whatever and any other flags used by the C linker, but you
3983 should NOT include libraries like -lwhatever.
3984
3985 Make sure you include the appropriate -L/path flags if your C linker
3986 does not normally search all of the directories you specified above,
3987 namely
3988         $libpth
3989 To use no flags, specify the word "none".
3990
3991 EOH
3992
3993 rp="Any additional ld flags (NOT including libraries)?"
3994 . ./myread
3995 case "$ans" in
3996 none) ldflags='';;
3997 *) ldflags="$ans";;
3998 esac
3999 rmlist="$rmlist pdp11"
4000
4001 : coherency check
4002 echo " "
4003 echo "Checking your choice of C compiler and flags for coherency..." >&4
4004 $cat > try.c <<'EOF'
4005 #include <stdio.h>
4006 int main() { printf("Ok\n"); exit(0); }
4007 EOF
4008 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4009 shift
4010 $cat >try.msg <<'EOM'
4011 I've tried to compile and run the following simple program:
4012
4013 EOM
4014 $cat try.c >> try.msg
4015
4016 $cat >> try.msg <<EOM
4017
4018 I used the command:
4019
4020         $*
4021         ./try
4022
4023 and I got the following output:
4024
4025 EOM
4026 dflt=y
4027 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4028         if sh -c './try' >>try.msg 2>&1; then
4029                 xxx=`./try`
4030                 case "$xxx" in
4031                 "Ok") dflt=n ;;
4032                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4033                         case " $libs " in
4034                         *" -lsfio "*)
4035                                 cat >> try.msg <<'EOQS'
4036 If $libs contains -lsfio, and sfio is mis-configured, then it
4037 sometimes (apparently) runs and exits with a 0 status, but with no
4038 output!  It may have to do with sfio's use of _exit vs. exit.
4039
4040 EOQS
4041                                 rp="You have a big problem.  Shall I abort Configure"
4042                                 dflt=y
4043                                 ;;
4044                         esac
4045                         ;;
4046                 esac
4047         else
4048                 echo "The program compiled OK, but exited with status $?." >>try.msg
4049                 rp="You have a problem.  Shall I abort Configure"
4050                 dflt=y
4051         fi
4052 else
4053         echo "I can't compile the test program." >>try.msg
4054         rp="You have a BIG problem.  Shall I abort Configure"
4055         dflt=y
4056 fi
4057 case "$dflt" in
4058 y)
4059         $cat try.msg >&4
4060         case "$knowitall" in
4061         '')
4062                 echo "(The supplied flags or libraries might be incorrect.)"
4063                 ;;
4064         *) dflt=n;;
4065         esac
4066         echo " "
4067         . ./myread
4068         case "$ans" in
4069         n*|N*) ;;
4070         *)      echo "Ok.  Stopping Configure." >&4
4071                 exit 1
4072                 ;;
4073         esac
4074         ;;
4075 n) echo "OK, that should do.";;
4076 esac
4077 $rm -f try try.* core
4078
4079 : define an is-a-typedef? function
4080 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4081 case "$inclist" in
4082 "") inclist="sys/types.h";;
4083 esac;
4084 eval "varval=\$$var";
4085 case "$varval" in
4086 "")
4087         $rm -f temp.c;
4088         for inc in $inclist; do
4089                 echo "#include <$inc>" >>temp.c;
4090         done;
4091         echo "#ifdef $type" >> temp.c;
4092         echo "printf(\"We have $type\");" >> temp.c;
4093         echo "#endif" >> temp.c;
4094         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4095         if $contains $type temp.E >/dev/null 2>&1; then
4096                 eval "$var=\$type";
4097         else
4098                 eval "$var=\$def";
4099         fi;
4100         $rm -f temp.?;;
4101 *) eval "$var=\$varval";;
4102 esac'
4103
4104 : define an is-a-typedef? function that prompts if the type is not available.
4105 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4106 case "$inclist" in
4107 "") inclist="sys/types.h";;
4108 esac;
4109 eval "varval=\$$var";
4110 case "$varval" in
4111 "")
4112         $rm -f temp.c;
4113         for inc in $inclist; do
4114                 echo "#include <$inc>" >>temp.c;
4115         done;
4116         echo "#ifdef $type" >> temp.c;
4117         echo "printf(\"We have $type\");" >> temp.c;
4118         echo "#endif" >> temp.c;
4119         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4120         echo " " ;
4121         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4122         if $contains $type temp.E >/dev/null 2>&1; then
4123                 echo "$type found." >&4;
4124                 eval "$var=\$type";
4125         else
4126                 echo "$type NOT found." >&4;
4127                 dflt="$def";
4128                 . ./myread ;
4129                 eval "$var=\$ans";
4130         fi;
4131         $rm -f temp.?;;
4132 *) eval "$var=\$varval";;
4133 esac'
4134
4135 : define a shorthand compile call
4136 compile='
4137 mc_file=$1;
4138 shift;
4139 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4140 : define a shorthand compile call for compilations that should be ok.
4141 compile_ok='
4142 mc_file=$1;
4143 shift;
4144 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4145
4146 : check for lengths of integral types
4147 echo " "
4148 case "$intsize" in
4149 '')
4150         echo "Checking to see how big your integers are..." >&4
4151         $cat >intsize.c <<'EOCP'
4152 #include <stdio.h>
4153 int main()
4154 {
4155         printf("intsize=%d;\n", (int)sizeof(int));
4156         printf("longsize=%d;\n", (int)sizeof(long));
4157         printf("shortsize=%d;\n", (int)sizeof(short));
4158         exit(0);
4159 }
4160 EOCP
4161         set intsize
4162         if eval $compile_ok && ./intsize > /dev/null; then
4163                 eval `./intsize`
4164                 echo "Your integers are $intsize bytes long."
4165                 echo "Your long integers are $longsize bytes long."
4166                 echo "Your short integers are $shortsize bytes long."
4167         else
4168                 $cat >&4 <<EOM
4169 !
4170 Help! I can't compile and run the intsize test program: please enlighten me!
4171 (This is probably a misconfiguration in your system or libraries, and
4172 you really ought to fix it.  Still, I'll try anyway.)
4173 !
4174 EOM
4175                 dflt=4
4176                 rp="What is the size of an integer (in bytes)?"
4177                 . ./myread
4178                 intsize="$ans"
4179                 dflt=$intsize
4180                 rp="What is the size of a long integer (in bytes)?"
4181                 . ./myread
4182                 longsize="$ans"
4183                 dflt=2
4184                 rp="What is the size of a short integer (in bytes)?"
4185                 . ./myread
4186                 shortsize="$ans"
4187         fi
4188         ;;
4189 esac
4190 $rm -f intsize intsize.*
4191
4192 : see what type lseek is declared as in the kernel
4193 rp="What is the type used for lseek's offset on this system?"
4194 set off_t lseektype long stdio.h sys/types.h
4195 eval $typedef_ask
4196
4197 echo " "
4198 $echo $n "Checking to see how big your file offsets are...$c" >&4
4199 $cat >try.c <<EOCP
4200 #include <sys/types.h>
4201 #include <stdio.h>
4202 int main()
4203 {
4204     printf("%d\n", (int)sizeof($lseektype));
4205     return(0); 
4206 }
4207 EOCP
4208 set try
4209 if eval $compile_ok; then
4210         lseeksize=`./try`
4211         $echo " $lseeksize bytes." >&4
4212 else
4213         dflt=$longsize
4214         echo " "
4215         echo "(I can't seem to compile the test program.  Guessing...)"
4216         rp="What is the size of your file offsets (in bytes)?"
4217         . ./myread
4218         lseeksize="$ans"
4219 fi
4220 $rm -f try.c try
4221
4222 : see what type file positions are declared as in the library
4223 rp="What is the type for file position used by fsetpos()?"
4224 set fpos_t fpostype long stdio.h sys/types.h
4225 eval $typedef_ask
4226
4227 echo " "
4228 case "$fpostype" in
4229 *_t) zzz="$fpostype"    ;;
4230 *)   zzz="fpos_t"       ;;
4231 esac
4232 $echo $n "Checking the size of $zzz...$c" >&4 
4233 cat > try.c <<EOCP
4234 #include <sys/types.h>
4235 #include <stdio.h>
4236 int main() {
4237     printf("%d\n", (int)sizeof($fpostype));
4238     exit(0);
4239 }
4240 EOCP
4241 set try
4242 if eval $compile_ok; then
4243         yyy=`./try`
4244         case "$yyy" in
4245         '')     fpossize=4
4246                 echo " "
4247                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4248                 ;;
4249         *)      fpossize=$yyy
4250                 echo " $fpossize bytes."
4251                 ;;
4252         esac
4253 else
4254         dflt="$longsize"
4255         echo " "
4256         echo "(I can't compile the test program.  Guessing...)" >&4
4257         rp="What is the size of your file positions (in bytes)?"
4258         . ./myread
4259         fpossize="$ans"
4260 fi
4261
4262
4263
4264 case "$lseeksize:$fpossize" in
4265 8:8) cat <<EOM
4266
4267 You can have files larger than 2 gigabytes.
4268 EOM
4269    val="$define" ;;
4270 *) cat <<EOM
4271
4272 Perl can be built to understand large files (files larger than 2 gigabytes)
4273 on some systems.  To do so, Configure must be run with -Duselargefiles.
4274
4275 If this doesn't make any sense to you, just accept the default 'y'.
4276 EOM
4277    case "$uselargefiles" in
4278    "$undef"|false|[nN]*) dflt='n' ;;
4279    *)   dflt='y' ;;
4280    esac
4281    rp='Try to understand large files, if available?'
4282    . ./myread
4283    case "$ans" in
4284    y|Y)         val="$define" ;;
4285    *)           val="$undef"  ;;
4286    esac
4287    ;;
4288 esac
4289 set uselargefiles
4290 eval $setvar
4291 case "$uselargefiles" in
4292 "$define")
4293 : Look for a hint-file generated 'call-back-unit'.  If the
4294 : user has specified that a large files perl is to be built,
4295 : we may need to set or change some other defaults.
4296         if $test -f uselfs.cbu; then
4297                 echo "Your platform has some specific hints for large file builds, using them..."
4298                 . ./uselfs.cbu
4299                 echo " "
4300                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4301                 $cat >try.c <<EOCP
4302 #include <sys/types.h>
4303 #include <stdio.h>
4304 int main()
4305 {
4306     printf("%d\n", (int)sizeof($lseektype));
4307     return(0); 
4308 }
4309 EOCP
4310                 set try
4311                 if eval $compile_ok; then
4312                         lseeksize=`./try`
4313                         $echo " $lseeksize bytes." >&4
4314                 else
4315                         dflt="$lseeksize"
4316                         echo " "
4317                         echo "(I can't seem to compile the test program.  Guessing...)"
4318                         rp="What is the size of your file offsets (in bytes)?"
4319                         . ./myread
4320                         lseeksize="$ans"
4321                 fi
4322                 case "$fpostype" in
4323                 *_t) zzz="$fpostype"    ;;
4324                 *)   zzz="fpos_t"       ;;
4325                 esac
4326                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4327                 $cat > try.c <<EOCP
4328 #include <sys/types.h>
4329 #include <stdio.h>
4330 int main() {
4331     printf("%d\n", (int)sizeof($fpostype));
4332     exit(0);
4333 }
4334 EOCP
4335                 set try
4336                 if eval $compile_ok; then
4337                         yyy=`./try`
4338                         dflt="$lseeksize"
4339                         case "$yyy" in
4340                         '')     echo " "
4341                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4342                                 ;;
4343                         *)      fpossize=$yyy
4344                                 echo " $fpossize bytes."
4345                                 ;;
4346                         esac
4347                 else
4348                         dflt="$fpossize"
4349                         echo " "
4350                         echo "(I can't compile the test program.  Guessing...)" >&4
4351                         rp="What is the size of your file positions (in bytes)?"
4352                         . ./myread
4353                         fpossize="$ans"
4354                 fi
4355                 $rm -f try.c try
4356         fi
4357         ;;
4358 esac
4359
4360
4361 case "$usemorebits" in
4362 "$define"|true|[yY]*)
4363         use64bits="$define"
4364         uselongdouble="$define"
4365         usemorebits="$define"
4366         ;;
4367 *)      usemorebits="$undef"
4368         ;;
4369 esac
4370
4371
4372 case "$intsize:$longsize" in
4373 8:*|*:8) cat <<EOM
4374
4375 You have natively 64-bit integers.
4376 EOM
4377    val="$define" ;;
4378 *) cat <<EOM
4379
4380 Perl can be built to take advantage of 64-bit integer types
4381 on some systems.  To do so, Configure must be run with -Duse64bits.
4382
4383 If this doesn't make any sense to you, just accept the default.
4384 EOM
4385   case "$use64bits" in
4386   $define|true|[yY]*)   dflt='y';;
4387   *) dflt='n';;
4388   esac
4389   rp='Try to use 64-bit integers, if available?'
4390   . ./myread
4391   case "$ans" in
4392   y|Y) val="$define" ;;
4393   *)   val="$undef"  ;;
4394   esac
4395   ;;
4396 esac
4397 set use64bits
4398 eval $setvar
4399
4400 case "$archname64" in
4401 '') archname64='' ;;    # not a typo
4402 esac
4403
4404 case "$use64bits" in
4405 "$define"|true|[yY]*)
4406 : Look for a hint-file generated 'call-back-unit'.  If the
4407 : user has specified that a 64-bit perl is to be built,
4408 : we may need to set or change some other defaults.
4409         if $test -f use64bits.cbu; then
4410                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4411                 . ./use64bits.cbu
4412         else
4413                 $cat <<EOM
4414 (Your platform doesn't have any specific hints for 64-bit builds.)
4415 EOM
4416                 case "$intsize:$longsize" in
4417 8:*|*:8) cat <<EOM
4418 (This is probably okay, as your system is a natively 64-bit system.)
4419 EOM
4420                   ;;
4421                 esac
4422                 case "$gccversion" in
4423                 '')     ;;
4424                 *)      case "$ccflags" in
4425                         *-DUSE_LONG_LONG*) ;;
4426                         *) $cat <<EOM
4427 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4428 to the compilation flags.
4429 EOM
4430                            ccflags="$ccflags -DUSE_LONG_LONG"
4431                            ;;
4432                         esac
4433                         ;;
4434                 esac
4435         fi
4436         ;;
4437 esac
4438
4439 : determine the architecture name
4440 echo " "
4441 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4442         tarch=`arch`"-$osname"
4443 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4444         if uname -m > tmparch 2>&1 ; then
4445                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4446                         -e 's/$/'"-$osname/" tmparch`
4447         else
4448                 tarch="$osname"
4449         fi
4450         $rm -f tmparch
4451 else
4452         tarch="$osname"
4453 fi
4454 case "$myarchname" in
4455 ''|"$tarch") ;;
4456 *)
4457         echo "(Your architecture name used to be $myarchname.)"
4458         archname=''
4459         ;;
4460 esac
4461 myarchname="$tarch"
4462 case "$archname" in
4463 '') dflt="$tarch";;
4464 *) dflt="$archname";;
4465 esac
4466 rp='What is your architecture name'
4467 . ./myread
4468 archname="$ans"
4469 case "$usethreads" in
4470 $define)
4471         echo "Threads selected." >&4
4472         case "$archname" in
4473         *-thread*) echo "...and architecture name already has -thread." >&4
4474                 ;;
4475         *)      archname="$archname-thread"
4476                 echo "...setting architecture name to $archname." >&4
4477                 ;;
4478         esac
4479         ;;
4480 esac
4481 case "$usemultiplicity" in
4482 $define)
4483         echo "Multiplicity selected." >&4
4484         case "$archname" in
4485         *-multi*) echo "...and architecture name already has -multi." >&4
4486                 ;;
4487         *)      archname="$archname-multi"
4488                 echo "...setting architecture name to $archname." >&4
4489                 ;;
4490         esac
4491         ;;
4492 esac
4493 case "$use64bits" in
4494 $define)
4495         case "$archname64" in
4496         '')
4497                 ;;
4498         *)
4499                 case "$archname" in
4500                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4501                         ;;
4502                 *)      archname="$archname-$archname64"
4503                         echo "...setting architecture name to $archname." >&4
4504                         ;;
4505                 esac
4506                 ;;
4507         esac
4508 esac
4509
4510 : determine root of directory hierarchy where package will be installed.
4511 case "$prefix" in
4512 '')
4513         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4514         ;;
4515 *)
4516         dflt="$prefix"
4517         ;;
4518 esac
4519 $cat <<EOM
4520
4521 By default, $package will be installed in $dflt/bin, manual pages
4522 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4523 installation directories. Typically this is something like /usr/local.
4524 If you wish to have binaries under /usr/bin but other parts of the
4525 installation under /usr/local, that's ok: you will be prompted
4526 separately for each of the installation directories, the prefix being
4527 only used to set the defaults.
4528
4529 EOM
4530 fn=d~
4531 rp='Installation prefix to use?'
4532 . ./getfile
4533 oldprefix=''
4534 case "$prefix" in
4535 '') ;;
4536 *)
4537         case "$ans" in
4538         "$prefix") ;;
4539         *) oldprefix="$prefix";;
4540         esac
4541         ;;
4542 esac
4543 prefix="$ans"
4544 prefixexp="$ansexp"
4545
4546 : is AFS running?
4547 echo " "
4548 case "$afs" in
4549 $define|true)   afs=true ;;
4550 $undef|false)   afs=false ;;
4551 *)      if test -d /afs; then
4552                 afs=true
4553         else
4554                 afs=false
4555         fi
4556         ;;
4557 esac
4558 if $afs; then
4559         echo "AFS may be running... I'll be extra cautious then..." >&4
4560 else
4561         echo "AFS does not seem to be running..." >&4
4562 fi
4563
4564 : determine installation prefix for where package is to be installed.
4565 if $afs; then 
4566 $cat <<EOM
4567
4568 Since you are running AFS, I need to distinguish the directory in which
4569 files will reside from the directory in which they are installed (and from
4570 which they are presumably copied to the former directory by occult means).
4571
4572 EOM
4573         case "$installprefix" in
4574         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4575         *) dflt="$installprefix";;
4576         esac
4577 else
4578 $cat <<EOM
4579
4580 In some special cases, particularly when building $package for distribution,
4581 it is convenient to distinguish between the directory in which files should 
4582 be installed from the directory ($prefix) in which they 
4583 will eventually reside.  For most users, these two directories are the same.
4584
4585 EOM
4586         case "$installprefix" in
4587         '') dflt=$prefix ;;
4588         *) dflt=$installprefix;;
4589         esac
4590 fi
4591 fn=d~
4592 rp='What installation prefix should I use for installing files?'
4593 . ./getfile
4594 installprefix="$ans"
4595 installprefixexp="$ansexp"
4596
4597 : set the prefixit variable, to compute a suitable default value
4598 prefixit='case "$3" in
4599 ""|none)
4600         case "$oldprefix" in
4601         "") eval "$1=\"\$$2\"";;
4602         *)
4603                 case "$3" in
4604                 "") eval "$1=";;
4605                 none)
4606                         eval "tp=\"\$$2\"";
4607                         case "$tp" in
4608                         ""|" ") eval "$1=\"\$$2\"";;
4609                         *) eval "$1=";;
4610                         esac;;
4611                 esac;;
4612         esac;;
4613 *)
4614         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4615         case "$tp" in
4616         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4617         /*-$oldprefix/*|\~*-$oldprefix/*)
4618                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4619         *) eval "$1=\"\$$2\"";;
4620         esac;;
4621 esac'
4622
4623 : set the base revision
4624 baserev=5.0
4625
4626
4627 : get the patchlevel
4628 echo " "
4629 echo "Getting the current patchlevel..." >&4
4630 if $test -r $rsrc/patchlevel.h;then
4631         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4632         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4633         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4634         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4635         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4636 else
4637         patchlevel=0
4638         subversion=0
4639         api_revision=0
4640         api_version=0
4641         api_subversion=0
4642 fi
4643 $echo $n "(You have $package" $c
4644 case "$package" in
4645 "*$baserev")    ;;
4646 *)              $echo $n " $baserev" $c ;;
4647 esac
4648 $echo $n " patchlevel $patchlevel" $c
4649 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4650 echo ".)"
4651 case "$osname" in
4652 dos|vms)
4653         : XXX Should be a Configure test for double-dots in filenames.
4654         version=`echo $baserev $patchlevel $subversion | \
4655                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4656         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4657                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4658         ;;
4659 *)
4660         version=`echo $baserev $patchlevel $subversion | \
4661                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4662         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4663                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4664         ;;
4665 esac
4666 : Special case the 5.005_xx maintenance series, which used 5.005
4667 : without any subversion label as a subdirectory in $sitelib
4668 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4669         api_versionstring='5.005'
4670 fi
4671
4672 : determine installation style
4673 : For now, try to deduce it from prefix unless it is already set.
4674 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4675 case "$installstyle" in
4676 '')     case "$prefix" in
4677                 *perl*) dflt='lib';;
4678                 *) dflt='lib/perl5' ;;
4679         esac
4680         ;;
4681 *)      dflt='lib/perl5' ;;
4682 esac
4683 : Probably not worth prompting for this since we prompt for all
4684 : the directories individually, and the prompt would be too long and
4685 : confusing anyway.
4686 installstyle=$dflt
4687
4688 : determine where private library files go
4689 : Usual default is /usr/local/lib/perl5/$version.
4690 : Also allow things like /opt/perl/lib/$version, since 
4691 : /opt/perl/lib/perl5... would be redundant.
4692 : The default "style" setting is made in installstyle.U
4693 case "$installstyle" in
4694 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4695 *)       set dflt privlib lib/$version ;;
4696 esac
4697 eval $prefixit
4698 $cat <<EOM
4699
4700 There are some auxiliary files for $package that need to be put into a
4701 private library directory that is accessible by everyone.
4702
4703 EOM
4704 fn=d~+
4705 rp='Pathname where the private library files will reside?'
4706 . ./getfile
4707 privlib="$ans"
4708 privlibexp="$ansexp"
4709 : Change installation prefix, if necessary.
4710 if $test X"$prefix" != X"$installprefix"; then
4711         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4712 else
4713         installprivlib="$privlibexp"
4714 fi
4715
4716 : set the prefixup variable, to restore leading tilda escape
4717 prefixup='case "$prefixexp" in
4718 "$prefix") ;;
4719 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4720 esac'
4721
4722 : determine where public architecture dependent libraries go
4723 set archlib archlib
4724 eval $prefixit
4725 : privlib default is /usr/local/lib/$package/$version
4726 : archlib default is /usr/local/lib/$package/$version/$archname
4727 : privlib may have an optional trailing /share.
4728 tdflt=`echo $privlib | $sed 's,/share$,,'`
4729 tdflt=$tdflt/$archname
4730 case "$archlib" in
4731 '')     dflt=$tdflt
4732         ;;
4733 *)      dflt="$archlib"
4734     ;;
4735 esac
4736 $cat <<EOM
4737
4738 $spackage contains architecture-dependent library files.  If you are
4739 sharing libraries in a heterogeneous environment, you might store
4740 these files in a separate location.  Otherwise, you can just include
4741 them with the rest of the public library files.
4742
4743 EOM
4744 fn=d+~
4745 rp='Where do you want to put the public architecture-dependent libraries?'
4746 . ./getfile
4747 archlib="$ans"
4748 archlibexp="$ansexp"
4749 if $test X"$archlib" = X"$privlib"; then
4750         d_archlib="$undef"
4751 else
4752         d_archlib="$define"
4753 fi
4754 : Change installation prefix, if necessary.
4755 if $test X"$prefix" != X"$installprefix"; then
4756         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4757 else
4758         installarchlib="$archlibexp"
4759 fi
4760
4761
4762 : Binary compatibility with 5.005 is not possible for builds
4763 : with advanced features
4764 case "$usethreads$usemultiplicity" in
4765 *define*)
4766         bincompat5005="$undef"
4767         d_bincompat5005="$undef"
4768         ;;
4769 *)      $cat <<EOM
4770
4771 Perl 5.006 can be compiled for binary compatibility with 5.005.
4772 If you decide to do so, you will be able to continue using most
4773 of the extensions that were compiled for Perl 5.005.
4774
4775 EOM
4776         case "$bincompat5005$d_bincompat5005" in
4777         *"$undef"*) dflt=n ;;
4778         *) dflt=y ;;
4779         esac
4780         rp='Binary compatibility with Perl 5.005?'
4781         . ./myread
4782         case "$ans" in
4783         y*) val="$define" ;;
4784         *)  val="$undef" ;;
4785         esac
4786         set d_bincompat5005
4787         eval $setvar
4788         case "$d_bincompat5005" in
4789         "$define")
4790                 bincompat5005="$define"
4791                 ;;
4792         *)      bincompat5005="$undef"
4793                 d_bincompat5005="$undef"
4794                 ;;
4795         esac
4796         ;;
4797 esac
4798
4799
4800 : see if setuid scripts can be secure
4801 $cat <<EOM
4802
4803 Some kernels have a bug that prevents setuid #! scripts from being
4804 secure.  Some sites have disabled setuid #! scripts because of this.
4805
4806 First let's decide if your kernel supports secure setuid #! scripts.
4807 (If setuid #! scripts would be secure but have been disabled anyway,
4808 don't say that they are secure if asked.)
4809
4810 EOM
4811
4812 val="$undef"
4813 if $test -d /dev/fd; then
4814         echo "#!$ls" >reflect
4815         chmod +x,u+s reflect
4816         ./reflect >flect 2>&1
4817         if $contains "/dev/fd" flect >/dev/null; then
4818                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4819                 val="$define"
4820         else
4821                 $cat <<EOM
4822 If you are not sure if they are secure, I can check but I'll need a
4823 username and password different from the one you are using right now.
4824 If you don't have such a username or don't want me to test, simply
4825 enter 'none'.
4826
4827 EOM
4828                 rp='Other username to test security of setuid scripts with?'
4829                 dflt='none'
4830                 . ./myread
4831                 case "$ans" in
4832                 n|none)
4833                         case "$d_suidsafe" in
4834                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4835                                 dflt=n;;
4836                         "$undef")
4837                                 echo "Well, the $hint value is *not* secure." >&4
4838                                 dflt=n;;
4839                         *)      echo "Well, the $hint value *is* secure." >&4
4840                                 dflt=y;;
4841                         esac
4842                         ;;
4843                 *)
4844                         $rm -f reflect flect
4845                         echo "#!$ls" >reflect
4846                         chmod +x,u+s reflect
4847                         echo >flect
4848                         chmod a+w flect
4849                         echo '"su" will (probably) prompt you for '"$ans's password."
4850                         su $ans -c './reflect >flect'
4851                         if $contains "/dev/fd" flect >/dev/null; then
4852                                 echo "Okay, it looks like setuid scripts are secure." >&4
4853                                 dflt=y
4854                         else
4855                                 echo "I don't think setuid scripts are secure." >&4
4856                                 dflt=n
4857                         fi
4858                         ;;
4859                 esac
4860                 rp='Does your kernel have *secure* setuid scripts?'
4861                 . ./myread
4862                 case "$ans" in
4863                 [yY]*)  val="$define";;
4864                 *)      val="$undef";;
4865                 esac
4866         fi
4867 else
4868         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4869         echo "(That's for file descriptors, not floppy disks.)"
4870         val="$undef"
4871 fi
4872 set d_suidsafe
4873 eval $setvar
4874
4875 $rm -f reflect flect
4876
4877 : now see if they want to do setuid emulation
4878 echo " "
4879 val="$undef"
4880 case "$d_suidsafe" in
4881 "$define")
4882         val="$undef"
4883         echo "No need to emulate SUID scripts since they are secure here." >& 4
4884         ;;
4885 *)
4886         $cat <<EOM
4887 Some systems have disabled setuid scripts, especially systems where
4888 setuid scripts cannot be secure.  On systems where setuid scripts have
4889 been disabled, the setuid/setgid bits on scripts are currently
4890 useless.  It is possible for $package to detect those bits and emulate
4891 setuid/setgid in a secure fashion.  This emulation will only work if
4892 setuid scripts have been disabled in your kernel.
4893
4894 EOM
4895         case "$d_dosuid" in
4896         "$define") dflt=y ;;
4897         *) dflt=n ;;
4898         esac
4899         rp="Do you want to do setuid/setgid emulation?"
4900         . ./myread
4901         case "$ans" in
4902         [yY]*)  val="$define";;
4903         *)      val="$undef";;
4904         esac
4905         ;;
4906 esac
4907 set d_dosuid
4908 eval $setvar
4909
4910 : determine filename position in cpp output
4911 echo " "
4912 echo "Computing filename position in cpp output for #include directives..." >&4
4913 echo '#include <stdio.h>' > foo.c
4914 $cat >fieldn <<EOF
4915 $startsh
4916 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4917 $grep '^[       ]*#.*stdio\.h' | \
4918 while read cline; do
4919         pos=1
4920         set \$cline
4921         while $test \$# -gt 0; do
4922                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4923                         echo "\$pos"
4924                         exit 0
4925                 fi
4926                 shift
4927                 pos=\`expr \$pos + 1\`
4928         done
4929 done
4930 EOF
4931 chmod +x fieldn
4932 fieldn=`./fieldn`
4933 $rm -f foo.c fieldn
4934 case $fieldn in
4935 '') pos='???';;
4936 1) pos=first;;
4937 2) pos=second;;
4938 3) pos=third;;
4939 *) pos="${fieldn}th";;
4940 esac
4941 echo "Your cpp writes the filename in the $pos field of the line."
4942
4943 : locate header file
4944 $cat >findhdr <<EOF
4945 $startsh
4946 wanted=\$1
4947 name=''
4948 for usrincdir in $usrinc
4949 do
4950         if test -f \$usrincdir/\$wanted; then
4951                 echo "\$usrincdir/\$wanted"
4952                 exit 0
4953         fi
4954 done
4955 awkprg='{ print \$$fieldn }'
4956 echo "#include <\$wanted>" > foo\$\$.c
4957 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4958 $grep "^[       ]*#.*\$wanted" | \
4959 while read cline; do
4960         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4961         case "\$name" in
4962         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4963         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4964         *) exit 2;;
4965         esac;
4966 done;
4967 #
4968 # status = 0: grep returned 0 lines, case statement not executed
4969 # status = 1: headerfile found
4970 # status = 2: while loop executed, no headerfile found
4971 #
4972 status=\$?
4973 $rm -f foo\$\$.c;
4974 if test \$status -eq 1; then
4975         exit 0;
4976 fi
4977 exit 1
4978 EOF
4979 chmod +x findhdr
4980
4981 : define an alternate in-header-list? function
4982 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4983 cont=true; xxf="echo \"<\$1> found.\" >&4";
4984 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4985 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4986 esac;
4987 case $# in 4) instead=instead;; *) instead="at last";; esac;
4988 while $test "$cont"; do
4989         xxx=`./findhdr $1`
4990         var=$2; eval "was=\$$2";
4991         if $test "$xxx" && $test -r "$xxx";
4992         then eval $xxf;
4993         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4994                 cont="";
4995         else eval $xxnf;
4996         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4997         set $yyy; shift; shift; yyy=$@;
4998         case $# in 0) cont="";;
4999         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5000                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5001         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5002                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5003         esac;
5004 done;
5005 while $test "$yyy";
5006 do set $yyy; var=$2; eval "was=\$$2";
5007         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5008         set $yyy; shift; shift; yyy=$@;
5009 done'
5010
5011 : see if this is a malloc.h system
5012 set malloc.h i_malloc
5013 eval $inhdr
5014
5015 : see if stdlib is available
5016 set stdlib.h i_stdlib
5017 eval $inhdr
5018
5019 : determine which malloc to compile in
5020 echo " "
5021 case "$usemymalloc" in
5022 ''|[yY]*|true|$define)  dflt='y' ;;
5023 *)      dflt='n' ;;
5024 esac
5025 rp="Do you wish to attempt to use the malloc that comes with $package?"
5026 . ./myread
5027 usemymalloc="$ans"
5028 case "$ans" in
5029 y*|true)
5030         usemymalloc='y'
5031         mallocsrc='malloc.c'
5032         mallocobj="malloc$_o"
5033         d_mymalloc="$define"
5034         case "$libs" in
5035         *-lmalloc*)
5036                 : Remove malloc from list of libraries to use
5037                 echo "Removing unneeded -lmalloc from library list" >&4
5038                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5039                 shift
5040                 libs="$*"
5041                 echo "libs = $libs" >&4
5042                 ;;
5043         esac
5044         ;;
5045 *)
5046         usemymalloc='n'
5047         mallocsrc=''
5048         mallocobj=''
5049         d_mymalloc="$undef"
5050         ;;
5051 esac
5052
5053 : compute the return types of malloc and free
5054 echo " "
5055 $cat >malloc.c <<END
5056 #$i_malloc I_MALLOC
5057 #$i_stdlib I_STDLIB
5058 #include <stdio.h>
5059 #include <sys/types.h>
5060 #ifdef I_MALLOC
5061 #include <malloc.h>
5062 #endif
5063 #ifdef I_STDLIB
5064 #include <stdlib.h>
5065 #endif
5066 #ifdef TRY_MALLOC
5067 void *malloc();
5068 #endif
5069 #ifdef TRY_FREE
5070 void free();
5071 #endif
5072 END
5073 case "$malloctype" in
5074 '')
5075         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5076                 malloctype='void *'
5077         else
5078                 malloctype='char *'
5079         fi
5080         ;;
5081 esac
5082 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5083
5084 case "$freetype" in
5085 '')
5086         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5087                 freetype='void'
5088         else
5089                 freetype='int'
5090         fi
5091         ;;
5092 esac
5093 echo "Your system uses $freetype free(), it would seem." >&4
5094 $rm -f malloc.[co]
5095 $cat <<EOM
5096
5097 The installation process will also create a directory for
5098 vendor-supplied add-ons.  Vendors who supply perl with their system
5099 may find it convenient to place all vendor-supplied files in this
5100 directory rather than in the main distribution directory.  This will
5101 ease upgrades between binary-compatible maintenance versions of perl.
5102
5103 Of course you may also use these directories in whatever way you see
5104 fit.  For example, you might use them to access modules shared over a
5105 company-wide network.
5106
5107 The default answer should be fine for most people.
5108 This causes further questions about vendor add-ons to be skipped
5109 and no vendor-specific directories will be configured for perl.
5110
5111 EOM
5112 rp='Do you want to configure vendor-specific add-on directories?'
5113 case "$usevendorprefix" in
5114 define|true|[yY]*) dflt=y ;;
5115 *) dflt=n ;;
5116 esac
5117 . ./myread
5118 case "$ans" in
5119 [yY]*)  fn=d~+
5120         rp='Installation prefix to use for vendor-supplied add-ons?'
5121         case "$vendorprefix" in
5122         '') dflt='' ;;
5123         *)  dflt=$vendorprefix ;;
5124         esac
5125         . ./getfile
5126         oldvendorprefix=''
5127         case "$vendorprefix" in
5128         '') ;;
5129         *)      case "$ans" in
5130                 "$prefix") ;;
5131                 *) oldvendorprefix="$prefix";;
5132                 esac
5133                 ;;
5134         esac
5135         usevendorprefix="$define"
5136         vendorprefix="$ans"
5137         vendorprefixexp="$ansexp"
5138         ;;
5139 *)      usevendorprefix="$undef"
5140         vendorprefix=''
5141         vendorprefixexp=''
5142         ;;
5143 esac
5144
5145 case "$vendorprefix" in
5146 '')     d_vendorlib="$undef"
5147         vendorlib=''
5148         vendorlibexp=''
5149         ;;
5150 *)      d_vendorlib="$define"
5151         : determine where vendor-supplied modules go.
5152         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5153         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5154         case "$installstyle" in
5155         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5156         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5157         esac
5158         fn=d~+
5159         rp='Pathname for the vendor-supplied library files?'
5160         . ./getfile
5161         vendorlib="$ans"
5162         vendorlibexp="$ansexp"
5163         : Change installation prefix, if necessary.
5164         if $test X"$prefix" != X"$installprefix"; then
5165                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5166         else
5167                 installvendorlib="$vendorlibexp"
5168         fi
5169         ;;
5170 esac
5171
5172 : Cruising for prototypes
5173 echo " "
5174 echo "Checking out function prototypes..." >&4
5175 $cat >prototype.c <<'EOCP'
5176 int main(int argc, char *argv[]) {
5177         exit(0);}
5178 EOCP
5179 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5180         echo "Your C compiler appears to support function prototypes."
5181         val="$define"
5182 else
5183         echo "Your C compiler doesn't seem to understand function prototypes."
5184         val="$undef"
5185 fi
5186 set prototype
5187 eval $setvar
5188 $rm -f prototype*
5189
5190 case "$prototype" in
5191 "$define") ;;
5192 *)      ansi2knr='ansi2knr'
5193         echo " "
5194         cat <<EOM >&4
5195
5196 $me:  FATAL ERROR:
5197 This version of $package can only be compiled by a compiler that 
5198 understands function prototypes.  Unfortunately, your C compiler 
5199         $cc $ccflags
5200 doesn't seem to understand them.  Sorry about that.
5201
5202 If GNU cc is available for your system, perhaps you could try that instead.  
5203
5204 Eventually, we hope to support building Perl with pre-ANSI compilers.
5205 If you would like to help in that effort, please contact <perlbug@perl.org>.
5206
5207 Aborting Configure now.
5208 EOM
5209         exit 2
5210         ;;
5211 esac
5212
5213 : determine where public executables go
5214 echo " "
5215 set dflt bin bin
5216 eval $prefixit
5217 fn=d~
5218 rp='Pathname where the public executables will reside?'
5219 . ./getfile
5220 if $test "X$ansexp" != "X$binexp"; then
5221         installbin=''
5222 fi
5223 bin="$ans"
5224 binexp="$ansexp"
5225 : Change installation prefix, if necessary.
5226 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5227 if $test X"$prefix" != X"$installprefix"; then
5228         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5229 else
5230         installbin="$binexp"
5231 fi
5232
5233 $cat <<EOM
5234
5235 After $package is installed, you may wish to install various
5236 add-on modules and utilities.  Typically, these add-ons will
5237 be installed under $prefix with the rest
5238 of this package.  However, you may wish to install such add-ons
5239 elsewhere under a different prefix.
5240
5241 If you do not wish to put everything under a single prefix, that's
5242 ok.  You will be prompted for the individual locations; this siteprefix
5243 is only used to suggest the defaults.
5244
5245 The default should be fine for most people.
5246
5247 EOM
5248 fn=d~+
5249 rp='Installation prefix to use for add-on modules and utilities?'
5250 : XXX Here might be another good place for an installstyle setting.
5251 case "$siteprefix" in
5252 '') dflt=$prefix ;;
5253 *)  dflt=$siteprefix ;;
5254 esac
5255 . ./getfile
5256 oldsiteprefix=''
5257 case "$siteprefix" in
5258 '') ;;
5259 *)
5260         case "$ans" in
5261         "$prefix") ;;
5262         *) oldsiteprefix="$prefix";;
5263         esac
5264         ;;
5265 esac
5266 siteprefix="$ans"
5267 siteprefixexp="$ansexp"
5268
5269 : determine where site specific libraries go.
5270 : Usual default is /usr/local/lib/perl5/site_perl/$version
5271 : The default "style" setting is made in installstyle.U
5272 : XXX No longer works with Prefixit stuff.
5273 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5274 case "$installstyle" in
5275 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5276 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5277 esac
5278 $cat <<EOM
5279
5280 The installation process will create a directory for
5281 site-specific extensions and modules.  Most users find it convenient
5282 to place all site-specific files in this directory rather than in the
5283 main distribution directory.
5284
5285 EOM
5286 fn=d~+
5287 rp='Pathname for the site-specific library files?'
5288 . ./getfile
5289 sitelib="$ans"
5290 sitelibexp="$ansexp"
5291 : Change installation prefix, if necessary.
5292 if $test X"$prefix" != X"$installprefix"; then
5293         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5294 else
5295         installsitelib="$sitelibexp"
5296 fi
5297
5298 : Determine list of previous versions to include in @INC
5299 $cat > getverlist <<EOPL
5300 #!$perl -w
5301 use File::Basename;
5302 \$api_versionstring = "$api_versionstring";
5303 \$version = "$version";
5304 \$sitelib = "$sitelib";
5305 \$archname = "$archname";
5306 EOPL
5307         $cat >> getverlist <<'EOPL'
5308 # Can't have leading @ because metaconfig interprets it as a command!
5309 ;@inc_version_list=();
5310 $stem=dirname($sitelib);
5311 # Redo to do opendir/readdir? 
5312 if (-d $stem) {
5313     chdir($stem);
5314     ;@candidates = glob("5.*");
5315 }
5316 else {
5317     ;@candidates = ();
5318 }
5319
5320 # XXX ToDo:  These comparisons must be reworked when two-digit
5321 # subversions come along, so that 5.7.10 compares as greater than
5322 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5323 # widespread that we can use the built-in version vectors rather
5324 # than reinventing them here.  For 5.6.0, however, we must
5325 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5326 foreach $d (@candidates) {
5327     if ($d lt $version) {
5328         if ($d ge $api_versionstring) {
5329             unshift(@inc_version_list, "$d/$archname", $d);
5330         }
5331         elsif ($d ge "5.005") {
5332             unshift(@inc_version_list, $d);
5333         }
5334     }
5335     else {
5336         # Skip newer version.  I.e. don't look in
5337         # 5.7.0 if we're installing 5.6.1.
5338     }
5339 }
5340
5341 if (@inc_version_list) {
5342     print join(' ', @inc_version_list);
5343 }
5344 else {
5345     # Blank space to preserve value for next Configure run.
5346     print " ";
5347 }
5348 EOPL
5349 chmod +x getverlist
5350 case "$inc_version_list" in
5351 '')     if test -x $perl; then
5352                 dflt=`$perl getverlist`
5353         else
5354                 dflt='none'
5355         fi
5356         ;;
5357 $undef) dflt='none' ;;
5358 *)  dflt="$inc_version_list" ;;
5359 esac
5360 $cat <<'EOM'
5361
5362 In order to ease the process of upgrading, this version of perl 
5363 can be configured to use modules built and installed with earlier 
5364 versions of perl that were installed under $prefix.  Specify here
5365 the list of earlier versions that this version of perl should check.
5366 If Configure detected no earlier versions of perl installed under
5367 $prefix, then the list will be empty.  Answer 'none' to tell perl
5368 to not search earlier versions.
5369
5370 The default should almost always be sensible, so if you're not sure,
5371 just accept the default.
5372 EOM
5373
5374 rp='List of earlier versions to include in @INC?'
5375 . ./myread
5376 case "$ans" in
5377 [Nn]one) inc_version_list=' ' ;;
5378 *) inc_version_list="$ans" ;;
5379 esac
5380 case "$inc_version_list" in
5381 ''|' ') 
5382         inc_version_list_init='0';;
5383 *)      inc_version_list_init=`echo $inc_version_list |
5384                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5385         ;;
5386 esac
5387 $rm -f getverlist
5388
5389 : determine whether to install perl also as /usr/bin/perl
5390
5391 echo " "
5392 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5393         $cat <<EOM
5394 Many scripts expect to perl to be installed as /usr/bin/perl.
5395 I can install the perl you are about to compile also as /usr/bin/perl
5396 (in addition to $installbin/perl).
5397 EOM
5398         case "$installusrbinperl" in
5399         "$undef"|[nN]*) dflt='n';;
5400         *)              dflt='y';;
5401         esac
5402         rp="Do you want to install perl as /usr/bin/perl?"
5403         . ./myread
5404         case "$ans" in
5405         [yY]*)  val="$define";;
5406         *)      val="$undef" ;;
5407         esac
5408 else
5409         val="$undef"
5410 fi
5411 set installusrbinperl
5412 eval $setvar
5413
5414 echo " "
5415 echo "Checking for GNU C Library..." >&4
5416 cat >gnulibc.c <<EOM
5417 #include <stdio.h>
5418 int main()
5419 {
5420 #ifdef __GLIBC__
5421     exit(0);
5422 #else
5423     exit(1);
5424 #endif
5425 }
5426 EOM
5427 set gnulibc
5428 if eval $compile_ok && ./gnulibc; then
5429         val="$define"
5430         echo "You are using the GNU C Library"
5431 else
5432         val="$undef"
5433         echo "You are not using the GNU C Library"
5434 fi
5435 $rm -f gnulibc*
5436 set d_gnulibc
5437 eval $setvar
5438
5439 : see if nm is to be used to determine whether a symbol is defined or not
5440 case "$usenm" in
5441 '')
5442         dflt=''
5443         case "$d_gnulibc" in
5444         "$define")
5445                 echo " "
5446                 echo "nm probably won't work on the GNU C Library." >&4
5447                 dflt=n
5448                 ;;
5449         esac
5450         case "$dflt" in
5451         '') 
5452                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5453                         echo " "
5454                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5455                         echo "'nm' won't be sufficient on this sytem." >&4
5456                         dflt=n
5457                 fi
5458                 ;;
5459         esac
5460         case "$dflt" in
5461         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5462                 if $test $dflt -gt 20; then
5463                         dflt=y
5464                 else
5465                         dflt=n
5466                 fi
5467                 ;;
5468         esac
5469         ;;
5470 *)
5471         case "$usenm" in
5472         true|$define) dflt=y;;
5473         *) dflt=n;;
5474         esac
5475         ;;
5476 esac
5477 $cat <<EOM
5478
5479 I can use $nm to extract the symbols from your C libraries. This
5480 is a time consuming task which may generate huge output on the disk (up
5481 to 3 megabytes) but that should make the symbols extraction faster. The
5482 alternative is to skip the 'nm' extraction part and to compile a small
5483 test program instead to determine whether each symbol is present. If
5484 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5485 this may be the best solution.
5486
5487 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5488
5489 EOM
5490 rp="Shall I use $nm to extract C symbols from the libraries?"
5491 . ./myread
5492 case "$ans" in
5493 [Nn]*) usenm=false;;
5494 *) usenm=true;;
5495 esac
5496
5497 runnm=$usenm
5498 case "$reuseval" in
5499 true) runnm=false;;
5500 esac
5501
5502 : nm options which may be necessary
5503 case "$nm_opt" in
5504 '') if $test -f /mach_boot; then
5505                 nm_opt=''       # Mach
5506         elif $test -d /usr/ccs/lib; then
5507                 nm_opt='-p'     # Solaris (and SunOS?)
5508         elif $test -f /dgux; then
5509                 nm_opt='-p'     # DG-UX
5510         elif $test -f /lib64/rld; then
5511                 nm_opt='-p'     # 64-bit Irix
5512         else
5513                 nm_opt=''
5514         fi;;
5515 esac
5516
5517 : nm options which may be necessary for shared libraries but illegal
5518 : for archive libraries.  Thank you, Linux.
5519 case "$nm_so_opt" in
5520 '')     case "$myuname" in
5521         *linux*)
5522                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5523                         nm_so_opt='--dynamic'
5524                 fi
5525                 ;;
5526         esac
5527         ;;
5528 esac
5529
5530 case "$runnm" in
5531 true)
5532 : get list of predefined functions in a handy place
5533 echo " "
5534 case "$libc" in
5535 '') libc=unknown
5536         case "$libs" in
5537         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5538         esac
5539         ;;
5540 esac
5541 libnames='';
5542 case "$libs" in
5543 '') ;;
5544 *)  for thislib in $libs; do
5545         case "$thislib" in
5546         -lc|-lc_s)
5547                 : Handle C library specially below.
5548                 ;;
5549         -l*)
5550                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5551                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5552                         :
5553                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5554                         :
5555                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5556                         :
5557                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5558                         :
5559                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5560                         :
5561                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5562                         :
5563                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5564                         :
5565                 else
5566                         try=''
5567                 fi
5568                 libnames="$libnames $try"
5569                 ;;
5570         *) libnames="$libnames $thislib" ;;
5571         esac
5572         done
5573         ;;
5574 esac
5575 xxx=normal
5576 case "$libc" in
5577 unknown)
5578         set /lib/libc.$so
5579         for xxx in $libpth; do
5580                 $test -r $1 || set $xxx/libc.$so
5581                 : The messy sed command sorts on library version numbers.
5582                 $test -r $1 || \
5583                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5584                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5585                                 h
5586                                 s/[0-9][0-9]*/0000&/g
5587                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5588                                 G
5589                                 s/\n/ /' | \
5590                          sort | $sed -e 's/^.* //'`
5591                 eval set \$$#
5592         done
5593         $test -r $1 || set /usr/ccs/lib/libc.$so
5594         $test -r $1 || set /lib/libsys_s$_a
5595         ;;
5596 *)
5597         set blurfl
5598         ;;
5599 esac
5600 if $test -r "$1"; then
5601         echo "Your (shared) C library seems to be in $1."
5602         libc="$1"
5603 elif $test -r /lib/libc && $test -r /lib/clib; then
5604         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5605         xxx=apollo
5606         libc='/lib/clib /lib/libc'
5607         if $test -r /lib/syslib; then
5608                 echo "(Your math library is in /lib/syslib.)"
5609                 libc="$libc /lib/syslib"
5610         fi
5611 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5612         echo "Your C library seems to be in $libc, as you said before."
5613 elif $test -r $incpath/usr/lib/libc$_a; then
5614         libc=$incpath/usr/lib/libc$_a;
5615         echo "Your C library seems to be in $libc.  That's fine."
5616 elif $test -r /lib/libc$_a; then
5617         libc=/lib/libc$_a;
5618         echo "Your C library seems to be in $libc.  You're normal."
5619 else
5620         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5621                 :
5622         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5623                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5624         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5625                 :
5626         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5627                 :
5628         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5629                 :
5630         else
5631                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5632         fi
5633         if $test -r "$tans"; then
5634                 echo "Your C library seems to be in $tans, of all places."
5635                 libc=$tans
5636         else
5637                 libc='blurfl'
5638         fi
5639 fi
5640 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5641         dflt="$libc"
5642         cat <<EOM
5643
5644 If the guess above is wrong (which it might be if you're using a strange
5645 compiler, or your machine supports multiple models), you can override it here.
5646
5647 EOM
5648 else
5649         dflt=''
5650         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5651         cat >&4 <<EOM
5652 I can't seem to find your C library.  I've looked in the following places:
5653
5654 EOM
5655         $sed 's/^/      /' libpath
5656         cat <<EOM
5657
5658 None of these seems to contain your C library. I need to get its name...
5659
5660 EOM
5661 fi
5662 fn=f
5663 rp='Where is your C library?'
5664 . ./getfile
5665 libc="$ans"
5666
5667 echo " "
5668 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5669 set X `cat libnames`
5670 shift
5671 xxx=files
5672 case $# in 1) xxx=file; esac
5673 echo "Extracting names from the following $xxx for later perusal:" >&4
5674 echo " "
5675 $sed 's/^/      /' libnames >&4
5676 echo " "
5677 $echo $n "This may take a while...$c" >&4
5678
5679 for file in $*; do
5680         case $file in
5681         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5682         *) $nm $nm_opt $file 2>/dev/null;;
5683         esac
5684 done >libc.tmp
5685
5686 $echo $n ".$c"
5687 $grep fprintf libc.tmp > libc.ptf
5688 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5689 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5690 xxx='[ADTSIW]'
5691 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5692         eval $xscan;\
5693         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5694                 eval $xrun
5695 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5696         eval $xscan;\
5697         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5698                 eval $xrun
5699 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5700         eval $xscan;\
5701         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5702                 eval $xrun
5703 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5704         eval $xscan;\
5705         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5706                 eval $xrun
5707 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5708         eval $xscan;\
5709         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5710                 eval $xrun
5711 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5712         eval $xscan;\
5713         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5714                 eval $xrun
5715 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5716                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5717         eval $xscan;\
5718         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5719                 eval $xrun
5720 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5721         eval $xscan;\
5722         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5723                 eval $xrun
5724 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5725         eval $xscan;\
5726         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5727                 eval $xrun
5728 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5729         eval $xscan;\
5730         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5731                 eval $xrun
5732 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5733         eval $xscan;\
5734         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5735                 eval $xrun
5736 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5737         eval $xscan;\
5738         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5739                 eval $xrun
5740 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5741         eval $xscan;\
5742         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5743                 eval $xrun
5744 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5745         eval $xscan;\
5746         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5747                 eval $xrun
5748 else
5749         $nm -p $* 2>/dev/null >libc.tmp
5750         $grep fprintf libc.tmp > libc.ptf
5751         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5752                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5753         then
5754                 nm_opt='-p'
5755                 eval $xrun
5756         else
5757                 echo " "
5758                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5759                 com=''
5760                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5761                         for thisname in $libnames $libc; do
5762                                 $ar t $thisname >>libc.tmp
5763                         done
5764                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5765                         echo "Ok." >&4
5766                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5767                         # Repeat libc to extract forwarders to DLL entries too
5768                         for thisname in $libnames $libc; do
5769                                 $ar tv $thisname >>libc.tmp
5770                                 # Revision 50 of EMX has bug in $ar.
5771                                 # it will not extract forwarders to DLL entries
5772                                 # Use emximp which will extract exactly them.
5773                                 emximp -o tmp.imp $thisname \
5774                                     2>/dev/null && \
5775                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5776                                     < tmp.imp >>libc.tmp
5777                                 $rm tmp.imp
5778                         done
5779                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5780                         echo "Ok." >&4
5781                 else
5782                         echo "$ar didn't seem to work right." >&4
5783                         echo "Maybe this is a Cray...trying bld instead..." >&4
5784                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5785                         then
5786                                 for thisname in $libnames; do
5787                                         bld t $libnames | \
5788                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5789                                         $ar t $thisname >>libc.tmp
5790                                 done
5791                                 echo "Ok." >&4
5792                         else
5793                                 echo "That didn't work either.  Giving up." >&4
5794                                 exit 1
5795                         fi
5796                 fi
5797         fi
5798 fi
5799 nm_extract="$com"
5800 if $test -f /lib/syscalls.exp; then
5801         echo " "
5802         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5803         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5804 fi
5805 ;;
5806 esac
5807 $rm -f libnames libpath
5808
5809 : see if dld is available
5810 set dld.h i_dld
5811 eval $inhdr
5812
5813 : is a C symbol defined?
5814 csym='tlook=$1;
5815 case "$3" in
5816 -v) tf=libc.tmp; tc=""; tdc="";;
5817 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5818 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5819 esac;
5820 tx=yes;
5821 case "$reuseval-$4" in
5822 true-) ;;
5823 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5824 esac;
5825 case "$tx" in
5826 yes)
5827         case "$runnm" in
5828         true)
5829                 if $contains $tlook $tf >/dev/null 2>&1;
5830                 then tval=true;
5831                 else tval=false;
5832                 fi;;
5833         *)
5834                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5835                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5836                 then tval=true;
5837                 else tval=false;
5838                 fi;
5839                 $rm -f t t.c;;
5840         esac;;
5841 *)
5842         case "$tval" in
5843         $define) tval=true;;
5844         *) tval=false;;
5845         esac;;
5846 esac;
5847 eval "$2=$tval"'
5848
5849 : define an is-in-libc? function
5850 inlibc='echo " "; td=$define; tu=$undef;
5851 sym=$1; var=$2; eval "was=\$$2";
5852 tx=yes;
5853 case "$reuseval$was" in
5854 true) ;;
5855 true*) tx=no;;
5856 esac;
5857 case "$tx" in
5858 yes)
5859         set $sym tres -f;
5860         eval $csym;
5861         case "$tres" in
5862         true)
5863                 echo "$sym() found." >&4;
5864                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5865         *)
5866                 echo "$sym() NOT found." >&4;
5867                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5868         esac;;
5869 *)
5870         case "$was" in
5871         $define) echo "$sym() found." >&4;;
5872         *) echo "$sym() NOT found." >&4;;
5873         esac;;
5874 esac'
5875
5876 : see if dlopen exists
5877 xxx_runnm="$runnm"
5878 runnm=false
5879 set dlopen d_dlopen
5880 eval $inlibc
5881 runnm="$xxx_runnm"
5882
5883 : determine which dynamic loading, if any, to compile in
5884 echo " "
5885 dldir="ext/DynaLoader"
5886 case "$usedl" in
5887 $define|y|true)
5888         dflt='y'
5889         usedl="$define"
5890         ;;
5891 $undef|n|false)
5892         dflt='n'
5893         usedl="$undef"
5894         ;;
5895 *) 
5896         dflt='n'
5897         case "$d_dlopen" in
5898             $define) dflt='y' ;;
5899         esac
5900         case "$i_dld" in
5901             $define) dflt='y' ;;
5902         esac
5903         : Does a dl_xxx.xs file exist for this operating system
5904         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5905         ;;
5906 esac
5907 rp="Do you wish to use dynamic loading?"
5908 . ./myread
5909 usedl="$ans"
5910 case "$ans" in
5911 y*) usedl="$define"
5912         case "$dlsrc" in
5913         '')
5914                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5915                         dflt="$dldir/dl_${osname}.xs"
5916                 elif $test "$d_dlopen" = "$define" ; then
5917                         dflt="$dldir/dl_dlopen.xs"
5918                 elif $test "$i_dld" = "$define" ; then
5919                         dflt="$dldir/dl_dld.xs"
5920                 else
5921                         dflt=''
5922                 fi
5923                 ;;
5924         *)      dflt="$dldir/$dlsrc"
5925                 ;;
5926         esac
5927     echo "The following dynamic loading files are available:"
5928         : Can not go over to $dldir because getfile has path hard-coded in.
5929         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5930         rp="Source file to use for dynamic loading"
5931         fn="fne"
5932         gfpth="$src"
5933         . ./getfile
5934         usedl="$define"
5935         : emulate basename
5936         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5937
5938         $cat << EOM
5939
5940 Some systems may require passing special flags to $cc -c to
5941 compile modules that will be used to create a shared library.
5942 To use no flags, say "none".
5943
5944 EOM
5945     case "$cccdlflags" in
5946     '') case "$gccversion" in
5947                 '') case "$osname" in
5948                         hpux)   dflt='+z' ;;
5949                         next)   dflt='none' ;;
5950                         irix*)  dflt='-KPIC' ;;
5951                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5952                         sunos)  dflt='-pic' ;;
5953                         *)      dflt='none' ;;
5954                     esac
5955                         ;;
5956                 *)  case "$osname" in
5957                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5958                         *)      dflt='-fpic' ;;
5959                     esac ;;
5960             esac ;;
5961         ' ') dflt='none' ;;
5962     *)  dflt="$cccdlflags" ;;
5963     esac
5964     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5965     . ./myread
5966     case "$ans" in
5967     none) cccdlflags=' ' ;;
5968     *) cccdlflags="$ans" ;;
5969     esac
5970
5971     cat << EOM
5972
5973 Some systems use ld to create libraries that can be dynamically loaded,
5974 while other systems (such as those using ELF) use $cc.
5975
5976 EOM
5977         case "$ld" in
5978         '')     $cat >try.c <<'EOM'
5979 /* Test for whether ELF binaries are produced */
5980 #include <fcntl.h>
5981 #include <stdlib.h>
5982 int main() {
5983         char b[4];
5984         int i = open("a.out",O_RDONLY);
5985         if(i == -1) 
5986                 exit(1); /* fail */
5987         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5988                 exit(0); /* succeed (yes, it's ELF) */
5989         else
5990                 exit(1); /* fail */
5991 }
5992 EOM
5993                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5994                         cat <<EOM
5995 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5996 EOM
5997                         dflt="$cc"
5998                 else
5999                         echo "I'll use ld to build dynamic libraries."
6000                         dflt='ld'
6001                 fi
6002                 rm -f try.c a.out
6003                 ;;
6004         *)      dflt="$ld"
6005                 ;;
6006         esac
6007
6008     rp="What command should be used to create dynamic libraries?"
6009     . ./myread
6010         ld="$ans"
6011
6012     cat << EOM
6013
6014 Some systems may require passing special flags to $ld to create a
6015 library that can be dynamically loaded.  If your ld flags include
6016 -L/other/path options to locate libraries outside your loader's normal
6017 search path, you may need to specify those -L options here as well.  To
6018 use no flags, say "none".
6019
6020 EOM
6021     case "$lddlflags" in
6022     '') case "$osname" in
6023                         beos) dflt='-nostart' ;;
6024                         hpux)  dflt='-b' ;;
6025                         linux|irix*)    dflt='-shared' ;;
6026                         next)  dflt='none' ;;
6027                         solaris) dflt='-G' ;;
6028                         sunos) dflt='-assert nodefinitions' ;;
6029                         svr4*|esix*) dflt="-G $ldflags" ;;
6030                 *)     dflt='none' ;;
6031                         esac
6032                         ;;
6033     *) dflt="$lddlflags" ;;
6034     esac
6035
6036         : Try to guess additional flags to pick up local libraries.
6037         : Be careful not to append to a plain 'none'
6038         case "$dflt" in
6039         none) dflt='' ;;
6040         esac
6041         for thisflag in $ldflags; do
6042                 case "$thisflag" in
6043                 -L*)
6044                         case " $dflt " in
6045                         *" $thisflag "*) ;;
6046                         *) dflt="$dflt $thisflag" ;;
6047                         esac
6048                         ;;
6049                 esac
6050         done
6051
6052         case "$dflt" in
6053         ''|' ') dflt='none' ;;
6054         esac
6055
6056     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6057     . ./myread
6058     case "$ans" in
6059     none) lddlflags=' ' ;;
6060     *) lddlflags="$ans" ;;
6061     esac
6062
6063         cat <<EOM
6064
6065 Some systems may require passing special flags to $cc to indicate that
6066 the resulting executable will use dynamic linking.  To use no flags,
6067 say "none".
6068
6069 EOM
6070     case "$ccdlflags" in
6071     '') case "$osname" in
6072                 hpux)   dflt='-Wl,-E' ;;
6073                 linux)  dflt='-rdynamic' ;;
6074                 next)   dflt='none' ;;
6075                 sunos)  dflt='none' ;;
6076                 *)      dflt='none' ;;
6077             esac ;;
6078     ' ')  dflt='none' ;;
6079     *)  dflt="$ccdlflags" ;;
6080     esac
6081     rp="Any special flags to pass to $cc to use dynamic linking?"
6082     . ./myread
6083     case "$ans" in
6084     none) ccdlflags=' ' ;;
6085     *) ccdlflags="$ans" ;;
6086     esac
6087     ;;
6088 *)  usedl="$undef"
6089         ld='ld'
6090     dlsrc='dl_none.xs'
6091     lddlflags=''
6092     ccdlflags=''
6093     ;;
6094 esac
6095
6096 also=''
6097 case "$usedl" in
6098 $undef)
6099         # No dynamic loading being used, so don't bother even to prompt.
6100         useshrplib='false'
6101         ;;
6102 *)      case "$useshrplib" in
6103         '')     case "$osname" in
6104                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6105                         dflt=y
6106                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6107                         ;;
6108                 next*)
6109                         case "$osvers" in
6110                         4*)     dflt=y
6111                                 also='Building a shared libperl is needed for MAB support.'
6112                                 ;;
6113                         *)      dflt=n
6114                                 ;;
6115                         esac
6116                         ;;
6117                 *)      dflt=n
6118                         ;;
6119                 esac
6120                 ;;
6121         $define|true|[Yy]*)
6122                 dflt=y
6123                 ;;
6124         *)      dflt=n
6125                 ;;
6126         esac
6127         $cat << EOM
6128
6129 The perl executable is normally obtained by linking perlmain.c with
6130 libperl${_a}, any static extensions (usually just DynaLoader), and
6131 any other libraries needed on this system (such as -lm, etc.).  Since
6132 your system supports dynamic loading, it is probably possible to build
6133 a shared libperl.$so.  If you will have more than one executable linked
6134 to libperl.$so, this will significantly reduce the size of each
6135 executable, but it may have a noticeable affect on performance.  The
6136 default is probably sensible for your system.
6137 $also
6138
6139 EOM
6140         rp="Build a shared libperl.$so (y/n)"
6141         . ./myread
6142         case "$ans" in
6143         true|$define|[Yy]*)
6144                 useshrplib='true'  ;;
6145         *)      useshrplib='false' ;;
6146         esac
6147         ;;
6148 esac
6149
6150 case "$useshrplib" in
6151 true)
6152         case "$libperl" in
6153         '')
6154                 # Figure out a good name for libperl.so.  Since it gets stored in
6155                 # a version-specific architecture-dependent library, the version
6156                 # number isn't really that important, except for making cc/ld happy.
6157                 #
6158                 # A name such as libperl.so.3.1
6159                 majmin="libperl.$so.$patchlevel.$subversion"
6160                 # A name such as libperl.so.301
6161                 majonly=`echo $patchlevel $subversion |
6162                         $awk '{printf "%d%02d", $1, $2}'`
6163                 majonly=libperl.$so.$majonly
6164                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6165                 # rely on figuring it out from the naming of libc.
6166                 case "${osname}${osvers}" in
6167                 next4*)
6168                         dflt=libperl.5.$so
6169                         # XXX How handle the --version stuff for MAB?
6170                         ;;
6171                 linux*)  # ld won't link with a bare -lperl otherwise.
6172                         dflt=libperl.$so
6173                         ;;
6174                 cygwin*) # include version
6175                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6176                         ;;
6177                 *)      # Try to guess based on whether libc has major.minor.
6178                         case "$libc" in
6179                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6180                         *libc.$so.[0-9]*) dflt=$majonly ;;
6181                         *)      dflt=libperl.$so ;;
6182                         esac
6183                         ;;
6184                 esac
6185                 ;;
6186         *)      dflt=$libperl
6187                 ;;
6188         esac
6189         cat << EOM
6190
6191 I need to select a good name for the shared libperl.  If your system uses
6192 library names with major and minor numbers, then you might want something
6193 like $majmin.  Alternatively, if your system uses a single version
6194 number for shared libraries, then you might want to use $majonly.
6195 Or, your system might be quite happy with a simple libperl.$so.
6196
6197 Since the shared libperl will get installed into a version-specific
6198 architecture-dependent directory, the version number of the shared perl
6199 library probably isn't important, so the default should be o.k.
6200
6201 EOM
6202         rp='What name do you want to give to the shared libperl?'
6203         . ./myread
6204         libperl=$ans
6205         echo "Ok, I'll use $libperl"
6206         ;;
6207 *)
6208         libperl="libperl${_a}"
6209         ;;
6210 esac
6211
6212 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6213 case "$shrpdir" in
6214 '') ;;
6215 *)      $cat >&4 <<EOM
6216 WARNING:  Use of the shrpdir variable for the installation location of
6217 the shared $libperl is not supported.  It was never documented and
6218 will not work in this version.  Let me (perlbug@perl.com)
6219 know of any problems this may cause.
6220
6221 EOM
6222         case "$shrpdir" in
6223         "$archlibexp/CORE")
6224                 $cat >&4 <<EOM
6225 But your current setting of $shrpdir is
6226 the default anyway, so it's harmless.
6227 EOM
6228                 ;;
6229         *)
6230                 $cat >&4 <<EOM
6231 Further, your current attempted setting of $shrpdir
6232 conflicts with the value of $archlibexp/CORE
6233 that installperl will use.
6234 EOM
6235                 ;;
6236         esac
6237         ;;
6238 esac
6239
6240 # How will the perl executable find the installed shared $libperl?
6241 # Add $xxx to ccdlflags.
6242 # If we can't figure out a command-line option, use $shrpenv to
6243 # set env LD_RUN_PATH.  The main perl makefile uses this.
6244 shrpdir=$archlibexp/CORE
6245 xxx=''
6246 tmp_shrpenv=''
6247 if "$useshrplib"; then
6248     case "$osname" in 
6249         aix)
6250                 # We'll set it in Makefile.SH...
6251                 ;;
6252         solaris|netbsd)
6253                 xxx="-R $shrpdir"
6254                 ;;
6255         freebsd)
6256                 xxx="-Wl,-R$shrpdir"
6257                 ;;
6258         linux|irix*|dec_osf)
6259                 xxx="-Wl,-rpath,$shrpdir"
6260                 ;;
6261         next)
6262                 # next doesn't like the default...
6263                 ;;
6264         beos)
6265                 # beos doesn't like the default, either.
6266                 ;;
6267         hpux*)
6268                 # hpux doesn't like the default, either.
6269                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6270                 ;;
6271         *)
6272                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6273                 ;;
6274         esac
6275         case "$xxx" in
6276         '') ;;
6277         *)      
6278                 # Only add $xxx if it isn't already in ccdlflags.
6279                 case " $ccdlflags " in
6280                 *" $xxx "*)     ;;
6281                 *)      ccdlflags="$ccdlflags $xxx"
6282                         cat <<EOM >&4
6283
6284 Adding $xxx to the flags
6285 passed to $ld so that the perl executable will find the 
6286 installed shared $libperl.
6287
6288 EOM
6289                         ;;
6290                 esac
6291                 ;;
6292         esac
6293 fi
6294 # Fix ccdlflags in AIX for building external extensions.
6295 # (For building Perl itself bare -bE:perl.exp is needed,
6296 #  Makefile.SH takes care of this.)
6297 case "$osname" in
6298 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6299 esac
6300 # Respect a hint or command-line value.
6301 case "$shrpenv" in
6302 '') shrpenv="$tmp_shrpenv" ;;
6303 esac
6304 case "$ldlibpthname" in
6305 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6306 none)   ldlibpthname='' ;;
6307 esac
6308
6309 : determine where manual pages go
6310 set man1dir man1dir none
6311 eval $prefixit
6312 $cat <<EOM
6313
6314 $spackage has manual pages available in source form.
6315 EOM
6316 case "$nroff" in
6317 nroff)
6318         echo "However, you don't have nroff, so they're probably useless to you."
6319         case "$man1dir" in
6320         '') man1dir="none";;
6321         esac;;
6322 esac
6323 echo "If you don't want the manual sources installed, answer 'none'."
6324 case "$man1dir" in
6325 ' ') dflt=none
6326         ;;
6327 '')
6328         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6329         lookpath="$lookpath $prefixexp/man/p_man/man1"
6330         lookpath="$lookpath $prefixexp/man/u_man/man1"
6331         lookpath="$lookpath $prefixexp/man/man.1"
6332         case "$sysman" in
6333         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6334         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6335         esac
6336         set dflt
6337         eval $prefixup
6338         ;;
6339 *)  dflt="$man1dir"
6340         ;;
6341 esac
6342 echo " "
6343 fn=dn+~
6344 rp="Where do the main $spackage manual pages (source) go?"
6345 . ./getfile
6346 if $test "X$man1direxp" != "X$ansexp"; then
6347         installman1dir=''
6348 fi
6349 man1dir="$ans"
6350 man1direxp="$ansexp"
6351 case "$man1dir" in
6352 '')     man1dir=' '
6353         installman1dir='';;
6354 esac
6355
6356 : Change installation prefix, if necessary.
6357 if $test X"$prefix" != X"$installprefix"; then
6358         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6359 else
6360         installman1dir="$man1direxp"
6361 fi
6362
6363 : What suffix to use on installed man pages
6364
6365 case "$man1dir" in
6366 ' ')
6367         man1ext='0'
6368         ;;
6369 *)
6370         rp="What suffix should be used for the main $spackage man pages?"
6371         case "$man1ext" in
6372         '')     case "$man1dir" in
6373                 *1)  dflt=1 ;;
6374                 *1p) dflt=1p ;;
6375                 *1pm) dflt=1pm ;;
6376                 *l) dflt=l;;
6377                 *n) dflt=n;;
6378                 *o) dflt=o;;
6379                 *p) dflt=p;;
6380                 *C) dflt=C;;
6381                 *L) dflt=L;;
6382                 *L1) dflt=L1;;
6383                 *) dflt=1;;
6384                 esac
6385                 ;;
6386         *)      dflt="$man1ext";;
6387         esac
6388         . ./myread
6389         man1ext="$ans"
6390         ;;
6391 esac
6392
6393 : see if we can have long filenames
6394 echo " "
6395 rmlist="$rmlist /tmp/cf$$"
6396 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6397 first=123456789abcdef
6398 second=/tmp/cf$$/$first
6399 $rm -f $first $second
6400 if (echo hi >$first) 2>/dev/null; then
6401         if $test -f 123456789abcde; then
6402                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6403                 val="$undef"
6404         else
6405                 if (echo hi >$second) 2>/dev/null; then
6406                         if $test -f /tmp/cf$$/123456789abcde; then
6407                                 $cat <<'EOM'
6408 That's peculiar... You can have filenames longer than 14 characters, but only
6409 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6410 I shall consider your system cannot support long filenames at all.
6411 EOM
6412                                 val="$undef"
6413                         else
6414                                 echo 'You can have filenames longer than 14 characters.' >&4
6415                                 val="$define"
6416                         fi
6417                 else
6418                         $cat <<'EOM'
6419 How confusing! Some of your filesystems are sane enough to allow filenames
6420 longer than 14 characters but some others like /tmp can't even think about them.
6421 So, for now on, I shall assume your kernel does not allow them at all.
6422 EOM
6423                         val="$undef"
6424                 fi
6425         fi
6426 else
6427         $cat <<'EOM'
6428 You can't have filenames longer than 14 chars.  You can't even think about them!
6429 EOM
6430         val="$undef"
6431 fi 
6432 set d_flexfnam
6433 eval $setvar
6434 $rm -rf /tmp/cf$$ 123456789abcde*
6435
6436 : determine where library module manual pages go
6437 set man3dir man3dir none
6438 eval $prefixit
6439 $cat <<EOM
6440
6441 $spackage has manual pages for many of the library modules.
6442 EOM
6443
6444 case "$nroff" in
6445 nroff)
6446         $cat <<'EOM'
6447 However, you don't have nroff, so they're probably useless to you.
6448 EOM
6449         case "$man3dir" in
6450         '') man3dir="none";;
6451         esac;;
6452 esac
6453
6454 case "$d_flexfnam" in
6455 undef)
6456         $cat <<'EOM'
6457 However, your system can't handle the long file names like File::Basename.3. 
6458 EOM
6459         case "$man3dir" in
6460         '') man3dir="none";;
6461         esac;;
6462 esac
6463
6464 echo "If you don't want the manual sources installed, answer 'none'."
6465 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6466 case "$man3dir" in
6467 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6468         if $test -d "$privlib/man/man3"; then
6469                 cat <<EOM >&4
6470
6471 WARNING:  Previous versions of perl installed man3 pages into
6472 $privlib/man/man3.  This version will suggest a 
6473 new default of $dflt.  
6474 EOM
6475                 tdflt=$dflt
6476                 dflt='n'
6477                 rp='Do you wish to preserve the old behavior?(y/n)'
6478                 . ./myread
6479                 case "$ans" in
6480                 y*) dflt="$privlib/man/man3" ;;
6481                 *)  dflt=$tdflt ;;
6482                 esac
6483     fi
6484         ;;
6485 ' ') dflt=none;;
6486 *)      dflt="$man3dir" ;;
6487 esac
6488 echo " "
6489 fn=dn+~
6490 rp="Where do the $package library man pages (source) go?"
6491 . ./getfile
6492 man3dir="$ans"
6493 man3direxp="$ansexp"
6494 case "$man1dir" in
6495 '')     man3dir=' '
6496         installman3dir='';;
6497 esac
6498
6499 : Change installation prefix, if necessary.
6500 if $test X"$prefix" != X"$installprefix"; then
6501         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6502 else
6503         installman3dir="$man3direxp"
6504 fi
6505
6506 : What suffix to use on installed man pages
6507 case "$man3dir" in
6508 ' ')
6509         man3ext='0'
6510         ;;
6511 *)
6512         rp="What suffix should be used for the $package library man pages?"
6513         case "$man3ext" in
6514         '')     case "$man3dir" in
6515                 *3)  dflt=3 ;;
6516                 *3p) dflt=3p ;;
6517                 *3pm) dflt=3pm ;;
6518                 *l) dflt=l;;
6519                 *n) dflt=n;;
6520                 *o) dflt=o;;
6521                 *p) dflt=p;;
6522                 *C) dflt=C;;
6523                 *L) dflt=L;;
6524                 *L3) dflt=L3;;
6525                 *) dflt=3;;
6526                 esac
6527                 ;;
6528         *)      dflt="$man3ext";;
6529         esac
6530         . ./myread
6531         man3ext="$ans"
6532         ;;
6533 esac
6534
6535 : see if we have to deal with yellow pages, now NIS.
6536 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6537         if $test -f /usr/etc/nibindd; then
6538                 echo " "
6539                 echo "I'm fairly confident you're on a NeXT."
6540                 echo " "
6541                 rp='Do you get the hosts file via NetInfo?'
6542                 dflt=y
6543                 case "$hostcat" in
6544                 nidump*) ;;
6545                 '') ;;
6546                 *) dflt=n;;
6547                 esac
6548                 . ./myread
6549                 case "$ans" in
6550                 y*) hostcat='nidump hosts .';;
6551                 *)      case "$hostcat" in
6552                         nidump*) hostcat='';;
6553                         esac
6554                         ;;
6555                 esac
6556         fi
6557         case "$hostcat" in
6558         nidump*) ;;
6559         *)
6560                 case "$hostcat" in
6561                 *ypcat*) dflt=y;;
6562                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6563                                 dflt=y
6564                         else
6565                                 dflt=n
6566                         fi;;
6567                 *) dflt=n;;
6568                 esac
6569                 echo " "
6570                 rp='Are you getting the hosts file via yellow pages?'
6571                 . ./myread
6572                 case "$ans" in
6573                 y*) hostcat='ypcat hosts';;
6574                 *) hostcat='cat /etc/hosts';;
6575                 esac
6576                 ;;
6577         esac
6578 fi
6579 case "$hostcat" in
6580 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6581 esac
6582 case "$groupcat" in
6583 '') test -f /etc/group && groupcat='cat /etc/group';;
6584 esac
6585 case "$passcat" in
6586 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6587 esac
6588
6589 : now get the host name
6590 echo " "
6591 echo "Figuring out host name..." >&4
6592 case "$myhostname" in
6593 '') cont=true
6594         echo 'Maybe "hostname" will work...'
6595         if tans=`sh -c hostname 2>&1` ; then
6596                 myhostname=$tans
6597                 phostname=hostname
6598                 cont=''
6599         fi
6600         ;;
6601 *) cont='';;
6602 esac
6603 if $test "$cont"; then
6604         if ./xenix; then
6605                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6606                 if tans=`cat /etc/systemid 2>&1` ; then
6607                         myhostname=$tans
6608                         phostname='cat /etc/systemid'
6609                         echo "Whadyaknow.  Xenix always was a bit strange..."
6610                         cont=''
6611                 fi
6612         elif $test -r /etc/systemid; then
6613                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6614         fi
6615 fi
6616 if $test "$cont"; then
6617         echo 'No, maybe "uuname -l" will work...'
6618         if tans=`sh -c 'uuname -l' 2>&1` ; then
6619                 myhostname=$tans
6620                 phostname='uuname -l'
6621         else
6622                 echo 'Strange.  Maybe "uname -n" will work...'
6623                 if tans=`sh -c 'uname -n' 2>&1` ; then
6624                         myhostname=$tans
6625                         phostname='uname -n'
6626                 else
6627                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6628                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6629                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6630                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6631                         else
6632                                 case "$myhostname" in
6633                                 '') echo "Does this machine have an identity crisis or something?"
6634                                         phostname='';;
6635                                 *)
6636                                         echo "Well, you said $myhostname before..."
6637                                         phostname='echo $myhostname';;
6638                                 esac
6639                         fi
6640                 fi
6641         fi
6642 fi
6643 : you do not want to know about this
6644 set $myhostname
6645 myhostname=$1
6646
6647 : verify guess
6648 if $test "$myhostname" ; then
6649         dflt=y
6650         rp='Your host name appears to be "'$myhostname'".'" Right?"
6651         . ./myread
6652         case "$ans" in
6653         y*) ;;
6654         *) myhostname='';;
6655         esac
6656 fi
6657
6658 : bad guess or no guess
6659 while $test "X$myhostname" = X ; do
6660         dflt=''
6661         rp="Please type the (one word) name of your host:"
6662         . ./myread
6663         myhostname="$ans"
6664 done
6665
6666 : translate upper to lower if necessary
6667 case "$myhostname" in
6668 *[A-Z]*)
6669         echo "(Normalizing case in your host name)"
6670         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6671         ;;
6672 esac
6673
6674 case "$myhostname" in
6675 *.*)
6676         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6677         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6678         echo "(Trimming domain name from host name--host name is now $myhostname)"
6679         ;;
6680 *) case "$mydomain" in
6681         '')
6682                 {
6683                         test "X$hostcat" = "Xypcat hosts" &&
6684                         ypmatch "$myhostname" hosts 2>/dev/null |\
6685                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6686                         $test -s hosts
6687                 } || {
6688                         test "X$hostcat" != "X" &&
6689                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6690                                         /[       ]$myhostname[  . ]/p" > hosts
6691                 }
6692                 tmp_re="[       . ]"
6693                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6694                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6695                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6696                         hosts | $sort | $uniq | \
6697                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6698                 case `$echo X$dflt` in
6699                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6700                         dflt=.
6701                         ;;
6702                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6703                         ;;
6704                 esac
6705                 case "$dflt" in
6706                 .)
6707                         tans=`./loc resolv.conf X /etc /usr/etc`
6708                         if $test -f "$tans"; then
6709                                 echo "(Attempting domain name extraction from $tans)"
6710                                 dflt=.`$sed -n -e 's/   / /g' \
6711                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6712                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6713                                 case "$dflt" in
6714                                 .) dflt=.`$sed -n -e 's/        / /g' \
6715                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6716                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6717                                         ;;
6718                                 esac
6719                         fi
6720                         ;;
6721                 esac
6722                 case "$dflt" in
6723                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6724                         dflt=.`sh -c domainname 2>/dev/null`
6725                         case "$dflt" in
6726                         '') dflt='.';;
6727                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6728                         esac
6729                         ;;
6730                 esac
6731                 case "$dflt" in
6732                 .) echo "(Lost all hope -- silly guess then)"
6733                         dflt='.uucp'
6734                         ;;
6735                 esac
6736                 $rm -f hosts
6737                 ;;
6738         *) dflt="$mydomain";;
6739         esac;;
6740 esac
6741 echo " "
6742 rp="What is your domain name?"
6743 . ./myread
6744 tans="$ans"
6745 case "$ans" in
6746 '') ;;
6747 .*) ;;
6748 *) tans=".$tans";;
6749 esac
6750 mydomain="$tans"
6751
6752 : translate upper to lower if necessary
6753 case "$mydomain" in
6754 *[A-Z]*)
6755         echo "(Normalizing case in your domain name)"
6756         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6757         ;;
6758 esac
6759
6760 : a little sanity check here
6761 case "$phostname" in
6762 '') ;;
6763 *)
6764         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6765         $myhostname$mydomain|$myhostname) ;;
6766         *)
6767                 case "$phostname" in
6768                 sed*)
6769                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6770                         ;;
6771                 *)
6772                         echo "(That doesn't agree with your $phostname command, by the way.)"
6773                         ;;
6774                 esac
6775         ;;
6776         esac
6777         ;;
6778 esac
6779
6780 $cat <<EOM
6781
6782 I need to get your e-mail address in Internet format if possible, i.e.
6783 something like user@host.domain. Please answer accurately since I have
6784 no easy means to double check it. The default value provided below
6785 is most probably close to reality but may not be valid from outside
6786 your organization...
6787
6788 EOM
6789 cont=x
6790 while test "$cont"; do
6791         case "$cf_email" in
6792         '') dflt="$cf_by@$myhostname$mydomain";;
6793         *) dflt="$cf_email";;
6794         esac
6795         rp='What is your e-mail address?'
6796         . ./myread
6797         cf_email="$ans"
6798         case "$cf_email" in
6799         *@*.*) cont='' ;;
6800         *)
6801                 rp='Address does not look like an Internet one.  Use it anyway?'
6802                 case "$fastread" in
6803                 yes) dflt=y ;;
6804                 *) dflt=n ;;
6805                 esac
6806                 . ./myread
6807                 case "$ans" in
6808                 y*) cont='' ;;
6809                 *) echo " " ;;
6810                 esac
6811                 ;;
6812         esac
6813 done
6814
6815 $cat <<EOM
6816
6817 If you or somebody else will be maintaining perl at your site, please
6818 fill in the correct e-mail address here so that they may be contacted
6819 if necessary. Currently, the "perlbug" program included with perl
6820 will send mail to this address in addition to perlbug@perl.com. You may
6821 enter "none" for no administrator.
6822
6823 EOM
6824 case "$perladmin" in
6825 '') dflt="$cf_email";;
6826 *) dflt="$perladmin";;
6827 esac
6828 rp='Perl administrator e-mail address'
6829 . ./myread
6830 perladmin="$ans"
6831
6832 : figure out how to guarantee perl startup
6833 case "$startperl" in
6834 '')
6835         case "$sharpbang" in
6836         *!)
6837                 $cat <<EOH
6838
6839 I can use the #! construct to start perl on your system. This will
6840 make startup of perl scripts faster, but may cause problems if you
6841 want to share those scripts and perl is not in a standard place
6842 ($binexp/perl) on all your platforms. The alternative is to force
6843 a shell by starting the script with a single ':' character.
6844
6845 EOH
6846                 dflt="$binexp/perl"
6847                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6848                 . ./myread
6849                 case "$ans" in
6850                 none)   startperl=": # use perl";;
6851                 *)      startperl="#!$ans"
6852                         if $test 30 -lt `echo "$ans" | wc -c`; then
6853                                 $cat >&4 <<EOM
6854
6855 WARNING:  Some systems limit the #! command to 32 characters.
6856 If you experience difficulty running Perl scripts with #!, try
6857 installing Perl in a directory with a shorter pathname.
6858
6859 EOM
6860                         fi ;;
6861                 esac
6862                 ;;
6863         *) startperl=": # use perl"
6864                 ;;
6865         esac
6866         ;;
6867 esac
6868 echo "I'll use $startperl to start perl scripts."
6869
6870 : figure best path for perl in scripts
6871 case "$perlpath" in
6872 '')
6873         perlpath="$binexp/perl"
6874         case "$startperl" in
6875         *!*) ;;
6876         *)
6877                 $cat <<EOH
6878
6879 I will use the "eval 'exec'" idiom to start Perl on your system.
6880 I can use the full path of your Perl binary for this purpose, but
6881 doing so may cause problems if you want to share those scripts and
6882 Perl is not always in a standard place ($binexp/perl).
6883
6884 EOH
6885                 dflt="$binexp/perl"
6886                 rp="What path shall I use in \"eval 'exec'\"?"
6887                 . ./myread
6888                 perlpath="$ans"
6889                 ;;
6890         esac
6891         ;;
6892 esac
6893 case "$startperl" in
6894 *!*)    ;;
6895 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6896 esac
6897
6898 : determine where public executable scripts go
6899 set scriptdir scriptdir
6900 eval $prefixit
6901 case "$scriptdir" in
6902 '')
6903         dflt="$bin"
6904         : guess some guesses
6905         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6906         $test -d /usr/share/bin     && dflt=/usr/share/bin
6907         $test -d /usr/local/script  && dflt=/usr/local/script
6908         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6909         $test -d $prefixexp/script  && dflt=$prefixexp/script
6910         set dflt
6911         eval $prefixup
6912         ;;
6913 *)  dflt="$scriptdir"
6914         ;;
6915 esac
6916 $cat <<EOM
6917  
6918 Some installations have a separate directory just for executable scripts so
6919 that they can mount it across multiple architectures but keep the scripts in
6920 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6921 Or you might just lump your scripts in with all your other executables.
6922  
6923 EOM
6924 fn=d~
6925 rp='Where do you keep publicly executable scripts?'
6926 . ./getfile
6927 if $test "X$ansexp" != "X$scriptdirexp"; then
6928         installscript=''
6929 fi
6930 scriptdir="$ans"
6931 scriptdirexp="$ansexp"
6932 : Change installation prefix, if necessary.
6933 if $test X"$prefix" != X"$installprefix"; then
6934         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6935 else
6936         installscript="$scriptdirexp"
6937 fi
6938
6939 : determine where site specific architecture-dependent libraries go.
6940 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6941 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6942 : sitelib may have an optional trailing /share.
6943 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6944 tdflt="$tdflt/$archname"
6945 set sitearch sitearch none
6946 eval $prefixit
6947 case "$sitearch" in
6948 '')     dflt="$tdflt" ;;
6949 *)      dflt="$sitearch" ;;
6950 esac
6951 $cat <<EOM
6952
6953 The installation process will also create a directory for
6954 architecture-dependent site-specific extensions and modules.
6955
6956 EOM
6957 fn=nd~+
6958 rp='Pathname for the site-specific architecture-dependent library files?'
6959 . ./getfile
6960 sitearch="$ans"
6961 sitearchexp="$ansexp"
6962 : Change installation prefix, if necessary.
6963 if $test X"$prefix" != X"$installprefix"; then
6964         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6965 else
6966         installsitearch="$sitearchexp"
6967 fi
6968
6969 : determine where add-on public executables go
6970 case "$sitebin" in
6971 '')     dflt=$siteprefix/bin ;;
6972 *)      dflt=$sitebin ;;
6973 esac
6974 fn=d~
6975 rp='Pathname where the add-on public executables should be installed?'
6976 . ./getfile
6977 sitebin="$ans"
6978 sitebinexp="$ansexp"
6979 : Change installation prefix, if necessary.
6980 if $test X"$prefix" != X"$installprefix"; then
6981         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6982 else
6983         installsitebin="$sitebinexp"
6984 fi
6985
6986 : see if sqrtl exists
6987 set sqrtl d_sqrtl
6988 eval $inlibc
6989
6990 cat <<EOM
6991
6992 Perl can be built to take advantage of long doubles which
6993 (if available) may give more accuracy and range for floating point numbers.
6994
6995 If this doesn't make any sense to you, just accept the default 'n'.
6996 EOM
6997
6998 case "$ccflags" in
6999 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7000 esac
7001
7002 case "$uselongdouble" in
7003 $define|true|[yY]*)     dflt='y';;
7004 *) dflt='n';;
7005 esac
7006 rp='Try to use long doubles if available?'
7007 . ./myread
7008 case "$ans" in
7009 y|Y)    val="$define"   ;;
7010 *)      val="$undef"    ;;
7011 esac
7012 set uselongdouble
7013 eval $setvar
7014
7015 case "$uselongdouble" in
7016 true|[yY]*) uselongdouble="$define" ;;
7017 esac
7018
7019 case "$uselongdouble" in
7020 $define)
7021 : Look for a hint-file generated 'call-back-unit'.  If the
7022 : user has specified that long doubles should be used,
7023 : we may need to set or change some other defaults.
7024         if $test -f uselongdouble.cbu; then
7025                 echo "Your platform has some specific hints for long doubles, using them..."
7026                 . ./uselongdouble.cbu
7027         else
7028                 $cat <<EOM
7029 (Your platform doesn't have any specific hints for long doubles.)
7030 EOM
7031         fi
7032         ;;
7033 esac
7034
7035 case "$uselongdouble:$d_sqrtl" in
7036 $define:$undef)
7037                 $cat <<EOM >&4
7038
7039 You requested the use of long doubles but you do not seem to have
7040 the mathematic functions for long doubles.  I'm disabling the use
7041 of long doubles.
7042 EOM
7043         uselongdouble=$undef
7044         ;;
7045 esac
7046
7047 case "$uselonglong" in
7048 ''|true|[yY]*) uselonglong="$define" ;;
7049 *) case "$ccflags" in
7050    *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7051    *) uselonglong="$undef" ;;
7052    esac
7053    ;;
7054 esac
7055 case "$uselonglong" in
7056 $define)        dflt='y';;
7057 *)              dflt='n';;
7058 esac
7059 cat <<EOM
7060
7061 Perl can be built to take advantage of long longs which
7062 (if available) may give more range for integer numbers.
7063
7064 If this doesn't make any sense to you, just accept the default '$dflt'.
7065 EOM
7066 rp='Try to use long longs if available?'
7067 . ./myread
7068 case "$ans" in
7069 y|Y)    val="$define"   ;;
7070 *)      val="$undef"    ;;
7071 esac
7072 set uselonglong
7073 eval $setvar
7074 case "$uselonglong" in
7075 $define)
7076 : Look for a hint-file generated 'call-back-unit'.  If the
7077 : user has specified that long longs should be used,
7078 : we may need to set or change some other defaults.
7079         if $test -f uselonglong.cbu; then
7080                 echo "Your platform has some specific hints for long longs, using them..."
7081                 . ./uselonglong.cbu
7082         else
7083                 $cat <<EOM
7084 (Your platform doesn't have any specific hints for long longs.)
7085 EOM
7086         fi
7087         ;;
7088 esac
7089
7090 cat <<EOM
7091
7092 Previous version of $package used the standard IO mechanisms as defined
7093 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7094 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7095 the default.  This abstraction layer can use AT&T's sfio (if you already
7096 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7097 problems with some extension modules.  Using PerlIO with stdio is safe,
7098 but it is slower than plain stdio and therefore is not the default.
7099
7100 If this doesn't make any sense to you, just accept the default 'n'.
7101 EOM
7102 case "$useperlio" in
7103 $define|true|[yY]*)     dflt='y';;
7104 *) dflt='n';;
7105 esac
7106 rp='Use the experimental PerlIO abstraction layer?'
7107 . ./myread
7108 case "$ans" in
7109 y|Y) 
7110         val="$define"
7111         ;;     
7112 *)      
7113         echo "Ok, doing things the stdio way"
7114         val="$undef"
7115         ;;
7116 esac
7117 set useperlio
7118 eval $setvar 
7119
7120 case "$vendorprefix" in
7121 '')     d_vendorbin="$undef"
7122         vendorbin=''
7123         vendorbinexp=''
7124         ;;
7125 *)      d_vendorbin="$define"
7126         : determine where vendor-supplied executables go.
7127         dflt=$vendorprefix/bin
7128         fn=d~+
7129         rp='Pathname for the vendor-supplied executables directory?'
7130         . ./getfile
7131         vendorbin="$ans"
7132         vendorbinexp="$ansexp"
7133         : Change installation prefix, if necessary.
7134         if $test X"$prefix" != X"$installprefix"; then
7135                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7136         else
7137                 installvendorbin="$vendorbinexp"
7138         fi
7139         ;;
7140 esac
7141
7142 : check for length of double
7143 echo " "
7144 case "$doublesize" in
7145 '')
7146         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7147         $cat >try.c <<'EOCP'
7148 #include <stdio.h>
7149 int main()
7150 {
7151     printf("%d\n", (int)sizeof(double));
7152     exit(0);
7153 }
7154 EOCP
7155         set try
7156         if eval $compile_ok; then
7157                 doublesize=`./try`
7158                 $echo " $doublesize bytes." >&4
7159         else
7160                 dflt='8'
7161                 echo "(I can't seem to compile the test program.  Guessing...)"
7162                 rp="What is the size of a double precision number (in bytes)?"
7163                 . ./myread
7164                 doublesize="$ans"
7165         fi
7166         ;;
7167 esac
7168 $rm -f try.c try
7169
7170 : check for long doubles
7171 echo " "
7172 $echo $n "Checking to see if your system supports long double..." $c >&4
7173 echo 'int main() { long double x = 7.0; }' > try.c
7174 set try
7175 if eval $compile; then
7176         val="$define"
7177         echo " Yes, it does." >&4
7178 else
7179         val="$undef"
7180         echo " No, it doesn't." >&4
7181 fi
7182 $rm try.*
7183 set d_longdbl
7184 eval $setvar
7185
7186 : check for length of long double
7187 case "${d_longdbl}${longdblsize}" in
7188 $define)
7189         echo " "
7190         $echo $n "Checking to see how big your long doubles are..." $c >&4
7191         $cat >try.c <<'EOCP'
7192 #include <stdio.h>
7193 int main()
7194 {
7195         printf("%d\n", sizeof(long double));
7196 }
7197 EOCP
7198         set try
7199         set try
7200         if eval $compile; then
7201                 longdblsize=`./try$exe_ext`
7202                 $echo " $longdblsize bytes." >&4
7203         else
7204                 dflt='8'
7205                 echo " "
7206                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7207                 rp="What is the size of a long double (in bytes)?"
7208                 . ./myread
7209                 longdblsize="$ans"
7210         fi
7211         if $test "X$doublesize" = "X$longdblsize"; then
7212                 echo "(That isn't any different from an ordinary double.)"
7213         fi      
7214         ;;
7215 esac
7216 $rm -f try.* try
7217
7218 : Check how to convert floats to strings.
7219 if test "X$d_Gconvert" = X; then
7220         echo " "
7221         echo "Checking for an efficient way to convert floats to strings."
7222         $cat >try.c <<EOP
7223 #ifdef TRY_gconvert
7224 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7225 char *myname = "gconvert";
7226 #endif
7227 #ifdef TRY_gcvt
7228 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7229 char *myname = "gcvt";
7230 #endif
7231 #ifdef TRY_qgcvt
7232 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7233 char *myname = "qgcvt";
7234 #define DOUBLETYPE long double
7235 #endif
7236 #ifdef TRY_sprintf
7237 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7238 char *myname = "sprintf";
7239 #endif
7240
7241 #ifndef DOUBLETYPE
7242 #define DOUBLETYPE double
7243 #endif
7244
7245 #include <stdio.h>
7246
7247 #define I_STDLIB $i_stdlib
7248 #ifdef I_STDLIB
7249 #include <stdlib.h>
7250 #endif
7251
7252 int
7253 checkit(expect, got)
7254 char *expect;
7255 char *got;
7256 {
7257     if (strcmp(expect, got)) {
7258                 printf("%s oddity:  Expected %s, got %s\n",
7259                         myname, expect, got);
7260                 exit(1);
7261         }
7262 }
7263
7264 int main()
7265
7266         char buf[64]; 
7267         buf[63] = '\0';
7268
7269         /* This must be 1st test on (which?) platform */
7270         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7271         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7272         checkit("0.1", buf);
7273
7274         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7275         checkit("1", buf);
7276
7277         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7278         checkit("0", buf);
7279
7280         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7281         checkit("-1", buf);
7282
7283         /* Some Linux gcvt's give 1.e+5 here. */
7284         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7285         checkit("100000", buf);
7286         
7287         /* Some Linux gcvt's give -1.e+5 here. */
7288         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7289         checkit("-100000", buf);
7290
7291         exit(0);
7292 }
7293 EOP
7294         case "$d_Gconvert" in
7295         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7296         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7297         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7298         *) xxx_list='gconvert gcvt sprintf' ;;
7299         esac
7300
7301         case "$d_longdbl$uselongdouble" in
7302         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7303         esac
7304
7305         for xxx_convert in $xxx_list; do
7306                 echo "Trying $xxx_convert..."
7307                 $rm -f try try$_o
7308                 set try -DTRY_$xxx_convert
7309                 if eval $compile; then
7310                         echo "$xxx_convert() found." >&4
7311                         if ./try; then
7312                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7313                                 break;
7314                         else
7315                                 echo "...But $xxx_convert didn't work as I expected."
7316                         fi
7317                 else
7318                         echo "$xxx_convert NOT found." >&4
7319                 fi
7320         done
7321                 
7322         case "$xxx_convert" in
7323         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7324         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7325         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7326         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7327         esac
7328 fi
7329
7330 echo " "
7331
7332 if $test X"$d_longdbl" = X"$define"; then
7333
7334 echo "Checking how to print long doubles..." >&4
7335
7336 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7337         $cat >try.c <<'EOCP'
7338 #include <sys/types.h>
7339 #include <stdio.h>
7340 int main() {
7341   double d = 123.456;
7342   printf("%.3f\n", d);
7343 }
7344 EOCP
7345         set try
7346         if eval $compile; then
7347                 yyy=`./try$exe_ext`
7348                 case "$yyy" in
7349                 123.456)
7350                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7351                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7352                         echo "We will use %f."
7353                         ;;
7354                 esac
7355         fi
7356 fi
7357
7358 if $test X"$sPRIfldbl" = X; then
7359         $cat >try.c <<'EOCP'
7360 #include <sys/types.h>
7361 #include <stdio.h>
7362 int main() {
7363   long double d = 123.456;
7364   printf("%.3llf\n", d);
7365 }
7366 EOCP
7367         set try
7368         if eval $compile; then
7369                 yyy=`./try$exe_ext`
7370                 case "$yyy" in
7371                 123.456)
7372                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7373                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7374                         echo "We will use %llf."
7375                         ;;
7376                 esac
7377         fi
7378 fi
7379
7380 if $test X"$sPRIfldbl" = X; then
7381         $cat >try.c <<'EOCP'
7382 #include <sys/types.h>
7383 #include <stdio.h>
7384 int main() {
7385   long double d = 123.456;
7386   printf("%.3Lf\n", d);
7387 }
7388 EOCP
7389         set try
7390         if eval $compile; then
7391                 yyy=`./try$exe_ext`
7392                 case "$yyy" in
7393                 123.456)
7394                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7395                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7396                         echo "We will use %Lf."
7397                         ;;
7398                 esac
7399         fi
7400 fi
7401
7402 if $test X"$sPRIfldbl" = X; then
7403         $cat >try.c <<'EOCP'
7404 #include <sys/types.h>
7405 #include <stdio.h>
7406 int main() {
7407   long double d = 123.456;
7408   printf("%.3lf\n", d);
7409 }
7410 EOCP
7411         set try
7412         if eval $compile; then
7413                 yyy=`./try$exe_ext`
7414                 case "$yyy" in
7415                 123.456)
7416                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7417                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7418                         echo "We will use %lf."
7419                         ;;
7420                 esac
7421         fi
7422 fi
7423
7424 if $test X"$sPRIfldbl" = X; then
7425         echo "Cannot figure out how to print long doubles." >&4
7426 fi
7427
7428 $rm -f try try.*
7429
7430 fi # d_longdbl
7431
7432 case "$sPRIfldbl" in
7433 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7434         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7435         ;;
7436 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7437         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7438         ;;
7439 esac
7440
7441 : Initialize h_fcntl
7442 h_fcntl=false
7443
7444 : Initialize h_sysfile
7445 h_sysfile=false
7446
7447 : access call always available on UNIX
7448 set access d_access
7449 eval $inlibc
7450
7451 : locate the flags for 'access()'
7452 case "$d_access" in
7453 "$define")
7454         echo " "
7455         $cat >access.c <<'EOCP'
7456 #include <sys/types.h>
7457 #ifdef I_FCNTL
7458 #include <fcntl.h>
7459 #endif
7460 #ifdef I_SYS_FILE
7461 #include <sys/file.h>
7462 #endif
7463 #ifdef I_UNISTD
7464 #include <unistd.h>
7465 #endif
7466 int main() {
7467         exit(R_OK);
7468 }
7469 EOCP
7470         : check sys/file.h first, no particular reason here
7471         if $test `./findhdr sys/file.h` && \
7472                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7473                 h_sysfile=true;
7474                 echo "<sys/file.h> defines the *_OK access constants." >&4
7475         elif $test `./findhdr fcntl.h` && \
7476                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7477                 h_fcntl=true;
7478                 echo "<fcntl.h> defines the *_OK access constants." >&4
7479         elif $test `./findhdr unistd.h` && \
7480                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7481                 echo "<unistd.h> defines the *_OK access constants." >&4
7482         else
7483                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7484         fi
7485         ;;
7486 esac
7487 $rm -f access*
7488
7489 : see if accessx exists
7490 set accessx d_accessx
7491 eval $inlibc
7492
7493 : see if alarm exists
7494 set alarm d_alarm
7495 eval $inlibc
7496
7497 : see if atolf exists
7498 set atolf d_atolf
7499 eval $inlibc
7500
7501 : see if atoll exists
7502 set atoll d_atoll
7503 eval $inlibc
7504
7505 : Look for GNU-cc style attribute checking
7506 echo " "
7507 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7508 $cat >attrib.c <<'EOCP'
7509 #include <stdio.h>
7510 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7511 EOCP
7512 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7513         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7514                 echo "Your C compiler doesn't fully support __attribute__."
7515                 val="$undef"
7516         else
7517                 echo "Your C compiler supports __attribute__."
7518                 val="$define"
7519         fi
7520 else
7521         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7522         val="$undef"
7523 fi
7524 set d_attribut
7525 eval $setvar
7526 $rm -f attrib*
7527
7528 : see if bcmp exists
7529 set bcmp d_bcmp
7530 eval $inlibc
7531
7532 : see if bcopy exists
7533 set bcopy d_bcopy
7534 eval $inlibc
7535
7536 : see if this is a unistd.h system
7537 set unistd.h i_unistd
7538 eval $inhdr
7539
7540 : see if getpgrp exists
7541 set getpgrp d_getpgrp
7542 eval $inlibc
7543
7544 case "$d_getpgrp" in
7545 "$define")
7546         echo " "
7547         echo "Checking to see which flavor of getpgrp is in use..."
7548         $cat >set.c <<EOP
7549 #$i_unistd I_UNISTD
7550 #include <sys/types.h>
7551 #ifdef I_UNISTD
7552 #  include <unistd.h>
7553 #endif
7554 int main()
7555 {
7556         if (getuid() == 0) {
7557                 printf("(I see you are running Configure as super-user...)\n");
7558                 setuid(1);
7559         }
7560 #ifdef TRY_BSD_PGRP
7561         if (getpgrp(1) == 0)
7562                 exit(0);
7563 #else
7564         if (getpgrp() > 0)
7565                 exit(0);
7566 #endif
7567         exit(1);
7568 }
7569 EOP
7570         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7571                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7572                 val="$define"
7573         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7574                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7575                 val="$undef"
7576         else
7577                 echo "I can't seem to compile and run the test program."
7578                 if ./usg; then
7579                         xxx="a USG one, i.e. you use getpgrp()."
7580                 else
7581                         # SVR4 systems can appear rather BSD-ish.
7582                         case "$i_unistd" in
7583                         $undef)
7584                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7585                                 val="$define"
7586                                 ;;
7587                         $define)
7588                                 xxx="probably a USG one, i.e. you use getpgrp()."
7589                                 val="$undef"
7590                                 ;;
7591                         esac
7592                 fi
7593                 echo "Assuming your getpgrp is $xxx" >&4
7594         fi
7595         ;;
7596 *) val="$undef";;
7597 esac
7598 set d_bsdgetpgrp
7599 eval $setvar
7600 $rm -f set set.c
7601
7602 : see if setpgrp exists
7603 set setpgrp d_setpgrp
7604 eval $inlibc
7605
7606 case "$d_setpgrp" in
7607 "$define")
7608         echo " "
7609         echo "Checking to see which flavor of setpgrp is in use..."
7610         $cat >set.c <<EOP
7611 #$i_unistd I_UNISTD
7612 #include <sys/types.h>
7613 #ifdef I_UNISTD
7614 #  include <unistd.h>
7615 #endif
7616 int main()
7617 {
7618         if (getuid() == 0) {
7619                 printf("(I see you are running Configure as super-user...)\n");
7620                 setuid(1);
7621         }
7622 #ifdef TRY_BSD_PGRP
7623         if (-1 == setpgrp(1, 1))
7624                 exit(0);
7625 #else
7626         if (setpgrp() != -1)
7627                 exit(0);
7628 #endif
7629         exit(1);
7630 }
7631 EOP
7632         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7633                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7634                 val="$define"
7635         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7636                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7637                 val="$undef"
7638         else
7639                 echo "(I can't seem to compile and run the test program.)"
7640                 if ./usg; then
7641                         xxx="a USG one, i.e. you use setpgrp()."
7642                 else
7643                         # SVR4 systems can appear rather BSD-ish.
7644                         case "$i_unistd" in
7645                         $undef)
7646                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7647                                 val="$define"
7648                                 ;;
7649                         $define)
7650                                 xxx="probably a USG one, i.e. you use setpgrp()."
7651                                 val="$undef"
7652                                 ;;
7653                         esac
7654                 fi
7655                 echo "Assuming your setpgrp is $xxx" >&4
7656         fi
7657         ;;
7658 *) val="$undef";;
7659 esac
7660 set d_bsdsetpgrp
7661 eval $setvar
7662 $rm -f set set.c
7663 : see if bzero exists
7664 set bzero d_bzero
7665 eval $inlibc
7666
7667 : see if signal is declared as pointer to function returning int or void
7668 echo " "
7669 xxx=`./findhdr signal.h`
7670 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7671 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7672         echo "You have int (*signal())() instead of void." >&4
7673         val="$undef"
7674 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7675         echo "You have void (*signal())()." >&4
7676         val="$define"
7677 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7678         echo "You have int (*signal())() instead of void." >&4
7679         val="$undef"
7680 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7681         echo "You have void (*signal())()." >&4
7682         val="$define"
7683 else
7684         case "$d_voidsig" in
7685         '')
7686         echo "I can't determine whether signal handler returns void or int..." >&4
7687                 dflt=void
7688                 rp="What type does your signal handler return?"
7689                 . ./myread
7690                 case "$ans" in
7691                 v*) val="$define";;
7692                 *) val="$undef";;
7693                 esac;;
7694         "$define")
7695                 echo "As you already told me, signal handler returns void." >&4
7696                 val="$define"
7697                 ;;
7698         *)      echo "As you already told me, signal handler returns int." >&4
7699                 val="$undef"
7700                 ;;
7701         esac
7702 fi
7703 set d_voidsig
7704 eval $setvar
7705 case "$d_voidsig" in
7706 "$define") signal_t="void";;
7707 *) signal_t="int";;
7708 esac
7709 $rm -f $$.tmp
7710
7711 : check for ability to cast large floats to 32-bit ints.
7712 echo " "
7713 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7714 if $test "$intsize" -ge 4; then
7715         xxx=int
7716 else
7717         xxx=long
7718 fi
7719 $cat >try.c <<EOCP
7720 #include <stdio.h>
7721 #include <sys/types.h>
7722 #include <signal.h>
7723 $signal_t blech(s) int s; { exit(3); }
7724 int main()
7725 {
7726         $xxx i32;
7727         double f, g;
7728         int result = 0;
7729         char str[16];
7730         signal(SIGFPE, blech);
7731
7732         /* Don't let compiler optimize the test away.  Store the number 
7733            in a writable string for gcc to pass to sscanf under HP/UX.
7734         */
7735         sprintf(str, "2147483647");
7736         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7737         g = 10 * f;
7738         i32  = ($xxx) g;
7739
7740         /* x86 processors will probably give 0x8000 0000, which is a
7741        sign change.  We don't want that.  We want to mimic SPARC
7742            behavior here, which is to preserve the sign and give
7743            back 0x7fff ffff.
7744         */
7745         if (i32 != ($xxx) f)
7746                 result |= 1;
7747         exit(result);
7748 }
7749 EOCP
7750 set try
7751 if eval $compile_ok; then
7752         ./try
7753         yyy=$?
7754 else
7755         echo "(I can't seem to compile the test program--assuming it can't)"
7756         yyy=1
7757 fi
7758 case "$yyy" in
7759 0)      val="$define"
7760         echo "Yup, it can."
7761         ;;
7762 *)      val="$undef"
7763         echo "Nope, it can't."
7764         ;;
7765 esac
7766 set d_casti32
7767 eval $setvar
7768 $rm -f try try.*
7769
7770 : check for ability to cast negative floats to unsigned
7771 echo " "
7772 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7773 $cat >try.c <<EOCP
7774 #include <stdio.h>
7775 #include <sys/types.h>
7776 #include <signal.h>
7777 $signal_t blech(s) int s; { exit(7); }
7778 $signal_t blech_in_list(s) int s; { exit(4); }
7779 unsigned long dummy_long(p) unsigned long p; { return p; }
7780 unsigned int dummy_int(p) unsigned int p; { return p; }
7781 unsigned short dummy_short(p) unsigned short p; { return p; }
7782 int main()
7783 {
7784         double f;
7785         unsigned long along;
7786         unsigned int aint;
7787         unsigned short ashort;
7788         int result = 0;
7789         char str[16];
7790         
7791         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7792            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7793            optimized the whole file away
7794         */
7795         /* Store the number in a writable string for gcc to pass to 
7796            sscanf under HP/UX.
7797         */
7798         sprintf(str, "-123");
7799         sscanf(str, "%lf", &f);  /* f = -123.; */
7800
7801         signal(SIGFPE, blech);
7802         along = (unsigned long)f;
7803         aint = (unsigned int)f;
7804         ashort = (unsigned short)f;
7805         if (along != (unsigned long)-123)
7806                 result |= 1;
7807         if (aint != (unsigned int)-123)
7808                 result |= 1;
7809         if (ashort != (unsigned short)-123)
7810                 result |= 1;
7811         sprintf(str, "1073741824.");
7812         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7813         f = f + f;
7814         along = 0;
7815         along = (unsigned long)f;
7816         if (along != 0x80000000)
7817                 result |= 2;
7818         f -= 1.;
7819         along = 0;
7820         along = (unsigned long)f;
7821         if (along != 0x7fffffff)
7822                 result |= 1;
7823         f += 2.;
7824         along = 0;
7825         along = (unsigned long)f;
7826         if (along != 0x80000001)
7827                 result |= 2;
7828         if (result)
7829                 exit(result);
7830         signal(SIGFPE, blech_in_list);
7831         sprintf(str, "123.");
7832         sscanf(str, "%lf", &f);  /* f = 123.; */
7833         along = dummy_long((unsigned long)f);
7834         aint = dummy_int((unsigned int)f);
7835         ashort = dummy_short((unsigned short)f);
7836         if (along != (unsigned long)123)
7837                 result |= 4;
7838         if (aint != (unsigned int)123)
7839                 result |= 4;
7840         if (ashort != (unsigned short)123)
7841                 result |= 4;
7842         exit(result);
7843
7844 }
7845 EOCP
7846 set try
7847 if eval $compile_ok; then
7848         ./try
7849         castflags=$?
7850 else
7851         echo "(I can't seem to compile the test program--assuming it can't)"
7852         castflags=7
7853 fi
7854 case "$castflags" in
7855 0)      val="$define"
7856         echo "Yup, it can."
7857         ;;
7858 *)      val="$undef"
7859         echo "Nope, it can't."
7860         ;;
7861 esac
7862 set d_castneg
7863 eval $setvar
7864 $rm -f try.*
7865
7866 : see if vprintf exists
7867 echo " "
7868 if set vprintf val -f d_vprintf; eval $csym; $val; then
7869         echo 'vprintf() found.' >&4
7870         val="$define"
7871         $cat >vprintf.c <<'EOF'
7872 #include <varargs.h>
7873
7874 int main() { xxx("foo"); }
7875
7876 xxx(va_alist)
7877 va_dcl
7878 {
7879         va_list args;
7880         char buf[10];
7881
7882         va_start(args);
7883         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7884 }
7885 EOF
7886         set vprintf
7887         if eval $compile && ./vprintf; then
7888                 echo "Your vsprintf() returns (int)." >&4
7889                 val2="$undef"
7890         else
7891                 echo "Your vsprintf() returns (char*)." >&4
7892                 val2="$define"
7893         fi
7894 else
7895         echo 'vprintf() NOT found.' >&4
7896                 val="$undef"
7897                 val2="$undef"
7898 fi
7899 set d_vprintf
7900 eval $setvar
7901 val=$val2
7902 set d_charvspr
7903 eval $setvar
7904
7905 : see if chown exists
7906 set chown d_chown
7907 eval $inlibc
7908
7909 : see if chroot exists
7910 set chroot d_chroot
7911 eval $inlibc
7912
7913 : see if chsize exists
7914 set chsize d_chsize
7915 eval $inlibc
7916
7917 : check for const keyword
7918 echo " "
7919 echo 'Checking to see if your C compiler knows about "const"...' >&4
7920 $cat >const.c <<'EOCP'
7921 typedef struct spug { int drokk; } spug;
7922 int main()
7923 {
7924         const char *foo;
7925         const spug y;
7926 }
7927 EOCP
7928 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7929         val="$define"
7930         echo "Yup, it does."
7931 else
7932         val="$undef"
7933         echo "Nope, it doesn't."
7934 fi
7935 set d_const
7936 eval $setvar
7937
7938 : see if crypt exists
7939 echo " "
7940 if set crypt val -f d_crypt; eval $csym; $val; then
7941         echo 'crypt() found.' >&4
7942         val="$define"
7943         cryptlib=''
7944 else
7945         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7946         if $test -z "$cryptlib"; then
7947                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7948         else
7949                 cryptlib=-lcrypt
7950         fi
7951         if $test -z "$cryptlib"; then
7952                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7953         else
7954                 cryptlib=-lcrypt
7955         fi
7956         if $test -z "$cryptlib"; then
7957                 cryptlib=`./loc libcrypt$_a "" $libpth`
7958         else
7959                 cryptlib=-lcrypt
7960         fi
7961         if $test -z "$cryptlib"; then
7962                 echo 'crypt() NOT found.' >&4
7963                 val="$undef"
7964         else
7965                 val="$define"
7966         fi
7967 fi
7968 set d_crypt
7969 eval $setvar
7970
7971 : get csh whereabouts
7972 case "$csh" in
7973 'csh') val="$undef" ;;
7974 *) val="$define" ;;
7975 esac
7976 set d_csh
7977 eval $setvar
7978 : Respect a hint or command line value for full_csh.
7979 case "$full_csh" in
7980 '') full_csh=$csh ;;
7981 esac
7982
7983 : see if cuserid exists
7984 set cuserid d_cuserid
7985 eval $inlibc
7986
7987 : see if this is a limits.h system
7988 set limits.h i_limits
7989 eval $inhdr
7990
7991 : see if this is a float.h system
7992 set float.h i_float
7993 eval $inhdr
7994
7995 : See if number of significant digits in a double precision number is known
7996 echo " "
7997 $cat >dbl_dig.c <<EOM
7998 #$i_limits I_LIMITS
7999 #$i_float I_FLOAT
8000 #ifdef I_LIMITS
8001 #include <limits.h>
8002 #endif
8003 #ifdef I_FLOAT
8004 #include <float.h>
8005 #endif
8006 #ifdef DBL_DIG
8007 printf("Contains DBL_DIG");
8008 #endif
8009 EOM
8010 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8011 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8012         echo "DBL_DIG found." >&4
8013         val="$define"
8014 else
8015         echo "DBL_DIG NOT found." >&4
8016         val="$undef"
8017 fi
8018 $rm -f dbl_dig.?
8019 set d_dbl_dig
8020 eval $setvar
8021
8022 : see if difftime exists
8023 set difftime d_difftime
8024 eval $inlibc
8025
8026 : see if this is a dirent system
8027 echo " "
8028 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8029         val="$define"
8030         echo "<dirent.h> found." >&4
8031 else
8032         val="$undef"
8033         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8034                 echo "<sys/dir.h> found." >&4
8035                 echo " "
8036         else
8037                 xinc=`./findhdr sys/ndir.h`
8038         fi
8039         echo "<dirent.h> NOT found." >&4
8040 fi
8041 set i_dirent
8042 eval $setvar
8043
8044 : Look for type of directory structure.
8045 echo " "
8046 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8047
8048 case "$direntrytype" in
8049 ''|' ')
8050         case "$i_dirent" in
8051         $define) guess1='struct dirent' ;;
8052         *) guess1='struct direct'  ;;
8053         esac
8054         ;;
8055 *)      guess1="$direntrytype"
8056         ;;
8057 esac
8058
8059 case "$guess1" in
8060 'struct dirent') guess2='struct direct' ;;
8061 *) guess2='struct dirent' ;;
8062 esac
8063                 
8064 if $contains "$guess1" try.c >/dev/null 2>&1; then
8065         direntrytype="$guess1"
8066         echo "Your directory entries are $direntrytype." >&4
8067 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8068         direntrytype="$guess2"
8069         echo "Your directory entries seem to be $direntrytype." >&4
8070 else
8071         echo "I don't recognize your system's directory entries." >&4
8072         rp="What type is used for directory entries on this system?"
8073         dflt="$guess1"
8074         . ./myread
8075         direntrytype="$ans"
8076 fi
8077 $rm -f try.c
8078
8079
8080 : see if the directory entry stores field length
8081 echo " "
8082 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8083 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8084         echo "Good, your directory entry keeps length information in d_namlen." >&4
8085         val="$define"
8086 else
8087         echo "Your directory entry does not know about the d_namlen field." >&4
8088         val="$undef"
8089 fi
8090 set d_dirnamlen
8091 eval $setvar
8092 $rm -f try.c
8093
8094 : see if dlerror exists
8095 xxx_runnm="$runnm"
8096 runnm=false
8097 set dlerror d_dlerror
8098 eval $inlibc
8099 runnm="$xxx_runnm"
8100
8101 : see if dlfcn is available
8102 set dlfcn.h i_dlfcn
8103 eval $inhdr
8104
8105 case "$usedl" in
8106 $define|y|true)
8107         $cat << EOM
8108
8109 On a few systems, the dynamically loaded modules that perl generates and uses
8110 will need a different extension than shared libs. The default will probably
8111 be appropriate.
8112
8113 EOM
8114         case "$dlext" in
8115         '')     dflt="$so" ;;
8116         *)      dflt="$dlext" ;;
8117         esac
8118         rp='What is the extension of dynamically loaded modules'
8119         . ./myread
8120         dlext="$ans"
8121         ;;
8122 *)
8123         dlext="none"
8124         ;;
8125 esac
8126
8127 : Check if dlsym need a leading underscore
8128 echo " "
8129 val="$undef"
8130
8131 case "$dlsrc" in
8132 dl_dlopen.xs)
8133         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8134         $cat >dyna.c <<'EOM'
8135 fred () { }
8136 EOM
8137
8138 $cat >fred.c<<EOM
8139
8140 #include <stdio.h>
8141 #$i_dlfcn I_DLFCN
8142 #ifdef I_DLFCN
8143 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8144 #else
8145 #include <sys/types.h>
8146 #include <nlist.h>
8147 #include <link.h>
8148 #endif
8149
8150 extern int fred() ;
8151
8152 int main()
8153 {
8154     void * handle ;
8155     void * symbol ;
8156 #ifndef RTLD_LAZY
8157     int mode = 1 ;
8158 #else
8159     int mode = RTLD_LAZY ;
8160 #endif
8161     handle = dlopen("./dyna.$dlext", mode) ;
8162     if (handle == NULL) {
8163         printf ("1\n") ;
8164         fflush (stdout) ;
8165         exit(0);
8166     }
8167     symbol = dlsym(handle, "fred") ;
8168     if (symbol == NULL) {
8169         /* try putting a leading underscore */
8170         symbol = dlsym(handle, "_fred") ;
8171         if (symbol == NULL) {
8172             printf ("2\n") ;
8173             fflush (stdout) ;
8174             exit(0);
8175         }
8176         printf ("3\n") ;
8177     }
8178     else
8179         printf ("4\n") ;
8180     fflush (stdout) ;
8181     exit(0);
8182 }
8183 EOM
8184         : Call the object file tmp-dyna.o in case dlext=o.
8185         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8186                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8187                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8188                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8189                 xxx=`./fred`
8190                 case $xxx in
8191                 1)      echo "Test program failed using dlopen." >&4
8192                         echo "Perhaps you should not use dynamic loading." >&4;;
8193                 2)      echo "Test program failed using dlsym." >&4
8194                         echo "Perhaps you should not use dynamic loading." >&4;;
8195                 3)      echo "dlsym needs a leading underscore" >&4
8196                         val="$define" ;;
8197                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8198                 esac
8199         else
8200                 echo "I can't compile and run the test program." >&4
8201                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8202         fi
8203         ;;
8204 esac
8205                 
8206 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8207
8208 set d_dlsymun
8209 eval $setvar
8210
8211 hasproto='varname=$1; func=$2; shift; shift;
8212 while $test $# -ge 2; do
8213         case "$1" in
8214         $define) echo "#include <$2>";;
8215         esac ;
8216     shift 2;
8217 done > try.c;
8218 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8219 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8220         echo "$func() prototype found.";
8221         val="$define";
8222 else
8223         echo "$func() prototype NOT found.";
8224         val="$undef";
8225 fi;
8226 set $varname;
8227 eval $setvar;
8228 $rm -f try.c tryout.c'
8229
8230 : see if prototype for drand48 is available
8231 echo " "
8232 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8233 eval $hasproto
8234
8235 : see if dup2 exists
8236 set dup2 d_dup2
8237 eval $inlibc
8238
8239 : see if eaccess exists
8240 set eaccess d_eaccess
8241 eval $inlibc
8242
8243 : see if endgrent exists
8244 set endgrent d_endgrent
8245 eval $inlibc
8246
8247 : see if endhostent exists
8248 set endhostent d_endhent
8249 eval $inlibc
8250
8251 : see if endnetent exists
8252 set endnetent d_endnent
8253 eval $inlibc
8254
8255 : see if endprotoent exists
8256 set endprotoent d_endpent
8257 eval $inlibc
8258
8259 : see if endpwent exists
8260 set endpwent d_endpwent
8261 eval $inlibc
8262
8263 : see if endservent exists
8264 set endservent d_endsent
8265 eval $inlibc
8266
8267 : see if endspent exists
8268 set endspent d_endspent
8269 eval $inlibc
8270
8271 : Locate the flags for 'open()'
8272 echo " "
8273 $cat >open3.c <<'EOCP'
8274 #include <sys/types.h>
8275 #ifdef I_FCNTL
8276 #include <fcntl.h>
8277 #endif
8278 #ifdef I_SYS_FILE
8279 #include <sys/file.h>
8280 #endif
8281 int main() {
8282         if(O_RDONLY);
8283 #ifdef O_TRUNC
8284         exit(0);
8285 #else
8286         exit(1);
8287 #endif
8288 }
8289 EOCP
8290 : check sys/file.h first to get FREAD on Sun
8291 if $test `./findhdr sys/file.h` && \
8292                 set open3 -DI_SYS_FILE && eval $compile; then
8293         h_sysfile=true;
8294         echo "<sys/file.h> defines the O_* constants..." >&4
8295         if ./open3; then
8296                 echo "and you have the 3 argument form of open()." >&4
8297                 val="$define"
8298         else
8299                 echo "but not the 3 argument form of open().  Oh, well." >&4
8300                 val="$undef"
8301         fi
8302 elif $test `./findhdr fcntl.h` && \
8303                 set open3 -DI_FCNTL && eval $compile; then
8304         h_fcntl=true;
8305         echo "<fcntl.h> defines the O_* constants..." >&4
8306         if ./open3; then
8307                 echo "and you have the 3 argument form of open()." >&4
8308                 val="$define"
8309         else
8310                 echo "but not the 3 argument form of open().  Oh, well." >&4
8311                 val="$undef"
8312         fi
8313 else
8314         val="$undef"
8315         echo "I can't find the O_* constant definitions!  You got problems." >&4
8316 fi
8317 set d_open3
8318 eval $setvar
8319 $rm -f open3*
8320
8321 : see which of string.h or strings.h is needed
8322 echo " "
8323 strings=`./findhdr string.h`
8324 if $test "$strings" && $test -r "$strings"; then
8325         echo "Using <string.h> instead of <strings.h>." >&4
8326         val="$define"
8327 else
8328         val="$undef"
8329         strings=`./findhdr strings.h`
8330         if $test "$strings" && $test -r "$strings"; then
8331                 echo "Using <strings.h> instead of <string.h>." >&4
8332         else
8333                 echo "No string header found -- You'll surely have problems." >&4
8334         fi
8335 fi
8336 set i_string
8337 eval $setvar
8338 case "$i_string" in
8339 "$undef") strings=`./findhdr strings.h`;;
8340 *)        strings=`./findhdr string.h`;;
8341 esac
8342
8343 : check for non-blocking I/O stuff
8344 case "$h_sysfile" in
8345 true) echo "#include <sys/file.h>" > head.c;;
8346 *)
8347         case "$h_fcntl" in
8348         true) echo "#include <fcntl.h>" > head.c;;
8349         *) echo "#include <sys/fcntl.h>" > head.c;;
8350         esac
8351         ;;
8352 esac
8353 echo " "
8354 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8355 case "$o_nonblock" in
8356 '')
8357         $cat head.c > try.c
8358         $cat >>try.c <<'EOCP'
8359 #include <stdio.h>
8360 int main() {
8361 #ifdef O_NONBLOCK
8362         printf("O_NONBLOCK\n");
8363         exit(0);
8364 #endif
8365 #ifdef O_NDELAY
8366         printf("O_NDELAY\n");
8367         exit(0);
8368 #endif
8369 #ifdef FNDELAY
8370         printf("FNDELAY\n");
8371         exit(0);
8372 #endif
8373         exit(0);
8374 }
8375 EOCP
8376         set try
8377         if eval $compile_ok; then
8378                 o_nonblock=`./try`
8379                 case "$o_nonblock" in
8380                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8381                 *) echo "Seems like we can use $o_nonblock.";;
8382                 esac
8383         else
8384                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8385         fi
8386         ;;
8387 *) echo "Using $hint value $o_nonblock.";;
8388 esac
8389 $rm -f try try.* .out core
8390
8391 echo " "
8392 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8393 case "$eagain" in
8394 '')
8395         $cat head.c > try.c
8396         $cat >>try.c <<EOCP
8397 #include <errno.h>
8398 #include <sys/types.h>
8399 #include <signal.h>
8400 #include <stdio.h> 
8401 #define MY_O_NONBLOCK $o_nonblock
8402 #ifndef errno  /* XXX need better Configure test */
8403 extern int errno;
8404 #endif
8405 #$i_unistd I_UNISTD
8406 #ifdef I_UNISTD
8407 #include <unistd.h>
8408 #endif
8409 #ifdef $i_string
8410 #include <string.h>
8411 #else
8412 #include <strings.h>
8413 #endif
8414 $signal_t blech(x) int x; { exit(3); }
8415 EOCP
8416         $cat >> try.c <<'EOCP'
8417 int main()
8418 {
8419         int pd[2];
8420         int pu[2];
8421         char buf[1];
8422         char string[100];
8423
8424         pipe(pd);       /* Down: child -> parent */
8425         pipe(pu);       /* Up: parent -> child */
8426         if (0 != fork()) {
8427                 int ret;
8428                 close(pd[1]);   /* Parent reads from pd[0] */
8429                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8430                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8431                         exit(1);
8432                 signal(SIGALRM, blech);
8433                 alarm(5);
8434                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8435                         exit(2);
8436                 sprintf(string, "%d\n", ret);
8437                 write(2, string, strlen(string));
8438                 alarm(0);
8439 #ifdef EAGAIN
8440                 if (errno == EAGAIN) {
8441                         printf("EAGAIN\n");
8442                         goto ok;
8443                 }
8444 #endif
8445 #ifdef EWOULDBLOCK
8446                 if (errno == EWOULDBLOCK)
8447                         printf("EWOULDBLOCK\n");
8448 #endif
8449         ok:
8450                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8451                 sleep(2);                               /* Give it time to close our pipe */
8452                 alarm(5);
8453                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8454                 alarm(0);
8455                 sprintf(string, "%d\n", ret);
8456                 write(3, string, strlen(string));
8457                 exit(0);
8458         }
8459
8460         close(pd[0]);                   /* We write to pd[1] */
8461         close(pu[1]);                   /* We read from pu[0] */
8462         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8463         close(pd[1]);                   /* Pipe pd is now fully closed! */
8464         exit(0);                                /* Bye bye, thank you for playing! */
8465 }
8466 EOCP
8467         set try
8468         if eval $compile_ok; then
8469                 echo "$startsh" >mtry
8470                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8471                 chmod +x mtry
8472                 ./mtry >/dev/null 2>&1
8473                 case $? in
8474                 0) eagain=`$cat try.out`;;
8475                 1) echo "Could not perform non-blocking setting!";;
8476                 2) echo "I did a successful read() for something that was not there!";;
8477                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8478                 *) echo "Something terribly wrong happened during testing.";;
8479                 esac
8480                 rd_nodata=`$cat try.ret`
8481                 echo "A read() system call with no data present returns $rd_nodata."
8482                 case "$rd_nodata" in
8483                 0|-1) ;;
8484                 *)
8485                         echo "(That's peculiar, fixing that to be -1.)"
8486                         rd_nodata=-1
8487                         ;;
8488                 esac
8489                 case "$eagain" in
8490                 '')
8491                         echo "Forcing errno EAGAIN on read() with no data available."
8492                         eagain=EAGAIN
8493                         ;;
8494                 *)
8495                         echo "Your read() sets errno to $eagain when no data is available."
8496                         ;;
8497                 esac
8498                 status=`$cat try.err`
8499                 case "$status" in
8500                 0) echo "And it correctly returns 0 to signal EOF.";;
8501                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8502                 *) echo "However, your read() returns '$status' on EOF??";;
8503                 esac
8504                 val="$define"
8505                 if test "$status" = "$rd_nodata"; then
8506                         echo "WARNING: you can't distinguish between EOF and no data!"
8507                         val="$undef"
8508                 fi
8509         else
8510                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8511                 eagain=EAGAIN
8512         fi
8513         set d_eofnblk
8514         eval $setvar
8515         ;;
8516 *)
8517         echo "Using $hint value $eagain."
8518         echo "Your read() returns $rd_nodata when no data is present."
8519         case "$d_eofnblk" in
8520         "$define") echo "And you can see EOF because read() returns 0.";;
8521         "$undef") echo "But you can't see EOF status from read() returned value.";;
8522         *)
8523                 echo "(Assuming you can't see EOF status from read anyway.)"
8524                 d_eofnblk=$undef
8525                 ;;
8526         esac
8527         ;;
8528 esac
8529 $rm -f try try.* .out core head.c mtry
8530
8531 : see if fchmod exists
8532 set fchmod d_fchmod
8533 eval $inlibc
8534
8535 : see if fchown exists
8536 set fchown d_fchown
8537 eval $inlibc
8538
8539 : see if this is an fcntl system
8540 set fcntl d_fcntl
8541 eval $inlibc
8542
8543 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8544 while $test $# -ge 2; do
8545         case "$1" in
8546         $define) echo "#include <$2>";;
8547         esac ;
8548     shift 2;
8549 done > try.c;
8550 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8551 set try;
8552 if eval $compile; then
8553         val="$define";
8554 else
8555         val="$undef";
8556 fi;
8557 set $varname;
8558 eval $setvar;
8559 $rm -f try.c try.o'
8560
8561 socketlib=''
8562 sockethdr=''
8563 : see whether socket exists
8564 echo " "
8565 $echo $n "Hmm... $c" >&4
8566 if set socket val -f d_socket; eval $csym; $val; then
8567         echo "Looks like you have Berkeley networking support." >&4
8568         d_socket="$define"
8569         if set setsockopt val -f; eval $csym; $val; then
8570                 d_oldsock="$undef"
8571         else
8572                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8573                 d_oldsock="$define"
8574         fi
8575 else
8576         if $contains socklib libc.list >/dev/null 2>&1; then
8577                 echo "Looks like you have Berkeley networking support." >&4
8578                 d_socket="$define"
8579                 : we will have to assume that it supports the 4.2 BSD interface
8580                 d_oldsock="$undef"
8581         else
8582                 echo "You don't have Berkeley networking in libc$_a..." >&4
8583                 if test "X$d_socket" = "X$define"; then
8584                    echo "...but you seem to believe that you have sockets." >&4
8585                 else
8586                         for net in net socket
8587                         do
8588                                 if test -f /usr/lib/lib$net$_a; then
8589                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8590                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8591                                         if $contains socket libc.list >/dev/null 2>&1; then
8592                                                 d_socket="$define"
8593                                                 socketlib="-l$net"
8594                                                 case "$net" in
8595                                                 net)
8596                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8597                                                         sockethdr="-I/usr/netinclude"
8598                                                         ;;
8599                                                 esac
8600                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8601                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8602                                                         d_oldsock="$undef"
8603                                                 else
8604                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8605                                                         d_oldsock="$define"
8606                                                 fi
8607                                                 break
8608                                         fi
8609                                 fi
8610                         done
8611                         if test "X$d_socket" != "X$define"; then
8612                            echo "or anywhere else I see." >&4
8613                            d_socket="$undef"
8614                            d_oldsock="$undef"
8615                         fi
8616                 fi
8617         fi
8618 fi
8619
8620 : see if socketpair exists
8621 set socketpair d_sockpair
8622 eval $inlibc
8623
8624
8625 echo " "
8626 echo "Checking the availability of certain socket constants..." >& 4
8627 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8628         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8629         $cat >try.c <<EOF
8630 #include <sys/types.h>
8631 #include <sys/socket.h>
8632 int main() {
8633     int i = $ENUM;
8634 }
8635 EOF
8636         val="$undef"
8637         set try; if eval $compile; then
8638                 val="$define"
8639         fi
8640         set d_${enum}; eval $setvar
8641         $rm -f try.c try
8642 done
8643
8644 : see if sys/select.h has to be included
8645 set sys/select.h i_sysselct
8646 eval $inhdr
8647
8648 : see if we should include time.h, sys/time.h, or both
8649 echo " "
8650 if test "X$timeincl" = X; then
8651         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8652         $echo $n "I'm now running the test program...$c"
8653         $cat >try.c <<'EOCP'
8654 #include <sys/types.h>
8655 #ifdef I_TIME
8656 #include <time.h>
8657 #endif
8658 #ifdef I_SYSTIME
8659 #ifdef SYSTIMEKERNEL
8660 #define KERNEL
8661 #endif
8662 #include <sys/time.h>
8663 #endif
8664 #ifdef I_SYSSELECT
8665 #include <sys/select.h>
8666 #endif
8667 int main()
8668 {
8669         struct tm foo;
8670 #ifdef S_TIMEVAL
8671         struct timeval bar;
8672 #endif
8673 #ifdef S_TIMEZONE
8674         struct timezone tzp;
8675 #endif
8676         if (foo.tm_sec == foo.tm_sec)
8677                 exit(0);
8678 #ifdef S_TIMEVAL
8679         if (bar.tv_sec == bar.tv_sec)
8680                 exit(0);
8681 #endif
8682         exit(1);
8683 }
8684 EOCP
8685         flags=''
8686         for s_timezone in '-DS_TIMEZONE' ''; do
8687         sysselect=''
8688         for s_timeval in '-DS_TIMEVAL' ''; do
8689         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8690         for i_time in '' '-DI_TIME'; do
8691         for i_systime in '-DI_SYSTIME' ''; do
8692                 case "$flags" in
8693                 '') $echo $n ".$c"
8694                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8695                         if eval $compile; then
8696                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8697                                 shift
8698                                 flags="$*"
8699                                 echo " "
8700                                 $echo $n "Succeeded with $flags$c"
8701                         fi
8702                         ;;
8703                 esac
8704         done
8705         done
8706         done
8707         done
8708         done
8709         timeincl=''
8710         echo " "
8711         case "$flags" in
8712         *SYSTIMEKERNEL*) i_systimek="$define"
8713                 timeincl=`./findhdr sys/time.h`
8714                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8715         *) i_systimek="$undef";;
8716         esac
8717         case "$flags" in
8718         *I_TIME*) i_time="$define"
8719                 timeincl=`./findhdr time.h`" $timeincl"
8720                 echo "We'll include <time.h>." >&4;;
8721         *) i_time="$undef";;
8722         esac
8723         case "$flags" in
8724         *I_SYSTIME*) i_systime="$define"
8725                 timeincl=`./findhdr sys/time.h`" $timeincl"
8726                 echo "We'll include <sys/time.h>." >&4;;
8727         *) i_systime="$undef";;
8728         esac
8729         $rm -f try.c try
8730 fi
8731
8732 : check for fd_set items
8733 $cat <<EOM
8734
8735 Checking to see how well your C compiler handles fd_set and friends ...
8736 EOM
8737 $cat >fd_set.c <<EOCP
8738 #$i_systime I_SYS_TIME
8739 #$i_sysselct I_SYS_SELECT
8740 #$d_socket HAS_SOCKET
8741 #include <sys/types.h>
8742 #ifdef HAS_SOCKET
8743 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8744 #endif
8745 #ifdef I_SYS_TIME
8746 #include <sys/time.h>
8747 #endif
8748 #ifdef I_SYS_SELECT
8749 #include <sys/select.h>
8750 #endif
8751 int main() {
8752         fd_set fds;
8753
8754 #ifdef TRYBITS
8755         if(fds.fds_bits);
8756 #endif
8757
8758 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8759         exit(0);
8760 #else
8761         exit(1);
8762 #endif
8763 }
8764 EOCP
8765 set fd_set -DTRYBITS
8766 if eval $compile; then
8767         d_fds_bits="$define"
8768         d_fd_set="$define"
8769         echo "Well, your system knows about the normal fd_set typedef..." >&4
8770         if ./fd_set; then
8771                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8772                 d_fd_macros="$define"
8773         else
8774                 $cat >&4 <<'EOM'
8775 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8776 EOM
8777                 d_fd_macros="$undef"
8778         fi
8779 else
8780         $cat <<'EOM'
8781 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8782 EOM
8783         set fd_set
8784         if eval $compile; then
8785                 d_fds_bits="$undef"
8786                 d_fd_set="$define"
8787                 echo "Well, your system has some sort of fd_set available..." >&4
8788                 if ./fd_set; then
8789                         echo "and you have the normal fd_set macros." >&4
8790                         d_fd_macros="$define"
8791                 else
8792                         $cat <<'EOM'
8793 but not the normal fd_set macros!  Gross!  More work for me...
8794 EOM
8795                         d_fd_macros="$undef"
8796                 fi
8797         else
8798         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8799                 d_fd_set="$undef"
8800                 d_fds_bits="$undef"
8801                 d_fd_macros="$undef"
8802         fi
8803 fi
8804 $rm -f fd_set*
8805
8806 : see if fgetpos exists
8807 set fgetpos d_fgetpos
8808 eval $inlibc
8809
8810 : see if flock exists
8811 set flock d_flock
8812 eval $inlibc
8813
8814 : see if fork exists
8815 set fork d_fork
8816 eval $inlibc
8817
8818 : see if pathconf exists
8819 set pathconf d_pathconf
8820 eval $inlibc
8821
8822 : see if fpathconf exists
8823 set fpathconf d_fpathconf
8824 eval $inlibc
8825
8826
8827 : check for off64_t
8828 echo " "
8829 echo "Checking to see if your system supports off64_t..." >&4
8830 $cat >try.c <<EOCP
8831 #include <sys/types.h>
8832 #include <unistd.h>
8833 int main() { off64_t x = 7; }'
8834 EOCP
8835 set try
8836 if eval $compile; then
8837         val="$define"
8838         echo "Yes, it does."
8839 else
8840         val="$undef"
8841         echo "No, it doesn't."
8842         case "$lseeksize" in
8843         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8844         esac
8845 fi
8846 $rm -f try.* try
8847 set d_off64_t
8848 eval $setvar
8849
8850 : check for fpos64_t
8851 echo " "
8852 echo "Checking to see if your system supports fpos64_t..." >&4
8853 $cat >try.c <<EOCP
8854 #include <sys/stdio.h>
8855 int main() { fpos64_t x x = 7; }'
8856 EOCP
8857 set try
8858 if eval $compile; then
8859         val="$define"
8860         echo "Yes, it does."
8861 else
8862         val="$undef"
8863         echo "No, it doesn't."
8864         case "$fpossize" in
8865         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8866         esac
8867 fi
8868 $rm -f try.* try
8869 set d_fpos64_t
8870 eval $setvar
8871
8872 hasstruct='varname=$1; struct=$2; shift; shift;
8873 while $test $# -ge 2; do
8874         case "$1" in
8875         $define) echo "#include <$2>";;
8876         esac ;
8877     shift 2;
8878 done > try.c;
8879 echo "int main () { struct $struct foo; }" >> try.c;
8880 set try;
8881 if eval $compile; then
8882         val="$define";
8883 else
8884         val="$undef";
8885 fi;
8886 set $varname;
8887 eval $setvar;
8888 $rm -f try.c try.o'
8889
8890 : see if this is a sys/param system
8891 set sys/param.h i_sysparam
8892 eval $inhdr
8893
8894 : see if this is a sys/mount.h system
8895 set sys/mount.h i_sysmount
8896 eval $inhdr
8897
8898 : see if sys/types.h has to be included
8899 set sys/types.h i_systypes
8900 eval $inhdr
8901
8902
8903 echo " "
8904 echo "Checking to see if your system supports struct fs_data..." >&4
8905 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8906 eval $hasstruct
8907 case "$d_fs_data_s" in
8908 "$define")      echo "Yes, it does."   ;;
8909 *)              echo "No, it doesn't." ;;
8910 esac
8911
8912 : see if fseeko exists
8913 set fseeko d_fseeko
8914 eval $inlibc
8915 case "$longsize" in
8916 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8917 esac
8918
8919 : see if fsetpos exists
8920 set fsetpos d_fsetpos
8921 eval $inlibc
8922
8923
8924 : see if fstatfs exists
8925 set fstatfs d_fstatfs
8926 eval $inlibc
8927
8928
8929 : see if statvfs exists
8930 set statvfs d_statvfs
8931 eval $inlibc
8932
8933 : see if fstatvfs exists
8934 set fstatvfs d_fstatvfs
8935 eval $inlibc
8936
8937
8938 : see if ftello exists
8939 set ftello d_ftello
8940 eval $inlibc
8941 case "$longsize" in
8942 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8943 esac
8944
8945 : see if getcwd exists
8946 set getcwd d_getcwd
8947 eval $inlibc
8948
8949 : see if getgrent exists
8950 set getgrent d_getgrent
8951 eval $inlibc
8952
8953 : see if gethostbyaddr exists
8954 set gethostbyaddr d_gethbyaddr
8955 eval $inlibc
8956
8957 : see if gethostbyname exists
8958 set gethostbyname d_gethbyname
8959 eval $inlibc
8960
8961 : see if gethostent exists
8962 set gethostent d_gethent
8963 eval $inlibc
8964
8965 : see how we will look up host name
8966 echo " "
8967 call=''
8968 if set gethostname val -f d_gethname; eval $csym; $val; then
8969         echo 'gethostname() found.' >&4
8970         d_gethname="$define"
8971         call=gethostname
8972 fi
8973 if set uname val -f d_uname; eval $csym; $val; then
8974         if ./xenix; then
8975                 $cat <<'EOM'
8976 uname() was found, but you're running xenix, and older versions of xenix
8977 have a broken uname(). If you don't really know whether your xenix is old
8978 enough to have a broken system call, use the default answer.
8979
8980 EOM
8981                 dflt=y
8982                 case "$d_uname" in
8983                 "$define") dflt=n;;
8984                 esac
8985                 rp='Is your uname() broken?'
8986                 . ./myread
8987                 case "$ans" in
8988                 n*) d_uname="$define"; call=uname;;
8989                 esac
8990         else
8991                 echo 'uname() found.' >&4
8992                 d_uname="$define"
8993                 case "$call" in
8994                 '') call=uname ;;
8995                 esac
8996         fi
8997 fi
8998 case "$d_gethname" in
8999 '') d_gethname="$undef";;
9000 esac
9001 case "$d_uname" in
9002 '') d_uname="$undef";;
9003 esac
9004 case "$d_uname$d_gethname" in
9005 *define*)
9006         dflt=n
9007         cat <<EOM
9008  
9009 Every now and then someone has a $call() that lies about the hostname
9010 but can't be fixed for political or economic reasons.  If you wish, I can
9011 pretend $call() isn't there and maybe compute hostname at run-time
9012 thanks to the '$phostname' command.
9013
9014 EOM
9015         rp="Shall I ignore $call() from now on?"
9016         . ./myread
9017         case "$ans" in
9018         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9019         esac;;
9020 esac
9021 case "$phostname" in
9022 '') aphostname='';;
9023 *) case "$aphostname" in
9024         /*) ;;
9025         *) set X $phostname
9026                 shift
9027                 file=$1
9028                 shift
9029                 file=`./loc $file $file $pth`
9030                 aphostname=`echo $file $*`
9031                 ;;
9032         esac
9033         ;;
9034 esac
9035 case "$d_uname$d_gethname" in
9036 *define*) ;;
9037 *)
9038         case "$phostname" in
9039         '')
9040                 echo "There will be no way for $package to get your hostname." >&4;;
9041         *)
9042         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9043                 ;;
9044         esac;;
9045 esac
9046 case "$d_phostname" in
9047 '') d_phostname="$undef";;
9048 esac
9049
9050 : see if this is a netdb.h system
9051 set netdb.h i_netdb
9052 eval $inhdr
9053
9054 : see if prototypes for various gethostxxx netdb.h functions are available
9055 echo " "
9056 set d_gethostprotos gethostent $i_netdb netdb.h
9057 eval $hasproto
9058
9059 : see if getlogin exists
9060 set getlogin d_getlogin
9061 eval $inlibc
9062
9063 : see if getmnt exists
9064 set getmnt d_getmnt
9065 eval $inlibc
9066
9067 : see if getmntent exists
9068 set getmntent d_getmntent
9069 eval $inlibc
9070
9071 : see if getnetbyaddr exists
9072 set getnetbyaddr d_getnbyaddr
9073 eval $inlibc
9074
9075 : see if getnetbyname exists
9076 set getnetbyname d_getnbyname
9077 eval $inlibc
9078
9079 : see if getnetent exists
9080 set getnetent d_getnent
9081 eval $inlibc
9082
9083 : see if prototypes for various getnetxxx netdb.h functions are available
9084 echo " "
9085 set d_getnetprotos getnetent $i_netdb netdb.h
9086 eval $hasproto
9087
9088
9089 : see if getprotobyname exists
9090 set getprotobyname d_getpbyname
9091 eval $inlibc
9092
9093 : see if getprotobynumber exists
9094 set getprotobynumber d_getpbynumber
9095 eval $inlibc
9096
9097 : see if getprotoent exists
9098 set getprotoent d_getpent
9099 eval $inlibc
9100
9101 : see if getpgid exists
9102 set getpgid d_getpgid
9103 eval $inlibc
9104
9105 : see if getpgrp2 exists
9106 set getpgrp2 d_getpgrp2
9107 eval $inlibc
9108
9109 : see if getppid exists
9110 set getppid d_getppid
9111 eval $inlibc
9112
9113 : see if getpriority exists
9114 set getpriority d_getprior
9115 eval $inlibc
9116
9117 : see if prototypes for various getprotoxxx netdb.h functions are available
9118 echo " "
9119 set d_getprotoprotos getprotoent $i_netdb netdb.h
9120 eval $hasproto
9121
9122 : see if getpwent exists
9123 set getpwent d_getpwent
9124 eval $inlibc
9125
9126
9127 : see if getservbyname exists
9128 set getservbyname d_getsbyname
9129 eval $inlibc
9130
9131 : see if getservbyport exists
9132 set getservbyport d_getsbyport
9133 eval $inlibc
9134
9135 : see if getservent exists
9136 set getservent d_getsent
9137 eval $inlibc
9138
9139 : see if prototypes for various getservxxx netdb.h functions are available
9140 echo " "
9141 set d_getservprotos getservent $i_netdb netdb.h
9142 eval $hasproto
9143
9144 : see if getspent exists
9145 set getspent d_getspent
9146 eval $inlibc
9147
9148 : see if getspnam exists
9149 set getspnam d_getspnam
9150 eval $inlibc
9151
9152 : see if gettimeofday or ftime exists
9153 set gettimeofday d_gettimeod
9154 eval $inlibc
9155 case "$d_gettimeod" in
9156 "$undef")
9157         set ftime d_ftime 
9158         eval $inlibc
9159         ;;
9160 *)
9161         val="$undef"; set d_ftime; eval $setvar
9162         ;;
9163 esac
9164 case "$d_gettimeod$d_ftime" in
9165 "$undef$undef")
9166         echo " "
9167         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9168         ;;
9169 esac
9170
9171 : see if this is an grp system
9172 set grp.h i_grp
9173 eval $inhdr
9174
9175 case "$i_grp" in
9176 $define)
9177         xxx=`./findhdr grp.h`
9178         $cppstdin $cppflags $cppminus < $xxx >$$.h
9179
9180         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9181                 val="$define"
9182         else
9183                 val="$undef"
9184         fi
9185         set d_grpasswd
9186         eval $setvar
9187
9188         $rm -f $$.h
9189         ;;
9190 *)
9191         val="$undef";
9192         set d_grpasswd; eval $setvar
9193         ;;
9194 esac
9195
9196 : see if hasmntopt exists
9197 set hasmntopt d_hasmntopt
9198 eval $inlibc
9199
9200 : see if this is a netinet/in.h or sys/in.h system
9201 set netinet/in.h i_niin sys/in.h i_sysin
9202 eval $inhdr
9203
9204 : see if arpa/inet.h has to be included
9205 set arpa/inet.h i_arpainet
9206 eval $inhdr
9207
9208 : see if htonl --and friends-- exists
9209 val=''
9210 set htonl val
9211 eval $inlibc
9212
9213 : Maybe they are macros.
9214 case "$val" in
9215 $undef)
9216         $cat >htonl.c <<EOM
9217 #include <stdio.h>
9218 #include <sys/types.h>
9219 #$i_niin I_NETINET_IN
9220 #$i_sysin I_SYS_IN
9221 #$i_arpainet I_ARPA_INET
9222 #ifdef I_NETINET_IN
9223 #include <netinet/in.h>
9224 #endif
9225 #ifdef I_SYS_IN
9226 #include <sys/in.h>
9227 #endif
9228 #ifdef I_ARPA_INET
9229 #include <arpa/inet.h>
9230 #endif
9231 #ifdef htonl
9232 printf("Defined as a macro.");
9233 #endif
9234 EOM
9235         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9236         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9237                 val="$define"
9238                 echo "But it seems to be defined as a macro." >&4
9239         fi
9240         $rm -f htonl.?
9241         ;;
9242 esac
9243 set d_htonl
9244 eval $setvar
9245
9246 : see if iconv exists
9247 set iconv d_iconv
9248 eval $inlibc
9249
9250 : index or strchr
9251 echo " "
9252 if set index val -f; eval $csym; $val; then
9253         if set strchr val -f d_strchr; eval $csym; $val; then
9254                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9255                         val="$define"
9256                         vali="$undef"
9257                         echo "strchr() found." >&4
9258                 else
9259                         val="$undef"
9260                         vali="$define"
9261                         echo "index() found." >&4
9262                 fi
9263         else
9264                 val="$undef"
9265                 vali="$define"
9266                 echo "index() found." >&4
9267         fi
9268 else
9269         if set strchr val -f d_strchr; eval $csym; $val; then
9270                 val="$define"
9271                 vali="$undef"
9272                 echo "strchr() found." >&4
9273         else
9274                 echo "No index() or strchr() found!" >&4
9275                 val="$undef"
9276                 vali="$undef"
9277         fi
9278 fi
9279 set d_strchr; eval $setvar
9280 val="$vali"
9281 set d_index; eval $setvar
9282
9283 : check whether inet_aton exists
9284 set inet_aton d_inetaton
9285 eval $inlibc
9286
9287 : see if inttypes.h is available
9288 : we want a real compile instead of Inhdr because some systems
9289 : have an inttypes.h which includes non-existent headers
9290 echo " "
9291 $cat >try.c <<EOCP
9292 #include <inttypes.h>
9293 int main() {
9294         static int32_t foo32 = 0x12345678;
9295 }
9296 EOCP
9297 set try
9298 if eval $compile; then
9299         echo "<inttypes.h> found." >&4
9300         val="$define"
9301 else
9302         echo "<inttypes.h> NOT found." >&4
9303         val="$undef"
9304 fi
9305 $rm -f try.c try
9306 set i_inttypes
9307 eval $setvar
9308
9309 : check for int64_t
9310 echo " "
9311 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9312 $cat >try.c <<EOCP
9313 #include <sys/types.h>
9314 #$i_inttypes I_INTTYPES
9315 #ifdef I_INTTYPES
9316 #include <inttypes.h>
9317 #endif
9318 int main() { int64_t x = 7; }
9319 EOCP
9320 set try
9321 if eval $compile; then
9322         val="$define"
9323         echo " Yes, it does." >&4
9324 else
9325         val="$undef"
9326         echo " No, it doesn't." >&4
9327 fi
9328 $rm -f try try.*
9329 set d_int64t
9330 eval $setvar
9331
9332 : Look for isascii
9333 echo " "
9334 $cat >isascii.c <<'EOCP'
9335 #include <stdio.h>
9336 #include <ctype.h>
9337 int main() {
9338         int c = 'A';
9339         if (isascii(c))
9340                 exit(0);
9341         else
9342                 exit(1);
9343 }
9344 EOCP
9345 set isascii
9346 if eval $compile; then
9347         echo "isascii() found." >&4
9348         val="$define"
9349 else
9350         echo "isascii() NOT found." >&4
9351         val="$undef"
9352 fi
9353 set d_isascii
9354 eval $setvar
9355 $rm -f isascii*
9356
9357 : see if killpg exists
9358 set killpg d_killpg
9359 eval $inlibc
9360
9361 : see if lchown exists
9362 echo " "
9363 $cat > try.c <<'EOCP'
9364 /* System header to define __stub macros and hopefully few prototypes,
9365     which can conflict with char lchown(); below.  */
9366 #include <assert.h>
9367 /* Override any gcc2 internal prototype to avoid an error.  */
9368 /* We use char because int might match the return type of a gcc2
9369    builtin and then its argument prototype would still apply.  */
9370 char lchown();
9371 int main() {
9372     /*  The GNU C library defines this for functions which it implements
9373         to always fail with ENOSYS.  Some functions are actually named
9374         something starting with __ and the normal name is an alias.  */
9375 #if defined (__stub_lchown) || defined (__stub___lchown)
9376 choke me
9377 #else
9378 lchown();
9379 #endif
9380 ; return 0; }
9381 EOCP
9382 set try
9383 if eval $compile; then
9384     $echo "lchown() found." >&4
9385     val="$define"
9386 else
9387     $echo "lchown() NOT found." >&4
9388     val="$undef"
9389 fi
9390 set d_lchown
9391 eval $setvar
9392
9393 : See if number of significant digits in a double precision number is known
9394 echo " "
9395 $cat >ldbl_dig.c <<EOM
9396 #$i_limits I_LIMITS
9397 #$i_float I_FLOAT
9398 #ifdef I_LIMITS
9399 #include <limits.h>
9400 #endif
9401 #ifdef I_FLOAT
9402 #include <float.h>
9403 #endif
9404 #ifdef LDBL_DIG
9405 printf("Contains LDBL_DIG");
9406 #endif
9407 EOM
9408 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9409 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9410         echo "LDBL_DIG found." >&4
9411         val="$define"
9412 else
9413         echo "LDBL_DIG NOT found." >&4
9414         val="$undef"
9415 fi
9416 $rm -f ldbl_dig.?
9417 set d_ldbl_dig
9418 eval $setvar
9419
9420 : see if link exists
9421 set link d_link
9422 eval $inlibc
9423
9424 : see if localeconv exists
9425 set localeconv d_locconv
9426 eval $inlibc
9427
9428 : see if lockf exists
9429 set lockf d_lockf
9430 eval $inlibc
9431
9432 : check for long long
9433 echo " "
9434 $echo $n "Checking to see if your system supports long long..." $c >&4
9435 echo 'int main() { long long x = 7; return 0; }' > try.c
9436 set try
9437 if eval $compile; then
9438         val="$define"
9439         echo " Yes, it does." >&4
9440 else
9441         val="$undef"
9442         echo " No, it doesn't." >&4
9443 fi
9444 $rm try.*
9445 set d_longlong
9446 eval $setvar
9447
9448 : check for length of long long
9449 case "${d_longlong}${longlongsize}" in
9450 $define)
9451         echo " "
9452         $echo $n "Checking to see how big your long longs are..." $c >&4
9453         $cat >try.c <<'EOCP'
9454 #include <stdio.h>
9455 int main()
9456 {
9457     printf("%d\n", (int)sizeof(long long));
9458     return(0);
9459 }
9460 EOCP
9461         set try
9462         if eval $compile_ok; then
9463                 longlongsize=`./try$exe_ext`
9464                 $echo " $longlongsize bytes." >&4
9465         else
9466                 dflt='8'
9467                 echo " "
9468                 echo "(I can't seem to compile the test program.  Guessing...)"
9469                 rp="What is the size of a long long (in bytes)?"
9470                 . ./myread
9471                 longlongsize="$ans"
9472         fi
9473         if $test "X$longsize" = "X$longlongsize"; then
9474                 echo "(That isn't any different from an ordinary long.)"
9475         fi      
9476         ;;
9477 esac
9478 $rm -f try.* try
9479
9480 : see if lstat exists
9481 set lstat d_lstat
9482 eval $inlibc
9483
9484 : see if mblen exists
9485 set mblen d_mblen
9486 eval $inlibc
9487
9488 : see if mbstowcs exists
9489 set mbstowcs d_mbstowcs
9490 eval $inlibc
9491
9492 : see if mbtowc exists
9493 set mbtowc d_mbtowc
9494 eval $inlibc
9495
9496 : see if memchr exists
9497 set memchr d_memchr
9498 eval $inlibc
9499
9500 : see if memcmp exists
9501 set memcmp d_memcmp
9502 eval $inlibc
9503
9504 : see if memcpy exists
9505 set memcpy d_memcpy
9506 eval $inlibc
9507
9508 : see if memmove exists
9509 set memmove d_memmove
9510 eval $inlibc
9511
9512 : see if memset exists
9513 set memset d_memset
9514 eval $inlibc
9515
9516 : see if mkdir exists
9517 set mkdir d_mkdir
9518 eval $inlibc
9519
9520 : see if mkdtemp exists
9521 set mkdtemp d_mkdtemp
9522 eval $inlibc
9523
9524 : see if mkfifo exists
9525 set mkfifo d_mkfifo
9526 eval $inlibc
9527
9528 : see if mkstemp exists
9529 set mkstemp d_mkstemp
9530 eval $inlibc
9531
9532 : see if mkstemps exists
9533 set mkstemps d_mkstemps
9534 eval $inlibc
9535
9536 : see if mktime exists
9537 set mktime d_mktime
9538 eval $inlibc
9539
9540 : see if mprotect exists
9541 set mprotect d_mprotect
9542 eval $inlibc
9543
9544 : see if msgctl exists
9545 set msgctl d_msgctl
9546 eval $inlibc
9547
9548 : see if msgget exists
9549 set msgget d_msgget
9550 eval $inlibc
9551
9552 : see if msgsnd exists
9553 set msgsnd d_msgsnd
9554 eval $inlibc
9555
9556 : see if msgrcv exists
9557 set msgrcv d_msgrcv
9558 eval $inlibc
9559
9560 : see how much of the 'msg*(2)' library is present.
9561 h_msg=true
9562 echo " "
9563 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9564 *"$undef"*) h_msg=false;;
9565 esac
9566 case "$osname" in
9567 freebsd)
9568     case "`ipcs 2>&1`" in
9569     "SVID messages"*"not configured"*)
9570         echo "Your $osname does not have the msg*(2) configured." >&4
9571         h_msg=false
9572         val="$undef"
9573         set msgctl d_msgctl
9574         eval $setvar
9575         set msgget d_msgget
9576         eval $setvar
9577         set msgsnd d_msgsnd
9578         eval $setvar
9579         set msgrcv d_msgrcv
9580         eval $setvar
9581         ;;
9582     esac
9583     ;;
9584 esac
9585 : we could also check for sys/ipc.h ...
9586 if $h_msg && $test `./findhdr sys/msg.h`; then
9587         echo "You have the full msg*(2) library." >&4
9588         val="$define"
9589 else
9590         echo "You don't have the full msg*(2) library." >&4
9591         val="$undef"
9592 fi
9593 set d_msg
9594 eval $setvar
9595
9596 : see if msync exists
9597 set msync d_msync
9598 eval $inlibc
9599
9600 : see if munmap exists
9601 set munmap d_munmap
9602 eval $inlibc
9603
9604 : see if nice exists
9605 set nice d_nice
9606 eval $inlibc
9607
9608
9609 echo " "
9610 echo "Checking which 64-bit integer type we could use..." >&4
9611
9612 case "$intsize" in
9613 8) val=int
9614    set quadtype
9615    eval $setvar
9616    val='"unsigned int"'
9617    set uquadtype
9618    eval $setvar
9619    quadkind=1
9620    ;;
9621 *) case "$longsize" in
9622    8) val=long
9623       set quadtype
9624       eval $setvar
9625       val='"unsigned long"'
9626       set uquadtype
9627       eval $setvar
9628       quadkind=2
9629       ;;
9630    *) case "$d_longlong:$longlongsize" in
9631       define:8)
9632         val='"long long"'
9633         set quadtype
9634         eval $setvar
9635         val='"unsigned long long"'
9636         set uquadtype
9637         eval $setvar
9638         quadkind=3
9639         ;;
9640       *) case "$d_int64t" in
9641          define)
9642            val=int64_t
9643            set quadtype
9644            eval $setvar
9645            val=uint64_t
9646            set uquadtype
9647            eval $setvar
9648            quadkind=4
9649            ;;
9650          esac
9651          ;;
9652       esac
9653       ;;
9654    esac
9655    ;;
9656 esac
9657
9658 case "$quadtype" in
9659 '')     case "$uselonglong:$d_longlong:$longlongsize" in
9660         undef:define:8)
9661            echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9662         *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9663         esac
9664         d_quad="$undef"
9665         ;;
9666 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9667             verb="will"
9668         else
9669             verb="could"
9670         fi
9671         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9672         d_quad="$define"
9673         ;;
9674 esac
9675
9676 : check for length of character
9677 echo " "
9678 case "$charsize" in
9679 '')
9680         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9681         $cat >try.c <<'EOCP'
9682 #include <stdio.h>
9683 int main()
9684 {
9685     printf("%d\n", (int)sizeof(char));
9686     exit(0);
9687 }
9688 EOCP
9689         set try
9690         if eval $compile_ok; then
9691                 dflt=`./try`
9692         else
9693                 dflt='1'
9694                 echo "(I can't seem to compile the test program.  Guessing...)"
9695         fi
9696         ;;
9697 *)
9698         dflt="$charsize"
9699         ;;
9700 esac
9701 rp="What is the size of a character (in bytes)?"
9702 . ./myread
9703 charsize="$ans"
9704 $rm -f try.c try
9705
9706
9707 echo " "
9708 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9709
9710 case "$use64bits:$d_quad:$quadtype" in
9711 define:define:?*)
9712         ivtype="$quadtype"
9713         uvtype="$uquadtype"
9714         ivsize=8
9715         uvsize=8
9716         ;;
9717 *)      ivtype="long"
9718         uvtype="unsigned long"
9719         ivsize=$longsize
9720         uvsize=$longsize
9721         ;;
9722 esac
9723
9724 case "$uselongdouble:$d_longdbl" in
9725 define:define)
9726         nvtype="long double"
9727         nvsize=$longdblsize
9728         ;;
9729 *)      nvtype=double
9730         nvsize=$doublesize
9731         ;;
9732 esac
9733
9734 $echo "(IV will be "$ivtype", $ivsize bytes)"
9735 $echo "(UV will be "$uvtype", $uvsize bytes)"
9736 $echo "(NV will be "$nvtype", $nvsize bytes)"
9737
9738 $cat >try.c <<EOCP
9739 #$i_inttypes I_INTTYPES
9740 #ifdef I_INTTYPES
9741 #include <inttypes.h>
9742 #endif
9743 #include <stdio.h>
9744 int main() {
9745 #ifdef INT8
9746    int8_t i =  INT8_MAX;
9747   uint8_t u = UINT8_MAX;
9748   printf("int8_t\n");
9749 #endif
9750 #ifdef INT16
9751    int16_t i =  INT16_MAX;
9752   uint16_t i = UINT16_MAX;
9753   printf("int16_t\n");
9754 #endif
9755 #ifdef INT32
9756    int32_t i =  INT32_MAX;
9757   uint32_t u = UINT32_MAX;
9758   printf("int32_t\n");
9759 #endif
9760 }
9761 EOCP
9762
9763 case "$i8type" in
9764 '')     case "$charsize" in
9765         1)      i8type=char
9766                 u8type="unsigned char"
9767                 i8size=$charsize
9768                 u8size=$charsize
9769                 ;;
9770         esac
9771         ;;
9772 esac
9773 case "$i8type" in
9774 '')     set try -DINT8
9775         if eval $compile; then
9776                 case "`./try$exe_ext`" in
9777                 int8_t) i8type=int8_t
9778                         u8type=uint8_t
9779                         i8size=1
9780                         u8size=1
9781                         ;;
9782                 esac
9783         fi
9784         ;;
9785 esac
9786 case "$i8type" in
9787 '')     if $test $charsize -ge 1; then
9788                 i8type=char
9789                 u8type="unsigned char"
9790                 i8size=$charsize
9791                 u8size=$charsize
9792         fi
9793         ;;
9794 esac
9795
9796 case "$i16type" in
9797 '')     case "$shortsize" in
9798         2)      i16type=short
9799                 u16type="unsigned short"
9800                 i16size=$shortsize
9801                 u16size=$shortsize
9802                 ;;
9803         esac
9804         ;;
9805 esac
9806 case "$i16type" in
9807 '')     set try -DINT16
9808         if eval $compile; then
9809                 case "`./try$exe_ext`" in
9810                 int16_t)
9811                         i16type=int16_t
9812                         u16type=uint16_t
9813                         i16size=2
9814                         u16size=2
9815                         ;;
9816                 esac
9817         fi
9818         ;;
9819 esac
9820 case "$i16type" in
9821 '')     if $test $shortsize -ge 2; then
9822                 i16type=short
9823                 u16type="unsigned short"
9824                 i16size=$shortsize
9825                 u16size=$shortsize
9826         fi
9827         ;;
9828 esac
9829
9830 case "$i32type" in
9831 '')     case "$longsize" in
9832         4)      i32type=long
9833                 u32type="unsigned long"
9834                 i32size=$longsize
9835                 u32size=$longsize
9836                 ;;
9837         *)      case "$intsize" in
9838                 4)      i32type=int
9839                         u32type="unsigned int"
9840                         i32size=$intsize
9841                         u32size=$intsize
9842                         ;;
9843                 esac
9844                 ;;
9845         esac
9846         ;;
9847 esac
9848 case "$i32type" in
9849 '')     set try -DINT32
9850         if eval $compile; then
9851                 case "`./try$exe_ext`" in
9852                 int32_t)
9853                         i32type=int32_t
9854                         u32type=uint32_t
9855                         i32size=4
9856                         u32size=4
9857                         ;;
9858                 esac
9859         fi
9860         ;;
9861 esac
9862 case "$i32type" in
9863 '')     if $test $intsize -ge 4; then
9864                 i32type=int
9865                 u32type="unsigned int"
9866                 i32size=$intsize
9867                 u32size=$intsize
9868         fi
9869         ;;
9870 esac
9871
9872 case "$i64type" in
9873 '')     case "$d_quad:$quadtype" in
9874         define:?*)
9875                 i64type="$quadtype"
9876                 u64type="$uquadtype"
9877                 i64size=8
9878                 u64size=8
9879                 ;;
9880         esac
9881         ;;
9882 esac
9883
9884 $echo "Checking whether your NVs can preserve your UVs..." >&4
9885 $cat <<EOP >try.c
9886 #include <stdio.h>
9887 int main() {
9888     $uvtype k = ($uvtype)~0, l;
9889     $nvtype d;
9890     l = k;
9891     d = ($nvtype)l;
9892     l = ($uvtype)d;
9893     if (l == k)
9894        printf("preserve\n");
9895     exit(0);
9896 }
9897 EOP
9898 set try
9899 if eval $compile; then
9900         case "`./try$exe_ext`" in
9901         preserve) d_nv_preserves_uv="$define" ;;
9902         esac
9903 fi      
9904 case "$d_nv_preserves_uv" in
9905 $define) $echo "Yes, they can."  2>&1 ;;
9906 *)       $echo "No, they can't." 2>&1
9907          d_nv_preserves_uv="$undef"
9908          ;;
9909 esac
9910
9911 $rm -f try.* try
9912
9913 : see if POSIX threads are available
9914 set pthread.h i_pthread
9915 eval $inhdr
9916
9917
9918
9919
9920 : how to create joinable pthreads
9921 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9922         echo " "
9923         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9924         $cat >try.c <<'EOCP'
9925 #include <pthread.h>
9926 int main() {
9927     int detachstate = JOINABLE;
9928 }
9929 EOCP
9930         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9931         if eval $compile; then
9932                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9933                 val="$undef" # Yes, undef.
9934                 set d_old_pthread_create_joinable
9935                 eval $setvar
9936                 val=""
9937                 set old_pthread_create_joinable
9938                 eval $setvar
9939         else
9940                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9941                 if eval $compile; then
9942                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9943                         val="$define"
9944                         set d_old_pthread_create_joinable
9945                         eval $setvar
9946                         val=PTHREAD_CREATE_UNDETACHED
9947                         set old_pthread_create_joinable
9948                         eval $setvar
9949                 else            
9950                         set try -DJOINABLE=__UNDETACHED
9951                         if eval $compile; then
9952                                 echo "You seem to use __UNDETACHED." >&4
9953                                 val="$define"
9954                                 set d_old_pthread_create_joinable
9955                                 eval $setvar
9956                                 val=__UNDETACHED
9957                                 set old_pthread_create_joinable
9958                                 eval $setvar
9959                         else
9960                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9961                                 val="$define"
9962                                 set d_old_pthread_create_joinable
9963                                 eval $setvar
9964                                 val=0
9965                                 set old_pthread_create_joinable
9966                                 eval $setvar
9967                         fi
9968                 fi
9969         fi
9970         $rm -f try try.*
9971 else
9972     d_old_pthread_create_joinable="$undef"
9973     old_pthread_create_joinable=""
9974 fi
9975
9976 : see if pause exists
9977 set pause d_pause
9978 eval $inlibc
9979
9980 : see if pipe exists
9981 set pipe d_pipe
9982 eval $inlibc
9983
9984 : see if poll exists
9985 set poll d_poll
9986 eval $inlibc
9987
9988
9989 : see whether the various POSIXish _yields exist
9990 $cat >try.c <<EOP
9991 #include <pthread.h>
9992 #include <stdio.h>
9993 int main() {
9994 #ifdef SCHED_YIELD
9995         sched_yield();
9996 #else
9997 #ifdef PTHREAD_YIELD
9998         pthread_yield();
9999 #else
10000 #ifdef PTHREAD_YIELD_NULL
10001         pthread_yield(NULL);
10002 #endif
10003 #endif
10004 #endif
10005 }
10006 EOP
10007 : see if sched_yield exists
10008 set try -DSCHED_YIELD
10009 if eval $compile; then
10010     val="$define"
10011     sched_yield='sched_yield()'
10012 else
10013     val="$undef"
10014 fi
10015 case "$usethreads" in
10016 $define)
10017         case "$val" in
10018         $define) echo 'sched_yield() found.' >&4        ;;
10019         *)       echo 'sched_yield() NOT found.' >&4    ;;
10020         esac
10021 esac
10022 set d_sched_yield
10023 eval $setvar
10024
10025 : see if pthread_yield exists
10026 set try -DPTHREAD_YIELD
10027 if eval $compile; then
10028     val="$define"
10029     case "$sched_yield" in
10030     '') sched_yield='pthread_yield()' ;;
10031     esac
10032 else
10033     set try -DPTHREAD_YIELD_NULL
10034     if eval $compile; then
10035         val="$define"
10036         case "$sched_yield" in
10037         '') sched_yield='pthread_yield(NULL)' ;;
10038         esac
10039     else
10040         val="$undef"
10041     fi
10042 fi
10043 case "$usethreads" in
10044 $define)
10045         case "$val" in
10046         $define) echo 'pthread_yield() found.' >&4      ;;
10047         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10048         esac
10049         ;;
10050 esac
10051 set d_pthread_yield
10052 eval $setvar
10053
10054 case "$sched_yield" in
10055 '') sched_yield=undef ;;
10056 esac
10057
10058 $rm -f try try.*
10059
10060 : see if this is a pwd.h system
10061 set pwd.h i_pwd
10062 eval $inhdr
10063
10064 case "$i_pwd" in
10065 $define)
10066         xxx=`./findhdr pwd.h`
10067         $cppstdin $cppflags $cppminus < $xxx >$$.h
10068
10069         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10070                 val="$define"
10071         else
10072                 val="$undef"
10073         fi
10074         set d_pwquota
10075         eval $setvar
10076
10077         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10078                 val="$define"
10079         else
10080                 val="$undef"
10081         fi
10082         set d_pwage
10083         eval $setvar
10084
10085         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10086                 val="$define"
10087         else
10088                 val="$undef"
10089         fi
10090         set d_pwchange
10091         eval $setvar
10092
10093         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10094                 val="$define"
10095         else
10096                 val="$undef"
10097         fi
10098         set d_pwclass
10099         eval $setvar
10100
10101         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10102                 val="$define"
10103         else
10104                 val="$undef"
10105         fi
10106         set d_pwexpire
10107         eval $setvar
10108
10109         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10110                 val="$define"
10111         else
10112                 val="$undef"
10113         fi
10114         set d_pwcomment
10115         eval $setvar
10116
10117         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10118                 val="$define"
10119         else
10120                 val="$undef"
10121         fi
10122         set d_pwgecos
10123         eval $setvar
10124
10125         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10126                 val="$define"
10127         else
10128                 val="$undef"
10129         fi
10130         set d_pwpasswd
10131         eval $setvar
10132
10133         $rm -f $$.h
10134         ;;
10135 *)
10136         val="$undef"; 
10137         set d_pwquota; eval $setvar
10138         set d_pwage; eval $setvar
10139         set d_pwchange; eval $setvar
10140         set d_pwclass; eval $setvar
10141         set d_pwexpire; eval $setvar
10142         set d_pwcomment; eval $setvar
10143         set d_pwgecos; eval $setvar
10144         set d_pwpasswd; eval $setvar
10145         ;;
10146 esac
10147
10148 : see if readdir and friends exist
10149 set readdir d_readdir
10150 eval $inlibc
10151 set seekdir d_seekdir
10152 eval $inlibc
10153 set telldir d_telldir
10154 eval $inlibc
10155 set rewinddir d_rewinddir
10156 eval $inlibc
10157
10158 : see if readlink exists
10159 set readlink d_readlink
10160 eval $inlibc
10161
10162 : see if rename exists
10163 set rename d_rename
10164 eval $inlibc
10165
10166 : see if rmdir exists
10167 set rmdir d_rmdir
10168 eval $inlibc
10169
10170 : see if memory.h is available.
10171 val=''
10172 set memory.h val
10173 eval $inhdr
10174
10175 : See if it conflicts with string.h
10176 case "$val" in
10177 $define)
10178         case "$strings" in
10179         '') ;;
10180         *)
10181                 $cppstdin $cppflags $cppminus < $strings > mem.h
10182                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10183                         echo " "
10184                         echo "We won't be including <memory.h>."
10185                         val="$undef"
10186                 fi
10187                 $rm -f mem.h
10188                 ;;
10189         esac
10190 esac
10191 set i_memory
10192 eval $setvar
10193
10194 : can bcopy handle overlapping blocks?
10195 val="$undef"
10196 case "$d_bcopy" in
10197 "$define")
10198         echo " "
10199         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10200         $cat >try.c <<EOCP
10201 #$i_memory I_MEMORY
10202 #$i_stdlib I_STDLIB
10203 #$i_string I_STRING
10204 #$i_unistd I_UNISTD
10205 EOCP
10206         $cat >>try.c <<'EOCP'
10207 #include <stdio.h>
10208 #ifdef I_MEMORY
10209 #  include <memory.h>
10210 #endif
10211 #ifdef I_STDLIB
10212 #  include <stdlib.h>
10213 #endif
10214 #ifdef I_STRING
10215 #  include <string.h>
10216 #else
10217 #  include <strings.h>
10218 #endif
10219 #ifdef I_UNISTD
10220 #  include <unistd.h>  /* Needed for NetBSD */
10221 #endif
10222 int main()
10223 {
10224 char buf[128], abc[128];
10225 char *b;
10226 int len;
10227 int off;
10228 int align;
10229
10230 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10231
10232 for (align = 7; align >= 0; align--) {
10233         for (len = 36; len; len--) {
10234                 b = buf+align;
10235                 bcopy(abc, b, len);
10236                 for (off = 1; off <= len; off++) {
10237                         bcopy(b, b+off, len);
10238                         bcopy(b+off, b, len);
10239                         if (bcmp(b, abc, len))
10240                                 exit(1);
10241                 }
10242         }
10243 }
10244 exit(0);
10245 }
10246 EOCP
10247         set try
10248         if eval $compile_ok; then
10249                 if ./try 2>/dev/null; then
10250                         echo "Yes, it can."
10251                         val="$define"
10252                 else
10253                         echo "It can't, sorry."
10254                         case "$d_memmove" in
10255                         "$define") echo "But that's Ok since you have memmove()." ;;
10256                         esac
10257                 fi
10258         else
10259                 echo "(I can't compile the test program, so we'll assume not...)"
10260                 case "$d_memmove" in
10261                 "$define") echo "But that's Ok since you have memmove()." ;;
10262                 esac
10263         fi
10264         ;;
10265 esac
10266 $rm -f try.* try core
10267 set d_safebcpy
10268 eval $setvar
10269
10270 : can memcpy handle overlapping blocks?
10271 val="$undef"
10272 case "$d_memcpy" in
10273 "$define")
10274         echo " "
10275         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10276         $cat >try.c <<EOCP
10277 #$i_memory I_MEMORY
10278 #$i_stdlib I_STDLIB
10279 #$i_string I_STRING
10280 #$i_unistd I_UNISTD
10281 EOCP
10282         $cat >>try.c <<'EOCP'
10283 #include <stdio.h>
10284 #ifdef I_MEMORY
10285 #  include <memory.h>
10286 #endif
10287 #ifdef I_STDLIB
10288 #  include <stdlib.h>
10289 #endif
10290 #ifdef I_STRING
10291 #  include <string.h>
10292 #else
10293 #  include <strings.h>
10294 #endif
10295 #ifdef I_UNISTD
10296 #  include <unistd.h>  /* Needed for NetBSD */
10297 #endif
10298 int main()
10299 {
10300 char buf[128], abc[128];
10301 char *b;
10302 int len;
10303 int off;
10304 int align;
10305
10306 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10307    try to store the string in read-only memory. */
10308 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10309
10310 for (align = 7; align >= 0; align--) {
10311         for (len = 36; len; len--) {
10312                 b = buf+align;
10313                 memcpy(b, abc, len);
10314                 for (off = 1; off <= len; off++) {
10315                         memcpy(b+off, b, len);
10316                         memcpy(b, b+off, len);
10317                         if (memcmp(b, abc, len))
10318                                 exit(1);
10319                 }
10320         }
10321 }
10322 exit(0);
10323 }
10324 EOCP
10325         set try
10326         if eval $compile_ok; then
10327                 if ./try 2>/dev/null; then
10328                         echo "Yes, it can."
10329                         val="$define"
10330                 else
10331                         echo "It can't, sorry."
10332                         case "$d_memmove" in
10333                         "$define") echo "But that's Ok since you have memmove()." ;;
10334                         esac
10335                 fi
10336         else
10337                 echo "(I can't compile the test program, so we'll assume not...)"
10338                 case "$d_memmove" in
10339                 "$define") echo "But that's Ok since you have memmove()." ;;
10340                 esac
10341         fi
10342         ;;
10343 esac
10344 $rm -f try.* try core
10345 set d_safemcpy
10346 eval $setvar
10347
10348 : can memcmp be trusted to compare relative magnitude?
10349 val="$undef"
10350 case "$d_memcmp" in
10351 "$define")
10352         echo " "
10353         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10354         $cat >try.c <<EOCP
10355 #$i_memory I_MEMORY
10356 #$i_stdlib I_STDLIB
10357 #$i_string I_STRING
10358 #$i_unistd I_UNISTD
10359 EOCP
10360         $cat >>try.c <<'EOCP'
10361 #include <stdio.h>
10362 #ifdef I_MEMORY
10363 #  include <memory.h>
10364 #endif
10365 #ifdef I_STDLIB
10366 #  include <stdlib.h>
10367 #endif
10368 #ifdef I_STRING
10369 #  include <string.h>
10370 #else
10371 #  include <strings.h>
10372 #endif
10373 #ifdef I_UNISTD
10374 #  include <unistd.h>  /* Needed for NetBSD */
10375 #endif
10376 int main()
10377 {
10378 char a = -1;
10379 char b = 0;
10380 if ((a < b) && memcmp(&a, &b, 1) < 0)
10381         exit(1);
10382 exit(0);
10383 }
10384 EOCP
10385         set try
10386         if eval $compile_ok; then
10387                 if ./try 2>/dev/null; then
10388                         echo "Yes, it can."
10389                         val="$define"
10390                 else
10391                         echo "No, it can't (it uses signed chars)."
10392                 fi
10393         else
10394                 echo "(I can't compile the test program, so we'll assume not...)"
10395         fi
10396         ;;
10397 esac
10398 $rm -f try.* try core
10399 set d_sanemcmp
10400 eval $setvar
10401
10402 : see if select exists
10403 set select d_select
10404 eval $inlibc
10405
10406 : see if semctl exists
10407 set semctl d_semctl
10408 eval $inlibc
10409
10410 : see if semget exists
10411 set semget d_semget
10412 eval $inlibc
10413
10414 : see if semop exists
10415 set semop d_semop
10416 eval $inlibc
10417
10418 : see how much of the 'sem*(2)' library is present.
10419 h_sem=true
10420 echo " "
10421 case "$d_semctl$d_semget$d_semop" in
10422 *"$undef"*) h_sem=false;;
10423 esac
10424 case "$osname" in
10425 freebsd)
10426     case "`ipcs 2>&1`" in
10427     "SVID messages"*"not configured"*)
10428         echo "Your $osname does not have the sem*(2) configured." >&4
10429         h_sem=false
10430         val="$undef"
10431         set semctl d_semctl
10432         eval $setvar
10433         set semget d_semget
10434         eval $setvar
10435         set semop d_semop
10436         eval $setvar
10437         ;;
10438     esac
10439     ;;
10440 esac
10441 : we could also check for sys/ipc.h ...
10442 if $h_sem && $test `./findhdr sys/sem.h`; then
10443         echo "You have the full sem*(2) library." >&4
10444         val="$define"
10445 else
10446         echo "You don't have the full sem*(2) library." >&4
10447         val="$undef"
10448 fi
10449 set d_sem
10450 eval $setvar
10451
10452 : see whether sys/sem.h defines union semun
10453 echo " "
10454 $cat > try.c <<'END'
10455 #include <sys/types.h>
10456 #include <sys/ipc.h>
10457 #include <sys/sem.h>
10458 int main () { union semun semun; semun.buf = 0; }
10459 END
10460 set try
10461 if eval $compile; then
10462     echo "You have union semun in <sys/sem.h>." >&4
10463     val="$define"
10464 else
10465     echo "You do not have union semun in <sys/sem.h>." >&4
10466     val="$undef"
10467 fi
10468 $rm -f try try.c try.h
10469 set d_union_semun
10470 eval $setvar
10471
10472 : see how to do semctl IPC_STAT
10473 case "$d_sem" in
10474 $define)
10475     : see whether semctl IPC_STAT can use union semun
10476     echo " "
10477     $cat > try.h <<END
10478 #ifndef S_IRUSR
10479 #   ifdef S_IREAD
10480 #       define S_IRUSR S_IREAD
10481 #       define S_IWUSR S_IWRITE
10482 #       define S_IXUSR S_IEXEC
10483 #   else
10484 #       define S_IRUSR 0400
10485 #       define S_IWUSR 0200
10486 #       define S_IXUSR 0100
10487 #   endif
10488 #   define S_IRGRP (S_IRUSR>>3)
10489 #   define S_IWGRP (S_IWUSR>>3)
10490 #   define S_IXGRP (S_IXUSR>>3)
10491 #   define S_IROTH (S_IRUSR>>6)
10492 #   define S_IWOTH (S_IWUSR>>6)
10493 #   define S_IXOTH (S_IXUSR>>6)
10494 #endif
10495 #ifndef S_IRWXU
10496 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10497 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10498 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10499 #endif
10500 END
10501
10502     $cat > try.c <<END
10503 #include <sys/types.h>
10504 #include <sys/ipc.h>
10505 #include <sys/sem.h>
10506 #include <sys/stat.h>
10507 #include <stdio.h>
10508 #include <errno.h>
10509 #include "try.h"
10510 #ifndef errno
10511 extern int errno;
10512 #endif
10513 #$d_union_semun HAS_UNION_SEMUN
10514 int main() {
10515     union semun
10516 #ifndef HAS_UNION_SEMUN
10517     {
10518         int val;
10519         struct semid_ds *buf;
10520         unsigned short *array;
10521     }
10522 #endif
10523     arg;
10524     int sem, st;
10525
10526 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10527     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10528     if (sem > -1) {
10529         struct semid_ds argbuf;
10530         arg.buf = &argbuf;
10531 #       ifdef IPC_STAT
10532         st = semctl(sem, 0, IPC_STAT, arg);
10533         if (st == 0)
10534             printf("semun\n");
10535         else
10536 #       endif /* IPC_STAT */
10537             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10538 #       ifdef IPC_RMID
10539         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10540 #       endif /* IPC_RMID */
10541             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10542     } else
10543 #endif /* IPC_PRIVATE && ... */
10544         printf("semget failed: errno = %d\n", errno);
10545   return 0;
10546 }
10547 END
10548     val="$undef"
10549     set try
10550     if eval $compile; then
10551         xxx=`./try`
10552         case "$xxx" in
10553         semun) val="$define" ;;
10554         esac
10555     fi
10556     $rm -f try try.c
10557     set d_semctl_semun
10558     eval $setvar
10559     case "$d_semctl_semun" in
10560     $define)
10561         echo "You can use union semun for semctl IPC_STAT." >&4
10562         also='also'
10563         ;;
10564     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10565         also=''
10566         ;;
10567     esac
10568
10569     : see whether semctl IPC_STAT can use struct semid_ds pointer
10570     $cat > try.c <<'END'
10571 #include <sys/types.h>
10572 #include <sys/ipc.h>
10573 #include <sys/sem.h>
10574 #include <sys/stat.h>
10575 #include "try.h"
10576 #include <stdio.h>
10577 #include <errno.h>
10578 #ifndef errno
10579 extern int errno;
10580 #endif
10581 int main() {
10582     struct semid_ds arg;
10583     int sem, st;
10584
10585 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10586     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10587     if (sem > -1) {
10588 #       ifdef IPC_STAT
10589         st = semctl(sem, 0, IPC_STAT, &arg);
10590         if (st == 0)
10591             printf("semid_ds\n");
10592         else
10593 #       endif /* IPC_STAT */
10594             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10595 #       ifdef IPC_RMID
10596         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10597 #       endif /* IPC_RMID */
10598             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10599     } else
10600 #endif /* IPC_PRIVATE && ... */
10601         printf("semget failed: errno = %d\n", errno);
10602
10603     return 0;
10604 }
10605 END
10606     val="$undef"
10607     set try
10608     if eval $compile; then
10609         xxx=`./try`
10610         case "$xxx" in
10611         semid_ds) val="$define" ;;
10612         esac
10613     fi
10614     $rm -f try try.c
10615     set d_semctl_semid_ds
10616     eval $setvar
10617     case "$d_semctl_semid_ds" in
10618     $define)
10619         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10620         ;;
10621     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10622         ;;
10623     esac
10624     $rm -f try.h
10625     ;;
10626 *)  val="$undef"
10627
10628     # We do not have the full sem*(2) library, so assume we can not
10629     # use either.
10630
10631     set d_semctl_semun
10632     eval $setvar
10633
10634     set d_semctl_semid_ds
10635     eval $setvar
10636     ;;
10637 esac
10638
10639 : see if setegid exists
10640 set setegid d_setegid
10641 eval $inlibc
10642
10643 : see if seteuid exists
10644 set seteuid d_seteuid
10645 eval $inlibc
10646
10647 : see if setgrent exists
10648 set setgrent d_setgrent
10649 eval $inlibc
10650
10651 : see if sethostent exists
10652 set sethostent d_sethent
10653 eval $inlibc
10654
10655 : see if setlinebuf exists
10656 set setlinebuf d_setlinebuf
10657 eval $inlibc
10658
10659 : see if setlocale exists
10660 set setlocale d_setlocale
10661 eval $inlibc
10662
10663 : see if setnetent exists
10664 set setnetent d_setnent
10665 eval $inlibc
10666
10667 : see if setprotoent exists
10668 set setprotoent d_setpent
10669 eval $inlibc
10670
10671 : see if setpgid exists
10672 set setpgid d_setpgid
10673 eval $inlibc
10674
10675 : see if setpgrp2 exists
10676 set setpgrp2 d_setpgrp2
10677 eval $inlibc
10678
10679 : see if setpriority exists
10680 set setpriority d_setprior
10681 eval $inlibc
10682
10683 : see if setpwent exists
10684 set setpwent d_setpwent
10685 eval $inlibc
10686
10687 : see if setregid exists
10688 set setregid d_setregid
10689 eval $inlibc
10690 set setresgid d_setresgid
10691 eval $inlibc
10692
10693 : see if setreuid exists
10694 set setreuid d_setreuid
10695 eval $inlibc
10696 set setresuid d_setresuid
10697 eval $inlibc
10698
10699 : see if setrgid exists
10700 set setrgid d_setrgid
10701 eval $inlibc
10702
10703 : see if setruid exists
10704 set setruid d_setruid
10705 eval $inlibc
10706
10707 : see if setservent exists
10708 set setservent d_setsent
10709 eval $inlibc
10710
10711 : see if setsid exists
10712 set setsid d_setsid
10713 eval $inlibc
10714
10715 : see if setspent exists
10716 set setspent d_setspent
10717 eval $inlibc
10718
10719 : see if setvbuf exists
10720 set setvbuf d_setvbuf
10721 eval $inlibc
10722
10723 : see if sfio.h is available
10724 set sfio.h i_sfio
10725 eval $inhdr
10726
10727
10728 : see if sfio library is available
10729 case "$i_sfio" in
10730 $define)
10731         val=''
10732         set sfreserve val
10733         eval $inlibc
10734         ;;
10735 *)
10736         val="$undef"
10737         ;;
10738 esac
10739 : Ok, but do we want to use it.
10740 case "$val" in
10741 $define)
10742         case "$usesfio" in
10743         true|$define|[yY]*) dflt='y';;
10744         *) dflt='n';;
10745         esac
10746         echo "$package can use the sfio library, but it is experimental."
10747         rp="You seem to have sfio available, do you want to try using it?"
10748         . ./myread
10749         case "$ans" in
10750         y|Y) ;;
10751         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10752                 val="$undef"
10753                 : Remove sfio from list of libraries to use
10754                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10755                 shift
10756                 libs="$*"
10757                 echo "libs = $libs" >&4
10758                 ;;
10759         esac
10760         ;;
10761 *)      case "$usesfio" in
10762         true|$define|[yY]*)
10763                 echo "Sorry, cannot find sfio on this machine" >&4
10764                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10765                 ;;
10766         esac
10767         ;;
10768 esac
10769 set d_sfio
10770 eval $setvar
10771 case "$d_sfio" in
10772 $define) usesfio='true';;
10773 *) usesfio='false';;
10774 esac
10775
10776 : see if shmctl exists
10777 set shmctl d_shmctl
10778 eval $inlibc
10779
10780 : see if shmget exists
10781 set shmget d_shmget
10782 eval $inlibc
10783
10784 : see if shmat exists
10785 set shmat d_shmat
10786 eval $inlibc
10787 : see what shmat returns
10788 case "$d_shmat" in
10789 "$define")
10790         $cat >shmat.c <<'END'
10791 #include <sys/shm.h>
10792 void *shmat();
10793 END
10794         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10795                 shmattype='void *'
10796         else
10797                 shmattype='char *'
10798         fi
10799         echo "and it returns ($shmattype)." >&4
10800         : see if a prototype for shmat is available
10801         xxx=`./findhdr sys/shm.h`
10802         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10803         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10804                 val="$define"
10805         else
10806                 val="$undef"
10807         fi
10808         $rm -f shmat.[co]
10809         ;;
10810 *)
10811         val="$undef"
10812         ;;
10813 esac
10814 set d_shmatprototype
10815 eval $setvar
10816
10817 : see if shmdt exists
10818 set shmdt d_shmdt
10819 eval $inlibc
10820
10821 : see how much of the 'shm*(2)' library is present.
10822 h_shm=true
10823 echo " "
10824 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10825 *"$undef"*) h_shm=false;;
10826 esac
10827 case "$osname" in
10828 freebsd)
10829     case "`ipcs 2>&1`" in
10830     "SVID shared memory"*"not configured"*)
10831         echo "Your $osname does not have the shm*(2) configured." >&4
10832         h_shm=false
10833         val="$undef"
10834         set shmctl d_shmctl
10835         evat $setvar
10836         set shmget d_shmget
10837         evat $setvar
10838         set shmat d_shmat
10839         evat $setvar
10840         set shmdt d_shmdt
10841         evat $setvar
10842         ;;
10843     esac
10844     ;;
10845 esac
10846 : we could also check for sys/ipc.h ...
10847 if $h_shm && $test `./findhdr sys/shm.h`; then
10848         echo "You have the full shm*(2) library." >&4
10849         val="$define"
10850 else
10851         echo "You don't have the full shm*(2) library." >&4
10852         val="$undef"
10853 fi
10854 set d_shm
10855 eval $setvar
10856
10857 echo " "
10858 : see if we have sigaction
10859 if set sigaction val -f d_sigaction; eval $csym; $val; then
10860         echo 'sigaction() found.' >&4
10861         $cat > try.c <<'EOP'
10862 #include <stdio.h>
10863 #include <sys/types.h>
10864 #include <signal.h>
10865 int main()
10866 {
10867     struct sigaction act, oact;
10868     act.sa_flags = 0;
10869     oact.sa_handler = 0;
10870     /* so that act and oact are used */
10871     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10872 }
10873 EOP
10874         set try
10875         if eval $compile_ok; then
10876                 val="$define"
10877         else
10878                 echo "But you don't seem to have a useable struct sigaction." >&4
10879                 val="$undef"
10880         fi
10881 else
10882         echo 'sigaction NOT found.' >&4
10883         val="$undef"
10884 fi
10885 set d_sigaction; eval $setvar
10886 $rm -f try try$_o try.c
10887
10888 : see if sigsetjmp exists
10889 echo " "
10890 case "$d_sigsetjmp" in
10891 '')
10892         $cat >try.c <<'EOP'
10893 #include <setjmp.h>
10894 sigjmp_buf env;
10895 int set = 1;
10896 int main()
10897 {
10898         if (sigsetjmp(env,1))
10899                 exit(set);
10900         set = 0;
10901         siglongjmp(env, 1);
10902         exit(1);
10903 }
10904 EOP
10905         set try
10906         if eval $compile; then
10907                 if ./try >/dev/null 2>&1; then
10908                         echo "POSIX sigsetjmp found." >&4
10909                         val="$define"
10910                 else
10911                         $cat >&4 <<EOM
10912 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10913 I'll ignore them.
10914 EOM
10915                         val="$undef"
10916                 fi
10917         else
10918                 echo "sigsetjmp not found." >&4
10919                 val="$undef"
10920         fi
10921         ;;
10922 *) val="$d_sigsetjmp"
10923         case "$d_sigsetjmp" in
10924         $define) echo "POSIX sigsetjmp found." >&4;;
10925         $undef) echo "sigsetjmp not found." >&4;;
10926         esac
10927         ;;
10928 esac
10929 set d_sigsetjmp
10930 eval $setvar
10931 $rm -f try.c try
10932
10933 : see if sys/stat.h is available
10934 set sys/stat.h i_sysstat
10935 eval $inhdr
10936
10937
10938 : see if stat knows about block sizes
10939 echo " "
10940 echo "Checking to see if your struct stat has st_blocks field..." >&4
10941 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10942 eval $hasfield
10943
10944
10945 : see if this is a sys/vfs.h system
10946 set sys/vfs.h i_sysvfs
10947 eval $inhdr
10948
10949
10950 : see if this is a sys/statfs.h system
10951 set sys/statfs.h i_sysstatfs
10952 eval $inhdr
10953
10954
10955 echo " "
10956 echo "Checking to see if your system supports struct statfs..." >&4
10957 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
10958 eval $hasstruct
10959 case "$d_statfs_s" in
10960 "$define")      echo "Yes, it does."   ;;
10961 *)              echo "No, it doesn't." ;;
10962 esac
10963
10964
10965
10966 : see if struct statfs knows about f_flags
10967 case "$d_statfs_s" in
10968 define) 
10969         echo " "
10970         echo "Checking to see if your struct statfs has f_flags field..." >&4
10971         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
10972         eval $hasfield
10973         ;;
10974 *)      val="$undef"
10975         set d_statfs_f_flags
10976         eval $setvar
10977         ;;
10978 esac
10979 case "$d_statfs_f_flags" in
10980 "$define")      echo "Yes, it does."   ;;
10981 *)              echo "No, it doesn't." ;;
10982 esac
10983
10984 : see if _ptr and _cnt from stdio act std
10985 echo " "
10986 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10987         echo "(Looks like you have stdio.h from Linux.)"
10988         case "$stdio_ptr" in
10989         '') stdio_ptr='((fp)->_IO_read_ptr)'
10990                 ptr_lval=$define
10991                 ;;
10992         *)      ptr_lval=$d_stdio_ptr_lval;;
10993         esac
10994         case "$stdio_cnt" in
10995         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10996                 cnt_lval=$undef
10997                 ;;
10998         *)      cnt_lval=$d_stdio_cnt_lval;;
10999         esac
11000         case "$stdio_base" in
11001         '') stdio_base='((fp)->_IO_read_base)';;
11002         esac
11003         case "$stdio_bufsiz" in
11004         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11005         esac
11006 else
11007         case "$stdio_ptr" in
11008         '') stdio_ptr='((fp)->_ptr)'
11009                 ptr_lval=$define
11010                 ;;
11011         *)      ptr_lval=$d_stdio_ptr_lval;;
11012         esac
11013         case "$stdio_cnt" in
11014         '') stdio_cnt='((fp)->_cnt)'
11015                 cnt_lval=$define
11016                 ;;
11017         *)      cnt_lval=$d_stdio_cnt_lval;;
11018         esac
11019         case "$stdio_base" in
11020         '') stdio_base='((fp)->_base)';;
11021         esac
11022         case "$stdio_bufsiz" in
11023         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11024         esac
11025 fi
11026 : test whether _ptr and _cnt really work
11027 echo "Checking how std your stdio is..." >&4
11028 $cat >try.c <<EOP
11029 #include <stdio.h>
11030 #define FILE_ptr(fp)    $stdio_ptr
11031 #define FILE_cnt(fp)    $stdio_cnt
11032 int main() {
11033         FILE *fp = fopen("try.c", "r");
11034         char c = getc(fp);
11035         if (
11036                 18 <= FILE_cnt(fp) &&
11037                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11038         )
11039                 exit(0);
11040         exit(1);
11041 }
11042 EOP
11043 val="$undef"
11044 set try
11045 if eval $compile; then
11046         if ./try; then
11047                 echo "Your stdio acts pretty std."
11048                 val="$define"
11049         else
11050                 echo "Your stdio isn't very std."
11051         fi
11052 else
11053         echo "Your stdio doesn't appear very std."
11054 fi
11055 $rm -f try.c try
11056 set d_stdstdio
11057 eval $setvar
11058
11059 : Can _ptr be used as an lvalue?
11060 case "$d_stdstdio$ptr_lval" in
11061 $define$define) val=$define ;;
11062 *) val=$undef ;;
11063 esac
11064 set d_stdio_ptr_lval
11065 eval $setvar
11066
11067 : Can _cnt be used as an lvalue?
11068 case "$d_stdstdio$cnt_lval" in
11069 $define$define) val=$define ;;
11070 *) val=$undef ;;
11071 esac
11072 set d_stdio_cnt_lval
11073 eval $setvar
11074
11075 : see if _base is also standard
11076 val="$undef"
11077 case "$d_stdstdio" in
11078 $define)
11079         $cat >try.c <<EOP
11080 #include <stdio.h>
11081 #define FILE_base(fp)   $stdio_base
11082 #define FILE_bufsiz(fp) $stdio_bufsiz
11083 int main() {
11084         FILE *fp = fopen("try.c", "r");
11085         char c = getc(fp);
11086         if (
11087                 19 <= FILE_bufsiz(fp) &&
11088                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11089         )
11090                 exit(0);
11091         exit(1);
11092 }
11093 EOP
11094         set try
11095         if eval $compile; then
11096                 if ./try; then
11097                         echo "And its _base field acts std."
11098                         val="$define"
11099                 else
11100                         echo "But its _base field isn't std."
11101                 fi
11102         else
11103                 echo "However, it seems to be lacking the _base field."
11104         fi
11105         $rm -f try.c try
11106         ;;
11107 esac
11108 set d_stdiobase
11109 eval $setvar
11110
11111 $cat >&4 <<EOM
11112 Checking how to access stdio streams by file descriptor number...
11113 EOM
11114 case "$stdio_stream_array" in
11115 '')     $cat >try.c <<EOCP
11116 #include <stdio.h>
11117 int main() {
11118   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11119     printf("yes\n");
11120 }
11121 EOCP
11122         for s in _iob __iob __sF
11123         do
11124                 set try -DSTDIO_STREAM_ARRAY=$s
11125                 if eval $compile; then
11126                         case "`./try$exe_ext`" in
11127                         yes)    stdio_stream_array=$s; break ;;
11128                         esac
11129                 fi
11130         done
11131         $rm -f try.* try$exe_ext
11132 esac
11133 case "$stdio_stream_array" in
11134 '')     $cat >&4 <<EOM
11135 I can't figure out how to access stdio streams by file descriptor number.
11136 EOM
11137         d_stdio_stream_array="$undef"
11138         ;;
11139 *)      $cat >&4 <<EOM
11140 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11141 EOM
11142         d_stdio_stream_array="$define"
11143         ;;
11144 esac
11145
11146 : see if strcoll exists
11147 set strcoll d_strcoll
11148 eval $inlibc
11149
11150 : check for structure copying
11151 echo " "
11152 echo "Checking to see if your C compiler can copy structs..." >&4
11153 $cat >try.c <<'EOCP'
11154 int main()
11155 {
11156         struct blurfl {
11157                 int dyick;
11158         } foo, bar;
11159
11160         foo = bar;
11161 }
11162 EOCP
11163 if $cc -c try.c >/dev/null 2>&1 ; then
11164         val="$define"
11165         echo "Yup, it can."
11166 else
11167         val="$undef"
11168         echo "Nope, it can't."
11169 fi
11170 set d_strctcpy
11171 eval $setvar
11172 $rm -f try.*
11173
11174 : see if strerror and/or sys_errlist[] exist
11175 echo " "
11176 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11177     if set strerror val -f d_strerror; eval $csym; $val; then
11178                 echo 'strerror() found.' >&4
11179                 d_strerror="$define"
11180                 d_strerrm='strerror(e)'
11181                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11182                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11183                         d_syserrlst="$define"
11184                 else
11185                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11186                         d_syserrlst="$undef"
11187                 fi
11188     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11189                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11190                 echo 'strerror() found in string header.' >&4
11191                 d_strerror="$define"
11192                 d_strerrm='strerror(e)'
11193                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11194                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11195                                 d_syserrlst="$define"
11196                 else
11197                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11198                         d_syserrlst="$undef"
11199                 fi
11200     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11201                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11202                 d_strerror="$undef"
11203                 d_syserrlst="$define"
11204                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11205     else
11206                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11207                 d_strerror="$undef"
11208                 d_syserrlst="$undef"
11209                 d_strerrm='"unknown"'
11210     fi
11211 fi
11212
11213 : see if strtod exists
11214 set strtod d_strtod
11215 eval $inlibc
11216
11217 : see if strtol exists
11218 set strtol d_strtol
11219 eval $inlibc
11220
11221 : see if strtold exists
11222 set strtold d_strtold
11223 eval $inlibc
11224
11225 : see if strtoll exists
11226 set strtoll d_strtoll
11227 eval $inlibc
11228
11229 : see if strtoul exists
11230 set strtoul d_strtoul
11231 eval $inlibc
11232
11233 : see if strtoull exists
11234 set strtoull d_strtoull
11235 eval $inlibc
11236
11237 : see if strtouq exists
11238 set strtouq d_strtouq
11239 eval $inlibc
11240
11241 : see if strxfrm exists
11242 set strxfrm d_strxfrm
11243 eval $inlibc
11244
11245 : see if symlink exists
11246 set symlink d_symlink
11247 eval $inlibc
11248
11249 : see if syscall exists
11250 set syscall d_syscall
11251 eval $inlibc
11252
11253 : see if sysconf exists
11254 set sysconf d_sysconf
11255 eval $inlibc
11256
11257 : see if system exists
11258 set system d_system
11259 eval $inlibc
11260
11261 : see if tcgetpgrp exists
11262 set tcgetpgrp d_tcgetpgrp
11263 eval $inlibc
11264
11265 : see if tcsetpgrp exists
11266 set tcsetpgrp d_tcsetpgrp
11267 eval $inlibc
11268
11269 : see if prototype for telldir is available
11270 echo " "
11271 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11272 eval $hasproto
11273
11274 : see if this is a sys/times.h system
11275 set sys/times.h i_systimes
11276 eval $inhdr
11277
11278 : see if times exists
11279 echo " "
11280 if set times val -f d_times; eval $csym; $val; then
11281         echo 'times() found.' >&4
11282         d_times="$define"
11283         inc=''
11284         case "$i_systimes" in
11285         "$define") inc='sys/times.h';;
11286         esac
11287         rp="What is the type returned by times() on this system?"
11288         set clock_t clocktype long stdio.h sys/types.h $inc
11289         eval $typedef_ask
11290 else
11291         echo 'times() NOT found, hope that will do.' >&4
11292         d_times="$undef"
11293         clocktype='int'
11294 fi
11295
11296 : see if truncate exists
11297 set truncate d_truncate
11298 eval $inlibc
11299
11300 : see if tzname[] exists
11301 echo " "
11302 if set tzname val -a d_tzname; eval $csym; $val; then
11303         val="$define"
11304         echo 'tzname[] found.' >&4
11305 else
11306         val="$undef"
11307         echo 'tzname[] NOT found.' >&4
11308 fi
11309 set d_tzname
11310 eval $setvar
11311
11312 : see if umask exists
11313 set umask d_umask
11314 eval $inlibc
11315
11316 : see if ustat exists
11317 set ustat d_ustat
11318 eval $inlibc
11319
11320 : backward compatibility for d_hvfork
11321 if test X$d_hvfork != X; then
11322         d_vfork="$d_hvfork"
11323         d_hvfork=''
11324 fi
11325 : see if there is a vfork
11326 val=''
11327 set vfork val
11328 eval $inlibc
11329
11330 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11331 : perl on Solaris 2.x, and probably elsewhere.
11332 case "$val" in
11333 $define)
11334         echo " "
11335         case "$usevfork" in
11336         false) dflt='n';;
11337         *) dflt='y';;
11338         esac
11339         cat <<'EOM'
11340  
11341 Perl can only use a vfork() that doesn't suffer from strict
11342 restrictions on calling functions or modifying global data in
11343 the child.  For example, glibc-2.1 contains such a vfork()
11344 that is unsuitable.  If your system provides a proper fork()
11345 call, chances are that you do NOT want perl to use vfork().
11346
11347 EOM
11348         rp="Do you still want to use vfork()?"
11349         . ./myread
11350         case "$ans" in
11351         y|Y) ;;
11352         *)
11353                 echo "Ok, we won't use vfork()."
11354                 val="$undef"
11355                 ;;
11356         esac
11357         ;;
11358 esac
11359 set d_vfork
11360 eval $setvar
11361 case "$d_vfork" in
11362 $define) usevfork='true';;
11363 *) usevfork='false';;
11364 esac
11365
11366 : see if this is an sysdir system
11367 set sys/dir.h i_sysdir
11368 eval $inhdr
11369
11370 : see if this is an sysndir system
11371 set sys/ndir.h i_sysndir
11372 eval $inhdr
11373
11374 : see if closedir exists
11375 set closedir d_closedir
11376 eval $inlibc
11377
11378 case "$d_closedir" in
11379 "$define")
11380         echo " "
11381         echo "Checking whether closedir() returns a status..." >&4
11382         cat > closedir.c <<EOM
11383 #$i_dirent I_DIRENT             /**/
11384 #$i_sysdir I_SYS_DIR            /**/
11385 #$i_sysndir I_SYS_NDIR          /**/
11386 #$i_systypes I_SYS_TYPES        /**/
11387
11388 #if defined(I_SYS_TYPES)
11389 #include <sys/types.h>
11390 #endif
11391 #if defined(I_DIRENT)
11392 #include <dirent.h>
11393 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11394 #include <sys/dir.h>
11395 #endif
11396 #else
11397 #ifdef I_SYS_NDIR
11398 #include <sys/ndir.h>
11399 #else
11400 #ifdef I_SYS_DIR
11401 #ifdef hp9000s500
11402 #include <ndir.h>       /* may be wrong in the future */
11403 #else
11404 #include <sys/dir.h>
11405 #endif
11406 #endif
11407 #endif
11408 #endif 
11409 int main() { return closedir(opendir(".")); }
11410 EOM
11411         set closedir
11412         if eval $compile_ok; then
11413                 if ./closedir > /dev/null 2>&1 ; then
11414                         echo "Yes, it does."
11415                         val="$undef"
11416                 else
11417                         echo "No, it doesn't."
11418                         val="$define"
11419                 fi
11420         else
11421                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11422                 val="$define"
11423         fi
11424         ;;
11425 *)
11426         val="$undef";
11427         ;;
11428 esac
11429 set d_void_closedir
11430 eval $setvar
11431 $rm -f closedir*
11432 : check for volatile keyword
11433 echo " "
11434 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11435 $cat >try.c <<'EOCP'
11436 int main()
11437 {
11438         typedef struct _goo_struct goo_struct;
11439         goo_struct * volatile goo = ((goo_struct *)0);
11440         struct _goo_struct {
11441                 long long_int;
11442                 int reg_int;
11443                 char char_var;
11444         };
11445         typedef unsigned short foo_t;
11446         char *volatile foo;
11447         volatile int bar;
11448         volatile foo_t blech;
11449         foo = foo;
11450 }
11451 EOCP
11452 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11453         val="$define"
11454         echo "Yup, it does."
11455 else
11456         val="$undef"
11457         echo "Nope, it doesn't."
11458 fi
11459 set d_volatile
11460 eval $setvar
11461 $rm -f try.*
11462
11463 : see if there is a wait4
11464 set wait4 d_wait4
11465 eval $inlibc
11466
11467 : see if waitpid exists
11468 set waitpid d_waitpid
11469 eval $inlibc
11470
11471 : see if wcstombs exists
11472 set wcstombs d_wcstombs
11473 eval $inlibc
11474
11475 : see if wctomb exists
11476 set wctomb d_wctomb
11477 eval $inlibc
11478
11479 : preserve RCS keywords in files with variable substitution, grrr
11480 Date='$Date'
11481 Id='$Id'
11482 Log='$Log'
11483 RCSfile='$RCSfile'
11484 Revision='$Revision'
11485
11486 case "$crosscompile" in
11487 ''|[nN]*) crosscompile="$undef" ;;
11488 esac
11489
11490 case "$osname" in
11491 next|rhapsody) multiarch="$define" ;;
11492 esac
11493 case "$multiarch" in
11494 ''|[nN]*) multiarch="$undef" ;;
11495 esac
11496
11497 : check for alignment requirements
11498 echo " "
11499 case "$crosscompile$multiarch" in
11500 *$define*)
11501         $cat <<EOM
11502 You seem to be either cross-compiling or doing a multiarchitecture build,
11503 skipping the memory alignment check.
11504
11505 EOM
11506         case "$alignbytes" in
11507         '') alignbytes=8 ;;
11508         esac
11509         ;;
11510 *)
11511         case "$alignbytes" in
11512         '') echo "Checking alignment constraints..." >&4
11513                 $cat >try.c <<'EOCP'
11514 #include <stdio.h>
11515 struct foobar {
11516         char foo;
11517         double bar;
11518 } try_algn;
11519 int main()
11520 {
11521     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11522     return(0);
11523 }
11524 EOCP
11525                 set try
11526                 if eval $compile_ok; then
11527                         dflt=`./try`
11528                 else
11529                         dflt='8'
11530                         echo "(I can't seem to compile the test program...)"
11531                 fi
11532                 ;;
11533         *) dflt="$alignbytes"
11534                 ;;
11535         esac
11536         rp="Doubles must be aligned on a how-many-byte boundary?"
11537         . ./myread
11538         alignbytes="$ans"
11539         $rm -f try.c try
11540         ;;
11541 esac
11542
11543
11544 : check for ordering of bytes in a long
11545 echo " "
11546 case "$crosscompile$multiarch" in
11547 *$define*)
11548         $cat <<EOM
11549 You seem to be either cross-compiling or doing a multiarchitecture build,
11550 skipping the byteorder check.
11551
11552 EOM
11553         byteorder='0xffff'
11554         ;;
11555 *)
11556         case "$byteorder" in
11557         '')
11558                 $cat <<'EOM'
11559 In the following, larger digits indicate more significance.  A big-endian
11560 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11561 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11562 machines may have weird orders like 3412.  A Cray will report 87654321,
11563 an Alpha will report 12345678. If the test program works the default is
11564 probably right.
11565 I'm now running the test program...
11566 EOM
11567                 $cat >try.c <<'EOCP'
11568 #include <stdio.h>
11569 int main()
11570 {
11571         int i;
11572         union {
11573                 unsigned long l;
11574                 char c[sizeof(long)];
11575         } u;
11576
11577         if (sizeof(long) > 4)
11578                 u.l = (0x08070605L << 32) | 0x04030201L;
11579         else
11580                 u.l = 0x04030201L;
11581         for (i = 0; i < sizeof(long); i++)
11582                 printf("%c", u.c[i]+'0');
11583         printf("\n");
11584         exit(0);
11585 }
11586 EOCP
11587                 xxx_prompt=y
11588                 set try
11589                 if eval $compile && ./try > /dev/null; then
11590                         dflt=`./try`
11591                         case "$dflt" in
11592                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11593                                 echo "(The test program ran ok.)"
11594                                 echo "byteorder=$dflt"
11595                                 xxx_prompt=n
11596                         ;;
11597                         ????|????????) echo "(The test program ran ok.)" ;;
11598                         *) echo "(The test program didn't run right for some reason.)" ;;
11599                         esac
11600                 else
11601                         dflt='4321'
11602                         cat <<'EOM'
11603 (I can't seem to compile the test program.  Guessing big-endian...)
11604 EOM
11605                 fi
11606                 case "$xxx_prompt" in
11607                 y)
11608                         rp="What is the order of bytes in a long?"
11609                         . ./myread
11610                         byteorder="$ans"
11611                         ;;
11612                 *)      byteorder=$dflt
11613                         ;;
11614                 esac
11615                 ;;
11616         esac
11617         $rm -f try.c try
11618         ;;
11619 esac
11620
11621
11622 : how do we catenate cpp tokens here?
11623 echo " "
11624 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11625 $cat >cpp_stuff.c <<'EOCP'
11626 #define RCAT(a,b)a/**/b
11627 #define ACAT(a,b)a ## b
11628 RCAT(Rei,ser)
11629 ACAT(Cir,cus)
11630 EOCP
11631 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11632 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11633         echo "Oh!  Smells like ANSI's been here." >&4
11634         echo "We can catify or stringify, separately or together!"
11635         cpp_stuff=42
11636 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11637         echo "Ah, yes!  The good old days!" >&4
11638         echo "However, in the good old days we don't know how to stringify and"
11639         echo "catify at the same time."
11640         cpp_stuff=1
11641 else
11642         $cat >&4 <<EOM
11643 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11644 to have to edit the values of CAT[2-5] in config.h...
11645 EOM
11646         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11647 fi
11648 $rm -f cpp_stuff.*
11649
11650 : see if this is a db.h system
11651 set db.h i_db
11652 eval $inhdr
11653
11654 case "$i_db" in
11655 $define)
11656         : Check db version.
11657         echo " "
11658         echo "Checking Berkeley DB version ..." >&4
11659         $cat >try.c <<EOCP
11660 #$d_const HASCONST
11661 #ifndef HASCONST
11662 #define const
11663 #endif
11664 #include <sys/types.h>
11665 #include <stdio.h>
11666 #include <db.h>
11667 int main()
11668 {
11669 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11670     int Major, Minor, Patch ;
11671     unsigned long Version ;
11672     (void)db_version(&Major, &Minor, &Patch) ;
11673     printf("You have Berkeley DB Version 2 or greater\n");
11674
11675     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11676                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11677     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11678                 Major, Minor, Patch) ;
11679
11680     /* check that db.h & libdb are compatible */
11681     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11682         printf("db.h and libdb are incompatible\n") ;
11683         exit(3);        
11684     }
11685
11686     printf("db.h and libdb are compatible\n") ;
11687
11688     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11689                 + DB_VERSION_PATCH ;
11690
11691     /* needs to be >= 2.3.4 */
11692     if (Version < 2003004) {
11693     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11694         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11695         exit(2);        
11696     }
11697
11698     exit(0);
11699 #else
11700 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11701     printf("You have Berkeley DB Version 1\n");
11702     exit(0);    /* DB version < 2: the coast is clear. */
11703 #else
11704     exit(1);    /* <db.h> not Berkeley DB? */
11705 #endif
11706 #endif
11707 }
11708 EOCP
11709         set try
11710         if eval $compile_ok && ./try; then
11711                 echo 'Looks OK.' >&4
11712         else
11713                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11714                 i_db=$undef
11715                 case " $libs " in
11716                 *"-ldb "*)
11717                         : Remove db from list of libraries to use
11718                         echo "Removing unusable -ldb from library list" >&4
11719                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11720                         shift
11721                         libs="$*"
11722                         echo "libs = $libs" >&4
11723                         ;;
11724                 esac
11725         fi
11726         $rm -f try.*
11727         ;;
11728 esac
11729
11730 case "$i_db" in
11731 define)
11732         : Check the return type needed for hash 
11733         echo " "
11734         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11735         $cat >try.c <<EOCP
11736 #$d_const HASCONST
11737 #ifndef HASCONST
11738 #define const
11739 #endif
11740 #include <sys/types.h>
11741 #include <db.h>
11742
11743 #ifndef DB_VERSION_MAJOR
11744 u_int32_t hash_cb (ptr, size)
11745 const void *ptr;
11746 size_t size;
11747 {
11748 }
11749 HASHINFO info;
11750 int main()
11751 {
11752         info.hash = hash_cb;
11753 }
11754 #endif
11755 EOCP
11756         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11757                 if $contains warning try.out >>/dev/null 2>&1 ; then
11758                         db_hashtype='int'
11759                 else
11760                         db_hashtype='u_int32_t'
11761                 fi
11762         else
11763                 : XXX Maybe we should just give up here.
11764                 db_hashtype=u_int32_t
11765                 $cat try.out >&4
11766                 echo "Help:  I can't seem to compile the db test program." >&4
11767                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11768         fi
11769         $rm -f try.*
11770         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11771         ;;
11772 *)      db_hashtype=u_int32_t
11773         ;;
11774 esac
11775 case "$i_db" in
11776 define)
11777         : Check the return type needed for prefix 
11778         echo " "
11779         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11780         cat >try.c <<EOCP
11781 #$d_const HASCONST
11782 #ifndef HASCONST
11783 #define const
11784 #endif
11785 #include <sys/types.h>
11786 #include <db.h>
11787
11788 #ifndef DB_VERSION_MAJOR
11789 size_t prefix_cb (key1, key2)
11790 const DBT *key1;
11791 const DBT *key2;
11792 {
11793 }
11794 BTREEINFO info;
11795 int main()
11796 {
11797         info.prefix = prefix_cb;
11798 }
11799 #endif
11800 EOCP
11801         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11802                 if $contains warning try.out >>/dev/null 2>&1 ; then
11803                         db_prefixtype='int'
11804                 else
11805                         db_prefixtype='size_t'
11806                 fi
11807         else
11808                 db_prefixtype='size_t'
11809                 : XXX Maybe we should just give up here.
11810                 $cat try.out >&4
11811                 echo "Help:  I can't seem to compile the db test program." >&4
11812                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11813         fi
11814         $rm -f try.*
11815         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11816         ;;
11817 *)      db_prefixtype='size_t'
11818         ;;
11819 esac
11820
11821 : check for void type
11822 echo " "
11823 echo "Checking to see how well your C compiler groks the void type..." >&4
11824 case "$voidflags" in
11825 '')
11826         $cat >try.c <<'EOCP'
11827 #if TRY & 1
11828 void sub() {
11829 #else
11830 sub() {
11831 #endif
11832         extern void moo();      /* function returning void */
11833         void (*goo)();          /* ptr to func returning void */
11834 #if TRY & 8
11835         void *hue;              /* generic ptr */
11836 #endif
11837 #if TRY & 2
11838         void (*foo[10])();
11839 #endif
11840
11841 #if TRY & 4
11842         if(goo == moo) {
11843                 exit(0);
11844         }
11845 #endif
11846         exit(0);
11847 }
11848 int main() { sub(); }
11849 EOCP
11850         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11851                 voidflags=$defvoidused
11852         echo "Good.  It appears to support void to the level $package wants.">&4
11853                 if $contains warning .out >/dev/null 2>&1; then
11854                         echo "However, you might get some warnings that look like this:"
11855                         $cat .out
11856                 fi
11857         else
11858 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11859                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11860                         echo "It supports 1..."
11861                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11862                                 echo "It also supports 2..."
11863                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11864                                         voidflags=7
11865                                         echo "And it supports 4 but not 8 definitely."
11866                                 else
11867                                         echo "It doesn't support 4..."
11868                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11869                                                 voidflags=11
11870                                                 echo "But it supports 8."
11871                                         else
11872                                                 voidflags=3
11873                                                 echo "Neither does it support 8."
11874                                         fi
11875                                 fi
11876                         else
11877                                 echo "It does not support 2..."
11878                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11879                                         voidflags=13
11880                                         echo "But it supports 4 and 8."
11881                                 else
11882                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11883                                                 voidflags=5
11884                                                 echo "And it supports 4 but has not heard about 8."
11885                                         else
11886                                                 echo "However it supports 8 but not 4."
11887                                         fi
11888                                 fi
11889                         fi
11890                 else
11891                         echo "There is no support at all for void."
11892                         voidflags=0
11893                 fi
11894         fi
11895 esac
11896 case "$voidflags" in
11897 "$defvoidused") ;;
11898 *)      $cat >&4 <<'EOM'
11899   Support flag bits are:
11900     1: basic void declarations.
11901     2: arrays of pointers to functions returning void.
11902     4: operations between pointers to and addresses of void functions.
11903     8: generic void pointers.
11904 EOM
11905         dflt="$voidflags";
11906         rp="Your void support flags add up to what?"
11907         . ./myread
11908         voidflags="$ans"
11909         ;;
11910 esac
11911 $rm -f try.* .out
11912
11913
11914 : How can we generate normalized random numbers ?
11915 echo " "
11916 echo "Looking for a random number function..." >&4
11917 case "$randfunc" in
11918 '')
11919         if set drand48 val -f; eval $csym; $val; then
11920                 dflt="drand48"
11921                 echo "Good, found drand48()." >&4
11922         elif set random val -f; eval $csym; $val; then
11923                 dflt="random"
11924                 echo "OK, found random()." >&4
11925         else
11926                 dflt="rand"
11927                 echo "Yick, looks like I have to use rand()." >&4
11928         fi
11929         echo " "
11930         ;;
11931 *)
11932         dflt="$randfunc"
11933         ;;
11934 esac
11935 cont=true
11936
11937 case "$ccflags" in
11938 *-Dmy_rand=*|*-Dmy_srand=*)
11939         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11940         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11941         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11942         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11943         ;;
11944 esac
11945
11946 while $test "$cont"; do
11947         rp="Use which function to generate random numbers?"
11948         . ./myread
11949         if $test "$ans" = "$dflt"; then
11950                 : null
11951         else
11952                 randbits=''
11953         fi
11954         randfunc="$ans"
11955         if set $ans val -f; eval $csym; $val; then
11956                 cont=''
11957         else
11958                 dflt=y
11959                 rp="I cannot find function $ans. Use that name anyway?"
11960                 . ./myread
11961                 dflt=rand
11962                 case "$ans" in
11963                         [yY]*) cont='';;
11964                 esac
11965         fi
11966         case "$cont" in
11967         '')
11968                 case "$randfunc" in
11969                 drand48)
11970                         drand01="drand48()"
11971                         seedfunc="srand48"
11972                         randbits=48
11973                         randseedtype=long
11974                         ;;
11975                 rand|random)
11976                         case "$randbits" in
11977                         '')
11978 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11979                                 $cat >try.c <<EOCP
11980 #$i_unistd I_UNISTD
11981 #$i_stdlib I_STDLIB
11982 #include <stdio.h>
11983 #ifdef I_UNISTD
11984 #  include <unistd.h>
11985 #endif
11986 #ifdef I_STDLIB
11987 #  include <stdlib.h>
11988 #endif
11989 int main()
11990 {
11991         register int i;
11992         register unsigned long tmp;
11993         register unsigned long max = 0L;
11994
11995         for (i = 1000; i; i--) {
11996                 tmp = (unsigned long) $randfunc();
11997                 if (tmp > max) max = tmp;
11998         }
11999         for (i = 0; max; i++)
12000                 max /= 2;
12001         printf("%d\n",i);
12002 }
12003 EOCP
12004                                 set try
12005                                 if eval $compile_ok; then
12006                                         dflt=`try`
12007                                 else
12008                                         dflt='?'
12009                                         echo "(I can't seem to compile the test program...)"
12010                                 fi
12011                                 ;;
12012                         *)
12013                                 dflt="$randbits"
12014                                 ;;
12015                         esac
12016                         rp="How many bits does your $randfunc() function produce?"
12017                         . ./myread
12018                         randbits="$ans"
12019                         $rm -f try.c try
12020                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12021                         seedfunc="s$randfunc"
12022                         randseedtype=unsigned
12023                         ;;
12024                 *)
12025                         dflt="31"
12026                         rp="How many bits does your $randfunc() function produce?"
12027                         . ./myread
12028                         randbits="$ans"
12029                         seedfunc="s$randfunc"
12030                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12031                         if set $seedfunc val -f; eval $csym; $val; then
12032                                 echo "(Using $seedfunc() to seed random generator)"
12033                         else
12034                                 echo "(Warning: no $seedfunc() to seed random generator)"
12035                                 seedfunc=rand
12036                         fi
12037                         randseedtype=unsigned
12038                         ;;
12039                 esac
12040                 ;;
12041         esac
12042 done
12043
12044 echo " "
12045 echo "Determining whether or not we are on an EBCDIC system..." >&4
12046 $cat >tebcdic.c <<'EOM'
12047 int main()
12048 {
12049   if ('M'==0xd4) return 0;
12050   return 1;
12051 }
12052 EOM
12053
12054 val=$undef
12055 set tebcdic
12056 if eval $compile_ok; then
12057         if ./tebcdic; then
12058                 echo "You have EBCDIC." >&4
12059                 val="$define"
12060         else
12061                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12062         fi
12063 else
12064         echo "I'm unable to compile the test program." >&4
12065         echo "I'll assume ASCII or some ISO Latin." >&4
12066 fi
12067 $rm -f tebcdic.c tebcdic
12068 set ebcdic
12069 eval $setvar
12070
12071 echo " "
12072 $cat >&4 <<EOM
12073 Checking how to flush all pending stdio output...
12074 EOM
12075 # I only know how to find the first 32 possibly open files on SunOS.
12076 # See also hints/sunos_4_1.sh and util.c  --AD
12077 case "$osname" in
12078 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12079 esac
12080 $cat >>try.c <<EOCP
12081 #include <stdio.h>
12082 #$i_unistd I_UNISTD
12083 #ifdef I_UNISTD
12084 # include <unistd.h>
12085 #endif
12086 #$d_sysconf HAS_SYSCONF
12087 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12088 #ifdef HAS_STDIO_STREAM_ARRAY
12089 # define STDIO_STREAM_ARRAY $stdio_stream_array
12090 #endif
12091 int main() {
12092   FILE* p = fopen("try.out", "w");
12093 #ifdef TRY_FPUTC
12094   fputc('x', p);
12095 #else
12096 # ifdef TRY_FPRINTF
12097   fprintf(p, "x");
12098 # endif
12099 #endif
12100 #ifdef TRY_FFLUSH_NULL
12101   fflush(NULL);
12102 #endif
12103 #ifdef TRY_FFLUSH_ALL
12104   {
12105     long open_max = -1;
12106 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12107     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12108 # else
12109 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12110     open_max = sysconf(_SC_OPEN_MAX);
12111 #  else
12112 #   ifdef FOPEN_MAX
12113     open_max = FOPEN_MAX;
12114 #   else
12115 #    ifdef OPEN_MAX
12116     open_max = OPEN_MAX;
12117 #    else
12118 #     ifdef _NFILE
12119     open_max = _NFILE;
12120 #     endif
12121 #    endif
12122 #   endif
12123 #  endif
12124 # endif 
12125 # ifdef HAS_STDIO_STREAM_ARRAY
12126     if (open_max > 0) {
12127       long i;
12128       for (i = 0; i < open_max; i++)
12129             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12130                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12131                 STDIO_STREAM_ARRAY[i]._flag)
12132                 fflush(&STDIO_STREAM_ARRAY[i]);
12133     }   
12134   }
12135 # endif
12136 #endif
12137   _exit(42);
12138 }
12139 EOCP
12140 : first we have to find out how _not_ to flush
12141 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12142     output=''
12143     set try -DTRY_FPUTC
12144     if eval $compile; then
12145             $rm -f try.out
12146             ./try$exe_ext 2>/dev/null
12147             if $test ! -s try.out -a "X$?" = X42; then
12148                 output=-DTRY_FPUTC
12149             fi
12150     fi
12151     case "$output" in
12152     '')
12153             set try -DTRY_FPRINTF
12154             $rm -f try.out
12155             if eval $compile; then
12156                     $rm -f try.out
12157                     ./try$exe_ext 2>/dev/null
12158                     if $test ! -s try.out -a "X$?" = X42; then
12159                         output=-DTRY_FPRINTF
12160                     fi
12161             fi
12162         ;;
12163     esac
12164 fi
12165 : check for fflush NULL behaviour
12166 case "$fflushNULL" in
12167 '')     set try -DTRY_FFLUSH_NULL $output
12168         if eval $compile; then
12169                 $rm -f try.out
12170                 ./try$exe_ext 2>/dev/null
12171                 code="$?"
12172                 if $test -s try.out -a "X$code" = X42; then
12173                         fflushNULL="`$cat try.out`"
12174                 else
12175                         if $test "X$code" != X42; then
12176                                 $cat >&4 <<EOM
12177 (If this test failed, don't worry, we'll try another method shortly.)
12178 EOM
12179                         fi
12180                 fi
12181         fi
12182         $rm -f core try.core core.try.*
12183         case "$fflushNULL" in
12184         x)      $cat >&4 <<EOM
12185 Your fflush(NULL) works okay.
12186 EOM
12187                 fflushNULL="$define"
12188                 ;;
12189         '')     $cat >&4 <<EOM
12190 Your fflush(NULL) isn't working (contrary to ANSI C).
12191 EOM
12192                 fflushNULL="$undef"
12193                 ;;
12194         *)      $cat >&4 <<EOM
12195 Cannot figure out whether your fflush(NULL) works or not.
12196 I'm assuming it doesn't (contrary to ANSI C).
12197 EOM
12198                 fflushNULL="$undef"
12199                 ;;
12200         esac
12201         ;;
12202 $define|true|[yY]*)
12203         fflushNULL="$define"
12204         ;;
12205 *)
12206         fflushNULL="$undef"
12207         ;;
12208 esac
12209 : check explicit looping only if NULL did not work
12210 case "$fflushNULL" in
12211 "$undef")
12212         : check for fflush all behaviour
12213         case "$fflushall" in
12214         '')     set try -DTRY_FFLUSH_ALL $output
12215                 if eval $compile; then
12216                         $cat >&4 <<EOM
12217 (Now testing the other method--but note that also this may fail.)
12218 EOM
12219                         $rm -f try.out
12220                         ./try$exe_ext 2>/dev/null
12221                         if $test -s try.out -a "X$?" = X42; then
12222                                 fflushall="`$cat try.out`"
12223                         fi
12224                 fi
12225                 $rm -f core try.core core.try.*
12226                 case "$fflushall" in
12227                 x)      $cat >&4 <<EOM
12228 Whew. Flushing explicitly all the stdio streams works.
12229 EOM
12230                         fflushall="$define"
12231                         ;;
12232                 '')     $cat >&4 <<EOM
12233 Sigh. Flushing explicitly all the stdio streams doesn't work.
12234 EOM
12235                         fflushall="$undef"
12236                         ;;
12237                 *)      $cat >&4 <<EOM
12238 Cannot figure out whether flushing stdio streams explicitly works or not.
12239 I'm assuming it doesn't.
12240 EOM
12241                         fflushall="$undef"
12242                         ;;
12243                 esac
12244                 ;;
12245         "$define"|true|[yY]*)
12246                 fflushall="$define"
12247                 ;;
12248         *)
12249                 fflushall="$undef"
12250                 ;;
12251         esac
12252         ;;
12253 *)      fflushall="$undef"      
12254         ;;
12255 esac
12256 case "$fflushNULL$fflushall" in
12257 undefundef)
12258         $cat <<EOM
12259 I cannot figure out how to flush pending stdio output.
12260 EOM
12261         ;;
12262 esac
12263 $rm -f try.* try$exe_ext
12264
12265 : Store the full pathname to the ar program for use in the C program
12266 : Respect a hint or command line value for full_ar.
12267 case "$full_ar" in
12268 '') full_ar=$ar ;;
12269 esac
12270
12271 : Store the full pathname to the sed program for use in the C program
12272 full_sed=$sed
12273
12274 : see what type gids are declared as in the kernel
12275 echo " "
12276 echo "Looking for the type for group ids returned by getgid()."
12277 set gid_t gidtype xxx stdio.h sys/types.h
12278 eval $typedef
12279 case "$gidtype" in
12280 xxx)
12281         xxx=`./findhdr sys/user.h`
12282         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12283         case $1 in
12284         unsigned) dflt="$1 $2" ;;
12285         *) dflt="$1" ;;
12286         esac
12287         ;;
12288 *) dflt="$gidtype";;
12289 esac
12290 case "$gidtype" in
12291 gid_t) echo "gid_t found." ;;
12292 *)      rp="What is the type for group ids returned by getgid()?"
12293         . ./myread
12294         gidtype="$ans"
12295         ;;
12296 esac
12297
12298 echo " "
12299 case "$gidtype" in
12300 *_t) zzz="$gidtype"     ;;
12301 *)   zzz="gid"          ;;
12302 esac
12303 echo "Checking the size of $zzz..." >&4 
12304 cat > try.c <<EOCP
12305 #include <sys/types.h>
12306 #include <stdio.h>
12307 int main() {
12308     printf("%d\n", (int)sizeof($gidtype));
12309     exit(0);
12310 }
12311 EOCP
12312 set try
12313 if eval $compile_ok; then
12314         yyy=`./try`
12315         case "$yyy" in
12316         '')     gidsize=4
12317                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12318                 ;;
12319         *)      gidsize=$yyy
12320                 echo "Your $zzz size is $gidsize bytes."
12321                 ;;
12322         esac
12323 else
12324         gidsize=4
12325         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12326 fi
12327
12328
12329 echo " "
12330 case "$gidtype" in
12331 *_t) zzz="$gidtype"     ;;
12332 *)   zzz="gid"          ;;
12333 esac
12334 echo "Checking the sign of $zzz..." >&4 
12335 cat > try.c <<EOCP
12336 #include <sys/types.h>
12337 #include <stdio.h>
12338 int main() {
12339         $gidtype foo = -1;
12340         if (foo < 0)
12341                 printf("-1\n");
12342         else
12343                 printf("1\n");
12344 }
12345 EOCP
12346 set try
12347 if eval $compile; then
12348         yyy=`./try`
12349         case "$yyy" in
12350         '')     gidsign=1
12351                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12352                 ;;
12353         *)      gidsign=$yyy
12354                 case "$gidsign" in
12355                  1) echo "Your $zzz is unsigned." ;;
12356                 -1) echo "Your $zzz is signed."   ;;
12357                 esac
12358                 ;;
12359         esac
12360 else
12361         gidsign=1
12362         echo "(I can't compile the test program--guessing unsigned.)" >&4
12363 fi
12364
12365
12366 echo " "
12367
12368 if $test X"$quadtype" != X; then
12369
12370 echo "Checking how to print 64-bit integers..." >&4
12371
12372 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12373         $cat >try.c <<'EOCP'
12374 #include <sys/types.h>
12375 #include <stdio.h>
12376 int main() {
12377   int q = 12345678901;
12378   printf("%ld\n", q);
12379 }
12380 EOCP
12381         set try
12382         if eval $compile; then
12383                 yyy=`./try$exe_ext`
12384                 case "$yyy" in
12385                 12345678901)
12386                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12387                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12388                         echo "We will use %d."
12389                         ;;
12390                 esac
12391         fi
12392 fi
12393
12394 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12395         $cat >try.c <<'EOCP'
12396 #include <sys/types.h>
12397 #include <stdio.h>
12398 int main() {
12399   long q = 12345678901;
12400   printf("%ld\n", q);
12401 }
12402 EOCP
12403         set try
12404         if eval $compile; then
12405                 yyy=`./try$exe_ext`
12406                 case "$yyy" in
12407                 12345678901)
12408                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12409                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12410                         echo "We will use %ld."
12411                         ;;
12412                 esac
12413         fi
12414 fi
12415
12416 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12417         $cat >try.c <<'EOCP'
12418 #include <sys/types.h>
12419 #include <inttypes.h>
12420 #include <stdio.h>
12421 int main() {
12422   int64_t q = 12345678901;
12423   printf("%" PRId64 "\n", q);
12424 }
12425 EOCP
12426         set try
12427         if eval $compile; then
12428                 yyy=`./try$exe_ext`
12429                 case "$yyy" in
12430                 12345678901)
12431                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12432                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12433                         echo "We will use the C9X style."
12434                         ;;
12435                 esac
12436         fi
12437 fi
12438
12439 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12440         $cat >try.c <<'EOCP'
12441 #include <sys/types.h>
12442 #include <stdio.h>
12443 int main() {
12444   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12445   printf("%lld\n", q);
12446 }
12447 EOCP
12448         set try
12449         if eval $compile; then
12450                 yyy=`./try$exe_ext`
12451                 case "$yyy" in
12452                 12345678901)
12453                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12454                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12455                         echo "We will use the %lld style."
12456                         ;;
12457                 esac
12458         fi
12459 fi
12460
12461 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12462         $cat >try.c <<EOCP
12463 #include <sys/types.h>
12464 #include <stdio.h>
12465 int main() {
12466   $quadtype q = 12345678901;
12467   printf("%Ld\n", q);
12468 }
12469 EOCP
12470         set try
12471         if eval $compile; then
12472                 yyy=`./try$exe_ext`
12473                 case "$yyy" in
12474                 12345678901)
12475                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12476                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12477                         echo "We will use %Ld."
12478                         ;;
12479                 esac
12480         fi
12481 fi
12482
12483 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12484         $cat >try.c <<EOCP
12485 #include <sys/types.h>
12486 #include <stdio.h>
12487 int main() {
12488   $quadtype q = 12345678901;
12489   printf("%qd\n", q);
12490 }
12491 EOCP
12492         set try
12493         if eval $compile; then
12494                 yyy=`./try$exe_ext`
12495                 case "$yyy" in
12496                 12345678901)
12497                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12498                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12499                         echo "We will use %qd."
12500                         ;;
12501                 esac
12502         fi
12503 fi
12504
12505 if $test X"$sPRId64" = X; then
12506         echo "Cannot figure out how to print 64-bit integers." >&4
12507 fi
12508
12509 $rm -f try try.*
12510
12511 fi
12512
12513 case "$sPRId64" in
12514 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12515         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12516         ;;
12517 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12518         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12519         ;;
12520 esac
12521
12522
12523 echo " "
12524 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12525
12526 if $test X"$ivsize" = X8; then
12527         ivdformat="$sPRId64"
12528         uvuformat="$sPRIu64"
12529         uvoformat="$sPRIo64"
12530         uvxformat="$sPRIx64"
12531 else
12532         if $test X"$ivsize" = X"$longsize"; then
12533                 ivdformat='"ld"'
12534                 uvuformat='"lu"'
12535                 uvoformat='"lo"'
12536                 uvxformat='"lx"'
12537         else
12538                 if $test X"$ivsize" = X"$intsize"; then
12539                         ivdformat='"d"'
12540                         uvuformat='"u"'
12541                         uvoformat='"o"'
12542                         uvxformat='"x"'
12543                 else
12544                         : far out
12545                         if $test X"$ivsize" = X"$shortsize"; then
12546                                 ivdformat='"hd"'
12547                                 uvuformat='"hu"'
12548                                 uvoformat='"ho"'
12549                                 uvxformat='"hx"'
12550                         fi
12551                 fi
12552         fi
12553 fi
12554
12555 case "$ivdformat" in
12556 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12557     exit 1
12558     ;;
12559 esac
12560
12561
12562 echo " "
12563 $echo "Checking the format string to be used for gids..." >&4
12564
12565 case "$gidsign" in
12566 -1)     if $test X"$gidsize" = X"$ivsize"; then
12567                 gidformat="$ivdformat"
12568         else
12569                 if $test X"$gidsize" = X"$longsize"; then
12570                         gidformat='"ld"'
12571                 else
12572                         if $test X"$gidsize" = X"$intsize"; then
12573                                 gidformat='"d"'
12574                         else
12575                                 if $test X"$gidsize" = X"$shortsize"; then
12576                                         gidformat='"hd"'
12577                                 fi
12578                         fi
12579                 fi
12580         fi
12581         ;;
12582 *)      if $test X"$gidsize" = X"$uvsize"; then
12583                 gidformat="$uvuformat"
12584         else
12585                 if $test X"$gidsize" = X"$longsize"; then
12586                         gidformat='"lu"'
12587                 else
12588                         if $test X"$gidsize" = X"$intsize"; then
12589                                 gidformat='"u"'
12590                         else
12591                                 if $test X"$gidsize" = X"$shortsize"; then
12592                                         gidformat='"hu"'
12593                                 fi
12594                         fi
12595                 fi
12596         fi
12597         ;;
12598 esac
12599
12600 : see if getgroups exists
12601 set getgroups d_getgrps
12602 eval $inlibc
12603
12604 : see if setgroups exists
12605 set setgroups d_setgrps
12606 eval $inlibc
12607
12608
12609 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12610 echo " "
12611 case "$d_getgrps$d_setgrps" in
12612 *define*)
12613         case "$groupstype" in
12614         '') dflt="$gidtype" ;;
12615         *)  dflt="$groupstype" ;;
12616         esac
12617         $cat <<EOM
12618 What type of pointer is the second argument to getgroups() and setgroups()?
12619 Usually this is the same as group ids, $gidtype, but not always.
12620
12621 EOM
12622         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12623         . ./myread
12624         groupstype="$ans"
12625         ;;
12626 *)  groupstype="$gidtype";;
12627 esac
12628
12629 echo " "
12630 echo "Checking if your $make program sets \$(MAKE)..." >&4
12631 case "$make_set_make" in
12632 '')
12633         $sed 's/^X //' > testmake.mak << 'EOF'
12634 Xall:
12635 X       @echo 'maketemp="$(MAKE)"'
12636 EOF
12637         case "`$make -f testmake.mak 2>/dev/null`" in
12638         *maketemp=*) make_set_make='#' ;;
12639         *)      make_set_make="MAKE=$make" ;;
12640         esac
12641         $rm -f testmake.mak
12642         ;;
12643 esac
12644 case "$make_set_make" in
12645 '#') echo "Yup, it does.";;
12646 *) echo "Nope, it doesn't.";;
12647 esac
12648
12649 : see if this is a sys/mman.h system
12650 set sys/mman.h i_sysmman
12651 eval $inhdr
12652
12653 : see if mmap exists
12654 set mmap d_mmap
12655 eval $inlibc
12656 : see what shmat returns
12657 : default to something harmless
12658 mmaptype='void *'
12659 case "$i_sysmman$d_mmap" in
12660 "$define$define")
12661         $cat >mmap.c <<'END'
12662 #include <sys/mman.h>
12663 void *mmap();
12664 END
12665         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12666                 mmaptype='void *'
12667         else
12668                 mmaptype='caddr_t'
12669         fi
12670         echo "and it returns ($mmaptype)." >&4
12671         ;;
12672 esac
12673
12674
12675
12676 : see what type is used for mode_t
12677 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12678 set mode_t modetype int stdio.h sys/types.h
12679 eval $typedef_ask
12680
12681 : define a fucntion to check prototypes
12682 $cat > protochk <<EOSH
12683 $startsh
12684 cc="$cc"
12685 optimize="$optimize"
12686 ccflags="$ccflags"
12687 prototype="$prototype"
12688 define="$define"
12689 rm=$rm
12690 EOSH
12691
12692 $cat >> protochk <<'EOSH'
12693
12694 $rm -f try.c
12695 foo="$1"
12696 shift
12697 while test $# -ge 2; do
12698         case "$1" in
12699                 $define) echo "#include <$2>" >> try.c ;;
12700                 literal) echo "$2" >> try.c ;;
12701         esac
12702     shift 2
12703 done
12704 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12705 cat >> try.c <<'EOCP'
12706 #ifdef CAN_PROTOTYPE
12707 #define _(args) args
12708 #else
12709 #define _(args) ()
12710 #endif
12711 EOCP
12712 echo "$foo" >> try.c
12713 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12714 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12715 status=$?
12716 $rm -f try.[co]
12717 exit $status
12718 EOSH
12719 chmod +x protochk
12720 $eunicefix protochk
12721
12722 : see what type is used for size_t
12723 rp="What is the type used for the length parameter for string functions?"
12724 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12725 eval $typedef_ask
12726
12727 : check for type of arguments to gethostbyaddr. 
12728 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12729         case "$d_gethbyaddr" in
12730         $define)
12731                 $cat <<EOM
12732
12733 Checking to see what type of arguments are accepted by gethostbyaddr().
12734 EOM
12735                 hdrs="$define sys/types.h
12736                         $d_socket sys/socket.h 
12737                         $i_niin netinet/in.h 
12738                         $i_netdb netdb.h
12739                         $i_unistd unistd.h"
12740                 : The first arg can 'char *' or 'void *'
12741                 : The second arg is some of integral type
12742                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12743                         for yyy in size_t long int; do
12744                                 case "$netdb_host_type" in
12745                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12746                                         if ./protochk "$try" $hdrs; then
12747                                                 echo "Your system accepts $xxx for the first arg."
12748                                                 echo "...and $yyy for the second arg."
12749                                                 netdb_host_type="$xxx"
12750                                                 netdb_hlen_type="$yyy"
12751                                         fi
12752                                         ;;
12753                                 esac
12754                         done
12755                 done
12756                 : In case none of those worked, prompt the user.
12757                 case "$netdb_host_type" in
12758                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12759                         dflt='char *'
12760                         . ./myread
12761                         netdb_host_type=$ans
12762                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12763                         dflt="$sizetype"
12764                         . ./myread
12765                         netdb_hlen_type=$ans
12766                         ;;
12767                 esac
12768                 ;;
12769         *)      : no gethostbyaddr, so pick harmless defaults
12770                 netdb_host_type='char *'
12771                 netdb_hlen_type="$sizetype"
12772                 ;;
12773         esac
12774         # Remove the "const" if needed. -- but then we'll have a 
12775         # prototype clash!
12776         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12777 fi
12778
12779 : check for type of argument to gethostbyname. 
12780 if test "X$netdb_name_type" = X ; then
12781         case "$d_gethbyname" in
12782         $define)
12783                 $cat <<EOM
12784
12785 Checking to see what type of argument is accepted by gethostbyname().
12786 EOM
12787                 hdrs="$define sys/types.h
12788                         $d_socket sys/socket.h 
12789                         $i_niin netinet/in.h 
12790                         $i_netdb netdb.h
12791                         $i_unistd unistd.h"
12792                 for xxx in "const char *" "char *"; do
12793                         case "$netdb_name_type" in
12794                         '')     try="extern struct hostent *gethostbyname($xxx);"
12795                                 if ./protochk "$try" $hdrs; then
12796                                         echo "Your system accepts $xxx."
12797                                         netdb_name_type="$xxx"
12798                                 fi
12799                                 ;;
12800                         esac
12801                 done
12802                 : In case none of those worked, prompt the user.
12803                 case "$netdb_name_type" in
12804                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12805                         dflt='char *'
12806                         . ./myread
12807                         netdb_name_type=$ans
12808                         ;;
12809                 esac
12810                 ;;
12811         *)      : no gethostbyname, so pick harmless default
12812                 netdb_name_type='char *'
12813                 ;;
12814         esac
12815 fi
12816
12817 : check for type of 1st argument to getnetbyaddr. 
12818 if test "X$netdb_net_type" = X ; then
12819         case "$d_getnbyaddr" in
12820         $define)
12821                 $cat <<EOM
12822
12823 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12824 EOM
12825                 hdrs="$define sys/types.h
12826                         $d_socket sys/socket.h 
12827                         $i_niin netinet/in.h 
12828                         $i_netdb netdb.h
12829                         $i_unistd unistd.h"
12830                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12831                         case "$netdb_net_type" in
12832                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12833                                 if ./protochk "$try" $hdrs; then
12834                                         echo "Your system accepts $xxx."
12835                                         netdb_net_type="$xxx"
12836                                 fi
12837                                 ;;
12838                         esac
12839                 done
12840                 : In case none of those worked, prompt the user.
12841                 case "$netdb_net_type" in
12842                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12843                         dflt='long'
12844                         . ./myread
12845                         netdb_net_type=$ans
12846                         ;;
12847                 esac
12848                 ;;
12849         *)      : no getnetbyaddr, so pick harmless default
12850                 netdb_net_type='long'
12851                 ;;
12852         esac
12853 fi
12854 : locate the preferred pager for this system
12855 case "$pager" in
12856 '')
12857         dflt=''
12858         case "$pg" in
12859         /*) dflt=$pg;;
12860         esac
12861         case "$more" in
12862         /*) dflt=$more;;
12863         esac
12864         case "$less" in
12865         /*) dflt=$less;;
12866         esac
12867         case "$dflt" in
12868         '') dflt=/usr/ucb/more;;
12869         esac
12870         ;;
12871 *) dflt="$pager";;
12872 esac
12873 echo " "
12874 fn=f/
12875 rp='What pager is used on your system?'
12876 . ./getfile
12877 pager="$ans"
12878
12879 : see what type pids are declared as in the kernel
12880 rp="What is the type of process ids on this system?"
12881 set pid_t pidtype int stdio.h sys/types.h
12882 eval $typedef_ask
12883
12884 : Find earliest binary compatible site_perl subdirectory perl can use.
12885 case "$bincompat5005" in
12886 "$define") xs_apiversion='5.005' ;;
12887 *) xs_apiversion=$version ;;   # The current site_perl version.
12888 esac
12889 : Find earliest pure perl site_perl subdirectory perl can use.
12890 : The versioned directories started at 5.005.
12891 pm_apiversion='5.005'
12892
12893 : check for length of pointer
12894 echo " "
12895 case "$ptrsize" in
12896 '')
12897         $echo $n "Checking to see how big your pointers are...$c" >&4
12898         if test "$voidflags" -gt 7; then
12899                 echo '#define VOID_PTR char *' > try.c
12900         else
12901                 echo '#define VOID_PTR void *' > try.c
12902         fi
12903         $cat >>try.c <<'EOCP'
12904 #include <stdio.h>
12905 int main()
12906 {
12907     printf("%d\n", (int)sizeof(VOID_PTR));
12908     exit(0);
12909 }
12910 EOCP
12911         set try
12912         if eval $compile_ok; then
12913                 ptrsize=`./try`
12914                 $echo " $ptrsize bytes." >&4
12915         else
12916                 dflt='4'
12917                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12918                 rp="What is the size of a pointer (in bytes)?"
12919                 . ./myread
12920                 ptrsize="$ans"
12921         fi
12922         ;;
12923 esac
12924 $rm -f try.c try
12925
12926 : see if ar generates random libraries by itself
12927 echo " "
12928 echo "Checking how to generate random libraries on your machine..." >&4
12929 echo 'int bar1() { return bar2(); }' > bar1.c
12930 echo 'int bar2() { return 2; }' > bar2.c
12931 $cat > foo.c <<'EOP'
12932 int main() { printf("%d\n", bar1()); exit(0); }
12933 EOP
12934 $cc $ccflags -c bar1.c >/dev/null 2>&1
12935 $cc $ccflags -c bar2.c >/dev/null 2>&1
12936 $cc $ccflags -c foo.c >/dev/null 2>&1
12937 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12938 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12939         ./foobar >/dev/null 2>&1; then
12940         echo "$ar appears to generate random libraries itself."
12941         orderlib=false
12942         ranlib=":"
12943 elif $ar ts bar$_a >/dev/null 2>&1 &&
12944         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12945         ./foobar >/dev/null 2>&1; then
12946                 echo "a table of contents needs to be added with '$ar ts'."
12947                 orderlib=false
12948                 ranlib="$ar ts"
12949 else
12950         case "$ranlib" in
12951         :) ranlib='';;
12952         '')
12953                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12954                 $test -f $ranlib || ranlib=''
12955                 ;;
12956         esac
12957         if $test -n "$ranlib"; then
12958                 echo "your system has '$ranlib'; we'll use that."
12959                 orderlib=false
12960         else
12961                 echo "your system doesn't seem to support random libraries"
12962                 echo "so we'll use lorder and tsort to order the libraries."
12963                 orderlib=true
12964                 ranlib=":"
12965         fi
12966 fi
12967 $rm -f foo* bar* 
12968
12969 : check for type of arguments to select. 
12970 case "$selecttype" in
12971 '') case "$d_select" in
12972         $define)
12973                 echo " "
12974                 $cat <<EOM
12975 Checking to see what type of arguments are accepted by select().
12976 EOM
12977                 hdrs="$define sys/types.h
12978                         $i_systime sys/time.h 
12979                         $i_sysselct sys/select.h
12980                         $d_socket sys/socket.h"
12981                 : The first arg can be int, unsigned, or size_t
12982                 : The last arg may or may not be 'const'
12983                 val=''
12984                 : void pointer has been seen but using that
12985                 : breaks the selectminbits test
12986                 for xxx in 'fd_set *' 'int *'; do
12987                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12988                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12989                                         case "$val" in
12990                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12991                                                 if ./protochk "$try" $hdrs; then
12992                                                         echo "Your system accepts $xxx."
12993                                                         val="$xxx"
12994                                                 fi
12995                                                 ;;
12996                                         esac
12997                                 done
12998                         done
12999                 done
13000                 case "$val" in
13001                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13002                         case "$d_fd_set" in
13003                                 $define) dflt="fd_set *" ;;
13004                                 *)              dflt="int *" ;;
13005                         esac
13006                         . ./myread
13007                         val=$ans
13008                         ;;
13009                 esac
13010                 selecttype="$val"
13011                 ;;
13012         *)      : no select, so pick a harmless default
13013                 selecttype='int *'
13014                 ;;
13015         esac
13016         ;;
13017 esac
13018
13019 : check for the select 'width'
13020 case "$selectminbits" in
13021 '') case "$d_select" in
13022         $define)
13023                 $cat <<EOM
13024
13025 Checking to see on how many bits at a time your select() operates...
13026 EOM
13027                 $cat >try.c <<EOCP
13028 #include <sys/types.h>
13029 #$i_time I_TIME
13030 #$i_systime I_SYS_TIME
13031 #$i_systimek I_SYS_TIME_KERNEL
13032 #ifdef I_TIME
13033 #   include <time.h>
13034 #endif
13035 #ifdef I_SYS_TIME
13036 #   ifdef I_SYS_TIME_KERNEL
13037 #       define KERNEL
13038 #   endif
13039 #   include <sys/time.h>
13040 #   ifdef I_SYS_TIME_KERNEL
13041 #       undef KERNEL
13042 #   endif
13043 #endif
13044 #$i_sysselct I_SYS_SELECT
13045 #ifdef I_SYS_SELECT
13046 #include <sys/select.h>
13047 #endif
13048 #$d_socket HAS_SOCKET
13049 #ifdef HAS_SOCKET
13050 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13051 #endif
13052 #include <stdio.h>
13053 $selecttype b;
13054 #define S sizeof(*(b))
13055 #define MINBITS 64
13056 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13057 #define NBITS  (NBYTES * 8)
13058 int main() {
13059     char s[NBYTES];
13060     struct timeval t;
13061     int i;
13062     FILE* fp;
13063     int fd;
13064
13065     fclose(stdin);
13066     fp = fopen("try.c", "r");
13067     if (fp == 0)
13068       exit(1);
13069     fd = fileno(fp);
13070     if (fd < 0)
13071       exit(2);
13072     b = ($selecttype)s;
13073     for (i = 0; i < NBITS; i++)
13074         FD_SET(i, b);
13075     t.tv_sec  = 0;
13076     t.tv_usec = 0;
13077     select(fd + 1, b, 0, 0, &t);
13078     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13079     printf("%d\n", i + 1);
13080     return 0;
13081 }
13082 EOCP
13083                 set try
13084                 if eval $compile_ok; then
13085                         selectminbits=`./try`
13086                         case "$selectminbits" in
13087                         '')     cat >&4 <<EOM
13088 Cannot figure out on how many bits at a time your select() operates.
13089 I'll play safe and guess it is 32 bits.
13090 EOM
13091                                 selectminbits=32
13092                                 bits="32 bits"
13093                                 ;;
13094                         1)      bits="1 bit" ;;
13095                         *)      bits="$selectminbits bits" ;;
13096                         esac
13097                         echo "Your select() operates on $bits at a time." >&4
13098                 else
13099                         rp='What is the minimum number of bits your select() operates on?'
13100                         case "$byteorder" in
13101                         1234|12345678)  dflt=32 ;;
13102                         *)              dflt=1  ;;
13103                         esac
13104                         . ./myread
13105                         val=$ans
13106                         selectminbits="$val"
13107                 fi
13108                 $rm -f try.* try
13109                 ;;
13110         *)      : no select, so pick a harmless default
13111                 selectminbits='32'
13112                 ;;
13113         esac
13114         ;;
13115 esac
13116
13117 : Trace out the files included by signal.h, then look for SIGxxx names.
13118 : Remove SIGARRAYSIZE used by HPUX.
13119 : Remove SIGSTKSIZE used by Linux.
13120 : Remove SIGSTKSZ used by Posix.
13121 : Remove SIGTYP void lines used by OS2.
13122 : Some cpps, like os390, dont give the file name anywhere
13123 if [ "X$fieldn" = X ]; then
13124         : Just make some guesses.  We check them later.
13125         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13126 else
13127         xxx=`echo '#include <signal.h>' |
13128         $cppstdin $cppminus $cppflags 2>/dev/null |
13129         $grep '^[       ]*#.*include' | 
13130         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13131 fi
13132 : Check this list of files to be sure we have parsed the cpp output ok.
13133 : This will also avoid potentially non-existent files, such 
13134 : as ../foo/bar.h
13135 xxxfiles=''
13136 for xx in $xxx /dev/null ; do
13137         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13138 done
13139 : If we have found no files, at least try signal.h
13140 case "$xxxfiles" in
13141 '')     xxxfiles=`./findhdr signal.h` ;;
13142 esac
13143 xxx=`awk '
13144 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13145         print substr($2, 4, 20)
13146 }
13147 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13148         print substr($3, 4, 20)
13149 }' $xxxfiles`
13150 : Append some common names just in case the awk scan failed.
13151 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13152 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13153 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13154 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13155 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13156
13157 : generate a few handy files for later
13158 $cat > signal.c <<'EOCP'
13159 #include <sys/types.h>
13160 #include <signal.h>
13161 #include <stdio.h>
13162 int main() {
13163
13164 /* Strange style to avoid deeply-nested #if/#else/#endif */
13165 #ifndef NSIG
13166 #  ifdef _NSIG
13167 #    define NSIG (_NSIG)
13168 #  endif
13169 #endif
13170
13171 #ifndef NSIG
13172 #  ifdef SIGMAX
13173 #    define NSIG (SIGMAX+1)
13174 #  endif
13175 #endif
13176
13177 #ifndef NSIG
13178 #  ifdef SIG_MAX
13179 #    define NSIG (SIG_MAX+1)
13180 #  endif
13181 #endif
13182
13183 #ifndef NSIG
13184 #  ifdef MAXSIG
13185 #    define NSIG (MAXSIG+1)
13186 #  endif
13187 #endif
13188
13189 #ifndef NSIG
13190 #  ifdef MAX_SIG
13191 #    define NSIG (MAX_SIG+1)
13192 #  endif
13193 #endif
13194
13195 #ifndef NSIG
13196 #  ifdef SIGARRAYSIZE
13197 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13198 #  endif
13199 #endif
13200
13201 #ifndef NSIG
13202 #  ifdef _sys_nsig
13203 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13204 #  endif
13205 #endif
13206
13207 /* Default to some arbitrary number that's big enough to get most
13208    of the common signals.
13209 */
13210 #ifndef NSIG
13211 #    define NSIG 50
13212 #endif
13213
13214 printf("NSIG %d\n", NSIG);
13215
13216 #ifndef JUST_NSIG
13217
13218 EOCP
13219
13220 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13221 {
13222         printf "#ifdef SIG"; printf $1; printf "\n"
13223         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13224         printf $1; printf ");\n"
13225         printf "#endif\n"
13226 }
13227 END {
13228         printf "#endif /* JUST_NSIG */\n";
13229         printf "exit(0);\n}\n";
13230 }
13231 ' >>signal.c
13232 $cat >signal.awk <<'EOP'
13233 BEGIN { ndups = 0 }
13234 $1 ~ /^NSIG$/ { nsig = $2 }
13235 ($1 !~ /^NSIG$/) && (NF == 2) {
13236     if ($2 > maxsig) { maxsig = $2 }
13237     if (sig_name[$2]) {
13238         dup_name[ndups] = $1
13239         dup_num[ndups] = $2
13240         ndups++ 
13241     }
13242     else {
13243         sig_name[$2] = $1
13244         sig_num[$2] = $2
13245     }
13246 }
13247 END { 
13248     if (nsig == 0) {
13249         nsig = maxsig + 1
13250     }
13251     printf("NSIG %d\n", nsig);
13252     for (n = 1; n < nsig; n++) {
13253         if (sig_name[n]) {
13254             printf("%s %d\n", sig_name[n], sig_num[n])
13255         }
13256         else {
13257             printf("NUM%d %d\n", n, n) 
13258         }
13259     }
13260     for (n = 0; n < ndups; n++) {
13261         printf("%s %d\n", dup_name[n], dup_num[n])
13262     }
13263 }
13264 EOP
13265 $cat >signal_cmd <<EOS
13266 $startsh
13267 if $test -s signal.lst; then
13268     echo "Using your existing signal.lst file"
13269         exit 0
13270 fi
13271 xxx="$xxx"
13272 EOS
13273 $cat >>signal_cmd <<'EOS'
13274
13275 set signal
13276 if eval $compile_ok; then
13277         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13278 else
13279         echo "(I can't seem be able to compile the whole test program)" >&4
13280         echo "(I'll try it in little pieces.)" >&4
13281         set signal -DJUST_NSIG
13282         if eval $compile_ok; then
13283                 ./signal$_exe > signal.nsg
13284                 $cat signal.nsg
13285         else
13286                 echo "I can't seem to figure out how many signals you have." >&4
13287                 echo "Guessing 50." >&4
13288                 echo 'NSIG 50' > signal.nsg
13289         fi
13290         : Now look at all the signal names, one at a time.
13291         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13292                 $cat > signal.c <<EOCP
13293 #include <sys/types.h>
13294 #include <signal.h>
13295 #include <stdio.h>
13296 int main() {
13297 printf("$xx %d\n", SIG${xx});
13298 return 0;
13299 }
13300 EOCP
13301                 set signal
13302                 if eval $compile; then
13303                         echo "SIG${xx} found."
13304                         ./signal$_exe  >> signal.ls1
13305                 else
13306                         echo "SIG${xx} NOT found."
13307                 fi
13308         done
13309         if $test -s signal.ls1; then
13310                 $cat signal.nsg signal.ls1 |
13311                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13312         fi
13313
13314 fi
13315 if $test -s signal.lst; then
13316         :
13317 else
13318         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13319         echo 'kill -l' >signal
13320         set X `csh -f <signal`
13321         $rm -f signal
13322         shift
13323         case $# in
13324         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13325         esac
13326         echo $@ | $tr ' ' $trnl | \
13327             $awk '{ printf "%s %d\n", $1, ++s; }
13328                   END { printf "NSIG %d\n", ++s }' >signal.lst
13329 fi
13330 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13331 EOS
13332 chmod a+x signal_cmd
13333 $eunicefix signal_cmd
13334
13335 : generate list of signal names
13336 echo " "
13337 case "$sig_name_init" in
13338 '') doinit=yes ;;
13339 *)  case "$sig_num_init" in
13340     ''|*,*) doinit=yes ;;
13341     esac ;;
13342 esac
13343 case "$doinit" in
13344 yes)
13345         echo "Generating a list of signal names and numbers..." >&4
13346         . ./signal_cmd
13347         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13348         sig_name=`$awk 'BEGIN { printf "ZERO " }
13349                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13350         sig_num=`$awk  'BEGIN { printf "0 " }
13351                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13352         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13353                              !/^NSIG/   { printf "\"%s\", ", $1 }
13354                              END        { printf "0\n" }' signal.lst`
13355         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13356                              !/^NSIG/   { printf "%d, ", $2}
13357                              END        { printf "0\n"}' signal.lst`
13358         ;;
13359 esac
13360 echo "The following $sig_count signals are available:"
13361 echo " "
13362 echo $sig_name | $awk \
13363 'BEGIN { linelen = 0 }
13364 {
13365         for (i = 1; i <= NF; i++) {
13366                 name = "SIG" $i " "
13367                 linelen = linelen + length(name)
13368                 if (linelen > 70) {
13369                         printf "\n"
13370                         linelen = length(name)
13371                 }
13372                 printf "%s", name
13373         }
13374         printf "\n"
13375 }'
13376 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13377
13378 : see what type is used for signed size_t
13379 set ssize_t ssizetype int stdio.h sys/types.h
13380 eval $typedef
13381 dflt="$ssizetype"
13382 $cat > ssize.c <<EOM
13383 #include <stdio.h>
13384 #include <sys/types.h>
13385 #define Size_t $sizetype
13386 #define SSize_t $dflt
13387 int main()
13388 {
13389         if (sizeof(Size_t) == sizeof(SSize_t))
13390                 printf("$dflt\n");
13391         else if (sizeof(Size_t) == sizeof(int))
13392                 printf("int\n");
13393         else 
13394                 printf("long\n");
13395         exit(0);
13396 }
13397 EOM
13398 echo " "
13399 set ssize
13400 if eval $compile_ok && ./ssize > /dev/null; then
13401         ssizetype=`./ssize`
13402         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13403 else
13404         $cat >&4 <<EOM
13405 Help! I can't compile and run the ssize_t test program: please enlighten me!
13406 (This is probably a misconfiguration in your system or libraries, and
13407 you really ought to fix it.  Still, I'll try anyway.)
13408
13409 I need a type that is the same size as $sizetype, but is guaranteed to
13410 be signed.  Common values are ssize_t, int and long.
13411
13412 EOM
13413         rp="What signed type is the same size as $sizetype?"
13414         . ./myread
13415         ssizetype="$ans"
13416 fi
13417 $rm -f ssize ssize.*
13418
13419 : see what type of char stdio uses.
13420 echo " "
13421 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13422         echo "Your stdio uses unsigned chars." >&4
13423         stdchar="unsigned char"
13424 else
13425         echo "Your stdio uses signed chars." >&4
13426         stdchar="char"
13427 fi
13428
13429 : see if time exists
13430 echo " "
13431 if test "X$d_time" = X -o X"$timetype" = X; then
13432     if set time val -f d_time; eval $csym; $val; then
13433                 echo 'time() found.' >&4
13434                 val="$define"
13435                 rp="What is the type returned by time() on this system?"
13436                 set time_t timetype long stdio.h sys/types.h
13437                 eval $typedef_ask
13438     else
13439                 echo 'time() not found, hope that will do.' >&4
13440                 val="$undef"
13441                 timetype='int';
13442     fi
13443     set d_time
13444     eval $setvar
13445 fi
13446
13447 : see what type uids are declared as in the kernel
13448 echo " "
13449 echo "Looking for the type for user ids returned by getuid()."
13450 set uid_t uidtype xxx stdio.h sys/types.h
13451 eval $typedef
13452 case "$uidtype" in
13453 xxx)
13454         xxx=`./findhdr sys/user.h`
13455         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13456         case $1 in
13457         unsigned) dflt="$1 $2" ;;
13458         *) dflt="$1" ;;
13459         esac
13460         ;;
13461 *) dflt="$uidtype";;
13462 esac
13463 case "$uidtype" in
13464 uid_t)  echo "uid_t found." ;;
13465 *)      rp="What is the type for user ids returned by getuid()?"
13466         . ./myread
13467         uidtype="$ans"
13468         ;;
13469 esac
13470
13471 echo " "
13472 case "$uidtype" in
13473 *_t) zzz="$uidtype"     ;;
13474 *)   zzz="uid"          ;;
13475 esac
13476 echo "Checking the size of $zzz..." >&4 
13477 cat > try.c <<EOCP
13478 #include <sys/types.h>
13479 #include <stdio.h>
13480 int main() {
13481     printf("%d\n", (int)sizeof($uidtype));
13482     exit(0);
13483 }
13484 EOCP
13485 set try
13486 if eval $compile_ok; then
13487         yyy=`./try`
13488         case "$yyy" in
13489         '')     uidsize=4
13490                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13491                 ;;
13492         *)      uidsize=$yyy
13493                 echo "Your $zzz size is $uidsize bytes."
13494                 ;;
13495         esac
13496 else
13497         uidsize=4
13498         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13499 fi
13500
13501 echo " "
13502 case "$uidtype" in
13503 *_t) zzz="$uidtype"     ;;
13504 *)   zzz="uid"          ;;
13505 esac
13506 echo "Checking the sign of $zzz..." >&4
13507 cat > try.c <<EOCP
13508 #include <sys/types.h>
13509 #include <stdio.h>
13510 int main() {
13511         $uidtype foo = -1;
13512         if (foo < 0)
13513                 printf("-1\n");
13514         else
13515                 printf("1\n");
13516 }
13517 EOCP
13518 set try
13519 if eval $compile; then
13520         yyy=`./try`
13521         case "$yyy" in
13522         '')     uidsign=1
13523                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13524                 ;;
13525         *)      uidsign=$yyy
13526                 case "$uidsign" in
13527                  1) echo "Your $zzz is unsigned." ;;
13528                 -1) echo "Your $zzz is signed."   ;;
13529                 esac
13530                 ;;
13531         esac
13532 else
13533         uidsign=1
13534         echo "(I can't compile the test program--guessing unsigned.)" >&4
13535 fi
13536
13537
13538
13539 echo " "
13540 $echo "Checking the format string to be used for uids..." >&4
13541
13542 case "$uidsign" in
13543 -1)     if $test X"$uidsize" = X"$ivsize"; then
13544                 uidformat="$ivdformat"
13545         else
13546                 if $test X"$uidsize" = X"$longsize"; then
13547                         uidformat='"ld"'
13548                 else
13549                         if $test X"$uidsize" = X"$intsize"; then
13550                                 uidformat='"d"'
13551                         else
13552                                 if $test X"$uidsize" = X"$shortsize"; then
13553                                         uidformat='"hd"'
13554                                 fi
13555                         fi
13556                 fi
13557         fi
13558         ;;
13559 *)      if $test X"$uidsize" = X"$uvsize"; then
13560                 uidformat="$uvuformat"
13561         else
13562                 if $test X"$uidsize" = X"$longsize"; then
13563                         uidformat='"lu"'
13564                 else
13565                         if $test X"$uidsize" = X"$intsize"; then
13566                                 uidformat='"u"'
13567                         else
13568                                 if $test X"$uidsize" = X"$shortsize"; then
13569                                         uidformat='"hu"'
13570                                 fi
13571                         fi
13572                 fi
13573         fi
13574         ;;
13575 esac
13576
13577 : see if dbm.h is available
13578 : see if dbmclose exists
13579 set dbmclose d_dbmclose
13580 eval $inlibc
13581
13582 case "$d_dbmclose" in
13583 $define)
13584         set dbm.h i_dbm
13585         eval $inhdr
13586         case "$i_dbm" in
13587         $define)
13588                 val="$undef"
13589                 set i_rpcsvcdbm
13590                 eval $setvar
13591                 ;;
13592         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13593                 eval $inhdr
13594                 ;;
13595         esac
13596         ;;
13597 *)      echo "We won't be including <dbm.h>"
13598         val="$undef"
13599         set i_dbm
13600         eval $setvar
13601         val="$undef"
13602         set i_rpcsvcdbm
13603         eval $setvar
13604         ;;
13605 esac
13606
13607 : see if this is a sys/file.h system
13608 val=''
13609 set sys/file.h val
13610 eval $inhdr
13611
13612 : do we need to include sys/file.h ?
13613 case "$val" in
13614 "$define")
13615         echo " "
13616         if $h_sysfile; then
13617                 val="$define"
13618                 echo "We'll be including <sys/file.h>." >&4
13619         else
13620                 val="$undef"
13621                 echo "We won't be including <sys/file.h>." >&4
13622         fi
13623         ;;
13624 *)
13625         h_sysfile=false
13626         ;;
13627 esac
13628 set i_sysfile
13629 eval $setvar
13630
13631 : see if fcntl.h is there
13632 val=''
13633 set fcntl.h val
13634 eval $inhdr
13635
13636 : see if we can include fcntl.h
13637 case "$val" in
13638 "$define")
13639         echo " "
13640         if $h_fcntl; then
13641                 val="$define"
13642                 echo "We'll be including <fcntl.h>." >&4
13643         else
13644                 val="$undef"
13645                 if $h_sysfile; then
13646         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13647                 else
13648                         echo "We won't be including <fcntl.h>." >&4
13649                 fi
13650         fi
13651         ;;
13652 *)
13653         h_fcntl=false
13654         val="$undef"
13655         ;;
13656 esac
13657 set i_fcntl
13658 eval $setvar
13659
13660 : see if this is a iconv.h system
13661 set iconv.h i_iconv
13662 eval $inhdr
13663
13664 : see if locale.h is available
13665 set locale.h i_locale
13666 eval $inhdr
13667
13668 : see if mach cthreads are available
13669 if test "X$usethreads" = "X$define"; then
13670         set mach/cthreads.h i_machcthr
13671         eval $inhdr
13672 else
13673         i_machcthr="$undef"
13674 fi
13675
13676
13677
13678 : see if this is a math.h system
13679 set math.h i_math
13680 eval $inhdr
13681
13682 : see if this is a mntent.h system
13683 set mntent.h i_mntent
13684 eval $inhdr
13685
13686 : see if ndbm.h is available
13687 set ndbm.h t_ndbm
13688 eval $inhdr
13689 case "$t_ndbm" in
13690 $define)
13691         : see if dbm_open exists
13692         set dbm_open d_dbm_open
13693         eval $inlibc
13694         case "$d_dbm_open" in
13695         $undef)
13696                 t_ndbm="$undef"
13697                 echo "We won't be including <ndbm.h>"
13698                 ;;
13699         esac
13700         ;;
13701 esac
13702 val="$t_ndbm"
13703 set i_ndbm
13704 eval $setvar
13705
13706 : see if net/errno.h is available
13707 val=''
13708 set net/errno.h val
13709 eval $inhdr
13710
13711 : Unfortunately, it causes problems on some systems.  Arrgh.
13712 case "$val" in
13713 $define)
13714         cat > try.c <<'EOM'
13715 #include <stdio.h>
13716 #include <errno.h>
13717 #include <net/errno.h>
13718 int func()
13719 {
13720         return ENOTSOCK;
13721 }
13722 EOM
13723         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13724                 echo "We'll be including <net/errno.h>." >&4
13725         else
13726                 echo "We won't be including <net/errno.h>." >&4
13727                 val="$undef"
13728         fi
13729         $rm -f try.* try
13730         ;;
13731 esac
13732 set i_neterrno
13733 eval $setvar
13734
13735 : see if netinet/tcp.h is available
13736 set netinet/tcp.h i_netinettcp
13737 eval $inhdr
13738
13739 : see if this is a poll.h system
13740 set poll.h i_poll
13741 eval $inhdr
13742
13743 echo " "
13744 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13745 $cat <<'EOSH' > Cppsym.know
13746 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13747 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13748 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13749 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13750 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13751 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13752 bull c cadmus clipper CMU COFF COMPILER_VERSION
13753 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13754 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13755 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13756 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13757 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13758 H3050R H3050RX hbullx20 hcx host_mips
13759 hp200 hp300 hp700 HP700 hp800 hp9000
13760 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13761 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13762 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13763 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13764 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13765 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13766 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13767 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13768 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13769 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13770 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13771 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13772 MATH_HAS_NO_SIDE_EFFECTS
13773 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13774 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13775 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13776 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13777 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13778 NetBSD news1500 news1700 news1800 news1900 news3700
13779 news700 news800 news900 NeXT NLS ns16000 ns32000
13780 ns32016 ns32332 ns32k nsc32000
13781 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13782 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13783 pc532 pdp11 PGC PIC plexus PORTAR posix
13784 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13785 POSIX_C_SOURCE POSIX_SOURCE POWER
13786 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13787 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13788 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13789 sony sony_news sonyrisc sparc sparclite spectrum
13790 stardent stdc STDC_EXT stratos sun sun3 sun386
13791 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13792 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13793 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13794 sysV68 sysV88 Tek4132 Tek4300 titan
13795 tower tower32 tower32_200 tower32_600 tower32_700
13796 tower32_800 tower32_850 tss
13797 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13798 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13799 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13800 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13801 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13802 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13803 z8000
13804 EOSH
13805 # Maybe put other stuff here too.
13806 cat <<EOSH >>Cppsym.know
13807 $osname
13808 EOSH
13809 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13810 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13811 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13812 $rm -f Cppsym.a Cppsym.b
13813 cat <<EOSH > Cppsym
13814 $startsh
13815 if $test \$# -gt 0; then
13816     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13817     if $test -s Cppsym.got; then
13818         $rm -f Cppsym.got
13819         exit 0
13820     fi
13821     $rm -f Cppsym.got
13822     exit 1
13823 else
13824     $tr " " "$trnl" | ./Cppsym.try
13825     exit 0
13826 fi
13827 EOSH
13828 chmod +x Cppsym
13829 $eunicefix Cppsym
13830 cat <<EOSH > Cppsym.try
13831 $startsh
13832 cat <<'EOCP' > try.c
13833 #include <stdio.h>
13834 int main() {
13835 EOCP
13836 $awk \\
13837 EOSH
13838 cat <<'EOSH' >> Cppsym.try
13839 'length($1) > 0 {
13840     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
13841     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
13842     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
13843     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
13844 }'       >> try.c
13845 echo '}' >> try.c
13846 EOSH
13847 cat <<EOSH >> Cppsym.try
13848 cc="$cc"
13849 optimize="$optimize"
13850 ccflags="$ccflags"
13851 ldflags="$ldflags"
13852 libs="$libs"
13853 exe_ext="$exe_ext"
13854 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
13855 EOSH
13856 chmod +x Cppsym.try
13857 $eunicefix Cppsym.try
13858 ./Cppsym < Cppsym.know > Cppsym.true
13859 : now check the C compiler for additional symbols
13860 postprocess_cc_v=''
13861 case "$osname" in
13862 aix) postprocess_cc_v="|$tr , ' '" ;;
13863 esac
13864 $cat >ccsym <<EOS
13865 $startsh
13866 $cat >tmp.c <<EOF
13867 extern int foo;
13868 EOF
13869 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13870 do
13871         case "\$i" in
13872         -D*) echo "\$i" | $sed 's/^-D//';;
13873         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13874         esac
13875 done
13876 $rm -f try.c
13877 EOS
13878 postprocess_cc_v=''
13879 chmod +x ccsym
13880 $eunicefix ccsym
13881 ./ccsym > ccsym1.raw
13882 if $test -s ccsym1.raw; then
13883        $sort ccsym1.raw | $uniq >ccsym.raw
13884 else
13885        mv ccsym1.raw ccsym.raw
13886 fi
13887
13888 $awk '/\=/ { print $0; next }
13889         { print $0"=1" }' ccsym.raw >ccsym.list
13890 $awk '/\=/ { print $0; next }
13891         { print $0"=1" }' Cppsym.true >ccsym.true
13892 $comm -13 ccsym.true ccsym.list >ccsym.own
13893 $comm -12 ccsym.true ccsym.list >ccsym.com
13894 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13895 also=''
13896 if $test -z ccsym.raw; then
13897         echo "Your C compiler doesn't seem to define any symbols!" >&4
13898         echo " "
13899         echo "However, your C preprocessor defines the following symbols:"
13900         $cat Cppsym.true
13901         ccsymbols=''
13902         cppsymbols=`$cat Cppsym.true`
13903         cppsymbols=`echo $cppsymbols`
13904         cppccsymbols="$cppsymbols"
13905 else
13906         if $test -s ccsym.com; then
13907                 echo "Your C compiler and pre-processor define these symbols:"
13908                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13909                 also='also '
13910                 symbols='ones'
13911                 cppccsymbols=`$cat ccsym.com`
13912                 cppccsymbols=`echo $cppccsymbols`
13913                 $test "$silent" || sleep 1
13914         fi
13915         if $test -s ccsym.cpp; then
13916                 $test "$also" && echo " "
13917                 echo "Your C pre-processor ${also}defines the following symbols:"
13918                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13919                 also='further '
13920                 cppsymbols=`$cat ccsym.cpp`
13921                 cppsymbols=`echo $cppsymbols`
13922                 $test "$silent" || sleep 1
13923         fi
13924         if $test -s ccsym.own; then
13925                 $test "$also" && echo " "
13926                 echo "Your C compiler ${also}defines the following cpp symbols:"
13927                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13928                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13929                 ccsymbols=`$cat ccsym.own`
13930                 ccsymbols=`echo $ccsymbols`
13931                 $test "$silent" || sleep 1
13932         fi
13933 fi
13934 $rm -f ccsym*
13935
13936 : see if this is a termio system
13937 val="$undef"
13938 val2="$undef"
13939 val3="$undef"
13940 if $test `./findhdr termios.h`; then
13941         set tcsetattr i_termios
13942         eval $inlibc
13943         val3="$i_termios"
13944 fi
13945 echo " "
13946 case "$val3" in
13947 "$define") echo "You have POSIX termios.h... good!" >&4;;
13948 *) if ./Cppsym pyr; then
13949                 case "`/bin/universe`" in
13950                 ucb) if $test `./findhdr sgtty.h`; then
13951                                 val2="$define"
13952                                 echo "<sgtty.h> found." >&4
13953                         else
13954                                 echo "System is pyramid with BSD universe."
13955                                 echo "<sgtty.h> not found--you could have problems." >&4
13956                         fi;;
13957                 *) if $test `./findhdr termio.h`; then
13958                                 val="$define"
13959                                 echo "<termio.h> found." >&4
13960                         else
13961                                 echo "System is pyramid with USG universe."
13962                                 echo "<termio.h> not found--you could have problems." >&4
13963                         fi;;
13964                 esac
13965         elif ./usg; then
13966                 if $test `./findhdr termio.h`; then
13967                         echo "<termio.h> found." >&4
13968                         val="$define"
13969                 elif $test `./findhdr sgtty.h`; then
13970                         echo "<sgtty.h> found." >&4
13971                         val2="$define"
13972                 else
13973 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13974                 fi
13975         else
13976                 if $test `./findhdr sgtty.h`; then
13977                         echo "<sgtty.h> found." >&4
13978                         val2="$define"
13979                 elif $test `./findhdr termio.h`; then
13980                         echo "<termio.h> found." >&4
13981                         val="$define"
13982                 else
13983 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13984                 fi
13985         fi;;
13986 esac
13987 set i_termio; eval $setvar
13988 val=$val2; set i_sgtty; eval $setvar
13989 val=$val3; set i_termios; eval $setvar
13990
13991 : see if this is a shadow.h system
13992 set shadow.h i_shadow
13993 eval $inhdr
13994
13995 : see if this is a socks.h system
13996 set socks.h i_socks
13997 eval $inhdr
13998
13999 : see if stdarg is available
14000 echo " "
14001 if $test `./findhdr stdarg.h`; then
14002         echo "<stdarg.h> found." >&4
14003         valstd="$define"
14004 else
14005         echo "<stdarg.h> NOT found." >&4
14006         valstd="$undef"
14007 fi
14008
14009 : see if varags is available
14010 echo " "
14011 if $test `./findhdr varargs.h`; then
14012         echo "<varargs.h> found." >&4
14013 else
14014         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14015 fi
14016
14017 : set up the varargs testing programs
14018 $cat > varargs.c <<EOP
14019 #ifdef I_STDARG
14020 #include <stdarg.h>
14021 #endif
14022 #ifdef I_VARARGS
14023 #include <varargs.h>
14024 #endif
14025
14026 #ifdef I_STDARG
14027 int f(char *p, ...)
14028 #else
14029 int f(va_alist)
14030 va_dcl
14031 #endif
14032 {
14033         va_list ap;
14034 #ifndef I_STDARG
14035         char *p;
14036 #endif
14037 #ifdef I_STDARG
14038         va_start(ap,p);
14039 #else
14040         va_start(ap);
14041         p = va_arg(ap, char *);
14042 #endif
14043         va_end(ap);
14044 }
14045 EOP
14046 $cat > varargs <<EOP
14047 $startsh
14048 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14049         echo "true"
14050 else
14051         echo "false"
14052 fi
14053 $rm -f varargs$_o
14054 EOP
14055 chmod +x varargs
14056
14057 : now check which varargs header should be included
14058 echo " "
14059 i_varhdr=''
14060 case "$valstd" in
14061 "$define")
14062         if `./varargs I_STDARG`; then
14063                 val='stdarg.h'
14064         elif `./varargs I_VARARGS`; then
14065                 val='varargs.h'
14066         fi
14067         ;;
14068 *)
14069         if `./varargs I_VARARGS`; then
14070                 val='varargs.h'
14071         fi
14072         ;;
14073 esac
14074 case "$val" in
14075 '')
14076 echo "I could not find the definition for va_dcl... You have problems..." >&4
14077         val="$undef"; set i_stdarg; eval $setvar
14078         val="$undef"; set i_varargs; eval $setvar
14079         ;;
14080 *) 
14081         set i_varhdr
14082         eval $setvar
14083         case "$i_varhdr" in
14084         stdarg.h)
14085                 val="$define"; set i_stdarg; eval $setvar
14086                 val="$undef"; set i_varargs; eval $setvar
14087                 ;;
14088         varargs.h)
14089                 val="$undef"; set i_stdarg; eval $setvar
14090                 val="$define"; set i_varargs; eval $setvar
14091                 ;;
14092         esac
14093         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14094 esac
14095 $rm -f varargs*
14096
14097 : see if stddef is available
14098 set stddef.h i_stddef
14099 eval $inhdr
14100
14101 : see if sys/access.h is available
14102 set sys/access.h i_sysaccess
14103 eval $inhdr
14104
14105 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14106 set sys/filio.h i_sysfilio
14107 eval $inhdr
14108 echo " "
14109 if $test `./findhdr sys/ioctl.h`; then
14110         val="$define"
14111         echo '<sys/ioctl.h> found.' >&4
14112 else
14113         val="$undef"
14114         if $test $i_sysfilio = "$define"; then
14115             echo '<sys/ioctl.h> NOT found.' >&4
14116         else
14117                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14118                 $test $i_termio = "$define" && xxx="termio.h"
14119                 $test $i_termios = "$define" && xxx="termios.h"
14120 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14121         fi
14122 fi
14123 set i_sysioctl
14124 eval $setvar
14125
14126
14127 : see if this is a syslog.h system
14128 set syslog.h i_syslog
14129 eval $inhdr
14130
14131 : see if sys/resource.h has to be included
14132 set sys/resource.h i_sysresrc
14133 eval $inhdr
14134
14135 : see if sys/security.h is available
14136 set sys/security.h i_syssecrt
14137 eval $inhdr
14138
14139 : see if this is a sys/statvfs.h system
14140 set sys/statvfs.h i_sysstatvfs
14141 eval $inhdr
14142
14143 : see if this is a sys/uio.h system
14144 set sys/uio.h i_sysuio
14145 eval $inhdr
14146
14147 : see if this is a sys/un.h system
14148 set sys/un.h i_sysun
14149 eval $inhdr
14150
14151 : see if this is a syswait system
14152 set sys/wait.h i_syswait
14153 eval $inhdr
14154
14155 : see if this is a ustat.h system
14156 set ustat.h i_ustat
14157 eval $inhdr
14158
14159 : see if this is an utime system
14160 set utime.h i_utime
14161 eval $inhdr
14162
14163 : see if this is a values.h system
14164 set values.h i_values
14165 eval $inhdr
14166
14167 : see if this is a vfork system
14168 case "$d_vfork" in
14169 "$define")
14170         set vfork.h i_vfork
14171         eval $inhdr
14172         ;;
14173 *)
14174         i_vfork="$undef"
14175         ;;
14176 esac
14177
14178 : see if gdbm.h is available
14179 set gdbm.h t_gdbm
14180 eval $inhdr
14181 case "$t_gdbm" in
14182 $define)
14183         : see if gdbm_open exists
14184         set gdbm_open d_gdbm_open
14185         eval $inlibc
14186         case "$d_gdbm_open" in
14187         $undef)
14188                 t_gdbm="$undef"
14189                 echo "We won't be including <gdbm.h>"
14190                 ;;
14191         esac
14192         ;;
14193 esac
14194 val="$t_gdbm"
14195 set i_gdbm
14196 eval $setvar
14197
14198 echo " "
14199 echo "Looking for extensions..." >&4
14200 : If we are using the old config.sh, known_extensions may contain
14201 : old or inaccurate or duplicate values.
14202 known_extensions=''
14203 nonxs_extensions=''
14204 : We do not use find because it might not be available.
14205 : We do not just use MANIFEST because the user may have dropped
14206 : some additional extensions into the source tree and expect them
14207 : to be built.
14208
14209 : Function to recursively find available extensions, ignoring DynaLoader
14210 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14211 find_extensions='
14212     for xxx in *; do
14213        case "$xxx" in
14214            DynaLoader|dynaload) ;;
14215            *)
14216            if $test -f $xxx/$xxx.xs; then
14217                known_extensions="$known_extensions $1$xxx";
14218            elif $test -f $xxx/Makefile.PL; then
14219                nonxs_extensions="$nonxs_extensions $1$xxx";
14220            else
14221                if $test -d $xxx -a $# -lt 10; then
14222                    set $1$xxx/ $*;
14223                    cd $xxx;
14224                    eval $find_extensions;
14225                    cd ..;
14226                    shift;
14227                fi;
14228            fi
14229            ;;
14230        esac;
14231     done'
14232 tdir=`pwd`
14233 cd $rsrc/ext
14234 set X
14235 shift
14236 eval $find_extensions
14237 set X $nonxs_extensions
14238 shift
14239 nonxs_extensions="$*"
14240 set X $known_extensions
14241 shift
14242 known_extensions="$*"
14243 cd $tdir
14244
14245 : Now see which are supported on this system.
14246 avail_ext=''
14247 for xxx in $known_extensions ; do
14248         case "$xxx" in
14249         DB_File|db_file)
14250                 case "$i_db" in
14251                 $define) avail_ext="$avail_ext $xxx" ;;
14252                 esac
14253                 ;;
14254         GDBM_File|gdbm_fil)
14255                 case "$i_gdbm" in 
14256                 $define) avail_ext="$avail_ext $xxx" ;;
14257                 esac
14258                 ;;
14259         NDBM_File|ndbm_fil)
14260                 case "$i_ndbm" in
14261                 $define) avail_ext="$avail_ext $xxx" ;;
14262                 esac
14263                 ;;
14264         ODBM_File|odbm_fil) 
14265                 case "${i_dbm}${i_rpcsvcdbm}" in
14266                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14267                 esac
14268                 ;;
14269         POSIX|posix)
14270                 case "$useposix" in
14271                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14272                 esac
14273                 ;;
14274         Opcode|opcode)
14275                 case "$useopcode" in
14276                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14277                 esac
14278                 ;;
14279         Socket|socket)
14280                 case "$d_socket" in 
14281                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14282                 esac
14283                 ;;
14284         Thread|thread)
14285                 case "$usethreads" in 
14286                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14287                 esac
14288                 ;;
14289         IPC/SysV|ipc/sysv)
14290                 : XXX Do we need a useipcsysv variable here
14291                 case "${d_msg}${d_sem}${d_shm}" in 
14292                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14293                 esac
14294                 ;;
14295         *)      avail_ext="$avail_ext $xxx"
14296                 ;;
14297         esac
14298 done
14299
14300 set X $avail_ext
14301 shift
14302 avail_ext="$*"
14303
14304 : Now see which nonxs extensions are supported on this system.
14305 : For now assume all are.
14306 nonxs_ext=''
14307 for xxx in $nonxs_extensions ; do
14308         case "$xxx" in
14309         *)      nonxs_ext="$nonxs_ext $xxx"
14310                 ;;
14311         esac
14312 done
14313
14314 set X $nonxs_ext
14315 shift
14316 nonxs_ext="$*"
14317
14318 case $usedl in
14319 $define)
14320         $cat <<EOM
14321 A number of extensions are supplied with $package.  You may choose to
14322 compile these extensions for dynamic loading (the default), compile
14323 them into the $package executable (static loading), or not include
14324 them at all.  Answer "none" to include no extensions.
14325 Note that DynaLoader is always built and need not be mentioned here.
14326
14327 EOM
14328         case "$dynamic_ext" in
14329         '') dflt="$avail_ext" ;;
14330         *)      dflt="$dynamic_ext"
14331                 # Perhaps we are reusing an old out-of-date config.sh.
14332                 case "$hint" in
14333                 previous)
14334                         if test X"$dynamic_ext" != X"$avail_ext"; then
14335                                 $cat <<EOM
14336 NOTICE:  Your previous config.sh list may be incorrect. 
14337 The extensions now available to you are 
14338         ${avail_ext}
14339 but the default list from your previous config.sh is
14340         ${dynamic_ext} 
14341
14342 EOM
14343                         fi
14344                         ;;
14345                 esac
14346                 ;;
14347         esac
14348         case "$dflt" in
14349         '')     dflt=none;;
14350         esac
14351         rp="What extensions do you wish to load dynamically?"
14352         . ./myread
14353         case "$ans" in
14354         none) dynamic_ext=' ' ;;
14355         *) dynamic_ext="$ans" ;;
14356         esac
14357
14358         case "$static_ext" in
14359         '')
14360                 : Exclude those already listed in dynamic linking
14361                 dflt=''
14362                 for xxx in $avail_ext; do
14363                         case " $dynamic_ext " in
14364                         *" $xxx "*) ;;
14365                         *) dflt="$dflt $xxx" ;;
14366                         esac
14367                 done
14368                 set X $dflt
14369                 shift
14370                 dflt="$*"
14371                 ;;
14372         *)  dflt="$static_ext" 
14373                 ;;
14374         esac
14375
14376         case "$dflt" in
14377         '')     dflt=none;;
14378         esac
14379         rp="What extensions do you wish to load statically?"
14380         . ./myread
14381         case "$ans" in
14382         none) static_ext=' ' ;;
14383         *) static_ext="$ans" ;;
14384         esac
14385         ;;
14386 *)
14387         $cat <<EOM
14388 A number of extensions are supplied with $package.  Answer "none" 
14389 to include no extensions. 
14390 Note that DynaLoader is always built and need not be mentioned here.
14391
14392 EOM
14393         case "$static_ext" in
14394         '') dflt="$avail_ext" ;;
14395         *)      dflt="$static_ext"
14396                 # Perhaps we are reusing an old out-of-date config.sh.
14397                 case "$hint" in
14398                 previous)
14399                         if test X"$static_ext" != X"$avail_ext"; then
14400                                 $cat <<EOM
14401 NOTICE:  Your previous config.sh list may be incorrect. 
14402 The extensions now available to you are 
14403         ${avail_ext}
14404 but the default list from your previous config.sh is
14405         ${static_ext} 
14406
14407 EOM
14408                         fi
14409                         ;;
14410                 esac
14411                 ;;
14412         esac
14413         : Exclude those that are not xs extensions
14414         case "$dflt" in
14415         '')     dflt=none;;
14416         esac
14417         rp="What extensions do you wish to include?"
14418         . ./myread
14419         case "$ans" in
14420         none) static_ext=' ' ;;
14421         *) static_ext="$ans" ;;
14422         esac
14423         ;;
14424 esac
14425
14426 set X $dynamic_ext $static_ext $nonxs_ext
14427 shift
14428 extensions="$*"
14429
14430 : Remove build directory name from cppstdin so it can be used from
14431 : either the present location or the final installed location.
14432 echo " "
14433 : Get out of the UU directory to get correct path name.
14434 cd ..
14435 case "$cppstdin" in
14436 `pwd`/cppstdin)
14437         echo "Stripping down cppstdin path name"
14438         cppstdin=cppstdin
14439         ;;
14440 esac
14441 cd UU
14442
14443 : end of configuration questions
14444 echo " "
14445 echo "End of configuration questions."
14446 echo " "
14447
14448 : back to where it started
14449 if test -d ../UU; then
14450         cd ..
14451 fi
14452
14453 : configuration may be patched via a 'config.over' file
14454 if $test -f config.over; then
14455         echo " "
14456         dflt=y
14457         rp='I see a config.over file.  Do you wish to load it?'
14458         . UU/myread
14459         case "$ans" in
14460         n*) echo "OK, I'll ignore it.";;
14461         *)      . ./config.over
14462                 echo "Configuration override changes have been loaded."
14463                 ;;
14464         esac
14465 fi
14466
14467 : in case they want portability, strip down executable paths
14468 case "$d_portable" in
14469 "$define")
14470         echo " "
14471         echo "Stripping down executable paths..." >&4
14472         for file in $loclist $trylist; do
14473                 eval temp=\$$file
14474                 eval $file=`basename $temp`
14475         done
14476         ;;
14477 esac
14478
14479 : create config.sh file
14480 echo " "
14481 echo "Creating config.sh..." >&4
14482 $spitshell <<EOT >config.sh
14483 $startsh
14484 #
14485 # This file was produced by running the Configure script. It holds all the
14486 # definitions figured out by Configure. Should you modify one of these values,
14487 # do not forget to propagate your changes by running "Configure -der". You may
14488 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14489 #
14490
14491 # Package name      : $package
14492 # Source directory  : $src
14493 # Configuration time: $cf_time
14494 # Configured by     : $cf_by
14495 # Target system     : $myuname
14496
14497 Author='$Author'
14498 Date='$Date'
14499 Header='$Header'
14500 Id='$Id'
14501 Locker='$Locker'
14502 Log='$Log'
14503 Mcc='$Mcc'
14504 RCSfile='$RCSfile'
14505 Revision='$Revision'
14506 Source='$Source'
14507 State='$State'
14508 _a='$_a'
14509 _exe='$_exe'
14510 _o='$_o'
14511 afs='$afs'
14512 alignbytes='$alignbytes'
14513 ansi2knr='$ansi2knr'
14514 aphostname='$aphostname'
14515 api_revision='$api_revision'
14516 api_subversion='$api_subversion'
14517 api_version='$api_version'
14518 api_versionstring='$api_versionstring'
14519 ar='$ar'
14520 archlib='$archlib'
14521 archlibexp='$archlibexp'
14522 archname64='$archname64'
14523 archname='$archname'
14524 archobjs='$archobjs'
14525 awk='$awk'
14526 baserev='$baserev'
14527 bash='$bash'
14528 bin='$bin'
14529 bincompat5005='$bincompat5005'
14530 binexp='$binexp'
14531 bison='$bison'
14532 byacc='$byacc'
14533 byteorder='$byteorder'
14534 c='$c'
14535 castflags='$castflags'
14536 cat='$cat'
14537 cc='$cc'
14538 cccdlflags='$cccdlflags'
14539 ccdlflags='$ccdlflags'
14540 ccflags='$ccflags'
14541 ccsymbols='$ccsymbols'
14542 cf_by='$cf_by'
14543 cf_email='$cf_email'
14544 cf_time='$cf_time'
14545 charsize='$charsize'
14546 chgrp='$chgrp'
14547 chmod='$chmod'
14548 chown='$chown'
14549 clocktype='$clocktype'
14550 comm='$comm'
14551 compress='$compress'
14552 contains='$contains'
14553 cp='$cp'
14554 cpio='$cpio'
14555 cpp='$cpp'
14556 cpp_stuff='$cpp_stuff'
14557 cppccsymbols='$cppccsymbols'
14558 cppflags='$cppflags'
14559 cpplast='$cpplast'
14560 cppminus='$cppminus'
14561 cpprun='$cpprun'
14562 cppstdin='$cppstdin'
14563 cppsymbols='$cppsymbols'
14564 crosscompile='$crosscompile'
14565 cryptlib='$cryptlib'
14566 csh='$csh'
14567 d_Gconvert='$d_Gconvert'
14568 d_PRIEldbl='$d_PRIEldbl'
14569 d_PRIFldbl='$d_PRIFldbl'
14570 d_PRIGldbl='$d_PRIGldbl'
14571 d_PRIX64='$d_PRIX64'
14572 d_PRId64='$d_PRId64'
14573 d_PRIeldbl='$d_PRIeldbl'
14574 d_PRIfldbl='$d_PRIfldbl'
14575 d_PRIgldbl='$d_PRIgldbl'
14576 d_PRIi64='$d_PRIi64'
14577 d_PRIo64='$d_PRIo64'
14578 d_PRIu64='$d_PRIu64'
14579 d_PRIx64='$d_PRIx64'
14580 d_access='$d_access'
14581 d_accessx='$d_accessx'
14582 d_alarm='$d_alarm'
14583 d_archlib='$d_archlib'
14584 d_atolf='$d_atolf'
14585 d_atoll='$d_atoll'
14586 d_attribut='$d_attribut'
14587 d_bcmp='$d_bcmp'
14588 d_bcopy='$d_bcopy'
14589 d_bincompat5005='$d_bincompat5005'
14590 d_bsd='$d_bsd'
14591 d_bsdgetpgrp='$d_bsdgetpgrp'
14592 d_bsdsetpgrp='$d_bsdsetpgrp'
14593 d_bzero='$d_bzero'
14594 d_casti32='$d_casti32'
14595 d_castneg='$d_castneg'
14596 d_charvspr='$d_charvspr'
14597 d_chown='$d_chown'
14598 d_chroot='$d_chroot'
14599 d_chsize='$d_chsize'
14600 d_closedir='$d_closedir'
14601 d_const='$d_const'
14602 d_crypt='$d_crypt'
14603 d_csh='$d_csh'
14604 d_cuserid='$d_cuserid'
14605 d_dbl_dig='$d_dbl_dig'
14606 d_difftime='$d_difftime'
14607 d_dirnamlen='$d_dirnamlen'
14608 d_dlerror='$d_dlerror'
14609 d_dlopen='$d_dlopen'
14610 d_dlsymun='$d_dlsymun'
14611 d_dosuid='$d_dosuid'
14612 d_drand48proto='$d_drand48proto'
14613 d_dup2='$d_dup2'
14614 d_eaccess='$d_eaccess'
14615 d_endgrent='$d_endgrent'
14616 d_endhent='$d_endhent'
14617 d_endnent='$d_endnent'
14618 d_endpent='$d_endpent'
14619 d_endpwent='$d_endpwent'
14620 d_endsent='$d_endsent'
14621 d_endspent='$d_endspent'
14622 d_eofnblk='$d_eofnblk'
14623 d_eunice='$d_eunice'
14624 d_fchmod='$d_fchmod'
14625 d_fchown='$d_fchown'
14626 d_fcntl='$d_fcntl'
14627 d_fd_macros='$d_fd_macros'
14628 d_fd_set='$d_fd_set'
14629 d_fds_bits='$d_fds_bits'
14630 d_fgetpos='$d_fgetpos'
14631 d_flexfnam='$d_flexfnam'
14632 d_flock='$d_flock'
14633 d_fork='$d_fork'
14634 d_fpathconf='$d_fpathconf'
14635 d_fpos64_t='$d_fpos64_t'
14636 d_fs_data_s='$d_fs_data_s'
14637 d_fseeko='$d_fseeko'
14638 d_fsetpos='$d_fsetpos'
14639 d_fstatfs='$d_fstatfs'
14640 d_fstatvfs='$d_fstatvfs'
14641 d_ftello='$d_ftello'
14642 d_ftime='$d_ftime'
14643 d_getcwd='$d_getcwd'
14644 d_getgrent='$d_getgrent'
14645 d_getgrps='$d_getgrps'
14646 d_gethbyaddr='$d_gethbyaddr'
14647 d_gethbyname='$d_gethbyname'
14648 d_gethent='$d_gethent'
14649 d_gethname='$d_gethname'
14650 d_gethostprotos='$d_gethostprotos'
14651 d_getlogin='$d_getlogin'
14652 d_getmnt='$d_getmnt'
14653 d_getmntent='$d_getmntent'
14654 d_getnbyaddr='$d_getnbyaddr'
14655 d_getnbyname='$d_getnbyname'
14656 d_getnent='$d_getnent'
14657 d_getnetprotos='$d_getnetprotos'
14658 d_getpbyname='$d_getpbyname'
14659 d_getpbynumber='$d_getpbynumber'
14660 d_getpent='$d_getpent'
14661 d_getpgid='$d_getpgid'
14662 d_getpgrp2='$d_getpgrp2'
14663 d_getpgrp='$d_getpgrp'
14664 d_getppid='$d_getppid'
14665 d_getprior='$d_getprior'
14666 d_getprotoprotos='$d_getprotoprotos'
14667 d_getpwent='$d_getpwent'
14668 d_getsbyname='$d_getsbyname'
14669 d_getsbyport='$d_getsbyport'
14670 d_getsent='$d_getsent'
14671 d_getservprotos='$d_getservprotos'
14672 d_getspent='$d_getspent'
14673 d_getspnam='$d_getspnam'
14674 d_gettimeod='$d_gettimeod'
14675 d_gnulibc='$d_gnulibc'
14676 d_grpasswd='$d_grpasswd'
14677 d_hasmntopt='$d_hasmntopt'
14678 d_htonl='$d_htonl'
14679 d_iconv='$d_iconv'
14680 d_index='$d_index'
14681 d_inetaton='$d_inetaton'
14682 d_int64t='$d_int64t'
14683 d_isascii='$d_isascii'
14684 d_killpg='$d_killpg'
14685 d_lchown='$d_lchown'
14686 d_ldbl_dig='$d_ldbl_dig'
14687 d_link='$d_link'
14688 d_locconv='$d_locconv'
14689 d_lockf='$d_lockf'
14690 d_longdbl='$d_longdbl'
14691 d_longlong='$d_longlong'
14692 d_lstat='$d_lstat'
14693 d_mblen='$d_mblen'
14694 d_mbstowcs='$d_mbstowcs'
14695 d_mbtowc='$d_mbtowc'
14696 d_memchr='$d_memchr'
14697 d_memcmp='$d_memcmp'
14698 d_memcpy='$d_memcpy'
14699 d_memmove='$d_memmove'
14700 d_memset='$d_memset'
14701 d_mkdir='$d_mkdir'
14702 d_mkdtemp='$d_mkdtemp'
14703 d_mkfifo='$d_mkfifo'
14704 d_mkstemp='$d_mkstemp'
14705 d_mkstemps='$d_mkstemps'
14706 d_mktime='$d_mktime'
14707 d_mmap='$d_mmap'
14708 d_mprotect='$d_mprotect'
14709 d_msg='$d_msg'
14710 d_msg_ctrunc='$d_msg_ctrunc'
14711 d_msg_dontroute='$d_msg_dontroute'
14712 d_msg_oob='$d_msg_oob'
14713 d_msg_peek='$d_msg_peek'
14714 d_msg_proxy='$d_msg_proxy'
14715 d_msgctl='$d_msgctl'
14716 d_msgget='$d_msgget'
14717 d_msgrcv='$d_msgrcv'
14718 d_msgsnd='$d_msgsnd'
14719 d_msync='$d_msync'
14720 d_munmap='$d_munmap'
14721 d_mymalloc='$d_mymalloc'
14722 d_nice='$d_nice'
14723 d_nv_preserves_uv='$d_nv_preserves_uv'
14724 d_off64_t='$d_off64_t'
14725 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14726 d_oldpthreads='$d_oldpthreads'
14727 d_oldsock='$d_oldsock'
14728 d_open3='$d_open3'
14729 d_pathconf='$d_pathconf'
14730 d_pause='$d_pause'
14731 d_phostname='$d_phostname'
14732 d_pipe='$d_pipe'
14733 d_poll='$d_poll'
14734 d_portable='$d_portable'
14735 d_pthread_yield='$d_pthread_yield'
14736 d_pwage='$d_pwage'
14737 d_pwchange='$d_pwchange'
14738 d_pwclass='$d_pwclass'
14739 d_pwcomment='$d_pwcomment'
14740 d_pwexpire='$d_pwexpire'
14741 d_pwgecos='$d_pwgecos'
14742 d_pwpasswd='$d_pwpasswd'
14743 d_pwquota='$d_pwquota'
14744 d_quad='$d_quad'
14745 d_readdir='$d_readdir'
14746 d_readlink='$d_readlink'
14747 d_rename='$d_rename'
14748 d_rewinddir='$d_rewinddir'
14749 d_rmdir='$d_rmdir'
14750 d_safebcpy='$d_safebcpy'
14751 d_safemcpy='$d_safemcpy'
14752 d_sanemcmp='$d_sanemcmp'
14753 d_sched_yield='$d_sched_yield'
14754 d_scm_rights='$d_scm_rights'
14755 d_seekdir='$d_seekdir'
14756 d_select='$d_select'
14757 d_sem='$d_sem'
14758 d_semctl='$d_semctl'
14759 d_semctl_semid_ds='$d_semctl_semid_ds'
14760 d_semctl_semun='$d_semctl_semun'
14761 d_semget='$d_semget'
14762 d_semop='$d_semop'
14763 d_setegid='$d_setegid'
14764 d_seteuid='$d_seteuid'
14765 d_setgrent='$d_setgrent'
14766 d_setgrps='$d_setgrps'
14767 d_sethent='$d_sethent'
14768 d_setlinebuf='$d_setlinebuf'
14769 d_setlocale='$d_setlocale'
14770 d_setnent='$d_setnent'
14771 d_setpent='$d_setpent'
14772 d_setpgid='$d_setpgid'
14773 d_setpgrp2='$d_setpgrp2'
14774 d_setpgrp='$d_setpgrp'
14775 d_setprior='$d_setprior'
14776 d_setpwent='$d_setpwent'
14777 d_setregid='$d_setregid'
14778 d_setresgid='$d_setresgid'
14779 d_setresuid='$d_setresuid'
14780 d_setreuid='$d_setreuid'
14781 d_setrgid='$d_setrgid'
14782 d_setruid='$d_setruid'
14783 d_setsent='$d_setsent'
14784 d_setsid='$d_setsid'
14785 d_setspent='$d_setspent'
14786 d_setvbuf='$d_setvbuf'
14787 d_sfio='$d_sfio'
14788 d_shm='$d_shm'
14789 d_shmat='$d_shmat'
14790 d_shmatprototype='$d_shmatprototype'
14791 d_shmctl='$d_shmctl'
14792 d_shmdt='$d_shmdt'
14793 d_shmget='$d_shmget'
14794 d_sigaction='$d_sigaction'
14795 d_sigsetjmp='$d_sigsetjmp'
14796 d_socket='$d_socket'
14797 d_sockpair='$d_sockpair'
14798 d_sqrtl='$d_sqrtl'
14799 d_statblks='$d_statblks'
14800 d_statfs_f_flags='$d_statfs_f_flags'
14801 d_statfs_s='$d_statfs_s'
14802 d_statvfs='$d_statvfs'
14803 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14804 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14805 d_stdio_stream_array='$d_stdio_stream_array'
14806 d_stdiobase='$d_stdiobase'
14807 d_stdstdio='$d_stdstdio'
14808 d_strchr='$d_strchr'
14809 d_strcoll='$d_strcoll'
14810 d_strctcpy='$d_strctcpy'
14811 d_strerrm='$d_strerrm'
14812 d_strerror='$d_strerror'
14813 d_strtod='$d_strtod'
14814 d_strtol='$d_strtol'
14815 d_strtold='$d_strtold'
14816 d_strtoll='$d_strtoll'
14817 d_strtoul='$d_strtoul'
14818 d_strtoull='$d_strtoull'
14819 d_strtouq='$d_strtouq'
14820 d_strxfrm='$d_strxfrm'
14821 d_suidsafe='$d_suidsafe'
14822 d_symlink='$d_symlink'
14823 d_syscall='$d_syscall'
14824 d_sysconf='$d_sysconf'
14825 d_sysernlst='$d_sysernlst'
14826 d_syserrlst='$d_syserrlst'
14827 d_system='$d_system'
14828 d_tcgetpgrp='$d_tcgetpgrp'
14829 d_tcsetpgrp='$d_tcsetpgrp'
14830 d_telldir='$d_telldir'
14831 d_telldirproto='$d_telldirproto'
14832 d_time='$d_time'
14833 d_times='$d_times'
14834 d_truncate='$d_truncate'
14835 d_tzname='$d_tzname'
14836 d_umask='$d_umask'
14837 d_uname='$d_uname'
14838 d_union_semun='$d_union_semun'
14839 d_ustat='$d_ustat'
14840 d_vendorbin='$d_vendorbin'
14841 d_vendorlib='$d_vendorlib'
14842 d_vfork='$d_vfork'
14843 d_void_closedir='$d_void_closedir'
14844 d_voidsig='$d_voidsig'
14845 d_voidtty='$d_voidtty'
14846 d_volatile='$d_volatile'
14847 d_vprintf='$d_vprintf'
14848 d_wait4='$d_wait4'
14849 d_waitpid='$d_waitpid'
14850 d_wcstombs='$d_wcstombs'
14851 d_wctomb='$d_wctomb'
14852 d_xenix='$d_xenix'
14853 date='$date'
14854 db_hashtype='$db_hashtype'
14855 db_prefixtype='$db_prefixtype'
14856 defvoidused='$defvoidused'
14857 direntrytype='$direntrytype'
14858 dlext='$dlext'
14859 dlsrc='$dlsrc'
14860 doublesize='$doublesize'
14861 drand01='$drand01'
14862 dynamic_ext='$dynamic_ext'
14863 eagain='$eagain'
14864 ebcdic='$ebcdic'
14865 echo='$echo'
14866 egrep='$egrep'
14867 emacs='$emacs'
14868 eunicefix='$eunicefix'
14869 exe_ext='$exe_ext'
14870 expr='$expr'
14871 extensions='$extensions'
14872 fflushNULL='$fflushNULL'
14873 fflushall='$fflushall'
14874 find='$find'
14875 firstmakefile='$firstmakefile'
14876 flex='$flex'
14877 fpossize='$fpossize'
14878 fpostype='$fpostype'
14879 freetype='$freetype'
14880 full_ar='$full_ar'
14881 full_csh='$full_csh'
14882 full_sed='$full_sed'
14883 gccversion='$gccversion'
14884 gidformat='$gidformat'
14885 gidsign='$gidsign'
14886 gidsize='$gidsize'
14887 gidtype='$gidtype'
14888 glibpth='$glibpth'
14889 grep='$grep'
14890 groupcat='$groupcat'
14891 groupstype='$groupstype'
14892 gzip='$gzip'
14893 h_fcntl='$h_fcntl'
14894 h_sysfile='$h_sysfile'
14895 hint='$hint'
14896 hostcat='$hostcat'
14897 huge='$huge'
14898 i16size='$i16size'
14899 i16type='$i16type'
14900 i32size='$i32size'
14901 i32type='$i32type'
14902 i64size='$i64size'
14903 i64type='$i64type'
14904 i8size='$i8size'
14905 i8type='$i8type'
14906 i_arpainet='$i_arpainet'
14907 i_bsdioctl='$i_bsdioctl'
14908 i_db='$i_db'
14909 i_dbm='$i_dbm'
14910 i_dirent='$i_dirent'
14911 i_dld='$i_dld'
14912 i_dlfcn='$i_dlfcn'
14913 i_fcntl='$i_fcntl'
14914 i_float='$i_float'
14915 i_gdbm='$i_gdbm'
14916 i_grp='$i_grp'
14917 i_iconv='$i_iconv'
14918 i_inttypes='$i_inttypes'
14919 i_limits='$i_limits'
14920 i_locale='$i_locale'
14921 i_machcthr='$i_machcthr'
14922 i_malloc='$i_malloc'
14923 i_math='$i_math'
14924 i_memory='$i_memory'
14925 i_mntent='$i_mntent'
14926 i_ndbm='$i_ndbm'
14927 i_netdb='$i_netdb'
14928 i_neterrno='$i_neterrno'
14929 i_netinettcp='$i_netinettcp'
14930 i_niin='$i_niin'
14931 i_poll='$i_poll'
14932 i_pthread='$i_pthread'
14933 i_pwd='$i_pwd'
14934 i_rpcsvcdbm='$i_rpcsvcdbm'
14935 i_sfio='$i_sfio'
14936 i_sgtty='$i_sgtty'
14937 i_shadow='$i_shadow'
14938 i_socks='$i_socks'
14939 i_stdarg='$i_stdarg'
14940 i_stddef='$i_stddef'
14941 i_stdlib='$i_stdlib'
14942 i_string='$i_string'
14943 i_sysaccess='$i_sysaccess'
14944 i_sysdir='$i_sysdir'
14945 i_sysfile='$i_sysfile'
14946 i_sysfilio='$i_sysfilio'
14947 i_sysin='$i_sysin'
14948 i_sysioctl='$i_sysioctl'
14949 i_syslog='$i_syslog'
14950 i_sysmman='$i_sysmman'
14951 i_sysmount='$i_sysmount'
14952 i_sysndir='$i_sysndir'
14953 i_sysparam='$i_sysparam'
14954 i_sysresrc='$i_sysresrc'
14955 i_syssecrt='$i_syssecrt'
14956 i_sysselct='$i_sysselct'
14957 i_syssockio='$i_syssockio'
14958 i_sysstat='$i_sysstat'
14959 i_sysstatfs='$i_sysstatfs'
14960 i_sysstatvfs='$i_sysstatvfs'
14961 i_systime='$i_systime'
14962 i_systimek='$i_systimek'
14963 i_systimes='$i_systimes'
14964 i_systypes='$i_systypes'
14965 i_sysuio='$i_sysuio'
14966 i_sysun='$i_sysun'
14967 i_sysvfs='$i_sysvfs'
14968 i_syswait='$i_syswait'
14969 i_termio='$i_termio'
14970 i_termios='$i_termios'
14971 i_time='$i_time'
14972 i_unistd='$i_unistd'
14973 i_ustat='$i_ustat'
14974 i_utime='$i_utime'
14975 i_values='$i_values'
14976 i_varargs='$i_varargs'
14977 i_varhdr='$i_varhdr'
14978 i_vfork='$i_vfork'
14979 ignore_versioned_solibs='$ignore_versioned_solibs'
14980 inc_version_list='$inc_version_list'
14981 inc_version_list_init='$inc_version_list_init'
14982 incpath='$incpath'
14983 inews='$inews'
14984 installarchlib='$installarchlib'
14985 installbin='$installbin'
14986 installman1dir='$installman1dir'
14987 installman3dir='$installman3dir'
14988 installprefix='$installprefix'
14989 installprefixexp='$installprefixexp'
14990 installprivlib='$installprivlib'
14991 installscript='$installscript'
14992 installsitearch='$installsitearch'
14993 installsitebin='$installsitebin'
14994 installsitelib='$installsitelib'
14995 installstyle='$installstyle'
14996 installusrbinperl='$installusrbinperl'
14997 installvendorbin='$installvendorbin'
14998 installvendorlib='$installvendorlib'
14999 intsize='$intsize'
15000 ivdformat='$ivdformat'
15001 ivsize='$ivsize'
15002 ivtype='$ivtype'
15003 known_extensions='$known_extensions'
15004 ksh='$ksh'
15005 large='$large'
15006 ld='$ld'
15007 lddlflags='$lddlflags'
15008 ldflags='$ldflags'
15009 ldlibpthname='$ldlibpthname'
15010 less='$less'
15011 lib_ext='$lib_ext'
15012 libc='$libc'
15013 libperl='$libperl'
15014 libpth='$libpth'
15015 libs='$libs'
15016 libsdirs='$libsdirs'
15017 libsfiles='$libsfiles'
15018 libsfound='$libsfound'
15019 libswanted='$libswanted'
15020 line='$line'
15021 lint='$lint'
15022 lkflags='$lkflags'
15023 ln='$ln'
15024 lns='$lns'
15025 locincpth='$locincpth'
15026 loclibpth='$loclibpth'
15027 longdblsize='$longdblsize'
15028 longlongsize='$longlongsize'
15029 longsize='$longsize'
15030 lp='$lp'
15031 lpr='$lpr'
15032 ls='$ls'
15033 lseeksize='$lseeksize'
15034 lseektype='$lseektype'
15035 mail='$mail'
15036 mailx='$mailx'
15037 make='$make'
15038 make_set_make='$make_set_make'
15039 mallocobj='$mallocobj'
15040 mallocsrc='$mallocsrc'
15041 malloctype='$malloctype'
15042 man1dir='$man1dir'
15043 man1direxp='$man1direxp'
15044 man1ext='$man1ext'
15045 man3dir='$man3dir'
15046 man3direxp='$man3direxp'
15047 man3ext='$man3ext'
15048 medium='$medium'
15049 mips_type='$mips_type'
15050 mkdir='$mkdir'
15051 mmaptype='$mmaptype'
15052 models='$models'
15053 modetype='$modetype'
15054 more='$more'
15055 multiarch='$multiarch'
15056 mv='$mv'
15057 myarchname='$myarchname'
15058 mydomain='$mydomain'
15059 myhostname='$myhostname'
15060 myuname='$myuname'
15061 n='$n'
15062 netdb_hlen_type='$netdb_hlen_type'
15063 netdb_host_type='$netdb_host_type'
15064 netdb_name_type='$netdb_name_type'
15065 netdb_net_type='$netdb_net_type'
15066 nm='$nm'
15067 nm_opt='$nm_opt'
15068 nm_so_opt='$nm_so_opt'
15069 nonxs_ext='$nonxs_ext'
15070 nroff='$nroff'
15071 nvsize='$nvsize'
15072 nvtype='$nvtype'
15073 o_nonblock='$o_nonblock'
15074 obj_ext='$obj_ext'
15075 old_pthread_create_joinable='$old_pthread_create_joinable'
15076 optimize='$optimize'
15077 orderlib='$orderlib'
15078 osname='$osname'
15079 osvers='$osvers'
15080 package='$package'
15081 pager='$pager'
15082 passcat='$passcat'
15083 patchlevel='$patchlevel'
15084 path_sep='$path_sep'
15085 perl='$perl'
15086 perladmin='$perladmin'
15087 perlpath='$perlpath'
15088 pg='$pg'
15089 phostname='$phostname'
15090 pidtype='$pidtype'
15091 plibpth='$plibpth'
15092 pm_apiversion='$pm_apiversion'
15093 pmake='$pmake'
15094 pr='$pr'
15095 prefix='$prefix'
15096 prefixexp='$prefixexp'
15097 privlib='$privlib'
15098 privlibexp='$privlibexp'
15099 prototype='$prototype'
15100 ptrsize='$ptrsize'
15101 quadkind='$quadkind'
15102 quadtype='$quadtype'
15103 randbits='$randbits'
15104 randfunc='$randfunc'
15105 randseedtype='$randseedtype'
15106 ranlib='$ranlib'
15107 rd_nodata='$rd_nodata'
15108 rm='$rm'
15109 rmail='$rmail'
15110 runnm='$runnm'
15111 sPRIEldbl='$sPRIEldbl'
15112 sPRIFldbl='$sPRIFldbl'
15113 sPRIGldbl='$sPRIGldbl'
15114 sPRIX64='$sPRIX64'
15115 sPRId64='$sPRId64'
15116 sPRIeldbl='$sPRIeldbl'
15117 sPRIfldbl='$sPRIfldbl'
15118 sPRIgldbl='$sPRIgldbl'
15119 sPRIi64='$sPRIi64'
15120 sPRIo64='$sPRIo64'
15121 sPRIu64='$sPRIu64'
15122 sPRIx64='$sPRIx64'
15123 sched_yield='$sched_yield'
15124 scriptdir='$scriptdir'
15125 scriptdirexp='$scriptdirexp'
15126 sed='$sed'
15127 seedfunc='$seedfunc'
15128 selectminbits='$selectminbits'
15129 selecttype='$selecttype'
15130 sendmail='$sendmail'
15131 sh='$sh'
15132 shar='$shar'
15133 sharpbang='$sharpbang'
15134 shmattype='$shmattype'
15135 shortsize='$shortsize'
15136 shrpenv='$shrpenv'
15137 shsharp='$shsharp'
15138 sig_count='$sig_count'
15139 sig_name='$sig_name'
15140 sig_name_init='$sig_name_init'
15141 sig_num='$sig_num'
15142 sig_num_init='$sig_num_init'
15143 signal_t='$signal_t'
15144 sitearch='$sitearch'
15145 sitearchexp='$sitearchexp'
15146 sitebin='$sitebin'
15147 sitebinexp='$sitebinexp'
15148 sitelib='$sitelib'
15149 sitelibexp='$sitelibexp'
15150 siteprefix='$siteprefix'
15151 siteprefixexp='$siteprefixexp'
15152 sizetype='$sizetype'
15153 sleep='$sleep'
15154 smail='$smail'
15155 small='$small'
15156 so='$so'
15157 sockethdr='$sockethdr'
15158 socketlib='$socketlib'
15159 sort='$sort'
15160 spackage='$spackage'
15161 spitshell='$spitshell'
15162 split='$split'
15163 src='$src'
15164 ssizetype='$ssizetype'
15165 startperl='$startperl'
15166 startsh='$startsh'
15167 static_ext='$static_ext'
15168 stdchar='$stdchar'
15169 stdio_base='$stdio_base'
15170 stdio_bufsiz='$stdio_bufsiz'
15171 stdio_cnt='$stdio_cnt'
15172 stdio_filbuf='$stdio_filbuf'
15173 stdio_ptr='$stdio_ptr'
15174 stdio_stream_array='$stdio_stream_array'
15175 strings='$strings'
15176 submit='$submit'
15177 subversion='$subversion'
15178 sysman='$sysman'
15179 tail='$tail'
15180 tar='$tar'
15181 tbl='$tbl'
15182 tee='$tee'
15183 test='$test'
15184 timeincl='$timeincl'
15185 timetype='$timetype'
15186 touch='$touch'
15187 tr='$tr'
15188 trnl='$trnl'
15189 troff='$troff'
15190 u16size='$u16size'
15191 u16type='$u16type'
15192 u32size='$u32size'
15193 u32type='$u32type'
15194 u64size='$u64size'
15195 u64type='$u64type'
15196 u8size='$u8size'
15197 u8type='$u8type'
15198 uidformat='$uidformat'
15199 uidsign='$uidsign'
15200 uidsize='$uidsize'
15201 uidtype='$uidtype'
15202 uname='$uname'
15203 uniq='$uniq'
15204 uquadtype='$uquadtype'
15205 use5005threads='$use5005threads'
15206 use64bits='$use64bits'
15207 usedl='$usedl'
15208 useithreads='$useithreads'
15209 uselargefiles='$uselargefiles'
15210 uselongdouble='$uselongdouble'
15211 uselonglong='$uselonglong'
15212 usemorebits='$usemorebits'
15213 usemultiplicity='$usemultiplicity'
15214 usemymalloc='$usemymalloc'
15215 usenm='$usenm'
15216 useopcode='$useopcode'
15217 useperlio='$useperlio'
15218 useposix='$useposix'
15219 usesfio='$usesfio'
15220 useshrplib='$useshrplib'
15221 usesocks='$usesocks'
15222 usethreads='$usethreads'
15223 usevendorprefix='$usevendorprefix'
15224 usevfork='$usevfork'
15225 usrinc='$usrinc'
15226 uuname='$uuname'
15227 uvoformat='$uvoformat'
15228 uvsize='$uvsize'
15229 uvtype='$uvtype'
15230 uvuformat='$uvuformat'
15231 uvxformat='$uvxformat'
15232 vendorbin='$vendorbin'
15233 vendorbinexp='$vendorbinexp'
15234 vendorlib='$vendorlib'
15235 vendorlibexp='$vendorlibexp'
15236 vendorprefix='$vendorprefix'
15237 vendorprefixexp='$vendorprefixexp'
15238 version='$version'
15239 vi='$vi'
15240 voidflags='$voidflags'
15241 xlibpth='$xlibpth'
15242 xs_apiversion='$xs_apiversion'
15243 zcat='$zcat'
15244 zip='$zip'
15245 EOT
15246
15247 : Add in command line options if available
15248 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15249
15250 : add special variables
15251 $test -f $src/patchlevel.h && \
15252 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15253 echo "CONFIGDOTSH=true" >>config.sh
15254
15255 : propagate old symbols
15256 if $test -f UU/config.sh; then
15257         <UU/config.sh sort | uniq >UU/oldconfig.sh
15258         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15259         sort | uniq -u >UU/oldsyms
15260         set X `cat UU/oldsyms`
15261         shift
15262         case $# in
15263         0) ;;
15264         *)
15265                 cat <<EOM
15266 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15267 EOM
15268                 echo "# Variables propagated from previous config.sh file." >>config.sh
15269                 for sym in `cat UU/oldsyms`; do
15270                         echo "    Propagating $hint variable "'$'"$sym..."
15271                         eval 'tmp="$'"${sym}"'"'
15272                         echo "$tmp" | \
15273                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15274                 done
15275                 ;;
15276         esac
15277 fi
15278
15279 : Finish up by extracting the .SH files
15280 case "$alldone" in
15281 exit)
15282         $rm -rf UU
15283         echo "Done."
15284         exit 0
15285         ;;
15286 cont)
15287         ;;
15288 '')
15289         dflt=''
15290         nostick=true
15291         $cat <<EOM
15292
15293 If you'd like to make any changes to the config.sh file before I begin
15294 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15295
15296 EOM
15297         rp="Press return or use a shell escape to edit config.sh:"
15298         . UU/myread
15299         nostick=''
15300         case "$ans" in
15301         '') ;;
15302         *) : in case they cannot read
15303                 sh 1>&4 -c "$ans";;
15304         esac
15305         ;;
15306 esac
15307
15308 : if this fails, just run all the .SH files by hand
15309 . ./config.sh
15310
15311 echo " "
15312 exec 1>&4
15313 . ./UU/extract
15314
15315 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15316         dflt=y
15317         case "$silent" in
15318         true) ;;
15319         *)
15320                 $cat <<EOM
15321
15322 Now you need to generate make dependencies by running "$make depend".
15323 You might prefer to run it in background: "$make depend > makedepend.out &"
15324 It can take a while, so you might not want to run it right now.
15325
15326 EOM
15327                 ;;
15328         esac
15329         rp="Run $make depend now?"
15330         . UU/myread
15331         case "$ans" in
15332         y*)
15333                 $make depend && echo "Now you must run a $make."
15334                 ;;
15335         *)
15336                 echo "You must run '$make depend' then '$make'."
15337                 ;;
15338         esac
15339 elif test -f [Mm]akefile; then
15340         echo " "
15341         echo "Now you must run a $make."
15342 else
15343         echo "Done."
15344 fi
15345
15346 if $test -f Policy.sh; then
15347     $cat <<EOM
15348
15349 If you compile $package on a different machine or from a different object
15350 directory, copy the Policy.sh file from this object directory to the
15351 new one before you run Configure -- this will help you with most of
15352 the policy defaults.
15353
15354 EOM
15355 fi
15356 if $test -f config.msg; then
15357     echo "Hmm.  I also noted the following information while running:"
15358     echo " "
15359     $cat config.msg >&4
15360     $rm -f config.msg
15361 fi
15362 $rm -f kit*isdone ark*isdone
15363 $rm -rf UU
15364
15365 : End of Configure
15366