169f89c2eaa5afe52687040b0125008a5939d3bc
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Fri Sep  1 17:46:55 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 ccname=''
602 gccosandvers=''
603 gccversion=''
604 gidformat=''
605 gidsign=''
606 gidsize=''
607 gidtype=''
608 groupstype=''
609 h_fcntl=''
610 h_sysfile=''
611 i_arpainet=''
612 db_hashtype=''
613 db_prefixtype=''
614 i_db=''
615 i_dbm=''
616 i_rpcsvcdbm=''
617 d_dirnamlen=''
618 direntrytype=''
619 i_dirent=''
620 i_dld=''
621 i_dlfcn=''
622 i_fcntl=''
623 i_float=''
624 i_gdbm=''
625 d_grpasswd=''
626 i_grp=''
627 i_iconv=''
628 i_ieeefp=''
629 i_inttypes=''
630 i_libutil=''
631 i_limits=''
632 i_locale=''
633 i_machcthr=''
634 i_malloc=''
635 i_math=''
636 i_memory=''
637 i_mntent=''
638 i_ndbm=''
639 i_netdb=''
640 i_neterrno=''
641 i_netinettcp=''
642 i_niin=''
643 i_sysin=''
644 i_poll=''
645 i_prot=''
646 i_pthread=''
647 d_pwage=''
648 d_pwchange=''
649 d_pwclass=''
650 d_pwcomment=''
651 d_pwexpire=''
652 d_pwgecos=''
653 d_pwpasswd=''
654 d_pwquota=''
655 i_pwd=''
656 i_sfio=''
657 i_shadow=''
658 i_socks=''
659 i_stddef=''
660 i_stdlib=''
661 i_string=''
662 strings=''
663 i_sunmath=''
664 i_sysaccess=''
665 i_sysdir=''
666 i_sysfile=''
667 d_voidtty=''
668 i_bsdioctl=''
669 i_sysfilio=''
670 i_sysioctl=''
671 i_syssockio=''
672 i_syslog=''
673 i_sysmman=''
674 i_sysmode=''
675 i_sysmount=''
676 i_sysndir=''
677 i_sysparam=''
678 i_sysresrc=''
679 i_syssecrt=''
680 i_sysselct=''
681 i_sysstat=''
682 i_sysstatfs=''
683 i_sysstatvfs=''
684 i_systimes=''
685 i_systypes=''
686 i_sysuio=''
687 i_sysun=''
688 i_sysutsname=''
689 i_sysvfs=''
690 i_syswait=''
691 i_sgtty=''
692 i_termio=''
693 i_termios=''
694 i_systime=''
695 i_systimek=''
696 i_time=''
697 timeincl=''
698 i_unistd=''
699 i_ustat=''
700 i_utime=''
701 i_values=''
702 i_stdarg=''
703 i_varargs=''
704 i_varhdr=''
705 i_vfork=''
706 inc_version_list=''
707 inc_version_list_init=''
708 installprefix=''
709 installprefixexp=''
710 installstyle=''
711 installusrbinperl=''
712 intsize=''
713 longsize=''
714 shortsize=''
715 libc=''
716 ldlibpthname=''
717 libperl=''
718 shrpenv=''
719 useshrplib=''
720 glibpth=''
721 libpth=''
722 loclibpth=''
723 plibpth=''
724 xlibpth=''
725 ignore_versioned_solibs=''
726 libs=''
727 libsdirs=''
728 libsfiles=''
729 libsfound=''
730 libspath=''
731 lns=''
732 d_PRIEldbl=''
733 d_PRIFldbl=''
734 d_PRIGldbl=''
735 d_PRIeldbl=''
736 d_PRIfldbl=''
737 d_PRIgldbl=''
738 d_SCNfldbl=''
739 sPRIEldbl=''
740 sPRIFldbl=''
741 sPRIGldbl=''
742 sPRIeldbl=''
743 sPRIfldbl=''
744 sPRIgldbl=''
745 sSCNfldbl=''
746 lseeksize=''
747 lseektype=''
748 make_set_make=''
749 d_mymalloc=''
750 freetype=''
751 mallocobj=''
752 mallocsrc=''
753 malloctype=''
754 usemymalloc=''
755 installman1dir=''
756 man1dir=''
757 man1direxp=''
758 man1ext=''
759 installman3dir=''
760 man3dir=''
761 man3direxp=''
762 man3ext=''
763 huge=''
764 large=''
765 medium=''
766 models=''
767 small=''
768 split=''
769 modetype=''
770 multiarch=''
771 mydomain=''
772 myhostname=''
773 phostname=''
774 c=''
775 n=''
776 d_eofnblk=''
777 eagain=''
778 o_nonblock=''
779 rd_nodata=''
780 netdb_hlen_type=''
781 netdb_host_type=''
782 netdb_name_type=''
783 netdb_net_type=''
784 groupcat=''
785 hostcat=''
786 passcat=''
787 orderlib=''
788 ranlib=''
789 d_perl_otherlibdirs=''
790 otherlibdirs=''
791 package=''
792 spackage=''
793 pager=''
794 api_revision=''
795 api_subversion=''
796 api_version=''
797 api_versionstring=''
798 patchlevel=''
799 revision=''
800 subversion=''
801 version=''
802 perl5=''
803 perladmin=''
804 perlpath=''
805 d_nv_preserves_uv=''
806 d_nv_preserves_uv_bits=''
807 i16size=''
808 i16type=''
809 i32size=''
810 i32type=''
811 i64size=''
812 i64type=''
813 i8size=''
814 i8type=''
815 ivsize=''
816 ivtype=''
817 nvsize=''
818 nvtype=''
819 u16size=''
820 u16type=''
821 u32size=''
822 u32type=''
823 u64size=''
824 u64type=''
825 u8size=''
826 u8type=''
827 uvsize=''
828 uvtype=''
829 ivdformat=''
830 nvEformat=''
831 nvFformat=''
832 nvGformat=''
833 nveformat=''
834 nvfformat=''
835 nvgformat=''
836 uvXformat=''
837 uvoformat=''
838 uvuformat=''
839 uvxformat=''
840 pidtype=''
841 prefix=''
842 prefixexp=''
843 installprivlib=''
844 privlib=''
845 privlibexp=''
846 prototype=''
847 ptrsize=''
848 d_PRIX64=''
849 d_PRId64=''
850 d_PRIi64=''
851 d_PRIo64=''
852 d_PRIu64=''
853 d_PRIx64=''
854 sPRIX64=''
855 sPRId64=''
856 sPRIi64=''
857 sPRIo64=''
858 sPRIu64=''
859 sPRIx64=''
860 d_quad=''
861 quadkind=''
862 quadtype=''
863 uquadtype=''
864 drand01=''
865 randbits=''
866 randfunc=''
867 randseedtype=''
868 seedfunc=''
869 installscript=''
870 scriptdir=''
871 scriptdirexp=''
872 selectminbits=''
873 selecttype=''
874 sh=''
875 sig_count=''
876 sig_name=''
877 sig_name_init=''
878 sig_num=''
879 sig_num_init=''
880 installsitearch=''
881 sitearch=''
882 sitearchexp=''
883 installsitebin=''
884 sitebin=''
885 sitebinexp=''
886 installsitelib=''
887 sitelib=''
888 sitelib_stem=''
889 sitelibexp=''
890 siteprefix=''
891 siteprefixexp=''
892 sizesize=''
893 sizetype=''
894 so=''
895 socksizetype=''
896 sharpbang=''
897 shsharp=''
898 spitshell=''
899 src=''
900 ssizetype=''
901 startperl=''
902 startsh=''
903 stdchar=''
904 d_stdio_stream_array=''
905 stdio_stream_array=''
906 sysman=''
907 trnl=''
908 uidformat=''
909 uidsign=''
910 uidsize=''
911 uidtype=''
912 archname64=''
913 use64bitall=''
914 use64bitint=''
915 ccflags_uselargefiles=''
916 ldflags_uselargefiles=''
917 libswanted_uselargefiles=''
918 uselargefiles=''
919 uselongdouble=''
920 usemorebits=''
921 usemultiplicity=''
922 nm_opt=''
923 nm_so_opt=''
924 runnm=''
925 usenm=''
926 useperlio=''
927 usesocks=''
928 d_oldpthreads=''
929 use5005threads=''
930 useithreads=''
931 usethreads=''
932 incpath=''
933 mips_type=''
934 usrinc=''
935 d_vendorarch=''
936 installvendorarch=''
937 vendorarch=''
938 vendorarchexp=''
939 d_vendorbin=''
940 installvendorbin=''
941 vendorbin=''
942 vendorbinexp=''
943 d_vendorlib=''
944 installvendorlib=''
945 vendorlib=''
946 vendorlib_stem=''
947 vendorlibexp=''
948 usevendorprefix=''
949 vendorprefix=''
950 vendorprefixexp=''
951 defvoidused=''
952 voidflags=''
953 pm_apiversion=''
954 xs_apiversion=''
955 CONFIG=''
956
957 define='define'
958 undef='undef'
959 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
960 rmlist=''
961
962 : We must find out about Eunice early
963 eunicefix=':'
964 if test -f /etc/unixtovms; then
965         eunicefix=/etc/unixtovms
966 fi
967 if test -f /etc/unixtovms.exe; then
968         eunicefix=/etc/unixtovms.exe
969 fi
970
971 i_whoami=''
972 : set useposix=false in your hint file to disable the POSIX extension.
973 useposix=true
974 : set useopcode=false in your hint file to disable the Opcode extension.
975 useopcode=true
976 : Trailing extension.  Override this in a hint file, if needed.
977 _exe=''
978 : Extra object files, if any, needed on this platform.
979 archobjs=''
980 archname=''
981 : Possible local include directories to search.
982 : Set locincpth to "" in a hint file to defeat local include searches.
983 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
984 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
985 :
986 : no include file wanted by default
987 inclwanted=''
988
989 groupstype=''
990 : change the next line if compiling for Xenix/286 on Xenix/386
991 xlibpth='/usr/lib/386 /lib/386'
992 : Possible local library directories to search.
993 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
994 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
995
996 : general looking path for locating libraries
997 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
998 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
999 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1000 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1001 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1002
1003 : Private path used by Configure to find libraries.  Its value
1004 : is prepended to libpth. This variable takes care of special
1005 : machines, like the mips.  Usually, it should be empty.
1006 plibpth=''
1007
1008 : default library list
1009 libswanted=''
1010 : some systems want to use only the non-versioned libso:s
1011 ignore_versioned_solibs=''
1012 archname64=''
1013 ccflags_uselargefiles=''
1014 ldflags_uselargefiles=''
1015 libswanted_uselargefiles=''
1016 : set usemultiplicity on the Configure command line to enable multiplicity.
1017 : set usesocks on the Configure command line to enable socks.
1018 : set usethreads on the Configure command line to enable threads.
1019 : full support for void wanted by default
1020 defvoidused=15
1021
1022 : List of libraries we want.
1023 : If anyone needs -lnet, put it in a hint file.
1024 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1025 libswanted="$libswanted dld ld sun m c cposix posix"
1026 libswanted="$libswanted ndir dir crypt sec"
1027 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1028 : We probably want to search /usr/shlib before most other libraries.
1029 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1030 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1031 glibpth="/usr/shlib $glibpth"
1032 : Do not use vfork unless overridden by a hint file.
1033 usevfork=false
1034
1035 : Find the basic shell for Bourne shell scripts
1036 case "$sh" in
1037 '')
1038         case "$SYSTYPE" in
1039         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1040         *) xxx='/bin/sh';;
1041         esac
1042         if test -f "$xxx"; then
1043                 sh="$xxx"
1044         else
1045                 : Build up a list and do a single loop so we can 'break' out.
1046                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1047                 for xxx in sh bash ksh pdksh ash; do
1048                         for p in $pth; do
1049                                 try="$try ${p}/${xxx}"
1050                         done
1051                 done
1052                 for xxx in $try; do
1053                         if test -f "$xxx"; then
1054                                 sh="$xxx";
1055                                 break
1056                         elif test -f "$xxx.exe"; then
1057                                 sh="$xxx";
1058                                 break
1059                         fi
1060                 done
1061         fi
1062         ;;
1063 esac
1064
1065 case "$sh" in
1066 '')     cat <<EOM >&2
1067 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1068
1069 Usually it's in /bin/sh.  How did you even get this far?
1070 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1071 we'll try to straighten this all out.
1072 EOM
1073         exit 1
1074         ;;
1075 esac
1076
1077 : see if sh knows # comments
1078 if `$sh -c '#' >/dev/null 2>&1`; then
1079         shsharp=true
1080         spitshell=cat
1081         xcat=/bin/cat
1082         test -f $xcat || xcat=/usr/bin/cat
1083         echo "#!$xcat" >try
1084         $eunicefix try
1085         chmod +x try
1086         ./try > today
1087         if test -s today; then
1088                 sharpbang='#!'
1089         else
1090                 echo "#! $xcat" > try
1091                 $eunicefix try
1092                 chmod +x try
1093                 ./try > today
1094                 if test -s today; then
1095                         sharpbang='#! '
1096                 else
1097                         sharpbang=': use '
1098                 fi
1099         fi
1100 else
1101         echo " "
1102         echo "Your $sh doesn't grok # comments--I will strip them later on."
1103         shsharp=false
1104         cd ..
1105         echo "exec grep -v '^[  ]*#'" >spitshell
1106         chmod +x spitshell
1107         $eunicefix spitshell
1108         spitshell=`pwd`/spitshell
1109         cd UU
1110         echo "I presume that if # doesn't work, #! won't work either!"
1111         sharpbang=': use '
1112 fi
1113 rm -f try today
1114
1115 : figure out how to guarantee sh startup
1116 case "$startsh" in
1117 '') startsh=${sharpbang}${sh} ;;
1118 *)
1119 esac
1120 cat >try <<EOSS
1121 $startsh
1122 set abc
1123 test "$?abc" != 1
1124 EOSS
1125
1126 chmod +x try
1127 $eunicefix try
1128 if ./try; then
1129         : echo "Yup, it does."
1130 else
1131         echo "Hmm... '$startsh' does not guarantee sh startup..."
1132         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1133 fi
1134 rm -f try
1135
1136
1137 : Save command line options in file UU/cmdline.opt for later use in
1138 : generating config.sh.
1139 cat > cmdline.opt <<EOSH
1140 # Configure command line arguments.
1141 config_arg0='$0'
1142 config_args='$*'
1143 config_argc=$#
1144 EOSH
1145 argn=1
1146 for arg in "$@"; do
1147         cat >>cmdline.opt <<EOSH
1148 config_arg$argn='$arg'
1149 EOSH
1150         argn=`expr $argn + 1`
1151 done
1152
1153 : produce awk script to parse command line options
1154 cat >options.awk <<'EOF'
1155 BEGIN {
1156         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1157
1158         len = length(optstr);
1159         for (i = 1; i <= len; i++) {
1160                 c = substr(optstr, i, 1);
1161                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1162                 if (a == ":") {
1163                         arg[c] = 1;
1164                         i++;
1165                 }
1166                 opt[c] = 1;
1167         }
1168 }
1169 {
1170         expect = 0;
1171         str = $0;
1172         if (substr(str, 1, 1) != "-") {
1173                 printf("'%s'\n", str);
1174                 next;
1175         }
1176         len = length($0);
1177         for (i = 2; i <= len; i++) {
1178                 c = substr(str, i, 1);
1179                 if (!opt[c]) {
1180                         printf("-%s\n", substr(str, i));
1181                         next;
1182                 }
1183                 printf("-%s\n", c);
1184                 if (arg[c]) {
1185                         if (i < len)
1186                                 printf("'%s'\n", substr(str, i + 1));
1187                         else
1188                                 expect = 1;
1189                         next;
1190                 }
1191         }
1192 }
1193 END {
1194         if (expect)
1195                 print "?";
1196 }
1197 EOF
1198
1199 : process the command line options
1200 set X `for arg in "$@"; do echo "X$arg"; done |
1201         sed -e s/X// | awk -f options.awk`
1202 eval "set $*"
1203 shift
1204 rm -f options.awk
1205
1206 : set up default values
1207 fastread=''
1208 reuseval=false
1209 config_sh=''
1210 alldone=''
1211 error=''
1212 silent=''
1213 extractsh=''
1214 override=''
1215 knowitall=''
1216 rm -f optdef.sh posthint.sh
1217 cat >optdef.sh <<EOS
1218 $startsh
1219 EOS
1220
1221
1222 : option parsing
1223 while test $# -gt 0; do
1224         case "$1" in
1225         -d) shift; fastread=yes;;
1226         -e) shift; alldone=cont;;
1227         -f)
1228                 shift
1229                 cd ..
1230                 if test -r "$1"; then
1231                         config_sh="$1"
1232                 else
1233                         echo "$me: cannot read config file $1." >&2
1234                         error=true
1235                 fi
1236                 cd UU
1237                 shift;;
1238         -h) shift; error=true;;
1239         -r) shift; reuseval=true;;
1240         -s) shift; silent=true; realsilent=true;;
1241         -E) shift; alldone=exit;;
1242         -K) shift; knowitall=true;;
1243         -O) shift; override=true;;
1244         -S) shift; silent=true; extractsh=true;;
1245         -D)
1246                 shift
1247                 case "$1" in
1248                 *=)
1249                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1250                         echo "$me: ignoring -D $1" >&2
1251                         ;;
1252                 *=*) echo "$1" | \
1253                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1254                 *) echo "$1='define'" >> optdef.sh;;
1255                 esac
1256                 shift
1257                 ;;
1258         -U)
1259                 shift
1260                 case "$1" in
1261                 *=) echo "$1" >> optdef.sh;;
1262                 *=*)
1263                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1264                         echo "$me: ignoring -U $1" >&2
1265                         ;;
1266                 *) echo "$1='undef'" >> optdef.sh;;
1267                 esac
1268                 shift
1269                 ;;
1270         -A)
1271             shift
1272             xxx=''
1273             yyy="$1"
1274             zzz=''
1275             uuu=undef
1276             case "$yyy" in
1277             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1278                  case "$zzz" in
1279                  *:*) zzz='' ;;
1280                  *)   xxx=append
1281                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1282                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1283                  esac
1284                  ;;
1285             esac
1286             case "$xxx" in
1287             '')  case "$yyy" in
1288                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1289                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1290                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1291                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1292                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1293                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1294                  esac
1295                  ;;       
1296             esac
1297             case "$xxx" in
1298             append)
1299                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1300             clear)
1301                 echo "$yyy=''"                  >> posthint.sh ;;
1302             define)
1303                 case "$zzz" in
1304                 '') zzz=define ;;
1305                 esac
1306                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1307             eval)
1308                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1309             prepend)
1310                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1311             undef)
1312                 case "$zzz" in
1313                 '') zzz="$uuu" ;;
1314                 esac
1315                 echo "$yyy=$zzz"                >> posthint.sh ;;
1316             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1317             esac
1318             shift
1319             ;;
1320         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1321             exit 0;;
1322         --) break;;
1323         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1324         *) break;;
1325         esac
1326 done
1327
1328 case "$error" in
1329 true)
1330         cat >&2 <<EOM
1331 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1332                  [-U symbol] [-U symbol=] [-A command:symbol...]
1333   -d : use defaults for all answers.
1334   -e : go on without questioning past the production of config.sh.
1335   -f : specify an alternate default configuration file.
1336   -h : print this help message and exit (with an error status).
1337   -r : reuse C symbols value if possible (skips costly nm extraction).
1338   -s : silent mode, only echoes questions and essential information.
1339   -D : define symbol to have some value:
1340          -D symbol         symbol gets the value 'define'
1341          -D symbol=value   symbol gets the value 'value'
1342   -E : stop at the end of questions, after having produced config.sh.
1343   -K : do not use unless you know what you are doing.
1344   -O : let -D and -U override definitions from loaded configuration file.
1345   -S : perform variable substitutions on all .SH files (can mix with -f)
1346   -U : undefine symbol:
1347          -U symbol    symbol gets the value 'undef'
1348          -U symbol=   symbol gets completely empty
1349   -A : manipulate symbol after the platform specific hints have been applied:
1350          -A symbol=value                append " "value to symbol
1351          -A append:symbol=value         append value to symbol
1352          -A define:symbol=value         define symbol to have value
1353          -A clear:symbol                define symbol to be ''
1354          -A define:symbol               define symbol to be 'define'
1355          -A eval:symbol=value           define symbol to be eval of value
1356          -A prepend:symbol=value        prepend value to symbol
1357          -A undef:symbol                define symbol to be 'undef'
1358          -A undef:symbol=               define symbol to be ''
1359   -V : print version number and exit (with a zero status).
1360 EOM
1361         exit 1
1362         ;;
1363 esac
1364
1365 : Sanity checks
1366 case "$fastread$alldone" in
1367 yescont|yesexit) ;;
1368 *)
1369         case "$extractsh" in
1370         true) ;;
1371         *)
1372                 if test ! -t 0; then
1373                         echo "Say 'sh Configure', not 'sh <Configure'"
1374                         exit 1
1375                 fi
1376                 ;;
1377         esac
1378         ;;
1379 esac
1380
1381 exec 4>&1
1382 case "$silent" in
1383 true) exec 1>/dev/null;;
1384 esac
1385
1386 : run the defines and the undefines, if any, but leave the file out there...
1387 touch optdef.sh
1388 . ./optdef.sh
1389 : create the posthint manipulation script and leave the file out there...
1390 touch posthint.sh
1391
1392 : set package name
1393 package=perl5
1394 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1395 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1396 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1397 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1398 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1399 esac
1400
1401 : Some greps do not return status, grrr.
1402 echo "grimblepritz" >grimble
1403 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1404         contains=contains
1405 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1406         contains=grep
1407 else
1408         contains=contains
1409 fi
1410 rm -f grimble
1411 : the following should work in any shell
1412 case "$contains" in
1413 contains*)
1414         echo " "
1415         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1416         cat >contains <<'EOSS'
1417 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1418 EOSS
1419 chmod +x contains
1420 esac
1421
1422 : Find the path to the source tree
1423 case "$src" in
1424 '') case "$0" in
1425     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1426          case "$src" in
1427          /*)    ;;
1428          *)     src=`cd ../$src && pwd` ;;
1429          esac
1430          ;;
1431     *)   src='.';;
1432     esac;;
1433 esac
1434 case "$src" in
1435 '')     src=/
1436         rsrc=/
1437         ;;
1438 /*) rsrc="$src";;
1439 *) rsrc="../$src";;
1440 esac
1441 if test -f $rsrc/Configure && \
1442         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1443 then
1444    : found it, so we are ok.
1445 else
1446         rsrc=''
1447         for src in . .. ../.. ../../.. ../../../..; do
1448                 if test -f ../$src/Configure && \
1449                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1450                 then
1451                         rsrc=../$src
1452                         break
1453                 fi
1454         done
1455 fi
1456 case "$rsrc" in
1457 '')
1458         cat <<EOM >&4
1459
1460 Sorry, I can't seem to locate the source dir for $package.  Please start
1461 Configure with an explicit path -- i.e. /some/path/Configure.
1462
1463 EOM
1464         exit 1
1465         ;;
1466 ../.)   rsrc='..';;
1467 *)
1468         echo " "
1469         echo "Sources for $package found in \"$src\"." >&4
1470         ;;
1471 esac
1472
1473 : script used to extract .SH files with variable substitutions
1474 cat >extract <<'EOS'
1475 CONFIGDOTSH=true
1476 echo "Doing variable substitutions on .SH files..."
1477 if test -f $src/MANIFEST; then
1478         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1479 else
1480         echo "(Looking for .SH files under the source directory.)"
1481         set x `(cd $src; find . -name "*.SH" -print)`
1482 fi
1483 shift
1484 case $# in
1485 0) set x `(cd $src; echo *.SH)`; shift;;
1486 esac
1487 if test ! -f $src/$1; then
1488         shift
1489 fi
1490 mkdir_p='
1491 name=$1;
1492 create="";
1493 while test $name; do
1494         if test ! -d "$name"; then
1495                 create="$name $create";
1496                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1497                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1498         else
1499                 name="";
1500         fi;
1501 done;
1502 for file in $create; do
1503         mkdir $file;
1504 done
1505 '
1506 for file in $*; do
1507         case "$src" in
1508         ".")
1509                 case "$file" in
1510                 */*)
1511                         dir=`expr X$file : 'X\(.*\)/'`
1512                         file=`expr X$file : 'X.*/\(.*\)'`
1513                         (cd $dir && . ./$file)
1514                         ;;
1515                 *)
1516                         . ./$file
1517                         ;;
1518                 esac
1519                 ;;
1520         *)
1521                 case "$file" in
1522                 */*)
1523                         dir=`expr X$file : 'X\(.*\)/'`
1524                         file=`expr X$file : 'X.*/\(.*\)'`
1525                         (set x $dir; shift; eval $mkdir_p)
1526                         sh <$src/$dir/$file
1527                         ;;
1528                 *)
1529                         sh <$src/$file
1530                         ;;
1531                 esac
1532                 ;;
1533         esac
1534 done
1535 if test -f $src/config_h.SH; then
1536         if test ! -f config.h; then
1537         : oops, they left it out of MANIFEST, probably, so do it anyway.
1538         . $src/config_h.SH
1539         fi
1540 fi
1541 EOS
1542
1543 : extract files and exit if asked to do so
1544 case "$extractsh" in
1545 true)
1546         case "$realsilent" in
1547         true) ;;
1548         *) exec 1>&4;;
1549         esac
1550         case "$config_sh" in
1551         '') config_sh='config.sh';;
1552         esac
1553         echo " "
1554         echo "Fetching answers from $config_sh..."
1555         cd ..
1556         . $config_sh
1557         test "$override" && . ./optdef.sh
1558         echo " "
1559         . UU/extract
1560         rm -rf UU
1561         echo "Done."
1562         exit 0
1563         ;;
1564 esac
1565
1566 : Eunice requires " " instead of "", can you believe it
1567 echo " "
1568 : Here we go...
1569 echo "Beginning of configuration questions for $package."
1570
1571 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1572
1573 : first determine how to suppress newline on echo command
1574 echo " "
1575 echo "Checking echo to see how to suppress newlines..."
1576 (echo "hi there\c" ; echo " ") >.echotmp
1577 if $contains c .echotmp >/dev/null 2>&1 ; then
1578         echo "...using -n."
1579         n='-n'
1580         c=''
1581 else
1582         cat <<'EOM'
1583 ...using \c
1584 EOM
1585         n=''
1586         c='\c'
1587 fi
1588 echo $n "The star should be here-->$c"
1589 echo '*'
1590 rm -f .echotmp
1591
1592 : Now test for existence of everything in MANIFEST
1593 echo " "
1594 if test -f $rsrc/MANIFEST; then
1595         echo "First let's make sure your kit is complete.  Checking..." >&4
1596         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1597         rm -f missing
1598         tmppwd=`pwd`
1599         for filelist in x??; do
1600                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1601         done
1602         if test -s missing; then
1603                 cat missing >&4
1604                 cat >&4 <<'EOM'
1605
1606 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1607
1608 You have the option of continuing the configuration process, despite the
1609 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1610 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1611 and contact the author (perlbug@perl.org).
1612
1613 EOM
1614                 echo $n "Continue? [n] $c" >&4
1615                 read ans
1616                 case "$ans" in
1617                 y*)
1618                         echo "Continuing..." >&4
1619                         rm -f missing
1620                         ;;
1621                 *)
1622                         echo "ABORTING..." >&4
1623                         kill $$
1624                         ;;
1625                 esac
1626         else
1627                 echo "Looks good..."
1628         fi
1629 else
1630         echo "There is no MANIFEST file.  I hope your kit is complete !"
1631 fi
1632 rm -f missing x??
1633
1634 echo " "
1635 : Find the appropriate value for a newline for tr
1636 if test -n "$DJGPP"; then
1637        trnl='\012'
1638 fi
1639 if test X"$trnl" = X; then
1640         case "`echo foo|tr '\n' x 2>/dev/null`" in
1641         foox) trnl='\n' ;;
1642         esac
1643 fi
1644 if test X"$trnl" = X; then
1645         case "`echo foo|tr '\012' x 2>/dev/null`" in
1646         foox) trnl='\012' ;;
1647         esac
1648 fi
1649 if test X"$trnl" = X; then
1650         cat <<EOM >&2
1651
1652 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1653
1654 EOM
1655         exit 1
1656 fi
1657
1658 : compute the number of columns on the terminal for proper question formatting
1659 case "$COLUMNS" in
1660 '') COLUMNS='80';;
1661 esac
1662
1663 : set up the echo used in my read
1664 myecho="case \"\$xxxm\" in
1665 '') echo $n \"\$rp $c\" >&4;;
1666 *) case \"\$rp\" in
1667         '') echo $n \"[\$xxxm] $c\";;
1668         *)
1669                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1670                         echo \"\$rp\" >&4
1671                         echo $n \"[\$xxxm] $c\" >&4
1672                 else
1673                         echo $n \"\$rp [\$xxxm] $c\" >&4
1674                 fi
1675                 ;;
1676         esac;;
1677 esac"
1678
1679 : now set up to do reads with possible shell escape and default assignment
1680 cat <<EOSC >myread
1681 $startsh
1682 xxxm=\$dflt
1683 $myecho
1684 ans='!'
1685 case "\$fastread" in
1686 yes) case "\$dflt" in
1687         '') ;;
1688         *) ans='';
1689                 case "\$silent-\$rp" in
1690                 true-) ;;
1691                 *) echo " " >&4;;
1692                 esac;;
1693         esac;;
1694 *) case "\$silent" in
1695         true) case "\$rp" in
1696                 '') ans='';;
1697                 esac;;
1698         esac;;
1699 esac
1700 while expr "X\$ans" : "X!" >/dev/null; do
1701         read answ
1702         set x \$xxxm
1703         shift
1704         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1705         case  "\$answ" in
1706         "!")
1707                 sh 1>&4
1708                 echo " "
1709                 $myecho
1710                 ;;
1711         !*)
1712                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1713                 shift
1714                 sh 1>&4 -c "\$*"
1715                 echo " "
1716                 $myecho
1717                 ;;
1718         "\$ans")
1719                 case "\$ans" in
1720                 \\&*)
1721                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1722                         shift
1723                         case "\$1" in
1724                         -d)
1725                                 fastread=yes
1726                                 echo "(OK, I'll run with -d after this question.)" >&4
1727                                 ;;
1728                         -*)
1729                                 echo "*** Sorry, \$1 not supported yet." >&4
1730                                 ;;
1731                         esac
1732                         $myecho
1733                         ans=!
1734                         ;;
1735                 esac;;
1736         *)
1737                 case "\$aok" in
1738                 y)
1739                         echo "*** Substitution done -- please confirm."
1740                         xxxm="\$ans"
1741                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1742                         xxxm="\$ans"
1743                         ans=!
1744                         ;;
1745                 *)
1746                         echo "*** Error -- try again."
1747                         ans=!
1748                         ;;
1749                 esac
1750                 $myecho
1751                 ;;
1752         esac
1753         case "\$ans\$xxxm\$nostick" in
1754         '')
1755                 ans=!
1756                 $myecho
1757                 ;;
1758         esac
1759 done
1760 case "\$ans" in
1761 '') ans="\$xxxm";;
1762 esac
1763 EOSC
1764
1765 : create .config dir to save info across Configure sessions
1766 test -d ../.config || mkdir ../.config
1767 cat >../.config/README <<EOF
1768 This directory created by Configure to save information that should
1769 persist across sessions for $package.
1770
1771 You may safely delete it if you wish.
1772 EOF
1773
1774 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1775 case "$usedevel" in
1776 $define|true|[yY]*) ;;
1777 *) case "$xversion" in
1778    *[13579])
1779         cat >&4 <<EOH
1780 *** WHOA THERE!!! ***
1781
1782     This is an UNSTABLE DEVELOPMENT release.
1783     The version of this $package distribution is $xversion, that is, odd,
1784     (as opposed to even) and that signifies a development release.
1785     If you want a maintenance release, you want an even-numbered version.)
1786
1787     Do ***NOT*** install this into production use.
1788     Data corruption and crashes are possible.
1789
1790     It is most seriously suggested that you do not continue any further
1791     unless you want to help in developing and debugging Perl.
1792
1793 EOH
1794         rp='Do you really want to continue?'
1795         dflt='n'
1796         . ./myread
1797         case "$ans" in
1798         [yY]) echo >&4 "Okay, continuing." ;;
1799         *) echo >&4 "Okay, bye."
1800            exit 1
1801            ;;
1802         esac
1803         ;;
1804     esac
1805     ;;
1806 esac
1807
1808 : general instructions
1809 needman=true
1810 firsttime=true
1811 user=`(logname) 2>/dev/null`
1812 case "$user" in
1813 '') user=`whoami 2>&1`;;
1814 esac
1815 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1816         firsttime=false
1817         echo " "
1818         rp='Would you like to see the instructions?'
1819         dflt=n
1820         . ./myread
1821         case "$ans" in
1822         [yY]*) ;;
1823         *) needman=false;;
1824         esac
1825 fi
1826 if $needman; then
1827         cat <<EOH
1828
1829 This installation shell script will examine your system and ask you questions
1830 to determine how the perl5 package should be installed. If you get
1831 stuck on a question, you may use a ! shell escape to start a subshell or
1832 execute a command.  Many of the questions will have default answers in square
1833 brackets; typing carriage return will give you the default.
1834
1835 On some of the questions which ask for file or directory names you are allowed
1836 to use the ~name construct to specify the login directory belonging to "name",
1837 even if you don't have a shell which knows about that.  Questions where this is
1838 allowed will be marked "(~name ok)".
1839
1840 EOH
1841         rp=''
1842         dflt='Type carriage return to continue'
1843         . ./myread
1844         cat <<'EOH'
1845
1846 The prompter used in this script allows you to use shell variables and
1847 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1848 in the default answer, as if the default line was a set of arguments given to a
1849 script shell.  This means you may also use $* to repeat the whole default line,
1850 so you do not have to re-type everything to add something to the default.
1851
1852 Everytime there is a substitution, you will have to confirm.  If there is an
1853 error (e.g. an unmatched backtick), the default answer will remain unchanged
1854 and you will be prompted again.
1855
1856 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1857 the questions and use the computed defaults (or the previous answers if there
1858 was already a config.sh file). Type 'Configure -h' for a list of options.
1859 You may also start interactively and then answer '& -d' at any prompt to turn
1860 on the non-interactive behaviour for the remainder of the execution.
1861
1862 EOH
1863         . ./myread
1864         cat <<EOH
1865
1866 Much effort has been expended to ensure that this shell script will run on any
1867 Unix system.  If despite that it blows up on yours, your best bet is to edit
1868 Configure and run it again.  If you can't run Configure for some reason,
1869 you'll have to generate a config.sh file by hand.  Whatever problems you
1870 have, let me (perlbug@perl.org) know how I blew it.
1871
1872 This installation script affects things in two ways:
1873
1874 1) it may do direct variable substitutions on some of the files included
1875    in this kit.
1876 2) it builds a config.h file for inclusion in C programs.  You may edit
1877    any of these files as the need arises after running this script.
1878
1879 If you make a mistake on a question, there is no easy way to back up to it
1880 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1881 files.  Configure will offer to let you do this before it runs the SH files.
1882
1883 EOH
1884         dflt='Type carriage return to continue'
1885         . ./myread
1886         case "$firsttime" in
1887         true) echo $user >>../.config/instruct;;
1888         esac
1889 fi
1890
1891 : find out where common programs are
1892 echo " "
1893 echo "Locating common programs..." >&4
1894 cat <<EOSC >loc
1895 $startsh
1896 case \$# in
1897 0) exit 1;;
1898 esac
1899 thing=\$1
1900 shift
1901 dflt=\$1
1902 shift
1903 for dir in \$*; do
1904         case "\$thing" in
1905         .)
1906         if test -d \$dir/\$thing; then
1907                 echo \$dir
1908                 exit 0
1909         fi
1910         ;;
1911         *)
1912         for thisthing in \$dir/\$thing; do
1913                 : just loop through to pick last item
1914         done
1915         if test -f \$thisthing; then
1916                 echo \$thisthing
1917                 exit 0
1918         elif test -f \$dir/\$thing.exe; then
1919                 if test -n "$DJGPP"; then
1920                         echo \$dir/\$thing.exe
1921                 else
1922                         : on Eunice apparently
1923                         echo \$dir/\$thing
1924                 fi
1925                 exit 0
1926         fi
1927         ;;
1928         esac
1929 done
1930 echo \$dflt
1931 exit 1
1932 EOSC
1933 chmod +x loc
1934 $eunicefix loc
1935 loclist="
1936 awk
1937 cat
1938 comm
1939 cp
1940 echo
1941 expr
1942 grep
1943 ls
1944 make
1945 mkdir
1946 rm
1947 sed
1948 sort
1949 touch
1950 tr
1951 uniq
1952 "
1953 trylist="
1954 Mcc
1955 ar
1956 byacc
1957 cpp
1958 csh
1959 date
1960 egrep
1961 gzip
1962 less
1963 ln
1964 more
1965 nm
1966 nroff
1967 pg
1968 test
1969 uname
1970 zip
1971 "
1972 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1973 pth="$pth /lib /usr/lib"
1974 for file in $loclist; do
1975         eval xxx=\$$file
1976         case "$xxx" in
1977         /*|?:[\\/]*)
1978                 if test -f "$xxx"; then
1979                         : ok
1980                 else
1981                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1982                         xxx=`./loc $file $file $pth`
1983                 fi
1984                 ;;
1985         '') xxx=`./loc $file $file $pth`;;
1986         *) xxx=`./loc $xxx $xxx $pth`;;
1987         esac
1988         eval $file=$xxx
1989         eval _$file=$xxx
1990         case "$xxx" in
1991         /*)
1992                 echo $file is in $xxx.
1993                 ;;
1994         ?:[\\/]*)
1995                 echo $file is in $xxx.
1996                 ;;
1997         *)
1998                 echo "I don't know where '$file' is, and my life depends on it." >&4
1999                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2000                 exit 1
2001                 ;;
2002         esac
2003 done
2004 echo " "
2005 echo "Don't worry if any of the following aren't found..."
2006 say=offhand
2007 for file in $trylist; do
2008         eval xxx=\$$file
2009         case "$xxx" in
2010         /*|?:[\\/]*)
2011                 if test -f "$xxx"; then
2012                         : ok
2013                 else
2014                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2015                         xxx=`./loc $file $file $pth`
2016                 fi
2017                 ;;
2018         '') xxx=`./loc $file $file $pth`;;
2019         *) xxx=`./loc $xxx $xxx $pth`;;
2020         esac
2021         eval $file=$xxx
2022         eval _$file=$xxx
2023         case "$xxx" in
2024         /*)
2025                 echo $file is in $xxx.
2026                 ;;
2027         ?:[\\/]*)
2028                 echo $file is in $xxx.
2029                 ;;
2030         *)
2031                 echo "I don't see $file out there, $say."
2032                 say=either
2033                 ;;
2034         esac
2035 done
2036 case "$egrep" in
2037 egrep)
2038         echo "Substituting grep for egrep."
2039         egrep=$grep
2040         ;;
2041 esac
2042 case "$ln" in
2043 ln)
2044         echo "Substituting cp for ln."
2045         ln=$cp
2046         ;;
2047 esac
2048 case "$test" in
2049 test)
2050         echo "Hopefully test is built into your sh."
2051         ;;
2052 *)
2053         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2054                 echo "Using the test built into your sh."
2055                 test=test
2056                 _test=test
2057         fi
2058         ;;
2059 esac
2060 case "$echo" in
2061 echo)
2062         echo "Hopefully echo is built into your sh."
2063         ;;
2064 '') ;;
2065 *)
2066         echo " "
2067 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2068         $echo $n "hi there$c" >foo1
2069         echo $n "hi there$c" >foo2
2070         if cmp foo1 foo2 >/dev/null 2>&1; then
2071                 echo "They are compatible.  In fact, they may be identical."
2072         else
2073                 case "$n" in
2074                 '-n') n='' c='\c';;
2075                 *) n='-n' c='';;
2076                 esac
2077                 cat <<FOO
2078 They are not compatible!  You are probably running ksh on a non-USG system.
2079 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2080 have echo built in and we may have to run some Bourne shell scripts.  That
2081 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2082
2083 FOO
2084                 $echo $n "The star should be here-->$c"
2085                 $echo "*"
2086         fi
2087         $rm -f foo1 foo2
2088         ;;
2089 esac
2090
2091 cat <<EOS >checkcc
2092 $startsh
2093 EOS
2094 cat <<'EOSC' >>checkcc
2095 case "$cc" in
2096 '') ;;
2097 *)  $rm -f try try.*
2098     $cat >try.c <<EOM
2099 int main(int argc, char *argv[]) {
2100   return 0;
2101 }
2102 EOM
2103     if $cc -o try try.c; then
2104        :
2105     else
2106         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2107         despair=yes
2108         trygcc=yes
2109         case "$cc" in
2110         *gcc*) trygcc=no ;;
2111         esac
2112         case "`$cc -v -c try.c 2>&1`" in
2113         *gcc*) trygcc=no ;;
2114         esac
2115         if $test X"$trygcc" = Xyes; then
2116             if gcc -o try -c try.c; then
2117                 echo " "
2118                 echo "You seem to have a working gcc, though." >&4
2119                 rp="Would you like to use it?"
2120                 dflt=y
2121                 if $test -f myread; then
2122                     . ./myread
2123                 else
2124                     if $test -f UU/myread; then
2125                         . ./UU/myread
2126                     else
2127                         echo "Cannot find myread, sorry.  Aborting." >&2
2128                         exit 1
2129                     fi
2130                 fi  
2131                 case "$ans" in
2132                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2133                 esac
2134             fi
2135         fi
2136         if $test X"$despair" = Xyes; then
2137             echo "You need to find a working C compiler." >&4
2138             echo "I cannot continue any further, aborting." >&4
2139             exit 1
2140         fi
2141     fi
2142     $rm -f try try.*
2143     ;;
2144 esac
2145 EOSC
2146
2147 : determine whether symbolic links are supported
2148 echo " "
2149 $touch blurfl
2150 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2151         echo "Symbolic links are supported." >&4
2152         lns="$ln -s"
2153 else
2154         echo "Symbolic links are NOT supported." >&4
2155         lns="$ln"
2156 fi
2157 $rm -f blurfl sym
2158
2159 : see whether [:lower:] and [:upper:] are supported character classes
2160 echo " "
2161 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2162 ABYZ)
2163         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2164         up='[:upper:]'
2165         low='[:lower:]'
2166         ;;
2167 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2168         # (0xc9 and 0xd1), therefore that is a nice testing point.
2169         if test "X$up" = X -o "X$low" = X; then
2170             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2171             ij) up='[A-Z]'
2172                 low='[a-z]'
2173                 ;;
2174             esac
2175         fi
2176         if test "X$up" = X -o "X$low" = X; then
2177             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2178             ij) up='A-Z'
2179                 low='a-z'
2180                 ;;
2181             esac
2182         fi
2183         if test "X$up" = X -o "X$low" = X; then
2184             case "`echo IJ | od -x 2>/dev/null`" in
2185             *C9D1*|*c9d1*)
2186                 echo "Hey, this might be EBCDIC." >&4
2187                 if test "X$up" = X -o "X$low" = X; then
2188                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2189                     ij) up='[A-IJ-RS-Z]'
2190                         low='[a-ij-rs-z]'
2191                         ;;
2192                     esac
2193                 fi
2194                 if test "X$up" = X -o "X$low" = X; then
2195                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2196                     ij) up='A-IJ-RS-Z'
2197                         low='a-ij-rs-z'
2198                         ;;
2199                     esac
2200                 fi
2201                 ;;
2202             esac
2203         fi
2204 esac
2205 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2206 ij)
2207     echo "Using $up and $low to convert case." >&4
2208     ;;
2209 *)
2210     echo "I don't know how to translate letters from upper to lower case." >&4
2211     echo "Your tr is not acting any way I know of." >&4
2212     exit 1
2213     ;;
2214 esac
2215 : set up the translation script tr, must be called with ./tr of course
2216 cat >tr <<EOSC
2217 $startsh
2218 case "\$1\$2" in
2219 '[A-Z][a-z]') exec $tr '$up' '$low';;
2220 '[a-z][A-Z]') exec $tr '$low' '$up';;
2221 esac
2222 exec $tr "\$@"
2223 EOSC
2224 chmod +x tr
2225 $eunicefix tr
2226
2227 : Try to determine whether config.sh was made on this system
2228 case "$config_sh" in
2229 '')
2230 myuname=`$uname -a 2>/dev/null`
2231 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2232 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2233 # because the A-Z/a-z are not consecutive.
2234 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2235         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2236 newmyuname="$myuname"
2237 dflt=n
2238 case "$knowitall" in
2239 '')
2240         if test -f ../config.sh; then
2241                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2242                         eval "`grep myuname= ../config.sh`"
2243                 fi
2244                 if test "X$myuname" = "X$newmyuname"; then
2245                         dflt=y
2246                 fi
2247         fi
2248         ;;
2249 *) dflt=y;;
2250 esac
2251
2252 : Get old answers from old config file if Configure was run on the
2253 : same system, otherwise use the hints.
2254 hint=default
2255 cd ..
2256 if test -f config.sh; then
2257         echo " "
2258         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2259         . UU/myread
2260         case "$ans" in
2261         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2262         *)  echo "Fetching default answers from your old config.sh file..." >&4
2263                 tmp_n="$n"
2264                 tmp_c="$c"
2265                 tmp_sh="$sh"
2266                 . ./config.sh
2267                 cp config.sh UU
2268                 n="$tmp_n"
2269                 c="$tmp_c"
2270                 : Older versions did not always set $sh.  Catch re-use of such
2271                 : an old config.sh.
2272                 case "$sh" in
2273                 '') sh="$tmp_sh" ;;
2274                 esac
2275                 hint=previous
2276                 ;;
2277         esac
2278 fi
2279 . ./UU/checkcc
2280 if test ! -f config.sh; then
2281         $cat <<EOM
2282
2283 First time through, eh?  I have some defaults handy for some systems
2284 that need some extra help getting the Configure answers right:
2285
2286 EOM
2287         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2288         dflt=''
2289         : Half the following guesses are probably wrong... If you have better
2290         : tests or hints, please send them to perlbug@perl.org
2291         : The metaconfig authors would also appreciate a copy...
2292         $test -f /irix && osname=irix
2293         $test -f /xenix && osname=sco_xenix
2294         $test -f /dynix && osname=dynix
2295         $test -f /dnix && osname=dnix
2296         $test -f /lynx.os && osname=lynxos
2297         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2298         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2299         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2300         $test -f /bin/mips && /bin/mips && osname=mips
2301         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2302                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2303         $test -d /usr/apollo/bin && osname=apollo
2304         $test -f /etc/saf/_sactab && osname=svr4
2305         $test -d /usr/include/minix && osname=minix
2306         if $test -d /MachTen -o -d /MachTen_Folder; then
2307                 osname=machten
2308                 if $test -x /sbin/version; then
2309                         osvers=`/sbin/version | $awk '{print $2}' |
2310                         $sed -e 's/[A-Za-z]$//'`
2311                 elif $test -x /usr/etc/version; then
2312                         osvers=`/usr/etc/version | $awk '{print $2}' |
2313                         $sed -e 's/[A-Za-z]$//'`
2314                 else
2315                         osvers="$2.$3"
2316                 fi
2317         fi
2318
2319         $test -f /sys/posix.dll &&
2320                 $test -f /usr/bin/what &&
2321                 set X `/usr/bin/what /sys/posix.dll` &&
2322                 $test "$3" = UWIN &&
2323                 osname=uwin &&
2324                 osvers="$5"
2325
2326         if $test -f $uname; then
2327                 set X $myuname
2328                 shift
2329
2330                 case "$5" in
2331                 fps*) osname=fps ;;
2332                 mips*)
2333                         case "$4" in
2334                         umips) osname=umips ;;
2335                         *) osname=mips ;;
2336                         esac;;
2337                 [23]100) osname=mips ;;
2338                 next*) osname=next ;;
2339                 i386*)
2340                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2341                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2342                                 osname='sco'
2343                                 osvers=$tmp
2344                         elif $test -f /etc/kconfig; then
2345                                 osname=isc
2346                                 if test "$lns" = "$ln -s"; then
2347                                         osvers=4
2348                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2349                                         osvers=3
2350                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2351                                         osvers=2
2352                                 fi
2353                         fi
2354                         tmp=''
2355                         ;;
2356                 pc*)
2357                         if test -n "$DJGPP"; then
2358                                 osname=dos
2359                                 osvers=djgpp
2360                         fi
2361                         ;;
2362                 esac
2363
2364                 case "$1" in
2365                 aix) osname=aix
2366                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2367                         case "$tmp" in
2368                         'not found') osvers="$4"."$3" ;;
2369                         '<3240'|'<>3240') osvers=3.2.0 ;;
2370                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2371                         '=3250'|'>3250') osvers=3.2.5 ;;
2372                         *) osvers=$tmp;;
2373                         esac
2374                         ;;
2375                 bsd386) osname=bsd386
2376                         osvers=`$uname -r`
2377                         ;;
2378                 cygwin*) osname=cygwin
2379                         osvers="$3"
2380                         ;;
2381                 *dc.osx) osname=dcosx
2382                         osvers="$3"
2383                         ;;
2384                 dnix) osname=dnix
2385                         osvers="$3"
2386                         ;;
2387                 domainos) osname=apollo
2388                         osvers="$3"
2389                         ;;
2390                 dgux) osname=dgux 
2391                         osvers="$3"
2392                         ;;
2393                 dynixptx*) osname=dynixptx
2394                         osvers=`echo "$4"|sed 's/^v//'`
2395                         ;;
2396                 freebsd) osname=freebsd 
2397                         osvers="$3" ;;
2398                 genix) osname=genix ;;
2399                 hp*) osname=hpux 
2400                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2401                         ;;
2402                 irix*) osname=irix
2403                         case "$3" in
2404                         4*) osvers=4 ;;
2405                         5*) osvers=5 ;;
2406                         *)      osvers="$3" ;;
2407                         esac
2408                         ;;
2409                 linux) osname=linux
2410                         case "$3" in
2411                         *)      osvers="$3" ;;
2412                         esac
2413                         ;;
2414                 MiNT) osname=mint
2415                         ;;
2416                 netbsd*) osname=netbsd
2417                         osvers="$3"
2418                         ;;
2419                 news-os) osvers="$3"
2420                         case "$3" in
2421                         4*) osname=newsos4 ;;
2422                         *) osname=newsos ;;
2423                         esac
2424                         ;;
2425                 next*) osname=next ;;
2426                 POSIX-BC | posix-bc ) osname=posix-bc
2427                         osvers="$3"
2428                         ;;
2429                 powerux | power_ux | powermax_os | powermaxos | \
2430                 powerunix | power_unix) osname=powerux
2431                         osvers="$3"
2432                         ;;
2433                 qnx) osname=qnx
2434                         osvers="$4"
2435                         ;;
2436                 solaris) osname=solaris
2437                         case "$3" in
2438                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2439                         *)      osvers="$3" ;;
2440                         esac
2441                         ;;
2442                 sunos) osname=sunos
2443                         case "$3" in
2444                         5*) osname=solaris
2445                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2446                         *)      osvers="$3" ;;
2447                         esac
2448                         ;;
2449                 titanos) osname=titanos
2450                         case "$3" in
2451                         1*) osvers=1 ;;
2452                         2*) osvers=2 ;;
2453                         3*) osvers=3 ;;
2454                         4*) osvers=4 ;;
2455                         *)      osvers="$3" ;;
2456                         esac
2457                         ;;
2458                 ultrix) osname=ultrix
2459                         osvers="$3"
2460                         ;;
2461                 osf1|mls+)      case "$5" in
2462                                 alpha)
2463                                         osname=dec_osf
2464                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2465                                         case "$osvers" in
2466                                         [1-9].[0-9]*) ;;
2467                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2468                                         esac
2469                                         ;;
2470                         hp*)    osname=hp_osf1  ;;
2471                         mips)   osname=mips_osf1 ;;
2472                         esac
2473                         ;;
2474                 unixware) osname=svr5
2475                         osvers="$4"
2476                         ;;
2477                 uts) osname=uts
2478                         osvers="$3"
2479                         ;;
2480                 $2) case "$osname" in
2481                         *isc*) ;;
2482                         *freebsd*) ;;
2483                         svr*)
2484                                 : svr4.x or possibly later
2485                                 case "svr$3" in 
2486                                 ${osname}*)
2487                                         osname=svr$3
2488                                         osvers=$4
2489                                         ;;
2490                                 esac
2491                                 case "$osname" in
2492                                 svr4.0)
2493                                         : Check for ESIX
2494                                         if test -f /stand/boot ; then
2495                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2496                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2497                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2498                                                         if test -n "$isesix"; then
2499                                                                 osname=esix4
2500                                                         fi
2501                                                 fi
2502                                         fi
2503                                         ;;
2504                                 esac
2505                                 ;;
2506                         *)      if test -f /etc/systemid; then
2507                                         osname=sco
2508                                         set `echo $3 | $sed 's/\./ /g'` $4
2509                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2510                                                 osvers=$1.$2.$3
2511                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2512                                                 osvers=$1.$2
2513                                         elif $test -f $src/hints/sco_$1.sh; then
2514                                                 osvers=$1
2515                                         fi
2516                                 else
2517                                         case "$osname" in
2518                                         '') : Still unknown.  Probably a generic Sys V.
2519                                                 osname="sysv"
2520                                                 osvers="$3"
2521                                                 ;;
2522                                         esac
2523                                 fi
2524                                 ;;
2525                         esac
2526                         ;;
2527                 *)      case "$osname" in
2528                         '') : Still unknown.  Probably a generic BSD.
2529                                 osname="$1"
2530                                 osvers="$3"
2531                                 ;;
2532                         esac
2533                         ;;
2534                 esac
2535         else
2536                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2537                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2538                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2539                                 osname=news_os
2540                         fi
2541                         $rm -f UU/kernel.what
2542                 elif test -d c:/.; then
2543                         set X $myuname
2544                         osname=os2
2545                         osvers="$5"
2546                 fi
2547         fi
2548         
2549         : Now look for a hint file osname_osvers, unless one has been
2550         : specified already.
2551         case "$hintfile" in
2552         ''|' ')
2553                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2554                 : Also try without trailing minor version numbers.
2555                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2556                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2557                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2558                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2559                 case "$file" in
2560                 '') dflt=none ;;
2561                 *)  case "$osvers" in
2562                         '') dflt=$file
2563                                 ;;
2564                         *)  if $test -f $src/hints/$file.sh ; then
2565                                         dflt=$file
2566                                 elif $test -f $src/hints/$xfile.sh ; then
2567                                         dflt=$xfile
2568                                 elif $test -f $src/hints/$xxfile.sh ; then
2569                                         dflt=$xxfile
2570                                 elif $test -f $src/hints/$xxxfile.sh ; then
2571                                         dflt=$xxxfile
2572                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2573                                         dflt=$xxxxfile
2574                                 elif $test -f "$src/hints/${osname}.sh" ; then
2575                                         dflt="${osname}"
2576                                 else
2577                                         dflt=none
2578                                 fi
2579                                 ;;
2580                         esac
2581                         ;;
2582                 esac
2583                 if $test -f Policy.sh ; then
2584                         case "$dflt" in
2585                         *Policy*) ;;
2586                         none) dflt="Policy" ;;
2587                         *) dflt="Policy $dflt" ;;
2588                         esac
2589                 fi
2590                 ;;
2591         *)
2592                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2593                 ;;
2594         esac
2595
2596         if $test -f Policy.sh ; then
2597                 $cat <<EOM
2598
2599 There's also a Policy hint file available, which should make the
2600 site-specific (policy) questions easier to answer.
2601 EOM
2602
2603         fi
2604
2605         $cat <<EOM
2606
2607 You may give one or more space-separated answers, or "none" if appropriate.
2608 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2609 is a good thing.  DO NOT give a wrong version or a wrong OS.
2610
2611 EOM
2612
2613         rp="Which of these apply, if any?"
2614         . UU/myread
2615         tans=$ans
2616         for file in $tans; do
2617                 if $test X$file = XPolicy -a -f Policy.sh; then
2618                         . Policy.sh
2619                         $cat Policy.sh >> UU/config.sh
2620                 elif $test -f $src/hints/$file.sh; then
2621                         . $src/hints/$file.sh
2622                         $cat $src/hints/$file.sh >> UU/config.sh
2623                 elif $test X$tans = X -o X$tans = Xnone ; then
2624                         : nothing
2625                 else
2626                         : Give one chance to correct a possible typo.
2627                         echo "$file.sh does not exist"
2628                         dflt=$file
2629                         rp="hint to use instead?"
2630                         . UU/myread
2631                         for file in $ans; do
2632                                 if $test -f "$src/hints/$file.sh"; then
2633                                         . $src/hints/$file.sh
2634                                         $cat $src/hints/$file.sh >> UU/config.sh
2635                                 elif $test X$ans = X -o X$ans = Xnone ; then
2636                                         : nothing
2637                                 else
2638                                         echo "$file.sh does not exist -- ignored."
2639                                 fi
2640                         done
2641                 fi
2642         done
2643
2644         hint=recommended
2645         : Remember our hint file for later.
2646         if $test -f "$src/hints/$file.sh" ; then
2647                 hintfile="$file"
2648         else
2649                 hintfile=''
2650         fi
2651 fi
2652 cd UU
2653 ;;
2654 *)
2655         echo " "
2656         echo "Fetching default answers from $config_sh..." >&4
2657         tmp_n="$n"
2658         tmp_c="$c"
2659         cd ..
2660         cp $config_sh config.sh 2>/dev/null
2661         chmod +w config.sh
2662         . ./config.sh
2663         cd UU
2664         cp ../config.sh .
2665         n="$tmp_n"
2666         c="$tmp_c"
2667         hint=previous
2668         ;;
2669 esac
2670 test "$override" && . ./optdef.sh
2671 myuname="$newmyuname"
2672
2673 : Restore computed paths
2674 for file in $loclist $trylist; do
2675         eval $file="\$_$file"
2676 done
2677
2678 cat << EOM
2679
2680 Configure uses the operating system name and version to set some defaults.
2681 The default value is probably right if the name rings a bell. Otherwise,
2682 since spelling matters for me, either accept the default or answer "none"
2683 to leave it blank.
2684
2685 EOM
2686 case "$osname" in
2687         ''|' ')
2688                 case "$hintfile" in
2689                 ''|' '|none) dflt=none ;;
2690                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2691                 esac
2692                 ;;
2693         *) dflt="$osname" ;;
2694 esac
2695 rp="Operating system name?"
2696 . ./myread
2697 case "$ans" in
2698 none)  osname='' ;;
2699 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2700 esac
2701 echo " "
2702 case "$osvers" in
2703         ''|' ')
2704                 case "$hintfile" in
2705                 ''|' '|none) dflt=none ;;
2706                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2707                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2708                         case "$dflt" in
2709                         ''|' ') dflt=none ;;
2710                         esac
2711                         ;;
2712                 esac
2713                 ;;
2714         *) dflt="$osvers" ;;
2715 esac
2716 rp="Operating system version?"
2717 . ./myread
2718 case "$ans" in
2719 none)  osvers='' ;;
2720 *) osvers="$ans" ;;
2721 esac
2722
2723
2724 . ./posthint.sh
2725
2726 : who configured the system
2727 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2728 cf_by=`(logname) 2>/dev/null`
2729 case "$cf_by" in
2730 "")
2731         cf_by=`(whoami) 2>/dev/null`
2732         case "$cf_by" in
2733         "") cf_by=unknown ;;
2734         esac ;;
2735 esac
2736
2737 : set up the script used to warn in case of inconsistency
2738 cat <<EOS >whoa
2739 $startsh
2740 EOS
2741 cat <<'EOSC' >>whoa
2742 dflt=y
2743 echo " "
2744 echo "*** WHOA THERE!!! ***" >&4
2745 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2746 rp="    Keep the $hint value?"
2747 . ./myread
2748 case "$ans" in
2749 y) td=$was; tu=$was;;
2750 esac
2751 EOSC
2752
2753 : function used to set $1 to $val
2754 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2755 case "$val$was" in
2756 $define$undef) . ./whoa; eval "$var=\$td";;
2757 $undef$define) . ./whoa; eval "$var=\$tu";;
2758 *) eval "$var=$val";;
2759 esac'
2760
2761 case "$usethreads" in
2762 $define|true|[yY]*)     dflt='y';;
2763 *) dflt='n';;
2764 esac
2765 cat <<EOM
2766
2767 Perl can be built to take advantage of threads on some systems.
2768 To do so, Configure can be run with -Dusethreads.
2769
2770 Note that threading is a highly experimental feature, and
2771 some known race conditions still remain.  If you choose to try
2772 it, be very sure to not actually deploy it for production
2773 purposes.  README.threads has more details, and is required
2774 reading if you enable threads.
2775
2776 If this doesn't make any sense to you, just accept the default '$dflt'.
2777 EOM
2778 rp='Build a threading Perl?'
2779 . ./myread
2780 case "$ans" in
2781 y|Y)    val="$define" ;;
2782 *)      val="$undef" ;;
2783 esac
2784 set usethreads
2785 eval $setvar
2786
2787 case "$usethreads" in
2788 $define)
2789         $cat <<EOM
2790
2791 As of 5.5.640, Perl has two different internal threading implementations,
2792 the 5.005 version (5005threads) and an interpreter-based version
2793 (ithreads) that has one interpreter per thread.  Both are very 
2794 experimental.  This arrangement exists to help developers work out
2795 which one is better.
2796
2797 If you're a casual user, you probably don't want interpreter-threads
2798 at this time.  There doesn't yet exist a way to create threads from
2799 within Perl in this model, i.e., "use Thread;" will NOT work.
2800 EOM
2801         : Default to ithreads unless overridden on command line or with
2802         : old config.sh
2803         dflt='y'
2804         case "$use5005threads" in
2805                 $define|true|[yY]*) dflt='n';;
2806         esac
2807         case "$useithreads" in
2808                 $undef|false|[nN]*) dflt='n';;
2809         esac
2810         rp='Use interpreter-based ithreads?'
2811         . ./myread
2812         case "$ans" in
2813         y|Y)    val="$define" ;;
2814         *)      val="$undef" ;;
2815         esac
2816         set useithreads
2817         eval $setvar
2818         : Now set use5005threads to the opposite value.
2819         case "$useithreads" in
2820         $define) val="$undef" ;;
2821         *) val="$define" ;;
2822         esac
2823         set use5005threads
2824         eval $setvar
2825         ;;
2826 *)
2827         useithreads="$undef"
2828         use5005threads="$undef"
2829         ;;
2830 esac
2831
2832 case "$d_oldpthreads" in
2833 '')     : Configure tests would be welcome here.  For now, assume undef.
2834         val="$undef" ;;
2835 *)      val="$d_oldpthreads" ;;
2836 esac
2837 set d_oldpthreads
2838 eval $setvar
2839
2840
2841 case "$usethreads" in
2842 "$define"|true|[yY]*)
2843 : Look for a hint-file generated 'call-back-unit'.  If the
2844 : user has specified that a threading perl is to be built,
2845 : we may need to set or change some other defaults.
2846         if $test -f usethreads.cbu; then
2847                 echo "Your platform has some specific hints for threaded builds, using them..."
2848                 . ./usethreads.cbu
2849         else
2850                 $cat <<EOM
2851 (Your platform doesn't have any specific hints for threaded builds.
2852  Assuming POSIX threads, then.)
2853 EOM
2854         fi
2855         ;;
2856 esac
2857
2858 cat <<EOM
2859
2860 Perl can be built so that multiple Perl interpreters can coexist
2861 within the same Perl executable.
2862 EOM
2863
2864 case "$useithreads" in
2865 $define)
2866         cat <<EOM
2867 This multiple interpreter support is required for interpreter-based threads.
2868 EOM
2869         val="$define"
2870         ;;
2871 *)      case "$usemultiplicity" in
2872         $define|true|[yY]*)     dflt='y';;
2873         *) dflt='n';;
2874         esac
2875         echo " "
2876         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2877         rp='Build Perl for multiplicity?'
2878         . ./myread
2879         case "$ans" in
2880         y|Y)    val="$define" ;;
2881         *)      val="$undef" ;;
2882         esac
2883         ;;
2884 esac
2885 set usemultiplicity
2886 eval $setvar
2887
2888 : determine where manual pages are on this system
2889 echo " "
2890 case "$sysman" in
2891 '') 
2892         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2893         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2894         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2895         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2896         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2897         sysman=`./loc . /usr/man/man1 $syspath`
2898         ;;
2899 esac
2900 if $test -d "$sysman"; then
2901         echo "System manual is in $sysman." >&4
2902 else
2903         echo "Could not find manual pages in source form." >&4
2904 fi
2905
2906 : see what memory models we can support
2907 case "$models" in
2908 '')
2909         $cat >pdp11.c <<'EOP'
2910 int main() {
2911 #ifdef pdp11
2912         exit(0);
2913 #else
2914         exit(1);
2915 #endif
2916 }
2917 EOP
2918         case "$cc" in
2919         '') modelcc="$cc" ;;
2920         *) modelcc="cc" ;;
2921         esac
2922         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2923         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2924                 dflt='unsplit split'
2925         else
2926                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2927                 case "$tans" in
2928                 X) dflt='none';;
2929                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2930                                 dflt='small'
2931                         else
2932                                 dflt=''
2933                         fi
2934                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2935                                 dflt="$dflt medium"
2936                         fi
2937                         if $test -d /lib/large || $test -d /usr/lib/large; then
2938                                 dflt="$dflt large"
2939                         fi
2940                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2941                                 dflt="$dflt huge"
2942                         fi
2943                 esac
2944         fi;;
2945 *) dflt="$models";;
2946 esac
2947 $cat <<EOM
2948  
2949 Some systems have different model sizes.  On most systems they are called
2950 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2951 split.  If your system doesn't support different memory models, say "none".
2952 If you wish to force everything to one memory model, say "none" here and
2953 put the appropriate flags later when it asks you for other cc and ld flags.
2954 Venix systems may wish to put "none" and let the compiler figure things out.
2955 (In the following question multiple model names should be space separated.)
2956
2957 The default for most systems is "none".
2958
2959 EOM
2960 rp="Which memory models are supported?"
2961 . ./myread
2962 models="$ans"
2963
2964 case "$models" in
2965 none)
2966         small=''
2967         medium=''
2968         large=''
2969         huge=''
2970         unsplit=''
2971         split=''
2972         ;;
2973 *split)
2974         case "$split" in
2975         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2976                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2977                         dflt='-i'
2978                 else
2979                         dflt='none'
2980                 fi;;
2981         *) dflt="$split";;
2982         esac
2983         rp="What flag indicates separate I and D space?"
2984         . ./myread
2985         tans="$ans"
2986         case "$tans" in
2987         none) tans='';;
2988         esac
2989         split="$tans"
2990         unsplit='';;
2991 *large*|*small*|*medium*|*huge*)
2992         case "$models" in
2993         *large*)
2994                 case "$large" in
2995                 '') dflt='-Ml';;
2996                 *) dflt="$large";;
2997                 esac
2998         rp="What flag indicates large model?"
2999         . ./myread
3000         tans="$ans"
3001         case "$tans" in
3002         none) tans='';
3003         esac
3004         large="$tans";;
3005         *) large='';;
3006         esac
3007         case "$models" in
3008         *huge*) case "$huge" in
3009                 '') dflt='-Mh';;
3010                 *) dflt="$huge";;
3011                 esac
3012                 rp="What flag indicates huge model?"
3013                 . ./myread
3014                 tans="$ans"
3015                 case "$tans" in
3016                 none) tans='';
3017                 esac
3018                 huge="$tans";;
3019         *) huge="$large";;
3020         esac
3021         case "$models" in
3022         *medium*) case "$medium" in
3023                 '') dflt='-Mm';;
3024                 *) dflt="$medium";;
3025                 esac
3026                 rp="What flag indicates medium model?"
3027                 . ./myread
3028                 tans="$ans"
3029                 case "$tans" in
3030                 none) tans='';
3031                 esac
3032                 medium="$tans";;
3033         *) medium="$large";;
3034         esac
3035         case "$models" in
3036         *small*) case "$small" in
3037                 '') dflt='none';;
3038                 *) dflt="$small";;
3039                 esac
3040                 rp="What flag indicates small model?"
3041                 . ./myread
3042                 tans="$ans"
3043                 case "$tans" in
3044                 none) tans='';
3045                 esac
3046                 small="$tans";;
3047         *) small='';;
3048         esac
3049         ;;
3050 *)
3051         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3052         ;;
3053 esac
3054 $rm -f pdp11.* pdp11
3055
3056 : make some quick guesses about what we are up against
3057 echo " "
3058 $echo $n "Hmm...  $c"
3059 echo exit 1 >bsd
3060 echo exit 1 >usg
3061 echo exit 1 >v7
3062 echo exit 1 >osf1
3063 echo exit 1 >eunice
3064 echo exit 1 >xenix
3065 echo exit 1 >venix
3066 echo exit 1 >os2
3067 d_bsd="$undef"
3068 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3069 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3070 then
3071         echo "Looks kind of like an OSF/1 system, but we'll see..."
3072         echo exit 0 >osf1
3073 elif test `echo abc | tr a-z A-Z` = Abc ; then
3074         xxx=`./loc addbib blurfl $pth`
3075         if $test -f $xxx; then
3076         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3077                 echo exit 0 >bsd
3078                 echo exit 0 >usg
3079         else
3080                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3081                         echo "Looks kind of like an extended USG system, but we'll see..."
3082                 else
3083                         echo "Looks kind of like a USG system, but we'll see..."
3084                 fi
3085                 echo exit 0 >usg
3086         fi
3087 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3088         echo "Looks kind of like a BSD system, but we'll see..."
3089         d_bsd="$define"
3090         echo exit 0 >bsd
3091 else
3092         echo "Looks kind of like a Version 7 system, but we'll see..."
3093         echo exit 0 >v7
3094 fi
3095 case "$eunicefix" in
3096 *unixtovms*)
3097         $cat <<'EOI'
3098 There is, however, a strange, musty smell in the air that reminds me of
3099 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3100 EOI
3101         echo exit 0 >eunice
3102         d_eunice="$define"
3103 : it so happens the Eunice I know will not run shell scripts in Unix format
3104         ;;
3105 *)
3106         echo " "
3107         echo "Congratulations.  You aren't running Eunice."
3108         d_eunice="$undef"
3109         ;;
3110 esac
3111 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3112 case "$p_" in
3113 :) ;;
3114 *)
3115         $cat <<'EOI'
3116 I have the feeling something is not exactly right, however...don't tell me...
3117 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3118 EOI
3119         echo exit 0 >os2
3120         ;;
3121 esac
3122 if test -f /xenix; then
3123         echo "Actually, this looks more like a XENIX system..."
3124         echo exit 0 >xenix
3125         d_xenix="$define"
3126 else
3127         echo " "
3128         echo "It's not Xenix..."
3129         d_xenix="$undef"
3130 fi
3131 chmod +x xenix
3132 $eunicefix xenix
3133 if test -f /venix; then
3134         echo "Actually, this looks more like a VENIX system..."
3135         echo exit 0 >venix
3136 else
3137         echo " "
3138         if ./xenix; then
3139                 : null
3140         else
3141                 echo "Nor is it Venix..."
3142         fi
3143 fi
3144 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3145 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3146 $rm -f foo
3147
3148 : see if we need a special compiler
3149 echo " "
3150 if ./usg; then
3151         case "$cc" in
3152         '') case "$Mcc" in
3153                 /*) dflt='Mcc';;
3154                 *) case "$large" in
3155                         -M*) dflt='cc';;
3156                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3157                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3158                                                 dflt='cc'
3159                                         else
3160                                                 dflt='cc -M'
3161                                         fi
3162                                 else
3163                                         dflt='cc'
3164                                 fi;;
3165                         esac;;
3166                 esac;;
3167         *)  dflt="$cc";;
3168         esac
3169         case "$dflt" in
3170         *M*)    $cat <<'EOM'
3171 On some older systems the default C compiler will not resolve multiple global
3172 references that happen to have the same name.  On some such systems the "Mcc"
3173 command may be used to force these to be resolved.  On other systems a "cc -M"
3174 command is required.  (Note that the -M flag on other systems indicates a
3175 memory model to use!) If you have the Gnu C compiler, you might wish to use
3176 that instead.
3177
3178 EOM
3179         ;;
3180         esac
3181         rp="Use which C compiler?"
3182         . ./myread
3183         cc="$ans"
3184 else
3185         case "$cc" in
3186         '') dflt=cc;;
3187         *) dflt="$cc";;
3188         esac
3189         rp="Use which C compiler?"
3190         . ./myread
3191         cc="$ans"
3192 fi
3193 : Look for a hint-file generated 'call-back-unit'.  Now that the
3194 : user has specified the compiler, we may need to set or change some
3195 : other defaults.
3196 if $test -f cc.cbu; then
3197     . ./cc.cbu
3198 fi
3199 . ./checkcc
3200
3201 echo " "
3202 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3203 $cat >gccvers.c <<EOM
3204 #include <stdio.h>
3205 int main() {
3206 #ifdef __GNUC__
3207 #ifdef __VERSION__
3208         printf("%s\n", __VERSION__);
3209 #else
3210         printf("%s\n", "1");
3211 #endif
3212 #endif
3213         exit(0);
3214 }
3215 EOM
3216 if $cc $ldflags -o gccvers gccvers.c; then
3217         gccversion=`./gccvers`
3218         case "$gccversion" in
3219         '') echo "You are not using GNU cc." ;;
3220         *)  echo "You are using GNU cc $gccversion."
3221             ccname=gcc  
3222             ;;
3223         esac
3224 else
3225         echo " "
3226         echo "*** WHOA THERE!!! ***" >&4
3227         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3228         case "$knowitall" in
3229         '')
3230         echo "    You'd better start hunting for one and let me know about it." >&4
3231                 exit 1
3232                 ;;
3233         esac
3234 fi
3235 $rm -f gccvers*
3236 case "$gccversion" in
3237 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3238 esac
3239 case "$gccversion" in
3240 '') gccosandvers='' ;;
3241 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3242    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3243    gccshortvers=''
3244    case "$gccosandvers" in
3245    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3246    $osname$osvers) ;; # looking good
3247    $osname*) cat <<EOM >&4
3248
3249 *** WHOA THERE!!! ***
3250
3251     Your gcc has not been compiled for the exact release of
3252     your operating system ($gccosandvers versus $osname$osvers).
3253
3254     In general it is a good idea to keep gcc synchronized with
3255     the operating system because otherwise serious problems
3256     may ensue when trying to compile software, like Perl.
3257
3258     I'm trying to be optimistic here, though, and will continue.
3259     If later during the configuration and build icky compilation
3260     problems appear (headerfile conflicts being the most common
3261     manifestation), I suggest reinstalling the gcc to match
3262     your operating system release.
3263
3264 EOM
3265       ;;
3266    *) gccosandvers='' ;; # failed to parse, better be silent
3267    esac
3268    ;;
3269 esac
3270 case "$ccname" in
3271 '') ccname="$cc" ;;
3272 esac
3273
3274 : see how we invoke the C preprocessor
3275 echo " "
3276 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3277 cat <<'EOT' >testcpp.c
3278 #define ABC abc
3279 #define XYZ xyz
3280 ABC.XYZ
3281 EOT
3282 cd ..
3283 if test ! -f cppstdin; then
3284         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3285                 # AIX cc -E doesn't show the absolute headerfile
3286                 # locations but we'll cheat by using the -M flag.
3287                 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
3288         else
3289                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3290         fi
3291 else
3292         echo "Keeping your $hint cppstdin wrapper."
3293 fi
3294 chmod 755 cppstdin
3295 wrapper=`pwd`/cppstdin
3296 ok='false'
3297 cd UU
3298
3299 if $test "X$cppstdin" != "X" && \
3300         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3301         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3302 then
3303         echo "You used to use $cppstdin $cppminus so we'll use that again."
3304         case "$cpprun" in
3305         '') echo "But let's see if we can live without a wrapper..." ;;
3306         *)
3307                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3308                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3309                 then
3310                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3311                         ok='true'
3312                 else
3313                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3314                 fi
3315                 ;;
3316         esac
3317 else
3318         case "$cppstdin" in
3319         '') ;;
3320         *)
3321                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3322                 ;;
3323         esac
3324 fi
3325
3326 if $ok; then
3327         : nothing
3328 elif echo '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"' -E -" will work...'; \
3335         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3336         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3337         echo "Yup, it does."
3338         x_cpp="$cc -E"
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 "Yipee, that works!"
3344         x_cpp="$cc -P"
3345         x_minus='';
3346 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3347         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3348         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3349         echo "At long last!"
3350         x_cpp="$cc -P"
3351         x_minus='-';
3352 elif echo 'No such luck, 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 "It works!"
3356         x_cpp="$cpp"
3357         x_minus='';
3358 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3359         $cpp - <testcpp.c >testcpp.out 2>&1; \
3360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3361         echo "Hooray, it works!  I was beginning to wonder."
3362         x_cpp="$cpp"
3363         x_minus='-';
3364 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3365         $wrapper <testcpp.c >testcpp.out 2>&1; \
3366         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3367         x_cpp="$wrapper"
3368         x_minus=''
3369         echo "Eureka!"
3370 else
3371         dflt=''
3372         rp="No dice.  I can't find a C preprocessor.  Name one:"
3373         . ./myread
3374         x_cpp="$ans"
3375         x_minus=''
3376         $x_cpp <testcpp.c >testcpp.out 2>&1
3377         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3378                 echo "OK, that will do." >&4
3379         else
3380 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3381                 exit 1
3382         fi
3383 fi
3384
3385 case "$ok" in
3386 false)
3387         cppstdin="$x_cpp"
3388         cppminus="$x_minus"
3389         cpprun="$x_cpp"
3390         cpplast="$x_minus"
3391         set X $x_cpp
3392         shift
3393         case "$1" in
3394         "$cpp")
3395                 echo "Perhaps can we force $cc -E using a wrapper..."
3396                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3397                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3398                 then
3399                         echo "Yup, we can."
3400                         cppstdin="$wrapper"
3401                         cppminus='';
3402                 else
3403                         echo "Nope, we'll have to live without it..."
3404                 fi
3405                 ;;
3406         esac
3407         case "$cpprun" in
3408         "$wrapper")
3409                 cpprun=''
3410                 cpplast=''
3411                 ;;
3412         esac
3413         ;;
3414 esac
3415
3416 case "$cppstdin" in
3417 "$wrapper"|'cppstdin') ;;
3418 *) $rm -f $wrapper;;
3419 esac
3420 $rm -f testcpp.c testcpp.out
3421
3422 : decide how portable to be.  Allow command line overrides.
3423 case "$d_portable" in
3424 "$undef") ;;
3425 *)      d_portable="$define" ;;
3426 esac
3427
3428 : set up shell script to do ~ expansion
3429 cat >filexp <<EOSS
3430 $startsh
3431 : expand filename
3432 case "\$1" in
3433  ~/*|~)
3434         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3435         ;;
3436  ~*)
3437         if $test -f /bin/csh; then
3438                 /bin/csh -f -c "glob \$1"
3439                 failed=\$?
3440                 echo ""
3441                 exit \$failed
3442         else
3443                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3444                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3445                 if $test ! -d "\$dir"; then
3446                         me=\`basename \$0\`
3447                         echo "\$me: can't locate home directory for: \$name" >&2
3448                         exit 1
3449                 fi
3450                 case "\$1" in
3451                 */*)
3452                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3453                         ;;
3454                 *)
3455                         echo \$dir
3456                         ;;
3457                 esac
3458         fi
3459         ;;
3460 *)
3461         echo \$1
3462         ;;
3463 esac
3464 EOSS
3465 chmod +x filexp
3466 $eunicefix filexp
3467
3468 : now set up to get a file name
3469 cat <<EOS >getfile
3470 $startsh
3471 EOS
3472 cat <<'EOSC' >>getfile
3473 tilde=''
3474 fullpath=''
3475 already=''
3476 skip=''
3477 none_ok=''
3478 exp_file=''
3479 nopath_ok=''
3480 orig_rp="$rp"
3481 orig_dflt="$dflt"
3482 case "$gfpth" in
3483 '') gfpth='.' ;;
3484 esac
3485
3486 case "$fn" in
3487 *\(*)
3488         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3489         fn=`echo $fn | sed 's/(.*)//'`
3490         ;;
3491 esac
3492
3493 case "$fn" in
3494 *:*)
3495         loc_file=`expr $fn : '.*:\(.*\)'`
3496         fn=`expr $fn : '\(.*\):.*'`
3497         ;;
3498 esac
3499
3500 case "$fn" in
3501 *~*) tilde=true;;
3502 esac
3503 case "$fn" in
3504 */*) fullpath=true;;
3505 esac
3506 case "$fn" in
3507 *+*) skip=true;;
3508 esac
3509 case "$fn" in
3510 *n*) none_ok=true;;
3511 esac
3512 case "$fn" in
3513 *e*) exp_file=true;;
3514 esac
3515 case "$fn" in
3516 *p*) nopath_ok=true;;
3517 esac
3518
3519 case "$fn" in
3520 *f*) type='File';;
3521 *d*) type='Directory';;
3522 *l*) type='Locate';;
3523 esac
3524
3525 what="$type"
3526 case "$what" in
3527 Locate) what='File';;
3528 esac
3529
3530 case "$exp_file" in
3531 '')
3532         case "$d_portable" in
3533         "$define") ;;
3534         *) exp_file=true;;
3535         esac
3536         ;;
3537 esac
3538
3539 cd ..
3540 while test "$type"; do
3541         redo=''
3542         rp="$orig_rp"
3543         dflt="$orig_dflt"
3544         case "$tilde" in
3545         true) rp="$rp (~name ok)";;
3546         esac
3547         . UU/myread
3548         if test -f UU/getfile.ok && \
3549                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3550         then
3551                 value="$ans"
3552                 ansexp="$ans"
3553                 break
3554         fi
3555         case "$ans" in
3556         none)
3557                 value=''
3558                 ansexp=''
3559                 case "$none_ok" in
3560                 true) type='';;
3561                 esac
3562                 ;;
3563         *)
3564                 case "$tilde" in
3565                 '') value="$ans"
3566                         ansexp="$ans";;
3567                 *)
3568                         value=`UU/filexp $ans`
3569                         case $? in
3570                         0)
3571                                 if test "$ans" != "$value"; then
3572                                         echo "(That expands to $value on this system.)"
3573                                 fi
3574                                 ;;
3575                         *) value="$ans";;
3576                         esac
3577                         ansexp="$value"
3578                         case "$exp_file" in
3579                         '') value="$ans";;
3580                         esac
3581                         ;;
3582                 esac
3583                 case "$fullpath" in
3584                 true)
3585                         case "$ansexp" in
3586                         /*) value="$ansexp" ;;
3587                         [a-zA-Z]:/*) value="$ansexp" ;;
3588                         *)
3589                                 redo=true
3590                                 case "$already" in
3591                                 true)
3592                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3593                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3594                                         ;;
3595                                 *)
3596                                 echo "Please give a full path name, starting with slash." >&4
3597                                         case "$tilde" in
3598                                         true)
3599                                 echo "Note that using ~name is ok provided it expands well." >&4
3600                                                 already=true
3601                                                 ;;
3602                                         esac
3603                                 esac
3604                                 ;;
3605                         esac
3606                         ;;
3607                 esac
3608                 case "$redo" in
3609                 '')
3610                         case "$type" in
3611                         File)
3612                                 for fp in $gfpth; do
3613                                         if test "X$fp" = X.; then
3614                                             pf="$ansexp"
3615                                         else    
3616                                             pf="$fp/$ansexp"
3617                                         fi
3618                                         if test -f "$pf"; then
3619                                                 type=''
3620                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3621                                         then
3622                                                 echo "($value is not a plain file, but that's ok.)"
3623                                                 type=''
3624                                         fi
3625                                         if test X"$type" = X; then
3626                                             value="$pf"
3627                                             break
3628                                         fi
3629                                 done
3630                                 ;;
3631                         Directory)
3632                                 for fp in $gfpth; do
3633                                         if test "X$fp" = X.; then
3634                                             dir="$ans"
3635                                             direxp="$ansexp"
3636                                         else    
3637                                             dir="$fp/$ansexp"
3638                                             direxp="$fp/$ansexp"
3639                                         fi
3640                                         if test -d "$direxp"; then
3641                                                 type=''
3642                                                 value="$dir"
3643                                                 break
3644                                         fi
3645                                 done
3646                                 ;;
3647                         Locate)
3648                                 if test -d "$ansexp"; then
3649                                         echo "(Looking for $loc_file in directory $value.)"
3650                                         value="$value/$loc_file"
3651                                         ansexp="$ansexp/$loc_file"
3652                                 fi
3653                                 if test -f "$ansexp"; then
3654                                         type=''
3655                                 fi
3656                                 case "$nopath_ok" in
3657                                 true)   case "$value" in
3658                                         */*) ;;
3659                                         *)      echo "Assuming $value will be in people's path."
3660                                                 type=''
3661                                                 ;;
3662                                         esac
3663                                         ;;
3664                                 esac
3665                                 ;;
3666                         esac
3667
3668                         case "$skip" in
3669                         true) type='';
3670                         esac
3671
3672                         case "$type" in
3673                         '') ;;
3674                         *)
3675                                 if test "$fastread" = yes; then
3676                                         dflt=y
3677                                 else
3678                                         dflt=n
3679                                 fi
3680                                 rp="$what $value doesn't exist.  Use that name anyway?"
3681                                 . UU/myread
3682                                 dflt=''
3683                                 case "$ans" in
3684                                 y*) type='';;
3685                                 *) echo " ";;
3686                                 esac
3687                                 ;;
3688                         esac
3689                         ;;
3690                 esac
3691                 ;;
3692         esac
3693 done
3694 cd UU
3695 ans="$value"
3696 rp="$orig_rp"
3697 dflt="$orig_dflt"
3698 rm -f getfile.ok
3699 test "X$gfpthkeep" != Xy && gfpth=""
3700 EOSC
3701
3702 : What should the include directory be ?
3703 echo " "
3704 $echo $n "Hmm...  $c"
3705 dflt='/usr/include'
3706 incpath=''
3707 mips_type=''
3708 if $test -f /bin/mips && /bin/mips; then
3709         echo "Looks like a MIPS system..."
3710         $cat >usr.c <<'EOCP'
3711 #ifdef SYSTYPE_BSD43
3712 /bsd43
3713 #endif
3714 EOCP
3715         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3716                 dflt='/bsd43/usr/include'
3717                 incpath='/bsd43'
3718                 mips_type='BSD 4.3'
3719         else
3720                 mips_type='System V'
3721         fi
3722         $rm -f usr.c usr.out
3723         echo "and you're compiling with the $mips_type compiler and libraries."
3724         xxx_prompt=y
3725         echo "exit 0" >mips
3726 else
3727         echo "Doesn't look like a MIPS system."
3728         xxx_prompt=n
3729         echo "exit 1" >mips
3730 fi
3731 chmod +x mips
3732 $eunicefix mips
3733 case "$usrinc" in
3734 '') ;;
3735 *) dflt="$usrinc";;
3736 esac
3737 case "$xxx_prompt" in
3738 y)      fn=d/
3739         echo " "
3740         rp='Where are the include files you want to use?'
3741         . ./getfile
3742         usrinc="$ans"
3743         ;;
3744 *)      usrinc="$dflt"
3745         ;;
3746 esac
3747
3748 : Set private lib path
3749 case "$plibpth" in
3750 '') if ./mips; then
3751                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3752         fi;;
3753 esac
3754 case "$libpth" in
3755 ' ') dlist='';;
3756 '') dlist="$loclibpth $plibpth $glibpth";;
3757 *) dlist="$libpth";;
3758 esac
3759
3760 : Now check and see which directories actually exist, avoiding duplicates
3761 libpth=''
3762 for xxx in $dlist
3763 do
3764     if $test -d $xxx; then
3765                 case " $libpth " in
3766                 *" $xxx "*) ;;
3767                 *) libpth="$libpth $xxx";;
3768                 esac
3769     fi
3770 done
3771 $cat <<'EOM'
3772
3773 Some systems have incompatible or broken versions of libraries.  Among
3774 the directories listed in the question below, please remove any you
3775 know not to be holding relevant libraries, and add any that are needed.
3776 Say "none" for none.
3777
3778 EOM
3779 case "$libpth" in
3780 '') dflt='none';;
3781 *)
3782         set X $libpth
3783         shift
3784         dflt=${1+"$@"}
3785         ;;
3786 esac
3787 rp="Directories to use for library searches?"
3788 . ./myread
3789 case "$ans" in
3790 none) libpth=' ';;
3791 *) libpth="$ans";;
3792 esac
3793
3794 : compute shared library extension
3795 case "$so" in
3796 '')
3797         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3798                 dflt='sl'
3799         else
3800                 dflt='so'
3801         fi
3802         ;;
3803 *) dflt="$so";;
3804 esac
3805 $cat <<EOM
3806
3807 On some systems, shared libraries may be available.  Answer 'none' if
3808 you want to suppress searching of shared libraries for the remainder
3809 of this configuration.
3810
3811 EOM
3812 rp='What is the file extension used for shared libraries?'
3813 . ./myread
3814 so="$ans"
3815
3816 : Define several unixisms.
3817 : Hints files or command line option can be used to override them.
3818 : The convoluted testing is in case hints files set either the old
3819 : or the new name.
3820 case "$_exe" in
3821 '')     case "$exe_ext" in
3822     '') ;;
3823         *)      _exe="$exe_ext" ;;
3824         esac
3825         ;;
3826 esac
3827 case "$_a" in
3828 '')     case "$lib_ext" in
3829     '') _a='.a';;
3830         *)      _a="$lib_ext" ;;
3831         esac
3832         ;;
3833 esac
3834 case "$_o" in
3835 '') case "$obj_ext" in
3836         '')     _o='.o';;
3837         *)      _o="$obj_ext";;
3838         esac
3839         ;;
3840 esac
3841 case "$p_" in
3842 '') case "$path_sep" in
3843         '')     p_=':';;
3844         *)      p_="$path_sep";;
3845         esac
3846         ;;
3847 esac
3848 exe_ext=$_exe
3849 lib_ext=$_a
3850 obj_ext=$_o
3851 path_sep=$p_
3852
3853 : Which makefile gets called first.  This is used by make depend.
3854 case "$firstmakefile" in
3855 '') firstmakefile='makefile';;
3856 esac
3857
3858 case "$usesocks" in
3859 $define|true|[yY]*)     dflt='y';;
3860 *) dflt='n';;
3861 esac
3862 cat <<EOM
3863
3864 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3865 Configure must be run with -Dusesocks.
3866
3867 If this doesn't make any sense to you, just accept the default '$dflt'.
3868 EOM
3869 rp='Build Perl for SOCKS?'
3870 . ./myread
3871 case "$ans" in
3872 y|Y)    val="$define" ;;     
3873 *)      val="$undef" ;;
3874 esac
3875 set usesocks
3876 eval $setvar
3877
3878 : Looking for optional libraries
3879 echo " "
3880 echo "Checking for optional libraries..." >&4
3881 case "$libs" in
3882 ' '|'') dflt='';;
3883 *) dflt="$libs";;
3884 esac
3885 case "$libswanted" in
3886 '') libswanted='c_s';;
3887 esac
3888 case "$usesocks" in
3889 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3890 esac
3891 libsfound=''
3892 libsfiles=''
3893 libsdirs=''
3894 libspath=''
3895 for thisdir in $libpth $xlibpth; do
3896   test -d $thisdir && libspath="$libspath $thisdir"
3897 done
3898 for thislib in $libswanted; do
3899         for thisdir in $libspath; do
3900             xxx=''
3901             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3902                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3903                 $test -f "$xxx" && eval $libscheck
3904                 $test -f "$xxx" && libstyle=shared
3905             fi
3906             if test ! -f "$xxx"; then
3907                 xxx=$thisdir/lib$thislib.$so
3908                 $test -f "$xxx" && eval $libscheck
3909                 $test -f "$xxx" && libstyle=shared
3910             fi  
3911             if test ! -f "$xxx"; then
3912                 xxx=$thisdir/lib$thislib$_a
3913                 $test -f "$xxx" && eval $libscheck
3914                 $test -f "$xxx" && libstyle=static
3915             fi
3916             if test ! -f "$xxx"; then
3917                 xxx=$thisdir/$thislib$_a
3918                 $test -f "$xxx" && eval $libscheck
3919                 $test -f "$xxx" && libstyle=static
3920             fi
3921             if test ! -f "$xxx"; then
3922                 xxx=$thisdir/lib${thislib}_s$_a
3923                 $test -f "$xxx" && eval $libscheck
3924                 $test -f "$xxx" && libstyle=static
3925                 $test -f "$xxx" && thislib=${thislib}_s
3926             fi
3927             if test ! -f "$xxx"; then
3928                 xxx=$thisdir/Slib$thislib$_a
3929                 $test -f "$xxx" && eval $libscheck
3930                 $test -f "$xxx" && libstyle=static
3931             fi
3932             if $test -f "$xxx"; then
3933                 case "$libstyle" in
3934                 shared) echo "Found -l$thislib (shared)." ;;
3935                 static) echo "Found -l$thislib." ;;
3936                 *)      echo "Found -l$thislib ($libstyle)." ;;
3937                 esac
3938                 case " $dflt " in
3939                 *"-l$thislib "*);;
3940                 *) dflt="$dflt -l$thislib"
3941                    libsfound="$libsfound $xxx"
3942                    yyy=`basename $xxx`
3943                    libsfiles="$libsfiles $yyy"
3944                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3945                    case " $libsdirs " in
3946                    *" $yyy "*) ;;
3947                    *) libsdirs="$libsdirs $yyy" ;;
3948                    esac
3949                    ;;
3950                 esac
3951                 break
3952             fi  
3953         done
3954         if $test ! -f "$xxx"; then
3955             echo "No -l$thislib."
3956         fi
3957 done
3958 set X $dflt
3959 shift
3960 dflt="$*"
3961 case "$libs" in
3962 '') dflt="$dflt";;
3963 *) dflt="$libs";;
3964 esac
3965 case "$dflt" in
3966 ' '|'') dflt='none';;
3967 esac
3968
3969 $cat <<EOM
3970
3971 In order to compile $package on your machine, a number of libraries
3972 are usually needed.  Include any other special libraries here as well.
3973 Say "none" for none.  The default list is almost always right.
3974 EOM
3975
3976 echo " "
3977 rp="What libraries to use?"
3978 . ./myread
3979 case "$ans" in
3980 none) libs=' ';;
3981 *) libs="$ans";;
3982 esac
3983
3984 : determine optimization, if desired, or use for debug flag also
3985 case "$optimize" in
3986 ' '|$undef) dflt='none';;
3987 '') dflt='-O';;
3988 *) dflt="$optimize";;
3989 esac
3990 $cat <<EOH
3991
3992 By default, $package compiles with the -O flag to use the optimizer.
3993 Alternately, you might want to use the symbolic debugger, which uses
3994 the -g flag (on traditional Unix systems).  Either flag can be
3995 specified here.  To use neither flag, specify the word "none".
3996
3997 EOH
3998 rp="What optimizer/debugger flag should be used?"
3999 . ./myread
4000 optimize="$ans"
4001 case "$optimize" in
4002 'none') optimize=" ";;
4003 esac
4004
4005 dflt=''
4006 : We will not override a previous value, but we might want to
4007 : augment a hint file
4008 case "$hint" in
4009 default|recommended)
4010         case "$gccversion" in
4011         1*) dflt='-fpcc-struct-return' ;;
4012         esac
4013         case "$optimize" in
4014         *-g*) dflt="$dflt -DDEBUGGING";;
4015         esac
4016         case "$gccversion" in
4017         2*) if test -d /etc/conf/kconfig.d &&
4018                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4019                 then
4020                         dflt="$dflt -posix"
4021                 fi
4022                 ;;
4023         esac
4024         case "$gccversion" in
4025         1*) ;;
4026         2.[0-8]*) ;;
4027         ?*)     echo " "
4028                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4029                 echo 'int main(void) { return 0; }' > gcctest.c
4030                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4031                         echo "Yes, it does." 2>&1
4032                         case "$ccflags" in
4033                         *strict-aliasing*) 
4034                                 echo "Leaving current flags $ccflags alone." 2>&1
4035                                 ;;
4036                         *) dflt="$dflt -fno-strict-aliasing" ;;
4037                         esac
4038                 else
4039                         echo "Nope, it doesn't, but that's ok." 2>&1
4040                 fi
4041                 ;;
4042         esac
4043         ;;
4044 esac
4045
4046 case "$mips_type" in
4047 *BSD*|'') inclwanted="$locincpth $usrinc";;
4048 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4049 esac
4050 for thisincl in $inclwanted; do
4051         if $test -d $thisincl; then
4052                 if $test x$thisincl != x$usrinc; then
4053                         case "$dflt" in
4054                         *" -I$thisincl "*);;
4055                         *) dflt="$dflt -I$thisincl ";;
4056                         esac
4057                 fi
4058         fi
4059 done
4060
4061 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4062         xxx=true;
4063 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4064         xxx=true;
4065 else
4066         xxx=false;
4067 fi;
4068 if $xxx; then
4069         case "$dflt" in
4070         *$2*);;
4071         *) dflt="$dflt -D$2";;
4072         esac;
4073 fi'
4074
4075 set signal.h LANGUAGE_C; eval $inctest
4076
4077 case "$usesocks" in
4078 $define)
4079         ccflags="$ccflags -DSOCKS"
4080         ;;
4081 esac
4082
4083 case "$hint" in
4084 default|recommended) dflt="$ccflags $dflt" ;;
4085 *) dflt="$ccflags";;
4086 esac
4087
4088 case "$dflt" in
4089 ''|' ') dflt=none;;
4090 esac
4091
4092 $cat <<EOH
4093
4094 Your C compiler may want other flags.  For this question you should include
4095 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4096 but you should NOT include libraries or ld flags like -lwhatever.  If you
4097 want $package to honor its debug switch, you should include -DDEBUGGING here.
4098 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4099
4100 To use no flags, specify the word "none".
4101
4102 EOH
4103 set X $dflt
4104 shift
4105 dflt=${1+"$@"}
4106 rp="Any additional cc flags?"
4107 . ./myread
4108 case "$ans" in
4109 none) ccflags='';;
4110 *) ccflags="$ans";;
4111 esac
4112
4113 : the following weeds options from ccflags that are of no interest to cpp
4114 cppflags="$ccflags"
4115 case "$gccversion" in
4116 1*) cppflags="$cppflags -D__GNUC__"
4117 esac
4118 case "$mips_type" in
4119 '');;
4120 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4121 esac
4122 case "$cppflags" in
4123 '');;
4124 *)
4125         echo " "
4126         echo "Let me guess what the preprocessor flags are..." >&4
4127         set X $cppflags
4128         shift
4129         cppflags=''
4130         $cat >cpp.c <<'EOM'
4131 #define BLURFL foo
4132
4133 BLURFL xx LFRULB
4134 EOM
4135         previous=''
4136         for flag in $*
4137         do
4138                 case "$flag" in
4139                 -*) ftry="$flag";;
4140                 *) ftry="$previous $flag";;
4141                 esac
4142                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4143                         >cpp1.out 2>/dev/null && \
4144                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4145                         >cpp2.out 2>/dev/null && \
4146                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4147                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4148                 then
4149                         cppflags="$cppflags $ftry"
4150                         previous=''
4151                 else
4152                         previous="$flag"
4153                 fi
4154         done
4155         set X $cppflags
4156         shift
4157         cppflags=${1+"$@"}
4158         case "$cppflags" in
4159         *-*)  echo "They appear to be: $cppflags";;
4160         esac
4161         $rm -f cpp.c cpp?.out
4162         ;;
4163 esac
4164
4165 : flags used in final linking phase
4166 case "$ldflags" in
4167 '') if ./venix; then
4168                 dflt='-i -z'
4169         else
4170                 dflt=''
4171         fi
4172         case "$ccflags" in
4173         *-posix*) dflt="$dflt -posix" ;;
4174         esac
4175         ;;
4176 *) dflt="$ldflags";;
4177 esac
4178
4179 : Try to guess additional flags to pick up local libraries.
4180 for thislibdir in $libpth; do
4181         case " $loclibpth " in
4182         *" $thislibdir "*)
4183                 case "$dflt " in 
4184                 *"-L$thislibdir "*) ;;
4185                 *)  dflt="$dflt -L$thislibdir" ;;
4186                 esac
4187                 ;;
4188         esac
4189 done
4190
4191 case "$dflt" in
4192 '') dflt='none' ;;
4193 esac
4194
4195 $cat <<EOH
4196
4197 Your C linker may need flags.  For this question you should
4198 include -L/whatever and any other flags used by the C linker, but you
4199 should NOT include libraries like -lwhatever.
4200
4201 Make sure you include the appropriate -L/path flags if your C linker
4202 does not normally search all of the directories you specified above,
4203 namely
4204         $libpth
4205 To use no flags, specify the word "none".
4206
4207 EOH
4208
4209 rp="Any additional ld flags (NOT including libraries)?"
4210 . ./myread
4211 case "$ans" in
4212 none) ldflags='';;
4213 *) ldflags="$ans";;
4214 esac
4215 rmlist="$rmlist pdp11"
4216
4217 : coherency check
4218 echo " "
4219 echo "Checking your choice of C compiler and flags for coherency..." >&4
4220 $cat > try.c <<'EOF'
4221 #include <stdio.h>
4222 int main() { printf("Ok\n"); exit(0); }
4223 EOF
4224 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4225 shift
4226 $cat >try.msg <<'EOM'
4227 I've tried to compile and run the following simple program:
4228
4229 EOM
4230 $cat try.c >> try.msg
4231
4232 $cat >> try.msg <<EOM
4233
4234 I used the command:
4235
4236         $*
4237         ./try
4238
4239 and I got the following output:
4240
4241 EOM
4242 dflt=y
4243 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4244         if sh -c './try' >>try.msg 2>&1; then
4245                 xxx=`./try`
4246                 case "$xxx" in
4247                 "Ok") dflt=n ;;
4248                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4249                         case " $libs " in
4250                         *" -lsfio "*)
4251                                 cat >> try.msg <<'EOQS'
4252 If $libs contains -lsfio, and sfio is mis-configured, then it
4253 sometimes (apparently) runs and exits with a 0 status, but with no
4254 output!  It may have to do with sfio's use of _exit vs. exit.
4255
4256 EOQS
4257                                 rp="You have a big problem.  Shall I abort Configure"
4258                                 dflt=y
4259                                 ;;
4260                         esac
4261                         ;;
4262                 esac
4263         else
4264                 echo "The program compiled OK, but exited with status $?." >>try.msg
4265                 rp="You have a problem.  Shall I abort Configure"
4266                 dflt=y
4267         fi
4268 else
4269         echo "I can't compile the test program." >>try.msg
4270         rp="You have a BIG problem.  Shall I abort Configure"
4271         dflt=y
4272 fi
4273 case "$dflt" in
4274 y)
4275         $cat try.msg >&4
4276         case "$knowitall" in
4277         '')
4278                 echo "(The supplied flags or libraries might be incorrect.)"
4279                 ;;
4280         *) dflt=n;;
4281         esac
4282         echo " "
4283         . ./myread
4284         case "$ans" in
4285         n*|N*) ;;
4286         *)      echo "Ok.  Stopping Configure." >&4
4287                 exit 1
4288                 ;;
4289         esac
4290         ;;
4291 n) echo "OK, that should do.";;
4292 esac
4293 $rm -f try try.* core
4294
4295 : define an is-a-typedef? function
4296 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4297 case "$inclist" in
4298 "") inclist="sys/types.h";;
4299 esac;
4300 eval "varval=\$$var";
4301 case "$varval" in
4302 "")
4303         $rm -f temp.c;
4304         for inc in $inclist; do
4305                 echo "#include <$inc>" >>temp.c;
4306         done;
4307         echo "#ifdef $type" >> temp.c;
4308         echo "printf(\"We have $type\");" >> temp.c;
4309         echo "#endif" >> temp.c;
4310         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4311         if $contains $type temp.E >/dev/null 2>&1; then
4312                 eval "$var=\$type";
4313         else
4314                 eval "$var=\$def";
4315         fi;
4316         $rm -f temp.?;;
4317 *) eval "$var=\$varval";;
4318 esac'
4319
4320 : define an is-a-typedef? function that prompts if the type is not available.
4321 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4322 case "$inclist" in
4323 "") inclist="sys/types.h";;
4324 esac;
4325 eval "varval=\$$var";
4326 case "$varval" in
4327 "")
4328         $rm -f temp.c;
4329         for inc in $inclist; do
4330                 echo "#include <$inc>" >>temp.c;
4331         done;
4332         echo "#ifdef $type" >> temp.c;
4333         echo "printf(\"We have $type\");" >> temp.c;
4334         echo "#endif" >> temp.c;
4335         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4336         echo " " ;
4337         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4338         if $contains $type temp.E >/dev/null 2>&1; then
4339                 echo "$type found." >&4;
4340                 eval "$var=\$type";
4341         else
4342                 echo "$type NOT found." >&4;
4343                 dflt="$def";
4344                 . ./myread ;
4345                 eval "$var=\$ans";
4346         fi;
4347         $rm -f temp.?;;
4348 *) eval "$var=\$varval";;
4349 esac'
4350
4351 : define a shorthand compile call
4352 compile='
4353 mc_file=$1;
4354 shift;
4355 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4356 : define a shorthand compile call for compilations that should be ok.
4357 compile_ok='
4358 mc_file=$1;
4359 shift;
4360 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4361
4362 : check for lengths of integral types
4363 echo " "
4364 case "$intsize" in
4365 '')
4366         echo "Checking to see how big your integers are..." >&4
4367         $cat >intsize.c <<'EOCP'
4368 #include <stdio.h>
4369 int main()
4370 {
4371         printf("intsize=%d;\n", (int)sizeof(int));
4372         printf("longsize=%d;\n", (int)sizeof(long));
4373         printf("shortsize=%d;\n", (int)sizeof(short));
4374         exit(0);
4375 }
4376 EOCP
4377         set intsize
4378         if eval $compile_ok && ./intsize > /dev/null; then
4379                 eval `./intsize`
4380                 echo "Your integers are $intsize bytes long."
4381                 echo "Your long integers are $longsize bytes long."
4382                 echo "Your short integers are $shortsize bytes long."
4383         else
4384                 $cat >&4 <<EOM
4385 !
4386 Help! I can't compile and run the intsize test program: please enlighten me!
4387 (This is probably a misconfiguration in your system or libraries, and
4388 you really ought to fix it.  Still, I'll try anyway.)
4389 !
4390 EOM
4391                 dflt=4
4392                 rp="What is the size of an integer (in bytes)?"
4393                 . ./myread
4394                 intsize="$ans"
4395                 dflt=$intsize
4396                 rp="What is the size of a long integer (in bytes)?"
4397                 . ./myread
4398                 longsize="$ans"
4399                 dflt=2
4400                 rp="What is the size of a short integer (in bytes)?"
4401                 . ./myread
4402                 shortsize="$ans"
4403         fi
4404         ;;
4405 esac
4406 $rm -f intsize intsize.*
4407
4408 : see what type lseek is declared as in the kernel
4409 rp="What is the type used for lseek's offset on this system?"
4410 set off_t lseektype long stdio.h sys/types.h
4411 eval $typedef_ask
4412
4413 echo " "
4414 echo "Checking to see how big your file offsets are..." >&4
4415 $cat >try.c <<EOCP
4416 #include <sys/types.h>
4417 #include <stdio.h>
4418 int main()
4419 {
4420     printf("%d\n", (int)sizeof($lseektype));
4421     return(0); 
4422 }
4423 EOCP
4424 set try
4425 if eval $compile_ok; then
4426         lseeksize=`./try`
4427         echo "Your file offsets are $lseeksize bytes long."
4428 else
4429         dflt=$longsize
4430         echo " "
4431         echo "(I can't seem to compile the test program.  Guessing...)"
4432         rp="What is the size of your file offsets (in bytes)?"
4433         . ./myread
4434         lseeksize="$ans"
4435 fi
4436 $rm -f try.c try
4437
4438 : see what type file positions are declared as in the library
4439 rp="What is the type for file position used by fsetpos()?"
4440 set fpos_t fpostype long stdio.h sys/types.h
4441 eval $typedef_ask
4442
4443 echo " "
4444 case "$fpostype" in
4445 *_t) zzz="$fpostype"    ;;
4446 *)   zzz="fpos_t"       ;;
4447 esac
4448 echo "Checking the size of $zzz..." >&4 
4449 cat > try.c <<EOCP
4450 #include <sys/types.h>
4451 #include <stdio.h>
4452 int main() {
4453     printf("%d\n", (int)sizeof($fpostype));
4454     exit(0);
4455 }
4456 EOCP
4457 set try
4458 if eval $compile_ok; then
4459         yyy=`./try`
4460         case "$yyy" in
4461         '')     fpossize=4
4462                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4463                 ;;
4464         *)      fpossize=$yyy
4465                 echo "Your $zzz is $fpossize bytes long."
4466                 ;;
4467         esac
4468 else
4469         dflt="$longsize"
4470         echo " " >&4
4471         echo "(I can't compile the test program.  Guessing...)" >&4
4472         rp="What is the size of your file positions (in bytes)?"
4473         . ./myread
4474         fpossize="$ans"
4475 fi
4476
4477
4478
4479 # Backward compatibility (uselfs is deprecated).
4480 case "$uselfs" in
4481 "$define"|true|[yY]*)
4482         cat <<EOM >&4
4483
4484 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4485 EOM
4486         uselargefiles="$define"
4487         ;;
4488 esac                          
4489
4490 case "$lseeksize:$fpossize" in
4491 8:8) cat <<EOM
4492
4493 You can have files larger than 2 gigabytes.
4494 EOM
4495    val="$define" ;;
4496 *)    case "$uselargefiles" in
4497    "$undef"|false|[nN]*) dflt='n' ;;
4498    *)   dflt='y' ;;
4499    esac
4500    cat <<EOM
4501
4502 Perl can be built to understand large files (files larger than 2 gigabytes)
4503 on some systems.  To do so, Configure can be run with -Duselargefiles.
4504
4505 If this doesn't make any sense to you, just accept the default '$dflt'.
4506 EOM
4507    rp='Try to understand large files, if available?'
4508    . ./myread
4509    case "$ans" in
4510    y|Y)         val="$define" ;;
4511    *)           val="$undef"  ;;
4512    esac
4513    ;;
4514 esac
4515 set uselargefiles
4516 eval $setvar
4517 case "$uselargefiles" in
4518 "$define")
4519 : Look for a hint-file generated 'call-back-unit'.  If the
4520 : user has specified that a large files perl is to be built,
4521 : we may need to set or change some other defaults.
4522         if $test -f uselargefiles.cbu; then
4523                 echo "Your platform has some specific hints for large file builds, using them..."
4524                 . ./uselargefiles.cbu
4525                 echo " "
4526                 echo "Rechecking to see how big your file offsets are..." >&4
4527                 $cat >try.c <<EOCP
4528 #include <sys/types.h>
4529 #include <stdio.h>
4530 int main()
4531 {
4532     printf("%d\n", (int)sizeof($lseektype));
4533     return(0); 
4534 }
4535 EOCP
4536                 set try
4537                 if eval $compile_ok; then
4538                         lseeksize=`./try`
4539                         $echo "Your file offsets are now $lseeksize bytes long."
4540                 else
4541                         dflt="$lseeksize"
4542                         echo " "
4543                         echo "(I can't seem to compile the test program.  Guessing...)"
4544                         rp="What is the size of your file offsets (in bytes)?"
4545                         . ./myread
4546                         lseeksize="$ans"
4547                 fi
4548                 case "$fpostype" in
4549                 *_t) zzz="$fpostype"    ;;
4550                 *)   zzz="fpos_t"       ;;
4551                 esac
4552                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4553                 $cat > try.c <<EOCP
4554 #include <sys/types.h>
4555 #include <stdio.h>
4556 int main() {
4557     printf("%d\n", (int)sizeof($fpostype));
4558     exit(0);
4559 }
4560 EOCP
4561                 set try
4562                 if eval $compile_ok; then
4563                         yyy=`./try`
4564                         dflt="$lseeksize"
4565                         case "$yyy" in
4566                         '')     echo " "
4567                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4568                                 ;;
4569                         *)      fpossize=$yyy
4570                                 echo " $fpossize bytes." >&4
4571                                 ;;
4572                         esac
4573                 else
4574                         dflt="$fpossize"
4575                         echo " "
4576                         echo "(I can't compile the test program.  Guessing...)" >&4
4577                         rp="What is the size of your file positions (in bytes)?"
4578                         . ./myread
4579                         fpossize="$ans"
4580                 fi
4581                 $rm -f try.c try
4582         fi
4583         ;;
4584 esac
4585
4586
4587 case "$usemorebits" in
4588 "$define"|true|[yY]*)
4589         use64bitint="$define"
4590         uselongdouble="$define"
4591         usemorebits="$define"
4592         ;;
4593 *)      usemorebits="$undef"
4594         ;;
4595 esac
4596
4597
4598 case "$uselonglong" in
4599 "$define"|true|[yY]*)
4600         cat <<EOM >&4
4601
4602 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4603 EOM
4604         use64bitint="$define"
4605         ;;
4606 esac                          
4607 case "$use64bits" in
4608 "$define"|true|[yY]*)
4609         cat <<EOM >&4
4610
4611 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4612 EOM
4613         use64bitint="$define"
4614         ;;
4615 esac                          
4616 case "$use64bitints" in
4617 "$define"|true|[yY]*)
4618         cat <<EOM >&4
4619
4620 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4621 EOM
4622         use64bitint="$define"
4623         ;;
4624 esac                          
4625 case "$use64bitsint" in
4626 "$define"|true|[yY]*)
4627         cat <<EOM >&4
4628
4629 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4630 EOM
4631         use64bitint="$define"
4632         ;;
4633 esac                          
4634 case "$uselonglongs" in
4635 "$define"|true|[yY]*)
4636         cat <<EOM >&4
4637
4638 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4639 EOM
4640         use64bitint="$define"
4641         ;;
4642 esac                          
4643 case "$use64bitsall" in
4644 "$define"|true|[yY]*)
4645         cat <<EOM >&4
4646
4647 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4648 EOM
4649         use64bitall="$define"
4650         ;;
4651 esac                          
4652
4653 case "$ccflags" in
4654 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4655 esac
4656 case "$use64bitall" in
4657 "$define"|true|[yY]*) use64bitint="$define" ;;
4658 esac
4659
4660 case "$longsize" in
4661 8) cat <<EOM
4662
4663 You have natively 64-bit long integers.
4664 EOM
4665    val="$define"
4666    ;;
4667 *) case "$use64bitint" in
4668    "$define"|true|[yY]*) dflt='y';;
4669    *) dflt='n';;
4670    esac
4671    cat <<EOM
4672
4673 Perl can be built to take advantage of 64-bit integer types
4674 on some systems.  To do so, Configure can be run with -Duse64bitint.
4675 Choosing this option will most probably introduce binary incompatibilities.
4676
4677 If this doesn't make any sense to you, just accept the default '$dflt'.
4678 EOM
4679    rp='Try to use 64-bit integers, if available?'
4680    . ./myread
4681    case "$ans" in
4682    [yY]*) val="$define" ;;
4683    *)     val="$undef"  ;;
4684    esac
4685    ;;
4686 esac
4687 set use64bitint
4688 eval $setvar
4689
4690 case "$use64bitall" in
4691 "$define"|true|[yY]*) dflt='y' ;;
4692 *) case "$longsize" in
4693    8) dflt='y' ;;
4694    *) dflt='n' ;;
4695    esac
4696    ;;
4697 esac    
4698 cat <<EOM
4699
4700 You may also choose to try maximal 64-bitness.  It means using as much
4701 64-bitness as possible on the platform.  This in turn means even more
4702 binary incompatibilities.  On the other hand, your platform may not
4703 have any more 64-bitness available than what you already have chosen.
4704
4705 If this doesn't make any sense to you, just accept the default '$dflt'.
4706 EOM
4707 rp='Try to use maximal 64-bit support, if available?'
4708 . ./myread
4709 case "$ans" in
4710 [yY]*) val="$define" ;;
4711 *)     val="$undef"  ;;
4712 esac
4713 set use64bitall
4714 eval $setvar
4715 case "$use64bitall" in
4716 "$define")
4717         case "$use64bitint" in
4718         "$undef")
4719                 cat <<EOM
4720
4721 Since you have chosen a maximally 64-bit build, I'm also turning on
4722 the use of 64-bit integers.
4723 EOM
4724                 use64bitint="$define" ;;
4725         esac
4726         ;;
4727 esac
4728
4729 case "$use64bitint" in
4730 "$define"|true|[yY]*)
4731 : Look for a hint-file generated 'call-back-unit'.  If the
4732 : user has specified that a 64-bit perl is to be built,
4733 : we may need to set or change some other defaults.
4734         if $test -f use64bitint.cbu; then
4735                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4736                 . ./use64bitint.cbu
4737         fi
4738         case "$longsize" in
4739         4) case "$archname64" in
4740            '') archname64=64int ;;
4741            esac
4742            ;;
4743         esac
4744         ;;
4745 esac
4746
4747 case "$use64bitall" in
4748 "$define"|true|[yY]*)
4749 : Look for a hint-file generated 'call-back-unit'.  If the
4750 : user has specified that a maximally 64-bit perl is to be built,
4751 : we may need to set or change some other defaults.
4752         if $test -f use64bitall.cbu; then
4753                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4754                 . ./use64bitall.cbu
4755         fi
4756         case "$longsize" in
4757         4) case "$archname64" in
4758            ''|64int) archname64=64all ;;
4759            esac
4760            ;;
4761         esac
4762         ;;
4763 esac
4764
4765 echo " "
4766 echo "Checking for GNU C Library..." >&4
4767 cat >gnulibc.c <<EOM
4768 #include <stdio.h>
4769 int main()
4770 {
4771 #ifdef __GLIBC__
4772     exit(0);
4773 #else
4774     exit(1);
4775 #endif
4776 }
4777 EOM
4778 set gnulibc
4779 if eval $compile_ok && ./gnulibc; then
4780         val="$define"
4781         echo "You are using the GNU C Library"
4782 else
4783         val="$undef"
4784         echo "You are not using the GNU C Library"
4785 fi
4786 $rm -f gnulibc*
4787 set d_gnulibc
4788 eval $setvar
4789
4790 : see if nm is to be used to determine whether a symbol is defined or not
4791 case "$usenm" in
4792 '')
4793         dflt=''
4794         case "$d_gnulibc" in
4795         "$define")
4796                 echo " "
4797                 echo "nm probably won't work on the GNU C Library." >&4
4798                 dflt=n
4799                 ;;
4800         esac
4801         case "$dflt" in
4802         '') 
4803                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4804                         echo " "
4805                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4806                         echo "'nm' won't be sufficient on this sytem." >&4
4807                         dflt=n
4808                 fi
4809                 ;;
4810         esac
4811         case "$dflt" in
4812         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4813                 if $test $dflt -gt 20; then
4814                         dflt=y
4815                 else
4816                         dflt=n
4817                 fi
4818                 ;;
4819         esac
4820         ;;
4821 *)
4822         case "$usenm" in
4823         true|$define) dflt=y;;
4824         *) dflt=n;;
4825         esac
4826         ;;
4827 esac
4828 $cat <<EOM
4829
4830 I can use $nm to extract the symbols from your C libraries. This
4831 is a time consuming task which may generate huge output on the disk (up
4832 to 3 megabytes) but that should make the symbols extraction faster. The
4833 alternative is to skip the 'nm' extraction part and to compile a small
4834 test program instead to determine whether each symbol is present. If
4835 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4836 this may be the best solution.
4837
4838 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4839
4840 EOM
4841 rp="Shall I use $nm to extract C symbols from the libraries?"
4842 . ./myread
4843 case "$ans" in
4844 [Nn]*) usenm=false;;
4845 *) usenm=true;;
4846 esac
4847
4848 runnm=$usenm
4849 case "$reuseval" in
4850 true) runnm=false;;
4851 esac
4852
4853 : nm options which may be necessary
4854 case "$nm_opt" in
4855 '') if $test -f /mach_boot; then
4856                 nm_opt=''       # Mach
4857         elif $test -d /usr/ccs/lib; then
4858                 nm_opt='-p'     # Solaris (and SunOS?)
4859         elif $test -f /dgux; then
4860                 nm_opt='-p'     # DG-UX
4861         elif $test -f /lib64/rld; then
4862                 nm_opt='-p'     # 64-bit Irix
4863         else
4864                 nm_opt=''
4865         fi;;
4866 esac
4867
4868 : nm options which may be necessary for shared libraries but illegal
4869 : for archive libraries.  Thank you, Linux.
4870 case "$nm_so_opt" in
4871 '')     case "$myuname" in
4872         *linux*)
4873                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4874                         nm_so_opt='--dynamic'
4875                 fi
4876                 ;;
4877         esac
4878         ;;
4879 esac
4880
4881 case "$runnm" in
4882 true)
4883 : get list of predefined functions in a handy place
4884 echo " "
4885 case "$libc" in
4886 '') libc=unknown
4887         case "$libs" in
4888         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4889         esac
4890         ;;
4891 esac
4892 libnames='';
4893 case "$libs" in
4894 '') ;;
4895 *)  for thislib in $libs; do
4896         case "$thislib" in
4897         -lc|-lc_s)
4898                 : Handle C library specially below.
4899                 ;;
4900         -l*)
4901                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4902                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4903                         :
4904                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4905                         :
4906                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4907                         :
4908                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4909                         :
4910                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4911                         :
4912                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4913                         :
4914                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4915                         :
4916                 else
4917                         try=''
4918                 fi
4919                 libnames="$libnames $try"
4920                 ;;
4921         *) libnames="$libnames $thislib" ;;
4922         esac
4923         done
4924         ;;
4925 esac
4926 xxx=normal
4927 case "$libc" in
4928 unknown)
4929         set /lib/libc.$so
4930         for xxx in $libpth; do
4931                 $test -r $1 || set $xxx/libc.$so
4932                 : The messy sed command sorts on library version numbers.
4933                 $test -r $1 || \
4934                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4935                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4936                                 h
4937                                 s/[0-9][0-9]*/0000&/g
4938                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4939                                 G
4940                                 s/\n/ /' | \
4941                          sort | $sed -e 's/^.* //'`
4942                 eval set \$$#
4943         done
4944         $test -r $1 || set /usr/ccs/lib/libc.$so
4945         $test -r $1 || set /lib/libsys_s$_a
4946         ;;
4947 *)
4948         set blurfl
4949         ;;
4950 esac
4951 if $test -r "$1"; then
4952         echo "Your (shared) C library seems to be in $1."
4953         libc="$1"
4954 elif $test -r /lib/libc && $test -r /lib/clib; then
4955         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4956         xxx=apollo
4957         libc='/lib/clib /lib/libc'
4958         if $test -r /lib/syslib; then
4959                 echo "(Your math library is in /lib/syslib.)"
4960                 libc="$libc /lib/syslib"
4961         fi
4962 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4963         echo "Your C library seems to be in $libc, as you said before."
4964 elif $test -r $incpath/usr/lib/libc$_a; then
4965         libc=$incpath/usr/lib/libc$_a;
4966         echo "Your C library seems to be in $libc.  That's fine."
4967 elif $test -r /lib/libc$_a; then
4968         libc=/lib/libc$_a;
4969         echo "Your C library seems to be in $libc.  You're normal."
4970 else
4971         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4972                 :
4973         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4974                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4975         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4976                 :
4977         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4978                 :
4979         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4980                 :
4981         else
4982                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4983         fi
4984         if $test -r "$tans"; then
4985                 echo "Your C library seems to be in $tans, of all places."
4986                 libc=$tans
4987         else
4988                 libc='blurfl'
4989         fi
4990 fi
4991 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4992         dflt="$libc"
4993         cat <<EOM
4994
4995 If the guess above is wrong (which it might be if you're using a strange
4996 compiler, or your machine supports multiple models), you can override it here.
4997
4998 EOM
4999 else
5000         dflt=''
5001         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5002         cat >&4 <<EOM
5003 I can't seem to find your C library.  I've looked in the following places:
5004
5005 EOM
5006         $sed 's/^/      /' libpath
5007         cat <<EOM
5008
5009 None of these seems to contain your C library. I need to get its name...
5010
5011 EOM
5012 fi
5013 fn=f
5014 rp='Where is your C library?'
5015 . ./getfile
5016 libc="$ans"
5017
5018 echo " "
5019 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5020 set X `cat libnames`
5021 shift
5022 xxx=files
5023 case $# in 1) xxx=file; esac
5024 echo "Extracting names from the following $xxx for later perusal:" >&4
5025 echo " "
5026 $sed 's/^/      /' libnames >&4
5027 echo " "
5028 $echo $n "This may take a while...$c" >&4
5029
5030 for file in $*; do
5031         case $file in
5032         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5033         *) $nm $nm_opt $file 2>/dev/null;;
5034         esac
5035 done >libc.tmp
5036
5037 $echo $n ".$c"
5038 $grep fprintf libc.tmp > libc.ptf
5039 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5040 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5041 xxx='[ADTSIW]'
5042 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5043         eval $xscan;\
5044         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5045                 eval $xrun
5046 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5047         eval $xscan;\
5048         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5049                 eval $xrun
5050 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5051         eval $xscan;\
5052         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5053                 eval $xrun
5054 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5055         eval $xscan;\
5056         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5057                 eval $xrun
5058 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5059         eval $xscan;\
5060         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5061                 eval $xrun
5062 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5063         eval $xscan;\
5064         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5065                 eval $xrun
5066 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5067                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5068         eval $xscan;\
5069         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5070                 eval $xrun
5071 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5072         eval $xscan;\
5073         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5074                 eval $xrun
5075 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5076         eval $xscan;\
5077         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5078                 eval $xrun
5079 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5080         eval $xscan;\
5081         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5082                 eval $xrun
5083 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5084         eval $xscan;\
5085         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5086                 eval $xrun
5087 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5088         eval $xscan;\
5089         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5090                 eval $xrun
5091 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5092         eval $xscan;\
5093         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5094                 eval $xrun
5095 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5096         eval $xscan;\
5097         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5098                 eval $xrun
5099 else
5100         $nm -p $* 2>/dev/null >libc.tmp
5101         $grep fprintf libc.tmp > libc.ptf
5102         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5103                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5104         then
5105                 nm_opt='-p'
5106                 eval $xrun
5107         else
5108                 echo " "
5109                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5110                 com=''
5111                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5112                         for thisname in $libnames $libc; do
5113                                 $ar t $thisname >>libc.tmp
5114                         done
5115                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5116                         echo "Ok." >&4
5117                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5118                         # Repeat libc to extract forwarders to DLL entries too
5119                         for thisname in $libnames $libc; do
5120                                 $ar tv $thisname >>libc.tmp
5121                                 # Revision 50 of EMX has bug in $ar.
5122                                 # it will not extract forwarders to DLL entries
5123                                 # Use emximp which will extract exactly them.
5124                                 emximp -o tmp.imp $thisname \
5125                                     2>/dev/null && \
5126                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5127                                     < tmp.imp >>libc.tmp
5128                                 $rm tmp.imp
5129                         done
5130                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5131                         echo "Ok." >&4
5132                 else
5133                         echo "$ar didn't seem to work right." >&4
5134                         echo "Maybe this is a Cray...trying bld instead..." >&4
5135                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5136                         then
5137                                 for thisname in $libnames; do
5138                                         bld t $libnames | \
5139                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5140                                         $ar t $thisname >>libc.tmp
5141                                 done
5142                                 echo "Ok." >&4
5143                         else
5144                                 echo "That didn't work either.  Giving up." >&4
5145                                 exit 1
5146                         fi
5147                 fi
5148         fi
5149 fi
5150 nm_extract="$com"
5151 if $test -f /lib/syscalls.exp; then
5152         echo " "
5153         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5154         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5155 fi
5156 ;;
5157 esac
5158 $rm -f libnames libpath
5159
5160 : is a C symbol defined?
5161 csym='tlook=$1;
5162 case "$3" in
5163 -v) tf=libc.tmp; tc=""; tdc="";;
5164 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5165 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5166 esac;
5167 tx=yes;
5168 case "$reuseval-$4" in
5169 true-) ;;
5170 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5171 esac;
5172 case "$tx" in
5173 yes)
5174         case "$runnm" in
5175         true)
5176                 if $contains $tlook $tf >/dev/null 2>&1;
5177                 then tval=true;
5178                 else tval=false;
5179                 fi;;
5180         *)
5181                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5182                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5183                 then tval=true;
5184                 else tval=false;
5185                 fi;
5186                 $rm -f t t.c;;
5187         esac;;
5188 *)
5189         case "$tval" in
5190         $define) tval=true;;
5191         *) tval=false;;
5192         esac;;
5193 esac;
5194 eval "$2=$tval"'
5195
5196 : define an is-in-libc? function
5197 inlibc='echo " "; td=$define; tu=$undef;
5198 sym=$1; var=$2; eval "was=\$$2";
5199 tx=yes;
5200 case "$reuseval$was" in
5201 true) ;;
5202 true*) tx=no;;
5203 esac;
5204 case "$tx" in
5205 yes)
5206         set $sym tres -f;
5207         eval $csym;
5208         case "$tres" in
5209         true)
5210                 echo "$sym() found." >&4;
5211                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5212         *)
5213                 echo "$sym() NOT found." >&4;
5214                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5215         esac;;
5216 *)
5217         case "$was" in
5218         $define) echo "$sym() found." >&4;;
5219         *) echo "$sym() NOT found." >&4;;
5220         esac;;
5221 esac'
5222
5223 : see if sqrtl exists
5224 set sqrtl d_sqrtl
5225 eval $inlibc
5226
5227 case "$ccflags" in
5228 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5229 esac
5230
5231 case "$uselongdouble" in
5232 $define|true|[yY]*)     dflt='y';;
5233 *) dflt='n';;
5234 esac
5235 cat <<EOM
5236
5237 Perl can be built to take advantage of long doubles which
5238 (if available) may give more accuracy and range for floating point numbers.
5239
5240 If this doesn't make any sense to you, just accept the default '$dflt'.
5241 EOM
5242 rp='Try to use long doubles if available?'
5243 . ./myread
5244 case "$ans" in
5245 y|Y)    val="$define"   ;;
5246 *)      val="$undef"    ;;
5247 esac
5248 set uselongdouble
5249 eval $setvar
5250
5251 case "$uselongdouble" in
5252 true|[yY]*) uselongdouble="$define" ;;
5253 esac
5254
5255 case "$uselongdouble" in
5256 $define)
5257 : Look for a hint-file generated 'call-back-unit'.  If the
5258 : user has specified that long doubles should be used,
5259 : we may need to set or change some other defaults.
5260         if $test -f uselongdouble.cbu; then
5261                 echo "Your platform has some specific hints for long doubles, using them..."
5262                 . ./uselongdouble.cbu
5263         else
5264                 $cat <<EOM
5265 (Your platform doesn't have any specific hints for long doubles.)
5266 EOM
5267         fi
5268         ;;
5269 esac
5270
5271 case "$uselongdouble:$d_sqrtl" in
5272 $define:$undef)
5273                 $cat <<EOM >&4
5274
5275 *** You requested the use of long doubles but you do not seem to have
5276 *** the mathematic functions for long doubles.  I'm disabling the use
5277 *** of long doubles.
5278
5279 EOM
5280         uselongdouble=$undef
5281         ;;
5282 esac
5283
5284 : check for length of double
5285 echo " "
5286 case "$doublesize" in
5287 '')
5288         echo "Checking to see how big your double precision numbers are..." >&4
5289         $cat >try.c <<'EOCP'
5290 #include <stdio.h>
5291 int main()
5292 {
5293     printf("%d\n", (int)sizeof(double));
5294     exit(0);
5295 }
5296 EOCP
5297         set try
5298         if eval $compile_ok; then
5299                 doublesize=`./try`
5300                 echo "Your double is $doublesize bytes long."
5301         else
5302                 dflt='8'
5303                 echo "(I can't seem to compile the test program.  Guessing...)"
5304                 rp="What is the size of a double precision number (in bytes)?"
5305                 . ./myread
5306                 doublesize="$ans"
5307         fi
5308         ;;
5309 esac
5310 $rm -f try.c try
5311
5312 : check for long doubles
5313 echo " "
5314 echo "Checking to see if you have long double..." >&4
5315 echo 'int main() { long double x = 7.0; }' > try.c
5316 set try
5317 if eval $compile; then
5318         val="$define"
5319         echo "You have long double."
5320 else
5321         val="$undef"
5322         echo "You do not have long double."
5323 fi
5324 $rm try.*
5325 set d_longdbl
5326 eval $setvar
5327
5328 : check for length of long double
5329 case "${d_longdbl}${longdblsize}" in
5330 $define)
5331         echo " "
5332         echo "Checking to see how big your long doubles are..." >&4
5333         $cat >try.c <<'EOCP'
5334 #include <stdio.h>
5335 int main()
5336 {
5337         printf("%d\n", sizeof(long double));
5338 }
5339 EOCP
5340         set try
5341         set try
5342         if eval $compile; then
5343                 longdblsize=`./try$exe_ext`
5344                 echo "Your long doubles are $longdblsize bytes long."
5345         else
5346                 dflt='8'
5347                 echo " "
5348                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5349                 rp="What is the size of a long double (in bytes)?"
5350                 . ./myread
5351                 longdblsize="$ans"
5352         fi
5353         if $test "X$doublesize" = "X$longdblsize"; then
5354                 echo "(That isn't any different from an ordinary double.)"
5355         fi      
5356         ;;
5357 esac
5358 $rm -f try.* try
5359
5360 : determine the architecture name
5361 echo " "
5362 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5363         tarch=`arch`"-$osname"
5364 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5365         if uname -m > tmparch 2>&1 ; then
5366                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5367                         -e 's/$/'"-$osname/" tmparch`
5368         else
5369                 tarch="$osname"
5370         fi
5371         $rm -f tmparch
5372 else
5373         tarch="$osname"
5374 fi
5375 case "$myarchname" in
5376 ''|"$tarch") ;;
5377 *)
5378         echo "(Your architecture name used to be $myarchname.)"
5379         archname=''
5380         ;;
5381 esac
5382 myarchname="$tarch"
5383 case "$archname" in
5384 '') dflt="$tarch";;
5385 *) dflt="$archname";;
5386 esac
5387 rp='What is your architecture name'
5388 . ./myread
5389 archname="$ans"
5390 case "$usethreads" in
5391 $define)
5392         echo "Threads selected." >&4
5393         case "$archname" in
5394         *-thread*) echo "...and architecture name already has -thread." >&4
5395                 ;;
5396         *)      archname="$archname-thread"
5397                 echo "...setting architecture name to $archname." >&4
5398                 ;;
5399         esac
5400         ;;
5401 esac
5402 case "$usemultiplicity" in
5403 $define)
5404         echo "Multiplicity selected." >&4
5405         case "$archname" in
5406         *-multi*) echo "...and architecture name already has -multi." >&4
5407                 ;;
5408         *)      archname="$archname-multi"
5409                 echo "...setting architecture name to $archname." >&4
5410                 ;;
5411         esac
5412         ;;
5413 esac
5414 case "$use64bitint$use64bitall" in
5415 *"$define"*)
5416         case "$archname64" in
5417         '')
5418                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5419                 ;;
5420         *)
5421                 case "$use64bitint" in
5422                 "$define") echo "64 bit integers selected." >&4 ;;
5423                 esac
5424                 case "$use64bitall" in
5425                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5426                 esac
5427                 case "$archname" in
5428                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5429                         ;;
5430                 *)      archname="$archname-$archname64"
5431                         echo "...setting architecture name to $archname." >&4
5432                         ;;
5433                 esac
5434                 ;;
5435         esac
5436 esac
5437 case "$uselongdouble" in
5438 $define)
5439         echo "Long doubles selected." >&4
5440         case "$longdblsize" in
5441         $doublesize)
5442                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5443                 ;;
5444         *)
5445                 case "$archname" in
5446                 *-ld*) echo "...and architecture name already has -ld." >&4
5447                         ;;
5448                 *)      archname="$archname-ld"
5449                         echo "...setting architecture name to $archname." >&4
5450                         ;;
5451                 esac
5452                 ;;
5453         esac
5454         ;;
5455 esac
5456
5457 : determine root of directory hierarchy where package will be installed.
5458 case "$prefix" in
5459 '')
5460         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5461         ;;
5462 *)
5463         dflt="$prefix"
5464         ;;
5465 esac
5466 $cat <<EOM
5467
5468 By default, $package will be installed in $dflt/bin, manual pages
5469 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5470 installation directories. Typically this is something like /usr/local.
5471 If you wish to have binaries under /usr/bin but other parts of the
5472 installation under /usr/local, that's ok: you will be prompted
5473 separately for each of the installation directories, the prefix being
5474 only used to set the defaults.
5475
5476 EOM
5477 fn=d~
5478 rp='Installation prefix to use?'
5479 . ./getfile
5480 oldprefix=''
5481 case "$prefix" in
5482 '') ;;
5483 *)
5484         case "$ans" in
5485         "$prefix") ;;
5486         *) oldprefix="$prefix";;
5487         esac
5488         ;;
5489 esac
5490 prefix="$ans"
5491 prefixexp="$ansexp"
5492
5493 : is AFS running?
5494 echo " "
5495 case "$afs" in
5496 $define|true)   afs=true ;;
5497 $undef|false)   afs=false ;;
5498 *)      if test -d /afs; then
5499                 afs=true
5500         else
5501                 afs=false
5502         fi
5503         ;;
5504 esac
5505 if $afs; then
5506         echo "AFS may be running... I'll be extra cautious then..." >&4
5507 else
5508         echo "AFS does not seem to be running..." >&4
5509 fi
5510
5511 : determine installation prefix for where package is to be installed.
5512 if $afs; then 
5513 $cat <<EOM
5514
5515 Since you are running AFS, I need to distinguish the directory in which
5516 files will reside from the directory in which they are installed (and from
5517 which they are presumably copied to the former directory by occult means).
5518
5519 EOM
5520         case "$installprefix" in
5521         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5522         *) dflt="$installprefix";;
5523         esac
5524 else
5525 $cat <<EOM
5526
5527 In some special cases, particularly when building $package for distribution,
5528 it is convenient to distinguish between the directory in which files should 
5529 be installed from the directory ($prefix) in which they 
5530 will eventually reside.  For most users, these two directories are the same.
5531
5532 EOM
5533         case "$installprefix" in
5534         '') dflt=$prefix ;;
5535         *) dflt=$installprefix;;
5536         esac
5537 fi
5538 fn=d~
5539 rp='What installation prefix should I use for installing files?'
5540 . ./getfile
5541 installprefix="$ans"
5542 installprefixexp="$ansexp"
5543
5544 : set the prefixit variable, to compute a suitable default value
5545 prefixit='case "$3" in
5546 ""|none)
5547         case "$oldprefix" in
5548         "") eval "$1=\"\$$2\"";;
5549         *)
5550                 case "$3" in
5551                 "") eval "$1=";;
5552                 none)
5553                         eval "tp=\"\$$2\"";
5554                         case "$tp" in
5555                         ""|" ") eval "$1=\"\$$2\"";;
5556                         *) eval "$1=";;
5557                         esac;;
5558                 esac;;
5559         esac;;
5560 *)
5561         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5562         case "$tp" in
5563         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5564         /*-$oldprefix/*|\~*-$oldprefix/*)
5565                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5566         *) eval "$1=\"\$$2\"";;
5567         esac;;
5568 esac'
5569
5570
5571 : get the patchlevel
5572 echo " "
5573 echo "Getting the current patchlevel..." >&4
5574 if $test -r $rsrc/patchlevel.h;then
5575         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5576         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5577         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5578         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5579         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5580         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5581 else
5582         revision=0
5583         patchlevel=0
5584         subversion=0
5585         api_revision=0
5586         api_version=0
5587         api_subversion=0
5588 fi
5589 $echo "(You have $package version $patchlevel subversion $subversion.)"
5590 case "$osname" in
5591 dos|vms)
5592         : XXX Should be a Configure test for double-dots in filenames.
5593         version=`echo $revision $patchlevel $subversion | \
5594                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5595         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5596                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5597         ;;
5598 *)
5599         version=`echo $revision $patchlevel $subversion | \
5600                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5601         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5602                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5603         ;;
5604 esac
5605 : Special case the 5.005_xx maintenance series, which used 5.005
5606 : without any subversion label as a subdirectory in $sitelib
5607 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5608         api_versionstring='5.005'
5609 fi
5610
5611 : determine installation style
5612 : For now, try to deduce it from prefix unless it is already set.
5613 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5614 case "$installstyle" in
5615 '')     case "$prefix" in
5616                 *perl*) dflt='lib';;
5617                 *) dflt='lib/perl5' ;;
5618         esac
5619         ;;
5620 *)      dflt="$installstyle" ;;
5621 esac
5622 : Probably not worth prompting for this since we prompt for all
5623 : the directories individually, and the prompt would be too long and
5624 : confusing anyway.
5625 installstyle=$dflt
5626
5627 : determine where private library files go
5628 : Usual default is /usr/local/lib/perl5/$version.
5629 : Also allow things like /opt/perl/lib/$version, since 
5630 : /opt/perl/lib/perl5... would be redundant.
5631 : The default "style" setting is made in installstyle.U
5632 case "$installstyle" in
5633 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5634 *)       set dflt privlib lib/$version ;;
5635 esac
5636 eval $prefixit
5637 $cat <<EOM
5638
5639 There are some auxiliary files for $package that need to be put into a
5640 private library directory that is accessible by everyone.
5641
5642 EOM
5643 fn=d~+
5644 rp='Pathname where the private library files will reside?'
5645 . ./getfile
5646 privlib="$ans"
5647 privlibexp="$ansexp"
5648 : Change installation prefix, if necessary.
5649 if $test X"$prefix" != X"$installprefix"; then
5650         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5651 else
5652         installprivlib="$privlibexp"
5653 fi
5654
5655 : set the prefixup variable, to restore leading tilda escape
5656 prefixup='case "$prefixexp" in
5657 "$prefix") ;;
5658 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5659 esac'
5660
5661 : determine where public architecture dependent libraries go
5662 set archlib archlib
5663 eval $prefixit
5664 : privlib default is /usr/local/lib/$package/$version
5665 : archlib default is /usr/local/lib/$package/$version/$archname
5666 : privlib may have an optional trailing /share.
5667 tdflt=`echo $privlib | $sed 's,/share$,,'`
5668 tdflt=$tdflt/$archname
5669 case "$archlib" in
5670 '')     dflt=$tdflt
5671         ;;
5672 *)      dflt="$archlib"
5673     ;;
5674 esac
5675 $cat <<EOM
5676
5677 $spackage contains architecture-dependent library files.  If you are
5678 sharing libraries in a heterogeneous environment, you might store
5679 these files in a separate location.  Otherwise, you can just include
5680 them with the rest of the public library files.
5681
5682 EOM
5683 fn=d+~
5684 rp='Where do you want to put the public architecture-dependent libraries?'
5685 . ./getfile
5686 archlib="$ans"
5687 archlibexp="$ansexp"
5688 if $test X"$archlib" = X"$privlib"; then
5689         d_archlib="$undef"
5690 else
5691         d_archlib="$define"
5692 fi
5693 : Change installation prefix, if necessary.
5694 if $test X"$prefix" != X"$installprefix"; then
5695         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5696 else
5697         installarchlib="$archlibexp"
5698 fi
5699
5700
5701 : Binary compatibility with 5.005 is not possible for builds
5702 : with advanced features
5703 case "$usethreads$usemultiplicity" in
5704 *define*)
5705         bincompat5005="$undef"
5706         d_bincompat5005="$undef"
5707         ;;
5708 *)      $cat <<EOM
5709
5710 This version of Perl can be compiled for binary compatibility with 5.005.
5711 If you decide to do so, you will be able to continue using most of the
5712 extensions that were compiled for Perl 5.005.
5713
5714 EOM
5715         case "$bincompat5005$d_bincompat5005" in
5716         *"$undef"*) dflt=n ;;
5717         *) dflt=y ;;
5718         esac
5719         rp='Binary compatibility with Perl 5.005?'
5720         . ./myread
5721         case "$ans" in
5722         y*) val="$define" ;;
5723         *)  val="$undef" ;;
5724         esac
5725         set d_bincompat5005
5726         eval $setvar
5727         case "$d_bincompat5005" in
5728         "$define")
5729                 bincompat5005="$define"
5730                 ;;
5731         *)      bincompat5005="$undef"
5732                 d_bincompat5005="$undef"
5733                 ;;
5734         esac
5735         ;;
5736 esac
5737
5738
5739 : see if setuid scripts can be secure
5740 $cat <<EOM
5741
5742 Some kernels have a bug that prevents setuid #! scripts from being
5743 secure.  Some sites have disabled setuid #! scripts because of this.
5744
5745 First let's decide if your kernel supports secure setuid #! scripts.
5746 (If setuid #! scripts would be secure but have been disabled anyway,
5747 don't say that they are secure if asked.)
5748
5749 EOM
5750
5751 val="$undef"
5752 if $test -d /dev/fd; then
5753         echo "#!$ls" >reflect
5754         chmod +x,u+s reflect
5755         ./reflect >flect 2>&1
5756         if $contains "/dev/fd" flect >/dev/null; then
5757                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5758                 val="$define"
5759         else
5760                 $cat <<EOM
5761 If you are not sure if they are secure, I can check but I'll need a
5762 username and password different from the one you are using right now.
5763 If you don't have such a username or don't want me to test, simply
5764 enter 'none'.
5765
5766 EOM
5767                 rp='Other username to test security of setuid scripts with?'
5768                 dflt='none'
5769                 . ./myread
5770                 case "$ans" in
5771                 n|none)
5772                         case "$d_suidsafe" in
5773                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5774                                 dflt=n;;
5775                         "$undef")
5776                                 echo "Well, the $hint value is *not* secure." >&4
5777                                 dflt=n;;
5778                         *)      echo "Well, the $hint value *is* secure." >&4
5779                                 dflt=y;;
5780                         esac
5781                         ;;
5782                 *)
5783                         $rm -f reflect flect
5784                         echo "#!$ls" >reflect
5785                         chmod +x,u+s reflect
5786                         echo >flect
5787                         chmod a+w flect
5788                         echo '"su" will (probably) prompt you for '"$ans's password."
5789                         su $ans -c './reflect >flect'
5790                         if $contains "/dev/fd" flect >/dev/null; then
5791                                 echo "Okay, it looks like setuid scripts are secure." >&4
5792                                 dflt=y
5793                         else
5794                                 echo "I don't think setuid scripts are secure." >&4
5795                                 dflt=n
5796                         fi
5797                         ;;
5798                 esac
5799                 rp='Does your kernel have *secure* setuid scripts?'
5800                 . ./myread
5801                 case "$ans" in
5802                 [yY]*)  val="$define";;
5803                 *)      val="$undef";;
5804                 esac
5805         fi
5806 else
5807         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5808         echo "(That's for file descriptors, not floppy disks.)"
5809         val="$undef"
5810 fi
5811 set d_suidsafe
5812 eval $setvar
5813
5814 $rm -f reflect flect
5815
5816 : now see if they want to do setuid emulation
5817 echo " "
5818 val="$undef"
5819 case "$d_suidsafe" in
5820 "$define")
5821         val="$undef"
5822         echo "No need to emulate SUID scripts since they are secure here." >& 4
5823         ;;
5824 *)
5825         $cat <<EOM
5826 Some systems have disabled setuid scripts, especially systems where
5827 setuid scripts cannot be secure.  On systems where setuid scripts have
5828 been disabled, the setuid/setgid bits on scripts are currently
5829 useless.  It is possible for $package to detect those bits and emulate
5830 setuid/setgid in a secure fashion.  This emulation will only work if
5831 setuid scripts have been disabled in your kernel.
5832
5833 EOM
5834         case "$d_dosuid" in
5835         "$define") dflt=y ;;
5836         *) dflt=n ;;
5837         esac
5838         rp="Do you want to do setuid/setgid emulation?"
5839         . ./myread
5840         case "$ans" in
5841         [yY]*)  val="$define";;
5842         *)      val="$undef";;
5843         esac
5844         ;;
5845 esac
5846 set d_dosuid
5847 eval $setvar
5848
5849 : determine filename position in cpp output
5850 echo " "
5851 echo "Computing filename position in cpp output for #include directives..." >&4
5852 echo '#include <stdio.h>' > foo.c
5853 $cat >fieldn <<EOF
5854 $startsh
5855 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5856 $grep '^[       ]*#.*stdio\.h' | \
5857 while read cline; do
5858         pos=1
5859         set \$cline
5860         while $test \$# -gt 0; do
5861                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5862                         echo "\$pos"
5863                         exit 0
5864                 fi
5865                 shift
5866                 pos=\`expr \$pos + 1\`
5867         done
5868 done
5869 EOF
5870 chmod +x fieldn
5871 fieldn=`./fieldn`
5872 $rm -f foo.c fieldn
5873 case $fieldn in
5874 '') pos='???';;
5875 1) pos=first;;
5876 2) pos=second;;
5877 3) pos=third;;
5878 *) pos="${fieldn}th";;
5879 esac
5880 echo "Your cpp writes the filename in the $pos field of the line."
5881
5882 : locate header file
5883 $cat >findhdr <<EOF
5884 $startsh
5885 wanted=\$1
5886 name=''
5887 for usrincdir in $usrinc
5888 do
5889         if test -f \$usrincdir/\$wanted; then
5890                 echo "\$usrincdir/\$wanted"
5891                 exit 0
5892         fi
5893 done
5894 awkprg='{ print \$$fieldn }'
5895 echo "#include <\$wanted>" > foo\$\$.c
5896 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5897 $grep "^[       ]*#.*\$wanted" | \
5898 while read cline; do
5899         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5900         case "\$name" in
5901         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5902         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5903         *) exit 2;;
5904         esac;
5905 done;
5906 #
5907 # status = 0: grep returned 0 lines, case statement not executed
5908 # status = 1: headerfile found
5909 # status = 2: while loop executed, no headerfile found
5910 #
5911 status=\$?
5912 $rm -f foo\$\$.c;
5913 if test \$status -eq 1; then
5914         exit 0;
5915 fi
5916 exit 1
5917 EOF
5918 chmod +x findhdr
5919
5920 : define an alternate in-header-list? function
5921 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5922 cont=true; xxf="echo \"<\$1> found.\" >&4";
5923 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5924 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5925 esac;
5926 case $# in 4) instead=instead;; *) instead="at last";; esac;
5927 while $test "$cont"; do
5928         xxx=`./findhdr $1`
5929         var=$2; eval "was=\$$2";
5930         if $test "$xxx" && $test -r "$xxx";
5931         then eval $xxf;
5932         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5933                 cont="";
5934         else eval $xxnf;
5935         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5936         set $yyy; shift; shift; yyy=$@;
5937         case $# in 0) cont="";;
5938         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5939                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5940         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5941                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5942         esac;
5943 done;
5944 while $test "$yyy";
5945 do set $yyy; var=$2; eval "was=\$$2";
5946         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5947         set $yyy; shift; shift; yyy=$@;
5948 done'
5949
5950 : see if this is a malloc.h system
5951 set malloc.h i_malloc
5952 eval $inhdr
5953
5954 : see if stdlib is available
5955 set stdlib.h i_stdlib
5956 eval $inhdr
5957
5958 : determine which malloc to compile in
5959 echo " "
5960 case "$usemymalloc" in
5961 ''|[yY]*|true|$define)  dflt='y' ;;
5962 *)      dflt='n' ;;
5963 esac
5964 rp="Do you wish to attempt to use the malloc that comes with $package?"
5965 . ./myread
5966 usemymalloc="$ans"
5967 case "$ans" in
5968 y*|true)
5969         usemymalloc='y'
5970         mallocsrc='malloc.c'
5971         mallocobj="malloc$_o"
5972         d_mymalloc="$define"
5973         case "$libs" in
5974         *-lmalloc*)
5975                 : Remove malloc from list of libraries to use
5976                 echo "Removing unneeded -lmalloc from library list" >&4
5977                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5978                 shift
5979                 libs="$*"
5980                 echo "libs = $libs" >&4
5981                 ;;
5982         esac
5983         ;;
5984 *)
5985         usemymalloc='n'
5986         mallocsrc=''
5987         mallocobj=''
5988         d_mymalloc="$undef"
5989         ;;
5990 esac
5991
5992 : compute the return types of malloc and free
5993 echo " "
5994 $cat >malloc.c <<END
5995 #$i_malloc I_MALLOC
5996 #$i_stdlib I_STDLIB
5997 #include <stdio.h>
5998 #include <sys/types.h>
5999 #ifdef I_MALLOC
6000 #include <malloc.h>
6001 #endif
6002 #ifdef I_STDLIB
6003 #include <stdlib.h>
6004 #endif
6005 #ifdef TRY_MALLOC
6006 void *malloc();
6007 #endif
6008 #ifdef TRY_FREE
6009 void free();
6010 #endif
6011 END
6012 case "$malloctype" in
6013 '')
6014         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6015                 malloctype='void *'
6016         else
6017                 malloctype='char *'
6018         fi
6019         ;;
6020 esac
6021 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6022
6023 case "$freetype" in
6024 '')
6025         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6026                 freetype='void'
6027         else
6028                 freetype='int'
6029         fi
6030         ;;
6031 esac
6032 echo "Your system uses $freetype free(), it would seem." >&4
6033 $rm -f malloc.[co]
6034 $cat <<EOM
6035
6036 After $package is installed, you may wish to install various
6037 add-on modules and utilities.  Typically, these add-ons will
6038 be installed under $prefix with the rest
6039 of this package.  However, you may wish to install such add-ons
6040 elsewhere under a different prefix.
6041
6042 If you do not wish to put everything under a single prefix, that's
6043 ok.  You will be prompted for the individual locations; this siteprefix
6044 is only used to suggest the defaults.
6045
6046 The default should be fine for most people.
6047
6048 EOM
6049 fn=d~+
6050 rp='Installation prefix to use for add-on modules and utilities?'
6051 : XXX Here might be another good place for an installstyle setting.
6052 case "$siteprefix" in
6053 '') dflt=$prefix ;;
6054 *)  dflt=$siteprefix ;;
6055 esac
6056 . ./getfile
6057 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6058 oldsiteprefix=''
6059 case "$siteprefix" in
6060 '') ;;
6061 *)      case "$ans" in
6062         "$prefix") ;;
6063         *) oldsiteprefix="$prefix";;
6064         esac
6065         ;;
6066 esac
6067 siteprefix="$ans"
6068 siteprefixexp="$ansexp"
6069
6070 : determine where site specific libraries go.
6071 : Usual default is /usr/local/lib/perl5/site_perl/$version
6072 : The default "style" setting is made in installstyle.U
6073 : XXX No longer works with Prefixit stuff.
6074 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6075 case "$sitelib" in
6076 '') case "$installstyle" in
6077         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6078         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6079         esac
6080         ;;
6081 *)      dflt="$sitelib"
6082         ;;
6083 esac
6084 $cat <<EOM
6085
6086 The installation process will create a directory for
6087 site-specific extensions and modules.  Most users find it convenient
6088 to place all site-specific files in this directory rather than in the
6089 main distribution directory.
6090
6091 EOM
6092 fn=d~+
6093 rp='Pathname for the site-specific library files?'
6094 . ./getfile
6095 sitelib="$ans"
6096 sitelibexp="$ansexp"
6097 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6098 : Change installation prefix, if necessary.
6099 if $test X"$prefix" != X"$installprefix"; then
6100         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6101 else
6102         installsitelib="$sitelibexp"
6103 fi
6104
6105 : determine where site specific architecture-dependent libraries go.
6106 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6107 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6108 : sitelib may have an optional trailing /share.
6109 case "$sitearch" in
6110 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6111         dflt="$dflt/$archname"
6112         ;;
6113 *)      dflt="$sitearch"
6114         ;;
6115 esac
6116 set sitearch sitearch none
6117 eval $prefixit
6118 $cat <<EOM
6119
6120 The installation process will also create a directory for
6121 architecture-dependent site-specific extensions and modules.
6122
6123 EOM
6124 fn=d~+
6125 rp='Pathname for the site-specific architecture-dependent library files?'
6126 . ./getfile
6127 sitearch="$ans"
6128 sitearchexp="$ansexp"
6129 : Change installation prefix, if necessary.
6130 if $test X"$prefix" != X"$installprefix"; then
6131         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6132 else
6133         installsitearch="$sitearchexp"
6134 fi
6135
6136 $cat <<EOM
6137
6138 The installation process will also create a directory for
6139 vendor-supplied add-ons.  Vendors who supply perl with their system
6140 may find it convenient to place all vendor-supplied files in this
6141 directory rather than in the main distribution directory.  This will
6142 ease upgrades between binary-compatible maintenance versions of perl.
6143
6144 Of course you may also use these directories in whatever way you see
6145 fit.  For example, you might use them to access modules shared over a
6146 company-wide network.
6147
6148 The default answer should be fine for most people.
6149 This causes further questions about vendor add-ons to be skipped
6150 and no vendor-specific directories will be configured for perl.
6151
6152 EOM
6153 rp='Do you want to configure vendor-specific add-on directories?'
6154 case "$usevendorprefix" in
6155 define|true|[yY]*) dflt=y ;;
6156 *)      : User may have set vendorprefix directly on Configure command line.
6157         case "$vendorprefix" in
6158         ''|' ') dflt=n ;;
6159         *)      dflt=y ;;
6160         esac
6161         ;;
6162 esac
6163 . ./myread
6164 case "$ans" in
6165 [yY]*)  fn=d~+
6166         rp='Installation prefix to use for vendor-supplied add-ons?'
6167         case "$vendorprefix" in
6168         '') dflt='' ;;
6169         *)  dflt=$vendorprefix ;;
6170         esac
6171         . ./getfile
6172         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6173         oldvendorprefix=''
6174         case "$vendorprefix" in
6175         '') ;;
6176         *)      case "$ans" in
6177                 "$prefix") ;;
6178                 *) oldvendorprefix="$prefix";;
6179                 esac
6180                 ;;
6181         esac
6182         usevendorprefix="$define"
6183         vendorprefix="$ans"
6184         vendorprefixexp="$ansexp"
6185         ;;
6186 *)      usevendorprefix="$undef"
6187         vendorprefix=''
6188         vendorprefixexp=''
6189         ;;
6190 esac
6191
6192 case "$vendorprefix" in
6193 '')     d_vendorlib="$undef"
6194         vendorlib=''
6195         vendorlibexp=''
6196         ;;
6197 *)      d_vendorlib="$define"
6198         : determine where vendor-supplied modules go.
6199         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6200         case "$vendorlib" in
6201         '')
6202                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6203                 case "$installstyle" in
6204                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6205                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6206                 esac
6207                 ;;
6208         *)      dflt="$vendorlib"
6209                 ;;
6210         esac
6211         fn=d~+
6212         rp='Pathname for the vendor-supplied library files?'
6213         . ./getfile
6214         vendorlib="$ans"
6215         vendorlibexp="$ansexp"
6216         ;;
6217 esac
6218 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6219 : Change installation prefix, if necessary.
6220 if $test X"$prefix" != X"$installprefix"; then
6221         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6222 else
6223         installvendorlib="$vendorlibexp"
6224 fi
6225
6226 case "$vendorprefix" in
6227 '')     d_vendorarch="$undef"
6228         vendorarch=''
6229         vendorarchexp=''
6230         ;;
6231 *)      d_vendorarch="$define"
6232         : determine where vendor-supplied architecture-dependent libraries go.
6233         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6234         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6235         : vendorlib may have an optional trailing /share.
6236         case "$vendorarch" in
6237         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6238                 dflt="$dflt/$archname"
6239                 ;;
6240         *)      dflt="$vendorarch" ;;
6241         esac
6242         fn=d~+
6243         rp='Pathname for vendor-supplied architecture-dependent files?'
6244         . ./getfile
6245         vendorarch="$ans"
6246         vendorarchexp="$ansexp"
6247         ;;
6248 esac
6249 : Change installation prefix, if necessary.
6250 if $test X"$prefix" != X"$installprefix"; then
6251         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6252 else
6253         installvendorarch="$vendorarchexp"
6254 fi
6255
6256 : Final catch-all directories to search
6257 $cat <<EOM
6258
6259 Lastly, you can have perl look in other directories for extensions and
6260 modules in addition to those already specified.
6261 These directories will be searched after 
6262         $sitearch 
6263         $sitelib 
6264 EOM
6265 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6266 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6267 echo ' '
6268 case "$otherlibdirs" in
6269 ''|' ') dflt='none' ;;
6270 *)      dflt="$otherlibdirs" ;;
6271 esac
6272 $cat <<EOM
6273 Enter a colon-separated set of extra paths to include in perl's @INC
6274 search path, or enter 'none' for no extra paths.
6275
6276 EOM
6277
6278 rp='Colon-separated list of additional directories for perl to search?'
6279 . ./myread
6280 case "$ans" in
6281 ' '|''|none)    otherlibdirs=' ' ;;     
6282 *)      otherlibdirs="$ans" ;;
6283 esac
6284 case "$otherlibdirs" in
6285 ' ') val=$undef ;;
6286 *)      val=$define ;;
6287 esac
6288 set d_perl_otherlibdirs
6289 eval $setvar
6290
6291 : Cruising for prototypes
6292 echo " "
6293 echo "Checking out function prototypes..." >&4
6294 $cat >prototype.c <<'EOCP'
6295 int main(int argc, char *argv[]) {
6296         exit(0);}
6297 EOCP
6298 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6299         echo "Your C compiler appears to support function prototypes."
6300         val="$define"
6301 else
6302         echo "Your C compiler doesn't seem to understand function prototypes."
6303         val="$undef"
6304 fi
6305 set prototype
6306 eval $setvar
6307 $rm -f prototype*
6308
6309 case "$prototype" in
6310 "$define") ;;
6311 *)      ansi2knr='ansi2knr'
6312         echo " "
6313         cat <<EOM >&4
6314
6315 $me:  FATAL ERROR:
6316 This version of $package can only be compiled by a compiler that 
6317 understands function prototypes.  Unfortunately, your C compiler 
6318         $cc $ccflags
6319 doesn't seem to understand them.  Sorry about that.
6320
6321 If GNU cc is available for your system, perhaps you could try that instead.  
6322
6323 Eventually, we hope to support building Perl with pre-ANSI compilers.
6324 If you would like to help in that effort, please contact <perlbug@perl.org>.
6325
6326 Aborting Configure now.
6327 EOM
6328         exit 2
6329         ;;
6330 esac
6331
6332 : determine where public executables go
6333 echo " "
6334 set dflt bin bin
6335 eval $prefixit
6336 fn=d~
6337 rp='Pathname where the public executables will reside?'
6338 . ./getfile
6339 if $test "X$ansexp" != "X$binexp"; then
6340         installbin=''
6341 fi
6342 bin="$ans"
6343 binexp="$ansexp"
6344 : Change installation prefix, if necessary.
6345 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6346 if $test X"$prefix" != X"$installprefix"; then
6347         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6348 else
6349         installbin="$binexp"
6350 fi
6351
6352 : Find perl5.005 or later.
6353 echo "Looking for a previously installed perl5.005 or later... "
6354 case "$perl5" in
6355 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6356                 : Check if this perl is recent and can load a simple module
6357                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6358                         perl5=$tdir/perl
6359                         break;
6360                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6361                         perl5=$tdir/perl
6362                         break;
6363                 fi
6364         done
6365         ;;
6366 *)      perl5="$perl5"
6367         ;;
6368 esac
6369 case "$perl5" in
6370 '')     echo "None found.  That's ok.";;
6371 *)      echo "Using $perl5." ;;
6372 esac
6373
6374 : Determine list of previous versions to include in @INC
6375 $cat > getverlist <<EOPL
6376 #!$perl5 -w
6377 use File::Basename;
6378 \$api_versionstring = "$api_versionstring";
6379 \$version = "$version";
6380 \$stem = "$sitelib_stem";
6381 \$archname = "$archname";
6382 EOPL
6383         $cat >> getverlist <<'EOPL'
6384 # Can't have leading @ because metaconfig interprets it as a command!
6385 ;@inc_version_list=();
6386 # XXX Redo to do opendir/readdir? 
6387 if (-d $stem) {
6388     chdir($stem);
6389     ;@candidates = glob("5.*");
6390 }
6391 else {
6392     ;@candidates = ();
6393 }
6394
6395 # XXX ToDo:  These comparisons must be reworked when two-digit
6396 # subversions come along, so that 5.7.10 compares as greater than
6397 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6398 # widespread that we can use the built-in version vectors rather
6399 # than reinventing them here.  For 5.6.0, however, we must
6400 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6401 foreach $d (@candidates) {
6402     if ($d lt $version) {
6403         if ($d ge $api_versionstring) {
6404             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6405         }
6406         elsif ($d ge "5.005") {
6407             unshift(@inc_version_list, grep { -d } $d);
6408         }
6409     }
6410     else {
6411         # Skip newer version.  I.e. don't look in
6412         # 5.7.0 if we're installing 5.6.1.
6413     }
6414 }
6415
6416 if (@inc_version_list) {
6417     print join(' ', @inc_version_list);
6418 }
6419 else {
6420     # Blank space to preserve value for next Configure run.
6421     print " ";
6422 }
6423 EOPL
6424 chmod +x getverlist
6425 case "$inc_version_list" in
6426 '')     if test -x "$perl5"; then
6427                 dflt=`$perl5 getverlist`
6428         else
6429                 dflt='none'
6430         fi
6431         ;;
6432 $undef) dflt='none' ;;
6433 *)  dflt="$inc_version_list" ;;
6434 esac
6435 case "$dflt" in
6436 ''|' ') dflt=none ;;
6437 esac
6438 case "$dflt" in
6439 5.005) case "$bincompat5005" in
6440        $define|true|[yY]*) ;;
6441        *) dflt=none ;;
6442        esac
6443        ;;
6444 esac
6445 $cat <<'EOM'
6446
6447 In order to ease the process of upgrading, this version of perl 
6448 can be configured to use modules built and installed with earlier 
6449 versions of perl that were installed under $prefix.  Specify here
6450 the list of earlier versions that this version of perl should check.
6451 If Configure detected no earlier versions of perl installed under
6452 $prefix, then the list will be empty.  Answer 'none' to tell perl
6453 to not search earlier versions.
6454
6455 The default should almost always be sensible, so if you're not sure,
6456 just accept the default.
6457 EOM
6458
6459 rp='List of earlier versions to include in @INC?'
6460 . ./myread
6461 case "$ans" in
6462 [Nn]one|''|' ') inc_version_list=' ' ;;
6463 *) inc_version_list="$ans" ;;
6464 esac
6465 case "$inc_version_list" in
6466 ''|' ') 
6467         inc_version_list_init='0';;
6468 *)      inc_version_list_init=`echo $inc_version_list |
6469                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6470         ;;
6471 esac
6472 $rm -f getverlist
6473
6474 : determine whether to install perl also as /usr/bin/perl
6475
6476 echo " "
6477 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6478         $cat <<EOM
6479 Many scripts expect perl to be installed as /usr/bin/perl.
6480 I can install the perl you are about to compile also as /usr/bin/perl
6481 (in addition to $installbin/perl).
6482 EOM
6483         case "$installusrbinperl" in
6484         "$undef"|[nN]*) dflt='n';;
6485         *)              dflt='y';;
6486         esac
6487         rp="Do you want to install perl as /usr/bin/perl?"
6488         . ./myread
6489         case "$ans" in
6490         [yY]*)  val="$define";;
6491         *)      val="$undef" ;;
6492         esac
6493 else
6494         val="$undef"
6495 fi
6496 set installusrbinperl
6497 eval $setvar
6498
6499 : see if dld is available
6500 set dld.h i_dld
6501 eval $inhdr
6502
6503 : see if dlopen exists
6504 xxx_runnm="$runnm"
6505 runnm=false
6506 set dlopen d_dlopen
6507 eval $inlibc
6508 runnm="$xxx_runnm"
6509
6510 : determine which dynamic loading, if any, to compile in
6511 echo " "
6512 dldir="ext/DynaLoader"
6513 case "$usedl" in
6514 $define|y|true)
6515         dflt='y'
6516         usedl="$define"
6517         ;;
6518 $undef|n|false)
6519         dflt='n'
6520         usedl="$undef"
6521         ;;
6522 *) 
6523         dflt='n'
6524         case "$d_dlopen" in
6525             $define) dflt='y' ;;
6526         esac
6527         case "$i_dld" in
6528             $define) dflt='y' ;;
6529         esac
6530         : Does a dl_xxx.xs file exist for this operating system
6531         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6532         ;;
6533 esac
6534 rp="Do you wish to use dynamic loading?"
6535 . ./myread
6536 usedl="$ans"
6537 case "$ans" in
6538 y*) usedl="$define"
6539         case "$dlsrc" in
6540         '')
6541                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6542                         dflt="$dldir/dl_${osname}.xs"
6543                 elif $test "$d_dlopen" = "$define" ; then
6544                         dflt="$dldir/dl_dlopen.xs"
6545                 elif $test "$i_dld" = "$define" ; then
6546                         dflt="$dldir/dl_dld.xs"
6547                 else
6548                         dflt=''
6549                 fi
6550                 ;;
6551         *)      dflt="$dldir/$dlsrc"
6552                 ;;
6553         esac
6554     echo "The following dynamic loading files are available:"
6555         : Can not go over to $dldir because getfile has path hard-coded in.
6556         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6557         rp="Source file to use for dynamic loading"
6558         fn="fne"
6559         gfpth="$src"
6560         . ./getfile
6561         usedl="$define"
6562         : emulate basename
6563         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6564
6565         $cat << EOM
6566
6567 Some systems may require passing special flags to $cc -c to
6568 compile modules that will be used to create a shared library.
6569 To use no flags, say "none".
6570
6571 EOM
6572     case "$cccdlflags" in
6573     '') case "$gccversion" in
6574                 '') case "$osname" in
6575                         hpux)   dflt='+z' ;;
6576                         next)   dflt='none' ;;
6577                         irix*)  dflt='-KPIC' ;;
6578                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6579                         sunos)  dflt='-pic' ;;
6580                         *)      dflt='none' ;;
6581                     esac
6582                         ;;
6583                 *)  case "$osname" in
6584                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6585                         *)      dflt='-fpic' ;;
6586                     esac ;;
6587             esac ;;
6588         ' ') dflt='none' ;;
6589     *)  dflt="$cccdlflags" ;;
6590     esac
6591     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6592     . ./myread
6593     case "$ans" in
6594     none) cccdlflags=' ' ;;
6595     *) cccdlflags="$ans" ;;
6596     esac
6597
6598     cat << EOM
6599
6600 Some systems use ld to create libraries that can be dynamically loaded,
6601 while other systems (such as those using ELF) use $cc.
6602
6603 EOM
6604         case "$ld" in
6605         '')     $cat >try.c <<'EOM'
6606 /* Test for whether ELF binaries are produced */
6607 #include <fcntl.h>
6608 #include <stdlib.h>
6609 int main() {
6610         char b[4];
6611         int i = open("a.out",O_RDONLY);
6612         if(i == -1) 
6613                 exit(1); /* fail */
6614         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6615                 exit(0); /* succeed (yes, it's ELF) */
6616         else
6617                 exit(1); /* fail */
6618 }
6619 EOM
6620                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6621                         cat <<EOM
6622 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6623 EOM
6624                         dflt="$cc"
6625                 else
6626                         echo "I'll use ld to build dynamic libraries."
6627                         dflt='ld'
6628                 fi
6629                 rm -f try.c a.out
6630                 ;;
6631         *)      dflt="$ld"
6632                 ;;
6633         esac
6634
6635     rp="What command should be used to create dynamic libraries?"
6636     . ./myread
6637         ld="$ans"
6638
6639     cat << EOM
6640
6641 Some systems may require passing special flags to $ld to create a
6642 library that can be dynamically loaded.  If your ld flags include
6643 -L/other/path options to locate libraries outside your loader's normal
6644 search path, you may need to specify those -L options here as well.  To
6645 use no flags, say "none".
6646
6647 EOM
6648     case "$lddlflags" in
6649     '') case "$osname" in
6650                         beos) dflt='-nostart' ;;
6651                         hpux) dflt='-b';
6652                               case "$gccversion" in
6653                               '') dflt="$dflt +vnocompatwarnings" ;;
6654                               esac
6655                               ;;        
6656                         linux|irix*)    dflt='-shared' ;;
6657                         next)  dflt='none' ;;
6658                         solaris) dflt='-G' ;;
6659                         sunos) dflt='-assert nodefinitions' ;;
6660                         svr4*|esix*) dflt="-G $ldflags" ;;
6661                 *)     dflt='none' ;;
6662                         esac
6663                         ;;
6664     *) dflt="$lddlflags" ;;
6665     esac
6666
6667         : Try to guess additional flags to pick up local libraries.
6668         : Be careful not to append to a plain 'none'
6669         case "$dflt" in
6670         none) dflt='' ;;
6671         esac
6672         for thisflag in $ldflags; do
6673                 case "$thisflag" in
6674                 -L*|-R*)
6675                         case " $dflt " in
6676                         *" $thisflag "*) ;;
6677                         *) dflt="$dflt $thisflag" ;;
6678                         esac
6679                         ;;
6680                 esac
6681         done
6682
6683         case "$dflt" in
6684         ''|' ') dflt='none' ;;
6685         esac
6686
6687     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6688     . ./myread
6689     case "$ans" in
6690     none) lddlflags=' ' ;;
6691     *) lddlflags="$ans" ;;
6692     esac
6693
6694         cat <<EOM
6695
6696 Some systems may require passing special flags to $cc to indicate that
6697 the resulting executable will use dynamic linking.  To use no flags,
6698 say "none".
6699
6700 EOM
6701     case "$ccdlflags" in
6702     '') case "$osname" in
6703                 hpux)   dflt='-Wl,-E' ;;
6704                 linux)  dflt='-rdynamic' ;;
6705                 next)   dflt='none' ;;
6706                 sunos)  dflt='none' ;;
6707                 *)      dflt='none' ;;
6708             esac ;;
6709     ' ')  dflt='none' ;;
6710     *)  dflt="$ccdlflags" ;;
6711     esac
6712     rp="Any special flags to pass to $cc to use dynamic linking?"
6713     . ./myread
6714     case "$ans" in
6715     none) ccdlflags=' ' ;;
6716     *) ccdlflags="$ans" ;;
6717     esac
6718     ;;
6719 *)  usedl="$undef"
6720         ld='ld'
6721     dlsrc='dl_none.xs'
6722     lddlflags=''
6723     ccdlflags=''
6724     ;;
6725 esac
6726
6727 also=''
6728 case "$usedl" in
6729 $undef)
6730         # No dynamic loading being used, so don't bother even to prompt.
6731         useshrplib='false'
6732         ;;
6733 *)      case "$useshrplib" in
6734         '')     case "$osname" in
6735                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6736                         dflt=y
6737                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6738                         ;;
6739                 next*)
6740                         case "$osvers" in
6741                         4*)     dflt=y
6742                                 also='Building a shared libperl is needed for MAB support.'
6743                                 ;;
6744                         *)      dflt=n
6745                                 ;;
6746                         esac
6747                         ;;
6748                 *)      dflt=n
6749                         ;;
6750                 esac
6751                 ;;
6752         $define|true|[Yy]*)
6753                 dflt=y
6754                 ;;
6755         *)      dflt=n
6756                 ;;
6757         esac
6758         $cat << EOM
6759
6760 The perl executable is normally obtained by linking perlmain.c with
6761 libperl${_a}, any static extensions (usually just DynaLoader), and
6762 any other libraries needed on this system (such as -lm, etc.).  Since
6763 your system supports dynamic loading, it is probably possible to build
6764 a shared libperl.$so.  If you will have more than one executable linked
6765 to libperl.$so, this will significantly reduce the size of each
6766 executable, but it may have a noticeable affect on performance.  The
6767 default is probably sensible for your system.
6768 $also
6769
6770 EOM
6771         rp="Build a shared libperl.$so (y/n)"
6772         . ./myread
6773         case "$ans" in
6774         true|$define|[Yy]*)
6775                 useshrplib='true'  ;;
6776         *)      useshrplib='false' ;;
6777         esac
6778         ;;
6779 esac
6780
6781 case "$useshrplib" in
6782 true)
6783         case "$libperl" in
6784         '')
6785                 # Figure out a good name for libperl.so.  Since it gets stored in
6786                 # a version-specific architecture-dependent library, the version
6787                 # number isn't really that important, except for making cc/ld happy.
6788                 #
6789                 # A name such as libperl.so.3.1
6790                 majmin="libperl.$so.$patchlevel.$subversion"
6791                 # A name such as libperl.so.301
6792                 majonly=`echo $patchlevel $subversion |
6793                         $awk '{printf "%d%02d", $1, $2}'`
6794                 majonly=libperl.$so.$majonly
6795                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6796                 # rely on figuring it out from the naming of libc.
6797                 case "${osname}${osvers}" in
6798                 next4*)
6799                         dflt=libperl.5.$so
6800                         # XXX How handle the --version stuff for MAB?
6801                         ;;
6802                 linux*)  # ld won't link with a bare -lperl otherwise.
6803                         dflt=libperl.$so
6804                         ;;
6805                 cygwin*) # include version
6806                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6807                         ;;
6808                 *)      # Try to guess based on whether libc has major.minor.
6809                         case "$libc" in
6810                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6811                         *libc.$so.[0-9]*) dflt=$majonly ;;
6812                         *)      dflt=libperl.$so ;;
6813                         esac
6814                         ;;
6815                 esac
6816                 ;;
6817         *)      dflt=$libperl
6818                 ;;
6819         esac
6820         cat << EOM
6821
6822 I need to select a good name for the shared libperl.  If your system uses
6823 library names with major and minor numbers, then you might want something
6824 like $majmin.  Alternatively, if your system uses a single version
6825 number for shared libraries, then you might want to use $majonly.
6826 Or, your system might be quite happy with a simple libperl.$so.
6827
6828 Since the shared libperl will get installed into a version-specific
6829 architecture-dependent directory, the version number of the shared perl
6830 library probably isn't important, so the default should be o.k.
6831
6832 EOM
6833         rp='What name do you want to give to the shared libperl?'
6834         . ./myread
6835         libperl=$ans
6836         echo "Ok, I'll use $libperl"
6837         ;;
6838 *)
6839         libperl="libperl${_a}"
6840         ;;
6841 esac
6842
6843 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6844 case "$shrpdir" in
6845 '') ;;
6846 *)      $cat >&4 <<EOM
6847 WARNING:  Use of the shrpdir variable for the installation location of
6848 the shared $libperl is not supported.  It was never documented and
6849 will not work in this version.  Let me (perlbug@perl.org)
6850 know of any problems this may cause.
6851
6852 EOM
6853         case "$shrpdir" in
6854         "$archlibexp/CORE")
6855                 $cat >&4 <<EOM
6856 But your current setting of $shrpdir is
6857 the default anyway, so it's harmless.
6858 EOM
6859                 ;;
6860         *)
6861                 $cat >&4 <<EOM
6862 Further, your current attempted setting of $shrpdir
6863 conflicts with the value of $archlibexp/CORE
6864 that installperl will use.
6865 EOM
6866                 ;;
6867         esac
6868         ;;
6869 esac
6870
6871 # How will the perl executable find the installed shared $libperl?
6872 # Add $xxx to ccdlflags.
6873 # If we can't figure out a command-line option, use $shrpenv to
6874 # set env LD_RUN_PATH.  The main perl makefile uses this.
6875 shrpdir=$archlibexp/CORE
6876 xxx=''
6877 tmp_shrpenv=''
6878 if "$useshrplib"; then
6879     case "$osname" in 
6880         aix)
6881                 # We'll set it in Makefile.SH...
6882                 ;;
6883         solaris|netbsd)
6884                 xxx="-R $shrpdir"
6885                 ;;
6886         freebsd)
6887                 xxx="-Wl,-R$shrpdir"
6888                 ;;
6889         linux|irix*|dec_osf)
6890                 xxx="-Wl,-rpath,$shrpdir"
6891                 ;;
6892         next)
6893                 # next doesn't like the default...
6894                 ;;
6895         beos)
6896                 # beos doesn't like the default, either.
6897                 ;;
6898         hpux*)
6899                 # hpux doesn't like the default, either.
6900                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6901                 ;;
6902         *)
6903                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6904                 ;;
6905         esac
6906         case "$xxx" in
6907         '') ;;
6908         *)      
6909                 # Only add $xxx if it isn't already in ccdlflags.
6910                 case " $ccdlflags " in
6911                 *" $xxx "*)     ;;
6912                 *)      ccdlflags="$ccdlflags $xxx"
6913                         cat <<EOM >&4
6914
6915 Adding $xxx to the flags
6916 passed to $ld so that the perl executable will find the 
6917 installed shared $libperl.
6918
6919 EOM
6920                         ;;
6921                 esac
6922                 ;;
6923         esac
6924 fi
6925 # Fix ccdlflags in AIX for building external extensions.
6926 # (For building Perl itself bare -bE:perl.exp is needed,
6927 #  Makefile.SH takes care of this.)
6928 case "$osname" in
6929 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6930 esac
6931 # Respect a hint or command-line value.
6932 case "$shrpenv" in
6933 '') shrpenv="$tmp_shrpenv" ;;
6934 esac
6935 case "$ldlibpthname" in
6936 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6937 none)   ldlibpthname='' ;;
6938 esac
6939
6940 : determine where manual pages go
6941 set man1dir man1dir none
6942 eval $prefixit
6943 $cat <<EOM
6944
6945 $spackage has manual pages available in source form.
6946 EOM
6947 case "$nroff" in
6948 nroff)
6949         echo "However, you don't have nroff, so they're probably useless to you."
6950         case "$man1dir" in
6951         '') man1dir="none";;
6952         esac;;
6953 esac
6954 echo "If you don't want the manual sources installed, answer 'none'."
6955 case "$man1dir" in
6956 ' ') dflt=none
6957         ;;
6958 '')
6959         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6960         lookpath="$lookpath $prefixexp/man/p_man/man1"
6961         lookpath="$lookpath $prefixexp/man/u_man/man1"
6962         lookpath="$lookpath $prefixexp/man/man.1"
6963         case "$sysman" in
6964         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6965         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6966         esac
6967         set dflt
6968         eval $prefixup
6969         ;;
6970 *)  dflt="$man1dir"
6971         ;;
6972 esac
6973 echo " "
6974 fn=dn+~
6975 rp="Where do the main $spackage manual pages (source) go?"
6976 . ./getfile
6977 if $test "X$man1direxp" != "X$ansexp"; then
6978         installman1dir=''
6979 fi
6980 man1dir="$ans"
6981 man1direxp="$ansexp"
6982 case "$man1dir" in
6983 '')     man1dir=' '
6984         installman1dir='';;
6985 esac
6986
6987 : Change installation prefix, if necessary.
6988 if $test X"$prefix" != X"$installprefix"; then
6989         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6990 else
6991         installman1dir="$man1direxp"
6992 fi
6993
6994 : What suffix to use on installed man pages
6995
6996 case "$man1dir" in
6997 ' ')
6998         man1ext='0'
6999         ;;
7000 *)
7001         rp="What suffix should be used for the main $spackage man pages?"
7002         case "$man1ext" in
7003         '')     case "$man1dir" in
7004                 *1)  dflt=1 ;;
7005                 *1p) dflt=1p ;;
7006                 *1pm) dflt=1pm ;;
7007                 *l) dflt=l;;
7008                 *n) dflt=n;;
7009                 *o) dflt=o;;
7010                 *p) dflt=p;;
7011                 *C) dflt=C;;
7012                 *L) dflt=L;;
7013                 *L1) dflt=L1;;
7014                 *) dflt=1;;
7015                 esac
7016                 ;;
7017         *)      dflt="$man1ext";;
7018         esac
7019         . ./myread
7020         man1ext="$ans"
7021         ;;
7022 esac
7023
7024 : see if we can have long filenames
7025 echo " "
7026 first=123456789abcdef
7027 $rm -f $first
7028 if (echo hi >$first) 2>/dev/null; then
7029         if $test -f 123456789abcde; then
7030                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7031                 val="$undef"
7032         else
7033                 echo 'You can have filenames longer than 14 characters.'>&4
7034                 val="$define"
7035         fi
7036 else
7037         $cat <<'EOM'
7038 You can't have filenames longer than 14 chars.
7039 You can't even think about them!
7040 EOM
7041         val="$undef"
7042 fi 
7043 set d_flexfnam
7044 eval $setvar
7045 $rm -rf 123456789abcde*
7046
7047 : determine where library module manual pages go
7048 set man3dir man3dir none
7049 eval $prefixit
7050 $cat <<EOM
7051
7052 $spackage has manual pages for many of the library modules.
7053 EOM
7054
7055 case "$nroff" in
7056 nroff)
7057         $cat <<'EOM'
7058 However, you don't have nroff, so they're probably useless to you.
7059 EOM
7060         case "$man3dir" in
7061         '') man3dir="none";;
7062         esac;;
7063 esac
7064
7065 case "$d_flexfnam" in
7066 undef)
7067         $cat <<'EOM'
7068 However, your system can't handle the long file names like File::Basename.3. 
7069 EOM
7070         case "$man3dir" in
7071         '') man3dir="none";;
7072         esac;;
7073 esac
7074
7075 echo "If you don't want the manual sources installed, answer 'none'."
7076 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7077 case "$man3dir" in
7078 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7079         if $test -d "$privlib/man/man3"; then
7080                 cat <<EOM >&4
7081
7082 WARNING:  Previous versions of perl installed man3 pages into
7083 $privlib/man/man3.  This version will suggest a 
7084 new default of $dflt.  
7085 EOM
7086                 tdflt=$dflt
7087                 dflt='n'
7088                 rp='Do you wish to preserve the old behavior?(y/n)'
7089                 . ./myread
7090                 case "$ans" in
7091                 y*) dflt="$privlib/man/man3" ;;
7092                 *)  dflt=$tdflt ;;
7093                 esac
7094     fi
7095         ;;
7096 *)      dflt="$man3dir" ;;
7097 esac
7098 case "$dflt" in
7099 ' ') dflt=none ;;
7100 esac
7101 echo " "
7102 fn=dn+~
7103 rp="Where do the $package library man pages (source) go?"
7104 . ./getfile
7105 man3dir="$ans"
7106 man3direxp="$ansexp"
7107 case "$man3dir" in
7108 '')     man3dir=' '
7109         installman3dir='';;
7110 esac
7111
7112 : Change installation prefix, if necessary.
7113 if $test X"$prefix" != X"$installprefix"; then
7114         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7115 else
7116         installman3dir="$man3direxp"
7117 fi
7118
7119 : What suffix to use on installed man pages
7120 case "$man3dir" in
7121 ' ')
7122         man3ext='0'
7123         ;;
7124 *)
7125         rp="What suffix should be used for the $package library man pages?"
7126         case "$man3ext" in
7127         '')     case "$man3dir" in
7128                 *3)  dflt=3 ;;
7129                 *3p) dflt=3p ;;
7130                 *3pm) dflt=3pm ;;
7131                 *l) dflt=l;;
7132                 *n) dflt=n;;
7133                 *o) dflt=o;;
7134                 *p) dflt=p;;
7135                 *C) dflt=C;;
7136                 *L) dflt=L;;
7137                 *L3) dflt=L3;;
7138                 *) dflt=3;;
7139                 esac
7140                 ;;
7141         *)      dflt="$man3ext";;
7142         esac
7143         . ./myread
7144         man3ext="$ans"
7145         ;;
7146 esac
7147
7148 : see if we have to deal with yellow pages, now NIS.
7149 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7150         if $test -f /usr/etc/nibindd; then
7151                 echo " "
7152                 echo "I'm fairly confident you're on a NeXT."
7153                 echo " "
7154                 rp='Do you get the hosts file via NetInfo?'
7155                 dflt=y
7156                 case "$hostcat" in
7157                 nidump*) ;;
7158                 '') ;;
7159                 *) dflt=n;;
7160                 esac
7161                 . ./myread
7162                 case "$ans" in
7163                 y*) hostcat='nidump hosts .';;
7164                 *)      case "$hostcat" in
7165                         nidump*) hostcat='';;
7166                         esac
7167                         ;;
7168                 esac
7169         fi
7170         case "$hostcat" in
7171         nidump*) ;;
7172         *)
7173                 case "$hostcat" in
7174                 *ypcat*) dflt=y;;
7175                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7176                                 dflt=y
7177                         else
7178                                 dflt=n
7179                         fi;;
7180                 *) dflt=n;;
7181                 esac
7182                 echo " "
7183                 rp='Are you getting the hosts file via yellow pages?'
7184                 . ./myread
7185                 case "$ans" in
7186                 y*) hostcat='ypcat hosts';;
7187                 *) hostcat='cat /etc/hosts';;
7188                 esac
7189                 ;;
7190         esac
7191 fi
7192 case "$hostcat" in
7193 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7194 esac
7195 case "$groupcat" in
7196 '') test -f /etc/group && groupcat='cat /etc/group';;
7197 esac
7198 case "$passcat" in
7199 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7200 esac
7201
7202 : now get the host name
7203 echo " "
7204 echo "Figuring out host name..." >&4
7205 case "$myhostname" in
7206 '') cont=true
7207         echo 'Maybe "hostname" will work...'
7208         if tans=`sh -c hostname 2>&1` ; then
7209                 myhostname=$tans
7210                 phostname=hostname
7211                 cont=''
7212         fi
7213         ;;
7214 *) cont='';;
7215 esac
7216 if $test "$cont"; then
7217         if ./xenix; then
7218                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7219                 if tans=`cat /etc/systemid 2>&1` ; then
7220                         myhostname=$tans
7221                         phostname='cat /etc/systemid'
7222                         echo "Whadyaknow.  Xenix always was a bit strange..."
7223                         cont=''
7224                 fi
7225         elif $test -r /etc/systemid; then
7226                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7227         fi
7228 fi
7229 if $test "$cont"; then
7230         echo 'No, maybe "uuname -l" will work...'
7231         if tans=`sh -c 'uuname -l' 2>&1` ; then
7232                 myhostname=$tans
7233                 phostname='uuname -l'
7234         else
7235                 echo 'Strange.  Maybe "uname -n" will work...'
7236                 if tans=`sh -c 'uname -n' 2>&1` ; then
7237                         myhostname=$tans
7238                         phostname='uname -n'
7239                 else
7240                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7241                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7242                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7243                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7244                         else
7245                                 case "$myhostname" in
7246                                 '') echo "Does this machine have an identity crisis or something?"
7247                                         phostname='';;
7248                                 *)
7249                                         echo "Well, you said $myhostname before..."
7250                                         phostname='echo $myhostname';;
7251                                 esac
7252                         fi
7253                 fi
7254         fi
7255 fi
7256 : you do not want to know about this
7257 set $myhostname
7258 myhostname=$1
7259
7260 : verify guess
7261 if $test "$myhostname" ; then
7262         dflt=y
7263         rp='Your host name appears to be "'$myhostname'".'" Right?"
7264         . ./myread
7265         case "$ans" in
7266         y*) ;;
7267         *) myhostname='';;
7268         esac
7269 fi
7270
7271 : bad guess or no guess
7272 while $test "X$myhostname" = X ; do
7273         dflt=''
7274         rp="Please type the (one word) name of your host:"
7275         . ./myread
7276         myhostname="$ans"
7277 done
7278
7279 : translate upper to lower if necessary
7280 case "$myhostname" in
7281 *[A-Z]*)
7282         echo "(Normalizing case in your host name)"
7283         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7284         ;;
7285 esac
7286
7287 case "$myhostname" in
7288 *.*)
7289         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7290         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7291         echo "(Trimming domain name from host name--host name is now $myhostname)"
7292         ;;
7293 *) case "$mydomain" in
7294         '')
7295                 {
7296                         test "X$hostcat" = "Xypcat hosts" &&
7297                         ypmatch "$myhostname" hosts 2>/dev/null |\
7298                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7299                         $test -s hosts
7300                 } || {
7301                         test "X$hostcat" != "X" &&
7302                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7303                                         /[       ]$myhostname[  . ]/p" > hosts
7304                 }
7305                 tmp_re="[       . ]"
7306                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7307                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7308                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7309                         hosts | $sort | $uniq | \
7310                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7311                 case `$echo X$dflt` in
7312                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7313                         dflt=.
7314                         ;;
7315                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7316                         ;;
7317                 esac
7318                 case "$dflt" in
7319                 .)
7320                         tans=`./loc resolv.conf X /etc /usr/etc`
7321                         if $test -f "$tans"; then
7322                                 echo "(Attempting domain name extraction from $tans)"
7323                                 dflt=.`$sed -n -e 's/   / /g' \
7324                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7325                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7326                                 case "$dflt" in
7327                                 .) dflt=.`$sed -n -e 's/        / /g' \
7328                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7329                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7330                                         ;;
7331                                 esac
7332                         fi
7333                         ;;
7334                 esac
7335                 case "$dflt" in
7336                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7337                         dflt=.`sh -c domainname 2>/dev/null`
7338                         case "$dflt" in
7339                         '') dflt='.';;
7340                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7341                         esac
7342                         ;;
7343                 esac
7344                 case "$dflt" in
7345                 .) echo "(Lost all hope -- silly guess then)"
7346                         dflt='.uucp'
7347                         ;;
7348                 esac
7349                 $rm -f hosts
7350                 ;;
7351         *) dflt="$mydomain";;
7352         esac;;
7353 esac
7354 echo " "
7355 rp="What is your domain name?"
7356 . ./myread
7357 tans="$ans"
7358 case "$ans" in
7359 '') ;;
7360 .*) ;;
7361 *) tans=".$tans";;
7362 esac
7363 mydomain="$tans"
7364
7365 : translate upper to lower if necessary
7366 case "$mydomain" in
7367 *[A-Z]*)
7368         echo "(Normalizing case in your domain name)"
7369         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7370         ;;
7371 esac
7372
7373 : a little sanity check here
7374 case "$phostname" in
7375 '') ;;
7376 *)
7377         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7378         $myhostname$mydomain|$myhostname) ;;
7379         *)
7380                 case "$phostname" in
7381                 sed*)
7382                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7383                         ;;
7384                 *)
7385                         echo "(That doesn't agree with your $phostname command, by the way.)"
7386                         ;;
7387                 esac
7388         ;;
7389         esac
7390         ;;
7391 esac
7392
7393 $cat <<EOM
7394
7395 I need to get your e-mail address in Internet format if possible, i.e.
7396 something like user@host.domain. Please answer accurately since I have
7397 no easy means to double check it. The default value provided below
7398 is most probably close to reality but may not be valid from outside
7399 your organization...
7400
7401 EOM
7402 cont=x
7403 while test "$cont"; do
7404         case "$cf_email" in
7405         '') dflt="$cf_by@$myhostname$mydomain";;
7406         *) dflt="$cf_email";;
7407         esac
7408         rp='What is your e-mail address?'
7409         . ./myread
7410         cf_email="$ans"
7411         case "$cf_email" in
7412         *@*.*) cont='' ;;
7413         *)
7414                 rp='Address does not look like an Internet one.  Use it anyway?'
7415                 case "$fastread" in
7416                 yes) dflt=y ;;
7417                 *) dflt=n ;;
7418                 esac
7419                 . ./myread
7420                 case "$ans" in
7421                 y*) cont='' ;;
7422                 *) echo " " ;;
7423                 esac
7424                 ;;
7425         esac
7426 done
7427
7428 $cat <<EOM
7429
7430 If you or somebody else will be maintaining perl at your site, please
7431 fill in the correct e-mail address here so that they may be contacted
7432 if necessary. Currently, the "perlbug" program included with perl
7433 will send mail to this address in addition to perlbug@perl.org. You may
7434 enter "none" for no administrator.
7435
7436 EOM
7437 case "$perladmin" in
7438 '') dflt="$cf_email";;
7439 *) dflt="$perladmin";;
7440 esac
7441 rp='Perl administrator e-mail address'
7442 . ./myread
7443 perladmin="$ans"
7444
7445 : figure out how to guarantee perl startup
7446 case "$startperl" in
7447 '')
7448         case "$sharpbang" in
7449         *!)
7450                 $cat <<EOH
7451
7452 I can use the #! construct to start perl on your system. This will
7453 make startup of perl scripts faster, but may cause problems if you
7454 want to share those scripts and perl is not in a standard place
7455 ($binexp/perl) on all your platforms. The alternative is to force
7456 a shell by starting the script with a single ':' character.
7457
7458 EOH
7459                 dflt="$binexp/perl"
7460                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7461                 . ./myread
7462                 case "$ans" in
7463                 none)   startperl=": # use perl";;
7464                 *)      startperl="#!$ans"
7465                         if $test 30 -lt `echo "$ans" | wc -c`; then
7466                                 $cat >&4 <<EOM
7467
7468 WARNING:  Some systems limit the #! command to 32 characters.
7469 If you experience difficulty running Perl scripts with #!, try
7470 installing Perl in a directory with a shorter pathname.
7471
7472 EOM
7473                         fi ;;
7474                 esac
7475                 ;;
7476         *) startperl=": # use perl"
7477                 ;;
7478         esac
7479         ;;
7480 esac
7481 echo "I'll use $startperl to start perl scripts."
7482
7483 : figure best path for perl in scripts
7484 case "$perlpath" in
7485 '')
7486         perlpath="$binexp/perl"
7487         case "$startperl" in
7488         *!*) ;;
7489         *)
7490                 $cat <<EOH
7491
7492 I will use the "eval 'exec'" idiom to start Perl on your system.
7493 I can use the full path of your Perl binary for this purpose, but
7494 doing so may cause problems if you want to share those scripts and
7495 Perl is not always in a standard place ($binexp/perl).
7496
7497 EOH
7498                 dflt="$binexp/perl"
7499                 rp="What path shall I use in \"eval 'exec'\"?"
7500                 . ./myread
7501                 perlpath="$ans"
7502                 ;;
7503         esac
7504         ;;
7505 esac
7506 case "$startperl" in
7507 *!*)    ;;
7508 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7509 esac
7510
7511 : determine where public executable scripts go
7512 set scriptdir scriptdir
7513 eval $prefixit
7514 case "$scriptdir" in
7515 '')
7516         dflt="$bin"
7517         : guess some guesses
7518         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7519         $test -d /usr/share/bin     && dflt=/usr/share/bin
7520         $test -d /usr/local/script  && dflt=/usr/local/script
7521         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7522         $test -d $prefixexp/script  && dflt=$prefixexp/script
7523         set dflt
7524         eval $prefixup
7525         ;;
7526 *)  dflt="$scriptdir"
7527         ;;
7528 esac
7529 $cat <<EOM
7530  
7531 Some installations have a separate directory just for executable scripts so
7532 that they can mount it across multiple architectures but keep the scripts in
7533 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7534 Or you might just lump your scripts in with all your other executables.
7535  
7536 EOM
7537 fn=d~
7538 rp='Where do you keep publicly executable scripts?'
7539 . ./getfile
7540 if $test "X$ansexp" != "X$scriptdirexp"; then
7541         installscript=''
7542 fi
7543 scriptdir="$ans"
7544 scriptdirexp="$ansexp"
7545 : Change installation prefix, if necessary.
7546 if $test X"$prefix" != X"$installprefix"; then
7547         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7548 else
7549         installscript="$scriptdirexp"
7550 fi
7551
7552 : determine where add-on public executables go
7553 case "$sitebin" in
7554 '')     dflt=$siteprefix/bin ;;
7555 *)      dflt=$sitebin ;;
7556 esac
7557 fn=d~
7558 rp='Pathname where the add-on public executables should be installed?'
7559 . ./getfile
7560 sitebin="$ans"
7561 sitebinexp="$ansexp"
7562 : Change installation prefix, if necessary.
7563 if $test X"$prefix" != X"$installprefix"; then
7564         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7565 else
7566         installsitebin="$sitebinexp"
7567 fi
7568
7569 case "$useperlio" in
7570 $define|true|[yY]*)     dflt='y';;
7571 *) dflt='n';;
7572 esac
7573 cat <<EOM
7574
7575 Previous version of $package used the standard IO mechanisms as defined
7576 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7577 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7578 the default.  This abstraction layer can use AT&T's sfio (if you already
7579 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7580 problems with some extension modules.  Using PerlIO with stdio is safe,
7581 but it is slower than plain stdio and therefore is not the default.
7582
7583 If this doesn't make any sense to you, just accept the default '$dflt'.
7584 EOM
7585 rp='Use the experimental PerlIO abstraction layer?'
7586 . ./myread
7587 case "$ans" in
7588 y|Y) 
7589         val="$define"
7590         ;;     
7591 *)      
7592         echo "Ok, doing things the stdio way"
7593         val="$undef"
7594         ;;
7595 esac
7596 set useperlio
7597 eval $setvar 
7598
7599 case "$vendorprefix" in
7600 '')     d_vendorbin="$undef"
7601         vendorbin=''
7602         vendorbinexp=''
7603         ;;
7604 *)      d_vendorbin="$define"
7605         : determine where vendor-supplied executables go.
7606         case "$vendorbin" in
7607         '') dflt=$vendorprefix/bin ;;
7608         *)      dflt="$vendorbin" ;;
7609         esac
7610         fn=d~+
7611         rp='Pathname for the vendor-supplied executables directory?'
7612         . ./getfile
7613         vendorbin="$ans"
7614         vendorbinexp="$ansexp"
7615         ;;
7616 esac
7617 : Change installation prefix, if necessary.
7618 if $test X"$prefix" != X"$installprefix"; then
7619         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7620 else
7621         installvendorbin="$vendorbinexp"
7622 fi
7623
7624 : see if qgcvt exists
7625 set qgcvt d_qgcvt
7626 eval $inlibc
7627
7628 echo " "
7629
7630 if $test X"$d_longdbl" = X"$define"; then
7631
7632 echo "Checking how to print long doubles..." >&4
7633
7634 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7635         $cat >try.c <<'EOCP'
7636 #include <sys/types.h>
7637 #include <stdio.h>
7638 int main() {
7639   double d = 123.456;
7640   printf("%.3f\n", d);
7641 }
7642 EOCP
7643         set try
7644         if eval $compile; then
7645                 yyy=`./try$exe_ext`
7646                 case "$yyy" in
7647                 123.456)
7648                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7649                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7650                         echo "We will use %f."
7651                         ;;
7652                 esac
7653         fi
7654 fi
7655
7656 if $test X"$sPRIfldbl" = X; then
7657         $cat >try.c <<'EOCP'
7658 #include <sys/types.h>
7659 #include <stdio.h>
7660 int main() {
7661   long double d = 123.456;
7662   printf("%.3llf\n", d);
7663 }
7664 EOCP
7665         set try
7666         if eval $compile; then
7667                 yyy=`./try$exe_ext`
7668                 case "$yyy" in
7669                 123.456)
7670                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7671                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7672                         echo "We will use %llf."
7673                         ;;
7674                 esac
7675         fi
7676 fi
7677
7678 if $test X"$sPRIfldbl" = X; then
7679         $cat >try.c <<'EOCP'
7680 #include <sys/types.h>
7681 #include <stdio.h>
7682 int main() {
7683   long double d = 123.456;
7684   printf("%.3Lf\n", d);
7685 }
7686 EOCP
7687         set try
7688         if eval $compile; then
7689                 yyy=`./try$exe_ext`
7690                 case "$yyy" in
7691                 123.456)
7692                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7693                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7694                         echo "We will use %Lf."
7695                         ;;
7696                 esac
7697         fi
7698 fi
7699
7700 if $test X"$sPRIfldbl" = X; then
7701         $cat >try.c <<'EOCP'
7702 #include <sys/types.h>
7703 #include <stdio.h>
7704 int main() {
7705   long double d = 123.456;
7706   printf("%.3lf\n", d);
7707 }
7708 EOCP
7709         set try
7710         if eval $compile; then
7711                 yyy=`./try$exe_ext`
7712                 case "$yyy" in
7713                 123.456)
7714                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7715                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7716                         echo "We will use %lf."
7717                         ;;
7718                 esac
7719         fi
7720 fi
7721
7722 if $test X"$sPRIfldbl" = X; then
7723         echo "Cannot figure out how to print long doubles." >&4
7724 else
7725         sSCNfldbl=$sPRIfldbl    # expect consistency
7726 fi
7727
7728 $rm -f try try.*
7729
7730 fi # d_longdbl
7731
7732 case "$sPRIfldbl" in
7733 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7734         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7735         d_SCNfldbl="$undef";
7736         ;;
7737 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7738         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7739         d_SCNfldbl="$define";
7740         ;;
7741 esac
7742
7743 : Check how to convert floats to strings.
7744 echo " "
7745 echo "Checking for an efficient way to convert floats to strings."
7746 echo " " > try.c
7747 case "$uselongdouble" in
7748 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7749 esac
7750 case "$d_longdbl" in
7751 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7752 esac
7753 case "$d_PRIgldbl" in
7754 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7755 esac
7756 $cat >>try.c <<EOP
7757 #ifdef TRY_gconvert
7758 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7759 char *myname = "gconvert";
7760 #endif
7761 #ifdef TRY_gcvt
7762 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7763 char *myname = "gcvt";
7764 #endif
7765 #ifdef TRY_qgcvt
7766 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7767 char *myname = "qgcvt";
7768 #define DOUBLETYPE long double
7769 #endif
7770 #ifdef TRY_sprintf
7771 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7772 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7773 #else
7774 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7775 #endif
7776 char *myname = "sprintf";
7777 #endif
7778
7779 #ifndef DOUBLETYPE
7780 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7781 #define DOUBLETYPE long double
7782 #else
7783 #define DOUBLETYPE double
7784 #endif
7785 #endif
7786
7787 #include <stdio.h>
7788
7789 #define I_STDLIB $i_stdlib
7790 #ifdef I_STDLIB
7791 #include <stdlib.h>
7792 #endif
7793
7794 int
7795 checkit(expect, got)
7796 char *expect;
7797 char *got;
7798 {
7799     if (strcmp(expect, got)) {
7800                 printf("%s oddity:  Expected %s, got %s\n",
7801                         myname, expect, got);
7802                 exit(1);
7803         }
7804 }
7805
7806 int main()
7807
7808         char buf[64]; 
7809         buf[63] = '\0';
7810
7811         /* This must be 1st test on (which?) platform */
7812         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7813         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7814         checkit("0.1", buf);
7815
7816         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7817         checkit("1", buf);
7818
7819         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7820         checkit("1.1", buf);
7821
7822         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7823         checkit("1.01", buf);
7824
7825         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7826         checkit("1.001", buf);
7827
7828         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7829         checkit("1.0001", buf);
7830
7831         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7832         checkit("1.00001", buf);
7833
7834         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7835         checkit("1.000001", buf);
7836
7837         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7838         checkit("0", buf);
7839
7840         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7841         checkit("-1", buf);
7842
7843         /* Some Linux gcvt's give 1.e+5 here. */
7844         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7845         checkit("100000", buf);
7846         
7847         /* Some Linux gcvt's give -1.e+5 here. */
7848         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7849         checkit("-100000", buf);
7850
7851         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7852         checkit("123.456", buf);
7853
7854         exit(0);
7855 }
7856 EOP
7857 case "$d_Gconvert" in
7858 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7859 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7860 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7861 *) xxx_list='gconvert gcvt sprintf' ;;
7862 esac
7863
7864 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7865 "$define$define$define")
7866     # for long doubles prefer first qgcvt, then sprintf
7867     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7868     xxx_list="sprintf $xxx_list"
7869     case "$d_qgcvt" in
7870     "$define") xxx_list="qgcvt $xxx_list" ;;
7871     esac
7872     ;;
7873 esac
7874
7875 for xxx_convert in $xxx_list; do
7876         echo "Trying $xxx_convert..."
7877         $rm -f try try$_o
7878         set try -DTRY_$xxx_convert
7879         if eval $compile; then
7880                 echo "$xxx_convert() found." >&4
7881                 if ./try; then
7882                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7883                         break;
7884                 else
7885                         echo "...But $xxx_convert didn't work as I expected."
7886                 fi
7887         else
7888                 echo "$xxx_convert NOT found." >&4
7889         fi
7890 done
7891         
7892 case "$xxx_convert" in
7893 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7894 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7895 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7896 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7897    "$define$define$define")
7898       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7899    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7900    esac
7901    ;;  
7902 esac
7903
7904 : Initialize h_fcntl
7905 h_fcntl=false
7906
7907 : Initialize h_sysfile
7908 h_sysfile=false
7909
7910 : access call always available on UNIX
7911 set access d_access
7912 eval $inlibc
7913
7914 : locate the flags for 'access()'
7915 case "$d_access" in
7916 "$define")
7917         echo " "
7918         $cat >access.c <<'EOCP'
7919 #include <sys/types.h>
7920 #ifdef I_FCNTL
7921 #include <fcntl.h>
7922 #endif
7923 #ifdef I_SYS_FILE
7924 #include <sys/file.h>
7925 #endif
7926 #ifdef I_UNISTD
7927 #include <unistd.h>
7928 #endif
7929 int main() {
7930         exit(R_OK);
7931 }
7932 EOCP
7933         : check sys/file.h first, no particular reason here
7934         if $test `./findhdr sys/file.h` && \
7935                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7936                 h_sysfile=true;
7937                 echo "<sys/file.h> defines the *_OK access constants." >&4
7938         elif $test `./findhdr fcntl.h` && \
7939                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7940                 h_fcntl=true;
7941                 echo "<fcntl.h> defines the *_OK access constants." >&4
7942         elif $test `./findhdr unistd.h` && \
7943                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7944                 echo "<unistd.h> defines the *_OK access constants." >&4
7945         else
7946                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7947         fi
7948         ;;
7949 esac
7950 $rm -f access*
7951
7952 : see if accessx exists
7953 set accessx d_accessx
7954 eval $inlibc
7955
7956 : see if alarm exists
7957 set alarm d_alarm
7958 eval $inlibc
7959
7960 : see if atolf exists
7961 set atolf d_atolf
7962 eval $inlibc
7963
7964 : see if atoll exists
7965 set atoll d_atoll
7966 eval $inlibc
7967
7968 : Look for GNU-cc style attribute checking
7969 echo " "
7970 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7971 $cat >attrib.c <<'EOCP'
7972 #include <stdio.h>
7973 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7974 EOCP
7975 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7976         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7977                 echo "Your C compiler doesn't fully support __attribute__."
7978                 val="$undef"
7979         else
7980                 echo "Your C compiler supports __attribute__."
7981                 val="$define"
7982         fi
7983 else
7984         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7985         val="$undef"
7986 fi
7987 set d_attribut
7988 eval $setvar
7989 $rm -f attrib*
7990
7991 : see if bcmp exists
7992 set bcmp d_bcmp
7993 eval $inlibc
7994
7995 : see if bcopy exists
7996 set bcopy d_bcopy
7997 eval $inlibc
7998
7999 : see if this is a unistd.h system
8000 set unistd.h i_unistd
8001 eval $inhdr
8002
8003 : see if getpgrp exists
8004 set getpgrp d_getpgrp
8005 eval $inlibc
8006
8007 case "$d_getpgrp" in
8008 "$define")
8009         echo " "
8010         echo "Checking to see which flavor of getpgrp is in use..."
8011         $cat >set.c <<EOP
8012 #$i_unistd I_UNISTD
8013 #include <sys/types.h>
8014 #ifdef I_UNISTD
8015 #  include <unistd.h>
8016 #endif
8017 int main()
8018 {
8019         if (getuid() == 0) {
8020                 printf("(I see you are running Configure as super-user...)\n");
8021                 setuid(1);
8022         }
8023 #ifdef TRY_BSD_PGRP
8024         if (getpgrp(1) == 0)
8025                 exit(0);
8026 #else
8027         if (getpgrp() > 0)
8028                 exit(0);
8029 #endif
8030         exit(1);
8031 }
8032 EOP
8033         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8034                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8035                 val="$define"
8036         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8037                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8038                 val="$undef"
8039         else
8040                 echo "I can't seem to compile and run the test program."
8041                 if ./usg; then
8042                         xxx="a USG one, i.e. you use getpgrp()."
8043                 else
8044                         # SVR4 systems can appear rather BSD-ish.
8045                         case "$i_unistd" in
8046                         $undef)
8047                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8048                                 val="$define"
8049                                 ;;
8050                         $define)
8051                                 xxx="probably a USG one, i.e. you use getpgrp()."
8052                                 val="$undef"
8053                                 ;;
8054                         esac
8055                 fi
8056                 echo "Assuming your getpgrp is $xxx" >&4
8057         fi
8058         ;;
8059 *) val="$undef";;
8060 esac
8061 set d_bsdgetpgrp
8062 eval $setvar
8063 $rm -f set set.c
8064
8065 : see if setpgrp exists
8066 set setpgrp d_setpgrp
8067 eval $inlibc
8068
8069 case "$d_setpgrp" in
8070 "$define")
8071         echo " "
8072         echo "Checking to see which flavor of setpgrp is in use..."
8073         $cat >set.c <<EOP
8074 #$i_unistd I_UNISTD
8075 #include <sys/types.h>
8076 #ifdef I_UNISTD
8077 #  include <unistd.h>
8078 #endif
8079 int main()
8080 {
8081         if (getuid() == 0) {
8082                 printf("(I see you are running Configure as super-user...)\n");
8083                 setuid(1);
8084         }
8085 #ifdef TRY_BSD_PGRP
8086         if (-1 == setpgrp(1, 1))
8087                 exit(0);
8088 #else
8089         if (setpgrp() != -1)
8090                 exit(0);
8091 #endif
8092         exit(1);
8093 }
8094 EOP
8095         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8096                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8097                 val="$define"
8098         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8099                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8100                 val="$undef"
8101         else
8102                 echo "(I can't seem to compile and run the test program.)"
8103                 if ./usg; then
8104                         xxx="a USG one, i.e. you use setpgrp()."
8105                 else
8106                         # SVR4 systems can appear rather BSD-ish.
8107                         case "$i_unistd" in
8108                         $undef)
8109                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8110                                 val="$define"
8111                                 ;;
8112                         $define)
8113                                 xxx="probably a USG one, i.e. you use setpgrp()."
8114                                 val="$undef"
8115                                 ;;
8116                         esac
8117                 fi
8118                 echo "Assuming your setpgrp is $xxx" >&4
8119         fi
8120         ;;
8121 *) val="$undef";;
8122 esac
8123 set d_bsdsetpgrp
8124 eval $setvar
8125 $rm -f set set.c
8126 : see if bzero exists
8127 set bzero d_bzero
8128 eval $inlibc
8129
8130 : see if signal is declared as pointer to function returning int or void
8131 echo " "
8132 xxx=`./findhdr signal.h`
8133 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8134 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8135         echo "You have int (*signal())() instead of void." >&4
8136         val="$undef"
8137 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8138         echo "You have void (*signal())()." >&4
8139         val="$define"
8140 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8141         echo "You have int (*signal())() instead of void." >&4
8142         val="$undef"
8143 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8144         echo "You have void (*signal())()." >&4
8145         val="$define"
8146 else
8147         case "$d_voidsig" in
8148         '')
8149         echo "I can't determine whether signal handler returns void or int..." >&4
8150                 dflt=void
8151                 rp="What type does your signal handler return?"
8152                 . ./myread
8153                 case "$ans" in
8154                 v*) val="$define";;
8155                 *) val="$undef";;
8156                 esac;;
8157         "$define")
8158                 echo "As you already told me, signal handler returns void." >&4
8159                 val="$define"
8160                 ;;
8161         *)      echo "As you already told me, signal handler returns int." >&4
8162                 val="$undef"
8163                 ;;
8164         esac
8165 fi
8166 set d_voidsig
8167 eval $setvar
8168 case "$d_voidsig" in
8169 "$define") signal_t="void";;
8170 *) signal_t="int";;
8171 esac
8172 $rm -f $$.tmp
8173
8174 : check for ability to cast large floats to 32-bit ints.
8175 echo " "
8176 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8177 if $test "$intsize" -ge 4; then
8178         xxx=int
8179 else
8180         xxx=long
8181 fi
8182 $cat >try.c <<EOCP
8183 #include <stdio.h>
8184 #include <sys/types.h>
8185 #include <signal.h>
8186 $signal_t blech(s) int s; { exit(3); }
8187 int main()
8188 {
8189         $xxx i32;
8190         double f, g;
8191         int result = 0;
8192         char str[16];
8193         signal(SIGFPE, blech);
8194
8195         /* Don't let compiler optimize the test away.  Store the number 
8196            in a writable string for gcc to pass to sscanf under HP/UX.
8197         */
8198         sprintf(str, "2147483647");
8199         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8200         g = 10 * f;
8201         i32  = ($xxx) g;
8202
8203         /* x86 processors will probably give 0x8000 0000, which is a
8204        sign change.  We don't want that.  We want to mimic SPARC
8205            behavior here, which is to preserve the sign and give
8206            back 0x7fff ffff.
8207         */
8208         if (i32 != ($xxx) f)
8209                 result |= 1;
8210         exit(result);
8211 }
8212 EOCP
8213 set try
8214 if eval $compile_ok; then
8215         ./try
8216         yyy=$?
8217 else
8218         echo "(I can't seem to compile the test program--assuming it can't)"
8219         yyy=1
8220 fi
8221 case "$yyy" in
8222 0)      val="$define"
8223         echo "Yup, it can."
8224         ;;
8225 *)      val="$undef"
8226         echo "Nope, it can't."
8227         ;;
8228 esac
8229 set d_casti32
8230 eval $setvar
8231 $rm -f try try.*
8232
8233 : check for ability to cast negative floats to unsigned
8234 echo " "
8235 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8236 $cat >try.c <<EOCP
8237 #include <stdio.h>
8238 #include <sys/types.h>
8239 #include <signal.h>
8240 $signal_t blech(s) int s; { exit(7); }
8241 $signal_t blech_in_list(s) int s; { exit(4); }
8242 unsigned long dummy_long(p) unsigned long p; { return p; }
8243 unsigned int dummy_int(p) unsigned int p; { return p; }
8244 unsigned short dummy_short(p) unsigned short p; { return p; }
8245 int main()
8246 {
8247         double f;
8248         unsigned long along;
8249         unsigned int aint;
8250         unsigned short ashort;
8251         int result = 0;
8252         char str[16];
8253         
8254         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8255            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8256            optimized the whole file away
8257         */
8258         /* Store the number in a writable string for gcc to pass to 
8259            sscanf under HP/UX.
8260         */
8261         sprintf(str, "-123");
8262         sscanf(str, "%lf", &f);  /* f = -123.; */
8263
8264         signal(SIGFPE, blech);
8265         along = (unsigned long)f;
8266         aint = (unsigned int)f;
8267         ashort = (unsigned short)f;
8268         if (along != (unsigned long)-123)
8269                 result |= 1;
8270         if (aint != (unsigned int)-123)
8271                 result |= 1;
8272         if (ashort != (unsigned short)-123)
8273                 result |= 1;
8274         sprintf(str, "1073741824.");
8275         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8276         f = f + f;
8277         along = 0;
8278         along = (unsigned long)f;
8279         if (along != 0x80000000)
8280                 result |= 2;
8281         f -= 1.;
8282         along = 0;
8283         along = (unsigned long)f;
8284         if (along != 0x7fffffff)
8285                 result |= 1;
8286         f += 2.;
8287         along = 0;
8288         along = (unsigned long)f;
8289         if (along != 0x80000001)
8290                 result |= 2;
8291         if (result)
8292                 exit(result);
8293         signal(SIGFPE, blech_in_list);
8294         sprintf(str, "123.");
8295         sscanf(str, "%lf", &f);  /* f = 123.; */
8296         along = dummy_long((unsigned long)f);
8297         aint = dummy_int((unsigned int)f);
8298         ashort = dummy_short((unsigned short)f);
8299         if (along != (unsigned long)123)
8300                 result |= 4;
8301         if (aint != (unsigned int)123)
8302                 result |= 4;
8303         if (ashort != (unsigned short)123)
8304                 result |= 4;
8305         exit(result);
8306
8307 }
8308 EOCP
8309 set try
8310 if eval $compile_ok; then
8311         ./try
8312         castflags=$?
8313 else
8314         echo "(I can't seem to compile the test program--assuming it can't)"
8315         castflags=7
8316 fi
8317 case "$castflags" in
8318 0)      val="$define"
8319         echo "Yup, it can."
8320         ;;
8321 *)      val="$undef"
8322         echo "Nope, it can't."
8323         ;;
8324 esac
8325 set d_castneg
8326 eval $setvar
8327 $rm -f try.*
8328
8329 : see if vprintf exists
8330 echo " "
8331 if set vprintf val -f d_vprintf; eval $csym; $val; then
8332         echo 'vprintf() found.' >&4
8333         val="$define"
8334         $cat >vprintf.c <<'EOF'
8335 #include <varargs.h>
8336
8337 int main() { xxx("foo"); }
8338
8339 xxx(va_alist)
8340 va_dcl
8341 {
8342         va_list args;
8343         char buf[10];
8344
8345         va_start(args);
8346         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8347 }
8348 EOF
8349         set vprintf
8350         if eval $compile && ./vprintf; then
8351                 echo "Your vsprintf() returns (int)." >&4
8352                 val2="$undef"
8353         else
8354                 echo "Your vsprintf() returns (char*)." >&4
8355                 val2="$define"
8356         fi
8357 else
8358         echo 'vprintf() NOT found.' >&4
8359                 val="$undef"
8360                 val2="$undef"
8361 fi
8362 set d_vprintf
8363 eval $setvar
8364 val=$val2
8365 set d_charvspr
8366 eval $setvar
8367
8368 : see if chown exists
8369 set chown d_chown
8370 eval $inlibc
8371
8372 : see if chroot exists
8373 set chroot d_chroot
8374 eval $inlibc
8375
8376 : see if chsize exists
8377 set chsize d_chsize
8378 eval $inlibc
8379
8380 : check for const keyword
8381 echo " "
8382 echo 'Checking to see if your C compiler knows about "const"...' >&4
8383 $cat >const.c <<'EOCP'
8384 typedef struct spug { int drokk; } spug;
8385 int main()
8386 {
8387         const char *foo;
8388         const spug y;
8389 }
8390 EOCP
8391 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8392         val="$define"
8393         echo "Yup, it does."
8394 else
8395         val="$undef"
8396         echo "Nope, it doesn't."
8397 fi
8398 set d_const
8399 eval $setvar
8400
8401 : see if crypt exists
8402 echo " "
8403 if set crypt val -f d_crypt; eval $csym; $val; then
8404         echo 'crypt() found.' >&4
8405         val="$define"
8406         cryptlib=''
8407 else
8408         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8409         if $test -z "$cryptlib"; then
8410                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8411         else
8412                 cryptlib=-lcrypt
8413         fi
8414         if $test -z "$cryptlib"; then
8415                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8416         else
8417                 cryptlib=-lcrypt
8418         fi
8419         if $test -z "$cryptlib"; then
8420                 cryptlib=`./loc libcrypt$_a "" $libpth`
8421         else
8422                 cryptlib=-lcrypt
8423         fi
8424         if $test -z "$cryptlib"; then
8425                 echo 'crypt() NOT found.' >&4
8426                 val="$undef"
8427         else
8428                 val="$define"
8429         fi
8430 fi
8431 set d_crypt
8432 eval $setvar
8433
8434 : get csh whereabouts
8435 case "$csh" in
8436 'csh') val="$undef" ;;
8437 *) val="$define" ;;
8438 esac
8439 set d_csh
8440 eval $setvar
8441 : Respect a hint or command line value for full_csh.
8442 case "$full_csh" in
8443 '') full_csh=$csh ;;
8444 esac
8445
8446 : see if cuserid exists
8447 set cuserid d_cuserid
8448 eval $inlibc
8449
8450 : see if this is a limits.h system
8451 set limits.h i_limits
8452 eval $inhdr
8453
8454 : see if this is a float.h system
8455 set float.h i_float
8456 eval $inhdr
8457
8458 : See if number of significant digits in a double precision number is known
8459 echo " "
8460 $cat >dbl_dig.c <<EOM
8461 #$i_limits I_LIMITS
8462 #$i_float I_FLOAT
8463 #ifdef I_LIMITS
8464 #include <limits.h>
8465 #endif
8466 #ifdef I_FLOAT
8467 #include <float.h>
8468 #endif
8469 #ifdef DBL_DIG
8470 printf("Contains DBL_DIG");
8471 #endif
8472 EOM
8473 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8474 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8475         echo "DBL_DIG found." >&4
8476         val="$define"
8477 else
8478         echo "DBL_DIG NOT found." >&4
8479         val="$undef"
8480 fi
8481 $rm -f dbl_dig.?
8482 set d_dbl_dig
8483 eval $setvar
8484
8485 : see if difftime exists
8486 set difftime d_difftime
8487 eval $inlibc
8488
8489 : see if this is a dirent system
8490 echo " "
8491 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8492         val="$define"
8493         echo "<dirent.h> found." >&4
8494 else
8495         val="$undef"
8496         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8497                 echo "<sys/dir.h> found." >&4
8498                 echo " "
8499         else
8500                 xinc=`./findhdr sys/ndir.h`
8501         fi
8502         echo "<dirent.h> NOT found." >&4
8503 fi
8504 set i_dirent
8505 eval $setvar
8506
8507 : Look for type of directory structure.
8508 echo " "
8509 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8510
8511 case "$direntrytype" in
8512 ''|' ')
8513         case "$i_dirent" in
8514         $define) guess1='struct dirent' ;;
8515         *) guess1='struct direct'  ;;
8516         esac
8517         ;;
8518 *)      guess1="$direntrytype"
8519         ;;
8520 esac
8521
8522 case "$guess1" in
8523 'struct dirent') guess2='struct direct' ;;
8524 *) guess2='struct dirent' ;;
8525 esac
8526                 
8527 if $contains "$guess1" try.c >/dev/null 2>&1; then
8528         direntrytype="$guess1"
8529         echo "Your directory entries are $direntrytype." >&4
8530 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8531         direntrytype="$guess2"
8532         echo "Your directory entries seem to be $direntrytype." >&4
8533 else
8534         echo "I don't recognize your system's directory entries." >&4
8535         rp="What type is used for directory entries on this system?"
8536         dflt="$guess1"
8537         . ./myread
8538         direntrytype="$ans"
8539 fi
8540 $rm -f try.c
8541
8542
8543 : see if the directory entry stores field length
8544 echo " "
8545 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8546 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8547         echo "Good, your directory entry keeps length information in d_namlen." >&4
8548         val="$define"
8549 else
8550         echo "Your directory entry does not know about the d_namlen field." >&4
8551         val="$undef"
8552 fi
8553 set d_dirnamlen
8554 eval $setvar
8555 $rm -f try.c
8556
8557 : see if dlerror exists
8558 xxx_runnm="$runnm"
8559 runnm=false
8560 set dlerror d_dlerror
8561 eval $inlibc
8562 runnm="$xxx_runnm"
8563
8564 : see if dlfcn is available
8565 set dlfcn.h i_dlfcn
8566 eval $inhdr
8567
8568 case "$usedl" in
8569 $define|y|true)
8570         $cat << EOM
8571
8572 On a few systems, the dynamically loaded modules that perl generates and uses
8573 will need a different extension than shared libs. The default will probably
8574 be appropriate.
8575
8576 EOM
8577         case "$dlext" in
8578         '')     dflt="$so" ;;
8579         *)      dflt="$dlext" ;;
8580         esac
8581         rp='What is the extension of dynamically loaded modules'
8582         . ./myread
8583         dlext="$ans"
8584         ;;
8585 *)
8586         dlext="none"
8587         ;;
8588 esac
8589
8590 : Check if dlsym need a leading underscore
8591 echo " "
8592 val="$undef"
8593
8594 case "$dlsrc" in
8595 dl_dlopen.xs)
8596         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8597         $cat >dyna.c <<'EOM'
8598 fred () { }
8599 EOM
8600
8601 $cat >fred.c<<EOM
8602
8603 #include <stdio.h>
8604 #$i_dlfcn I_DLFCN
8605 #ifdef I_DLFCN
8606 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8607 #else
8608 #include <sys/types.h>
8609 #include <nlist.h>
8610 #include <link.h>
8611 #endif
8612
8613 extern int fred() ;
8614
8615 int main()
8616 {
8617     void * handle ;
8618     void * symbol ;
8619 #ifndef RTLD_LAZY
8620     int mode = 1 ;
8621 #else
8622     int mode = RTLD_LAZY ;
8623 #endif
8624     handle = dlopen("./dyna.$dlext", mode) ;
8625     if (handle == NULL) {
8626         printf ("1\n") ;
8627         fflush (stdout) ;
8628         exit(0);
8629     }
8630     symbol = dlsym(handle, "fred") ;
8631     if (symbol == NULL) {
8632         /* try putting a leading underscore */
8633         symbol = dlsym(handle, "_fred") ;
8634         if (symbol == NULL) {
8635             printf ("2\n") ;
8636             fflush (stdout) ;
8637             exit(0);
8638         }
8639         printf ("3\n") ;
8640     }
8641     else
8642         printf ("4\n") ;
8643     fflush (stdout) ;
8644     exit(0);
8645 }
8646 EOM
8647         : Call the object file tmp-dyna.o in case dlext=o.
8648         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8649                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8650                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8651                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8652                 xxx=`./fred`
8653                 case $xxx in
8654                 1)      echo "Test program failed using dlopen." >&4
8655                         echo "Perhaps you should not use dynamic loading." >&4;;
8656                 2)      echo "Test program failed using dlsym." >&4
8657                         echo "Perhaps you should not use dynamic loading." >&4;;
8658                 3)      echo "dlsym needs a leading underscore" >&4
8659                         val="$define" ;;
8660                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8661                 esac
8662         else
8663                 echo "I can't compile and run the test program." >&4
8664                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8665         fi
8666         ;;
8667 esac
8668                 
8669 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8670
8671 set d_dlsymun
8672 eval $setvar
8673
8674 hasproto='varname=$1; func=$2; shift; shift;
8675 while $test $# -ge 2; do
8676         case "$1" in
8677         $define) echo "#include <$2>";;
8678         esac ;
8679     shift 2;
8680 done > try.c;
8681 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8682 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8683         echo "$func() prototype found.";
8684         val="$define";
8685 else
8686         echo "$func() prototype NOT found.";
8687         val="$undef";
8688 fi;
8689 set $varname;
8690 eval $setvar;
8691 $rm -f try.c tryout.c'
8692
8693 : see if prototype for drand48 is available
8694 echo " "
8695 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8696 eval $hasproto
8697
8698 : see if dup2 exists
8699 set dup2 d_dup2
8700 eval $inlibc
8701
8702 : see if eaccess exists
8703 set eaccess d_eaccess
8704 eval $inlibc
8705
8706 : see if endgrent exists
8707 set endgrent d_endgrent
8708 eval $inlibc
8709
8710 : see if endhostent exists
8711 set endhostent d_endhent
8712 eval $inlibc
8713
8714 : see if endnetent exists
8715 set endnetent d_endnent
8716 eval $inlibc
8717
8718 : see if endprotoent exists
8719 set endprotoent d_endpent
8720 eval $inlibc
8721
8722 : see if endpwent exists
8723 set endpwent d_endpwent
8724 eval $inlibc
8725
8726 : see if endservent exists
8727 set endservent d_endsent
8728 eval $inlibc
8729
8730 : Locate the flags for 'open()'
8731 echo " "
8732 $cat >open3.c <<'EOCP'
8733 #include <sys/types.h>
8734 #ifdef I_FCNTL
8735 #include <fcntl.h>
8736 #endif
8737 #ifdef I_SYS_FILE
8738 #include <sys/file.h>
8739 #endif
8740 int main() {
8741         if(O_RDONLY);
8742 #ifdef O_TRUNC
8743         exit(0);
8744 #else
8745         exit(1);
8746 #endif
8747 }
8748 EOCP
8749 : check sys/file.h first to get FREAD on Sun
8750 if $test `./findhdr sys/file.h` && \
8751                 set open3 -DI_SYS_FILE && eval $compile; then
8752         h_sysfile=true;
8753         echo "<sys/file.h> defines the O_* constants..." >&4
8754         if ./open3; then
8755                 echo "and you have the 3 argument form of open()." >&4
8756                 val="$define"
8757         else
8758                 echo "but not the 3 argument form of open().  Oh, well." >&4
8759                 val="$undef"
8760         fi
8761 elif $test `./findhdr fcntl.h` && \
8762                 set open3 -DI_FCNTL && eval $compile; then
8763         h_fcntl=true;
8764         echo "<fcntl.h> defines the O_* constants..." >&4
8765         if ./open3; then
8766                 echo "and you have the 3 argument form of open()." >&4
8767                 val="$define"
8768         else
8769                 echo "but not the 3 argument form of open().  Oh, well." >&4
8770                 val="$undef"
8771         fi
8772 else
8773         val="$undef"
8774         echo "I can't find the O_* constant definitions!  You got problems." >&4
8775 fi
8776 set d_open3
8777 eval $setvar
8778 $rm -f open3*
8779
8780 : see which of string.h or strings.h is needed
8781 echo " "
8782 strings=`./findhdr string.h`
8783 if $test "$strings" && $test -r "$strings"; then
8784         echo "Using <string.h> instead of <strings.h>." >&4
8785         val="$define"
8786 else
8787         val="$undef"
8788         strings=`./findhdr strings.h`
8789         if $test "$strings" && $test -r "$strings"; then
8790                 echo "Using <strings.h> instead of <string.h>." >&4
8791         else
8792                 echo "No string header found -- You'll surely have problems." >&4
8793         fi
8794 fi
8795 set i_string
8796 eval $setvar
8797 case "$i_string" in
8798 "$undef") strings=`./findhdr strings.h`;;
8799 *)        strings=`./findhdr string.h`;;
8800 esac
8801
8802 : check for non-blocking I/O stuff
8803 case "$h_sysfile" in
8804 true) echo "#include <sys/file.h>" > head.c;;
8805 *)
8806         case "$h_fcntl" in
8807         true) echo "#include <fcntl.h>" > head.c;;
8808         *) echo "#include <sys/fcntl.h>" > head.c;;
8809         esac
8810         ;;
8811 esac
8812 echo " "
8813 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8814 case "$o_nonblock" in
8815 '')
8816         $cat head.c > try.c
8817         $cat >>try.c <<'EOCP'
8818 #include <stdio.h>
8819 int main() {
8820 #ifdef O_NONBLOCK
8821         printf("O_NONBLOCK\n");
8822         exit(0);
8823 #endif
8824 #ifdef O_NDELAY
8825         printf("O_NDELAY\n");
8826         exit(0);
8827 #endif
8828 #ifdef FNDELAY
8829         printf("FNDELAY\n");
8830         exit(0);
8831 #endif
8832         exit(0);
8833 }
8834 EOCP
8835         set try
8836         if eval $compile_ok; then
8837                 o_nonblock=`./try`
8838                 case "$o_nonblock" in
8839                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8840                 *) echo "Seems like we can use $o_nonblock.";;
8841                 esac
8842         else
8843                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8844         fi
8845         ;;
8846 *) echo "Using $hint value $o_nonblock.";;
8847 esac
8848 $rm -f try try.* .out core
8849
8850 echo " "
8851 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8852 case "$eagain" in
8853 '')
8854         $cat head.c > try.c
8855         $cat >>try.c <<EOCP
8856 #include <errno.h>
8857 #include <sys/types.h>
8858 #include <signal.h>
8859 #include <stdio.h> 
8860 #define MY_O_NONBLOCK $o_nonblock
8861 #ifndef errno  /* XXX need better Configure test */
8862 extern int errno;
8863 #endif
8864 #$i_unistd I_UNISTD
8865 #ifdef I_UNISTD
8866 #include <unistd.h>
8867 #endif
8868 #$i_string I_STRING
8869 #ifdef I_STRING
8870 #include <string.h>
8871 #else
8872 #include <strings.h>
8873 #endif
8874 $signal_t blech(x) int x; { exit(3); }
8875 EOCP
8876         $cat >> try.c <<'EOCP'
8877 int main()
8878 {
8879         int pd[2];
8880         int pu[2];
8881         char buf[1];
8882         char string[100];
8883
8884         pipe(pd);       /* Down: child -> parent */
8885         pipe(pu);       /* Up: parent -> child */
8886         if (0 != fork()) {
8887                 int ret;
8888                 close(pd[1]);   /* Parent reads from pd[0] */
8889                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8890                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8891                         exit(1);
8892                 signal(SIGALRM, blech);
8893                 alarm(5);
8894                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8895                         exit(2);
8896                 sprintf(string, "%d\n", ret);
8897                 write(2, string, strlen(string));
8898                 alarm(0);
8899 #ifdef EAGAIN
8900                 if (errno == EAGAIN) {
8901                         printf("EAGAIN\n");
8902                         goto ok;
8903                 }
8904 #endif
8905 #ifdef EWOULDBLOCK
8906                 if (errno == EWOULDBLOCK)
8907                         printf("EWOULDBLOCK\n");
8908 #endif
8909         ok:
8910                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8911                 sleep(2);                               /* Give it time to close our pipe */
8912                 alarm(5);
8913                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8914                 alarm(0);
8915                 sprintf(string, "%d\n", ret);
8916                 write(3, string, strlen(string));
8917                 exit(0);
8918         }
8919
8920         close(pd[0]);                   /* We write to pd[1] */
8921         close(pu[1]);                   /* We read from pu[0] */
8922         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8923         close(pd[1]);                   /* Pipe pd is now fully closed! */
8924         exit(0);                                /* Bye bye, thank you for playing! */
8925 }
8926 EOCP
8927         set try
8928         if eval $compile_ok; then
8929                 echo "$startsh" >mtry
8930                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8931                 chmod +x mtry
8932                 ./mtry >/dev/null 2>&1
8933                 case $? in
8934                 0) eagain=`$cat try.out`;;
8935                 1) echo "Could not perform non-blocking setting!";;
8936                 2) echo "I did a successful read() for something that was not there!";;
8937                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8938                 *) echo "Something terribly wrong happened during testing.";;
8939                 esac
8940                 rd_nodata=`$cat try.ret`
8941                 echo "A read() system call with no data present returns $rd_nodata."
8942                 case "$rd_nodata" in
8943                 0|-1) ;;
8944                 *)
8945                         echo "(That's peculiar, fixing that to be -1.)"
8946                         rd_nodata=-1
8947                         ;;
8948                 esac
8949                 case "$eagain" in
8950                 '')
8951                         echo "Forcing errno EAGAIN on read() with no data available."
8952                         eagain=EAGAIN
8953                         ;;
8954                 *)
8955                         echo "Your read() sets errno to $eagain when no data is available."
8956                         ;;
8957                 esac
8958                 status=`$cat try.err`
8959                 case "$status" in
8960                 0) echo "And it correctly returns 0 to signal EOF.";;
8961                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8962                 *) echo "However, your read() returns '$status' on EOF??";;
8963                 esac
8964                 val="$define"
8965                 if test "$status" = "$rd_nodata"; then
8966                         echo "WARNING: you can't distinguish between EOF and no data!"
8967                         val="$undef"
8968                 fi
8969         else
8970                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8971                 eagain=EAGAIN
8972         fi
8973         set d_eofnblk
8974         eval $setvar
8975         ;;
8976 *)
8977         echo "Using $hint value $eagain."
8978         echo "Your read() returns $rd_nodata when no data is present."
8979         case "$d_eofnblk" in
8980         "$define") echo "And you can see EOF because read() returns 0.";;
8981         "$undef") echo "But you can't see EOF status from read() returned value.";;
8982         *)
8983                 echo "(Assuming you can't see EOF status from read anyway.)"
8984                 d_eofnblk=$undef
8985                 ;;
8986         esac
8987         ;;
8988 esac
8989 $rm -f try try.* .out core head.c mtry
8990
8991 : see if fchmod exists
8992 set fchmod d_fchmod
8993 eval $inlibc
8994
8995 : see if fchown exists
8996 set fchown d_fchown
8997 eval $inlibc
8998
8999 : see if this is an fcntl system
9000 set fcntl d_fcntl
9001 eval $inlibc
9002
9003 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9004 while $test $# -ge 2; do
9005         case "$1" in
9006         $define) echo "#include <$2>";;
9007         esac ;
9008     shift 2;
9009 done > try.c;
9010 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9011 set try;
9012 if eval $compile; then
9013         val="$define";
9014 else
9015         val="$undef";
9016 fi;
9017 set $varname;
9018 eval $setvar;
9019 $rm -f try.c try.o'
9020
9021 socketlib=''
9022 sockethdr=''
9023 : see whether socket exists
9024 echo " "
9025 $echo $n "Hmm... $c" >&4
9026 if set socket val -f d_socket; eval $csym; $val; then
9027         echo "Looks like you have Berkeley networking support." >&4
9028         d_socket="$define"
9029         if set setsockopt val -f; eval $csym; $val; then
9030                 d_oldsock="$undef"
9031         else
9032                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9033                 d_oldsock="$define"
9034         fi
9035 else
9036         if $contains socklib libc.list >/dev/null 2>&1; then
9037                 echo "Looks like you have Berkeley networking support." >&4
9038                 d_socket="$define"
9039                 : we will have to assume that it supports the 4.2 BSD interface
9040                 d_oldsock="$undef"
9041         else
9042                 echo "You don't have Berkeley networking in libc$_a..." >&4
9043                 if test "X$d_socket" = "X$define"; then
9044                    echo "...but you seem to believe that you have sockets." >&4
9045                 else
9046                         for net in net socket
9047                         do
9048                                 if test -f /usr/lib/lib$net$_a; then
9049                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9050                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9051                                         if $contains socket libc.list >/dev/null 2>&1; then
9052                                                 d_socket="$define"
9053                                                 socketlib="-l$net"
9054                                                 case "$net" in
9055                                                 net)
9056                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9057                                                         sockethdr="-I/usr/netinclude"
9058                                                         ;;
9059                                                 esac
9060                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9061                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9062                                                         d_oldsock="$undef"
9063                                                 else
9064                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9065                                                         d_oldsock="$define"
9066                                                 fi
9067                                                 break
9068                                         fi
9069                                 fi
9070                         done
9071                         if test "X$d_socket" != "X$define"; then
9072                            echo "or anywhere else I see." >&4
9073                            d_socket="$undef"
9074                            d_oldsock="$undef"
9075                         fi
9076                 fi
9077         fi
9078 fi
9079
9080 : see if socketpair exists
9081 set socketpair d_sockpair
9082 eval $inlibc
9083
9084
9085 echo " "
9086 echo "Checking the availability of certain socket constants..." >& 4
9087 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9088         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9089         $cat >try.c <<EOF
9090 #include <sys/types.h>
9091 #include <sys/socket.h>
9092 int main() {
9093     int i = $ENUM;
9094 }
9095 EOF
9096         val="$undef"
9097         set try; if eval $compile; then
9098                 val="$define"
9099         fi
9100         set d_${enum}; eval $setvar
9101         $rm -f try.c try
9102 done
9103
9104 : see if sys/select.h has to be included
9105 set sys/select.h i_sysselct
9106 eval $inhdr
9107
9108 : see if we should include time.h, sys/time.h, or both
9109 echo " "
9110 if test "X$timeincl" = X; then
9111         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9112         $echo $n "I'm now running the test program...$c"
9113         $cat >try.c <<'EOCP'
9114 #include <sys/types.h>
9115 #ifdef I_TIME
9116 #include <time.h>
9117 #endif
9118 #ifdef I_SYSTIME
9119 #ifdef SYSTIMEKERNEL
9120 #define KERNEL
9121 #endif
9122 #include <sys/time.h>
9123 #endif
9124 #ifdef I_SYSSELECT
9125 #include <sys/select.h>
9126 #endif
9127 int main()
9128 {
9129         struct tm foo;
9130 #ifdef S_TIMEVAL
9131         struct timeval bar;
9132 #endif
9133 #ifdef S_TIMEZONE
9134         struct timezone tzp;
9135 #endif
9136         if (foo.tm_sec == foo.tm_sec)
9137                 exit(0);
9138 #ifdef S_TIMEVAL
9139         if (bar.tv_sec == bar.tv_sec)
9140                 exit(0);
9141 #endif
9142         exit(1);
9143 }
9144 EOCP
9145         flags=''
9146         for s_timezone in '-DS_TIMEZONE' ''; do
9147         sysselect=''
9148         for s_timeval in '-DS_TIMEVAL' ''; do
9149         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9150         for i_time in '' '-DI_TIME'; do
9151         for i_systime in '-DI_SYSTIME' ''; do
9152                 case "$flags" in
9153                 '') $echo $n ".$c"
9154                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9155                         if eval $compile; then
9156                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9157                                 shift
9158                                 flags="$*"
9159                                 echo " "
9160                                 $echo $n "Succeeded with $flags$c"
9161                         fi
9162                         ;;
9163                 esac
9164         done
9165         done
9166         done
9167         done
9168         done
9169         timeincl=''
9170         echo " "
9171         case "$flags" in
9172         *SYSTIMEKERNEL*) i_systimek="$define"
9173                 timeincl=`./findhdr sys/time.h`
9174                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9175         *) i_systimek="$undef";;
9176         esac
9177         case "$flags" in
9178         *I_TIME*) i_time="$define"
9179                 timeincl=`./findhdr time.h`" $timeincl"
9180                 echo "We'll include <time.h>." >&4;;
9181         *) i_time="$undef";;
9182         esac
9183         case "$flags" in
9184         *I_SYSTIME*) i_systime="$define"
9185                 timeincl=`./findhdr sys/time.h`" $timeincl"
9186                 echo "We'll include <sys/time.h>." >&4;;
9187         *) i_systime="$undef";;
9188         esac
9189         $rm -f try.c try
9190 fi
9191
9192 : check for fd_set items
9193 $cat <<EOM
9194
9195 Checking to see how well your C compiler handles fd_set and friends ...
9196 EOM
9197 $cat >fd_set.c <<EOCP
9198 #$i_systime I_SYS_TIME
9199 #$i_sysselct I_SYS_SELECT
9200 #$d_socket HAS_SOCKET
9201 #include <sys/types.h>
9202 #ifdef HAS_SOCKET
9203 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9204 #endif
9205 #ifdef I_SYS_TIME
9206 #include <sys/time.h>
9207 #endif
9208 #ifdef I_SYS_SELECT
9209 #include <sys/select.h>
9210 #endif
9211 int main() {
9212         fd_set fds;
9213
9214 #ifdef TRYBITS
9215         if(fds.fds_bits);
9216 #endif
9217
9218 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9219         exit(0);
9220 #else
9221         exit(1);
9222 #endif
9223 }
9224 EOCP
9225 set fd_set -DTRYBITS
9226 if eval $compile; then
9227         d_fds_bits="$define"
9228         d_fd_set="$define"
9229         echo "Well, your system knows about the normal fd_set typedef..." >&4
9230         if ./fd_set; then
9231                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9232                 d_fd_macros="$define"
9233         else
9234                 $cat >&4 <<'EOM'
9235 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9236 EOM
9237                 d_fd_macros="$undef"
9238         fi
9239 else
9240         $cat <<'EOM'
9241 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9242 EOM
9243         set fd_set
9244         if eval $compile; then
9245                 d_fds_bits="$undef"
9246                 d_fd_set="$define"
9247                 echo "Well, your system has some sort of fd_set available..." >&4
9248                 if ./fd_set; then
9249                         echo "and you have the normal fd_set macros." >&4
9250                         d_fd_macros="$define"
9251                 else
9252                         $cat <<'EOM'
9253 but not the normal fd_set macros!  Gross!  More work for me...
9254 EOM
9255                         d_fd_macros="$undef"
9256                 fi
9257         else
9258         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9259                 d_fd_set="$undef"
9260                 d_fds_bits="$undef"
9261                 d_fd_macros="$undef"
9262         fi
9263 fi
9264 $rm -f fd_set*
9265
9266 : see if fgetpos exists
9267 set fgetpos d_fgetpos
9268 eval $inlibc
9269
9270 : see if flock exists
9271 set flock d_flock
9272 eval $inlibc
9273
9274 : see if fork exists
9275 set fork d_fork
9276 eval $inlibc
9277
9278 : see if pathconf exists
9279 set pathconf d_pathconf
9280 eval $inlibc
9281
9282 : see if fpathconf exists
9283 set fpathconf d_fpathconf
9284 eval $inlibc
9285
9286
9287 : check for fpos64_t
9288 echo " "
9289 echo "Checking to see if you have fpos64_t..." >&4
9290 $cat >try.c <<EOCP
9291 #include <stdio.h>
9292 int main() { fpos64_t x = 7; }
9293 EOCP
9294 set try
9295 if eval $compile; then
9296         val="$define"
9297         echo "You have fpos64_t."
9298 else
9299         val="$undef"
9300         echo "You do not have fpos64_t."
9301         case "$fpossize" in
9302         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9303         esac
9304 fi
9305 $rm -f try.* try
9306 set d_fpos64_t
9307 eval $setvar
9308
9309 : see if frexpl exists
9310 set frexpl d_frexpl
9311 eval $inlibc
9312
9313 hasstruct='varname=$1; struct=$2; shift; shift;
9314 while $test $# -ge 2; do
9315         case "$1" in
9316         $define) echo "#include <$2>";;
9317         esac ;
9318     shift 2;
9319 done > try.c;
9320 echo "int main () { struct $struct foo; }" >> try.c;
9321 set try;
9322 if eval $compile; then
9323         val="$define";
9324 else
9325         val="$undef";
9326 fi;
9327 set $varname;
9328 eval $setvar;
9329 $rm -f try.c try.o'
9330
9331 : see if this is a sys/param system
9332 set sys/param.h i_sysparam
9333 eval $inhdr
9334
9335 : see if this is a sys/mount.h system
9336 set sys/mount.h i_sysmount
9337 eval $inhdr
9338
9339 : see if sys/types.h has to be included
9340 set sys/types.h i_systypes
9341 eval $inhdr
9342
9343
9344 echo " "
9345 echo "Checking to see if your system supports struct fs_data..." >&4
9346 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9347 eval $hasstruct
9348 case "$d_fs_data_s" in
9349 "$define")      echo "Yes, it does."   ;;
9350 *)              echo "No, it doesn't." ;;
9351 esac
9352
9353 : see if fseeko exists
9354 set fseeko d_fseeko
9355 eval $inlibc
9356 case "$longsize" in
9357 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9358 esac
9359
9360 : see if fsetpos exists
9361 set fsetpos d_fsetpos
9362 eval $inlibc
9363
9364
9365 : see if fstatfs exists
9366 set fstatfs d_fstatfs
9367 eval $inlibc
9368
9369
9370 : see if statvfs exists
9371 set statvfs d_statvfs
9372 eval $inlibc
9373
9374 : see if fstatvfs exists
9375 set fstatvfs d_fstatvfs
9376 eval $inlibc
9377
9378
9379 : see if ftello exists
9380 set ftello d_ftello
9381 eval $inlibc
9382 case "$longsize" in
9383 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9384 esac
9385
9386 : see if getcwd exists
9387 set getcwd d_getcwd
9388 eval $inlibc
9389
9390 : see if getespwnam exists
9391 set getespwnam d_getespwnam
9392 eval $inlibc
9393
9394
9395 : see if getfsstat exists
9396 set getfsstat d_getfsstat
9397 eval $inlibc
9398
9399 : see if getgrent exists
9400 set getgrent d_getgrent
9401 eval $inlibc
9402
9403 : see if gethostbyaddr exists
9404 set gethostbyaddr d_gethbyaddr
9405 eval $inlibc
9406
9407 : see if gethostbyname exists
9408 set gethostbyname d_gethbyname
9409 eval $inlibc
9410
9411 : see if gethostent exists
9412 set gethostent d_gethent
9413 eval $inlibc
9414
9415 : see how we will look up host name
9416 echo " "
9417 call=''
9418 if set gethostname val -f d_gethname; eval $csym; $val; then
9419         echo 'gethostname() found.' >&4
9420         d_gethname="$define"
9421         call=gethostname
9422 fi
9423 if set uname val -f d_uname; eval $csym; $val; then
9424         if ./xenix; then
9425                 $cat <<'EOM'
9426 uname() was found, but you're running xenix, and older versions of xenix
9427 have a broken uname(). If you don't really know whether your xenix is old
9428 enough to have a broken system call, use the default answer.
9429
9430 EOM
9431                 dflt=y
9432                 case "$d_uname" in
9433                 "$define") dflt=n;;
9434                 esac
9435                 rp='Is your uname() broken?'
9436                 . ./myread
9437                 case "$ans" in
9438                 n*) d_uname="$define"; call=uname;;
9439                 esac
9440         else
9441                 echo 'uname() found.' >&4
9442                 d_uname="$define"
9443                 case "$call" in
9444                 '') call=uname ;;
9445                 esac
9446         fi
9447 fi
9448 case "$d_gethname" in
9449 '') d_gethname="$undef";;
9450 esac
9451 case "$d_uname" in
9452 '') d_uname="$undef";;
9453 esac
9454 case "$d_uname$d_gethname" in
9455 *define*)
9456         dflt=n
9457         cat <<EOM
9458  
9459 Every now and then someone has a $call() that lies about the hostname
9460 but can't be fixed for political or economic reasons.  If you wish, I can
9461 pretend $call() isn't there and maybe compute hostname at run-time
9462 thanks to the '$phostname' command.
9463
9464 EOM
9465         rp="Shall I ignore $call() from now on?"
9466         . ./myread
9467         case "$ans" in
9468         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9469         esac;;
9470 esac
9471 case "$phostname" in
9472 '') aphostname='';;
9473 *) case "$aphostname" in
9474         /*) ;;
9475         *) set X $phostname
9476                 shift
9477                 file=$1
9478                 shift
9479                 file=`./loc $file $file $pth`
9480                 aphostname=`echo $file $*`
9481                 ;;
9482         esac
9483         ;;
9484 esac
9485 case "$d_uname$d_gethname" in
9486 *define*) ;;
9487 *)
9488         case "$phostname" in
9489         '')
9490                 echo "There will be no way for $package to get your hostname." >&4;;
9491         *)
9492         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9493                 ;;
9494         esac;;
9495 esac
9496 case "$d_phostname" in
9497 '') d_phostname="$undef";;
9498 esac
9499
9500 : see if this is a netdb.h system
9501 set netdb.h i_netdb
9502 eval $inhdr
9503
9504 : see if prototypes for various gethostxxx netdb.h functions are available
9505 echo " "
9506 set d_gethostprotos gethostent $i_netdb netdb.h
9507 eval $hasproto
9508
9509 : see if getlogin exists
9510 set getlogin d_getlogin
9511 eval $inlibc
9512
9513 : see if getmnt exists
9514 set getmnt d_getmnt
9515 eval $inlibc
9516
9517 : see if getmntent exists
9518 set getmntent d_getmntent
9519 eval $inlibc
9520
9521 : see if getnetbyaddr exists
9522 set getnetbyaddr d_getnbyaddr
9523 eval $inlibc
9524
9525 : see if getnetbyname exists
9526 set getnetbyname d_getnbyname
9527 eval $inlibc
9528
9529 : see if getnetent exists
9530 set getnetent d_getnent
9531 eval $inlibc
9532
9533 : see if prototypes for various getnetxxx netdb.h functions are available
9534 echo " "
9535 set d_getnetprotos getnetent $i_netdb netdb.h
9536 eval $hasproto
9537
9538
9539 : see if getprotobyname exists
9540 set getprotobyname d_getpbyname
9541 eval $inlibc
9542
9543 : see if getprotobynumber exists
9544 set getprotobynumber d_getpbynumber
9545 eval $inlibc
9546
9547 : see if getprotoent exists
9548 set getprotoent d_getpent
9549 eval $inlibc
9550
9551 : see if getpgid exists
9552 set getpgid d_getpgid
9553 eval $inlibc
9554
9555 : see if getpgrp2 exists
9556 set getpgrp2 d_getpgrp2
9557 eval $inlibc
9558
9559 : see if getppid exists
9560 set getppid d_getppid
9561 eval $inlibc
9562
9563 : see if getpriority exists
9564 set getpriority d_getprior
9565 eval $inlibc
9566
9567 : see if prototypes for various getprotoxxx netdb.h functions are available
9568 echo " "
9569 set d_getprotoprotos getprotoent $i_netdb netdb.h
9570 eval $hasproto
9571
9572 : see if getprpwnam exists
9573 set getprpwnam d_getprpwnam
9574 eval $inlibc
9575
9576 : see if getpwent exists
9577 set getpwent d_getpwent
9578 eval $inlibc
9579
9580
9581 : see if getservbyname exists
9582 set getservbyname d_getsbyname
9583 eval $inlibc
9584
9585 : see if getservbyport exists
9586 set getservbyport d_getsbyport
9587 eval $inlibc
9588
9589 : see if getservent exists
9590 set getservent d_getsent
9591 eval $inlibc
9592
9593 : see if prototypes for various getservxxx netdb.h functions are available
9594 echo " "
9595 set d_getservprotos getservent $i_netdb netdb.h
9596 eval $hasproto
9597
9598 : see if getspnam exists
9599 set getspnam d_getspnam
9600 eval $inlibc
9601
9602 : see if gettimeofday or ftime exists
9603 set gettimeofday d_gettimeod
9604 eval $inlibc
9605 case "$d_gettimeod" in
9606 "$undef")
9607         set ftime d_ftime 
9608         eval $inlibc
9609         ;;
9610 *)
9611         val="$undef"; set d_ftime; eval $setvar
9612         ;;
9613 esac
9614 case "$d_gettimeod$d_ftime" in
9615 "$undef$undef")
9616         echo " "
9617         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9618         ;;
9619 esac
9620
9621 : see if this is an grp system
9622 set grp.h i_grp
9623 eval $inhdr
9624
9625 case "$i_grp" in
9626 $define)
9627         xxx=`./findhdr grp.h`
9628         $cppstdin $cppflags $cppminus < $xxx >$$.h
9629
9630         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9631                 val="$define"
9632         else
9633                 val="$undef"
9634         fi
9635         set d_grpasswd
9636         eval $setvar
9637
9638         $rm -f $$.h
9639         ;;
9640 *)
9641         val="$undef";
9642         set d_grpasswd; eval $setvar
9643         ;;
9644 esac
9645
9646 : see if hasmntopt exists
9647 set hasmntopt d_hasmntopt
9648 eval $inlibc
9649
9650 : see if this is a netinet/in.h or sys/in.h system
9651 set netinet/in.h i_niin sys/in.h i_sysin
9652 eval $inhdr
9653
9654 : see if arpa/inet.h has to be included
9655 set arpa/inet.h i_arpainet
9656 eval $inhdr
9657
9658 : see if htonl --and friends-- exists
9659 val=''
9660 set htonl val
9661 eval $inlibc
9662
9663 : Maybe they are macros.
9664 case "$val" in
9665 $undef)
9666         $cat >htonl.c <<EOM
9667 #include <stdio.h>
9668 #include <sys/types.h>
9669 #$i_niin I_NETINET_IN
9670 #$i_sysin I_SYS_IN
9671 #$i_arpainet I_ARPA_INET
9672 #ifdef I_NETINET_IN
9673 #include <netinet/in.h>
9674 #endif
9675 #ifdef I_SYS_IN
9676 #include <sys/in.h>
9677 #endif
9678 #ifdef I_ARPA_INET
9679 #include <arpa/inet.h>
9680 #endif
9681 #ifdef htonl
9682 printf("Defined as a macro.");
9683 #endif
9684 EOM
9685         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9686         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9687                 val="$define"
9688                 echo "But it seems to be defined as a macro." >&4
9689         fi
9690         $rm -f htonl.?
9691         ;;
9692 esac
9693 set d_htonl
9694 eval $setvar
9695
9696 : see if iconv exists
9697 set iconv d_iconv
9698 eval $inlibc
9699
9700 : index or strchr
9701 echo " "
9702 if set index val -f; eval $csym; $val; then
9703         if set strchr val -f d_strchr; eval $csym; $val; then
9704                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9705                         val="$define"
9706                         vali="$undef"
9707                         echo "strchr() found." >&4
9708                 else
9709                         val="$undef"
9710                         vali="$define"
9711                         echo "index() found." >&4
9712                 fi
9713         else
9714                 val="$undef"
9715                 vali="$define"
9716                 echo "index() found." >&4
9717         fi
9718 else
9719         if set strchr val -f d_strchr; eval $csym; $val; then
9720                 val="$define"
9721                 vali="$undef"
9722                 echo "strchr() found." >&4
9723         else
9724                 echo "No index() or strchr() found!" >&4
9725                 val="$undef"
9726                 vali="$undef"
9727         fi
9728 fi
9729 set d_strchr; eval $setvar
9730 val="$vali"
9731 set d_index; eval $setvar
9732
9733 : check whether inet_aton exists
9734 set inet_aton d_inetaton
9735 eval $inlibc
9736
9737 : see if inttypes.h is available
9738 : we want a real compile instead of Inhdr because some systems
9739 : have an inttypes.h which includes non-existent headers
9740 echo " "
9741 $cat >try.c <<EOCP
9742 #include <inttypes.h>
9743 int main() {
9744         static int32_t foo32 = 0x12345678;
9745 }
9746 EOCP
9747 set try
9748 if eval $compile; then
9749         echo "<inttypes.h> found." >&4
9750         val="$define"
9751 else
9752         echo "<inttypes.h> NOT found." >&4
9753         val="$undef"
9754 fi
9755 $rm -f try.c try
9756 set i_inttypes
9757 eval $setvar
9758
9759 : check for int64_t
9760 echo " "
9761 echo "Checking to see if you have int64_t..." >&4
9762 $cat >try.c <<EOCP
9763 #include <sys/types.h>
9764 #$i_inttypes I_INTTYPES
9765 #ifdef I_INTTYPES
9766 #include <inttypes.h>
9767 #endif
9768 int main() { int64_t x = 7; }
9769 EOCP
9770 set try
9771 if eval $compile; then
9772         val="$define"
9773         echo "You have int64_t."
9774 else
9775         val="$undef"
9776         echo "You do not have int64_t."
9777 fi
9778 $rm -f try try.*
9779 set d_int64_t
9780 eval $setvar
9781
9782 : Look for isascii
9783 echo " "
9784 $cat >isascii.c <<'EOCP'
9785 #include <stdio.h>
9786 #include <ctype.h>
9787 int main() {
9788         int c = 'A';
9789         if (isascii(c))
9790                 exit(0);
9791         else
9792                 exit(1);
9793 }
9794 EOCP
9795 set isascii
9796 if eval $compile; then
9797         echo "isascii() found." >&4
9798         val="$define"
9799 else
9800         echo "isascii() NOT found." >&4
9801         val="$undef"
9802 fi
9803 set d_isascii
9804 eval $setvar
9805 $rm -f isascii*
9806
9807 : see if isnan exists
9808 set isnan d_isnan
9809 eval $inlibc
9810
9811 : see if isnanl exists
9812 set isnanl d_isnanl
9813 eval $inlibc
9814
9815 : see if killpg exists
9816 set killpg d_killpg
9817 eval $inlibc
9818
9819 : see if lchown exists
9820 echo " "
9821 $cat > try.c <<'EOCP'
9822 /* System header to define __stub macros and hopefully few prototypes,
9823     which can conflict with char lchown(); below.  */
9824 #include <assert.h>
9825 /* Override any gcc2 internal prototype to avoid an error.  */
9826 /* We use char because int might match the return type of a gcc2
9827    builtin and then its argument prototype would still apply.  */
9828 char lchown();
9829 int main() {
9830     /*  The GNU C library defines this for functions which it implements
9831         to always fail with ENOSYS.  Some functions are actually named
9832         something starting with __ and the normal name is an alias.  */
9833 #if defined (__stub_lchown) || defined (__stub___lchown)
9834 choke me
9835 #else
9836 lchown();
9837 #endif
9838 ; return 0; }
9839 EOCP
9840 set try
9841 if eval $compile; then
9842     $echo "lchown() found." >&4
9843     val="$define"
9844 else
9845     $echo "lchown() NOT found." >&4
9846     val="$undef"
9847 fi
9848 set d_lchown
9849 eval $setvar
9850
9851 : See if number of significant digits in a double precision number is known
9852 echo " "
9853 $cat >ldbl_dig.c <<EOM
9854 #$i_limits I_LIMITS
9855 #$i_float I_FLOAT
9856 #ifdef I_LIMITS
9857 #include <limits.h>
9858 #endif
9859 #ifdef I_FLOAT
9860 #include <float.h>
9861 #endif
9862 #ifdef LDBL_DIG
9863 printf("Contains LDBL_DIG");
9864 #endif
9865 EOM
9866 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9867 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9868         echo "LDBL_DIG found." >&4
9869         val="$define"
9870 else
9871         echo "LDBL_DIG NOT found." >&4
9872         val="$undef"
9873 fi
9874 $rm -f ldbl_dig.?
9875 set d_ldbl_dig
9876 eval $setvar
9877
9878 : see if link exists
9879 set link d_link
9880 eval $inlibc
9881
9882 : see if localeconv exists
9883 set localeconv d_locconv
9884 eval $inlibc
9885
9886 : see if lockf exists
9887 set lockf d_lockf
9888 eval $inlibc
9889
9890 : check for long long
9891 echo " "
9892 echo "Checking to see if you have long long..." >&4
9893 echo 'int main() { long long x = 7; return 0; }' > try.c
9894 set try
9895 if eval $compile; then
9896         val="$define"
9897         echo "You have long long."
9898 else
9899         val="$undef"
9900         echo "You do not have long long."
9901 fi
9902 $rm try.*
9903 set d_longlong
9904 eval $setvar
9905
9906 : check for length of long long
9907 case "${d_longlong}${longlongsize}" in
9908 $define)
9909         echo " "
9910         echo "Checking to see how big your long longs are..." >&4
9911         $cat >try.c <<'EOCP'
9912 #include <stdio.h>
9913 int main()
9914 {
9915     printf("%d\n", (int)sizeof(long long));
9916     return(0);
9917 }
9918 EOCP
9919         set try
9920         if eval $compile_ok; then
9921                 longlongsize=`./try$exe_ext`
9922                 echo "Your long longs are $longlongsize bytes long."
9923         else
9924                 dflt='8'
9925                 echo " "
9926                 echo "(I can't seem to compile the test program.  Guessing...)"
9927                 rp="What is the size of a long long (in bytes)?"
9928                 . ./myread
9929                 longlongsize="$ans"
9930         fi
9931         if $test "X$longsize" = "X$longlongsize"; then
9932                 echo "(That isn't any different from an ordinary long.)"
9933         fi      
9934         ;;
9935 esac
9936 $rm -f try.* try
9937
9938 : see if prototype for lseek is available
9939 echo " "
9940 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9941 eval $hasproto
9942
9943 : see if lstat exists
9944 set lstat d_lstat
9945 eval $inlibc
9946
9947 : see if madvise exists
9948 set madvise d_madvise
9949 eval $inlibc
9950
9951 : see if mblen exists
9952 set mblen d_mblen
9953 eval $inlibc
9954
9955 : see if mbstowcs exists
9956 set mbstowcs d_mbstowcs
9957 eval $inlibc
9958
9959 : see if mbtowc exists
9960 set mbtowc d_mbtowc
9961 eval $inlibc
9962
9963 : see if memchr exists
9964 set memchr d_memchr
9965 eval $inlibc
9966
9967 : see if memcmp exists
9968 set memcmp d_memcmp
9969 eval $inlibc
9970
9971 : see if memcpy exists
9972 set memcpy d_memcpy
9973 eval $inlibc
9974
9975 : see if memmove exists
9976 set memmove d_memmove
9977 eval $inlibc
9978
9979 : see if memset exists
9980 set memset d_memset
9981 eval $inlibc
9982
9983 : see if mkdir exists
9984 set mkdir d_mkdir
9985 eval $inlibc
9986
9987 : see if mkdtemp exists
9988 set mkdtemp d_mkdtemp
9989 eval $inlibc
9990
9991 : see if mkfifo exists
9992 set mkfifo d_mkfifo
9993 eval $inlibc
9994
9995 : see if mkstemp exists
9996 set mkstemp d_mkstemp
9997 eval $inlibc
9998
9999 : see if mkstemps exists
10000 set mkstemps d_mkstemps
10001 eval $inlibc
10002
10003 : see if mktime exists
10004 set mktime d_mktime
10005 eval $inlibc
10006
10007 : see if this is a sys/mman.h system
10008 set sys/mman.h i_sysmman
10009 eval $inhdr
10010
10011 : see if mmap exists
10012 set mmap d_mmap
10013 eval $inlibc
10014 : see what shmat returns
10015 : default to something harmless
10016 mmaptype='void *'
10017 case "$i_sysmman$d_mmap" in
10018 "$define$define")
10019         $cat >mmap.c <<'END'
10020 #include <sys/mman.h>
10021 void *mmap();
10022 END
10023         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10024                 mmaptype='void *'
10025         else
10026                 mmaptype='caddr_t'
10027         fi
10028         echo "and it returns ($mmaptype)." >&4
10029         ;;
10030 esac
10031
10032
10033
10034 : see if modfl exists
10035 set modfl d_modfl
10036 eval $inlibc
10037
10038 : see if mprotect exists
10039 set mprotect d_mprotect
10040 eval $inlibc
10041
10042 : see if msgctl exists
10043 set msgctl d_msgctl
10044 eval $inlibc
10045
10046 : see if msgget exists
10047 set msgget d_msgget
10048 eval $inlibc
10049
10050 : see if msgsnd exists
10051 set msgsnd d_msgsnd
10052 eval $inlibc
10053
10054 : see if msgrcv exists
10055 set msgrcv d_msgrcv
10056 eval $inlibc
10057
10058 : see how much of the 'msg*(2)' library is present.
10059 h_msg=true
10060 echo " "
10061 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10062 *"$undef"*) h_msg=false;;
10063 esac
10064 case "$osname" in
10065 freebsd)
10066     case "`ipcs 2>&1`" in
10067     "SVID messages"*"not configured"*)
10068         echo "Your $osname does not have the msg*(2) configured." >&4
10069         h_msg=false
10070         val="$undef"
10071         set msgctl d_msgctl
10072         eval $setvar
10073         set msgget d_msgget
10074         eval $setvar
10075         set msgsnd d_msgsnd
10076         eval $setvar
10077         set msgrcv d_msgrcv
10078         eval $setvar
10079         ;;
10080     esac
10081     ;;
10082 esac
10083 : we could also check for sys/ipc.h ...
10084 if $h_msg && $test `./findhdr sys/msg.h`; then
10085         echo "You have the full msg*(2) library." >&4
10086         val="$define"
10087 else
10088         echo "You don't have the full msg*(2) library." >&4
10089         val="$undef"
10090 fi
10091 set d_msg
10092 eval $setvar
10093
10094 : see if msync exists
10095 set msync d_msync
10096 eval $inlibc
10097
10098 : see if munmap exists
10099 set munmap d_munmap
10100 eval $inlibc
10101
10102 : see if nice exists
10103 set nice d_nice
10104 eval $inlibc
10105
10106
10107 echo " "
10108 echo "Checking which 64-bit integer type we could use..." >&4
10109
10110 case "$intsize" in
10111 8) val=int
10112    set quadtype
10113    eval $setvar
10114    val='"unsigned int"'
10115    set uquadtype
10116    eval $setvar
10117    quadkind=1
10118    ;;
10119 *) case "$longsize" in
10120    8) val=long
10121       set quadtype
10122       eval $setvar
10123       val='"unsigned long"'
10124       set uquadtype
10125       eval $setvar
10126       quadkind=2
10127       ;;
10128    *) case "$d_longlong:$longlongsize" in
10129       define:8)
10130         val='"long long"'
10131         set quadtype
10132         eval $setvar
10133         val='"unsigned long long"'
10134         set uquadtype
10135         eval $setvar
10136         quadkind=3
10137         ;;
10138       *) case "$d_int64_t" in
10139          define)
10140            val=int64_t
10141            set quadtype
10142            eval $setvar
10143            val=uint64_t
10144            set uquadtype
10145            eval $setvar
10146            quadkind=4
10147            ;;
10148          esac
10149          ;;
10150       esac
10151       ;;
10152    esac
10153    ;;
10154 esac
10155
10156 case "$quadtype" in
10157 '')     echo "Alas, no 64-bit integer types in sight." >&4
10158         d_quad="$undef"
10159         ;;
10160 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10161             verb="will"
10162         else
10163             verb="could"
10164         fi
10165         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10166         d_quad="$define"
10167         ;;
10168 esac
10169
10170 : check for length of character
10171 echo " "
10172 case "$charsize" in
10173 '')
10174         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10175         $cat >try.c <<'EOCP'
10176 #include <stdio.h>
10177 int main()
10178 {
10179     printf("%d\n", (int)sizeof(char));
10180     exit(0);
10181 }
10182 EOCP
10183         set try
10184         if eval $compile_ok; then
10185                 dflt=`./try`
10186         else
10187                 dflt='1'
10188                 echo "(I can't seem to compile the test program.  Guessing...)"
10189         fi
10190         ;;
10191 *)
10192         dflt="$charsize"
10193         ;;
10194 esac
10195 rp="What is the size of a character (in bytes)?"
10196 . ./myread
10197 charsize="$ans"
10198 $rm -f try.c try
10199
10200
10201 echo " "
10202 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10203
10204 case "$use64bitint:$d_quad:$quadtype" in
10205 define:define:?*)
10206         ivtype="$quadtype"
10207         uvtype="$uquadtype"
10208         ivsize=8
10209         uvsize=8
10210         ;;
10211 *)      ivtype="long"
10212         uvtype="unsigned long"
10213         ivsize=$longsize
10214         uvsize=$longsize
10215         ;;
10216 esac
10217
10218 case "$uselongdouble:$d_longdbl" in
10219 define:define)
10220         nvtype="long double"
10221         nvsize=$longdblsize
10222         ;;
10223 *)      nvtype=double
10224         nvsize=$doublesize
10225         ;;
10226 esac
10227
10228 $echo "(IV will be "$ivtype", $ivsize bytes)"
10229 $echo "(UV will be "$uvtype", $uvsize bytes)"
10230 $echo "(NV will be "$nvtype", $nvsize bytes)"
10231
10232 $cat >try.c <<EOCP
10233 #$i_inttypes I_INTTYPES
10234 #ifdef I_INTTYPES
10235 #include <inttypes.h>
10236 #endif
10237 #include <stdio.h>
10238 int main() {
10239 #ifdef INT8
10240    int8_t i =  INT8_MAX;
10241   uint8_t u = UINT8_MAX;
10242   printf("int8_t\n");
10243 #endif
10244 #ifdef INT16
10245    int16_t i =  INT16_MAX;
10246   uint16_t i = UINT16_MAX;
10247   printf("int16_t\n");
10248 #endif
10249 #ifdef INT32
10250    int32_t i =  INT32_MAX;
10251   uint32_t u = UINT32_MAX;
10252   printf("int32_t\n");
10253 #endif
10254 }
10255 EOCP
10256
10257 case "$i8type" in
10258 '')     case "$charsize" in
10259         1)      i8type=char
10260                 u8type="unsigned char"
10261                 i8size=$charsize
10262                 u8size=$charsize
10263                 ;;
10264         esac
10265         ;;
10266 esac
10267 case "$i8type" in
10268 '')     set try -DINT8
10269         if eval $compile; then
10270                 case "`./try$exe_ext`" in
10271                 int8_t) i8type=int8_t
10272                         u8type=uint8_t
10273                         i8size=1
10274                         u8size=1
10275                         ;;
10276                 esac
10277         fi
10278         ;;
10279 esac
10280 case "$i8type" in
10281 '')     if $test $charsize -ge 1; then
10282                 i8type=char
10283                 u8type="unsigned char"
10284                 i8size=$charsize
10285                 u8size=$charsize
10286         fi
10287         ;;
10288 esac
10289
10290 case "$i16type" in
10291 '')     case "$shortsize" in
10292         2)      i16type=short
10293                 u16type="unsigned short"
10294                 i16size=$shortsize
10295                 u16size=$shortsize
10296                 ;;
10297         esac
10298         ;;
10299 esac
10300 case "$i16type" in
10301 '')     set try -DINT16
10302         if eval $compile; then
10303                 case "`./try$exe_ext`" in
10304                 int16_t)
10305                         i16type=int16_t
10306                         u16type=uint16_t
10307                         i16size=2
10308                         u16size=2
10309                         ;;
10310                 esac
10311         fi
10312         ;;
10313 esac
10314 case "$i16type" in
10315 '')     if $test $shortsize -ge 2; then
10316                 i16type=short
10317                 u16type="unsigned short"
10318                 i16size=$shortsize
10319                 u16size=$shortsize
10320         fi
10321         ;;
10322 esac
10323
10324 case "$i32type" in
10325 '')     case "$longsize" in
10326         4)      i32type=long
10327                 u32type="unsigned long"
10328                 i32size=$longsize
10329                 u32size=$longsize
10330                 ;;
10331         *)      case "$intsize" in
10332                 4)      i32type=int
10333                         u32type="unsigned int"
10334                         i32size=$intsize
10335                         u32size=$intsize
10336                         ;;
10337                 esac
10338                 ;;
10339         esac
10340         ;;
10341 esac
10342 case "$i32type" in
10343 '')     set try -DINT32
10344         if eval $compile; then
10345                 case "`./try$exe_ext`" in
10346                 int32_t)
10347                         i32type=int32_t
10348                         u32type=uint32_t
10349                         i32size=4
10350                         u32size=4
10351                         ;;
10352                 esac
10353         fi
10354         ;;
10355 esac
10356 case "$i32type" in
10357 '')     if $test $intsize -ge 4; then
10358                 i32type=int
10359                 u32type="unsigned int"
10360                 i32size=$intsize
10361                 u32size=$intsize
10362         fi
10363         ;;
10364 esac
10365
10366 case "$i64type" in
10367 '')     case "$d_quad:$quadtype" in
10368         define:?*)
10369                 i64type="$quadtype"
10370                 u64type="$uquadtype"
10371                 i64size=8
10372                 u64size=8
10373                 ;;
10374         esac
10375         ;;
10376 esac
10377
10378 $echo "Checking whether your NVs can preserve your UVs..." >&4
10379 $cat <<EOP >try.c
10380 #include <stdio.h>
10381 int main() {
10382     $uvtype k = ($uvtype)~0, l;
10383     $nvtype d;
10384     l = k;
10385     d = ($nvtype)l;
10386     l = ($uvtype)d;
10387     if (l == k)
10388        printf("preserve\n");
10389     exit(0);
10390 }
10391 EOP
10392 set try
10393 if eval $compile; then
10394         case "`./try$exe_ext`" in
10395         preserve) d_nv_preserves_uv="$define" ;;
10396         esac
10397 fi      
10398 case "$d_nv_preserves_uv" in
10399 $define) $echo "Yes, they can."  2>&1 ;;
10400 *)       $echo "No, they can't." 2>&1
10401          d_nv_preserves_uv="$undef"
10402          ;;
10403 esac
10404
10405 $rm -f try.* try
10406
10407 case "$d_nv_preserves_uv" in
10408 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10409 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10410         $cat <<EOP >try.c
10411 #include <stdio.h>
10412 int main() {
10413     $uvtype u = 0;
10414     int     n = 8 * $uvsize;
10415     int     i;
10416     for (i = 0; i < n; i++) {
10417       u = u << 1 | ($uvtype)1;
10418       if (($uvtype)($nvtype)u != u)
10419         break;
10420     }
10421     printf("%d\n", i);
10422     exit(0);
10423 }
10424 EOP
10425         set try
10426         if eval $compile; then
10427                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10428         fi
10429         case "$d_nv_preserves_uv_bits" in
10430         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10431         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10432                 d_nv_preserves_uv_bits="$undef"
10433                 ;;
10434         esac
10435         $rm -f try.* try
10436         ;;
10437 esac
10438
10439
10440 : check for off64_t
10441 echo " "
10442 echo "Checking to see if you have off64_t..." >&4
10443 $cat >try.c <<EOCP
10444 #include <sys/types.h>
10445 #include <unistd.h>
10446 int main() { off64_t x = 7; }
10447 EOCP
10448 set try
10449 if eval $compile; then
10450         val="$define"
10451         echo "You have off64_t."
10452 else
10453         val="$undef"
10454         echo "You do not have off64_t."
10455         case "$lseeksize" in
10456         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10457         esac
10458 fi
10459 $rm -f try.* try
10460 set d_off64_t
10461 eval $setvar
10462
10463 : see if POSIX threads are available
10464 set pthread.h i_pthread
10465 eval $inhdr
10466
10467
10468
10469
10470 : how to create joinable pthreads
10471 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10472         echo " "
10473         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10474         $cat >try.c <<'EOCP'
10475 #include <pthread.h>
10476 int main() {
10477     int detachstate = JOINABLE;
10478 }
10479 EOCP
10480         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10481         if eval $compile; then
10482                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10483                 val="$undef" # Yes, undef.
10484                 set d_old_pthread_create_joinable
10485                 eval $setvar
10486                 val=""
10487                 set old_pthread_create_joinable
10488                 eval $setvar
10489         else
10490                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10491                 if eval $compile; then
10492                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10493                         val="$define"
10494                         set d_old_pthread_create_joinable
10495                         eval $setvar
10496                         val=PTHREAD_CREATE_UNDETACHED
10497                         set old_pthread_create_joinable
10498                         eval $setvar
10499                 else            
10500                         set try -DJOINABLE=__UNDETACHED
10501                         if eval $compile; then
10502                                 echo "You seem to use __UNDETACHED." >&4
10503                                 val="$define"
10504                                 set d_old_pthread_create_joinable
10505                                 eval $setvar
10506                                 val=__UNDETACHED
10507                                 set old_pthread_create_joinable
10508                                 eval $setvar
10509                         else
10510                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10511                                 val="$define"
10512                                 set d_old_pthread_create_joinable
10513                                 eval $setvar
10514                                 val=0
10515                                 set old_pthread_create_joinable
10516                                 eval $setvar
10517                         fi
10518                 fi
10519         fi
10520         $rm -f try try.*
10521 else
10522     d_old_pthread_create_joinable="$undef"
10523     old_pthread_create_joinable=""
10524 fi
10525
10526 : see if pause exists
10527 set pause d_pause
10528 eval $inlibc
10529
10530 : see if pipe exists
10531 set pipe d_pipe
10532 eval $inlibc
10533
10534 : see if poll exists
10535 set poll d_poll
10536 eval $inlibc
10537
10538
10539 : see whether the various POSIXish _yields exist
10540 $cat >try.c <<EOP
10541 #include <pthread.h>
10542 #include <stdio.h>
10543 int main() {
10544 #ifdef SCHED_YIELD
10545         sched_yield();
10546 #else
10547 #ifdef PTHREAD_YIELD
10548         pthread_yield();
10549 #else
10550 #ifdef PTHREAD_YIELD_NULL
10551         pthread_yield(NULL);
10552 #endif
10553 #endif
10554 #endif
10555 }
10556 EOP
10557 : see if sched_yield exists
10558 set try -DSCHED_YIELD
10559 if eval $compile; then
10560     val="$define"
10561     sched_yield='sched_yield()'
10562 else
10563     val="$undef"
10564 fi
10565 case "$usethreads" in
10566 $define)
10567         case "$val" in
10568         $define) echo 'sched_yield() found.' >&4        ;;
10569         *)       echo 'sched_yield() NOT found.' >&4    ;;
10570         esac
10571 esac
10572 set d_sched_yield
10573 eval $setvar
10574
10575 : see if pthread_yield exists
10576 set try -DPTHREAD_YIELD
10577 if eval $compile; then
10578     val="$define"
10579     case "$sched_yield" in
10580     '') sched_yield='pthread_yield()' ;;
10581     esac
10582 else
10583     set try -DPTHREAD_YIELD_NULL
10584     if eval $compile; then
10585         val="$define"
10586         case "$sched_yield" in
10587         '') sched_yield='pthread_yield(NULL)' ;;
10588         esac
10589     else
10590         val="$undef"
10591     fi
10592 fi
10593 case "$usethreads" in
10594 $define)
10595         case "$val" in
10596         $define) echo 'pthread_yield() found.' >&4      ;;
10597         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10598         esac
10599         ;;
10600 esac
10601 set d_pthread_yield
10602 eval $setvar
10603
10604 case "$sched_yield" in
10605 '') sched_yield=undef ;;
10606 esac
10607
10608 $rm -f try try.*
10609
10610 : see if this is a pwd.h system
10611 set pwd.h i_pwd
10612 eval $inhdr
10613
10614 case "$i_pwd" in
10615 $define)
10616         xxx=`./findhdr pwd.h`
10617         $cppstdin $cppflags $cppminus < $xxx >$$.h
10618
10619         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10620                 val="$define"
10621         else
10622                 val="$undef"
10623         fi
10624         set d_pwquota
10625         eval $setvar
10626
10627         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10628                 val="$define"
10629         else
10630                 val="$undef"
10631         fi
10632         set d_pwage
10633         eval $setvar
10634
10635         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10636                 val="$define"
10637         else
10638                 val="$undef"
10639         fi
10640         set d_pwchange
10641         eval $setvar
10642
10643         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10644                 val="$define"
10645         else
10646                 val="$undef"
10647         fi
10648         set d_pwclass
10649         eval $setvar
10650
10651         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10652                 val="$define"
10653         else
10654                 val="$undef"
10655         fi
10656         set d_pwexpire
10657         eval $setvar
10658
10659         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10660                 val="$define"
10661         else
10662                 val="$undef"
10663         fi
10664         set d_pwcomment
10665         eval $setvar
10666
10667         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10668                 val="$define"
10669         else
10670                 val="$undef"
10671         fi
10672         set d_pwgecos
10673         eval $setvar
10674
10675         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10676                 val="$define"
10677         else
10678                 val="$undef"
10679         fi
10680         set d_pwpasswd
10681         eval $setvar
10682
10683         $rm -f $$.h
10684         ;;
10685 *)
10686         val="$undef"; 
10687         set d_pwquota; eval $setvar
10688         set d_pwage; eval $setvar
10689         set d_pwchange; eval $setvar
10690         set d_pwclass; eval $setvar
10691         set d_pwexpire; eval $setvar
10692         set d_pwcomment; eval $setvar
10693         set d_pwgecos; eval $setvar
10694         set d_pwpasswd; eval $setvar
10695         ;;
10696 esac
10697
10698 : see if readdir and friends exist
10699 set readdir d_readdir
10700 eval $inlibc
10701 set seekdir d_seekdir
10702 eval $inlibc
10703 set telldir d_telldir
10704 eval $inlibc
10705 set rewinddir d_rewinddir
10706 eval $inlibc
10707
10708 : see if readlink exists
10709 set readlink d_readlink
10710 eval $inlibc
10711
10712 : see if rename exists
10713 set rename d_rename
10714 eval $inlibc
10715
10716 : see if rmdir exists
10717 set rmdir d_rmdir
10718 eval $inlibc
10719
10720 : see if memory.h is available.
10721 val=''
10722 set memory.h val
10723 eval $inhdr
10724
10725 : See if it conflicts with string.h
10726 case "$val" in
10727 $define)
10728         case "$strings" in
10729         '') ;;
10730         *)
10731                 $cppstdin $cppflags $cppminus < $strings > mem.h
10732                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10733                         echo " "
10734                         echo "We won't be including <memory.h>."
10735                         val="$undef"
10736                 fi
10737                 $rm -f mem.h
10738                 ;;
10739         esac
10740 esac
10741 set i_memory
10742 eval $setvar
10743
10744 : can bcopy handle overlapping blocks?
10745 val="$undef"
10746 case "$d_bcopy" in
10747 "$define")
10748         echo " "
10749         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10750         $cat >try.c <<EOCP
10751 #$i_memory I_MEMORY
10752 #$i_stdlib I_STDLIB
10753 #$i_string I_STRING
10754 #$i_unistd I_UNISTD
10755 EOCP
10756         $cat >>try.c <<'EOCP'
10757 #include <stdio.h>
10758 #ifdef I_MEMORY
10759 #  include <memory.h>
10760 #endif
10761 #ifdef I_STDLIB
10762 #  include <stdlib.h>
10763 #endif
10764 #ifdef I_STRING
10765 #  include <string.h>
10766 #else
10767 #  include <strings.h>
10768 #endif
10769 #ifdef I_UNISTD
10770 #  include <unistd.h>  /* Needed for NetBSD */
10771 #endif
10772 int main()
10773 {
10774 char buf[128], abc[128];
10775 char *b;
10776 int len;
10777 int off;
10778 int align;
10779
10780 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10781
10782 for (align = 7; align >= 0; align--) {
10783         for (len = 36; len; len--) {
10784                 b = buf+align;
10785                 bcopy(abc, b, len);
10786                 for (off = 1; off <= len; off++) {
10787                         bcopy(b, b+off, len);
10788                         bcopy(b+off, b, len);
10789                         if (bcmp(b, abc, len))
10790                                 exit(1);
10791                 }
10792         }
10793 }
10794 exit(0);
10795 }
10796 EOCP
10797         set try
10798         if eval $compile_ok; then
10799                 if ./try 2>/dev/null; then
10800                         echo "Yes, it can."
10801                         val="$define"
10802                 else
10803                         echo "It can't, sorry."
10804                         case "$d_memmove" in
10805                         "$define") echo "But that's Ok since you have memmove()." ;;
10806                         esac
10807                 fi
10808         else
10809                 echo "(I can't compile the test program, so we'll assume not...)"
10810                 case "$d_memmove" in
10811                 "$define") echo "But that's Ok since you have memmove()." ;;
10812                 esac
10813         fi
10814         ;;
10815 esac
10816 $rm -f try.* try core
10817 set d_safebcpy
10818 eval $setvar
10819
10820 : can memcpy handle overlapping blocks?
10821 val="$undef"
10822 case "$d_memcpy" in
10823 "$define")
10824         echo " "
10825         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10826         $cat >try.c <<EOCP
10827 #$i_memory I_MEMORY
10828 #$i_stdlib I_STDLIB
10829 #$i_string I_STRING
10830 #$i_unistd I_UNISTD
10831 EOCP
10832         $cat >>try.c <<'EOCP'
10833 #include <stdio.h>
10834 #ifdef I_MEMORY
10835 #  include <memory.h>
10836 #endif
10837 #ifdef I_STDLIB
10838 #  include <stdlib.h>
10839 #endif
10840 #ifdef I_STRING
10841 #  include <string.h>
10842 #else
10843 #  include <strings.h>
10844 #endif
10845 #ifdef I_UNISTD
10846 #  include <unistd.h>  /* Needed for NetBSD */
10847 #endif
10848 int main()
10849 {
10850 char buf[128], abc[128];
10851 char *b;
10852 int len;
10853 int off;
10854 int align;
10855
10856 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10857    try to store the string in read-only memory. */
10858 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10859
10860 for (align = 7; align >= 0; align--) {
10861         for (len = 36; len; len--) {
10862                 b = buf+align;
10863                 memcpy(b, abc, len);
10864                 for (off = 1; off <= len; off++) {
10865                         memcpy(b+off, b, len);
10866                         memcpy(b, b+off, len);
10867                         if (memcmp(b, abc, len))
10868                                 exit(1);
10869                 }
10870         }
10871 }
10872 exit(0);
10873 }
10874 EOCP
10875         set try
10876         if eval $compile_ok; then
10877                 if ./try 2>/dev/null; then
10878                         echo "Yes, it can."
10879                         val="$define"
10880                 else
10881                         echo "It can't, sorry."
10882                         case "$d_memmove" in
10883                         "$define") echo "But that's Ok since you have memmove()." ;;
10884                         esac
10885                 fi
10886         else
10887                 echo "(I can't compile the test program, so we'll assume not...)"
10888                 case "$d_memmove" in
10889                 "$define") echo "But that's Ok since you have memmove()." ;;
10890                 esac
10891         fi
10892         ;;
10893 esac
10894 $rm -f try.* try core
10895 set d_safemcpy
10896 eval $setvar
10897
10898 : can memcmp be trusted to compare relative magnitude?
10899 val="$undef"
10900 case "$d_memcmp" in
10901 "$define")
10902         echo " "
10903         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10904         $cat >try.c <<EOCP
10905 #$i_memory I_MEMORY
10906 #$i_stdlib I_STDLIB
10907 #$i_string I_STRING
10908 #$i_unistd I_UNISTD
10909 EOCP
10910         $cat >>try.c <<'EOCP'
10911 #include <stdio.h>
10912 #ifdef I_MEMORY
10913 #  include <memory.h>
10914 #endif
10915 #ifdef I_STDLIB
10916 #  include <stdlib.h>
10917 #endif
10918 #ifdef I_STRING
10919 #  include <string.h>
10920 #else
10921 #  include <strings.h>
10922 #endif
10923 #ifdef I_UNISTD
10924 #  include <unistd.h>  /* Needed for NetBSD */
10925 #endif
10926 int main()
10927 {
10928 char a = -1;
10929 char b = 0;
10930 if ((a < b) && memcmp(&a, &b, 1) < 0)
10931         exit(1);
10932 exit(0);
10933 }
10934 EOCP
10935         set try
10936         if eval $compile_ok; then
10937                 if ./try 2>/dev/null; then
10938                         echo "Yes, it can."
10939                         val="$define"
10940                 else
10941                         echo "No, it can't (it uses signed chars)."
10942                 fi
10943         else
10944                 echo "(I can't compile the test program, so we'll assume not...)"
10945         fi
10946         ;;
10947 esac
10948 $rm -f try.* try core
10949 set d_sanemcmp
10950 eval $setvar
10951
10952 : see if select exists
10953 set select d_select
10954 eval $inlibc
10955
10956 : see if semctl exists
10957 set semctl d_semctl
10958 eval $inlibc
10959
10960 : see if semget exists
10961 set semget d_semget
10962 eval $inlibc
10963
10964 : see if semop exists
10965 set semop d_semop
10966 eval $inlibc
10967
10968 : see how much of the 'sem*(2)' library is present.
10969 h_sem=true
10970 echo " "
10971 case "$d_semctl$d_semget$d_semop" in
10972 *"$undef"*) h_sem=false;;
10973 esac
10974 case "$osname" in
10975 freebsd)
10976     case "`ipcs 2>&1`" in
10977     "SVID messages"*"not configured"*)
10978         echo "Your $osname does not have the sem*(2) configured." >&4
10979         h_sem=false
10980         val="$undef"
10981         set semctl d_semctl
10982         eval $setvar
10983         set semget d_semget
10984         eval $setvar
10985         set semop d_semop
10986         eval $setvar
10987         ;;
10988     esac
10989     ;;
10990 esac
10991 : we could also check for sys/ipc.h ...
10992 if $h_sem && $test `./findhdr sys/sem.h`; then
10993         echo "You have the full sem*(2) library." >&4
10994         val="$define"
10995 else
10996         echo "You don't have the full sem*(2) library." >&4
10997         val="$undef"
10998 fi
10999 set d_sem
11000 eval $setvar
11001
11002 : see whether sys/sem.h defines union semun
11003 echo " "
11004 $cat > try.c <<'END'
11005 #include <sys/types.h>
11006 #include <sys/ipc.h>
11007 #include <sys/sem.h>
11008 int main () { union semun semun; semun.buf = 0; }
11009 END
11010 set try
11011 if eval $compile; then
11012     echo "You have union semun in <sys/sem.h>." >&4
11013     val="$define"
11014 else
11015     echo "You do not have union semun in <sys/sem.h>." >&4
11016     val="$undef"
11017 fi
11018 $rm -f try try.c try.h
11019 set d_union_semun
11020 eval $setvar
11021
11022 : see how to do semctl IPC_STAT
11023 case "$d_sem" in
11024 $define)
11025     : see whether semctl IPC_STAT can use union semun
11026     echo " "
11027     $cat > try.h <<END
11028 #ifndef S_IRUSR
11029 #   ifdef S_IREAD
11030 #       define S_IRUSR S_IREAD
11031 #       define S_IWUSR S_IWRITE
11032 #       define S_IXUSR S_IEXEC
11033 #   else
11034 #       define S_IRUSR 0400
11035 #       define S_IWUSR 0200
11036 #       define S_IXUSR 0100
11037 #   endif
11038 #   define S_IRGRP (S_IRUSR>>3)
11039 #   define S_IWGRP (S_IWUSR>>3)
11040 #   define S_IXGRP (S_IXUSR>>3)
11041 #   define S_IROTH (S_IRUSR>>6)
11042 #   define S_IWOTH (S_IWUSR>>6)
11043 #   define S_IXOTH (S_IXUSR>>6)
11044 #endif
11045 #ifndef S_IRWXU
11046 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11047 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11048 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11049 #endif
11050 END
11051
11052     $cat > try.c <<END
11053 #include <sys/types.h>
11054 #include <sys/ipc.h>
11055 #include <sys/sem.h>
11056 #include <sys/stat.h>
11057 #include <stdio.h>
11058 #include <errno.h>
11059 #include "try.h"
11060 #ifndef errno
11061 extern int errno;
11062 #endif
11063 #$d_union_semun HAS_UNION_SEMUN
11064 int main() {
11065     union semun
11066 #ifndef HAS_UNION_SEMUN
11067     {
11068         int val;
11069         struct semid_ds *buf;
11070         unsigned short *array;
11071     }
11072 #endif
11073     arg;
11074     int sem, st;
11075
11076 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11077     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11078     if (sem > -1) {
11079         struct semid_ds argbuf;
11080         arg.buf = &argbuf;
11081 #       ifdef IPC_STAT
11082         st = semctl(sem, 0, IPC_STAT, arg);
11083         if (st == 0)
11084             printf("semun\n");
11085         else
11086 #       endif /* IPC_STAT */
11087             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11088 #       ifdef IPC_RMID
11089         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11090 #       endif /* IPC_RMID */
11091             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11092     } else
11093 #endif /* IPC_PRIVATE && ... */
11094         printf("semget failed: errno = %d\n", errno);
11095   return 0;
11096 }
11097 END
11098     val="$undef"
11099     set try
11100     if eval $compile; then
11101         xxx=`./try`
11102         case "$xxx" in
11103         semun) val="$define" ;;
11104         esac
11105     fi
11106     $rm -f try try.c
11107     set d_semctl_semun
11108     eval $setvar
11109     case "$d_semctl_semun" in
11110     $define)
11111         echo "You can use union semun for semctl IPC_STAT." >&4
11112         also='also'
11113         ;;
11114     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11115         also=''
11116         ;;
11117     esac
11118
11119     : see whether semctl IPC_STAT can use struct semid_ds pointer
11120     $cat > try.c <<'END'
11121 #include <sys/types.h>
11122 #include <sys/ipc.h>
11123 #include <sys/sem.h>
11124 #include <sys/stat.h>
11125 #include "try.h"
11126 #include <stdio.h>
11127 #include <errno.h>
11128 #ifndef errno
11129 extern int errno;
11130 #endif
11131 int main() {
11132     struct semid_ds arg;
11133     int sem, st;
11134
11135 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11136     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11137     if (sem > -1) {
11138 #       ifdef IPC_STAT
11139         st = semctl(sem, 0, IPC_STAT, &arg);
11140         if (st == 0)
11141             printf("semid_ds\n");
11142         else
11143 #       endif /* IPC_STAT */
11144             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11145 #       ifdef IPC_RMID
11146         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11147 #       endif /* IPC_RMID */
11148             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11149     } else
11150 #endif /* IPC_PRIVATE && ... */
11151         printf("semget failed: errno = %d\n", errno);
11152
11153     return 0;
11154 }
11155 END
11156     val="$undef"
11157     set try
11158     if eval $compile; then
11159         xxx=`./try`
11160         case "$xxx" in
11161         semid_ds) val="$define" ;;
11162         esac
11163     fi
11164     $rm -f try try.c
11165     set d_semctl_semid_ds
11166     eval $setvar
11167     case "$d_semctl_semid_ds" in
11168     $define)
11169         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11170         ;;
11171     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11172         ;;
11173     esac
11174     $rm -f try.h
11175     ;;
11176 *)  val="$undef"
11177
11178     # We do not have the full sem*(2) library, so assume we can not
11179     # use either.
11180
11181     set d_semctl_semun
11182     eval $setvar
11183
11184     set d_semctl_semid_ds
11185     eval $setvar
11186     ;;
11187 esac
11188
11189 : see if setegid exists
11190 set setegid d_setegid
11191 eval $inlibc
11192
11193 : see if seteuid exists
11194 set seteuid d_seteuid
11195 eval $inlibc
11196
11197 : see if setgrent exists
11198 set setgrent d_setgrent
11199 eval $inlibc
11200
11201 : see if sethostent exists
11202 set sethostent d_sethent
11203 eval $inlibc
11204
11205 : see if setlinebuf exists
11206 set setlinebuf d_setlinebuf
11207 eval $inlibc
11208
11209 : see if setlocale exists
11210 set setlocale d_setlocale
11211 eval $inlibc
11212
11213 : see if setnetent exists
11214 set setnetent d_setnent
11215 eval $inlibc
11216
11217 : see if setprotoent exists
11218 set setprotoent d_setpent
11219 eval $inlibc
11220
11221 : see if setpgid exists
11222 set setpgid d_setpgid
11223 eval $inlibc
11224
11225 : see if setpgrp2 exists
11226 set setpgrp2 d_setpgrp2
11227 eval $inlibc
11228
11229 : see if setpriority exists
11230 set setpriority d_setprior
11231 eval $inlibc
11232
11233 : see if setproctitle exists
11234 set setproctitle d_setproctitle
11235 eval $inlibc
11236
11237 : see if setpwent exists
11238 set setpwent d_setpwent
11239 eval $inlibc
11240
11241 : see if setregid exists
11242 set setregid d_setregid
11243 eval $inlibc
11244 set setresgid d_setresgid
11245 eval $inlibc
11246
11247 : see if setreuid exists
11248 set setreuid d_setreuid
11249 eval $inlibc
11250 set setresuid d_setresuid
11251 eval $inlibc
11252
11253 : see if setrgid exists
11254 set setrgid d_setrgid
11255 eval $inlibc
11256
11257 : see if setruid exists
11258 set setruid d_setruid
11259 eval $inlibc
11260
11261 : see if setservent exists
11262 set setservent d_setsent
11263 eval $inlibc
11264
11265 : see if setsid exists
11266 set setsid d_setsid
11267 eval $inlibc
11268
11269 : see if setvbuf exists
11270 set setvbuf d_setvbuf
11271 eval $inlibc
11272
11273 : see if sfio.h is available
11274 set sfio.h i_sfio
11275 eval $inhdr
11276
11277
11278 : see if sfio library is available
11279 case "$i_sfio" in
11280 $define)
11281         val=''
11282         set sfreserve val
11283         eval $inlibc
11284         ;;
11285 *)
11286         val="$undef"
11287         ;;
11288 esac
11289 : Ok, but do we want to use it.
11290 case "$val" in
11291 $define)
11292         case "$usesfio" in
11293         true|$define|[yY]*) dflt='y';;
11294         *) dflt='n';;
11295         esac
11296         echo "$package can use the sfio library, but it is experimental."
11297         case "$useperlio" in
11298         "$undef")
11299             echo "For sfio also the PerlIO abstraction layer is needed."
11300             echo "Earlier you said you wouldn't want that."
11301             ;;
11302         esac
11303         rp="You seem to have sfio available, do you want to try using it?"
11304         . ./myread
11305         case "$ans" in
11306         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11307                 useperlio="$define"
11308                 val="$define"
11309                 ;;
11310         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11311                 val="$undef"
11312                 : Remove sfio from list of libraries to use
11313                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11314                 shift
11315                 libs="$*"
11316                 echo "libs = $libs" >&4
11317                 ;;
11318         esac
11319         ;;
11320 *)      case "$usesfio" in
11321         true|$define|[yY]*)
11322                 echo "Sorry, cannot find sfio on this machine." >&4
11323                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11324                 val="$undef"
11325                 ;;
11326         esac
11327         ;;
11328 esac
11329 set d_sfio
11330 eval $setvar
11331 case "$d_sfio" in
11332 $define) usesfio='true';;
11333 *) usesfio='false';;
11334 esac
11335
11336 : see if shmctl exists
11337 set shmctl d_shmctl
11338 eval $inlibc
11339
11340 : see if shmget exists
11341 set shmget d_shmget
11342 eval $inlibc
11343
11344 : see if shmat exists
11345 set shmat d_shmat
11346 eval $inlibc
11347 : see what shmat returns
11348 case "$d_shmat" in
11349 "$define")
11350         $cat >shmat.c <<'END'
11351 #include <sys/shm.h>
11352 void *shmat();
11353 END
11354         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11355                 shmattype='void *'
11356         else
11357                 shmattype='char *'
11358         fi
11359         echo "and it returns ($shmattype)." >&4
11360         : see if a prototype for shmat is available
11361         xxx=`./findhdr sys/shm.h`
11362         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11363         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11364                 val="$define"
11365         else
11366                 val="$undef"
11367         fi
11368         $rm -f shmat.[co]
11369         ;;
11370 *)
11371         val="$undef"
11372         ;;
11373 esac
11374 set d_shmatprototype
11375 eval $setvar
11376
11377 : see if shmdt exists
11378 set shmdt d_shmdt
11379 eval $inlibc
11380
11381 : see how much of the 'shm*(2)' library is present.
11382 h_shm=true
11383 echo " "
11384 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11385 *"$undef"*) h_shm=false;;
11386 esac
11387 case "$osname" in
11388 freebsd)
11389     case "`ipcs 2>&1`" in
11390     "SVID shared memory"*"not configured"*)
11391         echo "Your $osname does not have the shm*(2) configured." >&4
11392         h_shm=false
11393         val="$undef"
11394         set shmctl d_shmctl
11395         evat $setvar
11396         set shmget d_shmget
11397         evat $setvar
11398         set shmat d_shmat
11399         evat $setvar
11400         set shmdt d_shmdt
11401         evat $setvar
11402         ;;
11403     esac
11404     ;;
11405 esac
11406 : we could also check for sys/ipc.h ...
11407 if $h_shm && $test `./findhdr sys/shm.h`; then
11408         echo "You have the full shm*(2) library." >&4
11409         val="$define"
11410 else
11411         echo "You don't have the full shm*(2) library." >&4
11412         val="$undef"
11413 fi
11414 set d_shm
11415 eval $setvar
11416
11417 echo " "
11418 : see if we have sigaction
11419 if set sigaction val -f d_sigaction; eval $csym; $val; then
11420         echo 'sigaction() found.' >&4
11421         $cat > try.c <<'EOP'
11422 #include <stdio.h>
11423 #include <sys/types.h>
11424 #include <signal.h>
11425 int main()
11426 {
11427     struct sigaction act, oact;
11428     act.sa_flags = 0;
11429     oact.sa_handler = 0;
11430     /* so that act and oact are used */
11431     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11432 }
11433 EOP
11434         set try
11435         if eval $compile_ok; then
11436                 val="$define"
11437         else
11438                 echo "But you don't seem to have a useable struct sigaction." >&4
11439                 val="$undef"
11440         fi
11441 else
11442         echo 'sigaction NOT found.' >&4
11443         val="$undef"
11444 fi
11445 set d_sigaction; eval $setvar
11446 $rm -f try try$_o try.c
11447
11448 : see if sigsetjmp exists
11449 echo " "
11450 case "$d_sigsetjmp" in
11451 '')
11452         $cat >try.c <<'EOP'
11453 #include <setjmp.h>
11454 sigjmp_buf env;
11455 int set = 1;
11456 int main()
11457 {
11458         if (sigsetjmp(env,1))
11459                 exit(set);
11460         set = 0;
11461         siglongjmp(env, 1);
11462         exit(1);
11463 }
11464 EOP
11465         set try
11466         if eval $compile; then
11467                 if ./try >/dev/null 2>&1; then
11468                         echo "POSIX sigsetjmp found." >&4
11469                         val="$define"
11470                 else
11471                         $cat >&4 <<EOM
11472 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11473 I'll ignore them.
11474 EOM
11475                         val="$undef"
11476                 fi
11477         else
11478                 echo "sigsetjmp not found." >&4
11479                 val="$undef"
11480         fi
11481         ;;
11482 *) val="$d_sigsetjmp"
11483         case "$d_sigsetjmp" in
11484         $define) echo "POSIX sigsetjmp found." >&4;;
11485         $undef) echo "sigsetjmp not found." >&4;;
11486         esac
11487         ;;
11488 esac
11489 set d_sigsetjmp
11490 eval $setvar
11491 $rm -f try.c try
11492
11493 : see if socks5_init exists
11494 set socks5_init d_socks5_init
11495 eval $inlibc
11496
11497 : see if sys/stat.h is available
11498 set sys/stat.h i_sysstat
11499 eval $inhdr
11500
11501
11502 : see if stat knows about block sizes
11503 echo " "
11504 echo "Checking to see if your struct stat has st_blocks field..." >&4
11505 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11506 eval $hasfield
11507
11508
11509 : see if this is a sys/vfs.h system
11510 set sys/vfs.h i_sysvfs
11511 eval $inhdr
11512
11513
11514 : see if this is a sys/statfs.h system
11515 set sys/statfs.h i_sysstatfs
11516 eval $inhdr
11517
11518
11519 echo " "
11520 echo "Checking to see if your system supports struct statfs..." >&4
11521 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
11522 eval $hasstruct
11523 case "$d_statfs_s" in
11524 "$define")      echo "Yes, it does."   ;;
11525 *)              echo "No, it doesn't." ;;
11526 esac
11527
11528
11529
11530 : see if struct statfs knows about f_flags
11531 case "$d_statfs_s" in
11532 define) 
11533         echo " "
11534         echo "Checking to see if your struct statfs has f_flags field..." >&4
11535         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
11536         eval $hasfield
11537         ;;
11538 *)      val="$undef"
11539         set d_statfs_f_flags
11540         eval $setvar
11541         ;;
11542 esac
11543 case "$d_statfs_f_flags" in
11544 "$define")      echo "Yes, it does."   ;;
11545 *)              echo "No, it doesn't." ;;
11546 esac
11547
11548 : see if _ptr and _cnt from stdio act std
11549 echo " "
11550 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11551         echo "(Looks like you have stdio.h from Linux.)"
11552         case "$stdio_ptr" in
11553         '') stdio_ptr='((fp)->_IO_read_ptr)'
11554                 ptr_lval=$define
11555                 ;;
11556         *)      ptr_lval=$d_stdio_ptr_lval;;
11557         esac
11558         case "$stdio_cnt" in
11559         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11560                 cnt_lval=$undef
11561                 ;;
11562         *)      cnt_lval=$d_stdio_cnt_lval;;
11563         esac
11564         case "$stdio_base" in
11565         '') stdio_base='((fp)->_IO_read_base)';;
11566         esac
11567         case "$stdio_bufsiz" in
11568         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11569         esac
11570 else
11571         case "$stdio_ptr" in
11572         '') stdio_ptr='((fp)->_ptr)'
11573                 ptr_lval=$define
11574                 ;;
11575         *)      ptr_lval=$d_stdio_ptr_lval;;
11576         esac
11577         case "$stdio_cnt" in
11578         '') stdio_cnt='((fp)->_cnt)'
11579                 cnt_lval=$define
11580                 ;;
11581         *)      cnt_lval=$d_stdio_cnt_lval;;
11582         esac
11583         case "$stdio_base" in
11584         '') stdio_base='((fp)->_base)';;
11585         esac
11586         case "$stdio_bufsiz" in
11587         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11588         esac
11589 fi
11590 : test whether _ptr and _cnt really work
11591 echo "Checking how std your stdio is..." >&4
11592 $cat >try.c <<EOP
11593 #include <stdio.h>
11594 #define FILE_ptr(fp)    $stdio_ptr
11595 #define FILE_cnt(fp)    $stdio_cnt
11596 int main() {
11597         FILE *fp = fopen("try.c", "r");
11598         char c = getc(fp);
11599         if (
11600                 18 <= FILE_cnt(fp) &&
11601                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11602         )
11603                 exit(0);
11604         exit(1);
11605 }
11606 EOP
11607 val="$undef"
11608 set try
11609 if eval $compile; then
11610         if ./try; then
11611                 echo "Your stdio acts pretty std."
11612                 val="$define"
11613         else
11614                 echo "Your stdio isn't very std."
11615         fi
11616 else
11617         echo "Your stdio doesn't appear very std."
11618 fi
11619 $rm -f try.c try
11620 set d_stdstdio
11621 eval $setvar
11622
11623 : Can _ptr be used as an lvalue?
11624 case "$d_stdstdio$ptr_lval" in
11625 $define$define) val=$define ;;
11626 *) val=$undef ;;
11627 esac
11628 set d_stdio_ptr_lval
11629 eval $setvar
11630
11631 : Can _cnt be used as an lvalue?
11632 case "$d_stdstdio$cnt_lval" in
11633 $define$define) val=$define ;;
11634 *) val=$undef ;;
11635 esac
11636 set d_stdio_cnt_lval
11637 eval $setvar
11638
11639 : see if _base is also standard
11640 val="$undef"
11641 case "$d_stdstdio" in
11642 $define)
11643         $cat >try.c <<EOP
11644 #include <stdio.h>
11645 #define FILE_base(fp)   $stdio_base
11646 #define FILE_bufsiz(fp) $stdio_bufsiz
11647 int main() {
11648         FILE *fp = fopen("try.c", "r");
11649         char c = getc(fp);
11650         if (
11651                 19 <= FILE_bufsiz(fp) &&
11652                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11653         )
11654                 exit(0);
11655         exit(1);
11656 }
11657 EOP
11658         set try
11659         if eval $compile; then
11660                 if ./try; then
11661                         echo "And its _base field acts std."
11662                         val="$define"
11663                 else
11664                         echo "But its _base field isn't std."
11665                 fi
11666         else
11667                 echo "However, it seems to be lacking the _base field."
11668         fi
11669         $rm -f try.c try
11670         ;;
11671 esac
11672 set d_stdiobase
11673 eval $setvar
11674
11675 $cat >&4 <<EOM
11676 Checking how to access stdio streams by file descriptor number...
11677 EOM
11678 case "$stdio_stream_array" in
11679 '')     $cat >try.c <<EOCP
11680 #include <stdio.h>
11681 int main() {
11682   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11683     printf("yes\n");
11684 }
11685 EOCP
11686         for s in _iob __iob __sF
11687         do
11688                 set try -DSTDIO_STREAM_ARRAY=$s
11689                 if eval $compile; then
11690                         case "`./try$exe_ext`" in
11691                         yes)    stdio_stream_array=$s; break ;;
11692                         esac
11693                 fi
11694         done
11695         $rm -f try.* try$exe_ext
11696 esac
11697 case "$stdio_stream_array" in
11698 '')     $cat >&4 <<EOM
11699 I can't figure out how to access stdio streams by file descriptor number.
11700 EOM
11701         d_stdio_stream_array="$undef"
11702         ;;
11703 *)      $cat >&4 <<EOM
11704 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11705 EOM
11706         d_stdio_stream_array="$define"
11707         ;;
11708 esac
11709
11710 : see if strcoll exists
11711 set strcoll d_strcoll
11712 eval $inlibc
11713
11714 : check for structure copying
11715 echo " "
11716 echo "Checking to see if your C compiler can copy structs..." >&4
11717 $cat >try.c <<'EOCP'
11718 int main()
11719 {
11720         struct blurfl {
11721                 int dyick;
11722         } foo, bar;
11723
11724         foo = bar;
11725 }
11726 EOCP
11727 if $cc -c try.c >/dev/null 2>&1 ; then
11728         val="$define"
11729         echo "Yup, it can."
11730 else
11731         val="$undef"
11732         echo "Nope, it can't."
11733 fi
11734 set d_strctcpy
11735 eval $setvar
11736 $rm -f try.*
11737
11738 : see if strerror and/or sys_errlist[] exist
11739 echo " "
11740 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11741     if set strerror val -f d_strerror; eval $csym; $val; then
11742                 echo 'strerror() found.' >&4
11743                 d_strerror="$define"
11744                 d_strerrm='strerror(e)'
11745                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11746                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11747                         d_syserrlst="$define"
11748                 else
11749                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11750                         d_syserrlst="$undef"
11751                 fi
11752     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11753                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11754                 echo 'strerror() found in string header.' >&4
11755                 d_strerror="$define"
11756                 d_strerrm='strerror(e)'
11757                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11758                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11759                                 d_syserrlst="$define"
11760                 else
11761                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11762                         d_syserrlst="$undef"
11763                 fi
11764     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11765                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11766                 d_strerror="$undef"
11767                 d_syserrlst="$define"
11768                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11769     else
11770                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11771                 d_strerror="$undef"
11772                 d_syserrlst="$undef"
11773                 d_strerrm='"unknown"'
11774     fi
11775 fi
11776
11777 : see if strtod exists
11778 set strtod d_strtod
11779 eval $inlibc
11780
11781 : see if strtol exists
11782 set strtol d_strtol
11783 eval $inlibc
11784
11785 : see if strtold exists
11786 set strtold d_strtold
11787 eval $inlibc
11788
11789 : see if strtoll exists
11790 set strtoll d_strtoll
11791 eval $inlibc
11792
11793 case "$d_longlong-$d_strtoll" in
11794 "$define-$define")
11795         $cat <<EOM
11796 Checking whether your strtoll() works okay...
11797 EOM
11798         $cat >try.c <<'EOCP'
11799 #include <errno.h>
11800 #ifdef __hpux
11801 #define strtoll __strtoll
11802 #endif
11803 #include <stdio.h>
11804 extern long long int strtoll(char *s, char **, int); 
11805 static int bad = 0;
11806 int check(char *s, long long ell, int een) {
11807         long long gll;
11808         errno = 0;
11809         gll = strtoll(s, 0, 10);
11810         if (!((gll == ell) && (errno == een)))
11811                 bad++;
11812 }
11813 int main() {
11814         check(" 1",                                      1LL, 0);
11815         check(" 0",                                      0LL, 0);
11816         check("-1",                                     -1LL, 0);
11817         check("-9223372036854775808", -9223372036854775808LL, 0);
11818         check("-9223372036854775808", -9223372036854775808LL, 0);
11819         check(" 9223372036854775807",  9223372036854775807LL, 0);
11820         check("-9223372036854775808", -9223372036854775808LL, 0);
11821         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11822         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11823         if (!bad)
11824                 printf("ok\n");
11825 }
11826 EOCP
11827         set try
11828         if eval $compile; then
11829                 case "`./try`" in
11830                 ok) echo "Your strtoll() seems to be working okay." ;;
11831                 *) cat <<EOM >&4
11832 Your strtoll() doesn't seem to be working okay.
11833 EOM
11834                    d_strtoll="$undef"
11835                    ;;
11836                 esac
11837         fi
11838         ;;
11839 esac
11840
11841 : see if strtoul exists
11842 set strtoul d_strtoul
11843 eval $inlibc
11844
11845 : see if strtoull exists
11846 set strtoull d_strtoull
11847 eval $inlibc
11848
11849 case "$d_longlong-$d_strtoull" in
11850 "$define-$define")
11851         $cat <<EOM
11852 Checking whether your strtoull() works okay...
11853 EOM
11854         $cat >try.c <<'EOCP'
11855 #include <errno.h>
11856 #ifdef __hpux
11857 #define strtoull __strtoull
11858 #endif
11859 #include <stdio.h>
11860 extern unsigned long long int strtoull(char *s, char **, int); 
11861 static int bad = 0;
11862 int check(char *s, long long eull, int een) {
11863         long long gull;
11864         errno = 0;
11865         gull = strtoull(s, 0, 10);
11866         if (!((gull == eull) && (errno == een)))
11867                 bad++;
11868 }
11869 int main() {
11870         check(" 1",                                       1LL, 0);
11871         check(" 0",                                       0LL, 0);
11872         check("18446744073709551615", 18446744073709551615ULL, 0);
11873         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11874         if (!bad)
11875                 printf("ok\n");
11876 }
11877 EOCP
11878         set try
11879         if eval $compile; then
11880                 case "`./try`" in
11881                 ok) echo "Your strtoull() seems to be working okay." ;;
11882                 *) cat <<EOM >&4
11883 Your strtoull() doesn't seem to be working okay.
11884 EOM
11885                    d_strtoull="$undef"
11886                    ;;
11887                 esac
11888         fi
11889         ;;
11890 esac
11891
11892 : see if strtouq exists
11893 set strtouq d_strtouq
11894 eval $inlibc
11895
11896 : see if strxfrm exists
11897 set strxfrm d_strxfrm
11898 eval $inlibc
11899
11900 : see if symlink exists
11901 set symlink d_symlink
11902 eval $inlibc
11903
11904 : see if syscall exists
11905 set syscall d_syscall
11906 eval $inlibc
11907
11908 : see if sysconf exists
11909 set sysconf d_sysconf
11910 eval $inlibc
11911
11912 : see if system exists
11913 set system d_system
11914 eval $inlibc
11915
11916 : see if tcgetpgrp exists
11917 set tcgetpgrp d_tcgetpgrp
11918 eval $inlibc
11919
11920 : see if tcsetpgrp exists
11921 set tcsetpgrp d_tcsetpgrp
11922 eval $inlibc
11923
11924 : see if prototype for telldir is available
11925 echo " "
11926 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11927 eval $hasproto
11928
11929 : see if this is a sys/times.h system
11930 set sys/times.h i_systimes
11931 eval $inhdr
11932
11933 : see if times exists
11934 echo " "
11935 if set times val -f d_times; eval $csym; $val; then
11936         echo 'times() found.' >&4
11937         d_times="$define"
11938         inc=''
11939         case "$i_systimes" in
11940         "$define") inc='sys/times.h';;
11941         esac
11942         rp="What is the type returned by times() on this system?"
11943         set clock_t clocktype long stdio.h sys/types.h $inc
11944         eval $typedef_ask
11945 else
11946         echo 'times() NOT found, hope that will do.' >&4
11947         d_times="$undef"
11948         clocktype='int'
11949 fi
11950
11951 : see if truncate exists
11952 set truncate d_truncate
11953 eval $inlibc
11954
11955 : see if tzname[] exists
11956 echo " "
11957 if set tzname val -a d_tzname; eval $csym; $val; then
11958         val="$define"
11959         echo 'tzname[] found.' >&4
11960 else
11961         val="$undef"
11962         echo 'tzname[] NOT found.' >&4
11963 fi
11964 set d_tzname
11965 eval $setvar
11966
11967 : see if umask exists
11968 set umask d_umask
11969 eval $inlibc
11970
11971 : see if ustat exists
11972 set ustat d_ustat
11973 eval $inlibc
11974
11975 : backward compatibility for d_hvfork
11976 if test X$d_hvfork != X; then
11977         d_vfork="$d_hvfork"
11978         d_hvfork=''
11979 fi
11980 : see if there is a vfork
11981 val=''
11982 set vfork val
11983 eval $inlibc
11984
11985 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11986 : perl on Solaris 2.x, and probably elsewhere.
11987 case "$val" in
11988 $define)
11989         echo " "
11990         case "$usevfork" in
11991         false) dflt='n';;
11992         *) dflt='y';;
11993         esac
11994         cat <<'EOM'
11995  
11996 Perl can only use a vfork() that doesn't suffer from strict
11997 restrictions on calling functions or modifying global data in
11998 the child.  For example, glibc-2.1 contains such a vfork()
11999 that is unsuitable.  If your system provides a proper fork()
12000 call, chances are that you do NOT want perl to use vfork().
12001
12002 EOM
12003         rp="Do you still want to use vfork()?"
12004         . ./myread
12005         case "$ans" in
12006         y|Y) ;;
12007         *)
12008                 echo "Ok, we won't use vfork()."
12009                 val="$undef"
12010                 ;;
12011         esac
12012         ;;
12013 esac
12014 set d_vfork
12015 eval $setvar
12016 case "$d_vfork" in
12017 $define) usevfork='true';;
12018 *) usevfork='false';;
12019 esac
12020
12021 : see if this is an sysdir system
12022 set sys/dir.h i_sysdir
12023 eval $inhdr
12024
12025 : see if this is an sysndir system
12026 set sys/ndir.h i_sysndir
12027 eval $inhdr
12028
12029 : see if closedir exists
12030 set closedir d_closedir
12031 eval $inlibc
12032
12033 case "$d_closedir" in
12034 "$define")
12035         echo " "
12036         echo "Checking whether closedir() returns a status..." >&4
12037         cat > closedir.c <<EOM
12038 #$i_dirent I_DIRENT             /**/
12039 #$i_sysdir I_SYS_DIR            /**/
12040 #$i_sysndir I_SYS_NDIR          /**/
12041 #$i_systypes I_SYS_TYPES        /**/
12042
12043 #if defined(I_SYS_TYPES)
12044 #include <sys/types.h>
12045 #endif
12046 #if defined(I_DIRENT)
12047 #include <dirent.h>
12048 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12049 #include <sys/dir.h>
12050 #endif
12051 #else
12052 #ifdef I_SYS_NDIR
12053 #include <sys/ndir.h>
12054 #else
12055 #ifdef I_SYS_DIR
12056 #ifdef hp9000s500
12057 #include <ndir.h>       /* may be wrong in the future */
12058 #else
12059 #include <sys/dir.h>
12060 #endif
12061 #endif
12062 #endif
12063 #endif 
12064 int main() { return closedir(opendir(".")); }
12065 EOM
12066         set closedir
12067         if eval $compile_ok; then
12068                 if ./closedir > /dev/null 2>&1 ; then
12069                         echo "Yes, it does."
12070                         val="$undef"
12071                 else
12072                         echo "No, it doesn't."
12073                         val="$define"
12074                 fi
12075         else
12076                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12077                 val="$define"
12078         fi
12079         ;;
12080 *)
12081         val="$undef";
12082         ;;
12083 esac
12084 set d_void_closedir
12085 eval $setvar
12086 $rm -f closedir*
12087 : check for volatile keyword
12088 echo " "
12089 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12090 $cat >try.c <<'EOCP'
12091 int main()
12092 {
12093         typedef struct _goo_struct goo_struct;
12094         goo_struct * volatile goo = ((goo_struct *)0);
12095         struct _goo_struct {
12096                 long long_int;
12097                 int reg_int;
12098                 char char_var;
12099         };
12100         typedef unsigned short foo_t;
12101         char *volatile foo;
12102         volatile int bar;
12103         volatile foo_t blech;
12104         foo = foo;
12105 }
12106 EOCP
12107 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12108         val="$define"
12109         echo "Yup, it does."
12110 else
12111         val="$undef"
12112         echo "Nope, it doesn't."
12113 fi
12114 set d_volatile
12115 eval $setvar
12116 $rm -f try.*
12117
12118 : see if there is a wait4
12119 set wait4 d_wait4
12120 eval $inlibc
12121
12122 : see if waitpid exists
12123 set waitpid d_waitpid
12124 eval $inlibc
12125
12126 : see if wcstombs exists
12127 set wcstombs d_wcstombs
12128 eval $inlibc
12129
12130 : see if wctomb exists
12131 set wctomb d_wctomb
12132 eval $inlibc
12133
12134 : preserve RCS keywords in files with variable substitution, grrr
12135 Date='$Date'
12136 Id='$Id'
12137 Log='$Log'
12138 RCSfile='$RCSfile'
12139 Revision='$Revision'
12140
12141 case "$crosscompile" in
12142 ''|[nN]*) crosscompile="$undef" ;;
12143 esac
12144
12145 case "$osname" in
12146 next|rhapsody|darwin) multiarch="$define" ;;
12147 esac
12148 case "$multiarch" in
12149 ''|[nN]*) multiarch="$undef" ;;
12150 esac
12151
12152 : check for alignment requirements
12153 echo " "
12154 case "$crosscompile$multiarch" in
12155 *$define*)
12156         $cat <<EOM
12157 You seem to be either cross-compiling or doing a multiarchitecture build,
12158 skipping the memory alignment check.
12159
12160 EOM
12161         case "$alignbytes" in
12162         '') alignbytes=8 ;;
12163         esac
12164         ;;
12165 *)
12166         case "$alignbytes" in
12167         '') echo "Checking alignment constraints..." >&4
12168                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12169                         $cat >try.c <<'EOCP'
12170 typedef long double NV;
12171 EOCP
12172                 else
12173                         $cat >try.c <<'EOCP'
12174 typedef double NV;
12175 EOCP
12176                 fi
12177                 $cat >>try.c <<'EOCP'
12178 #include <stdio.h>
12179 struct foobar {
12180         char foo;
12181         NV bar;
12182 } try_algn;
12183 int main()
12184 {
12185     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12186     return(0);
12187 }
12188 EOCP
12189                 set try
12190                 if eval $compile_ok; then
12191                         dflt=`./try`
12192                 else
12193                         dflt='8'
12194                         echo "(I can't seem to compile the test program...)"
12195                 fi
12196                 ;;
12197         *) dflt="$alignbytes"
12198                 ;;
12199         esac
12200         rp="Doubles must be aligned on a how-many-byte boundary?"
12201         . ./myread
12202         alignbytes="$ans"
12203         $rm -f try.c try
12204         ;;
12205 esac
12206
12207
12208 : set the base revision
12209 baserev=5.0
12210
12211 : check for ordering of bytes in a long
12212 echo " "
12213 case "$crosscompile$multiarch" in
12214 *$define*)
12215         $cat <<EOM
12216 You seem to be either cross-compiling or doing a multiarchitecture build,
12217 skipping the byteorder check.
12218
12219 EOM
12220         byteorder='0xffff'
12221         ;;
12222 *)
12223         case "$byteorder" in
12224         '')
12225                 $cat <<'EOM'
12226 In the following, larger digits indicate more significance.  A big-endian
12227 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12228 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12229 machines may have weird orders like 3412.  A Cray will report 87654321,
12230 an Alpha will report 12345678. If the test program works the default is
12231 probably right.
12232 I'm now running the test program...
12233 EOM
12234                 $cat >try.c <<'EOCP'
12235 #include <stdio.h>
12236 int main()
12237 {
12238         int i;
12239         union {
12240                 unsigned long l;
12241                 char c[sizeof(long)];
12242         } u;
12243
12244         if (sizeof(long) > 4)
12245                 u.l = (0x08070605L << 32) | 0x04030201L;
12246         else
12247                 u.l = 0x04030201L;
12248         for (i = 0; i < sizeof(long); i++)
12249                 printf("%c", u.c[i]+'0');
12250         printf("\n");
12251         exit(0);
12252 }
12253 EOCP
12254                 xxx_prompt=y
12255                 set try
12256                 if eval $compile && ./try > /dev/null; then
12257                         dflt=`./try`
12258                         case "$dflt" in
12259                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12260                                 echo "(The test program ran ok.)"
12261                                 echo "byteorder=$dflt"
12262                                 xxx_prompt=n
12263                         ;;
12264                         ????|????????) echo "(The test program ran ok.)" ;;
12265                         *) echo "(The test program didn't run right for some reason.)" ;;
12266                         esac
12267                 else
12268                         dflt='4321'
12269                         cat <<'EOM'
12270 (I can't seem to compile the test program.  Guessing big-endian...)
12271 EOM
12272                 fi
12273                 case "$xxx_prompt" in
12274                 y)
12275                         rp="What is the order of bytes in a long?"
12276                         . ./myread
12277                         byteorder="$ans"
12278                         ;;
12279                 *)      byteorder=$dflt
12280                         ;;
12281                 esac
12282                 ;;
12283         esac
12284         $rm -f try.c try
12285         ;;
12286 esac
12287
12288
12289 : how do we catenate cpp tokens here?
12290 echo " "
12291 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12292 $cat >cpp_stuff.c <<'EOCP'
12293 #define RCAT(a,b)a/**/b
12294 #define ACAT(a,b)a ## b
12295 RCAT(Rei,ser)
12296 ACAT(Cir,cus)
12297 EOCP
12298 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12299 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12300         echo "Oh!  Smells like ANSI's been here." >&4
12301         echo "We can catify or stringify, separately or together!"
12302         cpp_stuff=42
12303 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12304         echo "Ah, yes!  The good old days!" >&4
12305         echo "However, in the good old days we don't know how to stringify and"
12306         echo "catify at the same time."
12307         cpp_stuff=1
12308 else
12309         $cat >&4 <<EOM
12310 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12311 to have to edit the values of CAT[2-5] in config.h...
12312 EOM
12313         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12314 fi
12315 $rm -f cpp_stuff.*
12316
12317 : see if this is a db.h system
12318 set db.h i_db
12319 eval $inhdr
12320
12321 case "$i_db" in
12322 $define)
12323         : Check db version.
12324         echo " "
12325         echo "Checking Berkeley DB version ..." >&4
12326         $cat >try.c <<EOCP
12327 #$d_const HASCONST
12328 #ifndef HASCONST
12329 #define const
12330 #endif
12331 #include <sys/types.h>
12332 #include <stdio.h>
12333 #include <db.h>
12334 int main()
12335 {
12336 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12337     int Major, Minor, Patch ;
12338     unsigned long Version ;
12339     (void)db_version(&Major, &Minor, &Patch) ;
12340     printf("You have Berkeley DB Version 2 or greater\n");
12341
12342     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12343                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12344     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12345                 Major, Minor, Patch) ;
12346
12347     /* check that db.h & libdb are compatible */
12348     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12349         printf("db.h and libdb are incompatible\n") ;
12350         exit(3);        
12351     }
12352
12353     printf("db.h and libdb are compatible\n") ;
12354
12355     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12356                 + DB_VERSION_PATCH ;
12357
12358     /* needs to be >= 2.3.4 */
12359     if (Version < 2003004) {
12360     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12361         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12362         exit(2);        
12363     }
12364
12365     exit(0);
12366 #else
12367 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12368     printf("You have Berkeley DB Version 1\n");
12369     exit(0);    /* DB version < 2: the coast is clear. */
12370 #else
12371     exit(1);    /* <db.h> not Berkeley DB? */
12372 #endif
12373 #endif
12374 }
12375 EOCP
12376         set try
12377         if eval $compile_ok && ./try; then
12378                 echo 'Looks OK.' >&4
12379         else
12380                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12381                 i_db=$undef
12382                 case " $libs " in
12383                 *"-ldb "*)
12384                         : Remove db from list of libraries to use
12385                         echo "Removing unusable -ldb from library list" >&4
12386                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12387                         shift
12388                         libs="$*"
12389                         echo "libs = $libs" >&4
12390                         ;;
12391                 esac
12392         fi
12393         $rm -f try.*
12394         ;;
12395 esac
12396
12397 case "$i_db" in
12398 define)
12399         : Check the return type needed for hash 
12400         echo " "
12401         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12402         $cat >try.c <<EOCP
12403 #$d_const HASCONST
12404 #ifndef HASCONST
12405 #define const
12406 #endif
12407 #include <sys/types.h>
12408 #include <db.h>
12409
12410 #ifndef DB_VERSION_MAJOR
12411 u_int32_t hash_cb (ptr, size)
12412 const void *ptr;
12413 size_t size;
12414 {
12415 }
12416 HASHINFO info;
12417 int main()
12418 {
12419         info.hash = hash_cb;
12420 }
12421 #endif
12422 EOCP
12423         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12424                 if $contains warning try.out >>/dev/null 2>&1 ; then
12425                         db_hashtype='int'
12426                 else
12427                         db_hashtype='u_int32_t'
12428                 fi
12429         else
12430                 : XXX Maybe we should just give up here.
12431                 db_hashtype=u_int32_t
12432                 $cat try.out >&4
12433                 echo "Help:  I can't seem to compile the db test program." >&4
12434                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12435         fi
12436         $rm -f try.*
12437         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12438         ;;
12439 *)      db_hashtype=u_int32_t
12440         ;;
12441 esac
12442 case "$i_db" in
12443 define)
12444         : Check the return type needed for prefix 
12445         echo " "
12446         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12447         cat >try.c <<EOCP
12448 #$d_const HASCONST
12449 #ifndef HASCONST
12450 #define const
12451 #endif
12452 #include <sys/types.h>
12453 #include <db.h>
12454
12455 #ifndef DB_VERSION_MAJOR
12456 size_t prefix_cb (key1, key2)
12457 const DBT *key1;
12458 const DBT *key2;
12459 {
12460 }
12461 BTREEINFO info;
12462 int main()
12463 {
12464         info.prefix = prefix_cb;
12465 }
12466 #endif
12467 EOCP
12468         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12469                 if $contains warning try.out >>/dev/null 2>&1 ; then
12470                         db_prefixtype='int'
12471                 else
12472                         db_prefixtype='size_t'
12473                 fi
12474         else
12475                 db_prefixtype='size_t'
12476                 : XXX Maybe we should just give up here.
12477                 $cat try.out >&4
12478                 echo "Help:  I can't seem to compile the db test program." >&4
12479                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12480         fi
12481         $rm -f try.*
12482         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12483         ;;
12484 *)      db_prefixtype='size_t'
12485         ;;
12486 esac
12487
12488 : check for void type
12489 echo " "
12490 echo "Checking to see how well your C compiler groks the void type..." >&4
12491 case "$voidflags" in
12492 '')
12493         $cat >try.c <<'EOCP'
12494 #if TRY & 1
12495 void sub() {
12496 #else
12497 sub() {
12498 #endif
12499         extern void moo();      /* function returning void */
12500         void (*goo)();          /* ptr to func returning void */
12501 #if TRY & 8
12502         void *hue;              /* generic ptr */
12503 #endif
12504 #if TRY & 2
12505         void (*foo[10])();
12506 #endif
12507
12508 #if TRY & 4
12509         if(goo == moo) {
12510                 exit(0);
12511         }
12512 #endif
12513         exit(0);
12514 }
12515 int main() { sub(); }
12516 EOCP
12517         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12518                 voidflags=$defvoidused
12519         echo "Good.  It appears to support void to the level $package wants.">&4
12520                 if $contains warning .out >/dev/null 2>&1; then
12521                         echo "However, you might get some warnings that look like this:"
12522                         $cat .out
12523                 fi
12524         else
12525 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12526                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12527                         echo "It supports 1..."
12528                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12529                                 echo "It also supports 2..."
12530                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12531                                         voidflags=7
12532                                         echo "And it supports 4 but not 8 definitely."
12533                                 else
12534                                         echo "It doesn't support 4..."
12535                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12536                                                 voidflags=11
12537                                                 echo "But it supports 8."
12538                                         else
12539                                                 voidflags=3
12540                                                 echo "Neither does it support 8."
12541                                         fi
12542                                 fi
12543                         else
12544                                 echo "It does not support 2..."
12545                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12546                                         voidflags=13
12547                                         echo "But it supports 4 and 8."
12548                                 else
12549                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12550                                                 voidflags=5
12551                                                 echo "And it supports 4 but has not heard about 8."
12552                                         else
12553                                                 echo "However it supports 8 but not 4."
12554                                         fi
12555                                 fi
12556                         fi
12557                 else
12558                         echo "There is no support at all for void."
12559                         voidflags=0
12560                 fi
12561         fi
12562 esac
12563 case "$voidflags" in
12564 "$defvoidused") ;;
12565 *)      $cat >&4 <<'EOM'
12566   Support flag bits are:
12567     1: basic void declarations.
12568     2: arrays of pointers to functions returning void.
12569     4: operations between pointers to and addresses of void functions.
12570     8: generic void pointers.
12571 EOM
12572         dflt="$voidflags";
12573         rp="Your void support flags add up to what?"
12574         . ./myread
12575         voidflags="$ans"
12576         ;;
12577 esac
12578 $rm -f try.* .out
12579
12580
12581 : How can we generate normalized random numbers ?
12582 echo " "
12583 echo "Looking for a random number function..." >&4
12584 case "$randfunc" in
12585 '')
12586         if set drand48 val -f; eval $csym; $val; then
12587                 dflt="drand48"
12588                 echo "Good, found drand48()." >&4
12589         elif set random val -f; eval $csym; $val; then
12590                 dflt="random"
12591                 echo "OK, found random()." >&4
12592         else
12593                 dflt="rand"
12594                 echo "Yick, looks like I have to use rand()." >&4
12595         fi
12596         echo " "
12597         ;;
12598 *)
12599         dflt="$randfunc"
12600         ;;
12601 esac
12602 cont=true
12603
12604 case "$ccflags" in
12605 *-Dmy_rand=*|*-Dmy_srand=*)
12606         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12607         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12608         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12609         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12610         ;;
12611 esac
12612
12613 while $test "$cont"; do
12614         rp="Use which function to generate random numbers?"
12615         . ./myread
12616         if $test "$ans" = "$dflt"; then
12617                 : null
12618         else
12619                 randbits=''
12620         fi
12621         randfunc="$ans"
12622         if set $ans val -f; eval $csym; $val; then
12623                 cont=''
12624         else
12625                 dflt=y
12626                 rp="I cannot find function $ans. Use that name anyway?"
12627                 . ./myread
12628                 dflt=rand
12629                 case "$ans" in
12630                         [yY]*) cont='';;
12631                 esac
12632         fi
12633         case "$cont" in
12634         '')
12635                 case "$randfunc" in
12636                 drand48)
12637                         drand01="drand48()"
12638                         seedfunc="srand48"
12639                         randbits=48
12640                         randseedtype=long
12641                         ;;
12642                 rand|random)
12643                         case "$randbits" in
12644                         '')
12645 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12646                                 $cat >try.c <<EOCP
12647 #$i_unistd I_UNISTD
12648 #$i_stdlib I_STDLIB
12649 #include <stdio.h>
12650 #ifdef I_UNISTD
12651 #  include <unistd.h>
12652 #endif
12653 #ifdef I_STDLIB
12654 #  include <stdlib.h>
12655 #endif
12656 int main()
12657 {
12658         register int i;
12659         register unsigned long tmp;
12660         register unsigned long max = 0L;
12661
12662         for (i = 1000; i; i--) {
12663                 tmp = (unsigned long) $randfunc();
12664                 if (tmp > max) max = tmp;
12665         }
12666         for (i = 0; max; i++)
12667                 max /= 2;
12668         printf("%d\n",i);
12669 }
12670 EOCP
12671                                 set try
12672                                 if eval $compile_ok; then
12673                                         dflt=`try`
12674                                 else
12675                                         dflt='?'
12676                                         echo "(I can't seem to compile the test program...)"
12677                                 fi
12678                                 ;;
12679                         *)
12680                                 dflt="$randbits"
12681                                 ;;
12682                         esac
12683                         rp="How many bits does your $randfunc() function produce?"
12684                         . ./myread
12685                         randbits="$ans"
12686                         $rm -f try.c try
12687                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12688                         seedfunc="s$randfunc"
12689                         randseedtype=unsigned
12690                         ;;
12691                 *)
12692                         dflt="31"
12693                         rp="How many bits does your $randfunc() function produce?"
12694                         . ./myread
12695                         randbits="$ans"
12696                         seedfunc="s$randfunc"
12697                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12698                         if set $seedfunc val -f; eval $csym; $val; then
12699                                 echo "(Using $seedfunc() to seed random generator)"
12700                         else
12701                                 echo "(Warning: no $seedfunc() to seed random generator)"
12702                                 seedfunc=rand
12703                         fi
12704                         randseedtype=unsigned
12705                         ;;
12706                 esac
12707                 ;;
12708         esac
12709 done
12710
12711 echo " "
12712 echo "Determining whether or not we are on an EBCDIC system..." >&4
12713 $cat >tebcdic.c <<'EOM'
12714 int main()
12715 {
12716   if ('M'==0xd4) return 0;
12717   return 1;
12718 }
12719 EOM
12720
12721 val=$undef
12722 set tebcdic
12723 if eval $compile_ok; then
12724         if ./tebcdic; then
12725                 echo "You have EBCDIC." >&4
12726                 val="$define"
12727         else
12728                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12729         fi
12730 else
12731         echo "I'm unable to compile the test program." >&4
12732         echo "I'll assume ASCII or some ISO Latin." >&4
12733 fi
12734 $rm -f tebcdic.c tebcdic
12735 set ebcdic
12736 eval $setvar
12737
12738 echo " "
12739 $cat >&4 <<EOM
12740 Checking how to flush all pending stdio output...
12741 EOM
12742 # I only know how to find the first 32 possibly open files on SunOS.
12743 # See also hints/sunos_4_1.sh and util.c  --AD
12744 case "$osname" in
12745 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12746 esac
12747 $cat >>try.c <<EOCP
12748 #include <stdio.h>
12749 #$i_unistd I_UNISTD
12750 #ifdef I_UNISTD
12751 # include <unistd.h>
12752 #endif
12753 #$d_sysconf HAS_SYSCONF
12754 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12755 #ifdef HAS_STDIO_STREAM_ARRAY
12756 # define STDIO_STREAM_ARRAY $stdio_stream_array
12757 #endif
12758 int main() {
12759   FILE* p = fopen("try.out", "w");
12760 #ifdef TRY_FPUTC
12761   fputc('x', p);
12762 #else
12763 # ifdef TRY_FPRINTF
12764   fprintf(p, "x");
12765 # endif
12766 #endif
12767 #ifdef TRY_FFLUSH_NULL
12768   fflush(NULL);
12769 #endif
12770 #ifdef TRY_FFLUSH_ALL
12771   {
12772     long open_max = -1;
12773 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12774     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12775 # else
12776 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12777     open_max = sysconf(_SC_OPEN_MAX);
12778 #  else
12779 #   ifdef FOPEN_MAX
12780     open_max = FOPEN_MAX;
12781 #   else
12782 #    ifdef OPEN_MAX
12783     open_max = OPEN_MAX;
12784 #    else
12785 #     ifdef _NFILE
12786     open_max = _NFILE;
12787 #     endif
12788 #    endif
12789 #   endif
12790 #  endif
12791 # endif 
12792 # ifdef HAS_STDIO_STREAM_ARRAY
12793     if (open_max > 0) {
12794       long i;
12795       for (i = 0; i < open_max; i++)
12796             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12797                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12798                 STDIO_STREAM_ARRAY[i]._flag)
12799                 fflush(&STDIO_STREAM_ARRAY[i]);
12800     }   
12801   }
12802 # endif
12803 #endif
12804   _exit(42);
12805 }
12806 EOCP
12807 : first we have to find out how _not_ to flush
12808 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12809     output=''
12810     set try -DTRY_FPUTC
12811     if eval $compile; then
12812             $rm -f try.out
12813             ./try$exe_ext 2>/dev/null
12814             if $test ! -s try.out -a "X$?" = X42; then
12815                 output=-DTRY_FPUTC
12816             fi
12817     fi
12818     case "$output" in
12819     '')
12820             set try -DTRY_FPRINTF
12821             $rm -f try.out
12822             if eval $compile; then
12823                     $rm -f try.out
12824                     ./try$exe_ext 2>/dev/null
12825                     if $test ! -s try.out -a "X$?" = X42; then
12826                         output=-DTRY_FPRINTF
12827                     fi
12828             fi
12829         ;;
12830     esac
12831 fi
12832 : check for fflush NULL behaviour
12833 case "$fflushNULL" in
12834 '')     set try -DTRY_FFLUSH_NULL $output
12835         if eval $compile; then
12836                 $rm -f try.out
12837                 ./try$exe_ext 2>/dev/null
12838                 code="$?"
12839                 if $test -s try.out -a "X$code" = X42; then
12840                         fflushNULL="`$cat try.out`"
12841                 else
12842                         if $test "X$code" != X42; then
12843                                 $cat >&4 <<EOM
12844 (If this test failed, don't worry, we'll try another method shortly.)
12845 EOM
12846                         fi
12847                 fi
12848         fi
12849         $rm -f core try.core core.try.*
12850         case "$fflushNULL" in
12851         x)      $cat >&4 <<EOM
12852 Your fflush(NULL) works okay for output streams.
12853 Let's see if it clobbers input pipes...
12854 EOM
12855 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12856 # bug that improperly flushes the input end of pipes.  So we avoid the
12857 # autoflush on fork/system/exec support for now. :-(
12858 $cat >tryp.c <<EOCP
12859 #include <stdio.h>
12860 int
12861 main(int argc, char **argv)
12862 {
12863     char buf[1024];
12864     int i;
12865     char *bp = buf;
12866     while (1) {
12867         while ((i = getc(stdin)) != -1
12868                && (*bp++ = i) != '\n'
12869                && bp < &buf[1024])
12870         /* DO NOTHING */ ;
12871         *bp = '\0';
12872         fprintf(stdout, "%s", buf);
12873         fflush(NULL);
12874         if (i == -1)
12875             return 0;
12876         bp = buf;
12877     }
12878 }
12879 EOCP
12880                 fflushNULL="$define"
12881                 set tryp
12882                 if eval $compile; then
12883                     $rm -f tryp.out
12884                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12885                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12886                        $cat >&4 <<EOM
12887 fflush(NULL) seems to behave okay with input streams.
12888 EOM
12889                         fflushNULL="$define"
12890                     else
12891                         $cat >&4 <<EOM
12892 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12893 EOM
12894                         fflushNULL="$undef"
12895                     fi
12896                 fi
12897                 $rm -f core tryp.c tryp.core core.tryp.*
12898                 ;;
12899         '')     $cat >&4 <<EOM
12900 Your fflush(NULL) isn't working (contrary to ANSI C).
12901 EOM
12902                 fflushNULL="$undef"
12903                 ;;
12904         *)      $cat >&4 <<EOM
12905 Cannot figure out whether your fflush(NULL) works or not.
12906 I'm assuming it doesn't (contrary to ANSI C).
12907 EOM
12908                 fflushNULL="$undef"
12909                 ;;
12910         esac
12911         ;;
12912 $define|true|[yY]*)
12913         fflushNULL="$define"
12914         ;;
12915 *)
12916         fflushNULL="$undef"
12917         ;;
12918 esac
12919 : check explicit looping only if NULL did not work, and if the pipe
12920 : bug does not show up on an explicit flush too
12921 case "$fflushNULL" in
12922 "$undef")
12923         $cat >tryp.c <<EOCP
12924 #include <stdio.h>
12925 int
12926 main(int argc, char **argv)
12927 {
12928     char buf[1024];
12929     int i;
12930     char *bp = buf;
12931     while (1) {
12932         while ((i = getc(stdin)) != -1
12933                && (*bp++ = i) != '\n'
12934                && bp < &buf[1024])
12935         /* DO NOTHING */ ;
12936         *bp = '\0';
12937         fprintf(stdout, "%s", buf);
12938         fflush(stdin);
12939         if (i == -1)
12940             return 0;
12941         bp = buf;
12942     }
12943 }
12944 EOCP
12945         set tryp
12946         if eval $compile; then
12947             $rm -f tryp.out
12948             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12949             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12950                $cat >&4 <<EOM
12951 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12952 EOM
12953                 : now check for fflushall behaviour
12954                 case "$fflushall" in
12955                 '')     set try -DTRY_FFLUSH_ALL $output
12956                         if eval $compile; then
12957                                 $cat >&4 <<EOM
12958 (Now testing the other method--but note that this also may fail.)
12959 EOM
12960                                 $rm -f try.out
12961                                 ./try$exe_ext 2>/dev/null
12962                                 if $test -s try.out -a "X$?" = X42; then
12963                                         fflushall="`$cat try.out`"
12964                                 fi
12965                         fi
12966                         $rm -f core try.core core.try.*
12967                         case "$fflushall" in
12968                         x)      $cat >&4 <<EOM
12969 Whew. Flushing explicitly all the stdio streams works.
12970 EOM
12971                                 fflushall="$define"
12972                                 ;;
12973                         '')     $cat >&4 <<EOM
12974 Sigh. Flushing explicitly all the stdio streams doesn't work.
12975 EOM
12976                                 fflushall="$undef"
12977                                 ;;
12978                         *)      $cat >&4 <<EOM
12979 Cannot figure out whether flushing stdio streams explicitly works or not.
12980 I'm assuming it doesn't.
12981 EOM
12982                                 fflushall="$undef"
12983                                 ;;
12984                         esac
12985                         ;;
12986                 "$define"|true|[yY]*)
12987                         fflushall="$define"
12988                         ;;
12989                 *)
12990                         fflushall="$undef"
12991                         ;;
12992                 esac
12993             else
12994                 $cat >&4 <<EOM
12995 All is futile.  Even fflush(stdin) clobbers input pipes!
12996 EOM
12997                 fflushall="$undef"
12998             fi
12999         else
13000             fflushall="$undef"
13001         fi
13002         $rm -f core tryp.c tryp.core core.tryp.*
13003         ;;
13004 *)      fflushall="$undef"
13005         ;;
13006 esac
13007
13008 case "$fflushNULL$fflushall" in
13009 undefundef)
13010         $cat <<EOM
13011 OK, I give up.  I cannot figure out how to flush pending stdio output.
13012 We won't be flushing handles at all before fork/exec/popen.
13013 EOM
13014         ;;
13015 esac
13016 $rm -f try.* try$exe_ext
13017
13018 : Store the full pathname to the ar program for use in the C program
13019 : Respect a hint or command line value for full_ar.
13020 case "$full_ar" in
13021 '') full_ar=$ar ;;
13022 esac
13023
13024 : Store the full pathname to the sed program for use in the C program
13025 full_sed=$sed
13026
13027 : see what type gids are declared as in the kernel
13028 echo " "
13029 echo "Looking for the type for group ids returned by getgid()."
13030 set gid_t gidtype xxx stdio.h sys/types.h
13031 eval $typedef
13032 case "$gidtype" in
13033 xxx)
13034         xxx=`./findhdr sys/user.h`
13035         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13036         case $1 in
13037         unsigned) dflt="$1 $2" ;;
13038         *) dflt="$1" ;;
13039         esac
13040         ;;
13041 *) dflt="$gidtype";;
13042 esac
13043 case "$gidtype" in
13044 gid_t) echo "gid_t found." ;;
13045 *)      rp="What is the type for group ids returned by getgid()?"
13046         . ./myread
13047         gidtype="$ans"
13048         ;;
13049 esac
13050
13051 echo " "
13052 case "$gidtype" in
13053 *_t) zzz="$gidtype"     ;;
13054 *)   zzz="gid"          ;;
13055 esac
13056 echo "Checking the size of $zzz..." >&4 
13057 cat > try.c <<EOCP
13058 #include <sys/types.h>
13059 #include <stdio.h>
13060 int main() {
13061     printf("%d\n", (int)sizeof($gidtype));
13062     exit(0);
13063 }
13064 EOCP
13065 set try
13066 if eval $compile_ok; then
13067         yyy=`./try`
13068         case "$yyy" in
13069         '')     gidsize=4
13070                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13071                 ;;
13072         *)      gidsize=$yyy
13073                 echo "Your $zzz is $gidsize bytes long."
13074                 ;;
13075         esac
13076 else
13077         gidsize=4
13078         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13079 fi
13080
13081
13082 echo " "
13083 case "$gidtype" in
13084 *_t) zzz="$gidtype"     ;;
13085 *)   zzz="gid"          ;;
13086 esac
13087 echo "Checking the sign of $zzz..." >&4 
13088 cat > try.c <<EOCP
13089 #include <sys/types.h>
13090 #include <stdio.h>
13091 int main() {
13092         $gidtype foo = -1;
13093         if (foo < 0)
13094                 printf("-1\n");
13095         else
13096                 printf("1\n");
13097 }
13098 EOCP
13099 set try
13100 if eval $compile; then
13101         yyy=`./try`
13102         case "$yyy" in
13103         '')     gidsign=1
13104                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13105                 ;;
13106         *)      gidsign=$yyy
13107                 case "$gidsign" in
13108                  1) echo "Your $zzz is unsigned." ;;
13109                 -1) echo "Your $zzz is signed."   ;;
13110                 esac
13111                 ;;
13112         esac
13113 else
13114         gidsign=1
13115         echo "(I can't compile the test program--guessing unsigned.)" >&4
13116 fi
13117
13118
13119 echo " "
13120
13121 if $test X"$quadtype" != X; then
13122
13123 echo "Checking how to print 64-bit integers..." >&4
13124
13125 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13126         $cat >try.c <<'EOCP'
13127 #include <sys/types.h>
13128 #include <stdio.h>
13129 int main() {
13130   int q = 12345678901;
13131   printf("%ld\n", q);
13132 }
13133 EOCP
13134         set try
13135         if eval $compile; then
13136                 yyy=`./try$exe_ext`
13137                 case "$yyy" in
13138                 12345678901)
13139                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13140                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13141                         echo "We will use %d."
13142                         ;;
13143                 esac
13144         fi
13145 fi
13146
13147 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13148         $cat >try.c <<'EOCP'
13149 #include <sys/types.h>
13150 #include <stdio.h>
13151 int main() {
13152   long q = 12345678901;
13153   printf("%ld\n", q);
13154 }
13155 EOCP
13156         set try
13157         if eval $compile; then
13158                 yyy=`./try$exe_ext`
13159                 case "$yyy" in
13160                 12345678901)
13161                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13162                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13163                         echo "We will use %ld."
13164                         ;;
13165                 esac
13166         fi
13167 fi
13168
13169 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13170         $cat >try.c <<'EOCP'
13171 #include <sys/types.h>
13172 #include <inttypes.h>
13173 #include <stdio.h>
13174 int main() {
13175   int64_t q = 12345678901;
13176   printf("%" PRId64 "\n", q);
13177 }
13178 EOCP
13179         set try
13180         if eval $compile; then
13181                 yyy=`./try$exe_ext`
13182                 case "$yyy" in
13183                 12345678901)
13184                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13185                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13186                         echo "We will use the C9X style."
13187                         ;;
13188                 esac
13189         fi
13190 fi
13191
13192 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13193         $cat >try.c <<'EOCP'
13194 #include <sys/types.h>
13195 #include <stdio.h>
13196 int main() {
13197   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13198   printf("%lld\n", q);
13199 }
13200 EOCP
13201         set try
13202         if eval $compile; then
13203                 yyy=`./try$exe_ext`
13204                 case "$yyy" in
13205                 12345678901)
13206                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13207                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13208                         echo "We will use the %lld style."
13209                         ;;
13210                 esac
13211         fi
13212 fi
13213
13214 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13215         $cat >try.c <<EOCP
13216 #include <sys/types.h>
13217 #include <stdio.h>
13218 int main() {
13219   $quadtype q = 12345678901;
13220   printf("%Ld\n", q);
13221 }
13222 EOCP
13223         set try
13224         if eval $compile; then
13225                 yyy=`./try$exe_ext`
13226                 case "$yyy" in
13227                 12345678901)
13228                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13229                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13230                         echo "We will use %Ld."
13231                         ;;
13232                 esac
13233         fi
13234 fi
13235
13236 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13237         $cat >try.c <<EOCP
13238 #include <sys/types.h>
13239 #include <stdio.h>
13240 int main() {
13241   $quadtype q = 12345678901;
13242   printf("%qd\n", q);
13243 }
13244 EOCP
13245         set try
13246         if eval $compile; then
13247                 yyy=`./try$exe_ext`
13248                 case "$yyy" in
13249                 12345678901)
13250                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13251                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13252                         echo "We will use %qd."
13253                         ;;
13254                 esac
13255         fi
13256 fi
13257
13258 if $test X"$sPRId64" = X; then
13259         echo "Cannot figure out how to print 64-bit integers." >&4
13260 fi
13261
13262 $rm -f try try.*
13263
13264 fi
13265
13266 case "$sPRId64" in
13267 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13268         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13269         ;;
13270 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13271         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13272         ;;
13273 esac
13274
13275
13276 echo " "
13277 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13278
13279 if $test X"$ivsize" = X8; then
13280         ivdformat="$sPRId64"
13281         uvuformat="$sPRIu64"
13282         uvoformat="$sPRIo64"
13283         uvxformat="$sPRIx64"
13284         uvXformat="$sPRIX64"
13285 else
13286         if $test X"$ivsize" = X"$longsize"; then
13287                 ivdformat='"ld"'
13288                 uvuformat='"lu"'
13289                 uvoformat='"lo"'
13290                 uvxformat='"lx"'
13291                 uvXformat='"lX"'
13292         else
13293                 if $test X"$ivsize" = X"$intsize"; then
13294                         ivdformat='"d"'
13295                         uvuformat='"u"'
13296                         uvoformat='"o"'
13297                         uvxformat='"x"'
13298                         uvXformat='"X"'
13299                 else
13300                         : far out
13301                         if $test X"$ivsize" = X"$shortsize"; then
13302                                 ivdformat='"hd"'
13303                                 uvuformat='"hu"'
13304                                 uvoformat='"ho"'
13305                                 uvxformat='"hx"'
13306                                 uvXformat='"hX"'
13307                         fi
13308                 fi
13309         fi
13310 fi
13311
13312 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13313         nveformat="$sPRIeldbl"
13314         nvfformat="$sPRIfldbl"
13315         nvgformat="$sPRIgldbl"
13316         nvEformat="$sPRIEldbl"
13317         nvFformat="$sPRIFldbl"
13318         nvGformat="$sPRIGldbl"
13319 else
13320         nveformat='"e"'
13321         nvfformat='"f"'
13322         nvgformat='"g"'
13323         nvEformat='"E"'
13324         nvFformat='"F"'
13325         nvGformat='"G"'
13326 fi
13327
13328 case "$ivdformat" in
13329 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13330     exit 1
13331     ;;
13332 esac
13333
13334
13335 echo " "
13336 $echo "Checking the format string to be used for gids..." >&4
13337
13338 case "$gidsign" in
13339 -1)     if $test X"$gidsize" = X"$ivsize"; then
13340                 gidformat="$ivdformat"
13341         else
13342                 if $test X"$gidsize" = X"$longsize"; then
13343                         gidformat='"ld"'
13344                 else
13345                         if $test X"$gidsize" = X"$intsize"; then
13346                                 gidformat='"d"'
13347                         else
13348                                 if $test X"$gidsize" = X"$shortsize"; then
13349                                         gidformat='"hd"'
13350                                 fi
13351                         fi
13352                 fi
13353         fi
13354         ;;
13355 *)      if $test X"$gidsize" = X"$uvsize"; then
13356                 gidformat="$uvuformat"
13357         else
13358                 if $test X"$gidsize" = X"$longsize"; then
13359                         gidformat='"lu"'
13360                 else
13361                         if $test X"$gidsize" = X"$intsize"; then
13362                                 gidformat='"u"'
13363                         else
13364                                 if $test X"$gidsize" = X"$shortsize"; then
13365                                         gidformat='"hu"'
13366                                 fi
13367                         fi
13368                 fi
13369         fi
13370         ;;
13371 esac
13372
13373 : see if getgroups exists
13374 set getgroups d_getgrps
13375 eval $inlibc
13376
13377 : see if setgroups exists
13378 set setgroups d_setgrps
13379 eval $inlibc
13380
13381
13382 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13383 echo " "
13384 case "$d_getgrps$d_setgrps" in
13385 *define*)
13386         case "$groupstype" in
13387         '') dflt="$gidtype" ;;
13388         *)  dflt="$groupstype" ;;
13389         esac
13390         $cat <<EOM
13391 What type of pointer is the second argument to getgroups() and setgroups()?
13392 Usually this is the same as group ids, $gidtype, but not always.
13393
13394 EOM
13395         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13396         . ./myread
13397         groupstype="$ans"
13398         ;;
13399 *)  groupstype="$gidtype";;
13400 esac
13401
13402 echo " "
13403 echo "Checking if your $make program sets \$(MAKE)..." >&4
13404 case "$make_set_make" in
13405 '')
13406         $sed 's/^X //' > testmake.mak << 'EOF'
13407 Xall:
13408 X       @echo 'maketemp="$(MAKE)"'
13409 EOF
13410         case "`$make -f testmake.mak 2>/dev/null`" in
13411         *maketemp=*) make_set_make='#' ;;
13412         *)      make_set_make="MAKE=$make" ;;
13413         esac
13414         $rm -f testmake.mak
13415         ;;
13416 esac
13417 case "$make_set_make" in
13418 '#') echo "Yup, it does.";;
13419 *) echo "Nope, it doesn't.";;
13420 esac
13421
13422 : see what type is used for mode_t
13423 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13424 set mode_t modetype int stdio.h sys/types.h
13425 eval $typedef_ask
13426
13427 : define a fucntion to check prototypes
13428 $cat > protochk <<EOSH
13429 $startsh
13430 cc="$cc"
13431 optimize="$optimize"
13432 ccflags="$ccflags"
13433 prototype="$prototype"
13434 define="$define"
13435 rm=$rm
13436 EOSH
13437
13438 $cat >> protochk <<'EOSH'
13439
13440 $rm -f try.c
13441 foo="$1"
13442 shift
13443 while test $# -ge 2; do
13444         case "$1" in
13445                 $define) echo "#include <$2>" >> try.c ;;
13446                 literal) echo "$2" >> try.c ;;
13447         esac
13448     shift 2
13449 done
13450 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13451 cat >> try.c <<'EOCP'
13452 #ifdef CAN_PROTOTYPE
13453 #define _(args) args
13454 #else
13455 #define _(args) ()
13456 #endif
13457 EOCP
13458 echo "$foo" >> try.c
13459 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13460 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13461 status=$?
13462 $rm -f try.[co]
13463 exit $status
13464 EOSH
13465 chmod +x protochk
13466 $eunicefix protochk
13467
13468 : see what type is used for size_t
13469 rp="What is the type used for the length parameter for string functions?"
13470 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13471 eval $typedef_ask
13472
13473 : check for type of arguments to gethostbyaddr. 
13474 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13475         case "$d_gethbyaddr" in
13476         $define)
13477                 $cat <<EOM
13478
13479 Checking to see what type of arguments are accepted by gethostbyaddr().
13480 EOM
13481                 hdrs="$define sys/types.h
13482                         $d_socket sys/socket.h 
13483                         $i_niin netinet/in.h 
13484                         $i_netdb netdb.h
13485                         $i_unistd unistd.h"
13486                 : The first arg can 'char *' or 'void *'
13487                 : The second arg is some of integral type
13488                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13489                         for yyy in size_t long int; do
13490                                 case "$netdb_host_type" in
13491                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13492                                         if ./protochk "$try" $hdrs; then
13493                                                 echo "Your system accepts $xxx for the first arg."
13494                                                 echo "...and $yyy for the second arg."
13495                                                 netdb_host_type="$xxx"
13496                                                 netdb_hlen_type="$yyy"
13497                                         fi
13498                                         ;;
13499                                 esac
13500                         done
13501                 done
13502                 : In case none of those worked, prompt the user.
13503                 case "$netdb_host_type" in
13504                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13505                         dflt='char *'
13506                         . ./myread
13507                         netdb_host_type=$ans
13508                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13509                         dflt="$sizetype"
13510                         . ./myread
13511                         netdb_hlen_type=$ans
13512                         ;;
13513                 esac
13514                 ;;
13515         *)      : no gethostbyaddr, so pick harmless defaults
13516                 netdb_host_type='char *'
13517                 netdb_hlen_type="$sizetype"
13518                 ;;
13519         esac
13520         # Remove the "const" if needed. -- but then we'll have a 
13521         # prototype clash!
13522         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13523 fi
13524
13525 : check for type of argument to gethostbyname. 
13526 if test "X$netdb_name_type" = X ; then
13527         case "$d_gethbyname" in
13528         $define)
13529                 $cat <<EOM
13530
13531 Checking to see what type of argument is accepted by gethostbyname().
13532 EOM
13533                 hdrs="$define sys/types.h
13534                         $d_socket sys/socket.h 
13535                         $i_niin netinet/in.h 
13536                         $i_netdb netdb.h
13537                         $i_unistd unistd.h"
13538                 for xxx in "const char *" "char *"; do
13539                         case "$netdb_name_type" in
13540                         '')     try="extern struct hostent *gethostbyname($xxx);"
13541                                 if ./protochk "$try" $hdrs; then
13542                                         echo "Your system accepts $xxx."
13543                                         netdb_name_type="$xxx"
13544                                 fi
13545                                 ;;
13546                         esac
13547                 done
13548                 : In case none of those worked, prompt the user.
13549                 case "$netdb_name_type" in
13550                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13551                         dflt='char *'
13552                         . ./myread
13553                         netdb_name_type=$ans
13554                         ;;
13555                 esac
13556                 ;;
13557         *)      : no gethostbyname, so pick harmless default
13558                 netdb_name_type='char *'
13559                 ;;
13560         esac
13561 fi
13562
13563 : check for type of 1st argument to getnetbyaddr. 
13564 if test "X$netdb_net_type" = X ; then
13565         case "$d_getnbyaddr" in
13566         $define)
13567                 $cat <<EOM
13568
13569 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13570 EOM
13571                 hdrs="$define sys/types.h
13572                         $d_socket sys/socket.h 
13573                         $i_niin netinet/in.h 
13574                         $i_netdb netdb.h
13575                         $i_unistd unistd.h"
13576                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13577                         case "$netdb_net_type" in
13578                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13579                                 if ./protochk "$try" $hdrs; then
13580                                         echo "Your system accepts $xxx."
13581                                         netdb_net_type="$xxx"
13582                                 fi
13583                                 ;;
13584                         esac
13585                 done
13586                 : In case none of those worked, prompt the user.
13587                 case "$netdb_net_type" in
13588                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13589                         dflt='long'
13590                         . ./myread
13591                         netdb_net_type=$ans
13592                         ;;
13593                 esac
13594                 ;;
13595         *)      : no getnetbyaddr, so pick harmless default
13596                 netdb_net_type='long'
13597                 ;;
13598         esac
13599 fi
13600 : locate the preferred pager for this system
13601 case "$pager" in
13602 '')
13603         dflt=''
13604         case "$pg" in
13605         /*) dflt=$pg;;
13606         esac
13607         case "$more" in
13608         /*) dflt=$more;;
13609         esac
13610         case "$less" in
13611         /*) dflt=$less;;
13612         esac
13613         case "$dflt" in
13614         '') dflt=/usr/ucb/more;;
13615         esac
13616         ;;
13617 *) dflt="$pager";;
13618 esac
13619 echo " "
13620 fn=f/
13621 rp='What pager is used on your system?'
13622 . ./getfile
13623 pager="$ans"
13624
13625 : see what type pids are declared as in the kernel
13626 rp="What is the type of process ids on this system?"
13627 set pid_t pidtype int stdio.h sys/types.h
13628 eval $typedef_ask
13629
13630 : Find earliest binary compatible site_perl subdirectory perl can use.
13631 case "$bincompat5005" in
13632 "$define") xs_apiversion='5.005' ;;
13633 *) xs_apiversion=$version ;;   # The current site_perl version.
13634 esac
13635 : Find earliest pure perl site_perl subdirectory perl can use.
13636 : The versioned directories started at 5.005.
13637 pm_apiversion='5.005'
13638
13639 : check for length of pointer
13640 echo " "
13641 case "$ptrsize" in
13642 '')
13643         echo "Checking to see how big your pointers are..." >&4
13644         if test "$voidflags" -gt 7; then
13645                 echo '#define VOID_PTR char *' > try.c
13646         else
13647                 echo '#define VOID_PTR void *' > try.c
13648         fi
13649         $cat >>try.c <<'EOCP'
13650 #include <stdio.h>
13651 int main()
13652 {
13653     printf("%d\n", (int)sizeof(VOID_PTR));
13654     exit(0);
13655 }
13656 EOCP
13657         set try
13658         if eval $compile_ok; then
13659                 ptrsize=`./try`
13660                 echo "Your pointers are $ptrsize bytes long."
13661         else
13662                 dflt='4'
13663                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13664                 rp="What is the size of a pointer (in bytes)?"
13665                 . ./myread
13666                 ptrsize="$ans"
13667         fi
13668         ;;
13669 esac
13670 $rm -f try.c try
13671
13672 : see if ar generates random libraries by itself
13673 echo " "
13674 echo "Checking how to generate random libraries on your machine..." >&4
13675 echo 'int bar1() { return bar2(); }' > bar1.c
13676 echo 'int bar2() { return 2; }' > bar2.c
13677 $cat > foo.c <<'EOP'
13678 int main() { printf("%d\n", bar1()); exit(0); }
13679 EOP
13680 $cc $ccflags -c bar1.c >/dev/null 2>&1
13681 $cc $ccflags -c bar2.c >/dev/null 2>&1
13682 $cc $ccflags -c foo.c >/dev/null 2>&1
13683 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13684 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13685         ./foobar >/dev/null 2>&1; then
13686         echo "$ar appears to generate random libraries itself."
13687         orderlib=false
13688         ranlib=":"
13689 elif $ar ts bar$_a >/dev/null 2>&1 &&
13690         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13691         ./foobar >/dev/null 2>&1; then
13692                 echo "a table of contents needs to be added with '$ar ts'."
13693                 orderlib=false
13694                 ranlib="$ar ts"
13695 else
13696         case "$ranlib" in
13697         :) ranlib='';;
13698         '')
13699                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13700                 $test -f $ranlib || ranlib=''
13701                 ;;
13702         esac
13703         if $test -n "$ranlib"; then
13704                 echo "your system has '$ranlib'; we'll use that."
13705                 orderlib=false
13706         else
13707                 echo "your system doesn't seem to support random libraries"
13708                 echo "so we'll use lorder and tsort to order the libraries."
13709                 orderlib=true
13710                 ranlib=":"
13711         fi
13712 fi
13713 $rm -f foo* bar* 
13714
13715 : check for type of arguments to select. 
13716 case "$selecttype" in
13717 '') case "$d_select" in
13718         $define)
13719                 echo " "
13720                 $cat <<EOM
13721 Checking to see what type of arguments are accepted by select().
13722 EOM
13723                 hdrs="$define sys/types.h
13724                         $i_systime sys/time.h 
13725                         $i_sysselct sys/select.h
13726                         $d_socket sys/socket.h"
13727                 : The first arg can be int, unsigned, or size_t
13728                 : The last arg may or may not be 'const'
13729                 val=''
13730                 : void pointer has been seen but using that
13731                 : breaks the selectminbits test
13732                 for xxx in 'fd_set *' 'int *'; do
13733                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13734                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13735                                         case "$val" in
13736                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13737                                                 if ./protochk "$try" $hdrs; then
13738                                                         echo "Your system accepts $xxx."
13739                                                         val="$xxx"
13740                                                 fi
13741                                                 ;;
13742                                         esac
13743                                 done
13744                         done
13745                 done
13746                 case "$val" in
13747                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13748                         case "$d_fd_set" in
13749                                 $define) dflt="fd_set *" ;;
13750                                 *)              dflt="int *" ;;
13751                         esac
13752                         . ./myread
13753                         val=$ans
13754                         ;;
13755                 esac
13756                 selecttype="$val"
13757                 ;;
13758         *)      : no select, so pick a harmless default
13759                 selecttype='int *'
13760                 ;;
13761         esac
13762         ;;
13763 esac
13764
13765 : check for the select 'width'
13766 case "$selectminbits" in
13767 '') case "$d_select" in
13768         $define)
13769                 $cat <<EOM
13770
13771 Checking to see on how many bits at a time your select() operates...
13772 EOM
13773                 $cat >try.c <<EOCP
13774 #include <sys/types.h>
13775 #$i_time I_TIME
13776 #$i_systime I_SYS_TIME
13777 #$i_systimek I_SYS_TIME_KERNEL
13778 #ifdef I_TIME
13779 #   include <time.h>
13780 #endif
13781 #ifdef I_SYS_TIME
13782 #   ifdef I_SYS_TIME_KERNEL
13783 #       define KERNEL
13784 #   endif
13785 #   include <sys/time.h>
13786 #   ifdef I_SYS_TIME_KERNEL
13787 #       undef KERNEL
13788 #   endif
13789 #endif
13790 #$i_sysselct I_SYS_SELECT
13791 #ifdef I_SYS_SELECT
13792 #include <sys/select.h>
13793 #endif
13794 #$d_socket HAS_SOCKET
13795 #ifdef HAS_SOCKET
13796 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13797 #endif
13798 #include <stdio.h>
13799 $selecttype b;
13800 #define S sizeof(*(b))
13801 #define MINBITS 64
13802 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13803 #define NBITS  (NBYTES * 8)
13804 int main() {
13805     char s[NBYTES];
13806     struct timeval t;
13807     int i;
13808     FILE* fp;
13809     int fd;
13810
13811     fclose(stdin);
13812     fp = fopen("try.c", "r");
13813     if (fp == 0)
13814       exit(1);
13815     fd = fileno(fp);
13816     if (fd < 0)
13817       exit(2);
13818     b = ($selecttype)s;
13819     for (i = 0; i < NBITS; i++)
13820         FD_SET(i, b);
13821     t.tv_sec  = 0;
13822     t.tv_usec = 0;
13823     select(fd + 1, b, 0, 0, &t);
13824     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13825     printf("%d\n", i + 1);
13826     return 0;
13827 }
13828 EOCP
13829                 set try
13830                 if eval $compile_ok; then
13831                         selectminbits=`./try`
13832                         case "$selectminbits" in
13833                         '')     cat >&4 <<EOM
13834 Cannot figure out on how many bits at a time your select() operates.
13835 I'll play safe and guess it is 32 bits.
13836 EOM
13837                                 selectminbits=32
13838                                 bits="32 bits"
13839                                 ;;
13840                         1)      bits="1 bit" ;;
13841                         *)      bits="$selectminbits bits" ;;
13842                         esac
13843                         echo "Your select() operates on $bits at a time." >&4
13844                 else
13845                         rp='What is the minimum number of bits your select() operates on?'
13846                         case "$byteorder" in
13847                         1234|12345678)  dflt=32 ;;
13848                         *)              dflt=1  ;;
13849                         esac
13850                         . ./myread
13851                         val=$ans
13852                         selectminbits="$val"
13853                 fi
13854                 $rm -f try.* try
13855                 ;;
13856         *)      : no select, so pick a harmless default
13857                 selectminbits='32'
13858                 ;;
13859         esac
13860         ;;
13861 esac
13862
13863 : Trace out the files included by signal.h, then look for SIGxxx names.
13864 : Remove SIGARRAYSIZE used by HPUX.
13865 : Remove SIGSTKSIZE used by Linux.
13866 : Remove SIGSTKSZ used by Posix.
13867 : Remove SIGTYP void lines used by OS2.
13868 : Some cpps, like os390, dont give the file name anywhere
13869 if [ "X$fieldn" = X ]; then
13870         : Just make some guesses.  We check them later.
13871         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13872 else
13873         xxx=`echo '#include <signal.h>' |
13874         $cppstdin $cppminus $cppflags 2>/dev/null |
13875         $grep '^[       ]*#.*include' | 
13876         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13877 fi
13878 : Check this list of files to be sure we have parsed the cpp output ok.
13879 : This will also avoid potentially non-existent files, such 
13880 : as ../foo/bar.h
13881 xxxfiles=''
13882 for xx in $xxx /dev/null ; do
13883         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13884 done
13885 : If we have found no files, at least try signal.h
13886 case "$xxxfiles" in
13887 '')     xxxfiles=`./findhdr signal.h` ;;
13888 esac
13889 xxx=`awk '
13890 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13891         print substr($2, 4, 20)
13892 }
13893 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13894         print substr($3, 4, 20)
13895 }' $xxxfiles`
13896 : Append some common names just in case the awk scan failed.
13897 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13898 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13899 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13900 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13901 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13902
13903 : generate a few handy files for later
13904 $cat > signal.c <<'EOCP'
13905 #include <sys/types.h>
13906 #include <signal.h>
13907 #include <stdio.h>
13908 int main() {
13909
13910 /* Strange style to avoid deeply-nested #if/#else/#endif */
13911 #ifndef NSIG
13912 #  ifdef _NSIG
13913 #    define NSIG (_NSIG)
13914 #  endif
13915 #endif
13916
13917 #ifndef NSIG
13918 #  ifdef SIGMAX
13919 #    define NSIG (SIGMAX+1)
13920 #  endif
13921 #endif
13922
13923 #ifndef NSIG
13924 #  ifdef SIG_MAX
13925 #    define NSIG (SIG_MAX+1)
13926 #  endif
13927 #endif
13928
13929 #ifndef NSIG
13930 #  ifdef MAXSIG
13931 #    define NSIG (MAXSIG+1)
13932 #  endif
13933 #endif
13934
13935 #ifndef NSIG
13936 #  ifdef MAX_SIG
13937 #    define NSIG (MAX_SIG+1)
13938 #  endif
13939 #endif
13940
13941 #ifndef NSIG
13942 #  ifdef SIGARRAYSIZE
13943 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13944 #  endif
13945 #endif
13946
13947 #ifndef NSIG
13948 #  ifdef _sys_nsig
13949 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13950 #  endif
13951 #endif
13952
13953 /* Default to some arbitrary number that's big enough to get most
13954    of the common signals.
13955 */
13956 #ifndef NSIG
13957 #    define NSIG 50
13958 #endif
13959
13960 printf("NSIG %d\n", NSIG);
13961
13962 #ifndef JUST_NSIG
13963
13964 EOCP
13965
13966 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13967 {
13968         printf "#ifdef SIG"; printf $1; printf "\n"
13969         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13970         printf $1; printf ");\n"
13971         printf "#endif\n"
13972 }
13973 END {
13974         printf "#endif /* JUST_NSIG */\n";
13975         printf "exit(0);\n}\n";
13976 }
13977 ' >>signal.c
13978 $cat >signal.awk <<'EOP'
13979 BEGIN { ndups = 0 }
13980 $1 ~ /^NSIG$/ { nsig = $2 }
13981 ($1 !~ /^NSIG$/) && (NF == 2) {
13982     if ($2 > maxsig) { maxsig = $2 }
13983     if (sig_name[$2]) {
13984         dup_name[ndups] = $1
13985         dup_num[ndups] = $2
13986         ndups++ 
13987     }
13988     else {
13989         sig_name[$2] = $1
13990         sig_num[$2] = $2
13991     }
13992 }
13993 END { 
13994     if (nsig == 0) {
13995         nsig = maxsig + 1
13996     }
13997     printf("NSIG %d\n", nsig);
13998     for (n = 1; n < nsig; n++) {
13999         if (sig_name[n]) {
14000             printf("%s %d\n", sig_name[n], sig_num[n])
14001         }
14002         else {
14003             printf("NUM%d %d\n", n, n) 
14004         }
14005     }
14006     for (n = 0; n < ndups; n++) {
14007         printf("%s %d\n", dup_name[n], dup_num[n])
14008     }
14009 }
14010 EOP
14011 $cat >signal_cmd <<EOS
14012 $startsh
14013 if $test -s signal.lst; then
14014     echo "Using your existing signal.lst file"
14015         exit 0
14016 fi
14017 xxx="$xxx"
14018 EOS
14019 $cat >>signal_cmd <<'EOS'
14020
14021 set signal
14022 if eval $compile_ok; then
14023         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14024 else
14025         echo "(I can't seem be able to compile the whole test program)" >&4
14026         echo "(I'll try it in little pieces.)" >&4
14027         set signal -DJUST_NSIG
14028         if eval $compile_ok; then
14029                 ./signal$_exe > signal.nsg
14030                 $cat signal.nsg
14031         else
14032                 echo "I can't seem to figure out how many signals you have." >&4
14033                 echo "Guessing 50." >&4
14034                 echo 'NSIG 50' > signal.nsg
14035         fi
14036         : Now look at all the signal names, one at a time.
14037         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14038                 $cat > signal.c <<EOCP
14039 #include <sys/types.h>
14040 #include <signal.h>
14041 #include <stdio.h>
14042 int main() {
14043 printf("$xx %d\n", SIG${xx});
14044 return 0;
14045 }
14046 EOCP
14047                 set signal
14048                 if eval $compile; then
14049                         echo "SIG${xx} found."
14050                         ./signal$_exe  >> signal.ls1
14051                 else
14052                         echo "SIG${xx} NOT found."
14053                 fi
14054         done
14055         if $test -s signal.ls1; then
14056                 $cat signal.nsg signal.ls1 |
14057                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14058         fi
14059
14060 fi
14061 if $test -s signal.lst; then
14062         :
14063 else
14064         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14065         echo 'kill -l' >signal
14066         set X `csh -f <signal`
14067         $rm -f signal
14068         shift
14069         case $# in
14070         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14071         esac
14072         echo $@ | $tr ' ' $trnl | \
14073             $awk '{ printf "%s %d\n", $1, ++s; }
14074                   END { printf "NSIG %d\n", ++s }' >signal.lst
14075 fi
14076 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14077 EOS
14078 chmod a+x signal_cmd
14079 $eunicefix signal_cmd
14080
14081 : generate list of signal names
14082 echo " "
14083 case "$sig_name_init" in
14084 '') doinit=yes ;;
14085 *)  case "$sig_num_init" in
14086     ''|*,*) doinit=yes ;;
14087     esac ;;
14088 esac
14089 case "$doinit" in
14090 yes)
14091         echo "Generating a list of signal names and numbers..." >&4
14092         . ./signal_cmd
14093         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14094         sig_name=`$awk 'BEGIN { printf "ZERO " }
14095                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14096         sig_num=`$awk  'BEGIN { printf "0 " }
14097                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14098         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14099                              !/^NSIG/   { printf "\"%s\", ", $1 }
14100                              END        { printf "0\n" }' signal.lst`
14101         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14102                              !/^NSIG/   { printf "%d, ", $2}
14103                              END        { printf "0\n"}' signal.lst`
14104         ;;
14105 esac
14106 echo "The following $sig_count signals are available:"
14107 echo " "
14108 echo $sig_name | $awk \
14109 'BEGIN { linelen = 0 }
14110 {
14111         for (i = 1; i <= NF; i++) {
14112                 name = "SIG" $i " "
14113                 linelen = linelen + length(name)
14114                 if (linelen > 70) {
14115                         printf "\n"
14116                         linelen = length(name)
14117                 }
14118                 printf "%s", name
14119         }
14120         printf "\n"
14121 }'
14122 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14123
14124 echo " "
14125 case "$sizetype" in
14126 *_t) zzz="$sizetype"    ;;
14127 *)   zzz="filesize"     ;;
14128 esac
14129 echo "Checking the size of $zzz..." >&4 
14130 cat > try.c <<EOCP
14131 #include <sys/types.h>
14132 #include <stdio.h>
14133 int main() {
14134     printf("%d\n", (int)sizeof($sizetype));
14135     exit(0);
14136 }
14137 EOCP
14138 set try
14139 if eval $compile_ok; then
14140         yyy=`./try`
14141         case "$yyy" in
14142         '')     sizesize=4
14143                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14144                 ;;
14145         *)      sizesize=$yyy
14146                 echo "Your $zzz size is $sizesize bytes."
14147                 ;;
14148         esac
14149 else
14150         sizesize=4
14151         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14152 fi
14153
14154
14155 : check for socklen_t
14156 echo " "
14157 echo "Checking to see if you have socklen_t..." >&4
14158 $cat >try.c <<EOCP
14159 #include <sys/types.h>
14160 #$d_socket HAS_SOCKET
14161 #ifdef HAS_SOCKET
14162 #include <sys/socket.h>
14163 #endif
14164 int main() { socklen_t x = 16; }
14165 EOCP
14166 set try
14167 if eval $compile; then
14168         val="$define"
14169         echo "You have socklen_t."
14170 else
14171         val="$undef"
14172         echo "You do not have socklen_t."
14173         case "$sizetype" in
14174         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14175         esac
14176 fi
14177 $rm -f try try.*
14178 set d_socklen_t
14179 eval $setvar
14180
14181 : check for type of the size argument to socket calls
14182 case "$d_socket" in
14183 "$define")
14184         $cat <<EOM
14185
14186 Checking to see what type is the last argument of accept().
14187 EOM
14188         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14189         yyy=''
14190         case "$d_socklen_t" in
14191         "$define") yyy="$yyy socklen_t"
14192         esac
14193         yyy="$yyy $sizetype int long unsigned"
14194         for xxx in $yyy; do
14195                 case "$socksizetype" in
14196                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14197                         if ./protochk "$try" $hdrs; then
14198                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14199                                 socksizetype="$xxx"
14200                         fi
14201                         ;;
14202                 esac
14203         done
14204 : In case none of those worked, prompt the user.
14205         case "$socksizetype" in
14206         '')     rp='What is the type for socket address structure sizes?'
14207                 dflt='int'
14208                 . ./myread
14209                 socksizetype=$ans
14210                 ;;
14211         esac
14212         ;;
14213 *)      : no sockets, so pick relatively harmless default
14214         socksizetype='int'
14215         ;;
14216 esac
14217
14218 : see what type is used for signed size_t
14219 set ssize_t ssizetype int stdio.h sys/types.h
14220 eval $typedef
14221 dflt="$ssizetype"
14222 $cat > ssize.c <<EOM
14223 #include <stdio.h>
14224 #include <sys/types.h>
14225 #define Size_t $sizetype
14226 #define SSize_t $dflt
14227 int main()
14228 {
14229         if (sizeof(Size_t) == sizeof(SSize_t))
14230                 printf("$dflt\n");
14231         else if (sizeof(Size_t) == sizeof(int))
14232                 printf("int\n");
14233         else 
14234                 printf("long\n");
14235         exit(0);
14236 }
14237 EOM
14238 echo " "
14239 set ssize
14240 if eval $compile_ok && ./ssize > /dev/null; then
14241         ssizetype=`./ssize`
14242         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14243 else
14244         $cat >&4 <<EOM
14245 Help! I can't compile and run the ssize_t test program: please enlighten me!
14246 (This is probably a misconfiguration in your system or libraries, and
14247 you really ought to fix it.  Still, I'll try anyway.)
14248
14249 I need a type that is the same size as $sizetype, but is guaranteed to
14250 be signed.  Common values are ssize_t, int and long.
14251
14252 EOM
14253         rp="What signed type is the same size as $sizetype?"
14254         . ./myread
14255         ssizetype="$ans"
14256 fi
14257 $rm -f ssize ssize.*
14258
14259 : see what type of char stdio uses.
14260 echo " "
14261 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14262         echo "Your stdio uses unsigned chars." >&4
14263         stdchar="unsigned char"
14264 else
14265         echo "Your stdio uses signed chars." >&4
14266         stdchar="char"
14267 fi
14268
14269 : see if time exists
14270 echo " "
14271 if test "X$d_time" = X -o X"$timetype" = X; then
14272     if set time val -f d_time; eval $csym; $val; then
14273                 echo 'time() found.' >&4
14274                 val="$define"
14275                 rp="What is the type returned by time() on this system?"
14276                 set time_t timetype long stdio.h sys/types.h
14277                 eval $typedef_ask
14278     else
14279                 echo 'time() not found, hope that will do.' >&4
14280                 val="$undef"
14281                 timetype='int';
14282     fi
14283     set d_time
14284     eval $setvar
14285 fi
14286
14287 : see what type uids are declared as in the kernel
14288 echo " "
14289 echo "Looking for the type for user ids returned by getuid()."
14290 set uid_t uidtype xxx stdio.h sys/types.h
14291 eval $typedef
14292 case "$uidtype" in
14293 xxx)
14294         xxx=`./findhdr sys/user.h`
14295         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14296         case $1 in
14297         unsigned) dflt="$1 $2" ;;
14298         *) dflt="$1" ;;
14299         esac
14300         ;;
14301 *) dflt="$uidtype";;
14302 esac
14303 case "$uidtype" in
14304 uid_t)  echo "uid_t found." ;;
14305 *)      rp="What is the type for user ids returned by getuid()?"
14306         . ./myread
14307         uidtype="$ans"
14308         ;;
14309 esac
14310
14311 echo " "
14312 case "$uidtype" in
14313 *_t) zzz="$uidtype"     ;;
14314 *)   zzz="uid"          ;;
14315 esac
14316 echo "Checking the size of $zzz..." >&4 
14317 cat > try.c <<EOCP
14318 #include <sys/types.h>
14319 #include <stdio.h>
14320 int main() {
14321     printf("%d\n", (int)sizeof($uidtype));
14322     exit(0);
14323 }
14324 EOCP
14325 set try
14326 if eval $compile_ok; then
14327         yyy=`./try`
14328         case "$yyy" in
14329         '')     uidsize=4
14330                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14331                 ;;
14332         *)      uidsize=$yyy
14333                 echo "Your $zzz is $uidsize bytes long."
14334                 ;;
14335         esac
14336 else
14337         uidsize=4
14338         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14339 fi
14340
14341 echo " "
14342 case "$uidtype" in
14343 *_t) zzz="$uidtype"     ;;
14344 *)   zzz="uid"          ;;
14345 esac
14346 echo "Checking the sign of $zzz..." >&4
14347 cat > try.c <<EOCP
14348 #include <sys/types.h>
14349 #include <stdio.h>
14350 int main() {
14351         $uidtype foo = -1;
14352         if (foo < 0)
14353                 printf("-1\n");
14354         else
14355                 printf("1\n");
14356 }
14357 EOCP
14358 set try
14359 if eval $compile; then
14360         yyy=`./try`
14361         case "$yyy" in
14362         '')     uidsign=1
14363                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14364                 ;;
14365         *)      uidsign=$yyy
14366                 case "$uidsign" in
14367                  1) echo "Your $zzz is unsigned." ;;
14368                 -1) echo "Your $zzz is signed."   ;;
14369                 esac
14370                 ;;
14371         esac
14372 else
14373         uidsign=1
14374         echo "(I can't compile the test program--guessing unsigned.)" >&4
14375 fi
14376
14377
14378
14379 echo " "
14380 $echo "Checking the format string to be used for uids..." >&4
14381
14382 case "$uidsign" in
14383 -1)     if $test X"$uidsize" = X"$ivsize"; then
14384                 uidformat="$ivdformat"
14385         else
14386                 if $test X"$uidsize" = X"$longsize"; then
14387                         uidformat='"ld"'
14388                 else
14389                         if $test X"$uidsize" = X"$intsize"; then
14390                                 uidformat='"d"'
14391                         else
14392                                 if $test X"$uidsize" = X"$shortsize"; then
14393                                         uidformat='"hd"'
14394                                 fi
14395                         fi
14396                 fi
14397         fi
14398         ;;
14399 *)      if $test X"$uidsize" = X"$uvsize"; then
14400                 uidformat="$uvuformat"
14401         else
14402                 if $test X"$uidsize" = X"$longsize"; then
14403                         uidformat='"lu"'
14404                 else
14405                         if $test X"$uidsize" = X"$intsize"; then
14406                                 uidformat='"u"'
14407                         else
14408                                 if $test X"$uidsize" = X"$shortsize"; then
14409                                         uidformat='"hu"'
14410                                 fi
14411                         fi
14412                 fi
14413         fi
14414         ;;
14415 esac
14416
14417 : see if dbm.h is available
14418 : see if dbmclose exists
14419 set dbmclose d_dbmclose
14420 eval $inlibc
14421
14422 case "$d_dbmclose" in
14423 $define)
14424         set dbm.h i_dbm
14425         eval $inhdr
14426         case "$i_dbm" in
14427         $define)
14428                 val="$undef"
14429                 set i_rpcsvcdbm
14430                 eval $setvar
14431                 ;;
14432         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14433                 eval $inhdr
14434                 ;;
14435         esac
14436         ;;
14437 *)      echo "We won't be including <dbm.h>"
14438         val="$undef"
14439         set i_dbm
14440         eval $setvar
14441         val="$undef"
14442         set i_rpcsvcdbm
14443         eval $setvar
14444         ;;
14445 esac
14446
14447 : see if this is a sys/file.h system
14448 val=''
14449 set sys/file.h val
14450 eval $inhdr
14451
14452 : do we need to include sys/file.h ?
14453 case "$val" in
14454 "$define")
14455         echo " "
14456         if $h_sysfile; then
14457                 val="$define"
14458                 echo "We'll be including <sys/file.h>." >&4
14459         else
14460                 val="$undef"
14461                 echo "We won't be including <sys/file.h>." >&4
14462         fi
14463         ;;
14464 *)
14465         h_sysfile=false
14466         ;;
14467 esac
14468 set i_sysfile
14469 eval $setvar
14470
14471 : see if fcntl.h is there
14472 val=''
14473 set fcntl.h val
14474 eval $inhdr
14475
14476 : see if we can include fcntl.h
14477 case "$val" in
14478 "$define")
14479         echo " "
14480         if $h_fcntl; then
14481                 val="$define"
14482                 echo "We'll be including <fcntl.h>." >&4
14483         else
14484                 val="$undef"
14485                 if $h_sysfile; then
14486         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14487                 else
14488                         echo "We won't be including <fcntl.h>." >&4
14489                 fi
14490         fi
14491         ;;
14492 *)
14493         h_fcntl=false
14494         val="$undef"
14495         ;;
14496 esac
14497 set i_fcntl
14498 eval $setvar
14499
14500 : see if this is a iconv.h system
14501 set iconv.h i_iconv
14502 eval $inhdr
14503
14504 : see if this is a ieeefp.h system
14505 set ieeefp.h i_ieeefp
14506 eval $inhdr
14507
14508 : see if this is a libutil.h system
14509 set libutil.h i_libutil
14510 eval $inhdr
14511
14512 : see if locale.h is available
14513 set locale.h i_locale
14514 eval $inhdr
14515
14516 : see if mach cthreads are available
14517 if test "X$usethreads" = "X$define"; then
14518         set mach/cthreads.h i_machcthr
14519         eval $inhdr
14520 else
14521         i_machcthr="$undef"
14522 fi
14523
14524
14525
14526 : see if this is a math.h system
14527 set math.h i_math
14528 eval $inhdr
14529
14530 : see if this is a mntent.h system
14531 set mntent.h i_mntent
14532 eval $inhdr
14533
14534 : see if ndbm.h is available
14535 set ndbm.h t_ndbm
14536 eval $inhdr
14537 case "$t_ndbm" in
14538 $define)
14539         : see if dbm_open exists
14540         set dbm_open d_dbm_open
14541         eval $inlibc
14542         case "$d_dbm_open" in
14543         $undef)
14544                 t_ndbm="$undef"
14545                 echo "We won't be including <ndbm.h>"
14546                 ;;
14547         esac
14548         ;;
14549 esac
14550 val="$t_ndbm"
14551 set i_ndbm
14552 eval $setvar
14553
14554 : see if net/errno.h is available
14555 val=''
14556 set net/errno.h val
14557 eval $inhdr
14558
14559 : Unfortunately, it causes problems on some systems.  Arrgh.
14560 case "$val" in
14561 $define)
14562         cat > try.c <<'EOM'
14563 #include <stdio.h>
14564 #include <errno.h>
14565 #include <net/errno.h>
14566 int func()
14567 {
14568         return ENOTSOCK;
14569 }
14570 EOM
14571         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14572                 echo "We'll be including <net/errno.h>." >&4
14573         else
14574                 echo "We won't be including <net/errno.h>." >&4
14575                 val="$undef"
14576         fi
14577         $rm -f try.* try
14578         ;;
14579 esac
14580 set i_neterrno
14581 eval $setvar
14582
14583 : see if netinet/tcp.h is available
14584 set netinet/tcp.h i_netinettcp
14585 eval $inhdr
14586
14587 : see if this is a poll.h system
14588 set poll.h i_poll
14589 eval $inhdr
14590
14591 : see if this is a prot.h system
14592 set prot.h i_prot
14593 eval $inhdr
14594
14595 echo " "
14596 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14597 $cat <<'EOSH' > Cppsym.know
14598 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14599 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14600 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14601 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14602 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14603 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14604 bull c cadmus clipper CMU COFF COMPILER_VERSION
14605 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14606 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14607 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14608 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14609 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14610 H3050R H3050RX hbullx20 hcx host_mips
14611 hp200 hp300 hp700 HP700 hp800 hp9000
14612 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14613 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14614 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14615 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14616 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14617 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14618 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14619 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14620 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14621 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14622 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14623 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14624 MATH_HAS_NO_SIDE_EFFECTS
14625 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14626 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14627 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14628 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14629 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14630 NetBSD news1500 news1700 news1800 news1900 news3700
14631 news700 news800 news900 NeXT NLS ns16000 ns32000
14632 ns32016 ns32332 ns32k nsc32000
14633 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14634 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14635 pc532 pdp11 PGC PIC plexus PORTAR posix
14636 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14637 POSIX_C_SOURCE POSIX_SOURCE POWER
14638 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14639 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14640 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14641 sony sony_news sonyrisc sparc sparclite spectrum
14642 stardent stdc STDC_EXT stratos sun sun3 sun386
14643 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14644 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14645 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14646 sysV68 sysV88 Tek4132 Tek4300 titan
14647 tower tower32 tower32_200 tower32_600 tower32_700
14648 tower32_800 tower32_850 tss
14649 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14650 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14651 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14652 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14653 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14654 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14655 z8000
14656 EOSH
14657 # Maybe put other stuff here too.
14658 cat <<EOSH >>Cppsym.know
14659 $osname
14660 EOSH
14661 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14662 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14663 $cat Cppsym.know > Cppsym.c
14664 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14665 $rm -f Cppsym.a Cppsym.b Cppsym.c
14666 cat <<EOSH > Cppsym
14667 $startsh
14668 if $test \$# -gt 0; then
14669     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14670     if $test -s Cppsym.got; then
14671         $rm -f Cppsym.got
14672         exit 0
14673     fi
14674     $rm -f Cppsym.got
14675     exit 1
14676 else
14677     $tr " " "$trnl" | ./Cppsym.try
14678     exit 0
14679 fi
14680 EOSH
14681 chmod +x Cppsym
14682 $eunicefix Cppsym
14683 cat <<EOSH > Cppsym.try
14684 $startsh
14685 cat <<'EOCP' > try.c
14686 #include <stdio.h>
14687 int main() {
14688 EOCP
14689 $awk \\
14690 EOSH
14691 cat <<'EOSH' >> Cppsym.try
14692 'length($1) > 0 {
14693     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
14694     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
14695     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
14696     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
14697 }'       >> try.c
14698 echo '}' >> try.c
14699 EOSH
14700 cat <<EOSH >> Cppsym.try
14701 ccflags="$ccflags"
14702 case "$osname-$gccversion" in
14703 irix-) ccflags="\$ccflags -woff 1178" ;;
14704 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14705 esac
14706 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14707 EOSH
14708 chmod +x Cppsym.try
14709 $eunicefix Cppsym.try
14710 ./Cppsym < Cppsym.know > Cppsym.true
14711 : now check the C compiler for additional symbols
14712 postprocess_cc_v=''
14713 case "$osname" in
14714 aix) postprocess_cc_v="|$tr , ' '" ;;
14715 esac
14716 $cat >ccsym <<EOS
14717 $startsh
14718 $cat >tmp.c <<EOF
14719 extern int foo;
14720 EOF
14721 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14722 do
14723         case "\$i" in
14724         -D*) echo "\$i" | $sed 's/^-D//';;
14725         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14726         esac
14727 done
14728 $rm -f try.c
14729 EOS
14730 postprocess_cc_v=''
14731 chmod +x ccsym
14732 $eunicefix ccsym
14733 ./ccsym > ccsym1.raw
14734 if $test -s ccsym1.raw; then
14735        $sort ccsym1.raw | $uniq >ccsym.raw
14736 else
14737        mv ccsym1.raw ccsym.raw
14738 fi
14739
14740 $awk '/\=/ { print $0; next }
14741         { print $0"=1" }' ccsym.raw >ccsym.list
14742 $awk '/\=/ { print $0; next }
14743         { print $0"=1" }' Cppsym.true >ccsym.true
14744 $comm -13 ccsym.true ccsym.list >ccsym.own
14745 $comm -12 ccsym.true ccsym.list >ccsym.com
14746 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14747 also=''
14748 if $test -z ccsym.raw; then
14749         echo "Your C compiler doesn't seem to define any symbols!" >&4
14750         echo " "
14751         echo "However, your C preprocessor defines the following symbols:"
14752         $cat Cppsym.true
14753         ccsymbols=''
14754         cppsymbols=`$cat Cppsym.true`
14755         cppsymbols=`echo $cppsymbols`
14756         cppccsymbols="$cppsymbols"
14757 else
14758         if $test -s ccsym.com; then
14759                 echo "Your C compiler and pre-processor define these symbols:"
14760                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14761                 also='also '
14762                 symbols='ones'
14763                 cppccsymbols=`$cat ccsym.com`
14764                 cppccsymbols=`echo $cppccsymbols`
14765                 $test "$silent" || sleep 1
14766         fi
14767         if $test -s ccsym.cpp; then
14768                 $test "$also" && echo " "
14769                 echo "Your C pre-processor ${also}defines the following symbols:"
14770                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14771                 also='further '
14772                 cppsymbols=`$cat ccsym.cpp`
14773                 cppsymbols=`echo $cppsymbols`
14774                 $test "$silent" || sleep 1
14775         fi
14776         if $test -s ccsym.own; then
14777                 $test "$also" && echo " "
14778                 echo "Your C compiler ${also}defines the following cpp symbols:"
14779                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14780                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14781                 ccsymbols=`$cat ccsym.own`
14782                 ccsymbols=`echo $ccsymbols`
14783                 $test "$silent" || sleep 1
14784         fi
14785 fi
14786 $rm -f ccsym* Cppsym.*
14787
14788 : see if this is a termio system
14789 val="$undef"
14790 val2="$undef"
14791 val3="$undef"
14792 if $test `./findhdr termios.h`; then
14793         set tcsetattr i_termios
14794         eval $inlibc
14795         val3="$i_termios"
14796 fi
14797 echo " "
14798 case "$val3" in
14799 "$define") echo "You have POSIX termios.h... good!" >&4;;
14800 *) if ./Cppsym pyr; then
14801                 case "`/bin/universe`" in
14802                 ucb) if $test `./findhdr sgtty.h`; then
14803                                 val2="$define"
14804                                 echo "<sgtty.h> found." >&4
14805                         else
14806                                 echo "System is pyramid with BSD universe."
14807                                 echo "<sgtty.h> not found--you could have problems." >&4
14808                         fi;;
14809                 *) if $test `./findhdr termio.h`; then
14810                                 val="$define"
14811                                 echo "<termio.h> found." >&4
14812                         else
14813                                 echo "System is pyramid with USG universe."
14814                                 echo "<termio.h> not found--you could have problems." >&4
14815                         fi;;
14816                 esac
14817         elif ./usg; then
14818                 if $test `./findhdr termio.h`; then
14819                         echo "<termio.h> found." >&4
14820                         val="$define"
14821                 elif $test `./findhdr sgtty.h`; then
14822                         echo "<sgtty.h> found." >&4
14823                         val2="$define"
14824                 else
14825 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14826                 fi
14827         else
14828                 if $test `./findhdr sgtty.h`; then
14829                         echo "<sgtty.h> found." >&4
14830                         val2="$define"
14831                 elif $test `./findhdr termio.h`; then
14832                         echo "<termio.h> found." >&4
14833                         val="$define"
14834                 else
14835 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14836                 fi
14837         fi;;
14838 esac
14839 set i_termio; eval $setvar
14840 val=$val2; set i_sgtty; eval $setvar
14841 val=$val3; set i_termios; eval $setvar
14842
14843 : see if this is a shadow.h system
14844 set shadow.h i_shadow
14845 eval $inhdr
14846
14847 : see if this is a socks.h system
14848 set socks.h i_socks
14849 eval $inhdr
14850
14851 : see if stdarg is available
14852 echo " "
14853 if $test `./findhdr stdarg.h`; then
14854         echo "<stdarg.h> found." >&4
14855         valstd="$define"
14856 else
14857         echo "<stdarg.h> NOT found." >&4
14858         valstd="$undef"
14859 fi
14860
14861 : see if varags is available
14862 echo " "
14863 if $test `./findhdr varargs.h`; then
14864         echo "<varargs.h> found." >&4
14865 else
14866         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14867 fi
14868
14869 : set up the varargs testing programs
14870 $cat > varargs.c <<EOP
14871 #ifdef I_STDARG
14872 #include <stdarg.h>
14873 #endif
14874 #ifdef I_VARARGS
14875 #include <varargs.h>
14876 #endif
14877
14878 #ifdef I_STDARG
14879 int f(char *p, ...)
14880 #else
14881 int f(va_alist)
14882 va_dcl
14883 #endif
14884 {
14885         va_list ap;
14886 #ifndef I_STDARG
14887         char *p;
14888 #endif
14889 #ifdef I_STDARG
14890         va_start(ap,p);
14891 #else
14892         va_start(ap);
14893         p = va_arg(ap, char *);
14894 #endif
14895         va_end(ap);
14896 }
14897 EOP
14898 $cat > varargs <<EOP
14899 $startsh
14900 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14901         echo "true"
14902 else
14903         echo "false"
14904 fi
14905 $rm -f varargs$_o
14906 EOP
14907 chmod +x varargs
14908
14909 : now check which varargs header should be included
14910 echo " "
14911 i_varhdr=''
14912 case "$valstd" in
14913 "$define")
14914         if `./varargs I_STDARG`; then
14915                 val='stdarg.h'
14916         elif `./varargs I_VARARGS`; then
14917                 val='varargs.h'
14918         fi
14919         ;;
14920 *)
14921         if `./varargs I_VARARGS`; then
14922                 val='varargs.h'
14923         fi
14924         ;;
14925 esac
14926 case "$val" in
14927 '')
14928 echo "I could not find the definition for va_dcl... You have problems..." >&4
14929         val="$undef"; set i_stdarg; eval $setvar
14930         val="$undef"; set i_varargs; eval $setvar
14931         ;;
14932 *) 
14933         set i_varhdr
14934         eval $setvar
14935         case "$i_varhdr" in
14936         stdarg.h)
14937                 val="$define"; set i_stdarg; eval $setvar
14938                 val="$undef"; set i_varargs; eval $setvar
14939                 ;;
14940         varargs.h)
14941                 val="$undef"; set i_stdarg; eval $setvar
14942                 val="$define"; set i_varargs; eval $setvar
14943                 ;;
14944         esac
14945         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14946 esac
14947 $rm -f varargs*
14948
14949 : see if stddef is available
14950 set stddef.h i_stddef
14951 eval $inhdr
14952
14953 : see if this is a sunmath.h system
14954 set sunmath.h i_sunmath
14955 eval $inhdr
14956
14957 : see if sys/access.h is available
14958 set sys/access.h i_sysaccess
14959 eval $inhdr
14960
14961 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14962 set sys/filio.h i_sysfilio
14963 eval $inhdr
14964 echo " "
14965 if $test `./findhdr sys/ioctl.h`; then
14966         val="$define"
14967         echo '<sys/ioctl.h> found.' >&4
14968 else
14969         val="$undef"
14970         if $test $i_sysfilio = "$define"; then
14971             echo '<sys/ioctl.h> NOT found.' >&4
14972         else
14973                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14974                 $test $i_termio = "$define" && xxx="termio.h"
14975                 $test $i_termios = "$define" && xxx="termios.h"
14976 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14977         fi
14978 fi
14979 set i_sysioctl
14980 eval $setvar
14981
14982
14983 : see if this is a syslog.h system
14984 set syslog.h i_syslog
14985 eval $inhdr
14986
14987
14988 : see if this is a sys/mode.h system
14989 set sys/mode.h i_sysmode
14990 eval $inhdr
14991
14992 : see if sys/resource.h has to be included
14993 set sys/resource.h i_sysresrc
14994 eval $inhdr
14995
14996 : see if sys/security.h is available
14997 set sys/security.h i_syssecrt
14998 eval $inhdr
14999
15000 : see if this is a sys/statvfs.h system
15001 set sys/statvfs.h i_sysstatvfs
15002 eval $inhdr
15003
15004 : see if this is a sys/uio.h system
15005 set sys/uio.h i_sysuio
15006 eval $inhdr
15007
15008 : see if this is a sys/un.h system
15009 set sys/un.h i_sysun
15010 eval $inhdr
15011
15012
15013 : see if this is a sys/utsname.h system
15014 set sys/utsname.h i_sysutsname
15015 eval $inhdr
15016
15017 : see if this is a syswait system
15018 set sys/wait.h i_syswait
15019 eval $inhdr
15020
15021 : see if this is a ustat.h system
15022 set ustat.h i_ustat
15023 eval $inhdr
15024
15025 : see if this is an utime system
15026 set utime.h i_utime
15027 eval $inhdr
15028
15029 : see if this is a values.h system
15030 set values.h i_values
15031 eval $inhdr
15032
15033 : see if this is a vfork system
15034 case "$d_vfork" in
15035 "$define")
15036         set vfork.h i_vfork
15037         eval $inhdr
15038         ;;
15039 *)
15040         i_vfork="$undef"
15041         ;;
15042 esac
15043
15044 : see if gdbm.h is available
15045 set gdbm.h t_gdbm
15046 eval $inhdr
15047 case "$t_gdbm" in
15048 $define)
15049         : see if gdbm_open exists
15050         set gdbm_open d_gdbm_open
15051         eval $inlibc
15052         case "$d_gdbm_open" in
15053         $undef)
15054                 t_gdbm="$undef"
15055                 echo "We won't be including <gdbm.h>"
15056                 ;;
15057         esac
15058         ;;
15059 esac
15060 val="$t_gdbm"
15061 set i_gdbm
15062 eval $setvar
15063
15064 echo " "
15065 echo "Looking for extensions..." >&4
15066 : If we are using the old config.sh, known_extensions may contain
15067 : old or inaccurate or duplicate values.
15068 known_extensions=''
15069 nonxs_extensions=''
15070 : We do not use find because it might not be available.
15071 : We do not just use MANIFEST because the user may have dropped
15072 : some additional extensions into the source tree and expect them
15073 : to be built.
15074
15075 : Function to recursively find available extensions, ignoring DynaLoader
15076 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15077 find_extensions='
15078     for xxx in *; do
15079        case "$xxx" in
15080            DynaLoader|dynaload) ;;
15081            *)
15082            if $test -f $xxx/$xxx.xs; then
15083                known_extensions="$known_extensions $1$xxx";
15084            elif $test -f $xxx/Makefile.PL; then
15085                nonxs_extensions="$nonxs_extensions $1$xxx";
15086            else
15087                if $test -d $xxx -a $# -lt 10; then
15088                    set $1$xxx/ $*;
15089                    cd $xxx;
15090                    eval $find_extensions;
15091                    cd ..;
15092                    shift;
15093                fi;
15094            fi
15095            ;;
15096        esac;
15097     done'
15098 tdir=`pwd`
15099 cd $rsrc/ext
15100 set X
15101 shift
15102 eval $find_extensions
15103 set X $nonxs_extensions
15104 shift
15105 nonxs_extensions="$*"
15106 set X $known_extensions
15107 shift
15108 known_extensions="$*"
15109 cd $tdir
15110
15111 : Now see which are supported on this system.
15112 avail_ext=''
15113 for xxx in $known_extensions ; do
15114         case "$xxx" in
15115         DB_File|db_file)
15116                 case "$i_db" in
15117                 $define) avail_ext="$avail_ext $xxx" ;;
15118                 esac
15119                 ;;
15120         GDBM_File|gdbm_fil)
15121                 case "$i_gdbm" in 
15122                 $define) avail_ext="$avail_ext $xxx" ;;
15123                 esac
15124                 ;;
15125         NDBM_File|ndbm_fil)
15126                 case "$i_ndbm" in
15127                 $define)
15128                     case "$osname-$use64bitint" in
15129                     hpux-define)
15130                         case "$libs" in
15131                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15132                         esac
15133                         ;;
15134                     *) avail_ext="$avail_ext $xxx" ;;
15135                     esac
15136                     ;;
15137                 esac
15138                 ;;
15139         ODBM_File|odbm_fil) 
15140                 case "${i_dbm}${i_rpcsvcdbm}" in
15141                 *"${define}"*)
15142                     case "$osname-$use64bitint" in
15143                     hpux-define)
15144                         case "$libs" in
15145                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15146                         esac
15147                         ;;
15148                     *) avail_ext="$avail_ext $xxx" ;;
15149                     esac
15150                     ;;
15151                 esac
15152                 ;;
15153         POSIX|posix)
15154                 case "$useposix" in
15155                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15156                 esac
15157                 ;;
15158         Opcode|opcode)
15159                 case "$useopcode" in
15160                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15161                 esac
15162                 ;;
15163         Socket|socket)
15164                 case "$d_socket" in 
15165                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15166                 esac
15167                 ;;
15168         Sys/Syslog|sys/syslog)
15169                 : XXX syslog requires socket
15170                 case "$d_socket" in 
15171                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15172                 esac
15173                 ;;
15174         Thread|thread)
15175                 case "$usethreads" in 
15176                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15177                 esac
15178                 ;;
15179         IPC/SysV|ipc/sysv)
15180                 : XXX Do we need a useipcsysv variable here
15181                 case "${d_msg}${d_sem}${d_shm}" in 
15182                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15183                 esac
15184                 ;;
15185         *)      avail_ext="$avail_ext $xxx"
15186                 ;;
15187         esac
15188 done
15189
15190 set X $avail_ext
15191 shift
15192 avail_ext="$*"
15193
15194 : Now see which nonxs extensions are supported on this system.
15195 : For now assume all are.
15196 nonxs_ext=''
15197 for xxx in $nonxs_extensions ; do
15198         case "$xxx" in
15199         *)      nonxs_ext="$nonxs_ext $xxx"
15200                 ;;
15201         esac
15202 done
15203
15204 set X $nonxs_ext
15205 shift
15206 nonxs_ext="$*"
15207
15208 case $usedl in
15209 $define)
15210         $cat <<EOM
15211 A number of extensions are supplied with $package.  You may choose to
15212 compile these extensions for dynamic loading (the default), compile
15213 them into the $package executable (static loading), or not include
15214 them at all.  Answer "none" to include no extensions.
15215 Note that DynaLoader is always built and need not be mentioned here.
15216
15217 EOM
15218         case "$dynamic_ext" in
15219         '') dflt="$avail_ext" ;;
15220         *)      dflt="$dynamic_ext"
15221                 # Perhaps we are reusing an old out-of-date config.sh.
15222                 case "$hint" in
15223                 previous)
15224                         if test X"$dynamic_ext" != X"$avail_ext"; then
15225                                 $cat <<EOM
15226 NOTICE:  Your previous config.sh list may be incorrect. 
15227 The extensions now available to you are 
15228         ${avail_ext}
15229 but the default list from your previous config.sh is
15230         ${dynamic_ext} 
15231
15232 EOM
15233                         fi
15234                         ;;
15235                 esac
15236                 ;;
15237         esac
15238         case "$dflt" in
15239         '')     dflt=none;;
15240         esac
15241         rp="What extensions do you wish to load dynamically?"
15242         . ./myread
15243         case "$ans" in
15244         none) dynamic_ext=' ' ;;
15245         *) dynamic_ext="$ans" ;;
15246         esac
15247
15248         case "$static_ext" in
15249         '')
15250                 : Exclude those already listed in dynamic linking
15251                 dflt=''
15252                 for xxx in $avail_ext; do
15253                         case " $dynamic_ext " in
15254                         *" $xxx "*) ;;
15255                         *) dflt="$dflt $xxx" ;;
15256                         esac
15257                 done
15258                 set X $dflt
15259                 shift
15260                 dflt="$*"
15261                 ;;
15262         *)  dflt="$static_ext" 
15263                 ;;
15264         esac
15265
15266         case "$dflt" in
15267         '')     dflt=none;;
15268         esac
15269         rp="What extensions do you wish to load statically?"
15270         . ./myread
15271         case "$ans" in
15272         none) static_ext=' ' ;;
15273         *) static_ext="$ans" ;;
15274         esac
15275         ;;
15276 *)
15277         $cat <<EOM
15278 A number of extensions are supplied with $package.  Answer "none" 
15279 to include no extensions. 
15280 Note that DynaLoader is always built and need not be mentioned here.
15281
15282 EOM
15283         case "$static_ext" in
15284         '') dflt="$avail_ext" ;;
15285         *)      dflt="$static_ext"
15286                 # Perhaps we are reusing an old out-of-date config.sh.
15287                 case "$hint" in
15288                 previous)
15289                         if test X"$static_ext" != X"$avail_ext"; then
15290                                 $cat <<EOM
15291 NOTICE:  Your previous config.sh list may be incorrect. 
15292 The extensions now available to you are 
15293         ${avail_ext}
15294 but the default list from your previous config.sh is
15295         ${static_ext} 
15296
15297 EOM
15298                         fi
15299                         ;;
15300                 esac
15301                 ;;
15302         esac
15303         : Exclude those that are not xs extensions
15304         case "$dflt" in
15305         '')     dflt=none;;
15306         esac
15307         rp="What extensions do you wish to include?"
15308         . ./myread
15309         case "$ans" in
15310         none) static_ext=' ' ;;
15311         *) static_ext="$ans" ;;
15312         esac
15313         ;;
15314 esac
15315
15316 set X $dynamic_ext $static_ext $nonxs_ext
15317 shift
15318 extensions="$*"
15319
15320 : Remove build directory name from cppstdin so it can be used from
15321 : either the present location or the final installed location.
15322 echo " "
15323 : Get out of the UU directory to get correct path name.
15324 cd ..
15325 case "$cppstdin" in
15326 `pwd`/cppstdin)
15327         echo "Stripping down cppstdin path name"
15328         cppstdin=cppstdin
15329         ;;
15330 esac
15331 cd UU
15332
15333 : end of configuration questions
15334 echo " "
15335 echo "End of configuration questions."
15336 echo " "
15337
15338 : back to where it started
15339 if test -d ../UU; then
15340         cd ..
15341 fi
15342
15343 : configuration may be patched via a 'config.over' file
15344 if $test -f config.over; then
15345         echo " "
15346         dflt=y
15347         rp='I see a config.over file.  Do you wish to load it?'
15348         . UU/myread
15349         case "$ans" in
15350         n*) echo "OK, I'll ignore it.";;
15351         *)      . ./config.over
15352                 echo "Configuration override changes have been loaded."
15353                 ;;
15354         esac
15355 fi
15356
15357 : in case they want portability, strip down executable paths
15358 case "$d_portable" in
15359 "$define")
15360         echo " "
15361         echo "Stripping down executable paths..." >&4
15362         for file in $loclist $trylist; do
15363                 eval temp=\$$file
15364                 eval $file=`basename $temp`
15365         done
15366         ;;
15367 esac
15368
15369 : create config.sh file
15370 echo " "
15371 echo "Creating config.sh..." >&4
15372 $spitshell <<EOT >config.sh
15373 $startsh
15374 #
15375 # This file was produced by running the Configure script. It holds all the
15376 # definitions figured out by Configure. Should you modify one of these values,
15377 # do not forget to propagate your changes by running "Configure -der". You may
15378 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15379 #
15380
15381 # Package name      : $package
15382 # Source directory  : $src
15383 # Configuration time: $cf_time
15384 # Configured by     : $cf_by
15385 # Target system     : $myuname
15386
15387 Author='$Author'
15388 Date='$Date'
15389 Header='$Header'
15390 Id='$Id'
15391 Locker='$Locker'
15392 Log='$Log'
15393 Mcc='$Mcc'
15394 RCSfile='$RCSfile'
15395 Revision='$Revision'
15396 Source='$Source'
15397 State='$State'
15398 _a='$_a'
15399 _exe='$_exe'
15400 _o='$_o'
15401 afs='$afs'
15402 alignbytes='$alignbytes'
15403 ansi2knr='$ansi2knr'
15404 aphostname='$aphostname'
15405 api_revision='$api_revision'
15406 api_subversion='$api_subversion'
15407 api_version='$api_version'
15408 api_versionstring='$api_versionstring'
15409 ar='$ar'
15410 archlib='$archlib'
15411 archlibexp='$archlibexp'
15412 archname64='$archname64'
15413 archname='$archname'
15414 archobjs='$archobjs'
15415 awk='$awk'
15416 baserev='$baserev'
15417 bash='$bash'
15418 bin='$bin'
15419 bincompat5005='$bincompat5005'
15420 binexp='$binexp'
15421 bison='$bison'
15422 byacc='$byacc'
15423 byteorder='$byteorder'
15424 c='$c'
15425 castflags='$castflags'
15426 cat='$cat'
15427 cc='$cc'
15428 cccdlflags='$cccdlflags'
15429 ccdlflags='$ccdlflags'
15430 ccflags='$ccflags'
15431 ccflags_uselargefiles='$ccflags_uselargefiles'
15432 ccname='$ccname'
15433 ccsymbols='$ccsymbols'
15434 cf_by='$cf_by'
15435 cf_email='$cf_email'
15436 cf_time='$cf_time'
15437 charsize='$charsize'
15438 chgrp='$chgrp'
15439 chmod='$chmod'
15440 chown='$chown'
15441 clocktype='$clocktype'
15442 comm='$comm'
15443 compress='$compress'
15444 contains='$contains'
15445 cp='$cp'
15446 cpio='$cpio'
15447 cpp='$cpp'
15448 cpp_stuff='$cpp_stuff'
15449 cppccsymbols='$cppccsymbols'
15450 cppflags='$cppflags'
15451 cpplast='$cpplast'
15452 cppminus='$cppminus'
15453 cpprun='$cpprun'
15454 cppstdin='$cppstdin'
15455 cppsymbols='$cppsymbols'
15456 crosscompile='$crosscompile'
15457 cryptlib='$cryptlib'
15458 csh='$csh'
15459 d_Gconvert='$d_Gconvert'
15460 d_PRIEldbl='$d_PRIEldbl'
15461 d_PRIFldbl='$d_PRIFldbl'
15462 d_PRIGldbl='$d_PRIGldbl'
15463 d_PRIX64='$d_PRIX64'
15464 d_PRId64='$d_PRId64'
15465 d_PRIeldbl='$d_PRIeldbl'
15466 d_PRIfldbl='$d_PRIfldbl'
15467 d_PRIgldbl='$d_PRIgldbl'
15468 d_PRIi64='$d_PRIi64'
15469 d_PRIo64='$d_PRIo64'
15470 d_PRIu64='$d_PRIu64'
15471 d_PRIx64='$d_PRIx64'
15472 d_SCNfldbl='$d_SCNfldbl'
15473 d_access='$d_access'
15474 d_accessx='$d_accessx'
15475 d_alarm='$d_alarm'
15476 d_archlib='$d_archlib'
15477 d_atolf='$d_atolf'
15478 d_atoll='$d_atoll'
15479 d_attribut='$d_attribut'
15480 d_bcmp='$d_bcmp'
15481 d_bcopy='$d_bcopy'
15482 d_bincompat5005='$d_bincompat5005'
15483 d_bsd='$d_bsd'
15484 d_bsdgetpgrp='$d_bsdgetpgrp'
15485 d_bsdsetpgrp='$d_bsdsetpgrp'
15486 d_bzero='$d_bzero'
15487 d_casti32='$d_casti32'
15488 d_castneg='$d_castneg'
15489 d_charvspr='$d_charvspr'
15490 d_chown='$d_chown'
15491 d_chroot='$d_chroot'
15492 d_chsize='$d_chsize'
15493 d_closedir='$d_closedir'
15494 d_const='$d_const'
15495 d_crypt='$d_crypt'
15496 d_csh='$d_csh'
15497 d_cuserid='$d_cuserid'
15498 d_dbl_dig='$d_dbl_dig'
15499 d_difftime='$d_difftime'
15500 d_dirnamlen='$d_dirnamlen'
15501 d_dlerror='$d_dlerror'
15502 d_dlopen='$d_dlopen'
15503 d_dlsymun='$d_dlsymun'
15504 d_dosuid='$d_dosuid'
15505 d_drand48proto='$d_drand48proto'
15506 d_dup2='$d_dup2'
15507 d_eaccess='$d_eaccess'
15508 d_endgrent='$d_endgrent'
15509 d_endhent='$d_endhent'
15510 d_endnent='$d_endnent'
15511 d_endpent='$d_endpent'
15512 d_endpwent='$d_endpwent'
15513 d_endsent='$d_endsent'
15514 d_eofnblk='$d_eofnblk'
15515 d_eunice='$d_eunice'
15516 d_fchmod='$d_fchmod'
15517 d_fchown='$d_fchown'
15518 d_fcntl='$d_fcntl'
15519 d_fd_macros='$d_fd_macros'
15520 d_fd_set='$d_fd_set'
15521 d_fds_bits='$d_fds_bits'
15522 d_fgetpos='$d_fgetpos'
15523 d_flexfnam='$d_flexfnam'
15524 d_flock='$d_flock'
15525 d_fork='$d_fork'
15526 d_fpathconf='$d_fpathconf'
15527 d_fpos64_t='$d_fpos64_t'
15528 d_frexpl='$d_frexpl'
15529 d_fs_data_s='$d_fs_data_s'
15530 d_fseeko='$d_fseeko'
15531 d_fsetpos='$d_fsetpos'
15532 d_fstatfs='$d_fstatfs'
15533 d_fstatvfs='$d_fstatvfs'
15534 d_ftello='$d_ftello'
15535 d_ftime='$d_ftime'
15536 d_getcwd='$d_getcwd'
15537 d_getespwnam='$d_getespwnam'
15538 d_getfsstat='$d_getfsstat'
15539 d_getgrent='$d_getgrent'
15540 d_getgrps='$d_getgrps'
15541 d_gethbyaddr='$d_gethbyaddr'
15542 d_gethbyname='$d_gethbyname'
15543 d_gethent='$d_gethent'
15544 d_gethname='$d_gethname'
15545 d_gethostprotos='$d_gethostprotos'
15546 d_getlogin='$d_getlogin'
15547 d_getmnt='$d_getmnt'
15548 d_getmntent='$d_getmntent'
15549 d_getnbyaddr='$d_getnbyaddr'
15550 d_getnbyname='$d_getnbyname'
15551 d_getnent='$d_getnent'
15552 d_getnetprotos='$d_getnetprotos'
15553 d_getpbyname='$d_getpbyname'
15554 d_getpbynumber='$d_getpbynumber'
15555 d_getpent='$d_getpent'
15556 d_getpgid='$d_getpgid'
15557 d_getpgrp2='$d_getpgrp2'
15558 d_getpgrp='$d_getpgrp'
15559 d_getppid='$d_getppid'
15560 d_getprior='$d_getprior'
15561 d_getprotoprotos='$d_getprotoprotos'
15562 d_getprpwnam='$d_getprpwnam'
15563 d_getpwent='$d_getpwent'
15564 d_getsbyname='$d_getsbyname'
15565 d_getsbyport='$d_getsbyport'
15566 d_getsent='$d_getsent'
15567 d_getservprotos='$d_getservprotos'
15568 d_getspnam='$d_getspnam'
15569 d_gettimeod='$d_gettimeod'
15570 d_gnulibc='$d_gnulibc'
15571 d_grpasswd='$d_grpasswd'
15572 d_hasmntopt='$d_hasmntopt'
15573 d_htonl='$d_htonl'
15574 d_iconv='$d_iconv'
15575 d_index='$d_index'
15576 d_inetaton='$d_inetaton'
15577 d_int64_t='$d_int64_t'
15578 d_isascii='$d_isascii'
15579 d_isnan='$d_isnan'
15580 d_isnanl='$d_isnanl'
15581 d_killpg='$d_killpg'
15582 d_lchown='$d_lchown'
15583 d_ldbl_dig='$d_ldbl_dig'
15584 d_link='$d_link'
15585 d_locconv='$d_locconv'
15586 d_lockf='$d_lockf'
15587 d_longdbl='$d_longdbl'
15588 d_longlong='$d_longlong'
15589 d_lseekproto='$d_lseekproto'
15590 d_lstat='$d_lstat'
15591 d_madvise='$d_madvise'
15592 d_mblen='$d_mblen'
15593 d_mbstowcs='$d_mbstowcs'
15594 d_mbtowc='$d_mbtowc'
15595 d_memchr='$d_memchr'
15596 d_memcmp='$d_memcmp'
15597 d_memcpy='$d_memcpy'
15598 d_memmove='$d_memmove'
15599 d_memset='$d_memset'
15600 d_mkdir='$d_mkdir'
15601 d_mkdtemp='$d_mkdtemp'
15602 d_mkfifo='$d_mkfifo'
15603 d_mkstemp='$d_mkstemp'
15604 d_mkstemps='$d_mkstemps'
15605 d_mktime='$d_mktime'
15606 d_mmap='$d_mmap'
15607 d_modfl='$d_modfl'
15608 d_mprotect='$d_mprotect'
15609 d_msg='$d_msg'
15610 d_msg_ctrunc='$d_msg_ctrunc'
15611 d_msg_dontroute='$d_msg_dontroute'
15612 d_msg_oob='$d_msg_oob'
15613 d_msg_peek='$d_msg_peek'
15614 d_msg_proxy='$d_msg_proxy'
15615 d_msgctl='$d_msgctl'
15616 d_msgget='$d_msgget'
15617 d_msgrcv='$d_msgrcv'
15618 d_msgsnd='$d_msgsnd'
15619 d_msync='$d_msync'
15620 d_munmap='$d_munmap'
15621 d_mymalloc='$d_mymalloc'
15622 d_nice='$d_nice'
15623 d_nv_preserves_uv='$d_nv_preserves_uv'
15624 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15625 d_off64_t='$d_off64_t'
15626 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15627 d_oldpthreads='$d_oldpthreads'
15628 d_oldsock='$d_oldsock'
15629 d_open3='$d_open3'
15630 d_pathconf='$d_pathconf'
15631 d_pause='$d_pause'
15632 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15633 d_phostname='$d_phostname'
15634 d_pipe='$d_pipe'
15635 d_poll='$d_poll'
15636 d_portable='$d_portable'
15637 d_pthread_yield='$d_pthread_yield'
15638 d_pwage='$d_pwage'
15639 d_pwchange='$d_pwchange'
15640 d_pwclass='$d_pwclass'
15641 d_pwcomment='$d_pwcomment'
15642 d_pwexpire='$d_pwexpire'
15643 d_pwgecos='$d_pwgecos'
15644 d_pwpasswd='$d_pwpasswd'
15645 d_pwquota='$d_pwquota'
15646 d_qgcvt='$d_qgcvt'
15647 d_quad='$d_quad'
15648 d_readdir='$d_readdir'
15649 d_readlink='$d_readlink'
15650 d_rename='$d_rename'
15651 d_rewinddir='$d_rewinddir'
15652 d_rmdir='$d_rmdir'
15653 d_safebcpy='$d_safebcpy'
15654 d_safemcpy='$d_safemcpy'
15655 d_sanemcmp='$d_sanemcmp'
15656 d_sched_yield='$d_sched_yield'
15657 d_scm_rights='$d_scm_rights'
15658 d_seekdir='$d_seekdir'
15659 d_select='$d_select'
15660 d_sem='$d_sem'
15661 d_semctl='$d_semctl'
15662 d_semctl_semid_ds='$d_semctl_semid_ds'
15663 d_semctl_semun='$d_semctl_semun'
15664 d_semget='$d_semget'
15665 d_semop='$d_semop'
15666 d_setegid='$d_setegid'
15667 d_seteuid='$d_seteuid'
15668 d_setgrent='$d_setgrent'
15669 d_setgrps='$d_setgrps'
15670 d_sethent='$d_sethent'
15671 d_setlinebuf='$d_setlinebuf'
15672 d_setlocale='$d_setlocale'
15673 d_setnent='$d_setnent'
15674 d_setpent='$d_setpent'
15675 d_setpgid='$d_setpgid'
15676 d_setpgrp2='$d_setpgrp2'
15677 d_setpgrp='$d_setpgrp'
15678 d_setprior='$d_setprior'
15679 d_setproctitle='$d_setproctitle'
15680 d_setpwent='$d_setpwent'
15681 d_setregid='$d_setregid'
15682 d_setresgid='$d_setresgid'
15683 d_setresuid='$d_setresuid'
15684 d_setreuid='$d_setreuid'
15685 d_setrgid='$d_setrgid'
15686 d_setruid='$d_setruid'
15687 d_setsent='$d_setsent'
15688 d_setsid='$d_setsid'
15689 d_setvbuf='$d_setvbuf'
15690 d_sfio='$d_sfio'
15691 d_shm='$d_shm'
15692 d_shmat='$d_shmat'
15693 d_shmatprototype='$d_shmatprototype'
15694 d_shmctl='$d_shmctl'
15695 d_shmdt='$d_shmdt'
15696 d_shmget='$d_shmget'
15697 d_sigaction='$d_sigaction'
15698 d_sigsetjmp='$d_sigsetjmp'
15699 d_socket='$d_socket'
15700 d_socklen_t='$d_socklen_t'
15701 d_sockpair='$d_sockpair'
15702 d_socks5_init='$d_socks5_init'
15703 d_sqrtl='$d_sqrtl'
15704 d_statblks='$d_statblks'
15705 d_statfs_f_flags='$d_statfs_f_flags'
15706 d_statfs_s='$d_statfs_s'
15707 d_statvfs='$d_statvfs'
15708 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15709 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15710 d_stdio_stream_array='$d_stdio_stream_array'
15711 d_stdiobase='$d_stdiobase'
15712 d_stdstdio='$d_stdstdio'
15713 d_strchr='$d_strchr'
15714 d_strcoll='$d_strcoll'
15715 d_strctcpy='$d_strctcpy'
15716 d_strerrm='$d_strerrm'
15717 d_strerror='$d_strerror'
15718 d_strtod='$d_strtod'
15719 d_strtol='$d_strtol'
15720 d_strtold='$d_strtold'
15721 d_strtoll='$d_strtoll'
15722 d_strtoul='$d_strtoul'
15723 d_strtoull='$d_strtoull'
15724 d_strtouq='$d_strtouq'
15725 d_strxfrm='$d_strxfrm'
15726 d_suidsafe='$d_suidsafe'
15727 d_symlink='$d_symlink'
15728 d_syscall='$d_syscall'
15729 d_sysconf='$d_sysconf'
15730 d_sysernlst='$d_sysernlst'
15731 d_syserrlst='$d_syserrlst'
15732 d_system='$d_system'
15733 d_tcgetpgrp='$d_tcgetpgrp'
15734 d_tcsetpgrp='$d_tcsetpgrp'
15735 d_telldir='$d_telldir'
15736 d_telldirproto='$d_telldirproto'
15737 d_time='$d_time'
15738 d_times='$d_times'
15739 d_truncate='$d_truncate'
15740 d_tzname='$d_tzname'
15741 d_umask='$d_umask'
15742 d_uname='$d_uname'
15743 d_union_semun='$d_union_semun'
15744 d_ustat='$d_ustat'
15745 d_vendorarch='$d_vendorarch'
15746 d_vendorbin='$d_vendorbin'
15747 d_vendorlib='$d_vendorlib'
15748 d_vfork='$d_vfork'
15749 d_void_closedir='$d_void_closedir'
15750 d_voidsig='$d_voidsig'
15751 d_voidtty='$d_voidtty'
15752 d_volatile='$d_volatile'
15753 d_vprintf='$d_vprintf'
15754 d_wait4='$d_wait4'
15755 d_waitpid='$d_waitpid'
15756 d_wcstombs='$d_wcstombs'
15757 d_wctomb='$d_wctomb'
15758 d_xenix='$d_xenix'
15759 date='$date'
15760 db_hashtype='$db_hashtype'
15761 db_prefixtype='$db_prefixtype'
15762 defvoidused='$defvoidused'
15763 direntrytype='$direntrytype'
15764 dlext='$dlext'
15765 dlsrc='$dlsrc'
15766 doublesize='$doublesize'
15767 drand01='$drand01'
15768 dynamic_ext='$dynamic_ext'
15769 eagain='$eagain'
15770 ebcdic='$ebcdic'
15771 echo='$echo'
15772 egrep='$egrep'
15773 emacs='$emacs'
15774 eunicefix='$eunicefix'
15775 exe_ext='$exe_ext'
15776 expr='$expr'
15777 extensions='$extensions'
15778 fflushNULL='$fflushNULL'
15779 fflushall='$fflushall'
15780 find='$find'
15781 firstmakefile='$firstmakefile'
15782 flex='$flex'
15783 fpossize='$fpossize'
15784 fpostype='$fpostype'
15785 freetype='$freetype'
15786 full_ar='$full_ar'
15787 full_csh='$full_csh'
15788 full_sed='$full_sed'
15789 gccosandvers='$gccosandvers'
15790 gccversion='$gccversion'
15791 gidformat='$gidformat'
15792 gidsign='$gidsign'
15793 gidsize='$gidsize'
15794 gidtype='$gidtype'
15795 glibpth='$glibpth'
15796 grep='$grep'
15797 groupcat='$groupcat'
15798 groupstype='$groupstype'
15799 gzip='$gzip'
15800 h_fcntl='$h_fcntl'
15801 h_sysfile='$h_sysfile'
15802 hint='$hint'
15803 hostcat='$hostcat'
15804 huge='$huge'
15805 i16size='$i16size'
15806 i16type='$i16type'
15807 i32size='$i32size'
15808 i32type='$i32type'
15809 i64size='$i64size'
15810 i64type='$i64type'
15811 i8size='$i8size'
15812 i8type='$i8type'
15813 i_arpainet='$i_arpainet'
15814 i_bsdioctl='$i_bsdioctl'
15815 i_db='$i_db'
15816 i_dbm='$i_dbm'
15817 i_dirent='$i_dirent'
15818 i_dld='$i_dld'
15819 i_dlfcn='$i_dlfcn'
15820 i_fcntl='$i_fcntl'
15821 i_float='$i_float'
15822 i_gdbm='$i_gdbm'
15823 i_grp='$i_grp'
15824 i_iconv='$i_iconv'
15825 i_ieeefp='$i_ieeefp'
15826 i_inttypes='$i_inttypes'
15827 i_libutil='$i_libutil'
15828 i_limits='$i_limits'
15829 i_locale='$i_locale'
15830 i_machcthr='$i_machcthr'
15831 i_malloc='$i_malloc'
15832 i_math='$i_math'
15833 i_memory='$i_memory'
15834 i_mntent='$i_mntent'
15835 i_ndbm='$i_ndbm'
15836 i_netdb='$i_netdb'
15837 i_neterrno='$i_neterrno'
15838 i_netinettcp='$i_netinettcp'
15839 i_niin='$i_niin'
15840 i_poll='$i_poll'
15841 i_prot='$i_prot'
15842 i_pthread='$i_pthread'
15843 i_pwd='$i_pwd'
15844 i_rpcsvcdbm='$i_rpcsvcdbm'
15845 i_sfio='$i_sfio'
15846 i_sgtty='$i_sgtty'
15847 i_shadow='$i_shadow'
15848 i_socks='$i_socks'
15849 i_stdarg='$i_stdarg'
15850 i_stddef='$i_stddef'
15851 i_stdlib='$i_stdlib'
15852 i_string='$i_string'
15853 i_sunmath='$i_sunmath'
15854 i_sysaccess='$i_sysaccess'
15855 i_sysdir='$i_sysdir'
15856 i_sysfile='$i_sysfile'
15857 i_sysfilio='$i_sysfilio'
15858 i_sysin='$i_sysin'
15859 i_sysioctl='$i_sysioctl'
15860 i_syslog='$i_syslog'
15861 i_sysmman='$i_sysmman'
15862 i_sysmode='$i_sysmode'
15863 i_sysmount='$i_sysmount'
15864 i_sysndir='$i_sysndir'
15865 i_sysparam='$i_sysparam'
15866 i_sysresrc='$i_sysresrc'
15867 i_syssecrt='$i_syssecrt'
15868 i_sysselct='$i_sysselct'
15869 i_syssockio='$i_syssockio'
15870 i_sysstat='$i_sysstat'
15871 i_sysstatfs='$i_sysstatfs'
15872 i_sysstatvfs='$i_sysstatvfs'
15873 i_systime='$i_systime'
15874 i_systimek='$i_systimek'
15875 i_systimes='$i_systimes'
15876 i_systypes='$i_systypes'
15877 i_sysuio='$i_sysuio'
15878 i_sysun='$i_sysun'
15879 i_sysutsname='$i_sysutsname'
15880 i_sysvfs='$i_sysvfs'
15881 i_syswait='$i_syswait'
15882 i_termio='$i_termio'
15883 i_termios='$i_termios'
15884 i_time='$i_time'
15885 i_unistd='$i_unistd'
15886 i_ustat='$i_ustat'
15887 i_utime='$i_utime'
15888 i_values='$i_values'
15889 i_varargs='$i_varargs'
15890 i_varhdr='$i_varhdr'
15891 i_vfork='$i_vfork'
15892 ignore_versioned_solibs='$ignore_versioned_solibs'
15893 inc_version_list='$inc_version_list'
15894 inc_version_list_init='$inc_version_list_init'
15895 incpath='$incpath'
15896 inews='$inews'
15897 installarchlib='$installarchlib'
15898 installbin='$installbin'
15899 installman1dir='$installman1dir'
15900 installman3dir='$installman3dir'
15901 installprefix='$installprefix'
15902 installprefixexp='$installprefixexp'
15903 installprivlib='$installprivlib'
15904 installscript='$installscript'
15905 installsitearch='$installsitearch'
15906 installsitebin='$installsitebin'
15907 installsitelib='$installsitelib'
15908 installstyle='$installstyle'
15909 installusrbinperl='$installusrbinperl'
15910 installvendorarch='$installvendorarch'
15911 installvendorbin='$installvendorbin'
15912 installvendorlib='$installvendorlib'
15913 intsize='$intsize'
15914 ivdformat='$ivdformat'
15915 ivsize='$ivsize'
15916 ivtype='$ivtype'
15917 known_extensions='$known_extensions'
15918 ksh='$ksh'
15919 large='$large'
15920 ld='$ld'
15921 lddlflags='$lddlflags'
15922 ldflags='$ldflags'
15923 ldflags_uselargefiles='$ldflags_uselargefiles'
15924 ldlibpthname='$ldlibpthname'
15925 less='$less'
15926 lib_ext='$lib_ext'
15927 libc='$libc'
15928 libperl='$libperl'
15929 libpth='$libpth'
15930 libs='$libs'
15931 libsdirs='$libsdirs'
15932 libsfiles='$libsfiles'
15933 libsfound='$libsfound'
15934 libspath='$libspath'
15935 libswanted='$libswanted'
15936 libswanted_uselargefiles='$libswanted_uselargefiles'
15937 line='$line'
15938 lint='$lint'
15939 lkflags='$lkflags'
15940 ln='$ln'
15941 lns='$lns'
15942 locincpth='$locincpth'
15943 loclibpth='$loclibpth'
15944 longdblsize='$longdblsize'
15945 longlongsize='$longlongsize'
15946 longsize='$longsize'
15947 lp='$lp'
15948 lpr='$lpr'
15949 ls='$ls'
15950 lseeksize='$lseeksize'
15951 lseektype='$lseektype'
15952 mail='$mail'
15953 mailx='$mailx'
15954 make='$make'
15955 make_set_make='$make_set_make'
15956 mallocobj='$mallocobj'
15957 mallocsrc='$mallocsrc'
15958 malloctype='$malloctype'
15959 man1dir='$man1dir'
15960 man1direxp='$man1direxp'
15961 man1ext='$man1ext'
15962 man3dir='$man3dir'
15963 man3direxp='$man3direxp'
15964 man3ext='$man3ext'
15965 medium='$medium'
15966 mips_type='$mips_type'
15967 mkdir='$mkdir'
15968 mmaptype='$mmaptype'
15969 models='$models'
15970 modetype='$modetype'
15971 more='$more'
15972 multiarch='$multiarch'
15973 mv='$mv'
15974 myarchname='$myarchname'
15975 mydomain='$mydomain'
15976 myhostname='$myhostname'
15977 myuname='$myuname'
15978 n='$n'
15979 netdb_hlen_type='$netdb_hlen_type'
15980 netdb_host_type='$netdb_host_type'
15981 netdb_name_type='$netdb_name_type'
15982 netdb_net_type='$netdb_net_type'
15983 nm='$nm'
15984 nm_opt='$nm_opt'
15985 nm_so_opt='$nm_so_opt'
15986 nonxs_ext='$nonxs_ext'
15987 nroff='$nroff'
15988 nvEformat='$nvEformat'
15989 nvFformat='$nvFformat'
15990 nvGformat='$nvGformat'
15991 nveformat='$nveformat'
15992 nvfformat='$nvfformat'
15993 nvgformat='$nvgformat'
15994 nvsize='$nvsize'
15995 nvtype='$nvtype'
15996 o_nonblock='$o_nonblock'
15997 obj_ext='$obj_ext'
15998 old_pthread_create_joinable='$old_pthread_create_joinable'
15999 optimize='$optimize'
16000 orderlib='$orderlib'
16001 osname='$osname'
16002 osvers='$osvers'
16003 otherlibdirs='$otherlibdirs'
16004 package='$package'
16005 pager='$pager'
16006 passcat='$passcat'
16007 patchlevel='$patchlevel'
16008 path_sep='$path_sep'
16009 perl5='$perl5'
16010 perl='$perl'
16011 perladmin='$perladmin'
16012 perlpath='$perlpath'
16013 pg='$pg'
16014 phostname='$phostname'
16015 pidtype='$pidtype'
16016 plibpth='$plibpth'
16017 pm_apiversion='$pm_apiversion'
16018 pmake='$pmake'
16019 pr='$pr'
16020 prefix='$prefix'
16021 prefixexp='$prefixexp'
16022 privlib='$privlib'
16023 privlibexp='$privlibexp'
16024 prototype='$prototype'
16025 ptrsize='$ptrsize'
16026 quadkind='$quadkind'
16027 quadtype='$quadtype'
16028 randbits='$randbits'
16029 randfunc='$randfunc'
16030 randseedtype='$randseedtype'
16031 ranlib='$ranlib'
16032 rd_nodata='$rd_nodata'
16033 revision='$revision'
16034 rm='$rm'
16035 rmail='$rmail'
16036 runnm='$runnm'
16037 sPRIEldbl='$sPRIEldbl'
16038 sPRIFldbl='$sPRIFldbl'
16039 sPRIGldbl='$sPRIGldbl'
16040 sPRIX64='$sPRIX64'
16041 sPRId64='$sPRId64'
16042 sPRIeldbl='$sPRIeldbl'
16043 sPRIfldbl='$sPRIfldbl'
16044 sPRIgldbl='$sPRIgldbl'
16045 sPRIi64='$sPRIi64'
16046 sPRIo64='$sPRIo64'
16047 sPRIu64='$sPRIu64'
16048 sPRIx64='$sPRIx64'
16049 sSCNfldbl='$sSCNfldbl'
16050 sched_yield='$sched_yield'
16051 scriptdir='$scriptdir'
16052 scriptdirexp='$scriptdirexp'
16053 sed='$sed'
16054 seedfunc='$seedfunc'
16055 selectminbits='$selectminbits'
16056 selecttype='$selecttype'
16057 sendmail='$sendmail'
16058 sh='$sh'
16059 shar='$shar'
16060 sharpbang='$sharpbang'
16061 shmattype='$shmattype'
16062 shortsize='$shortsize'
16063 shrpenv='$shrpenv'
16064 shsharp='$shsharp'
16065 sig_count='$sig_count'
16066 sig_name='$sig_name'
16067 sig_name_init='$sig_name_init'
16068 sig_num='$sig_num'
16069 sig_num_init='$sig_num_init'
16070 signal_t='$signal_t'
16071 sitearch='$sitearch'
16072 sitearchexp='$sitearchexp'
16073 sitebin='$sitebin'
16074 sitebinexp='$sitebinexp'
16075 sitelib='$sitelib'
16076 sitelib_stem='$sitelib_stem'
16077 sitelibexp='$sitelibexp'
16078 siteprefix='$siteprefix'
16079 siteprefixexp='$siteprefixexp'
16080 sizesize='$sizesize'
16081 sizetype='$sizetype'
16082 sleep='$sleep'
16083 smail='$smail'
16084 small='$small'
16085 so='$so'
16086 sockethdr='$sockethdr'
16087 socketlib='$socketlib'
16088 socksizetype='$socksizetype'
16089 sort='$sort'
16090 spackage='$spackage'
16091 spitshell='$spitshell'
16092 split='$split'
16093 src='$src'
16094 ssizetype='$ssizetype'
16095 startperl='$startperl'
16096 startsh='$startsh'
16097 static_ext='$static_ext'
16098 stdchar='$stdchar'
16099 stdio_base='$stdio_base'
16100 stdio_bufsiz='$stdio_bufsiz'
16101 stdio_cnt='$stdio_cnt'
16102 stdio_filbuf='$stdio_filbuf'
16103 stdio_ptr='$stdio_ptr'
16104 stdio_stream_array='$stdio_stream_array'
16105 strings='$strings'
16106 submit='$submit'
16107 subversion='$subversion'
16108 sysman='$sysman'
16109 tail='$tail'
16110 tar='$tar'
16111 tbl='$tbl'
16112 tee='$tee'
16113 test='$test'
16114 timeincl='$timeincl'
16115 timetype='$timetype'
16116 touch='$touch'
16117 tr='$tr'
16118 trnl='$trnl'
16119 troff='$troff'
16120 u16size='$u16size'
16121 u16type='$u16type'
16122 u32size='$u32size'
16123 u32type='$u32type'
16124 u64size='$u64size'
16125 u64type='$u64type'
16126 u8size='$u8size'
16127 u8type='$u8type'
16128 uidformat='$uidformat'
16129 uidsign='$uidsign'
16130 uidsize='$uidsize'
16131 uidtype='$uidtype'
16132 uname='$uname'
16133 uniq='$uniq'
16134 uquadtype='$uquadtype'
16135 use5005threads='$use5005threads'
16136 use64bitall='$use64bitall'
16137 use64bitint='$use64bitint'
16138 usedl='$usedl'
16139 useithreads='$useithreads'
16140 uselargefiles='$uselargefiles'
16141 uselongdouble='$uselongdouble'
16142 usemorebits='$usemorebits'
16143 usemultiplicity='$usemultiplicity'
16144 usemymalloc='$usemymalloc'
16145 usenm='$usenm'
16146 useopcode='$useopcode'
16147 useperlio='$useperlio'
16148 useposix='$useposix'
16149 usesfio='$usesfio'
16150 useshrplib='$useshrplib'
16151 usesocks='$usesocks'
16152 usethreads='$usethreads'
16153 usevendorprefix='$usevendorprefix'
16154 usevfork='$usevfork'
16155 usrinc='$usrinc'
16156 uuname='$uuname'
16157 uvXformat='$uvXformat'
16158 uvoformat='$uvoformat'
16159 uvsize='$uvsize'
16160 uvtype='$uvtype'
16161 uvuformat='$uvuformat'
16162 uvxformat='$uvxformat'
16163 vendorarch='$vendorarch'
16164 vendorarchexp='$vendorarchexp'
16165 vendorbin='$vendorbin'
16166 vendorbinexp='$vendorbinexp'
16167 vendorlib='$vendorlib'
16168 vendorlib_stem='$vendorlib_stem'
16169 vendorlibexp='$vendorlibexp'
16170 vendorprefix='$vendorprefix'
16171 vendorprefixexp='$vendorprefixexp'
16172 version='$version'
16173 vi='$vi'
16174 voidflags='$voidflags'
16175 xlibpth='$xlibpth'
16176 xs_apiversion='$xs_apiversion'
16177 zcat='$zcat'
16178 zip='$zip'
16179 EOT
16180
16181 : Add in command line options if available
16182 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16183
16184 : add special variables
16185 $test -f $src/patchlevel.h && \
16186 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16187 echo "CONFIGDOTSH=true" >>config.sh
16188
16189 : propagate old symbols
16190 if $test -f UU/config.sh; then
16191         <UU/config.sh sort | uniq >UU/oldconfig.sh
16192         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16193         sort | uniq -u >UU/oldsyms
16194         set X `cat UU/oldsyms`
16195         shift
16196         case $# in
16197         0) ;;
16198         *)
16199                 cat <<EOM
16200 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16201 EOM
16202                 echo "# Variables propagated from previous config.sh file." >>config.sh
16203                 for sym in `cat UU/oldsyms`; do
16204                         echo "    Propagating $hint variable "'$'"$sym..."
16205                         eval 'tmp="$'"${sym}"'"'
16206                         echo "$tmp" | \
16207                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16208                 done
16209                 ;;
16210         esac
16211 fi
16212
16213 : Finish up by extracting the .SH files
16214 case "$alldone" in
16215 exit)
16216         $rm -rf UU
16217         echo "Done."
16218         exit 0
16219         ;;
16220 cont)
16221         ;;
16222 '')
16223         dflt=''
16224         nostick=true
16225         $cat <<EOM
16226
16227 If you'd like to make any changes to the config.sh file before I begin
16228 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16229
16230 EOM
16231         rp="Press return or use a shell escape to edit config.sh:"
16232         . UU/myread
16233         nostick=''
16234         case "$ans" in
16235         '') ;;
16236         *) : in case they cannot read
16237                 sh 1>&4 -c "$ans";;
16238         esac
16239         ;;
16240 esac
16241
16242 : if this fails, just run all the .SH files by hand
16243 . ./config.sh
16244
16245 echo " "
16246 exec 1>&4
16247 . ./UU/extract
16248
16249 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16250         dflt=y
16251         case "$silent" in
16252         true) ;;
16253         *)
16254                 $cat <<EOM
16255
16256 Now you need to generate make dependencies by running "$make depend".
16257 You might prefer to run it in background: "$make depend > makedepend.out &"
16258 It can take a while, so you might not want to run it right now.
16259
16260 EOM
16261                 ;;
16262         esac
16263         rp="Run $make depend now?"
16264         . UU/myread
16265         case "$ans" in
16266         y*)
16267                 $make depend && echo "Now you must run a $make."
16268                 ;;
16269         *)
16270                 echo "You must run '$make depend' then '$make'."
16271                 ;;
16272         esac
16273 elif test -f [Mm]akefile; then
16274         echo " "
16275         echo "Now you must run a $make."
16276 else
16277         echo "Done."
16278 fi
16279
16280 if $test -f Policy.sh; then
16281     $cat <<EOM
16282
16283 If you compile $package on a different machine or from a different object
16284 directory, copy the Policy.sh file from this object directory to the
16285 new one before you run Configure -- this will help you with most of
16286 the policy defaults.
16287
16288 EOM
16289 fi
16290 if $test -f config.msg; then
16291     echo "Hmm.  I also noted the following information while running:"
16292     echo " "
16293     $cat config.msg >&4
16294     $rm -f config.msg
16295 fi
16296 $rm -f kit*isdone ark*isdone
16297 $rm -rf UU
16298
16299 : End of Configure
16300