161515174b4d646eb0bd72ea769efa20ddd82a68
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Tue Aug 29 23:13:26 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 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 ccflags=''
292 cppflags=''
293 ldflags=''
294 lkflags=''
295 locincpth=''
296 optimize=''
297 cf_email=''
298 cf_by=''
299 cf_time=''
300 charsize=''
301 contains=''
302 cpp_stuff=''
303 cpplast=''
304 cppminus=''
305 cpprun=''
306 cppstdin=''
307 crosscompile=''
308 d_access=''
309 d_accessx=''
310 d_alarm=''
311 d_attribut=''
312 d_bcmp=''
313 d_bcopy=''
314 d_bzero=''
315 d_casti32=''
316 castflags=''
317 d_castneg=''
318 d_chown=''
319 d_chroot=''
320 d_chsize=''
321 d_closedir=''
322 d_void_closedir=''
323 d_const=''
324 cryptlib=''
325 d_crypt=''
326 d_csh=''
327 full_csh=''
328 d_cuserid=''
329 d_dbl_dig=''
330 d_difftime=''
331 d_dlerror=''
332 d_dlopen=''
333 d_dlsymun=''
334 d_dosuid=''
335 d_suidsafe=''
336 d_drand48proto=''
337 d_dup2=''
338 d_eaccess=''
339 d_endgrent=''
340 d_endhent=''
341 d_endnent=''
342 d_endpent=''
343 d_endpwent=''
344 d_endsent=''
345 d_fchmod=''
346 d_fchown=''
347 d_fcntl=''
348 d_fd_macros=''
349 d_fd_set=''
350 d_fds_bits=''
351 d_fgetpos=''
352 d_flexfnam=''
353 d_flock=''
354 d_fork=''
355 d_fpos64_t=''
356 d_frexpl=''
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_getespwnam=''
367 d_getfsstat=''
368 d_getgrent=''
369 d_getgrps=''
370 d_gethbyaddr=''
371 d_gethbyname=''
372 d_gethent=''
373 aphostname=''
374 d_gethname=''
375 d_phostname=''
376 d_uname=''
377 d_gethostprotos=''
378 d_getlogin=''
379 d_getmnt=''
380 d_getmntent=''
381 d_getnbyaddr=''
382 d_getnbyname=''
383 d_getnent=''
384 d_getnetprotos=''
385 d_getpent=''
386 d_getpgid=''
387 d_getpgrp2=''
388 d_bsdgetpgrp=''
389 d_getpgrp=''
390 d_getppid=''
391 d_getprior=''
392 d_getpbyname=''
393 d_getpbynumber=''
394 d_getprotoprotos=''
395 d_getprpwnam=''
396 d_getpwent=''
397 d_getsent=''
398 d_getservprotos=''
399 d_getspnam=''
400 d_getsbyname=''
401 d_getsbyport=''
402 d_gnulibc=''
403 d_hasmntopt=''
404 d_htonl=''
405 d_iconv=''
406 d_inetaton=''
407 d_int64_t=''
408 d_isascii=''
409 d_isnan=''
410 d_isnanl=''
411 d_killpg=''
412 d_lchown=''
413 d_ldbl_dig=''
414 d_link=''
415 d_locconv=''
416 d_lockf=''
417 d_longdbl=''
418 longdblsize=''
419 d_longlong=''
420 longlongsize=''
421 d_lseekproto=''
422 d_lstat=''
423 d_madvise=''
424 d_mblen=''
425 d_mbstowcs=''
426 d_mbtowc=''
427 d_memchr=''
428 d_memcmp=''
429 d_memcpy=''
430 d_memmove=''
431 d_memset=''
432 d_mkdir=''
433 d_mkdtemp=''
434 d_mkfifo=''
435 d_mkstemp=''
436 d_mkstemps=''
437 d_mktime=''
438 d_mmap=''
439 mmaptype=''
440 d_modfl=''
441 d_mprotect=''
442 d_msg=''
443 d_msgctl=''
444 d_msgget=''
445 d_msgrcv=''
446 d_msgsnd=''
447 d_msync=''
448 d_munmap=''
449 d_nice=''
450 d_off64_t=''
451 d_open3=''
452 d_fpathconf=''
453 d_pathconf=''
454 d_pause=''
455 d_pipe=''
456 d_poll=''
457 d_portable=''
458 d_old_pthread_create_joinable=''
459 old_pthread_create_joinable=''
460 d_pthread_yield=''
461 d_sched_yield=''
462 sched_yield=''
463 d_qgcvt=''
464 d_readdir=''
465 d_rewinddir=''
466 d_seekdir=''
467 d_telldir=''
468 d_readlink=''
469 d_rename=''
470 d_rmdir=''
471 d_safebcpy=''
472 d_safemcpy=''
473 d_sanemcmp=''
474 d_select=''
475 d_sem=''
476 d_semctl=''
477 d_semget=''
478 d_semop=''
479 d_setegid=''
480 d_seteuid=''
481 d_setgrent=''
482 d_setgrps=''
483 d_sethent=''
484 d_setlinebuf=''
485 d_setlocale=''
486 d_setnent=''
487 d_setpent=''
488 d_setpgid=''
489 d_setpgrp2=''
490 d_bsdsetpgrp=''
491 d_setpgrp=''
492 d_setprior=''
493 d_setproctitle=''
494 d_setpwent=''
495 d_setregid=''
496 d_setresgid=''
497 d_setresuid=''
498 d_setreuid=''
499 d_setrgid=''
500 d_setruid=''
501 d_setsent=''
502 d_setsid=''
503 d_setvbuf=''
504 d_sfio=''
505 usesfio=''
506 d_shm=''
507 d_shmat=''
508 d_shmatprototype=''
509 shmattype=''
510 d_shmctl=''
511 d_shmdt=''
512 d_shmget=''
513 d_sigaction=''
514 d_sigsetjmp=''
515 d_msg_ctrunc=''
516 d_msg_dontroute=''
517 d_msg_oob=''
518 d_msg_peek=''
519 d_msg_proxy=''
520 d_oldsock=''
521 d_scm_rights=''
522 d_socket=''
523 d_sockpair=''
524 sockethdr=''
525 socketlib=''
526 d_socklen_t=''
527 d_socks5_init=''
528 d_sqrtl=''
529 d_statblks=''
530 d_statfs_f_flags=''
531 d_statfs_s=''
532 d_fstatvfs=''
533 d_statvfs=''
534 d_stdio_cnt_lval=''
535 d_stdio_ptr_lval=''
536 d_stdiobase=''
537 d_stdstdio=''
538 stdio_base=''
539 stdio_bufsiz=''
540 stdio_cnt=''
541 stdio_filbuf=''
542 stdio_ptr=''
543 d_index=''
544 d_strchr=''
545 d_strcoll=''
546 d_strctcpy=''
547 d_strerrm=''
548 d_strerror=''
549 d_sysernlst=''
550 d_syserrlst=''
551 d_strtod=''
552 d_strtol=''
553 d_strtold=''
554 d_strtoll=''
555 d_strtoul=''
556 d_strtoull=''
557 d_strtouq=''
558 d_strxfrm=''
559 d_symlink=''
560 d_syscall=''
561 d_sysconf=''
562 d_system=''
563 d_tcgetpgrp=''
564 d_tcsetpgrp=''
565 d_telldirproto=''
566 d_time=''
567 timetype=''
568 clocktype=''
569 d_times=''
570 d_truncate=''
571 d_tzname=''
572 d_umask=''
573 d_semctl_semid_ds=''
574 d_semctl_semun=''
575 d_union_semun=''
576 d_ustat=''
577 d_vfork=''
578 usevfork=''
579 d_voidsig=''
580 signal_t=''
581 d_volatile=''
582 d_charvspr=''
583 d_vprintf=''
584 d_wait4=''
585 d_waitpid=''
586 d_wcstombs=''
587 d_wctomb=''
588 dlext=''
589 cccdlflags=''
590 ccdlflags=''
591 dlsrc=''
592 ld=''
593 lddlflags=''
594 usedl=''
595 doublesize=''
596 ebcdic=''
597 fflushNULL=''
598 fflushall=''
599 fpossize=''
600 fpostype=''
601 gccosandvers=''
602 gccversion=''
603 gidformat=''
604 gidsign=''
605 gidsize=''
606 gidtype=''
607 groupstype=''
608 h_fcntl=''
609 h_sysfile=''
610 i_arpainet=''
611 db_hashtype=''
612 db_prefixtype=''
613 i_db=''
614 i_dbm=''
615 i_rpcsvcdbm=''
616 d_dirnamlen=''
617 direntrytype=''
618 i_dirent=''
619 i_dld=''
620 i_dlfcn=''
621 i_fcntl=''
622 i_float=''
623 i_gdbm=''
624 d_grpasswd=''
625 i_grp=''
626 i_iconv=''
627 i_ieeefp=''
628 i_inttypes=''
629 i_libutil=''
630 i_limits=''
631 i_locale=''
632 i_machcthr=''
633 i_malloc=''
634 i_math=''
635 i_memory=''
636 i_mntent=''
637 i_ndbm=''
638 i_netdb=''
639 i_neterrno=''
640 i_netinettcp=''
641 i_niin=''
642 i_sysin=''
643 i_poll=''
644 i_prot=''
645 i_pthread=''
646 d_pwage=''
647 d_pwchange=''
648 d_pwclass=''
649 d_pwcomment=''
650 d_pwexpire=''
651 d_pwgecos=''
652 d_pwpasswd=''
653 d_pwquota=''
654 i_pwd=''
655 i_sfio=''
656 i_shadow=''
657 i_socks=''
658 i_stddef=''
659 i_stdlib=''
660 i_string=''
661 strings=''
662 i_sunmath=''
663 i_sysaccess=''
664 i_sysdir=''
665 i_sysfile=''
666 d_voidtty=''
667 i_bsdioctl=''
668 i_sysfilio=''
669 i_sysioctl=''
670 i_syssockio=''
671 i_syslog=''
672 i_sysmman=''
673 i_sysmode=''
674 i_sysmount=''
675 i_sysndir=''
676 i_sysparam=''
677 i_sysresrc=''
678 i_syssecrt=''
679 i_sysselct=''
680 i_sysstat=''
681 i_sysstatfs=''
682 i_sysstatvfs=''
683 i_systimes=''
684 i_systypes=''
685 i_sysuio=''
686 i_sysun=''
687 i_sysutsname=''
688 i_sysvfs=''
689 i_syswait=''
690 i_sgtty=''
691 i_termio=''
692 i_termios=''
693 i_systime=''
694 i_systimek=''
695 i_time=''
696 timeincl=''
697 i_unistd=''
698 i_ustat=''
699 i_utime=''
700 i_values=''
701 i_stdarg=''
702 i_varargs=''
703 i_varhdr=''
704 i_vfork=''
705 inc_version_list=''
706 inc_version_list_init=''
707 installprefix=''
708 installprefixexp=''
709 installstyle=''
710 installusrbinperl=''
711 intsize=''
712 longsize=''
713 shortsize=''
714 libc=''
715 ldlibpthname=''
716 libperl=''
717 shrpenv=''
718 useshrplib=''
719 glibpth=''
720 libpth=''
721 loclibpth=''
722 plibpth=''
723 xlibpth=''
724 ignore_versioned_solibs=''
725 libs=''
726 libsdirs=''
727 libsfiles=''
728 libsfound=''
729 libspath=''
730 lns=''
731 d_PRIEldbl=''
732 d_PRIFldbl=''
733 d_PRIGldbl=''
734 d_PRIeldbl=''
735 d_PRIfldbl=''
736 d_PRIgldbl=''
737 sPRIEldbl=''
738 sPRIFldbl=''
739 sPRIGldbl=''
740 sPRIeldbl=''
741 sPRIfldbl=''
742 sPRIgldbl=''
743 lseeksize=''
744 lseektype=''
745 make_set_make=''
746 d_mymalloc=''
747 freetype=''
748 mallocobj=''
749 mallocsrc=''
750 malloctype=''
751 usemymalloc=''
752 installman1dir=''
753 man1dir=''
754 man1direxp=''
755 man1ext=''
756 installman3dir=''
757 man3dir=''
758 man3direxp=''
759 man3ext=''
760 huge=''
761 large=''
762 medium=''
763 models=''
764 small=''
765 split=''
766 modetype=''
767 multiarch=''
768 mydomain=''
769 myhostname=''
770 phostname=''
771 c=''
772 n=''
773 d_eofnblk=''
774 eagain=''
775 o_nonblock=''
776 rd_nodata=''
777 netdb_hlen_type=''
778 netdb_host_type=''
779 netdb_name_type=''
780 netdb_net_type=''
781 groupcat=''
782 hostcat=''
783 passcat=''
784 orderlib=''
785 ranlib=''
786 d_perl_otherlibdirs=''
787 otherlibdirs=''
788 package=''
789 spackage=''
790 pager=''
791 api_revision=''
792 api_subversion=''
793 api_version=''
794 api_versionstring=''
795 patchlevel=''
796 revision=''
797 subversion=''
798 version=''
799 perl5=''
800 perladmin=''
801 perlpath=''
802 d_nv_preserves_uv=''
803 d_nv_preserves_uv_bits=''
804 i16size=''
805 i16type=''
806 i32size=''
807 i32type=''
808 i64size=''
809 i64type=''
810 i8size=''
811 i8type=''
812 ivsize=''
813 ivtype=''
814 nvsize=''
815 nvtype=''
816 u16size=''
817 u16type=''
818 u32size=''
819 u32type=''
820 u64size=''
821 u64type=''
822 u8size=''
823 u8type=''
824 uvsize=''
825 uvtype=''
826 ivdformat=''
827 nvEformat=''
828 nvFformat=''
829 nvGformat=''
830 nveformat=''
831 nvfformat=''
832 nvgformat=''
833 uvXformat=''
834 uvoformat=''
835 uvuformat=''
836 uvxformat=''
837 pidtype=''
838 prefix=''
839 prefixexp=''
840 installprivlib=''
841 privlib=''
842 privlibexp=''
843 prototype=''
844 ptrsize=''
845 d_PRIX64=''
846 d_PRId64=''
847 d_PRIi64=''
848 d_PRIo64=''
849 d_PRIu64=''
850 d_PRIx64=''
851 sPRIX64=''
852 sPRId64=''
853 sPRIi64=''
854 sPRIo64=''
855 sPRIu64=''
856 sPRIx64=''
857 d_quad=''
858 quadkind=''
859 quadtype=''
860 uquadtype=''
861 drand01=''
862 randbits=''
863 randfunc=''
864 randseedtype=''
865 seedfunc=''
866 installscript=''
867 scriptdir=''
868 scriptdirexp=''
869 selectminbits=''
870 selecttype=''
871 sh=''
872 sig_count=''
873 sig_name=''
874 sig_name_init=''
875 sig_num=''
876 sig_num_init=''
877 installsitearch=''
878 sitearch=''
879 sitearchexp=''
880 installsitebin=''
881 sitebin=''
882 sitebinexp=''
883 installsitelib=''
884 sitelib=''
885 sitelib_stem=''
886 sitelibexp=''
887 siteprefix=''
888 siteprefixexp=''
889 sizesize=''
890 sizetype=''
891 so=''
892 socksizetype=''
893 sharpbang=''
894 shsharp=''
895 spitshell=''
896 src=''
897 ssizetype=''
898 startperl=''
899 startsh=''
900 stdchar=''
901 d_stdio_stream_array=''
902 stdio_stream_array=''
903 sysman=''
904 trnl=''
905 uidformat=''
906 uidsign=''
907 uidsize=''
908 uidtype=''
909 archname64=''
910 use64bitall=''
911 use64bitint=''
912 ccflags_uselargefiles=''
913 ldflags_uselargefiles=''
914 libswanted_uselargefiles=''
915 uselargefiles=''
916 uselongdouble=''
917 usemorebits=''
918 usemultiplicity=''
919 nm_opt=''
920 nm_so_opt=''
921 runnm=''
922 usenm=''
923 useperlio=''
924 usesocks=''
925 d_oldpthreads=''
926 use5005threads=''
927 useithreads=''
928 usethreads=''
929 incpath=''
930 mips_type=''
931 usrinc=''
932 d_vendorarch=''
933 installvendorarch=''
934 vendorarch=''
935 vendorarchexp=''
936 d_vendorbin=''
937 installvendorbin=''
938 vendorbin=''
939 vendorbinexp=''
940 d_vendorlib=''
941 installvendorlib=''
942 vendorlib=''
943 vendorlib_stem=''
944 vendorlibexp=''
945 usevendorprefix=''
946 vendorprefix=''
947 vendorprefixexp=''
948 defvoidused=''
949 voidflags=''
950 pm_apiversion=''
951 xs_apiversion=''
952 CONFIG=''
953
954 define='define'
955 undef='undef'
956 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
957 rmlist=''
958
959 : We must find out about Eunice early
960 eunicefix=':'
961 if test -f /etc/unixtovms; then
962         eunicefix=/etc/unixtovms
963 fi
964 if test -f /etc/unixtovms.exe; then
965         eunicefix=/etc/unixtovms.exe
966 fi
967
968 i_whoami=''
969 : set useposix=false in your hint file to disable the POSIX extension.
970 useposix=true
971 : set useopcode=false in your hint file to disable the Opcode extension.
972 useopcode=true
973 : Trailing extension.  Override this in a hint file, if needed.
974 _exe=''
975 : Extra object files, if any, needed on this platform.
976 archobjs=''
977 : Possible local include directories to search.
978 : Set locincpth to "" in a hint file to defeat local include searches.
979 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
980 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
981 :
982 : no include file wanted by default
983 inclwanted=''
984
985 groupstype=''
986 : change the next line if compiling for Xenix/286 on Xenix/386
987 xlibpth='/usr/lib/386 /lib/386'
988 : Possible local library directories to search.
989 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
990 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
991
992 : general looking path for locating libraries
993 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
994 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
995 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
996 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
997 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
998
999 : Private path used by Configure to find libraries.  Its value
1000 : is prepended to libpth. This variable takes care of special
1001 : machines, like the mips.  Usually, it should be empty.
1002 plibpth=''
1003
1004 : default library list
1005 libswanted=''
1006 : some systems want to use only the non-versioned libso:s
1007 ignore_versioned_solibs=''
1008 ccflags_uselargefiles=''
1009 ldflags_uselargefiles=''
1010 libswanted_uselargefiles=''
1011 : set usemultiplicity on the Configure command line to enable multiplicity.
1012 : set usesocks on the Configure command line to enable socks.
1013 : set usethreads on the Configure command line to enable threads.
1014 : full support for void wanted by default
1015 defvoidused=15
1016
1017 : List of libraries we want.
1018 : If anyone needs -lnet, put it in a hint file.
1019 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1020 libswanted="$libswanted dld ld sun m c cposix posix"
1021 libswanted="$libswanted ndir dir crypt sec"
1022 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1023 : We probably want to search /usr/shlib before most other libraries.
1024 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1025 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1026 glibpth="/usr/shlib $glibpth"
1027 : Do not use vfork unless overridden by a hint file.
1028 usevfork=false
1029
1030 : Find the basic shell for Bourne shell scripts
1031 case "$sh" in
1032 '')
1033         case "$SYSTYPE" in
1034         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1035         *) xxx='/bin/sh';;
1036         esac
1037         if test -f "$xxx"; then
1038                 sh="$xxx"
1039         else
1040                 : Build up a list and do a single loop so we can 'break' out.
1041                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1042                 for xxx in sh bash ksh pdksh ash; do
1043                         for p in $pth; do
1044                                 try="$try ${p}/${xxx}"
1045                         done
1046                 done
1047                 for xxx in $try; do
1048                         if test -f "$xxx"; then
1049                                 sh="$xxx";
1050                                 break
1051                         elif test -f "$xxx.exe"; then
1052                                 sh="$xxx";
1053                                 break
1054                         fi
1055                 done
1056         fi
1057         ;;
1058 esac
1059
1060 case "$sh" in
1061 '')     cat <<EOM >&2
1062 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1063
1064 Usually it's in /bin/sh.  How did you even get this far?
1065 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1066 we'll try to straighten this all out.
1067 EOM
1068         exit 1
1069         ;;
1070 esac
1071
1072 : see if sh knows # comments
1073 if `$sh -c '#' >/dev/null 2>&1`; then
1074         shsharp=true
1075         spitshell=cat
1076         xcat=/bin/cat
1077         test -f $xcat || xcat=/usr/bin/cat
1078         echo "#!$xcat" >try
1079         $eunicefix try
1080         chmod +x try
1081         ./try > today
1082         if test -s today; then
1083                 sharpbang='#!'
1084         else
1085                 echo "#! $xcat" > try
1086                 $eunicefix try
1087                 chmod +x try
1088                 ./try > today
1089                 if test -s today; then
1090                         sharpbang='#! '
1091                 else
1092                         sharpbang=': use '
1093                 fi
1094         fi
1095 else
1096         echo " "
1097         echo "Your $sh doesn't grok # comments--I will strip them later on."
1098         shsharp=false
1099         cd ..
1100         echo "exec grep -v '^[  ]*#'" >spitshell
1101         chmod +x spitshell
1102         $eunicefix spitshell
1103         spitshell=`pwd`/spitshell
1104         cd UU
1105         echo "I presume that if # doesn't work, #! won't work either!"
1106         sharpbang=': use '
1107 fi
1108 rm -f try today
1109
1110 : figure out how to guarantee sh startup
1111 case "$startsh" in
1112 '') startsh=${sharpbang}${sh} ;;
1113 *)
1114 esac
1115 cat >try <<EOSS
1116 $startsh
1117 set abc
1118 test "$?abc" != 1
1119 EOSS
1120
1121 chmod +x try
1122 $eunicefix try
1123 if ./try; then
1124         : echo "Yup, it does."
1125 else
1126         echo "Hmm... '$startsh' does not guarantee sh startup..."
1127         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1128 fi
1129 rm -f try
1130
1131
1132 : Save command line options in file UU/cmdline.opt for later use in
1133 : generating config.sh.
1134 cat > cmdline.opt <<EOSH
1135 # Configure command line arguments.
1136 config_arg0='$0'
1137 config_args='$*'
1138 config_argc=$#
1139 EOSH
1140 argn=1
1141 for arg in "$@"; do
1142         cat >>cmdline.opt <<EOSH
1143 config_arg$argn='$arg'
1144 EOSH
1145         argn=`expr $argn + 1`
1146 done
1147
1148 : produce awk script to parse command line options
1149 cat >options.awk <<'EOF'
1150 BEGIN {
1151         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1152
1153         len = length(optstr);
1154         for (i = 1; i <= len; i++) {
1155                 c = substr(optstr, i, 1);
1156                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1157                 if (a == ":") {
1158                         arg[c] = 1;
1159                         i++;
1160                 }
1161                 opt[c] = 1;
1162         }
1163 }
1164 {
1165         expect = 0;
1166         str = $0;
1167         if (substr(str, 1, 1) != "-") {
1168                 printf("'%s'\n", str);
1169                 next;
1170         }
1171         len = length($0);
1172         for (i = 2; i <= len; i++) {
1173                 c = substr(str, i, 1);
1174                 if (!opt[c]) {
1175                         printf("-%s\n", substr(str, i));
1176                         next;
1177                 }
1178                 printf("-%s\n", c);
1179                 if (arg[c]) {
1180                         if (i < len)
1181                                 printf("'%s'\n", substr(str, i + 1));
1182                         else
1183                                 expect = 1;
1184                         next;
1185                 }
1186         }
1187 }
1188 END {
1189         if (expect)
1190                 print "?";
1191 }
1192 EOF
1193
1194 : process the command line options
1195 set X `for arg in "$@"; do echo "X$arg"; done |
1196         sed -e s/X// | awk -f options.awk`
1197 eval "set $*"
1198 shift
1199 rm -f options.awk
1200
1201 : set up default values
1202 fastread=''
1203 reuseval=false
1204 config_sh=''
1205 alldone=''
1206 error=''
1207 silent=''
1208 extractsh=''
1209 override=''
1210 knowitall=''
1211 rm -f optdef.sh posthint.sh
1212 cat >optdef.sh <<EOS
1213 $startsh
1214 EOS
1215
1216
1217 : option parsing
1218 while test $# -gt 0; do
1219         case "$1" in
1220         -d) shift; fastread=yes;;
1221         -e) shift; alldone=cont;;
1222         -f)
1223                 shift
1224                 cd ..
1225                 if test -r "$1"; then
1226                         config_sh="$1"
1227                 else
1228                         echo "$me: cannot read config file $1." >&2
1229                         error=true
1230                 fi
1231                 cd UU
1232                 shift;;
1233         -h) shift; error=true;;
1234         -r) shift; reuseval=true;;
1235         -s) shift; silent=true; realsilent=true;;
1236         -E) shift; alldone=exit;;
1237         -K) shift; knowitall=true;;
1238         -O) shift; override=true;;
1239         -S) shift; silent=true; extractsh=true;;
1240         -D)
1241                 shift
1242                 case "$1" in
1243                 *=)
1244                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1245                         echo "$me: ignoring -D $1" >&2
1246                         ;;
1247                 *=*) echo "$1" | \
1248                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1249                 *) echo "$1='define'" >> optdef.sh;;
1250                 esac
1251                 shift
1252                 ;;
1253         -U)
1254                 shift
1255                 case "$1" in
1256                 *=) echo "$1" >> optdef.sh;;
1257                 *=*)
1258                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1259                         echo "$me: ignoring -U $1" >&2
1260                         ;;
1261                 *) echo "$1='undef'" >> optdef.sh;;
1262                 esac
1263                 shift
1264                 ;;
1265         -A)
1266             shift
1267             xxx=''
1268             yyy="$1"
1269             zzz=''
1270             uuu=undef
1271             case "$yyy" in
1272             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1273                  case "$zzz" in
1274                  *:*) zzz='' ;;
1275                  *)   xxx=append
1276                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1277                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1278                  esac
1279                  ;;
1280             esac
1281             case "$xxx" in
1282             '')  case "$yyy" in
1283                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1284                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1285                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1286                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1287                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1288                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1289                  esac
1290                  ;;       
1291             esac
1292             case "$xxx" in
1293             append)
1294                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1295             clear)
1296                 echo "$yyy=''"                  >> posthint.sh ;;
1297             define)
1298                 case "$zzz" in
1299                 '') zzz=define ;;
1300                 esac
1301                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1302             eval)
1303                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1304             prepend)
1305                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1306             undef)
1307                 case "$zzz" in
1308                 '') zzz="$uuu" ;;
1309                 esac
1310                 echo "$yyy=$zzz"                >> posthint.sh ;;
1311             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1312             esac
1313             shift
1314             ;;
1315         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1316             exit 0;;
1317         --) break;;
1318         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1319         *) break;;
1320         esac
1321 done
1322
1323 case "$error" in
1324 true)
1325         cat >&2 <<EOM
1326 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1327                  [-U symbol] [-U symbol=] [-A command:symbol...]
1328   -d : use defaults for all answers.
1329   -e : go on without questioning past the production of config.sh.
1330   -f : specify an alternate default configuration file.
1331   -h : print this help message and exit (with an error status).
1332   -r : reuse C symbols value if possible (skips costly nm extraction).
1333   -s : silent mode, only echoes questions and essential information.
1334   -D : define symbol to have some value:
1335          -D symbol         symbol gets the value 'define'
1336          -D symbol=value   symbol gets the value 'value'
1337   -E : stop at the end of questions, after having produced config.sh.
1338   -K : do not use unless you know what you are doing.
1339   -O : let -D and -U override definitions from loaded configuration file.
1340   -S : perform variable substitutions on all .SH files (can mix with -f)
1341   -U : undefine symbol:
1342          -U symbol    symbol gets the value 'undef'
1343          -U symbol=   symbol gets completely empty
1344   -A : manipulate symbol after the platform specific hints have been applied:
1345          -A symbol=value                append " "value to symbol
1346          -A append:symbol=value         append value to symbol
1347          -A define:symbol=value         define symbol to have value
1348          -A clear:symbol                define symbol to be ''
1349          -A define:symbol               define symbol to be 'define'
1350          -A eval:symbol=value           define symbol to be eval of value
1351          -A prepend:symbol=value        prepend value to symbol
1352          -A undef:symbol                define symbol to be 'undef'
1353          -A undef:symbol=               define symbol to be ''
1354   -V : print version number and exit (with a zero status).
1355 EOM
1356         exit 1
1357         ;;
1358 esac
1359
1360 : Sanity checks
1361 case "$fastread$alldone" in
1362 yescont|yesexit) ;;
1363 *)
1364         case "$extractsh" in
1365         true) ;;
1366         *)
1367                 if test ! -t 0; then
1368                         echo "Say 'sh Configure', not 'sh <Configure'"
1369                         exit 1
1370                 fi
1371                 ;;
1372         esac
1373         ;;
1374 esac
1375
1376 exec 4>&1
1377 case "$silent" in
1378 true) exec 1>/dev/null;;
1379 esac
1380
1381 : run the defines and the undefines, if any, but leave the file out there...
1382 touch optdef.sh
1383 . ./optdef.sh
1384 : create the posthint manipulation script and leave the file out there...
1385 touch posthint.sh
1386
1387 : set package name
1388 package=perl5
1389 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1390 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1391 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1392 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1393 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1394 esac
1395
1396 : Some greps do not return status, grrr.
1397 echo "grimblepritz" >grimble
1398 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1399         contains=contains
1400 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1401         contains=grep
1402 else
1403         contains=contains
1404 fi
1405 rm -f grimble
1406 : the following should work in any shell
1407 case "$contains" in
1408 contains*)
1409         echo " "
1410         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1411         cat >contains <<'EOSS'
1412 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1413 EOSS
1414 chmod +x contains
1415 esac
1416
1417 : Find the path to the source tree
1418 case "$src" in
1419 '') case "$0" in
1420     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1421          case "$src" in
1422          /*)    ;;
1423          *)     src=`cd ../$src && pwd` ;;
1424          esac
1425          ;;
1426     *)   src='.';;
1427     esac;;
1428 esac
1429 case "$src" in
1430 '')     src=/
1431         rsrc=/
1432         ;;
1433 /*) rsrc="$src";;
1434 *) rsrc="../$src";;
1435 esac
1436 if test -f $rsrc/Configure && \
1437         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1438 then
1439    : found it, so we are ok.
1440 else
1441         rsrc=''
1442         for src in . .. ../.. ../../.. ../../../..; do
1443                 if test -f ../$src/Configure && \
1444                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1445                 then
1446                         rsrc=../$src
1447                         break
1448                 fi
1449         done
1450 fi
1451 case "$rsrc" in
1452 '')
1453         cat <<EOM >&4
1454
1455 Sorry, I can't seem to locate the source dir for $package.  Please start
1456 Configure with an explicit path -- i.e. /some/path/Configure.
1457
1458 EOM
1459         exit 1
1460         ;;
1461 ../.)   rsrc='..';;
1462 *)
1463         echo " "
1464         echo "Sources for $package found in \"$src\"." >&4
1465         ;;
1466 esac
1467
1468 : script used to extract .SH files with variable substitutions
1469 cat >extract <<'EOS'
1470 CONFIGDOTSH=true
1471 echo "Doing variable substitutions on .SH files..."
1472 if test -f $src/MANIFEST; then
1473         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1474 else
1475         echo "(Looking for .SH files under the source directory.)"
1476         set x `(cd $src; find . -name "*.SH" -print)`
1477 fi
1478 shift
1479 case $# in
1480 0) set x `(cd $src; echo *.SH)`; shift;;
1481 esac
1482 if test ! -f $src/$1; then
1483         shift
1484 fi
1485 mkdir_p='
1486 name=$1;
1487 create="";
1488 while test $name; do
1489         if test ! -d "$name"; then
1490                 create="$name $create";
1491                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1492                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1493         else
1494                 name="";
1495         fi;
1496 done;
1497 for file in $create; do
1498         mkdir $file;
1499 done
1500 '
1501 for file in $*; do
1502         case "$src" in
1503         ".")
1504                 case "$file" in
1505                 */*)
1506                         dir=`expr X$file : 'X\(.*\)/'`
1507                         file=`expr X$file : 'X.*/\(.*\)'`
1508                         (cd $dir && . ./$file)
1509                         ;;
1510                 *)
1511                         . ./$file
1512                         ;;
1513                 esac
1514                 ;;
1515         *)
1516                 case "$file" in
1517                 */*)
1518                         dir=`expr X$file : 'X\(.*\)/'`
1519                         file=`expr X$file : 'X.*/\(.*\)'`
1520                         (set x $dir; shift; eval $mkdir_p)
1521                         sh <$src/$dir/$file
1522                         ;;
1523                 *)
1524                         sh <$src/$file
1525                         ;;
1526                 esac
1527                 ;;
1528         esac
1529 done
1530 if test -f $src/config_h.SH; then
1531         if test ! -f config.h; then
1532         : oops, they left it out of MANIFEST, probably, so do it anyway.
1533         . $src/config_h.SH
1534         fi
1535 fi
1536 EOS
1537
1538 : extract files and exit if asked to do so
1539 case "$extractsh" in
1540 true)
1541         case "$realsilent" in
1542         true) ;;
1543         *) exec 1>&4;;
1544         esac
1545         case "$config_sh" in
1546         '') config_sh='config.sh';;
1547         esac
1548         echo " "
1549         echo "Fetching answers from $config_sh..."
1550         cd ..
1551         . $config_sh
1552         test "$override" && . ./optdef.sh
1553         echo " "
1554         . UU/extract
1555         rm -rf UU
1556         echo "Done."
1557         exit 0
1558         ;;
1559 esac
1560
1561 : Eunice requires " " instead of "", can you believe it
1562 echo " "
1563 : Here we go...
1564 echo "Beginning of configuration questions for $package."
1565
1566 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1567
1568 : first determine how to suppress newline on echo command
1569 echo " "
1570 echo "Checking echo to see how to suppress newlines..."
1571 (echo "hi there\c" ; echo " ") >.echotmp
1572 if $contains c .echotmp >/dev/null 2>&1 ; then
1573         echo "...using -n."
1574         n='-n'
1575         c=''
1576 else
1577         cat <<'EOM'
1578 ...using \c
1579 EOM
1580         n=''
1581         c='\c'
1582 fi
1583 echo $n "The star should be here-->$c"
1584 echo '*'
1585 rm -f .echotmp
1586
1587 : Now test for existence of everything in MANIFEST
1588 echo " "
1589 if test -f $rsrc/MANIFEST; then
1590         echo "First let's make sure your kit is complete.  Checking..." >&4
1591         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1592         rm -f missing
1593         tmppwd=`pwd`
1594         for filelist in x??; do
1595                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1596         done
1597         if test -s missing; then
1598                 cat missing >&4
1599                 cat >&4 <<'EOM'
1600
1601 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1602
1603 You have the option of continuing the configuration process, despite the
1604 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1605 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1606 and contact the author (perlbug@perl.org).
1607
1608 EOM
1609                 echo $n "Continue? [n] $c" >&4
1610                 read ans
1611                 case "$ans" in
1612                 y*)
1613                         echo "Continuing..." >&4
1614                         rm -f missing
1615                         ;;
1616                 *)
1617                         echo "ABORTING..." >&4
1618                         kill $$
1619                         ;;
1620                 esac
1621         else
1622                 echo "Looks good..."
1623         fi
1624 else
1625         echo "There is no MANIFEST file.  I hope your kit is complete !"
1626 fi
1627 rm -f missing x??
1628
1629 echo " "
1630 : Find the appropriate value for a newline for tr
1631 if test -n "$DJGPP"; then
1632        trnl='\012'
1633 fi
1634 if test X"$trnl" = X; then
1635         case "`echo foo|tr '\n' x 2>/dev/null`" in
1636         foox) trnl='\n' ;;
1637         esac
1638 fi
1639 if test X"$trnl" = X; then
1640         case "`echo foo|tr '\012' x 2>/dev/null`" in
1641         foox) trnl='\012' ;;
1642         esac
1643 fi
1644 if test X"$trnl" = X; then
1645         cat <<EOM >&2
1646
1647 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1648
1649 EOM
1650         exit 1
1651 fi
1652
1653 : compute the number of columns on the terminal for proper question formatting
1654 case "$COLUMNS" in
1655 '') COLUMNS='80';;
1656 esac
1657
1658 : set up the echo used in my read
1659 myecho="case \"\$xxxm\" in
1660 '') echo $n \"\$rp $c\" >&4;;
1661 *) case \"\$rp\" in
1662         '') echo $n \"[\$xxxm] $c\";;
1663         *)
1664                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1665                         echo \"\$rp\" >&4
1666                         echo $n \"[\$xxxm] $c\" >&4
1667                 else
1668                         echo $n \"\$rp [\$xxxm] $c\" >&4
1669                 fi
1670                 ;;
1671         esac;;
1672 esac"
1673
1674 : now set up to do reads with possible shell escape and default assignment
1675 cat <<EOSC >myread
1676 $startsh
1677 xxxm=\$dflt
1678 $myecho
1679 ans='!'
1680 case "\$fastread" in
1681 yes) case "\$dflt" in
1682         '') ;;
1683         *) ans='';
1684                 case "\$silent-\$rp" in
1685                 true-) ;;
1686                 *) echo " " >&4;;
1687                 esac;;
1688         esac;;
1689 *) case "\$silent" in
1690         true) case "\$rp" in
1691                 '') ans='';;
1692                 esac;;
1693         esac;;
1694 esac
1695 while expr "X\$ans" : "X!" >/dev/null; do
1696         read answ
1697         set x \$xxxm
1698         shift
1699         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1700         case  "\$answ" in
1701         "!")
1702                 sh 1>&4
1703                 echo " "
1704                 $myecho
1705                 ;;
1706         !*)
1707                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1708                 shift
1709                 sh 1>&4 -c "\$*"
1710                 echo " "
1711                 $myecho
1712                 ;;
1713         "\$ans")
1714                 case "\$ans" in
1715                 \\&*)
1716                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1717                         shift
1718                         case "\$1" in
1719                         -d)
1720                                 fastread=yes
1721                                 echo "(OK, I'll run with -d after this question.)" >&4
1722                                 ;;
1723                         -*)
1724                                 echo "*** Sorry, \$1 not supported yet." >&4
1725                                 ;;
1726                         esac
1727                         $myecho
1728                         ans=!
1729                         ;;
1730                 esac;;
1731         *)
1732                 case "\$aok" in
1733                 y)
1734                         echo "*** Substitution done -- please confirm."
1735                         xxxm="\$ans"
1736                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1737                         xxxm="\$ans"
1738                         ans=!
1739                         ;;
1740                 *)
1741                         echo "*** Error -- try again."
1742                         ans=!
1743                         ;;
1744                 esac
1745                 $myecho
1746                 ;;
1747         esac
1748         case "\$ans\$xxxm\$nostick" in
1749         '')
1750                 ans=!
1751                 $myecho
1752                 ;;
1753         esac
1754 done
1755 case "\$ans" in
1756 '') ans="\$xxxm";;
1757 esac
1758 EOSC
1759
1760 : create .config dir to save info across Configure sessions
1761 test -d ../.config || mkdir ../.config
1762 cat >../.config/README <<EOF
1763 This directory created by Configure to save information that should
1764 persist across sessions for $package.
1765
1766 You may safely delete it if you wish.
1767 EOF
1768
1769 xpatchlevel=`awk '/define[      ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1770 case "$usedevel" in
1771 $define|true|[yY]*) ;;
1772 *) case "$xpatchlevel" in
1773    *[13579])
1774         cat >&4 <<EOH
1775 *** WHOA THERE!!! ***
1776
1777     This is an UNSTABLE DEVELOPMENT release.
1778     (The patchlevel, $xpatchlevel, is odd--as opposed to even,
1779      and that signifies a development release.  If you want a
1780      maintenance release, you want an even-numbered release.)
1781
1782     Do ***NOT*** install this into production use.
1783     Data corruption and crashes are possible.
1784
1785     It is most seriously suggested that you do not continue any further
1786     unless you want to help in developing and debugging Perl.
1787
1788 EOH
1789         rp='Do you really want to continue?'
1790         dflt='n'
1791         . ./myread
1792         case "$ans" in
1793         [yY]) echo >&4 "Okay, continuing." ;;
1794         *) echo >&4 "Okay, bye."
1795            exit 1
1796            ;;
1797         esac
1798         ;;
1799     esac
1800     ;;
1801 esac
1802
1803 : general instructions
1804 needman=true
1805 firsttime=true
1806 user=`(logname) 2>/dev/null`
1807 case "$user" in
1808 '') user=`whoami 2>&1`;;
1809 esac
1810 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1811         firsttime=false
1812         echo " "
1813         rp='Would you like to see the instructions?'
1814         dflt=n
1815         . ./myread
1816         case "$ans" in
1817         [yY]*) ;;
1818         *) needman=false;;
1819         esac
1820 fi
1821 if $needman; then
1822         cat <<EOH
1823
1824 This installation shell script will examine your system and ask you questions
1825 to determine how the perl5 package should be installed. If you get
1826 stuck on a question, you may use a ! shell escape to start a subshell or
1827 execute a command.  Many of the questions will have default answers in square
1828 brackets; typing carriage return will give you the default.
1829
1830 On some of the questions which ask for file or directory names you are allowed
1831 to use the ~name construct to specify the login directory belonging to "name",
1832 even if you don't have a shell which knows about that.  Questions where this is
1833 allowed will be marked "(~name ok)".
1834
1835 EOH
1836         rp=''
1837         dflt='Type carriage return to continue'
1838         . ./myread
1839         cat <<'EOH'
1840
1841 The prompter used in this script allows you to use shell variables and
1842 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1843 in the default answer, as if the default line was a set of arguments given to a
1844 script shell.  This means you may also use $* to repeat the whole default line,
1845 so you do not have to re-type everything to add something to the default.
1846
1847 Everytime there is a substitution, you will have to confirm.  If there is an
1848 error (e.g. an unmatched backtick), the default answer will remain unchanged
1849 and you will be prompted again.
1850
1851 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1852 the questions and use the computed defaults (or the previous answers if there
1853 was already a config.sh file). Type 'Configure -h' for a list of options.
1854 You may also start interactively and then answer '& -d' at any prompt to turn
1855 on the non-interactive behaviour for the remainder of the execution.
1856
1857 EOH
1858         . ./myread
1859         cat <<EOH
1860
1861 Much effort has been expended to ensure that this shell script will run on any
1862 Unix system.  If despite that it blows up on yours, your best bet is to edit
1863 Configure and run it again.  If you can't run Configure for some reason,
1864 you'll have to generate a config.sh file by hand.  Whatever problems you
1865 have, let me (perlbug@perl.org) know how I blew it.
1866
1867 This installation script affects things in two ways:
1868
1869 1) it may do direct variable substitutions on some of the files included
1870    in this kit.
1871 2) it builds a config.h file for inclusion in C programs.  You may edit
1872    any of these files as the need arises after running this script.
1873
1874 If you make a mistake on a question, there is no easy way to back up to it
1875 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1876 files.  Configure will offer to let you do this before it runs the SH files.
1877
1878 EOH
1879         dflt='Type carriage return to continue'
1880         . ./myread
1881         case "$firsttime" in
1882         true) echo $user >>../.config/instruct;;
1883         esac
1884 fi
1885
1886 : find out where common programs are
1887 echo " "
1888 echo "Locating common programs..." >&4
1889 cat <<EOSC >loc
1890 $startsh
1891 case \$# in
1892 0) exit 1;;
1893 esac
1894 thing=\$1
1895 shift
1896 dflt=\$1
1897 shift
1898 for dir in \$*; do
1899         case "\$thing" in
1900         .)
1901         if test -d \$dir/\$thing; then
1902                 echo \$dir
1903                 exit 0
1904         fi
1905         ;;
1906         *)
1907         for thisthing in \$dir/\$thing; do
1908                 : just loop through to pick last item
1909         done
1910         if test -f \$thisthing; then
1911                 echo \$thisthing
1912                 exit 0
1913         elif test -f \$dir/\$thing.exe; then
1914                 if test -n "$DJGPP"; then
1915                         echo \$dir/\$thing.exe
1916                 else
1917                         : on Eunice apparently
1918                         echo \$dir/\$thing
1919                 fi
1920                 exit 0
1921         fi
1922         ;;
1923         esac
1924 done
1925 echo \$dflt
1926 exit 1
1927 EOSC
1928 chmod +x loc
1929 $eunicefix loc
1930 loclist="
1931 awk
1932 cat
1933 comm
1934 cp
1935 echo
1936 expr
1937 grep
1938 ls
1939 make
1940 mkdir
1941 rm
1942 sed
1943 sort
1944 touch
1945 tr
1946 uniq
1947 "
1948 trylist="
1949 Mcc
1950 ar
1951 byacc
1952 cpp
1953 csh
1954 date
1955 egrep
1956 gzip
1957 less
1958 ln
1959 more
1960 nm
1961 nroff
1962 pg
1963 test
1964 uname
1965 zip
1966 "
1967 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1968 pth="$pth /lib /usr/lib"
1969 for file in $loclist; do
1970         eval xxx=\$$file
1971         case "$xxx" in
1972         /*|?:[\\/]*)
1973                 if test -f "$xxx"; then
1974                         : ok
1975                 else
1976                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1977                         xxx=`./loc $file $file $pth`
1978                 fi
1979                 ;;
1980         '') xxx=`./loc $file $file $pth`;;
1981         *) xxx=`./loc $xxx $xxx $pth`;;
1982         esac
1983         eval $file=$xxx
1984         eval _$file=$xxx
1985         case "$xxx" in
1986         /*)
1987                 echo $file is in $xxx.
1988                 ;;
1989         ?:[\\/]*)
1990                 echo $file is in $xxx.
1991                 ;;
1992         *)
1993                 echo "I don't know where '$file' is, and my life depends on it." >&4
1994                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1995                 exit 1
1996                 ;;
1997         esac
1998 done
1999 echo " "
2000 echo "Don't worry if any of the following aren't found..."
2001 say=offhand
2002 for file in $trylist; do
2003         eval xxx=\$$file
2004         case "$xxx" in
2005         /*|?:[\\/]*)
2006                 if test -f "$xxx"; then
2007                         : ok
2008                 else
2009                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2010                         xxx=`./loc $file $file $pth`
2011                 fi
2012                 ;;
2013         '') xxx=`./loc $file $file $pth`;;
2014         *) xxx=`./loc $xxx $xxx $pth`;;
2015         esac
2016         eval $file=$xxx
2017         eval _$file=$xxx
2018         case "$xxx" in
2019         /*)
2020                 echo $file is in $xxx.
2021                 ;;
2022         ?:[\\/]*)
2023                 echo $file is in $xxx.
2024                 ;;
2025         *)
2026                 echo "I don't see $file out there, $say."
2027                 say=either
2028                 ;;
2029         esac
2030 done
2031 case "$egrep" in
2032 egrep)
2033         echo "Substituting grep for egrep."
2034         egrep=$grep
2035         ;;
2036 esac
2037 case "$ln" in
2038 ln)
2039         echo "Substituting cp for ln."
2040         ln=$cp
2041         ;;
2042 esac
2043 case "$test" in
2044 test)
2045         echo "Hopefully test is built into your sh."
2046         ;;
2047 *)
2048         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2049                 echo "Using the test built into your sh."
2050                 test=test
2051                 _test=test
2052         fi
2053         ;;
2054 esac
2055 case "$echo" in
2056 echo)
2057         echo "Hopefully echo is built into your sh."
2058         ;;
2059 '') ;;
2060 *)
2061         echo " "
2062 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2063         $echo $n "hi there$c" >foo1
2064         echo $n "hi there$c" >foo2
2065         if cmp foo1 foo2 >/dev/null 2>&1; then
2066                 echo "They are compatible.  In fact, they may be identical."
2067         else
2068                 case "$n" in
2069                 '-n') n='' c='\c';;
2070                 *) n='-n' c='';;
2071                 esac
2072                 cat <<FOO
2073 They are not compatible!  You are probably running ksh on a non-USG system.
2074 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2075 have echo built in and we may have to run some Bourne shell scripts.  That
2076 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2077
2078 FOO
2079                 $echo $n "The star should be here-->$c"
2080                 $echo "*"
2081         fi
2082         $rm -f foo1 foo2
2083         ;;
2084 esac
2085
2086 cat <<EOS >checkcc
2087 $startsh
2088 EOS
2089 cat <<'EOSC' >>checkcc
2090 case "$cc" in
2091 '') ;;
2092 *)  $rm -f try try.*
2093     $cat >try.c <<EOM
2094 int main(int argc, char *argv[]) {
2095   return 0;
2096 }
2097 EOM
2098     if $cc -o try try.c; then
2099        :
2100     else
2101         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2102         despair=yes
2103         trygcc=yes
2104         case "$cc" in
2105         *gcc*) trygcc=no ;;
2106         esac
2107         case "`$cc -v -c try.c 2>&1`" in
2108         *gcc*) trygcc=no ;;
2109         esac
2110         if $test X"$trygcc" = Xyes; then
2111             if gcc -o try -c try.c; then
2112                 echo " "
2113                 echo "You seem to have a working gcc, though." >&4
2114                 rp="Would you like to use it?"
2115                 dflt=y
2116                 if $test -f myread; then
2117                     . ./myread
2118                 else
2119                     if $test -f UU/myread; then
2120                         . ./UU/myread
2121                     else
2122                         echo "Cannot find myread, sorry.  Aborting." >&2
2123                         exit 1
2124                     fi
2125                 fi  
2126                 case "$ans" in
2127                 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2128                 esac
2129             fi
2130         fi
2131         if $test X"$despair" = Xyes; then
2132             echo "You need to find a working C compiler." >&4
2133             echo "I cannot continue any further, aborting." >&4
2134             exit 1
2135         fi
2136     fi
2137     $rm -f try try.*
2138     ;;
2139 esac
2140 EOSC
2141
2142 : determine whether symbolic links are supported
2143 echo " "
2144 $touch blurfl
2145 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2146         echo "Symbolic links are supported." >&4
2147         lns="$ln -s"
2148 else
2149         echo "Symbolic links are NOT supported." >&4
2150         lns="$ln"
2151 fi
2152 $rm -f blurfl sym
2153
2154 : see whether [:lower:] and [:upper:] are supported character classes
2155 echo " "
2156 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2157 ABYZ)
2158         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2159         up='[:upper:]'
2160         low='[:lower:]'
2161         ;;
2162 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2163         # (0xc9 and 0xd1), therefore that is a nice testing point.
2164         if test "X$up" = X -o "X$low" = X; then
2165             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2166             ij) up='[A-Z]'
2167                 low='[a-z]'
2168                 ;;
2169             esac
2170         fi
2171         if test "X$up" = X -o "X$low" = X; then
2172             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2173             ij) up='A-Z'
2174                 low='a-z'
2175                 ;;
2176             esac
2177         fi
2178         if test "X$up" = X -o "X$low" = X; then
2179             case "`echo IJ | od -x 2>/dev/null`" in
2180             *C9D1*|*c9d1*)
2181                 echo "Hey, this might be EBCDIC." >&4
2182                 if test "X$up" = X -o "X$low" = X; then
2183                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2184                     ij) up='[A-IJ-RS-Z]'
2185                         low='[a-ij-rs-z]'
2186                         ;;
2187                     esac
2188                 fi
2189                 if test "X$up" = X -o "X$low" = X; then
2190                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2191                     ij) up='A-IJ-RS-Z'
2192                         low='a-ij-rs-z'
2193                         ;;
2194                     esac
2195                 fi
2196                 ;;
2197             esac
2198         fi
2199 esac
2200 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2201 ij)
2202     echo "Using $up and $low to convert case." >&4
2203     ;;
2204 *)
2205     echo "I don't know how to translate letters from upper to lower case." >&4
2206     echo "Your tr is not acting any way I know of." >&4
2207     exit 1
2208     ;;
2209 esac
2210 : set up the translation script tr, must be called with ./tr of course
2211 cat >tr <<EOSC
2212 $startsh
2213 case "\$1\$2" in
2214 '[A-Z][a-z]') exec $tr '$up' '$low';;
2215 '[a-z][A-Z]') exec $tr '$low' '$up';;
2216 esac
2217 exec $tr "\$@"
2218 EOSC
2219 chmod +x tr
2220 $eunicefix tr
2221
2222 : Try to determine whether config.sh was made on this system
2223 case "$config_sh" in
2224 '')
2225 myuname=`$uname -a 2>/dev/null`
2226 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2227 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2228 # because the A-Z/a-z are not consecutive.
2229 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2230         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2231 newmyuname="$myuname"
2232 dflt=n
2233 case "$knowitall" in
2234 '')
2235         if test -f ../config.sh; then
2236                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2237                         eval "`grep myuname= ../config.sh`"
2238                 fi
2239                 if test "X$myuname" = "X$newmyuname"; then
2240                         dflt=y
2241                 fi
2242         fi
2243         ;;
2244 *) dflt=y;;
2245 esac
2246
2247 : Get old answers from old config file if Configure was run on the
2248 : same system, otherwise use the hints.
2249 hint=default
2250 cd ..
2251 if test -f config.sh; then
2252         echo " "
2253         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2254         . UU/myread
2255         case "$ans" in
2256         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2257         *)  echo "Fetching default answers from your old config.sh file..." >&4
2258                 tmp_n="$n"
2259                 tmp_c="$c"
2260                 tmp_sh="$sh"
2261                 . ./config.sh
2262                 cp config.sh UU
2263                 n="$tmp_n"
2264                 c="$tmp_c"
2265                 : Older versions did not always set $sh.  Catch re-use of such
2266                 : an old config.sh.
2267                 case "$sh" in
2268                 '') sh="$tmp_sh" ;;
2269                 esac
2270                 hint=previous
2271                 ;;
2272         esac
2273 fi
2274 . ./UU/checkcc
2275 if test ! -f config.sh; then
2276         $cat <<EOM
2277
2278 First time through, eh?  I have some defaults handy for some systems
2279 that need some extra help getting the Configure answers right:
2280
2281 EOM
2282         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2283         dflt=''
2284         : Half the following guesses are probably wrong... If you have better
2285         : tests or hints, please send them to perlbug@perl.org
2286         : The metaconfig authors would also appreciate a copy...
2287         $test -f /irix && osname=irix
2288         $test -f /xenix && osname=sco_xenix
2289         $test -f /dynix && osname=dynix
2290         $test -f /dnix && osname=dnix
2291         $test -f /lynx.os && osname=lynxos
2292         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2293         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2294         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2295         $test -f /bin/mips && /bin/mips && osname=mips
2296         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2297                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2298         $test -d /usr/apollo/bin && osname=apollo
2299         $test -f /etc/saf/_sactab && osname=svr4
2300         $test -d /usr/include/minix && osname=minix
2301         if $test -d /MachTen -o -d /MachTen_Folder; then
2302                 osname=machten
2303                 if $test -x /sbin/version; then
2304                         osvers=`/sbin/version | $awk '{print $2}' |
2305                         $sed -e 's/[A-Za-z]$//'`
2306                 elif $test -x /usr/etc/version; then
2307                         osvers=`/usr/etc/version | $awk '{print $2}' |
2308                         $sed -e 's/[A-Za-z]$//'`
2309                 else
2310                         osvers="$2.$3"
2311                 fi
2312         fi
2313
2314         $test -f /sys/posix.dll &&
2315                 $test -f /usr/bin/what &&
2316                 set X `/usr/bin/what /sys/posix.dll` &&
2317                 $test "$3" = UWIN &&
2318                 osname=uwin &&
2319                 osvers="$5"
2320
2321         if $test -f $uname; then
2322                 set X $myuname
2323                 shift
2324
2325                 case "$5" in
2326                 fps*) osname=fps ;;
2327                 mips*)
2328                         case "$4" in
2329                         umips) osname=umips ;;
2330                         *) osname=mips ;;
2331                         esac;;
2332                 [23]100) osname=mips ;;
2333                 next*) osname=next ;;
2334                 i386*)
2335                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2336                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2337                                 osname='sco'
2338                                 osvers=$tmp
2339                         elif $test -f /etc/kconfig; then
2340                                 osname=isc
2341                                 if test "$lns" = "$ln -s"; then
2342                                         osvers=4
2343                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2344                                         osvers=3
2345                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2346                                         osvers=2
2347                                 fi
2348                         fi
2349                         tmp=''
2350                         ;;
2351                 pc*)
2352                         if test -n "$DJGPP"; then
2353                                 osname=dos
2354                                 osvers=djgpp
2355                         fi
2356                         ;;
2357                 esac
2358
2359                 case "$1" in
2360                 aix) osname=aix
2361                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2362                         case "$tmp" in
2363                         'not found') osvers="$4"."$3" ;;
2364                         '<3240'|'<>3240') osvers=3.2.0 ;;
2365                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2366                         '=3250'|'>3250') osvers=3.2.5 ;;
2367                         *) osvers=$tmp;;
2368                         esac
2369                         ;;
2370                 bsd386) osname=bsd386
2371                         osvers=`$uname -r`
2372                         ;;
2373                 cygwin*) osname=cygwin
2374                         osvers="$3"
2375                         ;;
2376                 *dc.osx) osname=dcosx
2377                         osvers="$3"
2378                         ;;
2379                 dnix) osname=dnix
2380                         osvers="$3"
2381                         ;;
2382                 domainos) osname=apollo
2383                         osvers="$3"
2384                         ;;
2385                 dgux) osname=dgux 
2386                         osvers="$3"
2387                         ;;
2388                 dynixptx*) osname=dynixptx
2389                         osvers=`echo "$4"|sed 's/^v//'`
2390                         ;;
2391                 freebsd) osname=freebsd 
2392                         osvers="$3" ;;
2393                 genix) osname=genix ;;
2394                 hp*) osname=hpux 
2395                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2396                         ;;
2397                 irix*) osname=irix
2398                         case "$3" in
2399                         4*) osvers=4 ;;
2400                         5*) osvers=5 ;;
2401                         *)      osvers="$3" ;;
2402                         esac
2403                         ;;
2404                 linux) osname=linux
2405                         case "$3" in
2406                         *)      osvers="$3" ;;
2407                         esac
2408                         ;;
2409                 MiNT) osname=mint
2410                         ;;
2411                 netbsd*) osname=netbsd
2412                         osvers="$3"
2413                         ;;
2414                 news-os) osvers="$3"
2415                         case "$3" in
2416                         4*) osname=newsos4 ;;
2417                         *) osname=newsos ;;
2418                         esac
2419                         ;;
2420                 next*) osname=next ;;
2421                 POSIX-BC | posix-bc ) osname=posix-bc
2422                         osvers="$3"
2423                         ;;
2424                 powerux | power_ux | powermax_os | powermaxos | \
2425                 powerunix | power_unix) osname=powerux
2426                         osvers="$3"
2427                         ;;
2428                 qnx) osname=qnx
2429                         osvers="$4"
2430                         ;;
2431                 solaris) osname=solaris
2432                         case "$3" in
2433                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2434                         *)      osvers="$3" ;;
2435                         esac
2436                         ;;
2437                 sunos) osname=sunos
2438                         case "$3" in
2439                         5*) osname=solaris
2440                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2441                         *)      osvers="$3" ;;
2442                         esac
2443                         ;;
2444                 titanos) osname=titanos
2445                         case "$3" in
2446                         1*) osvers=1 ;;
2447                         2*) osvers=2 ;;
2448                         3*) osvers=3 ;;
2449                         4*) osvers=4 ;;
2450                         *)      osvers="$3" ;;
2451                         esac
2452                         ;;
2453                 ultrix) osname=ultrix
2454                         osvers="$3"
2455                         ;;
2456                 osf1|mls+)      case "$5" in
2457                                 alpha)
2458                                         osname=dec_osf
2459                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2460                                         case "$osvers" in
2461                                         [1-9].[0-9]*) ;;
2462                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2463                                         esac
2464                                         ;;
2465                         hp*)    osname=hp_osf1  ;;
2466                         mips)   osname=mips_osf1 ;;
2467                         esac
2468                         ;;
2469                 unixware) osname=svr5
2470                         osvers="$4"
2471                         ;;
2472                 uts) osname=uts
2473                         osvers="$3"
2474                         ;;
2475                 $2) case "$osname" in
2476                         *isc*) ;;
2477                         *freebsd*) ;;
2478                         svr*)
2479                                 : svr4.x or possibly later
2480                                 case "svr$3" in 
2481                                 ${osname}*)
2482                                         osname=svr$3
2483                                         osvers=$4
2484                                         ;;
2485                                 esac
2486                                 case "$osname" in
2487                                 svr4.0)
2488                                         : Check for ESIX
2489                                         if test -f /stand/boot ; then
2490                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2491                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2492                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2493                                                         if test -n "$isesix"; then
2494                                                                 osname=esix4
2495                                                         fi
2496                                                 fi
2497                                         fi
2498                                         ;;
2499                                 esac
2500                                 ;;
2501                         *)      if test -f /etc/systemid; then
2502                                         osname=sco
2503                                         set `echo $3 | $sed 's/\./ /g'` $4
2504                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2505                                                 osvers=$1.$2.$3
2506                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2507                                                 osvers=$1.$2
2508                                         elif $test -f $src/hints/sco_$1.sh; then
2509                                                 osvers=$1
2510                                         fi
2511                                 else
2512                                         case "$osname" in
2513                                         '') : Still unknown.  Probably a generic Sys V.
2514                                                 osname="sysv"
2515                                                 osvers="$3"
2516                                                 ;;
2517                                         esac
2518                                 fi
2519                                 ;;
2520                         esac
2521                         ;;
2522                 *)      case "$osname" in
2523                         '') : Still unknown.  Probably a generic BSD.
2524                                 osname="$1"
2525                                 osvers="$3"
2526                                 ;;
2527                         esac
2528                         ;;
2529                 esac
2530         else
2531                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2532                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2533                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2534                                 osname=news_os
2535                         fi
2536                         $rm -f UU/kernel.what
2537                 elif test -d c:/.; then
2538                         set X $myuname
2539                         osname=os2
2540                         osvers="$5"
2541                 fi
2542         fi
2543         
2544         : Now look for a hint file osname_osvers, unless one has been
2545         : specified already.
2546         case "$hintfile" in
2547         ''|' ')
2548                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2549                 : Also try without trailing minor version numbers.
2550                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2551                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2552                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2553                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2554                 case "$file" in
2555                 '') dflt=none ;;
2556                 *)  case "$osvers" in
2557                         '') dflt=$file
2558                                 ;;
2559                         *)  if $test -f $src/hints/$file.sh ; then
2560                                         dflt=$file
2561                                 elif $test -f $src/hints/$xfile.sh ; then
2562                                         dflt=$xfile
2563                                 elif $test -f $src/hints/$xxfile.sh ; then
2564                                         dflt=$xxfile
2565                                 elif $test -f $src/hints/$xxxfile.sh ; then
2566                                         dflt=$xxxfile
2567                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2568                                         dflt=$xxxxfile
2569                                 elif $test -f "$src/hints/${osname}.sh" ; then
2570                                         dflt="${osname}"
2571                                 else
2572                                         dflt=none
2573                                 fi
2574                                 ;;
2575                         esac
2576                         ;;
2577                 esac
2578                 if $test -f Policy.sh ; then
2579                         case "$dflt" in
2580                         *Policy*) ;;
2581                         none) dflt="Policy" ;;
2582                         *) dflt="Policy $dflt" ;;
2583                         esac
2584                 fi
2585                 ;;
2586         *)
2587                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2588                 ;;
2589         esac
2590
2591         if $test -f Policy.sh ; then
2592                 $cat <<EOM
2593
2594 There's also a Policy hint file available, which should make the
2595 site-specific (policy) questions easier to answer.
2596 EOM
2597
2598         fi
2599
2600         $cat <<EOM
2601
2602 You may give one or more space-separated answers, or "none" if appropriate.
2603 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2604 is a good thing.  DO NOT give a wrong version or a wrong OS.
2605
2606 EOM
2607
2608         rp="Which of these apply, if any?"
2609         . UU/myread
2610         tans=$ans
2611         for file in $tans; do
2612                 if $test X$file = XPolicy -a -f Policy.sh; then
2613                         . Policy.sh
2614                         $cat Policy.sh >> UU/config.sh
2615                 elif $test -f $src/hints/$file.sh; then
2616                         . $src/hints/$file.sh
2617                         $cat $src/hints/$file.sh >> UU/config.sh
2618                 elif $test X$tans = X -o X$tans = Xnone ; then
2619                         : nothing
2620                 else
2621                         : Give one chance to correct a possible typo.
2622                         echo "$file.sh does not exist"
2623                         dflt=$file
2624                         rp="hint to use instead?"
2625                         . UU/myread
2626                         for file in $ans; do
2627                                 if $test -f "$src/hints/$file.sh"; then
2628                                         . $src/hints/$file.sh
2629                                         $cat $src/hints/$file.sh >> UU/config.sh
2630                                 elif $test X$ans = X -o X$ans = Xnone ; then
2631                                         : nothing
2632                                 else
2633                                         echo "$file.sh does not exist -- ignored."
2634                                 fi
2635                         done
2636                 fi
2637         done
2638
2639         hint=recommended
2640         : Remember our hint file for later.
2641         if $test -f "$src/hints/$file.sh" ; then
2642                 hintfile="$file"
2643         else
2644                 hintfile=''
2645         fi
2646 fi
2647 cd UU
2648 ;;
2649 *)
2650         echo " "
2651         echo "Fetching default answers from $config_sh..." >&4
2652         tmp_n="$n"
2653         tmp_c="$c"
2654         cd ..
2655         cp $config_sh config.sh 2>/dev/null
2656         chmod +w config.sh
2657         . ./config.sh
2658         cd UU
2659         cp ../config.sh .
2660         n="$tmp_n"
2661         c="$tmp_c"
2662         hint=previous
2663         ;;
2664 esac
2665 test "$override" && . ./optdef.sh
2666 myuname="$newmyuname"
2667
2668 : Restore computed paths
2669 for file in $loclist $trylist; do
2670         eval $file="\$_$file"
2671 done
2672
2673 cat << EOM
2674
2675 Configure uses the operating system name and version to set some defaults.
2676 The default value is probably right if the name rings a bell. Otherwise,
2677 since spelling matters for me, either accept the default or answer "none"
2678 to leave it blank.
2679
2680 EOM
2681 case "$osname" in
2682         ''|' ')
2683                 case "$hintfile" in
2684                 ''|' '|none) dflt=none ;;
2685                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2686                 esac
2687                 ;;
2688         *) dflt="$osname" ;;
2689 esac
2690 rp="Operating system name?"
2691 . ./myread
2692 case "$ans" in
2693 none)  osname='' ;;
2694 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2695 esac
2696 echo " "
2697 case "$osvers" in
2698         ''|' ')
2699                 case "$hintfile" in
2700                 ''|' '|none) dflt=none ;;
2701                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2702                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2703                         case "$dflt" in
2704                         ''|' ') dflt=none ;;
2705                         esac
2706                         ;;
2707                 esac
2708                 ;;
2709         *) dflt="$osvers" ;;
2710 esac
2711 rp="Operating system version?"
2712 . ./myread
2713 case "$ans" in
2714 none)  osvers='' ;;
2715 *) osvers="$ans" ;;
2716 esac
2717
2718
2719 . ./posthint.sh
2720
2721 : who configured the system
2722 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2723 cf_by=`(logname) 2>/dev/null`
2724 case "$cf_by" in
2725 "")
2726         cf_by=`(whoami) 2>/dev/null`
2727         case "$cf_by" in
2728         "") cf_by=unknown ;;
2729         esac ;;
2730 esac
2731
2732 : set up the script used to warn in case of inconsistency
2733 cat <<EOS >whoa
2734 $startsh
2735 EOS
2736 cat <<'EOSC' >>whoa
2737 dflt=y
2738 echo " "
2739 echo "*** WHOA THERE!!! ***" >&4
2740 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2741 rp="    Keep the $hint value?"
2742 . ./myread
2743 case "$ans" in
2744 y) td=$was; tu=$was;;
2745 esac
2746 EOSC
2747
2748 : function used to set $1 to $val
2749 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2750 case "$val$was" in
2751 $define$undef) . ./whoa; eval "$var=\$td";;
2752 $undef$define) . ./whoa; eval "$var=\$tu";;
2753 *) eval "$var=$val";;
2754 esac'
2755
2756 case "$usethreads" in
2757 $define|true|[yY]*)     dflt='y';;
2758 *) dflt='n';;
2759 esac
2760 cat <<EOM
2761
2762 Perl can be built to take advantage of threads on some systems.
2763 To do so, Configure can be run with -Dusethreads.
2764
2765 Note that threading is a highly experimental feature, and
2766 some known race conditions still remain.  If you choose to try
2767 it, be very sure to not actually deploy it for production
2768 purposes.  README.threads has more details, and is required
2769 reading if you enable threads.
2770
2771 If this doesn't make any sense to you, just accept the default '$dflt'.
2772 EOM
2773 rp='Build a threading Perl?'
2774 . ./myread
2775 case "$ans" in
2776 y|Y)    val="$define" ;;
2777 *)      val="$undef" ;;
2778 esac
2779 set usethreads
2780 eval $setvar
2781
2782 case "$usethreads" in
2783 $define)
2784         $cat <<EOM
2785
2786 As of 5.5.640, Perl has two different internal threading implementations,
2787 the 5.005 version (5005threads) and an interpreter-based version
2788 (ithreads) that has one interpreter per thread.  Both are very 
2789 experimental.  This arrangement exists to help developers work out
2790 which one is better.
2791
2792 If you're a casual user, you probably don't want interpreter-threads
2793 at this time.  There doesn't yet exist a way to create threads from
2794 within Perl in this model, i.e., "use Thread;" will NOT work.
2795 EOM
2796         : Default to ithreads unless overridden on command line or with
2797         : old config.sh
2798         dflt='y'
2799         case "$use5005threads" in
2800                 $define|true|[yY]*) dflt='n';;
2801         esac
2802         case "$useithreads" in
2803                 $undef|false|[nN]*) dflt='n';;
2804         esac
2805         rp='Use interpreter-based ithreads?'
2806         . ./myread
2807         case "$ans" in
2808         y|Y)    val="$define" ;;
2809         *)      val="$undef" ;;
2810         esac
2811         set useithreads
2812         eval $setvar
2813         : Now set use5005threads to the opposite value.
2814         case "$useithreads" in
2815         $define) val="$undef" ;;
2816         *) val="$define" ;;
2817         esac
2818         set use5005threads
2819         eval $setvar
2820         ;;
2821 *)
2822         useithreads="$undef"
2823         use5005threads="$undef"
2824         ;;
2825 esac
2826
2827 case "$d_oldpthreads" in
2828 '')     : Configure tests would be welcome here.  For now, assume undef.
2829         val="$undef" ;;
2830 *)      val="$d_oldpthreads" ;;
2831 esac
2832 set d_oldpthreads
2833 eval $setvar
2834
2835
2836 case "$usethreads" in
2837 "$define"|true|[yY]*)
2838 : Look for a hint-file generated 'call-back-unit'.  If the
2839 : user has specified that a threading perl is to be built,
2840 : we may need to set or change some other defaults.
2841         if $test -f usethreads.cbu; then
2842                 echo "Your platform has some specific hints for threaded builds, using them..."
2843                 . ./usethreads.cbu
2844         else
2845                 $cat <<EOM
2846 (Your platform doesn't have any specific hints for threaded builds.
2847  Assuming POSIX threads, then.)
2848 EOM
2849         fi
2850         ;;
2851 esac
2852
2853 cat <<EOM
2854
2855 Perl can be built so that multiple Perl interpreters can coexist
2856 within the same Perl executable.
2857 EOM
2858
2859 case "$useithreads" in
2860 $define)
2861         cat <<EOM
2862 This multiple interpreter support is required for interpreter-based threads.
2863 EOM
2864         val="$define"
2865         ;;
2866 *)      case "$usemultiplicity" in
2867         $define|true|[yY]*)     dflt='y';;
2868         *) dflt='n';;
2869         esac
2870         echo " "
2871         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2872         rp='Build Perl for multiplicity?'
2873         . ./myread
2874         case "$ans" in
2875         y|Y)    val="$define" ;;
2876         *)      val="$undef" ;;
2877         esac
2878         ;;
2879 esac
2880 set usemultiplicity
2881 eval $setvar
2882
2883 : determine where manual pages are on this system
2884 echo " "
2885 case "$sysman" in
2886 '') 
2887         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2888         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2889         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2890         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2891         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2892         sysman=`./loc . /usr/man/man1 $syspath`
2893         ;;
2894 esac
2895 if $test -d "$sysman"; then
2896         echo "System manual is in $sysman." >&4
2897 else
2898         echo "Could not find manual pages in source form." >&4
2899 fi
2900
2901 : see what memory models we can support
2902 case "$models" in
2903 '')
2904         $cat >pdp11.c <<'EOP'
2905 int main() {
2906 #ifdef pdp11
2907         exit(0);
2908 #else
2909         exit(1);
2910 #endif
2911 }
2912 EOP
2913         case "$cc" in
2914         '') modelcc="$cc" ;;
2915         *) modelcc="cc" ;;
2916         esac
2917         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2918         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2919                 dflt='unsplit split'
2920         else
2921                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2922                 case "$tans" in
2923                 X) dflt='none';;
2924                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2925                                 dflt='small'
2926                         else
2927                                 dflt=''
2928                         fi
2929                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2930                                 dflt="$dflt medium"
2931                         fi
2932                         if $test -d /lib/large || $test -d /usr/lib/large; then
2933                                 dflt="$dflt large"
2934                         fi
2935                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2936                                 dflt="$dflt huge"
2937                         fi
2938                 esac
2939         fi;;
2940 *) dflt="$models";;
2941 esac
2942 $cat <<EOM
2943  
2944 Some systems have different model sizes.  On most systems they are called
2945 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2946 split.  If your system doesn't support different memory models, say "none".
2947 If you wish to force everything to one memory model, say "none" here and
2948 put the appropriate flags later when it asks you for other cc and ld flags.
2949 Venix systems may wish to put "none" and let the compiler figure things out.
2950 (In the following question multiple model names should be space separated.)
2951
2952 The default for most systems is "none".
2953
2954 EOM
2955 rp="Which memory models are supported?"
2956 . ./myread
2957 models="$ans"
2958
2959 case "$models" in
2960 none)
2961         small=''
2962         medium=''
2963         large=''
2964         huge=''
2965         unsplit=''
2966         split=''
2967         ;;
2968 *split)
2969         case "$split" in
2970         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2971                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2972                         dflt='-i'
2973                 else
2974                         dflt='none'
2975                 fi;;
2976         *) dflt="$split";;
2977         esac
2978         rp="What flag indicates separate I and D space?"
2979         . ./myread
2980         tans="$ans"
2981         case "$tans" in
2982         none) tans='';;
2983         esac
2984         split="$tans"
2985         unsplit='';;
2986 *large*|*small*|*medium*|*huge*)
2987         case "$models" in
2988         *large*)
2989                 case "$large" in
2990                 '') dflt='-Ml';;
2991                 *) dflt="$large";;
2992                 esac
2993         rp="What flag indicates large model?"
2994         . ./myread
2995         tans="$ans"
2996         case "$tans" in
2997         none) tans='';
2998         esac
2999         large="$tans";;
3000         *) large='';;
3001         esac
3002         case "$models" in
3003         *huge*) case "$huge" in
3004                 '') dflt='-Mh';;
3005                 *) dflt="$huge";;
3006                 esac
3007                 rp="What flag indicates huge model?"
3008                 . ./myread
3009                 tans="$ans"
3010                 case "$tans" in
3011                 none) tans='';
3012                 esac
3013                 huge="$tans";;
3014         *) huge="$large";;
3015         esac
3016         case "$models" in
3017         *medium*) case "$medium" in
3018                 '') dflt='-Mm';;
3019                 *) dflt="$medium";;
3020                 esac
3021                 rp="What flag indicates medium model?"
3022                 . ./myread
3023                 tans="$ans"
3024                 case "$tans" in
3025                 none) tans='';
3026                 esac
3027                 medium="$tans";;
3028         *) medium="$large";;
3029         esac
3030         case "$models" in
3031         *small*) case "$small" in
3032                 '') dflt='none';;
3033                 *) dflt="$small";;
3034                 esac
3035                 rp="What flag indicates small model?"
3036                 . ./myread
3037                 tans="$ans"
3038                 case "$tans" in
3039                 none) tans='';
3040                 esac
3041                 small="$tans";;
3042         *) small='';;
3043         esac
3044         ;;
3045 *)
3046         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3047         ;;
3048 esac
3049 $rm -f pdp11.* pdp11
3050
3051 : make some quick guesses about what we are up against
3052 echo " "
3053 $echo $n "Hmm...  $c"
3054 echo exit 1 >bsd
3055 echo exit 1 >usg
3056 echo exit 1 >v7
3057 echo exit 1 >osf1
3058 echo exit 1 >eunice
3059 echo exit 1 >xenix
3060 echo exit 1 >venix
3061 echo exit 1 >os2
3062 d_bsd="$undef"
3063 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3064 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3065 then
3066         echo "Looks kind of like an OSF/1 system, but we'll see..."
3067         echo exit 0 >osf1
3068 elif test `echo abc | tr a-z A-Z` = Abc ; then
3069         xxx=`./loc addbib blurfl $pth`
3070         if $test -f $xxx; then
3071         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3072                 echo exit 0 >bsd
3073                 echo exit 0 >usg
3074         else
3075                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3076                         echo "Looks kind of like an extended USG system, but we'll see..."
3077                 else
3078                         echo "Looks kind of like a USG system, but we'll see..."
3079                 fi
3080                 echo exit 0 >usg
3081         fi
3082 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3083         echo "Looks kind of like a BSD system, but we'll see..."
3084         d_bsd="$define"
3085         echo exit 0 >bsd
3086 else
3087         echo "Looks kind of like a Version 7 system, but we'll see..."
3088         echo exit 0 >v7
3089 fi
3090 case "$eunicefix" in
3091 *unixtovms*)
3092         $cat <<'EOI'
3093 There is, however, a strange, musty smell in the air that reminds me of
3094 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3095 EOI
3096         echo exit 0 >eunice
3097         d_eunice="$define"
3098 : it so happens the Eunice I know will not run shell scripts in Unix format
3099         ;;
3100 *)
3101         echo " "
3102         echo "Congratulations.  You aren't running Eunice."
3103         d_eunice="$undef"
3104         ;;
3105 esac
3106 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3107 case "$p_" in
3108 :) ;;
3109 *)
3110         $cat <<'EOI'
3111 I have the feeling something is not exactly right, however...don't tell me...
3112 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3113 EOI
3114         echo exit 0 >os2
3115         ;;
3116 esac
3117 if test -f /xenix; then
3118         echo "Actually, this looks more like a XENIX system..."
3119         echo exit 0 >xenix
3120         d_xenix="$define"
3121 else
3122         echo " "
3123         echo "It's not Xenix..."
3124         d_xenix="$undef"
3125 fi
3126 chmod +x xenix
3127 $eunicefix xenix
3128 if test -f /venix; then
3129         echo "Actually, this looks more like a VENIX system..."
3130         echo exit 0 >venix
3131 else
3132         echo " "
3133         if ./xenix; then
3134                 : null
3135         else
3136                 echo "Nor is it Venix..."
3137         fi
3138 fi
3139 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3140 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3141 $rm -f foo
3142
3143 : see if we need a special compiler
3144 echo " "
3145 if ./usg; then
3146         case "$cc" in
3147         '') case "$Mcc" in
3148                 /*) dflt='Mcc';;
3149                 *) case "$large" in
3150                         -M*) dflt='cc';;
3151                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3152                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3153                                                 dflt='cc'
3154                                         else
3155                                                 dflt='cc -M'
3156                                         fi
3157                                 else
3158                                         dflt='cc'
3159                                 fi;;
3160                         esac;;
3161                 esac;;
3162         *)  dflt="$cc";;
3163         esac
3164         case "$dflt" in
3165         *M*)    $cat <<'EOM'
3166 On some older systems the default C compiler will not resolve multiple global
3167 references that happen to have the same name.  On some such systems the "Mcc"
3168 command may be used to force these to be resolved.  On other systems a "cc -M"
3169 command is required.  (Note that the -M flag on other systems indicates a
3170 memory model to use!) If you have the Gnu C compiler, you might wish to use
3171 that instead.
3172
3173 EOM
3174         ;;
3175         esac
3176         rp="Use which C compiler?"
3177         . ./myread
3178         cc="$ans"
3179 else
3180         case "$cc" in
3181         '') dflt=cc;;
3182         *) dflt="$cc";;
3183         esac
3184         rp="Use which C compiler?"
3185         . ./myread
3186         cc="$ans"
3187 fi
3188 : Look for a hint-file generated 'call-back-unit'.  Now that the
3189 : user has specified the compiler, we may need to set or change some
3190 : other defaults.
3191 if $test -f cc.cbu; then
3192     . ./cc.cbu
3193 fi
3194 . ./checkcc
3195
3196 echo " "
3197 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3198 $cat >gccvers.c <<EOM
3199 #include <stdio.h>
3200 int main() {
3201 #ifdef __GNUC__
3202 #ifdef __VERSION__
3203         printf("%s\n", __VERSION__);
3204 #else
3205         printf("%s\n", "1");
3206 #endif
3207 #endif
3208         exit(0);
3209 }
3210 EOM
3211 if $cc $ldflags -o gccvers gccvers.c; then
3212         gccversion=`./gccvers`
3213         case "$gccversion" in
3214         '') echo "You are not using GNU cc." ;;
3215         *)  echo "You are using GNU cc $gccversion."
3216             ;;
3217         esac
3218 else
3219         echo " "
3220         echo "*** WHOA THERE!!! ***" >&4
3221         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3222         case "$knowitall" in
3223         '')
3224         echo "    You'd better start hunting for one and let me know about it." >&4
3225                 exit 1
3226                 ;;
3227         esac
3228 fi
3229 $rm -f gccvers*
3230 case "$gccversion" in
3231 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3232 esac
3233 case "$gccversion" in
3234 '') gccosandvers='' ;;
3235 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3236    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3237    gccshortvers=''
3238    case "$gccosandvers" in
3239    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3240    $osname$osvers) ;; # looking good
3241    $osname*) cat <<EOM >&4
3242
3243 *** WHOA THERE!!! ***
3244
3245     Your gcc has not been compiled for the exact release of
3246     your operating system ($gccosandvers versus $osname$osvers).
3247
3248     In general it is a good idea to keep gcc synchronized with
3249     the operating system because otherwise serious problems
3250     may ensue when trying to compile software, like Perl.
3251
3252     I'm trying to be optimistic here, though, and will continue.
3253     If later during the configuration and build icky compilation
3254     problems appear (headerfile conflicts being the most common
3255     manifestation), I suggest reinstalling the gcc to match
3256     your operating system release.
3257
3258 EOM
3259       ;;
3260    *) gccosandvers='' ;; # failed to parse, better be silent
3261    esac
3262    ;;
3263 esac
3264
3265
3266
3267
3268 : see how we invoke the C preprocessor
3269 echo " "
3270 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3271 cat <<'EOT' >testcpp.c
3272 #define ABC abc
3273 #define XYZ xyz
3274 ABC.XYZ
3275 EOT
3276 cd ..
3277 if test ! -f cppstdin; then
3278         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3279                 # AIX cc -E doesn't show the absolute headerfile
3280                 # locations but we'll cheat by using the -M flag.
3281                 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
3282         else
3283                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3284         fi
3285 else
3286         echo "Keeping your $hint cppstdin wrapper."
3287 fi
3288 chmod 755 cppstdin
3289 wrapper=`pwd`/cppstdin
3290 ok='false'
3291 cd UU
3292
3293 if $test "X$cppstdin" != "X" && \
3294         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3295         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3296 then
3297         echo "You used to use $cppstdin $cppminus so we'll use that again."
3298         case "$cpprun" in
3299         '') echo "But let's see if we can live without a wrapper..." ;;
3300         *)
3301                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3302                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3303                 then
3304                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3305                         ok='true'
3306                 else
3307                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3308                 fi
3309                 ;;
3310         esac
3311 else
3312         case "$cppstdin" in
3313         '') ;;
3314         *)
3315                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3316                 ;;
3317         esac
3318 fi
3319
3320 if $ok; then
3321         : nothing
3322 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3323         $cc -E <testcpp.c >testcpp.out 2>&1; \
3324         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3325         echo "Yup, it does."
3326         x_cpp="$cc -E"
3327         x_minus='';
3328 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3329         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3330         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3331         echo "Yup, it does."
3332         x_cpp="$cc -E"
3333         x_minus='-';
3334 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3335         $cc -P <testcpp.c >testcpp.out 2>&1; \
3336         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3337         echo "Yipee, that works!"
3338         x_cpp="$cc -P"
3339         x_minus='';
3340 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3341         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3342         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3343         echo "At long last!"
3344         x_cpp="$cc -P"
3345         x_minus='-';
3346 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3347         $cpp <testcpp.c >testcpp.out 2>&1; \
3348         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3349         echo "It works!"
3350         x_cpp="$cpp"
3351         x_minus='';
3352 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3353         $cpp - <testcpp.c >testcpp.out 2>&1; \
3354         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3355         echo "Hooray, it works!  I was beginning to wonder."
3356         x_cpp="$cpp"
3357         x_minus='-';
3358 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3359         $wrapper <testcpp.c >testcpp.out 2>&1; \
3360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3361         x_cpp="$wrapper"
3362         x_minus=''
3363         echo "Eureka!"
3364 else
3365         dflt=''
3366         rp="No dice.  I can't find a C preprocessor.  Name one:"
3367         . ./myread
3368         x_cpp="$ans"
3369         x_minus=''
3370         $x_cpp <testcpp.c >testcpp.out 2>&1
3371         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3372                 echo "OK, that will do." >&4
3373         else
3374 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3375                 exit 1
3376         fi
3377 fi
3378
3379 case "$ok" in
3380 false)
3381         cppstdin="$x_cpp"
3382         cppminus="$x_minus"
3383         cpprun="$x_cpp"
3384         cpplast="$x_minus"
3385         set X $x_cpp
3386         shift
3387         case "$1" in
3388         "$cpp")
3389                 echo "Perhaps can we force $cc -E using a wrapper..."
3390                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3391                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3392                 then
3393                         echo "Yup, we can."
3394                         cppstdin="$wrapper"
3395                         cppminus='';
3396                 else
3397                         echo "Nope, we'll have to live without it..."
3398                 fi
3399                 ;;
3400         esac
3401         case "$cpprun" in
3402         "$wrapper")
3403                 cpprun=''
3404                 cpplast=''
3405                 ;;
3406         esac
3407         ;;
3408 esac
3409
3410 case "$cppstdin" in
3411 "$wrapper"|'cppstdin') ;;
3412 *) $rm -f $wrapper;;
3413 esac
3414 $rm -f testcpp.c testcpp.out
3415
3416 : decide how portable to be.  Allow command line overrides.
3417 case "$d_portable" in
3418 "$undef") ;;
3419 *)      d_portable="$define" ;;
3420 esac
3421
3422 : set up shell script to do ~ expansion
3423 cat >filexp <<EOSS
3424 $startsh
3425 : expand filename
3426 case "\$1" in
3427  ~/*|~)
3428         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3429         ;;
3430  ~*)
3431         if $test -f /bin/csh; then
3432                 /bin/csh -f -c "glob \$1"
3433                 failed=\$?
3434                 echo ""
3435                 exit \$failed
3436         else
3437                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3438                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3439                 if $test ! -d "\$dir"; then
3440                         me=\`basename \$0\`
3441                         echo "\$me: can't locate home directory for: \$name" >&2
3442                         exit 1
3443                 fi
3444                 case "\$1" in
3445                 */*)
3446                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3447                         ;;
3448                 *)
3449                         echo \$dir
3450                         ;;
3451                 esac
3452         fi
3453         ;;
3454 *)
3455         echo \$1
3456         ;;
3457 esac
3458 EOSS
3459 chmod +x filexp
3460 $eunicefix filexp
3461
3462 : now set up to get a file name
3463 cat <<EOS >getfile
3464 $startsh
3465 EOS
3466 cat <<'EOSC' >>getfile
3467 tilde=''
3468 fullpath=''
3469 already=''
3470 skip=''
3471 none_ok=''
3472 exp_file=''
3473 nopath_ok=''
3474 orig_rp="$rp"
3475 orig_dflt="$dflt"
3476 case "$gfpth" in
3477 '') gfpth='.' ;;
3478 esac
3479
3480 case "$fn" in
3481 *\(*)
3482         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3483         fn=`echo $fn | sed 's/(.*)//'`
3484         ;;
3485 esac
3486
3487 case "$fn" in
3488 *:*)
3489         loc_file=`expr $fn : '.*:\(.*\)'`
3490         fn=`expr $fn : '\(.*\):.*'`
3491         ;;
3492 esac
3493
3494 case "$fn" in
3495 *~*) tilde=true;;
3496 esac
3497 case "$fn" in
3498 */*) fullpath=true;;
3499 esac
3500 case "$fn" in
3501 *+*) skip=true;;
3502 esac
3503 case "$fn" in
3504 *n*) none_ok=true;;
3505 esac
3506 case "$fn" in
3507 *e*) exp_file=true;;
3508 esac
3509 case "$fn" in
3510 *p*) nopath_ok=true;;
3511 esac
3512
3513 case "$fn" in
3514 *f*) type='File';;
3515 *d*) type='Directory';;
3516 *l*) type='Locate';;
3517 esac
3518
3519 what="$type"
3520 case "$what" in
3521 Locate) what='File';;
3522 esac
3523
3524 case "$exp_file" in
3525 '')
3526         case "$d_portable" in
3527         "$define") ;;
3528         *) exp_file=true;;
3529         esac
3530         ;;
3531 esac
3532
3533 cd ..
3534 while test "$type"; do
3535         redo=''
3536         rp="$orig_rp"
3537         dflt="$orig_dflt"
3538         case "$tilde" in
3539         true) rp="$rp (~name ok)";;
3540         esac
3541         . UU/myread
3542         if test -f UU/getfile.ok && \
3543                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3544         then
3545                 value="$ans"
3546                 ansexp="$ans"
3547                 break
3548         fi
3549         case "$ans" in
3550         none)
3551                 value=''
3552                 ansexp=''
3553                 case "$none_ok" in
3554                 true) type='';;
3555                 esac
3556                 ;;
3557         *)
3558                 case "$tilde" in
3559                 '') value="$ans"
3560                         ansexp="$ans";;
3561                 *)
3562                         value=`UU/filexp $ans`
3563                         case $? in
3564                         0)
3565                                 if test "$ans" != "$value"; then
3566                                         echo "(That expands to $value on this system.)"
3567                                 fi
3568                                 ;;
3569                         *) value="$ans";;
3570                         esac
3571                         ansexp="$value"
3572                         case "$exp_file" in
3573                         '') value="$ans";;
3574                         esac
3575                         ;;
3576                 esac
3577                 case "$fullpath" in
3578                 true)
3579                         case "$ansexp" in
3580                         /*) value="$ansexp" ;;
3581                         [a-zA-Z]:/*) value="$ansexp" ;;
3582                         *)
3583                                 redo=true
3584                                 case "$already" in
3585                                 true)
3586                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3587                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3588                                         ;;
3589                                 *)
3590                                 echo "Please give a full path name, starting with slash." >&4
3591                                         case "$tilde" in
3592                                         true)
3593                                 echo "Note that using ~name is ok provided it expands well." >&4
3594                                                 already=true
3595                                                 ;;
3596                                         esac
3597                                 esac
3598                                 ;;
3599                         esac
3600                         ;;
3601                 esac
3602                 case "$redo" in
3603                 '')
3604                         case "$type" in
3605                         File)
3606                                 for fp in $gfpth; do
3607                                         if test "X$fp" = X.; then
3608                                             pf="$ansexp"
3609                                         else    
3610                                             pf="$fp/$ansexp"
3611                                         fi
3612                                         if test -f "$pf"; then
3613                                                 type=''
3614                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3615                                         then
3616                                                 echo "($value is not a plain file, but that's ok.)"
3617                                                 type=''
3618                                         fi
3619                                         if test X"$type" = X; then
3620                                             value="$pf"
3621                                             break
3622                                         fi
3623                                 done
3624                                 ;;
3625                         Directory)
3626                                 for fp in $gfpth; do
3627                                         if test "X$fp" = X.; then
3628                                             dir="$ans"
3629                                             direxp="$ansexp"
3630                                         else    
3631                                             dir="$fp/$ansexp"
3632                                             direxp="$fp/$ansexp"
3633                                         fi
3634                                         if test -d "$direxp"; then
3635                                                 type=''
3636                                                 value="$dir"
3637                                                 break
3638                                         fi
3639                                 done
3640                                 ;;
3641                         Locate)
3642                                 if test -d "$ansexp"; then
3643                                         echo "(Looking for $loc_file in directory $value.)"
3644                                         value="$value/$loc_file"
3645                                         ansexp="$ansexp/$loc_file"
3646                                 fi
3647                                 if test -f "$ansexp"; then
3648                                         type=''
3649                                 fi
3650                                 case "$nopath_ok" in
3651                                 true)   case "$value" in
3652                                         */*) ;;
3653                                         *)      echo "Assuming $value will be in people's path."
3654                                                 type=''
3655                                                 ;;
3656                                         esac
3657                                         ;;
3658                                 esac
3659                                 ;;
3660                         esac
3661
3662                         case "$skip" in
3663                         true) type='';
3664                         esac
3665
3666                         case "$type" in
3667                         '') ;;
3668                         *)
3669                                 if test "$fastread" = yes; then
3670                                         dflt=y
3671                                 else
3672                                         dflt=n
3673                                 fi
3674                                 rp="$what $value doesn't exist.  Use that name anyway?"
3675                                 . UU/myread
3676                                 dflt=''
3677                                 case "$ans" in
3678                                 y*) type='';;
3679                                 *) echo " ";;
3680                                 esac
3681                                 ;;
3682                         esac
3683                         ;;
3684                 esac
3685                 ;;
3686         esac
3687 done
3688 cd UU
3689 ans="$value"
3690 rp="$orig_rp"
3691 dflt="$orig_dflt"
3692 rm -f getfile.ok
3693 test "X$gfpthkeep" != Xy && gfpth=""
3694 EOSC
3695
3696 : What should the include directory be ?
3697 echo " "
3698 $echo $n "Hmm...  $c"
3699 dflt='/usr/include'
3700 incpath=''
3701 mips_type=''
3702 if $test -f /bin/mips && /bin/mips; then
3703         echo "Looks like a MIPS system..."
3704         $cat >usr.c <<'EOCP'
3705 #ifdef SYSTYPE_BSD43
3706 /bsd43
3707 #endif
3708 EOCP
3709         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3710                 dflt='/bsd43/usr/include'
3711                 incpath='/bsd43'
3712                 mips_type='BSD 4.3'
3713         else
3714                 mips_type='System V'
3715         fi
3716         $rm -f usr.c usr.out
3717         echo "and you're compiling with the $mips_type compiler and libraries."
3718         xxx_prompt=y
3719         echo "exit 0" >mips
3720 else
3721         echo "Doesn't look like a MIPS system."
3722         xxx_prompt=n
3723         echo "exit 1" >mips
3724 fi
3725 chmod +x mips
3726 $eunicefix mips
3727 case "$usrinc" in
3728 '') ;;
3729 *) dflt="$usrinc";;
3730 esac
3731 case "$xxx_prompt" in
3732 y)      fn=d/
3733         echo " "
3734         rp='Where are the include files you want to use?'
3735         . ./getfile
3736         usrinc="$ans"
3737         ;;
3738 *)      usrinc="$dflt"
3739         ;;
3740 esac
3741
3742 : Set private lib path
3743 case "$plibpth" in
3744 '') if ./mips; then
3745                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3746         fi;;
3747 esac
3748 case "$libpth" in
3749 ' ') dlist='';;
3750 '') dlist="$loclibpth $plibpth $glibpth";;
3751 *) dlist="$libpth";;
3752 esac
3753
3754 : Now check and see which directories actually exist, avoiding duplicates
3755 libpth=''
3756 for xxx in $dlist
3757 do
3758     if $test -d $xxx; then
3759                 case " $libpth " in
3760                 *" $xxx "*) ;;
3761                 *) libpth="$libpth $xxx";;
3762                 esac
3763     fi
3764 done
3765 $cat <<'EOM'
3766
3767 Some systems have incompatible or broken versions of libraries.  Among
3768 the directories listed in the question below, please remove any you
3769 know not to be holding relevant libraries, and add any that are needed.
3770 Say "none" for none.
3771
3772 EOM
3773 case "$libpth" in
3774 '') dflt='none';;
3775 *)
3776         set X $libpth
3777         shift
3778         dflt=${1+"$@"}
3779         ;;
3780 esac
3781 rp="Directories to use for library searches?"
3782 . ./myread
3783 case "$ans" in
3784 none) libpth=' ';;
3785 *) libpth="$ans";;
3786 esac
3787
3788 : compute shared library extension
3789 case "$so" in
3790 '')
3791         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3792                 dflt='sl'
3793         else
3794                 dflt='so'
3795         fi
3796         ;;
3797 *) dflt="$so";;
3798 esac
3799 $cat <<EOM
3800
3801 On some systems, shared libraries may be available.  Answer 'none' if
3802 you want to suppress searching of shared libraries for the remainder
3803 of this configuration.
3804
3805 EOM
3806 rp='What is the file extension used for shared libraries?'
3807 . ./myread
3808 so="$ans"
3809
3810 : Define several unixisms.
3811 : Hints files or command line option can be used to override them.
3812 : The convoluted testing is in case hints files set either the old
3813 : or the new name.
3814 case "$_exe" in
3815 '')     case "$exe_ext" in
3816     '') ;;
3817         *)      _exe="$exe_ext" ;;
3818         esac
3819         ;;
3820 esac
3821 case "$_a" in
3822 '')     case "$lib_ext" in
3823     '') _a='.a';;
3824         *)      _a="$lib_ext" ;;
3825         esac
3826         ;;
3827 esac
3828 case "$_o" in
3829 '') case "$obj_ext" in
3830         '')     _o='.o';;
3831         *)      _o="$obj_ext";;
3832         esac
3833         ;;
3834 esac
3835 case "$p_" in
3836 '') case "$path_sep" in
3837         '')     p_=':';;
3838         *)      p_="$path_sep";;
3839         esac
3840         ;;
3841 esac
3842 exe_ext=$_exe
3843 lib_ext=$_a
3844 obj_ext=$_o
3845 path_sep=$p_
3846
3847 : Which makefile gets called first.  This is used by make depend.
3848 case "$firstmakefile" in
3849 '') firstmakefile='makefile';;
3850 esac
3851
3852 case "$usesocks" in
3853 $define|true|[yY]*)     dflt='y';;
3854 *) dflt='n';;
3855 esac
3856 cat <<EOM
3857
3858 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3859 Configure must be run with -Dusesocks.
3860
3861 If this doesn't make any sense to you, just accept the default '$dflt'.
3862 EOM
3863 rp='Build Perl for SOCKS?'
3864 . ./myread
3865 case "$ans" in
3866 y|Y)    val="$define" ;;     
3867 *)      val="$undef" ;;
3868 esac
3869 set usesocks
3870 eval $setvar
3871
3872 : Looking for optional libraries
3873 echo " "
3874 echo "Checking for optional libraries..." >&4
3875 case "$libs" in
3876 ' '|'') dflt='';;
3877 *) dflt="$libs";;
3878 esac
3879 case "$libswanted" in
3880 '') libswanted='c_s';;
3881 esac
3882 case "$usesocks" in
3883 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3884 esac
3885 libsfound=''
3886 libsfiles=''
3887 libsdirs=''
3888 libspath=''
3889 for thisdir in $libpth $xlibpth; do
3890   test -d $thisdir && libspath="$libspath $thisdir"
3891 done
3892 for thislib in $libswanted; do
3893         for thisdir in $libspath; do
3894             xxx=''
3895             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3896                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3897                 $test -f "$xxx" && eval $libscheck
3898                 $test -f "$xxx" && libstyle=shared
3899             fi
3900             if test ! -f "$xxx"; then
3901                 xxx=$thisdir/lib$thislib.$so
3902                 $test -f "$xxx" && eval $libscheck
3903                 $test -f "$xxx" && libstyle=shared
3904             fi  
3905             if test ! -f "$xxx"; then
3906                 xxx=$thisdir/lib$thislib$_a
3907                 $test -f "$xxx" && eval $libscheck
3908                 $test -f "$xxx" && libstyle=static
3909             fi
3910             if test ! -f "$xxx"; then
3911                 xxx=$thisdir/$thislib$_a
3912                 $test -f "$xxx" && eval $libscheck
3913                 $test -f "$xxx" && libstyle=static
3914             fi
3915             if test ! -f "$xxx"; then
3916                 xxx=$thisdir/lib${thislib}_s$_a
3917                 $test -f "$xxx" && eval $libscheck
3918                 $test -f "$xxx" && libstyle=static
3919                 $test -f "$xxx" && thislib=${thislib}_s
3920             fi
3921             if test ! -f "$xxx"; then
3922                 xxx=$thisdir/Slib$thislib$_a
3923                 $test -f "$xxx" && eval $libscheck
3924                 $test -f "$xxx" && libstyle=static
3925             fi
3926             if $test -f "$xxx"; then
3927                 case "$libstyle" in
3928                 shared) echo "Found -l$thislib (shared)." ;;
3929                 static) echo "Found -l$thislib." ;;
3930                 *)      echo "Found -l$thislib ($libstyle)." ;;
3931                 esac
3932                 case " $dflt " in
3933                 *"-l$thislib "*);;
3934                 *) dflt="$dflt -l$thislib"
3935                    libsfound="$libsfound $xxx"
3936                    yyy=`basename $xxx`
3937                    libsfiles="$libsfiles $yyy"
3938                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3939                    case " $libsdirs " in
3940                    *" $yyy "*) ;;
3941                    *) libsdirs="$libsdirs $yyy" ;;
3942                    esac
3943                    ;;
3944                 esac
3945                 break
3946             fi  
3947         done
3948         if $test ! -f "$xxx"; then
3949             echo "No -l$thislib."
3950         fi
3951 done
3952 set X $dflt
3953 shift
3954 dflt="$*"
3955 case "$libs" in
3956 '') dflt="$dflt";;
3957 *) dflt="$libs";;
3958 esac
3959 case "$dflt" in
3960 ' '|'') dflt='none';;
3961 esac
3962
3963 $cat <<EOM
3964
3965 In order to compile $package on your machine, a number of libraries
3966 are usually needed.  Include any other special libraries here as well.
3967 Say "none" for none.  The default list is almost always right.
3968 EOM
3969
3970 echo " "
3971 rp="What libraries to use?"
3972 . ./myread
3973 case "$ans" in
3974 none) libs=' ';;
3975 *) libs="$ans";;
3976 esac
3977
3978 : determine optimization, if desired, or use for debug flag also
3979 case "$optimize" in
3980 ' '|$undef) dflt='none';;
3981 '') dflt='-O';;
3982 *) dflt="$optimize";;
3983 esac
3984 $cat <<EOH
3985
3986 By default, $package compiles with the -O flag to use the optimizer.
3987 Alternately, you might want to use the symbolic debugger, which uses
3988 the -g flag (on traditional Unix systems).  Either flag can be
3989 specified here.  To use neither flag, specify the word "none".
3990
3991 EOH
3992 rp="What optimizer/debugger flag should be used?"
3993 . ./myread
3994 optimize="$ans"
3995 case "$optimize" in
3996 'none') optimize=" ";;
3997 esac
3998
3999 dflt=''
4000 : We will not override a previous value, but we might want to
4001 : augment a hint file
4002 case "$hint" in
4003 default|recommended)
4004         case "$gccversion" in
4005         1*) dflt='-fpcc-struct-return' ;;
4006         esac
4007         case "$optimize" in
4008         *-g*) dflt="$dflt -DDEBUGGING";;
4009         esac
4010         case "$gccversion" in
4011         2*) if test -d /etc/conf/kconfig.d &&
4012                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4013                 then
4014                         dflt="$dflt -posix"
4015                 fi
4016                 ;;
4017         esac
4018         case "$gccversion" in
4019         1*) ;;
4020         2.[0-8]*) ;;
4021         ?*)     echo " "
4022                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4023                 echo 'int main(void) { return 0; }' > gcctest.c
4024                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4025                         echo "Yes, it does." 2>&1
4026                         case "$ccflags" in
4027                         *strict-aliasing*) 
4028                                 echo "Leaving current flags $ccflags alone." 2>&1
4029                                 ;;
4030                         *) dflt="$dflt -fno-strict-aliasing" ;;
4031                         esac
4032                 else
4033                         echo "Nope, it doesn't, but that's ok." 2>&1
4034                 fi
4035                 ;;
4036         esac
4037         ;;
4038 esac
4039
4040 case "$mips_type" in
4041 *BSD*|'') inclwanted="$locincpth $usrinc";;
4042 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4043 esac
4044 for thisincl in $inclwanted; do
4045         if $test -d $thisincl; then
4046                 if $test x$thisincl != x$usrinc; then
4047                         case "$dflt" in
4048                         *$thisincl*);;
4049                         *) dflt="$dflt -I$thisincl";;
4050                         esac
4051                 fi
4052         fi
4053 done
4054
4055 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4056         xxx=true;
4057 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4058         xxx=true;
4059 else
4060         xxx=false;
4061 fi;
4062 if $xxx; then
4063         case "$dflt" in
4064         *$2*);;
4065         *) dflt="$dflt -D$2";;
4066         esac;
4067 fi'
4068
4069 set signal.h LANGUAGE_C; eval $inctest
4070
4071 case "$usesocks" in
4072 $define)
4073         ccflags="$ccflags -DSOCKS"
4074         ;;
4075 esac
4076
4077 case "$hint" in
4078 default|recommended) dflt="$ccflags $dflt" ;;
4079 *) dflt="$ccflags";;
4080 esac
4081
4082 case "$dflt" in
4083 ''|' ') dflt=none;;
4084 esac
4085 $cat <<EOH
4086
4087 Your C compiler may want other flags.  For this question you should include
4088 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4089 but you should NOT include libraries or ld flags like -lwhatever.  If you
4090 want $package to honor its debug switch, you should include -DDEBUGGING here.
4091 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4092
4093 To use no flags, specify the word "none".
4094
4095 EOH
4096 set X $dflt
4097 shift
4098 dflt=${1+"$@"}
4099 rp="Any additional cc flags?"
4100 . ./myread
4101 case "$ans" in
4102 none) ccflags='';;
4103 *) ccflags="$ans";;
4104 esac
4105
4106 : the following weeds options from ccflags that are of no interest to cpp
4107 cppflags="$ccflags"
4108 case "$gccversion" in
4109 1*) cppflags="$cppflags -D__GNUC__"
4110 esac
4111 case "$mips_type" in
4112 '');;
4113 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4114 esac
4115 case "$cppflags" in
4116 '');;
4117 *)
4118         echo " "
4119         echo "Let me guess what the preprocessor flags are..." >&4
4120         set X $cppflags
4121         shift
4122         cppflags=''
4123         $cat >cpp.c <<'EOM'
4124 #define BLURFL foo
4125
4126 BLURFL xx LFRULB
4127 EOM
4128         previous=''
4129         for flag in $*
4130         do
4131                 case "$flag" in
4132                 -*) ftry="$flag";;
4133                 *) ftry="$previous $flag";;
4134                 esac
4135                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4136                         >cpp1.out 2>/dev/null && \
4137                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4138                         >cpp2.out 2>/dev/null && \
4139                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4140                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4141                 then
4142                         cppflags="$cppflags $ftry"
4143                         previous=''
4144                 else
4145                         previous="$flag"
4146                 fi
4147         done
4148         set X $cppflags
4149         shift
4150         cppflags=${1+"$@"}
4151         case "$cppflags" in
4152         *-*)  echo "They appear to be: $cppflags";;
4153         esac
4154         $rm -f cpp.c cpp?.out
4155         ;;
4156 esac
4157
4158 : flags used in final linking phase
4159 case "$ldflags" in
4160 '') if ./venix; then
4161                 dflt='-i -z'
4162         else
4163                 dflt=''
4164         fi
4165         case "$ccflags" in
4166         *-posix*) dflt="$dflt -posix" ;;
4167         esac
4168         ;;
4169 *) dflt="$ldflags";;
4170 esac
4171
4172 : Try to guess additional flags to pick up local libraries.
4173 for thislibdir in $libpth; do
4174         case " $loclibpth " in
4175         *" $thislibdir "*)
4176                 case "$dflt " in 
4177                 *"-L$thislibdir "*) ;;
4178                 *)  dflt="$dflt -L$thislibdir" ;;
4179                 esac
4180                 ;;
4181         esac
4182 done
4183
4184 case "$dflt" in
4185 '') dflt='none' ;;
4186 esac
4187
4188 $cat <<EOH
4189
4190 Your C linker may need flags.  For this question you should
4191 include -L/whatever and any other flags used by the C linker, but you
4192 should NOT include libraries like -lwhatever.
4193
4194 Make sure you include the appropriate -L/path flags if your C linker
4195 does not normally search all of the directories you specified above,
4196 namely
4197         $libpth
4198 To use no flags, specify the word "none".
4199
4200 EOH
4201
4202 rp="Any additional ld flags (NOT including libraries)?"
4203 . ./myread
4204 case "$ans" in
4205 none) ldflags='';;
4206 *) ldflags="$ans";;
4207 esac
4208 rmlist="$rmlist pdp11"
4209
4210 : coherency check
4211 echo " "
4212 echo "Checking your choice of C compiler and flags for coherency..." >&4
4213 $cat > try.c <<'EOF'
4214 #include <stdio.h>
4215 int main() { printf("Ok\n"); exit(0); }
4216 EOF
4217 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4218 shift
4219 $cat >try.msg <<'EOM'
4220 I've tried to compile and run the following simple program:
4221
4222 EOM
4223 $cat try.c >> try.msg
4224
4225 $cat >> try.msg <<EOM
4226
4227 I used the command:
4228
4229         $*
4230         ./try
4231
4232 and I got the following output:
4233
4234 EOM
4235 dflt=y
4236 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4237         if sh -c './try' >>try.msg 2>&1; then
4238                 xxx=`./try`
4239                 case "$xxx" in
4240                 "Ok") dflt=n ;;
4241                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4242                         case " $libs " in
4243                         *" -lsfio "*)
4244                                 cat >> try.msg <<'EOQS'
4245 If $libs contains -lsfio, and sfio is mis-configured, then it
4246 sometimes (apparently) runs and exits with a 0 status, but with no
4247 output!  It may have to do with sfio's use of _exit vs. exit.
4248
4249 EOQS
4250                                 rp="You have a big problem.  Shall I abort Configure"
4251                                 dflt=y
4252                                 ;;
4253                         esac
4254                         ;;
4255                 esac
4256         else
4257                 echo "The program compiled OK, but exited with status $?." >>try.msg
4258                 rp="You have a problem.  Shall I abort Configure"
4259                 dflt=y
4260         fi
4261 else
4262         echo "I can't compile the test program." >>try.msg
4263         rp="You have a BIG problem.  Shall I abort Configure"
4264         dflt=y
4265 fi
4266 case "$dflt" in
4267 y)
4268         $cat try.msg >&4
4269         case "$knowitall" in
4270         '')
4271                 echo "(The supplied flags or libraries might be incorrect.)"
4272                 ;;
4273         *) dflt=n;;
4274         esac
4275         echo " "
4276         . ./myread
4277         case "$ans" in
4278         n*|N*) ;;
4279         *)      echo "Ok.  Stopping Configure." >&4
4280                 exit 1
4281                 ;;
4282         esac
4283         ;;
4284 n) echo "OK, that should do.";;
4285 esac
4286 $rm -f try try.* core
4287
4288 : define an is-a-typedef? function
4289 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4290 case "$inclist" in
4291 "") inclist="sys/types.h";;
4292 esac;
4293 eval "varval=\$$var";
4294 case "$varval" in
4295 "")
4296         $rm -f temp.c;
4297         for inc in $inclist; do
4298                 echo "#include <$inc>" >>temp.c;
4299         done;
4300         echo "#ifdef $type" >> temp.c;
4301         echo "printf(\"We have $type\");" >> temp.c;
4302         echo "#endif" >> temp.c;
4303         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4304         if $contains $type temp.E >/dev/null 2>&1; then
4305                 eval "$var=\$type";
4306         else
4307                 eval "$var=\$def";
4308         fi;
4309         $rm -f temp.?;;
4310 *) eval "$var=\$varval";;
4311 esac'
4312
4313 : define an is-a-typedef? function that prompts if the type is not available.
4314 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4315 case "$inclist" in
4316 "") inclist="sys/types.h";;
4317 esac;
4318 eval "varval=\$$var";
4319 case "$varval" in
4320 "")
4321         $rm -f temp.c;
4322         for inc in $inclist; do
4323                 echo "#include <$inc>" >>temp.c;
4324         done;
4325         echo "#ifdef $type" >> temp.c;
4326         echo "printf(\"We have $type\");" >> temp.c;
4327         echo "#endif" >> temp.c;
4328         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4329         echo " " ;
4330         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4331         if $contains $type temp.E >/dev/null 2>&1; then
4332                 echo "$type found." >&4;
4333                 eval "$var=\$type";
4334         else
4335                 echo "$type NOT found." >&4;
4336                 dflt="$def";
4337                 . ./myread ;
4338                 eval "$var=\$ans";
4339         fi;
4340         $rm -f temp.?;;
4341 *) eval "$var=\$varval";;
4342 esac'
4343
4344 : define a shorthand compile call
4345 compile='
4346 mc_file=$1;
4347 shift;
4348 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4349 : define a shorthand compile call for compilations that should be ok.
4350 compile_ok='
4351 mc_file=$1;
4352 shift;
4353 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4354
4355 : check for lengths of integral types
4356 echo " "
4357 case "$intsize" in
4358 '')
4359         echo "Checking to see how big your integers are..." >&4
4360         $cat >intsize.c <<'EOCP'
4361 #include <stdio.h>
4362 int main()
4363 {
4364         printf("intsize=%d;\n", (int)sizeof(int));
4365         printf("longsize=%d;\n", (int)sizeof(long));
4366         printf("shortsize=%d;\n", (int)sizeof(short));
4367         exit(0);
4368 }
4369 EOCP
4370         set intsize
4371         if eval $compile_ok && ./intsize > /dev/null; then
4372                 eval `./intsize`
4373                 echo "Your integers are $intsize bytes long."
4374                 echo "Your long integers are $longsize bytes long."
4375                 echo "Your short integers are $shortsize bytes long."
4376         else
4377                 $cat >&4 <<EOM
4378 !
4379 Help! I can't compile and run the intsize test program: please enlighten me!
4380 (This is probably a misconfiguration in your system or libraries, and
4381 you really ought to fix it.  Still, I'll try anyway.)
4382 !
4383 EOM
4384                 dflt=4
4385                 rp="What is the size of an integer (in bytes)?"
4386                 . ./myread
4387                 intsize="$ans"
4388                 dflt=$intsize
4389                 rp="What is the size of a long integer (in bytes)?"
4390                 . ./myread
4391                 longsize="$ans"
4392                 dflt=2
4393                 rp="What is the size of a short integer (in bytes)?"
4394                 . ./myread
4395                 shortsize="$ans"
4396         fi
4397         ;;
4398 esac
4399 $rm -f intsize intsize.*
4400
4401 : see what type lseek is declared as in the kernel
4402 rp="What is the type used for lseek's offset on this system?"
4403 set off_t lseektype long stdio.h sys/types.h
4404 eval $typedef_ask
4405
4406 echo " "
4407 echo "Checking to see how big your file offsets are..." >&4
4408 $cat >try.c <<EOCP
4409 #include <sys/types.h>
4410 #include <stdio.h>
4411 int main()
4412 {
4413     printf("%d\n", (int)sizeof($lseektype));
4414     return(0); 
4415 }
4416 EOCP
4417 set try
4418 if eval $compile_ok; then
4419         lseeksize=`./try`
4420         echo "Your file offsets are $lseeksize bytes long."
4421 else
4422         dflt=$longsize
4423         echo " "
4424         echo "(I can't seem to compile the test program.  Guessing...)"
4425         rp="What is the size of your file offsets (in bytes)?"
4426         . ./myread
4427         lseeksize="$ans"
4428 fi
4429 $rm -f try.c try
4430
4431 : see what type file positions are declared as in the library
4432 rp="What is the type for file position used by fsetpos()?"
4433 set fpos_t fpostype long stdio.h sys/types.h
4434 eval $typedef_ask
4435
4436 echo " "
4437 case "$fpostype" in
4438 *_t) zzz="$fpostype"    ;;
4439 *)   zzz="fpos_t"       ;;
4440 esac
4441 echo "Checking the size of $zzz..." >&4 
4442 cat > try.c <<EOCP
4443 #include <sys/types.h>
4444 #include <stdio.h>
4445 int main() {
4446     printf("%d\n", (int)sizeof($fpostype));
4447     exit(0);
4448 }
4449 EOCP
4450 set try
4451 if eval $compile_ok; then
4452         yyy=`./try`
4453         case "$yyy" in
4454         '')     fpossize=4
4455                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4456                 ;;
4457         *)      fpossize=$yyy
4458                 echo "Your $zzz is $fpossize bytes long."
4459                 ;;
4460         esac
4461 else
4462         dflt="$longsize"
4463         echo " " >&4
4464         echo "(I can't compile the test program.  Guessing...)" >&4
4465         rp="What is the size of your file positions (in bytes)?"
4466         . ./myread
4467         fpossize="$ans"
4468 fi
4469
4470
4471
4472 # Backward compatibility (uselfs is deprecated).
4473 case "$uselfs" in
4474 "$define"|true|[yY]*)
4475         cat <<EOM >&4
4476
4477 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4478 EOM
4479         uselargefiles="$define"
4480         ;;
4481 esac                          
4482
4483 case "$lseeksize:$fpossize" in
4484 8:8) cat <<EOM
4485
4486 You can have files larger than 2 gigabytes.
4487 EOM
4488    val="$define" ;;
4489 *)    case "$uselargefiles" in
4490    "$undef"|false|[nN]*) dflt='n' ;;
4491    *)   dflt='y' ;;
4492    esac
4493    cat <<EOM
4494
4495 Perl can be built to understand large files (files larger than 2 gigabytes)
4496 on some systems.  To do so, Configure can be run with -Duselargefiles.
4497
4498 If this doesn't make any sense to you, just accept the default '$dflt'.
4499 EOM
4500    rp='Try to understand large files, if available?'
4501    . ./myread
4502    case "$ans" in
4503    y|Y)         val="$define" ;;
4504    *)           val="$undef"  ;;
4505    esac
4506    ;;
4507 esac
4508 set uselargefiles
4509 eval $setvar
4510 case "$uselargefiles" in
4511 "$define")
4512 : Look for a hint-file generated 'call-back-unit'.  If the
4513 : user has specified that a large files perl is to be built,
4514 : we may need to set or change some other defaults.
4515         if $test -f uselargefiles.cbu; then
4516                 echo "Your platform has some specific hints for large file builds, using them..."
4517                 . ./uselargefiles.cbu
4518                 echo " "
4519                 echo "Rechecking to see how big your file offsets are..." >&4
4520                 $cat >try.c <<EOCP
4521 #include <sys/types.h>
4522 #include <stdio.h>
4523 int main()
4524 {
4525     printf("%d\n", (int)sizeof($lseektype));
4526     return(0); 
4527 }
4528 EOCP
4529                 set try
4530                 if eval $compile_ok; then
4531                         lseeksize=`./try`
4532                         $echo "Your file offsets are now $lseeksize bytes long."
4533                 else
4534                         dflt="$lseeksize"
4535                         echo " "
4536                         echo "(I can't seem to compile the test program.  Guessing...)"
4537                         rp="What is the size of your file offsets (in bytes)?"
4538                         . ./myread
4539                         lseeksize="$ans"
4540                 fi
4541                 case "$fpostype" in
4542                 *_t) zzz="$fpostype"    ;;
4543                 *)   zzz="fpos_t"       ;;
4544                 esac
4545                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4546                 $cat > try.c <<EOCP
4547 #include <sys/types.h>
4548 #include <stdio.h>
4549 int main() {
4550     printf("%d\n", (int)sizeof($fpostype));
4551     exit(0);
4552 }
4553 EOCP
4554                 set try
4555                 if eval $compile_ok; then
4556                         yyy=`./try`
4557                         dflt="$lseeksize"
4558                         case "$yyy" in
4559                         '')     echo " "
4560                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4561                                 ;;
4562                         *)      fpossize=$yyy
4563                                 echo " $fpossize bytes." >&4
4564                                 ;;
4565                         esac
4566                 else
4567                         dflt="$fpossize"
4568                         echo " "
4569                         echo "(I can't compile the test program.  Guessing...)" >&4
4570                         rp="What is the size of your file positions (in bytes)?"
4571                         . ./myread
4572                         fpossize="$ans"
4573                 fi
4574                 $rm -f try.c try
4575         fi
4576         ;;
4577 esac
4578
4579
4580 case "$usemorebits" in
4581 "$define"|true|[yY]*)
4582         use64bitint="$define"
4583         uselongdouble="$define"
4584         usemorebits="$define"
4585         ;;
4586 *)      usemorebits="$undef"
4587         ;;
4588 esac
4589
4590
4591 case "$uselonglong" in
4592 "$define"|true|[yY]*)
4593         cat <<EOM >&4
4594
4595 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4596 EOM
4597         use64bitint="$define"
4598         ;;
4599 esac                          
4600 case "$use64bits" in
4601 "$define"|true|[yY]*)
4602         cat <<EOM >&4
4603
4604 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4605 EOM
4606         use64bitint="$define"
4607         ;;
4608 esac                          
4609 case "$use64bitints" in
4610 "$define"|true|[yY]*)
4611         cat <<EOM >&4
4612
4613 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4614 EOM
4615         use64bitint="$define"
4616         ;;
4617 esac                          
4618 case "$use64bitsint" in
4619 "$define"|true|[yY]*)
4620         cat <<EOM >&4
4621
4622 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4623 EOM
4624         use64bitint="$define"
4625         ;;
4626 esac                          
4627 case "$uselonglongs" in
4628 "$define"|true|[yY]*)
4629         cat <<EOM >&4
4630
4631 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4632 EOM
4633         use64bitint="$define"
4634         ;;
4635 esac                          
4636 case "$use64bitsall" in
4637 "$define"|true|[yY]*)
4638         cat <<EOM >&4
4639
4640 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4641 EOM
4642         use64bitall="$define"
4643         ;;
4644 esac                          
4645
4646 case "$ccflags" in
4647 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4648 esac
4649 case "$use64bitall" in
4650 "$define"|true|[yY]*) use64bitint="$define" ;;
4651 esac
4652
4653 case "$longsize" in
4654 8) cat <<EOM
4655
4656 You have natively 64-bit long integers.
4657 EOM
4658    val="$define"
4659    ;;
4660 *) case "$use64bitint" in
4661    "$define"|true|[yY]*) dflt='y';;
4662    *) dflt='n';;
4663    esac
4664    cat <<EOM
4665
4666 Perl can be built to take advantage of 64-bit integer types
4667 on some systems.  To do so, Configure can be run with -Duse64bitint.
4668 Choosing this option will most probably introduce binary incompatibilities.
4669
4670 If this doesn't make any sense to you, just accept the default '$dflt'.
4671 EOM
4672    rp='Try to use 64-bit integers, if available?'
4673    . ./myread
4674    case "$ans" in
4675    [yY]*) val="$define" ;;
4676    *)     val="$undef"  ;;
4677    esac
4678    ;;
4679 esac
4680 set use64bitint
4681 eval $setvar
4682
4683 case "$use64bitall" in
4684 "$define"|true|[yY]*) dflt='y' ;;
4685 *) case "$longsize" in
4686    8) dflt='y' ;;
4687    *) dflt='n' ;;
4688    esac
4689    ;;
4690 esac    
4691 cat <<EOM
4692
4693 You may also choose to try maximal 64-bitness.  It means using as much
4694 64-bitness as possible on the platform.  This in turn means even more
4695 binary incompatibilities.  On the other hand, your platform may not
4696 have any more 64-bitness available than what you already have chosen.
4697
4698 If this doesn't make any sense to you, just accept the default '$dflt'.
4699 EOM
4700 rp='Try to use maximal 64-bit support, if available?'
4701 . ./myread
4702 case "$ans" in
4703 [yY]*) val="$define" ;;
4704 *)     val="$undef"  ;;
4705 esac
4706 set use64bitall
4707 eval $setvar
4708 case "$use64bitall" in
4709 "$define")
4710         case "$use64bitint" in
4711         "$undef")
4712                 cat <<EOM
4713
4714 Since you have chosen a maximally 64-bit build, I'm also turning on
4715 the use of 64-bit integers.
4716 EOM
4717                 use64bitint="$define" ;;
4718         esac
4719         ;;
4720 esac
4721
4722 case "$use64bitint" in
4723 "$define"|true|[yY]*)
4724 : Look for a hint-file generated 'call-back-unit'.  If the
4725 : user has specified that a 64-bit perl is to be built,
4726 : we may need to set or change some other defaults.
4727         if $test -f use64bitint.cbu; then
4728                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4729                 . ./use64bitint.cbu
4730         fi
4731         case "$longsize" in
4732         4) case "$archname64" in
4733            '') archname64=64int ;;
4734            esac
4735            ;;
4736         esac
4737         ;;
4738 esac
4739
4740 case "$use64bitall" in
4741 "$define"|true|[yY]*)
4742 : Look for a hint-file generated 'call-back-unit'.  If the
4743 : user has specified that a maximally 64-bit perl is to be built,
4744 : we may need to set or change some other defaults.
4745         if $test -f use64bitall.cbu; then
4746                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4747                 . ./use64bitall.cbu
4748         fi
4749         case "$longsize" in
4750         4) case "$archname64" in
4751            ''|64int) archname64=64all ;;
4752            esac
4753            ;;
4754         esac
4755         ;;
4756 esac
4757
4758 echo " "
4759 echo "Checking for GNU C Library..." >&4
4760 cat >gnulibc.c <<EOM
4761 #include <stdio.h>
4762 int main()
4763 {
4764 #ifdef __GLIBC__
4765     exit(0);
4766 #else
4767     exit(1);
4768 #endif
4769 }
4770 EOM
4771 set gnulibc
4772 if eval $compile_ok && ./gnulibc; then
4773         val="$define"
4774         echo "You are using the GNU C Library"
4775 else
4776         val="$undef"
4777         echo "You are not using the GNU C Library"
4778 fi
4779 $rm -f gnulibc*
4780 set d_gnulibc
4781 eval $setvar
4782
4783 : see if nm is to be used to determine whether a symbol is defined or not
4784 case "$usenm" in
4785 '')
4786         dflt=''
4787         case "$d_gnulibc" in
4788         "$define")
4789                 echo " "
4790                 echo "nm probably won't work on the GNU C Library." >&4
4791                 dflt=n
4792                 ;;
4793         esac
4794         case "$dflt" in
4795         '') 
4796                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4797                         echo " "
4798                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4799                         echo "'nm' won't be sufficient on this sytem." >&4
4800                         dflt=n
4801                 fi
4802                 ;;
4803         esac
4804         case "$dflt" in
4805         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4806                 if $test $dflt -gt 20; then
4807                         dflt=y
4808                 else
4809                         dflt=n
4810                 fi
4811                 ;;
4812         esac
4813         ;;
4814 *)
4815         case "$usenm" in
4816         true|$define) dflt=y;;
4817         *) dflt=n;;
4818         esac
4819         ;;
4820 esac
4821 $cat <<EOM
4822
4823 I can use $nm to extract the symbols from your C libraries. This
4824 is a time consuming task which may generate huge output on the disk (up
4825 to 3 megabytes) but that should make the symbols extraction faster. The
4826 alternative is to skip the 'nm' extraction part and to compile a small
4827 test program instead to determine whether each symbol is present. If
4828 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4829 this may be the best solution.
4830
4831 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4832
4833 EOM
4834 rp="Shall I use $nm to extract C symbols from the libraries?"
4835 . ./myread
4836 case "$ans" in
4837 [Nn]*) usenm=false;;
4838 *) usenm=true;;
4839 esac
4840
4841 runnm=$usenm
4842 case "$reuseval" in
4843 true) runnm=false;;
4844 esac
4845
4846 : nm options which may be necessary
4847 case "$nm_opt" in
4848 '') if $test -f /mach_boot; then
4849                 nm_opt=''       # Mach
4850         elif $test -d /usr/ccs/lib; then
4851                 nm_opt='-p'     # Solaris (and SunOS?)
4852         elif $test -f /dgux; then
4853                 nm_opt='-p'     # DG-UX
4854         elif $test -f /lib64/rld; then
4855                 nm_opt='-p'     # 64-bit Irix
4856         else
4857                 nm_opt=''
4858         fi;;
4859 esac
4860
4861 : nm options which may be necessary for shared libraries but illegal
4862 : for archive libraries.  Thank you, Linux.
4863 case "$nm_so_opt" in
4864 '')     case "$myuname" in
4865         *linux*)
4866                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4867                         nm_so_opt='--dynamic'
4868                 fi
4869                 ;;
4870         esac
4871         ;;
4872 esac
4873
4874 case "$runnm" in
4875 true)
4876 : get list of predefined functions in a handy place
4877 echo " "
4878 case "$libc" in
4879 '') libc=unknown
4880         case "$libs" in
4881         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4882         esac
4883         ;;
4884 esac
4885 libnames='';
4886 case "$libs" in
4887 '') ;;
4888 *)  for thislib in $libs; do
4889         case "$thislib" in
4890         -lc|-lc_s)
4891                 : Handle C library specially below.
4892                 ;;
4893         -l*)
4894                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4895                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4896                         :
4897                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4898                         :
4899                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4900                         :
4901                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4902                         :
4903                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4904                         :
4905                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4906                         :
4907                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4908                         :
4909                 else
4910                         try=''
4911                 fi
4912                 libnames="$libnames $try"
4913                 ;;
4914         *) libnames="$libnames $thislib" ;;
4915         esac
4916         done
4917         ;;
4918 esac
4919 xxx=normal
4920 case "$libc" in
4921 unknown)
4922         set /lib/libc.$so
4923         for xxx in $libpth; do
4924                 $test -r $1 || set $xxx/libc.$so
4925                 : The messy sed command sorts on library version numbers.
4926                 $test -r $1 || \
4927                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4928                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4929                                 h
4930                                 s/[0-9][0-9]*/0000&/g
4931                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4932                                 G
4933                                 s/\n/ /' | \
4934                          sort | $sed -e 's/^.* //'`
4935                 eval set \$$#
4936         done
4937         $test -r $1 || set /usr/ccs/lib/libc.$so
4938         $test -r $1 || set /lib/libsys_s$_a
4939         ;;
4940 *)
4941         set blurfl
4942         ;;
4943 esac
4944 if $test -r "$1"; then
4945         echo "Your (shared) C library seems to be in $1."
4946         libc="$1"
4947 elif $test -r /lib/libc && $test -r /lib/clib; then
4948         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4949         xxx=apollo
4950         libc='/lib/clib /lib/libc'
4951         if $test -r /lib/syslib; then
4952                 echo "(Your math library is in /lib/syslib.)"
4953                 libc="$libc /lib/syslib"
4954         fi
4955 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4956         echo "Your C library seems to be in $libc, as you said before."
4957 elif $test -r $incpath/usr/lib/libc$_a; then
4958         libc=$incpath/usr/lib/libc$_a;
4959         echo "Your C library seems to be in $libc.  That's fine."
4960 elif $test -r /lib/libc$_a; then
4961         libc=/lib/libc$_a;
4962         echo "Your C library seems to be in $libc.  You're normal."
4963 else
4964         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4965                 :
4966         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4967                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4968         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4969                 :
4970         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4971                 :
4972         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4973                 :
4974         else
4975                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4976         fi
4977         if $test -r "$tans"; then
4978                 echo "Your C library seems to be in $tans, of all places."
4979                 libc=$tans
4980         else
4981                 libc='blurfl'
4982         fi
4983 fi
4984 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4985         dflt="$libc"
4986         cat <<EOM
4987
4988 If the guess above is wrong (which it might be if you're using a strange
4989 compiler, or your machine supports multiple models), you can override it here.
4990
4991 EOM
4992 else
4993         dflt=''
4994         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4995         cat >&4 <<EOM
4996 I can't seem to find your C library.  I've looked in the following places:
4997
4998 EOM
4999         $sed 's/^/      /' libpath
5000         cat <<EOM
5001
5002 None of these seems to contain your C library. I need to get its name...
5003
5004 EOM
5005 fi
5006 fn=f
5007 rp='Where is your C library?'
5008 . ./getfile
5009 libc="$ans"
5010
5011 echo " "
5012 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5013 set X `cat libnames`
5014 shift
5015 xxx=files
5016 case $# in 1) xxx=file; esac
5017 echo "Extracting names from the following $xxx for later perusal:" >&4
5018 echo " "
5019 $sed 's/^/      /' libnames >&4
5020 echo " "
5021 $echo $n "This may take a while...$c" >&4
5022
5023 for file in $*; do
5024         case $file in
5025         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5026         *) $nm $nm_opt $file 2>/dev/null;;
5027         esac
5028 done >libc.tmp
5029
5030 $echo $n ".$c"
5031 $grep fprintf libc.tmp > libc.ptf
5032 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5033 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5034 xxx='[ADTSIW]'
5035 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5036         eval $xscan;\
5037         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5038                 eval $xrun
5039 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5040         eval $xscan;\
5041         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5042                 eval $xrun
5043 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5044         eval $xscan;\
5045         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5046                 eval $xrun
5047 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5048         eval $xscan;\
5049         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5050                 eval $xrun
5051 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5052         eval $xscan;\
5053         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5054                 eval $xrun
5055 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5056         eval $xscan;\
5057         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5058                 eval $xrun
5059 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5060                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5061         eval $xscan;\
5062         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5063                 eval $xrun
5064 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5065         eval $xscan;\
5066         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5067                 eval $xrun
5068 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5069         eval $xscan;\
5070         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5071                 eval $xrun
5072 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5073         eval $xscan;\
5074         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5075                 eval $xrun
5076 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5077         eval $xscan;\
5078         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5079                 eval $xrun
5080 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5081         eval $xscan;\
5082         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5083                 eval $xrun
5084 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5085         eval $xscan;\
5086         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5087                 eval $xrun
5088 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5089         eval $xscan;\
5090         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5091                 eval $xrun
5092 else
5093         $nm -p $* 2>/dev/null >libc.tmp
5094         $grep fprintf libc.tmp > libc.ptf
5095         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5096                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5097         then
5098                 nm_opt='-p'
5099                 eval $xrun
5100         else
5101                 echo " "
5102                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5103                 com=''
5104                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5105                         for thisname in $libnames $libc; do
5106                                 $ar t $thisname >>libc.tmp
5107                         done
5108                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5109                         echo "Ok." >&4
5110                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5111                         # Repeat libc to extract forwarders to DLL entries too
5112                         for thisname in $libnames $libc; do
5113                                 $ar tv $thisname >>libc.tmp
5114                                 # Revision 50 of EMX has bug in $ar.
5115                                 # it will not extract forwarders to DLL entries
5116                                 # Use emximp which will extract exactly them.
5117                                 emximp -o tmp.imp $thisname \
5118                                     2>/dev/null && \
5119                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5120                                     < tmp.imp >>libc.tmp
5121                                 $rm tmp.imp
5122                         done
5123                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5124                         echo "Ok." >&4
5125                 else
5126                         echo "$ar didn't seem to work right." >&4
5127                         echo "Maybe this is a Cray...trying bld instead..." >&4
5128                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5129                         then
5130                                 for thisname in $libnames; do
5131                                         bld t $libnames | \
5132                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5133                                         $ar t $thisname >>libc.tmp
5134                                 done
5135                                 echo "Ok." >&4
5136                         else
5137                                 echo "That didn't work either.  Giving up." >&4
5138                                 exit 1
5139                         fi
5140                 fi
5141         fi
5142 fi
5143 nm_extract="$com"
5144 if $test -f /lib/syscalls.exp; then
5145         echo " "
5146         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5147         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5148 fi
5149 ;;
5150 esac
5151 $rm -f libnames libpath
5152
5153 : is a C symbol defined?
5154 csym='tlook=$1;
5155 case "$3" in
5156 -v) tf=libc.tmp; tc=""; tdc="";;
5157 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5158 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5159 esac;
5160 tx=yes;
5161 case "$reuseval-$4" in
5162 true-) ;;
5163 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5164 esac;
5165 case "$tx" in
5166 yes)
5167         case "$runnm" in
5168         true)
5169                 if $contains $tlook $tf >/dev/null 2>&1;
5170                 then tval=true;
5171                 else tval=false;
5172                 fi;;
5173         *)
5174                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5175                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5176                 then tval=true;
5177                 else tval=false;
5178                 fi;
5179                 $rm -f t t.c;;
5180         esac;;
5181 *)
5182         case "$tval" in
5183         $define) tval=true;;
5184         *) tval=false;;
5185         esac;;
5186 esac;
5187 eval "$2=$tval"'
5188
5189 : define an is-in-libc? function
5190 inlibc='echo " "; td=$define; tu=$undef;
5191 sym=$1; var=$2; eval "was=\$$2";
5192 tx=yes;
5193 case "$reuseval$was" in
5194 true) ;;
5195 true*) tx=no;;
5196 esac;
5197 case "$tx" in
5198 yes)
5199         set $sym tres -f;
5200         eval $csym;
5201         case "$tres" in
5202         true)
5203                 echo "$sym() found." >&4;
5204                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5205         *)
5206                 echo "$sym() NOT found." >&4;
5207                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5208         esac;;
5209 *)
5210         case "$was" in
5211         $define) echo "$sym() found." >&4;;
5212         *) echo "$sym() NOT found." >&4;;
5213         esac;;
5214 esac'
5215
5216 : see if sqrtl exists
5217 set sqrtl d_sqrtl
5218 eval $inlibc
5219
5220 case "$ccflags" in
5221 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5222 esac
5223
5224 case "$uselongdouble" in
5225 $define|true|[yY]*)     dflt='y';;
5226 *) dflt='n';;
5227 esac
5228 cat <<EOM
5229
5230 Perl can be built to take advantage of long doubles which
5231 (if available) may give more accuracy and range for floating point numbers.
5232
5233 If this doesn't make any sense to you, just accept the default '$dflt'.
5234 EOM
5235 rp='Try to use long doubles if available?'
5236 . ./myread
5237 case "$ans" in
5238 y|Y)    val="$define"   ;;
5239 *)      val="$undef"    ;;
5240 esac
5241 set uselongdouble
5242 eval $setvar
5243
5244 case "$uselongdouble" in
5245 true|[yY]*) uselongdouble="$define" ;;
5246 esac
5247
5248 case "$uselongdouble" in
5249 $define)
5250 : Look for a hint-file generated 'call-back-unit'.  If the
5251 : user has specified that long doubles should be used,
5252 : we may need to set or change some other defaults.
5253         if $test -f uselongdouble.cbu; then
5254                 echo "Your platform has some specific hints for long doubles, using them..."
5255                 . ./uselongdouble.cbu
5256         else
5257                 $cat <<EOM
5258 (Your platform doesn't have any specific hints for long doubles.)
5259 EOM
5260         fi
5261         ;;
5262 esac
5263
5264 case "$uselongdouble:$d_sqrtl" in
5265 $define:$undef)
5266                 $cat <<EOM >&4
5267
5268 *** You requested the use of long doubles but you do not seem to have
5269 *** the mathematic functions for long doubles.  I'm disabling the use
5270 *** of long doubles.
5271
5272 EOM
5273         uselongdouble=$undef
5274         ;;
5275 esac
5276
5277 : determine the architecture name
5278 echo " "
5279 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5280         tarch=`arch`"-$osname"
5281 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5282         if uname -m > tmparch 2>&1 ; then
5283                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5284                         -e 's/$/'"-$osname/" tmparch`
5285         else
5286                 tarch="$osname"
5287         fi
5288         $rm -f tmparch
5289 else
5290         tarch="$osname"
5291 fi
5292 case "$myarchname" in
5293 ''|"$tarch") ;;
5294 *)
5295         echo "(Your architecture name used to be $myarchname.)"
5296         archname=''
5297         ;;
5298 esac
5299 myarchname="$tarch"
5300 case "$archname" in
5301 '') dflt="$tarch";;
5302 *) dflt="$archname";;
5303 esac
5304 rp='What is your architecture name'
5305 . ./myread
5306 archname="$ans"
5307 case "$usethreads" in
5308 $define)
5309         echo "Threads selected." >&4
5310         case "$archname" in
5311         *-thread*) echo "...and architecture name already has -thread." >&4
5312                 ;;
5313         *)      archname="$archname-thread"
5314                 echo "...setting architecture name to $archname." >&4
5315                 ;;
5316         esac
5317         ;;
5318 esac
5319 case "$usemultiplicity" in
5320 $define)
5321         echo "Multiplicity selected." >&4
5322         case "$archname" in
5323         *-multi*) echo "...and architecture name already has -multi." >&4
5324                 ;;
5325         *)      archname="$archname-multi"
5326                 echo "...setting architecture name to $archname." >&4
5327                 ;;
5328         esac
5329         ;;
5330 esac
5331 case "$use64bitint$use64bitall" in
5332 *"$define"*)
5333         case "$archname64" in
5334         '')
5335                 ;;
5336         *)
5337                 case "$use64bitint" in
5338                 "$define") echo "64 bit integers selected." >&4 ;;
5339                 esac
5340                 case "$use64bitall" in
5341                 "$define") echo "64 bit memory model selected." >&4 ;;
5342                 esac
5343                 case "$archname" in
5344                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5345                         ;;
5346                 *)      archname="$archname-$archname64"
5347                         echo "...setting architecture name to $archname." >&4
5348                         ;;
5349                 esac
5350                 ;;
5351         esac
5352 esac
5353 case "$uselongdouble" in
5354 $define)
5355         echo "Long doubles selected." >&4
5356         case "$archname" in
5357         *-ld*) echo "...and architecture name already has -ld." >&4
5358                 ;;
5359         *)      archname="$archname-ld"
5360                 echo "...setting architecture name to $archname." >&4
5361                 ;;
5362         esac
5363         ;;
5364 esac
5365
5366 : determine root of directory hierarchy where package will be installed.
5367 case "$prefix" in
5368 '')
5369         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5370         ;;
5371 *)
5372         dflt="$prefix"
5373         ;;
5374 esac
5375 $cat <<EOM
5376
5377 By default, $package will be installed in $dflt/bin, manual pages
5378 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5379 installation directories. Typically this is something like /usr/local.
5380 If you wish to have binaries under /usr/bin but other parts of the
5381 installation under /usr/local, that's ok: you will be prompted
5382 separately for each of the installation directories, the prefix being
5383 only used to set the defaults.
5384
5385 EOM
5386 fn=d~
5387 rp='Installation prefix to use?'
5388 . ./getfile
5389 oldprefix=''
5390 case "$prefix" in
5391 '') ;;
5392 *)
5393         case "$ans" in
5394         "$prefix") ;;
5395         *) oldprefix="$prefix";;
5396         esac
5397         ;;
5398 esac
5399 prefix="$ans"
5400 prefixexp="$ansexp"
5401
5402 : is AFS running?
5403 echo " "
5404 case "$afs" in
5405 $define|true)   afs=true ;;
5406 $undef|false)   afs=false ;;
5407 *)      if test -d /afs; then
5408                 afs=true
5409         else
5410                 afs=false
5411         fi
5412         ;;
5413 esac
5414 if $afs; then
5415         echo "AFS may be running... I'll be extra cautious then..." >&4
5416 else
5417         echo "AFS does not seem to be running..." >&4
5418 fi
5419
5420 : determine installation prefix for where package is to be installed.
5421 if $afs; then 
5422 $cat <<EOM
5423
5424 Since you are running AFS, I need to distinguish the directory in which
5425 files will reside from the directory in which they are installed (and from
5426 which they are presumably copied to the former directory by occult means).
5427
5428 EOM
5429         case "$installprefix" in
5430         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5431         *) dflt="$installprefix";;
5432         esac
5433 else
5434 $cat <<EOM
5435
5436 In some special cases, particularly when building $package for distribution,
5437 it is convenient to distinguish between the directory in which files should 
5438 be installed from the directory ($prefix) in which they 
5439 will eventually reside.  For most users, these two directories are the same.
5440
5441 EOM
5442         case "$installprefix" in
5443         '') dflt=$prefix ;;
5444         *) dflt=$installprefix;;
5445         esac
5446 fi
5447 fn=d~
5448 rp='What installation prefix should I use for installing files?'
5449 . ./getfile
5450 installprefix="$ans"
5451 installprefixexp="$ansexp"
5452
5453 : set the prefixit variable, to compute a suitable default value
5454 prefixit='case "$3" in
5455 ""|none)
5456         case "$oldprefix" in
5457         "") eval "$1=\"\$$2\"";;
5458         *)
5459                 case "$3" in
5460                 "") eval "$1=";;
5461                 none)
5462                         eval "tp=\"\$$2\"";
5463                         case "$tp" in
5464                         ""|" ") eval "$1=\"\$$2\"";;
5465                         *) eval "$1=";;
5466                         esac;;
5467                 esac;;
5468         esac;;
5469 *)
5470         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5471         case "$tp" in
5472         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5473         /*-$oldprefix/*|\~*-$oldprefix/*)
5474                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5475         *) eval "$1=\"\$$2\"";;
5476         esac;;
5477 esac'
5478
5479
5480 : get the patchlevel
5481 echo " "
5482 echo "Getting the current patchlevel..." >&4
5483 if $test -r $rsrc/patchlevel.h;then
5484         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5485         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5486         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5487         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5488         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5489         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5490 else
5491         revision=0
5492         patchlevel=0
5493         subversion=0
5494         api_revision=0
5495         api_version=0
5496         api_subversion=0
5497 fi
5498 $echo $n "(You have $package revision $revision" $c
5499 $echo $n " patchlevel $patchlevel" $c
5500 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
5501 echo ".)"
5502 case "$osname" in
5503 dos|vms)
5504         : XXX Should be a Configure test for double-dots in filenames.
5505         version=`echo $revision $patchlevel $subversion | \
5506                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5507         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5508                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5509         ;;
5510 *)
5511         version=`echo $revision $patchlevel $subversion | \
5512                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5513         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5514                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5515         ;;
5516 esac
5517 : Special case the 5.005_xx maintenance series, which used 5.005
5518 : without any subversion label as a subdirectory in $sitelib
5519 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5520         api_versionstring='5.005'
5521 fi
5522
5523 : determine installation style
5524 : For now, try to deduce it from prefix unless it is already set.
5525 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5526 case "$installstyle" in
5527 '')     case "$prefix" in
5528                 *perl*) dflt='lib';;
5529                 *) dflt='lib/perl5' ;;
5530         esac
5531         ;;
5532 *)      dflt="$installstyle" ;;
5533 esac
5534 : Probably not worth prompting for this since we prompt for all
5535 : the directories individually, and the prompt would be too long and
5536 : confusing anyway.
5537 installstyle=$dflt
5538
5539 : determine where private library files go
5540 : Usual default is /usr/local/lib/perl5/$version.
5541 : Also allow things like /opt/perl/lib/$version, since 
5542 : /opt/perl/lib/perl5... would be redundant.
5543 : The default "style" setting is made in installstyle.U
5544 case "$installstyle" in
5545 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5546 *)       set dflt privlib lib/$version ;;
5547 esac
5548 eval $prefixit
5549 $cat <<EOM
5550
5551 There are some auxiliary files for $package that need to be put into a
5552 private library directory that is accessible by everyone.
5553
5554 EOM
5555 fn=d~+
5556 rp='Pathname where the private library files will reside?'
5557 . ./getfile
5558 privlib="$ans"
5559 privlibexp="$ansexp"
5560 : Change installation prefix, if necessary.
5561 if $test X"$prefix" != X"$installprefix"; then
5562         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5563 else
5564         installprivlib="$privlibexp"
5565 fi
5566
5567 : set the prefixup variable, to restore leading tilda escape
5568 prefixup='case "$prefixexp" in
5569 "$prefix") ;;
5570 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5571 esac'
5572
5573 : determine where public architecture dependent libraries go
5574 set archlib archlib
5575 eval $prefixit
5576 : privlib default is /usr/local/lib/$package/$version
5577 : archlib default is /usr/local/lib/$package/$version/$archname
5578 : privlib may have an optional trailing /share.
5579 tdflt=`echo $privlib | $sed 's,/share$,,'`
5580 tdflt=$tdflt/$archname
5581 case "$archlib" in
5582 '')     dflt=$tdflt
5583         ;;
5584 *)      dflt="$archlib"
5585     ;;
5586 esac
5587 $cat <<EOM
5588
5589 $spackage contains architecture-dependent library files.  If you are
5590 sharing libraries in a heterogeneous environment, you might store
5591 these files in a separate location.  Otherwise, you can just include
5592 them with the rest of the public library files.
5593
5594 EOM
5595 fn=d+~
5596 rp='Where do you want to put the public architecture-dependent libraries?'
5597 . ./getfile
5598 archlib="$ans"
5599 archlibexp="$ansexp"
5600 if $test X"$archlib" = X"$privlib"; then
5601         d_archlib="$undef"
5602 else
5603         d_archlib="$define"
5604 fi
5605 : Change installation prefix, if necessary.
5606 if $test X"$prefix" != X"$installprefix"; then
5607         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5608 else
5609         installarchlib="$archlibexp"
5610 fi
5611
5612
5613 : Binary compatibility with 5.005 is not possible for builds
5614 : with advanced features
5615 case "$usethreads$usemultiplicity" in
5616 *define*)
5617         bincompat5005="$undef"
5618         d_bincompat5005="$undef"
5619         ;;
5620 *)      $cat <<EOM
5621
5622 This version of Perl can be compiled for binary compatibility with 5.005.
5623 If you decide to do so, you will be able to continue using most of the
5624 extensions that were compiled for Perl 5.005.
5625
5626 EOM
5627         case "$bincompat5005$d_bincompat5005" in
5628         *"$undef"*) dflt=n ;;
5629         *) dflt=y ;;
5630         esac
5631         rp='Binary compatibility with Perl 5.005?'
5632         . ./myread
5633         case "$ans" in
5634         y*) val="$define" ;;
5635         *)  val="$undef" ;;
5636         esac
5637         set d_bincompat5005
5638         eval $setvar
5639         case "$d_bincompat5005" in
5640         "$define")
5641                 bincompat5005="$define"
5642                 ;;
5643         *)      bincompat5005="$undef"
5644                 d_bincompat5005="$undef"
5645                 ;;
5646         esac
5647         ;;
5648 esac
5649
5650
5651 : see if setuid scripts can be secure
5652 $cat <<EOM
5653
5654 Some kernels have a bug that prevents setuid #! scripts from being
5655 secure.  Some sites have disabled setuid #! scripts because of this.
5656
5657 First let's decide if your kernel supports secure setuid #! scripts.
5658 (If setuid #! scripts would be secure but have been disabled anyway,
5659 don't say that they are secure if asked.)
5660
5661 EOM
5662
5663 val="$undef"
5664 if $test -d /dev/fd; then
5665         echo "#!$ls" >reflect
5666         chmod +x,u+s reflect
5667         ./reflect >flect 2>&1
5668         if $contains "/dev/fd" flect >/dev/null; then
5669                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5670                 val="$define"
5671         else
5672                 $cat <<EOM
5673 If you are not sure if they are secure, I can check but I'll need a
5674 username and password different from the one you are using right now.
5675 If you don't have such a username or don't want me to test, simply
5676 enter 'none'.
5677
5678 EOM
5679                 rp='Other username to test security of setuid scripts with?'
5680                 dflt='none'
5681                 . ./myread
5682                 case "$ans" in
5683                 n|none)
5684                         case "$d_suidsafe" in
5685                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5686                                 dflt=n;;
5687                         "$undef")
5688                                 echo "Well, the $hint value is *not* secure." >&4
5689                                 dflt=n;;
5690                         *)      echo "Well, the $hint value *is* secure." >&4
5691                                 dflt=y;;
5692                         esac
5693                         ;;
5694                 *)
5695                         $rm -f reflect flect
5696                         echo "#!$ls" >reflect
5697                         chmod +x,u+s reflect
5698                         echo >flect
5699                         chmod a+w flect
5700                         echo '"su" will (probably) prompt you for '"$ans's password."
5701                         su $ans -c './reflect >flect'
5702                         if $contains "/dev/fd" flect >/dev/null; then
5703                                 echo "Okay, it looks like setuid scripts are secure." >&4
5704                                 dflt=y
5705                         else
5706                                 echo "I don't think setuid scripts are secure." >&4
5707                                 dflt=n
5708                         fi
5709                         ;;
5710                 esac
5711                 rp='Does your kernel have *secure* setuid scripts?'
5712                 . ./myread
5713                 case "$ans" in
5714                 [yY]*)  val="$define";;
5715                 *)      val="$undef";;
5716                 esac
5717         fi
5718 else
5719         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5720         echo "(That's for file descriptors, not floppy disks.)"
5721         val="$undef"
5722 fi
5723 set d_suidsafe
5724 eval $setvar
5725
5726 $rm -f reflect flect
5727
5728 : now see if they want to do setuid emulation
5729 echo " "
5730 val="$undef"
5731 case "$d_suidsafe" in
5732 "$define")
5733         val="$undef"
5734         echo "No need to emulate SUID scripts since they are secure here." >& 4
5735         ;;
5736 *)
5737         $cat <<EOM
5738 Some systems have disabled setuid scripts, especially systems where
5739 setuid scripts cannot be secure.  On systems where setuid scripts have
5740 been disabled, the setuid/setgid bits on scripts are currently
5741 useless.  It is possible for $package to detect those bits and emulate
5742 setuid/setgid in a secure fashion.  This emulation will only work if
5743 setuid scripts have been disabled in your kernel.
5744
5745 EOM
5746         case "$d_dosuid" in
5747         "$define") dflt=y ;;
5748         *) dflt=n ;;
5749         esac
5750         rp="Do you want to do setuid/setgid emulation?"
5751         . ./myread
5752         case "$ans" in
5753         [yY]*)  val="$define";;
5754         *)      val="$undef";;
5755         esac
5756         ;;
5757 esac
5758 set d_dosuid
5759 eval $setvar
5760
5761 : determine filename position in cpp output
5762 echo " "
5763 echo "Computing filename position in cpp output for #include directives..." >&4
5764 echo '#include <stdio.h>' > foo.c
5765 $cat >fieldn <<EOF
5766 $startsh
5767 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5768 $grep '^[       ]*#.*stdio\.h' | \
5769 while read cline; do
5770         pos=1
5771         set \$cline
5772         while $test \$# -gt 0; do
5773                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5774                         echo "\$pos"
5775                         exit 0
5776                 fi
5777                 shift
5778                 pos=\`expr \$pos + 1\`
5779         done
5780 done
5781 EOF
5782 chmod +x fieldn
5783 fieldn=`./fieldn`
5784 $rm -f foo.c fieldn
5785 case $fieldn in
5786 '') pos='???';;
5787 1) pos=first;;
5788 2) pos=second;;
5789 3) pos=third;;
5790 *) pos="${fieldn}th";;
5791 esac
5792 echo "Your cpp writes the filename in the $pos field of the line."
5793
5794 : locate header file
5795 $cat >findhdr <<EOF
5796 $startsh
5797 wanted=\$1
5798 name=''
5799 for usrincdir in $usrinc
5800 do
5801         if test -f \$usrincdir/\$wanted; then
5802                 echo "\$usrincdir/\$wanted"
5803                 exit 0
5804         fi
5805 done
5806 awkprg='{ print \$$fieldn }'
5807 echo "#include <\$wanted>" > foo\$\$.c
5808 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5809 $grep "^[       ]*#.*\$wanted" | \
5810 while read cline; do
5811         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5812         case "\$name" in
5813         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5814         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5815         *) exit 2;;
5816         esac;
5817 done;
5818 #
5819 # status = 0: grep returned 0 lines, case statement not executed
5820 # status = 1: headerfile found
5821 # status = 2: while loop executed, no headerfile found
5822 #
5823 status=\$?
5824 $rm -f foo\$\$.c;
5825 if test \$status -eq 1; then
5826         exit 0;
5827 fi
5828 exit 1
5829 EOF
5830 chmod +x findhdr
5831
5832 : define an alternate in-header-list? function
5833 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5834 cont=true; xxf="echo \"<\$1> found.\" >&4";
5835 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5836 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5837 esac;
5838 case $# in 4) instead=instead;; *) instead="at last";; esac;
5839 while $test "$cont"; do
5840         xxx=`./findhdr $1`
5841         var=$2; eval "was=\$$2";
5842         if $test "$xxx" && $test -r "$xxx";
5843         then eval $xxf;
5844         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5845                 cont="";
5846         else eval $xxnf;
5847         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5848         set $yyy; shift; shift; yyy=$@;
5849         case $# in 0) cont="";;
5850         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5851                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5852         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5853                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5854         esac;
5855 done;
5856 while $test "$yyy";
5857 do set $yyy; var=$2; eval "was=\$$2";
5858         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5859         set $yyy; shift; shift; yyy=$@;
5860 done'
5861
5862 : see if this is a malloc.h system
5863 set malloc.h i_malloc
5864 eval $inhdr
5865
5866 : see if stdlib is available
5867 set stdlib.h i_stdlib
5868 eval $inhdr
5869
5870 : determine which malloc to compile in
5871 echo " "
5872 case "$usemymalloc" in
5873 ''|[yY]*|true|$define)  dflt='y' ;;
5874 *)      dflt='n' ;;
5875 esac
5876 rp="Do you wish to attempt to use the malloc that comes with $package?"
5877 . ./myread
5878 usemymalloc="$ans"
5879 case "$ans" in
5880 y*|true)
5881         usemymalloc='y'
5882         mallocsrc='malloc.c'
5883         mallocobj="malloc$_o"
5884         d_mymalloc="$define"
5885         case "$libs" in
5886         *-lmalloc*)
5887                 : Remove malloc from list of libraries to use
5888                 echo "Removing unneeded -lmalloc from library list" >&4
5889                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5890                 shift
5891                 libs="$*"
5892                 echo "libs = $libs" >&4
5893                 ;;
5894         esac
5895         ;;
5896 *)
5897         usemymalloc='n'
5898         mallocsrc=''
5899         mallocobj=''
5900         d_mymalloc="$undef"
5901         ;;
5902 esac
5903
5904 : compute the return types of malloc and free
5905 echo " "
5906 $cat >malloc.c <<END
5907 #$i_malloc I_MALLOC
5908 #$i_stdlib I_STDLIB
5909 #include <stdio.h>
5910 #include <sys/types.h>
5911 #ifdef I_MALLOC
5912 #include <malloc.h>
5913 #endif
5914 #ifdef I_STDLIB
5915 #include <stdlib.h>
5916 #endif
5917 #ifdef TRY_MALLOC
5918 void *malloc();
5919 #endif
5920 #ifdef TRY_FREE
5921 void free();
5922 #endif
5923 END
5924 case "$malloctype" in
5925 '')
5926         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5927                 malloctype='void *'
5928         else
5929                 malloctype='char *'
5930         fi
5931         ;;
5932 esac
5933 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5934
5935 case "$freetype" in
5936 '')
5937         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5938                 freetype='void'
5939         else
5940                 freetype='int'
5941         fi
5942         ;;
5943 esac
5944 echo "Your system uses $freetype free(), it would seem." >&4
5945 $rm -f malloc.[co]
5946 $cat <<EOM
5947
5948 After $package is installed, you may wish to install various
5949 add-on modules and utilities.  Typically, these add-ons will
5950 be installed under $prefix with the rest
5951 of this package.  However, you may wish to install such add-ons
5952 elsewhere under a different prefix.
5953
5954 If you do not wish to put everything under a single prefix, that's
5955 ok.  You will be prompted for the individual locations; this siteprefix
5956 is only used to suggest the defaults.
5957
5958 The default should be fine for most people.
5959
5960 EOM
5961 fn=d~+
5962 rp='Installation prefix to use for add-on modules and utilities?'
5963 : XXX Here might be another good place for an installstyle setting.
5964 case "$siteprefix" in
5965 '') dflt=$prefix ;;
5966 *)  dflt=$siteprefix ;;
5967 esac
5968 . ./getfile
5969 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5970 oldsiteprefix=''
5971 case "$siteprefix" in
5972 '') ;;
5973 *)      case "$ans" in
5974         "$prefix") ;;
5975         *) oldsiteprefix="$prefix";;
5976         esac
5977         ;;
5978 esac
5979 siteprefix="$ans"
5980 siteprefixexp="$ansexp"
5981
5982 : determine where site specific libraries go.
5983 : Usual default is /usr/local/lib/perl5/site_perl/$version
5984 : The default "style" setting is made in installstyle.U
5985 : XXX No longer works with Prefixit stuff.
5986 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5987 case "$sitelib" in
5988 '') case "$installstyle" in
5989         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5990         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5991         esac
5992         ;;
5993 *)      dflt="$sitelib"
5994         ;;
5995 esac
5996 $cat <<EOM
5997
5998 The installation process will create a directory for
5999 site-specific extensions and modules.  Most users find it convenient
6000 to place all site-specific files in this directory rather than in the
6001 main distribution directory.
6002
6003 EOM
6004 fn=d~+
6005 rp='Pathname for the site-specific library files?'
6006 . ./getfile
6007 sitelib="$ans"
6008 sitelibexp="$ansexp"
6009 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6010 : Change installation prefix, if necessary.
6011 if $test X"$prefix" != X"$installprefix"; then
6012         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6013 else
6014         installsitelib="$sitelibexp"
6015 fi
6016
6017 : determine where site specific architecture-dependent libraries go.
6018 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6019 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6020 : sitelib may have an optional trailing /share.
6021 case "$sitearch" in
6022 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6023         dflt="$dflt/$archname"
6024         ;;
6025 *)      dflt="$sitearch"
6026         ;;
6027 esac
6028 set sitearch sitearch none
6029 eval $prefixit
6030 $cat <<EOM
6031
6032 The installation process will also create a directory for
6033 architecture-dependent site-specific extensions and modules.
6034
6035 EOM
6036 fn=d~+
6037 rp='Pathname for the site-specific architecture-dependent library files?'
6038 . ./getfile
6039 sitearch="$ans"
6040 sitearchexp="$ansexp"
6041 : Change installation prefix, if necessary.
6042 if $test X"$prefix" != X"$installprefix"; then
6043         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6044 else
6045         installsitearch="$sitearchexp"
6046 fi
6047
6048 $cat <<EOM
6049
6050 The installation process will also create a directory for
6051 vendor-supplied add-ons.  Vendors who supply perl with their system
6052 may find it convenient to place all vendor-supplied files in this
6053 directory rather than in the main distribution directory.  This will
6054 ease upgrades between binary-compatible maintenance versions of perl.
6055
6056 Of course you may also use these directories in whatever way you see
6057 fit.  For example, you might use them to access modules shared over a
6058 company-wide network.
6059
6060 The default answer should be fine for most people.
6061 This causes further questions about vendor add-ons to be skipped
6062 and no vendor-specific directories will be configured for perl.
6063
6064 EOM
6065 rp='Do you want to configure vendor-specific add-on directories?'
6066 case "$usevendorprefix" in
6067 define|true|[yY]*) dflt=y ;;
6068 *)      : User may have set vendorprefix directly on Configure command line.
6069         case "$vendorprefix" in
6070         ''|' ') dflt=n ;;
6071         *)      dflt=y ;;
6072         esac
6073         ;;
6074 esac
6075 . ./myread
6076 case "$ans" in
6077 [yY]*)  fn=d~+
6078         rp='Installation prefix to use for vendor-supplied add-ons?'
6079         case "$vendorprefix" in
6080         '') dflt='' ;;
6081         *)  dflt=$vendorprefix ;;
6082         esac
6083         . ./getfile
6084         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6085         oldvendorprefix=''
6086         case "$vendorprefix" in
6087         '') ;;
6088         *)      case "$ans" in
6089                 "$prefix") ;;
6090                 *) oldvendorprefix="$prefix";;
6091                 esac
6092                 ;;
6093         esac
6094         usevendorprefix="$define"
6095         vendorprefix="$ans"
6096         vendorprefixexp="$ansexp"
6097         ;;
6098 *)      usevendorprefix="$undef"
6099         vendorprefix=''
6100         vendorprefixexp=''
6101         ;;
6102 esac
6103
6104 case "$vendorprefix" in
6105 '')     d_vendorlib="$undef"
6106         vendorlib=''
6107         vendorlibexp=''
6108         ;;
6109 *)      d_vendorlib="$define"
6110         : determine where vendor-supplied modules go.
6111         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6112         case "$vendorlib" in
6113         '')
6114                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6115                 case "$installstyle" in
6116                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6117                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6118                 esac
6119                 ;;
6120         *)      dflt="$vendorlib"
6121                 ;;
6122         esac
6123         fn=d~+
6124         rp='Pathname for the vendor-supplied library files?'
6125         . ./getfile
6126         vendorlib="$ans"
6127         vendorlibexp="$ansexp"
6128         ;;
6129 esac
6130 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6131 : Change installation prefix, if necessary.
6132 if $test X"$prefix" != X"$installprefix"; then
6133         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6134 else
6135         installvendorlib="$vendorlibexp"
6136 fi
6137
6138 case "$vendorprefix" in
6139 '')     d_vendorarch="$undef"
6140         vendorarch=''
6141         vendorarchexp=''
6142         ;;
6143 *)      d_vendorarch="$define"
6144         : determine where vendor-supplied architecture-dependent libraries go.
6145         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6146         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6147         : vendorlib may have an optional trailing /share.
6148         case "$vendorarch" in
6149         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6150                 dflt="$dflt/$archname"
6151                 ;;
6152         *)      dflt="$vendorarch" ;;
6153         esac
6154         fn=d~+
6155         rp='Pathname for vendor-supplied architecture-dependent files?'
6156         . ./getfile
6157         vendorarch="$ans"
6158         vendorarchexp="$ansexp"
6159         ;;
6160 esac
6161 : Change installation prefix, if necessary.
6162 if $test X"$prefix" != X"$installprefix"; then
6163         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6164 else
6165         installvendorarch="$vendorarchexp"
6166 fi
6167
6168 : Final catch-all directories to search
6169 $cat <<EOM
6170
6171 Lastly, you can have perl look in other directories for extensions and
6172 modules in addition to those already specified.
6173 These directories will be searched after 
6174         $sitearch 
6175         $sitelib 
6176 EOM
6177 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6178 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6179 echo ' '
6180 case "$otherlibdirs" in
6181 ''|' ') dflt='none' ;;
6182 *)      dflt="$otherlibdirs" ;;
6183 esac
6184 $cat <<EOM
6185 Enter a colon-separated set of extra paths to include in perl's @INC
6186 search path, or enter 'none' for no extra paths.
6187
6188 EOM
6189
6190 rp='Colon-separated list of additional directories for perl to search?'
6191 . ./myread
6192 case "$ans" in
6193 ' '|''|none)    otherlibdirs=' ' ;;     
6194 *)      otherlibdirs="$ans" ;;
6195 esac
6196 case "$otherlibdirs" in
6197 ' ') val=$undef ;;
6198 *)      val=$define ;;
6199 esac
6200 set d_perl_otherlibdirs
6201 eval $setvar
6202
6203 : Cruising for prototypes
6204 echo " "
6205 echo "Checking out function prototypes..." >&4
6206 $cat >prototype.c <<'EOCP'
6207 int main(int argc, char *argv[]) {
6208         exit(0);}
6209 EOCP
6210 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6211         echo "Your C compiler appears to support function prototypes."
6212         val="$define"
6213 else
6214         echo "Your C compiler doesn't seem to understand function prototypes."
6215         val="$undef"
6216 fi
6217 set prototype
6218 eval $setvar
6219 $rm -f prototype*
6220
6221 case "$prototype" in
6222 "$define") ;;
6223 *)      ansi2knr='ansi2knr'
6224         echo " "
6225         cat <<EOM >&4
6226
6227 $me:  FATAL ERROR:
6228 This version of $package can only be compiled by a compiler that 
6229 understands function prototypes.  Unfortunately, your C compiler 
6230         $cc $ccflags
6231 doesn't seem to understand them.  Sorry about that.
6232
6233 If GNU cc is available for your system, perhaps you could try that instead.  
6234
6235 Eventually, we hope to support building Perl with pre-ANSI compilers.
6236 If you would like to help in that effort, please contact <perlbug@perl.org>.
6237
6238 Aborting Configure now.
6239 EOM
6240         exit 2
6241         ;;
6242 esac
6243
6244 : determine where public executables go
6245 echo " "
6246 set dflt bin bin
6247 eval $prefixit
6248 fn=d~
6249 rp='Pathname where the public executables will reside?'
6250 . ./getfile
6251 if $test "X$ansexp" != "X$binexp"; then
6252         installbin=''
6253 fi
6254 bin="$ans"
6255 binexp="$ansexp"
6256 : Change installation prefix, if necessary.
6257 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6258 if $test X"$prefix" != X"$installprefix"; then
6259         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6260 else
6261         installbin="$binexp"
6262 fi
6263
6264 : Find perl5.005 or later.
6265 echo "Looking for a previously installed perl5.005 or later... "
6266 case "$perl5" in
6267 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6268                 : Check if this perl is recent and can load a simple module
6269                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6270                         perl5=$tdir/perl
6271                         break;
6272                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6273                         perl5=$tdir/perl
6274                         break;
6275                 fi
6276         done
6277         ;;
6278 *)      perl5="$perl5"
6279         ;;
6280 esac
6281 case "$perl5" in
6282 '')     echo "None found.  That's ok.";;
6283 *)      echo "Using $perl5." ;;
6284 esac
6285
6286 : Determine list of previous versions to include in @INC
6287 $cat > getverlist <<EOPL
6288 #!$perl5 -w
6289 use File::Basename;
6290 \$api_versionstring = "$api_versionstring";
6291 \$version = "$version";
6292 \$stem = "$sitelib_stem";
6293 \$archname = "$archname";
6294 EOPL
6295         $cat >> getverlist <<'EOPL'
6296 # Can't have leading @ because metaconfig interprets it as a command!
6297 ;@inc_version_list=();
6298 # XXX Redo to do opendir/readdir? 
6299 if (-d $stem) {
6300     chdir($stem);
6301     ;@candidates = glob("5.*");
6302 }
6303 else {
6304     ;@candidates = ();
6305 }
6306
6307 # XXX ToDo:  These comparisons must be reworked when two-digit
6308 # subversions come along, so that 5.7.10 compares as greater than
6309 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6310 # widespread that we can use the built-in version vectors rather
6311 # than reinventing them here.  For 5.6.0, however, we must
6312 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6313 foreach $d (@candidates) {
6314     if ($d lt $version) {
6315         if ($d ge $api_versionstring) {
6316             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6317         }
6318         elsif ($d ge "5.005") {
6319             unshift(@inc_version_list, grep { -d } $d);
6320         }
6321     }
6322     else {
6323         # Skip newer version.  I.e. don't look in
6324         # 5.7.0 if we're installing 5.6.1.
6325     }
6326 }
6327
6328 if (@inc_version_list) {
6329     print join(' ', @inc_version_list);
6330 }
6331 else {
6332     # Blank space to preserve value for next Configure run.
6333     print " ";
6334 }
6335 EOPL
6336 chmod +x getverlist
6337 case "$inc_version_list" in
6338 '')     if test -x "$perl5"; then
6339                 dflt=`$perl5 getverlist`
6340         else
6341                 dflt='none'
6342         fi
6343         ;;
6344 $undef) dflt='none' ;;
6345 *)  dflt="$inc_version_list" ;;
6346 esac
6347 case "$dflt" in
6348 ''|' ') dflt=none ;;
6349 esac
6350 case "$dflt" in
6351 5.005) case "$bincompat5005" in
6352        $define|true|[yY]*) ;;
6353        *) dflt=none ;;
6354        esac
6355        ;;
6356 esac
6357 $cat <<'EOM'
6358
6359 In order to ease the process of upgrading, this version of perl 
6360 can be configured to use modules built and installed with earlier 
6361 versions of perl that were installed under $prefix.  Specify here
6362 the list of earlier versions that this version of perl should check.
6363 If Configure detected no earlier versions of perl installed under
6364 $prefix, then the list will be empty.  Answer 'none' to tell perl
6365 to not search earlier versions.
6366
6367 The default should almost always be sensible, so if you're not sure,
6368 just accept the default.
6369 EOM
6370
6371 rp='List of earlier versions to include in @INC?'
6372 . ./myread
6373 case "$ans" in
6374 [Nn]one|''|' ') inc_version_list=' ' ;;
6375 *) inc_version_list="$ans" ;;
6376 esac
6377 case "$inc_version_list" in
6378 ''|' ') 
6379         inc_version_list_init='0';;
6380 *)      inc_version_list_init=`echo $inc_version_list |
6381                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6382         ;;
6383 esac
6384 $rm -f getverlist
6385
6386 : determine whether to install perl also as /usr/bin/perl
6387
6388 echo " "
6389 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6390         $cat <<EOM
6391 Many scripts expect perl to be installed as /usr/bin/perl.
6392 I can install the perl you are about to compile also as /usr/bin/perl
6393 (in addition to $installbin/perl).
6394 EOM
6395         case "$installusrbinperl" in
6396         "$undef"|[nN]*) dflt='n';;
6397         *)              dflt='y';;
6398         esac
6399         rp="Do you want to install perl as /usr/bin/perl?"
6400         . ./myread
6401         case "$ans" in
6402         [yY]*)  val="$define";;
6403         *)      val="$undef" ;;
6404         esac
6405 else
6406         val="$undef"
6407 fi
6408 set installusrbinperl
6409 eval $setvar
6410
6411 : see if dld is available
6412 set dld.h i_dld
6413 eval $inhdr
6414
6415 : see if dlopen exists
6416 xxx_runnm="$runnm"
6417 runnm=false
6418 set dlopen d_dlopen
6419 eval $inlibc
6420 runnm="$xxx_runnm"
6421
6422 : determine which dynamic loading, if any, to compile in
6423 echo " "
6424 dldir="ext/DynaLoader"
6425 case "$usedl" in
6426 $define|y|true)
6427         dflt='y'
6428         usedl="$define"
6429         ;;
6430 $undef|n|false)
6431         dflt='n'
6432         usedl="$undef"
6433         ;;
6434 *) 
6435         dflt='n'
6436         case "$d_dlopen" in
6437             $define) dflt='y' ;;
6438         esac
6439         case "$i_dld" in
6440             $define) dflt='y' ;;
6441         esac
6442         : Does a dl_xxx.xs file exist for this operating system
6443         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6444         ;;
6445 esac
6446 rp="Do you wish to use dynamic loading?"
6447 . ./myread
6448 usedl="$ans"
6449 case "$ans" in
6450 y*) usedl="$define"
6451         case "$dlsrc" in
6452         '')
6453                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6454                         dflt="$dldir/dl_${osname}.xs"
6455                 elif $test "$d_dlopen" = "$define" ; then
6456                         dflt="$dldir/dl_dlopen.xs"
6457                 elif $test "$i_dld" = "$define" ; then
6458                         dflt="$dldir/dl_dld.xs"
6459                 else
6460                         dflt=''
6461                 fi
6462                 ;;
6463         *)      dflt="$dldir/$dlsrc"
6464                 ;;
6465         esac
6466     echo "The following dynamic loading files are available:"
6467         : Can not go over to $dldir because getfile has path hard-coded in.
6468         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6469         rp="Source file to use for dynamic loading"
6470         fn="fne"
6471         gfpth="$src"
6472         . ./getfile
6473         usedl="$define"
6474         : emulate basename
6475         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6476
6477         $cat << EOM
6478
6479 Some systems may require passing special flags to $cc -c to
6480 compile modules that will be used to create a shared library.
6481 To use no flags, say "none".
6482
6483 EOM
6484     case "$cccdlflags" in
6485     '') case "$gccversion" in
6486                 '') case "$osname" in
6487                         hpux)   dflt='+z' ;;
6488                         next)   dflt='none' ;;
6489                         irix*)  dflt='-KPIC' ;;
6490                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6491                         sunos)  dflt='-pic' ;;
6492                         *)      dflt='none' ;;
6493                     esac
6494                         ;;
6495                 *)  case "$osname" in
6496                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6497                         *)      dflt='-fpic' ;;
6498                     esac ;;
6499             esac ;;
6500         ' ') dflt='none' ;;
6501     *)  dflt="$cccdlflags" ;;
6502     esac
6503     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6504     . ./myread
6505     case "$ans" in
6506     none) cccdlflags=' ' ;;
6507     *) cccdlflags="$ans" ;;
6508     esac
6509
6510     cat << EOM
6511
6512 Some systems use ld to create libraries that can be dynamically loaded,
6513 while other systems (such as those using ELF) use $cc.
6514
6515 EOM
6516         case "$ld" in
6517         '')     $cat >try.c <<'EOM'
6518 /* Test for whether ELF binaries are produced */
6519 #include <fcntl.h>
6520 #include <stdlib.h>
6521 int main() {
6522         char b[4];
6523         int i = open("a.out",O_RDONLY);
6524         if(i == -1) 
6525                 exit(1); /* fail */
6526         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6527                 exit(0); /* succeed (yes, it's ELF) */
6528         else
6529                 exit(1); /* fail */
6530 }
6531 EOM
6532                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6533                         cat <<EOM
6534 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6535 EOM
6536                         dflt="$cc"
6537                 else
6538                         echo "I'll use ld to build dynamic libraries."
6539                         dflt='ld'
6540                 fi
6541                 rm -f try.c a.out
6542                 ;;
6543         *)      dflt="$ld"
6544                 ;;
6545         esac
6546
6547     rp="What command should be used to create dynamic libraries?"
6548     . ./myread
6549         ld="$ans"
6550
6551     cat << EOM
6552
6553 Some systems may require passing special flags to $ld to create a
6554 library that can be dynamically loaded.  If your ld flags include
6555 -L/other/path options to locate libraries outside your loader's normal
6556 search path, you may need to specify those -L options here as well.  To
6557 use no flags, say "none".
6558
6559 EOM
6560     case "$lddlflags" in
6561     '') case "$osname" in
6562                         beos) dflt='-nostart' ;;
6563                         hpux) dflt='-b';
6564                               case "$gccversion" in
6565                               '') dflt="$dflt +vnocompatwarnings" ;;
6566                               esac
6567                               ;;        
6568                         linux|irix*)    dflt='-shared' ;;
6569                         next)  dflt='none' ;;
6570                         solaris) dflt='-G' ;;
6571                         sunos) dflt='-assert nodefinitions' ;;
6572                         svr4*|esix*) dflt="-G $ldflags" ;;
6573                 *)     dflt='none' ;;
6574                         esac
6575                         ;;
6576     *) dflt="$lddlflags" ;;
6577     esac
6578
6579         : Try to guess additional flags to pick up local libraries.
6580         : Be careful not to append to a plain 'none'
6581         case "$dflt" in
6582         none) dflt='' ;;
6583         esac
6584         for thisflag in $ldflags; do
6585                 case "$thisflag" in
6586                 -L*|-R*)
6587                         case " $dflt " in
6588                         *" $thisflag "*) ;;
6589                         *) dflt="$dflt $thisflag" ;;
6590                         esac
6591                         ;;
6592                 esac
6593         done
6594
6595         case "$dflt" in
6596         ''|' ') dflt='none' ;;
6597         esac
6598
6599     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6600     . ./myread
6601     case "$ans" in
6602     none) lddlflags=' ' ;;
6603     *) lddlflags="$ans" ;;
6604     esac
6605
6606         cat <<EOM
6607
6608 Some systems may require passing special flags to $cc to indicate that
6609 the resulting executable will use dynamic linking.  To use no flags,
6610 say "none".
6611
6612 EOM
6613     case "$ccdlflags" in
6614     '') case "$osname" in
6615                 hpux)   dflt='-Wl,-E' ;;
6616                 linux)  dflt='-rdynamic' ;;
6617                 next)   dflt='none' ;;
6618                 sunos)  dflt='none' ;;
6619                 *)      dflt='none' ;;
6620             esac ;;
6621     ' ')  dflt='none' ;;
6622     *)  dflt="$ccdlflags" ;;
6623     esac
6624     rp="Any special flags to pass to $cc to use dynamic linking?"
6625     . ./myread
6626     case "$ans" in
6627     none) ccdlflags=' ' ;;
6628     *) ccdlflags="$ans" ;;
6629     esac
6630     ;;
6631 *)  usedl="$undef"
6632         ld='ld'
6633     dlsrc='dl_none.xs'
6634     lddlflags=''
6635     ccdlflags=''
6636     ;;
6637 esac
6638
6639 also=''
6640 case "$usedl" in
6641 $undef)
6642         # No dynamic loading being used, so don't bother even to prompt.
6643         useshrplib='false'
6644         ;;
6645 *)      case "$useshrplib" in
6646         '')     case "$osname" in
6647                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6648                         dflt=y
6649                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6650                         ;;
6651                 next*)
6652                         case "$osvers" in
6653                         4*)     dflt=y
6654                                 also='Building a shared libperl is needed for MAB support.'
6655                                 ;;
6656                         *)      dflt=n
6657                                 ;;
6658                         esac
6659                         ;;
6660                 *)      dflt=n
6661                         ;;
6662                 esac
6663                 ;;
6664         $define|true|[Yy]*)
6665                 dflt=y
6666                 ;;
6667         *)      dflt=n
6668                 ;;
6669         esac
6670         $cat << EOM
6671
6672 The perl executable is normally obtained by linking perlmain.c with
6673 libperl${_a}, any static extensions (usually just DynaLoader), and
6674 any other libraries needed on this system (such as -lm, etc.).  Since
6675 your system supports dynamic loading, it is probably possible to build
6676 a shared libperl.$so.  If you will have more than one executable linked
6677 to libperl.$so, this will significantly reduce the size of each
6678 executable, but it may have a noticeable affect on performance.  The
6679 default is probably sensible for your system.
6680 $also
6681
6682 EOM
6683         rp="Build a shared libperl.$so (y/n)"
6684         . ./myread
6685         case "$ans" in
6686         true|$define|[Yy]*)
6687                 useshrplib='true'  ;;
6688         *)      useshrplib='false' ;;
6689         esac
6690         ;;
6691 esac
6692
6693 case "$useshrplib" in
6694 true)
6695         case "$libperl" in
6696         '')
6697                 # Figure out a good name for libperl.so.  Since it gets stored in
6698                 # a version-specific architecture-dependent library, the version
6699                 # number isn't really that important, except for making cc/ld happy.
6700                 #
6701                 # A name such as libperl.so.3.1
6702                 majmin="libperl.$so.$patchlevel.$subversion"
6703                 # A name such as libperl.so.301
6704                 majonly=`echo $patchlevel $subversion |
6705                         $awk '{printf "%d%02d", $1, $2}'`
6706                 majonly=libperl.$so.$majonly
6707                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6708                 # rely on figuring it out from the naming of libc.
6709                 case "${osname}${osvers}" in
6710                 next4*)
6711                         dflt=libperl.5.$so
6712                         # XXX How handle the --version stuff for MAB?
6713                         ;;
6714                 linux*)  # ld won't link with a bare -lperl otherwise.
6715                         dflt=libperl.$so
6716                         ;;
6717                 cygwin*) # include version
6718                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6719                         ;;
6720                 *)      # Try to guess based on whether libc has major.minor.
6721                         case "$libc" in
6722                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6723                         *libc.$so.[0-9]*) dflt=$majonly ;;
6724                         *)      dflt=libperl.$so ;;
6725                         esac
6726                         ;;
6727                 esac
6728                 ;;
6729         *)      dflt=$libperl
6730                 ;;
6731         esac
6732         cat << EOM
6733
6734 I need to select a good name for the shared libperl.  If your system uses
6735 library names with major and minor numbers, then you might want something
6736 like $majmin.  Alternatively, if your system uses a single version
6737 number for shared libraries, then you might want to use $majonly.
6738 Or, your system might be quite happy with a simple libperl.$so.
6739
6740 Since the shared libperl will get installed into a version-specific
6741 architecture-dependent directory, the version number of the shared perl
6742 library probably isn't important, so the default should be o.k.
6743
6744 EOM
6745         rp='What name do you want to give to the shared libperl?'
6746         . ./myread
6747         libperl=$ans
6748         echo "Ok, I'll use $libperl"
6749         ;;
6750 *)
6751         libperl="libperl${_a}"
6752         ;;
6753 esac
6754
6755 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6756 case "$shrpdir" in
6757 '') ;;
6758 *)      $cat >&4 <<EOM
6759 WARNING:  Use of the shrpdir variable for the installation location of
6760 the shared $libperl is not supported.  It was never documented and
6761 will not work in this version.  Let me (perlbug@perl.org)
6762 know of any problems this may cause.
6763
6764 EOM
6765         case "$shrpdir" in
6766         "$archlibexp/CORE")
6767                 $cat >&4 <<EOM
6768 But your current setting of $shrpdir is
6769 the default anyway, so it's harmless.
6770 EOM
6771                 ;;
6772         *)
6773                 $cat >&4 <<EOM
6774 Further, your current attempted setting of $shrpdir
6775 conflicts with the value of $archlibexp/CORE
6776 that installperl will use.
6777 EOM
6778                 ;;
6779         esac
6780         ;;
6781 esac
6782
6783 # How will the perl executable find the installed shared $libperl?
6784 # Add $xxx to ccdlflags.
6785 # If we can't figure out a command-line option, use $shrpenv to
6786 # set env LD_RUN_PATH.  The main perl makefile uses this.
6787 shrpdir=$archlibexp/CORE
6788 xxx=''
6789 tmp_shrpenv=''
6790 if "$useshrplib"; then
6791     case "$osname" in 
6792         aix)
6793                 # We'll set it in Makefile.SH...
6794                 ;;
6795         solaris|netbsd)
6796                 xxx="-R $shrpdir"
6797                 ;;
6798         freebsd)
6799                 xxx="-Wl,-R$shrpdir"
6800                 ;;
6801         linux|irix*|dec_osf)
6802                 xxx="-Wl,-rpath,$shrpdir"
6803                 ;;
6804         next)
6805                 # next doesn't like the default...
6806                 ;;
6807         beos)
6808                 # beos doesn't like the default, either.
6809                 ;;
6810         hpux*)
6811                 # hpux doesn't like the default, either.
6812                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6813                 ;;
6814         *)
6815                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6816                 ;;
6817         esac
6818         case "$xxx" in
6819         '') ;;
6820         *)      
6821                 # Only add $xxx if it isn't already in ccdlflags.
6822                 case " $ccdlflags " in
6823                 *" $xxx "*)     ;;
6824                 *)      ccdlflags="$ccdlflags $xxx"
6825                         cat <<EOM >&4
6826
6827 Adding $xxx to the flags
6828 passed to $ld so that the perl executable will find the 
6829 installed shared $libperl.
6830
6831 EOM
6832                         ;;
6833                 esac
6834                 ;;
6835         esac
6836 fi
6837 # Fix ccdlflags in AIX for building external extensions.
6838 # (For building Perl itself bare -bE:perl.exp is needed,
6839 #  Makefile.SH takes care of this.)
6840 case "$osname" in
6841 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6842 esac
6843 # Respect a hint or command-line value.
6844 case "$shrpenv" in
6845 '') shrpenv="$tmp_shrpenv" ;;
6846 esac
6847 case "$ldlibpthname" in
6848 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6849 none)   ldlibpthname='' ;;
6850 esac
6851
6852 : determine where manual pages go
6853 set man1dir man1dir none
6854 eval $prefixit
6855 $cat <<EOM
6856
6857 $spackage has manual pages available in source form.
6858 EOM
6859 case "$nroff" in
6860 nroff)
6861         echo "However, you don't have nroff, so they're probably useless to you."
6862         case "$man1dir" in
6863         '') man1dir="none";;
6864         esac;;
6865 esac
6866 echo "If you don't want the manual sources installed, answer 'none'."
6867 case "$man1dir" in
6868 ' ') dflt=none
6869         ;;
6870 '')
6871         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6872         lookpath="$lookpath $prefixexp/man/p_man/man1"
6873         lookpath="$lookpath $prefixexp/man/u_man/man1"
6874         lookpath="$lookpath $prefixexp/man/man.1"
6875         case "$sysman" in
6876         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6877         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6878         esac
6879         set dflt
6880         eval $prefixup
6881         ;;
6882 *)  dflt="$man1dir"
6883         ;;
6884 esac
6885 echo " "
6886 fn=dn+~
6887 rp="Where do the main $spackage manual pages (source) go?"
6888 . ./getfile
6889 if $test "X$man1direxp" != "X$ansexp"; then
6890         installman1dir=''
6891 fi
6892 man1dir="$ans"
6893 man1direxp="$ansexp"
6894 case "$man1dir" in
6895 '')     man1dir=' '
6896         installman1dir='';;
6897 esac
6898
6899 : Change installation prefix, if necessary.
6900 if $test X"$prefix" != X"$installprefix"; then
6901         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6902 else
6903         installman1dir="$man1direxp"
6904 fi
6905
6906 : What suffix to use on installed man pages
6907
6908 case "$man1dir" in
6909 ' ')
6910         man1ext='0'
6911         ;;
6912 *)
6913         rp="What suffix should be used for the main $spackage man pages?"
6914         case "$man1ext" in
6915         '')     case "$man1dir" in
6916                 *1)  dflt=1 ;;
6917                 *1p) dflt=1p ;;
6918                 *1pm) dflt=1pm ;;
6919                 *l) dflt=l;;
6920                 *n) dflt=n;;
6921                 *o) dflt=o;;
6922                 *p) dflt=p;;
6923                 *C) dflt=C;;
6924                 *L) dflt=L;;
6925                 *L1) dflt=L1;;
6926                 *) dflt=1;;
6927                 esac
6928                 ;;
6929         *)      dflt="$man1ext";;
6930         esac
6931         . ./myread
6932         man1ext="$ans"
6933         ;;
6934 esac
6935
6936 : see if we can have long filenames
6937 echo " "
6938 first=123456789abcdef
6939 $rm -f $first
6940 if (echo hi >$first) 2>/dev/null; then
6941         if $test -f 123456789abcde; then
6942                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6943                 val="$undef"
6944         else
6945                 echo 'You can have filenames longer than 14 characters.'>&4
6946                 val="$define"
6947         fi
6948 else
6949         $cat <<'EOM'
6950 You can't have filenames longer than 14 chars.
6951 You can't even think about them!
6952 EOM
6953         val="$undef"
6954 fi 
6955 set d_flexfnam
6956 eval $setvar
6957 $rm -rf 123456789abcde*
6958
6959 : determine where library module manual pages go
6960 set man3dir man3dir none
6961 eval $prefixit
6962 $cat <<EOM
6963
6964 $spackage has manual pages for many of the library modules.
6965 EOM
6966
6967 case "$nroff" in
6968 nroff)
6969         $cat <<'EOM'
6970 However, you don't have nroff, so they're probably useless to you.
6971 EOM
6972         case "$man3dir" in
6973         '') man3dir="none";;
6974         esac;;
6975 esac
6976
6977 case "$d_flexfnam" in
6978 undef)
6979         $cat <<'EOM'
6980 However, your system can't handle the long file names like File::Basename.3. 
6981 EOM
6982         case "$man3dir" in
6983         '') man3dir="none";;
6984         esac;;
6985 esac
6986
6987 echo "If you don't want the manual sources installed, answer 'none'."
6988 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6989 case "$man3dir" in
6990 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6991         if $test -d "$privlib/man/man3"; then
6992                 cat <<EOM >&4
6993
6994 WARNING:  Previous versions of perl installed man3 pages into
6995 $privlib/man/man3.  This version will suggest a 
6996 new default of $dflt.  
6997 EOM
6998                 tdflt=$dflt
6999                 dflt='n'
7000                 rp='Do you wish to preserve the old behavior?(y/n)'
7001                 . ./myread
7002                 case "$ans" in
7003                 y*) dflt="$privlib/man/man3" ;;
7004                 *)  dflt=$tdflt ;;
7005                 esac
7006     fi
7007         ;;
7008 *)      dflt="$man3dir" ;;
7009 esac
7010 case "$dflt" in
7011 ' ') dflt=none ;;
7012 esac
7013 echo " "
7014 fn=dn+~
7015 rp="Where do the $package library man pages (source) go?"
7016 . ./getfile
7017 man3dir="$ans"
7018 man3direxp="$ansexp"
7019 case "$man3dir" in
7020 '')     man3dir=' '
7021         installman3dir='';;
7022 esac
7023
7024 : Change installation prefix, if necessary.
7025 if $test X"$prefix" != X"$installprefix"; then
7026         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7027 else
7028         installman3dir="$man3direxp"
7029 fi
7030
7031 : What suffix to use on installed man pages
7032 case "$man3dir" in
7033 ' ')
7034         man3ext='0'
7035         ;;
7036 *)
7037         rp="What suffix should be used for the $package library man pages?"
7038         case "$man3ext" in
7039         '')     case "$man3dir" in
7040                 *3)  dflt=3 ;;
7041                 *3p) dflt=3p ;;
7042                 *3pm) dflt=3pm ;;
7043                 *l) dflt=l;;
7044                 *n) dflt=n;;
7045                 *o) dflt=o;;
7046                 *p) dflt=p;;
7047                 *C) dflt=C;;
7048                 *L) dflt=L;;
7049                 *L3) dflt=L3;;
7050                 *) dflt=3;;
7051                 esac
7052                 ;;
7053         *)      dflt="$man3ext";;
7054         esac
7055         . ./myread
7056         man3ext="$ans"
7057         ;;
7058 esac
7059
7060 : see if we have to deal with yellow pages, now NIS.
7061 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7062         if $test -f /usr/etc/nibindd; then
7063                 echo " "
7064                 echo "I'm fairly confident you're on a NeXT."
7065                 echo " "
7066                 rp='Do you get the hosts file via NetInfo?'
7067                 dflt=y
7068                 case "$hostcat" in
7069                 nidump*) ;;
7070                 '') ;;
7071                 *) dflt=n;;
7072                 esac
7073                 . ./myread
7074                 case "$ans" in
7075                 y*) hostcat='nidump hosts .';;
7076                 *)      case "$hostcat" in
7077                         nidump*) hostcat='';;
7078                         esac
7079                         ;;
7080                 esac
7081         fi
7082         case "$hostcat" in
7083         nidump*) ;;
7084         *)
7085                 case "$hostcat" in
7086                 *ypcat*) dflt=y;;
7087                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7088                                 dflt=y
7089                         else
7090                                 dflt=n
7091                         fi;;
7092                 *) dflt=n;;
7093                 esac
7094                 echo " "
7095                 rp='Are you getting the hosts file via yellow pages?'
7096                 . ./myread
7097                 case "$ans" in
7098                 y*) hostcat='ypcat hosts';;
7099                 *) hostcat='cat /etc/hosts';;
7100                 esac
7101                 ;;
7102         esac
7103 fi
7104 case "$hostcat" in
7105 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7106 esac
7107 case "$groupcat" in
7108 '') test -f /etc/group && groupcat='cat /etc/group';;
7109 esac
7110 case "$passcat" in
7111 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7112 esac
7113
7114 : now get the host name
7115 echo " "
7116 echo "Figuring out host name..." >&4
7117 case "$myhostname" in
7118 '') cont=true
7119         echo 'Maybe "hostname" will work...'
7120         if tans=`sh -c hostname 2>&1` ; then
7121                 myhostname=$tans
7122                 phostname=hostname
7123                 cont=''
7124         fi
7125         ;;
7126 *) cont='';;
7127 esac
7128 if $test "$cont"; then
7129         if ./xenix; then
7130                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7131                 if tans=`cat /etc/systemid 2>&1` ; then
7132                         myhostname=$tans
7133                         phostname='cat /etc/systemid'
7134                         echo "Whadyaknow.  Xenix always was a bit strange..."
7135                         cont=''
7136                 fi
7137         elif $test -r /etc/systemid; then
7138                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7139         fi
7140 fi
7141 if $test "$cont"; then
7142         echo 'No, maybe "uuname -l" will work...'
7143         if tans=`sh -c 'uuname -l' 2>&1` ; then
7144                 myhostname=$tans
7145                 phostname='uuname -l'
7146         else
7147                 echo 'Strange.  Maybe "uname -n" will work...'
7148                 if tans=`sh -c 'uname -n' 2>&1` ; then
7149                         myhostname=$tans
7150                         phostname='uname -n'
7151                 else
7152                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7153                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7154                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7155                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7156                         else
7157                                 case "$myhostname" in
7158                                 '') echo "Does this machine have an identity crisis or something?"
7159                                         phostname='';;
7160                                 *)
7161                                         echo "Well, you said $myhostname before..."
7162                                         phostname='echo $myhostname';;
7163                                 esac
7164                         fi
7165                 fi
7166         fi
7167 fi
7168 : you do not want to know about this
7169 set $myhostname
7170 myhostname=$1
7171
7172 : verify guess
7173 if $test "$myhostname" ; then
7174         dflt=y
7175         rp='Your host name appears to be "'$myhostname'".'" Right?"
7176         . ./myread
7177         case "$ans" in
7178         y*) ;;
7179         *) myhostname='';;
7180         esac
7181 fi
7182
7183 : bad guess or no guess
7184 while $test "X$myhostname" = X ; do
7185         dflt=''
7186         rp="Please type the (one word) name of your host:"
7187         . ./myread
7188         myhostname="$ans"
7189 done
7190
7191 : translate upper to lower if necessary
7192 case "$myhostname" in
7193 *[A-Z]*)
7194         echo "(Normalizing case in your host name)"
7195         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7196         ;;
7197 esac
7198
7199 case "$myhostname" in
7200 *.*)
7201         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7202         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7203         echo "(Trimming domain name from host name--host name is now $myhostname)"
7204         ;;
7205 *) case "$mydomain" in
7206         '')
7207                 {
7208                         test "X$hostcat" = "Xypcat hosts" &&
7209                         ypmatch "$myhostname" hosts 2>/dev/null |\
7210                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7211                         $test -s hosts
7212                 } || {
7213                         test "X$hostcat" != "X" &&
7214                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7215                                         /[       ]$myhostname[  . ]/p" > hosts
7216                 }
7217                 tmp_re="[       . ]"
7218                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7219                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7220                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7221                         hosts | $sort | $uniq | \
7222                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7223                 case `$echo X$dflt` in
7224                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7225                         dflt=.
7226                         ;;
7227                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7228                         ;;
7229                 esac
7230                 case "$dflt" in
7231                 .)
7232                         tans=`./loc resolv.conf X /etc /usr/etc`
7233                         if $test -f "$tans"; then
7234                                 echo "(Attempting domain name extraction from $tans)"
7235                                 dflt=.`$sed -n -e 's/   / /g' \
7236                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7237                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7238                                 case "$dflt" in
7239                                 .) dflt=.`$sed -n -e 's/        / /g' \
7240                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7241                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7242                                         ;;
7243                                 esac
7244                         fi
7245                         ;;
7246                 esac
7247                 case "$dflt" in
7248                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7249                         dflt=.`sh -c domainname 2>/dev/null`
7250                         case "$dflt" in
7251                         '') dflt='.';;
7252                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7253                         esac
7254                         ;;
7255                 esac
7256                 case "$dflt" in
7257                 .) echo "(Lost all hope -- silly guess then)"
7258                         dflt='.uucp'
7259                         ;;
7260                 esac
7261                 $rm -f hosts
7262                 ;;
7263         *) dflt="$mydomain";;
7264         esac;;
7265 esac
7266 echo " "
7267 rp="What is your domain name?"
7268 . ./myread
7269 tans="$ans"
7270 case "$ans" in
7271 '') ;;
7272 .*) ;;
7273 *) tans=".$tans";;
7274 esac
7275 mydomain="$tans"
7276
7277 : translate upper to lower if necessary
7278 case "$mydomain" in
7279 *[A-Z]*)
7280         echo "(Normalizing case in your domain name)"
7281         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7282         ;;
7283 esac
7284
7285 : a little sanity check here
7286 case "$phostname" in
7287 '') ;;
7288 *)
7289         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7290         $myhostname$mydomain|$myhostname) ;;
7291         *)
7292                 case "$phostname" in
7293                 sed*)
7294                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7295                         ;;
7296                 *)
7297                         echo "(That doesn't agree with your $phostname command, by the way.)"
7298                         ;;
7299                 esac
7300         ;;
7301         esac
7302         ;;
7303 esac
7304
7305 $cat <<EOM
7306
7307 I need to get your e-mail address in Internet format if possible, i.e.
7308 something like user@host.domain. Please answer accurately since I have
7309 no easy means to double check it. The default value provided below
7310 is most probably close to reality but may not be valid from outside
7311 your organization...
7312
7313 EOM
7314 cont=x
7315 while test "$cont"; do
7316         case "$cf_email" in
7317         '') dflt="$cf_by@$myhostname$mydomain";;
7318         *) dflt="$cf_email";;
7319         esac
7320         rp='What is your e-mail address?'
7321         . ./myread
7322         cf_email="$ans"
7323         case "$cf_email" in
7324         *@*.*) cont='' ;;
7325         *)
7326                 rp='Address does not look like an Internet one.  Use it anyway?'
7327                 case "$fastread" in
7328                 yes) dflt=y ;;
7329                 *) dflt=n ;;
7330                 esac
7331                 . ./myread
7332                 case "$ans" in
7333                 y*) cont='' ;;
7334                 *) echo " " ;;
7335                 esac
7336                 ;;
7337         esac
7338 done
7339
7340 $cat <<EOM
7341
7342 If you or somebody else will be maintaining perl at your site, please
7343 fill in the correct e-mail address here so that they may be contacted
7344 if necessary. Currently, the "perlbug" program included with perl
7345 will send mail to this address in addition to perlbug@perl.org. You may
7346 enter "none" for no administrator.
7347
7348 EOM
7349 case "$perladmin" in
7350 '') dflt="$cf_email";;
7351 *) dflt="$perladmin";;
7352 esac
7353 rp='Perl administrator e-mail address'
7354 . ./myread
7355 perladmin="$ans"
7356
7357 : figure out how to guarantee perl startup
7358 case "$startperl" in
7359 '')
7360         case "$sharpbang" in
7361         *!)
7362                 $cat <<EOH
7363
7364 I can use the #! construct to start perl on your system. This will
7365 make startup of perl scripts faster, but may cause problems if you
7366 want to share those scripts and perl is not in a standard place
7367 ($binexp/perl) on all your platforms. The alternative is to force
7368 a shell by starting the script with a single ':' character.
7369
7370 EOH
7371                 dflt="$binexp/perl"
7372                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7373                 . ./myread
7374                 case "$ans" in
7375                 none)   startperl=": # use perl";;
7376                 *)      startperl="#!$ans"
7377                         if $test 30 -lt `echo "$ans" | wc -c`; then
7378                                 $cat >&4 <<EOM
7379
7380 WARNING:  Some systems limit the #! command to 32 characters.
7381 If you experience difficulty running Perl scripts with #!, try
7382 installing Perl in a directory with a shorter pathname.
7383
7384 EOM
7385                         fi ;;
7386                 esac
7387                 ;;
7388         *) startperl=": # use perl"
7389                 ;;
7390         esac
7391         ;;
7392 esac
7393 echo "I'll use $startperl to start perl scripts."
7394
7395 : figure best path for perl in scripts
7396 case "$perlpath" in
7397 '')
7398         perlpath="$binexp/perl"
7399         case "$startperl" in
7400         *!*) ;;
7401         *)
7402                 $cat <<EOH
7403
7404 I will use the "eval 'exec'" idiom to start Perl on your system.
7405 I can use the full path of your Perl binary for this purpose, but
7406 doing so may cause problems if you want to share those scripts and
7407 Perl is not always in a standard place ($binexp/perl).
7408
7409 EOH
7410                 dflt="$binexp/perl"
7411                 rp="What path shall I use in \"eval 'exec'\"?"
7412                 . ./myread
7413                 perlpath="$ans"
7414                 ;;
7415         esac
7416         ;;
7417 esac
7418 case "$startperl" in
7419 *!*)    ;;
7420 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7421 esac
7422
7423 : determine where public executable scripts go
7424 set scriptdir scriptdir
7425 eval $prefixit
7426 case "$scriptdir" in
7427 '')
7428         dflt="$bin"
7429         : guess some guesses
7430         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7431         $test -d /usr/share/bin     && dflt=/usr/share/bin
7432         $test -d /usr/local/script  && dflt=/usr/local/script
7433         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7434         $test -d $prefixexp/script  && dflt=$prefixexp/script
7435         set dflt
7436         eval $prefixup
7437         ;;
7438 *)  dflt="$scriptdir"
7439         ;;
7440 esac
7441 $cat <<EOM
7442  
7443 Some installations have a separate directory just for executable scripts so
7444 that they can mount it across multiple architectures but keep the scripts in
7445 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7446 Or you might just lump your scripts in with all your other executables.
7447  
7448 EOM
7449 fn=d~
7450 rp='Where do you keep publicly executable scripts?'
7451 . ./getfile
7452 if $test "X$ansexp" != "X$scriptdirexp"; then
7453         installscript=''
7454 fi
7455 scriptdir="$ans"
7456 scriptdirexp="$ansexp"
7457 : Change installation prefix, if necessary.
7458 if $test X"$prefix" != X"$installprefix"; then
7459         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7460 else
7461         installscript="$scriptdirexp"
7462 fi
7463
7464 : determine where add-on public executables go
7465 case "$sitebin" in
7466 '')     dflt=$siteprefix/bin ;;
7467 *)      dflt=$sitebin ;;
7468 esac
7469 fn=d~
7470 rp='Pathname where the add-on public executables should be installed?'
7471 . ./getfile
7472 sitebin="$ans"
7473 sitebinexp="$ansexp"
7474 : Change installation prefix, if necessary.
7475 if $test X"$prefix" != X"$installprefix"; then
7476         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7477 else
7478         installsitebin="$sitebinexp"
7479 fi
7480
7481 case "$useperlio" in
7482 $define|true|[yY]*)     dflt='y';;
7483 *) dflt='n';;
7484 esac
7485 cat <<EOM
7486
7487 Previous version of $package used the standard IO mechanisms as defined
7488 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7489 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7490 the default.  This abstraction layer can use AT&T's sfio (if you already
7491 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7492 problems with some extension modules.  Using PerlIO with stdio is safe,
7493 but it is slower than plain stdio and therefore is not the default.
7494
7495 If this doesn't make any sense to you, just accept the default '$dflt'.
7496 EOM
7497 rp='Use the experimental PerlIO abstraction layer?'
7498 . ./myread
7499 case "$ans" in
7500 y|Y) 
7501         val="$define"
7502         ;;     
7503 *)      
7504         echo "Ok, doing things the stdio way"
7505         val="$undef"
7506         ;;
7507 esac
7508 set useperlio
7509 eval $setvar 
7510
7511 case "$vendorprefix" in
7512 '')     d_vendorbin="$undef"
7513         vendorbin=''
7514         vendorbinexp=''
7515         ;;
7516 *)      d_vendorbin="$define"
7517         : determine where vendor-supplied executables go.
7518         case "$vendorbin" in
7519         '') dflt=$vendorprefix/bin ;;
7520         *)      dflt="$vendorbin" ;;
7521         esac
7522         fn=d~+
7523         rp='Pathname for the vendor-supplied executables directory?'
7524         . ./getfile
7525         vendorbin="$ans"
7526         vendorbinexp="$ansexp"
7527         ;;
7528 esac
7529 : Change installation prefix, if necessary.
7530 if $test X"$prefix" != X"$installprefix"; then
7531         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7532 else
7533         installvendorbin="$vendorbinexp"
7534 fi
7535
7536 : see if qgcvt exists
7537 set qgcvt d_qgcvt
7538 eval $inlibc
7539
7540 : check for length of double
7541 echo " "
7542 case "$doublesize" in
7543 '')
7544         echo "Checking to see how big your double precision numbers are..." >&4
7545         $cat >try.c <<'EOCP'
7546 #include <stdio.h>
7547 int main()
7548 {
7549     printf("%d\n", (int)sizeof(double));
7550     exit(0);
7551 }
7552 EOCP
7553         set try
7554         if eval $compile_ok; then
7555                 doublesize=`./try`
7556                 echo "Your double is $doublesize bytes long."
7557         else
7558                 dflt='8'
7559                 echo "(I can't seem to compile the test program.  Guessing...)"
7560                 rp="What is the size of a double precision number (in bytes)?"
7561                 . ./myread
7562                 doublesize="$ans"
7563         fi
7564         ;;
7565 esac
7566 $rm -f try.c try
7567
7568 : check for long doubles
7569 echo " "
7570 echo "Checking to see if you have long double..." >&4
7571 echo 'int main() { long double x = 7.0; }' > try.c
7572 set try
7573 if eval $compile; then
7574         val="$define"
7575         echo "You have long double."
7576 else
7577         val="$undef"
7578         echo "You do not have long double."
7579 fi
7580 $rm try.*
7581 set d_longdbl
7582 eval $setvar
7583
7584 : check for length of long double
7585 case "${d_longdbl}${longdblsize}" in
7586 $define)
7587         echo " "
7588         echo "Checking to see how big your long doubles are..." >&4
7589         $cat >try.c <<'EOCP'
7590 #include <stdio.h>
7591 int main()
7592 {
7593         printf("%d\n", sizeof(long double));
7594 }
7595 EOCP
7596         set try
7597         set try
7598         if eval $compile; then
7599                 longdblsize=`./try$exe_ext`
7600                 echo "Your long doubles are $longdblsize bytes long."
7601         else
7602                 dflt='8'
7603                 echo " "
7604                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7605                 rp="What is the size of a long double (in bytes)?"
7606                 . ./myread
7607                 longdblsize="$ans"
7608         fi
7609         if $test "X$doublesize" = "X$longdblsize"; then
7610                 echo "(That isn't any different from an ordinary double.)"
7611         fi      
7612         ;;
7613 esac
7614 $rm -f try.* try
7615
7616 echo " "
7617
7618 if $test X"$d_longdbl" = X"$define"; then
7619
7620 echo "Checking how to print long doubles..." >&4
7621
7622 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7623         $cat >try.c <<'EOCP'
7624 #include <sys/types.h>
7625 #include <stdio.h>
7626 int main() {
7627   double d = 123.456;
7628   printf("%.3f\n", d);
7629 }
7630 EOCP
7631         set try
7632         if eval $compile; then
7633                 yyy=`./try$exe_ext`
7634                 case "$yyy" in
7635                 123.456)
7636                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7637                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7638                         echo "We will use %f."
7639                         ;;
7640                 esac
7641         fi
7642 fi
7643
7644 if $test X"$sPRIfldbl" = X; then
7645         $cat >try.c <<'EOCP'
7646 #include <sys/types.h>
7647 #include <stdio.h>
7648 int main() {
7649   long double d = 123.456;
7650   printf("%.3llf\n", d);
7651 }
7652 EOCP
7653         set try
7654         if eval $compile; then
7655                 yyy=`./try$exe_ext`
7656                 case "$yyy" in
7657                 123.456)
7658                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7659                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7660                         echo "We will use %llf."
7661                         ;;
7662                 esac
7663         fi
7664 fi
7665
7666 if $test X"$sPRIfldbl" = X; then
7667         $cat >try.c <<'EOCP'
7668 #include <sys/types.h>
7669 #include <stdio.h>
7670 int main() {
7671   long double d = 123.456;
7672   printf("%.3Lf\n", d);
7673 }
7674 EOCP
7675         set try
7676         if eval $compile; then
7677                 yyy=`./try$exe_ext`
7678                 case "$yyy" in
7679                 123.456)
7680                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7681                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7682                         echo "We will use %Lf."
7683                         ;;
7684                 esac
7685         fi
7686 fi
7687
7688 if $test X"$sPRIfldbl" = X; then
7689         $cat >try.c <<'EOCP'
7690 #include <sys/types.h>
7691 #include <stdio.h>
7692 int main() {
7693   long double d = 123.456;
7694   printf("%.3lf\n", d);
7695 }
7696 EOCP
7697         set try
7698         if eval $compile; then
7699                 yyy=`./try$exe_ext`
7700                 case "$yyy" in
7701                 123.456)
7702                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7703                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7704                         echo "We will use %lf."
7705                         ;;
7706                 esac
7707         fi
7708 fi
7709
7710 if $test X"$sPRIfldbl" = X; then
7711         echo "Cannot figure out how to print long doubles." >&4
7712 fi
7713
7714 $rm -f try try.*
7715
7716 fi # d_longdbl
7717
7718 case "$sPRIfldbl" in
7719 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7720         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7721         ;;
7722 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7723         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7724         ;;
7725 esac
7726
7727 : Check how to convert floats to strings.
7728 echo " "
7729 echo "Checking for an efficient way to convert floats to strings."
7730 echo " " > try.c
7731 case "$uselongdouble" in
7732 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7733 esac
7734 case "$d_longdbl" in
7735 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7736 esac
7737 case "$d_PRIgldbl" in
7738 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7739 esac
7740 $cat >>try.c <<EOP
7741 #ifdef TRY_gconvert
7742 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7743 char *myname = "gconvert";
7744 #endif
7745 #ifdef TRY_gcvt
7746 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7747 char *myname = "gcvt";
7748 #endif
7749 #ifdef TRY_qgcvt
7750 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7751 char *myname = "qgcvt";
7752 #define DOUBLETYPE long double
7753 #endif
7754 #ifdef TRY_sprintf
7755 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7756 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7757 #else
7758 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7759 #endif
7760 char *myname = "sprintf";
7761 #endif
7762
7763 #ifndef DOUBLETYPE
7764 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7765 #define DOUBLETYPE long double
7766 #else
7767 #define DOUBLETYPE double
7768 #endif
7769 #endif
7770
7771 #include <stdio.h>
7772
7773 #define I_STDLIB $i_stdlib
7774 #ifdef I_STDLIB
7775 #include <stdlib.h>
7776 #endif
7777
7778 int
7779 checkit(expect, got)
7780 char *expect;
7781 char *got;
7782 {
7783     if (strcmp(expect, got)) {
7784                 printf("%s oddity:  Expected %s, got %s\n",
7785                         myname, expect, got);
7786                 exit(1);
7787         }
7788 }
7789
7790 int main()
7791
7792         char buf[64]; 
7793         buf[63] = '\0';
7794
7795         /* This must be 1st test on (which?) platform */
7796         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7797         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7798         checkit("0.1", buf);
7799
7800         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7801         checkit("1", buf);
7802
7803         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7804         checkit("1.1", buf);
7805
7806         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7807         checkit("1.01", buf);
7808
7809         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7810         checkit("1.001", buf);
7811
7812         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7813         checkit("1.0001", buf);
7814
7815         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7816         checkit("1.00001", buf);
7817
7818         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7819         checkit("1.000001", buf);
7820
7821         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7822         checkit("0", buf);
7823
7824         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7825         checkit("-1", buf);
7826
7827         /* Some Linux gcvt's give 1.e+5 here. */
7828         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7829         checkit("100000", buf);
7830         
7831         /* Some Linux gcvt's give -1.e+5 here. */
7832         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7833         checkit("-100000", buf);
7834
7835         exit(0);
7836 }
7837 EOP
7838 case "$d_Gconvert" in
7839 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7840 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7841 *) xxx_list='sprintf gconvert gcvt' ;;
7842 esac
7843
7844 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7845 "$define$define$define")
7846     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7847     xxx_list="sprintf $xxx_list"
7848     case "$d_qgcvt" in
7849     "$define") xxx_list="qgcvt $xxx_list" ;;
7850     esac
7851     ;;
7852 esac
7853
7854 for xxx_convert in $xxx_list; do
7855         echo "Trying $xxx_convert..."
7856         $rm -f try try$_o
7857         set try -DTRY_$xxx_convert
7858         if eval $compile; then
7859                 echo "$xxx_convert() found." >&4
7860                 if ./try; then
7861                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7862                         break;
7863                 else
7864                         echo "...But $xxx_convert didn't work as I expected."
7865                 fi
7866         else
7867                 echo "$xxx_convert NOT found." >&4
7868         fi
7869 done
7870         
7871 case "$xxx_convert" in
7872 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7873 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7874 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7875 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7876    "$define$define$define")
7877       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7878    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7879    esac
7880    ;;  
7881 esac
7882
7883 : Initialize h_fcntl
7884 h_fcntl=false
7885
7886 : Initialize h_sysfile
7887 h_sysfile=false
7888
7889 : access call always available on UNIX
7890 set access d_access
7891 eval $inlibc
7892
7893 : locate the flags for 'access()'
7894 case "$d_access" in
7895 "$define")
7896         echo " "
7897         $cat >access.c <<'EOCP'
7898 #include <sys/types.h>
7899 #ifdef I_FCNTL
7900 #include <fcntl.h>
7901 #endif
7902 #ifdef I_SYS_FILE
7903 #include <sys/file.h>
7904 #endif
7905 #ifdef I_UNISTD
7906 #include <unistd.h>
7907 #endif
7908 int main() {
7909         exit(R_OK);
7910 }
7911 EOCP
7912         : check sys/file.h first, no particular reason here
7913         if $test `./findhdr sys/file.h` && \
7914                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7915                 h_sysfile=true;
7916                 echo "<sys/file.h> defines the *_OK access constants." >&4
7917         elif $test `./findhdr fcntl.h` && \
7918                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7919                 h_fcntl=true;
7920                 echo "<fcntl.h> defines the *_OK access constants." >&4
7921         elif $test `./findhdr unistd.h` && \
7922                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7923                 echo "<unistd.h> defines the *_OK access constants." >&4
7924         else
7925                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7926         fi
7927         ;;
7928 esac
7929 $rm -f access*
7930
7931 : see if accessx exists
7932 set accessx d_accessx
7933 eval $inlibc
7934
7935 : see if alarm exists
7936 set alarm d_alarm
7937 eval $inlibc
7938
7939 : see if atolf exists
7940 set atolf d_atolf
7941 eval $inlibc
7942
7943 : see if atoll exists
7944 set atoll d_atoll
7945 eval $inlibc
7946
7947 : Look for GNU-cc style attribute checking
7948 echo " "
7949 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7950 $cat >attrib.c <<'EOCP'
7951 #include <stdio.h>
7952 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7953 EOCP
7954 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7955         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7956                 echo "Your C compiler doesn't fully support __attribute__."
7957                 val="$undef"
7958         else
7959                 echo "Your C compiler supports __attribute__."
7960                 val="$define"
7961         fi
7962 else
7963         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7964         val="$undef"
7965 fi
7966 set d_attribut
7967 eval $setvar
7968 $rm -f attrib*
7969
7970 : see if bcmp exists
7971 set bcmp d_bcmp
7972 eval $inlibc
7973
7974 : see if bcopy exists
7975 set bcopy d_bcopy
7976 eval $inlibc
7977
7978 : see if this is a unistd.h system
7979 set unistd.h i_unistd
7980 eval $inhdr
7981
7982 : see if getpgrp exists
7983 set getpgrp d_getpgrp
7984 eval $inlibc
7985
7986 case "$d_getpgrp" in
7987 "$define")
7988         echo " "
7989         echo "Checking to see which flavor of getpgrp is in use..."
7990         $cat >set.c <<EOP
7991 #$i_unistd I_UNISTD
7992 #include <sys/types.h>
7993 #ifdef I_UNISTD
7994 #  include <unistd.h>
7995 #endif
7996 int main()
7997 {
7998         if (getuid() == 0) {
7999                 printf("(I see you are running Configure as super-user...)\n");
8000                 setuid(1);
8001         }
8002 #ifdef TRY_BSD_PGRP
8003         if (getpgrp(1) == 0)
8004                 exit(0);
8005 #else
8006         if (getpgrp() > 0)
8007                 exit(0);
8008 #endif
8009         exit(1);
8010 }
8011 EOP
8012         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8013                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8014                 val="$define"
8015         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8016                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8017                 val="$undef"
8018         else
8019                 echo "I can't seem to compile and run the test program."
8020                 if ./usg; then
8021                         xxx="a USG one, i.e. you use getpgrp()."
8022                 else
8023                         # SVR4 systems can appear rather BSD-ish.
8024                         case "$i_unistd" in
8025                         $undef)
8026                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8027                                 val="$define"
8028                                 ;;
8029                         $define)
8030                                 xxx="probably a USG one, i.e. you use getpgrp()."
8031                                 val="$undef"
8032                                 ;;
8033                         esac
8034                 fi
8035                 echo "Assuming your getpgrp is $xxx" >&4
8036         fi
8037         ;;
8038 *) val="$undef";;
8039 esac
8040 set d_bsdgetpgrp
8041 eval $setvar
8042 $rm -f set set.c
8043
8044 : see if setpgrp exists
8045 set setpgrp d_setpgrp
8046 eval $inlibc
8047
8048 case "$d_setpgrp" in
8049 "$define")
8050         echo " "
8051         echo "Checking to see which flavor of setpgrp is in use..."
8052         $cat >set.c <<EOP
8053 #$i_unistd I_UNISTD
8054 #include <sys/types.h>
8055 #ifdef I_UNISTD
8056 #  include <unistd.h>
8057 #endif
8058 int main()
8059 {
8060         if (getuid() == 0) {
8061                 printf("(I see you are running Configure as super-user...)\n");
8062                 setuid(1);
8063         }
8064 #ifdef TRY_BSD_PGRP
8065         if (-1 == setpgrp(1, 1))
8066                 exit(0);
8067 #else
8068         if (setpgrp() != -1)
8069                 exit(0);
8070 #endif
8071         exit(1);
8072 }
8073 EOP
8074         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8075                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8076                 val="$define"
8077         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8078                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8079                 val="$undef"
8080         else
8081                 echo "(I can't seem to compile and run the test program.)"
8082                 if ./usg; then
8083                         xxx="a USG one, i.e. you use setpgrp()."
8084                 else
8085                         # SVR4 systems can appear rather BSD-ish.
8086                         case "$i_unistd" in
8087                         $undef)
8088                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8089                                 val="$define"
8090                                 ;;
8091                         $define)
8092                                 xxx="probably a USG one, i.e. you use setpgrp()."
8093                                 val="$undef"
8094                                 ;;
8095                         esac
8096                 fi
8097                 echo "Assuming your setpgrp is $xxx" >&4
8098         fi
8099         ;;
8100 *) val="$undef";;
8101 esac
8102 set d_bsdsetpgrp
8103 eval $setvar
8104 $rm -f set set.c
8105 : see if bzero exists
8106 set bzero d_bzero
8107 eval $inlibc
8108
8109 : see if signal is declared as pointer to function returning int or void
8110 echo " "
8111 xxx=`./findhdr signal.h`
8112 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8113 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8114         echo "You have int (*signal())() instead of void." >&4
8115         val="$undef"
8116 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8117         echo "You have void (*signal())()." >&4
8118         val="$define"
8119 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8120         echo "You have int (*signal())() instead of void." >&4
8121         val="$undef"
8122 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8123         echo "You have void (*signal())()." >&4
8124         val="$define"
8125 else
8126         case "$d_voidsig" in
8127         '')
8128         echo "I can't determine whether signal handler returns void or int..." >&4
8129                 dflt=void
8130                 rp="What type does your signal handler return?"
8131                 . ./myread
8132                 case "$ans" in
8133                 v*) val="$define";;
8134                 *) val="$undef";;
8135                 esac;;
8136         "$define")
8137                 echo "As you already told me, signal handler returns void." >&4
8138                 val="$define"
8139                 ;;
8140         *)      echo "As you already told me, signal handler returns int." >&4
8141                 val="$undef"
8142                 ;;
8143         esac
8144 fi
8145 set d_voidsig
8146 eval $setvar
8147 case "$d_voidsig" in
8148 "$define") signal_t="void";;
8149 *) signal_t="int";;
8150 esac
8151 $rm -f $$.tmp
8152
8153 : check for ability to cast large floats to 32-bit ints.
8154 echo " "
8155 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8156 if $test "$intsize" -ge 4; then
8157         xxx=int
8158 else
8159         xxx=long
8160 fi
8161 $cat >try.c <<EOCP
8162 #include <stdio.h>
8163 #include <sys/types.h>
8164 #include <signal.h>
8165 $signal_t blech(s) int s; { exit(3); }
8166 int main()
8167 {
8168         $xxx i32;
8169         double f, g;
8170         int result = 0;
8171         char str[16];
8172         signal(SIGFPE, blech);
8173
8174         /* Don't let compiler optimize the test away.  Store the number 
8175            in a writable string for gcc to pass to sscanf under HP/UX.
8176         */
8177         sprintf(str, "2147483647");
8178         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8179         g = 10 * f;
8180         i32  = ($xxx) g;
8181
8182         /* x86 processors will probably give 0x8000 0000, which is a
8183        sign change.  We don't want that.  We want to mimic SPARC
8184            behavior here, which is to preserve the sign and give
8185            back 0x7fff ffff.
8186         */
8187         if (i32 != ($xxx) f)
8188                 result |= 1;
8189         exit(result);
8190 }
8191 EOCP
8192 set try
8193 if eval $compile_ok; then
8194         ./try
8195         yyy=$?
8196 else
8197         echo "(I can't seem to compile the test program--assuming it can't)"
8198         yyy=1
8199 fi
8200 case "$yyy" in
8201 0)      val="$define"
8202         echo "Yup, it can."
8203         ;;
8204 *)      val="$undef"
8205         echo "Nope, it can't."
8206         ;;
8207 esac
8208 set d_casti32
8209 eval $setvar
8210 $rm -f try try.*
8211
8212 : check for ability to cast negative floats to unsigned
8213 echo " "
8214 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8215 $cat >try.c <<EOCP
8216 #include <stdio.h>
8217 #include <sys/types.h>
8218 #include <signal.h>
8219 $signal_t blech(s) int s; { exit(7); }
8220 $signal_t blech_in_list(s) int s; { exit(4); }
8221 unsigned long dummy_long(p) unsigned long p; { return p; }
8222 unsigned int dummy_int(p) unsigned int p; { return p; }
8223 unsigned short dummy_short(p) unsigned short p; { return p; }
8224 int main()
8225 {
8226         double f;
8227         unsigned long along;
8228         unsigned int aint;
8229         unsigned short ashort;
8230         int result = 0;
8231         char str[16];
8232         
8233         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8234            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8235            optimized the whole file away
8236         */
8237         /* Store the number in a writable string for gcc to pass to 
8238            sscanf under HP/UX.
8239         */
8240         sprintf(str, "-123");
8241         sscanf(str, "%lf", &f);  /* f = -123.; */
8242
8243         signal(SIGFPE, blech);
8244         along = (unsigned long)f;
8245         aint = (unsigned int)f;
8246         ashort = (unsigned short)f;
8247         if (along != (unsigned long)-123)
8248                 result |= 1;
8249         if (aint != (unsigned int)-123)
8250                 result |= 1;
8251         if (ashort != (unsigned short)-123)
8252                 result |= 1;
8253         sprintf(str, "1073741824.");
8254         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8255         f = f + f;
8256         along = 0;
8257         along = (unsigned long)f;
8258         if (along != 0x80000000)
8259                 result |= 2;
8260         f -= 1.;
8261         along = 0;
8262         along = (unsigned long)f;
8263         if (along != 0x7fffffff)
8264                 result |= 1;
8265         f += 2.;
8266         along = 0;
8267         along = (unsigned long)f;
8268         if (along != 0x80000001)
8269                 result |= 2;
8270         if (result)
8271                 exit(result);
8272         signal(SIGFPE, blech_in_list);
8273         sprintf(str, "123.");
8274         sscanf(str, "%lf", &f);  /* f = 123.; */
8275         along = dummy_long((unsigned long)f);
8276         aint = dummy_int((unsigned int)f);
8277         ashort = dummy_short((unsigned short)f);
8278         if (along != (unsigned long)123)
8279                 result |= 4;
8280         if (aint != (unsigned int)123)
8281                 result |= 4;
8282         if (ashort != (unsigned short)123)
8283                 result |= 4;
8284         exit(result);
8285
8286 }
8287 EOCP
8288 set try
8289 if eval $compile_ok; then
8290         ./try
8291         castflags=$?
8292 else
8293         echo "(I can't seem to compile the test program--assuming it can't)"
8294         castflags=7
8295 fi
8296 case "$castflags" in
8297 0)      val="$define"
8298         echo "Yup, it can."
8299         ;;
8300 *)      val="$undef"
8301         echo "Nope, it can't."
8302         ;;
8303 esac
8304 set d_castneg
8305 eval $setvar
8306 $rm -f try.*
8307
8308 : see if vprintf exists
8309 echo " "
8310 if set vprintf val -f d_vprintf; eval $csym; $val; then
8311         echo 'vprintf() found.' >&4
8312         val="$define"
8313         $cat >vprintf.c <<'EOF'
8314 #include <varargs.h>
8315
8316 int main() { xxx("foo"); }
8317
8318 xxx(va_alist)
8319 va_dcl
8320 {
8321         va_list args;
8322         char buf[10];
8323
8324         va_start(args);
8325         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8326 }
8327 EOF
8328         set vprintf
8329         if eval $compile && ./vprintf; then
8330                 echo "Your vsprintf() returns (int)." >&4
8331                 val2="$undef"
8332         else
8333                 echo "Your vsprintf() returns (char*)." >&4
8334                 val2="$define"
8335         fi
8336 else
8337         echo 'vprintf() NOT found.' >&4
8338                 val="$undef"
8339                 val2="$undef"
8340 fi
8341 set d_vprintf
8342 eval $setvar
8343 val=$val2
8344 set d_charvspr
8345 eval $setvar
8346
8347 : see if chown exists
8348 set chown d_chown
8349 eval $inlibc
8350
8351 : see if chroot exists
8352 set chroot d_chroot
8353 eval $inlibc
8354
8355 : see if chsize exists
8356 set chsize d_chsize
8357 eval $inlibc
8358
8359 : check for const keyword
8360 echo " "
8361 echo 'Checking to see if your C compiler knows about "const"...' >&4
8362 $cat >const.c <<'EOCP'
8363 typedef struct spug { int drokk; } spug;
8364 int main()
8365 {
8366         const char *foo;
8367         const spug y;
8368 }
8369 EOCP
8370 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8371         val="$define"
8372         echo "Yup, it does."
8373 else
8374         val="$undef"
8375         echo "Nope, it doesn't."
8376 fi
8377 set d_const
8378 eval $setvar
8379
8380 : see if crypt exists
8381 echo " "
8382 if set crypt val -f d_crypt; eval $csym; $val; then
8383         echo 'crypt() found.' >&4
8384         val="$define"
8385         cryptlib=''
8386 else
8387         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8388         if $test -z "$cryptlib"; then
8389                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8390         else
8391                 cryptlib=-lcrypt
8392         fi
8393         if $test -z "$cryptlib"; then
8394                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8395         else
8396                 cryptlib=-lcrypt
8397         fi
8398         if $test -z "$cryptlib"; then
8399                 cryptlib=`./loc libcrypt$_a "" $libpth`
8400         else
8401                 cryptlib=-lcrypt
8402         fi
8403         if $test -z "$cryptlib"; then
8404                 echo 'crypt() NOT found.' >&4
8405                 val="$undef"
8406         else
8407                 val="$define"
8408         fi
8409 fi
8410 set d_crypt
8411 eval $setvar
8412
8413 : get csh whereabouts
8414 case "$csh" in
8415 'csh') val="$undef" ;;
8416 *) val="$define" ;;
8417 esac
8418 set d_csh
8419 eval $setvar
8420 : Respect a hint or command line value for full_csh.
8421 case "$full_csh" in
8422 '') full_csh=$csh ;;
8423 esac
8424
8425 : see if cuserid exists
8426 set cuserid d_cuserid
8427 eval $inlibc
8428
8429 : see if this is a limits.h system
8430 set limits.h i_limits
8431 eval $inhdr
8432
8433 : see if this is a float.h system
8434 set float.h i_float
8435 eval $inhdr
8436
8437 : See if number of significant digits in a double precision number is known
8438 echo " "
8439 $cat >dbl_dig.c <<EOM
8440 #$i_limits I_LIMITS
8441 #$i_float I_FLOAT
8442 #ifdef I_LIMITS
8443 #include <limits.h>
8444 #endif
8445 #ifdef I_FLOAT
8446 #include <float.h>
8447 #endif
8448 #ifdef DBL_DIG
8449 printf("Contains DBL_DIG");
8450 #endif
8451 EOM
8452 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8453 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8454         echo "DBL_DIG found." >&4
8455         val="$define"
8456 else
8457         echo "DBL_DIG NOT found." >&4
8458         val="$undef"
8459 fi
8460 $rm -f dbl_dig.?
8461 set d_dbl_dig
8462 eval $setvar
8463
8464 : see if difftime exists
8465 set difftime d_difftime
8466 eval $inlibc
8467
8468 : see if this is a dirent system
8469 echo " "
8470 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8471         val="$define"
8472         echo "<dirent.h> found." >&4
8473 else
8474         val="$undef"
8475         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8476                 echo "<sys/dir.h> found." >&4
8477                 echo " "
8478         else
8479                 xinc=`./findhdr sys/ndir.h`
8480         fi
8481         echo "<dirent.h> NOT found." >&4
8482 fi
8483 set i_dirent
8484 eval $setvar
8485
8486 : Look for type of directory structure.
8487 echo " "
8488 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8489
8490 case "$direntrytype" in
8491 ''|' ')
8492         case "$i_dirent" in
8493         $define) guess1='struct dirent' ;;
8494         *) guess1='struct direct'  ;;
8495         esac
8496         ;;
8497 *)      guess1="$direntrytype"
8498         ;;
8499 esac
8500
8501 case "$guess1" in
8502 'struct dirent') guess2='struct direct' ;;
8503 *) guess2='struct dirent' ;;
8504 esac
8505                 
8506 if $contains "$guess1" try.c >/dev/null 2>&1; then
8507         direntrytype="$guess1"
8508         echo "Your directory entries are $direntrytype." >&4
8509 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8510         direntrytype="$guess2"
8511         echo "Your directory entries seem to be $direntrytype." >&4
8512 else
8513         echo "I don't recognize your system's directory entries." >&4
8514         rp="What type is used for directory entries on this system?"
8515         dflt="$guess1"
8516         . ./myread
8517         direntrytype="$ans"
8518 fi
8519 $rm -f try.c
8520
8521
8522 : see if the directory entry stores field length
8523 echo " "
8524 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8525 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8526         echo "Good, your directory entry keeps length information in d_namlen." >&4
8527         val="$define"
8528 else
8529         echo "Your directory entry does not know about the d_namlen field." >&4
8530         val="$undef"
8531 fi
8532 set d_dirnamlen
8533 eval $setvar
8534 $rm -f try.c
8535
8536 : see if dlerror exists
8537 xxx_runnm="$runnm"
8538 runnm=false
8539 set dlerror d_dlerror
8540 eval $inlibc
8541 runnm="$xxx_runnm"
8542
8543 : see if dlfcn is available
8544 set dlfcn.h i_dlfcn
8545 eval $inhdr
8546
8547 case "$usedl" in
8548 $define|y|true)
8549         $cat << EOM
8550
8551 On a few systems, the dynamically loaded modules that perl generates and uses
8552 will need a different extension than shared libs. The default will probably
8553 be appropriate.
8554
8555 EOM
8556         case "$dlext" in
8557         '')     dflt="$so" ;;
8558         *)      dflt="$dlext" ;;
8559         esac
8560         rp='What is the extension of dynamically loaded modules'
8561         . ./myread
8562         dlext="$ans"
8563         ;;
8564 *)
8565         dlext="none"
8566         ;;
8567 esac
8568
8569 : Check if dlsym need a leading underscore
8570 echo " "
8571 val="$undef"
8572
8573 case "$dlsrc" in
8574 dl_dlopen.xs)
8575         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8576         $cat >dyna.c <<'EOM'
8577 fred () { }
8578 EOM
8579
8580 $cat >fred.c<<EOM
8581
8582 #include <stdio.h>
8583 #$i_dlfcn I_DLFCN
8584 #ifdef I_DLFCN
8585 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8586 #else
8587 #include <sys/types.h>
8588 #include <nlist.h>
8589 #include <link.h>
8590 #endif
8591
8592 extern int fred() ;
8593
8594 int main()
8595 {
8596     void * handle ;
8597     void * symbol ;
8598 #ifndef RTLD_LAZY
8599     int mode = 1 ;
8600 #else
8601     int mode = RTLD_LAZY ;
8602 #endif
8603     handle = dlopen("./dyna.$dlext", mode) ;
8604     if (handle == NULL) {
8605         printf ("1\n") ;
8606         fflush (stdout) ;
8607         exit(0);
8608     }
8609     symbol = dlsym(handle, "fred") ;
8610     if (symbol == NULL) {
8611         /* try putting a leading underscore */
8612         symbol = dlsym(handle, "_fred") ;
8613         if (symbol == NULL) {
8614             printf ("2\n") ;
8615             fflush (stdout) ;
8616             exit(0);
8617         }
8618         printf ("3\n") ;
8619     }
8620     else
8621         printf ("4\n") ;
8622     fflush (stdout) ;
8623     exit(0);
8624 }
8625 EOM
8626         : Call the object file tmp-dyna.o in case dlext=o.
8627         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8628                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8629                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8630                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8631                 xxx=`./fred`
8632                 case $xxx in
8633                 1)      echo "Test program failed using dlopen." >&4
8634                         echo "Perhaps you should not use dynamic loading." >&4;;
8635                 2)      echo "Test program failed using dlsym." >&4
8636                         echo "Perhaps you should not use dynamic loading." >&4;;
8637                 3)      echo "dlsym needs a leading underscore" >&4
8638                         val="$define" ;;
8639                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8640                 esac
8641         else
8642                 echo "I can't compile and run the test program." >&4
8643                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8644         fi
8645         ;;
8646 esac
8647                 
8648 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8649
8650 set d_dlsymun
8651 eval $setvar
8652
8653 hasproto='varname=$1; func=$2; shift; shift;
8654 while $test $# -ge 2; do
8655         case "$1" in
8656         $define) echo "#include <$2>";;
8657         esac ;
8658     shift 2;
8659 done > try.c;
8660 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8661 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8662         echo "$func() prototype found.";
8663         val="$define";
8664 else
8665         echo "$func() prototype NOT found.";
8666         val="$undef";
8667 fi;
8668 set $varname;
8669 eval $setvar;
8670 $rm -f try.c tryout.c'
8671
8672 : see if prototype for drand48 is available
8673 echo " "
8674 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8675 eval $hasproto
8676
8677 : see if dup2 exists
8678 set dup2 d_dup2
8679 eval $inlibc
8680
8681 : see if eaccess exists
8682 set eaccess d_eaccess
8683 eval $inlibc
8684
8685 : see if endgrent exists
8686 set endgrent d_endgrent
8687 eval $inlibc
8688
8689 : see if endhostent exists
8690 set endhostent d_endhent
8691 eval $inlibc
8692
8693 : see if endnetent exists
8694 set endnetent d_endnent
8695 eval $inlibc
8696
8697 : see if endprotoent exists
8698 set endprotoent d_endpent
8699 eval $inlibc
8700
8701 : see if endpwent exists
8702 set endpwent d_endpwent
8703 eval $inlibc
8704
8705 : see if endservent exists
8706 set endservent d_endsent
8707 eval $inlibc
8708
8709 : Locate the flags for 'open()'
8710 echo " "
8711 $cat >open3.c <<'EOCP'
8712 #include <sys/types.h>
8713 #ifdef I_FCNTL
8714 #include <fcntl.h>
8715 #endif
8716 #ifdef I_SYS_FILE
8717 #include <sys/file.h>
8718 #endif
8719 int main() {
8720         if(O_RDONLY);
8721 #ifdef O_TRUNC
8722         exit(0);
8723 #else
8724         exit(1);
8725 #endif
8726 }
8727 EOCP
8728 : check sys/file.h first to get FREAD on Sun
8729 if $test `./findhdr sys/file.h` && \
8730                 set open3 -DI_SYS_FILE && eval $compile; then
8731         h_sysfile=true;
8732         echo "<sys/file.h> defines the O_* constants..." >&4
8733         if ./open3; then
8734                 echo "and you have the 3 argument form of open()." >&4
8735                 val="$define"
8736         else
8737                 echo "but not the 3 argument form of open().  Oh, well." >&4
8738                 val="$undef"
8739         fi
8740 elif $test `./findhdr fcntl.h` && \
8741                 set open3 -DI_FCNTL && eval $compile; then
8742         h_fcntl=true;
8743         echo "<fcntl.h> defines the O_* constants..." >&4
8744         if ./open3; then
8745                 echo "and you have the 3 argument form of open()." >&4
8746                 val="$define"
8747         else
8748                 echo "but not the 3 argument form of open().  Oh, well." >&4
8749                 val="$undef"
8750         fi
8751 else
8752         val="$undef"
8753         echo "I can't find the O_* constant definitions!  You got problems." >&4
8754 fi
8755 set d_open3
8756 eval $setvar
8757 $rm -f open3*
8758
8759 : see which of string.h or strings.h is needed
8760 echo " "
8761 strings=`./findhdr string.h`
8762 if $test "$strings" && $test -r "$strings"; then
8763         echo "Using <string.h> instead of <strings.h>." >&4
8764         val="$define"
8765 else
8766         val="$undef"
8767         strings=`./findhdr strings.h`
8768         if $test "$strings" && $test -r "$strings"; then
8769                 echo "Using <strings.h> instead of <string.h>." >&4
8770         else
8771                 echo "No string header found -- You'll surely have problems." >&4
8772         fi
8773 fi
8774 set i_string
8775 eval $setvar
8776 case "$i_string" in
8777 "$undef") strings=`./findhdr strings.h`;;
8778 *)        strings=`./findhdr string.h`;;
8779 esac
8780
8781 : check for non-blocking I/O stuff
8782 case "$h_sysfile" in
8783 true) echo "#include <sys/file.h>" > head.c;;
8784 *)
8785         case "$h_fcntl" in
8786         true) echo "#include <fcntl.h>" > head.c;;
8787         *) echo "#include <sys/fcntl.h>" > head.c;;
8788         esac
8789         ;;
8790 esac
8791 echo " "
8792 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8793 case "$o_nonblock" in
8794 '')
8795         $cat head.c > try.c
8796         $cat >>try.c <<'EOCP'
8797 #include <stdio.h>
8798 int main() {
8799 #ifdef O_NONBLOCK
8800         printf("O_NONBLOCK\n");
8801         exit(0);
8802 #endif
8803 #ifdef O_NDELAY
8804         printf("O_NDELAY\n");
8805         exit(0);
8806 #endif
8807 #ifdef FNDELAY
8808         printf("FNDELAY\n");
8809         exit(0);
8810 #endif
8811         exit(0);
8812 }
8813 EOCP
8814         set try
8815         if eval $compile_ok; then
8816                 o_nonblock=`./try`
8817                 case "$o_nonblock" in
8818                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8819                 *) echo "Seems like we can use $o_nonblock.";;
8820                 esac
8821         else
8822                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8823         fi
8824         ;;
8825 *) echo "Using $hint value $o_nonblock.";;
8826 esac
8827 $rm -f try try.* .out core
8828
8829 echo " "
8830 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8831 case "$eagain" in
8832 '')
8833         $cat head.c > try.c
8834         $cat >>try.c <<EOCP
8835 #include <errno.h>
8836 #include <sys/types.h>
8837 #include <signal.h>
8838 #include <stdio.h> 
8839 #define MY_O_NONBLOCK $o_nonblock
8840 #ifndef errno  /* XXX need better Configure test */
8841 extern int errno;
8842 #endif
8843 #$i_unistd I_UNISTD
8844 #ifdef I_UNISTD
8845 #include <unistd.h>
8846 #endif
8847 #$i_string I_STRING
8848 #ifdef I_STRING
8849 #include <string.h>
8850 #else
8851 #include <strings.h>
8852 #endif
8853 $signal_t blech(x) int x; { exit(3); }
8854 EOCP
8855         $cat >> try.c <<'EOCP'
8856 int main()
8857 {
8858         int pd[2];
8859         int pu[2];
8860         char buf[1];
8861         char string[100];
8862
8863         pipe(pd);       /* Down: child -> parent */
8864         pipe(pu);       /* Up: parent -> child */
8865         if (0 != fork()) {
8866                 int ret;
8867                 close(pd[1]);   /* Parent reads from pd[0] */
8868                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8869                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8870                         exit(1);
8871                 signal(SIGALRM, blech);
8872                 alarm(5);
8873                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8874                         exit(2);
8875                 sprintf(string, "%d\n", ret);
8876                 write(2, string, strlen(string));
8877                 alarm(0);
8878 #ifdef EAGAIN
8879                 if (errno == EAGAIN) {
8880                         printf("EAGAIN\n");
8881                         goto ok;
8882                 }
8883 #endif
8884 #ifdef EWOULDBLOCK
8885                 if (errno == EWOULDBLOCK)
8886                         printf("EWOULDBLOCK\n");
8887 #endif
8888         ok:
8889                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8890                 sleep(2);                               /* Give it time to close our pipe */
8891                 alarm(5);
8892                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8893                 alarm(0);
8894                 sprintf(string, "%d\n", ret);
8895                 write(3, string, strlen(string));
8896                 exit(0);
8897         }
8898
8899         close(pd[0]);                   /* We write to pd[1] */
8900         close(pu[1]);                   /* We read from pu[0] */
8901         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8902         close(pd[1]);                   /* Pipe pd is now fully closed! */
8903         exit(0);                                /* Bye bye, thank you for playing! */
8904 }
8905 EOCP
8906         set try
8907         if eval $compile_ok; then
8908                 echo "$startsh" >mtry
8909                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8910                 chmod +x mtry
8911                 ./mtry >/dev/null 2>&1
8912                 case $? in
8913                 0) eagain=`$cat try.out`;;
8914                 1) echo "Could not perform non-blocking setting!";;
8915                 2) echo "I did a successful read() for something that was not there!";;
8916                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8917                 *) echo "Something terribly wrong happened during testing.";;
8918                 esac
8919                 rd_nodata=`$cat try.ret`
8920                 echo "A read() system call with no data present returns $rd_nodata."
8921                 case "$rd_nodata" in
8922                 0|-1) ;;
8923                 *)
8924                         echo "(That's peculiar, fixing that to be -1.)"
8925                         rd_nodata=-1
8926                         ;;
8927                 esac
8928                 case "$eagain" in
8929                 '')
8930                         echo "Forcing errno EAGAIN on read() with no data available."
8931                         eagain=EAGAIN
8932                         ;;
8933                 *)
8934                         echo "Your read() sets errno to $eagain when no data is available."
8935                         ;;
8936                 esac
8937                 status=`$cat try.err`
8938                 case "$status" in
8939                 0) echo "And it correctly returns 0 to signal EOF.";;
8940                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8941                 *) echo "However, your read() returns '$status' on EOF??";;
8942                 esac
8943                 val="$define"
8944                 if test "$status" = "$rd_nodata"; then
8945                         echo "WARNING: you can't distinguish between EOF and no data!"
8946                         val="$undef"
8947                 fi
8948         else
8949                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8950                 eagain=EAGAIN
8951         fi
8952         set d_eofnblk
8953         eval $setvar
8954         ;;
8955 *)
8956         echo "Using $hint value $eagain."
8957         echo "Your read() returns $rd_nodata when no data is present."
8958         case "$d_eofnblk" in
8959         "$define") echo "And you can see EOF because read() returns 0.";;
8960         "$undef") echo "But you can't see EOF status from read() returned value.";;
8961         *)
8962                 echo "(Assuming you can't see EOF status from read anyway.)"
8963                 d_eofnblk=$undef
8964                 ;;
8965         esac
8966         ;;
8967 esac
8968 $rm -f try try.* .out core head.c mtry
8969
8970 : see if fchmod exists
8971 set fchmod d_fchmod
8972 eval $inlibc
8973
8974 : see if fchown exists
8975 set fchown d_fchown
8976 eval $inlibc
8977
8978 : see if this is an fcntl system
8979 set fcntl d_fcntl
8980 eval $inlibc
8981
8982 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8983 while $test $# -ge 2; do
8984         case "$1" in
8985         $define) echo "#include <$2>";;
8986         esac ;
8987     shift 2;
8988 done > try.c;
8989 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8990 set try;
8991 if eval $compile; then
8992         val="$define";
8993 else
8994         val="$undef";
8995 fi;
8996 set $varname;
8997 eval $setvar;
8998 $rm -f try.c try.o'
8999
9000 socketlib=''
9001 sockethdr=''
9002 : see whether socket exists
9003 echo " "
9004 $echo $n "Hmm... $c" >&4
9005 if set socket val -f d_socket; eval $csym; $val; then
9006         echo "Looks like you have Berkeley networking support." >&4
9007         d_socket="$define"
9008         if set setsockopt val -f; eval $csym; $val; then
9009                 d_oldsock="$undef"
9010         else
9011                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9012                 d_oldsock="$define"
9013         fi
9014 else
9015         if $contains socklib libc.list >/dev/null 2>&1; then
9016                 echo "Looks like you have Berkeley networking support." >&4
9017                 d_socket="$define"
9018                 : we will have to assume that it supports the 4.2 BSD interface
9019                 d_oldsock="$undef"
9020         else
9021                 echo "You don't have Berkeley networking in libc$_a..." >&4
9022                 if test "X$d_socket" = "X$define"; then
9023                    echo "...but you seem to believe that you have sockets." >&4
9024                 else
9025                         for net in net socket
9026                         do
9027                                 if test -f /usr/lib/lib$net$_a; then
9028                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9029                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9030                                         if $contains socket libc.list >/dev/null 2>&1; then
9031                                                 d_socket="$define"
9032                                                 socketlib="-l$net"
9033                                                 case "$net" in
9034                                                 net)
9035                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9036                                                         sockethdr="-I/usr/netinclude"
9037                                                         ;;
9038                                                 esac
9039                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9040                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9041                                                         d_oldsock="$undef"
9042                                                 else
9043                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9044                                                         d_oldsock="$define"
9045                                                 fi
9046                                                 break
9047                                         fi
9048                                 fi
9049                         done
9050                         if test "X$d_socket" != "X$define"; then
9051                            echo "or anywhere else I see." >&4
9052                            d_socket="$undef"
9053                            d_oldsock="$undef"
9054                         fi
9055                 fi
9056         fi
9057 fi
9058
9059 : see if socketpair exists
9060 set socketpair d_sockpair
9061 eval $inlibc
9062
9063
9064 echo " "
9065 echo "Checking the availability of certain socket constants..." >& 4
9066 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9067         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9068         $cat >try.c <<EOF
9069 #include <sys/types.h>
9070 #include <sys/socket.h>
9071 int main() {
9072     int i = $ENUM;
9073 }
9074 EOF
9075         val="$undef"
9076         set try; if eval $compile; then
9077                 val="$define"
9078         fi
9079         set d_${enum}; eval $setvar
9080         $rm -f try.c try
9081 done
9082
9083 : see if sys/select.h has to be included
9084 set sys/select.h i_sysselct
9085 eval $inhdr
9086
9087 : see if we should include time.h, sys/time.h, or both
9088 echo " "
9089 if test "X$timeincl" = X; then
9090         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9091         $echo $n "I'm now running the test program...$c"
9092         $cat >try.c <<'EOCP'
9093 #include <sys/types.h>
9094 #ifdef I_TIME
9095 #include <time.h>
9096 #endif
9097 #ifdef I_SYSTIME
9098 #ifdef SYSTIMEKERNEL
9099 #define KERNEL
9100 #endif
9101 #include <sys/time.h>
9102 #endif
9103 #ifdef I_SYSSELECT
9104 #include <sys/select.h>
9105 #endif
9106 int main()
9107 {
9108         struct tm foo;
9109 #ifdef S_TIMEVAL
9110         struct timeval bar;
9111 #endif
9112 #ifdef S_TIMEZONE
9113         struct timezone tzp;
9114 #endif
9115         if (foo.tm_sec == foo.tm_sec)
9116                 exit(0);
9117 #ifdef S_TIMEVAL
9118         if (bar.tv_sec == bar.tv_sec)
9119                 exit(0);
9120 #endif
9121         exit(1);
9122 }
9123 EOCP
9124         flags=''
9125         for s_timezone in '-DS_TIMEZONE' ''; do
9126         sysselect=''
9127         for s_timeval in '-DS_TIMEVAL' ''; do
9128         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9129         for i_time in '' '-DI_TIME'; do
9130         for i_systime in '-DI_SYSTIME' ''; do
9131                 case "$flags" in
9132                 '') $echo $n ".$c"
9133                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9134                         if eval $compile; then
9135                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9136                                 shift
9137                                 flags="$*"
9138                                 echo " "
9139                                 $echo $n "Succeeded with $flags$c"
9140                         fi
9141                         ;;
9142                 esac
9143         done
9144         done
9145         done
9146         done
9147         done
9148         timeincl=''
9149         echo " "
9150         case "$flags" in
9151         *SYSTIMEKERNEL*) i_systimek="$define"
9152                 timeincl=`./findhdr sys/time.h`
9153                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9154         *) i_systimek="$undef";;
9155         esac
9156         case "$flags" in
9157         *I_TIME*) i_time="$define"
9158                 timeincl=`./findhdr time.h`" $timeincl"
9159                 echo "We'll include <time.h>." >&4;;
9160         *) i_time="$undef";;
9161         esac
9162         case "$flags" in
9163         *I_SYSTIME*) i_systime="$define"
9164                 timeincl=`./findhdr sys/time.h`" $timeincl"
9165                 echo "We'll include <sys/time.h>." >&4;;
9166         *) i_systime="$undef";;
9167         esac
9168         $rm -f try.c try
9169 fi
9170
9171 : check for fd_set items
9172 $cat <<EOM
9173
9174 Checking to see how well your C compiler handles fd_set and friends ...
9175 EOM
9176 $cat >fd_set.c <<EOCP
9177 #$i_systime I_SYS_TIME
9178 #$i_sysselct I_SYS_SELECT
9179 #$d_socket HAS_SOCKET
9180 #include <sys/types.h>
9181 #ifdef HAS_SOCKET
9182 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9183 #endif
9184 #ifdef I_SYS_TIME
9185 #include <sys/time.h>
9186 #endif
9187 #ifdef I_SYS_SELECT
9188 #include <sys/select.h>
9189 #endif
9190 int main() {
9191         fd_set fds;
9192
9193 #ifdef TRYBITS
9194         if(fds.fds_bits);
9195 #endif
9196
9197 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9198         exit(0);
9199 #else
9200         exit(1);
9201 #endif
9202 }
9203 EOCP
9204 set fd_set -DTRYBITS
9205 if eval $compile; then
9206         d_fds_bits="$define"
9207         d_fd_set="$define"
9208         echo "Well, your system knows about the normal fd_set typedef..." >&4
9209         if ./fd_set; then
9210                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9211                 d_fd_macros="$define"
9212         else
9213                 $cat >&4 <<'EOM'
9214 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9215 EOM
9216                 d_fd_macros="$undef"
9217         fi
9218 else
9219         $cat <<'EOM'
9220 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9221 EOM
9222         set fd_set
9223         if eval $compile; then
9224                 d_fds_bits="$undef"
9225                 d_fd_set="$define"
9226                 echo "Well, your system has some sort of fd_set available..." >&4
9227                 if ./fd_set; then
9228                         echo "and you have the normal fd_set macros." >&4
9229                         d_fd_macros="$define"
9230                 else
9231                         $cat <<'EOM'
9232 but not the normal fd_set macros!  Gross!  More work for me...
9233 EOM
9234                         d_fd_macros="$undef"
9235                 fi
9236         else
9237         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9238                 d_fd_set="$undef"
9239                 d_fds_bits="$undef"
9240                 d_fd_macros="$undef"
9241         fi
9242 fi
9243 $rm -f fd_set*
9244
9245 : see if fgetpos exists
9246 set fgetpos d_fgetpos
9247 eval $inlibc
9248
9249 : see if flock exists
9250 set flock d_flock
9251 eval $inlibc
9252
9253 : see if fork exists
9254 set fork d_fork
9255 eval $inlibc
9256
9257 : see if pathconf exists
9258 set pathconf d_pathconf
9259 eval $inlibc
9260
9261 : see if fpathconf exists
9262 set fpathconf d_fpathconf
9263 eval $inlibc
9264
9265
9266 : check for fpos64_t
9267 echo " "
9268 echo "Checking to see if you have fpos64_t..." >&4
9269 $cat >try.c <<EOCP
9270 #include <stdio.h>
9271 int main() { fpos64_t x = 7; }
9272 EOCP
9273 set try
9274 if eval $compile; then
9275         val="$define"
9276         echo "You have fpos64_t."
9277 else
9278         val="$undef"
9279         echo "You do not have fpos64_t."
9280         case "$fpossize" in
9281         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9282         esac
9283 fi
9284 $rm -f try.* try
9285 set d_fpos64_t
9286 eval $setvar
9287
9288 : see if frexpl exists
9289 set frexpl d_frexpl
9290 eval $inlibc
9291
9292 hasstruct='varname=$1; struct=$2; shift; shift;
9293 while $test $# -ge 2; do
9294         case "$1" in
9295         $define) echo "#include <$2>";;
9296         esac ;
9297     shift 2;
9298 done > try.c;
9299 echo "int main () { struct $struct foo; }" >> try.c;
9300 set try;
9301 if eval $compile; then
9302         val="$define";
9303 else
9304         val="$undef";
9305 fi;
9306 set $varname;
9307 eval $setvar;
9308 $rm -f try.c try.o'
9309
9310 : see if this is a sys/param system
9311 set sys/param.h i_sysparam
9312 eval $inhdr
9313
9314 : see if this is a sys/mount.h system
9315 set sys/mount.h i_sysmount
9316 eval $inhdr
9317
9318 : see if sys/types.h has to be included
9319 set sys/types.h i_systypes
9320 eval $inhdr
9321
9322
9323 echo " "
9324 echo "Checking to see if your system supports struct fs_data..." >&4
9325 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9326 eval $hasstruct
9327 case "$d_fs_data_s" in
9328 "$define")      echo "Yes, it does."   ;;
9329 *)              echo "No, it doesn't." ;;
9330 esac
9331
9332 : see if fseeko exists
9333 set fseeko d_fseeko
9334 eval $inlibc
9335 case "$longsize" in
9336 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9337 esac
9338
9339 : see if fsetpos exists
9340 set fsetpos d_fsetpos
9341 eval $inlibc
9342
9343
9344 : see if fstatfs exists
9345 set fstatfs d_fstatfs
9346 eval $inlibc
9347
9348
9349 : see if statvfs exists
9350 set statvfs d_statvfs
9351 eval $inlibc
9352
9353 : see if fstatvfs exists
9354 set fstatvfs d_fstatvfs
9355 eval $inlibc
9356
9357
9358 : see if ftello exists
9359 set ftello d_ftello
9360 eval $inlibc
9361 case "$longsize" in
9362 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9363 esac
9364
9365 : see if getcwd exists
9366 set getcwd d_getcwd
9367 eval $inlibc
9368
9369 : see if getespwnam exists
9370 set getespwnam d_getespwnam
9371 eval $inlibc
9372
9373
9374 : see if getfsstat exists
9375 set getfsstat d_getfsstat
9376 eval $inlibc
9377
9378 : see if getgrent exists
9379 set getgrent d_getgrent
9380 eval $inlibc
9381
9382 : see if gethostbyaddr exists
9383 set gethostbyaddr d_gethbyaddr
9384 eval $inlibc
9385
9386 : see if gethostbyname exists
9387 set gethostbyname d_gethbyname
9388 eval $inlibc
9389
9390 : see if gethostent exists
9391 set gethostent d_gethent
9392 eval $inlibc
9393
9394 : see how we will look up host name
9395 echo " "
9396 call=''
9397 if set gethostname val -f d_gethname; eval $csym; $val; then
9398         echo 'gethostname() found.' >&4
9399         d_gethname="$define"
9400         call=gethostname
9401 fi
9402 if set uname val -f d_uname; eval $csym; $val; then
9403         if ./xenix; then
9404                 $cat <<'EOM'
9405 uname() was found, but you're running xenix, and older versions of xenix
9406 have a broken uname(). If you don't really know whether your xenix is old
9407 enough to have a broken system call, use the default answer.
9408
9409 EOM
9410                 dflt=y
9411                 case "$d_uname" in
9412                 "$define") dflt=n;;
9413                 esac
9414                 rp='Is your uname() broken?'
9415                 . ./myread
9416                 case "$ans" in
9417                 n*) d_uname="$define"; call=uname;;
9418                 esac
9419         else
9420                 echo 'uname() found.' >&4
9421                 d_uname="$define"
9422                 case "$call" in
9423                 '') call=uname ;;
9424                 esac
9425         fi
9426 fi
9427 case "$d_gethname" in
9428 '') d_gethname="$undef";;
9429 esac
9430 case "$d_uname" in
9431 '') d_uname="$undef";;
9432 esac
9433 case "$d_uname$d_gethname" in
9434 *define*)
9435         dflt=n
9436         cat <<EOM
9437  
9438 Every now and then someone has a $call() that lies about the hostname
9439 but can't be fixed for political or economic reasons.  If you wish, I can
9440 pretend $call() isn't there and maybe compute hostname at run-time
9441 thanks to the '$phostname' command.
9442
9443 EOM
9444         rp="Shall I ignore $call() from now on?"
9445         . ./myread
9446         case "$ans" in
9447         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9448         esac;;
9449 esac
9450 case "$phostname" in
9451 '') aphostname='';;
9452 *) case "$aphostname" in
9453         /*) ;;
9454         *) set X $phostname
9455                 shift
9456                 file=$1
9457                 shift
9458                 file=`./loc $file $file $pth`
9459                 aphostname=`echo $file $*`
9460                 ;;
9461         esac
9462         ;;
9463 esac
9464 case "$d_uname$d_gethname" in
9465 *define*) ;;
9466 *)
9467         case "$phostname" in
9468         '')
9469                 echo "There will be no way for $package to get your hostname." >&4;;
9470         *)
9471         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9472                 ;;
9473         esac;;
9474 esac
9475 case "$d_phostname" in
9476 '') d_phostname="$undef";;
9477 esac
9478
9479 : see if this is a netdb.h system
9480 set netdb.h i_netdb
9481 eval $inhdr
9482
9483 : see if prototypes for various gethostxxx netdb.h functions are available
9484 echo " "
9485 set d_gethostprotos gethostent $i_netdb netdb.h
9486 eval $hasproto
9487
9488 : see if getlogin exists
9489 set getlogin d_getlogin
9490 eval $inlibc
9491
9492 : see if getmnt exists
9493 set getmnt d_getmnt
9494 eval $inlibc
9495
9496 : see if getmntent exists
9497 set getmntent d_getmntent
9498 eval $inlibc
9499
9500 : see if getnetbyaddr exists
9501 set getnetbyaddr d_getnbyaddr
9502 eval $inlibc
9503
9504 : see if getnetbyname exists
9505 set getnetbyname d_getnbyname
9506 eval $inlibc
9507
9508 : see if getnetent exists
9509 set getnetent d_getnent
9510 eval $inlibc
9511
9512 : see if prototypes for various getnetxxx netdb.h functions are available
9513 echo " "
9514 set d_getnetprotos getnetent $i_netdb netdb.h
9515 eval $hasproto
9516
9517
9518 : see if getprotobyname exists
9519 set getprotobyname d_getpbyname
9520 eval $inlibc
9521
9522 : see if getprotobynumber exists
9523 set getprotobynumber d_getpbynumber
9524 eval $inlibc
9525
9526 : see if getprotoent exists
9527 set getprotoent d_getpent
9528 eval $inlibc
9529
9530 : see if getpgid exists
9531 set getpgid d_getpgid
9532 eval $inlibc
9533
9534 : see if getpgrp2 exists
9535 set getpgrp2 d_getpgrp2
9536 eval $inlibc
9537
9538 : see if getppid exists
9539 set getppid d_getppid
9540 eval $inlibc
9541
9542 : see if getpriority exists
9543 set getpriority d_getprior
9544 eval $inlibc
9545
9546 : see if prototypes for various getprotoxxx netdb.h functions are available
9547 echo " "
9548 set d_getprotoprotos getprotoent $i_netdb netdb.h
9549 eval $hasproto
9550
9551 : see if getprpwnam exists
9552 set getprpwnam d_getprpwnam
9553 eval $inlibc
9554
9555 : see if getpwent exists
9556 set getpwent d_getpwent
9557 eval $inlibc
9558
9559
9560 : see if getservbyname exists
9561 set getservbyname d_getsbyname
9562 eval $inlibc
9563
9564 : see if getservbyport exists
9565 set getservbyport d_getsbyport
9566 eval $inlibc
9567
9568 : see if getservent exists
9569 set getservent d_getsent
9570 eval $inlibc
9571
9572 : see if prototypes for various getservxxx netdb.h functions are available
9573 echo " "
9574 set d_getservprotos getservent $i_netdb netdb.h
9575 eval $hasproto
9576
9577 : see if getspnam exists
9578 set getspnam d_getspnam
9579 eval $inlibc
9580
9581 : see if gettimeofday or ftime exists
9582 set gettimeofday d_gettimeod
9583 eval $inlibc
9584 case "$d_gettimeod" in
9585 "$undef")
9586         set ftime d_ftime 
9587         eval $inlibc
9588         ;;
9589 *)
9590         val="$undef"; set d_ftime; eval $setvar
9591         ;;
9592 esac
9593 case "$d_gettimeod$d_ftime" in
9594 "$undef$undef")
9595         echo " "
9596         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9597         ;;
9598 esac
9599
9600 : see if this is an grp system
9601 set grp.h i_grp
9602 eval $inhdr
9603
9604 case "$i_grp" in
9605 $define)
9606         xxx=`./findhdr grp.h`
9607         $cppstdin $cppflags $cppminus < $xxx >$$.h
9608
9609         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9610                 val="$define"
9611         else
9612                 val="$undef"
9613         fi
9614         set d_grpasswd
9615         eval $setvar
9616
9617         $rm -f $$.h
9618         ;;
9619 *)
9620         val="$undef";
9621         set d_grpasswd; eval $setvar
9622         ;;
9623 esac
9624
9625 : see if hasmntopt exists
9626 set hasmntopt d_hasmntopt
9627 eval $inlibc
9628
9629 : see if this is a netinet/in.h or sys/in.h system
9630 set netinet/in.h i_niin sys/in.h i_sysin
9631 eval $inhdr
9632
9633 : see if arpa/inet.h has to be included
9634 set arpa/inet.h i_arpainet
9635 eval $inhdr
9636
9637 : see if htonl --and friends-- exists
9638 val=''
9639 set htonl val
9640 eval $inlibc
9641
9642 : Maybe they are macros.
9643 case "$val" in
9644 $undef)
9645         $cat >htonl.c <<EOM
9646 #include <stdio.h>
9647 #include <sys/types.h>
9648 #$i_niin I_NETINET_IN
9649 #$i_sysin I_SYS_IN
9650 #$i_arpainet I_ARPA_INET
9651 #ifdef I_NETINET_IN
9652 #include <netinet/in.h>
9653 #endif
9654 #ifdef I_SYS_IN
9655 #include <sys/in.h>
9656 #endif
9657 #ifdef I_ARPA_INET
9658 #include <arpa/inet.h>
9659 #endif
9660 #ifdef htonl
9661 printf("Defined as a macro.");
9662 #endif
9663 EOM
9664         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9665         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9666                 val="$define"
9667                 echo "But it seems to be defined as a macro." >&4
9668         fi
9669         $rm -f htonl.?
9670         ;;
9671 esac
9672 set d_htonl
9673 eval $setvar
9674
9675 : see if iconv exists
9676 set iconv d_iconv
9677 eval $inlibc
9678
9679 : index or strchr
9680 echo " "
9681 if set index val -f; eval $csym; $val; then
9682         if set strchr val -f d_strchr; eval $csym; $val; then
9683                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9684                         val="$define"
9685                         vali="$undef"
9686                         echo "strchr() found." >&4
9687                 else
9688                         val="$undef"
9689                         vali="$define"
9690                         echo "index() found." >&4
9691                 fi
9692         else
9693                 val="$undef"
9694                 vali="$define"
9695                 echo "index() found." >&4
9696         fi
9697 else
9698         if set strchr val -f d_strchr; eval $csym; $val; then
9699                 val="$define"
9700                 vali="$undef"
9701                 echo "strchr() found." >&4
9702         else
9703                 echo "No index() or strchr() found!" >&4
9704                 val="$undef"
9705                 vali="$undef"
9706         fi
9707 fi
9708 set d_strchr; eval $setvar
9709 val="$vali"
9710 set d_index; eval $setvar
9711
9712 : check whether inet_aton exists
9713 set inet_aton d_inetaton
9714 eval $inlibc
9715
9716 : see if inttypes.h is available
9717 : we want a real compile instead of Inhdr because some systems
9718 : have an inttypes.h which includes non-existent headers
9719 echo " "
9720 $cat >try.c <<EOCP
9721 #include <inttypes.h>
9722 int main() {
9723         static int32_t foo32 = 0x12345678;
9724 }
9725 EOCP
9726 set try
9727 if eval $compile; then
9728         echo "<inttypes.h> found." >&4
9729         val="$define"
9730 else
9731         echo "<inttypes.h> NOT found." >&4
9732         val="$undef"
9733 fi
9734 $rm -f try.c try
9735 set i_inttypes
9736 eval $setvar
9737
9738 : check for int64_t
9739 echo " "
9740 echo "Checking to see if you have int64_t..." >&4
9741 $cat >try.c <<EOCP
9742 #include <sys/types.h>
9743 #$i_inttypes I_INTTYPES
9744 #ifdef I_INTTYPES
9745 #include <inttypes.h>
9746 #endif
9747 int main() { int64_t x = 7; }
9748 EOCP
9749 set try
9750 if eval $compile; then
9751         val="$define"
9752         echo "You have int64_t."
9753 else
9754         val="$undef"
9755         echo "You do not have int64_t."
9756 fi
9757 $rm -f try try.*
9758 set d_int64_t
9759 eval $setvar
9760
9761 : Look for isascii
9762 echo " "
9763 $cat >isascii.c <<'EOCP'
9764 #include <stdio.h>
9765 #include <ctype.h>
9766 int main() {
9767         int c = 'A';
9768         if (isascii(c))
9769                 exit(0);
9770         else
9771                 exit(1);
9772 }
9773 EOCP
9774 set isascii
9775 if eval $compile; then
9776         echo "isascii() found." >&4
9777         val="$define"
9778 else
9779         echo "isascii() NOT found." >&4
9780         val="$undef"
9781 fi
9782 set d_isascii
9783 eval $setvar
9784 $rm -f isascii*
9785
9786 : see if isnan exists
9787 set isnan d_isnan
9788 eval $inlibc
9789
9790 : see if isnanl exists
9791 set isnanl d_isnanl
9792 eval $inlibc
9793
9794 : see if killpg exists
9795 set killpg d_killpg
9796 eval $inlibc
9797
9798 : see if lchown exists
9799 echo " "
9800 $cat > try.c <<'EOCP'
9801 /* System header to define __stub macros and hopefully few prototypes,
9802     which can conflict with char lchown(); below.  */
9803 #include <assert.h>
9804 /* Override any gcc2 internal prototype to avoid an error.  */
9805 /* We use char because int might match the return type of a gcc2
9806    builtin and then its argument prototype would still apply.  */
9807 char lchown();
9808 int main() {
9809     /*  The GNU C library defines this for functions which it implements
9810         to always fail with ENOSYS.  Some functions are actually named
9811         something starting with __ and the normal name is an alias.  */
9812 #if defined (__stub_lchown) || defined (__stub___lchown)
9813 choke me
9814 #else
9815 lchown();
9816 #endif
9817 ; return 0; }
9818 EOCP
9819 set try
9820 if eval $compile; then
9821     $echo "lchown() found." >&4
9822     val="$define"
9823 else
9824     $echo "lchown() NOT found." >&4
9825     val="$undef"
9826 fi
9827 set d_lchown
9828 eval $setvar
9829
9830 : See if number of significant digits in a double precision number is known
9831 echo " "
9832 $cat >ldbl_dig.c <<EOM
9833 #$i_limits I_LIMITS
9834 #$i_float I_FLOAT
9835 #ifdef I_LIMITS
9836 #include <limits.h>
9837 #endif
9838 #ifdef I_FLOAT
9839 #include <float.h>
9840 #endif
9841 #ifdef LDBL_DIG
9842 printf("Contains LDBL_DIG");
9843 #endif
9844 EOM
9845 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9846 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9847         echo "LDBL_DIG found." >&4
9848         val="$define"
9849 else
9850         echo "LDBL_DIG NOT found." >&4
9851         val="$undef"
9852 fi
9853 $rm -f ldbl_dig.?
9854 set d_ldbl_dig
9855 eval $setvar
9856
9857 : see if link exists
9858 set link d_link
9859 eval $inlibc
9860
9861 : see if localeconv exists
9862 set localeconv d_locconv
9863 eval $inlibc
9864
9865 : see if lockf exists
9866 set lockf d_lockf
9867 eval $inlibc
9868
9869 : check for long long
9870 echo " "
9871 echo "Checking to see if you have long long..." >&4
9872 echo 'int main() { long long x = 7; return 0; }' > try.c
9873 set try
9874 if eval $compile; then
9875         val="$define"
9876         echo "You have long long."
9877 else
9878         val="$undef"
9879         echo "You do not have long long."
9880 fi
9881 $rm try.*
9882 set d_longlong
9883 eval $setvar
9884
9885 : check for length of long long
9886 case "${d_longlong}${longlongsize}" in
9887 $define)
9888         echo " "
9889         echo "Checking to see how big your long longs are..." >&4
9890         $cat >try.c <<'EOCP'
9891 #include <stdio.h>
9892 int main()
9893 {
9894     printf("%d\n", (int)sizeof(long long));
9895     return(0);
9896 }
9897 EOCP
9898         set try
9899         if eval $compile_ok; then
9900                 longlongsize=`./try$exe_ext`
9901                 echo "Your long longs are $longlongsize bytes long."
9902         else
9903                 dflt='8'
9904                 echo " "
9905                 echo "(I can't seem to compile the test program.  Guessing...)"
9906                 rp="What is the size of a long long (in bytes)?"
9907                 . ./myread
9908                 longlongsize="$ans"
9909         fi
9910         if $test "X$longsize" = "X$longlongsize"; then
9911                 echo "(That isn't any different from an ordinary long.)"
9912         fi      
9913         ;;
9914 esac
9915 $rm -f try.* try
9916
9917 : see if prototype for lseek is available
9918 echo " "
9919 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9920 eval $hasproto
9921
9922 : see if lstat exists
9923 set lstat d_lstat
9924 eval $inlibc
9925
9926 : see if madvise exists
9927 set madvise d_madvise
9928 eval $inlibc
9929
9930 : see if mblen exists
9931 set mblen d_mblen
9932 eval $inlibc
9933
9934 : see if mbstowcs exists
9935 set mbstowcs d_mbstowcs
9936 eval $inlibc
9937
9938 : see if mbtowc exists
9939 set mbtowc d_mbtowc
9940 eval $inlibc
9941
9942 : see if memchr exists
9943 set memchr d_memchr
9944 eval $inlibc
9945
9946 : see if memcmp exists
9947 set memcmp d_memcmp
9948 eval $inlibc
9949
9950 : see if memcpy exists
9951 set memcpy d_memcpy
9952 eval $inlibc
9953
9954 : see if memmove exists
9955 set memmove d_memmove
9956 eval $inlibc
9957
9958 : see if memset exists
9959 set memset d_memset
9960 eval $inlibc
9961
9962 : see if mkdir exists
9963 set mkdir d_mkdir
9964 eval $inlibc
9965
9966 : see if mkdtemp exists
9967 set mkdtemp d_mkdtemp
9968 eval $inlibc
9969
9970 : see if mkfifo exists
9971 set mkfifo d_mkfifo
9972 eval $inlibc
9973
9974 : see if mkstemp exists
9975 set mkstemp d_mkstemp
9976 eval $inlibc
9977
9978 : see if mkstemps exists
9979 set mkstemps d_mkstemps
9980 eval $inlibc
9981
9982 : see if mktime exists
9983 set mktime d_mktime
9984 eval $inlibc
9985
9986 : see if this is a sys/mman.h system
9987 set sys/mman.h i_sysmman
9988 eval $inhdr
9989
9990 : see if mmap exists
9991 set mmap d_mmap
9992 eval $inlibc
9993 : see what shmat returns
9994 : default to something harmless
9995 mmaptype='void *'
9996 case "$i_sysmman$d_mmap" in
9997 "$define$define")
9998         $cat >mmap.c <<'END'
9999 #include <sys/mman.h>
10000 void *mmap();
10001 END
10002         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10003                 mmaptype='void *'
10004         else
10005                 mmaptype='caddr_t'
10006         fi
10007         echo "and it returns ($mmaptype)." >&4
10008         ;;
10009 esac
10010
10011
10012
10013 : see if modfl exists
10014 set modfl d_modfl
10015 eval $inlibc
10016
10017 : see if mprotect exists
10018 set mprotect d_mprotect
10019 eval $inlibc
10020
10021 : see if msgctl exists
10022 set msgctl d_msgctl
10023 eval $inlibc
10024
10025 : see if msgget exists
10026 set msgget d_msgget
10027 eval $inlibc
10028
10029 : see if msgsnd exists
10030 set msgsnd d_msgsnd
10031 eval $inlibc
10032
10033 : see if msgrcv exists
10034 set msgrcv d_msgrcv
10035 eval $inlibc
10036
10037 : see how much of the 'msg*(2)' library is present.
10038 h_msg=true
10039 echo " "
10040 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10041 *"$undef"*) h_msg=false;;
10042 esac
10043 case "$osname" in
10044 freebsd)
10045     case "`ipcs 2>&1`" in
10046     "SVID messages"*"not configured"*)
10047         echo "Your $osname does not have the msg*(2) configured." >&4
10048         h_msg=false
10049         val="$undef"
10050         set msgctl d_msgctl
10051         eval $setvar
10052         set msgget d_msgget
10053         eval $setvar
10054         set msgsnd d_msgsnd
10055         eval $setvar
10056         set msgrcv d_msgrcv
10057         eval $setvar
10058         ;;
10059     esac
10060     ;;
10061 esac
10062 : we could also check for sys/ipc.h ...
10063 if $h_msg && $test `./findhdr sys/msg.h`; then
10064         echo "You have the full msg*(2) library." >&4
10065         val="$define"
10066 else
10067         echo "You don't have the full msg*(2) library." >&4
10068         val="$undef"
10069 fi
10070 set d_msg
10071 eval $setvar
10072
10073 : see if msync exists
10074 set msync d_msync
10075 eval $inlibc
10076
10077 : see if munmap exists
10078 set munmap d_munmap
10079 eval $inlibc
10080
10081 : see if nice exists
10082 set nice d_nice
10083 eval $inlibc
10084
10085
10086 echo " "
10087 echo "Checking which 64-bit integer type we could use..." >&4
10088
10089 case "$intsize" in
10090 8) val=int
10091    set quadtype
10092    eval $setvar
10093    val='"unsigned int"'
10094    set uquadtype
10095    eval $setvar
10096    quadkind=1
10097    ;;
10098 *) case "$longsize" in
10099    8) val=long
10100       set quadtype
10101       eval $setvar
10102       val='"unsigned long"'
10103       set uquadtype
10104       eval $setvar
10105       quadkind=2
10106       ;;
10107    *) case "$d_longlong:$longlongsize" in
10108       define:8)
10109         val='"long long"'
10110         set quadtype
10111         eval $setvar
10112         val='"unsigned long long"'
10113         set uquadtype
10114         eval $setvar
10115         quadkind=3
10116         ;;
10117       *) case "$d_int64_t" in
10118          define)
10119            val=int64_t
10120            set quadtype
10121            eval $setvar
10122            val=uint64_t
10123            set uquadtype
10124            eval $setvar
10125            quadkind=4
10126            ;;
10127          esac
10128          ;;
10129       esac
10130       ;;
10131    esac
10132    ;;
10133 esac
10134
10135 case "$quadtype" in
10136 '')     echo "Alas, no 64-bit integer types in sight." >&4
10137         d_quad="$undef"
10138         ;;
10139 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10140             verb="will"
10141         else
10142             verb="could"
10143         fi
10144         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10145         d_quad="$define"
10146         ;;
10147 esac
10148
10149 : check for length of character
10150 echo " "
10151 case "$charsize" in
10152 '')
10153         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10154         $cat >try.c <<'EOCP'
10155 #include <stdio.h>
10156 int main()
10157 {
10158     printf("%d\n", (int)sizeof(char));
10159     exit(0);
10160 }
10161 EOCP
10162         set try
10163         if eval $compile_ok; then
10164                 dflt=`./try`
10165         else
10166                 dflt='1'
10167                 echo "(I can't seem to compile the test program.  Guessing...)"
10168         fi
10169         ;;
10170 *)
10171         dflt="$charsize"
10172         ;;
10173 esac
10174 rp="What is the size of a character (in bytes)?"
10175 . ./myread
10176 charsize="$ans"
10177 $rm -f try.c try
10178
10179
10180 echo " "
10181 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10182
10183 case "$use64bitint:$d_quad:$quadtype" in
10184 define:define:?*)
10185         ivtype="$quadtype"
10186         uvtype="$uquadtype"
10187         ivsize=8
10188         uvsize=8
10189         ;;
10190 *)      ivtype="long"
10191         uvtype="unsigned long"
10192         ivsize=$longsize
10193         uvsize=$longsize
10194         ;;
10195 esac
10196
10197 case "$uselongdouble:$d_longdbl" in
10198 define:define)
10199         nvtype="long double"
10200         nvsize=$longdblsize
10201         ;;
10202 *)      nvtype=double
10203         nvsize=$doublesize
10204         ;;
10205 esac
10206
10207 $echo "(IV will be "$ivtype", $ivsize bytes)"
10208 $echo "(UV will be "$uvtype", $uvsize bytes)"
10209 $echo "(NV will be "$nvtype", $nvsize bytes)"
10210
10211 $cat >try.c <<EOCP
10212 #$i_inttypes I_INTTYPES
10213 #ifdef I_INTTYPES
10214 #include <inttypes.h>
10215 #endif
10216 #include <stdio.h>
10217 int main() {
10218 #ifdef INT8
10219    int8_t i =  INT8_MAX;
10220   uint8_t u = UINT8_MAX;
10221   printf("int8_t\n");
10222 #endif
10223 #ifdef INT16
10224    int16_t i =  INT16_MAX;
10225   uint16_t i = UINT16_MAX;
10226   printf("int16_t\n");
10227 #endif
10228 #ifdef INT32
10229    int32_t i =  INT32_MAX;
10230   uint32_t u = UINT32_MAX;
10231   printf("int32_t\n");
10232 #endif
10233 }
10234 EOCP
10235
10236 case "$i8type" in
10237 '')     case "$charsize" in
10238         1)      i8type=char
10239                 u8type="unsigned char"
10240                 i8size=$charsize
10241                 u8size=$charsize
10242                 ;;
10243         esac
10244         ;;
10245 esac
10246 case "$i8type" in
10247 '')     set try -DINT8
10248         if eval $compile; then
10249                 case "`./try$exe_ext`" in
10250                 int8_t) i8type=int8_t
10251                         u8type=uint8_t
10252                         i8size=1
10253                         u8size=1
10254                         ;;
10255                 esac
10256         fi
10257         ;;
10258 esac
10259 case "$i8type" in
10260 '')     if $test $charsize -ge 1; then
10261                 i8type=char
10262                 u8type="unsigned char"
10263                 i8size=$charsize
10264                 u8size=$charsize
10265         fi
10266         ;;
10267 esac
10268
10269 case "$i16type" in
10270 '')     case "$shortsize" in
10271         2)      i16type=short
10272                 u16type="unsigned short"
10273                 i16size=$shortsize
10274                 u16size=$shortsize
10275                 ;;
10276         esac
10277         ;;
10278 esac
10279 case "$i16type" in
10280 '')     set try -DINT16
10281         if eval $compile; then
10282                 case "`./try$exe_ext`" in
10283                 int16_t)
10284                         i16type=int16_t
10285                         u16type=uint16_t
10286                         i16size=2
10287                         u16size=2
10288                         ;;
10289                 esac
10290         fi
10291         ;;
10292 esac
10293 case "$i16type" in
10294 '')     if $test $shortsize -ge 2; then
10295                 i16type=short
10296                 u16type="unsigned short"
10297                 i16size=$shortsize
10298                 u16size=$shortsize
10299         fi
10300         ;;
10301 esac
10302
10303 case "$i32type" in
10304 '')     case "$longsize" in
10305         4)      i32type=long
10306                 u32type="unsigned long"
10307                 i32size=$longsize
10308                 u32size=$longsize
10309                 ;;
10310         *)      case "$intsize" in
10311                 4)      i32type=int
10312                         u32type="unsigned int"
10313                         i32size=$intsize
10314                         u32size=$intsize
10315                         ;;
10316                 esac
10317                 ;;
10318         esac
10319         ;;
10320 esac
10321 case "$i32type" in
10322 '')     set try -DINT32
10323         if eval $compile; then
10324                 case "`./try$exe_ext`" in
10325                 int32_t)
10326                         i32type=int32_t
10327                         u32type=uint32_t
10328                         i32size=4
10329                         u32size=4
10330                         ;;
10331                 esac
10332         fi
10333         ;;
10334 esac
10335 case "$i32type" in
10336 '')     if $test $intsize -ge 4; then
10337                 i32type=int
10338                 u32type="unsigned int"
10339                 i32size=$intsize
10340                 u32size=$intsize
10341         fi
10342         ;;
10343 esac
10344
10345 case "$i64type" in
10346 '')     case "$d_quad:$quadtype" in
10347         define:?*)
10348                 i64type="$quadtype"
10349                 u64type="$uquadtype"
10350                 i64size=8
10351                 u64size=8
10352                 ;;
10353         esac
10354         ;;
10355 esac
10356
10357 $echo "Checking whether your NVs can preserve your UVs..." >&4
10358 $cat <<EOP >try.c
10359 #include <stdio.h>
10360 int main() {
10361     $uvtype k = ($uvtype)~0, l;
10362     $nvtype d;
10363     l = k;
10364     d = ($nvtype)l;
10365     l = ($uvtype)d;
10366     if (l == k)
10367        printf("preserve\n");
10368     exit(0);
10369 }
10370 EOP
10371 set try
10372 if eval $compile; then
10373         case "`./try$exe_ext`" in
10374         preserve) d_nv_preserves_uv="$define" ;;
10375         esac
10376 fi      
10377 case "$d_nv_preserves_uv" in
10378 $define) $echo "Yes, they can."  2>&1 ;;
10379 *)       $echo "No, they can't." 2>&1
10380          d_nv_preserves_uv="$undef"
10381          ;;
10382 esac
10383
10384 $rm -f try.* try
10385
10386 case "$d_nv_preserves_uv" in
10387 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10388 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10389         $cat <<EOP >try.c
10390 #include <stdio.h>
10391 int main() {
10392     $uvtype u = 0;
10393     int     n = 8 * $uvsize;
10394     int     i;
10395     for (i = 0; i < n; i++) {
10396       u = u << 1 | ($uvtype)1;
10397       if (($uvtype)($nvtype)u != u)
10398         break;
10399     }
10400     printf("%d\n", i);
10401     exit(0);
10402 }
10403 EOP
10404         set try
10405         if eval $compile; then
10406                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10407         fi
10408         case "$d_nv_preserves_uv_bits" in
10409         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10410         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10411                 d_nv_preserves_uv_bits="$undef"
10412                 ;;
10413         esac
10414         $rm -f try.* try
10415         ;;
10416 esac
10417
10418
10419
10420 : check for off64_t
10421 echo " "
10422 echo "Checking to see if you have off64_t..." >&4
10423 $cat >try.c <<EOCP
10424 #include <sys/types.h>
10425 #include <unistd.h>
10426 int main() { off64_t x = 7; }
10427 EOCP
10428 set try
10429 if eval $compile; then
10430         val="$define"
10431         echo "You have off64_t."
10432 else
10433         val="$undef"
10434         echo "You do not have off64_t."
10435         case "$lseeksize" in
10436         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10437         esac
10438 fi
10439 $rm -f try.* try
10440 set d_off64_t
10441 eval $setvar
10442
10443 : see if POSIX threads are available
10444 set pthread.h i_pthread
10445 eval $inhdr
10446
10447
10448
10449
10450 : how to create joinable pthreads
10451 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10452         echo " "
10453         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10454         $cat >try.c <<'EOCP'
10455 #include <pthread.h>
10456 int main() {
10457     int detachstate = JOINABLE;
10458 }
10459 EOCP
10460         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10461         if eval $compile; then
10462                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10463                 val="$undef" # Yes, undef.
10464                 set d_old_pthread_create_joinable
10465                 eval $setvar
10466                 val=""
10467                 set old_pthread_create_joinable
10468                 eval $setvar
10469         else
10470                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10471                 if eval $compile; then
10472                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10473                         val="$define"
10474                         set d_old_pthread_create_joinable
10475                         eval $setvar
10476                         val=PTHREAD_CREATE_UNDETACHED
10477                         set old_pthread_create_joinable
10478                         eval $setvar
10479                 else            
10480                         set try -DJOINABLE=__UNDETACHED
10481                         if eval $compile; then
10482                                 echo "You seem to use __UNDETACHED." >&4
10483                                 val="$define"
10484                                 set d_old_pthread_create_joinable
10485                                 eval $setvar
10486                                 val=__UNDETACHED
10487                                 set old_pthread_create_joinable
10488                                 eval $setvar
10489                         else
10490                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10491                                 val="$define"
10492                                 set d_old_pthread_create_joinable
10493                                 eval $setvar
10494                                 val=0
10495                                 set old_pthread_create_joinable
10496                                 eval $setvar
10497                         fi
10498                 fi
10499         fi
10500         $rm -f try try.*
10501 else
10502     d_old_pthread_create_joinable="$undef"
10503     old_pthread_create_joinable=""
10504 fi
10505
10506 : see if pause exists
10507 set pause d_pause
10508 eval $inlibc
10509
10510 : see if pipe exists
10511 set pipe d_pipe
10512 eval $inlibc
10513
10514 : see if poll exists
10515 set poll d_poll
10516 eval $inlibc
10517
10518
10519 : see whether the various POSIXish _yields exist
10520 $cat >try.c <<EOP
10521 #include <pthread.h>
10522 #include <stdio.h>
10523 int main() {
10524 #ifdef SCHED_YIELD
10525         sched_yield();
10526 #else
10527 #ifdef PTHREAD_YIELD
10528         pthread_yield();
10529 #else
10530 #ifdef PTHREAD_YIELD_NULL
10531         pthread_yield(NULL);
10532 #endif
10533 #endif
10534 #endif
10535 }
10536 EOP
10537 : see if sched_yield exists
10538 set try -DSCHED_YIELD
10539 if eval $compile; then
10540     val="$define"
10541     sched_yield='sched_yield()'
10542 else
10543     val="$undef"
10544 fi
10545 case "$usethreads" in
10546 $define)
10547         case "$val" in
10548         $define) echo 'sched_yield() found.' >&4        ;;
10549         *)       echo 'sched_yield() NOT found.' >&4    ;;
10550         esac
10551 esac
10552 set d_sched_yield
10553 eval $setvar
10554
10555 : see if pthread_yield exists
10556 set try -DPTHREAD_YIELD
10557 if eval $compile; then
10558     val="$define"
10559     case "$sched_yield" in
10560     '') sched_yield='pthread_yield()' ;;
10561     esac
10562 else
10563     set try -DPTHREAD_YIELD_NULL
10564     if eval $compile; then
10565         val="$define"
10566         case "$sched_yield" in
10567         '') sched_yield='pthread_yield(NULL)' ;;
10568         esac
10569     else
10570         val="$undef"
10571     fi
10572 fi
10573 case "$usethreads" in
10574 $define)
10575         case "$val" in
10576         $define) echo 'pthread_yield() found.' >&4      ;;
10577         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10578         esac
10579         ;;
10580 esac
10581 set d_pthread_yield
10582 eval $setvar
10583
10584 case "$sched_yield" in
10585 '') sched_yield=undef ;;
10586 esac
10587
10588 $rm -f try try.*
10589
10590 : see if this is a pwd.h system
10591 set pwd.h i_pwd
10592 eval $inhdr
10593
10594 case "$i_pwd" in
10595 $define)
10596         xxx=`./findhdr pwd.h`
10597         $cppstdin $cppflags $cppminus < $xxx >$$.h
10598
10599         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10600                 val="$define"
10601         else
10602                 val="$undef"
10603         fi
10604         set d_pwquota
10605         eval $setvar
10606
10607         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10608                 val="$define"
10609         else
10610                 val="$undef"
10611         fi
10612         set d_pwage
10613         eval $setvar
10614
10615         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10616                 val="$define"
10617         else
10618                 val="$undef"
10619         fi
10620         set d_pwchange
10621         eval $setvar
10622
10623         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10624                 val="$define"
10625         else
10626                 val="$undef"
10627         fi
10628         set d_pwclass
10629         eval $setvar
10630
10631         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10632                 val="$define"
10633         else
10634                 val="$undef"
10635         fi
10636         set d_pwexpire
10637         eval $setvar
10638
10639         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10640                 val="$define"
10641         else
10642                 val="$undef"
10643         fi
10644         set d_pwcomment
10645         eval $setvar
10646
10647         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10648                 val="$define"
10649         else
10650                 val="$undef"
10651         fi
10652         set d_pwgecos
10653         eval $setvar
10654
10655         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10656                 val="$define"
10657         else
10658                 val="$undef"
10659         fi
10660         set d_pwpasswd
10661         eval $setvar
10662
10663         $rm -f $$.h
10664         ;;
10665 *)
10666         val="$undef"; 
10667         set d_pwquota; eval $setvar
10668         set d_pwage; eval $setvar
10669         set d_pwchange; eval $setvar
10670         set d_pwclass; eval $setvar
10671         set d_pwexpire; eval $setvar
10672         set d_pwcomment; eval $setvar
10673         set d_pwgecos; eval $setvar
10674         set d_pwpasswd; eval $setvar
10675         ;;
10676 esac
10677
10678 : see if readdir and friends exist
10679 set readdir d_readdir
10680 eval $inlibc
10681 set seekdir d_seekdir
10682 eval $inlibc
10683 set telldir d_telldir
10684 eval $inlibc
10685 set rewinddir d_rewinddir
10686 eval $inlibc
10687
10688 : see if readlink exists
10689 set readlink d_readlink
10690 eval $inlibc
10691
10692 : see if rename exists
10693 set rename d_rename
10694 eval $inlibc
10695
10696 : see if rmdir exists
10697 set rmdir d_rmdir
10698 eval $inlibc
10699
10700 : see if memory.h is available.
10701 val=''
10702 set memory.h val
10703 eval $inhdr
10704
10705 : See if it conflicts with string.h
10706 case "$val" in
10707 $define)
10708         case "$strings" in
10709         '') ;;
10710         *)
10711                 $cppstdin $cppflags $cppminus < $strings > mem.h
10712                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10713                         echo " "
10714                         echo "We won't be including <memory.h>."
10715                         val="$undef"
10716                 fi
10717                 $rm -f mem.h
10718                 ;;
10719         esac
10720 esac
10721 set i_memory
10722 eval $setvar
10723
10724 : can bcopy handle overlapping blocks?
10725 val="$undef"
10726 case "$d_bcopy" in
10727 "$define")
10728         echo " "
10729         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10730         $cat >try.c <<EOCP
10731 #$i_memory I_MEMORY
10732 #$i_stdlib I_STDLIB
10733 #$i_string I_STRING
10734 #$i_unistd I_UNISTD
10735 EOCP
10736         $cat >>try.c <<'EOCP'
10737 #include <stdio.h>
10738 #ifdef I_MEMORY
10739 #  include <memory.h>
10740 #endif
10741 #ifdef I_STDLIB
10742 #  include <stdlib.h>
10743 #endif
10744 #ifdef I_STRING
10745 #  include <string.h>
10746 #else
10747 #  include <strings.h>
10748 #endif
10749 #ifdef I_UNISTD
10750 #  include <unistd.h>  /* Needed for NetBSD */
10751 #endif
10752 int main()
10753 {
10754 char buf[128], abc[128];
10755 char *b;
10756 int len;
10757 int off;
10758 int align;
10759
10760 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10761
10762 for (align = 7; align >= 0; align--) {
10763         for (len = 36; len; len--) {
10764                 b = buf+align;
10765                 bcopy(abc, b, len);
10766                 for (off = 1; off <= len; off++) {
10767                         bcopy(b, b+off, len);
10768                         bcopy(b+off, b, len);
10769                         if (bcmp(b, abc, len))
10770                                 exit(1);
10771                 }
10772         }
10773 }
10774 exit(0);
10775 }
10776 EOCP
10777         set try
10778         if eval $compile_ok; then
10779                 if ./try 2>/dev/null; then
10780                         echo "Yes, it can."
10781                         val="$define"
10782                 else
10783                         echo "It can't, sorry."
10784                         case "$d_memmove" in
10785                         "$define") echo "But that's Ok since you have memmove()." ;;
10786                         esac
10787                 fi
10788         else
10789                 echo "(I can't compile the test program, so we'll assume not...)"
10790                 case "$d_memmove" in
10791                 "$define") echo "But that's Ok since you have memmove()." ;;
10792                 esac
10793         fi
10794         ;;
10795 esac
10796 $rm -f try.* try core
10797 set d_safebcpy
10798 eval $setvar
10799
10800 : can memcpy handle overlapping blocks?
10801 val="$undef"
10802 case "$d_memcpy" in
10803 "$define")
10804         echo " "
10805         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10806         $cat >try.c <<EOCP
10807 #$i_memory I_MEMORY
10808 #$i_stdlib I_STDLIB
10809 #$i_string I_STRING
10810 #$i_unistd I_UNISTD
10811 EOCP
10812         $cat >>try.c <<'EOCP'
10813 #include <stdio.h>
10814 #ifdef I_MEMORY
10815 #  include <memory.h>
10816 #endif
10817 #ifdef I_STDLIB
10818 #  include <stdlib.h>
10819 #endif
10820 #ifdef I_STRING
10821 #  include <string.h>
10822 #else
10823 #  include <strings.h>
10824 #endif
10825 #ifdef I_UNISTD
10826 #  include <unistd.h>  /* Needed for NetBSD */
10827 #endif
10828 int main()
10829 {
10830 char buf[128], abc[128];
10831 char *b;
10832 int len;
10833 int off;
10834 int align;
10835
10836 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10837    try to store the string in read-only memory. */
10838 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10839
10840 for (align = 7; align >= 0; align--) {
10841         for (len = 36; len; len--) {
10842                 b = buf+align;
10843                 memcpy(b, abc, len);
10844                 for (off = 1; off <= len; off++) {
10845                         memcpy(b+off, b, len);
10846                         memcpy(b, b+off, len);
10847                         if (memcmp(b, abc, len))
10848                                 exit(1);
10849                 }
10850         }
10851 }
10852 exit(0);
10853 }
10854 EOCP
10855         set try
10856         if eval $compile_ok; then
10857                 if ./try 2>/dev/null; then
10858                         echo "Yes, it can."
10859                         val="$define"
10860                 else
10861                         echo "It can't, sorry."
10862                         case "$d_memmove" in
10863                         "$define") echo "But that's Ok since you have memmove()." ;;
10864                         esac
10865                 fi
10866         else
10867                 echo "(I can't compile the test program, so we'll assume not...)"
10868                 case "$d_memmove" in
10869                 "$define") echo "But that's Ok since you have memmove()." ;;
10870                 esac
10871         fi
10872         ;;
10873 esac
10874 $rm -f try.* try core
10875 set d_safemcpy
10876 eval $setvar
10877
10878 : can memcmp be trusted to compare relative magnitude?
10879 val="$undef"
10880 case "$d_memcmp" in
10881 "$define")
10882         echo " "
10883         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10884         $cat >try.c <<EOCP
10885 #$i_memory I_MEMORY
10886 #$i_stdlib I_STDLIB
10887 #$i_string I_STRING
10888 #$i_unistd I_UNISTD
10889 EOCP
10890         $cat >>try.c <<'EOCP'
10891 #include <stdio.h>
10892 #ifdef I_MEMORY
10893 #  include <memory.h>
10894 #endif
10895 #ifdef I_STDLIB
10896 #  include <stdlib.h>
10897 #endif
10898 #ifdef I_STRING
10899 #  include <string.h>
10900 #else
10901 #  include <strings.h>
10902 #endif
10903 #ifdef I_UNISTD
10904 #  include <unistd.h>  /* Needed for NetBSD */
10905 #endif
10906 int main()
10907 {
10908 char a = -1;
10909 char b = 0;
10910 if ((a < b) && memcmp(&a, &b, 1) < 0)
10911         exit(1);
10912 exit(0);
10913 }
10914 EOCP
10915         set try
10916         if eval $compile_ok; then
10917                 if ./try 2>/dev/null; then
10918                         echo "Yes, it can."
10919                         val="$define"
10920                 else
10921                         echo "No, it can't (it uses signed chars)."
10922                 fi
10923         else
10924                 echo "(I can't compile the test program, so we'll assume not...)"
10925         fi
10926         ;;
10927 esac
10928 $rm -f try.* try core
10929 set d_sanemcmp
10930 eval $setvar
10931
10932 : see if select exists
10933 set select d_select
10934 eval $inlibc
10935
10936 : see if semctl exists
10937 set semctl d_semctl
10938 eval $inlibc
10939
10940 : see if semget exists
10941 set semget d_semget
10942 eval $inlibc
10943
10944 : see if semop exists
10945 set semop d_semop
10946 eval $inlibc
10947
10948 : see how much of the 'sem*(2)' library is present.
10949 h_sem=true
10950 echo " "
10951 case "$d_semctl$d_semget$d_semop" in
10952 *"$undef"*) h_sem=false;;
10953 esac
10954 case "$osname" in
10955 freebsd)
10956     case "`ipcs 2>&1`" in
10957     "SVID messages"*"not configured"*)
10958         echo "Your $osname does not have the sem*(2) configured." >&4
10959         h_sem=false
10960         val="$undef"
10961         set semctl d_semctl
10962         eval $setvar
10963         set semget d_semget
10964         eval $setvar
10965         set semop d_semop
10966         eval $setvar
10967         ;;
10968     esac
10969     ;;
10970 esac
10971 : we could also check for sys/ipc.h ...
10972 if $h_sem && $test `./findhdr sys/sem.h`; then
10973         echo "You have the full sem*(2) library." >&4
10974         val="$define"
10975 else
10976         echo "You don't have the full sem*(2) library." >&4
10977         val="$undef"
10978 fi
10979 set d_sem
10980 eval $setvar
10981
10982 : see whether sys/sem.h defines union semun
10983 echo " "
10984 $cat > try.c <<'END'
10985 #include <sys/types.h>
10986 #include <sys/ipc.h>
10987 #include <sys/sem.h>
10988 int main () { union semun semun; semun.buf = 0; }
10989 END
10990 set try
10991 if eval $compile; then
10992     echo "You have union semun in <sys/sem.h>." >&4
10993     val="$define"
10994 else
10995     echo "You do not have union semun in <sys/sem.h>." >&4
10996     val="$undef"
10997 fi
10998 $rm -f try try.c try.h
10999 set d_union_semun
11000 eval $setvar
11001
11002 : see how to do semctl IPC_STAT
11003 case "$d_sem" in
11004 $define)
11005     : see whether semctl IPC_STAT can use union semun
11006     echo " "
11007     $cat > try.h <<END
11008 #ifndef S_IRUSR
11009 #   ifdef S_IREAD
11010 #       define S_IRUSR S_IREAD
11011 #       define S_IWUSR S_IWRITE
11012 #       define S_IXUSR S_IEXEC
11013 #   else
11014 #       define S_IRUSR 0400
11015 #       define S_IWUSR 0200
11016 #       define S_IXUSR 0100
11017 #   endif
11018 #   define S_IRGRP (S_IRUSR>>3)
11019 #   define S_IWGRP (S_IWUSR>>3)
11020 #   define S_IXGRP (S_IXUSR>>3)
11021 #   define S_IROTH (S_IRUSR>>6)
11022 #   define S_IWOTH (S_IWUSR>>6)
11023 #   define S_IXOTH (S_IXUSR>>6)
11024 #endif
11025 #ifndef S_IRWXU
11026 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11027 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11028 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11029 #endif
11030 END
11031
11032     $cat > try.c <<END
11033 #include <sys/types.h>
11034 #include <sys/ipc.h>
11035 #include <sys/sem.h>
11036 #include <sys/stat.h>
11037 #include <stdio.h>
11038 #include <errno.h>
11039 #include "try.h"
11040 #ifndef errno
11041 extern int errno;
11042 #endif
11043 #$d_union_semun HAS_UNION_SEMUN
11044 int main() {
11045     union semun
11046 #ifndef HAS_UNION_SEMUN
11047     {
11048         int val;
11049         struct semid_ds *buf;
11050         unsigned short *array;
11051     }
11052 #endif
11053     arg;
11054     int sem, st;
11055
11056 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11057     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11058     if (sem > -1) {
11059         struct semid_ds argbuf;
11060         arg.buf = &argbuf;
11061 #       ifdef IPC_STAT
11062         st = semctl(sem, 0, IPC_STAT, arg);
11063         if (st == 0)
11064             printf("semun\n");
11065         else
11066 #       endif /* IPC_STAT */
11067             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11068 #       ifdef IPC_RMID
11069         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11070 #       endif /* IPC_RMID */
11071             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11072     } else
11073 #endif /* IPC_PRIVATE && ... */
11074         printf("semget failed: errno = %d\n", errno);
11075   return 0;
11076 }
11077 END
11078     val="$undef"
11079     set try
11080     if eval $compile; then
11081         xxx=`./try`
11082         case "$xxx" in
11083         semun) val="$define" ;;
11084         esac
11085     fi
11086     $rm -f try try.c
11087     set d_semctl_semun
11088     eval $setvar
11089     case "$d_semctl_semun" in
11090     $define)
11091         echo "You can use union semun for semctl IPC_STAT." >&4
11092         also='also'
11093         ;;
11094     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11095         also=''
11096         ;;
11097     esac
11098
11099     : see whether semctl IPC_STAT can use struct semid_ds pointer
11100     $cat > try.c <<'END'
11101 #include <sys/types.h>
11102 #include <sys/ipc.h>
11103 #include <sys/sem.h>
11104 #include <sys/stat.h>
11105 #include "try.h"
11106 #include <stdio.h>
11107 #include <errno.h>
11108 #ifndef errno
11109 extern int errno;
11110 #endif
11111 int main() {
11112     struct semid_ds arg;
11113     int sem, st;
11114
11115 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11116     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11117     if (sem > -1) {
11118 #       ifdef IPC_STAT
11119         st = semctl(sem, 0, IPC_STAT, &arg);
11120         if (st == 0)
11121             printf("semid_ds\n");
11122         else
11123 #       endif /* IPC_STAT */
11124             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11125 #       ifdef IPC_RMID
11126         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11127 #       endif /* IPC_RMID */
11128             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11129     } else
11130 #endif /* IPC_PRIVATE && ... */
11131         printf("semget failed: errno = %d\n", errno);
11132
11133     return 0;
11134 }
11135 END
11136     val="$undef"
11137     set try
11138     if eval $compile; then
11139         xxx=`./try`
11140         case "$xxx" in
11141         semid_ds) val="$define" ;;
11142         esac
11143     fi
11144     $rm -f try try.c
11145     set d_semctl_semid_ds
11146     eval $setvar
11147     case "$d_semctl_semid_ds" in
11148     $define)
11149         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11150         ;;
11151     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11152         ;;
11153     esac
11154     $rm -f try.h
11155     ;;
11156 *)  val="$undef"
11157
11158     # We do not have the full sem*(2) library, so assume we can not
11159     # use either.
11160
11161     set d_semctl_semun
11162     eval $setvar
11163
11164     set d_semctl_semid_ds
11165     eval $setvar
11166     ;;
11167 esac
11168
11169 : see if setegid exists
11170 set setegid d_setegid
11171 eval $inlibc
11172
11173 : see if seteuid exists
11174 set seteuid d_seteuid
11175 eval $inlibc
11176
11177 : see if setgrent exists
11178 set setgrent d_setgrent
11179 eval $inlibc
11180
11181 : see if sethostent exists
11182 set sethostent d_sethent
11183 eval $inlibc
11184
11185 : see if setlinebuf exists
11186 set setlinebuf d_setlinebuf
11187 eval $inlibc
11188
11189 : see if setlocale exists
11190 set setlocale d_setlocale
11191 eval $inlibc
11192
11193 : see if setnetent exists
11194 set setnetent d_setnent
11195 eval $inlibc
11196
11197 : see if setprotoent exists
11198 set setprotoent d_setpent
11199 eval $inlibc
11200
11201 : see if setpgid exists
11202 set setpgid d_setpgid
11203 eval $inlibc
11204
11205 : see if setpgrp2 exists
11206 set setpgrp2 d_setpgrp2
11207 eval $inlibc
11208
11209 : see if setpriority exists
11210 set setpriority d_setprior
11211 eval $inlibc
11212
11213 : see if setproctitle exists
11214 set setproctitle d_setproctitle
11215 eval $inlibc
11216
11217 : see if setpwent exists
11218 set setpwent d_setpwent
11219 eval $inlibc
11220
11221 : see if setregid exists
11222 set setregid d_setregid
11223 eval $inlibc
11224 set setresgid d_setresgid
11225 eval $inlibc
11226
11227 : see if setreuid exists
11228 set setreuid d_setreuid
11229 eval $inlibc
11230 set setresuid d_setresuid
11231 eval $inlibc
11232
11233 : see if setrgid exists
11234 set setrgid d_setrgid
11235 eval $inlibc
11236
11237 : see if setruid exists
11238 set setruid d_setruid
11239 eval $inlibc
11240
11241 : see if setservent exists
11242 set setservent d_setsent
11243 eval $inlibc
11244
11245 : see if setsid exists
11246 set setsid d_setsid
11247 eval $inlibc
11248
11249 : see if setvbuf exists
11250 set setvbuf d_setvbuf
11251 eval $inlibc
11252
11253 : see if sfio.h is available
11254 set sfio.h i_sfio
11255 eval $inhdr
11256
11257
11258 : see if sfio library is available
11259 case "$i_sfio" in
11260 $define)
11261         val=''
11262         set sfreserve val
11263         eval $inlibc
11264         ;;
11265 *)
11266         val="$undef"
11267         ;;
11268 esac
11269 : Ok, but do we want to use it.
11270 case "$val" in
11271 $define)
11272         case "$usesfio" in
11273         true|$define|[yY]*) dflt='y';;
11274         *) dflt='n';;
11275         esac
11276         echo "$package can use the sfio library, but it is experimental."
11277         case "$useperlio" in
11278         "$undef")
11279             echo "For sfio also the PerlIO abstraction layer is needed."
11280             echo "Earlier you said you wouldn't want that."
11281             ;;
11282         esac
11283         rp="You seem to have sfio available, do you want to try using it?"
11284         . ./myread
11285         case "$ans" in
11286         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11287                 useperlio="$define"
11288                 val="$define"
11289                 ;;
11290         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11291                 val="$undef"
11292                 : Remove sfio from list of libraries to use
11293                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11294                 shift
11295                 libs="$*"
11296                 echo "libs = $libs" >&4
11297                 ;;
11298         esac
11299         ;;
11300 *)      case "$usesfio" in
11301         true|$define|[yY]*)
11302                 echo "Sorry, cannot find sfio on this machine." >&4
11303                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11304                 val="$undef"
11305                 ;;
11306         esac
11307         ;;
11308 esac
11309 set d_sfio
11310 eval $setvar
11311 case "$d_sfio" in
11312 $define) usesfio='true';;
11313 *) usesfio='false';;
11314 esac
11315
11316 : see if shmctl exists
11317 set shmctl d_shmctl
11318 eval $inlibc
11319
11320 : see if shmget exists
11321 set shmget d_shmget
11322 eval $inlibc
11323
11324 : see if shmat exists
11325 set shmat d_shmat
11326 eval $inlibc
11327 : see what shmat returns
11328 case "$d_shmat" in
11329 "$define")
11330         $cat >shmat.c <<'END'
11331 #include <sys/shm.h>
11332 void *shmat();
11333 END
11334         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11335                 shmattype='void *'
11336         else
11337                 shmattype='char *'
11338         fi
11339         echo "and it returns ($shmattype)." >&4
11340         : see if a prototype for shmat is available
11341         xxx=`./findhdr sys/shm.h`
11342         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11343         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11344                 val="$define"
11345         else
11346                 val="$undef"
11347         fi
11348         $rm -f shmat.[co]
11349         ;;
11350 *)
11351         val="$undef"
11352         ;;
11353 esac
11354 set d_shmatprototype
11355 eval $setvar
11356
11357 : see if shmdt exists
11358 set shmdt d_shmdt
11359 eval $inlibc
11360
11361 : see how much of the 'shm*(2)' library is present.
11362 h_shm=true
11363 echo " "
11364 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11365 *"$undef"*) h_shm=false;;
11366 esac
11367 case "$osname" in
11368 freebsd)
11369     case "`ipcs 2>&1`" in
11370     "SVID shared memory"*"not configured"*)
11371         echo "Your $osname does not have the shm*(2) configured." >&4
11372         h_shm=false
11373         val="$undef"
11374         set shmctl d_shmctl
11375         evat $setvar
11376         set shmget d_shmget
11377         evat $setvar
11378         set shmat d_shmat
11379         evat $setvar
11380         set shmdt d_shmdt
11381         evat $setvar
11382         ;;
11383     esac
11384     ;;
11385 esac
11386 : we could also check for sys/ipc.h ...
11387 if $h_shm && $test `./findhdr sys/shm.h`; then
11388         echo "You have the full shm*(2) library." >&4
11389         val="$define"
11390 else
11391         echo "You don't have the full shm*(2) library." >&4
11392         val="$undef"
11393 fi
11394 set d_shm
11395 eval $setvar
11396
11397 echo " "
11398 : see if we have sigaction
11399 if set sigaction val -f d_sigaction; eval $csym; $val; then
11400         echo 'sigaction() found.' >&4
11401         $cat > try.c <<'EOP'
11402 #include <stdio.h>
11403 #include <sys/types.h>
11404 #include <signal.h>
11405 int main()
11406 {
11407     struct sigaction act, oact;
11408     act.sa_flags = 0;
11409     oact.sa_handler = 0;
11410     /* so that act and oact are used */
11411     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11412 }
11413 EOP
11414         set try
11415         if eval $compile_ok; then
11416                 val="$define"
11417         else
11418                 echo "But you don't seem to have a useable struct sigaction." >&4
11419                 val="$undef"
11420         fi
11421 else
11422         echo 'sigaction NOT found.' >&4
11423         val="$undef"
11424 fi
11425 set d_sigaction; eval $setvar
11426 $rm -f try try$_o try.c
11427
11428 : see if sigsetjmp exists
11429 echo " "
11430 case "$d_sigsetjmp" in
11431 '')
11432         $cat >try.c <<'EOP'
11433 #include <setjmp.h>
11434 sigjmp_buf env;
11435 int set = 1;
11436 int main()
11437 {
11438         if (sigsetjmp(env,1))
11439                 exit(set);
11440         set = 0;
11441         siglongjmp(env, 1);
11442         exit(1);
11443 }
11444 EOP
11445         set try
11446         if eval $compile; then
11447                 if ./try >/dev/null 2>&1; then
11448                         echo "POSIX sigsetjmp found." >&4
11449                         val="$define"
11450                 else
11451                         $cat >&4 <<EOM
11452 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11453 I'll ignore them.
11454 EOM
11455                         val="$undef"
11456                 fi
11457         else
11458                 echo "sigsetjmp not found." >&4
11459                 val="$undef"
11460         fi
11461         ;;
11462 *) val="$d_sigsetjmp"
11463         case "$d_sigsetjmp" in
11464         $define) echo "POSIX sigsetjmp found." >&4;;
11465         $undef) echo "sigsetjmp not found." >&4;;
11466         esac
11467         ;;
11468 esac
11469 set d_sigsetjmp
11470 eval $setvar
11471 $rm -f try.c try
11472
11473 : see if socks5_init exists
11474 set socks5_init d_socks5_init
11475 eval $inlibc
11476
11477 : see if sys/stat.h is available
11478 set sys/stat.h i_sysstat
11479 eval $inhdr
11480
11481
11482 : see if stat knows about block sizes
11483 echo " "
11484 echo "Checking to see if your struct stat has st_blocks field..." >&4
11485 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11486 eval $hasfield
11487
11488
11489 : see if this is a sys/vfs.h system
11490 set sys/vfs.h i_sysvfs
11491 eval $inhdr
11492
11493
11494 : see if this is a sys/statfs.h system
11495 set sys/statfs.h i_sysstatfs
11496 eval $inhdr
11497
11498
11499 echo " "
11500 echo "Checking to see if your system supports struct statfs..." >&4
11501 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
11502 eval $hasstruct
11503 case "$d_statfs_s" in
11504 "$define")      echo "Yes, it does."   ;;
11505 *)              echo "No, it doesn't." ;;
11506 esac
11507
11508
11509
11510 : see if struct statfs knows about f_flags
11511 case "$d_statfs_s" in
11512 define) 
11513         echo " "
11514         echo "Checking to see if your struct statfs has f_flags field..." >&4
11515         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
11516         eval $hasfield
11517         ;;
11518 *)      val="$undef"
11519         set d_statfs_f_flags
11520         eval $setvar
11521         ;;
11522 esac
11523 case "$d_statfs_f_flags" in
11524 "$define")      echo "Yes, it does."   ;;
11525 *)              echo "No, it doesn't." ;;
11526 esac
11527
11528 : see if _ptr and _cnt from stdio act std
11529 echo " "
11530 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11531         echo "(Looks like you have stdio.h from Linux.)"
11532         case "$stdio_ptr" in
11533         '') stdio_ptr='((fp)->_IO_read_ptr)'
11534                 ptr_lval=$define
11535                 ;;
11536         *)      ptr_lval=$d_stdio_ptr_lval;;
11537         esac
11538         case "$stdio_cnt" in
11539         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11540                 cnt_lval=$undef
11541                 ;;
11542         *)      cnt_lval=$d_stdio_cnt_lval;;
11543         esac
11544         case "$stdio_base" in
11545         '') stdio_base='((fp)->_IO_read_base)';;
11546         esac
11547         case "$stdio_bufsiz" in
11548         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11549         esac
11550 else
11551         case "$stdio_ptr" in
11552         '') stdio_ptr='((fp)->_ptr)'
11553                 ptr_lval=$define
11554                 ;;
11555         *)      ptr_lval=$d_stdio_ptr_lval;;
11556         esac
11557         case "$stdio_cnt" in
11558         '') stdio_cnt='((fp)->_cnt)'
11559                 cnt_lval=$define
11560                 ;;
11561         *)      cnt_lval=$d_stdio_cnt_lval;;
11562         esac
11563         case "$stdio_base" in
11564         '') stdio_base='((fp)->_base)';;
11565         esac
11566         case "$stdio_bufsiz" in
11567         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11568         esac
11569 fi
11570 : test whether _ptr and _cnt really work
11571 echo "Checking how std your stdio is..." >&4
11572 $cat >try.c <<EOP
11573 #include <stdio.h>
11574 #define FILE_ptr(fp)    $stdio_ptr
11575 #define FILE_cnt(fp)    $stdio_cnt
11576 int main() {
11577         FILE *fp = fopen("try.c", "r");
11578         char c = getc(fp);
11579         if (
11580                 18 <= FILE_cnt(fp) &&
11581                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11582         )
11583                 exit(0);
11584         exit(1);
11585 }
11586 EOP
11587 val="$undef"
11588 set try
11589 if eval $compile; then
11590         if ./try; then
11591                 echo "Your stdio acts pretty std."
11592                 val="$define"
11593         else
11594                 echo "Your stdio isn't very std."
11595         fi
11596 else
11597         echo "Your stdio doesn't appear very std."
11598 fi
11599 $rm -f try.c try
11600 set d_stdstdio
11601 eval $setvar
11602
11603 : Can _ptr be used as an lvalue?
11604 case "$d_stdstdio$ptr_lval" in
11605 $define$define) val=$define ;;
11606 *) val=$undef ;;
11607 esac
11608 set d_stdio_ptr_lval
11609 eval $setvar
11610
11611 : Can _cnt be used as an lvalue?
11612 case "$d_stdstdio$cnt_lval" in
11613 $define$define) val=$define ;;
11614 *) val=$undef ;;
11615 esac
11616 set d_stdio_cnt_lval
11617 eval $setvar
11618
11619 : see if _base is also standard
11620 val="$undef"
11621 case "$d_stdstdio" in
11622 $define)
11623         $cat >try.c <<EOP
11624 #include <stdio.h>
11625 #define FILE_base(fp)   $stdio_base
11626 #define FILE_bufsiz(fp) $stdio_bufsiz
11627 int main() {
11628         FILE *fp = fopen("try.c", "r");
11629         char c = getc(fp);
11630         if (
11631                 19 <= FILE_bufsiz(fp) &&
11632                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11633         )
11634                 exit(0);
11635         exit(1);
11636 }
11637 EOP
11638         set try
11639         if eval $compile; then
11640                 if ./try; then
11641                         echo "And its _base field acts std."
11642                         val="$define"
11643                 else
11644                         echo "But its _base field isn't std."
11645                 fi
11646         else
11647                 echo "However, it seems to be lacking the _base field."
11648         fi
11649         $rm -f try.c try
11650         ;;
11651 esac
11652 set d_stdiobase
11653 eval $setvar
11654
11655 $cat >&4 <<EOM
11656 Checking how to access stdio streams by file descriptor number...
11657 EOM
11658 case "$stdio_stream_array" in
11659 '')     $cat >try.c <<EOCP
11660 #include <stdio.h>
11661 int main() {
11662   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11663     printf("yes\n");
11664 }
11665 EOCP
11666         for s in _iob __iob __sF
11667         do
11668                 set try -DSTDIO_STREAM_ARRAY=$s
11669                 if eval $compile; then
11670                         case "`./try$exe_ext`" in
11671                         yes)    stdio_stream_array=$s; break ;;
11672                         esac
11673                 fi
11674         done
11675         $rm -f try.* try$exe_ext
11676 esac
11677 case "$stdio_stream_array" in
11678 '')     $cat >&4 <<EOM
11679 I can't figure out how to access stdio streams by file descriptor number.
11680 EOM
11681         d_stdio_stream_array="$undef"
11682         ;;
11683 *)      $cat >&4 <<EOM
11684 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11685 EOM
11686         d_stdio_stream_array="$define"
11687         ;;
11688 esac
11689
11690 : see if strcoll exists
11691 set strcoll d_strcoll
11692 eval $inlibc
11693
11694 : check for structure copying
11695 echo " "
11696 echo "Checking to see if your C compiler can copy structs..." >&4
11697 $cat >try.c <<'EOCP'
11698 int main()
11699 {
11700         struct blurfl {
11701                 int dyick;
11702         } foo, bar;
11703
11704         foo = bar;
11705 }
11706 EOCP
11707 if $cc -c try.c >/dev/null 2>&1 ; then
11708         val="$define"
11709         echo "Yup, it can."
11710 else
11711         val="$undef"
11712         echo "Nope, it can't."
11713 fi
11714 set d_strctcpy
11715 eval $setvar
11716 $rm -f try.*
11717
11718 : see if strerror and/or sys_errlist[] exist
11719 echo " "
11720 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11721     if set strerror val -f d_strerror; eval $csym; $val; then
11722                 echo 'strerror() found.' >&4
11723                 d_strerror="$define"
11724                 d_strerrm='strerror(e)'
11725                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11726                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11727                         d_syserrlst="$define"
11728                 else
11729                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11730                         d_syserrlst="$undef"
11731                 fi
11732     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11733                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11734                 echo 'strerror() found in string header.' >&4
11735                 d_strerror="$define"
11736                 d_strerrm='strerror(e)'
11737                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11738                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11739                                 d_syserrlst="$define"
11740                 else
11741                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11742                         d_syserrlst="$undef"
11743                 fi
11744     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11745                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11746                 d_strerror="$undef"
11747                 d_syserrlst="$define"
11748                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11749     else
11750                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11751                 d_strerror="$undef"
11752                 d_syserrlst="$undef"
11753                 d_strerrm='"unknown"'
11754     fi
11755 fi
11756
11757 : see if strtod exists
11758 set strtod d_strtod
11759 eval $inlibc
11760
11761 : see if strtol exists
11762 set strtol d_strtol
11763 eval $inlibc
11764
11765 : see if strtold exists
11766 set strtold d_strtold
11767 eval $inlibc
11768
11769 : see if strtoll exists
11770 set strtoll d_strtoll
11771 eval $inlibc
11772
11773 case "$d_longlong-$d_strtoll" in
11774 "$define-$define")
11775         $cat <<EOM
11776 Checking whether your strtoll() works okay...
11777 EOM
11778         $cat >try.c <<'EOCP'
11779 #include <errno.h>
11780 #ifdef __hpux
11781 #define strtoll __strtoll
11782 #endif
11783 #include <stdio.h>
11784 extern long long int strtoll(char *s, char **, int); 
11785 static int bad = 0;
11786 int check(char *s, long long ell, int een) {
11787         long long gll;
11788         errno = 0;
11789         gll = strtoll(s, 0, 10);
11790         if (!((gll == ell) && (errno == een)))
11791                 bad++;
11792 }
11793 int main() {
11794         check(" 1",                                      1LL, 0);
11795         check(" 0",                                      0LL, 0);
11796         check("-1",                                     -1LL, 0);
11797         check("-9223372036854775808", -9223372036854775808LL, 0);
11798         check("-9223372036854775808", -9223372036854775808LL, 0);
11799         check(" 9223372036854775807",  9223372036854775807LL, 0);
11800         check("-9223372036854775808", -9223372036854775808LL, 0);
11801         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11802         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11803         if (!bad)
11804                 printf("ok\n");
11805 }
11806 EOCP
11807         set try
11808         if eval $compile; then
11809                 case "`./try`" in
11810                 ok) echo "Your strtoll() seems to be working okay." ;;
11811                 *) cat <<EOM >&4
11812 Your strtoll() doesn't seem to be working okay.
11813 EOM
11814                    d_strtoll="$undef"
11815                    ;;
11816                 esac
11817         fi
11818         ;;
11819 esac
11820
11821 : see if strtoul exists
11822 set strtoul d_strtoul
11823 eval $inlibc
11824
11825 : see if strtoull exists
11826 set strtoull d_strtoull
11827 eval $inlibc
11828
11829 case "$d_longlong-$d_strtoull" in
11830 "$define-$define")
11831         $cat <<EOM
11832 Checking whether your strtoull() works okay...
11833 EOM
11834         $cat >try.c <<'EOCP'
11835 #include <errno.h>
11836 #ifdef __hpux
11837 #define strtoull __strtoull
11838 #endif
11839 #include <stdio.h>
11840 extern unsigned long long int strtoull(char *s, char **, int); 
11841 static int bad = 0;
11842 int check(char *s, long long eull, int een) {
11843         long long gull;
11844         errno = 0;
11845         gull = strtoull(s, 0, 10);
11846         if (!((gull == eull) && (errno == een)))
11847                 bad++;
11848 }
11849 int main() {
11850         check(" 1",                                       1LL, 0);
11851         check(" 0",                                       0LL, 0);
11852         check("18446744073709551615", 18446744073709551615ULL, 0);
11853         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11854         if (!bad)
11855                 printf("ok\n");
11856 }
11857 EOCP
11858         set try
11859         if eval $compile; then
11860                 case "`./try`" in
11861                 ok) echo "Your strtoull() seems to be working okay." ;;
11862                 *) cat <<EOM >&4
11863 Your strtoull() doesn't seem to be working okay.
11864 EOM
11865                    d_strtoull="$undef"
11866                    ;;
11867                 esac
11868         fi
11869         ;;
11870 esac
11871
11872 : see if strtouq exists
11873 set strtouq d_strtouq
11874 eval $inlibc
11875
11876 : see if strxfrm exists
11877 set strxfrm d_strxfrm
11878 eval $inlibc
11879
11880 : see if symlink exists
11881 set symlink d_symlink
11882 eval $inlibc
11883
11884 : see if syscall exists
11885 set syscall d_syscall
11886 eval $inlibc
11887
11888 : see if sysconf exists
11889 set sysconf d_sysconf
11890 eval $inlibc
11891
11892 : see if system exists
11893 set system d_system
11894 eval $inlibc
11895
11896 : see if tcgetpgrp exists
11897 set tcgetpgrp d_tcgetpgrp
11898 eval $inlibc
11899
11900 : see if tcsetpgrp exists
11901 set tcsetpgrp d_tcsetpgrp
11902 eval $inlibc
11903
11904 : see if prototype for telldir is available
11905 echo " "
11906 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11907 eval $hasproto
11908
11909 : see if this is a sys/times.h system
11910 set sys/times.h i_systimes
11911 eval $inhdr
11912
11913 : see if times exists
11914 echo " "
11915 if set times val -f d_times; eval $csym; $val; then
11916         echo 'times() found.' >&4
11917         d_times="$define"
11918         inc=''
11919         case "$i_systimes" in
11920         "$define") inc='sys/times.h';;
11921         esac
11922         rp="What is the type returned by times() on this system?"
11923         set clock_t clocktype long stdio.h sys/types.h $inc
11924         eval $typedef_ask
11925 else
11926         echo 'times() NOT found, hope that will do.' >&4
11927         d_times="$undef"
11928         clocktype='int'
11929 fi
11930
11931 : see if truncate exists
11932 set truncate d_truncate
11933 eval $inlibc
11934
11935 : see if tzname[] exists
11936 echo " "
11937 if set tzname val -a d_tzname; eval $csym; $val; then
11938         val="$define"
11939         echo 'tzname[] found.' >&4
11940 else
11941         val="$undef"
11942         echo 'tzname[] NOT found.' >&4
11943 fi
11944 set d_tzname
11945 eval $setvar
11946
11947 : see if umask exists
11948 set umask d_umask
11949 eval $inlibc
11950
11951 : see if ustat exists
11952 set ustat d_ustat
11953 eval $inlibc
11954
11955 : backward compatibility for d_hvfork
11956 if test X$d_hvfork != X; then
11957         d_vfork="$d_hvfork"
11958         d_hvfork=''
11959 fi
11960 : see if there is a vfork
11961 val=''
11962 set vfork val
11963 eval $inlibc
11964
11965 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11966 : perl on Solaris 2.x, and probably elsewhere.
11967 case "$val" in
11968 $define)
11969         echo " "
11970         case "$usevfork" in
11971         false) dflt='n';;
11972         *) dflt='y';;
11973         esac
11974         cat <<'EOM'
11975  
11976 Perl can only use a vfork() that doesn't suffer from strict
11977 restrictions on calling functions or modifying global data in
11978 the child.  For example, glibc-2.1 contains such a vfork()
11979 that is unsuitable.  If your system provides a proper fork()
11980 call, chances are that you do NOT want perl to use vfork().
11981
11982 EOM
11983         rp="Do you still want to use vfork()?"
11984         . ./myread
11985         case "$ans" in
11986         y|Y) ;;
11987         *)
11988                 echo "Ok, we won't use vfork()."
11989                 val="$undef"
11990                 ;;
11991         esac
11992         ;;
11993 esac
11994 set d_vfork
11995 eval $setvar
11996 case "$d_vfork" in
11997 $define) usevfork='true';;
11998 *) usevfork='false';;
11999 esac
12000
12001 : see if this is an sysdir system
12002 set sys/dir.h i_sysdir
12003 eval $inhdr
12004
12005 : see if this is an sysndir system
12006 set sys/ndir.h i_sysndir
12007 eval $inhdr
12008
12009 : see if closedir exists
12010 set closedir d_closedir
12011 eval $inlibc
12012
12013 case "$d_closedir" in
12014 "$define")
12015         echo " "
12016         echo "Checking whether closedir() returns a status..." >&4
12017         cat > closedir.c <<EOM
12018 #$i_dirent I_DIRENT             /**/
12019 #$i_sysdir I_SYS_DIR            /**/
12020 #$i_sysndir I_SYS_NDIR          /**/
12021 #$i_systypes I_SYS_TYPES        /**/
12022
12023 #if defined(I_SYS_TYPES)
12024 #include <sys/types.h>
12025 #endif
12026 #if defined(I_DIRENT)
12027 #include <dirent.h>
12028 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12029 #include <sys/dir.h>
12030 #endif
12031 #else
12032 #ifdef I_SYS_NDIR
12033 #include <sys/ndir.h>
12034 #else
12035 #ifdef I_SYS_DIR
12036 #ifdef hp9000s500
12037 #include <ndir.h>       /* may be wrong in the future */
12038 #else
12039 #include <sys/dir.h>
12040 #endif
12041 #endif
12042 #endif
12043 #endif 
12044 int main() { return closedir(opendir(".")); }
12045 EOM
12046         set closedir
12047         if eval $compile_ok; then
12048                 if ./closedir > /dev/null 2>&1 ; then
12049                         echo "Yes, it does."
12050                         val="$undef"
12051                 else
12052                         echo "No, it doesn't."
12053                         val="$define"
12054                 fi
12055         else
12056                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12057                 val="$define"
12058         fi
12059         ;;
12060 *)
12061         val="$undef";
12062         ;;
12063 esac
12064 set d_void_closedir
12065 eval $setvar
12066 $rm -f closedir*
12067 : check for volatile keyword
12068 echo " "
12069 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12070 $cat >try.c <<'EOCP'
12071 int main()
12072 {
12073         typedef struct _goo_struct goo_struct;
12074         goo_struct * volatile goo = ((goo_struct *)0);
12075         struct _goo_struct {
12076                 long long_int;
12077                 int reg_int;
12078                 char char_var;
12079         };
12080         typedef unsigned short foo_t;
12081         char *volatile foo;
12082         volatile int bar;
12083         volatile foo_t blech;
12084         foo = foo;
12085 }
12086 EOCP
12087 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12088         val="$define"
12089         echo "Yup, it does."
12090 else
12091         val="$undef"
12092         echo "Nope, it doesn't."
12093 fi
12094 set d_volatile
12095 eval $setvar
12096 $rm -f try.*
12097
12098 : see if there is a wait4
12099 set wait4 d_wait4
12100 eval $inlibc
12101
12102 : see if waitpid exists
12103 set waitpid d_waitpid
12104 eval $inlibc
12105
12106 : see if wcstombs exists
12107 set wcstombs d_wcstombs
12108 eval $inlibc
12109
12110 : see if wctomb exists
12111 set wctomb d_wctomb
12112 eval $inlibc
12113
12114 : preserve RCS keywords in files with variable substitution, grrr
12115 Date='$Date'
12116 Id='$Id'
12117 Log='$Log'
12118 RCSfile='$RCSfile'
12119 Revision='$Revision'
12120
12121 case "$crosscompile" in
12122 ''|[nN]*) crosscompile="$undef" ;;
12123 esac
12124
12125 case "$osname" in
12126 next|rhapsody|darwin) multiarch="$define" ;;
12127 esac
12128 case "$multiarch" in
12129 ''|[nN]*) multiarch="$undef" ;;
12130 esac
12131
12132 : check for alignment requirements
12133 echo " "
12134 case "$crosscompile$multiarch" in
12135 *$define*)
12136         $cat <<EOM
12137 You seem to be either cross-compiling or doing a multiarchitecture build,
12138 skipping the memory alignment check.
12139
12140 EOM
12141         case "$alignbytes" in
12142         '') alignbytes=8 ;;
12143         esac
12144         ;;
12145 *)
12146         case "$alignbytes" in
12147         '') echo "Checking alignment constraints..." >&4
12148                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12149                         $cat >try.c <<'EOCP'
12150 typedef long double NV;
12151 EOCP
12152                 else
12153                         $cat >try.c <<'EOCP'
12154 typedef double NV;
12155 EOCP
12156                 fi
12157                 $cat >>try.c <<'EOCP'
12158 #include <stdio.h>
12159 struct foobar {
12160         char foo;
12161         NV bar;
12162 } try_algn;
12163 int main()
12164 {
12165     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12166     return(0);
12167 }
12168 EOCP
12169                 set try
12170                 if eval $compile_ok; then
12171                         dflt=`./try`
12172                 else
12173                         dflt='8'
12174                         echo "(I can't seem to compile the test program...)"
12175                 fi
12176                 ;;
12177         *) dflt="$alignbytes"
12178                 ;;
12179         esac
12180         rp="Doubles must be aligned on a how-many-byte boundary?"
12181         . ./myread
12182         alignbytes="$ans"
12183         $rm -f try.c try
12184         ;;
12185 esac
12186
12187
12188 : set the base revision
12189 baserev=5.0
12190
12191 : check for ordering of bytes in a long
12192 echo " "
12193 case "$crosscompile$multiarch" in
12194 *$define*)
12195         $cat <<EOM
12196 You seem to be either cross-compiling or doing a multiarchitecture build,
12197 skipping the byteorder check.
12198
12199 EOM
12200         byteorder='0xffff'
12201         ;;
12202 *)
12203         case "$byteorder" in
12204         '')
12205                 $cat <<'EOM'
12206 In the following, larger digits indicate more significance.  A big-endian
12207 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12208 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12209 machines may have weird orders like 3412.  A Cray will report 87654321,
12210 an Alpha will report 12345678. If the test program works the default is
12211 probably right.
12212 I'm now running the test program...
12213 EOM
12214                 $cat >try.c <<'EOCP'
12215 #include <stdio.h>
12216 int main()
12217 {
12218         int i;
12219         union {
12220                 unsigned long l;
12221                 char c[sizeof(long)];
12222         } u;
12223
12224         if (sizeof(long) > 4)
12225                 u.l = (0x08070605L << 32) | 0x04030201L;
12226         else
12227                 u.l = 0x04030201L;
12228         for (i = 0; i < sizeof(long); i++)
12229                 printf("%c", u.c[i]+'0');
12230         printf("\n");
12231         exit(0);
12232 }
12233 EOCP
12234                 xxx_prompt=y
12235                 set try
12236                 if eval $compile && ./try > /dev/null; then
12237                         dflt=`./try`
12238                         case "$dflt" in
12239                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12240                                 echo "(The test program ran ok.)"
12241                                 echo "byteorder=$dflt"
12242                                 xxx_prompt=n
12243                         ;;
12244                         ????|????????) echo "(The test program ran ok.)" ;;
12245                         *) echo "(The test program didn't run right for some reason.)" ;;
12246                         esac
12247                 else
12248                         dflt='4321'
12249                         cat <<'EOM'
12250 (I can't seem to compile the test program.  Guessing big-endian...)
12251 EOM
12252                 fi
12253                 case "$xxx_prompt" in
12254                 y)
12255                         rp="What is the order of bytes in a long?"
12256                         . ./myread
12257                         byteorder="$ans"
12258                         ;;
12259                 *)      byteorder=$dflt
12260                         ;;
12261                 esac
12262                 ;;
12263         esac
12264         $rm -f try.c try
12265         ;;
12266 esac
12267
12268
12269 : how do we catenate cpp tokens here?
12270 echo " "
12271 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12272 $cat >cpp_stuff.c <<'EOCP'
12273 #define RCAT(a,b)a/**/b
12274 #define ACAT(a,b)a ## b
12275 RCAT(Rei,ser)
12276 ACAT(Cir,cus)
12277 EOCP
12278 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12279 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12280         echo "Oh!  Smells like ANSI's been here." >&4
12281         echo "We can catify or stringify, separately or together!"
12282         cpp_stuff=42
12283 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12284         echo "Ah, yes!  The good old days!" >&4
12285         echo "However, in the good old days we don't know how to stringify and"
12286         echo "catify at the same time."
12287         cpp_stuff=1
12288 else
12289         $cat >&4 <<EOM
12290 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12291 to have to edit the values of CAT[2-5] in config.h...
12292 EOM
12293         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12294 fi
12295 $rm -f cpp_stuff.*
12296
12297 : see if this is a db.h system
12298 set db.h i_db
12299 eval $inhdr
12300
12301 case "$i_db" in
12302 $define)
12303         : Check db version.
12304         echo " "
12305         echo "Checking Berkeley DB version ..." >&4
12306         $cat >try.c <<EOCP
12307 #$d_const HASCONST
12308 #ifndef HASCONST
12309 #define const
12310 #endif
12311 #include <sys/types.h>
12312 #include <stdio.h>
12313 #include <db.h>
12314 int main()
12315 {
12316 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12317     int Major, Minor, Patch ;
12318     unsigned long Version ;
12319     (void)db_version(&Major, &Minor, &Patch) ;
12320     printf("You have Berkeley DB Version 2 or greater\n");
12321
12322     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12323                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12324     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12325                 Major, Minor, Patch) ;
12326
12327     /* check that db.h & libdb are compatible */
12328     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12329         printf("db.h and libdb are incompatible\n") ;
12330         exit(3);        
12331     }
12332
12333     printf("db.h and libdb are compatible\n") ;
12334
12335     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12336                 + DB_VERSION_PATCH ;
12337
12338     /* needs to be >= 2.3.4 */
12339     if (Version < 2003004) {
12340     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12341         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12342         exit(2);        
12343     }
12344
12345     exit(0);
12346 #else
12347 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12348     printf("You have Berkeley DB Version 1\n");
12349     exit(0);    /* DB version < 2: the coast is clear. */
12350 #else
12351     exit(1);    /* <db.h> not Berkeley DB? */
12352 #endif
12353 #endif
12354 }
12355 EOCP
12356         set try
12357         if eval $compile_ok && ./try; then
12358                 echo 'Looks OK.' >&4
12359         else
12360                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12361                 i_db=$undef
12362                 case " $libs " in
12363                 *"-ldb "*)
12364                         : Remove db from list of libraries to use
12365                         echo "Removing unusable -ldb from library list" >&4
12366                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12367                         shift
12368                         libs="$*"
12369                         echo "libs = $libs" >&4
12370                         ;;
12371                 esac
12372         fi
12373         $rm -f try.*
12374         ;;
12375 esac
12376
12377 case "$i_db" in
12378 define)
12379         : Check the return type needed for hash 
12380         echo " "
12381         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12382         $cat >try.c <<EOCP
12383 #$d_const HASCONST
12384 #ifndef HASCONST
12385 #define const
12386 #endif
12387 #include <sys/types.h>
12388 #include <db.h>
12389
12390 #ifndef DB_VERSION_MAJOR
12391 u_int32_t hash_cb (ptr, size)
12392 const void *ptr;
12393 size_t size;
12394 {
12395 }
12396 HASHINFO info;
12397 int main()
12398 {
12399         info.hash = hash_cb;
12400 }
12401 #endif
12402 EOCP
12403         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12404                 if $contains warning try.out >>/dev/null 2>&1 ; then
12405                         db_hashtype='int'
12406                 else
12407                         db_hashtype='u_int32_t'
12408                 fi
12409         else
12410                 : XXX Maybe we should just give up here.
12411                 db_hashtype=u_int32_t
12412                 $cat try.out >&4
12413                 echo "Help:  I can't seem to compile the db test program." >&4
12414                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12415         fi
12416         $rm -f try.*
12417         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12418         ;;
12419 *)      db_hashtype=u_int32_t
12420         ;;
12421 esac
12422 case "$i_db" in
12423 define)
12424         : Check the return type needed for prefix 
12425         echo " "
12426         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12427         cat >try.c <<EOCP
12428 #$d_const HASCONST
12429 #ifndef HASCONST
12430 #define const
12431 #endif
12432 #include <sys/types.h>
12433 #include <db.h>
12434
12435 #ifndef DB_VERSION_MAJOR
12436 size_t prefix_cb (key1, key2)
12437 const DBT *key1;
12438 const DBT *key2;
12439 {
12440 }
12441 BTREEINFO info;
12442 int main()
12443 {
12444         info.prefix = prefix_cb;
12445 }
12446 #endif
12447 EOCP
12448         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12449                 if $contains warning try.out >>/dev/null 2>&1 ; then
12450                         db_prefixtype='int'
12451                 else
12452                         db_prefixtype='size_t'
12453                 fi
12454         else
12455                 db_prefixtype='size_t'
12456                 : XXX Maybe we should just give up here.
12457                 $cat try.out >&4
12458                 echo "Help:  I can't seem to compile the db test program." >&4
12459                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12460         fi
12461         $rm -f try.*
12462         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12463         ;;
12464 *)      db_prefixtype='size_t'
12465         ;;
12466 esac
12467
12468 : check for void type
12469 echo " "
12470 echo "Checking to see how well your C compiler groks the void type..." >&4
12471 case "$voidflags" in
12472 '')
12473         $cat >try.c <<'EOCP'
12474 #if TRY & 1
12475 void sub() {
12476 #else
12477 sub() {
12478 #endif
12479         extern void moo();      /* function returning void */
12480         void (*goo)();          /* ptr to func returning void */
12481 #if TRY & 8
12482         void *hue;              /* generic ptr */
12483 #endif
12484 #if TRY & 2
12485         void (*foo[10])();
12486 #endif
12487
12488 #if TRY & 4
12489         if(goo == moo) {
12490                 exit(0);
12491         }
12492 #endif
12493         exit(0);
12494 }
12495 int main() { sub(); }
12496 EOCP
12497         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12498                 voidflags=$defvoidused
12499         echo "Good.  It appears to support void to the level $package wants.">&4
12500                 if $contains warning .out >/dev/null 2>&1; then
12501                         echo "However, you might get some warnings that look like this:"
12502                         $cat .out
12503                 fi
12504         else
12505 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12506                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12507                         echo "It supports 1..."
12508                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12509                                 echo "It also supports 2..."
12510                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12511                                         voidflags=7
12512                                         echo "And it supports 4 but not 8 definitely."
12513                                 else
12514                                         echo "It doesn't support 4..."
12515                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12516                                                 voidflags=11
12517                                                 echo "But it supports 8."
12518                                         else
12519                                                 voidflags=3
12520                                                 echo "Neither does it support 8."
12521                                         fi
12522                                 fi
12523                         else
12524                                 echo "It does not support 2..."
12525                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12526                                         voidflags=13
12527                                         echo "But it supports 4 and 8."
12528                                 else
12529                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12530                                                 voidflags=5
12531                                                 echo "And it supports 4 but has not heard about 8."
12532                                         else
12533                                                 echo "However it supports 8 but not 4."
12534                                         fi
12535                                 fi
12536                         fi
12537                 else
12538                         echo "There is no support at all for void."
12539                         voidflags=0
12540                 fi
12541         fi
12542 esac
12543 case "$voidflags" in
12544 "$defvoidused") ;;
12545 *)      $cat >&4 <<'EOM'
12546   Support flag bits are:
12547     1: basic void declarations.
12548     2: arrays of pointers to functions returning void.
12549     4: operations between pointers to and addresses of void functions.
12550     8: generic void pointers.
12551 EOM
12552         dflt="$voidflags";
12553         rp="Your void support flags add up to what?"
12554         . ./myread
12555         voidflags="$ans"
12556         ;;
12557 esac
12558 $rm -f try.* .out
12559
12560
12561 : How can we generate normalized random numbers ?
12562 echo " "
12563 echo "Looking for a random number function..." >&4
12564 case "$randfunc" in
12565 '')
12566         if set drand48 val -f; eval $csym; $val; then
12567                 dflt="drand48"
12568                 echo "Good, found drand48()." >&4
12569         elif set random val -f; eval $csym; $val; then
12570                 dflt="random"
12571                 echo "OK, found random()." >&4
12572         else
12573                 dflt="rand"
12574                 echo "Yick, looks like I have to use rand()." >&4
12575         fi
12576         echo " "
12577         ;;
12578 *)
12579         dflt="$randfunc"
12580         ;;
12581 esac
12582 cont=true
12583
12584 case "$ccflags" in
12585 *-Dmy_rand=*|*-Dmy_srand=*)
12586         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12587         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12588         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12589         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12590         ;;
12591 esac
12592
12593 while $test "$cont"; do
12594         rp="Use which function to generate random numbers?"
12595         . ./myread
12596         if $test "$ans" = "$dflt"; then
12597                 : null
12598         else
12599                 randbits=''
12600         fi
12601         randfunc="$ans"
12602         if set $ans val -f; eval $csym; $val; then
12603                 cont=''
12604         else
12605                 dflt=y
12606                 rp="I cannot find function $ans. Use that name anyway?"
12607                 . ./myread
12608                 dflt=rand
12609                 case "$ans" in
12610                         [yY]*) cont='';;
12611                 esac
12612         fi
12613         case "$cont" in
12614         '')
12615                 case "$randfunc" in
12616                 drand48)
12617                         drand01="drand48()"
12618                         seedfunc="srand48"
12619                         randbits=48
12620                         randseedtype=long
12621                         ;;
12622                 rand|random)
12623                         case "$randbits" in
12624                         '')
12625 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12626                                 $cat >try.c <<EOCP
12627 #$i_unistd I_UNISTD
12628 #$i_stdlib I_STDLIB
12629 #include <stdio.h>
12630 #ifdef I_UNISTD
12631 #  include <unistd.h>
12632 #endif
12633 #ifdef I_STDLIB
12634 #  include <stdlib.h>
12635 #endif
12636 int main()
12637 {
12638         register int i;
12639         register unsigned long tmp;
12640         register unsigned long max = 0L;
12641
12642         for (i = 1000; i; i--) {
12643                 tmp = (unsigned long) $randfunc();
12644                 if (tmp > max) max = tmp;
12645         }
12646         for (i = 0; max; i++)
12647                 max /= 2;
12648         printf("%d\n",i);
12649 }
12650 EOCP
12651                                 set try
12652                                 if eval $compile_ok; then
12653                                         dflt=`try`
12654                                 else
12655                                         dflt='?'
12656                                         echo "(I can't seem to compile the test program...)"
12657                                 fi
12658                                 ;;
12659                         *)
12660                                 dflt="$randbits"
12661                                 ;;
12662                         esac
12663                         rp="How many bits does your $randfunc() function produce?"
12664                         . ./myread
12665                         randbits="$ans"
12666                         $rm -f try.c try
12667                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12668                         seedfunc="s$randfunc"
12669                         randseedtype=unsigned
12670                         ;;
12671                 *)
12672                         dflt="31"
12673                         rp="How many bits does your $randfunc() function produce?"
12674                         . ./myread
12675                         randbits="$ans"
12676                         seedfunc="s$randfunc"
12677                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12678                         if set $seedfunc val -f; eval $csym; $val; then
12679                                 echo "(Using $seedfunc() to seed random generator)"
12680                         else
12681                                 echo "(Warning: no $seedfunc() to seed random generator)"
12682                                 seedfunc=rand
12683                         fi
12684                         randseedtype=unsigned
12685                         ;;
12686                 esac
12687                 ;;
12688         esac
12689 done
12690
12691 echo " "
12692 echo "Determining whether or not we are on an EBCDIC system..." >&4
12693 $cat >tebcdic.c <<'EOM'
12694 int main()
12695 {
12696   if ('M'==0xd4) return 0;
12697   return 1;
12698 }
12699 EOM
12700
12701 val=$undef
12702 set tebcdic
12703 if eval $compile_ok; then
12704         if ./tebcdic; then
12705                 echo "You have EBCDIC." >&4
12706                 val="$define"
12707         else
12708                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12709         fi
12710 else
12711         echo "I'm unable to compile the test program." >&4
12712         echo "I'll assume ASCII or some ISO Latin." >&4
12713 fi
12714 $rm -f tebcdic.c tebcdic
12715 set ebcdic
12716 eval $setvar
12717
12718 echo " "
12719 $cat >&4 <<EOM
12720 Checking how to flush all pending stdio output...
12721 EOM
12722 # I only know how to find the first 32 possibly open files on SunOS.
12723 # See also hints/sunos_4_1.sh and util.c  --AD
12724 case "$osname" in
12725 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12726 esac
12727 $cat >>try.c <<EOCP
12728 #include <stdio.h>
12729 #$i_unistd I_UNISTD
12730 #ifdef I_UNISTD
12731 # include <unistd.h>
12732 #endif
12733 #$d_sysconf HAS_SYSCONF
12734 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12735 #ifdef HAS_STDIO_STREAM_ARRAY
12736 # define STDIO_STREAM_ARRAY $stdio_stream_array
12737 #endif
12738 int main() {
12739   FILE* p = fopen("try.out", "w");
12740 #ifdef TRY_FPUTC
12741   fputc('x', p);
12742 #else
12743 # ifdef TRY_FPRINTF
12744   fprintf(p, "x");
12745 # endif
12746 #endif
12747 #ifdef TRY_FFLUSH_NULL
12748   fflush(NULL);
12749 #endif
12750 #ifdef TRY_FFLUSH_ALL
12751   {
12752     long open_max = -1;
12753 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12754     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12755 # else
12756 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12757     open_max = sysconf(_SC_OPEN_MAX);
12758 #  else
12759 #   ifdef FOPEN_MAX
12760     open_max = FOPEN_MAX;
12761 #   else
12762 #    ifdef OPEN_MAX
12763     open_max = OPEN_MAX;
12764 #    else
12765 #     ifdef _NFILE
12766     open_max = _NFILE;
12767 #     endif
12768 #    endif
12769 #   endif
12770 #  endif
12771 # endif 
12772 # ifdef HAS_STDIO_STREAM_ARRAY
12773     if (open_max > 0) {
12774       long i;
12775       for (i = 0; i < open_max; i++)
12776             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12777                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12778                 STDIO_STREAM_ARRAY[i]._flag)
12779                 fflush(&STDIO_STREAM_ARRAY[i]);
12780     }   
12781   }
12782 # endif
12783 #endif
12784   _exit(42);
12785 }
12786 EOCP
12787 : first we have to find out how _not_ to flush
12788 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12789     output=''
12790     set try -DTRY_FPUTC
12791     if eval $compile; then
12792             $rm -f try.out
12793             ./try$exe_ext 2>/dev/null
12794             if $test ! -s try.out -a "X$?" = X42; then
12795                 output=-DTRY_FPUTC
12796             fi
12797     fi
12798     case "$output" in
12799     '')
12800             set try -DTRY_FPRINTF
12801             $rm -f try.out
12802             if eval $compile; then
12803                     $rm -f try.out
12804                     ./try$exe_ext 2>/dev/null
12805                     if $test ! -s try.out -a "X$?" = X42; then
12806                         output=-DTRY_FPRINTF
12807                     fi
12808             fi
12809         ;;
12810     esac
12811 fi
12812 : check for fflush NULL behaviour
12813 case "$fflushNULL" in
12814 '')     set try -DTRY_FFLUSH_NULL $output
12815         if eval $compile; then
12816                 $rm -f try.out
12817                 ./try$exe_ext 2>/dev/null
12818                 code="$?"
12819                 if $test -s try.out -a "X$code" = X42; then
12820                         fflushNULL="`$cat try.out`"
12821                 else
12822                         if $test "X$code" != X42; then
12823                                 $cat >&4 <<EOM
12824 (If this test failed, don't worry, we'll try another method shortly.)
12825 EOM
12826                         fi
12827                 fi
12828         fi
12829         $rm -f core try.core core.try.*
12830         case "$fflushNULL" in
12831         x)      $cat >&4 <<EOM
12832 Your fflush(NULL) works okay for output streams.
12833 Let's see if it clobbers input pipes...
12834 EOM
12835 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12836 # bug that improperly flushes the input end of pipes.  So we avoid the
12837 # autoflush on fork/system/exec support for now. :-(
12838 $cat >tryp.c <<EOCP
12839 #include <stdio.h>
12840 int
12841 main(int argc, char **argv)
12842 {
12843     char buf[1024];
12844     int i;
12845     char *bp = buf;
12846     while (1) {
12847         while ((i = getc(stdin)) != -1
12848                && (*bp++ = i) != '\n'
12849                && bp < &buf[1024])
12850         /* DO NOTHING */ ;
12851         *bp = '\0';
12852         fprintf(stdout, "%s", buf);
12853         fflush(NULL);
12854         if (i == -1)
12855             return 0;
12856         bp = buf;
12857     }
12858 }
12859 EOCP
12860                 fflushNULL="$define"
12861                 set tryp
12862                 if eval $compile; then
12863                     $rm -f tryp.out
12864                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12865                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12866                        $cat >&4 <<EOM
12867 fflush(NULL) seems to behave okay with input streams.
12868 EOM
12869                         fflushNULL="$define"
12870                     else
12871                         $cat >&4 <<EOM
12872 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12873 EOM
12874                         fflushNULL="$undef"
12875                     fi
12876                 fi
12877                 $rm -f core tryp.c tryp.core core.tryp.*
12878                 ;;
12879         '')     $cat >&4 <<EOM
12880 Your fflush(NULL) isn't working (contrary to ANSI C).
12881 EOM
12882                 fflushNULL="$undef"
12883                 ;;
12884         *)      $cat >&4 <<EOM
12885 Cannot figure out whether your fflush(NULL) works or not.
12886 I'm assuming it doesn't (contrary to ANSI C).
12887 EOM
12888                 fflushNULL="$undef"
12889                 ;;
12890         esac
12891         ;;
12892 $define|true|[yY]*)
12893         fflushNULL="$define"
12894         ;;
12895 *)
12896         fflushNULL="$undef"
12897         ;;
12898 esac
12899 : check explicit looping only if NULL did not work, and if the pipe
12900 : bug does not show up on an explicit flush too
12901 case "$fflushNULL" in
12902 "$undef")
12903         $cat >tryp.c <<EOCP
12904 #include <stdio.h>
12905 int
12906 main(int argc, char **argv)
12907 {
12908     char buf[1024];
12909     int i;
12910     char *bp = buf;
12911     while (1) {
12912         while ((i = getc(stdin)) != -1
12913                && (*bp++ = i) != '\n'
12914                && bp < &buf[1024])
12915         /* DO NOTHING */ ;
12916         *bp = '\0';
12917         fprintf(stdout, "%s", buf);
12918         fflush(stdin);
12919         if (i == -1)
12920             return 0;
12921         bp = buf;
12922     }
12923 }
12924 EOCP
12925         set tryp
12926         if eval $compile; then
12927             $rm -f tryp.out
12928             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12929             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12930                $cat >&4 <<EOM
12931 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12932 EOM
12933                 : now check for fflushall behaviour
12934                 case "$fflushall" in
12935                 '')     set try -DTRY_FFLUSH_ALL $output
12936                         if eval $compile; then
12937                                 $cat >&4 <<EOM
12938 (Now testing the other method--but note that this also may fail.)
12939 EOM
12940                                 $rm -f try.out
12941                                 ./try$exe_ext 2>/dev/null
12942                                 if $test -s try.out -a "X$?" = X42; then
12943                                         fflushall="`$cat try.out`"
12944                                 fi
12945                         fi
12946                         $rm -f core try.core core.try.*
12947                         case "$fflushall" in
12948                         x)      $cat >&4 <<EOM
12949 Whew. Flushing explicitly all the stdio streams works.
12950 EOM
12951                                 fflushall="$define"
12952                                 ;;
12953                         '')     $cat >&4 <<EOM
12954 Sigh. Flushing explicitly all the stdio streams doesn't work.
12955 EOM
12956                                 fflushall="$undef"
12957                                 ;;
12958                         *)      $cat >&4 <<EOM
12959 Cannot figure out whether flushing stdio streams explicitly works or not.
12960 I'm assuming it doesn't.
12961 EOM
12962                                 fflushall="$undef"
12963                                 ;;
12964                         esac
12965                         ;;
12966                 "$define"|true|[yY]*)
12967                         fflushall="$define"
12968                         ;;
12969                 *)
12970                         fflushall="$undef"
12971                         ;;
12972                 esac
12973             else
12974                 $cat >&4 <<EOM
12975 All is futile.  Even fflush(stdin) clobbers input pipes!
12976 EOM
12977                 fflushall="$undef"
12978             fi
12979         else
12980             fflushall="$undef"
12981         fi
12982         $rm -f core tryp.c tryp.core core.tryp.*
12983         ;;
12984 *)      fflushall="$undef"
12985         ;;
12986 esac
12987
12988 case "$fflushNULL$fflushall" in
12989 undefundef)
12990         $cat <<EOM
12991 OK, I give up.  I cannot figure out how to flush pending stdio output.
12992 We won't be flushing handles at all before fork/exec/popen.
12993 EOM
12994         ;;
12995 esac
12996 $rm -f try.* try$exe_ext
12997
12998 : Store the full pathname to the ar program for use in the C program
12999 : Respect a hint or command line value for full_ar.
13000 case "$full_ar" in
13001 '') full_ar=$ar ;;
13002 esac
13003
13004 : Store the full pathname to the sed program for use in the C program
13005 full_sed=$sed
13006
13007 : see what type gids are declared as in the kernel
13008 echo " "
13009 echo "Looking for the type for group ids returned by getgid()."
13010 set gid_t gidtype xxx stdio.h sys/types.h
13011 eval $typedef
13012 case "$gidtype" in
13013 xxx)
13014         xxx=`./findhdr sys/user.h`
13015         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13016         case $1 in
13017         unsigned) dflt="$1 $2" ;;
13018         *) dflt="$1" ;;
13019         esac
13020         ;;
13021 *) dflt="$gidtype";;
13022 esac
13023 case "$gidtype" in
13024 gid_t) echo "gid_t found." ;;
13025 *)      rp="What is the type for group ids returned by getgid()?"
13026         . ./myread
13027         gidtype="$ans"
13028         ;;
13029 esac
13030
13031 echo " "
13032 case "$gidtype" in
13033 *_t) zzz="$gidtype"     ;;
13034 *)   zzz="gid"          ;;
13035 esac
13036 echo "Checking the size of $zzz..." >&4 
13037 cat > try.c <<EOCP
13038 #include <sys/types.h>
13039 #include <stdio.h>
13040 int main() {
13041     printf("%d\n", (int)sizeof($gidtype));
13042     exit(0);
13043 }
13044 EOCP
13045 set try
13046 if eval $compile_ok; then
13047         yyy=`./try`
13048         case "$yyy" in
13049         '')     gidsize=4
13050                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13051                 ;;
13052         *)      gidsize=$yyy
13053                 echo "Your $zzz is $gidsize bytes long."
13054                 ;;
13055         esac
13056 else
13057         gidsize=4
13058         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13059 fi
13060
13061
13062 echo " "
13063 case "$gidtype" in
13064 *_t) zzz="$gidtype"     ;;
13065 *)   zzz="gid"          ;;
13066 esac
13067 echo "Checking the sign of $zzz..." >&4 
13068 cat > try.c <<EOCP
13069 #include <sys/types.h>
13070 #include <stdio.h>
13071 int main() {
13072         $gidtype foo = -1;
13073         if (foo < 0)
13074                 printf("-1\n");
13075         else
13076                 printf("1\n");
13077 }
13078 EOCP
13079 set try
13080 if eval $compile; then
13081         yyy=`./try`
13082         case "$yyy" in
13083         '')     gidsign=1
13084                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13085                 ;;
13086         *)      gidsign=$yyy
13087                 case "$gidsign" in
13088                  1) echo "Your $zzz is unsigned." ;;
13089                 -1) echo "Your $zzz is signed."   ;;
13090                 esac
13091                 ;;
13092         esac
13093 else
13094         gidsign=1
13095         echo "(I can't compile the test program--guessing unsigned.)" >&4
13096 fi
13097
13098
13099 echo " "
13100
13101 if $test X"$quadtype" != X; then
13102
13103 echo "Checking how to print 64-bit integers..." >&4
13104
13105 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13106         $cat >try.c <<'EOCP'
13107 #include <sys/types.h>
13108 #include <stdio.h>
13109 int main() {
13110   int q = 12345678901;
13111   printf("%ld\n", q);
13112 }
13113 EOCP
13114         set try
13115         if eval $compile; then
13116                 yyy=`./try$exe_ext`
13117                 case "$yyy" in
13118                 12345678901)
13119                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13120                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13121                         echo "We will use %d."
13122                         ;;
13123                 esac
13124         fi
13125 fi
13126
13127 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13128         $cat >try.c <<'EOCP'
13129 #include <sys/types.h>
13130 #include <stdio.h>
13131 int main() {
13132   long q = 12345678901;
13133   printf("%ld\n", q);
13134 }
13135 EOCP
13136         set try
13137         if eval $compile; then
13138                 yyy=`./try$exe_ext`
13139                 case "$yyy" in
13140                 12345678901)
13141                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13142                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13143                         echo "We will use %ld."
13144                         ;;
13145                 esac
13146         fi
13147 fi
13148
13149 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13150         $cat >try.c <<'EOCP'
13151 #include <sys/types.h>
13152 #include <inttypes.h>
13153 #include <stdio.h>
13154 int main() {
13155   int64_t q = 12345678901;
13156   printf("%" PRId64 "\n", q);
13157 }
13158 EOCP
13159         set try
13160         if eval $compile; then
13161                 yyy=`./try$exe_ext`
13162                 case "$yyy" in
13163                 12345678901)
13164                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13165                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13166                         echo "We will use the C9X style."
13167                         ;;
13168                 esac
13169         fi
13170 fi
13171
13172 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13173         $cat >try.c <<'EOCP'
13174 #include <sys/types.h>
13175 #include <stdio.h>
13176 int main() {
13177   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13178   printf("%lld\n", q);
13179 }
13180 EOCP
13181         set try
13182         if eval $compile; then
13183                 yyy=`./try$exe_ext`
13184                 case "$yyy" in
13185                 12345678901)
13186                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13187                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13188                         echo "We will use the %lld style."
13189                         ;;
13190                 esac
13191         fi
13192 fi
13193
13194 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13195         $cat >try.c <<EOCP
13196 #include <sys/types.h>
13197 #include <stdio.h>
13198 int main() {
13199   $quadtype q = 12345678901;
13200   printf("%Ld\n", q);
13201 }
13202 EOCP
13203         set try
13204         if eval $compile; then
13205                 yyy=`./try$exe_ext`
13206                 case "$yyy" in
13207                 12345678901)
13208                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13209                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13210                         echo "We will use %Ld."
13211                         ;;
13212                 esac
13213         fi
13214 fi
13215
13216 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13217         $cat >try.c <<EOCP
13218 #include <sys/types.h>
13219 #include <stdio.h>
13220 int main() {
13221   $quadtype q = 12345678901;
13222   printf("%qd\n", q);
13223 }
13224 EOCP
13225         set try
13226         if eval $compile; then
13227                 yyy=`./try$exe_ext`
13228                 case "$yyy" in
13229                 12345678901)
13230                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13231                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13232                         echo "We will use %qd."
13233                         ;;
13234                 esac
13235         fi
13236 fi
13237
13238 if $test X"$sPRId64" = X; then
13239         echo "Cannot figure out how to print 64-bit integers." >&4
13240 fi
13241
13242 $rm -f try try.*
13243
13244 fi
13245
13246 case "$sPRId64" in
13247 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13248         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13249         ;;
13250 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13251         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13252         ;;
13253 esac
13254
13255
13256 echo " "
13257 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13258
13259 if $test X"$ivsize" = X8; then
13260         ivdformat="$sPRId64"
13261         uvuformat="$sPRIu64"
13262         uvoformat="$sPRIo64"
13263         uvxformat="$sPRIx64"
13264         uvXformat="$sPRIX64"
13265 else
13266         if $test X"$ivsize" = X"$longsize"; then
13267                 ivdformat='"ld"'
13268                 uvuformat='"lu"'
13269                 uvoformat='"lo"'
13270                 uvxformat='"lx"'
13271                 uvXformat='"lX"'
13272         else
13273                 if $test X"$ivsize" = X"$intsize"; then
13274                         ivdformat='"d"'
13275                         uvuformat='"u"'
13276                         uvoformat='"o"'
13277                         uvxformat='"x"'
13278                         uvXformat='"X"'
13279                 else
13280                         : far out
13281                         if $test X"$ivsize" = X"$shortsize"; then
13282                                 ivdformat='"hd"'
13283                                 uvuformat='"hu"'
13284                                 uvoformat='"ho"'
13285                                 uvxformat='"hx"'
13286                                 uvXformat='"hX"'
13287                         fi
13288                 fi
13289         fi
13290 fi
13291
13292 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13293         nveformat="$sPRIeldbl"
13294         nvfformat="$sPRIfldbl"
13295         nvgformat="$sPRIgldbl"
13296         nvEformat="$sPRIEldbl"
13297         nvFformat="$sPRIFldbl"
13298         nvGformat="$sPRIGldbl"
13299 else
13300         nveformat='"e"'
13301         nvfformat='"f"'
13302         nvgformat='"g"'
13303         nvEformat='"E"'
13304         nvFformat='"F"'
13305         nvGformat='"G"'
13306 fi
13307
13308 case "$ivdformat" in
13309 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13310     exit 1
13311     ;;
13312 esac
13313
13314
13315 echo " "
13316 $echo "Checking the format string to be used for gids..." >&4
13317
13318 case "$gidsign" in
13319 -1)     if $test X"$gidsize" = X"$ivsize"; then
13320                 gidformat="$ivdformat"
13321         else
13322                 if $test X"$gidsize" = X"$longsize"; then
13323                         gidformat='"ld"'
13324                 else
13325                         if $test X"$gidsize" = X"$intsize"; then
13326                                 gidformat='"d"'
13327                         else
13328                                 if $test X"$gidsize" = X"$shortsize"; then
13329                                         gidformat='"hd"'
13330                                 fi
13331                         fi
13332                 fi
13333         fi
13334         ;;
13335 *)      if $test X"$gidsize" = X"$uvsize"; then
13336                 gidformat="$uvuformat"
13337         else
13338                 if $test X"$gidsize" = X"$longsize"; then
13339                         gidformat='"lu"'
13340                 else
13341                         if $test X"$gidsize" = X"$intsize"; then
13342                                 gidformat='"u"'
13343                         else
13344                                 if $test X"$gidsize" = X"$shortsize"; then
13345                                         gidformat='"hu"'
13346                                 fi
13347                         fi
13348                 fi
13349         fi
13350         ;;
13351 esac
13352
13353 : see if getgroups exists
13354 set getgroups d_getgrps
13355 eval $inlibc
13356
13357 : see if setgroups exists
13358 set setgroups d_setgrps
13359 eval $inlibc
13360
13361
13362 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13363 echo " "
13364 case "$d_getgrps$d_setgrps" in
13365 *define*)
13366         case "$groupstype" in
13367         '') dflt="$gidtype" ;;
13368         *)  dflt="$groupstype" ;;
13369         esac
13370         $cat <<EOM
13371 What type of pointer is the second argument to getgroups() and setgroups()?
13372 Usually this is the same as group ids, $gidtype, but not always.
13373
13374 EOM
13375         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13376         . ./myread
13377         groupstype="$ans"
13378         ;;
13379 *)  groupstype="$gidtype";;
13380 esac
13381
13382 echo " "
13383 echo "Checking if your $make program sets \$(MAKE)..." >&4
13384 case "$make_set_make" in
13385 '')
13386         $sed 's/^X //' > testmake.mak << 'EOF'
13387 Xall:
13388 X       @echo 'maketemp="$(MAKE)"'
13389 EOF
13390         case "`$make -f testmake.mak 2>/dev/null`" in
13391         *maketemp=*) make_set_make='#' ;;
13392         *)      make_set_make="MAKE=$make" ;;
13393         esac
13394         $rm -f testmake.mak
13395         ;;
13396 esac
13397 case "$make_set_make" in
13398 '#') echo "Yup, it does.";;
13399 *) echo "Nope, it doesn't.";;
13400 esac
13401
13402 : see what type is used for mode_t
13403 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13404 set mode_t modetype int stdio.h sys/types.h
13405 eval $typedef_ask
13406
13407 : define a fucntion to check prototypes
13408 $cat > protochk <<EOSH
13409 $startsh
13410 cc="$cc"
13411 optimize="$optimize"
13412 ccflags="$ccflags"
13413 prototype="$prototype"
13414 define="$define"
13415 rm=$rm
13416 EOSH
13417
13418 $cat >> protochk <<'EOSH'
13419
13420 $rm -f try.c
13421 foo="$1"
13422 shift
13423 while test $# -ge 2; do
13424         case "$1" in
13425                 $define) echo "#include <$2>" >> try.c ;;
13426                 literal) echo "$2" >> try.c ;;
13427         esac
13428     shift 2
13429 done
13430 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13431 cat >> try.c <<'EOCP'
13432 #ifdef CAN_PROTOTYPE
13433 #define _(args) args
13434 #else
13435 #define _(args) ()
13436 #endif
13437 EOCP
13438 echo "$foo" >> try.c
13439 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13440 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13441 status=$?
13442 $rm -f try.[co]
13443 exit $status
13444 EOSH
13445 chmod +x protochk
13446 $eunicefix protochk
13447
13448 : see what type is used for size_t
13449 rp="What is the type used for the length parameter for string functions?"
13450 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13451 eval $typedef_ask
13452
13453 : check for type of arguments to gethostbyaddr. 
13454 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13455         case "$d_gethbyaddr" in
13456         $define)
13457                 $cat <<EOM
13458
13459 Checking to see what type of arguments are accepted by gethostbyaddr().
13460 EOM
13461                 hdrs="$define sys/types.h
13462                         $d_socket sys/socket.h 
13463                         $i_niin netinet/in.h 
13464                         $i_netdb netdb.h
13465                         $i_unistd unistd.h"
13466                 : The first arg can 'char *' or 'void *'
13467                 : The second arg is some of integral type
13468                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13469                         for yyy in size_t long int; do
13470                                 case "$netdb_host_type" in
13471                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13472                                         if ./protochk "$try" $hdrs; then
13473                                                 echo "Your system accepts $xxx for the first arg."
13474                                                 echo "...and $yyy for the second arg."
13475                                                 netdb_host_type="$xxx"
13476                                                 netdb_hlen_type="$yyy"
13477                                         fi
13478                                         ;;
13479                                 esac
13480                         done
13481                 done
13482                 : In case none of those worked, prompt the user.
13483                 case "$netdb_host_type" in
13484                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13485                         dflt='char *'
13486                         . ./myread
13487                         netdb_host_type=$ans
13488                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13489                         dflt="$sizetype"
13490                         . ./myread
13491                         netdb_hlen_type=$ans
13492                         ;;
13493                 esac
13494                 ;;
13495         *)      : no gethostbyaddr, so pick harmless defaults
13496                 netdb_host_type='char *'
13497                 netdb_hlen_type="$sizetype"
13498                 ;;
13499         esac
13500         # Remove the "const" if needed. -- but then we'll have a 
13501         # prototype clash!
13502         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13503 fi
13504
13505 : check for type of argument to gethostbyname. 
13506 if test "X$netdb_name_type" = X ; then
13507         case "$d_gethbyname" in
13508         $define)
13509                 $cat <<EOM
13510
13511 Checking to see what type of argument is accepted by gethostbyname().
13512 EOM
13513                 hdrs="$define sys/types.h
13514                         $d_socket sys/socket.h 
13515                         $i_niin netinet/in.h 
13516                         $i_netdb netdb.h
13517                         $i_unistd unistd.h"
13518                 for xxx in "const char *" "char *"; do
13519                         case "$netdb_name_type" in
13520                         '')     try="extern struct hostent *gethostbyname($xxx);"
13521                                 if ./protochk "$try" $hdrs; then
13522                                         echo "Your system accepts $xxx."
13523                                         netdb_name_type="$xxx"
13524                                 fi
13525                                 ;;
13526                         esac
13527                 done
13528                 : In case none of those worked, prompt the user.
13529                 case "$netdb_name_type" in
13530                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13531                         dflt='char *'
13532                         . ./myread
13533                         netdb_name_type=$ans
13534                         ;;
13535                 esac
13536                 ;;
13537         *)      : no gethostbyname, so pick harmless default
13538                 netdb_name_type='char *'
13539                 ;;
13540         esac
13541 fi
13542
13543 : check for type of 1st argument to getnetbyaddr. 
13544 if test "X$netdb_net_type" = X ; then
13545         case "$d_getnbyaddr" in
13546         $define)
13547                 $cat <<EOM
13548
13549 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13550 EOM
13551                 hdrs="$define sys/types.h
13552                         $d_socket sys/socket.h 
13553                         $i_niin netinet/in.h 
13554                         $i_netdb netdb.h
13555                         $i_unistd unistd.h"
13556                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13557                         case "$netdb_net_type" in
13558                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13559                                 if ./protochk "$try" $hdrs; then
13560                                         echo "Your system accepts $xxx."
13561                                         netdb_net_type="$xxx"
13562                                 fi
13563                                 ;;
13564                         esac
13565                 done
13566                 : In case none of those worked, prompt the user.
13567                 case "$netdb_net_type" in
13568                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13569                         dflt='long'
13570                         . ./myread
13571                         netdb_net_type=$ans
13572                         ;;
13573                 esac
13574                 ;;
13575         *)      : no getnetbyaddr, so pick harmless default
13576                 netdb_net_type='long'
13577                 ;;
13578         esac
13579 fi
13580 : locate the preferred pager for this system
13581 case "$pager" in
13582 '')
13583         dflt=''
13584         case "$pg" in
13585         /*) dflt=$pg;;
13586         esac
13587         case "$more" in
13588         /*) dflt=$more;;
13589         esac
13590         case "$less" in
13591         /*) dflt=$less;;
13592         esac
13593         case "$dflt" in
13594         '') dflt=/usr/ucb/more;;
13595         esac
13596         ;;
13597 *) dflt="$pager";;
13598 esac
13599 echo " "
13600 fn=f/
13601 rp='What pager is used on your system?'
13602 . ./getfile
13603 pager="$ans"
13604
13605 : see what type pids are declared as in the kernel
13606 rp="What is the type of process ids on this system?"
13607 set pid_t pidtype int stdio.h sys/types.h
13608 eval $typedef_ask
13609
13610 : Find earliest binary compatible site_perl subdirectory perl can use.
13611 case "$bincompat5005" in
13612 "$define") xs_apiversion='5.005' ;;
13613 *) xs_apiversion=$version ;;   # The current site_perl version.
13614 esac
13615 : Find earliest pure perl site_perl subdirectory perl can use.
13616 : The versioned directories started at 5.005.
13617 pm_apiversion='5.005'
13618
13619 : check for length of pointer
13620 echo " "
13621 case "$ptrsize" in
13622 '')
13623         echo "Checking to see how big your pointers are..." >&4
13624         if test "$voidflags" -gt 7; then
13625                 echo '#define VOID_PTR char *' > try.c
13626         else
13627                 echo '#define VOID_PTR void *' > try.c
13628         fi
13629         $cat >>try.c <<'EOCP'
13630 #include <stdio.h>
13631 int main()
13632 {
13633     printf("%d\n", (int)sizeof(VOID_PTR));
13634     exit(0);
13635 }
13636 EOCP
13637         set try
13638         if eval $compile_ok; then
13639                 ptrsize=`./try`
13640                 echo "Your pointers are $ptrsize bytes long."
13641         else
13642                 dflt='4'
13643                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13644                 rp="What is the size of a pointer (in bytes)?"
13645                 . ./myread
13646                 ptrsize="$ans"
13647         fi
13648         ;;
13649 esac
13650 $rm -f try.c try
13651
13652 : see if ar generates random libraries by itself
13653 echo " "
13654 echo "Checking how to generate random libraries on your machine..." >&4
13655 echo 'int bar1() { return bar2(); }' > bar1.c
13656 echo 'int bar2() { return 2; }' > bar2.c
13657 $cat > foo.c <<'EOP'
13658 int main() { printf("%d\n", bar1()); exit(0); }
13659 EOP
13660 $cc $ccflags -c bar1.c >/dev/null 2>&1
13661 $cc $ccflags -c bar2.c >/dev/null 2>&1
13662 $cc $ccflags -c foo.c >/dev/null 2>&1
13663 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13664 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13665         ./foobar >/dev/null 2>&1; then
13666         echo "$ar appears to generate random libraries itself."
13667         orderlib=false
13668         ranlib=":"
13669 elif $ar ts bar$_a >/dev/null 2>&1 &&
13670         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13671         ./foobar >/dev/null 2>&1; then
13672                 echo "a table of contents needs to be added with '$ar ts'."
13673                 orderlib=false
13674                 ranlib="$ar ts"
13675 else
13676         case "$ranlib" in
13677         :) ranlib='';;
13678         '')
13679                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13680                 $test -f $ranlib || ranlib=''
13681                 ;;
13682         esac
13683         if $test -n "$ranlib"; then
13684                 echo "your system has '$ranlib'; we'll use that."
13685                 orderlib=false
13686         else
13687                 echo "your system doesn't seem to support random libraries"
13688                 echo "so we'll use lorder and tsort to order the libraries."
13689                 orderlib=true
13690                 ranlib=":"
13691         fi
13692 fi
13693 $rm -f foo* bar* 
13694
13695 : check for type of arguments to select. 
13696 case "$selecttype" in
13697 '') case "$d_select" in
13698         $define)
13699                 echo " "
13700                 $cat <<EOM
13701 Checking to see what type of arguments are accepted by select().
13702 EOM
13703                 hdrs="$define sys/types.h
13704                         $i_systime sys/time.h 
13705                         $i_sysselct sys/select.h
13706                         $d_socket sys/socket.h"
13707                 : The first arg can be int, unsigned, or size_t
13708                 : The last arg may or may not be 'const'
13709                 val=''
13710                 : void pointer has been seen but using that
13711                 : breaks the selectminbits test
13712                 for xxx in 'fd_set *' 'int *'; do
13713                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13714                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13715                                         case "$val" in
13716                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13717                                                 if ./protochk "$try" $hdrs; then
13718                                                         echo "Your system accepts $xxx."
13719                                                         val="$xxx"
13720                                                 fi
13721                                                 ;;
13722                                         esac
13723                                 done
13724                         done
13725                 done
13726                 case "$val" in
13727                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13728                         case "$d_fd_set" in
13729                                 $define) dflt="fd_set *" ;;
13730                                 *)              dflt="int *" ;;
13731                         esac
13732                         . ./myread
13733                         val=$ans
13734                         ;;
13735                 esac
13736                 selecttype="$val"
13737                 ;;
13738         *)      : no select, so pick a harmless default
13739                 selecttype='int *'
13740                 ;;
13741         esac
13742         ;;
13743 esac
13744
13745 : check for the select 'width'
13746 case "$selectminbits" in
13747 '') case "$d_select" in
13748         $define)
13749                 $cat <<EOM
13750
13751 Checking to see on how many bits at a time your select() operates...
13752 EOM
13753                 $cat >try.c <<EOCP
13754 #include <sys/types.h>
13755 #$i_time I_TIME
13756 #$i_systime I_SYS_TIME
13757 #$i_systimek I_SYS_TIME_KERNEL
13758 #ifdef I_TIME
13759 #   include <time.h>
13760 #endif
13761 #ifdef I_SYS_TIME
13762 #   ifdef I_SYS_TIME_KERNEL
13763 #       define KERNEL
13764 #   endif
13765 #   include <sys/time.h>
13766 #   ifdef I_SYS_TIME_KERNEL
13767 #       undef KERNEL
13768 #   endif
13769 #endif
13770 #$i_sysselct I_SYS_SELECT
13771 #ifdef I_SYS_SELECT
13772 #include <sys/select.h>
13773 #endif
13774 #$d_socket HAS_SOCKET
13775 #ifdef HAS_SOCKET
13776 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13777 #endif
13778 #include <stdio.h>
13779 $selecttype b;
13780 #define S sizeof(*(b))
13781 #define MINBITS 64
13782 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13783 #define NBITS  (NBYTES * 8)
13784 int main() {
13785     char s[NBYTES];
13786     struct timeval t;
13787     int i;
13788     FILE* fp;
13789     int fd;
13790
13791     fclose(stdin);
13792     fp = fopen("try.c", "r");
13793     if (fp == 0)
13794       exit(1);
13795     fd = fileno(fp);
13796     if (fd < 0)
13797       exit(2);
13798     b = ($selecttype)s;
13799     for (i = 0; i < NBITS; i++)
13800         FD_SET(i, b);
13801     t.tv_sec  = 0;
13802     t.tv_usec = 0;
13803     select(fd + 1, b, 0, 0, &t);
13804     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13805     printf("%d\n", i + 1);
13806     return 0;
13807 }
13808 EOCP
13809                 set try
13810                 if eval $compile_ok; then
13811                         selectminbits=`./try`
13812                         case "$selectminbits" in
13813                         '')     cat >&4 <<EOM
13814 Cannot figure out on how many bits at a time your select() operates.
13815 I'll play safe and guess it is 32 bits.
13816 EOM
13817                                 selectminbits=32
13818                                 bits="32 bits"
13819                                 ;;
13820                         1)      bits="1 bit" ;;
13821                         *)      bits="$selectminbits bits" ;;
13822                         esac
13823                         echo "Your select() operates on $bits at a time." >&4
13824                 else
13825                         rp='What is the minimum number of bits your select() operates on?'
13826                         case "$byteorder" in
13827                         1234|12345678)  dflt=32 ;;
13828                         *)              dflt=1  ;;
13829                         esac
13830                         . ./myread
13831                         val=$ans
13832                         selectminbits="$val"
13833                 fi
13834                 $rm -f try.* try
13835                 ;;
13836         *)      : no select, so pick a harmless default
13837                 selectminbits='32'
13838                 ;;
13839         esac
13840         ;;
13841 esac
13842
13843 : Trace out the files included by signal.h, then look for SIGxxx names.
13844 : Remove SIGARRAYSIZE used by HPUX.
13845 : Remove SIGSTKSIZE used by Linux.
13846 : Remove SIGSTKSZ used by Posix.
13847 : Remove SIGTYP void lines used by OS2.
13848 : Some cpps, like os390, dont give the file name anywhere
13849 if [ "X$fieldn" = X ]; then
13850         : Just make some guesses.  We check them later.
13851         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13852 else
13853         xxx=`echo '#include <signal.h>' |
13854         $cppstdin $cppminus $cppflags 2>/dev/null |
13855         $grep '^[       ]*#.*include' | 
13856         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13857 fi
13858 : Check this list of files to be sure we have parsed the cpp output ok.
13859 : This will also avoid potentially non-existent files, such 
13860 : as ../foo/bar.h
13861 xxxfiles=''
13862 for xx in $xxx /dev/null ; do
13863         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13864 done
13865 : If we have found no files, at least try signal.h
13866 case "$xxxfiles" in
13867 '')     xxxfiles=`./findhdr signal.h` ;;
13868 esac
13869 xxx=`awk '
13870 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13871         print substr($2, 4, 20)
13872 }
13873 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13874         print substr($3, 4, 20)
13875 }' $xxxfiles`
13876 : Append some common names just in case the awk scan failed.
13877 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13878 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13879 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13880 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13881 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13882
13883 : generate a few handy files for later
13884 $cat > signal.c <<'EOCP'
13885 #include <sys/types.h>
13886 #include <signal.h>
13887 #include <stdio.h>
13888 int main() {
13889
13890 /* Strange style to avoid deeply-nested #if/#else/#endif */
13891 #ifndef NSIG
13892 #  ifdef _NSIG
13893 #    define NSIG (_NSIG)
13894 #  endif
13895 #endif
13896
13897 #ifndef NSIG
13898 #  ifdef SIGMAX
13899 #    define NSIG (SIGMAX+1)
13900 #  endif
13901 #endif
13902
13903 #ifndef NSIG
13904 #  ifdef SIG_MAX
13905 #    define NSIG (SIG_MAX+1)
13906 #  endif
13907 #endif
13908
13909 #ifndef NSIG
13910 #  ifdef MAXSIG
13911 #    define NSIG (MAXSIG+1)
13912 #  endif
13913 #endif
13914
13915 #ifndef NSIG
13916 #  ifdef MAX_SIG
13917 #    define NSIG (MAX_SIG+1)
13918 #  endif
13919 #endif
13920
13921 #ifndef NSIG
13922 #  ifdef SIGARRAYSIZE
13923 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13924 #  endif
13925 #endif
13926
13927 #ifndef NSIG
13928 #  ifdef _sys_nsig
13929 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13930 #  endif
13931 #endif
13932
13933 /* Default to some arbitrary number that's big enough to get most
13934    of the common signals.
13935 */
13936 #ifndef NSIG
13937 #    define NSIG 50
13938 #endif
13939
13940 printf("NSIG %d\n", NSIG);
13941
13942 #ifndef JUST_NSIG
13943
13944 EOCP
13945
13946 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13947 {
13948         printf "#ifdef SIG"; printf $1; printf "\n"
13949         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13950         printf $1; printf ");\n"
13951         printf "#endif\n"
13952 }
13953 END {
13954         printf "#endif /* JUST_NSIG */\n";
13955         printf "exit(0);\n}\n";
13956 }
13957 ' >>signal.c
13958 $cat >signal.awk <<'EOP'
13959 BEGIN { ndups = 0 }
13960 $1 ~ /^NSIG$/ { nsig = $2 }
13961 ($1 !~ /^NSIG$/) && (NF == 2) {
13962     if ($2 > maxsig) { maxsig = $2 }
13963     if (sig_name[$2]) {
13964         dup_name[ndups] = $1
13965         dup_num[ndups] = $2
13966         ndups++ 
13967     }
13968     else {
13969         sig_name[$2] = $1
13970         sig_num[$2] = $2
13971     }
13972 }
13973 END { 
13974     if (nsig == 0) {
13975         nsig = maxsig + 1
13976     }
13977     printf("NSIG %d\n", nsig);
13978     for (n = 1; n < nsig; n++) {
13979         if (sig_name[n]) {
13980             printf("%s %d\n", sig_name[n], sig_num[n])
13981         }
13982         else {
13983             printf("NUM%d %d\n", n, n) 
13984         }
13985     }
13986     for (n = 0; n < ndups; n++) {
13987         printf("%s %d\n", dup_name[n], dup_num[n])
13988     }
13989 }
13990 EOP
13991 $cat >signal_cmd <<EOS
13992 $startsh
13993 if $test -s signal.lst; then
13994     echo "Using your existing signal.lst file"
13995         exit 0
13996 fi
13997 xxx="$xxx"
13998 EOS
13999 $cat >>signal_cmd <<'EOS'
14000
14001 set signal
14002 if eval $compile_ok; then
14003         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14004 else
14005         echo "(I can't seem be able to compile the whole test program)" >&4
14006         echo "(I'll try it in little pieces.)" >&4
14007         set signal -DJUST_NSIG
14008         if eval $compile_ok; then
14009                 ./signal$_exe > signal.nsg
14010                 $cat signal.nsg
14011         else
14012                 echo "I can't seem to figure out how many signals you have." >&4
14013                 echo "Guessing 50." >&4
14014                 echo 'NSIG 50' > signal.nsg
14015         fi
14016         : Now look at all the signal names, one at a time.
14017         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14018                 $cat > signal.c <<EOCP
14019 #include <sys/types.h>
14020 #include <signal.h>
14021 #include <stdio.h>
14022 int main() {
14023 printf("$xx %d\n", SIG${xx});
14024 return 0;
14025 }
14026 EOCP
14027                 set signal
14028                 if eval $compile; then
14029                         echo "SIG${xx} found."
14030                         ./signal$_exe  >> signal.ls1
14031                 else
14032                         echo "SIG${xx} NOT found."
14033                 fi
14034         done
14035         if $test -s signal.ls1; then
14036                 $cat signal.nsg signal.ls1 |
14037                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14038         fi
14039
14040 fi
14041 if $test -s signal.lst; then
14042         :
14043 else
14044         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14045         echo 'kill -l' >signal
14046         set X `csh -f <signal`
14047         $rm -f signal
14048         shift
14049         case $# in
14050         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14051         esac
14052         echo $@ | $tr ' ' $trnl | \
14053             $awk '{ printf "%s %d\n", $1, ++s; }
14054                   END { printf "NSIG %d\n", ++s }' >signal.lst
14055 fi
14056 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14057 EOS
14058 chmod a+x signal_cmd
14059 $eunicefix signal_cmd
14060
14061 : generate list of signal names
14062 echo " "
14063 case "$sig_name_init" in
14064 '') doinit=yes ;;
14065 *)  case "$sig_num_init" in
14066     ''|*,*) doinit=yes ;;
14067     esac ;;
14068 esac
14069 case "$doinit" in
14070 yes)
14071         echo "Generating a list of signal names and numbers..." >&4
14072         . ./signal_cmd
14073         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14074         sig_name=`$awk 'BEGIN { printf "ZERO " }
14075                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14076         sig_num=`$awk  'BEGIN { printf "0 " }
14077                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14078         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14079                              !/^NSIG/   { printf "\"%s\", ", $1 }
14080                              END        { printf "0\n" }' signal.lst`
14081         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14082                              !/^NSIG/   { printf "%d, ", $2}
14083                              END        { printf "0\n"}' signal.lst`
14084         ;;
14085 esac
14086 echo "The following $sig_count signals are available:"
14087 echo " "
14088 echo $sig_name | $awk \
14089 'BEGIN { linelen = 0 }
14090 {
14091         for (i = 1; i <= NF; i++) {
14092                 name = "SIG" $i " "
14093                 linelen = linelen + length(name)
14094                 if (linelen > 70) {
14095                         printf "\n"
14096                         linelen = length(name)
14097                 }
14098                 printf "%s", name
14099         }
14100         printf "\n"
14101 }'
14102 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14103
14104 echo " "
14105 case "$sizetype" in
14106 *_t) zzz="$sizetype"    ;;
14107 *)   zzz="filesize"     ;;
14108 esac
14109 echo "Checking the size of $zzz..." >&4 
14110 cat > try.c <<EOCP
14111 #include <sys/types.h>
14112 #include <stdio.h>
14113 int main() {
14114     printf("%d\n", (int)sizeof($sizetype));
14115     exit(0);
14116 }
14117 EOCP
14118 set try
14119 if eval $compile_ok; then
14120         yyy=`./try`
14121         case "$yyy" in
14122         '')     sizesize=4
14123                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14124                 ;;
14125         *)      sizesize=$yyy
14126                 echo "Your $zzz size is $sizesize bytes."
14127                 ;;
14128         esac
14129 else
14130         sizesize=4
14131         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14132 fi
14133
14134
14135 : check for socklen_t
14136 echo " "
14137 echo "Checking to see if you have socklen_t..." >&4
14138 $cat >try.c <<EOCP
14139 #include <sys/types.h>
14140 #$d_socket HAS_SOCKET
14141 #ifdef HAS_SOCKET
14142 #include <sys/socket.h>
14143 #endif
14144 int main() { socklen_t x = 16; }
14145 EOCP
14146 set try
14147 if eval $compile; then
14148         val="$define"
14149         echo "You have socklen_t."
14150 else
14151         val="$undef"
14152         echo "You do not have socklen_t."
14153         case "$sizetype" in
14154         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14155         esac
14156 fi
14157 $rm -f try try.*
14158 set d_socklen_t
14159 eval $setvar
14160
14161 : check for type of the size argument to socket calls
14162 case "$d_socket" in
14163 "$define")
14164         $cat <<EOM
14165
14166 Checking to see what type is the last argument of accept().
14167 EOM
14168         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14169         yyy=''
14170         case "$d_socklen_t" in
14171         "$define") yyy="$yyy socklen_t"
14172         esac
14173         yyy="$yyy $sizetype int long unsigned"
14174         for xxx in $yyy; do
14175                 case "$socksizetype" in
14176                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14177                         if ./protochk "$try" $hdrs; then
14178                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14179                                 socksizetype="$xxx"
14180                         fi
14181                         ;;
14182                 esac
14183         done
14184 : In case none of those worked, prompt the user.
14185         case "$socksizetype" in
14186         '')     rp='What is the type for socket address structure sizes?'
14187                 dflt='int'
14188                 . ./myread
14189                 socksizetype=$ans
14190                 ;;
14191         esac
14192         ;;
14193 *)      : no sockets, so pick relatively harmless default
14194         socksizetype='int'
14195         ;;
14196 esac
14197
14198 : see what type is used for signed size_t
14199 set ssize_t ssizetype int stdio.h sys/types.h
14200 eval $typedef
14201 dflt="$ssizetype"
14202 $cat > ssize.c <<EOM
14203 #include <stdio.h>
14204 #include <sys/types.h>
14205 #define Size_t $sizetype
14206 #define SSize_t $dflt
14207 int main()
14208 {
14209         if (sizeof(Size_t) == sizeof(SSize_t))
14210                 printf("$dflt\n");
14211         else if (sizeof(Size_t) == sizeof(int))
14212                 printf("int\n");
14213         else 
14214                 printf("long\n");
14215         exit(0);
14216 }
14217 EOM
14218 echo " "
14219 set ssize
14220 if eval $compile_ok && ./ssize > /dev/null; then
14221         ssizetype=`./ssize`
14222         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14223 else
14224         $cat >&4 <<EOM
14225 Help! I can't compile and run the ssize_t test program: please enlighten me!
14226 (This is probably a misconfiguration in your system or libraries, and
14227 you really ought to fix it.  Still, I'll try anyway.)
14228
14229 I need a type that is the same size as $sizetype, but is guaranteed to
14230 be signed.  Common values are ssize_t, int and long.
14231
14232 EOM
14233         rp="What signed type is the same size as $sizetype?"
14234         . ./myread
14235         ssizetype="$ans"
14236 fi
14237 $rm -f ssize ssize.*
14238
14239 : see what type of char stdio uses.
14240 echo " "
14241 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14242         echo "Your stdio uses unsigned chars." >&4
14243         stdchar="unsigned char"
14244 else
14245         echo "Your stdio uses signed chars." >&4
14246         stdchar="char"
14247 fi
14248
14249 : see if time exists
14250 echo " "
14251 if test "X$d_time" = X -o X"$timetype" = X; then
14252     if set time val -f d_time; eval $csym; $val; then
14253                 echo 'time() found.' >&4
14254                 val="$define"
14255                 rp="What is the type returned by time() on this system?"
14256                 set time_t timetype long stdio.h sys/types.h
14257                 eval $typedef_ask
14258     else
14259                 echo 'time() not found, hope that will do.' >&4
14260                 val="$undef"
14261                 timetype='int';
14262     fi
14263     set d_time
14264     eval $setvar
14265 fi
14266
14267 : see what type uids are declared as in the kernel
14268 echo " "
14269 echo "Looking for the type for user ids returned by getuid()."
14270 set uid_t uidtype xxx stdio.h sys/types.h
14271 eval $typedef
14272 case "$uidtype" in
14273 xxx)
14274         xxx=`./findhdr sys/user.h`
14275         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14276         case $1 in
14277         unsigned) dflt="$1 $2" ;;
14278         *) dflt="$1" ;;
14279         esac
14280         ;;
14281 *) dflt="$uidtype";;
14282 esac
14283 case "$uidtype" in
14284 uid_t)  echo "uid_t found." ;;
14285 *)      rp="What is the type for user ids returned by getuid()?"
14286         . ./myread
14287         uidtype="$ans"
14288         ;;
14289 esac
14290
14291 echo " "
14292 case "$uidtype" in
14293 *_t) zzz="$uidtype"     ;;
14294 *)   zzz="uid"          ;;
14295 esac
14296 echo "Checking the size of $zzz..." >&4 
14297 cat > try.c <<EOCP
14298 #include <sys/types.h>
14299 #include <stdio.h>
14300 int main() {
14301     printf("%d\n", (int)sizeof($uidtype));
14302     exit(0);
14303 }
14304 EOCP
14305 set try
14306 if eval $compile_ok; then
14307         yyy=`./try`
14308         case "$yyy" in
14309         '')     uidsize=4
14310                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14311                 ;;
14312         *)      uidsize=$yyy
14313                 echo "Your $zzz is $uidsize bytes long."
14314                 ;;
14315         esac
14316 else
14317         uidsize=4
14318         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14319 fi
14320
14321 echo " "
14322 case "$uidtype" in
14323 *_t) zzz="$uidtype"     ;;
14324 *)   zzz="uid"          ;;
14325 esac
14326 echo "Checking the sign of $zzz..." >&4
14327 cat > try.c <<EOCP
14328 #include <sys/types.h>
14329 #include <stdio.h>
14330 int main() {
14331         $uidtype foo = -1;
14332         if (foo < 0)
14333                 printf("-1\n");
14334         else
14335                 printf("1\n");
14336 }
14337 EOCP
14338 set try
14339 if eval $compile; then
14340         yyy=`./try`
14341         case "$yyy" in
14342         '')     uidsign=1
14343                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14344                 ;;
14345         *)      uidsign=$yyy
14346                 case "$uidsign" in
14347                  1) echo "Your $zzz is unsigned." ;;
14348                 -1) echo "Your $zzz is signed."   ;;
14349                 esac
14350                 ;;
14351         esac
14352 else
14353         uidsign=1
14354         echo "(I can't compile the test program--guessing unsigned.)" >&4
14355 fi
14356
14357
14358
14359 echo " "
14360 $echo "Checking the format string to be used for uids..." >&4
14361
14362 case "$uidsign" in
14363 -1)     if $test X"$uidsize" = X"$ivsize"; then
14364                 uidformat="$ivdformat"
14365         else
14366                 if $test X"$uidsize" = X"$longsize"; then
14367                         uidformat='"ld"'
14368                 else
14369                         if $test X"$uidsize" = X"$intsize"; then
14370                                 uidformat='"d"'
14371                         else
14372                                 if $test X"$uidsize" = X"$shortsize"; then
14373                                         uidformat='"hd"'
14374                                 fi
14375                         fi
14376                 fi
14377         fi
14378         ;;
14379 *)      if $test X"$uidsize" = X"$uvsize"; then
14380                 uidformat="$uvuformat"
14381         else
14382                 if $test X"$uidsize" = X"$longsize"; then
14383                         uidformat='"lu"'
14384                 else
14385                         if $test X"$uidsize" = X"$intsize"; then
14386                                 uidformat='"u"'
14387                         else
14388                                 if $test X"$uidsize" = X"$shortsize"; then
14389                                         uidformat='"hu"'
14390                                 fi
14391                         fi
14392                 fi
14393         fi
14394         ;;
14395 esac
14396
14397 : see if dbm.h is available
14398 : see if dbmclose exists
14399 set dbmclose d_dbmclose
14400 eval $inlibc
14401
14402 case "$d_dbmclose" in
14403 $define)
14404         set dbm.h i_dbm
14405         eval $inhdr
14406         case "$i_dbm" in
14407         $define)
14408                 val="$undef"
14409                 set i_rpcsvcdbm
14410                 eval $setvar
14411                 ;;
14412         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14413                 eval $inhdr
14414                 ;;
14415         esac
14416         ;;
14417 *)      echo "We won't be including <dbm.h>"
14418         val="$undef"
14419         set i_dbm
14420         eval $setvar
14421         val="$undef"
14422         set i_rpcsvcdbm
14423         eval $setvar
14424         ;;
14425 esac
14426
14427 : see if this is a sys/file.h system
14428 val=''
14429 set sys/file.h val
14430 eval $inhdr
14431
14432 : do we need to include sys/file.h ?
14433 case "$val" in
14434 "$define")
14435         echo " "
14436         if $h_sysfile; then
14437                 val="$define"
14438                 echo "We'll be including <sys/file.h>." >&4
14439         else
14440                 val="$undef"
14441                 echo "We won't be including <sys/file.h>." >&4
14442         fi
14443         ;;
14444 *)
14445         h_sysfile=false
14446         ;;
14447 esac
14448 set i_sysfile
14449 eval $setvar
14450
14451 : see if fcntl.h is there
14452 val=''
14453 set fcntl.h val
14454 eval $inhdr
14455
14456 : see if we can include fcntl.h
14457 case "$val" in
14458 "$define")
14459         echo " "
14460         if $h_fcntl; then
14461                 val="$define"
14462                 echo "We'll be including <fcntl.h>." >&4
14463         else
14464                 val="$undef"
14465                 if $h_sysfile; then
14466         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14467                 else
14468                         echo "We won't be including <fcntl.h>." >&4
14469                 fi
14470         fi
14471         ;;
14472 *)
14473         h_fcntl=false
14474         val="$undef"
14475         ;;
14476 esac
14477 set i_fcntl
14478 eval $setvar
14479
14480 : see if this is a iconv.h system
14481 set iconv.h i_iconv
14482 eval $inhdr
14483
14484 : see if this is a ieeefp.h system
14485 set ieeefp.h i_ieeefp
14486 eval $inhdr
14487
14488 : see if this is a libutil.h system
14489 set libutil.h i_libutil
14490 eval $inhdr
14491
14492 : see if locale.h is available
14493 set locale.h i_locale
14494 eval $inhdr
14495
14496 : see if mach cthreads are available
14497 if test "X$usethreads" = "X$define"; then
14498         set mach/cthreads.h i_machcthr
14499         eval $inhdr
14500 else
14501         i_machcthr="$undef"
14502 fi
14503
14504
14505
14506 : see if this is a math.h system
14507 set math.h i_math
14508 eval $inhdr
14509
14510 : see if this is a mntent.h system
14511 set mntent.h i_mntent
14512 eval $inhdr
14513
14514 : see if ndbm.h is available
14515 set ndbm.h t_ndbm
14516 eval $inhdr
14517 case "$t_ndbm" in
14518 $define)
14519         : see if dbm_open exists
14520         set dbm_open d_dbm_open
14521         eval $inlibc
14522         case "$d_dbm_open" in
14523         $undef)
14524                 t_ndbm="$undef"
14525                 echo "We won't be including <ndbm.h>"
14526                 ;;
14527         esac
14528         ;;
14529 esac
14530 val="$t_ndbm"
14531 set i_ndbm
14532 eval $setvar
14533
14534 : see if net/errno.h is available
14535 val=''
14536 set net/errno.h val
14537 eval $inhdr
14538
14539 : Unfortunately, it causes problems on some systems.  Arrgh.
14540 case "$val" in
14541 $define)
14542         cat > try.c <<'EOM'
14543 #include <stdio.h>
14544 #include <errno.h>
14545 #include <net/errno.h>
14546 int func()
14547 {
14548         return ENOTSOCK;
14549 }
14550 EOM
14551         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14552                 echo "We'll be including <net/errno.h>." >&4
14553         else
14554                 echo "We won't be including <net/errno.h>." >&4
14555                 val="$undef"
14556         fi
14557         $rm -f try.* try
14558         ;;
14559 esac
14560 set i_neterrno
14561 eval $setvar
14562
14563 : see if netinet/tcp.h is available
14564 set netinet/tcp.h i_netinettcp
14565 eval $inhdr
14566
14567 : see if this is a poll.h system
14568 set poll.h i_poll
14569 eval $inhdr
14570
14571 : see if this is a prot.h system
14572 set prot.h i_prot
14573 eval $inhdr
14574
14575 echo " "
14576 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14577 $cat <<'EOSH' > Cppsym.know
14578 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14579 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14580 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14581 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14582 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14583 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14584 bull c cadmus clipper CMU COFF COMPILER_VERSION
14585 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14586 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14587 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14588 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14589 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14590 H3050R H3050RX hbullx20 hcx host_mips
14591 hp200 hp300 hp700 HP700 hp800 hp9000
14592 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14593 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14594 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14595 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14596 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14597 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14598 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14599 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14600 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14601 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14602 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14603 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14604 MATH_HAS_NO_SIDE_EFFECTS
14605 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14606 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14607 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14608 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14609 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14610 NetBSD news1500 news1700 news1800 news1900 news3700
14611 news700 news800 news900 NeXT NLS ns16000 ns32000
14612 ns32016 ns32332 ns32k nsc32000
14613 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14614 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14615 pc532 pdp11 PGC PIC plexus PORTAR posix
14616 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14617 POSIX_C_SOURCE POSIX_SOURCE POWER
14618 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14619 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14620 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14621 sony sony_news sonyrisc sparc sparclite spectrum
14622 stardent stdc STDC_EXT stratos sun sun3 sun386
14623 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14624 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14625 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14626 sysV68 sysV88 Tek4132 Tek4300 titan
14627 tower tower32 tower32_200 tower32_600 tower32_700
14628 tower32_800 tower32_850 tss
14629 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14630 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14631 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14632 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14633 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14634 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14635 z8000
14636 EOSH
14637 # Maybe put other stuff here too.
14638 cat <<EOSH >>Cppsym.know
14639 $osname
14640 EOSH
14641 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14642 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14643 $cat Cppsym.know > Cppsym.c
14644 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14645 $rm -f Cppsym.a Cppsym.b Cppsym.c
14646 cat <<EOSH > Cppsym
14647 $startsh
14648 if $test \$# -gt 0; then
14649     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14650     if $test -s Cppsym.got; then
14651         $rm -f Cppsym.got
14652         exit 0
14653     fi
14654     $rm -f Cppsym.got
14655     exit 1
14656 else
14657     $tr " " "$trnl" | ./Cppsym.try
14658     exit 0
14659 fi
14660 EOSH
14661 chmod +x Cppsym
14662 $eunicefix Cppsym
14663 cat <<EOSH > Cppsym.try
14664 $startsh
14665 cat <<'EOCP' > try.c
14666 #include <stdio.h>
14667 int main() {
14668 EOCP
14669 $awk \\
14670 EOSH
14671 cat <<'EOSH' >> Cppsym.try
14672 'length($1) > 0 {
14673     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
14674     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
14675     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
14676     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
14677 }'       >> try.c
14678 echo '}' >> try.c
14679 EOSH
14680 cat <<EOSH >> Cppsym.try
14681 ccflags="$ccflags"
14682 case "$osname-$gccversion" in
14683 irix-) ccflags="\$ccflags -woff 1178" ;;
14684 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14685 esac
14686 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14687 EOSH
14688 chmod +x Cppsym.try
14689 $eunicefix Cppsym.try
14690 ./Cppsym < Cppsym.know > Cppsym.true
14691 : now check the C compiler for additional symbols
14692 postprocess_cc_v=''
14693 case "$osname" in
14694 aix) postprocess_cc_v="|$tr , ' '" ;;
14695 esac
14696 $cat >ccsym <<EOS
14697 $startsh
14698 $cat >tmp.c <<EOF
14699 extern int foo;
14700 EOF
14701 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14702 do
14703         case "\$i" in
14704         -D*) echo "\$i" | $sed 's/^-D//';;
14705         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14706         esac
14707 done
14708 $rm -f try.c
14709 EOS
14710 postprocess_cc_v=''
14711 chmod +x ccsym
14712 $eunicefix ccsym
14713 ./ccsym > ccsym1.raw
14714 if $test -s ccsym1.raw; then
14715        $sort ccsym1.raw | $uniq >ccsym.raw
14716 else
14717        mv ccsym1.raw ccsym.raw
14718 fi
14719
14720 $awk '/\=/ { print $0; next }
14721         { print $0"=1" }' ccsym.raw >ccsym.list
14722 $awk '/\=/ { print $0; next }
14723         { print $0"=1" }' Cppsym.true >ccsym.true
14724 $comm -13 ccsym.true ccsym.list >ccsym.own
14725 $comm -12 ccsym.true ccsym.list >ccsym.com
14726 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14727 also=''
14728 if $test -z ccsym.raw; then
14729         echo "Your C compiler doesn't seem to define any symbols!" >&4
14730         echo " "
14731         echo "However, your C preprocessor defines the following symbols:"
14732         $cat Cppsym.true
14733         ccsymbols=''
14734         cppsymbols=`$cat Cppsym.true`
14735         cppsymbols=`echo $cppsymbols`
14736         cppccsymbols="$cppsymbols"
14737 else
14738         if $test -s ccsym.com; then
14739                 echo "Your C compiler and pre-processor define these symbols:"
14740                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14741                 also='also '
14742                 symbols='ones'
14743                 cppccsymbols=`$cat ccsym.com`
14744                 cppccsymbols=`echo $cppccsymbols`
14745                 $test "$silent" || sleep 1
14746         fi
14747         if $test -s ccsym.cpp; then
14748                 $test "$also" && echo " "
14749                 echo "Your C pre-processor ${also}defines the following symbols:"
14750                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14751                 also='further '
14752                 cppsymbols=`$cat ccsym.cpp`
14753                 cppsymbols=`echo $cppsymbols`
14754                 $test "$silent" || sleep 1
14755         fi
14756         if $test -s ccsym.own; then
14757                 $test "$also" && echo " "
14758                 echo "Your C compiler ${also}defines the following cpp symbols:"
14759                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14760                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14761                 ccsymbols=`$cat ccsym.own`
14762                 ccsymbols=`echo $ccsymbols`
14763                 $test "$silent" || sleep 1
14764         fi
14765 fi
14766 $rm -f ccsym* Cppsym.*
14767
14768 : see if this is a termio system
14769 val="$undef"
14770 val2="$undef"
14771 val3="$undef"
14772 if $test `./findhdr termios.h`; then
14773         set tcsetattr i_termios
14774         eval $inlibc
14775         val3="$i_termios"
14776 fi
14777 echo " "
14778 case "$val3" in
14779 "$define") echo "You have POSIX termios.h... good!" >&4;;
14780 *) if ./Cppsym pyr; then
14781                 case "`/bin/universe`" in
14782                 ucb) if $test `./findhdr sgtty.h`; then
14783                                 val2="$define"
14784                                 echo "<sgtty.h> found." >&4
14785                         else
14786                                 echo "System is pyramid with BSD universe."
14787                                 echo "<sgtty.h> not found--you could have problems." >&4
14788                         fi;;
14789                 *) if $test `./findhdr termio.h`; then
14790                                 val="$define"
14791                                 echo "<termio.h> found." >&4
14792                         else
14793                                 echo "System is pyramid with USG universe."
14794                                 echo "<termio.h> not found--you could have problems." >&4
14795                         fi;;
14796                 esac
14797         elif ./usg; then
14798                 if $test `./findhdr termio.h`; then
14799                         echo "<termio.h> found." >&4
14800                         val="$define"
14801                 elif $test `./findhdr sgtty.h`; then
14802                         echo "<sgtty.h> found." >&4
14803                         val2="$define"
14804                 else
14805 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14806                 fi
14807         else
14808                 if $test `./findhdr sgtty.h`; then
14809                         echo "<sgtty.h> found." >&4
14810                         val2="$define"
14811                 elif $test `./findhdr termio.h`; then
14812                         echo "<termio.h> found." >&4
14813                         val="$define"
14814                 else
14815 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14816                 fi
14817         fi;;
14818 esac
14819 set i_termio; eval $setvar
14820 val=$val2; set i_sgtty; eval $setvar
14821 val=$val3; set i_termios; eval $setvar
14822
14823 : see if this is a shadow.h system
14824 set shadow.h i_shadow
14825 eval $inhdr
14826
14827 : see if this is a socks.h system
14828 set socks.h i_socks
14829 eval $inhdr
14830
14831 : see if stdarg is available
14832 echo " "
14833 if $test `./findhdr stdarg.h`; then
14834         echo "<stdarg.h> found." >&4
14835         valstd="$define"
14836 else
14837         echo "<stdarg.h> NOT found." >&4
14838         valstd="$undef"
14839 fi
14840
14841 : see if varags is available
14842 echo " "
14843 if $test `./findhdr varargs.h`; then
14844         echo "<varargs.h> found." >&4
14845 else
14846         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14847 fi
14848
14849 : set up the varargs testing programs
14850 $cat > varargs.c <<EOP
14851 #ifdef I_STDARG
14852 #include <stdarg.h>
14853 #endif
14854 #ifdef I_VARARGS
14855 #include <varargs.h>
14856 #endif
14857
14858 #ifdef I_STDARG
14859 int f(char *p, ...)
14860 #else
14861 int f(va_alist)
14862 va_dcl
14863 #endif
14864 {
14865         va_list ap;
14866 #ifndef I_STDARG
14867         char *p;
14868 #endif
14869 #ifdef I_STDARG
14870         va_start(ap,p);
14871 #else
14872         va_start(ap);
14873         p = va_arg(ap, char *);
14874 #endif
14875         va_end(ap);
14876 }
14877 EOP
14878 $cat > varargs <<EOP
14879 $startsh
14880 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14881         echo "true"
14882 else
14883         echo "false"
14884 fi
14885 $rm -f varargs$_o
14886 EOP
14887 chmod +x varargs
14888
14889 : now check which varargs header should be included
14890 echo " "
14891 i_varhdr=''
14892 case "$valstd" in
14893 "$define")
14894         if `./varargs I_STDARG`; then
14895                 val='stdarg.h'
14896         elif `./varargs I_VARARGS`; then
14897                 val='varargs.h'
14898         fi
14899         ;;
14900 *)
14901         if `./varargs I_VARARGS`; then
14902                 val='varargs.h'
14903         fi
14904         ;;
14905 esac
14906 case "$val" in
14907 '')
14908 echo "I could not find the definition for va_dcl... You have problems..." >&4
14909         val="$undef"; set i_stdarg; eval $setvar
14910         val="$undef"; set i_varargs; eval $setvar
14911         ;;
14912 *) 
14913         set i_varhdr
14914         eval $setvar
14915         case "$i_varhdr" in
14916         stdarg.h)
14917                 val="$define"; set i_stdarg; eval $setvar
14918                 val="$undef"; set i_varargs; eval $setvar
14919                 ;;
14920         varargs.h)
14921                 val="$undef"; set i_stdarg; eval $setvar
14922                 val="$define"; set i_varargs; eval $setvar
14923                 ;;
14924         esac
14925         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14926 esac
14927 $rm -f varargs*
14928
14929 : see if stddef is available
14930 set stddef.h i_stddef
14931 eval $inhdr
14932
14933 : see if this is a sunmath.h system
14934 set sunmath.h i_sunmath
14935 eval $inhdr
14936
14937 : see if sys/access.h is available
14938 set sys/access.h i_sysaccess
14939 eval $inhdr
14940
14941 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14942 set sys/filio.h i_sysfilio
14943 eval $inhdr
14944 echo " "
14945 if $test `./findhdr sys/ioctl.h`; then
14946         val="$define"
14947         echo '<sys/ioctl.h> found.' >&4
14948 else
14949         val="$undef"
14950         if $test $i_sysfilio = "$define"; then
14951             echo '<sys/ioctl.h> NOT found.' >&4
14952         else
14953                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14954                 $test $i_termio = "$define" && xxx="termio.h"
14955                 $test $i_termios = "$define" && xxx="termios.h"
14956 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14957         fi
14958 fi
14959 set i_sysioctl
14960 eval $setvar
14961
14962
14963 : see if this is a syslog.h system
14964 set syslog.h i_syslog
14965 eval $inhdr
14966
14967
14968 : see if this is a sys/mode.h system
14969 set sys/mode.h i_sysmode
14970 eval $inhdr
14971
14972 : see if sys/resource.h has to be included
14973 set sys/resource.h i_sysresrc
14974 eval $inhdr
14975
14976 : see if sys/security.h is available
14977 set sys/security.h i_syssecrt
14978 eval $inhdr
14979
14980 : see if this is a sys/statvfs.h system
14981 set sys/statvfs.h i_sysstatvfs
14982 eval $inhdr
14983
14984 : see if this is a sys/uio.h system
14985 set sys/uio.h i_sysuio
14986 eval $inhdr
14987
14988 : see if this is a sys/un.h system
14989 set sys/un.h i_sysun
14990 eval $inhdr
14991
14992
14993 : see if this is a sys/utsname.h system
14994 set sys/utsname.h i_sysutsname
14995 eval $inhdr
14996
14997 : see if this is a syswait system
14998 set sys/wait.h i_syswait
14999 eval $inhdr
15000
15001 : see if this is a ustat.h system
15002 set ustat.h i_ustat
15003 eval $inhdr
15004
15005 : see if this is an utime system
15006 set utime.h i_utime
15007 eval $inhdr
15008
15009 : see if this is a values.h system
15010 set values.h i_values
15011 eval $inhdr
15012
15013 : see if this is a vfork system
15014 case "$d_vfork" in
15015 "$define")
15016         set vfork.h i_vfork
15017         eval $inhdr
15018         ;;
15019 *)
15020         i_vfork="$undef"
15021         ;;
15022 esac
15023
15024 : see if gdbm.h is available
15025 set gdbm.h t_gdbm
15026 eval $inhdr
15027 case "$t_gdbm" in
15028 $define)
15029         : see if gdbm_open exists
15030         set gdbm_open d_gdbm_open
15031         eval $inlibc
15032         case "$d_gdbm_open" in
15033         $undef)
15034                 t_gdbm="$undef"
15035                 echo "We won't be including <gdbm.h>"
15036                 ;;
15037         esac
15038         ;;
15039 esac
15040 val="$t_gdbm"
15041 set i_gdbm
15042 eval $setvar
15043
15044 echo " "
15045 echo "Looking for extensions..." >&4
15046 : If we are using the old config.sh, known_extensions may contain
15047 : old or inaccurate or duplicate values.
15048 known_extensions=''
15049 nonxs_extensions=''
15050 : We do not use find because it might not be available.
15051 : We do not just use MANIFEST because the user may have dropped
15052 : some additional extensions into the source tree and expect them
15053 : to be built.
15054
15055 : Function to recursively find available extensions, ignoring DynaLoader
15056 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15057 find_extensions='
15058     for xxx in *; do
15059        case "$xxx" in
15060            DynaLoader|dynaload) ;;
15061            *)
15062            if $test -f $xxx/$xxx.xs; then
15063                known_extensions="$known_extensions $1$xxx";
15064            elif $test -f $xxx/Makefile.PL; then
15065                nonxs_extensions="$nonxs_extensions $1$xxx";
15066            else
15067                if $test -d $xxx -a $# -lt 10; then
15068                    set $1$xxx/ $*;
15069                    cd $xxx;
15070                    eval $find_extensions;
15071                    cd ..;
15072                    shift;
15073                fi;
15074            fi
15075            ;;
15076        esac;
15077     done'
15078 tdir=`pwd`
15079 cd $rsrc/ext
15080 set X
15081 shift
15082 eval $find_extensions
15083 set X $nonxs_extensions
15084 shift
15085 nonxs_extensions="$*"
15086 set X $known_extensions
15087 shift
15088 known_extensions="$*"
15089 cd $tdir
15090
15091 : Now see which are supported on this system.
15092 avail_ext=''
15093 for xxx in $known_extensions ; do
15094         case "$xxx" in
15095         DB_File|db_file)
15096                 case "$i_db" in
15097                 $define) avail_ext="$avail_ext $xxx" ;;
15098                 esac
15099                 ;;
15100         GDBM_File|gdbm_fil)
15101                 case "$i_gdbm" in 
15102                 $define) avail_ext="$avail_ext $xxx" ;;
15103                 esac
15104                 ;;
15105         NDBM_File|ndbm_fil)
15106                 case "$i_ndbm" in
15107                 $define)
15108                     case "$osname-$use64bitint" in
15109                     hpux-define)
15110                         case "$libs" in
15111                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15112                         esac
15113                         ;;
15114                     *) avail_ext="$avail_ext $xxx" ;;
15115                     esac
15116                     ;;
15117                 esac
15118                 ;;
15119         ODBM_File|odbm_fil) 
15120                 case "${i_dbm}${i_rpcsvcdbm}" in
15121                 *"${define}"*)
15122                     case "$osname-$use64bitint" in
15123                     hpux-define)
15124                         case "$libs" in
15125                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15126                         esac
15127                         ;;
15128                     *) avail_ext="$avail_ext $xxx" ;;
15129                     esac
15130                     ;;
15131                 esac
15132                 ;;
15133         POSIX|posix)
15134                 case "$useposix" in
15135                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15136                 esac
15137                 ;;
15138         Opcode|opcode)
15139                 case "$useopcode" in
15140                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15141                 esac
15142                 ;;
15143         Socket|socket)
15144                 case "$d_socket" in 
15145                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15146                 esac
15147                 ;;
15148         Sys/Syslog|sys/syslog)
15149                 : XXX syslog requires socket
15150                 case "$d_socket" in 
15151                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15152                 esac
15153                 ;;
15154         Thread|thread)
15155                 case "$usethreads" in 
15156                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15157                 esac
15158                 ;;
15159         IPC/SysV|ipc/sysv)
15160                 : XXX Do we need a useipcsysv variable here
15161                 case "${d_msg}${d_sem}${d_shm}" in 
15162                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15163                 esac
15164                 ;;
15165         *)      avail_ext="$avail_ext $xxx"
15166                 ;;
15167         esac
15168 done
15169
15170 set X $avail_ext
15171 shift
15172 avail_ext="$*"
15173
15174 : Now see which nonxs extensions are supported on this system.
15175 : For now assume all are.
15176 nonxs_ext=''
15177 for xxx in $nonxs_extensions ; do
15178         case "$xxx" in
15179         *)      nonxs_ext="$nonxs_ext $xxx"
15180                 ;;
15181         esac
15182 done
15183
15184 set X $nonxs_ext
15185 shift
15186 nonxs_ext="$*"
15187
15188 case $usedl in
15189 $define)
15190         $cat <<EOM
15191 A number of extensions are supplied with $package.  You may choose to
15192 compile these extensions for dynamic loading (the default), compile
15193 them into the $package executable (static loading), or not include
15194 them at all.  Answer "none" to include no extensions.
15195 Note that DynaLoader is always built and need not be mentioned here.
15196
15197 EOM
15198         case "$dynamic_ext" in
15199         '') dflt="$avail_ext" ;;
15200         *)      dflt="$dynamic_ext"
15201                 # Perhaps we are reusing an old out-of-date config.sh.
15202                 case "$hint" in
15203                 previous)
15204                         if test X"$dynamic_ext" != X"$avail_ext"; then
15205                                 $cat <<EOM
15206 NOTICE:  Your previous config.sh list may be incorrect. 
15207 The extensions now available to you are 
15208         ${avail_ext}
15209 but the default list from your previous config.sh is
15210         ${dynamic_ext} 
15211
15212 EOM
15213                         fi
15214                         ;;
15215                 esac
15216                 ;;
15217         esac
15218         case "$dflt" in
15219         '')     dflt=none;;
15220         esac
15221         rp="What extensions do you wish to load dynamically?"
15222         . ./myread
15223         case "$ans" in
15224         none) dynamic_ext=' ' ;;
15225         *) dynamic_ext="$ans" ;;
15226         esac
15227
15228         case "$static_ext" in
15229         '')
15230                 : Exclude those already listed in dynamic linking
15231                 dflt=''
15232                 for xxx in $avail_ext; do
15233                         case " $dynamic_ext " in
15234                         *" $xxx "*) ;;
15235                         *) dflt="$dflt $xxx" ;;
15236                         esac
15237                 done
15238                 set X $dflt
15239                 shift
15240                 dflt="$*"
15241                 ;;
15242         *)  dflt="$static_ext" 
15243                 ;;
15244         esac
15245
15246         case "$dflt" in
15247         '')     dflt=none;;
15248         esac
15249         rp="What extensions do you wish to load statically?"
15250         . ./myread
15251         case "$ans" in
15252         none) static_ext=' ' ;;
15253         *) static_ext="$ans" ;;
15254         esac
15255         ;;
15256 *)
15257         $cat <<EOM
15258 A number of extensions are supplied with $package.  Answer "none" 
15259 to include no extensions. 
15260 Note that DynaLoader is always built and need not be mentioned here.
15261
15262 EOM
15263         case "$static_ext" in
15264         '') dflt="$avail_ext" ;;
15265         *)      dflt="$static_ext"
15266                 # Perhaps we are reusing an old out-of-date config.sh.
15267                 case "$hint" in
15268                 previous)
15269                         if test X"$static_ext" != X"$avail_ext"; then
15270                                 $cat <<EOM
15271 NOTICE:  Your previous config.sh list may be incorrect. 
15272 The extensions now available to you are 
15273         ${avail_ext}
15274 but the default list from your previous config.sh is
15275         ${static_ext} 
15276
15277 EOM
15278                         fi
15279                         ;;
15280                 esac
15281                 ;;
15282         esac
15283         : Exclude those that are not xs extensions
15284         case "$dflt" in
15285         '')     dflt=none;;
15286         esac
15287         rp="What extensions do you wish to include?"
15288         . ./myread
15289         case "$ans" in
15290         none) static_ext=' ' ;;
15291         *) static_ext="$ans" ;;
15292         esac
15293         ;;
15294 esac
15295
15296 set X $dynamic_ext $static_ext $nonxs_ext
15297 shift
15298 extensions="$*"
15299
15300 : Remove build directory name from cppstdin so it can be used from
15301 : either the present location or the final installed location.
15302 echo " "
15303 : Get out of the UU directory to get correct path name.
15304 cd ..
15305 case "$cppstdin" in
15306 `pwd`/cppstdin)
15307         echo "Stripping down cppstdin path name"
15308         cppstdin=cppstdin
15309         ;;
15310 esac
15311 cd UU
15312
15313 : end of configuration questions
15314 echo " "
15315 echo "End of configuration questions."
15316 echo " "
15317
15318 : back to where it started
15319 if test -d ../UU; then
15320         cd ..
15321 fi
15322
15323 : configuration may be patched via a 'config.over' file
15324 if $test -f config.over; then
15325         echo " "
15326         dflt=y
15327         rp='I see a config.over file.  Do you wish to load it?'
15328         . UU/myread
15329         case "$ans" in
15330         n*) echo "OK, I'll ignore it.";;
15331         *)      . ./config.over
15332                 echo "Configuration override changes have been loaded."
15333                 ;;
15334         esac
15335 fi
15336
15337 : in case they want portability, strip down executable paths
15338 case "$d_portable" in
15339 "$define")
15340         echo " "
15341         echo "Stripping down executable paths..." >&4
15342         for file in $loclist $trylist; do
15343                 eval temp=\$$file
15344                 eval $file=`basename $temp`
15345         done
15346         ;;
15347 esac
15348
15349 : create config.sh file
15350 echo " "
15351 echo "Creating config.sh..." >&4
15352 $spitshell <<EOT >config.sh
15353 $startsh
15354 #
15355 # This file was produced by running the Configure script. It holds all the
15356 # definitions figured out by Configure. Should you modify one of these values,
15357 # do not forget to propagate your changes by running "Configure -der". You may
15358 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15359 #
15360
15361 # Package name      : $package
15362 # Source directory  : $src
15363 # Configuration time: $cf_time
15364 # Configured by     : $cf_by
15365 # Target system     : $myuname
15366
15367 Author='$Author'
15368 Date='$Date'
15369 Header='$Header'
15370 Id='$Id'
15371 Locker='$Locker'
15372 Log='$Log'
15373 Mcc='$Mcc'
15374 RCSfile='$RCSfile'
15375 Revision='$Revision'
15376 Source='$Source'
15377 State='$State'
15378 _a='$_a'
15379 _exe='$_exe'
15380 _o='$_o'
15381 afs='$afs'
15382 alignbytes='$alignbytes'
15383 ansi2knr='$ansi2knr'
15384 aphostname='$aphostname'
15385 api_revision='$api_revision'
15386 api_subversion='$api_subversion'
15387 api_version='$api_version'
15388 api_versionstring='$api_versionstring'
15389 ar='$ar'
15390 archlib='$archlib'
15391 archlibexp='$archlibexp'
15392 archname64='$archname64'
15393 archname='$archname'
15394 archobjs='$archobjs'
15395 awk='$awk'
15396 baserev='$baserev'
15397 bash='$bash'
15398 bin='$bin'
15399 bincompat5005='$bincompat5005'
15400 binexp='$binexp'
15401 bison='$bison'
15402 byacc='$byacc'
15403 byteorder='$byteorder'
15404 c='$c'
15405 castflags='$castflags'
15406 cat='$cat'
15407 cc='$cc'
15408 cccdlflags='$cccdlflags'
15409 ccdlflags='$ccdlflags'
15410 ccflags='$ccflags'
15411 ccflags_uselargefiles='$ccflags_uselargefiles'
15412 ccsymbols='$ccsymbols'
15413 cf_by='$cf_by'
15414 cf_email='$cf_email'
15415 cf_time='$cf_time'
15416 charsize='$charsize'
15417 chgrp='$chgrp'
15418 chmod='$chmod'
15419 chown='$chown'
15420 clocktype='$clocktype'
15421 comm='$comm'
15422 compress='$compress'
15423 contains='$contains'
15424 cp='$cp'
15425 cpio='$cpio'
15426 cpp='$cpp'
15427 cpp_stuff='$cpp_stuff'
15428 cppccsymbols='$cppccsymbols'
15429 cppflags='$cppflags'
15430 cpplast='$cpplast'
15431 cppminus='$cppminus'
15432 cpprun='$cpprun'
15433 cppstdin='$cppstdin'
15434 cppsymbols='$cppsymbols'
15435 crosscompile='$crosscompile'
15436 cryptlib='$cryptlib'
15437 csh='$csh'
15438 d_Gconvert='$d_Gconvert'
15439 d_PRIEldbl='$d_PRIEldbl'
15440 d_PRIFldbl='$d_PRIFldbl'
15441 d_PRIGldbl='$d_PRIGldbl'
15442 d_PRIX64='$d_PRIX64'
15443 d_PRId64='$d_PRId64'
15444 d_PRIeldbl='$d_PRIeldbl'
15445 d_PRIfldbl='$d_PRIfldbl'
15446 d_PRIgldbl='$d_PRIgldbl'
15447 d_PRIi64='$d_PRIi64'
15448 d_PRIo64='$d_PRIo64'
15449 d_PRIu64='$d_PRIu64'
15450 d_PRIx64='$d_PRIx64'
15451 d_access='$d_access'
15452 d_accessx='$d_accessx'
15453 d_alarm='$d_alarm'
15454 d_archlib='$d_archlib'
15455 d_atolf='$d_atolf'
15456 d_atoll='$d_atoll'
15457 d_attribut='$d_attribut'
15458 d_bcmp='$d_bcmp'
15459 d_bcopy='$d_bcopy'
15460 d_bincompat5005='$d_bincompat5005'
15461 d_bsd='$d_bsd'
15462 d_bsdgetpgrp='$d_bsdgetpgrp'
15463 d_bsdsetpgrp='$d_bsdsetpgrp'
15464 d_bzero='$d_bzero'
15465 d_casti32='$d_casti32'
15466 d_castneg='$d_castneg'
15467 d_charvspr='$d_charvspr'
15468 d_chown='$d_chown'
15469 d_chroot='$d_chroot'
15470 d_chsize='$d_chsize'
15471 d_closedir='$d_closedir'
15472 d_const='$d_const'
15473 d_crypt='$d_crypt'
15474 d_csh='$d_csh'
15475 d_cuserid='$d_cuserid'
15476 d_dbl_dig='$d_dbl_dig'
15477 d_difftime='$d_difftime'
15478 d_dirnamlen='$d_dirnamlen'
15479 d_dlerror='$d_dlerror'
15480 d_dlopen='$d_dlopen'
15481 d_dlsymun='$d_dlsymun'
15482 d_dosuid='$d_dosuid'
15483 d_drand48proto='$d_drand48proto'
15484 d_dup2='$d_dup2'
15485 d_eaccess='$d_eaccess'
15486 d_endgrent='$d_endgrent'
15487 d_endhent='$d_endhent'
15488 d_endnent='$d_endnent'
15489 d_endpent='$d_endpent'
15490 d_endpwent='$d_endpwent'
15491 d_endsent='$d_endsent'
15492 d_eofnblk='$d_eofnblk'
15493 d_eunice='$d_eunice'
15494 d_fchmod='$d_fchmod'
15495 d_fchown='$d_fchown'
15496 d_fcntl='$d_fcntl'
15497 d_fd_macros='$d_fd_macros'
15498 d_fd_set='$d_fd_set'
15499 d_fds_bits='$d_fds_bits'
15500 d_fgetpos='$d_fgetpos'
15501 d_flexfnam='$d_flexfnam'
15502 d_flock='$d_flock'
15503 d_fork='$d_fork'
15504 d_fpathconf='$d_fpathconf'
15505 d_fpos64_t='$d_fpos64_t'
15506 d_frexpl='$d_frexpl'
15507 d_fs_data_s='$d_fs_data_s'
15508 d_fseeko='$d_fseeko'
15509 d_fsetpos='$d_fsetpos'
15510 d_fstatfs='$d_fstatfs'
15511 d_fstatvfs='$d_fstatvfs'
15512 d_ftello='$d_ftello'
15513 d_ftime='$d_ftime'
15514 d_getcwd='$d_getcwd'
15515 d_getespwnam='$d_getespwnam'
15516 d_getfsstat='$d_getfsstat'
15517 d_getgrent='$d_getgrent'
15518 d_getgrps='$d_getgrps'
15519 d_gethbyaddr='$d_gethbyaddr'
15520 d_gethbyname='$d_gethbyname'
15521 d_gethent='$d_gethent'
15522 d_gethname='$d_gethname'
15523 d_gethostprotos='$d_gethostprotos'
15524 d_getlogin='$d_getlogin'
15525 d_getmnt='$d_getmnt'
15526 d_getmntent='$d_getmntent'
15527 d_getnbyaddr='$d_getnbyaddr'
15528 d_getnbyname='$d_getnbyname'
15529 d_getnent='$d_getnent'
15530 d_getnetprotos='$d_getnetprotos'
15531 d_getpbyname='$d_getpbyname'
15532 d_getpbynumber='$d_getpbynumber'
15533 d_getpent='$d_getpent'
15534 d_getpgid='$d_getpgid'
15535 d_getpgrp2='$d_getpgrp2'
15536 d_getpgrp='$d_getpgrp'
15537 d_getppid='$d_getppid'
15538 d_getprior='$d_getprior'
15539 d_getprotoprotos='$d_getprotoprotos'
15540 d_getprpwnam='$d_getprpwnam'
15541 d_getpwent='$d_getpwent'
15542 d_getsbyname='$d_getsbyname'
15543 d_getsbyport='$d_getsbyport'
15544 d_getsent='$d_getsent'
15545 d_getservprotos='$d_getservprotos'
15546 d_getspnam='$d_getspnam'
15547 d_gettimeod='$d_gettimeod'
15548 d_gnulibc='$d_gnulibc'
15549 d_grpasswd='$d_grpasswd'
15550 d_hasmntopt='$d_hasmntopt'
15551 d_htonl='$d_htonl'
15552 d_iconv='$d_iconv'
15553 d_index='$d_index'
15554 d_inetaton='$d_inetaton'
15555 d_int64_t='$d_int64_t'
15556 d_isascii='$d_isascii'
15557 d_isnan='$d_isnan'
15558 d_isnanl='$d_isnanl'
15559 d_killpg='$d_killpg'
15560 d_lchown='$d_lchown'
15561 d_ldbl_dig='$d_ldbl_dig'
15562 d_link='$d_link'
15563 d_locconv='$d_locconv'
15564 d_lockf='$d_lockf'
15565 d_longdbl='$d_longdbl'
15566 d_longlong='$d_longlong'
15567 d_lseekproto='$d_lseekproto'
15568 d_lstat='$d_lstat'
15569 d_madvise='$d_madvise'
15570 d_mblen='$d_mblen'
15571 d_mbstowcs='$d_mbstowcs'
15572 d_mbtowc='$d_mbtowc'
15573 d_memchr='$d_memchr'
15574 d_memcmp='$d_memcmp'
15575 d_memcpy='$d_memcpy'
15576 d_memmove='$d_memmove'
15577 d_memset='$d_memset'
15578 d_mkdir='$d_mkdir'
15579 d_mkdtemp='$d_mkdtemp'
15580 d_mkfifo='$d_mkfifo'
15581 d_mkstemp='$d_mkstemp'
15582 d_mkstemps='$d_mkstemps'
15583 d_mktime='$d_mktime'
15584 d_mmap='$d_mmap'
15585 d_modfl='$d_modfl'
15586 d_mprotect='$d_mprotect'
15587 d_msg='$d_msg'
15588 d_msg_ctrunc='$d_msg_ctrunc'
15589 d_msg_dontroute='$d_msg_dontroute'
15590 d_msg_oob='$d_msg_oob'
15591 d_msg_peek='$d_msg_peek'
15592 d_msg_proxy='$d_msg_proxy'
15593 d_msgctl='$d_msgctl'
15594 d_msgget='$d_msgget'
15595 d_msgrcv='$d_msgrcv'
15596 d_msgsnd='$d_msgsnd'
15597 d_msync='$d_msync'
15598 d_munmap='$d_munmap'
15599 d_mymalloc='$d_mymalloc'
15600 d_nice='$d_nice'
15601 d_nv_preserves_uv='$d_nv_preserves_uv'
15602 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15603 d_off64_t='$d_off64_t'
15604 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15605 d_oldpthreads='$d_oldpthreads'
15606 d_oldsock='$d_oldsock'
15607 d_open3='$d_open3'
15608 d_pathconf='$d_pathconf'
15609 d_pause='$d_pause'
15610 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15611 d_phostname='$d_phostname'
15612 d_pipe='$d_pipe'
15613 d_poll='$d_poll'
15614 d_portable='$d_portable'
15615 d_pthread_yield='$d_pthread_yield'
15616 d_pwage='$d_pwage'
15617 d_pwchange='$d_pwchange'
15618 d_pwclass='$d_pwclass'
15619 d_pwcomment='$d_pwcomment'
15620 d_pwexpire='$d_pwexpire'
15621 d_pwgecos='$d_pwgecos'
15622 d_pwpasswd='$d_pwpasswd'
15623 d_pwquota='$d_pwquota'
15624 d_qgcvt='$d_qgcvt'
15625 d_quad='$d_quad'
15626 d_readdir='$d_readdir'
15627 d_readlink='$d_readlink'
15628 d_rename='$d_rename'
15629 d_rewinddir='$d_rewinddir'
15630 d_rmdir='$d_rmdir'
15631 d_safebcpy='$d_safebcpy'
15632 d_safemcpy='$d_safemcpy'
15633 d_sanemcmp='$d_sanemcmp'
15634 d_sched_yield='$d_sched_yield'
15635 d_scm_rights='$d_scm_rights'
15636 d_seekdir='$d_seekdir'
15637 d_select='$d_select'
15638 d_sem='$d_sem'
15639 d_semctl='$d_semctl'
15640 d_semctl_semid_ds='$d_semctl_semid_ds'
15641 d_semctl_semun='$d_semctl_semun'
15642 d_semget='$d_semget'
15643 d_semop='$d_semop'
15644 d_setegid='$d_setegid'
15645 d_seteuid='$d_seteuid'
15646 d_setgrent='$d_setgrent'
15647 d_setgrps='$d_setgrps'
15648 d_sethent='$d_sethent'
15649 d_setlinebuf='$d_setlinebuf'
15650 d_setlocale='$d_setlocale'
15651 d_setnent='$d_setnent'
15652 d_setpent='$d_setpent'
15653 d_setpgid='$d_setpgid'
15654 d_setpgrp2='$d_setpgrp2'
15655 d_setpgrp='$d_setpgrp'
15656 d_setprior='$d_setprior'
15657 d_setproctitle='$d_setproctitle'
15658 d_setpwent='$d_setpwent'
15659 d_setregid='$d_setregid'
15660 d_setresgid='$d_setresgid'
15661 d_setresuid='$d_setresuid'
15662 d_setreuid='$d_setreuid'
15663 d_setrgid='$d_setrgid'
15664 d_setruid='$d_setruid'
15665 d_setsent='$d_setsent'
15666 d_setsid='$d_setsid'
15667 d_setvbuf='$d_setvbuf'
15668 d_sfio='$d_sfio'
15669 d_shm='$d_shm'
15670 d_shmat='$d_shmat'
15671 d_shmatprototype='$d_shmatprototype'
15672 d_shmctl='$d_shmctl'
15673 d_shmdt='$d_shmdt'
15674 d_shmget='$d_shmget'
15675 d_sigaction='$d_sigaction'
15676 d_sigsetjmp='$d_sigsetjmp'
15677 d_socket='$d_socket'
15678 d_socklen_t='$d_socklen_t'
15679 d_sockpair='$d_sockpair'
15680 d_socks5_init='$d_socks5_init'
15681 d_sqrtl='$d_sqrtl'
15682 d_statblks='$d_statblks'
15683 d_statfs_f_flags='$d_statfs_f_flags'
15684 d_statfs_s='$d_statfs_s'
15685 d_statvfs='$d_statvfs'
15686 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15687 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15688 d_stdio_stream_array='$d_stdio_stream_array'
15689 d_stdiobase='$d_stdiobase'
15690 d_stdstdio='$d_stdstdio'
15691 d_strchr='$d_strchr'
15692 d_strcoll='$d_strcoll'
15693 d_strctcpy='$d_strctcpy'
15694 d_strerrm='$d_strerrm'
15695 d_strerror='$d_strerror'
15696 d_strtod='$d_strtod'
15697 d_strtol='$d_strtol'
15698 d_strtold='$d_strtold'
15699 d_strtoll='$d_strtoll'
15700 d_strtoul='$d_strtoul'
15701 d_strtoull='$d_strtoull'
15702 d_strtouq='$d_strtouq'
15703 d_strxfrm='$d_strxfrm'
15704 d_suidsafe='$d_suidsafe'
15705 d_symlink='$d_symlink'
15706 d_syscall='$d_syscall'
15707 d_sysconf='$d_sysconf'
15708 d_sysernlst='$d_sysernlst'
15709 d_syserrlst='$d_syserrlst'
15710 d_system='$d_system'
15711 d_tcgetpgrp='$d_tcgetpgrp'
15712 d_tcsetpgrp='$d_tcsetpgrp'
15713 d_telldir='$d_telldir'
15714 d_telldirproto='$d_telldirproto'
15715 d_time='$d_time'
15716 d_times='$d_times'
15717 d_truncate='$d_truncate'
15718 d_tzname='$d_tzname'
15719 d_umask='$d_umask'
15720 d_uname='$d_uname'
15721 d_union_semun='$d_union_semun'
15722 d_ustat='$d_ustat'
15723 d_vendorarch='$d_vendorarch'
15724 d_vendorbin='$d_vendorbin'
15725 d_vendorlib='$d_vendorlib'
15726 d_vfork='$d_vfork'
15727 d_void_closedir='$d_void_closedir'
15728 d_voidsig='$d_voidsig'
15729 d_voidtty='$d_voidtty'
15730 d_volatile='$d_volatile'
15731 d_vprintf='$d_vprintf'
15732 d_wait4='$d_wait4'
15733 d_waitpid='$d_waitpid'
15734 d_wcstombs='$d_wcstombs'
15735 d_wctomb='$d_wctomb'
15736 d_xenix='$d_xenix'
15737 date='$date'
15738 db_hashtype='$db_hashtype'
15739 db_prefixtype='$db_prefixtype'
15740 defvoidused='$defvoidused'
15741 direntrytype='$direntrytype'
15742 dlext='$dlext'
15743 dlsrc='$dlsrc'
15744 doublesize='$doublesize'
15745 drand01='$drand01'
15746 dynamic_ext='$dynamic_ext'
15747 eagain='$eagain'
15748 ebcdic='$ebcdic'
15749 echo='$echo'
15750 egrep='$egrep'
15751 emacs='$emacs'
15752 eunicefix='$eunicefix'
15753 exe_ext='$exe_ext'
15754 expr='$expr'
15755 extensions='$extensions'
15756 fflushNULL='$fflushNULL'
15757 fflushall='$fflushall'
15758 find='$find'
15759 firstmakefile='$firstmakefile'
15760 flex='$flex'
15761 fpossize='$fpossize'
15762 fpostype='$fpostype'
15763 freetype='$freetype'
15764 full_ar='$full_ar'
15765 full_csh='$full_csh'
15766 full_sed='$full_sed'
15767 gccosandvers='$gccosandvers'
15768 gccversion='$gccversion'
15769 gidformat='$gidformat'
15770 gidsign='$gidsign'
15771 gidsize='$gidsize'
15772 gidtype='$gidtype'
15773 glibpth='$glibpth'
15774 grep='$grep'
15775 groupcat='$groupcat'
15776 groupstype='$groupstype'
15777 gzip='$gzip'
15778 h_fcntl='$h_fcntl'
15779 h_sysfile='$h_sysfile'
15780 hint='$hint'
15781 hostcat='$hostcat'
15782 huge='$huge'
15783 i16size='$i16size'
15784 i16type='$i16type'
15785 i32size='$i32size'
15786 i32type='$i32type'
15787 i64size='$i64size'
15788 i64type='$i64type'
15789 i8size='$i8size'
15790 i8type='$i8type'
15791 i_arpainet='$i_arpainet'
15792 i_bsdioctl='$i_bsdioctl'
15793 i_db='$i_db'
15794 i_dbm='$i_dbm'
15795 i_dirent='$i_dirent'
15796 i_dld='$i_dld'
15797 i_dlfcn='$i_dlfcn'
15798 i_fcntl='$i_fcntl'
15799 i_float='$i_float'
15800 i_gdbm='$i_gdbm'
15801 i_grp='$i_grp'
15802 i_iconv='$i_iconv'
15803 i_ieeefp='$i_ieeefp'
15804 i_inttypes='$i_inttypes'
15805 i_libutil='$i_libutil'
15806 i_limits='$i_limits'
15807 i_locale='$i_locale'
15808 i_machcthr='$i_machcthr'
15809 i_malloc='$i_malloc'
15810 i_math='$i_math'
15811 i_memory='$i_memory'
15812 i_mntent='$i_mntent'
15813 i_ndbm='$i_ndbm'
15814 i_netdb='$i_netdb'
15815 i_neterrno='$i_neterrno'
15816 i_netinettcp='$i_netinettcp'
15817 i_niin='$i_niin'
15818 i_poll='$i_poll'
15819 i_prot='$i_prot'
15820 i_pthread='$i_pthread'
15821 i_pwd='$i_pwd'
15822 i_rpcsvcdbm='$i_rpcsvcdbm'
15823 i_sfio='$i_sfio'
15824 i_sgtty='$i_sgtty'
15825 i_shadow='$i_shadow'
15826 i_socks='$i_socks'
15827 i_stdarg='$i_stdarg'
15828 i_stddef='$i_stddef'
15829 i_stdlib='$i_stdlib'
15830 i_string='$i_string'
15831 i_sunmath='$i_sunmath'
15832 i_sysaccess='$i_sysaccess'
15833 i_sysdir='$i_sysdir'
15834 i_sysfile='$i_sysfile'
15835 i_sysfilio='$i_sysfilio'
15836 i_sysin='$i_sysin'
15837 i_sysioctl='$i_sysioctl'
15838 i_syslog='$i_syslog'
15839 i_sysmman='$i_sysmman'
15840 i_sysmode='$i_sysmode'
15841 i_sysmount='$i_sysmount'
15842 i_sysndir='$i_sysndir'
15843 i_sysparam='$i_sysparam'
15844 i_sysresrc='$i_sysresrc'
15845 i_syssecrt='$i_syssecrt'
15846 i_sysselct='$i_sysselct'
15847 i_syssockio='$i_syssockio'
15848 i_sysstat='$i_sysstat'
15849 i_sysstatfs='$i_sysstatfs'
15850 i_sysstatvfs='$i_sysstatvfs'
15851 i_systime='$i_systime'
15852 i_systimek='$i_systimek'
15853 i_systimes='$i_systimes'
15854 i_systypes='$i_systypes'
15855 i_sysuio='$i_sysuio'
15856 i_sysun='$i_sysun'
15857 i_sysutsname='$i_sysutsname'
15858 i_sysvfs='$i_sysvfs'
15859 i_syswait='$i_syswait'
15860 i_termio='$i_termio'
15861 i_termios='$i_termios'
15862 i_time='$i_time'
15863 i_unistd='$i_unistd'
15864 i_ustat='$i_ustat'
15865 i_utime='$i_utime'
15866 i_values='$i_values'
15867 i_varargs='$i_varargs'
15868 i_varhdr='$i_varhdr'
15869 i_vfork='$i_vfork'
15870 ignore_versioned_solibs='$ignore_versioned_solibs'
15871 inc_version_list='$inc_version_list'
15872 inc_version_list_init='$inc_version_list_init'
15873 incpath='$incpath'
15874 inews='$inews'
15875 installarchlib='$installarchlib'
15876 installbin='$installbin'
15877 installman1dir='$installman1dir'
15878 installman3dir='$installman3dir'
15879 installprefix='$installprefix'
15880 installprefixexp='$installprefixexp'
15881 installprivlib='$installprivlib'
15882 installscript='$installscript'
15883 installsitearch='$installsitearch'
15884 installsitebin='$installsitebin'
15885 installsitelib='$installsitelib'
15886 installstyle='$installstyle'
15887 installusrbinperl='$installusrbinperl'
15888 installvendorarch='$installvendorarch'
15889 installvendorbin='$installvendorbin'
15890 installvendorlib='$installvendorlib'
15891 intsize='$intsize'
15892 ivdformat='$ivdformat'
15893 ivsize='$ivsize'
15894 ivtype='$ivtype'
15895 known_extensions='$known_extensions'
15896 ksh='$ksh'
15897 large='$large'
15898 ld='$ld'
15899 lddlflags='$lddlflags'
15900 ldflags='$ldflags'
15901 ldflags_uselargefiles='$ldflags_uselargefiles'
15902 ldlibpthname='$ldlibpthname'
15903 less='$less'
15904 lib_ext='$lib_ext'
15905 libc='$libc'
15906 libperl='$libperl'
15907 libpth='$libpth'
15908 libs='$libs'
15909 libsdirs='$libsdirs'
15910 libsfiles='$libsfiles'
15911 libsfound='$libsfound'
15912 libspath='$libspath'
15913 libswanted='$libswanted'
15914 libswanted_uselargefiles='$libswanted_uselargefiles'
15915 line='$line'
15916 lint='$lint'
15917 lkflags='$lkflags'
15918 ln='$ln'
15919 lns='$lns'
15920 locincpth='$locincpth'
15921 loclibpth='$loclibpth'
15922 longdblsize='$longdblsize'
15923 longlongsize='$longlongsize'
15924 longsize='$longsize'
15925 lp='$lp'
15926 lpr='$lpr'
15927 ls='$ls'
15928 lseeksize='$lseeksize'
15929 lseektype='$lseektype'
15930 mail='$mail'
15931 mailx='$mailx'
15932 make='$make'
15933 make_set_make='$make_set_make'
15934 mallocobj='$mallocobj'
15935 mallocsrc='$mallocsrc'
15936 malloctype='$malloctype'
15937 man1dir='$man1dir'
15938 man1direxp='$man1direxp'
15939 man1ext='$man1ext'
15940 man3dir='$man3dir'
15941 man3direxp='$man3direxp'
15942 man3ext='$man3ext'
15943 medium='$medium'
15944 mips_type='$mips_type'
15945 mkdir='$mkdir'
15946 mmaptype='$mmaptype'
15947 models='$models'
15948 modetype='$modetype'
15949 more='$more'
15950 multiarch='$multiarch'
15951 mv='$mv'
15952 myarchname='$myarchname'
15953 mydomain='$mydomain'
15954 myhostname='$myhostname'
15955 myuname='$myuname'
15956 n='$n'
15957 netdb_hlen_type='$netdb_hlen_type'
15958 netdb_host_type='$netdb_host_type'
15959 netdb_name_type='$netdb_name_type'
15960 netdb_net_type='$netdb_net_type'
15961 nm='$nm'
15962 nm_opt='$nm_opt'
15963 nm_so_opt='$nm_so_opt'
15964 nonxs_ext='$nonxs_ext'
15965 nroff='$nroff'
15966 nvEformat='$nvEformat'
15967 nvFformat='$nvFformat'
15968 nvGformat='$nvGformat'
15969 nveformat='$nveformat'
15970 nvfformat='$nvfformat'
15971 nvgformat='$nvgformat'
15972 nvsize='$nvsize'
15973 nvtype='$nvtype'
15974 o_nonblock='$o_nonblock'
15975 obj_ext='$obj_ext'
15976 old_pthread_create_joinable='$old_pthread_create_joinable'
15977 optimize='$optimize'
15978 orderlib='$orderlib'
15979 osname='$osname'
15980 osvers='$osvers'
15981 otherlibdirs='$otherlibdirs'
15982 package='$package'
15983 pager='$pager'
15984 passcat='$passcat'
15985 patchlevel='$patchlevel'
15986 path_sep='$path_sep'
15987 perl5='$perl5'
15988 perl='$perl'
15989 perladmin='$perladmin'
15990 perlpath='$perlpath'
15991 pg='$pg'
15992 phostname='$phostname'
15993 pidtype='$pidtype'
15994 plibpth='$plibpth'
15995 pm_apiversion='$pm_apiversion'
15996 pmake='$pmake'
15997 pr='$pr'
15998 prefix='$prefix'
15999 prefixexp='$prefixexp'
16000 privlib='$privlib'
16001 privlibexp='$privlibexp'
16002 prototype='$prototype'
16003 ptrsize='$ptrsize'
16004 quadkind='$quadkind'
16005 quadtype='$quadtype'
16006 randbits='$randbits'
16007 randfunc='$randfunc'
16008 randseedtype='$randseedtype'
16009 ranlib='$ranlib'
16010 rd_nodata='$rd_nodata'
16011 revision='$revision'
16012 rm='$rm'
16013 rmail='$rmail'
16014 runnm='$runnm'
16015 sPRIEldbl='$sPRIEldbl'
16016 sPRIFldbl='$sPRIFldbl'
16017 sPRIGldbl='$sPRIGldbl'
16018 sPRIX64='$sPRIX64'
16019 sPRId64='$sPRId64'
16020 sPRIeldbl='$sPRIeldbl'
16021 sPRIfldbl='$sPRIfldbl'
16022 sPRIgldbl='$sPRIgldbl'
16023 sPRIi64='$sPRIi64'
16024 sPRIo64='$sPRIo64'
16025 sPRIu64='$sPRIu64'
16026 sPRIx64='$sPRIx64'
16027 sched_yield='$sched_yield'
16028 scriptdir='$scriptdir'
16029 scriptdirexp='$scriptdirexp'
16030 sed='$sed'
16031 seedfunc='$seedfunc'
16032 selectminbits='$selectminbits'
16033 selecttype='$selecttype'
16034 sendmail='$sendmail'
16035 sh='$sh'
16036 shar='$shar'
16037 sharpbang='$sharpbang'
16038 shmattype='$shmattype'
16039 shortsize='$shortsize'
16040 shrpenv='$shrpenv'
16041 shsharp='$shsharp'
16042 sig_count='$sig_count'
16043 sig_name='$sig_name'
16044 sig_name_init='$sig_name_init'
16045 sig_num='$sig_num'
16046 sig_num_init='$sig_num_init'
16047 signal_t='$signal_t'
16048 sitearch='$sitearch'
16049 sitearchexp='$sitearchexp'
16050 sitebin='$sitebin'
16051 sitebinexp='$sitebinexp'
16052 sitelib='$sitelib'
16053 sitelib_stem='$sitelib_stem'
16054 sitelibexp='$sitelibexp'
16055 siteprefix='$siteprefix'
16056 siteprefixexp='$siteprefixexp'
16057 sizesize='$sizesize'
16058 sizetype='$sizetype'
16059 sleep='$sleep'
16060 smail='$smail'
16061 small='$small'
16062 so='$so'
16063 sockethdr='$sockethdr'
16064 socketlib='$socketlib'
16065 socksizetype='$socksizetype'
16066 sort='$sort'
16067 spackage='$spackage'
16068 spitshell='$spitshell'
16069 split='$split'
16070 src='$src'
16071 ssizetype='$ssizetype'
16072 startperl='$startperl'
16073 startsh='$startsh'
16074 static_ext='$static_ext'
16075 stdchar='$stdchar'
16076 stdio_base='$stdio_base'
16077 stdio_bufsiz='$stdio_bufsiz'
16078 stdio_cnt='$stdio_cnt'
16079 stdio_filbuf='$stdio_filbuf'
16080 stdio_ptr='$stdio_ptr'
16081 stdio_stream_array='$stdio_stream_array'
16082 strings='$strings'
16083 submit='$submit'
16084 subversion='$subversion'
16085 sysman='$sysman'
16086 tail='$tail'
16087 tar='$tar'
16088 tbl='$tbl'
16089 tee='$tee'
16090 test='$test'
16091 timeincl='$timeincl'
16092 timetype='$timetype'
16093 touch='$touch'
16094 tr='$tr'
16095 trnl='$trnl'
16096 troff='$troff'
16097 u16size='$u16size'
16098 u16type='$u16type'
16099 u32size='$u32size'
16100 u32type='$u32type'
16101 u64size='$u64size'
16102 u64type='$u64type'
16103 u8size='$u8size'
16104 u8type='$u8type'
16105 uidformat='$uidformat'
16106 uidsign='$uidsign'
16107 uidsize='$uidsize'
16108 uidtype='$uidtype'
16109 uname='$uname'
16110 uniq='$uniq'
16111 uquadtype='$uquadtype'
16112 use5005threads='$use5005threads'
16113 use64bitall='$use64bitall'
16114 use64bitint='$use64bitint'
16115 usedl='$usedl'
16116 useithreads='$useithreads'
16117 uselargefiles='$uselargefiles'
16118 uselongdouble='$uselongdouble'
16119 usemorebits='$usemorebits'
16120 usemultiplicity='$usemultiplicity'
16121 usemymalloc='$usemymalloc'
16122 usenm='$usenm'
16123 useopcode='$useopcode'
16124 useperlio='$useperlio'
16125 useposix='$useposix'
16126 usesfio='$usesfio'
16127 useshrplib='$useshrplib'
16128 usesocks='$usesocks'
16129 usethreads='$usethreads'
16130 usevendorprefix='$usevendorprefix'
16131 usevfork='$usevfork'
16132 usrinc='$usrinc'
16133 uuname='$uuname'
16134 uvXformat='$uvXformat'
16135 uvoformat='$uvoformat'
16136 uvsize='$uvsize'
16137 uvtype='$uvtype'
16138 uvuformat='$uvuformat'
16139 uvxformat='$uvxformat'
16140 vendorarch='$vendorarch'
16141 vendorarchexp='$vendorarchexp'
16142 vendorbin='$vendorbin'
16143 vendorbinexp='$vendorbinexp'
16144 vendorlib='$vendorlib'
16145 vendorlib_stem='$vendorlib_stem'
16146 vendorlibexp='$vendorlibexp'
16147 vendorprefix='$vendorprefix'
16148 vendorprefixexp='$vendorprefixexp'
16149 version='$version'
16150 vi='$vi'
16151 voidflags='$voidflags'
16152 xlibpth='$xlibpth'
16153 xs_apiversion='$xs_apiversion'
16154 zcat='$zcat'
16155 zip='$zip'
16156 EOT
16157
16158 : Add in command line options if available
16159 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16160
16161 : add special variables
16162 $test -f $src/patchlevel.h && \
16163 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16164 echo "CONFIGDOTSH=true" >>config.sh
16165
16166 : propagate old symbols
16167 if $test -f UU/config.sh; then
16168         <UU/config.sh sort | uniq >UU/oldconfig.sh
16169         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16170         sort | uniq -u >UU/oldsyms
16171         set X `cat UU/oldsyms`
16172         shift
16173         case $# in
16174         0) ;;
16175         *)
16176                 cat <<EOM
16177 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16178 EOM
16179                 echo "# Variables propagated from previous config.sh file." >>config.sh
16180                 for sym in `cat UU/oldsyms`; do
16181                         echo "    Propagating $hint variable "'$'"$sym..."
16182                         eval 'tmp="$'"${sym}"'"'
16183                         echo "$tmp" | \
16184                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16185                 done
16186                 ;;
16187         esac
16188 fi
16189
16190 : Finish up by extracting the .SH files
16191 case "$alldone" in
16192 exit)
16193         $rm -rf UU
16194         echo "Done."
16195         exit 0
16196         ;;
16197 cont)
16198         ;;
16199 '')
16200         dflt=''
16201         nostick=true
16202         $cat <<EOM
16203
16204 If you'd like to make any changes to the config.sh file before I begin
16205 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16206
16207 EOM
16208         rp="Press return or use a shell escape to edit config.sh:"
16209         . UU/myread
16210         nostick=''
16211         case "$ans" in
16212         '') ;;
16213         *) : in case they cannot read
16214                 sh 1>&4 -c "$ans";;
16215         esac
16216         ;;
16217 esac
16218
16219 : if this fails, just run all the .SH files by hand
16220 . ./config.sh
16221
16222 echo " "
16223 exec 1>&4
16224 . ./UU/extract
16225
16226 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16227         dflt=y
16228         case "$silent" in
16229         true) ;;
16230         *)
16231                 $cat <<EOM
16232
16233 Now you need to generate make dependencies by running "$make depend".
16234 You might prefer to run it in background: "$make depend > makedepend.out &"
16235 It can take a while, so you might not want to run it right now.
16236
16237 EOM
16238                 ;;
16239         esac
16240         rp="Run $make depend now?"
16241         . UU/myread
16242         case "$ans" in
16243         y*)
16244                 $make depend && echo "Now you must run a $make."
16245                 ;;
16246         *)
16247                 echo "You must run '$make depend' then '$make'."
16248                 ;;
16249         esac
16250 elif test -f [Mm]akefile; then
16251         echo " "
16252         echo "Now you must run a $make."
16253 else
16254         echo "Done."
16255 fi
16256
16257 if $test -f Policy.sh; then
16258     $cat <<EOM
16259
16260 If you compile $package on a different machine or from a different object
16261 directory, copy the Policy.sh file from this object directory to the
16262 new one before you run Configure -- this will help you with most of
16263 the policy defaults.
16264
16265 EOM
16266 fi
16267 if $test -f config.msg; then
16268     echo "Hmm.  I also noted the following information while running:"
16269     echo " "
16270     $cat config.msg >&4
16271     $rm -f config.msg
16272 fi
16273 $rm -f kit*isdone ark*isdone
16274 $rm -rf UU
16275
16276 : End of Configure
16277