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