Document the number of exponent digits.
[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 Aug 18 03:43:53 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 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_sqrtl=''
528 d_statblks=''
529 d_statfs_f_flags=''
530 d_statfs_s=''
531 d_fstatvfs=''
532 d_statvfs=''
533 d_stdio_cnt_lval=''
534 d_stdio_ptr_lval=''
535 d_stdiobase=''
536 d_stdstdio=''
537 stdio_base=''
538 stdio_bufsiz=''
539 stdio_cnt=''
540 stdio_filbuf=''
541 stdio_ptr=''
542 d_index=''
543 d_strchr=''
544 d_strcoll=''
545 d_strctcpy=''
546 d_strerrm=''
547 d_strerror=''
548 d_sysernlst=''
549 d_syserrlst=''
550 d_strtod=''
551 d_strtol=''
552 d_strtold=''
553 d_strtoll=''
554 d_strtoul=''
555 d_strtoull=''
556 d_strtouq=''
557 d_strxfrm=''
558 d_symlink=''
559 d_syscall=''
560 d_sysconf=''
561 d_system=''
562 d_tcgetpgrp=''
563 d_tcsetpgrp=''
564 d_telldirproto=''
565 d_time=''
566 timetype=''
567 clocktype=''
568 d_times=''
569 d_truncate=''
570 d_tzname=''
571 d_umask=''
572 d_semctl_semid_ds=''
573 d_semctl_semun=''
574 d_union_semun=''
575 d_ustat=''
576 d_vfork=''
577 usevfork=''
578 d_voidsig=''
579 signal_t=''
580 d_volatile=''
581 d_charvspr=''
582 d_vprintf=''
583 d_wait4=''
584 d_waitpid=''
585 d_wcstombs=''
586 d_wctomb=''
587 dlext=''
588 cccdlflags=''
589 ccdlflags=''
590 dlsrc=''
591 ld=''
592 lddlflags=''
593 usedl=''
594 doublesize=''
595 ebcdic=''
596 fflushNULL=''
597 fflushall=''
598 fpossize=''
599 fpostype=''
600 gccosandvers=''
601 gccversion=''
602 gidformat=''
603 gidsign=''
604 gidsize=''
605 gidtype=''
606 groupstype=''
607 h_fcntl=''
608 h_sysfile=''
609 i_arpainet=''
610 db_hashtype=''
611 db_prefixtype=''
612 i_db=''
613 i_dbm=''
614 i_rpcsvcdbm=''
615 d_dirnamlen=''
616 direntrytype=''
617 i_dirent=''
618 i_dld=''
619 i_dlfcn=''
620 i_fcntl=''
621 i_float=''
622 i_gdbm=''
623 d_grpasswd=''
624 i_grp=''
625 i_iconv=''
626 i_ieeefp=''
627 i_inttypes=''
628 i_libutil=''
629 i_limits=''
630 i_locale=''
631 i_machcthr=''
632 i_malloc=''
633 i_math=''
634 i_memory=''
635 i_mntent=''
636 i_ndbm=''
637 i_netdb=''
638 i_neterrno=''
639 i_netinettcp=''
640 i_niin=''
641 i_sysin=''
642 i_poll=''
643 i_prot=''
644 i_pthread=''
645 d_pwage=''
646 d_pwchange=''
647 d_pwclass=''
648 d_pwcomment=''
649 d_pwexpire=''
650 d_pwgecos=''
651 d_pwpasswd=''
652 d_pwquota=''
653 i_pwd=''
654 i_sfio=''
655 i_shadow=''
656 i_socks=''
657 i_stddef=''
658 i_stdlib=''
659 i_string=''
660 strings=''
661 i_sunmath=''
662 i_sysaccess=''
663 i_sysdir=''
664 i_sysfile=''
665 d_voidtty=''
666 i_bsdioctl=''
667 i_sysfilio=''
668 i_sysioctl=''
669 i_syssockio=''
670 i_syslog=''
671 i_sysmman=''
672 i_sysmode=''
673 i_sysmount=''
674 i_sysndir=''
675 i_sysparam=''
676 i_sysresrc=''
677 i_syssecrt=''
678 i_sysselct=''
679 i_sysstat=''
680 i_sysstatfs=''
681 i_sysstatvfs=''
682 i_systimes=''
683 i_systypes=''
684 i_sysuio=''
685 i_sysun=''
686 i_sysutsname=''
687 i_sysvfs=''
688 i_syswait=''
689 i_sgtty=''
690 i_termio=''
691 i_termios=''
692 i_systime=''
693 i_systimek=''
694 i_time=''
695 timeincl=''
696 i_unistd=''
697 i_ustat=''
698 i_utime=''
699 i_values=''
700 i_stdarg=''
701 i_varargs=''
702 i_varhdr=''
703 i_vfork=''
704 inc_version_list=''
705 inc_version_list_init=''
706 installprefix=''
707 installprefixexp=''
708 installstyle=''
709 installusrbinperl=''
710 intsize=''
711 longsize=''
712 shortsize=''
713 libc=''
714 ldlibpthname=''
715 libperl=''
716 shrpenv=''
717 useshrplib=''
718 glibpth=''
719 libpth=''
720 loclibpth=''
721 plibpth=''
722 xlibpth=''
723 ignore_versioned_solibs=''
724 libs=''
725 libsdirs=''
726 libsfiles=''
727 libsfound=''
728 libspath=''
729 lns=''
730 d_PRIEldbl=''
731 d_PRIFldbl=''
732 d_PRIGldbl=''
733 d_PRIeldbl=''
734 d_PRIfldbl=''
735 d_PRIgldbl=''
736 sPRIEldbl=''
737 sPRIFldbl=''
738 sPRIGldbl=''
739 sPRIeldbl=''
740 sPRIfldbl=''
741 sPRIgldbl=''
742 lseeksize=''
743 lseektype=''
744 make_set_make=''
745 d_mymalloc=''
746 freetype=''
747 mallocobj=''
748 mallocsrc=''
749 malloctype=''
750 usemymalloc=''
751 installman1dir=''
752 man1dir=''
753 man1direxp=''
754 man1ext=''
755 installman3dir=''
756 man3dir=''
757 man3direxp=''
758 man3ext=''
759 huge=''
760 large=''
761 medium=''
762 models=''
763 small=''
764 split=''
765 modetype=''
766 multiarch=''
767 mydomain=''
768 myhostname=''
769 phostname=''
770 c=''
771 n=''
772 d_eofnblk=''
773 eagain=''
774 o_nonblock=''
775 rd_nodata=''
776 netdb_hlen_type=''
777 netdb_host_type=''
778 netdb_name_type=''
779 netdb_net_type=''
780 groupcat=''
781 hostcat=''
782 passcat=''
783 orderlib=''
784 ranlib=''
785 d_perl_otherlibdirs=''
786 otherlibdirs=''
787 package=''
788 spackage=''
789 pager=''
790 api_revision=''
791 api_subversion=''
792 api_version=''
793 api_versionstring=''
794 patchlevel=''
795 revision=''
796 subversion=''
797 version=''
798 perl5=''
799 perladmin=''
800 perlpath=''
801 d_nv_preserves_uv=''
802 d_nv_preserves_uv_bits=''
803 i16size=''
804 i16type=''
805 i32size=''
806 i32type=''
807 i64size=''
808 i64type=''
809 i8size=''
810 i8type=''
811 ivsize=''
812 ivtype=''
813 nvsize=''
814 nvtype=''
815 u16size=''
816 u16type=''
817 u32size=''
818 u32type=''
819 u64size=''
820 u64type=''
821 u8size=''
822 u8type=''
823 uvsize=''
824 uvtype=''
825 ivdformat=''
826 nvEformat=''
827 nvFformat=''
828 nvGformat=''
829 nveformat=''
830 nvfformat=''
831 nvgformat=''
832 uvXformat=''
833 uvoformat=''
834 uvuformat=''
835 uvxformat=''
836 pidtype=''
837 prefix=''
838 prefixexp=''
839 installprivlib=''
840 privlib=''
841 privlibexp=''
842 prototype=''
843 ptrsize=''
844 d_PRIX64=''
845 d_PRId64=''
846 d_PRIi64=''
847 d_PRIo64=''
848 d_PRIu64=''
849 d_PRIx64=''
850 sPRIX64=''
851 sPRId64=''
852 sPRIi64=''
853 sPRIo64=''
854 sPRIu64=''
855 sPRIx64=''
856 d_quad=''
857 quadkind=''
858 quadtype=''
859 uquadtype=''
860 drand01=''
861 randbits=''
862 randfunc=''
863 randseedtype=''
864 seedfunc=''
865 installscript=''
866 scriptdir=''
867 scriptdirexp=''
868 selectminbits=''
869 selecttype=''
870 sh=''
871 sig_count=''
872 sig_name=''
873 sig_name_init=''
874 sig_num=''
875 sig_num_init=''
876 installsitearch=''
877 sitearch=''
878 sitearchexp=''
879 installsitebin=''
880 sitebin=''
881 sitebinexp=''
882 installsitelib=''
883 sitelib=''
884 sitelib_stem=''
885 sitelibexp=''
886 siteprefix=''
887 siteprefixexp=''
888 sizesize=''
889 sizetype=''
890 so=''
891 socksizetype=''
892 sharpbang=''
893 shsharp=''
894 spitshell=''
895 src=''
896 ssizetype=''
897 startperl=''
898 startsh=''
899 stdchar=''
900 d_stdio_stream_array=''
901 stdio_stream_array=''
902 sysman=''
903 trnl=''
904 uidformat=''
905 uidsign=''
906 uidsize=''
907 uidtype=''
908 archname64=''
909 use64bitall=''
910 use64bitint=''
911 ccflags_uselargefiles=''
912 ldflags_uselargefiles=''
913 libswanted_uselargefiles=''
914 uselargefiles=''
915 uselongdouble=''
916 usemorebits=''
917 usemultiplicity=''
918 nm_opt=''
919 nm_so_opt=''
920 runnm=''
921 usenm=''
922 useperlio=''
923 usesocks=''
924 d_oldpthreads=''
925 use5005threads=''
926 useithreads=''
927 usethreads=''
928 incpath=''
929 mips_type=''
930 usrinc=''
931 d_vendorarch=''
932 installvendorarch=''
933 vendorarch=''
934 vendorarchexp=''
935 d_vendorbin=''
936 installvendorbin=''
937 vendorbin=''
938 vendorbinexp=''
939 d_vendorlib=''
940 installvendorlib=''
941 vendorlib=''
942 vendorlib_stem=''
943 vendorlibexp=''
944 usevendorprefix=''
945 vendorprefix=''
946 vendorprefixexp=''
947 defvoidused=''
948 voidflags=''
949 pm_apiversion=''
950 xs_apiversion=''
951 CONFIG=''
952
953 define='define'
954 undef='undef'
955 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
956 rmlist=''
957
958 : We must find out about Eunice early
959 eunicefix=':'
960 if test -f /etc/unixtovms; then
961         eunicefix=/etc/unixtovms
962 fi
963 if test -f /etc/unixtovms.exe; then
964         eunicefix=/etc/unixtovms.exe
965 fi
966
967 i_whoami=''
968 : set useposix=false in your hint file to disable the POSIX extension.
969 useposix=true
970 : set useopcode=false in your hint file to disable the Opcode extension.
971 useopcode=true
972 : Trailing extension.  Override this in a hint file, if needed.
973 _exe=''
974 : Extra object files, if any, needed on this platform.
975 archobjs=''
976 : Possible local include directories to search.
977 : Set locincpth to "" in a hint file to defeat local include searches.
978 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
979 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
980 :
981 : no include file wanted by default
982 inclwanted=''
983
984 groupstype=''
985 : change the next line if compiling for Xenix/286 on Xenix/386
986 xlibpth='/usr/lib/386 /lib/386'
987 : Possible local library directories to search.
988 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
989 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
990
991 : general looking path for locating libraries
992 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
993 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
994 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
995 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
996 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
997
998 : Private path used by Configure to find libraries.  Its value
999 : is prepended to libpth. This variable takes care of special
1000 : machines, like the mips.  Usually, it should be empty.
1001 plibpth=''
1002
1003 : default library list
1004 libswanted=''
1005 : some systems want to use only the non-versioned libso:s
1006 ignore_versioned_solibs=''
1007 ccflags_uselargefiles=''
1008 ldflags_uselargefiles=''
1009 libswanted_uselargefiles=''
1010 : set usemultiplicity on the Configure command line to enable multiplicity.
1011 : set usesocks on the Configure command line to enable socks.
1012 : set usethreads on the Configure command line to enable threads.
1013 : full support for void wanted by default
1014 defvoidused=15
1015
1016 : List of libraries we want.
1017 : If anyone needs -lnet, put it in a hint file.
1018 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1019 libswanted="$libswanted dld ld sun m c cposix posix"
1020 libswanted="$libswanted ndir dir crypt sec"
1021 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1022 : We probably want to search /usr/shlib before most other libraries.
1023 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1024 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1025 glibpth="/usr/shlib $glibpth"
1026 : Do not use vfork unless overridden by a hint file.
1027 usevfork=false
1028
1029 : Find the basic shell for Bourne shell scripts
1030 case "$sh" in
1031 '')
1032         case "$SYSTYPE" in
1033         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1034         *) xxx='/bin/sh';;
1035         esac
1036         if test -f "$xxx"; then
1037                 sh="$xxx"
1038         else
1039                 : Build up a list and do a single loop so we can 'break' out.
1040                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1041                 for xxx in sh bash ksh pdksh ash; do
1042                         for p in $pth; do
1043                                 try="$try ${p}/${xxx}"
1044                         done
1045                 done
1046                 for xxx in $try; do
1047                         if test -f "$xxx"; then
1048                                 sh="$xxx";
1049                                 break
1050                         elif test -f "$xxx.exe"; then
1051                                 sh="$xxx";
1052                                 break
1053                         fi
1054                 done
1055         fi
1056         ;;
1057 esac
1058
1059 case "$sh" in
1060 '')     cat <<EOM >&2
1061 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1062
1063 Usually it's in /bin/sh.  How did you even get this far?
1064 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1065 we'll try to straighten this all out.
1066 EOM
1067         exit 1
1068         ;;
1069 esac
1070
1071 : see if sh knows # comments
1072 if `$sh -c '#' >/dev/null 2>&1`; then
1073         shsharp=true
1074         spitshell=cat
1075         xcat=/bin/cat
1076         test -f $xcat || xcat=/usr/bin/cat
1077         echo "#!$xcat" >try
1078         $eunicefix try
1079         chmod +x try
1080         ./try > today
1081         if test -s today; then
1082                 sharpbang='#!'
1083         else
1084                 echo "#! $xcat" > try
1085                 $eunicefix try
1086                 chmod +x try
1087                 ./try > today
1088                 if test -s today; then
1089                         sharpbang='#! '
1090                 else
1091                         sharpbang=': use '
1092                 fi
1093         fi
1094 else
1095         echo " "
1096         echo "Your $sh doesn't grok # comments--I will strip them later on."
1097         shsharp=false
1098         cd ..
1099         echo "exec grep -v '^[  ]*#'" >spitshell
1100         chmod +x spitshell
1101         $eunicefix spitshell
1102         spitshell=`pwd`/spitshell
1103         cd UU
1104         echo "I presume that if # doesn't work, #! won't work either!"
1105         sharpbang=': use '
1106 fi
1107 rm -f try today
1108
1109 : figure out how to guarantee sh startup
1110 case "$startsh" in
1111 '') startsh=${sharpbang}${sh} ;;
1112 *)
1113 esac
1114 cat >try <<EOSS
1115 $startsh
1116 set abc
1117 test "$?abc" != 1
1118 EOSS
1119
1120 chmod +x try
1121 $eunicefix try
1122 if ./try; then
1123         : echo "Yup, it does."
1124 else
1125         echo "Hmm... '$startsh' does not guarantee sh startup..."
1126         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1127 fi
1128 rm -f try
1129
1130
1131 : Save command line options in file UU/cmdline.opt for later use in
1132 : generating config.sh.
1133 cat > cmdline.opt <<EOSH
1134 # Configure command line arguments.
1135 config_arg0='$0'
1136 config_args='$*'
1137 config_argc=$#
1138 EOSH
1139 argn=1
1140 for arg in "$@"; do
1141         cat >>cmdline.opt <<EOSH
1142 config_arg$argn='$arg'
1143 EOSH
1144         argn=`expr $argn + 1`
1145 done
1146
1147 : produce awk script to parse command line options
1148 cat >options.awk <<'EOF'
1149 BEGIN {
1150         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1151
1152         len = length(optstr);
1153         for (i = 1; i <= len; i++) {
1154                 c = substr(optstr, i, 1);
1155                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1156                 if (a == ":") {
1157                         arg[c] = 1;
1158                         i++;
1159                 }
1160                 opt[c] = 1;
1161         }
1162 }
1163 {
1164         expect = 0;
1165         str = $0;
1166         if (substr(str, 1, 1) != "-") {
1167                 printf("'%s'\n", str);
1168                 next;
1169         }
1170         len = length($0);
1171         for (i = 2; i <= len; i++) {
1172                 c = substr(str, i, 1);
1173                 if (!opt[c]) {
1174                         printf("-%s\n", substr(str, i));
1175                         next;
1176                 }
1177                 printf("-%s\n", c);
1178                 if (arg[c]) {
1179                         if (i < len)
1180                                 printf("'%s'\n", substr(str, i + 1));
1181                         else
1182                                 expect = 1;
1183                         next;
1184                 }
1185         }
1186 }
1187 END {
1188         if (expect)
1189                 print "?";
1190 }
1191 EOF
1192
1193 : process the command line options
1194 set X `for arg in "$@"; do echo "X$arg"; done |
1195         sed -e s/X// | awk -f options.awk`
1196 eval "set $*"
1197 shift
1198 rm -f options.awk
1199
1200 : set up default values
1201 fastread=''
1202 reuseval=false
1203 config_sh=''
1204 alldone=''
1205 error=''
1206 silent=''
1207 extractsh=''
1208 override=''
1209 knowitall=''
1210 rm -f optdef.sh posthint.sh
1211 cat >optdef.sh <<EOS
1212 $startsh
1213 EOS
1214
1215
1216 : option parsing
1217 while test $# -gt 0; do
1218         case "$1" in
1219         -d) shift; fastread=yes;;
1220         -e) shift; alldone=cont;;
1221         -f)
1222                 shift
1223                 cd ..
1224                 if test -r "$1"; then
1225                         config_sh="$1"
1226                 else
1227                         echo "$me: cannot read config file $1." >&2
1228                         error=true
1229                 fi
1230                 cd UU
1231                 shift;;
1232         -h) shift; error=true;;
1233         -r) shift; reuseval=true;;
1234         -s) shift; silent=true; realsilent=true;;
1235         -E) shift; alldone=exit;;
1236         -K) shift; knowitall=true;;
1237         -O) shift; override=true;;
1238         -S) shift; silent=true; extractsh=true;;
1239         -D)
1240                 shift
1241                 case "$1" in
1242                 *=)
1243                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1244                         echo "$me: ignoring -D $1" >&2
1245                         ;;
1246                 *=*) echo "$1" | \
1247                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1248                 *) echo "$1='define'" >> optdef.sh;;
1249                 esac
1250                 shift
1251                 ;;
1252         -U)
1253                 shift
1254                 case "$1" in
1255                 *=) echo "$1" >> optdef.sh;;
1256                 *=*)
1257                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1258                         echo "$me: ignoring -U $1" >&2
1259                         ;;
1260                 *) echo "$1='undef'" >> optdef.sh;;
1261                 esac
1262                 shift
1263                 ;;
1264         -A)
1265             shift
1266             xxx=''
1267             yyy="$1"
1268             zzz=''
1269             uuu=undef
1270             case "$yyy" in
1271             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1272                  case "$zzz" in
1273                  *:*) zzz='' ;;
1274                  *)   xxx=append
1275                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1276                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1277                  esac
1278                  ;;
1279             esac
1280             case "$xxx" in
1281             '')  case "$yyy" in
1282                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1283                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1284                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1285                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1286                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1287                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1288                  esac
1289                  ;;       
1290             esac
1291             case "$xxx" in
1292             append)
1293                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1294             clear)
1295                 echo "$yyy=''"                  >> posthint.sh ;;
1296             define)
1297                 case "$zzz" in
1298                 '') zzz=define ;;
1299                 esac
1300                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1301             eval)
1302                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1303             prepend)
1304                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1305             undef)
1306                 case "$zzz" in
1307                 '') zzz="$uuu" ;;
1308                 esac
1309                 echo "$yyy=$zzz"                >> posthint.sh ;;
1310             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1311             esac
1312             shift
1313             ;;
1314         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1315             exit 0;;
1316         --) break;;
1317         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1318         *) break;;
1319         esac
1320 done
1321
1322 case "$error" in
1323 true)
1324         cat >&2 <<EOM
1325 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1326                  [-U symbol] [-U symbol=] [-A command:symbol...]
1327   -d : use defaults for all answers.
1328   -e : go on without questioning past the production of config.sh.
1329   -f : specify an alternate default configuration file.
1330   -h : print this help message and exit (with an error status).
1331   -r : reuse C symbols value if possible (skips costly nm extraction).
1332   -s : silent mode, only echoes questions and essential information.
1333   -D : define symbol to have some value:
1334          -D symbol         symbol gets the value 'define'
1335          -D symbol=value   symbol gets the value 'value'
1336   -E : stop at the end of questions, after having produced config.sh.
1337   -K : do not use unless you know what you are doing.
1338   -O : let -D and -U override definitions from loaded configuration file.
1339   -S : perform variable substitutions on all .SH files (can mix with -f)
1340   -U : undefine symbol:
1341          -U symbol    symbol gets the value 'undef'
1342          -U symbol=   symbol gets completely empty
1343   -A : manipulate symbol after the platform specific hints have been applied:
1344          -A symbol=value                append " "value to symbol
1345          -A append:symbol=value         append value to symbol
1346          -A define:symbol=value         define symbol to have value
1347          -A clear:symbol                define symbol to be ''
1348          -A define:symbol               define symbol to be 'define'
1349          -A eval:symbol=value           define symbol to be eval of value
1350          -A prepend:symbol=value        prepend value to symbol
1351          -A undef:symbol                define symbol to be 'undef'
1352          -A undef:symbol=               define symbol to be ''
1353   -V : print version number and exit (with a zero status).
1354 EOM
1355         exit 1
1356         ;;
1357 esac
1358
1359 : Sanity checks
1360 case "$fastread$alldone" in
1361 yescont|yesexit) ;;
1362 *)
1363         case "$extractsh" in
1364         true) ;;
1365         *)
1366                 if test ! -t 0; then
1367                         echo "Say 'sh Configure', not 'sh <Configure'"
1368                         exit 1
1369                 fi
1370                 ;;
1371         esac
1372         ;;
1373 esac
1374
1375 exec 4>&1
1376 case "$silent" in
1377 true) exec 1>/dev/null;;
1378 esac
1379
1380 : run the defines and the undefines, if any, but leave the file out there...
1381 touch optdef.sh
1382 . ./optdef.sh
1383 : create the posthint manipulation script and leave the file out there...
1384 touch posthint.sh
1385
1386 : set package name
1387 package=perl5
1388 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1389 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1390 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1391 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1392 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1393 esac
1394
1395 : Some greps do not return status, grrr.
1396 echo "grimblepritz" >grimble
1397 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1398         contains=contains
1399 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1400         contains=grep
1401 else
1402         contains=contains
1403 fi
1404 rm -f grimble
1405 : the following should work in any shell
1406 case "$contains" in
1407 contains*)
1408         echo " "
1409         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1410         cat >contains <<'EOSS'
1411 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1412 EOSS
1413 chmod +x contains
1414 esac
1415
1416 : Find the path to the source tree
1417 case "$src" in
1418 '') case "$0" in
1419     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1420          case "$src" in
1421          /*)    ;;
1422          *)     src=`cd ../$src && pwd` ;;
1423          esac
1424          ;;
1425     *)   src='.';;
1426     esac;;
1427 esac
1428 case "$src" in
1429 '')     src=/
1430         rsrc=/
1431         ;;
1432 /*) rsrc="$src";;
1433 *) rsrc="../$src";;
1434 esac
1435 if test -f $rsrc/Configure && \
1436         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1437 then
1438    : found it, so we are ok.
1439 else
1440         rsrc=''
1441         for src in . .. ../.. ../../.. ../../../..; do
1442                 if test -f ../$src/Configure && \
1443                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1444                 then
1445                         rsrc=../$src
1446                         break
1447                 fi
1448         done
1449 fi
1450 case "$rsrc" in
1451 '')
1452         cat <<EOM >&4
1453
1454 Sorry, I can't seem to locate the source dir for $package.  Please start
1455 Configure with an explicit path -- i.e. /some/path/Configure.
1456
1457 EOM
1458         exit 1
1459         ;;
1460 ../.)   rsrc='..';;
1461 *)
1462         echo " "
1463         echo "Sources for $package found in \"$src\"." >&4
1464         ;;
1465 esac
1466
1467 : script used to extract .SH files with variable substitutions
1468 cat >extract <<'EOS'
1469 CONFIGDOTSH=true
1470 echo "Doing variable substitutions on .SH files..."
1471 if test -f $src/MANIFEST; then
1472         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1473 else
1474         echo "(Looking for .SH files under the source directory.)"
1475         set x `(cd $src; find . -name "*.SH" -print)`
1476 fi
1477 shift
1478 case $# in
1479 0) set x `(cd $src; echo *.SH)`; shift;;
1480 esac
1481 if test ! -f $src/$1; then
1482         shift
1483 fi
1484 mkdir_p='
1485 name=$1;
1486 create="";
1487 while test $name; do
1488         if test ! -d "$name"; then
1489                 create="$name $create";
1490                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1491                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1492         else
1493                 name="";
1494         fi;
1495 done;
1496 for file in $create; do
1497         mkdir $file;
1498 done
1499 '
1500 for file in $*; do
1501         case "$src" in
1502         ".")
1503                 case "$file" in
1504                 */*)
1505                         dir=`expr X$file : 'X\(.*\)/'`
1506                         file=`expr X$file : 'X.*/\(.*\)'`
1507                         (cd $dir && . ./$file)
1508                         ;;
1509                 *)
1510                         . ./$file
1511                         ;;
1512                 esac
1513                 ;;
1514         *)
1515                 case "$file" in
1516                 */*)
1517                         dir=`expr X$file : 'X\(.*\)/'`
1518                         file=`expr X$file : 'X.*/\(.*\)'`
1519                         (set x $dir; shift; eval $mkdir_p)
1520                         sh <$src/$dir/$file
1521                         ;;
1522                 *)
1523                         sh <$src/$file
1524                         ;;
1525                 esac
1526                 ;;
1527         esac
1528 done
1529 if test -f $src/config_h.SH; then
1530         if test ! -f config.h; then
1531         : oops, they left it out of MANIFEST, probably, so do it anyway.
1532         . $src/config_h.SH
1533         fi
1534 fi
1535 EOS
1536
1537 : extract files and exit if asked to do so
1538 case "$extractsh" in
1539 true)
1540         case "$realsilent" in
1541         true) ;;
1542         *) exec 1>&4;;
1543         esac
1544         case "$config_sh" in
1545         '') config_sh='config.sh';;
1546         esac
1547         echo " "
1548         echo "Fetching answers from $config_sh..."
1549         cd ..
1550         . $config_sh
1551         test "$override" && . ./optdef.sh
1552         echo " "
1553         . UU/extract
1554         rm -rf UU
1555         echo "Done."
1556         exit 0
1557         ;;
1558 esac
1559
1560 : Eunice requires " " instead of "", can you believe it
1561 echo " "
1562 : Here we go...
1563 echo "Beginning of configuration questions for $package."
1564
1565 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1566
1567 : first determine how to suppress newline on echo command
1568 echo " "
1569 echo "Checking echo to see how to suppress newlines..."
1570 (echo "hi there\c" ; echo " ") >.echotmp
1571 if $contains c .echotmp >/dev/null 2>&1 ; then
1572         echo "...using -n."
1573         n='-n'
1574         c=''
1575 else
1576         cat <<'EOM'
1577 ...using \c
1578 EOM
1579         n=''
1580         c='\c'
1581 fi
1582 echo $n "The star should be here-->$c"
1583 echo '*'
1584 rm -f .echotmp
1585
1586 : Now test for existence of everything in MANIFEST
1587 echo " "
1588 if test -f $rsrc/MANIFEST; then
1589         echo "First let's make sure your kit is complete.  Checking..." >&4
1590         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1591         rm -f missing
1592         tmppwd=`pwd`
1593         for filelist in x??; do
1594                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1595         done
1596         if test -s missing; then
1597                 cat missing >&4
1598                 cat >&4 <<'EOM'
1599
1600 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1601
1602 You have the option of continuing the configuration process, despite the
1603 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1604 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1605 and contact the author (perlbug@perl.com).
1606
1607 EOM
1608                 echo $n "Continue? [n] $c" >&4
1609                 read ans
1610                 case "$ans" in
1611                 y*)
1612                         echo "Continuing..." >&4
1613                         rm -f missing
1614                         ;;
1615                 *)
1616                         echo "ABORTING..." >&4
1617                         kill $$
1618                         ;;
1619                 esac
1620         else
1621                 echo "Looks good..."
1622         fi
1623 else
1624         echo "There is no MANIFEST file.  I hope your kit is complete !"
1625 fi
1626 rm -f missing x??
1627
1628 echo " "
1629 : Find the appropriate value for a newline for tr
1630 if test -n "$DJGPP"; then
1631        trnl='\012'
1632 fi
1633 if test X"$trnl" = X; then
1634         case "`echo foo|tr '\n' x 2>/dev/null`" in
1635         foox) trnl='\n' ;;
1636         esac
1637 fi
1638 if test X"$trnl" = X; then
1639         case "`echo foo|tr '\012' x 2>/dev/null`" in
1640         foox) trnl='\012' ;;
1641         esac
1642 fi
1643 if test X"$trnl" = X; then
1644         cat <<EOM >&2
1645
1646 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1647
1648 EOM
1649         exit 1
1650 fi
1651
1652 : compute the number of columns on the terminal for proper question formatting
1653 case "$COLUMNS" in
1654 '') COLUMNS='80';;
1655 esac
1656
1657 : set up the echo used in my read
1658 myecho="case \"\$xxxm\" in
1659 '') echo $n \"\$rp $c\" >&4;;
1660 *) case \"\$rp\" in
1661         '') echo $n \"[\$xxxm] $c\";;
1662         *)
1663                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1664                         echo \"\$rp\" >&4
1665                         echo $n \"[\$xxxm] $c\" >&4
1666                 else
1667                         echo $n \"\$rp [\$xxxm] $c\" >&4
1668                 fi
1669                 ;;
1670         esac;;
1671 esac"
1672
1673 : now set up to do reads with possible shell escape and default assignment
1674 cat <<EOSC >myread
1675 $startsh
1676 xxxm=\$dflt
1677 $myecho
1678 ans='!'
1679 case "\$fastread" in
1680 yes) case "\$dflt" in
1681         '') ;;
1682         *) ans='';
1683                 case "\$silent-\$rp" in
1684                 true-) ;;
1685                 *) echo " " >&4;;
1686                 esac;;
1687         esac;;
1688 *) case "\$silent" in
1689         true) case "\$rp" in
1690                 '') ans='';;
1691                 esac;;
1692         esac;;
1693 esac
1694 while expr "X\$ans" : "X!" >/dev/null; do
1695         read answ
1696         set x \$xxxm
1697         shift
1698         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1699         case  "\$answ" in
1700         "!")
1701                 sh 1>&4
1702                 echo " "
1703                 $myecho
1704                 ;;
1705         !*)
1706                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1707                 shift
1708                 sh 1>&4 -c "\$*"
1709                 echo " "
1710                 $myecho
1711                 ;;
1712         "\$ans")
1713                 case "\$ans" in
1714                 \\&*)
1715                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1716                         shift
1717                         case "\$1" in
1718                         -d)
1719                                 fastread=yes
1720                                 echo "(OK, I'll run with -d after this question.)" >&4
1721                                 ;;
1722                         -*)
1723                                 echo "*** Sorry, \$1 not supported yet." >&4
1724                                 ;;
1725                         esac
1726                         $myecho
1727                         ans=!
1728                         ;;
1729                 esac;;
1730         *)
1731                 case "\$aok" in
1732                 y)
1733                         echo "*** Substitution done -- please confirm."
1734                         xxxm="\$ans"
1735                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1736                         xxxm="\$ans"
1737                         ans=!
1738                         ;;
1739                 *)
1740                         echo "*** Error -- try again."
1741                         ans=!
1742                         ;;
1743                 esac
1744                 $myecho
1745                 ;;
1746         esac
1747         case "\$ans\$xxxm\$nostick" in
1748         '')
1749                 ans=!
1750                 $myecho
1751                 ;;
1752         esac
1753 done
1754 case "\$ans" in
1755 '') ans="\$xxxm";;
1756 esac
1757 EOSC
1758
1759 : create .config dir to save info across Configure sessions
1760 test -d ../.config || mkdir ../.config
1761 cat >../.config/README <<EOF
1762 This directory created by Configure to save information that should
1763 persist across sessions for $package.
1764
1765 You may safely delete it if you wish.
1766 EOF
1767
1768 xpatchlevel=`awk '/define[      ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1769 case "$usedevel" in
1770 $define|true|[yY]*) ;;
1771 *) case "$xpatchlevel" in
1772    *[13579])
1773         cat >&4 <<EOH
1774 *** WHOA THERE!!! ***
1775
1776     This is an UNSTABLE DEVELOPMENT release.
1777     (The patchlevel, $xpatchlevel, is odd--as opposed to even,
1778      and that signifies a development release.  If you want a
1779      maintenance release, you want an even-numbered release.)
1780
1781     Do ***NOT*** install this into production use.
1782     Data corruption and crashes are possible.
1783
1784     It is most seriously suggested that you do not continue any further
1785     unless you want to help in developing and debugging Perl.
1786
1787 EOH
1788         rp='Do you really want to continue?'
1789         dflt='n'
1790         . ./myread
1791         case "$ans" in
1792         [yY]) echo >&4 "Okay, continuing." ;;
1793         *) echo >&4 "Okay, bye."
1794            exit 1
1795            ;;
1796         esac
1797         ;;
1798     esac
1799     ;;
1800 esac
1801
1802 : general instructions
1803 needman=true
1804 firsttime=true
1805 user=`(logname) 2>/dev/null`
1806 case "$user" in
1807 '') user=`whoami 2>&1`;;
1808 esac
1809 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1810         firsttime=false
1811         echo " "
1812         rp='Would you like to see the instructions?'
1813         dflt=n
1814         . ./myread
1815         case "$ans" in
1816         [yY]*) ;;
1817         *) needman=false;;
1818         esac
1819 fi
1820 if $needman; then
1821         cat <<EOH
1822
1823 This installation shell script will examine your system and ask you questions
1824 to determine how the perl5 package should be installed. If you get
1825 stuck on a question, you may use a ! shell escape to start a subshell or
1826 execute a command.  Many of the questions will have default answers in square
1827 brackets; typing carriage return will give you the default.
1828
1829 On some of the questions which ask for file or directory names you are allowed
1830 to use the ~name construct to specify the login directory belonging to "name",
1831 even if you don't have a shell which knows about that.  Questions where this is
1832 allowed will be marked "(~name ok)".
1833
1834 EOH
1835         rp=''
1836         dflt='Type carriage return to continue'
1837         . ./myread
1838         cat <<'EOH'
1839
1840 The prompter used in this script allows you to use shell variables and
1841 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1842 in the default answer, as if the default line was a set of arguments given to a
1843 script shell.  This means you may also use $* to repeat the whole default line,
1844 so you do not have to re-type everything to add something to the default.
1845
1846 Everytime there is a substitution, you will have to confirm.  If there is an
1847 error (e.g. an unmatched backtick), the default answer will remain unchanged
1848 and you will be prompted again.
1849
1850 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1851 the questions and use the computed defaults (or the previous answers if there
1852 was already a config.sh file). Type 'Configure -h' for a list of options.
1853 You may also start interactively and then answer '& -d' at any prompt to turn
1854 on the non-interactive behaviour for the remainder of the execution.
1855
1856 EOH
1857         . ./myread
1858         cat <<EOH
1859
1860 Much effort has been expended to ensure that this shell script will run on any
1861 Unix system.  If despite that it blows up on yours, your best bet is to edit
1862 Configure and run it again.  If you can't run Configure for some reason,
1863 you'll have to generate a config.sh file by hand.  Whatever problems you
1864 have, let me (perlbug@perl.com) know how I blew it.
1865
1866 This installation script affects things in two ways:
1867
1868 1) it may do direct variable substitutions on some of the files included
1869    in this kit.
1870 2) it builds a config.h file for inclusion in C programs.  You may edit
1871    any of these files as the need arises after running this script.
1872
1873 If you make a mistake on a question, there is no easy way to back up to it
1874 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1875 files.  Configure will offer to let you do this before it runs the SH files.
1876
1877 EOH
1878         dflt='Type carriage return to continue'
1879         . ./myread
1880         case "$firsttime" in
1881         true) echo $user >>../.config/instruct;;
1882         esac
1883 fi
1884
1885 : find out where common programs are
1886 echo " "
1887 echo "Locating common programs..." >&4
1888 cat <<EOSC >loc
1889 $startsh
1890 case \$# in
1891 0) exit 1;;
1892 esac
1893 thing=\$1
1894 shift
1895 dflt=\$1
1896 shift
1897 for dir in \$*; do
1898         case "\$thing" in
1899         .)
1900         if test -d \$dir/\$thing; then
1901                 echo \$dir
1902                 exit 0
1903         fi
1904         ;;
1905         *)
1906         for thisthing in \$dir/\$thing; do
1907                 : just loop through to pick last item
1908         done
1909         if test -f \$thisthing; then
1910                 echo \$thisthing
1911                 exit 0
1912         elif test -f \$dir/\$thing.exe; then
1913                 if test -n "$DJGPP"; then
1914                         echo \$dir/\$thing.exe
1915                 else
1916                         : on Eunice apparently
1917                         echo \$dir/\$thing
1918                 fi
1919                 exit 0
1920         fi
1921         ;;
1922         esac
1923 done
1924 echo \$dflt
1925 exit 1
1926 EOSC
1927 chmod +x loc
1928 $eunicefix loc
1929 loclist="
1930 awk
1931 cat
1932 comm
1933 cp
1934 echo
1935 expr
1936 grep
1937 ls
1938 make
1939 mkdir
1940 rm
1941 sed
1942 sort
1943 touch
1944 tr
1945 uniq
1946 "
1947 trylist="
1948 Mcc
1949 ar
1950 byacc
1951 cpp
1952 csh
1953 date
1954 egrep
1955 gzip
1956 less
1957 ln
1958 more
1959 nm
1960 nroff
1961 pg
1962 test
1963 uname
1964 zip
1965 "
1966 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1967 pth="$pth /lib /usr/lib"
1968 for file in $loclist; do
1969         eval xxx=\$$file
1970         case "$xxx" in
1971         /*|?:[\\/]*)
1972                 if test -f "$xxx"; then
1973                         : ok
1974                 else
1975                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1976                         xxx=`./loc $file $file $pth`
1977                 fi
1978                 ;;
1979         '') xxx=`./loc $file $file $pth`;;
1980         *) xxx=`./loc $xxx $xxx $pth`;;
1981         esac
1982         eval $file=$xxx
1983         eval _$file=$xxx
1984         case "$xxx" in
1985         /*)
1986                 echo $file is in $xxx.
1987                 ;;
1988         ?:[\\/]*)
1989                 echo $file is in $xxx.
1990                 ;;
1991         *)
1992                 echo "I don't know where '$file' is, and my life depends on it." >&4
1993                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1994                 exit 1
1995                 ;;
1996         esac
1997 done
1998 echo " "
1999 echo "Don't worry if any of the following aren't found..."
2000 say=offhand
2001 for file in $trylist; do
2002         eval xxx=\$$file
2003         case "$xxx" in
2004         /*|?:[\\/]*)
2005                 if test -f "$xxx"; then
2006                         : ok
2007                 else
2008                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2009                         xxx=`./loc $file $file $pth`
2010                 fi
2011                 ;;
2012         '') xxx=`./loc $file $file $pth`;;
2013         *) xxx=`./loc $xxx $xxx $pth`;;
2014         esac
2015         eval $file=$xxx
2016         eval _$file=$xxx
2017         case "$xxx" in
2018         /*)
2019                 echo $file is in $xxx.
2020                 ;;
2021         ?:[\\/]*)
2022                 echo $file is in $xxx.
2023                 ;;
2024         *)
2025                 echo "I don't see $file out there, $say."
2026                 say=either
2027                 ;;
2028         esac
2029 done
2030 case "$egrep" in
2031 egrep)
2032         echo "Substituting grep for egrep."
2033         egrep=$grep
2034         ;;
2035 esac
2036 case "$ln" in
2037 ln)
2038         echo "Substituting cp for ln."
2039         ln=$cp
2040         ;;
2041 esac
2042 case "$test" in
2043 test)
2044         echo "Hopefully test is built into your sh."
2045         ;;
2046 *)
2047         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2048                 echo "Using the test built into your sh."
2049                 test=test
2050                 _test=test
2051         fi
2052         ;;
2053 esac
2054 case "$echo" in
2055 echo)
2056         echo "Hopefully echo is built into your sh."
2057         ;;
2058 '') ;;
2059 *)
2060         echo " "
2061 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2062         $echo $n "hi there$c" >foo1
2063         echo $n "hi there$c" >foo2
2064         if cmp foo1 foo2 >/dev/null 2>&1; then
2065                 echo "They are compatible.  In fact, they may be identical."
2066         else
2067                 case "$n" in
2068                 '-n') n='' c='\c';;
2069                 *) n='-n' c='';;
2070                 esac
2071                 cat <<FOO
2072 They are not compatible!  You are probably running ksh on a non-USG system.
2073 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2074 have echo built in and we may have to run some Bourne shell scripts.  That
2075 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2076
2077 FOO
2078                 $echo $n "The star should be here-->$c"
2079                 $echo "*"
2080         fi
2081         $rm -f foo1 foo2
2082         ;;
2083 esac
2084
2085 cat <<EOS >checkcc
2086 $startsh
2087 EOS
2088 cat <<'EOSC' >>checkcc
2089 case "$cc" in
2090 '') ;;
2091 *)  $rm -f try try.*
2092     $cat >try.c <<EOM
2093 int main(int argc, char *argv[]) {
2094   return 0;
2095 }
2096 EOM
2097     if $cc -o try try.c; then
2098        :
2099     else
2100         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2101         despair=yes
2102         trygcc=yes
2103         case "$cc" in
2104         *gcc*) trygcc=no ;;
2105         esac
2106         case "`$cc -v -c try.c 2>&1`" in
2107         *gcc*) trygcc=no ;;
2108         esac
2109         if $test X"$trygcc" = Xyes; then
2110             if gcc -o try -c try.c; then
2111                 echo " "
2112                 echo "You seem to have a working gcc, though." >&4
2113                 rp="Would you like to use it?"
2114                 dflt=y
2115                 if $test -f myread; then
2116                     . ./myread
2117                 else
2118                     if $test -f UU/myread; then
2119                         . ./UU/myread
2120                     else
2121                         echo "Cannot find myread, sorry.  Aborting." >&2
2122                         exit 1
2123                     fi
2124                 fi  
2125                 case "$ans" in
2126                 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2127                 esac
2128             fi
2129         fi
2130         if $test X"$despair" = Xyes; then
2131             echo "You need to find a working C compiler." >&4
2132             echo "I cannot continue any further, aborting." >&4
2133             exit 1
2134         fi
2135     fi
2136     $rm -f try try.*
2137     ;;
2138 esac
2139 EOSC
2140
2141 : determine whether symbolic links are supported
2142 echo " "
2143 $touch blurfl
2144 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2145         echo "Symbolic links are supported." >&4
2146         lns="$ln -s"
2147 else
2148         echo "Symbolic links are NOT supported." >&4
2149         lns="$ln"
2150 fi
2151 $rm -f blurfl sym
2152
2153 : see whether [:lower:] and [:upper:] are supported character classes
2154 echo " "
2155 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2156 ABYZ)
2157         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2158         up='[:upper:]'
2159         low='[:lower:]'
2160         ;;
2161 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2162         # (0xc9 and 0xd1), therefore that is a nice testing point.
2163         if test "X$up" = X -o "X$low" = X; then
2164             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2165             ij) up='[A-Z]'
2166                 low='[a-z]'
2167                 ;;
2168             esac
2169         fi
2170         if test "X$up" = X -o "X$low" = X; then
2171             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2172             ij) up='A-Z'
2173                 low='a-z'
2174                 ;;
2175             esac
2176         fi
2177         if test "X$up" = X -o "X$low" = X; then
2178             case "`echo IJ | od -x 2>/dev/null`" in
2179             *C9D1*|*c9d1*)
2180                 echo "Hey, this might be EBCDIC." >&4
2181                 if test "X$up" = X -o "X$low" = X; then
2182                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2183                     ij) up='[A-IJ-RS-Z]'
2184                         low='[a-ij-rs-z]'
2185                         ;;
2186                     esac
2187                 fi
2188                 if test "X$up" = X -o "X$low" = X; then
2189                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2190                     ij) up='A-IJ-RS-Z'
2191                         low='a-ij-rs-z'
2192                         ;;
2193                     esac
2194                 fi
2195                 ;;
2196             esac
2197         fi
2198 esac
2199 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2200 ij)
2201     echo "Using $up and $low to convert case." >&4
2202     ;;
2203 *)
2204     echo "I don't know how to translate letters from upper to lower case." >&4
2205     echo "Your tr is not acting any way I know of." >&4
2206     exit 1
2207     ;;
2208 esac
2209 : set up the translation script tr, must be called with ./tr of course
2210 cat >tr <<EOSC
2211 $startsh
2212 case "\$1\$2" in
2213 '[A-Z][a-z]') exec $tr '$up' '$low';;
2214 '[a-z][A-Z]') exec $tr '$low' '$up';;
2215 esac
2216 exec $tr "\$@"
2217 EOSC
2218 chmod +x tr
2219 $eunicefix tr
2220
2221 : Try to determine whether config.sh was made on this system
2222 case "$config_sh" in
2223 '')
2224 myuname=`$uname -a 2>/dev/null`
2225 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2226 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2227 # because the A-Z/a-z are not consecutive.
2228 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2229         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2230 newmyuname="$myuname"
2231 dflt=n
2232 case "$knowitall" in
2233 '')
2234         if test -f ../config.sh; then
2235                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2236                         eval "`grep myuname= ../config.sh`"
2237                 fi
2238                 if test "X$myuname" = "X$newmyuname"; then
2239                         dflt=y
2240                 fi
2241         fi
2242         ;;
2243 *) dflt=y;;
2244 esac
2245
2246 : Get old answers from old config file if Configure was run on the
2247 : same system, otherwise use the hints.
2248 hint=default
2249 cd ..
2250 if test -f config.sh; then
2251         echo " "
2252         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2253         . UU/myread
2254         case "$ans" in
2255         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2256         *)  echo "Fetching default answers from your old config.sh file..." >&4
2257                 tmp_n="$n"
2258                 tmp_c="$c"
2259                 tmp_sh="$sh"
2260                 . ./config.sh
2261                 cp config.sh UU
2262                 n="$tmp_n"
2263                 c="$tmp_c"
2264                 : Older versions did not always set $sh.  Catch re-use of such
2265                 : an old config.sh.
2266                 case "$sh" in
2267                 '') sh="$tmp_sh" ;;
2268                 esac
2269                 hint=previous
2270                 ;;
2271         esac
2272 fi
2273 . ./UU/checkcc
2274 if test ! -f config.sh; then
2275         $cat <<EOM
2276
2277 First time through, eh?  I have some defaults handy for some systems
2278 that need some extra help getting the Configure answers right:
2279
2280 EOM
2281         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2282         dflt=''
2283         : Half the following guesses are probably wrong... If you have better
2284         : tests or hints, please send them to perlbug@perl.com
2285         : The metaconfig authors would also appreciate a copy...
2286         $test -f /irix && osname=irix
2287         $test -f /xenix && osname=sco_xenix
2288         $test -f /dynix && osname=dynix
2289         $test -f /dnix && osname=dnix
2290         $test -f /lynx.os && osname=lynxos
2291         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2292         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2293         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2294         $test -f /bin/mips && /bin/mips && osname=mips
2295         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2296                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2297         $test -d /usr/apollo/bin && osname=apollo
2298         $test -f /etc/saf/_sactab && osname=svr4
2299         $test -d /usr/include/minix && osname=minix
2300         if $test -d /MachTen -o -d /MachTen_Folder; then
2301                 osname=machten
2302                 if $test -x /sbin/version; then
2303                         osvers=`/sbin/version | $awk '{print $2}' |
2304                         $sed -e 's/[A-Za-z]$//'`
2305                 elif $test -x /usr/etc/version; then
2306                         osvers=`/usr/etc/version | $awk '{print $2}' |
2307                         $sed -e 's/[A-Za-z]$//'`
2308                 else
2309                         osvers="$2.$3"
2310                 fi
2311         fi
2312
2313         $test -f /sys/posix.dll &&
2314                 $test -f /usr/bin/what &&
2315                 set X `/usr/bin/what /sys/posix.dll` &&
2316                 $test "$3" = UWIN &&
2317                 osname=uwin &&
2318                 osvers="$5"
2319
2320         if $test -f $uname; then
2321                 set X $myuname
2322                 shift
2323
2324                 case "$5" in
2325                 fps*) osname=fps ;;
2326                 mips*)
2327                         case "$4" in
2328                         umips) osname=umips ;;
2329                         *) osname=mips ;;
2330                         esac;;
2331                 [23]100) osname=mips ;;
2332                 next*) osname=next ;;
2333                 i386*)
2334                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2335                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2336                                 osname='sco'
2337                                 osvers=$tmp
2338                         elif $test -f /etc/kconfig; then
2339                                 osname=isc
2340                                 if test "$lns" = "$ln -s"; then
2341                                         osvers=4
2342                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2343                                         osvers=3
2344                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2345                                         osvers=2
2346                                 fi
2347                         fi
2348                         tmp=''
2349                         ;;
2350                 pc*)
2351                         if test -n "$DJGPP"; then
2352                                 osname=dos
2353                                 osvers=djgpp
2354                         fi
2355                         ;;
2356                 esac
2357
2358                 case "$1" in
2359                 aix) osname=aix
2360                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2361                         case "$tmp" in
2362                         'not found') osvers="$4"."$3" ;;
2363                         '<3240'|'<>3240') osvers=3.2.0 ;;
2364                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2365                         '=3250'|'>3250') osvers=3.2.5 ;;
2366                         *) osvers=$tmp;;
2367                         esac
2368                         ;;
2369                 bsd386) osname=bsd386
2370                         osvers=`$uname -r`
2371                         ;;
2372                 cygwin*) osname=cygwin
2373                         osvers="$3"
2374                         ;;
2375                 *dc.osx) osname=dcosx
2376                         osvers="$3"
2377                         ;;
2378                 dnix) osname=dnix
2379                         osvers="$3"
2380                         ;;
2381                 domainos) osname=apollo
2382                         osvers="$3"
2383                         ;;
2384                 dgux) osname=dgux 
2385                         osvers="$3"
2386                         ;;
2387                 dynixptx*) osname=dynixptx
2388                         osvers=`echo "$4"|sed 's/^v//'`
2389                         ;;
2390                 freebsd) osname=freebsd 
2391                         osvers="$3" ;;
2392                 genix) osname=genix ;;
2393                 hp*) osname=hpux 
2394                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2395                         ;;
2396                 irix*) osname=irix
2397                         case "$3" in
2398                         4*) osvers=4 ;;
2399                         5*) osvers=5 ;;
2400                         *)      osvers="$3" ;;
2401                         esac
2402                         ;;
2403                 linux) osname=linux
2404                         case "$3" in
2405                         *)      osvers="$3" ;;
2406                         esac
2407                         ;;
2408                 MiNT) osname=mint
2409                         ;;
2410                 netbsd*) osname=netbsd
2411                         osvers="$3"
2412                         ;;
2413                 news-os) osvers="$3"
2414                         case "$3" in
2415                         4*) osname=newsos4 ;;
2416                         *) osname=newsos ;;
2417                         esac
2418                         ;;
2419                 next*) osname=next ;;
2420                 POSIX-BC | posix-bc ) osname=posix-bc
2421                         osvers="$3"
2422                         ;;
2423                 powerux | power_ux | powermax_os | powermaxos | \
2424                 powerunix | power_unix) osname=powerux
2425                         osvers="$3"
2426                         ;;
2427                 qnx) osname=qnx
2428                         osvers="$4"
2429                         ;;
2430                 solaris) osname=solaris
2431                         case "$3" in
2432                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2433                         *)      osvers="$3" ;;
2434                         esac
2435                         ;;
2436                 sunos) osname=sunos
2437                         case "$3" in
2438                         5*) osname=solaris
2439                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2440                         *)      osvers="$3" ;;
2441                         esac
2442                         ;;
2443                 titanos) osname=titanos
2444                         case "$3" in
2445                         1*) osvers=1 ;;
2446                         2*) osvers=2 ;;
2447                         3*) osvers=3 ;;
2448                         4*) osvers=4 ;;
2449                         *)      osvers="$3" ;;
2450                         esac
2451                         ;;
2452                 ultrix) osname=ultrix
2453                         osvers="$3"
2454                         ;;
2455                 osf1|mls+)      case "$5" in
2456                                 alpha)
2457                                         osname=dec_osf
2458                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2459                                         case "$osvers" in
2460                                         [1-9].[0-9]*) ;;
2461                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2462                                         esac
2463                                         ;;
2464                         hp*)    osname=hp_osf1  ;;
2465                         mips)   osname=mips_osf1 ;;
2466                         esac
2467                         ;;
2468                 unixware) osname=svr5
2469                         osvers="$4"
2470                         ;;
2471                 uts) osname=uts
2472                         osvers="$3"
2473                         ;;
2474                 $2) case "$osname" in
2475                         *isc*) ;;
2476                         *freebsd*) ;;
2477                         svr*)
2478                                 : svr4.x or possibly later
2479                                 case "svr$3" in 
2480                                 ${osname}*)
2481                                         osname=svr$3
2482                                         osvers=$4
2483                                         ;;
2484                                 esac
2485                                 case "$osname" in
2486                                 svr4.0)
2487                                         : Check for ESIX
2488                                         if test -f /stand/boot ; then
2489                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2490                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2491                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2492                                                         if test -n "$isesix"; then
2493                                                                 osname=esix4
2494                                                         fi
2495                                                 fi
2496                                         fi
2497                                         ;;
2498                                 esac
2499                                 ;;
2500                         *)      if test -f /etc/systemid; then
2501                                         osname=sco
2502                                         set `echo $3 | $sed 's/\./ /g'` $4
2503                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2504                                                 osvers=$1.$2.$3
2505                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2506                                                 osvers=$1.$2
2507                                         elif $test -f $src/hints/sco_$1.sh; then
2508                                                 osvers=$1
2509                                         fi
2510                                 else
2511                                         case "$osname" in
2512                                         '') : Still unknown.  Probably a generic Sys V.
2513                                                 osname="sysv"
2514                                                 osvers="$3"
2515                                                 ;;
2516                                         esac
2517                                 fi
2518                                 ;;
2519                         esac
2520                         ;;
2521                 *)      case "$osname" in
2522                         '') : Still unknown.  Probably a generic BSD.
2523                                 osname="$1"
2524                                 osvers="$3"
2525                                 ;;
2526                         esac
2527                         ;;
2528                 esac
2529         else
2530                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2531                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2532                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2533                                 osname=news_os
2534                         fi
2535                         $rm -f UU/kernel.what
2536                 elif test -d c:/.; then
2537                         set X $myuname
2538                         osname=os2
2539                         osvers="$5"
2540                 fi
2541         fi
2542         
2543         : Now look for a hint file osname_osvers, unless one has been
2544         : specified already.
2545         case "$hintfile" in
2546         ''|' ')
2547                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2548                 : Also try without trailing minor version numbers.
2549                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2550                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2551                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2552                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2553                 case "$file" in
2554                 '') dflt=none ;;
2555                 *)  case "$osvers" in
2556                         '') dflt=$file
2557                                 ;;
2558                         *)  if $test -f $src/hints/$file.sh ; then
2559                                         dflt=$file
2560                                 elif $test -f $src/hints/$xfile.sh ; then
2561                                         dflt=$xfile
2562                                 elif $test -f $src/hints/$xxfile.sh ; then
2563                                         dflt=$xxfile
2564                                 elif $test -f $src/hints/$xxxfile.sh ; then
2565                                         dflt=$xxxfile
2566                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2567                                         dflt=$xxxxfile
2568                                 elif $test -f "$src/hints/${osname}.sh" ; then
2569                                         dflt="${osname}"
2570                                 else
2571                                         dflt=none
2572                                 fi
2573                                 ;;
2574                         esac
2575                         ;;
2576                 esac
2577                 if $test -f Policy.sh ; then
2578                         case "$dflt" in
2579                         *Policy*) ;;
2580                         none) dflt="Policy" ;;
2581                         *) dflt="Policy $dflt" ;;
2582                         esac
2583                 fi
2584                 ;;
2585         *)
2586                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2587                 ;;
2588         esac
2589
2590         if $test -f Policy.sh ; then
2591                 $cat <<EOM
2592
2593 There's also a Policy hint file available, which should make the
2594 site-specific (policy) questions easier to answer.
2595 EOM
2596
2597         fi
2598
2599         $cat <<EOM
2600
2601 You may give one or more space-separated answers, or "none" if appropriate.
2602 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2603 is a good thing.  DO NOT give a wrong version or a wrong OS.
2604
2605 EOM
2606
2607         rp="Which of these apply, if any?"
2608         . UU/myread
2609         tans=$ans
2610         for file in $tans; do
2611                 if $test X$file = XPolicy -a -f Policy.sh; then
2612                         . Policy.sh
2613                         $cat Policy.sh >> UU/config.sh
2614                 elif $test -f $src/hints/$file.sh; then
2615                         . $src/hints/$file.sh
2616                         $cat $src/hints/$file.sh >> UU/config.sh
2617                 elif $test X$tans = X -o X$tans = Xnone ; then
2618                         : nothing
2619                 else
2620                         : Give one chance to correct a possible typo.
2621                         echo "$file.sh does not exist"
2622                         dflt=$file
2623                         rp="hint to use instead?"
2624                         . UU/myread
2625                         for file in $ans; do
2626                                 if $test -f "$src/hints/$file.sh"; then
2627                                         . $src/hints/$file.sh
2628                                         $cat $src/hints/$file.sh >> UU/config.sh
2629                                 elif $test X$ans = X -o X$ans = Xnone ; then
2630                                         : nothing
2631                                 else
2632                                         echo "$file.sh does not exist -- ignored."
2633                                 fi
2634                         done
2635                 fi
2636         done
2637
2638         hint=recommended
2639         : Remember our hint file for later.
2640         if $test -f "$src/hints/$file.sh" ; then
2641                 hintfile="$file"
2642         else
2643                 hintfile=''
2644         fi
2645 fi
2646 cd UU
2647 ;;
2648 *)
2649         echo " "
2650         echo "Fetching default answers from $config_sh..." >&4
2651         tmp_n="$n"
2652         tmp_c="$c"
2653         cd ..
2654         cp $config_sh config.sh 2>/dev/null
2655         chmod +w config.sh
2656         . ./config.sh
2657         cd UU
2658         cp ../config.sh .
2659         n="$tmp_n"
2660         c="$tmp_c"
2661         hint=previous
2662         ;;
2663 esac
2664 test "$override" && . ./optdef.sh
2665 myuname="$newmyuname"
2666
2667 : Restore computed paths
2668 for file in $loclist $trylist; do
2669         eval $file="\$_$file"
2670 done
2671
2672 cat << EOM
2673
2674 Configure uses the operating system name and version to set some defaults.
2675 The default value is probably right if the name rings a bell. Otherwise,
2676 since spelling matters for me, either accept the default or answer "none"
2677 to leave it blank.
2678
2679 EOM
2680 case "$osname" in
2681         ''|' ')
2682                 case "$hintfile" in
2683                 ''|' '|none) dflt=none ;;
2684                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2685                 esac
2686                 ;;
2687         *) dflt="$osname" ;;
2688 esac
2689 rp="Operating system name?"
2690 . ./myread
2691 case "$ans" in
2692 none)  osname='' ;;
2693 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2694 esac
2695 echo " "
2696 case "$osvers" in
2697         ''|' ')
2698                 case "$hintfile" in
2699                 ''|' '|none) dflt=none ;;
2700                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2701                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2702                         case "$dflt" in
2703                         ''|' ') dflt=none ;;
2704                         esac
2705                         ;;
2706                 esac
2707                 ;;
2708         *) dflt="$osvers" ;;
2709 esac
2710 rp="Operating system version?"
2711 . ./myread
2712 case "$ans" in
2713 none)  osvers='' ;;
2714 *) osvers="$ans" ;;
2715 esac
2716
2717
2718 . ./posthint.sh
2719
2720 : who configured the system
2721 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2722 cf_by=`(logname) 2>/dev/null`
2723 case "$cf_by" in
2724 "")
2725         cf_by=`(whoami) 2>/dev/null`
2726         case "$cf_by" in
2727         "") cf_by=unknown ;;
2728         esac ;;
2729 esac
2730
2731 : set up the script used to warn in case of inconsistency
2732 cat <<EOS >whoa
2733 $startsh
2734 EOS
2735 cat <<'EOSC' >>whoa
2736 dflt=y
2737 echo " "
2738 echo "*** WHOA THERE!!! ***" >&4
2739 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2740 rp="    Keep the $hint value?"
2741 . ./myread
2742 case "$ans" in
2743 y) td=$was; tu=$was;;
2744 esac
2745 EOSC
2746
2747 : function used to set $1 to $val
2748 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2749 case "$val$was" in
2750 $define$undef) . ./whoa; eval "$var=\$td";;
2751 $undef$define) . ./whoa; eval "$var=\$tu";;
2752 *) eval "$var=$val";;
2753 esac'
2754
2755 case "$usethreads" in
2756 $define|true|[yY]*)     dflt='y';;
2757 *) dflt='n';;
2758 esac
2759 cat <<EOM
2760
2761 Perl can be built to take advantage of threads on some systems.
2762 To do so, Configure can be run with -Dusethreads.
2763
2764 Note that threading is a highly experimental feature, and
2765 some known race conditions still remain.  If you choose to try
2766 it, be very sure to not actually deploy it for production
2767 purposes.  README.threads has more details, and is required
2768 reading if you enable threads.
2769
2770 If this doesn't make any sense to you, just accept the default '$dflt'.
2771 EOM
2772 rp='Build a threading Perl?'
2773 . ./myread
2774 case "$ans" in
2775 y|Y)    val="$define" ;;
2776 *)      val="$undef" ;;
2777 esac
2778 set usethreads
2779 eval $setvar
2780
2781 case "$usethreads" in
2782 $define)
2783         $cat <<EOM
2784
2785 As of 5.5.640, Perl has two different internal threading implementations,
2786 the 5.005 version (5005threads) and an interpreter-based version
2787 (ithreads) that has one interpreter per thread.  Both are very 
2788 experimental.  This arrangement exists to help developers work out
2789 which one is better.
2790
2791 If you're a casual user, you probably don't want interpreter-threads
2792 at this time.  There doesn't yet exist a way to create threads from
2793 within Perl in this model, i.e., "use Thread;" will NOT work.
2794 EOM
2795         : Default to ithreads unless overridden on command line or with
2796         : old config.sh
2797         dflt='y'
2798         case "$use5005threads" in
2799                 $define|true|[yY]*) dflt='n';;
2800         esac
2801         case "$useithreads" in
2802                 $undef|false|[nN]*) dflt='n';;
2803         esac
2804         rp='Use interpreter-based ithreads?'
2805         . ./myread
2806         case "$ans" in
2807         y|Y)    val="$define" ;;
2808         *)      val="$undef" ;;
2809         esac
2810         set useithreads
2811         eval $setvar
2812         : Now set use5005threads to the opposite value.
2813         case "$useithreads" in
2814         $define) val="$undef" ;;
2815         *) val="$define" ;;
2816         esac
2817         set use5005threads
2818         eval $setvar
2819         ;;
2820 *)
2821         useithreads="$undef"
2822         use5005threads="$undef"
2823         ;;
2824 esac
2825
2826 case "$d_oldpthreads" in
2827 '')     : Configure tests would be welcome here.  For now, assume undef.
2828         val="$undef" ;;
2829 *)      val="$d_oldpthreads" ;;
2830 esac
2831 set d_oldpthreads
2832 eval $setvar
2833
2834
2835 case "$usethreads" in
2836 "$define"|true|[yY]*)
2837 : Look for a hint-file generated 'call-back-unit'.  If the
2838 : user has specified that a threading perl is to be built,
2839 : we may need to set or change some other defaults.
2840         if $test -f usethreads.cbu; then
2841                 echo "Your platform has some specific hints for threaded builds, using them..."
2842                 . ./usethreads.cbu
2843         else
2844                 $cat <<EOM
2845 (Your platform doesn't have any specific hints for threaded builds.
2846  Assuming POSIX threads, then.)
2847 EOM
2848         fi
2849         ;;
2850 esac
2851
2852 cat <<EOM
2853
2854 Perl can be built so that multiple Perl interpreters can coexist
2855 within the same Perl executable.
2856 EOM
2857
2858 case "$useithreads" in
2859 $define)
2860         cat <<EOM
2861 This multiple interpreter support is required for interpreter-based threads.
2862 EOM
2863         val="$define"
2864         ;;
2865 *)      case "$usemultiplicity" in
2866         $define|true|[yY]*)     dflt='y';;
2867         *) dflt='n';;
2868         esac
2869         echo " "
2870         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2871         rp='Build Perl for multiplicity?'
2872         . ./myread
2873         case "$ans" in
2874         y|Y)    val="$define" ;;
2875         *)      val="$undef" ;;
2876         esac
2877         ;;
2878 esac
2879 set usemultiplicity
2880 eval $setvar
2881
2882 : determine where manual pages are on this system
2883 echo " "
2884 case "$sysman" in
2885 '') 
2886         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2887         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2888         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2889         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2890         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2891         sysman=`./loc . /usr/man/man1 $syspath`
2892         ;;
2893 esac
2894 if $test -d "$sysman"; then
2895         echo "System manual is in $sysman." >&4
2896 else
2897         echo "Could not find manual pages in source form." >&4
2898 fi
2899
2900 : see what memory models we can support
2901 case "$models" in
2902 '')
2903         $cat >pdp11.c <<'EOP'
2904 int main() {
2905 #ifdef pdp11
2906         exit(0);
2907 #else
2908         exit(1);
2909 #endif
2910 }
2911 EOP
2912         case "$cc" in
2913         '') modelcc="$cc" ;;
2914         *) modelcc="cc" ;;
2915         esac
2916         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2917         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2918                 dflt='unsplit split'
2919         else
2920                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2921                 case "$tans" in
2922                 X) dflt='none';;
2923                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2924                                 dflt='small'
2925                         else
2926                                 dflt=''
2927                         fi
2928                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2929                                 dflt="$dflt medium"
2930                         fi
2931                         if $test -d /lib/large || $test -d /usr/lib/large; then
2932                                 dflt="$dflt large"
2933                         fi
2934                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2935                                 dflt="$dflt huge"
2936                         fi
2937                 esac
2938         fi;;
2939 *) dflt="$models";;
2940 esac
2941 $cat <<EOM
2942  
2943 Some systems have different model sizes.  On most systems they are called
2944 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2945 split.  If your system doesn't support different memory models, say "none".
2946 If you wish to force everything to one memory model, say "none" here and
2947 put the appropriate flags later when it asks you for other cc and ld flags.
2948 Venix systems may wish to put "none" and let the compiler figure things out.
2949 (In the following question multiple model names should be space separated.)
2950
2951 The default for most systems is "none".
2952
2953 EOM
2954 rp="Which memory models are supported?"
2955 . ./myread
2956 models="$ans"
2957
2958 case "$models" in
2959 none)
2960         small=''
2961         medium=''
2962         large=''
2963         huge=''
2964         unsplit=''
2965         split=''
2966         ;;
2967 *split)
2968         case "$split" in
2969         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2970                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2971                         dflt='-i'
2972                 else
2973                         dflt='none'
2974                 fi;;
2975         *) dflt="$split";;
2976         esac
2977         rp="What flag indicates separate I and D space?"
2978         . ./myread
2979         tans="$ans"
2980         case "$tans" in
2981         none) tans='';;
2982         esac
2983         split="$tans"
2984         unsplit='';;
2985 *large*|*small*|*medium*|*huge*)
2986         case "$models" in
2987         *large*)
2988                 case "$large" in
2989                 '') dflt='-Ml';;
2990                 *) dflt="$large";;
2991                 esac
2992         rp="What flag indicates large model?"
2993         . ./myread
2994         tans="$ans"
2995         case "$tans" in
2996         none) tans='';
2997         esac
2998         large="$tans";;
2999         *) large='';;
3000         esac
3001         case "$models" in
3002         *huge*) case "$huge" in
3003                 '') dflt='-Mh';;
3004                 *) dflt="$huge";;
3005                 esac
3006                 rp="What flag indicates huge model?"
3007                 . ./myread
3008                 tans="$ans"
3009                 case "$tans" in
3010                 none) tans='';
3011                 esac
3012                 huge="$tans";;
3013         *) huge="$large";;
3014         esac
3015         case "$models" in
3016         *medium*) case "$medium" in
3017                 '') dflt='-Mm';;
3018                 *) dflt="$medium";;
3019                 esac
3020                 rp="What flag indicates medium model?"
3021                 . ./myread
3022                 tans="$ans"
3023                 case "$tans" in
3024                 none) tans='';
3025                 esac
3026                 medium="$tans";;
3027         *) medium="$large";;
3028         esac
3029         case "$models" in
3030         *small*) case "$small" in
3031                 '') dflt='none';;
3032                 *) dflt="$small";;
3033                 esac
3034                 rp="What flag indicates small model?"
3035                 . ./myread
3036                 tans="$ans"
3037                 case "$tans" in
3038                 none) tans='';
3039                 esac
3040                 small="$tans";;
3041         *) small='';;
3042         esac
3043         ;;
3044 *)
3045         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3046         ;;
3047 esac
3048 $rm -f pdp11.* pdp11
3049
3050 : make some quick guesses about what we are up against
3051 echo " "
3052 $echo $n "Hmm...  $c"
3053 echo exit 1 >bsd
3054 echo exit 1 >usg
3055 echo exit 1 >v7
3056 echo exit 1 >osf1
3057 echo exit 1 >eunice
3058 echo exit 1 >xenix
3059 echo exit 1 >venix
3060 echo exit 1 >os2
3061 d_bsd="$undef"
3062 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3063 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3064 then
3065         echo "Looks kind of like an OSF/1 system, but we'll see..."
3066         echo exit 0 >osf1
3067 elif test `echo abc | tr a-z A-Z` = Abc ; then
3068         xxx=`./loc addbib blurfl $pth`
3069         if $test -f $xxx; then
3070         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3071                 echo exit 0 >bsd
3072                 echo exit 0 >usg
3073         else
3074                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3075                         echo "Looks kind of like an extended USG system, but we'll see..."
3076                 else
3077                         echo "Looks kind of like a USG system, but we'll see..."
3078                 fi
3079                 echo exit 0 >usg
3080         fi
3081 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3082         echo "Looks kind of like a BSD system, but we'll see..."
3083         d_bsd="$define"
3084         echo exit 0 >bsd
3085 else
3086         echo "Looks kind of like a Version 7 system, but we'll see..."
3087         echo exit 0 >v7
3088 fi
3089 case "$eunicefix" in
3090 *unixtovms*)
3091         $cat <<'EOI'
3092 There is, however, a strange, musty smell in the air that reminds me of
3093 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3094 EOI
3095         echo exit 0 >eunice
3096         d_eunice="$define"
3097 : it so happens the Eunice I know will not run shell scripts in Unix format
3098         ;;
3099 *)
3100         echo " "
3101         echo "Congratulations.  You aren't running Eunice."
3102         d_eunice="$undef"
3103         ;;
3104 esac
3105 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3106 case "$p_" in
3107 :) ;;
3108 *)
3109         $cat <<'EOI'
3110 I have the feeling something is not exactly right, however...don't tell me...
3111 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3112 EOI
3113         echo exit 0 >os2
3114         ;;
3115 esac
3116 if test -f /xenix; then
3117         echo "Actually, this looks more like a XENIX system..."
3118         echo exit 0 >xenix
3119         d_xenix="$define"
3120 else
3121         echo " "
3122         echo "It's not Xenix..."
3123         d_xenix="$undef"
3124 fi
3125 chmod +x xenix
3126 $eunicefix xenix
3127 if test -f /venix; then
3128         echo "Actually, this looks more like a VENIX system..."
3129         echo exit 0 >venix
3130 else
3131         echo " "
3132         if ./xenix; then
3133                 : null
3134         else
3135                 echo "Nor is it Venix..."
3136         fi
3137 fi
3138 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3139 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3140 $rm -f foo
3141
3142 : see if we need a special compiler
3143 echo " "
3144 if ./usg; then
3145         case "$cc" in
3146         '') case "$Mcc" in
3147                 /*) dflt='Mcc';;
3148                 *) case "$large" in
3149                         -M*) dflt='cc';;
3150                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3151                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3152                                                 dflt='cc'
3153                                         else
3154                                                 dflt='cc -M'
3155                                         fi
3156                                 else
3157                                         dflt='cc'
3158                                 fi;;
3159                         esac;;
3160                 esac;;
3161         *)  dflt="$cc";;
3162         esac
3163         case "$dflt" in
3164         *M*)    $cat <<'EOM'
3165 On some older systems the default C compiler will not resolve multiple global
3166 references that happen to have the same name.  On some such systems the "Mcc"
3167 command may be used to force these to be resolved.  On other systems a "cc -M"
3168 command is required.  (Note that the -M flag on other systems indicates a
3169 memory model to use!) If you have the Gnu C compiler, you might wish to use
3170 that instead.
3171
3172 EOM
3173         ;;
3174         esac
3175         rp="Use which C compiler?"
3176         . ./myread
3177         cc="$ans"
3178 else
3179         case "$cc" in
3180         '') dflt=cc;;
3181         *) dflt="$cc";;
3182         esac
3183         rp="Use which C compiler?"
3184         . ./myread
3185         cc="$ans"
3186 fi
3187 : Look for a hint-file generated 'call-back-unit'.  Now that the
3188 : user has specified the compiler, we may need to set or change some
3189 : other defaults.
3190 if $test -f cc.cbu; then
3191     . ./cc.cbu
3192 fi
3193 . ./checkcc
3194
3195 echo " "
3196 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3197 $cat >gccvers.c <<EOM
3198 #include <stdio.h>
3199 int main() {
3200 #ifdef __GNUC__
3201 #ifdef __VERSION__
3202         printf("%s\n", __VERSION__);
3203 #else
3204         printf("%s\n", "1");
3205 #endif
3206 #endif
3207         exit(0);
3208 }
3209 EOM
3210 if $cc $ldflags -o gccvers gccvers.c; then
3211         gccversion=`./gccvers`
3212         case "$gccversion" in
3213         '') echo "You are not using GNU cc." ;;
3214         *)  echo "You are using GNU cc $gccversion."
3215             ;;
3216         esac
3217 else
3218         echo " "
3219         echo "*** WHOA THERE!!! ***" >&4
3220         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3221         case "$knowitall" in
3222         '')
3223         echo "    You'd better start hunting for one and let me know about it." >&4
3224                 exit 1
3225                 ;;
3226         esac
3227 fi
3228 $rm -f gccvers*
3229 case "$gccversion" in
3230 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3231 esac
3232 case "$gccversion" in
3233 '') gccosandvers='' ;;
3234 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3235    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3236    gccshortvers=''
3237    case "$gccosandvers" in
3238    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3239    $osname$osvers) ;; # looking good
3240    $osname*) cat <<EOM >&4
3241
3242 *** WHOA THERE!!! ***
3243
3244     Your gcc has not been compiled for the exact release of
3245     your operating system ($gccosandvers versus $osname$osvers).
3246
3247     In general it is a good idea to keep gcc synchronized with
3248     the operating system because otherwise serious problems
3249     may ensue when trying to compile software, like Perl.
3250
3251     I'm trying to be optimistic here, though, and will continue.
3252     If later during the configuration and build icky compilation
3253     problems appear (headerfile conflicts being the most common
3254     manifestation), I suggest reinstalling the gcc to match
3255     your operating system release.
3256
3257 EOM
3258       ;;
3259    *) gccosandvers='' ;; # failed to parse, better be silent
3260    esac
3261    ;;
3262 esac
3263
3264
3265
3266
3267 : see how we invoke the C preprocessor
3268 echo " "
3269 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3270 cat <<'EOT' >testcpp.c
3271 #define ABC abc
3272 #define XYZ xyz
3273 ABC.XYZ
3274 EOT
3275 cd ..
3276 if test ! -f cppstdin; then
3277         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3278                 # AIX cc -E doesn't show the absolute headerfile
3279                 # locations but we'll cheat by using the -M flag.
3280                 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
3281         else
3282                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3283         fi
3284 else
3285         echo "Keeping your $hint cppstdin wrapper."
3286 fi
3287 chmod 755 cppstdin
3288 wrapper=`pwd`/cppstdin
3289 ok='false'
3290 cd UU
3291
3292 if $test "X$cppstdin" != "X" && \
3293         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3294         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3295 then
3296         echo "You used to use $cppstdin $cppminus so we'll use that again."
3297         case "$cpprun" in
3298         '') echo "But let's see if we can live without a wrapper..." ;;
3299         *)
3300                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3301                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3302                 then
3303                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3304                         ok='true'
3305                 else
3306                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3307                 fi
3308                 ;;
3309         esac
3310 else
3311         case "$cppstdin" in
3312         '') ;;
3313         *)
3314                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3315                 ;;
3316         esac
3317 fi
3318
3319 if $ok; then
3320         : nothing
3321 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3322         $cc -E <testcpp.c >testcpp.out 2>&1; \
3323         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3324         echo "Yup, it does."
3325         x_cpp="$cc -E"
3326         x_minus='';
3327 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3328         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3329         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3330         echo "Yup, it does."
3331         x_cpp="$cc -E"
3332         x_minus='-';
3333 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3334         $cc -P <testcpp.c >testcpp.out 2>&1; \
3335         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3336         echo "Yipee, that works!"
3337         x_cpp="$cc -P"
3338         x_minus='';
3339 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3340         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3341         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3342         echo "At long last!"
3343         x_cpp="$cc -P"
3344         x_minus='-';
3345 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3346         $cpp <testcpp.c >testcpp.out 2>&1; \
3347         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3348         echo "It works!"
3349         x_cpp="$cpp"
3350         x_minus='';
3351 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3352         $cpp - <testcpp.c >testcpp.out 2>&1; \
3353         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3354         echo "Hooray, it works!  I was beginning to wonder."
3355         x_cpp="$cpp"
3356         x_minus='-';
3357 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3358         $wrapper <testcpp.c >testcpp.out 2>&1; \
3359         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3360         x_cpp="$wrapper"
3361         x_minus=''
3362         echo "Eureka!"
3363 else
3364         dflt=''
3365         rp="No dice.  I can't find a C preprocessor.  Name one:"
3366         . ./myread
3367         x_cpp="$ans"
3368         x_minus=''
3369         $x_cpp <testcpp.c >testcpp.out 2>&1
3370         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3371                 echo "OK, that will do." >&4
3372         else
3373 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3374                 exit 1
3375         fi
3376 fi
3377
3378 case "$ok" in
3379 false)
3380         cppstdin="$x_cpp"
3381         cppminus="$x_minus"
3382         cpprun="$x_cpp"
3383         cpplast="$x_minus"
3384         set X $x_cpp
3385         shift
3386         case "$1" in
3387         "$cpp")
3388                 echo "Perhaps can we force $cc -E using a wrapper..."
3389                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3390                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3391                 then
3392                         echo "Yup, we can."
3393                         cppstdin="$wrapper"
3394                         cppminus='';
3395                 else
3396                         echo "Nope, we'll have to live without it..."
3397                 fi
3398                 ;;
3399         esac
3400         case "$cpprun" in
3401         "$wrapper")
3402                 cpprun=''
3403                 cpplast=''
3404                 ;;
3405         esac
3406         ;;
3407 esac
3408
3409 case "$cppstdin" in
3410 "$wrapper"|'cppstdin') ;;
3411 *) $rm -f $wrapper;;
3412 esac
3413 $rm -f testcpp.c testcpp.out
3414
3415 : decide how portable to be.  Allow command line overrides.
3416 case "$d_portable" in
3417 "$undef") ;;
3418 *)      d_portable="$define" ;;
3419 esac
3420
3421 : set up shell script to do ~ expansion
3422 cat >filexp <<EOSS
3423 $startsh
3424 : expand filename
3425 case "\$1" in
3426  ~/*|~)
3427         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3428         ;;
3429  ~*)
3430         if $test -f /bin/csh; then
3431                 /bin/csh -f -c "glob \$1"
3432                 failed=\$?
3433                 echo ""
3434                 exit \$failed
3435         else
3436                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3437                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3438                 if $test ! -d "\$dir"; then
3439                         me=\`basename \$0\`
3440                         echo "\$me: can't locate home directory for: \$name" >&2
3441                         exit 1
3442                 fi
3443                 case "\$1" in
3444                 */*)
3445                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3446                         ;;
3447                 *)
3448                         echo \$dir
3449                         ;;
3450                 esac
3451         fi
3452         ;;
3453 *)
3454         echo \$1
3455         ;;
3456 esac
3457 EOSS
3458 chmod +x filexp
3459 $eunicefix filexp
3460
3461 : now set up to get a file name
3462 cat <<EOS >getfile
3463 $startsh
3464 EOS
3465 cat <<'EOSC' >>getfile
3466 tilde=''
3467 fullpath=''
3468 already=''
3469 skip=''
3470 none_ok=''
3471 exp_file=''
3472 nopath_ok=''
3473 orig_rp="$rp"
3474 orig_dflt="$dflt"
3475 case "$gfpth" in
3476 '') gfpth='.' ;;
3477 esac
3478
3479 case "$fn" in
3480 *\(*)
3481         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3482         fn=`echo $fn | sed 's/(.*)//'`
3483         ;;
3484 esac
3485
3486 case "$fn" in
3487 *:*)
3488         loc_file=`expr $fn : '.*:\(.*\)'`
3489         fn=`expr $fn : '\(.*\):.*'`
3490         ;;
3491 esac
3492
3493 case "$fn" in
3494 *~*) tilde=true;;
3495 esac
3496 case "$fn" in
3497 */*) fullpath=true;;
3498 esac
3499 case "$fn" in
3500 *+*) skip=true;;
3501 esac
3502 case "$fn" in
3503 *n*) none_ok=true;;
3504 esac
3505 case "$fn" in
3506 *e*) exp_file=true;;
3507 esac
3508 case "$fn" in
3509 *p*) nopath_ok=true;;
3510 esac
3511
3512 case "$fn" in
3513 *f*) type='File';;
3514 *d*) type='Directory';;
3515 *l*) type='Locate';;
3516 esac
3517
3518 what="$type"
3519 case "$what" in
3520 Locate) what='File';;
3521 esac
3522
3523 case "$exp_file" in
3524 '')
3525         case "$d_portable" in
3526         "$define") ;;
3527         *) exp_file=true;;
3528         esac
3529         ;;
3530 esac
3531
3532 cd ..
3533 while test "$type"; do
3534         redo=''
3535         rp="$orig_rp"
3536         dflt="$orig_dflt"
3537         case "$tilde" in
3538         true) rp="$rp (~name ok)";;
3539         esac
3540         . UU/myread
3541         if test -f UU/getfile.ok && \
3542                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3543         then
3544                 value="$ans"
3545                 ansexp="$ans"
3546                 break
3547         fi
3548         case "$ans" in
3549         none)
3550                 value=''
3551                 ansexp=''
3552                 case "$none_ok" in
3553                 true) type='';;
3554                 esac
3555                 ;;
3556         *)
3557                 case "$tilde" in
3558                 '') value="$ans"
3559                         ansexp="$ans";;
3560                 *)
3561                         value=`UU/filexp $ans`
3562                         case $? in
3563                         0)
3564                                 if test "$ans" != "$value"; then
3565                                         echo "(That expands to $value on this system.)"
3566                                 fi
3567                                 ;;
3568                         *) value="$ans";;
3569                         esac
3570                         ansexp="$value"
3571                         case "$exp_file" in
3572                         '') value="$ans";;
3573                         esac
3574                         ;;
3575                 esac
3576                 case "$fullpath" in
3577                 true)
3578                         case "$ansexp" in
3579                         /*) value="$ansexp" ;;
3580                         [a-zA-Z]:/*) value="$ansexp" ;;
3581                         *)
3582                                 redo=true
3583                                 case "$already" in
3584                                 true)
3585                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3586                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3587                                         ;;
3588                                 *)
3589                                 echo "Please give a full path name, starting with slash." >&4
3590                                         case "$tilde" in
3591                                         true)
3592                                 echo "Note that using ~name is ok provided it expands well." >&4
3593                                                 already=true
3594                                                 ;;
3595                                         esac
3596                                 esac
3597                                 ;;
3598                         esac
3599                         ;;
3600                 esac
3601                 case "$redo" in
3602                 '')
3603                         case "$type" in
3604                         File)
3605                                 for fp in $gfpth; do
3606                                         if test "X$fp" = X.; then
3607                                             pf="$ansexp"
3608                                         else    
3609                                             pf="$fp/$ansexp"
3610                                         fi
3611                                         if test -f "$pf"; then
3612                                                 type=''
3613                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3614                                         then
3615                                                 echo "($value is not a plain file, but that's ok.)"
3616                                                 type=''
3617                                         fi
3618                                         if test X"$type" = X; then
3619                                             value="$pf"
3620                                             break
3621                                         fi
3622                                 done
3623                                 ;;
3624                         Directory)
3625                                 for fp in $gfpth; do
3626                                         if test "X$fp" = X.; then
3627                                             dir="$ans"
3628                                             direxp="$ansexp"
3629                                         else    
3630                                             dir="$fp/$ansexp"
3631                                             direxp="$fp/$ansexp"
3632                                         fi
3633                                         if test -d "$direxp"; then
3634                                                 type=''
3635                                                 value="$dir"
3636                                                 break
3637                                         fi
3638                                 done
3639                                 ;;
3640                         Locate)
3641                                 if test -d "$ansexp"; then
3642                                         echo "(Looking for $loc_file in directory $value.)"
3643                                         value="$value/$loc_file"
3644                                         ansexp="$ansexp/$loc_file"
3645                                 fi
3646                                 if test -f "$ansexp"; then
3647                                         type=''
3648                                 fi
3649                                 case "$nopath_ok" in
3650                                 true)   case "$value" in
3651                                         */*) ;;
3652                                         *)      echo "Assuming $value will be in people's path."
3653                                                 type=''
3654                                                 ;;
3655                                         esac
3656                                         ;;
3657                                 esac
3658                                 ;;
3659                         esac
3660
3661                         case "$skip" in
3662                         true) type='';
3663                         esac
3664
3665                         case "$type" in
3666                         '') ;;
3667                         *)
3668                                 if test "$fastread" = yes; then
3669                                         dflt=y
3670                                 else
3671                                         dflt=n
3672                                 fi
3673                                 rp="$what $value doesn't exist.  Use that name anyway?"
3674                                 . UU/myread
3675                                 dflt=''
3676                                 case "$ans" in
3677                                 y*) type='';;
3678                                 *) echo " ";;
3679                                 esac
3680                                 ;;
3681                         esac
3682                         ;;
3683                 esac
3684                 ;;
3685         esac
3686 done
3687 cd UU
3688 ans="$value"
3689 rp="$orig_rp"
3690 dflt="$orig_dflt"
3691 rm -f getfile.ok
3692 test "X$gfpthkeep" != Xy && gfpth=""
3693 EOSC
3694
3695 : What should the include directory be ?
3696 echo " "
3697 $echo $n "Hmm...  $c"
3698 dflt='/usr/include'
3699 incpath=''
3700 mips_type=''
3701 if $test -f /bin/mips && /bin/mips; then
3702         echo "Looks like a MIPS system..."
3703         $cat >usr.c <<'EOCP'
3704 #ifdef SYSTYPE_BSD43
3705 /bsd43
3706 #endif
3707 EOCP
3708         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3709                 dflt='/bsd43/usr/include'
3710                 incpath='/bsd43'
3711                 mips_type='BSD 4.3'
3712         else
3713                 mips_type='System V'
3714         fi
3715         $rm -f usr.c usr.out
3716         echo "and you're compiling with the $mips_type compiler and libraries."
3717         xxx_prompt=y
3718         echo "exit 0" >mips
3719 else
3720         echo "Doesn't look like a MIPS system."
3721         xxx_prompt=n
3722         echo "exit 1" >mips
3723 fi
3724 chmod +x mips
3725 $eunicefix mips
3726 case "$usrinc" in
3727 '') ;;
3728 *) dflt="$usrinc";;
3729 esac
3730 case "$xxx_prompt" in
3731 y)      fn=d/
3732         echo " "
3733         rp='Where are the include files you want to use?'
3734         . ./getfile
3735         usrinc="$ans"
3736         ;;
3737 *)      usrinc="$dflt"
3738         ;;
3739 esac
3740
3741 : Set private lib path
3742 case "$plibpth" in
3743 '') if ./mips; then
3744                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3745         fi;;
3746 esac
3747 case "$libpth" in
3748 ' ') dlist='';;
3749 '') dlist="$loclibpth $plibpth $glibpth";;
3750 *) dlist="$libpth";;
3751 esac
3752
3753 : Now check and see which directories actually exist, avoiding duplicates
3754 libpth=''
3755 for xxx in $dlist
3756 do
3757     if $test -d $xxx; then
3758                 case " $libpth " in
3759                 *" $xxx "*) ;;
3760                 *) libpth="$libpth $xxx";;
3761                 esac
3762     fi
3763 done
3764 $cat <<'EOM'
3765
3766 Some systems have incompatible or broken versions of libraries.  Among
3767 the directories listed in the question below, please remove any you
3768 know not to be holding relevant libraries, and add any that are needed.
3769 Say "none" for none.
3770
3771 EOM
3772 case "$libpth" in
3773 '') dflt='none';;
3774 *)
3775         set X $libpth
3776         shift
3777         dflt=${1+"$@"}
3778         ;;
3779 esac
3780 rp="Directories to use for library searches?"
3781 . ./myread
3782 case "$ans" in
3783 none) libpth=' ';;
3784 *) libpth="$ans";;
3785 esac
3786
3787 : compute shared library extension
3788 case "$so" in
3789 '')
3790         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3791                 dflt='sl'
3792         else
3793                 dflt='so'
3794         fi
3795         ;;
3796 *) dflt="$so";;
3797 esac
3798 $cat <<EOM
3799
3800 On some systems, shared libraries may be available.  Answer 'none' if
3801 you want to suppress searching of shared libraries for the remainder
3802 of this configuration.
3803
3804 EOM
3805 rp='What is the file extension used for shared libraries?'
3806 . ./myread
3807 so="$ans"
3808
3809 : Define several unixisms.
3810 : Hints files or command line option can be used to override them.
3811 : The convoluted testing is in case hints files set either the old
3812 : or the new name.
3813 case "$_exe" in
3814 '')     case "$exe_ext" in
3815     '') ;;
3816         *)      _exe="$exe_ext" ;;
3817         esac
3818         ;;
3819 esac
3820 case "$_a" in
3821 '')     case "$lib_ext" in
3822     '') _a='.a';;
3823         *)      _a="$lib_ext" ;;
3824         esac
3825         ;;
3826 esac
3827 case "$_o" in
3828 '') case "$obj_ext" in
3829         '')     _o='.o';;
3830         *)      _o="$obj_ext";;
3831         esac
3832         ;;
3833 esac
3834 case "$p_" in
3835 '') case "$path_sep" in
3836         '')     p_=':';;
3837         *)      p_="$path_sep";;
3838         esac
3839         ;;
3840 esac
3841 exe_ext=$_exe
3842 lib_ext=$_a
3843 obj_ext=$_o
3844 path_sep=$p_
3845
3846 : Which makefile gets called first.  This is used by make depend.
3847 case "$firstmakefile" in
3848 '') firstmakefile='makefile';;
3849 esac
3850
3851 case "$usesocks" in
3852 $define|true|[yY]*)     dflt='y';;
3853 *) dflt='n';;
3854 esac
3855 cat <<EOM
3856
3857 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3858 Configure must be run with -Dusesocks.
3859
3860 If this doesn't make any sense to you, just accept the default '$dflt'.
3861 EOM
3862 rp='Build Perl for SOCKS?'
3863 . ./myread
3864 case "$ans" in
3865 y|Y)    val="$define" ;;     
3866 *)      val="$undef" ;;
3867 esac
3868 set usesocks
3869 eval $setvar
3870
3871 : Looking for optional libraries
3872 echo " "
3873 echo "Checking for optional libraries..." >&4
3874 case "$libs" in
3875 ' '|'') dflt='';;
3876 *) dflt="$libs";;
3877 esac
3878 case "$libswanted" in
3879 '') libswanted='c_s';;
3880 esac
3881 case "$usesocks" in
3882 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3883 esac
3884 libsfound=''
3885 libsfiles=''
3886 libsdirs=''
3887 libspath=''
3888 for thisdir in $libpth $xlibpth; do
3889   test -d $thisdir && libspath="$libspath $thisdir"
3890 done
3891 for thislib in $libswanted; do
3892         for thisdir in $libspath; do
3893             xxx=''
3894             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3895                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3896                 $test -f "$xxx" && eval $libscheck
3897                 $test -f "$xxx" && libstyle=shared
3898             fi
3899             if test ! -f "$xxx"; then
3900                 xxx=$thisdir/lib$thislib.$so
3901                 $test -f "$xxx" && eval $libscheck
3902                 $test -f "$xxx" && libstyle=shared
3903             fi  
3904             if test ! -f "$xxx"; then
3905                 xxx=$thisdir/lib$thislib$_a
3906                 $test -f "$xxx" && eval $libscheck
3907                 $test -f "$xxx" && libstyle=static
3908             fi
3909             if test ! -f "$xxx"; then
3910                 xxx=$thisdir/$thislib$_a
3911                 $test -f "$xxx" && eval $libscheck
3912                 $test -f "$xxx" && libstyle=static
3913             fi
3914             if test ! -f "$xxx"; then
3915                 xxx=$thisdir/lib${thislib}_s$_a
3916                 $test -f "$xxx" && eval $libscheck
3917                 $test -f "$xxx" && libstyle=static
3918                 $test -f "$xxx" && thislib=${thislib}_s
3919             fi
3920             if test ! -f "$xxx"; then
3921                 xxx=$thisdir/Slib$thislib$_a
3922                 $test -f "$xxx" && eval $libscheck
3923                 $test -f "$xxx" && libstyle=static
3924             fi
3925             if $test -f "$xxx"; then
3926                 case "$libstyle" in
3927                 shared) echo "Found -l$thislib (shared)." ;;
3928                 static) echo "Found -l$thislib." ;;
3929                 *)      echo "Found -l$thislib ($libstyle)." ;;
3930                 esac
3931                 case " $dflt " in
3932                 *"-l$thislib "*);;
3933                 *) dflt="$dflt -l$thislib"
3934                    libsfound="$libsfound $xxx"
3935                    yyy=`basename $xxx`
3936                    libsfiles="$libsfiles $yyy"
3937                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3938                    case " $libsdirs " in
3939                    *" $yyy "*) ;;
3940                    *) libsdirs="$libsdirs $yyy" ;;
3941                    esac
3942                    ;;
3943                 esac
3944                 break
3945             fi  
3946         done
3947         if $test ! -f "$xxx"; then
3948             echo "No -l$thislib."
3949         fi
3950 done
3951 set X $dflt
3952 shift
3953 dflt="$*"
3954 case "$libs" in
3955 '') dflt="$dflt";;
3956 *) dflt="$libs";;
3957 esac
3958 case "$dflt" in
3959 ' '|'') dflt='none';;
3960 esac
3961
3962 $cat <<EOM
3963
3964 In order to compile $package on your machine, a number of libraries
3965 are usually needed.  Include any other special libraries here as well.
3966 Say "none" for none.  The default list is almost always right.
3967 EOM
3968
3969 echo " "
3970 rp="What libraries to use?"
3971 . ./myread
3972 case "$ans" in
3973 none) libs=' ';;
3974 *) libs="$ans";;
3975 esac
3976
3977 : determine optimization, if desired, or use for debug flag also
3978 case "$optimize" in
3979 ' '|$undef) dflt='none';;
3980 '') dflt='-O';;
3981 *) dflt="$optimize";;
3982 esac
3983 $cat <<EOH
3984
3985 By default, $package compiles with the -O flag to use the optimizer.
3986 Alternately, you might want to use the symbolic debugger, which uses
3987 the -g flag (on traditional Unix systems).  Either flag can be
3988 specified here.  To use neither flag, specify the word "none".
3989
3990 EOH
3991 rp="What optimizer/debugger flag should be used?"
3992 . ./myread
3993 optimize="$ans"
3994 case "$optimize" in
3995 'none') optimize=" ";;
3996 esac
3997
3998 dflt=''
3999 : We will not override a previous value, but we might want to
4000 : augment a hint file
4001 case "$hint" in
4002 default|recommended)
4003         case "$gccversion" in
4004         1*) dflt='-fpcc-struct-return' ;;
4005         esac
4006         case "$optimize" in
4007         *-g*) dflt="$dflt -DDEBUGGING";;
4008         esac
4009         case "$gccversion" in
4010         2*) if test -d /etc/conf/kconfig.d &&
4011                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4012                 then
4013                         dflt="$dflt -posix"
4014                 fi
4015                 ;;
4016         esac
4017         case "$gccversion" in
4018         1*) ;;
4019         2.[0-8]*) ;;
4020         ?*)     echo " "
4021                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4022                 echo 'int main(void) { return 0; }' > gcctest.c
4023                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4024                         echo "Yes, it does." 2>&1
4025                         case "$ccflags" in
4026                         *strict-aliasing*) 
4027                                 echo "Leaving current flags $ccflags alone." 2>&1
4028                                 ;;
4029                         *) dflt="$dflt -fno-strict-aliasing" ;;
4030                         esac
4031                 else
4032                         echo "Nope, it doesn't, but that's ok." 2>&1
4033                 fi
4034                 ;;
4035         esac
4036         ;;
4037 esac
4038
4039 case "$mips_type" in
4040 *BSD*|'') inclwanted="$locincpth $usrinc";;
4041 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4042 esac
4043 for thisincl in $inclwanted; do
4044         if $test -d $thisincl; then
4045                 if $test x$thisincl != x$usrinc; then
4046                         case "$dflt" in
4047                         *$thisincl*);;
4048                         *) dflt="$dflt -I$thisincl";;
4049                         esac
4050                 fi
4051         fi
4052 done
4053
4054 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4055         xxx=true;
4056 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4057         xxx=true;
4058 else
4059         xxx=false;
4060 fi;
4061 if $xxx; then
4062         case "$dflt" in
4063         *$2*);;
4064         *) dflt="$dflt -D$2";;
4065         esac;
4066 fi'
4067
4068 set signal.h LANGUAGE_C; eval $inctest
4069
4070 case "$usesocks" in
4071 $define)
4072         ccflags="$ccflags -DSOCKS"
4073         ;;
4074 esac
4075
4076 case "$hint" in
4077 default|recommended) dflt="$ccflags $dflt" ;;
4078 *) dflt="$ccflags";;
4079 esac
4080
4081 case "$dflt" in
4082 ''|' ') dflt=none;;
4083 esac
4084 $cat <<EOH
4085
4086 Your C compiler may want other flags.  For this question you should include
4087 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4088 but you should NOT include libraries or ld flags like -lwhatever.  If you
4089 want $package to honor its debug switch, you should include -DDEBUGGING here.
4090 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4091
4092 To use no flags, specify the word "none".
4093
4094 EOH
4095 set X $dflt
4096 shift
4097 dflt=${1+"$@"}
4098 rp="Any additional cc flags?"
4099 . ./myread
4100 case "$ans" in
4101 none) ccflags='';;
4102 *) ccflags="$ans";;
4103 esac
4104
4105 : the following weeds options from ccflags that are of no interest to cpp
4106 cppflags="$ccflags"
4107 case "$gccversion" in
4108 1*) cppflags="$cppflags -D__GNUC__"
4109 esac
4110 case "$mips_type" in
4111 '');;
4112 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4113 esac
4114 case "$cppflags" in
4115 '');;
4116 *)
4117         echo " "
4118         echo "Let me guess what the preprocessor flags are..." >&4
4119         set X $cppflags
4120         shift
4121         cppflags=''
4122         $cat >cpp.c <<'EOM'
4123 #define BLURFL foo
4124
4125 BLURFL xx LFRULB
4126 EOM
4127         previous=''
4128         for flag in $*
4129         do
4130                 case "$flag" in
4131                 -*) ftry="$flag";;
4132                 *) ftry="$previous $flag";;
4133                 esac
4134                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4135                         >cpp1.out 2>/dev/null && \
4136                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4137                         >cpp2.out 2>/dev/null && \
4138                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4139                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4140                 then
4141                         cppflags="$cppflags $ftry"
4142                         previous=''
4143                 else
4144                         previous="$flag"
4145                 fi
4146         done
4147         set X $cppflags
4148         shift
4149         cppflags=${1+"$@"}
4150         case "$cppflags" in
4151         *-*)  echo "They appear to be: $cppflags";;
4152         esac
4153         $rm -f cpp.c cpp?.out
4154         ;;
4155 esac
4156
4157 : flags used in final linking phase
4158 case "$ldflags" in
4159 '') if ./venix; then
4160                 dflt='-i -z'
4161         else
4162                 dflt=''
4163         fi
4164         case "$ccflags" in
4165         *-posix*) dflt="$dflt -posix" ;;
4166         esac
4167         ;;
4168 *) dflt="$ldflags";;
4169 esac
4170
4171 : Try to guess additional flags to pick up local libraries.
4172 for thislibdir in $libpth; do
4173         case " $loclibpth " in
4174         *" $thislibdir "*)
4175                 case "$dflt " in 
4176                 *"-L$thislibdir "*) ;;
4177                 *)  dflt="$dflt -L$thislibdir" ;;
4178                 esac
4179                 ;;
4180         esac
4181 done
4182
4183 case "$dflt" in
4184 '') dflt='none' ;;
4185 esac
4186
4187 $cat <<EOH
4188
4189 Your C linker may need flags.  For this question you should
4190 include -L/whatever and any other flags used by the C linker, but you
4191 should NOT include libraries like -lwhatever.
4192
4193 Make sure you include the appropriate -L/path flags if your C linker
4194 does not normally search all of the directories you specified above,
4195 namely
4196         $libpth
4197 To use no flags, specify the word "none".
4198
4199 EOH
4200
4201 rp="Any additional ld flags (NOT including libraries)?"
4202 . ./myread
4203 case "$ans" in
4204 none) ldflags='';;
4205 *) ldflags="$ans";;
4206 esac
4207 rmlist="$rmlist pdp11"
4208
4209 : coherency check
4210 echo " "
4211 echo "Checking your choice of C compiler and flags for coherency..." >&4
4212 $cat > try.c <<'EOF'
4213 #include <stdio.h>
4214 int main() { printf("Ok\n"); exit(0); }
4215 EOF
4216 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4217 shift
4218 $cat >try.msg <<'EOM'
4219 I've tried to compile and run the following simple program:
4220
4221 EOM
4222 $cat try.c >> try.msg
4223
4224 $cat >> try.msg <<EOM
4225
4226 I used the command:
4227
4228         $*
4229         ./try
4230
4231 and I got the following output:
4232
4233 EOM
4234 dflt=y
4235 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4236         if sh -c './try' >>try.msg 2>&1; then
4237                 xxx=`./try`
4238                 case "$xxx" in
4239                 "Ok") dflt=n ;;
4240                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4241                         case " $libs " in
4242                         *" -lsfio "*)
4243                                 cat >> try.msg <<'EOQS'
4244 If $libs contains -lsfio, and sfio is mis-configured, then it
4245 sometimes (apparently) runs and exits with a 0 status, but with no
4246 output!  It may have to do with sfio's use of _exit vs. exit.
4247
4248 EOQS
4249                                 rp="You have a big problem.  Shall I abort Configure"
4250                                 dflt=y
4251                                 ;;
4252                         esac
4253                         ;;
4254                 esac
4255         else
4256                 echo "The program compiled OK, but exited with status $?." >>try.msg
4257                 rp="You have a problem.  Shall I abort Configure"
4258                 dflt=y
4259         fi
4260 else
4261         echo "I can't compile the test program." >>try.msg
4262         rp="You have a BIG problem.  Shall I abort Configure"
4263         dflt=y
4264 fi
4265 case "$dflt" in
4266 y)
4267         $cat try.msg >&4
4268         case "$knowitall" in
4269         '')
4270                 echo "(The supplied flags or libraries might be incorrect.)"
4271                 ;;
4272         *) dflt=n;;
4273         esac
4274         echo " "
4275         . ./myread
4276         case "$ans" in
4277         n*|N*) ;;
4278         *)      echo "Ok.  Stopping Configure." >&4
4279                 exit 1
4280                 ;;
4281         esac
4282         ;;
4283 n) echo "OK, that should do.";;
4284 esac
4285 $rm -f try try.* core
4286
4287 : define an is-a-typedef? function
4288 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4289 case "$inclist" in
4290 "") inclist="sys/types.h";;
4291 esac;
4292 eval "varval=\$$var";
4293 case "$varval" in
4294 "")
4295         $rm -f temp.c;
4296         for inc in $inclist; do
4297                 echo "#include <$inc>" >>temp.c;
4298         done;
4299         echo "#ifdef $type" >> temp.c;
4300         echo "printf(\"We have $type\");" >> temp.c;
4301         echo "#endif" >> temp.c;
4302         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4303         if $contains $type temp.E >/dev/null 2>&1; then
4304                 eval "$var=\$type";
4305         else
4306                 eval "$var=\$def";
4307         fi;
4308         $rm -f temp.?;;
4309 *) eval "$var=\$varval";;
4310 esac'
4311
4312 : define an is-a-typedef? function that prompts if the type is not available.
4313 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4314 case "$inclist" in
4315 "") inclist="sys/types.h";;
4316 esac;
4317 eval "varval=\$$var";
4318 case "$varval" in
4319 "")
4320         $rm -f temp.c;
4321         for inc in $inclist; do
4322                 echo "#include <$inc>" >>temp.c;
4323         done;
4324         echo "#ifdef $type" >> temp.c;
4325         echo "printf(\"We have $type\");" >> temp.c;
4326         echo "#endif" >> temp.c;
4327         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4328         echo " " ;
4329         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4330         if $contains $type temp.E >/dev/null 2>&1; then
4331                 echo "$type found." >&4;
4332                 eval "$var=\$type";
4333         else
4334                 echo "$type NOT found." >&4;
4335                 dflt="$def";
4336                 . ./myread ;
4337                 eval "$var=\$ans";
4338         fi;
4339         $rm -f temp.?;;
4340 *) eval "$var=\$varval";;
4341 esac'
4342
4343 : define a shorthand compile call
4344 compile='
4345 mc_file=$1;
4346 shift;
4347 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4348 : define a shorthand compile call for compilations that should be ok.
4349 compile_ok='
4350 mc_file=$1;
4351 shift;
4352 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4353
4354 : check for lengths of integral types
4355 echo " "
4356 case "$intsize" in
4357 '')
4358         echo "Checking to see how big your integers are..." >&4
4359         $cat >intsize.c <<'EOCP'
4360 #include <stdio.h>
4361 int main()
4362 {
4363         printf("intsize=%d;\n", (int)sizeof(int));
4364         printf("longsize=%d;\n", (int)sizeof(long));
4365         printf("shortsize=%d;\n", (int)sizeof(short));
4366         exit(0);
4367 }
4368 EOCP
4369         set intsize
4370         if eval $compile_ok && ./intsize > /dev/null; then
4371                 eval `./intsize`
4372                 echo "Your integers are $intsize bytes long."
4373                 echo "Your long integers are $longsize bytes long."
4374                 echo "Your short integers are $shortsize bytes long."
4375         else
4376                 $cat >&4 <<EOM
4377 !
4378 Help! I can't compile and run the intsize test program: please enlighten me!
4379 (This is probably a misconfiguration in your system or libraries, and
4380 you really ought to fix it.  Still, I'll try anyway.)
4381 !
4382 EOM
4383                 dflt=4
4384                 rp="What is the size of an integer (in bytes)?"
4385                 . ./myread
4386                 intsize="$ans"
4387                 dflt=$intsize
4388                 rp="What is the size of a long integer (in bytes)?"
4389                 . ./myread
4390                 longsize="$ans"
4391                 dflt=2
4392                 rp="What is the size of a short integer (in bytes)?"
4393                 . ./myread
4394                 shortsize="$ans"
4395         fi
4396         ;;
4397 esac
4398 $rm -f intsize intsize.*
4399
4400 : see what type lseek is declared as in the kernel
4401 rp="What is the type used for lseek's offset on this system?"
4402 set off_t lseektype long stdio.h sys/types.h
4403 eval $typedef_ask
4404
4405 echo " "
4406 echo "Checking to see how big your file offsets are..." >&4
4407 $cat >try.c <<EOCP
4408 #include <sys/types.h>
4409 #include <stdio.h>
4410 int main()
4411 {
4412     printf("%d\n", (int)sizeof($lseektype));
4413     return(0); 
4414 }
4415 EOCP
4416 set try
4417 if eval $compile_ok; then
4418         lseeksize=`./try`
4419         echo "Your file offsets are $lseeksize bytes long."
4420 else
4421         dflt=$longsize
4422         echo " "
4423         echo "(I can't seem to compile the test program.  Guessing...)"
4424         rp="What is the size of your file offsets (in bytes)?"
4425         . ./myread
4426         lseeksize="$ans"
4427 fi
4428 $rm -f try.c try
4429
4430 : see what type file positions are declared as in the library
4431 rp="What is the type for file position used by fsetpos()?"
4432 set fpos_t fpostype long stdio.h sys/types.h
4433 eval $typedef_ask
4434
4435 echo " "
4436 case "$fpostype" in
4437 *_t) zzz="$fpostype"    ;;
4438 *)   zzz="fpos_t"       ;;
4439 esac
4440 echo "Checking the size of $zzz..." >&4 
4441 cat > try.c <<EOCP
4442 #include <sys/types.h>
4443 #include <stdio.h>
4444 int main() {
4445     printf("%d\n", (int)sizeof($fpostype));
4446     exit(0);
4447 }
4448 EOCP
4449 set try
4450 if eval $compile_ok; then
4451         yyy=`./try`
4452         case "$yyy" in
4453         '')     fpossize=4
4454                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4455                 ;;
4456         *)      fpossize=$yyy
4457                 echo "Your $zzz is $fpossize bytes long."
4458                 ;;
4459         esac
4460 else
4461         dflt="$longsize"
4462         echo " " >&4
4463         echo "(I can't compile the test program.  Guessing...)" >&4
4464         rp="What is the size of your file positions (in bytes)?"
4465         . ./myread
4466         fpossize="$ans"
4467 fi
4468
4469
4470
4471 # Backward compatibility (uselfs is deprecated).
4472 case "$uselfs" in
4473 "$define"|true|[yY]*)
4474         cat <<EOM >&4
4475
4476 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4477 EOM
4478         uselargefiles="$define"
4479         ;;
4480 esac                          
4481
4482 case "$lseeksize:$fpossize" in
4483 8:8) cat <<EOM
4484
4485 You can have files larger than 2 gigabytes.
4486 EOM
4487    val="$define" ;;
4488 *)    case "$uselargefiles" in
4489    "$undef"|false|[nN]*) dflt='n' ;;
4490    *)   dflt='y' ;;
4491    esac
4492    cat <<EOM
4493
4494 Perl can be built to understand large files (files larger than 2 gigabytes)
4495 on some systems.  To do so, Configure can be run with -Duselargefiles.
4496
4497 If this doesn't make any sense to you, just accept the default '$dflt'.
4498 EOM
4499    rp='Try to understand large files, if available?'
4500    . ./myread
4501    case "$ans" in
4502    y|Y)         val="$define" ;;
4503    *)           val="$undef"  ;;
4504    esac
4505    ;;
4506 esac
4507 set uselargefiles
4508 eval $setvar
4509 case "$uselargefiles" in
4510 "$define")
4511 : Look for a hint-file generated 'call-back-unit'.  If the
4512 : user has specified that a large files perl is to be built,
4513 : we may need to set or change some other defaults.
4514         if $test -f uselargefiles.cbu; then
4515                 echo "Your platform has some specific hints for large file builds, using them..."
4516                 . ./uselargefiles.cbu
4517                 echo " "
4518                 echo "Rechecking to see how big your file offsets are..." >&4
4519                 $cat >try.c <<EOCP
4520 #include <sys/types.h>
4521 #include <stdio.h>
4522 int main()
4523 {
4524     printf("%d\n", (int)sizeof($lseektype));
4525     return(0); 
4526 }
4527 EOCP
4528                 set try
4529                 if eval $compile_ok; then
4530                         lseeksize=`./try`
4531                         $echo "Your file offsets are now $lseeksize bytes long."
4532                 else
4533                         dflt="$lseeksize"
4534                         echo " "
4535                         echo "(I can't seem to compile the test program.  Guessing...)"
4536                         rp="What is the size of your file offsets (in bytes)?"
4537                         . ./myread
4538                         lseeksize="$ans"
4539                 fi
4540                 case "$fpostype" in
4541                 *_t) zzz="$fpostype"    ;;
4542                 *)   zzz="fpos_t"       ;;
4543                 esac
4544                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4545                 $cat > try.c <<EOCP
4546 #include <sys/types.h>
4547 #include <stdio.h>
4548 int main() {
4549     printf("%d\n", (int)sizeof($fpostype));
4550     exit(0);
4551 }
4552 EOCP
4553                 set try
4554                 if eval $compile_ok; then
4555                         yyy=`./try`
4556                         dflt="$lseeksize"
4557                         case "$yyy" in
4558                         '')     echo " "
4559                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4560                                 ;;
4561                         *)      fpossize=$yyy
4562                                 echo " $fpossize bytes." >&4
4563                                 ;;
4564                         esac
4565                 else
4566                         dflt="$fpossize"
4567                         echo " "
4568                         echo "(I can't compile the test program.  Guessing...)" >&4
4569                         rp="What is the size of your file positions (in bytes)?"
4570                         . ./myread
4571                         fpossize="$ans"
4572                 fi
4573                 $rm -f try.c try
4574         fi
4575         ;;
4576 esac
4577
4578
4579 case "$usemorebits" in
4580 "$define"|true|[yY]*)
4581         use64bitint="$define"
4582         uselongdouble="$define"
4583         usemorebits="$define"
4584         ;;
4585 *)      usemorebits="$undef"
4586         ;;
4587 esac
4588
4589
4590 case "$uselonglong" in
4591 "$define"|true|[yY]*)
4592         cat <<EOM >&4
4593
4594 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4595 EOM
4596         use64bitint="$define"
4597         ;;
4598 esac                          
4599 case "$use64bits" in
4600 "$define"|true|[yY]*)
4601         cat <<EOM >&4
4602
4603 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4604 EOM
4605         use64bitint="$define"
4606         ;;
4607 esac                          
4608 case "$use64bitints" in
4609 "$define"|true|[yY]*)
4610         cat <<EOM >&4
4611
4612 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4613 EOM
4614         use64bitint="$define"
4615         ;;
4616 esac                          
4617 case "$use64bitsint" in
4618 "$define"|true|[yY]*)
4619         cat <<EOM >&4
4620
4621 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4622 EOM
4623         use64bitint="$define"
4624         ;;
4625 esac                          
4626 case "$uselonglongs" in
4627 "$define"|true|[yY]*)
4628         cat <<EOM >&4
4629
4630 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4631 EOM
4632         use64bitint="$define"
4633         ;;
4634 esac                          
4635 case "$use64bitsall" in
4636 "$define"|true|[yY]*)
4637         cat <<EOM >&4
4638
4639 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4640 EOM
4641         use64bitall="$define"
4642         ;;
4643 esac                          
4644
4645 case "$ccflags" in
4646 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4647 esac
4648 case "$use64bitall" in
4649 "$define"|true|[yY]*) use64bitint="$define" ;;
4650 esac
4651
4652 case "$longsize" in
4653 8) cat <<EOM
4654
4655 You have natively 64-bit long integers.
4656 EOM
4657    val="$define"
4658    ;;
4659 *) case "$use64bitint" in
4660    "$define"|true|[yY]*) dflt='y';;
4661    *) dflt='n';;
4662    esac
4663    cat <<EOM
4664
4665 Perl can be built to take advantage of 64-bit integer types
4666 on some systems.  To do so, Configure can be run with -Duse64bitint.
4667 Choosing this option will most probably introduce binary incompatibilities.
4668
4669 If this doesn't make any sense to you, just accept the default '$dflt'.
4670 EOM
4671    rp='Try to use 64-bit integers, if available?'
4672    . ./myread
4673    case "$ans" in
4674    [yY]*) val="$define" ;;
4675    *)     val="$undef"  ;;
4676    esac
4677    ;;
4678 esac
4679 set use64bitint
4680 eval $setvar
4681
4682 case "$use64bitall" in
4683 "$define"|true|[yY]*) dflt='y' ;;
4684 *) case "$longsize" in
4685    8) dflt='y' ;;
4686    *) dflt='n' ;;
4687    esac
4688    ;;
4689 esac    
4690 cat <<EOM
4691
4692 You may also choose to try maximal 64-bitness.  It means using as much
4693 64-bitness as possible on the platform.  This in turn means even more
4694 binary incompatibilities.  On the other hand, your platform may not
4695 have any more 64-bitness available than what you already have chosen.
4696
4697 If this doesn't make any sense to you, just accept the default '$dflt'.
4698 EOM
4699 rp='Try to use maximal 64-bit support, if available?'
4700 . ./myread
4701 case "$ans" in
4702 [yY]*) val="$define" ;;
4703 *)     val="$undef"  ;;
4704 esac
4705 set use64bitall
4706 eval $setvar
4707 case "$use64bitall" in
4708 "$define")
4709         case "$use64bitint" in
4710         "$undef")
4711                 cat <<EOM
4712
4713 Since you have chosen a maximally 64-bit build, I'm also turning on
4714 the use of 64-bit integers.
4715 EOM
4716                 use64bitint="$define" ;;
4717         esac
4718         ;;
4719 esac
4720
4721 case "$use64bitint" in
4722 "$define"|true|[yY]*)
4723 : Look for a hint-file generated 'call-back-unit'.  If the
4724 : user has specified that a 64-bit perl is to be built,
4725 : we may need to set or change some other defaults.
4726         if $test -f use64bitint.cbu; then
4727                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4728                 . ./use64bitint.cbu
4729         fi
4730         case "$longsize" in
4731         4) case "$archname64" in
4732            '') archname64=64int ;;
4733            esac
4734            ;;
4735         esac
4736         ;;
4737 esac
4738
4739 case "$use64bitall" in
4740 "$define"|true|[yY]*)
4741 : Look for a hint-file generated 'call-back-unit'.  If the
4742 : user has specified that a maximally 64-bit perl is to be built,
4743 : we may need to set or change some other defaults.
4744         if $test -f use64bitall.cbu; then
4745                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4746                 . ./use64bitall.cbu
4747         fi
4748         case "$longsize" in
4749         4) case "$archname64" in
4750            ''|64int) archname64=64all ;;
4751            esac
4752            ;;
4753         esac
4754         ;;
4755 esac
4756
4757 : determine the architecture name
4758 echo " "
4759 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4760         tarch=`arch`"-$osname"
4761 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4762         if uname -m > tmparch 2>&1 ; then
4763                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4764                         -e 's/$/'"-$osname/" tmparch`
4765         else
4766                 tarch="$osname"
4767         fi
4768         $rm -f tmparch
4769 else
4770         tarch="$osname"
4771 fi
4772 case "$myarchname" in
4773 ''|"$tarch") ;;
4774 *)
4775         echo "(Your architecture name used to be $myarchname.)"
4776         archname=''
4777         ;;
4778 esac
4779 myarchname="$tarch"
4780 case "$archname" in
4781 '') dflt="$tarch";;
4782 *) dflt="$archname";;
4783 esac
4784 rp='What is your architecture name'
4785 . ./myread
4786 archname="$ans"
4787 case "$usethreads" in
4788 $define)
4789         echo "Threads selected." >&4
4790         case "$archname" in
4791         *-thread*) echo "...and architecture name already has -thread." >&4
4792                 ;;
4793         *)      archname="$archname-thread"
4794                 echo "...setting architecture name to $archname." >&4
4795                 ;;
4796         esac
4797         ;;
4798 esac
4799 case "$usemultiplicity" in
4800 $define)
4801         echo "Multiplicity selected." >&4
4802         case "$archname" in
4803         *-multi*) echo "...and architecture name already has -multi." >&4
4804                 ;;
4805         *)      archname="$archname-multi"
4806                 echo "...setting architecture name to $archname." >&4
4807                 ;;
4808         esac
4809         ;;
4810 esac
4811 case "$use64bitint" in
4812 $define)
4813         case "$archname64" in
4814         '')
4815                 ;;
4816         *)
4817                 case "$archname" in
4818                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4819                         ;;
4820                 *)      archname="$archname-$archname64"
4821                         echo "...setting architecture name to $archname." >&4
4822                         ;;
4823                 esac
4824                 ;;
4825         esac
4826 esac
4827
4828 : determine root of directory hierarchy where package will be installed.
4829 case "$prefix" in
4830 '')
4831         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4832         ;;
4833 *)
4834         dflt="$prefix"
4835         ;;
4836 esac
4837 $cat <<EOM
4838
4839 By default, $package will be installed in $dflt/bin, manual pages
4840 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4841 installation directories. Typically this is something like /usr/local.
4842 If you wish to have binaries under /usr/bin but other parts of the
4843 installation under /usr/local, that's ok: you will be prompted
4844 separately for each of the installation directories, the prefix being
4845 only used to set the defaults.
4846
4847 EOM
4848 fn=d~
4849 rp='Installation prefix to use?'
4850 . ./getfile
4851 oldprefix=''
4852 case "$prefix" in
4853 '') ;;
4854 *)
4855         case "$ans" in
4856         "$prefix") ;;
4857         *) oldprefix="$prefix";;
4858         esac
4859         ;;
4860 esac
4861 prefix="$ans"
4862 prefixexp="$ansexp"
4863
4864 : is AFS running?
4865 echo " "
4866 case "$afs" in
4867 $define|true)   afs=true ;;
4868 $undef|false)   afs=false ;;
4869 *)      if test -d /afs; then
4870                 afs=true
4871         else
4872                 afs=false
4873         fi
4874         ;;
4875 esac
4876 if $afs; then
4877         echo "AFS may be running... I'll be extra cautious then..." >&4
4878 else
4879         echo "AFS does not seem to be running..." >&4
4880 fi
4881
4882 : determine installation prefix for where package is to be installed.
4883 if $afs; then 
4884 $cat <<EOM
4885
4886 Since you are running AFS, I need to distinguish the directory in which
4887 files will reside from the directory in which they are installed (and from
4888 which they are presumably copied to the former directory by occult means).
4889
4890 EOM
4891         case "$installprefix" in
4892         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4893         *) dflt="$installprefix";;
4894         esac
4895 else
4896 $cat <<EOM
4897
4898 In some special cases, particularly when building $package for distribution,
4899 it is convenient to distinguish between the directory in which files should 
4900 be installed from the directory ($prefix) in which they 
4901 will eventually reside.  For most users, these two directories are the same.
4902
4903 EOM
4904         case "$installprefix" in
4905         '') dflt=$prefix ;;
4906         *) dflt=$installprefix;;
4907         esac
4908 fi
4909 fn=d~
4910 rp='What installation prefix should I use for installing files?'
4911 . ./getfile
4912 installprefix="$ans"
4913 installprefixexp="$ansexp"
4914
4915 : set the prefixit variable, to compute a suitable default value
4916 prefixit='case "$3" in
4917 ""|none)
4918         case "$oldprefix" in
4919         "") eval "$1=\"\$$2\"";;
4920         *)
4921                 case "$3" in
4922                 "") eval "$1=";;
4923                 none)
4924                         eval "tp=\"\$$2\"";
4925                         case "$tp" in
4926                         ""|" ") eval "$1=\"\$$2\"";;
4927                         *) eval "$1=";;
4928                         esac;;
4929                 esac;;
4930         esac;;
4931 *)
4932         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4933         case "$tp" in
4934         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4935         /*-$oldprefix/*|\~*-$oldprefix/*)
4936                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4937         *) eval "$1=\"\$$2\"";;
4938         esac;;
4939 esac'
4940
4941
4942 : get the patchlevel
4943 echo " "
4944 echo "Getting the current patchlevel..." >&4
4945 if $test -r $rsrc/patchlevel.h;then
4946         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4947         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4948         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4949         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4950         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4951         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4952 else
4953         revision=0
4954         patchlevel=0
4955         subversion=0
4956         api_revision=0
4957         api_version=0
4958         api_subversion=0
4959 fi
4960 $echo $n "(You have $package revision $revision" $c
4961 $echo $n " patchlevel $patchlevel" $c
4962 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4963 echo ".)"
4964 case "$osname" in
4965 dos|vms)
4966         : XXX Should be a Configure test for double-dots in filenames.
4967         version=`echo $revision $patchlevel $subversion | \
4968                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4969         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4970                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4971         ;;
4972 *)
4973         version=`echo $revision $patchlevel $subversion | \
4974                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4975         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4976                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4977         ;;
4978 esac
4979 : Special case the 5.005_xx maintenance series, which used 5.005
4980 : without any subversion label as a subdirectory in $sitelib
4981 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4982         api_versionstring='5.005'
4983 fi
4984
4985 : determine installation style
4986 : For now, try to deduce it from prefix unless it is already set.
4987 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4988 case "$installstyle" in
4989 '')     case "$prefix" in
4990                 *perl*) dflt='lib';;
4991                 *) dflt='lib/perl5' ;;
4992         esac
4993         ;;
4994 *)      dflt="$installstyle" ;;
4995 esac
4996 : Probably not worth prompting for this since we prompt for all
4997 : the directories individually, and the prompt would be too long and
4998 : confusing anyway.
4999 installstyle=$dflt
5000
5001 : determine where private library files go
5002 : Usual default is /usr/local/lib/perl5/$version.
5003 : Also allow things like /opt/perl/lib/$version, since 
5004 : /opt/perl/lib/perl5... would be redundant.
5005 : The default "style" setting is made in installstyle.U
5006 case "$installstyle" in
5007 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5008 *)       set dflt privlib lib/$version ;;
5009 esac
5010 eval $prefixit
5011 $cat <<EOM
5012
5013 There are some auxiliary files for $package that need to be put into a
5014 private library directory that is accessible by everyone.
5015
5016 EOM
5017 fn=d~+
5018 rp='Pathname where the private library files will reside?'
5019 . ./getfile
5020 privlib="$ans"
5021 privlibexp="$ansexp"
5022 : Change installation prefix, if necessary.
5023 if $test X"$prefix" != X"$installprefix"; then
5024         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5025 else
5026         installprivlib="$privlibexp"
5027 fi
5028
5029 : set the prefixup variable, to restore leading tilda escape
5030 prefixup='case "$prefixexp" in
5031 "$prefix") ;;
5032 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5033 esac'
5034
5035 : determine where public architecture dependent libraries go
5036 set archlib archlib
5037 eval $prefixit
5038 : privlib default is /usr/local/lib/$package/$version
5039 : archlib default is /usr/local/lib/$package/$version/$archname
5040 : privlib may have an optional trailing /share.
5041 tdflt=`echo $privlib | $sed 's,/share$,,'`
5042 tdflt=$tdflt/$archname
5043 case "$archlib" in
5044 '')     dflt=$tdflt
5045         ;;
5046 *)      dflt="$archlib"
5047     ;;
5048 esac
5049 $cat <<EOM
5050
5051 $spackage contains architecture-dependent library files.  If you are
5052 sharing libraries in a heterogeneous environment, you might store
5053 these files in a separate location.  Otherwise, you can just include
5054 them with the rest of the public library files.
5055
5056 EOM
5057 fn=d+~
5058 rp='Where do you want to put the public architecture-dependent libraries?'
5059 . ./getfile
5060 archlib="$ans"
5061 archlibexp="$ansexp"
5062 if $test X"$archlib" = X"$privlib"; then
5063         d_archlib="$undef"
5064 else
5065         d_archlib="$define"
5066 fi
5067 : Change installation prefix, if necessary.
5068 if $test X"$prefix" != X"$installprefix"; then
5069         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5070 else
5071         installarchlib="$archlibexp"
5072 fi
5073
5074
5075 : Binary compatibility with 5.005 is not possible for builds
5076 : with advanced features
5077 case "$usethreads$usemultiplicity" in
5078 *define*)
5079         bincompat5005="$undef"
5080         d_bincompat5005="$undef"
5081         ;;
5082 *)      $cat <<EOM
5083
5084 This version of Perl can be compiled for binary compatibility with 5.005.
5085 If you decide to do so, you will be able to continue using most of the
5086 extensions that were compiled for Perl 5.005.
5087
5088 EOM
5089         case "$bincompat5005$d_bincompat5005" in
5090         *"$undef"*) dflt=n ;;
5091         *) dflt=y ;;
5092         esac
5093         rp='Binary compatibility with Perl 5.005?'
5094         . ./myread
5095         case "$ans" in
5096         y*) val="$define" ;;
5097         *)  val="$undef" ;;
5098         esac
5099         set d_bincompat5005
5100         eval $setvar
5101         case "$d_bincompat5005" in
5102         "$define")
5103                 bincompat5005="$define"
5104                 ;;
5105         *)      bincompat5005="$undef"
5106                 d_bincompat5005="$undef"
5107                 ;;
5108         esac
5109         ;;
5110 esac
5111
5112
5113 : see if setuid scripts can be secure
5114 $cat <<EOM
5115
5116 Some kernels have a bug that prevents setuid #! scripts from being
5117 secure.  Some sites have disabled setuid #! scripts because of this.
5118
5119 First let's decide if your kernel supports secure setuid #! scripts.
5120 (If setuid #! scripts would be secure but have been disabled anyway,
5121 don't say that they are secure if asked.)
5122
5123 EOM
5124
5125 val="$undef"
5126 if $test -d /dev/fd; then
5127         echo "#!$ls" >reflect
5128         chmod +x,u+s reflect
5129         ./reflect >flect 2>&1
5130         if $contains "/dev/fd" flect >/dev/null; then
5131                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5132                 val="$define"
5133         else
5134                 $cat <<EOM
5135 If you are not sure if they are secure, I can check but I'll need a
5136 username and password different from the one you are using right now.
5137 If you don't have such a username or don't want me to test, simply
5138 enter 'none'.
5139
5140 EOM
5141                 rp='Other username to test security of setuid scripts with?'
5142                 dflt='none'
5143                 . ./myread
5144                 case "$ans" in
5145                 n|none)
5146                         case "$d_suidsafe" in
5147                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5148                                 dflt=n;;
5149                         "$undef")
5150                                 echo "Well, the $hint value is *not* secure." >&4
5151                                 dflt=n;;
5152                         *)      echo "Well, the $hint value *is* secure." >&4
5153                                 dflt=y;;
5154                         esac
5155                         ;;
5156                 *)
5157                         $rm -f reflect flect
5158                         echo "#!$ls" >reflect
5159                         chmod +x,u+s reflect
5160                         echo >flect
5161                         chmod a+w flect
5162                         echo '"su" will (probably) prompt you for '"$ans's password."
5163                         su $ans -c './reflect >flect'
5164                         if $contains "/dev/fd" flect >/dev/null; then
5165                                 echo "Okay, it looks like setuid scripts are secure." >&4
5166                                 dflt=y
5167                         else
5168                                 echo "I don't think setuid scripts are secure." >&4
5169                                 dflt=n
5170                         fi
5171                         ;;
5172                 esac
5173                 rp='Does your kernel have *secure* setuid scripts?'
5174                 . ./myread
5175                 case "$ans" in
5176                 [yY]*)  val="$define";;
5177                 *)      val="$undef";;
5178                 esac
5179         fi
5180 else
5181         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5182         echo "(That's for file descriptors, not floppy disks.)"
5183         val="$undef"
5184 fi
5185 set d_suidsafe
5186 eval $setvar
5187
5188 $rm -f reflect flect
5189
5190 : now see if they want to do setuid emulation
5191 echo " "
5192 val="$undef"
5193 case "$d_suidsafe" in
5194 "$define")
5195         val="$undef"
5196         echo "No need to emulate SUID scripts since they are secure here." >& 4
5197         ;;
5198 *)
5199         $cat <<EOM
5200 Some systems have disabled setuid scripts, especially systems where
5201 setuid scripts cannot be secure.  On systems where setuid scripts have
5202 been disabled, the setuid/setgid bits on scripts are currently
5203 useless.  It is possible for $package to detect those bits and emulate
5204 setuid/setgid in a secure fashion.  This emulation will only work if
5205 setuid scripts have been disabled in your kernel.
5206
5207 EOM
5208         case "$d_dosuid" in
5209         "$define") dflt=y ;;
5210         *) dflt=n ;;
5211         esac
5212         rp="Do you want to do setuid/setgid emulation?"
5213         . ./myread
5214         case "$ans" in
5215         [yY]*)  val="$define";;
5216         *)      val="$undef";;
5217         esac
5218         ;;
5219 esac
5220 set d_dosuid
5221 eval $setvar
5222
5223 : determine filename position in cpp output
5224 echo " "
5225 echo "Computing filename position in cpp output for #include directives..." >&4
5226 echo '#include <stdio.h>' > foo.c
5227 $cat >fieldn <<EOF
5228 $startsh
5229 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5230 $grep '^[       ]*#.*stdio\.h' | \
5231 while read cline; do
5232         pos=1
5233         set \$cline
5234         while $test \$# -gt 0; do
5235                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5236                         echo "\$pos"
5237                         exit 0
5238                 fi
5239                 shift
5240                 pos=\`expr \$pos + 1\`
5241         done
5242 done
5243 EOF
5244 chmod +x fieldn
5245 fieldn=`./fieldn`
5246 $rm -f foo.c fieldn
5247 case $fieldn in
5248 '') pos='???';;
5249 1) pos=first;;
5250 2) pos=second;;
5251 3) pos=third;;
5252 *) pos="${fieldn}th";;
5253 esac
5254 echo "Your cpp writes the filename in the $pos field of the line."
5255
5256 : locate header file
5257 $cat >findhdr <<EOF
5258 $startsh
5259 wanted=\$1
5260 name=''
5261 for usrincdir in $usrinc
5262 do
5263         if test -f \$usrincdir/\$wanted; then
5264                 echo "\$usrincdir/\$wanted"
5265                 exit 0
5266         fi
5267 done
5268 awkprg='{ print \$$fieldn }'
5269 echo "#include <\$wanted>" > foo\$\$.c
5270 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5271 $grep "^[       ]*#.*\$wanted" | \
5272 while read cline; do
5273         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5274         case "\$name" in
5275         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5276         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5277         *) exit 2;;
5278         esac;
5279 done;
5280 #
5281 # status = 0: grep returned 0 lines, case statement not executed
5282 # status = 1: headerfile found
5283 # status = 2: while loop executed, no headerfile found
5284 #
5285 status=\$?
5286 $rm -f foo\$\$.c;
5287 if test \$status -eq 1; then
5288         exit 0;
5289 fi
5290 exit 1
5291 EOF
5292 chmod +x findhdr
5293
5294 : define an alternate in-header-list? function
5295 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5296 cont=true; xxf="echo \"<\$1> found.\" >&4";
5297 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5298 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5299 esac;
5300 case $# in 4) instead=instead;; *) instead="at last";; esac;
5301 while $test "$cont"; do
5302         xxx=`./findhdr $1`
5303         var=$2; eval "was=\$$2";
5304         if $test "$xxx" && $test -r "$xxx";
5305         then eval $xxf;
5306         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5307                 cont="";
5308         else eval $xxnf;
5309         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5310         set $yyy; shift; shift; yyy=$@;
5311         case $# in 0) cont="";;
5312         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5313                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5314         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5315                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5316         esac;
5317 done;
5318 while $test "$yyy";
5319 do set $yyy; var=$2; eval "was=\$$2";
5320         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5321         set $yyy; shift; shift; yyy=$@;
5322 done'
5323
5324 : see if this is a malloc.h system
5325 set malloc.h i_malloc
5326 eval $inhdr
5327
5328 : see if stdlib is available
5329 set stdlib.h i_stdlib
5330 eval $inhdr
5331
5332 : determine which malloc to compile in
5333 echo " "
5334 case "$usemymalloc" in
5335 ''|[yY]*|true|$define)  dflt='y' ;;
5336 *)      dflt='n' ;;
5337 esac
5338 rp="Do you wish to attempt to use the malloc that comes with $package?"
5339 . ./myread
5340 usemymalloc="$ans"
5341 case "$ans" in
5342 y*|true)
5343         usemymalloc='y'
5344         mallocsrc='malloc.c'
5345         mallocobj="malloc$_o"
5346         d_mymalloc="$define"
5347         case "$libs" in
5348         *-lmalloc*)
5349                 : Remove malloc from list of libraries to use
5350                 echo "Removing unneeded -lmalloc from library list" >&4
5351                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5352                 shift
5353                 libs="$*"
5354                 echo "libs = $libs" >&4
5355                 ;;
5356         esac
5357         ;;
5358 *)
5359         usemymalloc='n'
5360         mallocsrc=''
5361         mallocobj=''
5362         d_mymalloc="$undef"
5363         ;;
5364 esac
5365
5366 : compute the return types of malloc and free
5367 echo " "
5368 $cat >malloc.c <<END
5369 #$i_malloc I_MALLOC
5370 #$i_stdlib I_STDLIB
5371 #include <stdio.h>
5372 #include <sys/types.h>
5373 #ifdef I_MALLOC
5374 #include <malloc.h>
5375 #endif
5376 #ifdef I_STDLIB
5377 #include <stdlib.h>
5378 #endif
5379 #ifdef TRY_MALLOC
5380 void *malloc();
5381 #endif
5382 #ifdef TRY_FREE
5383 void free();
5384 #endif
5385 END
5386 case "$malloctype" in
5387 '')
5388         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5389                 malloctype='void *'
5390         else
5391                 malloctype='char *'
5392         fi
5393         ;;
5394 esac
5395 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5396
5397 case "$freetype" in
5398 '')
5399         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5400                 freetype='void'
5401         else
5402                 freetype='int'
5403         fi
5404         ;;
5405 esac
5406 echo "Your system uses $freetype free(), it would seem." >&4
5407 $rm -f malloc.[co]
5408 $cat <<EOM
5409
5410 After $package is installed, you may wish to install various
5411 add-on modules and utilities.  Typically, these add-ons will
5412 be installed under $prefix with the rest
5413 of this package.  However, you may wish to install such add-ons
5414 elsewhere under a different prefix.
5415
5416 If you do not wish to put everything under a single prefix, that's
5417 ok.  You will be prompted for the individual locations; this siteprefix
5418 is only used to suggest the defaults.
5419
5420 The default should be fine for most people.
5421
5422 EOM
5423 fn=d~+
5424 rp='Installation prefix to use for add-on modules and utilities?'
5425 : XXX Here might be another good place for an installstyle setting.
5426 case "$siteprefix" in
5427 '') dflt=$prefix ;;
5428 *)  dflt=$siteprefix ;;
5429 esac
5430 . ./getfile
5431 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5432 oldsiteprefix=''
5433 case "$siteprefix" in
5434 '') ;;
5435 *)      case "$ans" in
5436         "$prefix") ;;
5437         *) oldsiteprefix="$prefix";;
5438         esac
5439         ;;
5440 esac
5441 siteprefix="$ans"
5442 siteprefixexp="$ansexp"
5443
5444 : determine where site specific libraries go.
5445 : Usual default is /usr/local/lib/perl5/site_perl/$version
5446 : The default "style" setting is made in installstyle.U
5447 : XXX No longer works with Prefixit stuff.
5448 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5449 case "$sitelib" in
5450 '') case "$installstyle" in
5451         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5452         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5453         esac
5454         ;;
5455 *)      dflt="$sitelib"
5456         ;;
5457 esac
5458 $cat <<EOM
5459
5460 The installation process will create a directory for
5461 site-specific extensions and modules.  Most users find it convenient
5462 to place all site-specific files in this directory rather than in the
5463 main distribution directory.
5464
5465 EOM
5466 fn=d~+
5467 rp='Pathname for the site-specific library files?'
5468 . ./getfile
5469 sitelib="$ans"
5470 sitelibexp="$ansexp"
5471 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5472 : Change installation prefix, if necessary.
5473 if $test X"$prefix" != X"$installprefix"; then
5474         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5475 else
5476         installsitelib="$sitelibexp"
5477 fi
5478
5479 : determine where site specific architecture-dependent libraries go.
5480 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5481 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5482 : sitelib may have an optional trailing /share.
5483 case "$sitearch" in
5484 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5485         dflt="$dflt/$archname"
5486         ;;
5487 *)      dflt="$sitearch"
5488         ;;
5489 esac
5490 set sitearch sitearch none
5491 eval $prefixit
5492 $cat <<EOM
5493
5494 The installation process will also create a directory for
5495 architecture-dependent site-specific extensions and modules.
5496
5497 EOM
5498 fn=d~+
5499 rp='Pathname for the site-specific architecture-dependent library files?'
5500 . ./getfile
5501 sitearch="$ans"
5502 sitearchexp="$ansexp"
5503 : Change installation prefix, if necessary.
5504 if $test X"$prefix" != X"$installprefix"; then
5505         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5506 else
5507         installsitearch="$sitearchexp"
5508 fi
5509
5510 $cat <<EOM
5511
5512 The installation process will also create a directory for
5513 vendor-supplied add-ons.  Vendors who supply perl with their system
5514 may find it convenient to place all vendor-supplied files in this
5515 directory rather than in the main distribution directory.  This will
5516 ease upgrades between binary-compatible maintenance versions of perl.
5517
5518 Of course you may also use these directories in whatever way you see
5519 fit.  For example, you might use them to access modules shared over a
5520 company-wide network.
5521
5522 The default answer should be fine for most people.
5523 This causes further questions about vendor add-ons to be skipped
5524 and no vendor-specific directories will be configured for perl.
5525
5526 EOM
5527 rp='Do you want to configure vendor-specific add-on directories?'
5528 case "$usevendorprefix" in
5529 define|true|[yY]*) dflt=y ;;
5530 *)      : User may have set vendorprefix directly on Configure command line.
5531         case "$vendorprefix" in
5532         ''|' ') dflt=n ;;
5533         *)      dflt=y ;;
5534         esac
5535         ;;
5536 esac
5537 . ./myread
5538 case "$ans" in
5539 [yY]*)  fn=d~+
5540         rp='Installation prefix to use for vendor-supplied add-ons?'
5541         case "$vendorprefix" in
5542         '') dflt='' ;;
5543         *)  dflt=$vendorprefix ;;
5544         esac
5545         . ./getfile
5546         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5547         oldvendorprefix=''
5548         case "$vendorprefix" in
5549         '') ;;
5550         *)      case "$ans" in
5551                 "$prefix") ;;
5552                 *) oldvendorprefix="$prefix";;
5553                 esac
5554                 ;;
5555         esac
5556         usevendorprefix="$define"
5557         vendorprefix="$ans"
5558         vendorprefixexp="$ansexp"
5559         ;;
5560 *)      usevendorprefix="$undef"
5561         vendorprefix=''
5562         vendorprefixexp=''
5563         ;;
5564 esac
5565
5566 case "$vendorprefix" in
5567 '')     d_vendorlib="$undef"
5568         vendorlib=''
5569         vendorlibexp=''
5570         ;;
5571 *)      d_vendorlib="$define"
5572         : determine where vendor-supplied modules go.
5573         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5574         case "$vendorlib" in
5575         '')
5576                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5577                 case "$installstyle" in
5578                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5579                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5580                 esac
5581                 ;;
5582         *)      dflt="$vendorlib"
5583                 ;;
5584         esac
5585         fn=d~+
5586         rp='Pathname for the vendor-supplied library files?'
5587         . ./getfile
5588         vendorlib="$ans"
5589         vendorlibexp="$ansexp"
5590         ;;
5591 esac
5592 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5593 : Change installation prefix, if necessary.
5594 if $test X"$prefix" != X"$installprefix"; then
5595         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5596 else
5597         installvendorlib="$vendorlibexp"
5598 fi
5599
5600 case "$vendorprefix" in
5601 '')     d_vendorarch="$undef"
5602         vendorarch=''
5603         vendorarchexp=''
5604         ;;
5605 *)      d_vendorarch="$define"
5606         : determine where vendor-supplied architecture-dependent libraries go.
5607         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5608         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5609         : vendorlib may have an optional trailing /share.
5610         case "$vendorarch" in
5611         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5612                 dflt="$dflt/$archname"
5613                 ;;
5614         *)      dflt="$vendorarch" ;;
5615         esac
5616         fn=d~+
5617         rp='Pathname for vendor-supplied architecture-dependent files?'
5618         . ./getfile
5619         vendorarch="$ans"
5620         vendorarchexp="$ansexp"
5621         ;;
5622 esac
5623 : Change installation prefix, if necessary.
5624 if $test X"$prefix" != X"$installprefix"; then
5625         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5626 else
5627         installvendorarch="$vendorarchexp"
5628 fi
5629
5630 : Final catch-all directories to search
5631 $cat <<EOM
5632
5633 Lastly, you can have perl look in other directories for extensions and
5634 modules in addition to those already specified.
5635 These directories will be searched after 
5636         $sitearch 
5637         $sitelib 
5638 EOM
5639 test X"$vendorlib" != "X" && echo '     ' $vendorlib
5640 test X"$vendorarch" != "X" && echo '    ' $vendorarch
5641 echo ' '
5642 case "$otherlibdirs" in
5643 ''|' ') dflt='none' ;;
5644 *)      dflt="$otherlibdirs" ;;
5645 esac
5646 $cat <<EOM
5647 Enter a colon-separated set of extra paths to include in perl's @INC
5648 search path, or enter 'none' for no extra paths.
5649
5650 EOM
5651
5652 rp='Colon-separated list of additional directories for perl to search?'
5653 . ./myread
5654 case "$ans" in
5655 ' '|''|none)    otherlibdirs=' ' ;;     
5656 *)      otherlibdirs="$ans" ;;
5657 esac
5658 case "$otherlibdirs" in
5659 ' ') val=$undef ;;
5660 *)      val=$define ;;
5661 esac
5662 set d_perl_otherlibdirs
5663 eval $setvar
5664
5665 : Cruising for prototypes
5666 echo " "
5667 echo "Checking out function prototypes..." >&4
5668 $cat >prototype.c <<'EOCP'
5669 int main(int argc, char *argv[]) {
5670         exit(0);}
5671 EOCP
5672 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5673         echo "Your C compiler appears to support function prototypes."
5674         val="$define"
5675 else
5676         echo "Your C compiler doesn't seem to understand function prototypes."
5677         val="$undef"
5678 fi
5679 set prototype
5680 eval $setvar
5681 $rm -f prototype*
5682
5683 case "$prototype" in
5684 "$define") ;;
5685 *)      ansi2knr='ansi2knr'
5686         echo " "
5687         cat <<EOM >&4
5688
5689 $me:  FATAL ERROR:
5690 This version of $package can only be compiled by a compiler that 
5691 understands function prototypes.  Unfortunately, your C compiler 
5692         $cc $ccflags
5693 doesn't seem to understand them.  Sorry about that.
5694
5695 If GNU cc is available for your system, perhaps you could try that instead.  
5696
5697 Eventually, we hope to support building Perl with pre-ANSI compilers.
5698 If you would like to help in that effort, please contact <perlbug@perl.org>.
5699
5700 Aborting Configure now.
5701 EOM
5702         exit 2
5703         ;;
5704 esac
5705
5706 : determine where public executables go
5707 echo " "
5708 set dflt bin bin
5709 eval $prefixit
5710 fn=d~
5711 rp='Pathname where the public executables will reside?'
5712 . ./getfile
5713 if $test "X$ansexp" != "X$binexp"; then
5714         installbin=''
5715 fi
5716 bin="$ans"
5717 binexp="$ansexp"
5718 : Change installation prefix, if necessary.
5719 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5720 if $test X"$prefix" != X"$installprefix"; then
5721         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5722 else
5723         installbin="$binexp"
5724 fi
5725
5726 : Find perl5.005 or later.
5727 echo "Looking for a previously installed perl5.005 or later... "
5728 case "$perl5" in
5729 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5730                 : Check if this perl is recent and can load a simple module
5731                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5732                         perl5=$tdir/perl
5733                         break;
5734                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5735                         perl5=$tdir/perl
5736                         break;
5737                 fi
5738         done
5739         ;;
5740 *)      perl5="$perl5"
5741         ;;
5742 esac
5743 case "$perl5" in
5744 '')     echo "None found.  That's ok.";;
5745 *)      echo "Using $perl5." ;;
5746 esac
5747
5748 : Determine list of previous versions to include in @INC
5749 $cat > getverlist <<EOPL
5750 #!$perl5 -w
5751 use File::Basename;
5752 \$api_versionstring = "$api_versionstring";
5753 \$version = "$version";
5754 \$stem = "$sitelib_stem";
5755 \$archname = "$archname";
5756 EOPL
5757         $cat >> getverlist <<'EOPL'
5758 # Can't have leading @ because metaconfig interprets it as a command!
5759 ;@inc_version_list=();
5760 # XXX Redo to do opendir/readdir? 
5761 if (-d $stem) {
5762     chdir($stem);
5763     ;@candidates = glob("5.*");
5764 }
5765 else {
5766     ;@candidates = ();
5767 }
5768
5769 # XXX ToDo:  These comparisons must be reworked when two-digit
5770 # subversions come along, so that 5.7.10 compares as greater than
5771 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5772 # widespread that we can use the built-in version vectors rather
5773 # than reinventing them here.  For 5.6.0, however, we must
5774 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5775 foreach $d (@candidates) {
5776     if ($d lt $version) {
5777         if ($d ge $api_versionstring) {
5778             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5779         }
5780         elsif ($d ge "5.005") {
5781             unshift(@inc_version_list, grep { -d } $d);
5782         }
5783     }
5784     else {
5785         # Skip newer version.  I.e. don't look in
5786         # 5.7.0 if we're installing 5.6.1.
5787     }
5788 }
5789
5790 if (@inc_version_list) {
5791     print join(' ', @inc_version_list);
5792 }
5793 else {
5794     # Blank space to preserve value for next Configure run.
5795     print " ";
5796 }
5797 EOPL
5798 chmod +x getverlist
5799 case "$inc_version_list" in
5800 '')     if test -x "$perl5"; then
5801                 dflt=`$perl5 getverlist`
5802         else
5803                 dflt='none'
5804         fi
5805         ;;
5806 $undef) dflt='none' ;;
5807 *)  dflt="$inc_version_list" ;;
5808 esac
5809 case "$dflt" in
5810 ''|' ') dflt=none ;;
5811 esac
5812 case "$dflt" in
5813 5.005) case "$bincompat5005" in
5814        $define|true|[yY]*) ;;
5815        *) dflt=none ;;
5816        esac
5817        ;;
5818 esac
5819 $cat <<'EOM'
5820
5821 In order to ease the process of upgrading, this version of perl 
5822 can be configured to use modules built and installed with earlier 
5823 versions of perl that were installed under $prefix.  Specify here
5824 the list of earlier versions that this version of perl should check.
5825 If Configure detected no earlier versions of perl installed under
5826 $prefix, then the list will be empty.  Answer 'none' to tell perl
5827 to not search earlier versions.
5828
5829 The default should almost always be sensible, so if you're not sure,
5830 just accept the default.
5831 EOM
5832
5833 rp='List of earlier versions to include in @INC?'
5834 . ./myread
5835 case "$ans" in
5836 [Nn]one|''|' ') inc_version_list=' ' ;;
5837 *) inc_version_list="$ans" ;;
5838 esac
5839 case "$inc_version_list" in
5840 ''|' ') 
5841         inc_version_list_init='0';;
5842 *)      inc_version_list_init=`echo $inc_version_list |
5843                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5844         ;;
5845 esac
5846 $rm -f getverlist
5847
5848 : determine whether to install perl also as /usr/bin/perl
5849
5850 echo " "
5851 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5852         $cat <<EOM
5853 Many scripts expect perl to be installed as /usr/bin/perl.
5854 I can install the perl you are about to compile also as /usr/bin/perl
5855 (in addition to $installbin/perl).
5856 EOM
5857         case "$installusrbinperl" in
5858         "$undef"|[nN]*) dflt='n';;
5859         *)              dflt='y';;
5860         esac
5861         rp="Do you want to install perl as /usr/bin/perl?"
5862         . ./myread
5863         case "$ans" in
5864         [yY]*)  val="$define";;
5865         *)      val="$undef" ;;
5866         esac
5867 else
5868         val="$undef"
5869 fi
5870 set installusrbinperl
5871 eval $setvar
5872
5873 echo " "
5874 echo "Checking for GNU C Library..." >&4
5875 cat >gnulibc.c <<EOM
5876 #include <stdio.h>
5877 int main()
5878 {
5879 #ifdef __GLIBC__
5880     exit(0);
5881 #else
5882     exit(1);
5883 #endif
5884 }
5885 EOM
5886 set gnulibc
5887 if eval $compile_ok && ./gnulibc; then
5888         val="$define"
5889         echo "You are using the GNU C Library"
5890 else
5891         val="$undef"
5892         echo "You are not using the GNU C Library"
5893 fi
5894 $rm -f gnulibc*
5895 set d_gnulibc
5896 eval $setvar
5897
5898 : see if nm is to be used to determine whether a symbol is defined or not
5899 case "$usenm" in
5900 '')
5901         dflt=''
5902         case "$d_gnulibc" in
5903         "$define")
5904                 echo " "
5905                 echo "nm probably won't work on the GNU C Library." >&4
5906                 dflt=n
5907                 ;;
5908         esac
5909         case "$dflt" in
5910         '') 
5911                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5912                         echo " "
5913                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5914                         echo "'nm' won't be sufficient on this sytem." >&4
5915                         dflt=n
5916                 fi
5917                 ;;
5918         esac
5919         case "$dflt" in
5920         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5921                 if $test $dflt -gt 20; then
5922                         dflt=y
5923                 else
5924                         dflt=n
5925                 fi
5926                 ;;
5927         esac
5928         ;;
5929 *)
5930         case "$usenm" in
5931         true|$define) dflt=y;;
5932         *) dflt=n;;
5933         esac
5934         ;;
5935 esac
5936 $cat <<EOM
5937
5938 I can use $nm to extract the symbols from your C libraries. This
5939 is a time consuming task which may generate huge output on the disk (up
5940 to 3 megabytes) but that should make the symbols extraction faster. The
5941 alternative is to skip the 'nm' extraction part and to compile a small
5942 test program instead to determine whether each symbol is present. If
5943 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5944 this may be the best solution.
5945
5946 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5947
5948 EOM
5949 rp="Shall I use $nm to extract C symbols from the libraries?"
5950 . ./myread
5951 case "$ans" in
5952 [Nn]*) usenm=false;;
5953 *) usenm=true;;
5954 esac
5955
5956 runnm=$usenm
5957 case "$reuseval" in
5958 true) runnm=false;;
5959 esac
5960
5961 : nm options which may be necessary
5962 case "$nm_opt" in
5963 '') if $test -f /mach_boot; then
5964                 nm_opt=''       # Mach
5965         elif $test -d /usr/ccs/lib; then
5966                 nm_opt='-p'     # Solaris (and SunOS?)
5967         elif $test -f /dgux; then
5968                 nm_opt='-p'     # DG-UX
5969         elif $test -f /lib64/rld; then
5970                 nm_opt='-p'     # 64-bit Irix
5971         else
5972                 nm_opt=''
5973         fi;;
5974 esac
5975
5976 : nm options which may be necessary for shared libraries but illegal
5977 : for archive libraries.  Thank you, Linux.
5978 case "$nm_so_opt" in
5979 '')     case "$myuname" in
5980         *linux*)
5981                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5982                         nm_so_opt='--dynamic'
5983                 fi
5984                 ;;
5985         esac
5986         ;;
5987 esac
5988
5989 case "$runnm" in
5990 true)
5991 : get list of predefined functions in a handy place
5992 echo " "
5993 case "$libc" in
5994 '') libc=unknown
5995         case "$libs" in
5996         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5997         esac
5998         ;;
5999 esac
6000 libnames='';
6001 case "$libs" in
6002 '') ;;
6003 *)  for thislib in $libs; do
6004         case "$thislib" in
6005         -lc|-lc_s)
6006                 : Handle C library specially below.
6007                 ;;
6008         -l*)
6009                 thislib=`echo $thislib | $sed -e 's/^-l//'`
6010                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
6011                         :
6012                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
6013                         :
6014                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
6015                         :
6016                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
6017                         :
6018                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
6019                         :
6020                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
6021                         :
6022                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
6023                         :
6024                 else
6025                         try=''
6026                 fi
6027                 libnames="$libnames $try"
6028                 ;;
6029         *) libnames="$libnames $thislib" ;;
6030         esac
6031         done
6032         ;;
6033 esac
6034 xxx=normal
6035 case "$libc" in
6036 unknown)
6037         set /lib/libc.$so
6038         for xxx in $libpth; do
6039                 $test -r $1 || set $xxx/libc.$so
6040                 : The messy sed command sorts on library version numbers.
6041                 $test -r $1 || \
6042                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
6043                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
6044                                 h
6045                                 s/[0-9][0-9]*/0000&/g
6046                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
6047                                 G
6048                                 s/\n/ /' | \
6049                          sort | $sed -e 's/^.* //'`
6050                 eval set \$$#
6051         done
6052         $test -r $1 || set /usr/ccs/lib/libc.$so
6053         $test -r $1 || set /lib/libsys_s$_a
6054         ;;
6055 *)
6056         set blurfl
6057         ;;
6058 esac
6059 if $test -r "$1"; then
6060         echo "Your (shared) C library seems to be in $1."
6061         libc="$1"
6062 elif $test -r /lib/libc && $test -r /lib/clib; then
6063         echo "Your C library seems to be in both /lib/clib and /lib/libc."
6064         xxx=apollo
6065         libc='/lib/clib /lib/libc'
6066         if $test -r /lib/syslib; then
6067                 echo "(Your math library is in /lib/syslib.)"
6068                 libc="$libc /lib/syslib"
6069         fi
6070 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6071         echo "Your C library seems to be in $libc, as you said before."
6072 elif $test -r $incpath/usr/lib/libc$_a; then
6073         libc=$incpath/usr/lib/libc$_a;
6074         echo "Your C library seems to be in $libc.  That's fine."
6075 elif $test -r /lib/libc$_a; then
6076         libc=/lib/libc$_a;
6077         echo "Your C library seems to be in $libc.  You're normal."
6078 else
6079         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
6080                 :
6081         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
6082                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
6083         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
6084                 :
6085         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6086                 :
6087         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6088                 :
6089         else
6090                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
6091         fi
6092         if $test -r "$tans"; then
6093                 echo "Your C library seems to be in $tans, of all places."
6094                 libc=$tans
6095         else
6096                 libc='blurfl'
6097         fi
6098 fi
6099 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6100         dflt="$libc"
6101         cat <<EOM
6102
6103 If the guess above is wrong (which it might be if you're using a strange
6104 compiler, or your machine supports multiple models), you can override it here.
6105
6106 EOM
6107 else
6108         dflt=''
6109         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
6110         cat >&4 <<EOM
6111 I can't seem to find your C library.  I've looked in the following places:
6112
6113 EOM
6114         $sed 's/^/      /' libpath
6115         cat <<EOM
6116
6117 None of these seems to contain your C library. I need to get its name...
6118
6119 EOM
6120 fi
6121 fn=f
6122 rp='Where is your C library?'
6123 . ./getfile
6124 libc="$ans"
6125
6126 echo " "
6127 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
6128 set X `cat libnames`
6129 shift
6130 xxx=files
6131 case $# in 1) xxx=file; esac
6132 echo "Extracting names from the following $xxx for later perusal:" >&4
6133 echo " "
6134 $sed 's/^/      /' libnames >&4
6135 echo " "
6136 $echo $n "This may take a while...$c" >&4
6137
6138 for file in $*; do
6139         case $file in
6140         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6141         *) $nm $nm_opt $file 2>/dev/null;;
6142         esac
6143 done >libc.tmp
6144
6145 $echo $n ".$c"
6146 $grep fprintf libc.tmp > libc.ptf
6147 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6148 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6149 xxx='[ADTSIW]'
6150 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
6151         eval $xscan;\
6152         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6153                 eval $xrun
6154 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6155         eval $xscan;\
6156         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6157                 eval $xrun
6158 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6159         eval $xscan;\
6160         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6161                 eval $xrun
6162 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6163         eval $xscan;\
6164         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6165                 eval $xrun
6166 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6167         eval $xscan;\
6168         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6169                 eval $xrun
6170 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6171         eval $xscan;\
6172         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6173                 eval $xrun
6174 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6175                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6176         eval $xscan;\
6177         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6178                 eval $xrun
6179 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6180         eval $xscan;\
6181         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6182                 eval $xrun
6183 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6184         eval $xscan;\
6185         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6186                 eval $xrun
6187 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6188         eval $xscan;\
6189         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6190                 eval $xrun
6191 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6192         eval $xscan;\
6193         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6194                 eval $xrun
6195 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6196         eval $xscan;\
6197         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6198                 eval $xrun
6199 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6200         eval $xscan;\
6201         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6202                 eval $xrun
6203 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6204         eval $xscan;\
6205         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6206                 eval $xrun
6207 else
6208         $nm -p $* 2>/dev/null >libc.tmp
6209         $grep fprintf libc.tmp > libc.ptf
6210         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6211                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6212         then
6213                 nm_opt='-p'
6214                 eval $xrun
6215         else
6216                 echo " "
6217                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6218                 com=''
6219                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6220                         for thisname in $libnames $libc; do
6221                                 $ar t $thisname >>libc.tmp
6222                         done
6223                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6224                         echo "Ok." >&4
6225                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6226                         # Repeat libc to extract forwarders to DLL entries too
6227                         for thisname in $libnames $libc; do
6228                                 $ar tv $thisname >>libc.tmp
6229                                 # Revision 50 of EMX has bug in $ar.
6230                                 # it will not extract forwarders to DLL entries
6231                                 # Use emximp which will extract exactly them.
6232                                 emximp -o tmp.imp $thisname \
6233                                     2>/dev/null && \
6234                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6235                                     < tmp.imp >>libc.tmp
6236                                 $rm tmp.imp
6237                         done
6238                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6239                         echo "Ok." >&4
6240                 else
6241                         echo "$ar didn't seem to work right." >&4
6242                         echo "Maybe this is a Cray...trying bld instead..." >&4
6243                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6244                         then
6245                                 for thisname in $libnames; do
6246                                         bld t $libnames | \
6247                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6248                                         $ar t $thisname >>libc.tmp
6249                                 done
6250                                 echo "Ok." >&4
6251                         else
6252                                 echo "That didn't work either.  Giving up." >&4
6253                                 exit 1
6254                         fi
6255                 fi
6256         fi
6257 fi
6258 nm_extract="$com"
6259 if $test -f /lib/syscalls.exp; then
6260         echo " "
6261         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6262         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6263 fi
6264 ;;
6265 esac
6266 $rm -f libnames libpath
6267
6268 : see if dld is available
6269 set dld.h i_dld
6270 eval $inhdr
6271
6272 : is a C symbol defined?
6273 csym='tlook=$1;
6274 case "$3" in
6275 -v) tf=libc.tmp; tc=""; tdc="";;
6276 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6277 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6278 esac;
6279 tx=yes;
6280 case "$reuseval-$4" in
6281 true-) ;;
6282 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6283 esac;
6284 case "$tx" in
6285 yes)
6286         case "$runnm" in
6287         true)
6288                 if $contains $tlook $tf >/dev/null 2>&1;
6289                 then tval=true;
6290                 else tval=false;
6291                 fi;;
6292         *)
6293                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6294                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6295                 then tval=true;
6296                 else tval=false;
6297                 fi;
6298                 $rm -f t t.c;;
6299         esac;;
6300 *)
6301         case "$tval" in
6302         $define) tval=true;;
6303         *) tval=false;;
6304         esac;;
6305 esac;
6306 eval "$2=$tval"'
6307
6308 : define an is-in-libc? function
6309 inlibc='echo " "; td=$define; tu=$undef;
6310 sym=$1; var=$2; eval "was=\$$2";
6311 tx=yes;
6312 case "$reuseval$was" in
6313 true) ;;
6314 true*) tx=no;;
6315 esac;
6316 case "$tx" in
6317 yes)
6318         set $sym tres -f;
6319         eval $csym;
6320         case "$tres" in
6321         true)
6322                 echo "$sym() found." >&4;
6323                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6324         *)
6325                 echo "$sym() NOT found." >&4;
6326                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6327         esac;;
6328 *)
6329         case "$was" in
6330         $define) echo "$sym() found." >&4;;
6331         *) echo "$sym() NOT found." >&4;;
6332         esac;;
6333 esac'
6334
6335 : see if dlopen exists
6336 xxx_runnm="$runnm"
6337 runnm=false
6338 set dlopen d_dlopen
6339 eval $inlibc
6340 runnm="$xxx_runnm"
6341
6342 : determine which dynamic loading, if any, to compile in
6343 echo " "
6344 dldir="ext/DynaLoader"
6345 case "$usedl" in
6346 $define|y|true)
6347         dflt='y'
6348         usedl="$define"
6349         ;;
6350 $undef|n|false)
6351         dflt='n'
6352         usedl="$undef"
6353         ;;
6354 *) 
6355         dflt='n'
6356         case "$d_dlopen" in
6357             $define) dflt='y' ;;
6358         esac
6359         case "$i_dld" in
6360             $define) dflt='y' ;;
6361         esac
6362         : Does a dl_xxx.xs file exist for this operating system
6363         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6364         ;;
6365 esac
6366 rp="Do you wish to use dynamic loading?"
6367 . ./myread
6368 usedl="$ans"
6369 case "$ans" in
6370 y*) usedl="$define"
6371         case "$dlsrc" in
6372         '')
6373                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6374                         dflt="$dldir/dl_${osname}.xs"
6375                 elif $test "$d_dlopen" = "$define" ; then
6376                         dflt="$dldir/dl_dlopen.xs"
6377                 elif $test "$i_dld" = "$define" ; then
6378                         dflt="$dldir/dl_dld.xs"
6379                 else
6380                         dflt=''
6381                 fi
6382                 ;;
6383         *)      dflt="$dldir/$dlsrc"
6384                 ;;
6385         esac
6386     echo "The following dynamic loading files are available:"
6387         : Can not go over to $dldir because getfile has path hard-coded in.
6388         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6389         rp="Source file to use for dynamic loading"
6390         fn="fne"
6391         gfpth="$src"
6392         . ./getfile
6393         usedl="$define"
6394         : emulate basename
6395         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6396
6397         $cat << EOM
6398
6399 Some systems may require passing special flags to $cc -c to
6400 compile modules that will be used to create a shared library.
6401 To use no flags, say "none".
6402
6403 EOM
6404     case "$cccdlflags" in
6405     '') case "$gccversion" in
6406                 '') case "$osname" in
6407                         hpux)   dflt='+z' ;;
6408                         next)   dflt='none' ;;
6409                         irix*)  dflt='-KPIC' ;;
6410                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6411                         sunos)  dflt='-pic' ;;
6412                         *)      dflt='none' ;;
6413                     esac
6414                         ;;
6415                 *)  case "$osname" in
6416                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6417                         *)      dflt='-fpic' ;;
6418                     esac ;;
6419             esac ;;
6420         ' ') dflt='none' ;;
6421     *)  dflt="$cccdlflags" ;;
6422     esac
6423     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6424     . ./myread
6425     case "$ans" in
6426     none) cccdlflags=' ' ;;
6427     *) cccdlflags="$ans" ;;
6428     esac
6429
6430     cat << EOM
6431
6432 Some systems use ld to create libraries that can be dynamically loaded,
6433 while other systems (such as those using ELF) use $cc.
6434
6435 EOM
6436         case "$ld" in
6437         '')     $cat >try.c <<'EOM'
6438 /* Test for whether ELF binaries are produced */
6439 #include <fcntl.h>
6440 #include <stdlib.h>
6441 int main() {
6442         char b[4];
6443         int i = open("a.out",O_RDONLY);
6444         if(i == -1) 
6445                 exit(1); /* fail */
6446         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6447                 exit(0); /* succeed (yes, it's ELF) */
6448         else
6449                 exit(1); /* fail */
6450 }
6451 EOM
6452                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6453                         cat <<EOM
6454 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6455 EOM
6456                         dflt="$cc"
6457                 else
6458                         echo "I'll use ld to build dynamic libraries."
6459                         dflt='ld'
6460                 fi
6461                 rm -f try.c a.out
6462                 ;;
6463         *)      dflt="$ld"
6464                 ;;
6465         esac
6466
6467     rp="What command should be used to create dynamic libraries?"
6468     . ./myread
6469         ld="$ans"
6470
6471     cat << EOM
6472
6473 Some systems may require passing special flags to $ld to create a
6474 library that can be dynamically loaded.  If your ld flags include
6475 -L/other/path options to locate libraries outside your loader's normal
6476 search path, you may need to specify those -L options here as well.  To
6477 use no flags, say "none".
6478
6479 EOM
6480     case "$lddlflags" in
6481     '') case "$osname" in
6482                         beos) dflt='-nostart' ;;
6483                         hpux) dflt='-b';
6484                               case "$gccversion" in
6485                               '') dflt="$dflt +vnocompatwarnings" ;;
6486                               esac
6487                               ;;        
6488                         linux|irix*)    dflt='-shared' ;;
6489                         next)  dflt='none' ;;
6490                         solaris) dflt='-G' ;;
6491                         sunos) dflt='-assert nodefinitions' ;;
6492                         svr4*|esix*) dflt="-G $ldflags" ;;
6493                 *)     dflt='none' ;;
6494                         esac
6495                         ;;
6496     *) dflt="$lddlflags" ;;
6497     esac
6498
6499         : Try to guess additional flags to pick up local libraries.
6500         : Be careful not to append to a plain 'none'
6501         case "$dflt" in
6502         none) dflt='' ;;
6503         esac
6504         for thisflag in $ldflags; do
6505                 case "$thisflag" in
6506                 -L*)
6507                         case " $dflt " in
6508                         *" $thisflag "*) ;;
6509                         *) dflt="$dflt $thisflag" ;;
6510                         esac
6511                         ;;
6512                 esac
6513         done
6514
6515         case "$dflt" in
6516         ''|' ') dflt='none' ;;
6517         esac
6518
6519     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6520     . ./myread
6521     case "$ans" in
6522     none) lddlflags=' ' ;;
6523     *) lddlflags="$ans" ;;
6524     esac
6525
6526         cat <<EOM
6527
6528 Some systems may require passing special flags to $cc to indicate that
6529 the resulting executable will use dynamic linking.  To use no flags,
6530 say "none".
6531
6532 EOM
6533     case "$ccdlflags" in
6534     '') case "$osname" in
6535                 hpux)   dflt='-Wl,-E' ;;
6536                 linux)  dflt='-rdynamic' ;;
6537                 next)   dflt='none' ;;
6538                 sunos)  dflt='none' ;;
6539                 *)      dflt='none' ;;
6540             esac ;;
6541     ' ')  dflt='none' ;;
6542     *)  dflt="$ccdlflags" ;;
6543     esac
6544     rp="Any special flags to pass to $cc to use dynamic linking?"
6545     . ./myread
6546     case "$ans" in
6547     none) ccdlflags=' ' ;;
6548     *) ccdlflags="$ans" ;;
6549     esac
6550     ;;
6551 *)  usedl="$undef"
6552         ld='ld'
6553     dlsrc='dl_none.xs'
6554     lddlflags=''
6555     ccdlflags=''
6556     ;;
6557 esac
6558
6559 also=''
6560 case "$usedl" in
6561 $undef)
6562         # No dynamic loading being used, so don't bother even to prompt.
6563         useshrplib='false'
6564         ;;
6565 *)      case "$useshrplib" in
6566         '')     case "$osname" in
6567                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6568                         dflt=y
6569                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6570                         ;;
6571                 next*)
6572                         case "$osvers" in
6573                         4*)     dflt=y
6574                                 also='Building a shared libperl is needed for MAB support.'
6575                                 ;;
6576                         *)      dflt=n
6577                                 ;;
6578                         esac
6579                         ;;
6580                 *)      dflt=n
6581                         ;;
6582                 esac
6583                 ;;
6584         $define|true|[Yy]*)
6585                 dflt=y
6586                 ;;
6587         *)      dflt=n
6588                 ;;
6589         esac
6590         $cat << EOM
6591
6592 The perl executable is normally obtained by linking perlmain.c with
6593 libperl${_a}, any static extensions (usually just DynaLoader), and
6594 any other libraries needed on this system (such as -lm, etc.).  Since
6595 your system supports dynamic loading, it is probably possible to build
6596 a shared libperl.$so.  If you will have more than one executable linked
6597 to libperl.$so, this will significantly reduce the size of each
6598 executable, but it may have a noticeable affect on performance.  The
6599 default is probably sensible for your system.
6600 $also
6601
6602 EOM
6603         rp="Build a shared libperl.$so (y/n)"
6604         . ./myread
6605         case "$ans" in
6606         true|$define|[Yy]*)
6607                 useshrplib='true'  ;;
6608         *)      useshrplib='false' ;;
6609         esac
6610         ;;
6611 esac
6612
6613 case "$useshrplib" in
6614 true)
6615         case "$libperl" in
6616         '')
6617                 # Figure out a good name for libperl.so.  Since it gets stored in
6618                 # a version-specific architecture-dependent library, the version
6619                 # number isn't really that important, except for making cc/ld happy.
6620                 #
6621                 # A name such as libperl.so.3.1
6622                 majmin="libperl.$so.$patchlevel.$subversion"
6623                 # A name such as libperl.so.301
6624                 majonly=`echo $patchlevel $subversion |
6625                         $awk '{printf "%d%02d", $1, $2}'`
6626                 majonly=libperl.$so.$majonly
6627                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6628                 # rely on figuring it out from the naming of libc.
6629                 case "${osname}${osvers}" in
6630                 next4*)
6631                         dflt=libperl.5.$so
6632                         # XXX How handle the --version stuff for MAB?
6633                         ;;
6634                 linux*)  # ld won't link with a bare -lperl otherwise.
6635                         dflt=libperl.$so
6636                         ;;
6637                 cygwin*) # include version
6638                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6639                         ;;
6640                 *)      # Try to guess based on whether libc has major.minor.
6641                         case "$libc" in
6642                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6643                         *libc.$so.[0-9]*) dflt=$majonly ;;
6644                         *)      dflt=libperl.$so ;;
6645                         esac
6646                         ;;
6647                 esac
6648                 ;;
6649         *)      dflt=$libperl
6650                 ;;
6651         esac
6652         cat << EOM
6653
6654 I need to select a good name for the shared libperl.  If your system uses
6655 library names with major and minor numbers, then you might want something
6656 like $majmin.  Alternatively, if your system uses a single version
6657 number for shared libraries, then you might want to use $majonly.
6658 Or, your system might be quite happy with a simple libperl.$so.
6659
6660 Since the shared libperl will get installed into a version-specific
6661 architecture-dependent directory, the version number of the shared perl
6662 library probably isn't important, so the default should be o.k.
6663
6664 EOM
6665         rp='What name do you want to give to the shared libperl?'
6666         . ./myread
6667         libperl=$ans
6668         echo "Ok, I'll use $libperl"
6669         ;;
6670 *)
6671         libperl="libperl${_a}"
6672         ;;
6673 esac
6674
6675 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6676 case "$shrpdir" in
6677 '') ;;
6678 *)      $cat >&4 <<EOM
6679 WARNING:  Use of the shrpdir variable for the installation location of
6680 the shared $libperl is not supported.  It was never documented and
6681 will not work in this version.  Let me (perlbug@perl.com)
6682 know of any problems this may cause.
6683
6684 EOM
6685         case "$shrpdir" in
6686         "$archlibexp/CORE")
6687                 $cat >&4 <<EOM
6688 But your current setting of $shrpdir is
6689 the default anyway, so it's harmless.
6690 EOM
6691                 ;;
6692         *)
6693                 $cat >&4 <<EOM
6694 Further, your current attempted setting of $shrpdir
6695 conflicts with the value of $archlibexp/CORE
6696 that installperl will use.
6697 EOM
6698                 ;;
6699         esac
6700         ;;
6701 esac
6702
6703 # How will the perl executable find the installed shared $libperl?
6704 # Add $xxx to ccdlflags.
6705 # If we can't figure out a command-line option, use $shrpenv to
6706 # set env LD_RUN_PATH.  The main perl makefile uses this.
6707 shrpdir=$archlibexp/CORE
6708 xxx=''
6709 tmp_shrpenv=''
6710 if "$useshrplib"; then
6711     case "$osname" in 
6712         aix)
6713                 # We'll set it in Makefile.SH...
6714                 ;;
6715         solaris|netbsd)
6716                 xxx="-R $shrpdir"
6717                 ;;
6718         freebsd)
6719                 xxx="-Wl,-R$shrpdir"
6720                 ;;
6721         linux|irix*|dec_osf)
6722                 xxx="-Wl,-rpath,$shrpdir"
6723                 ;;
6724         next)
6725                 # next doesn't like the default...
6726                 ;;
6727         beos)
6728                 # beos doesn't like the default, either.
6729                 ;;
6730         hpux*)
6731                 # hpux doesn't like the default, either.
6732                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6733                 ;;
6734         *)
6735                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6736                 ;;
6737         esac
6738         case "$xxx" in
6739         '') ;;
6740         *)      
6741                 # Only add $xxx if it isn't already in ccdlflags.
6742                 case " $ccdlflags " in
6743                 *" $xxx "*)     ;;
6744                 *)      ccdlflags="$ccdlflags $xxx"
6745                         cat <<EOM >&4
6746
6747 Adding $xxx to the flags
6748 passed to $ld so that the perl executable will find the 
6749 installed shared $libperl.
6750
6751 EOM
6752                         ;;
6753                 esac
6754                 ;;
6755         esac
6756 fi
6757 # Fix ccdlflags in AIX for building external extensions.
6758 # (For building Perl itself bare -bE:perl.exp is needed,
6759 #  Makefile.SH takes care of this.)
6760 case "$osname" in
6761 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6762 esac
6763 # Respect a hint or command-line value.
6764 case "$shrpenv" in
6765 '') shrpenv="$tmp_shrpenv" ;;
6766 esac
6767 case "$ldlibpthname" in
6768 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6769 none)   ldlibpthname='' ;;
6770 esac
6771
6772 : determine where manual pages go
6773 set man1dir man1dir none
6774 eval $prefixit
6775 $cat <<EOM
6776
6777 $spackage has manual pages available in source form.
6778 EOM
6779 case "$nroff" in
6780 nroff)
6781         echo "However, you don't have nroff, so they're probably useless to you."
6782         case "$man1dir" in
6783         '') man1dir="none";;
6784         esac;;
6785 esac
6786 echo "If you don't want the manual sources installed, answer 'none'."
6787 case "$man1dir" in
6788 ' ') dflt=none
6789         ;;
6790 '')
6791         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6792         lookpath="$lookpath $prefixexp/man/p_man/man1"
6793         lookpath="$lookpath $prefixexp/man/u_man/man1"
6794         lookpath="$lookpath $prefixexp/man/man.1"
6795         case "$sysman" in
6796         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6797         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6798         esac
6799         set dflt
6800         eval $prefixup
6801         ;;
6802 *)  dflt="$man1dir"
6803         ;;
6804 esac
6805 echo " "
6806 fn=dn+~
6807 rp="Where do the main $spackage manual pages (source) go?"
6808 . ./getfile
6809 if $test "X$man1direxp" != "X$ansexp"; then
6810         installman1dir=''
6811 fi
6812 man1dir="$ans"
6813 man1direxp="$ansexp"
6814 case "$man1dir" in
6815 '')     man1dir=' '
6816         installman1dir='';;
6817 esac
6818
6819 : Change installation prefix, if necessary.
6820 if $test X"$prefix" != X"$installprefix"; then
6821         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6822 else
6823         installman1dir="$man1direxp"
6824 fi
6825
6826 : What suffix to use on installed man pages
6827
6828 case "$man1dir" in
6829 ' ')
6830         man1ext='0'
6831         ;;
6832 *)
6833         rp="What suffix should be used for the main $spackage man pages?"
6834         case "$man1ext" in
6835         '')     case "$man1dir" in
6836                 *1)  dflt=1 ;;
6837                 *1p) dflt=1p ;;
6838                 *1pm) dflt=1pm ;;
6839                 *l) dflt=l;;
6840                 *n) dflt=n;;
6841                 *o) dflt=o;;
6842                 *p) dflt=p;;
6843                 *C) dflt=C;;
6844                 *L) dflt=L;;
6845                 *L1) dflt=L1;;
6846                 *) dflt=1;;
6847                 esac
6848                 ;;
6849         *)      dflt="$man1ext";;
6850         esac
6851         . ./myread
6852         man1ext="$ans"
6853         ;;
6854 esac
6855
6856 : see if we can have long filenames
6857 echo " "
6858 first=123456789abcdef
6859 $rm -f $first
6860 if (echo hi >$first) 2>/dev/null; then
6861         if $test -f 123456789abcde; then
6862                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6863                 val="$undef"
6864         else
6865                 echo 'You can have filenames longer than 14 characters.'>&4
6866                 val="$define"
6867         fi
6868 else
6869         $cat <<'EOM'
6870 You can't have filenames longer than 14 chars.
6871 You can't even think about them!
6872 EOM
6873         val="$undef"
6874 fi 
6875 set d_flexfnam
6876 eval $setvar
6877 $rm -rf 123456789abcde*
6878
6879 : determine where library module manual pages go
6880 set man3dir man3dir none
6881 eval $prefixit
6882 $cat <<EOM
6883
6884 $spackage has manual pages for many of the library modules.
6885 EOM
6886
6887 case "$nroff" in
6888 nroff)
6889         $cat <<'EOM'
6890 However, you don't have nroff, so they're probably useless to you.
6891 EOM
6892         case "$man3dir" in
6893         '') man3dir="none";;
6894         esac;;
6895 esac
6896
6897 case "$d_flexfnam" in
6898 undef)
6899         $cat <<'EOM'
6900 However, your system can't handle the long file names like File::Basename.3. 
6901 EOM
6902         case "$man3dir" in
6903         '') man3dir="none";;
6904         esac;;
6905 esac
6906
6907 echo "If you don't want the manual sources installed, answer 'none'."
6908 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6909 case "$man3dir" in
6910 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6911         if $test -d "$privlib/man/man3"; then
6912                 cat <<EOM >&4
6913
6914 WARNING:  Previous versions of perl installed man3 pages into
6915 $privlib/man/man3.  This version will suggest a 
6916 new default of $dflt.  
6917 EOM
6918                 tdflt=$dflt
6919                 dflt='n'
6920                 rp='Do you wish to preserve the old behavior?(y/n)'
6921                 . ./myread
6922                 case "$ans" in
6923                 y*) dflt="$privlib/man/man3" ;;
6924                 *)  dflt=$tdflt ;;
6925                 esac
6926     fi
6927         ;;
6928 *)      dflt="$man3dir" ;;
6929 esac
6930 case "$dflt" in
6931 ' ') dflt=none ;;
6932 esac
6933 echo " "
6934 fn=dn+~
6935 rp="Where do the $package library man pages (source) go?"
6936 . ./getfile
6937 man3dir="$ans"
6938 man3direxp="$ansexp"
6939 case "$man3dir" in
6940 '')     man3dir=' '
6941         installman3dir='';;
6942 esac
6943
6944 : Change installation prefix, if necessary.
6945 if $test X"$prefix" != X"$installprefix"; then
6946         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6947 else
6948         installman3dir="$man3direxp"
6949 fi
6950
6951 : What suffix to use on installed man pages
6952 case "$man3dir" in
6953 ' ')
6954         man3ext='0'
6955         ;;
6956 *)
6957         rp="What suffix should be used for the $package library man pages?"
6958         case "$man3ext" in
6959         '')     case "$man3dir" in
6960                 *3)  dflt=3 ;;
6961                 *3p) dflt=3p ;;
6962                 *3pm) dflt=3pm ;;
6963                 *l) dflt=l;;
6964                 *n) dflt=n;;
6965                 *o) dflt=o;;
6966                 *p) dflt=p;;
6967                 *C) dflt=C;;
6968                 *L) dflt=L;;
6969                 *L3) dflt=L3;;
6970                 *) dflt=3;;
6971                 esac
6972                 ;;
6973         *)      dflt="$man3ext";;
6974         esac
6975         . ./myread
6976         man3ext="$ans"
6977         ;;
6978 esac
6979
6980 : see if we have to deal with yellow pages, now NIS.
6981 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6982         if $test -f /usr/etc/nibindd; then
6983                 echo " "
6984                 echo "I'm fairly confident you're on a NeXT."
6985                 echo " "
6986                 rp='Do you get the hosts file via NetInfo?'
6987                 dflt=y
6988                 case "$hostcat" in
6989                 nidump*) ;;
6990                 '') ;;
6991                 *) dflt=n;;
6992                 esac
6993                 . ./myread
6994                 case "$ans" in
6995                 y*) hostcat='nidump hosts .';;
6996                 *)      case "$hostcat" in
6997                         nidump*) hostcat='';;
6998                         esac
6999                         ;;
7000                 esac
7001         fi
7002         case "$hostcat" in
7003         nidump*) ;;
7004         *)
7005                 case "$hostcat" in
7006                 *ypcat*) dflt=y;;
7007                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7008                                 dflt=y
7009                         else
7010                                 dflt=n
7011                         fi;;
7012                 *) dflt=n;;
7013                 esac
7014                 echo " "
7015                 rp='Are you getting the hosts file via yellow pages?'
7016                 . ./myread
7017                 case "$ans" in
7018                 y*) hostcat='ypcat hosts';;
7019                 *) hostcat='cat /etc/hosts';;
7020                 esac
7021                 ;;
7022         esac
7023 fi
7024 case "$hostcat" in
7025 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7026 esac
7027 case "$groupcat" in
7028 '') test -f /etc/group && groupcat='cat /etc/group';;
7029 esac
7030 case "$passcat" in
7031 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7032 esac
7033
7034 : now get the host name
7035 echo " "
7036 echo "Figuring out host name..." >&4
7037 case "$myhostname" in
7038 '') cont=true
7039         echo 'Maybe "hostname" will work...'
7040         if tans=`sh -c hostname 2>&1` ; then
7041                 myhostname=$tans
7042                 phostname=hostname
7043                 cont=''
7044         fi
7045         ;;
7046 *) cont='';;
7047 esac
7048 if $test "$cont"; then
7049         if ./xenix; then
7050                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7051                 if tans=`cat /etc/systemid 2>&1` ; then
7052                         myhostname=$tans
7053                         phostname='cat /etc/systemid'
7054                         echo "Whadyaknow.  Xenix always was a bit strange..."
7055                         cont=''
7056                 fi
7057         elif $test -r /etc/systemid; then
7058                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7059         fi
7060 fi
7061 if $test "$cont"; then
7062         echo 'No, maybe "uuname -l" will work...'
7063         if tans=`sh -c 'uuname -l' 2>&1` ; then
7064                 myhostname=$tans
7065                 phostname='uuname -l'
7066         else
7067                 echo 'Strange.  Maybe "uname -n" will work...'
7068                 if tans=`sh -c 'uname -n' 2>&1` ; then
7069                         myhostname=$tans
7070                         phostname='uname -n'
7071                 else
7072                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7073                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7074                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7075                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7076                         else
7077                                 case "$myhostname" in
7078                                 '') echo "Does this machine have an identity crisis or something?"
7079                                         phostname='';;
7080                                 *)
7081                                         echo "Well, you said $myhostname before..."
7082                                         phostname='echo $myhostname';;
7083                                 esac
7084                         fi
7085                 fi
7086         fi
7087 fi
7088 : you do not want to know about this
7089 set $myhostname
7090 myhostname=$1
7091
7092 : verify guess
7093 if $test "$myhostname" ; then
7094         dflt=y
7095         rp='Your host name appears to be "'$myhostname'".'" Right?"
7096         . ./myread
7097         case "$ans" in
7098         y*) ;;
7099         *) myhostname='';;
7100         esac
7101 fi
7102
7103 : bad guess or no guess
7104 while $test "X$myhostname" = X ; do
7105         dflt=''
7106         rp="Please type the (one word) name of your host:"
7107         . ./myread
7108         myhostname="$ans"
7109 done
7110
7111 : translate upper to lower if necessary
7112 case "$myhostname" in
7113 *[A-Z]*)
7114         echo "(Normalizing case in your host name)"
7115         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7116         ;;
7117 esac
7118
7119 case "$myhostname" in
7120 *.*)
7121         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7122         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7123         echo "(Trimming domain name from host name--host name is now $myhostname)"
7124         ;;
7125 *) case "$mydomain" in
7126         '')
7127                 {
7128                         test "X$hostcat" = "Xypcat hosts" &&
7129                         ypmatch "$myhostname" hosts 2>/dev/null |\
7130                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7131                         $test -s hosts
7132                 } || {
7133                         test "X$hostcat" != "X" &&
7134                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7135                                         /[       ]$myhostname[  . ]/p" > hosts
7136                 }
7137                 tmp_re="[       . ]"
7138                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7139                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7140                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7141                         hosts | $sort | $uniq | \
7142                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7143                 case `$echo X$dflt` in
7144                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7145                         dflt=.
7146                         ;;
7147                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7148                         ;;
7149                 esac
7150                 case "$dflt" in
7151                 .)
7152                         tans=`./loc resolv.conf X /etc /usr/etc`
7153                         if $test -f "$tans"; then
7154                                 echo "(Attempting domain name extraction from $tans)"
7155                                 dflt=.`$sed -n -e 's/   / /g' \
7156                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7157                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7158                                 case "$dflt" in
7159                                 .) dflt=.`$sed -n -e 's/        / /g' \
7160                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7161                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7162                                         ;;
7163                                 esac
7164                         fi
7165                         ;;
7166                 esac
7167                 case "$dflt" in
7168                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7169                         dflt=.`sh -c domainname 2>/dev/null`
7170                         case "$dflt" in
7171                         '') dflt='.';;
7172                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7173                         esac
7174                         ;;
7175                 esac
7176                 case "$dflt" in
7177                 .) echo "(Lost all hope -- silly guess then)"
7178                         dflt='.uucp'
7179                         ;;
7180                 esac
7181                 $rm -f hosts
7182                 ;;
7183         *) dflt="$mydomain";;
7184         esac;;
7185 esac
7186 echo " "
7187 rp="What is your domain name?"
7188 . ./myread
7189 tans="$ans"
7190 case "$ans" in
7191 '') ;;
7192 .*) ;;
7193 *) tans=".$tans";;
7194 esac
7195 mydomain="$tans"
7196
7197 : translate upper to lower if necessary
7198 case "$mydomain" in
7199 *[A-Z]*)
7200         echo "(Normalizing case in your domain name)"
7201         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7202         ;;
7203 esac
7204
7205 : a little sanity check here
7206 case "$phostname" in
7207 '') ;;
7208 *)
7209         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7210         $myhostname$mydomain|$myhostname) ;;
7211         *)
7212                 case "$phostname" in
7213                 sed*)
7214                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7215                         ;;
7216                 *)
7217                         echo "(That doesn't agree with your $phostname command, by the way.)"
7218                         ;;
7219                 esac
7220         ;;
7221         esac
7222         ;;
7223 esac
7224
7225 $cat <<EOM
7226
7227 I need to get your e-mail address in Internet format if possible, i.e.
7228 something like user@host.domain. Please answer accurately since I have
7229 no easy means to double check it. The default value provided below
7230 is most probably close to reality but may not be valid from outside
7231 your organization...
7232
7233 EOM
7234 cont=x
7235 while test "$cont"; do
7236         case "$cf_email" in
7237         '') dflt="$cf_by@$myhostname$mydomain";;
7238         *) dflt="$cf_email";;
7239         esac
7240         rp='What is your e-mail address?'
7241         . ./myread
7242         cf_email="$ans"
7243         case "$cf_email" in
7244         *@*.*) cont='' ;;
7245         *)
7246                 rp='Address does not look like an Internet one.  Use it anyway?'
7247                 case "$fastread" in
7248                 yes) dflt=y ;;
7249                 *) dflt=n ;;
7250                 esac
7251                 . ./myread
7252                 case "$ans" in
7253                 y*) cont='' ;;
7254                 *) echo " " ;;
7255                 esac
7256                 ;;
7257         esac
7258 done
7259
7260 $cat <<EOM
7261
7262 If you or somebody else will be maintaining perl at your site, please
7263 fill in the correct e-mail address here so that they may be contacted
7264 if necessary. Currently, the "perlbug" program included with perl
7265 will send mail to this address in addition to perlbug@perl.com. You may
7266 enter "none" for no administrator.
7267
7268 EOM
7269 case "$perladmin" in
7270 '') dflt="$cf_email";;
7271 *) dflt="$perladmin";;
7272 esac
7273 rp='Perl administrator e-mail address'
7274 . ./myread
7275 perladmin="$ans"
7276
7277 : figure out how to guarantee perl startup
7278 case "$startperl" in
7279 '')
7280         case "$sharpbang" in
7281         *!)
7282                 $cat <<EOH
7283
7284 I can use the #! construct to start perl on your system. This will
7285 make startup of perl scripts faster, but may cause problems if you
7286 want to share those scripts and perl is not in a standard place
7287 ($binexp/perl) on all your platforms. The alternative is to force
7288 a shell by starting the script with a single ':' character.
7289
7290 EOH
7291                 dflt="$binexp/perl"
7292                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7293                 . ./myread
7294                 case "$ans" in
7295                 none)   startperl=": # use perl";;
7296                 *)      startperl="#!$ans"
7297                         if $test 30 -lt `echo "$ans" | wc -c`; then
7298                                 $cat >&4 <<EOM
7299
7300 WARNING:  Some systems limit the #! command to 32 characters.
7301 If you experience difficulty running Perl scripts with #!, try
7302 installing Perl in a directory with a shorter pathname.
7303
7304 EOM
7305                         fi ;;
7306                 esac
7307                 ;;
7308         *) startperl=": # use perl"
7309                 ;;
7310         esac
7311         ;;
7312 esac
7313 echo "I'll use $startperl to start perl scripts."
7314
7315 : figure best path for perl in scripts
7316 case "$perlpath" in
7317 '')
7318         perlpath="$binexp/perl"
7319         case "$startperl" in
7320         *!*) ;;
7321         *)
7322                 $cat <<EOH
7323
7324 I will use the "eval 'exec'" idiom to start Perl on your system.
7325 I can use the full path of your Perl binary for this purpose, but
7326 doing so may cause problems if you want to share those scripts and
7327 Perl is not always in a standard place ($binexp/perl).
7328
7329 EOH
7330                 dflt="$binexp/perl"
7331                 rp="What path shall I use in \"eval 'exec'\"?"
7332                 . ./myread
7333                 perlpath="$ans"
7334                 ;;
7335         esac
7336         ;;
7337 esac
7338 case "$startperl" in
7339 *!*)    ;;
7340 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7341 esac
7342
7343 : determine where public executable scripts go
7344 set scriptdir scriptdir
7345 eval $prefixit
7346 case "$scriptdir" in
7347 '')
7348         dflt="$bin"
7349         : guess some guesses
7350         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7351         $test -d /usr/share/bin     && dflt=/usr/share/bin
7352         $test -d /usr/local/script  && dflt=/usr/local/script
7353         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7354         $test -d $prefixexp/script  && dflt=$prefixexp/script
7355         set dflt
7356         eval $prefixup
7357         ;;
7358 *)  dflt="$scriptdir"
7359         ;;
7360 esac
7361 $cat <<EOM
7362  
7363 Some installations have a separate directory just for executable scripts so
7364 that they can mount it across multiple architectures but keep the scripts in
7365 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7366 Or you might just lump your scripts in with all your other executables.
7367  
7368 EOM
7369 fn=d~
7370 rp='Where do you keep publicly executable scripts?'
7371 . ./getfile
7372 if $test "X$ansexp" != "X$scriptdirexp"; then
7373         installscript=''
7374 fi
7375 scriptdir="$ans"
7376 scriptdirexp="$ansexp"
7377 : Change installation prefix, if necessary.
7378 if $test X"$prefix" != X"$installprefix"; then
7379         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7380 else
7381         installscript="$scriptdirexp"
7382 fi
7383
7384 : determine where add-on public executables go
7385 case "$sitebin" in
7386 '')     dflt=$siteprefix/bin ;;
7387 *)      dflt=$sitebin ;;
7388 esac
7389 fn=d~
7390 rp='Pathname where the add-on public executables should be installed?'
7391 . ./getfile
7392 sitebin="$ans"
7393 sitebinexp="$ansexp"
7394 : Change installation prefix, if necessary.
7395 if $test X"$prefix" != X"$installprefix"; then
7396         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7397 else
7398         installsitebin="$sitebinexp"
7399 fi
7400
7401 : see if sqrtl exists
7402 set sqrtl d_sqrtl
7403 eval $inlibc
7404
7405 case "$ccflags" in
7406 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7407 esac
7408
7409 case "$uselongdouble" in
7410 $define|true|[yY]*)     dflt='y';;
7411 *) dflt='n';;
7412 esac
7413 cat <<EOM
7414
7415 Perl can be built to take advantage of long doubles which
7416 (if available) may give more accuracy and range for floating point numbers.
7417
7418 If this doesn't make any sense to you, just accept the default '$dflt'.
7419 EOM
7420 rp='Try to use long doubles if available?'
7421 . ./myread
7422 case "$ans" in
7423 y|Y)    val="$define"   ;;
7424 *)      val="$undef"    ;;
7425 esac
7426 set uselongdouble
7427 eval $setvar
7428
7429 case "$uselongdouble" in
7430 true|[yY]*) uselongdouble="$define" ;;
7431 esac
7432
7433 case "$uselongdouble" in
7434 $define)
7435 : Look for a hint-file generated 'call-back-unit'.  If the
7436 : user has specified that long doubles should be used,
7437 : we may need to set or change some other defaults.
7438         if $test -f uselongdouble.cbu; then
7439                 echo "Your platform has some specific hints for long doubles, using them..."
7440                 . ./uselongdouble.cbu
7441         else
7442                 $cat <<EOM
7443 (Your platform doesn't have any specific hints for long doubles.)
7444 EOM
7445         fi
7446         ;;
7447 esac
7448
7449 case "$uselongdouble:$d_sqrtl" in
7450 $define:$undef)
7451                 $cat <<EOM >&4
7452
7453 *** You requested the use of long doubles but you do not seem to have
7454 *** the mathematic functions for long doubles.  I'm disabling the use
7455 *** of long doubles.
7456
7457 EOM
7458         uselongdouble=$undef
7459         ;;
7460 esac
7461
7462 case "$useperlio" in
7463 $define|true|[yY]*)     dflt='y';;
7464 *) dflt='n';;
7465 esac
7466 cat <<EOM
7467
7468 Previous version of $package used the standard IO mechanisms as defined
7469 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7470 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7471 the default.  This abstraction layer can use AT&T's sfio (if you already
7472 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7473 problems with some extension modules.  Using PerlIO with stdio is safe,
7474 but it is slower than plain stdio and therefore is not the default.
7475
7476 If this doesn't make any sense to you, just accept the default '$dflt'.
7477 EOM
7478 rp='Use the experimental PerlIO abstraction layer?'
7479 . ./myread
7480 case "$ans" in
7481 y|Y) 
7482         val="$define"
7483         ;;     
7484 *)      
7485         echo "Ok, doing things the stdio way"
7486         val="$undef"
7487         ;;
7488 esac
7489 set useperlio
7490 eval $setvar 
7491
7492 case "$vendorprefix" in
7493 '')     d_vendorbin="$undef"
7494         vendorbin=''
7495         vendorbinexp=''
7496         ;;
7497 *)      d_vendorbin="$define"
7498         : determine where vendor-supplied executables go.
7499         case "$vendorbin" in
7500         '') dflt=$vendorprefix/bin ;;
7501         *)      dflt="$vendorbin" ;;
7502         esac
7503         fn=d~+
7504         rp='Pathname for the vendor-supplied executables directory?'
7505         . ./getfile
7506         vendorbin="$ans"
7507         vendorbinexp="$ansexp"
7508         ;;
7509 esac
7510 : Change installation prefix, if necessary.
7511 if $test X"$prefix" != X"$installprefix"; then
7512         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7513 else
7514         installvendorbin="$vendorbinexp"
7515 fi
7516
7517 : see if qgcvt exists
7518 set qgcvt d_qgcvt
7519 eval $inlibc
7520
7521 : check for length of double
7522 echo " "
7523 case "$doublesize" in
7524 '')
7525         echo "Checking to see how big your double precision numbers are..." >&4
7526         $cat >try.c <<'EOCP'
7527 #include <stdio.h>
7528 int main()
7529 {
7530     printf("%d\n", (int)sizeof(double));
7531     exit(0);
7532 }
7533 EOCP
7534         set try
7535         if eval $compile_ok; then
7536                 doublesize=`./try`
7537                 echo "Your double is $doublesize bytes long."
7538         else
7539                 dflt='8'
7540                 echo "(I can't seem to compile the test program.  Guessing...)"
7541                 rp="What is the size of a double precision number (in bytes)?"
7542                 . ./myread
7543                 doublesize="$ans"
7544         fi
7545         ;;
7546 esac
7547 $rm -f try.c try
7548
7549 : check for long doubles
7550 echo " "
7551 echo "Checking to see if you have long double..." >&4
7552 echo 'int main() { long double x = 7.0; }' > try.c
7553 set try
7554 if eval $compile; then
7555         val="$define"
7556         echo "You have long double."
7557 else
7558         val="$undef"
7559         echo "You do not have long double."
7560 fi
7561 $rm try.*
7562 set d_longdbl
7563 eval $setvar
7564
7565 : check for length of long double
7566 case "${d_longdbl}${longdblsize}" in
7567 $define)
7568         echo " "
7569         echo "Checking to see how big your long doubles are..." >&4
7570         $cat >try.c <<'EOCP'
7571 #include <stdio.h>
7572 int main()
7573 {
7574         printf("%d\n", sizeof(long double));
7575 }
7576 EOCP
7577         set try
7578         set try
7579         if eval $compile; then
7580                 longdblsize=`./try$exe_ext`
7581                 echo "Your long doubles are $longdblsize bytes long."
7582         else
7583                 dflt='8'
7584                 echo " "
7585                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7586                 rp="What is the size of a long double (in bytes)?"
7587                 . ./myread
7588                 longdblsize="$ans"
7589         fi
7590         if $test "X$doublesize" = "X$longdblsize"; then
7591                 echo "(That isn't any different from an ordinary double.)"
7592         fi      
7593         ;;
7594 esac
7595 $rm -f try.* try
7596
7597 echo " "
7598
7599 if $test X"$d_longdbl" = X"$define"; then
7600
7601 echo "Checking how to print long doubles..." >&4
7602
7603 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7604         $cat >try.c <<'EOCP'
7605 #include <sys/types.h>
7606 #include <stdio.h>
7607 int main() {
7608   double d = 123.456;
7609   printf("%.3f\n", d);
7610 }
7611 EOCP
7612         set try
7613         if eval $compile; then
7614                 yyy=`./try$exe_ext`
7615                 case "$yyy" in
7616                 123.456)
7617                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7618                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7619                         echo "We will use %f."
7620                         ;;
7621                 esac
7622         fi
7623 fi
7624
7625 if $test X"$sPRIfldbl" = X; then
7626         $cat >try.c <<'EOCP'
7627 #include <sys/types.h>
7628 #include <stdio.h>
7629 int main() {
7630   long double d = 123.456;
7631   printf("%.3llf\n", d);
7632 }
7633 EOCP
7634         set try
7635         if eval $compile; then
7636                 yyy=`./try$exe_ext`
7637                 case "$yyy" in
7638                 123.456)
7639                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7640                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7641                         echo "We will use %llf."
7642                         ;;
7643                 esac
7644         fi
7645 fi
7646
7647 if $test X"$sPRIfldbl" = X; then
7648         $cat >try.c <<'EOCP'
7649 #include <sys/types.h>
7650 #include <stdio.h>
7651 int main() {
7652   long double d = 123.456;
7653   printf("%.3Lf\n", d);
7654 }
7655 EOCP
7656         set try
7657         if eval $compile; then
7658                 yyy=`./try$exe_ext`
7659                 case "$yyy" in
7660                 123.456)
7661                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7662                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7663                         echo "We will use %Lf."
7664                         ;;
7665                 esac
7666         fi
7667 fi
7668
7669 if $test X"$sPRIfldbl" = X; then
7670         $cat >try.c <<'EOCP'
7671 #include <sys/types.h>
7672 #include <stdio.h>
7673 int main() {
7674   long double d = 123.456;
7675   printf("%.3lf\n", d);
7676 }
7677 EOCP
7678         set try
7679         if eval $compile; then
7680                 yyy=`./try$exe_ext`
7681                 case "$yyy" in
7682                 123.456)
7683                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7684                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7685                         echo "We will use %lf."
7686                         ;;
7687                 esac
7688         fi
7689 fi
7690
7691 if $test X"$sPRIfldbl" = X; then
7692         echo "Cannot figure out how to print long doubles." >&4
7693 fi
7694
7695 $rm -f try try.*
7696
7697 fi # d_longdbl
7698
7699 case "$sPRIfldbl" in
7700 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7701         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7702         ;;
7703 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7704         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7705         ;;
7706 esac
7707
7708 : Check how to convert floats to strings.
7709 if test "X$d_Gconvert" = X; then
7710         echo " "
7711         echo "Checking for an efficient way to convert floats to strings."
7712         echo " " > try.c
7713         case "$uselongdouble" in
7714         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7715         esac
7716         case "$d_longdbl" in
7717         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7718         esac
7719         case "$d_PRIgldbl" in
7720         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7721         esac
7722         $cat >>try.c <<EOP
7723 #ifdef TRY_gconvert
7724 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7725 char *myname = "gconvert";
7726 #endif
7727 #ifdef TRY_gcvt
7728 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7729 char *myname = "gcvt";
7730 #endif
7731 #ifdef TRY_qgcvt
7732 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7733 char *myname = "qgcvt";
7734 #define DOUBLETYPE long double
7735 #endif
7736 #ifdef TRY_sprintf
7737 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7738 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7739 #else
7740 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7741 #endif
7742 char *myname = "sprintf";
7743 #endif
7744
7745 #ifndef DOUBLETYPE
7746 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7747 #define DOUBLETYPE long double
7748 #else
7749 #define DOUBLETYPE double
7750 #endif
7751 #endif
7752
7753 #include <stdio.h>
7754
7755 #define I_STDLIB $i_stdlib
7756 #ifdef I_STDLIB
7757 #include <stdlib.h>
7758 #endif
7759
7760 int
7761 checkit(expect, got)
7762 char *expect;
7763 char *got;
7764 {
7765     if (strcmp(expect, got)) {
7766                 printf("%s oddity:  Expected %s, got %s\n",
7767                         myname, expect, got);
7768                 exit(1);
7769         }
7770 }
7771
7772 int main()
7773
7774         char buf[64]; 
7775         buf[63] = '\0';
7776
7777         /* This must be 1st test on (which?) platform */
7778         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7779         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7780         checkit("0.1", buf);
7781
7782         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7783         checkit("1", buf);
7784
7785         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7786         checkit("1.1", buf);
7787
7788         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7789         checkit("1.01", buf);
7790
7791         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7792         checkit("1.001", buf);
7793
7794         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7795         checkit("1.0001", buf);
7796
7797         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7798         checkit("1.00001", buf);
7799
7800         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7801         checkit("1.000001", buf);
7802
7803         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7804         checkit("0", buf);
7805
7806         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7807         checkit("-1", buf);
7808
7809         /* Some Linux gcvt's give 1.e+5 here. */
7810         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7811         checkit("100000", buf);
7812         
7813         /* Some Linux gcvt's give -1.e+5 here. */
7814         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7815         checkit("-100000", buf);
7816
7817         exit(0);
7818 }
7819 EOP
7820         case "$d_Gconvert" in
7821         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7822         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7823         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7824         *) xxx_list='gconvert gcvt sprintf' ;;
7825         esac
7826
7827         case "$d_longdbl$uselongdouble$d_qgcvt" in
7828         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7829         esac
7830
7831         for xxx_convert in $xxx_list; do
7832                 echo "Trying $xxx_convert..."
7833                 $rm -f try try$_o
7834                 set try -DTRY_$xxx_convert
7835                 if eval $compile; then
7836                         echo "$xxx_convert() found." >&4
7837                         if ./try; then
7838                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7839                                 break;
7840                         else
7841                                 echo "...But $xxx_convert didn't work as I expected."
7842                         fi
7843                 else
7844                         echo "$xxx_convert NOT found." >&4
7845                 fi
7846         done
7847                 
7848         case "$xxx_convert" in
7849         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7850         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7851         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7852         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7853            "$define$define$define")
7854               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7855            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7856            esac
7857            ;;  
7858         esac
7859 fi
7860
7861 : Initialize h_fcntl
7862 h_fcntl=false
7863
7864 : Initialize h_sysfile
7865 h_sysfile=false
7866
7867 : access call always available on UNIX
7868 set access d_access
7869 eval $inlibc
7870
7871 : locate the flags for 'access()'
7872 case "$d_access" in
7873 "$define")
7874         echo " "
7875         $cat >access.c <<'EOCP'
7876 #include <sys/types.h>
7877 #ifdef I_FCNTL
7878 #include <fcntl.h>
7879 #endif
7880 #ifdef I_SYS_FILE
7881 #include <sys/file.h>
7882 #endif
7883 #ifdef I_UNISTD
7884 #include <unistd.h>
7885 #endif
7886 int main() {
7887         exit(R_OK);
7888 }
7889 EOCP
7890         : check sys/file.h first, no particular reason here
7891         if $test `./findhdr sys/file.h` && \
7892                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7893                 h_sysfile=true;
7894                 echo "<sys/file.h> defines the *_OK access constants." >&4
7895         elif $test `./findhdr fcntl.h` && \
7896                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7897                 h_fcntl=true;
7898                 echo "<fcntl.h> defines the *_OK access constants." >&4
7899         elif $test `./findhdr unistd.h` && \
7900                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7901                 echo "<unistd.h> defines the *_OK access constants." >&4
7902         else
7903                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7904         fi
7905         ;;
7906 esac
7907 $rm -f access*
7908
7909 : see if accessx exists
7910 set accessx d_accessx
7911 eval $inlibc
7912
7913 : see if alarm exists
7914 set alarm d_alarm
7915 eval $inlibc
7916
7917 : see if atolf exists
7918 set atolf d_atolf
7919 eval $inlibc
7920
7921 : see if atoll exists
7922 set atoll d_atoll
7923 eval $inlibc
7924
7925 : Look for GNU-cc style attribute checking
7926 echo " "
7927 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7928 $cat >attrib.c <<'EOCP'
7929 #include <stdio.h>
7930 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7931 EOCP
7932 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7933         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7934                 echo "Your C compiler doesn't fully support __attribute__."
7935                 val="$undef"
7936         else
7937                 echo "Your C compiler supports __attribute__."
7938                 val="$define"
7939         fi
7940 else
7941         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7942         val="$undef"
7943 fi
7944 set d_attribut
7945 eval $setvar
7946 $rm -f attrib*
7947
7948 : see if bcmp exists
7949 set bcmp d_bcmp
7950 eval $inlibc
7951
7952 : see if bcopy exists
7953 set bcopy d_bcopy
7954 eval $inlibc
7955
7956 : see if this is a unistd.h system
7957 set unistd.h i_unistd
7958 eval $inhdr
7959
7960 : see if getpgrp exists
7961 set getpgrp d_getpgrp
7962 eval $inlibc
7963
7964 case "$d_getpgrp" in
7965 "$define")
7966         echo " "
7967         echo "Checking to see which flavor of getpgrp is in use..."
7968         $cat >set.c <<EOP
7969 #$i_unistd I_UNISTD
7970 #include <sys/types.h>
7971 #ifdef I_UNISTD
7972 #  include <unistd.h>
7973 #endif
7974 int main()
7975 {
7976         if (getuid() == 0) {
7977                 printf("(I see you are running Configure as super-user...)\n");
7978                 setuid(1);
7979         }
7980 #ifdef TRY_BSD_PGRP
7981         if (getpgrp(1) == 0)
7982                 exit(0);
7983 #else
7984         if (getpgrp() > 0)
7985                 exit(0);
7986 #endif
7987         exit(1);
7988 }
7989 EOP
7990         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7991                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7992                 val="$define"
7993         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7994                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7995                 val="$undef"
7996         else
7997                 echo "I can't seem to compile and run the test program."
7998                 if ./usg; then
7999                         xxx="a USG one, i.e. you use getpgrp()."
8000                 else
8001                         # SVR4 systems can appear rather BSD-ish.
8002                         case "$i_unistd" in
8003                         $undef)
8004                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8005                                 val="$define"
8006                                 ;;
8007                         $define)
8008                                 xxx="probably a USG one, i.e. you use getpgrp()."
8009                                 val="$undef"
8010                                 ;;
8011                         esac
8012                 fi
8013                 echo "Assuming your getpgrp is $xxx" >&4
8014         fi
8015         ;;
8016 *) val="$undef";;
8017 esac
8018 set d_bsdgetpgrp
8019 eval $setvar
8020 $rm -f set set.c
8021
8022 : see if setpgrp exists
8023 set setpgrp d_setpgrp
8024 eval $inlibc
8025
8026 case "$d_setpgrp" in
8027 "$define")
8028         echo " "
8029         echo "Checking to see which flavor of setpgrp is in use..."
8030         $cat >set.c <<EOP
8031 #$i_unistd I_UNISTD
8032 #include <sys/types.h>
8033 #ifdef I_UNISTD
8034 #  include <unistd.h>
8035 #endif
8036 int main()
8037 {
8038         if (getuid() == 0) {
8039                 printf("(I see you are running Configure as super-user...)\n");
8040                 setuid(1);
8041         }
8042 #ifdef TRY_BSD_PGRP
8043         if (-1 == setpgrp(1, 1))
8044                 exit(0);
8045 #else
8046         if (setpgrp() != -1)
8047                 exit(0);
8048 #endif
8049         exit(1);
8050 }
8051 EOP
8052         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8053                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8054                 val="$define"
8055         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8056                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8057                 val="$undef"
8058         else
8059                 echo "(I can't seem to compile and run the test program.)"
8060                 if ./usg; then
8061                         xxx="a USG one, i.e. you use setpgrp()."
8062                 else
8063                         # SVR4 systems can appear rather BSD-ish.
8064                         case "$i_unistd" in
8065                         $undef)
8066                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8067                                 val="$define"
8068                                 ;;
8069                         $define)
8070                                 xxx="probably a USG one, i.e. you use setpgrp()."
8071                                 val="$undef"
8072                                 ;;
8073                         esac
8074                 fi
8075                 echo "Assuming your setpgrp is $xxx" >&4
8076         fi
8077         ;;
8078 *) val="$undef";;
8079 esac
8080 set d_bsdsetpgrp
8081 eval $setvar
8082 $rm -f set set.c
8083 : see if bzero exists
8084 set bzero d_bzero
8085 eval $inlibc
8086
8087 : see if signal is declared as pointer to function returning int or void
8088 echo " "
8089 xxx=`./findhdr signal.h`
8090 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8091 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8092         echo "You have int (*signal())() instead of void." >&4
8093         val="$undef"
8094 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8095         echo "You have void (*signal())()." >&4
8096         val="$define"
8097 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8098         echo "You have int (*signal())() instead of void." >&4
8099         val="$undef"
8100 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8101         echo "You have void (*signal())()." >&4
8102         val="$define"
8103 else
8104         case "$d_voidsig" in
8105         '')
8106         echo "I can't determine whether signal handler returns void or int..." >&4
8107                 dflt=void
8108                 rp="What type does your signal handler return?"
8109                 . ./myread
8110                 case "$ans" in
8111                 v*) val="$define";;
8112                 *) val="$undef";;
8113                 esac;;
8114         "$define")
8115                 echo "As you already told me, signal handler returns void." >&4
8116                 val="$define"
8117                 ;;
8118         *)      echo "As you already told me, signal handler returns int." >&4
8119                 val="$undef"
8120                 ;;
8121         esac
8122 fi
8123 set d_voidsig
8124 eval $setvar
8125 case "$d_voidsig" in
8126 "$define") signal_t="void";;
8127 *) signal_t="int";;
8128 esac
8129 $rm -f $$.tmp
8130
8131 : check for ability to cast large floats to 32-bit ints.
8132 echo " "
8133 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8134 if $test "$intsize" -ge 4; then
8135         xxx=int
8136 else
8137         xxx=long
8138 fi
8139 $cat >try.c <<EOCP
8140 #include <stdio.h>
8141 #include <sys/types.h>
8142 #include <signal.h>
8143 $signal_t blech(s) int s; { exit(3); }
8144 int main()
8145 {
8146         $xxx i32;
8147         double f, g;
8148         int result = 0;
8149         char str[16];
8150         signal(SIGFPE, blech);
8151
8152         /* Don't let compiler optimize the test away.  Store the number 
8153            in a writable string for gcc to pass to sscanf under HP/UX.
8154         */
8155         sprintf(str, "2147483647");
8156         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8157         g = 10 * f;
8158         i32  = ($xxx) g;
8159
8160         /* x86 processors will probably give 0x8000 0000, which is a
8161        sign change.  We don't want that.  We want to mimic SPARC
8162            behavior here, which is to preserve the sign and give
8163            back 0x7fff ffff.
8164         */
8165         if (i32 != ($xxx) f)
8166                 result |= 1;
8167         exit(result);
8168 }
8169 EOCP
8170 set try
8171 if eval $compile_ok; then
8172         ./try
8173         yyy=$?
8174 else
8175         echo "(I can't seem to compile the test program--assuming it can't)"
8176         yyy=1
8177 fi
8178 case "$yyy" in
8179 0)      val="$define"
8180         echo "Yup, it can."
8181         ;;
8182 *)      val="$undef"
8183         echo "Nope, it can't."
8184         ;;
8185 esac
8186 set d_casti32
8187 eval $setvar
8188 $rm -f try try.*
8189
8190 : check for ability to cast negative floats to unsigned
8191 echo " "
8192 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8193 $cat >try.c <<EOCP
8194 #include <stdio.h>
8195 #include <sys/types.h>
8196 #include <signal.h>
8197 $signal_t blech(s) int s; { exit(7); }
8198 $signal_t blech_in_list(s) int s; { exit(4); }
8199 unsigned long dummy_long(p) unsigned long p; { return p; }
8200 unsigned int dummy_int(p) unsigned int p; { return p; }
8201 unsigned short dummy_short(p) unsigned short p; { return p; }
8202 int main()
8203 {
8204         double f;
8205         unsigned long along;
8206         unsigned int aint;
8207         unsigned short ashort;
8208         int result = 0;
8209         char str[16];
8210         
8211         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8212            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8213            optimized the whole file away
8214         */
8215         /* Store the number in a writable string for gcc to pass to 
8216            sscanf under HP/UX.
8217         */
8218         sprintf(str, "-123");
8219         sscanf(str, "%lf", &f);  /* f = -123.; */
8220
8221         signal(SIGFPE, blech);
8222         along = (unsigned long)f;
8223         aint = (unsigned int)f;
8224         ashort = (unsigned short)f;
8225         if (along != (unsigned long)-123)
8226                 result |= 1;
8227         if (aint != (unsigned int)-123)
8228                 result |= 1;
8229         if (ashort != (unsigned short)-123)
8230                 result |= 1;
8231         sprintf(str, "1073741824.");
8232         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8233         f = f + f;
8234         along = 0;
8235         along = (unsigned long)f;
8236         if (along != 0x80000000)
8237                 result |= 2;
8238         f -= 1.;
8239         along = 0;
8240         along = (unsigned long)f;
8241         if (along != 0x7fffffff)
8242                 result |= 1;
8243         f += 2.;
8244         along = 0;
8245         along = (unsigned long)f;
8246         if (along != 0x80000001)
8247                 result |= 2;
8248         if (result)
8249                 exit(result);
8250         signal(SIGFPE, blech_in_list);
8251         sprintf(str, "123.");
8252         sscanf(str, "%lf", &f);  /* f = 123.; */
8253         along = dummy_long((unsigned long)f);
8254         aint = dummy_int((unsigned int)f);
8255         ashort = dummy_short((unsigned short)f);
8256         if (along != (unsigned long)123)
8257                 result |= 4;
8258         if (aint != (unsigned int)123)
8259                 result |= 4;
8260         if (ashort != (unsigned short)123)
8261                 result |= 4;
8262         exit(result);
8263
8264 }
8265 EOCP
8266 set try
8267 if eval $compile_ok; then
8268         ./try
8269         castflags=$?
8270 else
8271         echo "(I can't seem to compile the test program--assuming it can't)"
8272         castflags=7
8273 fi
8274 case "$castflags" in
8275 0)      val="$define"
8276         echo "Yup, it can."
8277         ;;
8278 *)      val="$undef"
8279         echo "Nope, it can't."
8280         ;;
8281 esac
8282 set d_castneg
8283 eval $setvar
8284 $rm -f try.*
8285
8286 : see if vprintf exists
8287 echo " "
8288 if set vprintf val -f d_vprintf; eval $csym; $val; then
8289         echo 'vprintf() found.' >&4
8290         val="$define"
8291         $cat >vprintf.c <<'EOF'
8292 #include <varargs.h>
8293
8294 int main() { xxx("foo"); }
8295
8296 xxx(va_alist)
8297 va_dcl
8298 {
8299         va_list args;
8300         char buf[10];
8301
8302         va_start(args);
8303         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8304 }
8305 EOF
8306         set vprintf
8307         if eval $compile && ./vprintf; then
8308                 echo "Your vsprintf() returns (int)." >&4
8309                 val2="$undef"
8310         else
8311                 echo "Your vsprintf() returns (char*)." >&4
8312                 val2="$define"
8313         fi
8314 else
8315         echo 'vprintf() NOT found.' >&4
8316                 val="$undef"
8317                 val2="$undef"
8318 fi
8319 set d_vprintf
8320 eval $setvar
8321 val=$val2
8322 set d_charvspr
8323 eval $setvar
8324
8325 : see if chown exists
8326 set chown d_chown
8327 eval $inlibc
8328
8329 : see if chroot exists
8330 set chroot d_chroot
8331 eval $inlibc
8332
8333 : see if chsize exists
8334 set chsize d_chsize
8335 eval $inlibc
8336
8337 : check for const keyword
8338 echo " "
8339 echo 'Checking to see if your C compiler knows about "const"...' >&4
8340 $cat >const.c <<'EOCP'
8341 typedef struct spug { int drokk; } spug;
8342 int main()
8343 {
8344         const char *foo;
8345         const spug y;
8346 }
8347 EOCP
8348 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8349         val="$define"
8350         echo "Yup, it does."
8351 else
8352         val="$undef"
8353         echo "Nope, it doesn't."
8354 fi
8355 set d_const
8356 eval $setvar
8357
8358 : see if crypt exists
8359 echo " "
8360 if set crypt val -f d_crypt; eval $csym; $val; then
8361         echo 'crypt() found.' >&4
8362         val="$define"
8363         cryptlib=''
8364 else
8365         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8366         if $test -z "$cryptlib"; then
8367                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8368         else
8369                 cryptlib=-lcrypt
8370         fi
8371         if $test -z "$cryptlib"; then
8372                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8373         else
8374                 cryptlib=-lcrypt
8375         fi
8376         if $test -z "$cryptlib"; then
8377                 cryptlib=`./loc libcrypt$_a "" $libpth`
8378         else
8379                 cryptlib=-lcrypt
8380         fi
8381         if $test -z "$cryptlib"; then
8382                 echo 'crypt() NOT found.' >&4
8383                 val="$undef"
8384         else
8385                 val="$define"
8386         fi
8387 fi
8388 set d_crypt
8389 eval $setvar
8390
8391 : get csh whereabouts
8392 case "$csh" in
8393 'csh') val="$undef" ;;
8394 *) val="$define" ;;
8395 esac
8396 set d_csh
8397 eval $setvar
8398 : Respect a hint or command line value for full_csh.
8399 case "$full_csh" in
8400 '') full_csh=$csh ;;
8401 esac
8402
8403 : see if cuserid exists
8404 set cuserid d_cuserid
8405 eval $inlibc
8406
8407 : see if this is a limits.h system
8408 set limits.h i_limits
8409 eval $inhdr
8410
8411 : see if this is a float.h system
8412 set float.h i_float
8413 eval $inhdr
8414
8415 : See if number of significant digits in a double precision number is known
8416 echo " "
8417 $cat >dbl_dig.c <<EOM
8418 #$i_limits I_LIMITS
8419 #$i_float I_FLOAT
8420 #ifdef I_LIMITS
8421 #include <limits.h>
8422 #endif
8423 #ifdef I_FLOAT
8424 #include <float.h>
8425 #endif
8426 #ifdef DBL_DIG
8427 printf("Contains DBL_DIG");
8428 #endif
8429 EOM
8430 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8431 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8432         echo "DBL_DIG found." >&4
8433         val="$define"
8434 else
8435         echo "DBL_DIG NOT found." >&4
8436         val="$undef"
8437 fi
8438 $rm -f dbl_dig.?
8439 set d_dbl_dig
8440 eval $setvar
8441
8442 : see if difftime exists
8443 set difftime d_difftime
8444 eval $inlibc
8445
8446 : see if this is a dirent system
8447 echo " "
8448 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8449         val="$define"
8450         echo "<dirent.h> found." >&4
8451 else
8452         val="$undef"
8453         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8454                 echo "<sys/dir.h> found." >&4
8455                 echo " "
8456         else
8457                 xinc=`./findhdr sys/ndir.h`
8458         fi
8459         echo "<dirent.h> NOT found." >&4
8460 fi
8461 set i_dirent
8462 eval $setvar
8463
8464 : Look for type of directory structure.
8465 echo " "
8466 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8467
8468 case "$direntrytype" in
8469 ''|' ')
8470         case "$i_dirent" in
8471         $define) guess1='struct dirent' ;;
8472         *) guess1='struct direct'  ;;
8473         esac
8474         ;;
8475 *)      guess1="$direntrytype"
8476         ;;
8477 esac
8478
8479 case "$guess1" in
8480 'struct dirent') guess2='struct direct' ;;
8481 *) guess2='struct dirent' ;;
8482 esac
8483                 
8484 if $contains "$guess1" try.c >/dev/null 2>&1; then
8485         direntrytype="$guess1"
8486         echo "Your directory entries are $direntrytype." >&4
8487 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8488         direntrytype="$guess2"
8489         echo "Your directory entries seem to be $direntrytype." >&4
8490 else
8491         echo "I don't recognize your system's directory entries." >&4
8492         rp="What type is used for directory entries on this system?"
8493         dflt="$guess1"
8494         . ./myread
8495         direntrytype="$ans"
8496 fi
8497 $rm -f try.c
8498
8499
8500 : see if the directory entry stores field length
8501 echo " "
8502 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8503 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8504         echo "Good, your directory entry keeps length information in d_namlen." >&4
8505         val="$define"
8506 else
8507         echo "Your directory entry does not know about the d_namlen field." >&4
8508         val="$undef"
8509 fi
8510 set d_dirnamlen
8511 eval $setvar
8512 $rm -f try.c
8513
8514 : see if dlerror exists
8515 xxx_runnm="$runnm"
8516 runnm=false
8517 set dlerror d_dlerror
8518 eval $inlibc
8519 runnm="$xxx_runnm"
8520
8521 : see if dlfcn is available
8522 set dlfcn.h i_dlfcn
8523 eval $inhdr
8524
8525 case "$usedl" in
8526 $define|y|true)
8527         $cat << EOM
8528
8529 On a few systems, the dynamically loaded modules that perl generates and uses
8530 will need a different extension than shared libs. The default will probably
8531 be appropriate.
8532
8533 EOM
8534         case "$dlext" in
8535         '')     dflt="$so" ;;
8536         *)      dflt="$dlext" ;;
8537         esac
8538         rp='What is the extension of dynamically loaded modules'
8539         . ./myread
8540         dlext="$ans"
8541         ;;
8542 *)
8543         dlext="none"
8544         ;;
8545 esac
8546
8547 : Check if dlsym need a leading underscore
8548 echo " "
8549 val="$undef"
8550
8551 case "$dlsrc" in
8552 dl_dlopen.xs)
8553         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8554         $cat >dyna.c <<'EOM'
8555 fred () { }
8556 EOM
8557
8558 $cat >fred.c<<EOM
8559
8560 #include <stdio.h>
8561 #$i_dlfcn I_DLFCN
8562 #ifdef I_DLFCN
8563 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8564 #else
8565 #include <sys/types.h>
8566 #include <nlist.h>
8567 #include <link.h>
8568 #endif
8569
8570 extern int fred() ;
8571
8572 int main()
8573 {
8574     void * handle ;
8575     void * symbol ;
8576 #ifndef RTLD_LAZY
8577     int mode = 1 ;
8578 #else
8579     int mode = RTLD_LAZY ;
8580 #endif
8581     handle = dlopen("./dyna.$dlext", mode) ;
8582     if (handle == NULL) {
8583         printf ("1\n") ;
8584         fflush (stdout) ;
8585         exit(0);
8586     }
8587     symbol = dlsym(handle, "fred") ;
8588     if (symbol == NULL) {
8589         /* try putting a leading underscore */
8590         symbol = dlsym(handle, "_fred") ;
8591         if (symbol == NULL) {
8592             printf ("2\n") ;
8593             fflush (stdout) ;
8594             exit(0);
8595         }
8596         printf ("3\n") ;
8597     }
8598     else
8599         printf ("4\n") ;
8600     fflush (stdout) ;
8601     exit(0);
8602 }
8603 EOM
8604         : Call the object file tmp-dyna.o in case dlext=o.
8605         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8606                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8607                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8608                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8609                 xxx=`./fred`
8610                 case $xxx in
8611                 1)      echo "Test program failed using dlopen." >&4
8612                         echo "Perhaps you should not use dynamic loading." >&4;;
8613                 2)      echo "Test program failed using dlsym." >&4
8614                         echo "Perhaps you should not use dynamic loading." >&4;;
8615                 3)      echo "dlsym needs a leading underscore" >&4
8616                         val="$define" ;;
8617                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8618                 esac
8619         else
8620                 echo "I can't compile and run the test program." >&4
8621                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8622         fi
8623         ;;
8624 esac
8625                 
8626 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8627
8628 set d_dlsymun
8629 eval $setvar
8630
8631 hasproto='varname=$1; func=$2; shift; shift;
8632 while $test $# -ge 2; do
8633         case "$1" in
8634         $define) echo "#include <$2>";;
8635         esac ;
8636     shift 2;
8637 done > try.c;
8638 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8639 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8640         echo "$func() prototype found.";
8641         val="$define";
8642 else
8643         echo "$func() prototype NOT found.";
8644         val="$undef";
8645 fi;
8646 set $varname;
8647 eval $setvar;
8648 $rm -f try.c tryout.c'
8649
8650 : see if prototype for drand48 is available
8651 echo " "
8652 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8653 eval $hasproto
8654
8655 : see if dup2 exists
8656 set dup2 d_dup2
8657 eval $inlibc
8658
8659 : see if eaccess exists
8660 set eaccess d_eaccess
8661 eval $inlibc
8662
8663 : see if endgrent exists
8664 set endgrent d_endgrent
8665 eval $inlibc
8666
8667 : see if endhostent exists
8668 set endhostent d_endhent
8669 eval $inlibc
8670
8671 : see if endnetent exists
8672 set endnetent d_endnent
8673 eval $inlibc
8674
8675 : see if endprotoent exists
8676 set endprotoent d_endpent
8677 eval $inlibc
8678
8679 : see if endpwent exists
8680 set endpwent d_endpwent
8681 eval $inlibc
8682
8683 : see if endservent exists
8684 set endservent d_endsent
8685 eval $inlibc
8686
8687 : Locate the flags for 'open()'
8688 echo " "
8689 $cat >open3.c <<'EOCP'
8690 #include <sys/types.h>
8691 #ifdef I_FCNTL
8692 #include <fcntl.h>
8693 #endif
8694 #ifdef I_SYS_FILE
8695 #include <sys/file.h>
8696 #endif
8697 int main() {
8698         if(O_RDONLY);
8699 #ifdef O_TRUNC
8700         exit(0);
8701 #else
8702         exit(1);
8703 #endif
8704 }
8705 EOCP
8706 : check sys/file.h first to get FREAD on Sun
8707 if $test `./findhdr sys/file.h` && \
8708                 set open3 -DI_SYS_FILE && eval $compile; then
8709         h_sysfile=true;
8710         echo "<sys/file.h> defines the O_* constants..." >&4
8711         if ./open3; then
8712                 echo "and you have the 3 argument form of open()." >&4
8713                 val="$define"
8714         else
8715                 echo "but not the 3 argument form of open().  Oh, well." >&4
8716                 val="$undef"
8717         fi
8718 elif $test `./findhdr fcntl.h` && \
8719                 set open3 -DI_FCNTL && eval $compile; then
8720         h_fcntl=true;
8721         echo "<fcntl.h> defines the O_* constants..." >&4
8722         if ./open3; then
8723                 echo "and you have the 3 argument form of open()." >&4
8724                 val="$define"
8725         else
8726                 echo "but not the 3 argument form of open().  Oh, well." >&4
8727                 val="$undef"
8728         fi
8729 else
8730         val="$undef"
8731         echo "I can't find the O_* constant definitions!  You got problems." >&4
8732 fi
8733 set d_open3
8734 eval $setvar
8735 $rm -f open3*
8736
8737 : see which of string.h or strings.h is needed
8738 echo " "
8739 strings=`./findhdr string.h`
8740 if $test "$strings" && $test -r "$strings"; then
8741         echo "Using <string.h> instead of <strings.h>." >&4
8742         val="$define"
8743 else
8744         val="$undef"
8745         strings=`./findhdr strings.h`
8746         if $test "$strings" && $test -r "$strings"; then
8747                 echo "Using <strings.h> instead of <string.h>." >&4
8748         else
8749                 echo "No string header found -- You'll surely have problems." >&4
8750         fi
8751 fi
8752 set i_string
8753 eval $setvar
8754 case "$i_string" in
8755 "$undef") strings=`./findhdr strings.h`;;
8756 *)        strings=`./findhdr string.h`;;
8757 esac
8758
8759 : check for non-blocking I/O stuff
8760 case "$h_sysfile" in
8761 true) echo "#include <sys/file.h>" > head.c;;
8762 *)
8763         case "$h_fcntl" in
8764         true) echo "#include <fcntl.h>" > head.c;;
8765         *) echo "#include <sys/fcntl.h>" > head.c;;
8766         esac
8767         ;;
8768 esac
8769 echo " "
8770 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8771 case "$o_nonblock" in
8772 '')
8773         $cat head.c > try.c
8774         $cat >>try.c <<'EOCP'
8775 #include <stdio.h>
8776 int main() {
8777 #ifdef O_NONBLOCK
8778         printf("O_NONBLOCK\n");
8779         exit(0);
8780 #endif
8781 #ifdef O_NDELAY
8782         printf("O_NDELAY\n");
8783         exit(0);
8784 #endif
8785 #ifdef FNDELAY
8786         printf("FNDELAY\n");
8787         exit(0);
8788 #endif
8789         exit(0);
8790 }
8791 EOCP
8792         set try
8793         if eval $compile_ok; then
8794                 o_nonblock=`./try`
8795                 case "$o_nonblock" in
8796                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8797                 *) echo "Seems like we can use $o_nonblock.";;
8798                 esac
8799         else
8800                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8801         fi
8802         ;;
8803 *) echo "Using $hint value $o_nonblock.";;
8804 esac
8805 $rm -f try try.* .out core
8806
8807 echo " "
8808 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8809 case "$eagain" in
8810 '')
8811         $cat head.c > try.c
8812         $cat >>try.c <<EOCP
8813 #include <errno.h>
8814 #include <sys/types.h>
8815 #include <signal.h>
8816 #include <stdio.h> 
8817 #define MY_O_NONBLOCK $o_nonblock
8818 #ifndef errno  /* XXX need better Configure test */
8819 extern int errno;
8820 #endif
8821 #$i_unistd I_UNISTD
8822 #ifdef I_UNISTD
8823 #include <unistd.h>
8824 #endif
8825 #$i_string I_STRING
8826 #ifdef I_STRING
8827 #include <string.h>
8828 #else
8829 #include <strings.h>
8830 #endif
8831 $signal_t blech(x) int x; { exit(3); }
8832 EOCP
8833         $cat >> try.c <<'EOCP'
8834 int main()
8835 {
8836         int pd[2];
8837         int pu[2];
8838         char buf[1];
8839         char string[100];
8840
8841         pipe(pd);       /* Down: child -> parent */
8842         pipe(pu);       /* Up: parent -> child */
8843         if (0 != fork()) {
8844                 int ret;
8845                 close(pd[1]);   /* Parent reads from pd[0] */
8846                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8847                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8848                         exit(1);
8849                 signal(SIGALRM, blech);
8850                 alarm(5);
8851                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8852                         exit(2);
8853                 sprintf(string, "%d\n", ret);
8854                 write(2, string, strlen(string));
8855                 alarm(0);
8856 #ifdef EAGAIN
8857                 if (errno == EAGAIN) {
8858                         printf("EAGAIN\n");
8859                         goto ok;
8860                 }
8861 #endif
8862 #ifdef EWOULDBLOCK
8863                 if (errno == EWOULDBLOCK)
8864                         printf("EWOULDBLOCK\n");
8865 #endif
8866         ok:
8867                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8868                 sleep(2);                               /* Give it time to close our pipe */
8869                 alarm(5);
8870                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8871                 alarm(0);
8872                 sprintf(string, "%d\n", ret);
8873                 write(3, string, strlen(string));
8874                 exit(0);
8875         }
8876
8877         close(pd[0]);                   /* We write to pd[1] */
8878         close(pu[1]);                   /* We read from pu[0] */
8879         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8880         close(pd[1]);                   /* Pipe pd is now fully closed! */
8881         exit(0);                                /* Bye bye, thank you for playing! */
8882 }
8883 EOCP
8884         set try
8885         if eval $compile_ok; then
8886                 echo "$startsh" >mtry
8887                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8888                 chmod +x mtry
8889                 ./mtry >/dev/null 2>&1
8890                 case $? in
8891                 0) eagain=`$cat try.out`;;
8892                 1) echo "Could not perform non-blocking setting!";;
8893                 2) echo "I did a successful read() for something that was not there!";;
8894                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8895                 *) echo "Something terribly wrong happened during testing.";;
8896                 esac
8897                 rd_nodata=`$cat try.ret`
8898                 echo "A read() system call with no data present returns $rd_nodata."
8899                 case "$rd_nodata" in
8900                 0|-1) ;;
8901                 *)
8902                         echo "(That's peculiar, fixing that to be -1.)"
8903                         rd_nodata=-1
8904                         ;;
8905                 esac
8906                 case "$eagain" in
8907                 '')
8908                         echo "Forcing errno EAGAIN on read() with no data available."
8909                         eagain=EAGAIN
8910                         ;;
8911                 *)
8912                         echo "Your read() sets errno to $eagain when no data is available."
8913                         ;;
8914                 esac
8915                 status=`$cat try.err`
8916                 case "$status" in
8917                 0) echo "And it correctly returns 0 to signal EOF.";;
8918                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8919                 *) echo "However, your read() returns '$status' on EOF??";;
8920                 esac
8921                 val="$define"
8922                 if test "$status" = "$rd_nodata"; then
8923                         echo "WARNING: you can't distinguish between EOF and no data!"
8924                         val="$undef"
8925                 fi
8926         else
8927                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8928                 eagain=EAGAIN
8929         fi
8930         set d_eofnblk
8931         eval $setvar
8932         ;;
8933 *)
8934         echo "Using $hint value $eagain."
8935         echo "Your read() returns $rd_nodata when no data is present."
8936         case "$d_eofnblk" in
8937         "$define") echo "And you can see EOF because read() returns 0.";;
8938         "$undef") echo "But you can't see EOF status from read() returned value.";;
8939         *)
8940                 echo "(Assuming you can't see EOF status from read anyway.)"
8941                 d_eofnblk=$undef
8942                 ;;
8943         esac
8944         ;;
8945 esac
8946 $rm -f try try.* .out core head.c mtry
8947
8948 : see if fchmod exists
8949 set fchmod d_fchmod
8950 eval $inlibc
8951
8952 : see if fchown exists
8953 set fchown d_fchown
8954 eval $inlibc
8955
8956 : see if this is an fcntl system
8957 set fcntl d_fcntl
8958 eval $inlibc
8959
8960 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8961 while $test $# -ge 2; do
8962         case "$1" in
8963         $define) echo "#include <$2>";;
8964         esac ;
8965     shift 2;
8966 done > try.c;
8967 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8968 set try;
8969 if eval $compile; then
8970         val="$define";
8971 else
8972         val="$undef";
8973 fi;
8974 set $varname;
8975 eval $setvar;
8976 $rm -f try.c try.o'
8977
8978 socketlib=''
8979 sockethdr=''
8980 : see whether socket exists
8981 echo " "
8982 $echo $n "Hmm... $c" >&4
8983 if set socket val -f d_socket; eval $csym; $val; then
8984         echo "Looks like you have Berkeley networking support." >&4
8985         d_socket="$define"
8986         if set setsockopt val -f; eval $csym; $val; then
8987                 d_oldsock="$undef"
8988         else
8989                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8990                 d_oldsock="$define"
8991         fi
8992 else
8993         if $contains socklib libc.list >/dev/null 2>&1; then
8994                 echo "Looks like you have Berkeley networking support." >&4
8995                 d_socket="$define"
8996                 : we will have to assume that it supports the 4.2 BSD interface
8997                 d_oldsock="$undef"
8998         else
8999                 echo "You don't have Berkeley networking in libc$_a..." >&4
9000                 if test "X$d_socket" = "X$define"; then
9001                    echo "...but you seem to believe that you have sockets." >&4
9002                 else
9003                         for net in net socket
9004                         do
9005                                 if test -f /usr/lib/lib$net$_a; then
9006                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9007                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9008                                         if $contains socket libc.list >/dev/null 2>&1; then
9009                                                 d_socket="$define"
9010                                                 socketlib="-l$net"
9011                                                 case "$net" in
9012                                                 net)
9013                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9014                                                         sockethdr="-I/usr/netinclude"
9015                                                         ;;
9016                                                 esac
9017                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9018                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9019                                                         d_oldsock="$undef"
9020                                                 else
9021                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9022                                                         d_oldsock="$define"
9023                                                 fi
9024                                                 break
9025                                         fi
9026                                 fi
9027                         done
9028                         if test "X$d_socket" != "X$define"; then
9029                            echo "or anywhere else I see." >&4
9030                            d_socket="$undef"
9031                            d_oldsock="$undef"
9032                         fi
9033                 fi
9034         fi
9035 fi
9036
9037 : see if socketpair exists
9038 set socketpair d_sockpair
9039 eval $inlibc
9040
9041
9042 echo " "
9043 echo "Checking the availability of certain socket constants..." >& 4
9044 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9045         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9046         $cat >try.c <<EOF
9047 #include <sys/types.h>
9048 #include <sys/socket.h>
9049 int main() {
9050     int i = $ENUM;
9051 }
9052 EOF
9053         val="$undef"
9054         set try; if eval $compile; then
9055                 val="$define"
9056         fi
9057         set d_${enum}; eval $setvar
9058         $rm -f try.c try
9059 done
9060
9061 : see if sys/select.h has to be included
9062 set sys/select.h i_sysselct
9063 eval $inhdr
9064
9065 : see if we should include time.h, sys/time.h, or both
9066 echo " "
9067 if test "X$timeincl" = X; then
9068         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9069         $echo $n "I'm now running the test program...$c"
9070         $cat >try.c <<'EOCP'
9071 #include <sys/types.h>
9072 #ifdef I_TIME
9073 #include <time.h>
9074 #endif
9075 #ifdef I_SYSTIME
9076 #ifdef SYSTIMEKERNEL
9077 #define KERNEL
9078 #endif
9079 #include <sys/time.h>
9080 #endif
9081 #ifdef I_SYSSELECT
9082 #include <sys/select.h>
9083 #endif
9084 int main()
9085 {
9086         struct tm foo;
9087 #ifdef S_TIMEVAL
9088         struct timeval bar;
9089 #endif
9090 #ifdef S_TIMEZONE
9091         struct timezone tzp;
9092 #endif
9093         if (foo.tm_sec == foo.tm_sec)
9094                 exit(0);
9095 #ifdef S_TIMEVAL
9096         if (bar.tv_sec == bar.tv_sec)
9097                 exit(0);
9098 #endif
9099         exit(1);
9100 }
9101 EOCP
9102         flags=''
9103         for s_timezone in '-DS_TIMEZONE' ''; do
9104         sysselect=''
9105         for s_timeval in '-DS_TIMEVAL' ''; do
9106         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9107         for i_time in '' '-DI_TIME'; do
9108         for i_systime in '-DI_SYSTIME' ''; do
9109                 case "$flags" in
9110                 '') $echo $n ".$c"
9111                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9112                         if eval $compile; then
9113                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9114                                 shift
9115                                 flags="$*"
9116                                 echo " "
9117                                 $echo $n "Succeeded with $flags$c"
9118                         fi
9119                         ;;
9120                 esac
9121         done
9122         done
9123         done
9124         done
9125         done
9126         timeincl=''
9127         echo " "
9128         case "$flags" in
9129         *SYSTIMEKERNEL*) i_systimek="$define"
9130                 timeincl=`./findhdr sys/time.h`
9131                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9132         *) i_systimek="$undef";;
9133         esac
9134         case "$flags" in
9135         *I_TIME*) i_time="$define"
9136                 timeincl=`./findhdr time.h`" $timeincl"
9137                 echo "We'll include <time.h>." >&4;;
9138         *) i_time="$undef";;
9139         esac
9140         case "$flags" in
9141         *I_SYSTIME*) i_systime="$define"
9142                 timeincl=`./findhdr sys/time.h`" $timeincl"
9143                 echo "We'll include <sys/time.h>." >&4;;
9144         *) i_systime="$undef";;
9145         esac
9146         $rm -f try.c try
9147 fi
9148
9149 : check for fd_set items
9150 $cat <<EOM
9151
9152 Checking to see how well your C compiler handles fd_set and friends ...
9153 EOM
9154 $cat >fd_set.c <<EOCP
9155 #$i_systime I_SYS_TIME
9156 #$i_sysselct I_SYS_SELECT
9157 #$d_socket HAS_SOCKET
9158 #include <sys/types.h>
9159 #ifdef HAS_SOCKET
9160 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9161 #endif
9162 #ifdef I_SYS_TIME
9163 #include <sys/time.h>
9164 #endif
9165 #ifdef I_SYS_SELECT
9166 #include <sys/select.h>
9167 #endif
9168 int main() {
9169         fd_set fds;
9170
9171 #ifdef TRYBITS
9172         if(fds.fds_bits);
9173 #endif
9174
9175 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9176         exit(0);
9177 #else
9178         exit(1);
9179 #endif
9180 }
9181 EOCP
9182 set fd_set -DTRYBITS
9183 if eval $compile; then
9184         d_fds_bits="$define"
9185         d_fd_set="$define"
9186         echo "Well, your system knows about the normal fd_set typedef..." >&4
9187         if ./fd_set; then
9188                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9189                 d_fd_macros="$define"
9190         else
9191                 $cat >&4 <<'EOM'
9192 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9193 EOM
9194                 d_fd_macros="$undef"
9195         fi
9196 else
9197         $cat <<'EOM'
9198 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9199 EOM
9200         set fd_set
9201         if eval $compile; then
9202                 d_fds_bits="$undef"
9203                 d_fd_set="$define"
9204                 echo "Well, your system has some sort of fd_set available..." >&4
9205                 if ./fd_set; then
9206                         echo "and you have the normal fd_set macros." >&4
9207                         d_fd_macros="$define"
9208                 else
9209                         $cat <<'EOM'
9210 but not the normal fd_set macros!  Gross!  More work for me...
9211 EOM
9212                         d_fd_macros="$undef"
9213                 fi
9214         else
9215         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9216                 d_fd_set="$undef"
9217                 d_fds_bits="$undef"
9218                 d_fd_macros="$undef"
9219         fi
9220 fi
9221 $rm -f fd_set*
9222
9223 : see if fgetpos exists
9224 set fgetpos d_fgetpos
9225 eval $inlibc
9226
9227 : see if flock exists
9228 set flock d_flock
9229 eval $inlibc
9230
9231 : see if fork exists
9232 set fork d_fork
9233 eval $inlibc
9234
9235 : see if pathconf exists
9236 set pathconf d_pathconf
9237 eval $inlibc
9238
9239 : see if fpathconf exists
9240 set fpathconf d_fpathconf
9241 eval $inlibc
9242
9243
9244 : check for fpos64_t
9245 echo " "
9246 echo "Checking to see if you have fpos64_t..." >&4
9247 $cat >try.c <<EOCP
9248 #include <stdio.h>
9249 int main() { fpos64_t x = 7; }
9250 EOCP
9251 set try
9252 if eval $compile; then
9253         val="$define"
9254         echo "You have fpos64_t."
9255 else
9256         val="$undef"
9257         echo "You do not have fpos64_t."
9258         case "$fpossize" in
9259         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9260         esac
9261 fi
9262 $rm -f try.* try
9263 set d_fpos64_t
9264 eval $setvar
9265
9266 : see if frexpl exists
9267 set frexpl d_frexpl
9268 eval $inlibc
9269
9270 hasstruct='varname=$1; struct=$2; shift; shift;
9271 while $test $# -ge 2; do
9272         case "$1" in
9273         $define) echo "#include <$2>";;
9274         esac ;
9275     shift 2;
9276 done > try.c;
9277 echo "int main () { struct $struct foo; }" >> try.c;
9278 set try;
9279 if eval $compile; then
9280         val="$define";
9281 else
9282         val="$undef";
9283 fi;
9284 set $varname;
9285 eval $setvar;
9286 $rm -f try.c try.o'
9287
9288 : see if this is a sys/param system
9289 set sys/param.h i_sysparam
9290 eval $inhdr
9291
9292 : see if this is a sys/mount.h system
9293 set sys/mount.h i_sysmount
9294 eval $inhdr
9295
9296 : see if sys/types.h has to be included
9297 set sys/types.h i_systypes
9298 eval $inhdr
9299
9300
9301 echo " "
9302 echo "Checking to see if your system supports struct fs_data..." >&4
9303 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9304 eval $hasstruct
9305 case "$d_fs_data_s" in
9306 "$define")      echo "Yes, it does."   ;;
9307 *)              echo "No, it doesn't." ;;
9308 esac
9309
9310 : see if fseeko exists
9311 set fseeko d_fseeko
9312 eval $inlibc
9313 case "$longsize" in
9314 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9315 esac
9316
9317 : see if fsetpos exists
9318 set fsetpos d_fsetpos
9319 eval $inlibc
9320
9321
9322 : see if fstatfs exists
9323 set fstatfs d_fstatfs
9324 eval $inlibc
9325
9326
9327 : see if statvfs exists
9328 set statvfs d_statvfs
9329 eval $inlibc
9330
9331 : see if fstatvfs exists
9332 set fstatvfs d_fstatvfs
9333 eval $inlibc
9334
9335
9336 : see if ftello exists
9337 set ftello d_ftello
9338 eval $inlibc
9339 case "$longsize" in
9340 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9341 esac
9342
9343 : see if getcwd exists
9344 set getcwd d_getcwd
9345 eval $inlibc
9346
9347 : see if getespwnam exists
9348 set getespwnam d_getespwnam
9349 eval $inlibc
9350
9351
9352 : see if getfsstat exists
9353 set getfsstat d_getfsstat
9354 eval $inlibc
9355
9356 : see if getgrent exists
9357 set getgrent d_getgrent
9358 eval $inlibc
9359
9360 : see if gethostbyaddr exists
9361 set gethostbyaddr d_gethbyaddr
9362 eval $inlibc
9363
9364 : see if gethostbyname exists
9365 set gethostbyname d_gethbyname
9366 eval $inlibc
9367
9368 : see if gethostent exists
9369 set gethostent d_gethent
9370 eval $inlibc
9371
9372 : see how we will look up host name
9373 echo " "
9374 call=''
9375 if set gethostname val -f d_gethname; eval $csym; $val; then
9376         echo 'gethostname() found.' >&4
9377         d_gethname="$define"
9378         call=gethostname
9379 fi
9380 if set uname val -f d_uname; eval $csym; $val; then
9381         if ./xenix; then
9382                 $cat <<'EOM'
9383 uname() was found, but you're running xenix, and older versions of xenix
9384 have a broken uname(). If you don't really know whether your xenix is old
9385 enough to have a broken system call, use the default answer.
9386
9387 EOM
9388                 dflt=y
9389                 case "$d_uname" in
9390                 "$define") dflt=n;;
9391                 esac
9392                 rp='Is your uname() broken?'
9393                 . ./myread
9394                 case "$ans" in
9395                 n*) d_uname="$define"; call=uname;;
9396                 esac
9397         else
9398                 echo 'uname() found.' >&4
9399                 d_uname="$define"
9400                 case "$call" in
9401                 '') call=uname ;;
9402                 esac
9403         fi
9404 fi
9405 case "$d_gethname" in
9406 '') d_gethname="$undef";;
9407 esac
9408 case "$d_uname" in
9409 '') d_uname="$undef";;
9410 esac
9411 case "$d_uname$d_gethname" in
9412 *define*)
9413         dflt=n
9414         cat <<EOM
9415  
9416 Every now and then someone has a $call() that lies about the hostname
9417 but can't be fixed for political or economic reasons.  If you wish, I can
9418 pretend $call() isn't there and maybe compute hostname at run-time
9419 thanks to the '$phostname' command.
9420
9421 EOM
9422         rp="Shall I ignore $call() from now on?"
9423         . ./myread
9424         case "$ans" in
9425         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9426         esac;;
9427 esac
9428 case "$phostname" in
9429 '') aphostname='';;
9430 *) case "$aphostname" in
9431         /*) ;;
9432         *) set X $phostname
9433                 shift
9434                 file=$1
9435                 shift
9436                 file=`./loc $file $file $pth`
9437                 aphostname=`echo $file $*`
9438                 ;;
9439         esac
9440         ;;
9441 esac
9442 case "$d_uname$d_gethname" in
9443 *define*) ;;
9444 *)
9445         case "$phostname" in
9446         '')
9447                 echo "There will be no way for $package to get your hostname." >&4;;
9448         *)
9449         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9450                 ;;
9451         esac;;
9452 esac
9453 case "$d_phostname" in
9454 '') d_phostname="$undef";;
9455 esac
9456
9457 : see if this is a netdb.h system
9458 set netdb.h i_netdb
9459 eval $inhdr
9460
9461 : see if prototypes for various gethostxxx netdb.h functions are available
9462 echo " "
9463 set d_gethostprotos gethostent $i_netdb netdb.h
9464 eval $hasproto
9465
9466 : see if getlogin exists
9467 set getlogin d_getlogin
9468 eval $inlibc
9469
9470 : see if getmnt exists
9471 set getmnt d_getmnt
9472 eval $inlibc
9473
9474 : see if getmntent exists
9475 set getmntent d_getmntent
9476 eval $inlibc
9477
9478 : see if getnetbyaddr exists
9479 set getnetbyaddr d_getnbyaddr
9480 eval $inlibc
9481
9482 : see if getnetbyname exists
9483 set getnetbyname d_getnbyname
9484 eval $inlibc
9485
9486 : see if getnetent exists
9487 set getnetent d_getnent
9488 eval $inlibc
9489
9490 : see if prototypes for various getnetxxx netdb.h functions are available
9491 echo " "
9492 set d_getnetprotos getnetent $i_netdb netdb.h
9493 eval $hasproto
9494
9495
9496 : see if getprotobyname exists
9497 set getprotobyname d_getpbyname
9498 eval $inlibc
9499
9500 : see if getprotobynumber exists
9501 set getprotobynumber d_getpbynumber
9502 eval $inlibc
9503
9504 : see if getprotoent exists
9505 set getprotoent d_getpent
9506 eval $inlibc
9507
9508 : see if getpgid exists
9509 set getpgid d_getpgid
9510 eval $inlibc
9511
9512 : see if getpgrp2 exists
9513 set getpgrp2 d_getpgrp2
9514 eval $inlibc
9515
9516 : see if getppid exists
9517 set getppid d_getppid
9518 eval $inlibc
9519
9520 : see if getpriority exists
9521 set getpriority d_getprior
9522 eval $inlibc
9523
9524 : see if prototypes for various getprotoxxx netdb.h functions are available
9525 echo " "
9526 set d_getprotoprotos getprotoent $i_netdb netdb.h
9527 eval $hasproto
9528
9529 : see if getprpwnam exists
9530 set getprpwnam d_getprpwnam
9531 eval $inlibc
9532
9533 : see if getpwent exists
9534 set getpwent d_getpwent
9535 eval $inlibc
9536
9537
9538 : see if getservbyname exists
9539 set getservbyname d_getsbyname
9540 eval $inlibc
9541
9542 : see if getservbyport exists
9543 set getservbyport d_getsbyport
9544 eval $inlibc
9545
9546 : see if getservent exists
9547 set getservent d_getsent
9548 eval $inlibc
9549
9550 : see if prototypes for various getservxxx netdb.h functions are available
9551 echo " "
9552 set d_getservprotos getservent $i_netdb netdb.h
9553 eval $hasproto
9554
9555 : see if getspnam exists
9556 set getspnam d_getspnam
9557 eval $inlibc
9558
9559 : see if gettimeofday or ftime exists
9560 set gettimeofday d_gettimeod
9561 eval $inlibc
9562 case "$d_gettimeod" in
9563 "$undef")
9564         set ftime d_ftime 
9565         eval $inlibc
9566         ;;
9567 *)
9568         val="$undef"; set d_ftime; eval $setvar
9569         ;;
9570 esac
9571 case "$d_gettimeod$d_ftime" in
9572 "$undef$undef")
9573         echo " "
9574         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9575         ;;
9576 esac
9577
9578 : see if this is an grp system
9579 set grp.h i_grp
9580 eval $inhdr
9581
9582 case "$i_grp" in
9583 $define)
9584         xxx=`./findhdr grp.h`
9585         $cppstdin $cppflags $cppminus < $xxx >$$.h
9586
9587         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9588                 val="$define"
9589         else
9590                 val="$undef"
9591         fi
9592         set d_grpasswd
9593         eval $setvar
9594
9595         $rm -f $$.h
9596         ;;
9597 *)
9598         val="$undef";
9599         set d_grpasswd; eval $setvar
9600         ;;
9601 esac
9602
9603 : see if hasmntopt exists
9604 set hasmntopt d_hasmntopt
9605 eval $inlibc
9606
9607 : see if this is a netinet/in.h or sys/in.h system
9608 set netinet/in.h i_niin sys/in.h i_sysin
9609 eval $inhdr
9610
9611 : see if arpa/inet.h has to be included
9612 set arpa/inet.h i_arpainet
9613 eval $inhdr
9614
9615 : see if htonl --and friends-- exists
9616 val=''
9617 set htonl val
9618 eval $inlibc
9619
9620 : Maybe they are macros.
9621 case "$val" in
9622 $undef)
9623         $cat >htonl.c <<EOM
9624 #include <stdio.h>
9625 #include <sys/types.h>
9626 #$i_niin I_NETINET_IN
9627 #$i_sysin I_SYS_IN
9628 #$i_arpainet I_ARPA_INET
9629 #ifdef I_NETINET_IN
9630 #include <netinet/in.h>
9631 #endif
9632 #ifdef I_SYS_IN
9633 #include <sys/in.h>
9634 #endif
9635 #ifdef I_ARPA_INET
9636 #include <arpa/inet.h>
9637 #endif
9638 #ifdef htonl
9639 printf("Defined as a macro.");
9640 #endif
9641 EOM
9642         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9643         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9644                 val="$define"
9645                 echo "But it seems to be defined as a macro." >&4
9646         fi
9647         $rm -f htonl.?
9648         ;;
9649 esac
9650 set d_htonl
9651 eval $setvar
9652
9653 : see if iconv exists
9654 set iconv d_iconv
9655 eval $inlibc
9656
9657 : index or strchr
9658 echo " "
9659 if set index val -f; eval $csym; $val; then
9660         if set strchr val -f d_strchr; eval $csym; $val; then
9661                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9662                         val="$define"
9663                         vali="$undef"
9664                         echo "strchr() found." >&4
9665                 else
9666                         val="$undef"
9667                         vali="$define"
9668                         echo "index() found." >&4
9669                 fi
9670         else
9671                 val="$undef"
9672                 vali="$define"
9673                 echo "index() found." >&4
9674         fi
9675 else
9676         if set strchr val -f d_strchr; eval $csym; $val; then
9677                 val="$define"
9678                 vali="$undef"
9679                 echo "strchr() found." >&4
9680         else
9681                 echo "No index() or strchr() found!" >&4
9682                 val="$undef"
9683                 vali="$undef"
9684         fi
9685 fi
9686 set d_strchr; eval $setvar
9687 val="$vali"
9688 set d_index; eval $setvar
9689
9690 : check whether inet_aton exists
9691 set inet_aton d_inetaton
9692 eval $inlibc
9693
9694 : see if inttypes.h is available
9695 : we want a real compile instead of Inhdr because some systems
9696 : have an inttypes.h which includes non-existent headers
9697 echo " "
9698 $cat >try.c <<EOCP
9699 #include <inttypes.h>
9700 int main() {
9701         static int32_t foo32 = 0x12345678;
9702 }
9703 EOCP
9704 set try
9705 if eval $compile; then
9706         echo "<inttypes.h> found." >&4
9707         val="$define"
9708 else
9709         echo "<inttypes.h> NOT found." >&4
9710         val="$undef"
9711 fi
9712 $rm -f try.c try
9713 set i_inttypes
9714 eval $setvar
9715
9716 : check for int64_t
9717 echo " "
9718 echo "Checking to see if you have int64_t..." >&4
9719 $cat >try.c <<EOCP
9720 #include <sys/types.h>
9721 #$i_inttypes I_INTTYPES
9722 #ifdef I_INTTYPES
9723 #include <inttypes.h>
9724 #endif
9725 int main() { int64_t x = 7; }
9726 EOCP
9727 set try
9728 if eval $compile; then
9729         val="$define"
9730         echo "You have int64_t."
9731 else
9732         val="$undef"
9733         echo "You do not have int64_t."
9734 fi
9735 $rm -f try try.*
9736 set d_int64_t
9737 eval $setvar
9738
9739 : Look for isascii
9740 echo " "
9741 $cat >isascii.c <<'EOCP'
9742 #include <stdio.h>
9743 #include <ctype.h>
9744 int main() {
9745         int c = 'A';
9746         if (isascii(c))
9747                 exit(0);
9748         else
9749                 exit(1);
9750 }
9751 EOCP
9752 set isascii
9753 if eval $compile; then
9754         echo "isascii() found." >&4
9755         val="$define"
9756 else
9757         echo "isascii() NOT found." >&4
9758         val="$undef"
9759 fi
9760 set d_isascii
9761 eval $setvar
9762 $rm -f isascii*
9763
9764 : see if isnan exists
9765 set isnan d_isnan
9766 eval $inlibc
9767
9768 : see if isnanl exists
9769 set isnanl d_isnanl
9770 eval $inlibc
9771
9772 : see if killpg exists
9773 set killpg d_killpg
9774 eval $inlibc
9775
9776 : see if lchown exists
9777 echo " "
9778 $cat > try.c <<'EOCP'
9779 /* System header to define __stub macros and hopefully few prototypes,
9780     which can conflict with char lchown(); below.  */
9781 #include <assert.h>
9782 /* Override any gcc2 internal prototype to avoid an error.  */
9783 /* We use char because int might match the return type of a gcc2
9784    builtin and then its argument prototype would still apply.  */
9785 char lchown();
9786 int main() {
9787     /*  The GNU C library defines this for functions which it implements
9788         to always fail with ENOSYS.  Some functions are actually named
9789         something starting with __ and the normal name is an alias.  */
9790 #if defined (__stub_lchown) || defined (__stub___lchown)
9791 choke me
9792 #else
9793 lchown();
9794 #endif
9795 ; return 0; }
9796 EOCP
9797 set try
9798 if eval $compile; then
9799     $echo "lchown() found." >&4
9800     val="$define"
9801 else
9802     $echo "lchown() NOT found." >&4
9803     val="$undef"
9804 fi
9805 set d_lchown
9806 eval $setvar
9807
9808 : See if number of significant digits in a double precision number is known
9809 echo " "
9810 $cat >ldbl_dig.c <<EOM
9811 #$i_limits I_LIMITS
9812 #$i_float I_FLOAT
9813 #ifdef I_LIMITS
9814 #include <limits.h>
9815 #endif
9816 #ifdef I_FLOAT
9817 #include <float.h>
9818 #endif
9819 #ifdef LDBL_DIG
9820 printf("Contains LDBL_DIG");
9821 #endif
9822 EOM
9823 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9824 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9825         echo "LDBL_DIG found." >&4
9826         val="$define"
9827 else
9828         echo "LDBL_DIG NOT found." >&4
9829         val="$undef"
9830 fi
9831 $rm -f ldbl_dig.?
9832 set d_ldbl_dig
9833 eval $setvar
9834
9835 : see if link exists
9836 set link d_link
9837 eval $inlibc
9838
9839 : see if localeconv exists
9840 set localeconv d_locconv
9841 eval $inlibc
9842
9843 : see if lockf exists
9844 set lockf d_lockf
9845 eval $inlibc
9846
9847 : check for long long
9848 echo " "
9849 echo "Checking to see if you have long long..." >&4
9850 echo 'int main() { long long x = 7; return 0; }' > try.c
9851 set try
9852 if eval $compile; then
9853         val="$define"
9854         echo "You have long long."
9855 else
9856         val="$undef"
9857         echo "You do not have long long."
9858 fi
9859 $rm try.*
9860 set d_longlong
9861 eval $setvar
9862
9863 : check for length of long long
9864 case "${d_longlong}${longlongsize}" in
9865 $define)
9866         echo " "
9867         echo "Checking to see how big your long longs are..." >&4
9868         $cat >try.c <<'EOCP'
9869 #include <stdio.h>
9870 int main()
9871 {
9872     printf("%d\n", (int)sizeof(long long));
9873     return(0);
9874 }
9875 EOCP
9876         set try
9877         if eval $compile_ok; then
9878                 longlongsize=`./try$exe_ext`
9879                 echo "Your long longs are $longlongsize bytes long."
9880         else
9881                 dflt='8'
9882                 echo " "
9883                 echo "(I can't seem to compile the test program.  Guessing...)"
9884                 rp="What is the size of a long long (in bytes)?"
9885                 . ./myread
9886                 longlongsize="$ans"
9887         fi
9888         if $test "X$longsize" = "X$longlongsize"; then
9889                 echo "(That isn't any different from an ordinary long.)"
9890         fi      
9891         ;;
9892 esac
9893 $rm -f try.* try
9894
9895 : see if prototype for lseek is available
9896 echo " "
9897 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9898 eval $hasproto
9899
9900 : see if lstat exists
9901 set lstat d_lstat
9902 eval $inlibc
9903
9904 : see if madvise exists
9905 set madvise d_madvise
9906 eval $inlibc
9907
9908 : see if mblen exists
9909 set mblen d_mblen
9910 eval $inlibc
9911
9912 : see if mbstowcs exists
9913 set mbstowcs d_mbstowcs
9914 eval $inlibc
9915
9916 : see if mbtowc exists
9917 set mbtowc d_mbtowc
9918 eval $inlibc
9919
9920 : see if memchr exists
9921 set memchr d_memchr
9922 eval $inlibc
9923
9924 : see if memcmp exists
9925 set memcmp d_memcmp
9926 eval $inlibc
9927
9928 : see if memcpy exists
9929 set memcpy d_memcpy
9930 eval $inlibc
9931
9932 : see if memmove exists
9933 set memmove d_memmove
9934 eval $inlibc
9935
9936 : see if memset exists
9937 set memset d_memset
9938 eval $inlibc
9939
9940 : see if mkdir exists
9941 set mkdir d_mkdir
9942 eval $inlibc
9943
9944 : see if mkdtemp exists
9945 set mkdtemp d_mkdtemp
9946 eval $inlibc
9947
9948 : see if mkfifo exists
9949 set mkfifo d_mkfifo
9950 eval $inlibc
9951
9952 : see if mkstemp exists
9953 set mkstemp d_mkstemp
9954 eval $inlibc
9955
9956 : see if mkstemps exists
9957 set mkstemps d_mkstemps
9958 eval $inlibc
9959
9960 : see if mktime exists
9961 set mktime d_mktime
9962 eval $inlibc
9963
9964 : see if this is a sys/mman.h system
9965 set sys/mman.h i_sysmman
9966 eval $inhdr
9967
9968 : see if mmap exists
9969 set mmap d_mmap
9970 eval $inlibc
9971 : see what shmat returns
9972 : default to something harmless
9973 mmaptype='void *'
9974 case "$i_sysmman$d_mmap" in
9975 "$define$define")
9976         $cat >mmap.c <<'END'
9977 #include <sys/mman.h>
9978 void *mmap();
9979 END
9980         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9981                 mmaptype='void *'
9982         else
9983                 mmaptype='caddr_t'
9984         fi
9985         echo "and it returns ($mmaptype)." >&4
9986         ;;
9987 esac
9988
9989
9990
9991 : see if modfl exists
9992 set modfl d_modfl
9993 eval $inlibc
9994
9995 : see if mprotect exists
9996 set mprotect d_mprotect
9997 eval $inlibc
9998
9999 : see if msgctl exists
10000 set msgctl d_msgctl
10001 eval $inlibc
10002
10003 : see if msgget exists
10004 set msgget d_msgget
10005 eval $inlibc
10006
10007 : see if msgsnd exists
10008 set msgsnd d_msgsnd
10009 eval $inlibc
10010
10011 : see if msgrcv exists
10012 set msgrcv d_msgrcv
10013 eval $inlibc
10014
10015 : see how much of the 'msg*(2)' library is present.
10016 h_msg=true
10017 echo " "
10018 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10019 *"$undef"*) h_msg=false;;
10020 esac
10021 case "$osname" in
10022 freebsd)
10023     case "`ipcs 2>&1`" in
10024     "SVID messages"*"not configured"*)
10025         echo "Your $osname does not have the msg*(2) configured." >&4
10026         h_msg=false
10027         val="$undef"
10028         set msgctl d_msgctl
10029         eval $setvar
10030         set msgget d_msgget
10031         eval $setvar
10032         set msgsnd d_msgsnd
10033         eval $setvar
10034         set msgrcv d_msgrcv
10035         eval $setvar
10036         ;;
10037     esac
10038     ;;
10039 esac
10040 : we could also check for sys/ipc.h ...
10041 if $h_msg && $test `./findhdr sys/msg.h`; then
10042         echo "You have the full msg*(2) library." >&4
10043         val="$define"
10044 else
10045         echo "You don't have the full msg*(2) library." >&4
10046         val="$undef"
10047 fi
10048 set d_msg
10049 eval $setvar
10050
10051 : see if msync exists
10052 set msync d_msync
10053 eval $inlibc
10054
10055 : see if munmap exists
10056 set munmap d_munmap
10057 eval $inlibc
10058
10059 : see if nice exists
10060 set nice d_nice
10061 eval $inlibc
10062
10063
10064 echo " "
10065 echo "Checking which 64-bit integer type we could use..." >&4
10066
10067 case "$intsize" in
10068 8) val=int
10069    set quadtype
10070    eval $setvar
10071    val='"unsigned int"'
10072    set uquadtype
10073    eval $setvar
10074    quadkind=1
10075    ;;
10076 *) case "$longsize" in
10077    8) val=long
10078       set quadtype
10079       eval $setvar
10080       val='"unsigned long"'
10081       set uquadtype
10082       eval $setvar
10083       quadkind=2
10084       ;;
10085    *) case "$d_longlong:$longlongsize" in
10086       define:8)
10087         val='"long long"'
10088         set quadtype
10089         eval $setvar
10090         val='"unsigned long long"'
10091         set uquadtype
10092         eval $setvar
10093         quadkind=3
10094         ;;
10095       *) case "$d_int64_t" in
10096          define)
10097            val=int64_t
10098            set quadtype
10099            eval $setvar
10100            val=uint64_t
10101            set uquadtype
10102            eval $setvar
10103            quadkind=4
10104            ;;
10105          esac
10106          ;;
10107       esac
10108       ;;
10109    esac
10110    ;;
10111 esac
10112
10113 case "$quadtype" in
10114 '')     echo "Alas, no 64-bit integer types in sight." >&4
10115         d_quad="$undef"
10116         ;;
10117 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10118             verb="will"
10119         else
10120             verb="could"
10121         fi
10122         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10123         d_quad="$define"
10124         ;;
10125 esac
10126
10127 : check for length of character
10128 echo " "
10129 case "$charsize" in
10130 '')
10131         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10132         $cat >try.c <<'EOCP'
10133 #include <stdio.h>
10134 int main()
10135 {
10136     printf("%d\n", (int)sizeof(char));
10137     exit(0);
10138 }
10139 EOCP
10140         set try
10141         if eval $compile_ok; then
10142                 dflt=`./try`
10143         else
10144                 dflt='1'
10145                 echo "(I can't seem to compile the test program.  Guessing...)"
10146         fi
10147         ;;
10148 *)
10149         dflt="$charsize"
10150         ;;
10151 esac
10152 rp="What is the size of a character (in bytes)?"
10153 . ./myread
10154 charsize="$ans"
10155 $rm -f try.c try
10156
10157
10158 echo " "
10159 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10160
10161 case "$use64bitint:$d_quad:$quadtype" in
10162 define:define:?*)
10163         ivtype="$quadtype"
10164         uvtype="$uquadtype"
10165         ivsize=8
10166         uvsize=8
10167         ;;
10168 *)      ivtype="long"
10169         uvtype="unsigned long"
10170         ivsize=$longsize
10171         uvsize=$longsize
10172         ;;
10173 esac
10174
10175 case "$uselongdouble:$d_longdbl" in
10176 define:define)
10177         nvtype="long double"
10178         nvsize=$longdblsize
10179         ;;
10180 *)      nvtype=double
10181         nvsize=$doublesize
10182         ;;
10183 esac
10184
10185 $echo "(IV will be "$ivtype", $ivsize bytes)"
10186 $echo "(UV will be "$uvtype", $uvsize bytes)"
10187 $echo "(NV will be "$nvtype", $nvsize bytes)"
10188
10189 $cat >try.c <<EOCP
10190 #$i_inttypes I_INTTYPES
10191 #ifdef I_INTTYPES
10192 #include <inttypes.h>
10193 #endif
10194 #include <stdio.h>
10195 int main() {
10196 #ifdef INT8
10197    int8_t i =  INT8_MAX;
10198   uint8_t u = UINT8_MAX;
10199   printf("int8_t\n");
10200 #endif
10201 #ifdef INT16
10202    int16_t i =  INT16_MAX;
10203   uint16_t i = UINT16_MAX;
10204   printf("int16_t\n");
10205 #endif
10206 #ifdef INT32
10207    int32_t i =  INT32_MAX;
10208   uint32_t u = UINT32_MAX;
10209   printf("int32_t\n");
10210 #endif
10211 }
10212 EOCP
10213
10214 case "$i8type" in
10215 '')     case "$charsize" in
10216         1)      i8type=char
10217                 u8type="unsigned char"
10218                 i8size=$charsize
10219                 u8size=$charsize
10220                 ;;
10221         esac
10222         ;;
10223 esac
10224 case "$i8type" in
10225 '')     set try -DINT8
10226         if eval $compile; then
10227                 case "`./try$exe_ext`" in
10228                 int8_t) i8type=int8_t
10229                         u8type=uint8_t
10230                         i8size=1
10231                         u8size=1
10232                         ;;
10233                 esac
10234         fi
10235         ;;
10236 esac
10237 case "$i8type" in
10238 '')     if $test $charsize -ge 1; then
10239                 i8type=char
10240                 u8type="unsigned char"
10241                 i8size=$charsize
10242                 u8size=$charsize
10243         fi
10244         ;;
10245 esac
10246
10247 case "$i16type" in
10248 '')     case "$shortsize" in
10249         2)      i16type=short
10250                 u16type="unsigned short"
10251                 i16size=$shortsize
10252                 u16size=$shortsize
10253                 ;;
10254         esac
10255         ;;
10256 esac
10257 case "$i16type" in
10258 '')     set try -DINT16
10259         if eval $compile; then
10260                 case "`./try$exe_ext`" in
10261                 int16_t)
10262                         i16type=int16_t
10263                         u16type=uint16_t
10264                         i16size=2
10265                         u16size=2
10266                         ;;
10267                 esac
10268         fi
10269         ;;
10270 esac
10271 case "$i16type" in
10272 '')     if $test $shortsize -ge 2; then
10273                 i16type=short
10274                 u16type="unsigned short"
10275                 i16size=$shortsize
10276                 u16size=$shortsize
10277         fi
10278         ;;
10279 esac
10280
10281 case "$i32type" in
10282 '')     case "$longsize" in
10283         4)      i32type=long
10284                 u32type="unsigned long"
10285                 i32size=$longsize
10286                 u32size=$longsize
10287                 ;;
10288         *)      case "$intsize" in
10289                 4)      i32type=int
10290                         u32type="unsigned int"
10291                         i32size=$intsize
10292                         u32size=$intsize
10293                         ;;
10294                 esac
10295                 ;;
10296         esac
10297         ;;
10298 esac
10299 case "$i32type" in
10300 '')     set try -DINT32
10301         if eval $compile; then
10302                 case "`./try$exe_ext`" in
10303                 int32_t)
10304                         i32type=int32_t
10305                         u32type=uint32_t
10306                         i32size=4
10307                         u32size=4
10308                         ;;
10309                 esac
10310         fi
10311         ;;
10312 esac
10313 case "$i32type" in
10314 '')     if $test $intsize -ge 4; then
10315                 i32type=int
10316                 u32type="unsigned int"
10317                 i32size=$intsize
10318                 u32size=$intsize
10319         fi
10320         ;;
10321 esac
10322
10323 case "$i64type" in
10324 '')     case "$d_quad:$quadtype" in
10325         define:?*)
10326                 i64type="$quadtype"
10327                 u64type="$uquadtype"
10328                 i64size=8
10329                 u64size=8
10330                 ;;
10331         esac
10332         ;;
10333 esac
10334
10335 $echo "Checking whether your NVs can preserve your UVs..." >&4
10336 $cat <<EOP >try.c
10337 #include <stdio.h>
10338 int main() {
10339     $uvtype k = ($uvtype)~0, l;
10340     $nvtype d;
10341     l = k;
10342     d = ($nvtype)l;
10343     l = ($uvtype)d;
10344     if (l == k)
10345        printf("preserve\n");
10346     exit(0);
10347 }
10348 EOP
10349 set try
10350 if eval $compile; then
10351         case "`./try$exe_ext`" in
10352         preserve) d_nv_preserves_uv="$define" ;;
10353         esac
10354 fi      
10355 case "$d_nv_preserves_uv" in
10356 $define) $echo "Yes, they can."  2>&1 ;;
10357 *)       $echo "No, they can't." 2>&1
10358          d_nv_preserves_uv="$undef"
10359          ;;
10360 esac
10361
10362 $rm -f try.* try
10363
10364 case "$d_nv_preserves_uv" in
10365 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10366 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10367         $cat <<EOP >try.c
10368 #include <stdio.h>
10369 int main() {
10370     $uvtype u = 0;
10371     int     n = 8 * $uvsize;
10372     int     i;
10373     for (i = 0; i < n; i++) {
10374       u = u << 1 | ($uvtype)1;
10375       if (($uvtype)($nvtype)u != u)
10376         break;
10377     }
10378     printf("%d\n", i);
10379     exit(0);
10380 }
10381 EOP
10382         set try
10383         if eval $compile; then
10384                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10385         fi
10386         case "$d_nv_preserves_uv_bits" in
10387         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10388         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10389                 d_nv_preserves_uv_bits="$undef"
10390                 ;;
10391         esac
10392         $rm -f try.* try
10393         ;;
10394 esac
10395
10396
10397
10398 : check for off64_t
10399 echo " "
10400 echo "Checking to see if you have off64_t..." >&4
10401 $cat >try.c <<EOCP
10402 #include <sys/types.h>
10403 #include <unistd.h>
10404 int main() { off64_t x = 7; }
10405 EOCP
10406 set try
10407 if eval $compile; then
10408         val="$define"
10409         echo "You have off64_t."
10410 else
10411         val="$undef"
10412         echo "You do not have off64_t."
10413         case "$lseeksize" in
10414         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10415         esac
10416 fi
10417 $rm -f try.* try
10418 set d_off64_t
10419 eval $setvar
10420
10421 : see if POSIX threads are available
10422 set pthread.h i_pthread
10423 eval $inhdr
10424
10425
10426
10427
10428 : how to create joinable pthreads
10429 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10430         echo " "
10431         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10432         $cat >try.c <<'EOCP'
10433 #include <pthread.h>
10434 int main() {
10435     int detachstate = JOINABLE;
10436 }
10437 EOCP
10438         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10439         if eval $compile; then
10440                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10441                 val="$undef" # Yes, undef.
10442                 set d_old_pthread_create_joinable
10443                 eval $setvar
10444                 val=""
10445                 set old_pthread_create_joinable
10446                 eval $setvar
10447         else
10448                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10449                 if eval $compile; then
10450                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10451                         val="$define"
10452                         set d_old_pthread_create_joinable
10453                         eval $setvar
10454                         val=PTHREAD_CREATE_UNDETACHED
10455                         set old_pthread_create_joinable
10456                         eval $setvar
10457                 else            
10458                         set try -DJOINABLE=__UNDETACHED
10459                         if eval $compile; then
10460                                 echo "You seem to use __UNDETACHED." >&4
10461                                 val="$define"
10462                                 set d_old_pthread_create_joinable
10463                                 eval $setvar
10464                                 val=__UNDETACHED
10465                                 set old_pthread_create_joinable
10466                                 eval $setvar
10467                         else
10468                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10469                                 val="$define"
10470                                 set d_old_pthread_create_joinable
10471                                 eval $setvar
10472                                 val=0
10473                                 set old_pthread_create_joinable
10474                                 eval $setvar
10475                         fi
10476                 fi
10477         fi
10478         $rm -f try try.*
10479 else
10480     d_old_pthread_create_joinable="$undef"
10481     old_pthread_create_joinable=""
10482 fi
10483
10484 : see if pause exists
10485 set pause d_pause
10486 eval $inlibc
10487
10488 : see if pipe exists
10489 set pipe d_pipe
10490 eval $inlibc
10491
10492 : see if poll exists
10493 set poll d_poll
10494 eval $inlibc
10495
10496
10497 : see whether the various POSIXish _yields exist
10498 $cat >try.c <<EOP
10499 #include <pthread.h>
10500 #include <stdio.h>
10501 int main() {
10502 #ifdef SCHED_YIELD
10503         sched_yield();
10504 #else
10505 #ifdef PTHREAD_YIELD
10506         pthread_yield();
10507 #else
10508 #ifdef PTHREAD_YIELD_NULL
10509         pthread_yield(NULL);
10510 #endif
10511 #endif
10512 #endif
10513 }
10514 EOP
10515 : see if sched_yield exists
10516 set try -DSCHED_YIELD
10517 if eval $compile; then
10518     val="$define"
10519     sched_yield='sched_yield()'
10520 else
10521     val="$undef"
10522 fi
10523 case "$usethreads" in
10524 $define)
10525         case "$val" in
10526         $define) echo 'sched_yield() found.' >&4        ;;
10527         *)       echo 'sched_yield() NOT found.' >&4    ;;
10528         esac
10529 esac
10530 set d_sched_yield
10531 eval $setvar
10532
10533 : see if pthread_yield exists
10534 set try -DPTHREAD_YIELD
10535 if eval $compile; then
10536     val="$define"
10537     case "$sched_yield" in
10538     '') sched_yield='pthread_yield()' ;;
10539     esac
10540 else
10541     set try -DPTHREAD_YIELD_NULL
10542     if eval $compile; then
10543         val="$define"
10544         case "$sched_yield" in
10545         '') sched_yield='pthread_yield(NULL)' ;;
10546         esac
10547     else
10548         val="$undef"
10549     fi
10550 fi
10551 case "$usethreads" in
10552 $define)
10553         case "$val" in
10554         $define) echo 'pthread_yield() found.' >&4      ;;
10555         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10556         esac
10557         ;;
10558 esac
10559 set d_pthread_yield
10560 eval $setvar
10561
10562 case "$sched_yield" in
10563 '') sched_yield=undef ;;
10564 esac
10565
10566 $rm -f try try.*
10567
10568 : see if this is a pwd.h system
10569 set pwd.h i_pwd
10570 eval $inhdr
10571
10572 case "$i_pwd" in
10573 $define)
10574         xxx=`./findhdr pwd.h`
10575         $cppstdin $cppflags $cppminus < $xxx >$$.h
10576
10577         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10578                 val="$define"
10579         else
10580                 val="$undef"
10581         fi
10582         set d_pwquota
10583         eval $setvar
10584
10585         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10586                 val="$define"
10587         else
10588                 val="$undef"
10589         fi
10590         set d_pwage
10591         eval $setvar
10592
10593         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10594                 val="$define"
10595         else
10596                 val="$undef"
10597         fi
10598         set d_pwchange
10599         eval $setvar
10600
10601         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10602                 val="$define"
10603         else
10604                 val="$undef"
10605         fi
10606         set d_pwclass
10607         eval $setvar
10608
10609         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10610                 val="$define"
10611         else
10612                 val="$undef"
10613         fi
10614         set d_pwexpire
10615         eval $setvar
10616
10617         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10618                 val="$define"
10619         else
10620                 val="$undef"
10621         fi
10622         set d_pwcomment
10623         eval $setvar
10624
10625         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10626                 val="$define"
10627         else
10628                 val="$undef"
10629         fi
10630         set d_pwgecos
10631         eval $setvar
10632
10633         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10634                 val="$define"
10635         else
10636                 val="$undef"
10637         fi
10638         set d_pwpasswd
10639         eval $setvar
10640
10641         $rm -f $$.h
10642         ;;
10643 *)
10644         val="$undef"; 
10645         set d_pwquota; eval $setvar
10646         set d_pwage; eval $setvar
10647         set d_pwchange; eval $setvar
10648         set d_pwclass; eval $setvar
10649         set d_pwexpire; eval $setvar
10650         set d_pwcomment; eval $setvar
10651         set d_pwgecos; eval $setvar
10652         set d_pwpasswd; eval $setvar
10653         ;;
10654 esac
10655
10656 : see if readdir and friends exist
10657 set readdir d_readdir
10658 eval $inlibc
10659 set seekdir d_seekdir
10660 eval $inlibc
10661 set telldir d_telldir
10662 eval $inlibc
10663 set rewinddir d_rewinddir
10664 eval $inlibc
10665
10666 : see if readlink exists
10667 set readlink d_readlink
10668 eval $inlibc
10669
10670 : see if rename exists
10671 set rename d_rename
10672 eval $inlibc
10673
10674 : see if rmdir exists
10675 set rmdir d_rmdir
10676 eval $inlibc
10677
10678 : see if memory.h is available.
10679 val=''
10680 set memory.h val
10681 eval $inhdr
10682
10683 : See if it conflicts with string.h
10684 case "$val" in
10685 $define)
10686         case "$strings" in
10687         '') ;;
10688         *)
10689                 $cppstdin $cppflags $cppminus < $strings > mem.h
10690                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10691                         echo " "
10692                         echo "We won't be including <memory.h>."
10693                         val="$undef"
10694                 fi
10695                 $rm -f mem.h
10696                 ;;
10697         esac
10698 esac
10699 set i_memory
10700 eval $setvar
10701
10702 : can bcopy handle overlapping blocks?
10703 val="$undef"
10704 case "$d_bcopy" in
10705 "$define")
10706         echo " "
10707         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10708         $cat >try.c <<EOCP
10709 #$i_memory I_MEMORY
10710 #$i_stdlib I_STDLIB
10711 #$i_string I_STRING
10712 #$i_unistd I_UNISTD
10713 EOCP
10714         $cat >>try.c <<'EOCP'
10715 #include <stdio.h>
10716 #ifdef I_MEMORY
10717 #  include <memory.h>
10718 #endif
10719 #ifdef I_STDLIB
10720 #  include <stdlib.h>
10721 #endif
10722 #ifdef I_STRING
10723 #  include <string.h>
10724 #else
10725 #  include <strings.h>
10726 #endif
10727 #ifdef I_UNISTD
10728 #  include <unistd.h>  /* Needed for NetBSD */
10729 #endif
10730 int main()
10731 {
10732 char buf[128], abc[128];
10733 char *b;
10734 int len;
10735 int off;
10736 int align;
10737
10738 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10739
10740 for (align = 7; align >= 0; align--) {
10741         for (len = 36; len; len--) {
10742                 b = buf+align;
10743                 bcopy(abc, b, len);
10744                 for (off = 1; off <= len; off++) {
10745                         bcopy(b, b+off, len);
10746                         bcopy(b+off, b, len);
10747                         if (bcmp(b, abc, len))
10748                                 exit(1);
10749                 }
10750         }
10751 }
10752 exit(0);
10753 }
10754 EOCP
10755         set try
10756         if eval $compile_ok; then
10757                 if ./try 2>/dev/null; then
10758                         echo "Yes, it can."
10759                         val="$define"
10760                 else
10761                         echo "It can't, sorry."
10762                         case "$d_memmove" in
10763                         "$define") echo "But that's Ok since you have memmove()." ;;
10764                         esac
10765                 fi
10766         else
10767                 echo "(I can't compile the test program, so we'll assume not...)"
10768                 case "$d_memmove" in
10769                 "$define") echo "But that's Ok since you have memmove()." ;;
10770                 esac
10771         fi
10772         ;;
10773 esac
10774 $rm -f try.* try core
10775 set d_safebcpy
10776 eval $setvar
10777
10778 : can memcpy handle overlapping blocks?
10779 val="$undef"
10780 case "$d_memcpy" in
10781 "$define")
10782         echo " "
10783         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10784         $cat >try.c <<EOCP
10785 #$i_memory I_MEMORY
10786 #$i_stdlib I_STDLIB
10787 #$i_string I_STRING
10788 #$i_unistd I_UNISTD
10789 EOCP
10790         $cat >>try.c <<'EOCP'
10791 #include <stdio.h>
10792 #ifdef I_MEMORY
10793 #  include <memory.h>
10794 #endif
10795 #ifdef I_STDLIB
10796 #  include <stdlib.h>
10797 #endif
10798 #ifdef I_STRING
10799 #  include <string.h>
10800 #else
10801 #  include <strings.h>
10802 #endif
10803 #ifdef I_UNISTD
10804 #  include <unistd.h>  /* Needed for NetBSD */
10805 #endif
10806 int main()
10807 {
10808 char buf[128], abc[128];
10809 char *b;
10810 int len;
10811 int off;
10812 int align;
10813
10814 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10815    try to store the string in read-only memory. */
10816 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10817
10818 for (align = 7; align >= 0; align--) {
10819         for (len = 36; len; len--) {
10820                 b = buf+align;
10821                 memcpy(b, abc, len);
10822                 for (off = 1; off <= len; off++) {
10823                         memcpy(b+off, b, len);
10824                         memcpy(b, b+off, len);
10825                         if (memcmp(b, abc, len))
10826                                 exit(1);
10827                 }
10828         }
10829 }
10830 exit(0);
10831 }
10832 EOCP
10833         set try
10834         if eval $compile_ok; then
10835                 if ./try 2>/dev/null; then
10836                         echo "Yes, it can."
10837                         val="$define"
10838                 else
10839                         echo "It can't, sorry."
10840                         case "$d_memmove" in
10841                         "$define") echo "But that's Ok since you have memmove()." ;;
10842                         esac
10843                 fi
10844         else
10845                 echo "(I can't compile the test program, so we'll assume not...)"
10846                 case "$d_memmove" in
10847                 "$define") echo "But that's Ok since you have memmove()." ;;
10848                 esac
10849         fi
10850         ;;
10851 esac
10852 $rm -f try.* try core
10853 set d_safemcpy
10854 eval $setvar
10855
10856 : can memcmp be trusted to compare relative magnitude?
10857 val="$undef"
10858 case "$d_memcmp" in
10859 "$define")
10860         echo " "
10861         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10862         $cat >try.c <<EOCP
10863 #$i_memory I_MEMORY
10864 #$i_stdlib I_STDLIB
10865 #$i_string I_STRING
10866 #$i_unistd I_UNISTD
10867 EOCP
10868         $cat >>try.c <<'EOCP'
10869 #include <stdio.h>
10870 #ifdef I_MEMORY
10871 #  include <memory.h>
10872 #endif
10873 #ifdef I_STDLIB
10874 #  include <stdlib.h>
10875 #endif
10876 #ifdef I_STRING
10877 #  include <string.h>
10878 #else
10879 #  include <strings.h>
10880 #endif
10881 #ifdef I_UNISTD
10882 #  include <unistd.h>  /* Needed for NetBSD */
10883 #endif
10884 int main()
10885 {
10886 char a = -1;
10887 char b = 0;
10888 if ((a < b) && memcmp(&a, &b, 1) < 0)
10889         exit(1);
10890 exit(0);
10891 }
10892 EOCP
10893         set try
10894         if eval $compile_ok; then
10895                 if ./try 2>/dev/null; then
10896                         echo "Yes, it can."
10897                         val="$define"
10898                 else
10899                         echo "No, it can't (it uses signed chars)."
10900                 fi
10901         else
10902                 echo "(I can't compile the test program, so we'll assume not...)"
10903         fi
10904         ;;
10905 esac
10906 $rm -f try.* try core
10907 set d_sanemcmp
10908 eval $setvar
10909
10910 : see if select exists
10911 set select d_select
10912 eval $inlibc
10913
10914 : see if semctl exists
10915 set semctl d_semctl
10916 eval $inlibc
10917
10918 : see if semget exists
10919 set semget d_semget
10920 eval $inlibc
10921
10922 : see if semop exists
10923 set semop d_semop
10924 eval $inlibc
10925
10926 : see how much of the 'sem*(2)' library is present.
10927 h_sem=true
10928 echo " "
10929 case "$d_semctl$d_semget$d_semop" in
10930 *"$undef"*) h_sem=false;;
10931 esac
10932 case "$osname" in
10933 freebsd)
10934     case "`ipcs 2>&1`" in
10935     "SVID messages"*"not configured"*)
10936         echo "Your $osname does not have the sem*(2) configured." >&4
10937         h_sem=false
10938         val="$undef"
10939         set semctl d_semctl
10940         eval $setvar
10941         set semget d_semget
10942         eval $setvar
10943         set semop d_semop
10944         eval $setvar
10945         ;;
10946     esac
10947     ;;
10948 esac
10949 : we could also check for sys/ipc.h ...
10950 if $h_sem && $test `./findhdr sys/sem.h`; then
10951         echo "You have the full sem*(2) library." >&4
10952         val="$define"
10953 else
10954         echo "You don't have the full sem*(2) library." >&4
10955         val="$undef"
10956 fi
10957 set d_sem
10958 eval $setvar
10959
10960 : see whether sys/sem.h defines union semun
10961 echo " "
10962 $cat > try.c <<'END'
10963 #include <sys/types.h>
10964 #include <sys/ipc.h>
10965 #include <sys/sem.h>
10966 int main () { union semun semun; semun.buf = 0; }
10967 END
10968 set try
10969 if eval $compile; then
10970     echo "You have union semun in <sys/sem.h>." >&4
10971     val="$define"
10972 else
10973     echo "You do not have union semun in <sys/sem.h>." >&4
10974     val="$undef"
10975 fi
10976 $rm -f try try.c try.h
10977 set d_union_semun
10978 eval $setvar
10979
10980 : see how to do semctl IPC_STAT
10981 case "$d_sem" in
10982 $define)
10983     : see whether semctl IPC_STAT can use union semun
10984     echo " "
10985     $cat > try.h <<END
10986 #ifndef S_IRUSR
10987 #   ifdef S_IREAD
10988 #       define S_IRUSR S_IREAD
10989 #       define S_IWUSR S_IWRITE
10990 #       define S_IXUSR S_IEXEC
10991 #   else
10992 #       define S_IRUSR 0400
10993 #       define S_IWUSR 0200
10994 #       define S_IXUSR 0100
10995 #   endif
10996 #   define S_IRGRP (S_IRUSR>>3)
10997 #   define S_IWGRP (S_IWUSR>>3)
10998 #   define S_IXGRP (S_IXUSR>>3)
10999 #   define S_IROTH (S_IRUSR>>6)
11000 #   define S_IWOTH (S_IWUSR>>6)
11001 #   define S_IXOTH (S_IXUSR>>6)
11002 #endif
11003 #ifndef S_IRWXU
11004 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11005 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11006 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11007 #endif
11008 END
11009
11010     $cat > try.c <<END
11011 #include <sys/types.h>
11012 #include <sys/ipc.h>
11013 #include <sys/sem.h>
11014 #include <sys/stat.h>
11015 #include <stdio.h>
11016 #include <errno.h>
11017 #include "try.h"
11018 #ifndef errno
11019 extern int errno;
11020 #endif
11021 #$d_union_semun HAS_UNION_SEMUN
11022 int main() {
11023     union semun
11024 #ifndef HAS_UNION_SEMUN
11025     {
11026         int val;
11027         struct semid_ds *buf;
11028         unsigned short *array;
11029     }
11030 #endif
11031     arg;
11032     int sem, st;
11033
11034 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11035     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11036     if (sem > -1) {
11037         struct semid_ds argbuf;
11038         arg.buf = &argbuf;
11039 #       ifdef IPC_STAT
11040         st = semctl(sem, 0, IPC_STAT, arg);
11041         if (st == 0)
11042             printf("semun\n");
11043         else
11044 #       endif /* IPC_STAT */
11045             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11046 #       ifdef IPC_RMID
11047         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11048 #       endif /* IPC_RMID */
11049             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11050     } else
11051 #endif /* IPC_PRIVATE && ... */
11052         printf("semget failed: errno = %d\n", errno);
11053   return 0;
11054 }
11055 END
11056     val="$undef"
11057     set try
11058     if eval $compile; then
11059         xxx=`./try`
11060         case "$xxx" in
11061         semun) val="$define" ;;
11062         esac
11063     fi
11064     $rm -f try try.c
11065     set d_semctl_semun
11066     eval $setvar
11067     case "$d_semctl_semun" in
11068     $define)
11069         echo "You can use union semun for semctl IPC_STAT." >&4
11070         also='also'
11071         ;;
11072     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11073         also=''
11074         ;;
11075     esac
11076
11077     : see whether semctl IPC_STAT can use struct semid_ds pointer
11078     $cat > try.c <<'END'
11079 #include <sys/types.h>
11080 #include <sys/ipc.h>
11081 #include <sys/sem.h>
11082 #include <sys/stat.h>
11083 #include "try.h"
11084 #include <stdio.h>
11085 #include <errno.h>
11086 #ifndef errno
11087 extern int errno;
11088 #endif
11089 int main() {
11090     struct semid_ds arg;
11091     int sem, st;
11092
11093 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11094     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11095     if (sem > -1) {
11096 #       ifdef IPC_STAT
11097         st = semctl(sem, 0, IPC_STAT, &arg);
11098         if (st == 0)
11099             printf("semid_ds\n");
11100         else
11101 #       endif /* IPC_STAT */
11102             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11103 #       ifdef IPC_RMID
11104         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11105 #       endif /* IPC_RMID */
11106             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11107     } else
11108 #endif /* IPC_PRIVATE && ... */
11109         printf("semget failed: errno = %d\n", errno);
11110
11111     return 0;
11112 }
11113 END
11114     val="$undef"
11115     set try
11116     if eval $compile; then
11117         xxx=`./try`
11118         case "$xxx" in
11119         semid_ds) val="$define" ;;
11120         esac
11121     fi
11122     $rm -f try try.c
11123     set d_semctl_semid_ds
11124     eval $setvar
11125     case "$d_semctl_semid_ds" in
11126     $define)
11127         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11128         ;;
11129     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11130         ;;
11131     esac
11132     $rm -f try.h
11133     ;;
11134 *)  val="$undef"
11135
11136     # We do not have the full sem*(2) library, so assume we can not
11137     # use either.
11138
11139     set d_semctl_semun
11140     eval $setvar
11141
11142     set d_semctl_semid_ds
11143     eval $setvar
11144     ;;
11145 esac
11146
11147 : see if setegid exists
11148 set setegid d_setegid
11149 eval $inlibc
11150
11151 : see if seteuid exists
11152 set seteuid d_seteuid
11153 eval $inlibc
11154
11155 : see if setgrent exists
11156 set setgrent d_setgrent
11157 eval $inlibc
11158
11159 : see if sethostent exists
11160 set sethostent d_sethent
11161 eval $inlibc
11162
11163 : see if setlinebuf exists
11164 set setlinebuf d_setlinebuf
11165 eval $inlibc
11166
11167 : see if setlocale exists
11168 set setlocale d_setlocale
11169 eval $inlibc
11170
11171 : see if setnetent exists
11172 set setnetent d_setnent
11173 eval $inlibc
11174
11175 : see if setprotoent exists
11176 set setprotoent d_setpent
11177 eval $inlibc
11178
11179 : see if setpgid exists
11180 set setpgid d_setpgid
11181 eval $inlibc
11182
11183 : see if setpgrp2 exists
11184 set setpgrp2 d_setpgrp2
11185 eval $inlibc
11186
11187 : see if setpriority exists
11188 set setpriority d_setprior
11189 eval $inlibc
11190
11191 : see if setproctitle exists
11192 set setproctitle d_setproctitle
11193 eval $inlibc
11194
11195 : see if setpwent exists
11196 set setpwent d_setpwent
11197 eval $inlibc
11198
11199 : see if setregid exists
11200 set setregid d_setregid
11201 eval $inlibc
11202 set setresgid d_setresgid
11203 eval $inlibc
11204
11205 : see if setreuid exists
11206 set setreuid d_setreuid
11207 eval $inlibc
11208 set setresuid d_setresuid
11209 eval $inlibc
11210
11211 : see if setrgid exists
11212 set setrgid d_setrgid
11213 eval $inlibc
11214
11215 : see if setruid exists
11216 set setruid d_setruid
11217 eval $inlibc
11218
11219 : see if setservent exists
11220 set setservent d_setsent
11221 eval $inlibc
11222
11223 : see if setsid exists
11224 set setsid d_setsid
11225 eval $inlibc
11226
11227 : see if setvbuf exists
11228 set setvbuf d_setvbuf
11229 eval $inlibc
11230
11231 : see if sfio.h is available
11232 set sfio.h i_sfio
11233 eval $inhdr
11234
11235
11236 : see if sfio library is available
11237 case "$i_sfio" in
11238 $define)
11239         val=''
11240         set sfreserve val
11241         eval $inlibc
11242         ;;
11243 *)
11244         val="$undef"
11245         ;;
11246 esac
11247 : Ok, but do we want to use it.
11248 case "$val" in
11249 $define)
11250         case "$usesfio" in
11251         true|$define|[yY]*) dflt='y';;
11252         *) dflt='n';;
11253         esac
11254         echo "$package can use the sfio library, but it is experimental."
11255         rp="You seem to have sfio available, do you want to try using it?"
11256         . ./myread
11257         case "$ans" in
11258         y|Y) ;;
11259         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11260                 val="$undef"
11261                 : Remove sfio from list of libraries to use
11262                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11263                 shift
11264                 libs="$*"
11265                 echo "libs = $libs" >&4
11266                 ;;
11267         esac
11268         ;;
11269 *)      case "$usesfio" in
11270         true|$define|[yY]*)
11271                 echo "Sorry, cannot find sfio on this machine" >&4
11272                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11273                 ;;
11274         esac
11275         ;;
11276 esac
11277 set d_sfio
11278 eval $setvar
11279 case "$d_sfio" in
11280 $define) usesfio='true';;
11281 *) usesfio='false';;
11282 esac
11283
11284 : see if shmctl exists
11285 set shmctl d_shmctl
11286 eval $inlibc
11287
11288 : see if shmget exists
11289 set shmget d_shmget
11290 eval $inlibc
11291
11292 : see if shmat exists
11293 set shmat d_shmat
11294 eval $inlibc
11295 : see what shmat returns
11296 case "$d_shmat" in
11297 "$define")
11298         $cat >shmat.c <<'END'
11299 #include <sys/shm.h>
11300 void *shmat();
11301 END
11302         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11303                 shmattype='void *'
11304         else
11305                 shmattype='char *'
11306         fi
11307         echo "and it returns ($shmattype)." >&4
11308         : see if a prototype for shmat is available
11309         xxx=`./findhdr sys/shm.h`
11310         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11311         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11312                 val="$define"
11313         else
11314                 val="$undef"
11315         fi
11316         $rm -f shmat.[co]
11317         ;;
11318 *)
11319         val="$undef"
11320         ;;
11321 esac
11322 set d_shmatprototype
11323 eval $setvar
11324
11325 : see if shmdt exists
11326 set shmdt d_shmdt
11327 eval $inlibc
11328
11329 : see how much of the 'shm*(2)' library is present.
11330 h_shm=true
11331 echo " "
11332 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11333 *"$undef"*) h_shm=false;;
11334 esac
11335 case "$osname" in
11336 freebsd)
11337     case "`ipcs 2>&1`" in
11338     "SVID shared memory"*"not configured"*)
11339         echo "Your $osname does not have the shm*(2) configured." >&4
11340         h_shm=false
11341         val="$undef"
11342         set shmctl d_shmctl
11343         evat $setvar
11344         set shmget d_shmget
11345         evat $setvar
11346         set shmat d_shmat
11347         evat $setvar
11348         set shmdt d_shmdt
11349         evat $setvar
11350         ;;
11351     esac
11352     ;;
11353 esac
11354 : we could also check for sys/ipc.h ...
11355 if $h_shm && $test `./findhdr sys/shm.h`; then
11356         echo "You have the full shm*(2) library." >&4
11357         val="$define"
11358 else
11359         echo "You don't have the full shm*(2) library." >&4
11360         val="$undef"
11361 fi
11362 set d_shm
11363 eval $setvar
11364
11365 echo " "
11366 : see if we have sigaction
11367 if set sigaction val -f d_sigaction; eval $csym; $val; then
11368         echo 'sigaction() found.' >&4
11369         $cat > try.c <<'EOP'
11370 #include <stdio.h>
11371 #include <sys/types.h>
11372 #include <signal.h>
11373 int main()
11374 {
11375     struct sigaction act, oact;
11376     act.sa_flags = 0;
11377     oact.sa_handler = 0;
11378     /* so that act and oact are used */
11379     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11380 }
11381 EOP
11382         set try
11383         if eval $compile_ok; then
11384                 val="$define"
11385         else
11386                 echo "But you don't seem to have a useable struct sigaction." >&4
11387                 val="$undef"
11388         fi
11389 else
11390         echo 'sigaction NOT found.' >&4
11391         val="$undef"
11392 fi
11393 set d_sigaction; eval $setvar
11394 $rm -f try try$_o try.c
11395
11396 : see if sigsetjmp exists
11397 echo " "
11398 case "$d_sigsetjmp" in
11399 '')
11400         $cat >try.c <<'EOP'
11401 #include <setjmp.h>
11402 sigjmp_buf env;
11403 int set = 1;
11404 int main()
11405 {
11406         if (sigsetjmp(env,1))
11407                 exit(set);
11408         set = 0;
11409         siglongjmp(env, 1);
11410         exit(1);
11411 }
11412 EOP
11413         set try
11414         if eval $compile; then
11415                 if ./try >/dev/null 2>&1; then
11416                         echo "POSIX sigsetjmp found." >&4
11417                         val="$define"
11418                 else
11419                         $cat >&4 <<EOM
11420 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11421 I'll ignore them.
11422 EOM
11423                         val="$undef"
11424                 fi
11425         else
11426                 echo "sigsetjmp not found." >&4
11427                 val="$undef"
11428         fi
11429         ;;
11430 *) val="$d_sigsetjmp"
11431         case "$d_sigsetjmp" in
11432         $define) echo "POSIX sigsetjmp found." >&4;;
11433         $undef) echo "sigsetjmp not found." >&4;;
11434         esac
11435         ;;
11436 esac
11437 set d_sigsetjmp
11438 eval $setvar
11439 $rm -f try.c try
11440
11441 : see if sys/stat.h is available
11442 set sys/stat.h i_sysstat
11443 eval $inhdr
11444
11445
11446 : see if stat knows about block sizes
11447 echo " "
11448 echo "Checking to see if your struct stat has st_blocks field..." >&4
11449 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11450 eval $hasfield
11451
11452
11453 : see if this is a sys/vfs.h system
11454 set sys/vfs.h i_sysvfs
11455 eval $inhdr
11456
11457
11458 : see if this is a sys/statfs.h system
11459 set sys/statfs.h i_sysstatfs
11460 eval $inhdr
11461
11462
11463 echo " "
11464 echo "Checking to see if your system supports struct statfs..." >&4
11465 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
11466 eval $hasstruct
11467 case "$d_statfs_s" in
11468 "$define")      echo "Yes, it does."   ;;
11469 *)              echo "No, it doesn't." ;;
11470 esac
11471
11472
11473
11474 : see if struct statfs knows about f_flags
11475 case "$d_statfs_s" in
11476 define) 
11477         echo " "
11478         echo "Checking to see if your struct statfs has f_flags field..." >&4
11479         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
11480         eval $hasfield
11481         ;;
11482 *)      val="$undef"
11483         set d_statfs_f_flags
11484         eval $setvar
11485         ;;
11486 esac
11487 case "$d_statfs_f_flags" in
11488 "$define")      echo "Yes, it does."   ;;
11489 *)              echo "No, it doesn't." ;;
11490 esac
11491
11492 : see if _ptr and _cnt from stdio act std
11493 echo " "
11494 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11495         echo "(Looks like you have stdio.h from Linux.)"
11496         case "$stdio_ptr" in
11497         '') stdio_ptr='((fp)->_IO_read_ptr)'
11498                 ptr_lval=$define
11499                 ;;
11500         *)      ptr_lval=$d_stdio_ptr_lval;;
11501         esac
11502         case "$stdio_cnt" in
11503         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11504                 cnt_lval=$undef
11505                 ;;
11506         *)      cnt_lval=$d_stdio_cnt_lval;;
11507         esac
11508         case "$stdio_base" in
11509         '') stdio_base='((fp)->_IO_read_base)';;
11510         esac
11511         case "$stdio_bufsiz" in
11512         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11513         esac
11514 else
11515         case "$stdio_ptr" in
11516         '') stdio_ptr='((fp)->_ptr)'
11517                 ptr_lval=$define
11518                 ;;
11519         *)      ptr_lval=$d_stdio_ptr_lval;;
11520         esac
11521         case "$stdio_cnt" in
11522         '') stdio_cnt='((fp)->_cnt)'
11523                 cnt_lval=$define
11524                 ;;
11525         *)      cnt_lval=$d_stdio_cnt_lval;;
11526         esac
11527         case "$stdio_base" in
11528         '') stdio_base='((fp)->_base)';;
11529         esac
11530         case "$stdio_bufsiz" in
11531         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11532         esac
11533 fi
11534 : test whether _ptr and _cnt really work
11535 echo "Checking how std your stdio is..." >&4
11536 $cat >try.c <<EOP
11537 #include <stdio.h>
11538 #define FILE_ptr(fp)    $stdio_ptr
11539 #define FILE_cnt(fp)    $stdio_cnt
11540 int main() {
11541         FILE *fp = fopen("try.c", "r");
11542         char c = getc(fp);
11543         if (
11544                 18 <= FILE_cnt(fp) &&
11545                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11546         )
11547                 exit(0);
11548         exit(1);
11549 }
11550 EOP
11551 val="$undef"
11552 set try
11553 if eval $compile; then
11554         if ./try; then
11555                 echo "Your stdio acts pretty std."
11556                 val="$define"
11557         else
11558                 echo "Your stdio isn't very std."
11559         fi
11560 else
11561         echo "Your stdio doesn't appear very std."
11562 fi
11563 $rm -f try.c try
11564 set d_stdstdio
11565 eval $setvar
11566
11567 : Can _ptr be used as an lvalue?
11568 case "$d_stdstdio$ptr_lval" in
11569 $define$define) val=$define ;;
11570 *) val=$undef ;;
11571 esac
11572 set d_stdio_ptr_lval
11573 eval $setvar
11574
11575 : Can _cnt be used as an lvalue?
11576 case "$d_stdstdio$cnt_lval" in
11577 $define$define) val=$define ;;
11578 *) val=$undef ;;
11579 esac
11580 set d_stdio_cnt_lval
11581 eval $setvar
11582
11583 : see if _base is also standard
11584 val="$undef"
11585 case "$d_stdstdio" in
11586 $define)
11587         $cat >try.c <<EOP
11588 #include <stdio.h>
11589 #define FILE_base(fp)   $stdio_base
11590 #define FILE_bufsiz(fp) $stdio_bufsiz
11591 int main() {
11592         FILE *fp = fopen("try.c", "r");
11593         char c = getc(fp);
11594         if (
11595                 19 <= FILE_bufsiz(fp) &&
11596                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11597         )
11598                 exit(0);
11599         exit(1);
11600 }
11601 EOP
11602         set try
11603         if eval $compile; then
11604                 if ./try; then
11605                         echo "And its _base field acts std."
11606                         val="$define"
11607                 else
11608                         echo "But its _base field isn't std."
11609                 fi
11610         else
11611                 echo "However, it seems to be lacking the _base field."
11612         fi
11613         $rm -f try.c try
11614         ;;
11615 esac
11616 set d_stdiobase
11617 eval $setvar
11618
11619 $cat >&4 <<EOM
11620 Checking how to access stdio streams by file descriptor number...
11621 EOM
11622 case "$stdio_stream_array" in
11623 '')     $cat >try.c <<EOCP
11624 #include <stdio.h>
11625 int main() {
11626   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11627     printf("yes\n");
11628 }
11629 EOCP
11630         for s in _iob __iob __sF
11631         do
11632                 set try -DSTDIO_STREAM_ARRAY=$s
11633                 if eval $compile; then
11634                         case "`./try$exe_ext`" in
11635                         yes)    stdio_stream_array=$s; break ;;
11636                         esac
11637                 fi
11638         done
11639         $rm -f try.* try$exe_ext
11640 esac
11641 case "$stdio_stream_array" in
11642 '')     $cat >&4 <<EOM
11643 I can't figure out how to access stdio streams by file descriptor number.
11644 EOM
11645         d_stdio_stream_array="$undef"
11646         ;;
11647 *)      $cat >&4 <<EOM
11648 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11649 EOM
11650         d_stdio_stream_array="$define"
11651         ;;
11652 esac
11653
11654 : see if strcoll exists
11655 set strcoll d_strcoll
11656 eval $inlibc
11657
11658 : check for structure copying
11659 echo " "
11660 echo "Checking to see if your C compiler can copy structs..." >&4
11661 $cat >try.c <<'EOCP'
11662 int main()
11663 {
11664         struct blurfl {
11665                 int dyick;
11666         } foo, bar;
11667
11668         foo = bar;
11669 }
11670 EOCP
11671 if $cc -c try.c >/dev/null 2>&1 ; then
11672         val="$define"
11673         echo "Yup, it can."
11674 else
11675         val="$undef"
11676         echo "Nope, it can't."
11677 fi
11678 set d_strctcpy
11679 eval $setvar
11680 $rm -f try.*
11681
11682 : see if strerror and/or sys_errlist[] exist
11683 echo " "
11684 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11685     if set strerror val -f d_strerror; eval $csym; $val; then
11686                 echo 'strerror() found.' >&4
11687                 d_strerror="$define"
11688                 d_strerrm='strerror(e)'
11689                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11690                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11691                         d_syserrlst="$define"
11692                 else
11693                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11694                         d_syserrlst="$undef"
11695                 fi
11696     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11697                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11698                 echo 'strerror() found in string header.' >&4
11699                 d_strerror="$define"
11700                 d_strerrm='strerror(e)'
11701                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11702                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11703                                 d_syserrlst="$define"
11704                 else
11705                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11706                         d_syserrlst="$undef"
11707                 fi
11708     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11709                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11710                 d_strerror="$undef"
11711                 d_syserrlst="$define"
11712                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11713     else
11714                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11715                 d_strerror="$undef"
11716                 d_syserrlst="$undef"
11717                 d_strerrm='"unknown"'
11718     fi
11719 fi
11720
11721 : see if strtod exists
11722 set strtod d_strtod
11723 eval $inlibc
11724
11725 : see if strtol exists
11726 set strtol d_strtol
11727 eval $inlibc
11728
11729 : see if strtold exists
11730 set strtold d_strtold
11731 eval $inlibc
11732
11733 : see if strtoll exists
11734 set strtoll d_strtoll
11735 eval $inlibc
11736
11737 case "$d_longlong-$d_strtoll" in
11738 "$define-$define")
11739         $cat <<EOM
11740 Checking whether your strtoll() works okay...
11741 EOM
11742         $cat >try.c <<'EOCP'
11743 #include <errno.h>
11744 #ifdef __hpux
11745 #define strtoll __strtoll
11746 #endif
11747 #include <stdio.h>
11748 extern long long int strtoll(char *s, char **, int); 
11749 static int bad = 0;
11750 int check(char *s, long long ell, int een) {
11751         long long gll;
11752         errno = 0;
11753         gll = strtoll(s, 0, 10);
11754         if (!((gll == ell) && (errno == een)))
11755                 bad++;
11756 }
11757 int main() {
11758         check(" 1",                                      1LL, 0);
11759         check(" 0",                                      0LL, 0);
11760         check("-1",                                     -1LL, 0);
11761         check("-9223372036854775808", -9223372036854775808LL, 0);
11762         check("-9223372036854775808", -9223372036854775808LL, 0);
11763         check(" 9223372036854775807",  9223372036854775807LL, 0);
11764         check("-9223372036854775808", -9223372036854775808LL, 0);
11765         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11766         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11767         if (!bad)
11768                 printf("ok\n");
11769 }
11770 EOCP
11771         set try
11772         if eval $compile; then
11773                 case "`./try`" in
11774                 ok) echo "Your strtoll() seems to be working okay." ;;
11775                 *) cat <<EOM >&4
11776 Your strtoll() doesn't seem to be working okay.
11777 EOM
11778                    d_strtoll="$undef"
11779                    ;;
11780                 esac
11781         fi
11782         ;;
11783 esac
11784
11785 : see if strtoul exists
11786 set strtoul d_strtoul
11787 eval $inlibc
11788
11789 : see if strtoull exists
11790 set strtoull d_strtoull
11791 eval $inlibc
11792
11793 case "$d_longlong-$d_strtoull" in
11794 "$define-$define")
11795         $cat <<EOM
11796 Checking whether your strtoull() works okay...
11797 EOM
11798         $cat >try.c <<'EOCP'
11799 #include <errno.h>
11800 #ifdef __hpux
11801 #define strtoull __strtoull
11802 #endif
11803 #include <stdio.h>
11804 extern unsigned long long int strtoull(char *s, char **, int); 
11805 static int bad = 0;
11806 int check(char *s, long long eull, int een) {
11807         long long gull;
11808         errno = 0;
11809         gull = strtoull(s, 0, 10);
11810         if (!((gull == eull) && (errno == een)))
11811                 bad++;
11812 }
11813 int main() {
11814         check(" 1",                                       1LL, 0);
11815         check(" 0",                                       0LL, 0);
11816         check("18446744073709551615", 18446744073709551615ULL, 0);
11817         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11818         if (!bad)
11819                 printf("ok\n");
11820 }
11821 EOCP
11822         set try
11823         if eval $compile; then
11824                 case "`./try`" in
11825                 ok) echo "Your strtoull() seems to be working okay." ;;
11826                 *) cat <<EOM >&4
11827 Your strtoull() doesn't seem to be working okay.
11828 EOM
11829                    d_strtoull="$undef"
11830                    ;;
11831                 esac
11832         fi
11833         ;;
11834 esac
11835
11836 : see if strtouq exists
11837 set strtouq d_strtouq
11838 eval $inlibc
11839
11840 : see if strxfrm exists
11841 set strxfrm d_strxfrm
11842 eval $inlibc
11843
11844 : see if symlink exists
11845 set symlink d_symlink
11846 eval $inlibc
11847
11848 : see if syscall exists
11849 set syscall d_syscall
11850 eval $inlibc
11851
11852 : see if sysconf exists
11853 set sysconf d_sysconf
11854 eval $inlibc
11855
11856 : see if system exists
11857 set system d_system
11858 eval $inlibc
11859
11860 : see if tcgetpgrp exists
11861 set tcgetpgrp d_tcgetpgrp
11862 eval $inlibc
11863
11864 : see if tcsetpgrp exists
11865 set tcsetpgrp d_tcsetpgrp
11866 eval $inlibc
11867
11868 : see if prototype for telldir is available
11869 echo " "
11870 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11871 eval $hasproto
11872
11873 : see if this is a sys/times.h system
11874 set sys/times.h i_systimes
11875 eval $inhdr
11876
11877 : see if times exists
11878 echo " "
11879 if set times val -f d_times; eval $csym; $val; then
11880         echo 'times() found.' >&4
11881         d_times="$define"
11882         inc=''
11883         case "$i_systimes" in
11884         "$define") inc='sys/times.h';;
11885         esac
11886         rp="What is the type returned by times() on this system?"
11887         set clock_t clocktype long stdio.h sys/types.h $inc
11888         eval $typedef_ask
11889 else
11890         echo 'times() NOT found, hope that will do.' >&4
11891         d_times="$undef"
11892         clocktype='int'
11893 fi
11894
11895 : see if truncate exists
11896 set truncate d_truncate
11897 eval $inlibc
11898
11899 : see if tzname[] exists
11900 echo " "
11901 if set tzname val -a d_tzname; eval $csym; $val; then
11902         val="$define"
11903         echo 'tzname[] found.' >&4
11904 else
11905         val="$undef"
11906         echo 'tzname[] NOT found.' >&4
11907 fi
11908 set d_tzname
11909 eval $setvar
11910
11911 : see if umask exists
11912 set umask d_umask
11913 eval $inlibc
11914
11915 : see if ustat exists
11916 set ustat d_ustat
11917 eval $inlibc
11918
11919 : backward compatibility for d_hvfork
11920 if test X$d_hvfork != X; then
11921         d_vfork="$d_hvfork"
11922         d_hvfork=''
11923 fi
11924 : see if there is a vfork
11925 val=''
11926 set vfork val
11927 eval $inlibc
11928
11929 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11930 : perl on Solaris 2.x, and probably elsewhere.
11931 case "$val" in
11932 $define)
11933         echo " "
11934         case "$usevfork" in
11935         false) dflt='n';;
11936         *) dflt='y';;
11937         esac
11938         cat <<'EOM'
11939  
11940 Perl can only use a vfork() that doesn't suffer from strict
11941 restrictions on calling functions or modifying global data in
11942 the child.  For example, glibc-2.1 contains such a vfork()
11943 that is unsuitable.  If your system provides a proper fork()
11944 call, chances are that you do NOT want perl to use vfork().
11945
11946 EOM
11947         rp="Do you still want to use vfork()?"
11948         . ./myread
11949         case "$ans" in
11950         y|Y) ;;
11951         *)
11952                 echo "Ok, we won't use vfork()."
11953                 val="$undef"
11954                 ;;
11955         esac
11956         ;;
11957 esac
11958 set d_vfork
11959 eval $setvar
11960 case "$d_vfork" in
11961 $define) usevfork='true';;
11962 *) usevfork='false';;
11963 esac
11964
11965 : see if this is an sysdir system
11966 set sys/dir.h i_sysdir
11967 eval $inhdr
11968
11969 : see if this is an sysndir system
11970 set sys/ndir.h i_sysndir
11971 eval $inhdr
11972
11973 : see if closedir exists
11974 set closedir d_closedir
11975 eval $inlibc
11976
11977 case "$d_closedir" in
11978 "$define")
11979         echo " "
11980         echo "Checking whether closedir() returns a status..." >&4
11981         cat > closedir.c <<EOM
11982 #$i_dirent I_DIRENT             /**/
11983 #$i_sysdir I_SYS_DIR            /**/
11984 #$i_sysndir I_SYS_NDIR          /**/
11985 #$i_systypes I_SYS_TYPES        /**/
11986
11987 #if defined(I_SYS_TYPES)
11988 #include <sys/types.h>
11989 #endif
11990 #if defined(I_DIRENT)
11991 #include <dirent.h>
11992 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11993 #include <sys/dir.h>
11994 #endif
11995 #else
11996 #ifdef I_SYS_NDIR
11997 #include <sys/ndir.h>
11998 #else
11999 #ifdef I_SYS_DIR
12000 #ifdef hp9000s500
12001 #include <ndir.h>       /* may be wrong in the future */
12002 #else
12003 #include <sys/dir.h>
12004 #endif
12005 #endif
12006 #endif
12007 #endif 
12008 int main() { return closedir(opendir(".")); }
12009 EOM
12010         set closedir
12011         if eval $compile_ok; then
12012                 if ./closedir > /dev/null 2>&1 ; then
12013                         echo "Yes, it does."
12014                         val="$undef"
12015                 else
12016                         echo "No, it doesn't."
12017                         val="$define"
12018                 fi
12019         else
12020                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12021                 val="$define"
12022         fi
12023         ;;
12024 *)
12025         val="$undef";
12026         ;;
12027 esac
12028 set d_void_closedir
12029 eval $setvar
12030 $rm -f closedir*
12031 : check for volatile keyword
12032 echo " "
12033 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12034 $cat >try.c <<'EOCP'
12035 int main()
12036 {
12037         typedef struct _goo_struct goo_struct;
12038         goo_struct * volatile goo = ((goo_struct *)0);
12039         struct _goo_struct {
12040                 long long_int;
12041                 int reg_int;
12042                 char char_var;
12043         };
12044         typedef unsigned short foo_t;
12045         char *volatile foo;
12046         volatile int bar;
12047         volatile foo_t blech;
12048         foo = foo;
12049 }
12050 EOCP
12051 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12052         val="$define"
12053         echo "Yup, it does."
12054 else
12055         val="$undef"
12056         echo "Nope, it doesn't."
12057 fi
12058 set d_volatile
12059 eval $setvar
12060 $rm -f try.*
12061
12062 : see if there is a wait4
12063 set wait4 d_wait4
12064 eval $inlibc
12065
12066 : see if waitpid exists
12067 set waitpid d_waitpid
12068 eval $inlibc
12069
12070 : see if wcstombs exists
12071 set wcstombs d_wcstombs
12072 eval $inlibc
12073
12074 : see if wctomb exists
12075 set wctomb d_wctomb
12076 eval $inlibc
12077
12078 : preserve RCS keywords in files with variable substitution, grrr
12079 Date='$Date'
12080 Id='$Id'
12081 Log='$Log'
12082 RCSfile='$RCSfile'
12083 Revision='$Revision'
12084
12085 case "$crosscompile" in
12086 ''|[nN]*) crosscompile="$undef" ;;
12087 esac
12088
12089 case "$osname" in
12090 next|rhapsody|darwin) multiarch="$define" ;;
12091 esac
12092 case "$multiarch" in
12093 ''|[nN]*) multiarch="$undef" ;;
12094 esac
12095
12096 : check for alignment requirements
12097 echo " "
12098 case "$crosscompile$multiarch" in
12099 *$define*)
12100         $cat <<EOM
12101 You seem to be either cross-compiling or doing a multiarchitecture build,
12102 skipping the memory alignment check.
12103
12104 EOM
12105         case "$alignbytes" in
12106         '') alignbytes=8 ;;
12107         esac
12108         ;;
12109 *)
12110         case "$alignbytes" in
12111         '') echo "Checking alignment constraints..." >&4
12112                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12113                         $cat >try.c <<'EOCP'
12114 typedef long double NV;
12115 EOCP
12116                 else
12117                         $cat >try.c <<'EOCP'
12118 typedef double NV;
12119 EOCP
12120                 fi
12121                 $cat >>try.c <<'EOCP'
12122 #include <stdio.h>
12123 struct foobar {
12124         char foo;
12125         NV bar;
12126 } try_algn;
12127 int main()
12128 {
12129     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12130     return(0);
12131 }
12132 EOCP
12133                 set try
12134                 if eval $compile_ok; then
12135                         dflt=`./try`
12136                 else
12137                         dflt='8'
12138                         echo "(I can't seem to compile the test program...)"
12139                 fi
12140                 ;;
12141         *) dflt="$alignbytes"
12142                 ;;
12143         esac
12144         rp="Doubles must be aligned on a how-many-byte boundary?"
12145         . ./myread
12146         alignbytes="$ans"
12147         $rm -f try.c try
12148         ;;
12149 esac
12150
12151
12152 : set the base revision
12153 baserev=5.0
12154
12155 : check for ordering of bytes in a long
12156 echo " "
12157 case "$crosscompile$multiarch" in
12158 *$define*)
12159         $cat <<EOM
12160 You seem to be either cross-compiling or doing a multiarchitecture build,
12161 skipping the byteorder check.
12162
12163 EOM
12164         byteorder='0xffff'
12165         ;;
12166 *)
12167         case "$byteorder" in
12168         '')
12169                 $cat <<'EOM'
12170 In the following, larger digits indicate more significance.  A big-endian
12171 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12172 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12173 machines may have weird orders like 3412.  A Cray will report 87654321,
12174 an Alpha will report 12345678. If the test program works the default is
12175 probably right.
12176 I'm now running the test program...
12177 EOM
12178                 $cat >try.c <<'EOCP'
12179 #include <stdio.h>
12180 int main()
12181 {
12182         int i;
12183         union {
12184                 unsigned long l;
12185                 char c[sizeof(long)];
12186         } u;
12187
12188         if (sizeof(long) > 4)
12189                 u.l = (0x08070605L << 32) | 0x04030201L;
12190         else
12191                 u.l = 0x04030201L;
12192         for (i = 0; i < sizeof(long); i++)
12193                 printf("%c", u.c[i]+'0');
12194         printf("\n");
12195         exit(0);
12196 }
12197 EOCP
12198                 xxx_prompt=y
12199                 set try
12200                 if eval $compile && ./try > /dev/null; then
12201                         dflt=`./try`
12202                         case "$dflt" in
12203                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12204                                 echo "(The test program ran ok.)"
12205                                 echo "byteorder=$dflt"
12206                                 xxx_prompt=n
12207                         ;;
12208                         ????|????????) echo "(The test program ran ok.)" ;;
12209                         *) echo "(The test program didn't run right for some reason.)" ;;
12210                         esac
12211                 else
12212                         dflt='4321'
12213                         cat <<'EOM'
12214 (I can't seem to compile the test program.  Guessing big-endian...)
12215 EOM
12216                 fi
12217                 case "$xxx_prompt" in
12218                 y)
12219                         rp="What is the order of bytes in a long?"
12220                         . ./myread
12221                         byteorder="$ans"
12222                         ;;
12223                 *)      byteorder=$dflt
12224                         ;;
12225                 esac
12226                 ;;
12227         esac
12228         $rm -f try.c try
12229         ;;
12230 esac
12231
12232
12233 : how do we catenate cpp tokens here?
12234 echo " "
12235 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12236 $cat >cpp_stuff.c <<'EOCP'
12237 #define RCAT(a,b)a/**/b
12238 #define ACAT(a,b)a ## b
12239 RCAT(Rei,ser)
12240 ACAT(Cir,cus)
12241 EOCP
12242 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12243 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12244         echo "Oh!  Smells like ANSI's been here." >&4
12245         echo "We can catify or stringify, separately or together!"
12246         cpp_stuff=42
12247 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12248         echo "Ah, yes!  The good old days!" >&4
12249         echo "However, in the good old days we don't know how to stringify and"
12250         echo "catify at the same time."
12251         cpp_stuff=1
12252 else
12253         $cat >&4 <<EOM
12254 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12255 to have to edit the values of CAT[2-5] in config.h...
12256 EOM
12257         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12258 fi
12259 $rm -f cpp_stuff.*
12260
12261 : see if this is a db.h system
12262 set db.h i_db
12263 eval $inhdr
12264
12265 case "$i_db" in
12266 $define)
12267         : Check db version.
12268         echo " "
12269         echo "Checking Berkeley DB version ..." >&4
12270         $cat >try.c <<EOCP
12271 #$d_const HASCONST
12272 #ifndef HASCONST
12273 #define const
12274 #endif
12275 #include <sys/types.h>
12276 #include <stdio.h>
12277 #include <db.h>
12278 int main()
12279 {
12280 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12281     int Major, Minor, Patch ;
12282     unsigned long Version ;
12283     (void)db_version(&Major, &Minor, &Patch) ;
12284     printf("You have Berkeley DB Version 2 or greater\n");
12285
12286     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12287                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12288     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12289                 Major, Minor, Patch) ;
12290
12291     /* check that db.h & libdb are compatible */
12292     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12293         printf("db.h and libdb are incompatible\n") ;
12294         exit(3);        
12295     }
12296
12297     printf("db.h and libdb are compatible\n") ;
12298
12299     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12300                 + DB_VERSION_PATCH ;
12301
12302     /* needs to be >= 2.3.4 */
12303     if (Version < 2003004) {
12304     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12305         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12306         exit(2);        
12307     }
12308
12309     exit(0);
12310 #else
12311 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12312     printf("You have Berkeley DB Version 1\n");
12313     exit(0);    /* DB version < 2: the coast is clear. */
12314 #else
12315     exit(1);    /* <db.h> not Berkeley DB? */
12316 #endif
12317 #endif
12318 }
12319 EOCP
12320         set try
12321         if eval $compile_ok && ./try; then
12322                 echo 'Looks OK.' >&4
12323         else
12324                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12325                 i_db=$undef
12326                 case " $libs " in
12327                 *"-ldb "*)
12328                         : Remove db from list of libraries to use
12329                         echo "Removing unusable -ldb from library list" >&4
12330                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12331                         shift
12332                         libs="$*"
12333                         echo "libs = $libs" >&4
12334                         ;;
12335                 esac
12336         fi
12337         $rm -f try.*
12338         ;;
12339 esac
12340
12341 case "$i_db" in
12342 define)
12343         : Check the return type needed for hash 
12344         echo " "
12345         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12346         $cat >try.c <<EOCP
12347 #$d_const HASCONST
12348 #ifndef HASCONST
12349 #define const
12350 #endif
12351 #include <sys/types.h>
12352 #include <db.h>
12353
12354 #ifndef DB_VERSION_MAJOR
12355 u_int32_t hash_cb (ptr, size)
12356 const void *ptr;
12357 size_t size;
12358 {
12359 }
12360 HASHINFO info;
12361 int main()
12362 {
12363         info.hash = hash_cb;
12364 }
12365 #endif
12366 EOCP
12367         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12368                 if $contains warning try.out >>/dev/null 2>&1 ; then
12369                         db_hashtype='int'
12370                 else
12371                         db_hashtype='u_int32_t'
12372                 fi
12373         else
12374                 : XXX Maybe we should just give up here.
12375                 db_hashtype=u_int32_t
12376                 $cat try.out >&4
12377                 echo "Help:  I can't seem to compile the db test program." >&4
12378                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12379         fi
12380         $rm -f try.*
12381         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12382         ;;
12383 *)      db_hashtype=u_int32_t
12384         ;;
12385 esac
12386 case "$i_db" in
12387 define)
12388         : Check the return type needed for prefix 
12389         echo " "
12390         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12391         cat >try.c <<EOCP
12392 #$d_const HASCONST
12393 #ifndef HASCONST
12394 #define const
12395 #endif
12396 #include <sys/types.h>
12397 #include <db.h>
12398
12399 #ifndef DB_VERSION_MAJOR
12400 size_t prefix_cb (key1, key2)
12401 const DBT *key1;
12402 const DBT *key2;
12403 {
12404 }
12405 BTREEINFO info;
12406 int main()
12407 {
12408         info.prefix = prefix_cb;
12409 }
12410 #endif
12411 EOCP
12412         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12413                 if $contains warning try.out >>/dev/null 2>&1 ; then
12414                         db_prefixtype='int'
12415                 else
12416                         db_prefixtype='size_t'
12417                 fi
12418         else
12419                 db_prefixtype='size_t'
12420                 : XXX Maybe we should just give up here.
12421                 $cat try.out >&4
12422                 echo "Help:  I can't seem to compile the db test program." >&4
12423                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12424         fi
12425         $rm -f try.*
12426         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12427         ;;
12428 *)      db_prefixtype='size_t'
12429         ;;
12430 esac
12431
12432 : check for void type
12433 echo " "
12434 echo "Checking to see how well your C compiler groks the void type..." >&4
12435 case "$voidflags" in
12436 '')
12437         $cat >try.c <<'EOCP'
12438 #if TRY & 1
12439 void sub() {
12440 #else
12441 sub() {
12442 #endif
12443         extern void moo();      /* function returning void */
12444         void (*goo)();          /* ptr to func returning void */
12445 #if TRY & 8
12446         void *hue;              /* generic ptr */
12447 #endif
12448 #if TRY & 2
12449         void (*foo[10])();
12450 #endif
12451
12452 #if TRY & 4
12453         if(goo == moo) {
12454                 exit(0);
12455         }
12456 #endif
12457         exit(0);
12458 }
12459 int main() { sub(); }
12460 EOCP
12461         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12462                 voidflags=$defvoidused
12463         echo "Good.  It appears to support void to the level $package wants.">&4
12464                 if $contains warning .out >/dev/null 2>&1; then
12465                         echo "However, you might get some warnings that look like this:"
12466                         $cat .out
12467                 fi
12468         else
12469 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12470                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12471                         echo "It supports 1..."
12472                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12473                                 echo "It also supports 2..."
12474                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12475                                         voidflags=7
12476                                         echo "And it supports 4 but not 8 definitely."
12477                                 else
12478                                         echo "It doesn't support 4..."
12479                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12480                                                 voidflags=11
12481                                                 echo "But it supports 8."
12482                                         else
12483                                                 voidflags=3
12484                                                 echo "Neither does it support 8."
12485                                         fi
12486                                 fi
12487                         else
12488                                 echo "It does not support 2..."
12489                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12490                                         voidflags=13
12491                                         echo "But it supports 4 and 8."
12492                                 else
12493                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12494                                                 voidflags=5
12495                                                 echo "And it supports 4 but has not heard about 8."
12496                                         else
12497                                                 echo "However it supports 8 but not 4."
12498                                         fi
12499                                 fi
12500                         fi
12501                 else
12502                         echo "There is no support at all for void."
12503                         voidflags=0
12504                 fi
12505         fi
12506 esac
12507 case "$voidflags" in
12508 "$defvoidused") ;;
12509 *)      $cat >&4 <<'EOM'
12510   Support flag bits are:
12511     1: basic void declarations.
12512     2: arrays of pointers to functions returning void.
12513     4: operations between pointers to and addresses of void functions.
12514     8: generic void pointers.
12515 EOM
12516         dflt="$voidflags";
12517         rp="Your void support flags add up to what?"
12518         . ./myread
12519         voidflags="$ans"
12520         ;;
12521 esac
12522 $rm -f try.* .out
12523
12524
12525 : How can we generate normalized random numbers ?
12526 echo " "
12527 echo "Looking for a random number function..." >&4
12528 case "$randfunc" in
12529 '')
12530         if set drand48 val -f; eval $csym; $val; then
12531                 dflt="drand48"
12532                 echo "Good, found drand48()." >&4
12533         elif set random val -f; eval $csym; $val; then
12534                 dflt="random"
12535                 echo "OK, found random()." >&4
12536         else
12537                 dflt="rand"
12538                 echo "Yick, looks like I have to use rand()." >&4
12539         fi
12540         echo " "
12541         ;;
12542 *)
12543         dflt="$randfunc"
12544         ;;
12545 esac
12546 cont=true
12547
12548 case "$ccflags" in
12549 *-Dmy_rand=*|*-Dmy_srand=*)
12550         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12551         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12552         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12553         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12554         ;;
12555 esac
12556
12557 while $test "$cont"; do
12558         rp="Use which function to generate random numbers?"
12559         . ./myread
12560         if $test "$ans" = "$dflt"; then
12561                 : null
12562         else
12563                 randbits=''
12564         fi
12565         randfunc="$ans"
12566         if set $ans val -f; eval $csym; $val; then
12567                 cont=''
12568         else
12569                 dflt=y
12570                 rp="I cannot find function $ans. Use that name anyway?"
12571                 . ./myread
12572                 dflt=rand
12573                 case "$ans" in
12574                         [yY]*) cont='';;
12575                 esac
12576         fi
12577         case "$cont" in
12578         '')
12579                 case "$randfunc" in
12580                 drand48)
12581                         drand01="drand48()"
12582                         seedfunc="srand48"
12583                         randbits=48
12584                         randseedtype=long
12585                         ;;
12586                 rand|random)
12587                         case "$randbits" in
12588                         '')
12589 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12590                                 $cat >try.c <<EOCP
12591 #$i_unistd I_UNISTD
12592 #$i_stdlib I_STDLIB
12593 #include <stdio.h>
12594 #ifdef I_UNISTD
12595 #  include <unistd.h>
12596 #endif
12597 #ifdef I_STDLIB
12598 #  include <stdlib.h>
12599 #endif
12600 int main()
12601 {
12602         register int i;
12603         register unsigned long tmp;
12604         register unsigned long max = 0L;
12605
12606         for (i = 1000; i; i--) {
12607                 tmp = (unsigned long) $randfunc();
12608                 if (tmp > max) max = tmp;
12609         }
12610         for (i = 0; max; i++)
12611                 max /= 2;
12612         printf("%d\n",i);
12613 }
12614 EOCP
12615                                 set try
12616                                 if eval $compile_ok; then
12617                                         dflt=`try`
12618                                 else
12619                                         dflt='?'
12620                                         echo "(I can't seem to compile the test program...)"
12621                                 fi
12622                                 ;;
12623                         *)
12624                                 dflt="$randbits"
12625                                 ;;
12626                         esac
12627                         rp="How many bits does your $randfunc() function produce?"
12628                         . ./myread
12629                         randbits="$ans"
12630                         $rm -f try.c try
12631                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12632                         seedfunc="s$randfunc"
12633                         randseedtype=unsigned
12634                         ;;
12635                 *)
12636                         dflt="31"
12637                         rp="How many bits does your $randfunc() function produce?"
12638                         . ./myread
12639                         randbits="$ans"
12640                         seedfunc="s$randfunc"
12641                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12642                         if set $seedfunc val -f; eval $csym; $val; then
12643                                 echo "(Using $seedfunc() to seed random generator)"
12644                         else
12645                                 echo "(Warning: no $seedfunc() to seed random generator)"
12646                                 seedfunc=rand
12647                         fi
12648                         randseedtype=unsigned
12649                         ;;
12650                 esac
12651                 ;;
12652         esac
12653 done
12654
12655 echo " "
12656 echo "Determining whether or not we are on an EBCDIC system..." >&4
12657 $cat >tebcdic.c <<'EOM'
12658 int main()
12659 {
12660   if ('M'==0xd4) return 0;
12661   return 1;
12662 }
12663 EOM
12664
12665 val=$undef
12666 set tebcdic
12667 if eval $compile_ok; then
12668         if ./tebcdic; then
12669                 echo "You have EBCDIC." >&4
12670                 val="$define"
12671         else
12672                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12673         fi
12674 else
12675         echo "I'm unable to compile the test program." >&4
12676         echo "I'll assume ASCII or some ISO Latin." >&4
12677 fi
12678 $rm -f tebcdic.c tebcdic
12679 set ebcdic
12680 eval $setvar
12681
12682 echo " "
12683 $cat >&4 <<EOM
12684 Checking how to flush all pending stdio output...
12685 EOM
12686 # I only know how to find the first 32 possibly open files on SunOS.
12687 # See also hints/sunos_4_1.sh and util.c  --AD
12688 case "$osname" in
12689 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12690 esac
12691 $cat >>try.c <<EOCP
12692 #include <stdio.h>
12693 #$i_unistd I_UNISTD
12694 #ifdef I_UNISTD
12695 # include <unistd.h>
12696 #endif
12697 #$d_sysconf HAS_SYSCONF
12698 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12699 #ifdef HAS_STDIO_STREAM_ARRAY
12700 # define STDIO_STREAM_ARRAY $stdio_stream_array
12701 #endif
12702 int main() {
12703   FILE* p = fopen("try.out", "w");
12704 #ifdef TRY_FPUTC
12705   fputc('x', p);
12706 #else
12707 # ifdef TRY_FPRINTF
12708   fprintf(p, "x");
12709 # endif
12710 #endif
12711 #ifdef TRY_FFLUSH_NULL
12712   fflush(NULL);
12713 #endif
12714 #ifdef TRY_FFLUSH_ALL
12715   {
12716     long open_max = -1;
12717 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12718     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12719 # else
12720 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12721     open_max = sysconf(_SC_OPEN_MAX);
12722 #  else
12723 #   ifdef FOPEN_MAX
12724     open_max = FOPEN_MAX;
12725 #   else
12726 #    ifdef OPEN_MAX
12727     open_max = OPEN_MAX;
12728 #    else
12729 #     ifdef _NFILE
12730     open_max = _NFILE;
12731 #     endif
12732 #    endif
12733 #   endif
12734 #  endif
12735 # endif 
12736 # ifdef HAS_STDIO_STREAM_ARRAY
12737     if (open_max > 0) {
12738       long i;
12739       for (i = 0; i < open_max; i++)
12740             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12741                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12742                 STDIO_STREAM_ARRAY[i]._flag)
12743                 fflush(&STDIO_STREAM_ARRAY[i]);
12744     }   
12745   }
12746 # endif
12747 #endif
12748   _exit(42);
12749 }
12750 EOCP
12751 : first we have to find out how _not_ to flush
12752 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12753     output=''
12754     set try -DTRY_FPUTC
12755     if eval $compile; then
12756             $rm -f try.out
12757             ./try$exe_ext 2>/dev/null
12758             if $test ! -s try.out -a "X$?" = X42; then
12759                 output=-DTRY_FPUTC
12760             fi
12761     fi
12762     case "$output" in
12763     '')
12764             set try -DTRY_FPRINTF
12765             $rm -f try.out
12766             if eval $compile; then
12767                     $rm -f try.out
12768                     ./try$exe_ext 2>/dev/null
12769                     if $test ! -s try.out -a "X$?" = X42; then
12770                         output=-DTRY_FPRINTF
12771                     fi
12772             fi
12773         ;;
12774     esac
12775 fi
12776 : check for fflush NULL behaviour
12777 case "$fflushNULL" in
12778 '')     set try -DTRY_FFLUSH_NULL $output
12779         if eval $compile; then
12780                 $rm -f try.out
12781                 ./try$exe_ext 2>/dev/null
12782                 code="$?"
12783                 if $test -s try.out -a "X$code" = X42; then
12784                         fflushNULL="`$cat try.out`"
12785                 else
12786                         if $test "X$code" != X42; then
12787                                 $cat >&4 <<EOM
12788 (If this test failed, don't worry, we'll try another method shortly.)
12789 EOM
12790                         fi
12791                 fi
12792         fi
12793         $rm -f core try.core core.try.*
12794         case "$fflushNULL" in
12795         x)      $cat >&4 <<EOM
12796 Your fflush(NULL) works okay for output streams.
12797 Let's see if it clobbers input pipes...
12798 EOM
12799 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12800 # bug that improperly flushes the input end of pipes.  So we avoid the
12801 # autoflush on fork/system/exec support for now. :-(
12802 $cat >tryp.c <<EOCP
12803 #include <stdio.h>
12804 int
12805 main(int argc, char **argv)
12806 {
12807     char buf[1024];
12808     int i;
12809     char *bp = buf;
12810     while (1) {
12811         while ((i = getc(stdin)) != -1
12812                && (*bp++ = i) != '\n'
12813                && bp < &buf[1024])
12814         /* DO NOTHING */ ;
12815         *bp = '\0';
12816         fprintf(stdout, "%s", buf);
12817         fflush(NULL);
12818         if (i == -1)
12819             return 0;
12820         bp = buf;
12821     }
12822 }
12823 EOCP
12824                 fflushNULL="$define"
12825                 set tryp
12826                 if eval $compile; then
12827                     $rm -f tryp.out
12828                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12829                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12830                        $cat >&4 <<EOM
12831 fflush(NULL) seems to behave okay with input streams.
12832 EOM
12833                         fflushNULL="$define"
12834                     else
12835                         $cat >&4 <<EOM
12836 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12837 EOM
12838                         fflushNULL="$undef"
12839                     fi
12840                 fi
12841                 $rm -f core tryp.c tryp.core core.tryp.*
12842                 ;;
12843         '')     $cat >&4 <<EOM
12844 Your fflush(NULL) isn't working (contrary to ANSI C).
12845 EOM
12846                 fflushNULL="$undef"
12847                 ;;
12848         *)      $cat >&4 <<EOM
12849 Cannot figure out whether your fflush(NULL) works or not.
12850 I'm assuming it doesn't (contrary to ANSI C).
12851 EOM
12852                 fflushNULL="$undef"
12853                 ;;
12854         esac
12855         ;;
12856 $define|true|[yY]*)
12857         fflushNULL="$define"
12858         ;;
12859 *)
12860         fflushNULL="$undef"
12861         ;;
12862 esac
12863 : check explicit looping only if NULL did not work, and if the pipe
12864 : bug does not show up on an explicit flush too
12865 case "$fflushNULL" in
12866 "$undef")
12867         $cat >tryp.c <<EOCP
12868 #include <stdio.h>
12869 int
12870 main(int argc, char **argv)
12871 {
12872     char buf[1024];
12873     int i;
12874     char *bp = buf;
12875     while (1) {
12876         while ((i = getc(stdin)) != -1
12877                && (*bp++ = i) != '\n'
12878                && bp < &buf[1024])
12879         /* DO NOTHING */ ;
12880         *bp = '\0';
12881         fprintf(stdout, "%s", buf);
12882         fflush(stdin);
12883         if (i == -1)
12884             return 0;
12885         bp = buf;
12886     }
12887 }
12888 EOCP
12889         set tryp
12890         if eval $compile; then
12891             $rm -f tryp.out
12892             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12893             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12894                $cat >&4 <<EOM
12895 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12896 EOM
12897                 : now check for fflushall behaviour
12898                 case "$fflushall" in
12899                 '')     set try -DTRY_FFLUSH_ALL $output
12900                         if eval $compile; then
12901                                 $cat >&4 <<EOM
12902 (Now testing the other method--but note that this also may fail.)
12903 EOM
12904                                 $rm -f try.out
12905                                 ./try$exe_ext 2>/dev/null
12906                                 if $test -s try.out -a "X$?" = X42; then
12907                                         fflushall="`$cat try.out`"
12908                                 fi
12909                         fi
12910                         $rm -f core try.core core.try.*
12911                         case "$fflushall" in
12912                         x)      $cat >&4 <<EOM
12913 Whew. Flushing explicitly all the stdio streams works.
12914 EOM
12915                                 fflushall="$define"
12916                                 ;;
12917                         '')     $cat >&4 <<EOM
12918 Sigh. Flushing explicitly all the stdio streams doesn't work.
12919 EOM
12920                                 fflushall="$undef"
12921                                 ;;
12922                         *)      $cat >&4 <<EOM
12923 Cannot figure out whether flushing stdio streams explicitly works or not.
12924 I'm assuming it doesn't.
12925 EOM
12926                                 fflushall="$undef"
12927                                 ;;
12928                         esac
12929                         ;;
12930                 "$define"|true|[yY]*)
12931                         fflushall="$define"
12932                         ;;
12933                 *)
12934                         fflushall="$undef"
12935                         ;;
12936                 esac
12937             else
12938                 $cat >&4 <<EOM
12939 All is futile.  Even fflush(stdin) clobbers input pipes!
12940 EOM
12941                 fflushall="$undef"
12942             fi
12943         else
12944             fflushall="$undef"
12945         fi
12946         $rm -f core tryp.c tryp.core core.tryp.*
12947         ;;
12948 *)      fflushall="$undef"
12949         ;;
12950 esac
12951
12952 case "$fflushNULL$fflushall" in
12953 undefundef)
12954         $cat <<EOM
12955 OK, I give up.  I cannot figure out how to flush pending stdio output.
12956 We won't be flushing handles at all before fork/exec/popen.
12957 EOM
12958         ;;
12959 esac
12960 $rm -f try.* try$exe_ext
12961
12962 : Store the full pathname to the ar program for use in the C program
12963 : Respect a hint or command line value for full_ar.
12964 case "$full_ar" in
12965 '') full_ar=$ar ;;
12966 esac
12967
12968 : Store the full pathname to the sed program for use in the C program
12969 full_sed=$sed
12970
12971 : see what type gids are declared as in the kernel
12972 echo " "
12973 echo "Looking for the type for group ids returned by getgid()."
12974 set gid_t gidtype xxx stdio.h sys/types.h
12975 eval $typedef
12976 case "$gidtype" in
12977 xxx)
12978         xxx=`./findhdr sys/user.h`
12979         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12980         case $1 in
12981         unsigned) dflt="$1 $2" ;;
12982         *) dflt="$1" ;;
12983         esac
12984         ;;
12985 *) dflt="$gidtype";;
12986 esac
12987 case "$gidtype" in
12988 gid_t) echo "gid_t found." ;;
12989 *)      rp="What is the type for group ids returned by getgid()?"
12990         . ./myread
12991         gidtype="$ans"
12992         ;;
12993 esac
12994
12995 echo " "
12996 case "$gidtype" in
12997 *_t) zzz="$gidtype"     ;;
12998 *)   zzz="gid"          ;;
12999 esac
13000 echo "Checking the size of $zzz..." >&4 
13001 cat > try.c <<EOCP
13002 #include <sys/types.h>
13003 #include <stdio.h>
13004 int main() {
13005     printf("%d\n", (int)sizeof($gidtype));
13006     exit(0);
13007 }
13008 EOCP
13009 set try
13010 if eval $compile_ok; then
13011         yyy=`./try`
13012         case "$yyy" in
13013         '')     gidsize=4
13014                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13015                 ;;
13016         *)      gidsize=$yyy
13017                 echo "Your $zzz is $gidsize bytes long."
13018                 ;;
13019         esac
13020 else
13021         gidsize=4
13022         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13023 fi
13024
13025
13026 echo " "
13027 case "$gidtype" in
13028 *_t) zzz="$gidtype"     ;;
13029 *)   zzz="gid"          ;;
13030 esac
13031 echo "Checking the sign of $zzz..." >&4 
13032 cat > try.c <<EOCP
13033 #include <sys/types.h>
13034 #include <stdio.h>
13035 int main() {
13036         $gidtype foo = -1;
13037         if (foo < 0)
13038                 printf("-1\n");
13039         else
13040                 printf("1\n");
13041 }
13042 EOCP
13043 set try
13044 if eval $compile; then
13045         yyy=`./try`
13046         case "$yyy" in
13047         '')     gidsign=1
13048                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13049                 ;;
13050         *)      gidsign=$yyy
13051                 case "$gidsign" in
13052                  1) echo "Your $zzz is unsigned." ;;
13053                 -1) echo "Your $zzz is signed."   ;;
13054                 esac
13055                 ;;
13056         esac
13057 else
13058         gidsign=1
13059         echo "(I can't compile the test program--guessing unsigned.)" >&4
13060 fi
13061
13062
13063 echo " "
13064
13065 if $test X"$quadtype" != X; then
13066
13067 echo "Checking how to print 64-bit integers..." >&4
13068
13069 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13070         $cat >try.c <<'EOCP'
13071 #include <sys/types.h>
13072 #include <stdio.h>
13073 int main() {
13074   int q = 12345678901;
13075   printf("%ld\n", q);
13076 }
13077 EOCP
13078         set try
13079         if eval $compile; then
13080                 yyy=`./try$exe_ext`
13081                 case "$yyy" in
13082                 12345678901)
13083                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13084                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13085                         echo "We will use %d."
13086                         ;;
13087                 esac
13088         fi
13089 fi
13090
13091 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13092         $cat >try.c <<'EOCP'
13093 #include <sys/types.h>
13094 #include <stdio.h>
13095 int main() {
13096   long q = 12345678901;
13097   printf("%ld\n", q);
13098 }
13099 EOCP
13100         set try
13101         if eval $compile; then
13102                 yyy=`./try$exe_ext`
13103                 case "$yyy" in
13104                 12345678901)
13105                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13106                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13107                         echo "We will use %ld."
13108                         ;;
13109                 esac
13110         fi
13111 fi
13112
13113 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13114         $cat >try.c <<'EOCP'
13115 #include <sys/types.h>
13116 #include <inttypes.h>
13117 #include <stdio.h>
13118 int main() {
13119   int64_t q = 12345678901;
13120   printf("%" PRId64 "\n", q);
13121 }
13122 EOCP
13123         set try
13124         if eval $compile; then
13125                 yyy=`./try$exe_ext`
13126                 case "$yyy" in
13127                 12345678901)
13128                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13129                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13130                         echo "We will use the C9X style."
13131                         ;;
13132                 esac
13133         fi
13134 fi
13135
13136 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13137         $cat >try.c <<'EOCP'
13138 #include <sys/types.h>
13139 #include <stdio.h>
13140 int main() {
13141   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13142   printf("%lld\n", q);
13143 }
13144 EOCP
13145         set try
13146         if eval $compile; then
13147                 yyy=`./try$exe_ext`
13148                 case "$yyy" in
13149                 12345678901)
13150                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13151                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13152                         echo "We will use the %lld style."
13153                         ;;
13154                 esac
13155         fi
13156 fi
13157
13158 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13159         $cat >try.c <<EOCP
13160 #include <sys/types.h>
13161 #include <stdio.h>
13162 int main() {
13163   $quadtype q = 12345678901;
13164   printf("%Ld\n", q);
13165 }
13166 EOCP
13167         set try
13168         if eval $compile; then
13169                 yyy=`./try$exe_ext`
13170                 case "$yyy" in
13171                 12345678901)
13172                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13173                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13174                         echo "We will use %Ld."
13175                         ;;
13176                 esac
13177         fi
13178 fi
13179
13180 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13181         $cat >try.c <<EOCP
13182 #include <sys/types.h>
13183 #include <stdio.h>
13184 int main() {
13185   $quadtype q = 12345678901;
13186   printf("%qd\n", q);
13187 }
13188 EOCP
13189         set try
13190         if eval $compile; then
13191                 yyy=`./try$exe_ext`
13192                 case "$yyy" in
13193                 12345678901)
13194                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13195                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13196                         echo "We will use %qd."
13197                         ;;
13198                 esac
13199         fi
13200 fi
13201
13202 if $test X"$sPRId64" = X; then
13203         echo "Cannot figure out how to print 64-bit integers." >&4
13204 fi
13205
13206 $rm -f try try.*
13207
13208 fi
13209
13210 case "$sPRId64" in
13211 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13212         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13213         ;;
13214 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13215         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13216         ;;
13217 esac
13218
13219
13220 echo " "
13221 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13222
13223 if $test X"$ivsize" = X8; then
13224         ivdformat="$sPRId64"
13225         uvuformat="$sPRIu64"
13226         uvoformat="$sPRIo64"
13227         uvxformat="$sPRIx64"
13228         uvXformat="$sPRIX64"
13229 else
13230         if $test X"$ivsize" = X"$longsize"; then
13231                 ivdformat='"ld"'
13232                 uvuformat='"lu"'
13233                 uvoformat='"lo"'
13234                 uvxformat='"lx"'
13235                 uvXformat='"lX"'
13236         else
13237                 if $test X"$ivsize" = X"$intsize"; then
13238                         ivdformat='"d"'
13239                         uvuformat='"u"'
13240                         uvoformat='"o"'
13241                         uvxformat='"x"'
13242                         uvXformat='"X"'
13243                 else
13244                         : far out
13245                         if $test X"$ivsize" = X"$shortsize"; then
13246                                 ivdformat='"hd"'
13247                                 uvuformat='"hu"'
13248                                 uvoformat='"ho"'
13249                                 uvxformat='"hx"'
13250                                 uvXformat='"hX"'
13251                         fi
13252                 fi
13253         fi
13254 fi
13255
13256 if $test X"$nvsize" = X"$longdblsize" -a "$longdblsize" -gt "$doublesize"; then
13257         nveformat="$sPRIeldbl"
13258         nvfformat="$sPRIfldbl"
13259         nvgformat="$sPRIgldbl"
13260         nvEformat="$sPRIEldbl"
13261         nvFformat="$sPRIFldbl"
13262         nvGformat="$sPRIGldbl"
13263 else
13264         nveformat='"e"'
13265         nvfformat='"f"'
13266         nvgformat='"g"'
13267         nvEformat='"E"'
13268         nvFformat='"F"'
13269         nvGformat='"G"'
13270 fi
13271
13272 case "$ivdformat" in
13273 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13274     exit 1
13275     ;;
13276 esac
13277
13278
13279 echo " "
13280 $echo "Checking the format string to be used for gids..." >&4
13281
13282 case "$gidsign" in
13283 -1)     if $test X"$gidsize" = X"$ivsize"; then
13284                 gidformat="$ivdformat"
13285         else
13286                 if $test X"$gidsize" = X"$longsize"; then
13287                         gidformat='"ld"'
13288                 else
13289                         if $test X"$gidsize" = X"$intsize"; then
13290                                 gidformat='"d"'
13291                         else
13292                                 if $test X"$gidsize" = X"$shortsize"; then
13293                                         gidformat='"hd"'
13294                                 fi
13295                         fi
13296                 fi
13297         fi
13298         ;;
13299 *)      if $test X"$gidsize" = X"$uvsize"; then
13300                 gidformat="$uvuformat"
13301         else
13302                 if $test X"$gidsize" = X"$longsize"; then
13303                         gidformat='"lu"'
13304                 else
13305                         if $test X"$gidsize" = X"$intsize"; then
13306                                 gidformat='"u"'
13307                         else
13308                                 if $test X"$gidsize" = X"$shortsize"; then
13309                                         gidformat='"hu"'
13310                                 fi
13311                         fi
13312                 fi
13313         fi
13314         ;;
13315 esac
13316
13317 : see if getgroups exists
13318 set getgroups d_getgrps
13319 eval $inlibc
13320
13321 : see if setgroups exists
13322 set setgroups d_setgrps
13323 eval $inlibc
13324
13325
13326 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13327 echo " "
13328 case "$d_getgrps$d_setgrps" in
13329 *define*)
13330         case "$groupstype" in
13331         '') dflt="$gidtype" ;;
13332         *)  dflt="$groupstype" ;;
13333         esac
13334         $cat <<EOM
13335 What type of pointer is the second argument to getgroups() and setgroups()?
13336 Usually this is the same as group ids, $gidtype, but not always.
13337
13338 EOM
13339         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13340         . ./myread
13341         groupstype="$ans"
13342         ;;
13343 *)  groupstype="$gidtype";;
13344 esac
13345
13346 echo " "
13347 echo "Checking if your $make program sets \$(MAKE)..." >&4
13348 case "$make_set_make" in
13349 '')
13350         $sed 's/^X //' > testmake.mak << 'EOF'
13351 Xall:
13352 X       @echo 'maketemp="$(MAKE)"'
13353 EOF
13354         case "`$make -f testmake.mak 2>/dev/null`" in
13355         *maketemp=*) make_set_make='#' ;;
13356         *)      make_set_make="MAKE=$make" ;;
13357         esac
13358         $rm -f testmake.mak
13359         ;;
13360 esac
13361 case "$make_set_make" in
13362 '#') echo "Yup, it does.";;
13363 *) echo "Nope, it doesn't.";;
13364 esac
13365
13366 : see what type is used for mode_t
13367 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13368 set mode_t modetype int stdio.h sys/types.h
13369 eval $typedef_ask
13370
13371 : define a fucntion to check prototypes
13372 $cat > protochk <<EOSH
13373 $startsh
13374 cc="$cc"
13375 optimize="$optimize"
13376 ccflags="$ccflags"
13377 prototype="$prototype"
13378 define="$define"
13379 rm=$rm
13380 EOSH
13381
13382 $cat >> protochk <<'EOSH'
13383
13384 $rm -f try.c
13385 foo="$1"
13386 shift
13387 while test $# -ge 2; do
13388         case "$1" in
13389                 $define) echo "#include <$2>" >> try.c ;;
13390                 literal) echo "$2" >> try.c ;;
13391         esac
13392     shift 2
13393 done
13394 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13395 cat >> try.c <<'EOCP'
13396 #ifdef CAN_PROTOTYPE
13397 #define _(args) args
13398 #else
13399 #define _(args) ()
13400 #endif
13401 EOCP
13402 echo "$foo" >> try.c
13403 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13404 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13405 status=$?
13406 $rm -f try.[co]
13407 exit $status
13408 EOSH
13409 chmod +x protochk
13410 $eunicefix protochk
13411
13412 : see what type is used for size_t
13413 rp="What is the type used for the length parameter for string functions?"
13414 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13415 eval $typedef_ask
13416
13417 : check for type of arguments to gethostbyaddr. 
13418 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13419         case "$d_gethbyaddr" in
13420         $define)
13421                 $cat <<EOM
13422
13423 Checking to see what type of arguments are accepted by gethostbyaddr().
13424 EOM
13425                 hdrs="$define sys/types.h
13426                         $d_socket sys/socket.h 
13427                         $i_niin netinet/in.h 
13428                         $i_netdb netdb.h
13429                         $i_unistd unistd.h"
13430                 : The first arg can 'char *' or 'void *'
13431                 : The second arg is some of integral type
13432                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13433                         for yyy in size_t long int; do
13434                                 case "$netdb_host_type" in
13435                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13436                                         if ./protochk "$try" $hdrs; then
13437                                                 echo "Your system accepts $xxx for the first arg."
13438                                                 echo "...and $yyy for the second arg."
13439                                                 netdb_host_type="$xxx"
13440                                                 netdb_hlen_type="$yyy"
13441                                         fi
13442                                         ;;
13443                                 esac
13444                         done
13445                 done
13446                 : In case none of those worked, prompt the user.
13447                 case "$netdb_host_type" in
13448                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13449                         dflt='char *'
13450                         . ./myread
13451                         netdb_host_type=$ans
13452                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13453                         dflt="$sizetype"
13454                         . ./myread
13455                         netdb_hlen_type=$ans
13456                         ;;
13457                 esac
13458                 ;;
13459         *)      : no gethostbyaddr, so pick harmless defaults
13460                 netdb_host_type='char *'
13461                 netdb_hlen_type="$sizetype"
13462                 ;;
13463         esac
13464         # Remove the "const" if needed. -- but then we'll have a 
13465         # prototype clash!
13466         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13467 fi
13468
13469 : check for type of argument to gethostbyname. 
13470 if test "X$netdb_name_type" = X ; then
13471         case "$d_gethbyname" in
13472         $define)
13473                 $cat <<EOM
13474
13475 Checking to see what type of argument is accepted by gethostbyname().
13476 EOM
13477                 hdrs="$define sys/types.h
13478                         $d_socket sys/socket.h 
13479                         $i_niin netinet/in.h 
13480                         $i_netdb netdb.h
13481                         $i_unistd unistd.h"
13482                 for xxx in "const char *" "char *"; do
13483                         case "$netdb_name_type" in
13484                         '')     try="extern struct hostent *gethostbyname($xxx);"
13485                                 if ./protochk "$try" $hdrs; then
13486                                         echo "Your system accepts $xxx."
13487                                         netdb_name_type="$xxx"
13488                                 fi
13489                                 ;;
13490                         esac
13491                 done
13492                 : In case none of those worked, prompt the user.
13493                 case "$netdb_name_type" in
13494                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13495                         dflt='char *'
13496                         . ./myread
13497                         netdb_name_type=$ans
13498                         ;;
13499                 esac
13500                 ;;
13501         *)      : no gethostbyname, so pick harmless default
13502                 netdb_name_type='char *'
13503                 ;;
13504         esac
13505 fi
13506
13507 : check for type of 1st argument to getnetbyaddr. 
13508 if test "X$netdb_net_type" = X ; then
13509         case "$d_getnbyaddr" in
13510         $define)
13511                 $cat <<EOM
13512
13513 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13514 EOM
13515                 hdrs="$define sys/types.h
13516                         $d_socket sys/socket.h 
13517                         $i_niin netinet/in.h 
13518                         $i_netdb netdb.h
13519                         $i_unistd unistd.h"
13520                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13521                         case "$netdb_net_type" in
13522                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13523                                 if ./protochk "$try" $hdrs; then
13524                                         echo "Your system accepts $xxx."
13525                                         netdb_net_type="$xxx"
13526                                 fi
13527                                 ;;
13528                         esac
13529                 done
13530                 : In case none of those worked, prompt the user.
13531                 case "$netdb_net_type" in
13532                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13533                         dflt='long'
13534                         . ./myread
13535                         netdb_net_type=$ans
13536                         ;;
13537                 esac
13538                 ;;
13539         *)      : no getnetbyaddr, so pick harmless default
13540                 netdb_net_type='long'
13541                 ;;
13542         esac
13543 fi
13544 : locate the preferred pager for this system
13545 case "$pager" in
13546 '')
13547         dflt=''
13548         case "$pg" in
13549         /*) dflt=$pg;;
13550         esac
13551         case "$more" in
13552         /*) dflt=$more;;
13553         esac
13554         case "$less" in
13555         /*) dflt=$less;;
13556         esac
13557         case "$dflt" in
13558         '') dflt=/usr/ucb/more;;
13559         esac
13560         ;;
13561 *) dflt="$pager";;
13562 esac
13563 echo " "
13564 fn=f/
13565 rp='What pager is used on your system?'
13566 . ./getfile
13567 pager="$ans"
13568
13569 : see what type pids are declared as in the kernel
13570 rp="What is the type of process ids on this system?"
13571 set pid_t pidtype int stdio.h sys/types.h
13572 eval $typedef_ask
13573
13574 : Find earliest binary compatible site_perl subdirectory perl can use.
13575 case "$bincompat5005" in
13576 "$define") xs_apiversion='5.005' ;;
13577 *) xs_apiversion=$version ;;   # The current site_perl version.
13578 esac
13579 : Find earliest pure perl site_perl subdirectory perl can use.
13580 : The versioned directories started at 5.005.
13581 pm_apiversion='5.005'
13582
13583 : check for length of pointer
13584 echo " "
13585 case "$ptrsize" in
13586 '')
13587         echo "Checking to see how big your pointers are..." >&4
13588         if test "$voidflags" -gt 7; then
13589                 echo '#define VOID_PTR char *' > try.c
13590         else
13591                 echo '#define VOID_PTR void *' > try.c
13592         fi
13593         $cat >>try.c <<'EOCP'
13594 #include <stdio.h>
13595 int main()
13596 {
13597     printf("%d\n", (int)sizeof(VOID_PTR));
13598     exit(0);
13599 }
13600 EOCP
13601         set try
13602         if eval $compile_ok; then
13603                 ptrsize=`./try`
13604                 echo "Your pointers are $ptrsize bytes long."
13605         else
13606                 dflt='4'
13607                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13608                 rp="What is the size of a pointer (in bytes)?"
13609                 . ./myread
13610                 ptrsize="$ans"
13611         fi
13612         ;;
13613 esac
13614 $rm -f try.c try
13615
13616 : see if ar generates random libraries by itself
13617 echo " "
13618 echo "Checking how to generate random libraries on your machine..." >&4
13619 echo 'int bar1() { return bar2(); }' > bar1.c
13620 echo 'int bar2() { return 2; }' > bar2.c
13621 $cat > foo.c <<'EOP'
13622 int main() { printf("%d\n", bar1()); exit(0); }
13623 EOP
13624 $cc $ccflags -c bar1.c >/dev/null 2>&1
13625 $cc $ccflags -c bar2.c >/dev/null 2>&1
13626 $cc $ccflags -c foo.c >/dev/null 2>&1
13627 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13628 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13629         ./foobar >/dev/null 2>&1; then
13630         echo "$ar appears to generate random libraries itself."
13631         orderlib=false
13632         ranlib=":"
13633 elif $ar ts bar$_a >/dev/null 2>&1 &&
13634         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13635         ./foobar >/dev/null 2>&1; then
13636                 echo "a table of contents needs to be added with '$ar ts'."
13637                 orderlib=false
13638                 ranlib="$ar ts"
13639 else
13640         case "$ranlib" in
13641         :) ranlib='';;
13642         '')
13643                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13644                 $test -f $ranlib || ranlib=''
13645                 ;;
13646         esac
13647         if $test -n "$ranlib"; then
13648                 echo "your system has '$ranlib'; we'll use that."
13649                 orderlib=false
13650         else
13651                 echo "your system doesn't seem to support random libraries"
13652                 echo "so we'll use lorder and tsort to order the libraries."
13653                 orderlib=true
13654                 ranlib=":"
13655         fi
13656 fi
13657 $rm -f foo* bar* 
13658
13659 : check for type of arguments to select. 
13660 case "$selecttype" in
13661 '') case "$d_select" in
13662         $define)
13663                 echo " "
13664                 $cat <<EOM
13665 Checking to see what type of arguments are accepted by select().
13666 EOM
13667                 hdrs="$define sys/types.h
13668                         $i_systime sys/time.h 
13669                         $i_sysselct sys/select.h
13670                         $d_socket sys/socket.h"
13671                 : The first arg can be int, unsigned, or size_t
13672                 : The last arg may or may not be 'const'
13673                 val=''
13674                 : void pointer has been seen but using that
13675                 : breaks the selectminbits test
13676                 for xxx in 'fd_set *' 'int *'; do
13677                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13678                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13679                                         case "$val" in
13680                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13681                                                 if ./protochk "$try" $hdrs; then
13682                                                         echo "Your system accepts $xxx."
13683                                                         val="$xxx"
13684                                                 fi
13685                                                 ;;
13686                                         esac
13687                                 done
13688                         done
13689                 done
13690                 case "$val" in
13691                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13692                         case "$d_fd_set" in
13693                                 $define) dflt="fd_set *" ;;
13694                                 *)              dflt="int *" ;;
13695                         esac
13696                         . ./myread
13697                         val=$ans
13698                         ;;
13699                 esac
13700                 selecttype="$val"
13701                 ;;
13702         *)      : no select, so pick a harmless default
13703                 selecttype='int *'
13704                 ;;
13705         esac
13706         ;;
13707 esac
13708
13709 : check for the select 'width'
13710 case "$selectminbits" in
13711 '') case "$d_select" in
13712         $define)
13713                 $cat <<EOM
13714
13715 Checking to see on how many bits at a time your select() operates...
13716 EOM
13717                 $cat >try.c <<EOCP
13718 #include <sys/types.h>
13719 #$i_time I_TIME
13720 #$i_systime I_SYS_TIME
13721 #$i_systimek I_SYS_TIME_KERNEL
13722 #ifdef I_TIME
13723 #   include <time.h>
13724 #endif
13725 #ifdef I_SYS_TIME
13726 #   ifdef I_SYS_TIME_KERNEL
13727 #       define KERNEL
13728 #   endif
13729 #   include <sys/time.h>
13730 #   ifdef I_SYS_TIME_KERNEL
13731 #       undef KERNEL
13732 #   endif
13733 #endif
13734 #$i_sysselct I_SYS_SELECT
13735 #ifdef I_SYS_SELECT
13736 #include <sys/select.h>
13737 #endif
13738 #$d_socket HAS_SOCKET
13739 #ifdef HAS_SOCKET
13740 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13741 #endif
13742 #include <stdio.h>
13743 $selecttype b;
13744 #define S sizeof(*(b))
13745 #define MINBITS 64
13746 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13747 #define NBITS  (NBYTES * 8)
13748 int main() {
13749     char s[NBYTES];
13750     struct timeval t;
13751     int i;
13752     FILE* fp;
13753     int fd;
13754
13755     fclose(stdin);
13756     fp = fopen("try.c", "r");
13757     if (fp == 0)
13758       exit(1);
13759     fd = fileno(fp);
13760     if (fd < 0)
13761       exit(2);
13762     b = ($selecttype)s;
13763     for (i = 0; i < NBITS; i++)
13764         FD_SET(i, b);
13765     t.tv_sec  = 0;
13766     t.tv_usec = 0;
13767     select(fd + 1, b, 0, 0, &t);
13768     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13769     printf("%d\n", i + 1);
13770     return 0;
13771 }
13772 EOCP
13773                 set try
13774                 if eval $compile_ok; then
13775                         selectminbits=`./try`
13776                         case "$selectminbits" in
13777                         '')     cat >&4 <<EOM
13778 Cannot figure out on how many bits at a time your select() operates.
13779 I'll play safe and guess it is 32 bits.
13780 EOM
13781                                 selectminbits=32
13782                                 bits="32 bits"
13783                                 ;;
13784                         1)      bits="1 bit" ;;
13785                         *)      bits="$selectminbits bits" ;;
13786                         esac
13787                         echo "Your select() operates on $bits at a time." >&4
13788                 else
13789                         rp='What is the minimum number of bits your select() operates on?'
13790                         case "$byteorder" in
13791                         1234|12345678)  dflt=32 ;;
13792                         *)              dflt=1  ;;
13793                         esac
13794                         . ./myread
13795                         val=$ans
13796                         selectminbits="$val"
13797                 fi
13798                 $rm -f try.* try
13799                 ;;
13800         *)      : no select, so pick a harmless default
13801                 selectminbits='32'
13802                 ;;
13803         esac
13804         ;;
13805 esac
13806
13807 : Trace out the files included by signal.h, then look for SIGxxx names.
13808 : Remove SIGARRAYSIZE used by HPUX.
13809 : Remove SIGSTKSIZE used by Linux.
13810 : Remove SIGSTKSZ used by Posix.
13811 : Remove SIGTYP void lines used by OS2.
13812 : Some cpps, like os390, dont give the file name anywhere
13813 if [ "X$fieldn" = X ]; then
13814         : Just make some guesses.  We check them later.
13815         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13816 else
13817         xxx=`echo '#include <signal.h>' |
13818         $cppstdin $cppminus $cppflags 2>/dev/null |
13819         $grep '^[       ]*#.*include' | 
13820         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13821 fi
13822 : Check this list of files to be sure we have parsed the cpp output ok.
13823 : This will also avoid potentially non-existent files, such 
13824 : as ../foo/bar.h
13825 xxxfiles=''
13826 for xx in $xxx /dev/null ; do
13827         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13828 done
13829 : If we have found no files, at least try signal.h
13830 case "$xxxfiles" in
13831 '')     xxxfiles=`./findhdr signal.h` ;;
13832 esac
13833 xxx=`awk '
13834 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13835         print substr($2, 4, 20)
13836 }
13837 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13838         print substr($3, 4, 20)
13839 }' $xxxfiles`
13840 : Append some common names just in case the awk scan failed.
13841 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13842 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13843 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13844 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13845 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13846
13847 : generate a few handy files for later
13848 $cat > signal.c <<'EOCP'
13849 #include <sys/types.h>
13850 #include <signal.h>
13851 #include <stdio.h>
13852 int main() {
13853
13854 /* Strange style to avoid deeply-nested #if/#else/#endif */
13855 #ifndef NSIG
13856 #  ifdef _NSIG
13857 #    define NSIG (_NSIG)
13858 #  endif
13859 #endif
13860
13861 #ifndef NSIG
13862 #  ifdef SIGMAX
13863 #    define NSIG (SIGMAX+1)
13864 #  endif
13865 #endif
13866
13867 #ifndef NSIG
13868 #  ifdef SIG_MAX
13869 #    define NSIG (SIG_MAX+1)
13870 #  endif
13871 #endif
13872
13873 #ifndef NSIG
13874 #  ifdef MAXSIG
13875 #    define NSIG (MAXSIG+1)
13876 #  endif
13877 #endif
13878
13879 #ifndef NSIG
13880 #  ifdef MAX_SIG
13881 #    define NSIG (MAX_SIG+1)
13882 #  endif
13883 #endif
13884
13885 #ifndef NSIG
13886 #  ifdef SIGARRAYSIZE
13887 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13888 #  endif
13889 #endif
13890
13891 #ifndef NSIG
13892 #  ifdef _sys_nsig
13893 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13894 #  endif
13895 #endif
13896
13897 /* Default to some arbitrary number that's big enough to get most
13898    of the common signals.
13899 */
13900 #ifndef NSIG
13901 #    define NSIG 50
13902 #endif
13903
13904 printf("NSIG %d\n", NSIG);
13905
13906 #ifndef JUST_NSIG
13907
13908 EOCP
13909
13910 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13911 {
13912         printf "#ifdef SIG"; printf $1; printf "\n"
13913         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13914         printf $1; printf ");\n"
13915         printf "#endif\n"
13916 }
13917 END {
13918         printf "#endif /* JUST_NSIG */\n";
13919         printf "exit(0);\n}\n";
13920 }
13921 ' >>signal.c
13922 $cat >signal.awk <<'EOP'
13923 BEGIN { ndups = 0 }
13924 $1 ~ /^NSIG$/ { nsig = $2 }
13925 ($1 !~ /^NSIG$/) && (NF == 2) {
13926     if ($2 > maxsig) { maxsig = $2 }
13927     if (sig_name[$2]) {
13928         dup_name[ndups] = $1
13929         dup_num[ndups] = $2
13930         ndups++ 
13931     }
13932     else {
13933         sig_name[$2] = $1
13934         sig_num[$2] = $2
13935     }
13936 }
13937 END { 
13938     if (nsig == 0) {
13939         nsig = maxsig + 1
13940     }
13941     printf("NSIG %d\n", nsig);
13942     for (n = 1; n < nsig; n++) {
13943         if (sig_name[n]) {
13944             printf("%s %d\n", sig_name[n], sig_num[n])
13945         }
13946         else {
13947             printf("NUM%d %d\n", n, n) 
13948         }
13949     }
13950     for (n = 0; n < ndups; n++) {
13951         printf("%s %d\n", dup_name[n], dup_num[n])
13952     }
13953 }
13954 EOP
13955 $cat >signal_cmd <<EOS
13956 $startsh
13957 if $test -s signal.lst; then
13958     echo "Using your existing signal.lst file"
13959         exit 0
13960 fi
13961 xxx="$xxx"
13962 EOS
13963 $cat >>signal_cmd <<'EOS'
13964
13965 set signal
13966 if eval $compile_ok; then
13967         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13968 else
13969         echo "(I can't seem be able to compile the whole test program)" >&4
13970         echo "(I'll try it in little pieces.)" >&4
13971         set signal -DJUST_NSIG
13972         if eval $compile_ok; then
13973                 ./signal$_exe > signal.nsg
13974                 $cat signal.nsg
13975         else
13976                 echo "I can't seem to figure out how many signals you have." >&4
13977                 echo "Guessing 50." >&4
13978                 echo 'NSIG 50' > signal.nsg
13979         fi
13980         : Now look at all the signal names, one at a time.
13981         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13982                 $cat > signal.c <<EOCP
13983 #include <sys/types.h>
13984 #include <signal.h>
13985 #include <stdio.h>
13986 int main() {
13987 printf("$xx %d\n", SIG${xx});
13988 return 0;
13989 }
13990 EOCP
13991                 set signal
13992                 if eval $compile; then
13993                         echo "SIG${xx} found."
13994                         ./signal$_exe  >> signal.ls1
13995                 else
13996                         echo "SIG${xx} NOT found."
13997                 fi
13998         done
13999         if $test -s signal.ls1; then
14000                 $cat signal.nsg signal.ls1 |
14001                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14002         fi
14003
14004 fi
14005 if $test -s signal.lst; then
14006         :
14007 else
14008         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14009         echo 'kill -l' >signal
14010         set X `csh -f <signal`
14011         $rm -f signal
14012         shift
14013         case $# in
14014         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14015         esac
14016         echo $@ | $tr ' ' $trnl | \
14017             $awk '{ printf "%s %d\n", $1, ++s; }
14018                   END { printf "NSIG %d\n", ++s }' >signal.lst
14019 fi
14020 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14021 EOS
14022 chmod a+x signal_cmd
14023 $eunicefix signal_cmd
14024
14025 : generate list of signal names
14026 echo " "
14027 case "$sig_name_init" in
14028 '') doinit=yes ;;
14029 *)  case "$sig_num_init" in
14030     ''|*,*) doinit=yes ;;
14031     esac ;;
14032 esac
14033 case "$doinit" in
14034 yes)
14035         echo "Generating a list of signal names and numbers..." >&4
14036         . ./signal_cmd
14037         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14038         sig_name=`$awk 'BEGIN { printf "ZERO " }
14039                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14040         sig_num=`$awk  'BEGIN { printf "0 " }
14041                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14042         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14043                              !/^NSIG/   { printf "\"%s\", ", $1 }
14044                              END        { printf "0\n" }' signal.lst`
14045         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14046                              !/^NSIG/   { printf "%d, ", $2}
14047                              END        { printf "0\n"}' signal.lst`
14048         ;;
14049 esac
14050 echo "The following $sig_count signals are available:"
14051 echo " "
14052 echo $sig_name | $awk \
14053 'BEGIN { linelen = 0 }
14054 {
14055         for (i = 1; i <= NF; i++) {
14056                 name = "SIG" $i " "
14057                 linelen = linelen + length(name)
14058                 if (linelen > 70) {
14059                         printf "\n"
14060                         linelen = length(name)
14061                 }
14062                 printf "%s", name
14063         }
14064         printf "\n"
14065 }'
14066 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14067
14068 echo " "
14069 case "$sizetype" in
14070 *_t) zzz="$sizetype"    ;;
14071 *)   zzz="filesize"     ;;
14072 esac
14073 echo "Checking the size of $zzz..." >&4 
14074 cat > try.c <<EOCP
14075 #include <sys/types.h>
14076 #include <stdio.h>
14077 int main() {
14078     printf("%d\n", (int)sizeof($sizetype));
14079     exit(0);
14080 }
14081 EOCP
14082 set try
14083 if eval $compile_ok; then
14084         yyy=`./try`
14085         case "$yyy" in
14086         '')     sizesize=4
14087                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14088                 ;;
14089         *)      sizesize=$yyy
14090                 echo "Your $zzz size is $sizesize bytes."
14091                 ;;
14092         esac
14093 else
14094         sizesize=4
14095         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14096 fi
14097
14098
14099 : check for socklen_t
14100 echo " "
14101 echo "Checking to see if you have socklen_t..." >&4
14102 $cat >try.c <<EOCP
14103 #include <sys/types.h>
14104 #$d_socket HAS_SOCKET
14105 #ifdef HAS_SOCKET
14106 #include <sys/socket.h>
14107 #endif
14108 int main() { socklen_t x = 16; }
14109 EOCP
14110 set try
14111 if eval $compile; then
14112         val="$define"
14113         echo "You have socklen_t."
14114 else
14115         val="$undef"
14116         echo "You do not have socklen_t."
14117         case "$sizetype" in
14118         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14119         esac
14120 fi
14121 $rm -f try try.*
14122 set d_socklen_t
14123 eval $setvar
14124
14125 : check for type of the size argument to socket calls
14126 case "$d_socket" in
14127 "$define")
14128         $cat <<EOM
14129
14130 Checking to see what type is the last argument of accept().
14131 EOM
14132         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14133         yyy=''
14134         case "$d_socklen_t" in
14135         "$define") yyy="$yyy socklen_t"
14136         esac
14137         yyy="$yyy $sizetype int long unsigned"
14138         for xxx in $yyy; do
14139                 case "$socksizetype" in
14140                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14141                         if ./protochk "$try" $hdrs; then
14142                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14143                                 socksizetype="$xxx"
14144                         fi
14145                         ;;
14146                 esac
14147         done
14148 : In case none of those worked, prompt the user.
14149         case "$socksizetype" in
14150         '')     rp='What is the type for socket address structure sizes?'
14151                 dflt='int'
14152                 . ./myread
14153                 socksizetype=$ans
14154                 ;;
14155         esac
14156         ;;
14157 *)      : no sockets, so pick relatively harmless default
14158         socksizetype='int'
14159         ;;
14160 esac
14161
14162 : see what type is used for signed size_t
14163 set ssize_t ssizetype int stdio.h sys/types.h
14164 eval $typedef
14165 dflt="$ssizetype"
14166 $cat > ssize.c <<EOM
14167 #include <stdio.h>
14168 #include <sys/types.h>
14169 #define Size_t $sizetype
14170 #define SSize_t $dflt
14171 int main()
14172 {
14173         if (sizeof(Size_t) == sizeof(SSize_t))
14174                 printf("$dflt\n");
14175         else if (sizeof(Size_t) == sizeof(int))
14176                 printf("int\n");
14177         else 
14178                 printf("long\n");
14179         exit(0);
14180 }
14181 EOM
14182 echo " "
14183 set ssize
14184 if eval $compile_ok && ./ssize > /dev/null; then
14185         ssizetype=`./ssize`
14186         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14187 else
14188         $cat >&4 <<EOM
14189 Help! I can't compile and run the ssize_t test program: please enlighten me!
14190 (This is probably a misconfiguration in your system or libraries, and
14191 you really ought to fix it.  Still, I'll try anyway.)
14192
14193 I need a type that is the same size as $sizetype, but is guaranteed to
14194 be signed.  Common values are ssize_t, int and long.
14195
14196 EOM
14197         rp="What signed type is the same size as $sizetype?"
14198         . ./myread
14199         ssizetype="$ans"
14200 fi
14201 $rm -f ssize ssize.*
14202
14203 : see what type of char stdio uses.
14204 echo " "
14205 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14206         echo "Your stdio uses unsigned chars." >&4
14207         stdchar="unsigned char"
14208 else
14209         echo "Your stdio uses signed chars." >&4
14210         stdchar="char"
14211 fi
14212
14213 : see if time exists
14214 echo " "
14215 if test "X$d_time" = X -o X"$timetype" = X; then
14216     if set time val -f d_time; eval $csym; $val; then
14217                 echo 'time() found.' >&4
14218                 val="$define"
14219                 rp="What is the type returned by time() on this system?"
14220                 set time_t timetype long stdio.h sys/types.h
14221                 eval $typedef_ask
14222     else
14223                 echo 'time() not found, hope that will do.' >&4
14224                 val="$undef"
14225                 timetype='int';
14226     fi
14227     set d_time
14228     eval $setvar
14229 fi
14230
14231 : see what type uids are declared as in the kernel
14232 echo " "
14233 echo "Looking for the type for user ids returned by getuid()."
14234 set uid_t uidtype xxx stdio.h sys/types.h
14235 eval $typedef
14236 case "$uidtype" in
14237 xxx)
14238         xxx=`./findhdr sys/user.h`
14239         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14240         case $1 in
14241         unsigned) dflt="$1 $2" ;;
14242         *) dflt="$1" ;;
14243         esac
14244         ;;
14245 *) dflt="$uidtype";;
14246 esac
14247 case "$uidtype" in
14248 uid_t)  echo "uid_t found." ;;
14249 *)      rp="What is the type for user ids returned by getuid()?"
14250         . ./myread
14251         uidtype="$ans"
14252         ;;
14253 esac
14254
14255 echo " "
14256 case "$uidtype" in
14257 *_t) zzz="$uidtype"     ;;
14258 *)   zzz="uid"          ;;
14259 esac
14260 echo "Checking the size of $zzz..." >&4 
14261 cat > try.c <<EOCP
14262 #include <sys/types.h>
14263 #include <stdio.h>
14264 int main() {
14265     printf("%d\n", (int)sizeof($uidtype));
14266     exit(0);
14267 }
14268 EOCP
14269 set try
14270 if eval $compile_ok; then
14271         yyy=`./try`
14272         case "$yyy" in
14273         '')     uidsize=4
14274                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14275                 ;;
14276         *)      uidsize=$yyy
14277                 echo "Your $zzz is $uidsize bytes long."
14278                 ;;
14279         esac
14280 else
14281         uidsize=4
14282         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14283 fi
14284
14285 echo " "
14286 case "$uidtype" in
14287 *_t) zzz="$uidtype"     ;;
14288 *)   zzz="uid"          ;;
14289 esac
14290 echo "Checking the sign of $zzz..." >&4
14291 cat > try.c <<EOCP
14292 #include <sys/types.h>
14293 #include <stdio.h>
14294 int main() {
14295         $uidtype foo = -1;
14296         if (foo < 0)
14297                 printf("-1\n");
14298         else
14299                 printf("1\n");
14300 }
14301 EOCP
14302 set try
14303 if eval $compile; then
14304         yyy=`./try`
14305         case "$yyy" in
14306         '')     uidsign=1
14307                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14308                 ;;
14309         *)      uidsign=$yyy
14310                 case "$uidsign" in
14311                  1) echo "Your $zzz is unsigned." ;;
14312                 -1) echo "Your $zzz is signed."   ;;
14313                 esac
14314                 ;;
14315         esac
14316 else
14317         uidsign=1
14318         echo "(I can't compile the test program--guessing unsigned.)" >&4
14319 fi
14320
14321
14322
14323 echo " "
14324 $echo "Checking the format string to be used for uids..." >&4
14325
14326 case "$uidsign" in
14327 -1)     if $test X"$uidsize" = X"$ivsize"; then
14328                 uidformat="$ivdformat"
14329         else
14330                 if $test X"$uidsize" = X"$longsize"; then
14331                         uidformat='"ld"'
14332                 else
14333                         if $test X"$uidsize" = X"$intsize"; then
14334                                 uidformat='"d"'
14335                         else
14336                                 if $test X"$uidsize" = X"$shortsize"; then
14337                                         uidformat='"hd"'
14338                                 fi
14339                         fi
14340                 fi
14341         fi
14342         ;;
14343 *)      if $test X"$uidsize" = X"$uvsize"; then
14344                 uidformat="$uvuformat"
14345         else
14346                 if $test X"$uidsize" = X"$longsize"; then
14347                         uidformat='"lu"'
14348                 else
14349                         if $test X"$uidsize" = X"$intsize"; then
14350                                 uidformat='"u"'
14351                         else
14352                                 if $test X"$uidsize" = X"$shortsize"; then
14353                                         uidformat='"hu"'
14354                                 fi
14355                         fi
14356                 fi
14357         fi
14358         ;;
14359 esac
14360
14361 : see if dbm.h is available
14362 : see if dbmclose exists
14363 set dbmclose d_dbmclose
14364 eval $inlibc
14365
14366 case "$d_dbmclose" in
14367 $define)
14368         set dbm.h i_dbm
14369         eval $inhdr
14370         case "$i_dbm" in
14371         $define)
14372                 val="$undef"
14373                 set i_rpcsvcdbm
14374                 eval $setvar
14375                 ;;
14376         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14377                 eval $inhdr
14378                 ;;
14379         esac
14380         ;;
14381 *)      echo "We won't be including <dbm.h>"
14382         val="$undef"
14383         set i_dbm
14384         eval $setvar
14385         val="$undef"
14386         set i_rpcsvcdbm
14387         eval $setvar
14388         ;;
14389 esac
14390
14391 : see if this is a sys/file.h system
14392 val=''
14393 set sys/file.h val
14394 eval $inhdr
14395
14396 : do we need to include sys/file.h ?
14397 case "$val" in
14398 "$define")
14399         echo " "
14400         if $h_sysfile; then
14401                 val="$define"
14402                 echo "We'll be including <sys/file.h>." >&4
14403         else
14404                 val="$undef"
14405                 echo "We won't be including <sys/file.h>." >&4
14406         fi
14407         ;;
14408 *)
14409         h_sysfile=false
14410         ;;
14411 esac
14412 set i_sysfile
14413 eval $setvar
14414
14415 : see if fcntl.h is there
14416 val=''
14417 set fcntl.h val
14418 eval $inhdr
14419
14420 : see if we can include fcntl.h
14421 case "$val" in
14422 "$define")
14423         echo " "
14424         if $h_fcntl; then
14425                 val="$define"
14426                 echo "We'll be including <fcntl.h>." >&4
14427         else
14428                 val="$undef"
14429                 if $h_sysfile; then
14430         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14431                 else
14432                         echo "We won't be including <fcntl.h>." >&4
14433                 fi
14434         fi
14435         ;;
14436 *)
14437         h_fcntl=false
14438         val="$undef"
14439         ;;
14440 esac
14441 set i_fcntl
14442 eval $setvar
14443
14444 : see if this is a iconv.h system
14445 set iconv.h i_iconv
14446 eval $inhdr
14447
14448 : see if this is a ieeefp.h system
14449 set ieeefp.h i_ieeefp
14450 eval $inhdr
14451
14452 : see if this is a libutil.h system
14453 set libutil.h i_libutil
14454 eval $inhdr
14455
14456 : see if locale.h is available
14457 set locale.h i_locale
14458 eval $inhdr
14459
14460 : see if mach cthreads are available
14461 if test "X$usethreads" = "X$define"; then
14462         set mach/cthreads.h i_machcthr
14463         eval $inhdr
14464 else
14465         i_machcthr="$undef"
14466 fi
14467
14468
14469
14470 : see if this is a math.h system
14471 set math.h i_math
14472 eval $inhdr
14473
14474 : see if this is a mntent.h system
14475 set mntent.h i_mntent
14476 eval $inhdr
14477
14478 : see if ndbm.h is available
14479 set ndbm.h t_ndbm
14480 eval $inhdr
14481 case "$t_ndbm" in
14482 $define)
14483         : see if dbm_open exists
14484         set dbm_open d_dbm_open
14485         eval $inlibc
14486         case "$d_dbm_open" in
14487         $undef)
14488                 t_ndbm="$undef"
14489                 echo "We won't be including <ndbm.h>"
14490                 ;;
14491         esac
14492         ;;
14493 esac
14494 val="$t_ndbm"
14495 set i_ndbm
14496 eval $setvar
14497
14498 : see if net/errno.h is available
14499 val=''
14500 set net/errno.h val
14501 eval $inhdr
14502
14503 : Unfortunately, it causes problems on some systems.  Arrgh.
14504 case "$val" in
14505 $define)
14506         cat > try.c <<'EOM'
14507 #include <stdio.h>
14508 #include <errno.h>
14509 #include <net/errno.h>
14510 int func()
14511 {
14512         return ENOTSOCK;
14513 }
14514 EOM
14515         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14516                 echo "We'll be including <net/errno.h>." >&4
14517         else
14518                 echo "We won't be including <net/errno.h>." >&4
14519                 val="$undef"
14520         fi
14521         $rm -f try.* try
14522         ;;
14523 esac
14524 set i_neterrno
14525 eval $setvar
14526
14527 : see if netinet/tcp.h is available
14528 set netinet/tcp.h i_netinettcp
14529 eval $inhdr
14530
14531 : see if this is a poll.h system
14532 set poll.h i_poll
14533 eval $inhdr
14534
14535 : see if this is a prot.h system
14536 set prot.h i_prot
14537 eval $inhdr
14538
14539 echo " "
14540 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14541 $cat <<'EOSH' > Cppsym.know
14542 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14543 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14544 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14545 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14546 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14547 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14548 bull c cadmus clipper CMU COFF COMPILER_VERSION
14549 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14550 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14551 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14552 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14553 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14554 H3050R H3050RX hbullx20 hcx host_mips
14555 hp200 hp300 hp700 HP700 hp800 hp9000
14556 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14557 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14558 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14559 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14560 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14561 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14562 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14563 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14564 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14565 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14566 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14567 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14568 MATH_HAS_NO_SIDE_EFFECTS
14569 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14570 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14571 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14572 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14573 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14574 NetBSD news1500 news1700 news1800 news1900 news3700
14575 news700 news800 news900 NeXT NLS ns16000 ns32000
14576 ns32016 ns32332 ns32k nsc32000
14577 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14578 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14579 pc532 pdp11 PGC PIC plexus PORTAR posix
14580 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14581 POSIX_C_SOURCE POSIX_SOURCE POWER
14582 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14583 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14584 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14585 sony sony_news sonyrisc sparc sparclite spectrum
14586 stardent stdc STDC_EXT stratos sun sun3 sun386
14587 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14588 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14589 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14590 sysV68 sysV88 Tek4132 Tek4300 titan
14591 tower tower32 tower32_200 tower32_600 tower32_700
14592 tower32_800 tower32_850 tss
14593 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14594 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14595 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14596 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14597 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14598 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14599 z8000
14600 EOSH
14601 # Maybe put other stuff here too.
14602 cat <<EOSH >>Cppsym.know
14603 $osname
14604 EOSH
14605 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14606 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14607 $cat Cppsym.know > Cppsym.c
14608 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14609 $rm -f Cppsym.a Cppsym.b Cppsym.c
14610 cat <<EOSH > Cppsym
14611 $startsh
14612 if $test \$# -gt 0; then
14613     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14614     if $test -s Cppsym.got; then
14615         $rm -f Cppsym.got
14616         exit 0
14617     fi
14618     $rm -f Cppsym.got
14619     exit 1
14620 else
14621     $tr " " "$trnl" | ./Cppsym.try
14622     exit 0
14623 fi
14624 EOSH
14625 chmod +x Cppsym
14626 $eunicefix Cppsym
14627 cat <<EOSH > Cppsym.try
14628 $startsh
14629 cat <<'EOCP' > try.c
14630 #include <stdio.h>
14631 int main() {
14632 EOCP
14633 $awk \\
14634 EOSH
14635 cat <<'EOSH' >> Cppsym.try
14636 'length($1) > 0 {
14637     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
14638     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
14639     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
14640     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
14641 }'       >> try.c
14642 echo '}' >> try.c
14643 EOSH
14644 cat <<EOSH >> Cppsym.try
14645 ccflags="$ccflags"
14646 case "$osname-$gccversion" in
14647 irix-) ccflags="\$ccflags -woff 1178" ;;
14648 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14649 esac
14650 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14651 EOSH
14652 chmod +x Cppsym.try
14653 $eunicefix Cppsym.try
14654 ./Cppsym < Cppsym.know > Cppsym.true
14655 : now check the C compiler for additional symbols
14656 postprocess_cc_v=''
14657 case "$osname" in
14658 aix) postprocess_cc_v="|$tr , ' '" ;;
14659 esac
14660 $cat >ccsym <<EOS
14661 $startsh
14662 $cat >tmp.c <<EOF
14663 extern int foo;
14664 EOF
14665 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14666 do
14667         case "\$i" in
14668         -D*) echo "\$i" | $sed 's/^-D//';;
14669         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14670         esac
14671 done
14672 $rm -f try.c
14673 EOS
14674 postprocess_cc_v=''
14675 chmod +x ccsym
14676 $eunicefix ccsym
14677 ./ccsym > ccsym1.raw
14678 if $test -s ccsym1.raw; then
14679        $sort ccsym1.raw | $uniq >ccsym.raw
14680 else
14681        mv ccsym1.raw ccsym.raw
14682 fi
14683
14684 $awk '/\=/ { print $0; next }
14685         { print $0"=1" }' ccsym.raw >ccsym.list
14686 $awk '/\=/ { print $0; next }
14687         { print $0"=1" }' Cppsym.true >ccsym.true
14688 $comm -13 ccsym.true ccsym.list >ccsym.own
14689 $comm -12 ccsym.true ccsym.list >ccsym.com
14690 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14691 also=''
14692 if $test -z ccsym.raw; then
14693         echo "Your C compiler doesn't seem to define any symbols!" >&4
14694         echo " "
14695         echo "However, your C preprocessor defines the following symbols:"
14696         $cat Cppsym.true
14697         ccsymbols=''
14698         cppsymbols=`$cat Cppsym.true`
14699         cppsymbols=`echo $cppsymbols`
14700         cppccsymbols="$cppsymbols"
14701 else
14702         if $test -s ccsym.com; then
14703                 echo "Your C compiler and pre-processor define these symbols:"
14704                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14705                 also='also '
14706                 symbols='ones'
14707                 cppccsymbols=`$cat ccsym.com`
14708                 cppccsymbols=`echo $cppccsymbols`
14709                 $test "$silent" || sleep 1
14710         fi
14711         if $test -s ccsym.cpp; then
14712                 $test "$also" && echo " "
14713                 echo "Your C pre-processor ${also}defines the following symbols:"
14714                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14715                 also='further '
14716                 cppsymbols=`$cat ccsym.cpp`
14717                 cppsymbols=`echo $cppsymbols`
14718                 $test "$silent" || sleep 1
14719         fi
14720         if $test -s ccsym.own; then
14721                 $test "$also" && echo " "
14722                 echo "Your C compiler ${also}defines the following cpp symbols:"
14723                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14724                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14725                 ccsymbols=`$cat ccsym.own`
14726                 ccsymbols=`echo $ccsymbols`
14727                 $test "$silent" || sleep 1
14728         fi
14729 fi
14730 $rm -f ccsym* Cppsym.*
14731
14732 : see if this is a termio system
14733 val="$undef"
14734 val2="$undef"
14735 val3="$undef"
14736 if $test `./findhdr termios.h`; then
14737         set tcsetattr i_termios
14738         eval $inlibc
14739         val3="$i_termios"
14740 fi
14741 echo " "
14742 case "$val3" in
14743 "$define") echo "You have POSIX termios.h... good!" >&4;;
14744 *) if ./Cppsym pyr; then
14745                 case "`/bin/universe`" in
14746                 ucb) if $test `./findhdr sgtty.h`; then
14747                                 val2="$define"
14748                                 echo "<sgtty.h> found." >&4
14749                         else
14750                                 echo "System is pyramid with BSD universe."
14751                                 echo "<sgtty.h> not found--you could have problems." >&4
14752                         fi;;
14753                 *) if $test `./findhdr termio.h`; then
14754                                 val="$define"
14755                                 echo "<termio.h> found." >&4
14756                         else
14757                                 echo "System is pyramid with USG universe."
14758                                 echo "<termio.h> not found--you could have problems." >&4
14759                         fi;;
14760                 esac
14761         elif ./usg; then
14762                 if $test `./findhdr termio.h`; then
14763                         echo "<termio.h> found." >&4
14764                         val="$define"
14765                 elif $test `./findhdr sgtty.h`; then
14766                         echo "<sgtty.h> found." >&4
14767                         val2="$define"
14768                 else
14769 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14770                 fi
14771         else
14772                 if $test `./findhdr sgtty.h`; then
14773                         echo "<sgtty.h> found." >&4
14774                         val2="$define"
14775                 elif $test `./findhdr termio.h`; then
14776                         echo "<termio.h> found." >&4
14777                         val="$define"
14778                 else
14779 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14780                 fi
14781         fi;;
14782 esac
14783 set i_termio; eval $setvar
14784 val=$val2; set i_sgtty; eval $setvar
14785 val=$val3; set i_termios; eval $setvar
14786
14787 : see if this is a shadow.h system
14788 set shadow.h i_shadow
14789 eval $inhdr
14790
14791 : see if this is a socks.h system
14792 set socks.h i_socks
14793 eval $inhdr
14794
14795 : see if stdarg is available
14796 echo " "
14797 if $test `./findhdr stdarg.h`; then
14798         echo "<stdarg.h> found." >&4
14799         valstd="$define"
14800 else
14801         echo "<stdarg.h> NOT found." >&4
14802         valstd="$undef"
14803 fi
14804
14805 : see if varags is available
14806 echo " "
14807 if $test `./findhdr varargs.h`; then
14808         echo "<varargs.h> found." >&4
14809 else
14810         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14811 fi
14812
14813 : set up the varargs testing programs
14814 $cat > varargs.c <<EOP
14815 #ifdef I_STDARG
14816 #include <stdarg.h>
14817 #endif
14818 #ifdef I_VARARGS
14819 #include <varargs.h>
14820 #endif
14821
14822 #ifdef I_STDARG
14823 int f(char *p, ...)
14824 #else
14825 int f(va_alist)
14826 va_dcl
14827 #endif
14828 {
14829         va_list ap;
14830 #ifndef I_STDARG
14831         char *p;
14832 #endif
14833 #ifdef I_STDARG
14834         va_start(ap,p);
14835 #else
14836         va_start(ap);
14837         p = va_arg(ap, char *);
14838 #endif
14839         va_end(ap);
14840 }
14841 EOP
14842 $cat > varargs <<EOP
14843 $startsh
14844 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14845         echo "true"
14846 else
14847         echo "false"
14848 fi
14849 $rm -f varargs$_o
14850 EOP
14851 chmod +x varargs
14852
14853 : now check which varargs header should be included
14854 echo " "
14855 i_varhdr=''
14856 case "$valstd" in
14857 "$define")
14858         if `./varargs I_STDARG`; then
14859                 val='stdarg.h'
14860         elif `./varargs I_VARARGS`; then
14861                 val='varargs.h'
14862         fi
14863         ;;
14864 *)
14865         if `./varargs I_VARARGS`; then
14866                 val='varargs.h'
14867         fi
14868         ;;
14869 esac
14870 case "$val" in
14871 '')
14872 echo "I could not find the definition for va_dcl... You have problems..." >&4
14873         val="$undef"; set i_stdarg; eval $setvar
14874         val="$undef"; set i_varargs; eval $setvar
14875         ;;
14876 *) 
14877         set i_varhdr
14878         eval $setvar
14879         case "$i_varhdr" in
14880         stdarg.h)
14881                 val="$define"; set i_stdarg; eval $setvar
14882                 val="$undef"; set i_varargs; eval $setvar
14883                 ;;
14884         varargs.h)
14885                 val="$undef"; set i_stdarg; eval $setvar
14886                 val="$define"; set i_varargs; eval $setvar
14887                 ;;
14888         esac
14889         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14890 esac
14891 $rm -f varargs*
14892
14893 : see if stddef is available
14894 set stddef.h i_stddef
14895 eval $inhdr
14896
14897 : see if this is a sunmath.h system
14898 set sunmath.h i_sunmath
14899 eval $inhdr
14900
14901 : see if sys/access.h is available
14902 set sys/access.h i_sysaccess
14903 eval $inhdr
14904
14905 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14906 set sys/filio.h i_sysfilio
14907 eval $inhdr
14908 echo " "
14909 if $test `./findhdr sys/ioctl.h`; then
14910         val="$define"
14911         echo '<sys/ioctl.h> found.' >&4
14912 else
14913         val="$undef"
14914         if $test $i_sysfilio = "$define"; then
14915             echo '<sys/ioctl.h> NOT found.' >&4
14916         else
14917                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14918                 $test $i_termio = "$define" && xxx="termio.h"
14919                 $test $i_termios = "$define" && xxx="termios.h"
14920 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14921         fi
14922 fi
14923 set i_sysioctl
14924 eval $setvar
14925
14926
14927 : see if this is a syslog.h system
14928 set syslog.h i_syslog
14929 eval $inhdr
14930
14931
14932 : see if this is a sys/mode.h system
14933 set sys/mode.h i_sysmode
14934 eval $inhdr
14935
14936 : see if sys/resource.h has to be included
14937 set sys/resource.h i_sysresrc
14938 eval $inhdr
14939
14940 : see if sys/security.h is available
14941 set sys/security.h i_syssecrt
14942 eval $inhdr
14943
14944 : see if this is a sys/statvfs.h system
14945 set sys/statvfs.h i_sysstatvfs
14946 eval $inhdr
14947
14948 : see if this is a sys/uio.h system
14949 set sys/uio.h i_sysuio
14950 eval $inhdr
14951
14952 : see if this is a sys/un.h system
14953 set sys/un.h i_sysun
14954 eval $inhdr
14955
14956
14957 : see if this is a sys/utsname.h system
14958 set sys/utsname.h i_sysutsname
14959 eval $inhdr
14960
14961 : see if this is a syswait system
14962 set sys/wait.h i_syswait
14963 eval $inhdr
14964
14965 : see if this is a ustat.h system
14966 set ustat.h i_ustat
14967 eval $inhdr
14968
14969 : see if this is an utime system
14970 set utime.h i_utime
14971 eval $inhdr
14972
14973 : see if this is a values.h system
14974 set values.h i_values
14975 eval $inhdr
14976
14977 : see if this is a vfork system
14978 case "$d_vfork" in
14979 "$define")
14980         set vfork.h i_vfork
14981         eval $inhdr
14982         ;;
14983 *)
14984         i_vfork="$undef"
14985         ;;
14986 esac
14987
14988 : see if gdbm.h is available
14989 set gdbm.h t_gdbm
14990 eval $inhdr
14991 case "$t_gdbm" in
14992 $define)
14993         : see if gdbm_open exists
14994         set gdbm_open d_gdbm_open
14995         eval $inlibc
14996         case "$d_gdbm_open" in
14997         $undef)
14998                 t_gdbm="$undef"
14999                 echo "We won't be including <gdbm.h>"
15000                 ;;
15001         esac
15002         ;;
15003 esac
15004 val="$t_gdbm"
15005 set i_gdbm
15006 eval $setvar
15007
15008 echo " "
15009 echo "Looking for extensions..." >&4
15010 : If we are using the old config.sh, known_extensions may contain
15011 : old or inaccurate or duplicate values.
15012 known_extensions=''
15013 nonxs_extensions=''
15014 : We do not use find because it might not be available.
15015 : We do not just use MANIFEST because the user may have dropped
15016 : some additional extensions into the source tree and expect them
15017 : to be built.
15018
15019 : Function to recursively find available extensions, ignoring DynaLoader
15020 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15021 find_extensions='
15022     for xxx in *; do
15023        case "$xxx" in
15024            DynaLoader|dynaload) ;;
15025            *)
15026            if $test -f $xxx/$xxx.xs; then
15027                known_extensions="$known_extensions $1$xxx";
15028            elif $test -f $xxx/Makefile.PL; then
15029                nonxs_extensions="$nonxs_extensions $1$xxx";
15030            else
15031                if $test -d $xxx -a $# -lt 10; then
15032                    set $1$xxx/ $*;
15033                    cd $xxx;
15034                    eval $find_extensions;
15035                    cd ..;
15036                    shift;
15037                fi;
15038            fi
15039            ;;
15040        esac;
15041     done'
15042 tdir=`pwd`
15043 cd $rsrc/ext
15044 set X
15045 shift
15046 eval $find_extensions
15047 set X $nonxs_extensions
15048 shift
15049 nonxs_extensions="$*"
15050 set X $known_extensions
15051 shift
15052 known_extensions="$*"
15053 cd $tdir
15054
15055 : Now see which are supported on this system.
15056 avail_ext=''
15057 for xxx in $known_extensions ; do
15058         case "$xxx" in
15059         DB_File|db_file)
15060                 case "$i_db" in
15061                 $define) avail_ext="$avail_ext $xxx" ;;
15062                 esac
15063                 ;;
15064         GDBM_File|gdbm_fil)
15065                 case "$i_gdbm" in 
15066                 $define) avail_ext="$avail_ext $xxx" ;;
15067                 esac
15068                 ;;
15069         NDBM_File|ndbm_fil)
15070                 case "$i_ndbm" in
15071                 $define)
15072                     case "$osname-$use64bitint" in
15073                     hpux-define)
15074                         case "$libs" in
15075                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15076                         esac
15077                         ;;
15078                     *) avail_ext="$avail_ext $xxx" ;;
15079                     esac
15080                     ;;
15081                 esac
15082                 ;;
15083         ODBM_File|odbm_fil) 
15084                 case "${i_dbm}${i_rpcsvcdbm}" in
15085                 *"${define}"*)
15086                     case "$osname-$use64bitint" in
15087                     hpux-define)
15088                         case "$libs" in
15089                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15090                         esac
15091                         ;;
15092                     *) avail_ext="$avail_ext $xxx" ;;
15093                     esac
15094                     ;;
15095                 esac
15096                 ;;
15097         POSIX|posix)
15098                 case "$useposix" in
15099                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15100                 esac
15101                 ;;
15102         Opcode|opcode)
15103                 case "$useopcode" in
15104                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15105                 esac
15106                 ;;
15107         Socket|socket)
15108                 case "$d_socket" in 
15109                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15110                 esac
15111                 ;;
15112         Sys/Syslog|sys/syslog)
15113                 : XXX syslog requires socket
15114                 case "$d_socket" in 
15115                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15116                 esac
15117                 ;;
15118         Thread|thread)
15119                 case "$usethreads" in 
15120                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15121                 esac
15122                 ;;
15123         IPC/SysV|ipc/sysv)
15124                 : XXX Do we need a useipcsysv variable here
15125                 case "${d_msg}${d_sem}${d_shm}" in 
15126                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15127                 esac
15128                 ;;
15129         *)      avail_ext="$avail_ext $xxx"
15130                 ;;
15131         esac
15132 done
15133
15134 set X $avail_ext
15135 shift
15136 avail_ext="$*"
15137
15138 : Now see which nonxs extensions are supported on this system.
15139 : For now assume all are.
15140 nonxs_ext=''
15141 for xxx in $nonxs_extensions ; do
15142         case "$xxx" in
15143         *)      nonxs_ext="$nonxs_ext $xxx"
15144                 ;;
15145         esac
15146 done
15147
15148 set X $nonxs_ext
15149 shift
15150 nonxs_ext="$*"
15151
15152 case $usedl in
15153 $define)
15154         $cat <<EOM
15155 A number of extensions are supplied with $package.  You may choose to
15156 compile these extensions for dynamic loading (the default), compile
15157 them into the $package executable (static loading), or not include
15158 them at all.  Answer "none" to include no extensions.
15159 Note that DynaLoader is always built and need not be mentioned here.
15160
15161 EOM
15162         case "$dynamic_ext" in
15163         '') dflt="$avail_ext" ;;
15164         *)      dflt="$dynamic_ext"
15165                 # Perhaps we are reusing an old out-of-date config.sh.
15166                 case "$hint" in
15167                 previous)
15168                         if test X"$dynamic_ext" != X"$avail_ext"; then
15169                                 $cat <<EOM
15170 NOTICE:  Your previous config.sh list may be incorrect. 
15171 The extensions now available to you are 
15172         ${avail_ext}
15173 but the default list from your previous config.sh is
15174         ${dynamic_ext} 
15175
15176 EOM
15177                         fi
15178                         ;;
15179                 esac
15180                 ;;
15181         esac
15182         case "$dflt" in
15183         '')     dflt=none;;
15184         esac
15185         rp="What extensions do you wish to load dynamically?"
15186         . ./myread
15187         case "$ans" in
15188         none) dynamic_ext=' ' ;;
15189         *) dynamic_ext="$ans" ;;
15190         esac
15191
15192         case "$static_ext" in
15193         '')
15194                 : Exclude those already listed in dynamic linking
15195                 dflt=''
15196                 for xxx in $avail_ext; do
15197                         case " $dynamic_ext " in
15198                         *" $xxx "*) ;;
15199                         *) dflt="$dflt $xxx" ;;
15200                         esac
15201                 done
15202                 set X $dflt
15203                 shift
15204                 dflt="$*"
15205                 ;;
15206         *)  dflt="$static_ext" 
15207                 ;;
15208         esac
15209
15210         case "$dflt" in
15211         '')     dflt=none;;
15212         esac
15213         rp="What extensions do you wish to load statically?"
15214         . ./myread
15215         case "$ans" in
15216         none) static_ext=' ' ;;
15217         *) static_ext="$ans" ;;
15218         esac
15219         ;;
15220 *)
15221         $cat <<EOM
15222 A number of extensions are supplied with $package.  Answer "none" 
15223 to include no extensions. 
15224 Note that DynaLoader is always built and need not be mentioned here.
15225
15226 EOM
15227         case "$static_ext" in
15228         '') dflt="$avail_ext" ;;
15229         *)      dflt="$static_ext"
15230                 # Perhaps we are reusing an old out-of-date config.sh.
15231                 case "$hint" in
15232                 previous)
15233                         if test X"$static_ext" != X"$avail_ext"; then
15234                                 $cat <<EOM
15235 NOTICE:  Your previous config.sh list may be incorrect. 
15236 The extensions now available to you are 
15237         ${avail_ext}
15238 but the default list from your previous config.sh is
15239         ${static_ext} 
15240
15241 EOM
15242                         fi
15243                         ;;
15244                 esac
15245                 ;;
15246         esac
15247         : Exclude those that are not xs extensions
15248         case "$dflt" in
15249         '')     dflt=none;;
15250         esac
15251         rp="What extensions do you wish to include?"
15252         . ./myread
15253         case "$ans" in
15254         none) static_ext=' ' ;;
15255         *) static_ext="$ans" ;;
15256         esac
15257         ;;
15258 esac
15259
15260 set X $dynamic_ext $static_ext $nonxs_ext
15261 shift
15262 extensions="$*"
15263
15264 : Remove build directory name from cppstdin so it can be used from
15265 : either the present location or the final installed location.
15266 echo " "
15267 : Get out of the UU directory to get correct path name.
15268 cd ..
15269 case "$cppstdin" in
15270 `pwd`/cppstdin)
15271         echo "Stripping down cppstdin path name"
15272         cppstdin=cppstdin
15273         ;;
15274 esac
15275 cd UU
15276
15277 : end of configuration questions
15278 echo " "
15279 echo "End of configuration questions."
15280 echo " "
15281
15282 : back to where it started
15283 if test -d ../UU; then
15284         cd ..
15285 fi
15286
15287 : configuration may be patched via a 'config.over' file
15288 if $test -f config.over; then
15289         echo " "
15290         dflt=y
15291         rp='I see a config.over file.  Do you wish to load it?'
15292         . UU/myread
15293         case "$ans" in
15294         n*) echo "OK, I'll ignore it.";;
15295         *)      . ./config.over
15296                 echo "Configuration override changes have been loaded."
15297                 ;;
15298         esac
15299 fi
15300
15301 : in case they want portability, strip down executable paths
15302 case "$d_portable" in
15303 "$define")
15304         echo " "
15305         echo "Stripping down executable paths..." >&4
15306         for file in $loclist $trylist; do
15307                 eval temp=\$$file
15308                 eval $file=`basename $temp`
15309         done
15310         ;;
15311 esac
15312
15313 : create config.sh file
15314 echo " "
15315 echo "Creating config.sh..." >&4
15316 $spitshell <<EOT >config.sh
15317 $startsh
15318 #
15319 # This file was produced by running the Configure script. It holds all the
15320 # definitions figured out by Configure. Should you modify one of these values,
15321 # do not forget to propagate your changes by running "Configure -der". You may
15322 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15323 #
15324
15325 # Package name      : $package
15326 # Source directory  : $src
15327 # Configuration time: $cf_time
15328 # Configured by     : $cf_by
15329 # Target system     : $myuname
15330
15331 Author='$Author'
15332 Date='$Date'
15333 Header='$Header'
15334 Id='$Id'
15335 Locker='$Locker'
15336 Log='$Log'
15337 Mcc='$Mcc'
15338 RCSfile='$RCSfile'
15339 Revision='$Revision'
15340 Source='$Source'
15341 State='$State'
15342 _a='$_a'
15343 _exe='$_exe'
15344 _o='$_o'
15345 afs='$afs'
15346 alignbytes='$alignbytes'
15347 ansi2knr='$ansi2knr'
15348 aphostname='$aphostname'
15349 api_revision='$api_revision'
15350 api_subversion='$api_subversion'
15351 api_version='$api_version'
15352 api_versionstring='$api_versionstring'
15353 ar='$ar'
15354 archlib='$archlib'
15355 archlibexp='$archlibexp'
15356 archname64='$archname64'
15357 archname='$archname'
15358 archobjs='$archobjs'
15359 awk='$awk'
15360 baserev='$baserev'
15361 bash='$bash'
15362 bin='$bin'
15363 bincompat5005='$bincompat5005'
15364 binexp='$binexp'
15365 bison='$bison'
15366 byacc='$byacc'
15367 byteorder='$byteorder'
15368 c='$c'
15369 castflags='$castflags'
15370 cat='$cat'
15371 cc='$cc'
15372 cccdlflags='$cccdlflags'
15373 ccdlflags='$ccdlflags'
15374 ccflags='$ccflags'
15375 ccflags_uselargefiles='$ccflags_uselargefiles'
15376 ccsymbols='$ccsymbols'
15377 cf_by='$cf_by'
15378 cf_email='$cf_email'
15379 cf_time='$cf_time'
15380 charsize='$charsize'
15381 chgrp='$chgrp'
15382 chmod='$chmod'
15383 chown='$chown'
15384 clocktype='$clocktype'
15385 comm='$comm'
15386 compress='$compress'
15387 contains='$contains'
15388 cp='$cp'
15389 cpio='$cpio'
15390 cpp='$cpp'
15391 cpp_stuff='$cpp_stuff'
15392 cppccsymbols='$cppccsymbols'
15393 cppflags='$cppflags'
15394 cpplast='$cpplast'
15395 cppminus='$cppminus'
15396 cpprun='$cpprun'
15397 cppstdin='$cppstdin'
15398 cppsymbols='$cppsymbols'
15399 crosscompile='$crosscompile'
15400 cryptlib='$cryptlib'
15401 csh='$csh'
15402 d_Gconvert='$d_Gconvert'
15403 d_PRIEldbl='$d_PRIEldbl'
15404 d_PRIFldbl='$d_PRIFldbl'
15405 d_PRIGldbl='$d_PRIGldbl'
15406 d_PRIX64='$d_PRIX64'
15407 d_PRId64='$d_PRId64'
15408 d_PRIeldbl='$d_PRIeldbl'
15409 d_PRIfldbl='$d_PRIfldbl'
15410 d_PRIgldbl='$d_PRIgldbl'
15411 d_PRIi64='$d_PRIi64'
15412 d_PRIo64='$d_PRIo64'
15413 d_PRIu64='$d_PRIu64'
15414 d_PRIx64='$d_PRIx64'
15415 d_access='$d_access'
15416 d_accessx='$d_accessx'
15417 d_alarm='$d_alarm'
15418 d_archlib='$d_archlib'
15419 d_atolf='$d_atolf'
15420 d_atoll='$d_atoll'
15421 d_attribut='$d_attribut'
15422 d_bcmp='$d_bcmp'
15423 d_bcopy='$d_bcopy'
15424 d_bincompat5005='$d_bincompat5005'
15425 d_bsd='$d_bsd'
15426 d_bsdgetpgrp='$d_bsdgetpgrp'
15427 d_bsdsetpgrp='$d_bsdsetpgrp'
15428 d_bzero='$d_bzero'
15429 d_casti32='$d_casti32'
15430 d_castneg='$d_castneg'
15431 d_charvspr='$d_charvspr'
15432 d_chown='$d_chown'
15433 d_chroot='$d_chroot'
15434 d_chsize='$d_chsize'
15435 d_closedir='$d_closedir'
15436 d_const='$d_const'
15437 d_crypt='$d_crypt'
15438 d_csh='$d_csh'
15439 d_cuserid='$d_cuserid'
15440 d_dbl_dig='$d_dbl_dig'
15441 d_difftime='$d_difftime'
15442 d_dirnamlen='$d_dirnamlen'
15443 d_dlerror='$d_dlerror'
15444 d_dlopen='$d_dlopen'
15445 d_dlsymun='$d_dlsymun'
15446 d_dosuid='$d_dosuid'
15447 d_drand48proto='$d_drand48proto'
15448 d_dup2='$d_dup2'
15449 d_eaccess='$d_eaccess'
15450 d_endgrent='$d_endgrent'
15451 d_endhent='$d_endhent'
15452 d_endnent='$d_endnent'
15453 d_endpent='$d_endpent'
15454 d_endpwent='$d_endpwent'
15455 d_endsent='$d_endsent'
15456 d_eofnblk='$d_eofnblk'
15457 d_eunice='$d_eunice'
15458 d_fchmod='$d_fchmod'
15459 d_fchown='$d_fchown'
15460 d_fcntl='$d_fcntl'
15461 d_fd_macros='$d_fd_macros'
15462 d_fd_set='$d_fd_set'
15463 d_fds_bits='$d_fds_bits'
15464 d_fgetpos='$d_fgetpos'
15465 d_flexfnam='$d_flexfnam'
15466 d_flock='$d_flock'
15467 d_fork='$d_fork'
15468 d_fpathconf='$d_fpathconf'
15469 d_fpos64_t='$d_fpos64_t'
15470 d_frexpl='$d_frexpl'
15471 d_fs_data_s='$d_fs_data_s'
15472 d_fseeko='$d_fseeko'
15473 d_fsetpos='$d_fsetpos'
15474 d_fstatfs='$d_fstatfs'
15475 d_fstatvfs='$d_fstatvfs'
15476 d_ftello='$d_ftello'
15477 d_ftime='$d_ftime'
15478 d_getcwd='$d_getcwd'
15479 d_getespwnam='$d_getespwnam'
15480 d_getfsstat='$d_getfsstat'
15481 d_getgrent='$d_getgrent'
15482 d_getgrps='$d_getgrps'
15483 d_gethbyaddr='$d_gethbyaddr'
15484 d_gethbyname='$d_gethbyname'
15485 d_gethent='$d_gethent'
15486 d_gethname='$d_gethname'
15487 d_gethostprotos='$d_gethostprotos'
15488 d_getlogin='$d_getlogin'
15489 d_getmnt='$d_getmnt'
15490 d_getmntent='$d_getmntent'
15491 d_getnbyaddr='$d_getnbyaddr'
15492 d_getnbyname='$d_getnbyname'
15493 d_getnent='$d_getnent'
15494 d_getnetprotos='$d_getnetprotos'
15495 d_getpbyname='$d_getpbyname'
15496 d_getpbynumber='$d_getpbynumber'
15497 d_getpent='$d_getpent'
15498 d_getpgid='$d_getpgid'
15499 d_getpgrp2='$d_getpgrp2'
15500 d_getpgrp='$d_getpgrp'
15501 d_getppid='$d_getppid'
15502 d_getprior='$d_getprior'
15503 d_getprotoprotos='$d_getprotoprotos'
15504 d_getprpwnam='$d_getprpwnam'
15505 d_getpwent='$d_getpwent'
15506 d_getsbyname='$d_getsbyname'
15507 d_getsbyport='$d_getsbyport'
15508 d_getsent='$d_getsent'
15509 d_getservprotos='$d_getservprotos'
15510 d_getspnam='$d_getspnam'
15511 d_gettimeod='$d_gettimeod'
15512 d_gnulibc='$d_gnulibc'
15513 d_grpasswd='$d_grpasswd'
15514 d_hasmntopt='$d_hasmntopt'
15515 d_htonl='$d_htonl'
15516 d_iconv='$d_iconv'
15517 d_index='$d_index'
15518 d_inetaton='$d_inetaton'
15519 d_int64_t='$d_int64_t'
15520 d_isascii='$d_isascii'
15521 d_isnan='$d_isnan'
15522 d_isnanl='$d_isnanl'
15523 d_killpg='$d_killpg'
15524 d_lchown='$d_lchown'
15525 d_ldbl_dig='$d_ldbl_dig'
15526 d_link='$d_link'
15527 d_locconv='$d_locconv'
15528 d_lockf='$d_lockf'
15529 d_longdbl='$d_longdbl'
15530 d_longlong='$d_longlong'
15531 d_lseekproto='$d_lseekproto'
15532 d_lstat='$d_lstat'
15533 d_madvise='$d_madvise'
15534 d_mblen='$d_mblen'
15535 d_mbstowcs='$d_mbstowcs'
15536 d_mbtowc='$d_mbtowc'
15537 d_memchr='$d_memchr'
15538 d_memcmp='$d_memcmp'
15539 d_memcpy='$d_memcpy'
15540 d_memmove='$d_memmove'
15541 d_memset='$d_memset'
15542 d_mkdir='$d_mkdir'
15543 d_mkdtemp='$d_mkdtemp'
15544 d_mkfifo='$d_mkfifo'
15545 d_mkstemp='$d_mkstemp'
15546 d_mkstemps='$d_mkstemps'
15547 d_mktime='$d_mktime'
15548 d_mmap='$d_mmap'
15549 d_modfl='$d_modfl'
15550 d_mprotect='$d_mprotect'
15551 d_msg='$d_msg'
15552 d_msg_ctrunc='$d_msg_ctrunc'
15553 d_msg_dontroute='$d_msg_dontroute'
15554 d_msg_oob='$d_msg_oob'
15555 d_msg_peek='$d_msg_peek'
15556 d_msg_proxy='$d_msg_proxy'
15557 d_msgctl='$d_msgctl'
15558 d_msgget='$d_msgget'
15559 d_msgrcv='$d_msgrcv'
15560 d_msgsnd='$d_msgsnd'
15561 d_msync='$d_msync'
15562 d_munmap='$d_munmap'
15563 d_mymalloc='$d_mymalloc'
15564 d_nice='$d_nice'
15565 d_nv_preserves_uv='$d_nv_preserves_uv'
15566 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15567 d_off64_t='$d_off64_t'
15568 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15569 d_oldpthreads='$d_oldpthreads'
15570 d_oldsock='$d_oldsock'
15571 d_open3='$d_open3'
15572 d_pathconf='$d_pathconf'
15573 d_pause='$d_pause'
15574 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15575 d_phostname='$d_phostname'
15576 d_pipe='$d_pipe'
15577 d_poll='$d_poll'
15578 d_portable='$d_portable'
15579 d_pthread_yield='$d_pthread_yield'
15580 d_pwage='$d_pwage'
15581 d_pwchange='$d_pwchange'
15582 d_pwclass='$d_pwclass'
15583 d_pwcomment='$d_pwcomment'
15584 d_pwexpire='$d_pwexpire'
15585 d_pwgecos='$d_pwgecos'
15586 d_pwpasswd='$d_pwpasswd'
15587 d_pwquota='$d_pwquota'
15588 d_qgcvt='$d_qgcvt'
15589 d_quad='$d_quad'
15590 d_readdir='$d_readdir'
15591 d_readlink='$d_readlink'
15592 d_rename='$d_rename'
15593 d_rewinddir='$d_rewinddir'
15594 d_rmdir='$d_rmdir'
15595 d_safebcpy='$d_safebcpy'
15596 d_safemcpy='$d_safemcpy'
15597 d_sanemcmp='$d_sanemcmp'
15598 d_sched_yield='$d_sched_yield'
15599 d_scm_rights='$d_scm_rights'
15600 d_seekdir='$d_seekdir'
15601 d_select='$d_select'
15602 d_sem='$d_sem'
15603 d_semctl='$d_semctl'
15604 d_semctl_semid_ds='$d_semctl_semid_ds'
15605 d_semctl_semun='$d_semctl_semun'
15606 d_semget='$d_semget'
15607 d_semop='$d_semop'
15608 d_setegid='$d_setegid'
15609 d_seteuid='$d_seteuid'
15610 d_setgrent='$d_setgrent'
15611 d_setgrps='$d_setgrps'
15612 d_sethent='$d_sethent'
15613 d_setlinebuf='$d_setlinebuf'
15614 d_setlocale='$d_setlocale'
15615 d_setnent='$d_setnent'
15616 d_setpent='$d_setpent'
15617 d_setpgid='$d_setpgid'
15618 d_setpgrp2='$d_setpgrp2'
15619 d_setpgrp='$d_setpgrp'
15620 d_setprior='$d_setprior'
15621 d_setproctitle='$d_setproctitle'
15622 d_setpwent='$d_setpwent'
15623 d_setregid='$d_setregid'
15624 d_setresgid='$d_setresgid'
15625 d_setresuid='$d_setresuid'
15626 d_setreuid='$d_setreuid'
15627 d_setrgid='$d_setrgid'
15628 d_setruid='$d_setruid'
15629 d_setsent='$d_setsent'
15630 d_setsid='$d_setsid'
15631 d_setvbuf='$d_setvbuf'
15632 d_sfio='$d_sfio'
15633 d_shm='$d_shm'
15634 d_shmat='$d_shmat'
15635 d_shmatprototype='$d_shmatprototype'
15636 d_shmctl='$d_shmctl'
15637 d_shmdt='$d_shmdt'
15638 d_shmget='$d_shmget'
15639 d_sigaction='$d_sigaction'
15640 d_sigsetjmp='$d_sigsetjmp'
15641 d_socket='$d_socket'
15642 d_socklen_t='$d_socklen_t'
15643 d_sockpair='$d_sockpair'
15644 d_sqrtl='$d_sqrtl'
15645 d_statblks='$d_statblks'
15646 d_statfs_f_flags='$d_statfs_f_flags'
15647 d_statfs_s='$d_statfs_s'
15648 d_statvfs='$d_statvfs'
15649 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15650 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15651 d_stdio_stream_array='$d_stdio_stream_array'
15652 d_stdiobase='$d_stdiobase'
15653 d_stdstdio='$d_stdstdio'
15654 d_strchr='$d_strchr'
15655 d_strcoll='$d_strcoll'
15656 d_strctcpy='$d_strctcpy'
15657 d_strerrm='$d_strerrm'
15658 d_strerror='$d_strerror'
15659 d_strtod='$d_strtod'
15660 d_strtol='$d_strtol'
15661 d_strtold='$d_strtold'
15662 d_strtoll='$d_strtoll'
15663 d_strtoul='$d_strtoul'
15664 d_strtoull='$d_strtoull'
15665 d_strtouq='$d_strtouq'
15666 d_strxfrm='$d_strxfrm'
15667 d_suidsafe='$d_suidsafe'
15668 d_symlink='$d_symlink'
15669 d_syscall='$d_syscall'
15670 d_sysconf='$d_sysconf'
15671 d_sysernlst='$d_sysernlst'
15672 d_syserrlst='$d_syserrlst'
15673 d_system='$d_system'
15674 d_tcgetpgrp='$d_tcgetpgrp'
15675 d_tcsetpgrp='$d_tcsetpgrp'
15676 d_telldir='$d_telldir'
15677 d_telldirproto='$d_telldirproto'
15678 d_time='$d_time'
15679 d_times='$d_times'
15680 d_truncate='$d_truncate'
15681 d_tzname='$d_tzname'
15682 d_umask='$d_umask'
15683 d_uname='$d_uname'
15684 d_union_semun='$d_union_semun'
15685 d_ustat='$d_ustat'
15686 d_vendorarch='$d_vendorarch'
15687 d_vendorbin='$d_vendorbin'
15688 d_vendorlib='$d_vendorlib'
15689 d_vfork='$d_vfork'
15690 d_void_closedir='$d_void_closedir'
15691 d_voidsig='$d_voidsig'
15692 d_voidtty='$d_voidtty'
15693 d_volatile='$d_volatile'
15694 d_vprintf='$d_vprintf'
15695 d_wait4='$d_wait4'
15696 d_waitpid='$d_waitpid'
15697 d_wcstombs='$d_wcstombs'
15698 d_wctomb='$d_wctomb'
15699 d_xenix='$d_xenix'
15700 date='$date'
15701 db_hashtype='$db_hashtype'
15702 db_prefixtype='$db_prefixtype'
15703 defvoidused='$defvoidused'
15704 direntrytype='$direntrytype'
15705 dlext='$dlext'
15706 dlsrc='$dlsrc'
15707 doublesize='$doublesize'
15708 drand01='$drand01'
15709 dynamic_ext='$dynamic_ext'
15710 eagain='$eagain'
15711 ebcdic='$ebcdic'
15712 echo='$echo'
15713 egrep='$egrep'
15714 emacs='$emacs'
15715 eunicefix='$eunicefix'
15716 exe_ext='$exe_ext'
15717 expr='$expr'
15718 extensions='$extensions'
15719 fflushNULL='$fflushNULL'
15720 fflushall='$fflushall'
15721 find='$find'
15722 firstmakefile='$firstmakefile'
15723 flex='$flex'
15724 fpossize='$fpossize'
15725 fpostype='$fpostype'
15726 freetype='$freetype'
15727 full_ar='$full_ar'
15728 full_csh='$full_csh'
15729 full_sed='$full_sed'
15730 gccosandvers='$gccosandvers'
15731 gccversion='$gccversion'
15732 gidformat='$gidformat'
15733 gidsign='$gidsign'
15734 gidsize='$gidsize'
15735 gidtype='$gidtype'
15736 glibpth='$glibpth'
15737 grep='$grep'
15738 groupcat='$groupcat'
15739 groupstype='$groupstype'
15740 gzip='$gzip'
15741 h_fcntl='$h_fcntl'
15742 h_sysfile='$h_sysfile'
15743 hint='$hint'
15744 hostcat='$hostcat'
15745 huge='$huge'
15746 i16size='$i16size'
15747 i16type='$i16type'
15748 i32size='$i32size'
15749 i32type='$i32type'
15750 i64size='$i64size'
15751 i64type='$i64type'
15752 i8size='$i8size'
15753 i8type='$i8type'
15754 i_arpainet='$i_arpainet'
15755 i_bsdioctl='$i_bsdioctl'
15756 i_db='$i_db'
15757 i_dbm='$i_dbm'
15758 i_dirent='$i_dirent'
15759 i_dld='$i_dld'
15760 i_dlfcn='$i_dlfcn'
15761 i_fcntl='$i_fcntl'
15762 i_float='$i_float'
15763 i_gdbm='$i_gdbm'
15764 i_grp='$i_grp'
15765 i_iconv='$i_iconv'
15766 i_ieeefp='$i_ieeefp'
15767 i_inttypes='$i_inttypes'
15768 i_libutil='$i_libutil'
15769 i_limits='$i_limits'
15770 i_locale='$i_locale'
15771 i_machcthr='$i_machcthr'
15772 i_malloc='$i_malloc'
15773 i_math='$i_math'
15774 i_memory='$i_memory'
15775 i_mntent='$i_mntent'
15776 i_ndbm='$i_ndbm'
15777 i_netdb='$i_netdb'
15778 i_neterrno='$i_neterrno'
15779 i_netinettcp='$i_netinettcp'
15780 i_niin='$i_niin'
15781 i_poll='$i_poll'
15782 i_prot='$i_prot'
15783 i_pthread='$i_pthread'
15784 i_pwd='$i_pwd'
15785 i_rpcsvcdbm='$i_rpcsvcdbm'
15786 i_sfio='$i_sfio'
15787 i_sgtty='$i_sgtty'
15788 i_shadow='$i_shadow'
15789 i_socks='$i_socks'
15790 i_stdarg='$i_stdarg'
15791 i_stddef='$i_stddef'
15792 i_stdlib='$i_stdlib'
15793 i_string='$i_string'
15794 i_sunmath='$i_sunmath'
15795 i_sysaccess='$i_sysaccess'
15796 i_sysdir='$i_sysdir'
15797 i_sysfile='$i_sysfile'
15798 i_sysfilio='$i_sysfilio'
15799 i_sysin='$i_sysin'
15800 i_sysioctl='$i_sysioctl'
15801 i_syslog='$i_syslog'
15802 i_sysmman='$i_sysmman'
15803 i_sysmode='$i_sysmode'
15804 i_sysmount='$i_sysmount'
15805 i_sysndir='$i_sysndir'
15806 i_sysparam='$i_sysparam'
15807 i_sysresrc='$i_sysresrc'
15808 i_syssecrt='$i_syssecrt'
15809 i_sysselct='$i_sysselct'
15810 i_syssockio='$i_syssockio'
15811 i_sysstat='$i_sysstat'
15812 i_sysstatfs='$i_sysstatfs'
15813 i_sysstatvfs='$i_sysstatvfs'
15814 i_systime='$i_systime'
15815 i_systimek='$i_systimek'
15816 i_systimes='$i_systimes'
15817 i_systypes='$i_systypes'
15818 i_sysuio='$i_sysuio'
15819 i_sysun='$i_sysun'
15820 i_sysutsname='$i_sysutsname'
15821 i_sysvfs='$i_sysvfs'
15822 i_syswait='$i_syswait'
15823 i_termio='$i_termio'
15824 i_termios='$i_termios'
15825 i_time='$i_time'
15826 i_unistd='$i_unistd'
15827 i_ustat='$i_ustat'
15828 i_utime='$i_utime'
15829 i_values='$i_values'
15830 i_varargs='$i_varargs'
15831 i_varhdr='$i_varhdr'
15832 i_vfork='$i_vfork'
15833 ignore_versioned_solibs='$ignore_versioned_solibs'
15834 inc_version_list='$inc_version_list'
15835 inc_version_list_init='$inc_version_list_init'
15836 incpath='$incpath'
15837 inews='$inews'
15838 installarchlib='$installarchlib'
15839 installbin='$installbin'
15840 installman1dir='$installman1dir'
15841 installman3dir='$installman3dir'
15842 installprefix='$installprefix'
15843 installprefixexp='$installprefixexp'
15844 installprivlib='$installprivlib'
15845 installscript='$installscript'
15846 installsitearch='$installsitearch'
15847 installsitebin='$installsitebin'
15848 installsitelib='$installsitelib'
15849 installstyle='$installstyle'
15850 installusrbinperl='$installusrbinperl'
15851 installvendorarch='$installvendorarch'
15852 installvendorbin='$installvendorbin'
15853 installvendorlib='$installvendorlib'
15854 intsize='$intsize'
15855 ivdformat='$ivdformat'
15856 ivsize='$ivsize'
15857 ivtype='$ivtype'
15858 known_extensions='$known_extensions'
15859 ksh='$ksh'
15860 large='$large'
15861 ld='$ld'
15862 lddlflags='$lddlflags'
15863 ldflags='$ldflags'
15864 ldflags_uselargefiles='$ldflags_uselargefiles'
15865 ldlibpthname='$ldlibpthname'
15866 less='$less'
15867 lib_ext='$lib_ext'
15868 libc='$libc'
15869 libperl='$libperl'
15870 libpth='$libpth'
15871 libs='$libs'
15872 libsdirs='$libsdirs'
15873 libsfiles='$libsfiles'
15874 libsfound='$libsfound'
15875 libspath='$libspath'
15876 libswanted='$libswanted'
15877 libswanted_uselargefiles='$libswanted_uselargefiles'
15878 line='$line'
15879 lint='$lint'
15880 lkflags='$lkflags'
15881 ln='$ln'
15882 lns='$lns'
15883 locincpth='$locincpth'
15884 loclibpth='$loclibpth'
15885 longdblsize='$longdblsize'
15886 longlongsize='$longlongsize'
15887 longsize='$longsize'
15888 lp='$lp'
15889 lpr='$lpr'
15890 ls='$ls'
15891 lseeksize='$lseeksize'
15892 lseektype='$lseektype'
15893 mail='$mail'
15894 mailx='$mailx'
15895 make='$make'
15896 make_set_make='$make_set_make'
15897 mallocobj='$mallocobj'
15898 mallocsrc='$mallocsrc'
15899 malloctype='$malloctype'
15900 man1dir='$man1dir'
15901 man1direxp='$man1direxp'
15902 man1ext='$man1ext'
15903 man3dir='$man3dir'
15904 man3direxp='$man3direxp'
15905 man3ext='$man3ext'
15906 medium='$medium'
15907 mips_type='$mips_type'
15908 mkdir='$mkdir'
15909 mmaptype='$mmaptype'
15910 models='$models'
15911 modetype='$modetype'
15912 more='$more'
15913 multiarch='$multiarch'
15914 mv='$mv'
15915 myarchname='$myarchname'
15916 mydomain='$mydomain'
15917 myhostname='$myhostname'
15918 myuname='$myuname'
15919 n='$n'
15920 netdb_hlen_type='$netdb_hlen_type'
15921 netdb_host_type='$netdb_host_type'
15922 netdb_name_type='$netdb_name_type'
15923 netdb_net_type='$netdb_net_type'
15924 nm='$nm'
15925 nm_opt='$nm_opt'
15926 nm_so_opt='$nm_so_opt'
15927 nonxs_ext='$nonxs_ext'
15928 nroff='$nroff'
15929 nvEformat='$nvEformat'
15930 nvFformat='$nvFformat'
15931 nvGformat='$nvGformat'
15932 nveformat='$nveformat'
15933 nvfformat='$nvfformat'
15934 nvgformat='$nvgformat'
15935 nvsize='$nvsize'
15936 nvtype='$nvtype'
15937 o_nonblock='$o_nonblock'
15938 obj_ext='$obj_ext'
15939 old_pthread_create_joinable='$old_pthread_create_joinable'
15940 optimize='$optimize'
15941 orderlib='$orderlib'
15942 osname='$osname'
15943 osvers='$osvers'
15944 otherlibdirs='$otherlibdirs'
15945 package='$package'
15946 pager='$pager'
15947 passcat='$passcat'
15948 patchlevel='$patchlevel'
15949 path_sep='$path_sep'
15950 perl5='$perl5'
15951 perl='$perl'
15952 perladmin='$perladmin'
15953 perlpath='$perlpath'
15954 pg='$pg'
15955 phostname='$phostname'
15956 pidtype='$pidtype'
15957 plibpth='$plibpth'
15958 pm_apiversion='$pm_apiversion'
15959 pmake='$pmake'
15960 pr='$pr'
15961 prefix='$prefix'
15962 prefixexp='$prefixexp'
15963 privlib='$privlib'
15964 privlibexp='$privlibexp'
15965 prototype='$prototype'
15966 ptrsize='$ptrsize'
15967 quadkind='$quadkind'
15968 quadtype='$quadtype'
15969 randbits='$randbits'
15970 randfunc='$randfunc'
15971 randseedtype='$randseedtype'
15972 ranlib='$ranlib'
15973 rd_nodata='$rd_nodata'
15974 revision='$revision'
15975 rm='$rm'
15976 rmail='$rmail'
15977 runnm='$runnm'
15978 sPRIEldbl='$sPRIEldbl'
15979 sPRIFldbl='$sPRIFldbl'
15980 sPRIGldbl='$sPRIGldbl'
15981 sPRIX64='$sPRIX64'
15982 sPRId64='$sPRId64'
15983 sPRIeldbl='$sPRIeldbl'
15984 sPRIfldbl='$sPRIfldbl'
15985 sPRIgldbl='$sPRIgldbl'
15986 sPRIi64='$sPRIi64'
15987 sPRIo64='$sPRIo64'
15988 sPRIu64='$sPRIu64'
15989 sPRIx64='$sPRIx64'
15990 sched_yield='$sched_yield'
15991 scriptdir='$scriptdir'
15992 scriptdirexp='$scriptdirexp'
15993 sed='$sed'
15994 seedfunc='$seedfunc'
15995 selectminbits='$selectminbits'
15996 selecttype='$selecttype'
15997 sendmail='$sendmail'
15998 sh='$sh'
15999 shar='$shar'
16000 sharpbang='$sharpbang'
16001 shmattype='$shmattype'
16002 shortsize='$shortsize'
16003 shrpenv='$shrpenv'
16004 shsharp='$shsharp'
16005 sig_count='$sig_count'
16006 sig_name='$sig_name'
16007 sig_name_init='$sig_name_init'
16008 sig_num='$sig_num'
16009 sig_num_init='$sig_num_init'
16010 signal_t='$signal_t'
16011 sitearch='$sitearch'
16012 sitearchexp='$sitearchexp'
16013 sitebin='$sitebin'
16014 sitebinexp='$sitebinexp'
16015 sitelib='$sitelib'
16016 sitelib_stem='$sitelib_stem'
16017 sitelibexp='$sitelibexp'
16018 siteprefix='$siteprefix'
16019 siteprefixexp='$siteprefixexp'
16020 sizesize='$sizesize'
16021 sizetype='$sizetype'
16022 sleep='$sleep'
16023 smail='$smail'
16024 small='$small'
16025 so='$so'
16026 sockethdr='$sockethdr'
16027 socketlib='$socketlib'
16028 socksizetype='$socksizetype'
16029 sort='$sort'
16030 spackage='$spackage'
16031 spitshell='$spitshell'
16032 split='$split'
16033 src='$src'
16034 ssizetype='$ssizetype'
16035 startperl='$startperl'
16036 startsh='$startsh'
16037 static_ext='$static_ext'
16038 stdchar='$stdchar'
16039 stdio_base='$stdio_base'
16040 stdio_bufsiz='$stdio_bufsiz'
16041 stdio_cnt='$stdio_cnt'
16042 stdio_filbuf='$stdio_filbuf'
16043 stdio_ptr='$stdio_ptr'
16044 stdio_stream_array='$stdio_stream_array'
16045 strings='$strings'
16046 submit='$submit'
16047 subversion='$subversion'
16048 sysman='$sysman'
16049 tail='$tail'
16050 tar='$tar'
16051 tbl='$tbl'
16052 tee='$tee'
16053 test='$test'
16054 timeincl='$timeincl'
16055 timetype='$timetype'
16056 touch='$touch'
16057 tr='$tr'
16058 trnl='$trnl'
16059 troff='$troff'
16060 u16size='$u16size'
16061 u16type='$u16type'
16062 u32size='$u32size'
16063 u32type='$u32type'
16064 u64size='$u64size'
16065 u64type='$u64type'
16066 u8size='$u8size'
16067 u8type='$u8type'
16068 uidformat='$uidformat'
16069 uidsign='$uidsign'
16070 uidsize='$uidsize'
16071 uidtype='$uidtype'
16072 uname='$uname'
16073 uniq='$uniq'
16074 uquadtype='$uquadtype'
16075 use5005threads='$use5005threads'
16076 use64bitall='$use64bitall'
16077 use64bitint='$use64bitint'
16078 usedl='$usedl'
16079 useithreads='$useithreads'
16080 uselargefiles='$uselargefiles'
16081 uselongdouble='$uselongdouble'
16082 usemorebits='$usemorebits'
16083 usemultiplicity='$usemultiplicity'
16084 usemymalloc='$usemymalloc'
16085 usenm='$usenm'
16086 useopcode='$useopcode'
16087 useperlio='$useperlio'
16088 useposix='$useposix'
16089 usesfio='$usesfio'
16090 useshrplib='$useshrplib'
16091 usesocks='$usesocks'
16092 usethreads='$usethreads'
16093 usevendorprefix='$usevendorprefix'
16094 usevfork='$usevfork'
16095 usrinc='$usrinc'
16096 uuname='$uuname'
16097 uvXformat='$uvXformat'
16098 uvoformat='$uvoformat'
16099 uvsize='$uvsize'
16100 uvtype='$uvtype'
16101 uvuformat='$uvuformat'
16102 uvxformat='$uvxformat'
16103 vendorarch='$vendorarch'
16104 vendorarchexp='$vendorarchexp'
16105 vendorbin='$vendorbin'
16106 vendorbinexp='$vendorbinexp'
16107 vendorlib='$vendorlib'
16108 vendorlib_stem='$vendorlib_stem'
16109 vendorlibexp='$vendorlibexp'
16110 vendorprefix='$vendorprefix'
16111 vendorprefixexp='$vendorprefixexp'
16112 version='$version'
16113 vi='$vi'
16114 voidflags='$voidflags'
16115 xlibpth='$xlibpth'
16116 xs_apiversion='$xs_apiversion'
16117 zcat='$zcat'
16118 zip='$zip'
16119 EOT
16120
16121 : Add in command line options if available
16122 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16123
16124 : add special variables
16125 $test -f $src/patchlevel.h && \
16126 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16127 echo "CONFIGDOTSH=true" >>config.sh
16128
16129 : propagate old symbols
16130 if $test -f UU/config.sh; then
16131         <UU/config.sh sort | uniq >UU/oldconfig.sh
16132         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16133         sort | uniq -u >UU/oldsyms
16134         set X `cat UU/oldsyms`
16135         shift
16136         case $# in
16137         0) ;;
16138         *)
16139                 cat <<EOM
16140 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16141 EOM
16142                 echo "# Variables propagated from previous config.sh file." >>config.sh
16143                 for sym in `cat UU/oldsyms`; do
16144                         echo "    Propagating $hint variable "'$'"$sym..."
16145                         eval 'tmp="$'"${sym}"'"'
16146                         echo "$tmp" | \
16147                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16148                 done
16149                 ;;
16150         esac
16151 fi
16152
16153 : Finish up by extracting the .SH files
16154 case "$alldone" in
16155 exit)
16156         $rm -rf UU
16157         echo "Done."
16158         exit 0
16159         ;;
16160 cont)
16161         ;;
16162 '')
16163         dflt=''
16164         nostick=true
16165         $cat <<EOM
16166
16167 If you'd like to make any changes to the config.sh file before I begin
16168 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16169
16170 EOM
16171         rp="Press return or use a shell escape to edit config.sh:"
16172         . UU/myread
16173         nostick=''
16174         case "$ans" in
16175         '') ;;
16176         *) : in case they cannot read
16177                 sh 1>&4 -c "$ans";;
16178         esac
16179         ;;
16180 esac
16181
16182 : if this fails, just run all the .SH files by hand
16183 . ./config.sh
16184
16185 echo " "
16186 exec 1>&4
16187 . ./UU/extract
16188
16189 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16190         dflt=y
16191         case "$silent" in
16192         true) ;;
16193         *)
16194                 $cat <<EOM
16195
16196 Now you need to generate make dependencies by running "$make depend".
16197 You might prefer to run it in background: "$make depend > makedepend.out &"
16198 It can take a while, so you might not want to run it right now.
16199
16200 EOM
16201                 ;;
16202         esac
16203         rp="Run $make depend now?"
16204         . UU/myread
16205         case "$ans" in
16206         y*)
16207                 $make depend && echo "Now you must run a $make."
16208                 ;;
16209         *)
16210                 echo "You must run '$make depend' then '$make'."
16211                 ;;
16212         esac
16213 elif test -f [Mm]akefile; then
16214         echo " "
16215         echo "Now you must run a $make."
16216 else
16217         echo "Done."
16218 fi
16219
16220 if $test -f Policy.sh; then
16221     $cat <<EOM
16222
16223 If you compile $package on a different machine or from a different object
16224 directory, copy the Policy.sh file from this object directory to the
16225 new one before you run Configure -- this will help you with most of
16226 the policy defaults.
16227
16228 EOM
16229 fi
16230 if $test -f config.msg; then
16231     echo "Hmm.  I also noted the following information while running:"
16232     echo " "
16233     $cat config.msg >&4
16234     $rm -f config.msg
16235 fi
16236 $rm -f kit*isdone ark*isdone
16237 $rm -rf UU
16238
16239 : End of Configure
16240