Document what the backtick returns if the command fails.
[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 Thu Aug 17 22:38:49 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 uvoformat=''
827 uvuformat=''
828 uvxformat=''
829 pidtype=''
830 prefix=''
831 prefixexp=''
832 installprivlib=''
833 privlib=''
834 privlibexp=''
835 prototype=''
836 ptrsize=''
837 d_PRIX64=''
838 d_PRId64=''
839 d_PRIi64=''
840 d_PRIo64=''
841 d_PRIu64=''
842 d_PRIx64=''
843 sPRIX64=''
844 sPRId64=''
845 sPRIi64=''
846 sPRIo64=''
847 sPRIu64=''
848 sPRIx64=''
849 d_quad=''
850 quadkind=''
851 quadtype=''
852 uquadtype=''
853 drand01=''
854 randbits=''
855 randfunc=''
856 randseedtype=''
857 seedfunc=''
858 installscript=''
859 scriptdir=''
860 scriptdirexp=''
861 selectminbits=''
862 selecttype=''
863 sh=''
864 sig_count=''
865 sig_name=''
866 sig_name_init=''
867 sig_num=''
868 sig_num_init=''
869 installsitearch=''
870 sitearch=''
871 sitearchexp=''
872 installsitebin=''
873 sitebin=''
874 sitebinexp=''
875 installsitelib=''
876 sitelib=''
877 sitelib_stem=''
878 sitelibexp=''
879 siteprefix=''
880 siteprefixexp=''
881 sizesize=''
882 sizetype=''
883 so=''
884 socksizetype=''
885 sharpbang=''
886 shsharp=''
887 spitshell=''
888 src=''
889 ssizetype=''
890 startperl=''
891 startsh=''
892 stdchar=''
893 d_stdio_stream_array=''
894 stdio_stream_array=''
895 sysman=''
896 trnl=''
897 uidformat=''
898 uidsign=''
899 uidsize=''
900 uidtype=''
901 archname64=''
902 use64bitall=''
903 use64bitint=''
904 ccflags_uselargefiles=''
905 ldflags_uselargefiles=''
906 libswanted_uselargefiles=''
907 uselargefiles=''
908 uselongdouble=''
909 usemorebits=''
910 usemultiplicity=''
911 nm_opt=''
912 nm_so_opt=''
913 runnm=''
914 usenm=''
915 useperlio=''
916 usesocks=''
917 d_oldpthreads=''
918 use5005threads=''
919 useithreads=''
920 usethreads=''
921 incpath=''
922 mips_type=''
923 usrinc=''
924 d_vendorarch=''
925 installvendorarch=''
926 vendorarch=''
927 vendorarchexp=''
928 d_vendorbin=''
929 installvendorbin=''
930 vendorbin=''
931 vendorbinexp=''
932 d_vendorlib=''
933 installvendorlib=''
934 vendorlib=''
935 vendorlib_stem=''
936 vendorlibexp=''
937 usevendorprefix=''
938 vendorprefix=''
939 vendorprefixexp=''
940 defvoidused=''
941 voidflags=''
942 pm_apiversion=''
943 xs_apiversion=''
944 CONFIG=''
945
946 define='define'
947 undef='undef'
948 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
949 rmlist=''
950
951 : We must find out about Eunice early
952 eunicefix=':'
953 if test -f /etc/unixtovms; then
954         eunicefix=/etc/unixtovms
955 fi
956 if test -f /etc/unixtovms.exe; then
957         eunicefix=/etc/unixtovms.exe
958 fi
959
960 i_whoami=''
961 : set useposix=false in your hint file to disable the POSIX extension.
962 useposix=true
963 : set useopcode=false in your hint file to disable the Opcode extension.
964 useopcode=true
965 : Trailing extension.  Override this in a hint file, if needed.
966 _exe=''
967 : Extra object files, if any, needed on this platform.
968 archobjs=''
969 : Possible local include directories to search.
970 : Set locincpth to "" in a hint file to defeat local include searches.
971 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
972 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
973 :
974 : no include file wanted by default
975 inclwanted=''
976
977 groupstype=''
978 : change the next line if compiling for Xenix/286 on Xenix/386
979 xlibpth='/usr/lib/386 /lib/386'
980 : Possible local library directories to search.
981 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
982 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
983
984 : general looking path for locating libraries
985 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
986 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
987 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
988 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
989 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
990
991 : Private path used by Configure to find libraries.  Its value
992 : is prepended to libpth. This variable takes care of special
993 : machines, like the mips.  Usually, it should be empty.
994 plibpth=''
995
996 : default library list
997 libswanted=''
998 : some systems want to use only the non-versioned libso:s
999 ignore_versioned_solibs=''
1000 ccflags_uselargefiles=''
1001 ldflags_uselargefiles=''
1002 libswanted_uselargefiles=''
1003 : set usemultiplicity on the Configure command line to enable multiplicity.
1004 : set usesocks on the Configure command line to enable socks.
1005 : set usethreads on the Configure command line to enable threads.
1006 : full support for void wanted by default
1007 defvoidused=15
1008
1009 : List of libraries we want.
1010 : If anyone needs -lnet, put it in a hint file.
1011 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1012 libswanted="$libswanted dld ld sun m c cposix posix"
1013 libswanted="$libswanted ndir dir crypt sec"
1014 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1015 : We probably want to search /usr/shlib before most other libraries.
1016 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1017 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1018 glibpth="/usr/shlib $glibpth"
1019 : Do not use vfork unless overridden by a hint file.
1020 usevfork=false
1021
1022 : Find the basic shell for Bourne shell scripts
1023 case "$sh" in
1024 '')
1025         case "$SYSTYPE" in
1026         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1027         *) xxx='/bin/sh';;
1028         esac
1029         if test -f "$xxx"; then
1030                 sh="$xxx"
1031         else
1032                 : Build up a list and do a single loop so we can 'break' out.
1033                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1034                 for xxx in sh bash ksh pdksh ash; do
1035                         for p in $pth; do
1036                                 try="$try ${p}/${xxx}"
1037                         done
1038                 done
1039                 for xxx in $try; do
1040                         if test -f "$xxx"; then
1041                                 sh="$xxx";
1042                                 break
1043                         elif test -f "$xxx.exe"; then
1044                                 sh="$xxx";
1045                                 break
1046                         fi
1047                 done
1048         fi
1049         ;;
1050 esac
1051
1052 case "$sh" in
1053 '')     cat <<EOM >&2
1054 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1055
1056 Usually it's in /bin/sh.  How did you even get this far?
1057 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1058 we'll try to straighten this all out.
1059 EOM
1060         exit 1
1061         ;;
1062 esac
1063
1064 : see if sh knows # comments
1065 if `$sh -c '#' >/dev/null 2>&1`; then
1066         shsharp=true
1067         spitshell=cat
1068         xcat=/bin/cat
1069         test -f $xcat || xcat=/usr/bin/cat
1070         echo "#!$xcat" >try
1071         $eunicefix try
1072         chmod +x try
1073         ./try > today
1074         if test -s today; then
1075                 sharpbang='#!'
1076         else
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                         sharpbang=': use '
1085                 fi
1086         fi
1087 else
1088         echo " "
1089         echo "Your $sh doesn't grok # comments--I will strip them later on."
1090         shsharp=false
1091         cd ..
1092         echo "exec grep -v '^[  ]*#'" >spitshell
1093         chmod +x spitshell
1094         $eunicefix spitshell
1095         spitshell=`pwd`/spitshell
1096         cd UU
1097         echo "I presume that if # doesn't work, #! won't work either!"
1098         sharpbang=': use '
1099 fi
1100 rm -f try today
1101
1102 : figure out how to guarantee sh startup
1103 case "$startsh" in
1104 '') startsh=${sharpbang}${sh} ;;
1105 *)
1106 esac
1107 cat >try <<EOSS
1108 $startsh
1109 set abc
1110 test "$?abc" != 1
1111 EOSS
1112
1113 chmod +x try
1114 $eunicefix try
1115 if ./try; then
1116         : echo "Yup, it does."
1117 else
1118         echo "Hmm... '$startsh' does not guarantee sh startup..."
1119         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1120 fi
1121 rm -f try
1122
1123
1124 : Save command line options in file UU/cmdline.opt for later use in
1125 : generating config.sh.
1126 cat > cmdline.opt <<EOSH
1127 # Configure command line arguments.
1128 config_arg0='$0'
1129 config_args='$*'
1130 config_argc=$#
1131 EOSH
1132 argn=1
1133 for arg in "$@"; do
1134         cat >>cmdline.opt <<EOSH
1135 config_arg$argn='$arg'
1136 EOSH
1137         argn=`expr $argn + 1`
1138 done
1139
1140 : produce awk script to parse command line options
1141 cat >options.awk <<'EOF'
1142 BEGIN {
1143         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1144
1145         len = length(optstr);
1146         for (i = 1; i <= len; i++) {
1147                 c = substr(optstr, i, 1);
1148                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1149                 if (a == ":") {
1150                         arg[c] = 1;
1151                         i++;
1152                 }
1153                 opt[c] = 1;
1154         }
1155 }
1156 {
1157         expect = 0;
1158         str = $0;
1159         if (substr(str, 1, 1) != "-") {
1160                 printf("'%s'\n", str);
1161                 next;
1162         }
1163         len = length($0);
1164         for (i = 2; i <= len; i++) {
1165                 c = substr(str, i, 1);
1166                 if (!opt[c]) {
1167                         printf("-%s\n", substr(str, i));
1168                         next;
1169                 }
1170                 printf("-%s\n", c);
1171                 if (arg[c]) {
1172                         if (i < len)
1173                                 printf("'%s'\n", substr(str, i + 1));
1174                         else
1175                                 expect = 1;
1176                         next;
1177                 }
1178         }
1179 }
1180 END {
1181         if (expect)
1182                 print "?";
1183 }
1184 EOF
1185
1186 : process the command line options
1187 set X `for arg in "$@"; do echo "X$arg"; done |
1188         sed -e s/X// | awk -f options.awk`
1189 eval "set $*"
1190 shift
1191 rm -f options.awk
1192
1193 : set up default values
1194 fastread=''
1195 reuseval=false
1196 config_sh=''
1197 alldone=''
1198 error=''
1199 silent=''
1200 extractsh=''
1201 override=''
1202 knowitall=''
1203 rm -f optdef.sh posthint.sh
1204 cat >optdef.sh <<EOS
1205 $startsh
1206 EOS
1207
1208
1209 : option parsing
1210 while test $# -gt 0; do
1211         case "$1" in
1212         -d) shift; fastread=yes;;
1213         -e) shift; alldone=cont;;
1214         -f)
1215                 shift
1216                 cd ..
1217                 if test -r "$1"; then
1218                         config_sh="$1"
1219                 else
1220                         echo "$me: cannot read config file $1." >&2
1221                         error=true
1222                 fi
1223                 cd UU
1224                 shift;;
1225         -h) shift; error=true;;
1226         -r) shift; reuseval=true;;
1227         -s) shift; silent=true; realsilent=true;;
1228         -E) shift; alldone=exit;;
1229         -K) shift; knowitall=true;;
1230         -O) shift; override=true;;
1231         -S) shift; silent=true; extractsh=true;;
1232         -D)
1233                 shift
1234                 case "$1" in
1235                 *=)
1236                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1237                         echo "$me: ignoring -D $1" >&2
1238                         ;;
1239                 *=*) echo "$1" | \
1240                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1241                 *) echo "$1='define'" >> optdef.sh;;
1242                 esac
1243                 shift
1244                 ;;
1245         -U)
1246                 shift
1247                 case "$1" in
1248                 *=) echo "$1" >> optdef.sh;;
1249                 *=*)
1250                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1251                         echo "$me: ignoring -U $1" >&2
1252                         ;;
1253                 *) echo "$1='undef'" >> optdef.sh;;
1254                 esac
1255                 shift
1256                 ;;
1257         -A)
1258             shift
1259             xxx=''
1260             yyy="$1"
1261             zzz=''
1262             uuu=undef
1263             case "$yyy" in
1264             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1265                  case "$zzz" in
1266                  *:*) zzz='' ;;
1267                  *)   xxx=append
1268                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1269                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1270                  esac
1271                  ;;
1272             esac
1273             case "$xxx" in
1274             '')  case "$yyy" in
1275                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1276                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1277                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1278                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1279                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1280                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1281                  esac
1282                  ;;       
1283             esac
1284             case "$xxx" in
1285             append)
1286                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1287             clear)
1288                 echo "$yyy=''"                  >> posthint.sh ;;
1289             define)
1290                 case "$zzz" in
1291                 '') zzz=define ;;
1292                 esac
1293                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1294             eval)
1295                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1296             prepend)
1297                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1298             undef)
1299                 case "$zzz" in
1300                 '') zzz="$uuu" ;;
1301                 esac
1302                 echo "$yyy=$zzz"                >> posthint.sh ;;
1303             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1304             esac
1305             shift
1306             ;;
1307         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1308             exit 0;;
1309         --) break;;
1310         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1311         *) break;;
1312         esac
1313 done
1314
1315 case "$error" in
1316 true)
1317         cat >&2 <<EOM
1318 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1319                  [-U symbol] [-U symbol=] [-A command:symbol...]
1320   -d : use defaults for all answers.
1321   -e : go on without questioning past the production of config.sh.
1322   -f : specify an alternate default configuration file.
1323   -h : print this help message and exit (with an error status).
1324   -r : reuse C symbols value if possible (skips costly nm extraction).
1325   -s : silent mode, only echoes questions and essential information.
1326   -D : define symbol to have some value:
1327          -D symbol         symbol gets the value 'define'
1328          -D symbol=value   symbol gets the value 'value'
1329   -E : stop at the end of questions, after having produced config.sh.
1330   -K : do not use unless you know what you are doing.
1331   -O : let -D and -U override definitions from loaded configuration file.
1332   -S : perform variable substitutions on all .SH files (can mix with -f)
1333   -U : undefine symbol:
1334          -U symbol    symbol gets the value 'undef'
1335          -U symbol=   symbol gets completely empty
1336   -A : manipulate symbol after the platform specific hints have been applied:
1337          -A symbol=value                append " "value to symbol
1338          -A append:symbol=value         append value to symbol
1339          -A define:symbol=value         define symbol to have value
1340          -A clear:symbol                define symbol to be ''
1341          -A define:symbol               define symbol to be 'define'
1342          -A eval:symbol=value           define symbol to be eval of value
1343          -A prepend:symbol=value        prepend value to symbol
1344          -A undef:symbol                define symbol to be 'undef'
1345          -A undef:symbol=               define symbol to be ''
1346   -V : print version number and exit (with a zero status).
1347 EOM
1348         exit 1
1349         ;;
1350 esac
1351
1352 : Sanity checks
1353 case "$fastread$alldone" in
1354 yescont|yesexit) ;;
1355 *)
1356         case "$extractsh" in
1357         true) ;;
1358         *)
1359                 if test ! -t 0; then
1360                         echo "Say 'sh Configure', not 'sh <Configure'"
1361                         exit 1
1362                 fi
1363                 ;;
1364         esac
1365         ;;
1366 esac
1367
1368 exec 4>&1
1369 case "$silent" in
1370 true) exec 1>/dev/null;;
1371 esac
1372
1373 : run the defines and the undefines, if any, but leave the file out there...
1374 touch optdef.sh
1375 . ./optdef.sh
1376 : create the posthint manipulation script and leave the file out there...
1377 touch posthint.sh
1378
1379 : set package name
1380 package=perl5
1381 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1382 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1383 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1384 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1385 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1386 esac
1387
1388 : Some greps do not return status, grrr.
1389 echo "grimblepritz" >grimble
1390 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1391         contains=contains
1392 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1393         contains=grep
1394 else
1395         contains=contains
1396 fi
1397 rm -f grimble
1398 : the following should work in any shell
1399 case "$contains" in
1400 contains*)
1401         echo " "
1402         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1403         cat >contains <<'EOSS'
1404 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1405 EOSS
1406 chmod +x contains
1407 esac
1408
1409 : Find the path to the source tree
1410 case "$src" in
1411 '') case "$0" in
1412     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1413          case "$src" in
1414          /*)    ;;
1415          *)     src=`cd ../$src && pwd` ;;
1416          esac
1417          ;;
1418     *)   src='.';;
1419     esac;;
1420 esac
1421 case "$src" in
1422 '')     src=/
1423         rsrc=/
1424         ;;
1425 /*) rsrc="$src";;
1426 *) rsrc="../$src";;
1427 esac
1428 if test -f $rsrc/Configure && \
1429         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1430 then
1431    : found it, so we are ok.
1432 else
1433         rsrc=''
1434         for src in . .. ../.. ../../.. ../../../..; do
1435                 if test -f ../$src/Configure && \
1436                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1437                 then
1438                         rsrc=../$src
1439                         break
1440                 fi
1441         done
1442 fi
1443 case "$rsrc" in
1444 '')
1445         cat <<EOM >&4
1446
1447 Sorry, I can't seem to locate the source dir for $package.  Please start
1448 Configure with an explicit path -- i.e. /some/path/Configure.
1449
1450 EOM
1451         exit 1
1452         ;;
1453 ../.)   rsrc='..';;
1454 *)
1455         echo " "
1456         echo "Sources for $package found in \"$src\"." >&4
1457         ;;
1458 esac
1459
1460 : script used to extract .SH files with variable substitutions
1461 cat >extract <<'EOS'
1462 CONFIGDOTSH=true
1463 echo "Doing variable substitutions on .SH files..."
1464 if test -f $src/MANIFEST; then
1465         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1466 else
1467         echo "(Looking for .SH files under the source directory.)"
1468         set x `(cd $src; find . -name "*.SH" -print)`
1469 fi
1470 shift
1471 case $# in
1472 0) set x `(cd $src; echo *.SH)`; shift;;
1473 esac
1474 if test ! -f $src/$1; then
1475         shift
1476 fi
1477 mkdir_p='
1478 name=$1;
1479 create="";
1480 while test $name; do
1481         if test ! -d "$name"; then
1482                 create="$name $create";
1483                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1484                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1485         else
1486                 name="";
1487         fi;
1488 done;
1489 for file in $create; do
1490         mkdir $file;
1491 done
1492 '
1493 for file in $*; do
1494         case "$src" in
1495         ".")
1496                 case "$file" in
1497                 */*)
1498                         dir=`expr X$file : 'X\(.*\)/'`
1499                         file=`expr X$file : 'X.*/\(.*\)'`
1500                         (cd $dir && . ./$file)
1501                         ;;
1502                 *)
1503                         . ./$file
1504                         ;;
1505                 esac
1506                 ;;
1507         *)
1508                 case "$file" in
1509                 */*)
1510                         dir=`expr X$file : 'X\(.*\)/'`
1511                         file=`expr X$file : 'X.*/\(.*\)'`
1512                         (set x $dir; shift; eval $mkdir_p)
1513                         sh <$src/$dir/$file
1514                         ;;
1515                 *)
1516                         sh <$src/$file
1517                         ;;
1518                 esac
1519                 ;;
1520         esac
1521 done
1522 if test -f $src/config_h.SH; then
1523         if test ! -f config.h; then
1524         : oops, they left it out of MANIFEST, probably, so do it anyway.
1525         . $src/config_h.SH
1526         fi
1527 fi
1528 EOS
1529
1530 : extract files and exit if asked to do so
1531 case "$extractsh" in
1532 true)
1533         case "$realsilent" in
1534         true) ;;
1535         *) exec 1>&4;;
1536         esac
1537         case "$config_sh" in
1538         '') config_sh='config.sh';;
1539         esac
1540         echo " "
1541         echo "Fetching answers from $config_sh..."
1542         cd ..
1543         . $config_sh
1544         test "$override" && . ./optdef.sh
1545         echo " "
1546         . UU/extract
1547         rm -rf UU
1548         echo "Done."
1549         exit 0
1550         ;;
1551 esac
1552
1553 : Eunice requires " " instead of "", can you believe it
1554 echo " "
1555 : Here we go...
1556 echo "Beginning of configuration questions for $package."
1557
1558 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1559
1560 : first determine how to suppress newline on echo command
1561 echo " "
1562 echo "Checking echo to see how to suppress newlines..."
1563 (echo "hi there\c" ; echo " ") >.echotmp
1564 if $contains c .echotmp >/dev/null 2>&1 ; then
1565         echo "...using -n."
1566         n='-n'
1567         c=''
1568 else
1569         cat <<'EOM'
1570 ...using \c
1571 EOM
1572         n=''
1573         c='\c'
1574 fi
1575 echo $n "The star should be here-->$c"
1576 echo '*'
1577 rm -f .echotmp
1578
1579 : Now test for existence of everything in MANIFEST
1580 echo " "
1581 if test -f $rsrc/MANIFEST; then
1582         echo "First let's make sure your kit is complete.  Checking..." >&4
1583         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1584         rm -f missing
1585         tmppwd=`pwd`
1586         for filelist in x??; do
1587                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1588         done
1589         if test -s missing; then
1590                 cat missing >&4
1591                 cat >&4 <<'EOM'
1592
1593 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1594
1595 You have the option of continuing the configuration process, despite the
1596 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1597 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1598 and contact the author (perlbug@perl.com).
1599
1600 EOM
1601                 echo $n "Continue? [n] $c" >&4
1602                 read ans
1603                 case "$ans" in
1604                 y*)
1605                         echo "Continuing..." >&4
1606                         rm -f missing
1607                         ;;
1608                 *)
1609                         echo "ABORTING..." >&4
1610                         kill $$
1611                         ;;
1612                 esac
1613         else
1614                 echo "Looks good..."
1615         fi
1616 else
1617         echo "There is no MANIFEST file.  I hope your kit is complete !"
1618 fi
1619 rm -f missing x??
1620
1621 echo " "
1622 : Find the appropriate value for a newline for tr
1623 if test -n "$DJGPP"; then
1624        trnl='\012'
1625 fi
1626 if test X"$trnl" = X; then
1627         case "`echo foo|tr '\n' x 2>/dev/null`" in
1628         foox) trnl='\n' ;;
1629         esac
1630 fi
1631 if test X"$trnl" = X; then
1632         case "`echo foo|tr '\012' x 2>/dev/null`" in
1633         foox) trnl='\012' ;;
1634         esac
1635 fi
1636 if test X"$trnl" = X; then
1637         cat <<EOM >&2
1638
1639 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1640
1641 EOM
1642         exit 1
1643 fi
1644
1645 : compute the number of columns on the terminal for proper question formatting
1646 case "$COLUMNS" in
1647 '') COLUMNS='80';;
1648 esac
1649
1650 : set up the echo used in my read
1651 myecho="case \"\$xxxm\" in
1652 '') echo $n \"\$rp $c\" >&4;;
1653 *) case \"\$rp\" in
1654         '') echo $n \"[\$xxxm] $c\";;
1655         *)
1656                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1657                         echo \"\$rp\" >&4
1658                         echo $n \"[\$xxxm] $c\" >&4
1659                 else
1660                         echo $n \"\$rp [\$xxxm] $c\" >&4
1661                 fi
1662                 ;;
1663         esac;;
1664 esac"
1665
1666 : now set up to do reads with possible shell escape and default assignment
1667 cat <<EOSC >myread
1668 $startsh
1669 xxxm=\$dflt
1670 $myecho
1671 ans='!'
1672 case "\$fastread" in
1673 yes) case "\$dflt" in
1674         '') ;;
1675         *) ans='';
1676                 case "\$silent-\$rp" in
1677                 true-) ;;
1678                 *) echo " " >&4;;
1679                 esac;;
1680         esac;;
1681 *) case "\$silent" in
1682         true) case "\$rp" in
1683                 '') ans='';;
1684                 esac;;
1685         esac;;
1686 esac
1687 while expr "X\$ans" : "X!" >/dev/null; do
1688         read answ
1689         set x \$xxxm
1690         shift
1691         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1692         case  "\$answ" in
1693         "!")
1694                 sh 1>&4
1695                 echo " "
1696                 $myecho
1697                 ;;
1698         !*)
1699                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1700                 shift
1701                 sh 1>&4 -c "\$*"
1702                 echo " "
1703                 $myecho
1704                 ;;
1705         "\$ans")
1706                 case "\$ans" in
1707                 \\&*)
1708                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1709                         shift
1710                         case "\$1" in
1711                         -d)
1712                                 fastread=yes
1713                                 echo "(OK, I'll run with -d after this question.)" >&4
1714                                 ;;
1715                         -*)
1716                                 echo "*** Sorry, \$1 not supported yet." >&4
1717                                 ;;
1718                         esac
1719                         $myecho
1720                         ans=!
1721                         ;;
1722                 esac;;
1723         *)
1724                 case "\$aok" in
1725                 y)
1726                         echo "*** Substitution done -- please confirm."
1727                         xxxm="\$ans"
1728                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1729                         xxxm="\$ans"
1730                         ans=!
1731                         ;;
1732                 *)
1733                         echo "*** Error -- try again."
1734                         ans=!
1735                         ;;
1736                 esac
1737                 $myecho
1738                 ;;
1739         esac
1740         case "\$ans\$xxxm\$nostick" in
1741         '')
1742                 ans=!
1743                 $myecho
1744                 ;;
1745         esac
1746 done
1747 case "\$ans" in
1748 '') ans="\$xxxm";;
1749 esac
1750 EOSC
1751
1752 : create .config dir to save info across Configure sessions
1753 test -d ../.config || mkdir ../.config
1754 cat >../.config/README <<EOF
1755 This directory created by Configure to save information that should
1756 persist across sessions for $package.
1757
1758 You may safely delete it if you wish.
1759 EOF
1760
1761 xpatchlevel=`awk '/define[      ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1762 case "$usedevel" in
1763 $define|true|[yY]*) ;;
1764 *) case "$xpatchlevel" in
1765    *[13579])
1766         cat >&4 <<EOH
1767 *** WHOA THERE!!! ***
1768
1769     This is an UNSTABLE DEVELOPMENT release.
1770     (The patchlevel, $xpatchlevel, is odd--as opposed to even,
1771      and that signifies a development release.  If you want a
1772      maintenance release, you want an even-numbered release.)
1773
1774     Do ***NOT*** install this into production use.
1775     Data corruption and crashes are possible.
1776
1777     It is most seriously suggested that you do not continue any further
1778     unless you want to help in developing and debugging Perl.
1779
1780 EOH
1781         rp='Do you really want to continue?'
1782         dflt='n'
1783         . ./myread
1784         case "$ans" in
1785         [yY]) echo >&4 "Okay, continuing." ;;
1786         *) echo >&4 "Okay, bye."
1787            exit 1
1788            ;;
1789         esac
1790         ;;
1791     esac
1792     ;;
1793 esac
1794
1795 : general instructions
1796 needman=true
1797 firsttime=true
1798 user=`(logname) 2>/dev/null`
1799 case "$user" in
1800 '') user=`whoami 2>&1`;;
1801 esac
1802 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1803         firsttime=false
1804         echo " "
1805         rp='Would you like to see the instructions?'
1806         dflt=n
1807         . ./myread
1808         case "$ans" in
1809         [yY]*) ;;
1810         *) needman=false;;
1811         esac
1812 fi
1813 if $needman; then
1814         cat <<EOH
1815
1816 This installation shell script will examine your system and ask you questions
1817 to determine how the perl5 package should be installed. If you get
1818 stuck on a question, you may use a ! shell escape to start a subshell or
1819 execute a command.  Many of the questions will have default answers in square
1820 brackets; typing carriage return will give you the default.
1821
1822 On some of the questions which ask for file or directory names you are allowed
1823 to use the ~name construct to specify the login directory belonging to "name",
1824 even if you don't have a shell which knows about that.  Questions where this is
1825 allowed will be marked "(~name ok)".
1826
1827 EOH
1828         rp=''
1829         dflt='Type carriage return to continue'
1830         . ./myread
1831         cat <<'EOH'
1832
1833 The prompter used in this script allows you to use shell variables and
1834 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1835 in the default answer, as if the default line was a set of arguments given to a
1836 script shell.  This means you may also use $* to repeat the whole default line,
1837 so you do not have to re-type everything to add something to the default.
1838
1839 Everytime there is a substitution, you will have to confirm.  If there is an
1840 error (e.g. an unmatched backtick), the default answer will remain unchanged
1841 and you will be prompted again.
1842
1843 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1844 the questions and use the computed defaults (or the previous answers if there
1845 was already a config.sh file). Type 'Configure -h' for a list of options.
1846 You may also start interactively and then answer '& -d' at any prompt to turn
1847 on the non-interactive behaviour for the remainder of the execution.
1848
1849 EOH
1850         . ./myread
1851         cat <<EOH
1852
1853 Much effort has been expended to ensure that this shell script will run on any
1854 Unix system.  If despite that it blows up on yours, your best bet is to edit
1855 Configure and run it again.  If you can't run Configure for some reason,
1856 you'll have to generate a config.sh file by hand.  Whatever problems you
1857 have, let me (perlbug@perl.com) know how I blew it.
1858
1859 This installation script affects things in two ways:
1860
1861 1) it may do direct variable substitutions on some of the files included
1862    in this kit.
1863 2) it builds a config.h file for inclusion in C programs.  You may edit
1864    any of these files as the need arises after running this script.
1865
1866 If you make a mistake on a question, there is no easy way to back up to it
1867 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1868 files.  Configure will offer to let you do this before it runs the SH files.
1869
1870 EOH
1871         dflt='Type carriage return to continue'
1872         . ./myread
1873         case "$firsttime" in
1874         true) echo $user >>../.config/instruct;;
1875         esac
1876 fi
1877
1878 : find out where common programs are
1879 echo " "
1880 echo "Locating common programs..." >&4
1881 cat <<EOSC >loc
1882 $startsh
1883 case \$# in
1884 0) exit 1;;
1885 esac
1886 thing=\$1
1887 shift
1888 dflt=\$1
1889 shift
1890 for dir in \$*; do
1891         case "\$thing" in
1892         .)
1893         if test -d \$dir/\$thing; then
1894                 echo \$dir
1895                 exit 0
1896         fi
1897         ;;
1898         *)
1899         for thisthing in \$dir/\$thing; do
1900                 : just loop through to pick last item
1901         done
1902         if test -f \$thisthing; then
1903                 echo \$thisthing
1904                 exit 0
1905         elif test -f \$dir/\$thing.exe; then
1906                 if test -n "$DJGPP"; then
1907                         echo \$dir/\$thing.exe
1908                 else
1909                         : on Eunice apparently
1910                         echo \$dir/\$thing
1911                 fi
1912                 exit 0
1913         fi
1914         ;;
1915         esac
1916 done
1917 echo \$dflt
1918 exit 1
1919 EOSC
1920 chmod +x loc
1921 $eunicefix loc
1922 loclist="
1923 awk
1924 cat
1925 comm
1926 cp
1927 echo
1928 expr
1929 grep
1930 ls
1931 make
1932 mkdir
1933 rm
1934 sed
1935 sort
1936 touch
1937 tr
1938 uniq
1939 "
1940 trylist="
1941 Mcc
1942 ar
1943 byacc
1944 cpp
1945 csh
1946 date
1947 egrep
1948 gzip
1949 less
1950 ln
1951 more
1952 nm
1953 nroff
1954 pg
1955 test
1956 uname
1957 zip
1958 "
1959 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1960 pth="$pth /lib /usr/lib"
1961 for file in $loclist; do
1962         eval xxx=\$$file
1963         case "$xxx" in
1964         /*|?:[\\/]*)
1965                 if test -f "$xxx"; then
1966                         : ok
1967                 else
1968                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1969                         xxx=`./loc $file $file $pth`
1970                 fi
1971                 ;;
1972         '') xxx=`./loc $file $file $pth`;;
1973         *) xxx=`./loc $xxx $xxx $pth`;;
1974         esac
1975         eval $file=$xxx
1976         eval _$file=$xxx
1977         case "$xxx" in
1978         /*)
1979                 echo $file is in $xxx.
1980                 ;;
1981         ?:[\\/]*)
1982                 echo $file is in $xxx.
1983                 ;;
1984         *)
1985                 echo "I don't know where '$file' is, and my life depends on it." >&4
1986                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1987                 exit 1
1988                 ;;
1989         esac
1990 done
1991 echo " "
1992 echo "Don't worry if any of the following aren't found..."
1993 say=offhand
1994 for file in $trylist; do
1995         eval xxx=\$$file
1996         case "$xxx" in
1997         /*|?:[\\/]*)
1998                 if test -f "$xxx"; then
1999                         : ok
2000                 else
2001                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2002                         xxx=`./loc $file $file $pth`
2003                 fi
2004                 ;;
2005         '') xxx=`./loc $file $file $pth`;;
2006         *) xxx=`./loc $xxx $xxx $pth`;;
2007         esac
2008         eval $file=$xxx
2009         eval _$file=$xxx
2010         case "$xxx" in
2011         /*)
2012                 echo $file is in $xxx.
2013                 ;;
2014         ?:[\\/]*)
2015                 echo $file is in $xxx.
2016                 ;;
2017         *)
2018                 echo "I don't see $file out there, $say."
2019                 say=either
2020                 ;;
2021         esac
2022 done
2023 case "$egrep" in
2024 egrep)
2025         echo "Substituting grep for egrep."
2026         egrep=$grep
2027         ;;
2028 esac
2029 case "$ln" in
2030 ln)
2031         echo "Substituting cp for ln."
2032         ln=$cp
2033         ;;
2034 esac
2035 case "$test" in
2036 test)
2037         echo "Hopefully test is built into your sh."
2038         ;;
2039 *)
2040         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2041                 echo "Using the test built into your sh."
2042                 test=test
2043                 _test=test
2044         fi
2045         ;;
2046 esac
2047 case "$echo" in
2048 echo)
2049         echo "Hopefully echo is built into your sh."
2050         ;;
2051 '') ;;
2052 *)
2053         echo " "
2054 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2055         $echo $n "hi there$c" >foo1
2056         echo $n "hi there$c" >foo2
2057         if cmp foo1 foo2 >/dev/null 2>&1; then
2058                 echo "They are compatible.  In fact, they may be identical."
2059         else
2060                 case "$n" in
2061                 '-n') n='' c='\c';;
2062                 *) n='-n' c='';;
2063                 esac
2064                 cat <<FOO
2065 They are not compatible!  You are probably running ksh on a non-USG system.
2066 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2067 have echo built in and we may have to run some Bourne shell scripts.  That
2068 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2069
2070 FOO
2071                 $echo $n "The star should be here-->$c"
2072                 $echo "*"
2073         fi
2074         $rm -f foo1 foo2
2075         ;;
2076 esac
2077
2078 cat <<EOS >checkcc
2079 $startsh
2080 EOS
2081 cat <<'EOSC' >>checkcc
2082 case "$cc" in
2083 '') ;;
2084 *)  $rm -f try try.*
2085     $cat >try.c <<EOM
2086 int main(int argc, char *argv[]) {
2087   return 0;
2088 }
2089 EOM
2090     if $cc -o try try.c; then
2091        :
2092     else
2093         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2094         despair=yes
2095         trygcc=yes
2096         case "$cc" in
2097         *gcc*) trygcc=no ;;
2098         esac
2099         case "`$cc -v -c try.c 2>&1`" in
2100         *gcc*) trygcc=no ;;
2101         esac
2102         if $test X"$trygcc" = Xyes; then
2103             if gcc -o try -c try.c; then
2104                 echo " "
2105                 echo "You seem to have a working gcc, though." >&4
2106                 rp="Would you like to use it?"
2107                 dflt=y
2108                 if $test -f myread; then
2109                     . ./myread
2110                 else
2111                     if $test -f UU/myread; then
2112                         . ./UU/myread
2113                     else
2114                         echo "Cannot find myread, sorry.  Aborting." >&2
2115                         exit 1
2116                     fi
2117                 fi  
2118                 case "$ans" in
2119                 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2120                 esac
2121             fi
2122         fi
2123         if $test X"$despair" = Xyes; then
2124             echo "You need to find a working C compiler." >&4
2125             echo "I cannot continue any further, aborting." >&4
2126             exit 1
2127         fi
2128     fi
2129     $rm -f try try.*
2130     ;;
2131 esac
2132 EOSC
2133
2134 : determine whether symbolic links are supported
2135 echo " "
2136 $touch blurfl
2137 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2138         echo "Symbolic links are supported." >&4
2139         lns="$ln -s"
2140 else
2141         echo "Symbolic links are NOT supported." >&4
2142         lns="$ln"
2143 fi
2144 $rm -f blurfl sym
2145
2146 : see whether [:lower:] and [:upper:] are supported character classes
2147 echo " "
2148 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2149 ABYZ)
2150         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2151         up='[:upper:]'
2152         low='[:lower:]'
2153         ;;
2154 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2155         # (0xc9 and 0xd1), therefore that is a nice testing point.
2156         if test "X$up" = X -o "X$low" = X; then
2157             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2158             ij) up='[A-Z]'
2159                 low='[a-z]'
2160                 ;;
2161             esac
2162         fi
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 | od -x 2>/dev/null`" in
2172             *C9D1*|*c9d1*)
2173                 echo "Hey, this might be EBCDIC." >&4
2174                 if test "X$up" = X -o "X$low" = X; then
2175                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2176                     ij) up='[A-IJ-RS-Z]'
2177                         low='[a-ij-rs-z]'
2178                         ;;
2179                     esac
2180                 fi
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                 ;;
2189             esac
2190         fi
2191 esac
2192 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2193 ij)
2194     echo "Using $up and $low to convert case." >&4
2195     ;;
2196 *)
2197     echo "I don't know how to translate letters from upper to lower case." >&4
2198     echo "Your tr is not acting any way I know of." >&4
2199     exit 1
2200     ;;
2201 esac
2202 : set up the translation script tr, must be called with ./tr of course
2203 cat >tr <<EOSC
2204 $startsh
2205 case "\$1\$2" in
2206 '[A-Z][a-z]') exec $tr '$up' '$low';;
2207 '[a-z][A-Z]') exec $tr '$low' '$up';;
2208 esac
2209 exec $tr "\$@"
2210 EOSC
2211 chmod +x tr
2212 $eunicefix tr
2213
2214 : Try to determine whether config.sh was made on this system
2215 case "$config_sh" in
2216 '')
2217 myuname=`$uname -a 2>/dev/null`
2218 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2219 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2220 # because the A-Z/a-z are not consecutive.
2221 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2222         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2223 newmyuname="$myuname"
2224 dflt=n
2225 case "$knowitall" in
2226 '')
2227         if test -f ../config.sh; then
2228                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2229                         eval "`grep myuname= ../config.sh`"
2230                 fi
2231                 if test "X$myuname" = "X$newmyuname"; then
2232                         dflt=y
2233                 fi
2234         fi
2235         ;;
2236 *) dflt=y;;
2237 esac
2238
2239 : Get old answers from old config file if Configure was run on the
2240 : same system, otherwise use the hints.
2241 hint=default
2242 cd ..
2243 if test -f config.sh; then
2244         echo " "
2245         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2246         . UU/myread
2247         case "$ans" in
2248         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2249         *)  echo "Fetching default answers from your old config.sh file..." >&4
2250                 tmp_n="$n"
2251                 tmp_c="$c"
2252                 tmp_sh="$sh"
2253                 . ./config.sh
2254                 cp config.sh UU
2255                 n="$tmp_n"
2256                 c="$tmp_c"
2257                 : Older versions did not always set $sh.  Catch re-use of such
2258                 : an old config.sh.
2259                 case "$sh" in
2260                 '') sh="$tmp_sh" ;;
2261                 esac
2262                 hint=previous
2263                 ;;
2264         esac
2265 fi
2266 . ./UU/checkcc
2267 if test ! -f config.sh; then
2268         $cat <<EOM
2269
2270 First time through, eh?  I have some defaults handy for some systems
2271 that need some extra help getting the Configure answers right:
2272
2273 EOM
2274         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2275         dflt=''
2276         : Half the following guesses are probably wrong... If you have better
2277         : tests or hints, please send them to perlbug@perl.com
2278         : The metaconfig authors would also appreciate a copy...
2279         $test -f /irix && osname=irix
2280         $test -f /xenix && osname=sco_xenix
2281         $test -f /dynix && osname=dynix
2282         $test -f /dnix && osname=dnix
2283         $test -f /lynx.os && osname=lynxos
2284         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2285         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2286         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2287         $test -f /bin/mips && /bin/mips && osname=mips
2288         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2289                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2290         $test -d /usr/apollo/bin && osname=apollo
2291         $test -f /etc/saf/_sactab && osname=svr4
2292         $test -d /usr/include/minix && osname=minix
2293         if $test -d /MachTen -o -d /MachTen_Folder; then
2294                 osname=machten
2295                 if $test -x /sbin/version; then
2296                         osvers=`/sbin/version | $awk '{print $2}' |
2297                         $sed -e 's/[A-Za-z]$//'`
2298                 elif $test -x /usr/etc/version; then
2299                         osvers=`/usr/etc/version | $awk '{print $2}' |
2300                         $sed -e 's/[A-Za-z]$//'`
2301                 else
2302                         osvers="$2.$3"
2303                 fi
2304         fi
2305
2306         $test -f /sys/posix.dll &&
2307                 $test -f /usr/bin/what &&
2308                 set X `/usr/bin/what /sys/posix.dll` &&
2309                 $test "$3" = UWIN &&
2310                 osname=uwin &&
2311                 osvers="$5"
2312
2313         if $test -f $uname; then
2314                 set X $myuname
2315                 shift
2316
2317                 case "$5" in
2318                 fps*) osname=fps ;;
2319                 mips*)
2320                         case "$4" in
2321                         umips) osname=umips ;;
2322                         *) osname=mips ;;
2323                         esac;;
2324                 [23]100) osname=mips ;;
2325                 next*) osname=next ;;
2326                 i386*)
2327                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2328                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2329                                 osname='sco'
2330                                 osvers=$tmp
2331                         elif $test -f /etc/kconfig; then
2332                                 osname=isc
2333                                 if test "$lns" = "$ln -s"; then
2334                                         osvers=4
2335                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2336                                         osvers=3
2337                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2338                                         osvers=2
2339                                 fi
2340                         fi
2341                         tmp=''
2342                         ;;
2343                 pc*)
2344                         if test -n "$DJGPP"; then
2345                                 osname=dos
2346                                 osvers=djgpp
2347                         fi
2348                         ;;
2349                 esac
2350
2351                 case "$1" in
2352                 aix) osname=aix
2353                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2354                         case "$tmp" in
2355                         'not found') osvers="$4"."$3" ;;
2356                         '<3240'|'<>3240') osvers=3.2.0 ;;
2357                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2358                         '=3250'|'>3250') osvers=3.2.5 ;;
2359                         *) osvers=$tmp;;
2360                         esac
2361                         ;;
2362                 bsd386) osname=bsd386
2363                         osvers=`$uname -r`
2364                         ;;
2365                 cygwin*) osname=cygwin
2366                         osvers="$3"
2367                         ;;
2368                 *dc.osx) osname=dcosx
2369                         osvers="$3"
2370                         ;;
2371                 dnix) osname=dnix
2372                         osvers="$3"
2373                         ;;
2374                 domainos) osname=apollo
2375                         osvers="$3"
2376                         ;;
2377                 dgux) osname=dgux 
2378                         osvers="$3"
2379                         ;;
2380                 dynixptx*) osname=dynixptx
2381                         osvers=`echo "$4"|sed 's/^v//'`
2382                         ;;
2383                 freebsd) osname=freebsd 
2384                         osvers="$3" ;;
2385                 genix) osname=genix ;;
2386                 hp*) osname=hpux 
2387                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2388                         ;;
2389                 irix*) osname=irix
2390                         case "$3" in
2391                         4*) osvers=4 ;;
2392                         5*) osvers=5 ;;
2393                         *)      osvers="$3" ;;
2394                         esac
2395                         ;;
2396                 linux) osname=linux
2397                         case "$3" in
2398                         *)      osvers="$3" ;;
2399                         esac
2400                         ;;
2401                 MiNT) osname=mint
2402                         ;;
2403                 netbsd*) osname=netbsd
2404                         osvers="$3"
2405                         ;;
2406                 news-os) osvers="$3"
2407                         case "$3" in
2408                         4*) osname=newsos4 ;;
2409                         *) osname=newsos ;;
2410                         esac
2411                         ;;
2412                 next*) osname=next ;;
2413                 POSIX-BC | posix-bc ) osname=posix-bc
2414                         osvers="$3"
2415                         ;;
2416                 powerux | power_ux | powermax_os | powermaxos | \
2417                 powerunix | power_unix) osname=powerux
2418                         osvers="$3"
2419                         ;;
2420                 qnx) osname=qnx
2421                         osvers="$4"
2422                         ;;
2423                 solaris) osname=solaris
2424                         case "$3" in
2425                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2426                         *)      osvers="$3" ;;
2427                         esac
2428                         ;;
2429                 sunos) osname=sunos
2430                         case "$3" in
2431                         5*) osname=solaris
2432                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2433                         *)      osvers="$3" ;;
2434                         esac
2435                         ;;
2436                 titanos) osname=titanos
2437                         case "$3" in
2438                         1*) osvers=1 ;;
2439                         2*) osvers=2 ;;
2440                         3*) osvers=3 ;;
2441                         4*) osvers=4 ;;
2442                         *)      osvers="$3" ;;
2443                         esac
2444                         ;;
2445                 ultrix) osname=ultrix
2446                         osvers="$3"
2447                         ;;
2448                 osf1|mls+)      case "$5" in
2449                                 alpha)
2450                                         osname=dec_osf
2451                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2452                                         case "$osvers" in
2453                                         [1-9].[0-9]*) ;;
2454                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2455                                         esac
2456                                         ;;
2457                         hp*)    osname=hp_osf1  ;;
2458                         mips)   osname=mips_osf1 ;;
2459                         esac
2460                         ;;
2461                 unixware) osname=svr5
2462                         osvers="$4"
2463                         ;;
2464                 uts) osname=uts
2465                         osvers="$3"
2466                         ;;
2467                 $2) case "$osname" in
2468                         *isc*) ;;
2469                         *freebsd*) ;;
2470                         svr*)
2471                                 : svr4.x or possibly later
2472                                 case "svr$3" in 
2473                                 ${osname}*)
2474                                         osname=svr$3
2475                                         osvers=$4
2476                                         ;;
2477                                 esac
2478                                 case "$osname" in
2479                                 svr4.0)
2480                                         : Check for ESIX
2481                                         if test -f /stand/boot ; then
2482                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2483                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2484                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2485                                                         if test -n "$isesix"; then
2486                                                                 osname=esix4
2487                                                         fi
2488                                                 fi
2489                                         fi
2490                                         ;;
2491                                 esac
2492                                 ;;
2493                         *)      if test -f /etc/systemid; then
2494                                         osname=sco
2495                                         set `echo $3 | $sed 's/\./ /g'` $4
2496                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2497                                                 osvers=$1.$2.$3
2498                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2499                                                 osvers=$1.$2
2500                                         elif $test -f $src/hints/sco_$1.sh; then
2501                                                 osvers=$1
2502                                         fi
2503                                 else
2504                                         case "$osname" in
2505                                         '') : Still unknown.  Probably a generic Sys V.
2506                                                 osname="sysv"
2507                                                 osvers="$3"
2508                                                 ;;
2509                                         esac
2510                                 fi
2511                                 ;;
2512                         esac
2513                         ;;
2514                 *)      case "$osname" in
2515                         '') : Still unknown.  Probably a generic BSD.
2516                                 osname="$1"
2517                                 osvers="$3"
2518                                 ;;
2519                         esac
2520                         ;;
2521                 esac
2522         else
2523                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2524                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2525                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2526                                 osname=news_os
2527                         fi
2528                         $rm -f UU/kernel.what
2529                 elif test -d c:/.; then
2530                         set X $myuname
2531                         osname=os2
2532                         osvers="$5"
2533                 fi
2534         fi
2535         
2536         : Now look for a hint file osname_osvers, unless one has been
2537         : specified already.
2538         case "$hintfile" in
2539         ''|' ')
2540                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2541                 : Also try without trailing minor version numbers.
2542                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2543                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2544                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2545                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2546                 case "$file" in
2547                 '') dflt=none ;;
2548                 *)  case "$osvers" in
2549                         '') dflt=$file
2550                                 ;;
2551                         *)  if $test -f $src/hints/$file.sh ; then
2552                                         dflt=$file
2553                                 elif $test -f $src/hints/$xfile.sh ; then
2554                                         dflt=$xfile
2555                                 elif $test -f $src/hints/$xxfile.sh ; then
2556                                         dflt=$xxfile
2557                                 elif $test -f $src/hints/$xxxfile.sh ; then
2558                                         dflt=$xxxfile
2559                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2560                                         dflt=$xxxxfile
2561                                 elif $test -f "$src/hints/${osname}.sh" ; then
2562                                         dflt="${osname}"
2563                                 else
2564                                         dflt=none
2565                                 fi
2566                                 ;;
2567                         esac
2568                         ;;
2569                 esac
2570                 if $test -f Policy.sh ; then
2571                         case "$dflt" in
2572                         *Policy*) ;;
2573                         none) dflt="Policy" ;;
2574                         *) dflt="Policy $dflt" ;;
2575                         esac
2576                 fi
2577                 ;;
2578         *)
2579                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2580                 ;;
2581         esac
2582
2583         if $test -f Policy.sh ; then
2584                 $cat <<EOM
2585
2586 There's also a Policy hint file available, which should make the
2587 site-specific (policy) questions easier to answer.
2588 EOM
2589
2590         fi
2591
2592         $cat <<EOM
2593
2594 You may give one or more space-separated answers, or "none" if appropriate.
2595 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2596 is a good thing.  DO NOT give a wrong version or a wrong OS.
2597
2598 EOM
2599
2600         rp="Which of these apply, if any?"
2601         . UU/myread
2602         tans=$ans
2603         for file in $tans; do
2604                 if $test X$file = XPolicy -a -f Policy.sh; then
2605                         . Policy.sh
2606                         $cat Policy.sh >> UU/config.sh
2607                 elif $test -f $src/hints/$file.sh; then
2608                         . $src/hints/$file.sh
2609                         $cat $src/hints/$file.sh >> UU/config.sh
2610                 elif $test X$tans = X -o X$tans = Xnone ; then
2611                         : nothing
2612                 else
2613                         : Give one chance to correct a possible typo.
2614                         echo "$file.sh does not exist"
2615                         dflt=$file
2616                         rp="hint to use instead?"
2617                         . UU/myread
2618                         for file in $ans; do
2619                                 if $test -f "$src/hints/$file.sh"; then
2620                                         . $src/hints/$file.sh
2621                                         $cat $src/hints/$file.sh >> UU/config.sh
2622                                 elif $test X$ans = X -o X$ans = Xnone ; then
2623                                         : nothing
2624                                 else
2625                                         echo "$file.sh does not exist -- ignored."
2626                                 fi
2627                         done
2628                 fi
2629         done
2630
2631         hint=recommended
2632         : Remember our hint file for later.
2633         if $test -f "$src/hints/$file.sh" ; then
2634                 hintfile="$file"
2635         else
2636                 hintfile=''
2637         fi
2638 fi
2639 cd UU
2640 ;;
2641 *)
2642         echo " "
2643         echo "Fetching default answers from $config_sh..." >&4
2644         tmp_n="$n"
2645         tmp_c="$c"
2646         cd ..
2647         cp $config_sh config.sh 2>/dev/null
2648         chmod +w config.sh
2649         . ./config.sh
2650         cd UU
2651         cp ../config.sh .
2652         n="$tmp_n"
2653         c="$tmp_c"
2654         hint=previous
2655         ;;
2656 esac
2657 test "$override" && . ./optdef.sh
2658 myuname="$newmyuname"
2659
2660 : Restore computed paths
2661 for file in $loclist $trylist; do
2662         eval $file="\$_$file"
2663 done
2664
2665 cat << EOM
2666
2667 Configure uses the operating system name and version to set some defaults.
2668 The default value is probably right if the name rings a bell. Otherwise,
2669 since spelling matters for me, either accept the default or answer "none"
2670 to leave it blank.
2671
2672 EOM
2673 case "$osname" in
2674         ''|' ')
2675                 case "$hintfile" in
2676                 ''|' '|none) dflt=none ;;
2677                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2678                 esac
2679                 ;;
2680         *) dflt="$osname" ;;
2681 esac
2682 rp="Operating system name?"
2683 . ./myread
2684 case "$ans" in
2685 none)  osname='' ;;
2686 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2687 esac
2688 echo " "
2689 case "$osvers" in
2690         ''|' ')
2691                 case "$hintfile" in
2692                 ''|' '|none) dflt=none ;;
2693                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2694                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2695                         case "$dflt" in
2696                         ''|' ') dflt=none ;;
2697                         esac
2698                         ;;
2699                 esac
2700                 ;;
2701         *) dflt="$osvers" ;;
2702 esac
2703 rp="Operating system version?"
2704 . ./myread
2705 case "$ans" in
2706 none)  osvers='' ;;
2707 *) osvers="$ans" ;;
2708 esac
2709
2710
2711 . ./posthint.sh
2712
2713 : who configured the system
2714 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2715 cf_by=`(logname) 2>/dev/null`
2716 case "$cf_by" in
2717 "")
2718         cf_by=`(whoami) 2>/dev/null`
2719         case "$cf_by" in
2720         "") cf_by=unknown ;;
2721         esac ;;
2722 esac
2723
2724 : set up the script used to warn in case of inconsistency
2725 cat <<EOS >whoa
2726 $startsh
2727 EOS
2728 cat <<'EOSC' >>whoa
2729 dflt=y
2730 echo " "
2731 echo "*** WHOA THERE!!! ***" >&4
2732 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2733 rp="    Keep the $hint value?"
2734 . ./myread
2735 case "$ans" in
2736 y) td=$was; tu=$was;;
2737 esac
2738 EOSC
2739
2740 : function used to set $1 to $val
2741 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2742 case "$val$was" in
2743 $define$undef) . ./whoa; eval "$var=\$td";;
2744 $undef$define) . ./whoa; eval "$var=\$tu";;
2745 *) eval "$var=$val";;
2746 esac'
2747
2748 case "$usethreads" in
2749 $define|true|[yY]*)     dflt='y';;
2750 *) dflt='n';;
2751 esac
2752 cat <<EOM
2753
2754 Perl can be built to take advantage of threads on some systems.
2755 To do so, Configure can be run with -Dusethreads.
2756
2757 Note that threading is a highly experimental feature, and
2758 some known race conditions still remain.  If you choose to try
2759 it, be very sure to not actually deploy it for production
2760 purposes.  README.threads has more details, and is required
2761 reading if you enable threads.
2762
2763 If this doesn't make any sense to you, just accept the default '$dflt'.
2764 EOM
2765 rp='Build a threading Perl?'
2766 . ./myread
2767 case "$ans" in
2768 y|Y)    val="$define" ;;
2769 *)      val="$undef" ;;
2770 esac
2771 set usethreads
2772 eval $setvar
2773
2774 case "$usethreads" in
2775 $define)
2776         $cat <<EOM
2777
2778 As of 5.5.640, Perl has two different internal threading implementations,
2779 the 5.005 version (5005threads) and an interpreter-based version
2780 (ithreads) that has one interpreter per thread.  Both are very 
2781 experimental.  This arrangement exists to help developers work out
2782 which one is better.
2783
2784 If you're a casual user, you probably don't want interpreter-threads
2785 at this time.  There doesn't yet exist a way to create threads from
2786 within Perl in this model, i.e., "use Thread;" will NOT work.
2787 EOM
2788         : Default to ithreads unless overridden on command line or with
2789         : old config.sh
2790         dflt='y'
2791         case "$use5005threads" in
2792                 $define|true|[yY]*) dflt='n';;
2793         esac
2794         case "$useithreads" in
2795                 $undef|false|[nN]*) dflt='n';;
2796         esac
2797         rp='Use interpreter-based ithreads?'
2798         . ./myread
2799         case "$ans" in
2800         y|Y)    val="$define" ;;
2801         *)      val="$undef" ;;
2802         esac
2803         set useithreads
2804         eval $setvar
2805         : Now set use5005threads to the opposite value.
2806         case "$useithreads" in
2807         $define) val="$undef" ;;
2808         *) val="$define" ;;
2809         esac
2810         set use5005threads
2811         eval $setvar
2812         ;;
2813 *)
2814         useithreads="$undef"
2815         use5005threads="$undef"
2816         ;;
2817 esac
2818
2819 case "$d_oldpthreads" in
2820 '')     : Configure tests would be welcome here.  For now, assume undef.
2821         val="$undef" ;;
2822 *)      val="$d_oldpthreads" ;;
2823 esac
2824 set d_oldpthreads
2825 eval $setvar
2826
2827
2828 case "$usethreads" in
2829 "$define"|true|[yY]*)
2830 : Look for a hint-file generated 'call-back-unit'.  If the
2831 : user has specified that a threading perl is to be built,
2832 : we may need to set or change some other defaults.
2833         if $test -f usethreads.cbu; then
2834                 echo "Your platform has some specific hints for threaded builds, using them..."
2835                 . ./usethreads.cbu
2836         else
2837                 $cat <<EOM
2838 (Your platform doesn't have any specific hints for threaded builds.
2839  Assuming POSIX threads, then.)
2840 EOM
2841         fi
2842         ;;
2843 esac
2844
2845 cat <<EOM
2846
2847 Perl can be built so that multiple Perl interpreters can coexist
2848 within the same Perl executable.
2849 EOM
2850
2851 case "$useithreads" in
2852 $define)
2853         cat <<EOM
2854 This multiple interpreter support is required for interpreter-based threads.
2855 EOM
2856         val="$define"
2857         ;;
2858 *)      case "$usemultiplicity" in
2859         $define|true|[yY]*)     dflt='y';;
2860         *) dflt='n';;
2861         esac
2862         echo " "
2863         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2864         rp='Build Perl for multiplicity?'
2865         . ./myread
2866         case "$ans" in
2867         y|Y)    val="$define" ;;
2868         *)      val="$undef" ;;
2869         esac
2870         ;;
2871 esac
2872 set usemultiplicity
2873 eval $setvar
2874
2875 : determine where manual pages are on this system
2876 echo " "
2877 case "$sysman" in
2878 '') 
2879         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2880         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2881         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2882         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2883         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2884         sysman=`./loc . /usr/man/man1 $syspath`
2885         ;;
2886 esac
2887 if $test -d "$sysman"; then
2888         echo "System manual is in $sysman." >&4
2889 else
2890         echo "Could not find manual pages in source form." >&4
2891 fi
2892
2893 : see what memory models we can support
2894 case "$models" in
2895 '')
2896         $cat >pdp11.c <<'EOP'
2897 int main() {
2898 #ifdef pdp11
2899         exit(0);
2900 #else
2901         exit(1);
2902 #endif
2903 }
2904 EOP
2905         case "$cc" in
2906         '') modelcc="$cc" ;;
2907         *) modelcc="cc" ;;
2908         esac
2909         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2910         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2911                 dflt='unsplit split'
2912         else
2913                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2914                 case "$tans" in
2915                 X) dflt='none';;
2916                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2917                                 dflt='small'
2918                         else
2919                                 dflt=''
2920                         fi
2921                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2922                                 dflt="$dflt medium"
2923                         fi
2924                         if $test -d /lib/large || $test -d /usr/lib/large; then
2925                                 dflt="$dflt large"
2926                         fi
2927                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2928                                 dflt="$dflt huge"
2929                         fi
2930                 esac
2931         fi;;
2932 *) dflt="$models";;
2933 esac
2934 $cat <<EOM
2935  
2936 Some systems have different model sizes.  On most systems they are called
2937 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2938 split.  If your system doesn't support different memory models, say "none".
2939 If you wish to force everything to one memory model, say "none" here and
2940 put the appropriate flags later when it asks you for other cc and ld flags.
2941 Venix systems may wish to put "none" and let the compiler figure things out.
2942 (In the following question multiple model names should be space separated.)
2943
2944 The default for most systems is "none".
2945
2946 EOM
2947 rp="Which memory models are supported?"
2948 . ./myread
2949 models="$ans"
2950
2951 case "$models" in
2952 none)
2953         small=''
2954         medium=''
2955         large=''
2956         huge=''
2957         unsplit=''
2958         split=''
2959         ;;
2960 *split)
2961         case "$split" in
2962         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2963                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2964                         dflt='-i'
2965                 else
2966                         dflt='none'
2967                 fi;;
2968         *) dflt="$split";;
2969         esac
2970         rp="What flag indicates separate I and D space?"
2971         . ./myread
2972         tans="$ans"
2973         case "$tans" in
2974         none) tans='';;
2975         esac
2976         split="$tans"
2977         unsplit='';;
2978 *large*|*small*|*medium*|*huge*)
2979         case "$models" in
2980         *large*)
2981                 case "$large" in
2982                 '') dflt='-Ml';;
2983                 *) dflt="$large";;
2984                 esac
2985         rp="What flag indicates large model?"
2986         . ./myread
2987         tans="$ans"
2988         case "$tans" in
2989         none) tans='';
2990         esac
2991         large="$tans";;
2992         *) large='';;
2993         esac
2994         case "$models" in
2995         *huge*) case "$huge" in
2996                 '') dflt='-Mh';;
2997                 *) dflt="$huge";;
2998                 esac
2999                 rp="What flag indicates huge model?"
3000                 . ./myread
3001                 tans="$ans"
3002                 case "$tans" in
3003                 none) tans='';
3004                 esac
3005                 huge="$tans";;
3006         *) huge="$large";;
3007         esac
3008         case "$models" in
3009         *medium*) case "$medium" in
3010                 '') dflt='-Mm';;
3011                 *) dflt="$medium";;
3012                 esac
3013                 rp="What flag indicates medium model?"
3014                 . ./myread
3015                 tans="$ans"
3016                 case "$tans" in
3017                 none) tans='';
3018                 esac
3019                 medium="$tans";;
3020         *) medium="$large";;
3021         esac
3022         case "$models" in
3023         *small*) case "$small" in
3024                 '') dflt='none';;
3025                 *) dflt="$small";;
3026                 esac
3027                 rp="What flag indicates small model?"
3028                 . ./myread
3029                 tans="$ans"
3030                 case "$tans" in
3031                 none) tans='';
3032                 esac
3033                 small="$tans";;
3034         *) small='';;
3035         esac
3036         ;;
3037 *)
3038         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3039         ;;
3040 esac
3041 $rm -f pdp11.* pdp11
3042
3043 : make some quick guesses about what we are up against
3044 echo " "
3045 $echo $n "Hmm...  $c"
3046 echo exit 1 >bsd
3047 echo exit 1 >usg
3048 echo exit 1 >v7
3049 echo exit 1 >osf1
3050 echo exit 1 >eunice
3051 echo exit 1 >xenix
3052 echo exit 1 >venix
3053 echo exit 1 >os2
3054 d_bsd="$undef"
3055 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3056 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3057 then
3058         echo "Looks kind of like an OSF/1 system, but we'll see..."
3059         echo exit 0 >osf1
3060 elif test `echo abc | tr a-z A-Z` = Abc ; then
3061         xxx=`./loc addbib blurfl $pth`
3062         if $test -f $xxx; then
3063         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3064                 echo exit 0 >bsd
3065                 echo exit 0 >usg
3066         else
3067                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3068                         echo "Looks kind of like an extended USG system, but we'll see..."
3069                 else
3070                         echo "Looks kind of like a USG system, but we'll see..."
3071                 fi
3072                 echo exit 0 >usg
3073         fi
3074 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3075         echo "Looks kind of like a BSD system, but we'll see..."
3076         d_bsd="$define"
3077         echo exit 0 >bsd
3078 else
3079         echo "Looks kind of like a Version 7 system, but we'll see..."
3080         echo exit 0 >v7
3081 fi
3082 case "$eunicefix" in
3083 *unixtovms*)
3084         $cat <<'EOI'
3085 There is, however, a strange, musty smell in the air that reminds me of
3086 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3087 EOI
3088         echo exit 0 >eunice
3089         d_eunice="$define"
3090 : it so happens the Eunice I know will not run shell scripts in Unix format
3091         ;;
3092 *)
3093         echo " "
3094         echo "Congratulations.  You aren't running Eunice."
3095         d_eunice="$undef"
3096         ;;
3097 esac
3098 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3099 case "$p_" in
3100 :) ;;
3101 *)
3102         $cat <<'EOI'
3103 I have the feeling something is not exactly right, however...don't tell me...
3104 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3105 EOI
3106         echo exit 0 >os2
3107         ;;
3108 esac
3109 if test -f /xenix; then
3110         echo "Actually, this looks more like a XENIX system..."
3111         echo exit 0 >xenix
3112         d_xenix="$define"
3113 else
3114         echo " "
3115         echo "It's not Xenix..."
3116         d_xenix="$undef"
3117 fi
3118 chmod +x xenix
3119 $eunicefix xenix
3120 if test -f /venix; then
3121         echo "Actually, this looks more like a VENIX system..."
3122         echo exit 0 >venix
3123 else
3124         echo " "
3125         if ./xenix; then
3126                 : null
3127         else
3128                 echo "Nor is it Venix..."
3129         fi
3130 fi
3131 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3132 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3133 $rm -f foo
3134
3135 : see if we need a special compiler
3136 echo " "
3137 if ./usg; then
3138         case "$cc" in
3139         '') case "$Mcc" in
3140                 /*) dflt='Mcc';;
3141                 *) case "$large" in
3142                         -M*) dflt='cc';;
3143                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3144                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3145                                                 dflt='cc'
3146                                         else
3147                                                 dflt='cc -M'
3148                                         fi
3149                                 else
3150                                         dflt='cc'
3151                                 fi;;
3152                         esac;;
3153                 esac;;
3154         *)  dflt="$cc";;
3155         esac
3156         case "$dflt" in
3157         *M*)    $cat <<'EOM'
3158 On some older systems the default C compiler will not resolve multiple global
3159 references that happen to have the same name.  On some such systems the "Mcc"
3160 command may be used to force these to be resolved.  On other systems a "cc -M"
3161 command is required.  (Note that the -M flag on other systems indicates a
3162 memory model to use!) If you have the Gnu C compiler, you might wish to use
3163 that instead.
3164
3165 EOM
3166         ;;
3167         esac
3168         rp="Use which C compiler?"
3169         . ./myread
3170         cc="$ans"
3171 else
3172         case "$cc" in
3173         '') dflt=cc;;
3174         *) dflt="$cc";;
3175         esac
3176         rp="Use which C compiler?"
3177         . ./myread
3178         cc="$ans"
3179 fi
3180 : Look for a hint-file generated 'call-back-unit'.  Now that the
3181 : user has specified the compiler, we may need to set or change some
3182 : other defaults.
3183 if $test -f cc.cbu; then
3184     . ./cc.cbu
3185 fi
3186 . ./checkcc
3187
3188 echo " "
3189 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3190 $cat >gccvers.c <<EOM
3191 #include <stdio.h>
3192 int main() {
3193 #ifdef __GNUC__
3194 #ifdef __VERSION__
3195         printf("%s\n", __VERSION__);
3196 #else
3197         printf("%s\n", "1");
3198 #endif
3199 #endif
3200         exit(0);
3201 }
3202 EOM
3203 if $cc $ldflags -o gccvers gccvers.c; then
3204         gccversion=`./gccvers`
3205         case "$gccversion" in
3206         '') echo "You are not using GNU cc." ;;
3207         *)  echo "You are using GNU cc $gccversion."
3208             ;;
3209         esac
3210 else
3211         echo " "
3212         echo "*** WHOA THERE!!! ***" >&4
3213         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3214         case "$knowitall" in
3215         '')
3216         echo "    You'd better start hunting for one and let me know about it." >&4
3217                 exit 1
3218                 ;;
3219         esac
3220 fi
3221 $rm -f gccvers*
3222 case "$gccversion" in
3223 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3224 esac
3225 case "$gccversion" in
3226 '') gccosandvers='' ;;
3227 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3228    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3229    gccshortvers=''
3230    case "$gccosandvers" in
3231    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3232    $osname$osvers) ;; # looking good
3233    $osname*) cat <<EOM >&4
3234
3235 *** WHOA THERE!!! ***
3236
3237     Your gcc has not been compiled for the exact release of
3238     your operating system ($gccosandvers versus $osname$osvers).
3239
3240     In general it is a good idea to keep gcc synchronized with
3241     the operating system because otherwise serious problems
3242     may ensue when trying to compile software, like Perl.
3243
3244     I'm trying to be optimistic here, though, and will continue.
3245     If later during the configuration and build icky compilation
3246     problems appear (headerfile conflicts being the most common
3247     manifestation), I suggest reinstalling the gcc to match
3248     your operating system release.
3249
3250 EOM
3251       ;;
3252    *) gccosandvers='' ;; # failed to parse, better be silent
3253    esac
3254    ;;
3255 esac
3256
3257
3258
3259
3260 : see how we invoke the C preprocessor
3261 echo " "
3262 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3263 cat <<'EOT' >testcpp.c
3264 #define ABC abc
3265 #define XYZ xyz
3266 ABC.XYZ
3267 EOT
3268 cd ..
3269 if test ! -f cppstdin; then
3270         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3271                 # AIX cc -E doesn't show the absolute headerfile
3272                 # locations but we'll cheat by using the -M flag.
3273                 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
3274         else
3275                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3276         fi
3277 else
3278         echo "Keeping your $hint cppstdin wrapper."
3279 fi
3280 chmod 755 cppstdin
3281 wrapper=`pwd`/cppstdin
3282 ok='false'
3283 cd UU
3284
3285 if $test "X$cppstdin" != "X" && \
3286         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3287         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3288 then
3289         echo "You used to use $cppstdin $cppminus so we'll use that again."
3290         case "$cpprun" in
3291         '') echo "But let's see if we can live without a wrapper..." ;;
3292         *)
3293                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3294                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3295                 then
3296                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3297                         ok='true'
3298                 else
3299                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3300                 fi
3301                 ;;
3302         esac
3303 else
3304         case "$cppstdin" in
3305         '') ;;
3306         *)
3307                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3308                 ;;
3309         esac
3310 fi
3311
3312 if $ok; then
3313         : nothing
3314 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3315         $cc -E <testcpp.c >testcpp.out 2>&1; \
3316         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3317         echo "Yup, it does."
3318         x_cpp="$cc -E"
3319         x_minus='';
3320 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3321         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3322         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3323         echo "Yup, it does."
3324         x_cpp="$cc -E"
3325         x_minus='-';
3326 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3327         $cc -P <testcpp.c >testcpp.out 2>&1; \
3328         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3329         echo "Yipee, that works!"
3330         x_cpp="$cc -P"
3331         x_minus='';
3332 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3333         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3334         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3335         echo "At long last!"
3336         x_cpp="$cc -P"
3337         x_minus='-';
3338 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3339         $cpp <testcpp.c >testcpp.out 2>&1; \
3340         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3341         echo "It works!"
3342         x_cpp="$cpp"
3343         x_minus='';
3344 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3345         $cpp - <testcpp.c >testcpp.out 2>&1; \
3346         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3347         echo "Hooray, it works!  I was beginning to wonder."
3348         x_cpp="$cpp"
3349         x_minus='-';
3350 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3351         $wrapper <testcpp.c >testcpp.out 2>&1; \
3352         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3353         x_cpp="$wrapper"
3354         x_minus=''
3355         echo "Eureka!"
3356 else
3357         dflt=''
3358         rp="No dice.  I can't find a C preprocessor.  Name one:"
3359         . ./myread
3360         x_cpp="$ans"
3361         x_minus=''
3362         $x_cpp <testcpp.c >testcpp.out 2>&1
3363         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3364                 echo "OK, that will do." >&4
3365         else
3366 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3367                 exit 1
3368         fi
3369 fi
3370
3371 case "$ok" in
3372 false)
3373         cppstdin="$x_cpp"
3374         cppminus="$x_minus"
3375         cpprun="$x_cpp"
3376         cpplast="$x_minus"
3377         set X $x_cpp
3378         shift
3379         case "$1" in
3380         "$cpp")
3381                 echo "Perhaps can we force $cc -E using a wrapper..."
3382                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3383                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3384                 then
3385                         echo "Yup, we can."
3386                         cppstdin="$wrapper"
3387                         cppminus='';
3388                 else
3389                         echo "Nope, we'll have to live without it..."
3390                 fi
3391                 ;;
3392         esac
3393         case "$cpprun" in
3394         "$wrapper")
3395                 cpprun=''
3396                 cpplast=''
3397                 ;;
3398         esac
3399         ;;
3400 esac
3401
3402 case "$cppstdin" in
3403 "$wrapper"|'cppstdin') ;;
3404 *) $rm -f $wrapper;;
3405 esac
3406 $rm -f testcpp.c testcpp.out
3407
3408 : decide how portable to be.  Allow command line overrides.
3409 case "$d_portable" in
3410 "$undef") ;;
3411 *)      d_portable="$define" ;;
3412 esac
3413
3414 : set up shell script to do ~ expansion
3415 cat >filexp <<EOSS
3416 $startsh
3417 : expand filename
3418 case "\$1" in
3419  ~/*|~)
3420         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3421         ;;
3422  ~*)
3423         if $test -f /bin/csh; then
3424                 /bin/csh -f -c "glob \$1"
3425                 failed=\$?
3426                 echo ""
3427                 exit \$failed
3428         else
3429                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3430                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3431                 if $test ! -d "\$dir"; then
3432                         me=\`basename \$0\`
3433                         echo "\$me: can't locate home directory for: \$name" >&2
3434                         exit 1
3435                 fi
3436                 case "\$1" in
3437                 */*)
3438                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3439                         ;;
3440                 *)
3441                         echo \$dir
3442                         ;;
3443                 esac
3444         fi
3445         ;;
3446 *)
3447         echo \$1
3448         ;;
3449 esac
3450 EOSS
3451 chmod +x filexp
3452 $eunicefix filexp
3453
3454 : now set up to get a file name
3455 cat <<EOS >getfile
3456 $startsh
3457 EOS
3458 cat <<'EOSC' >>getfile
3459 tilde=''
3460 fullpath=''
3461 already=''
3462 skip=''
3463 none_ok=''
3464 exp_file=''
3465 nopath_ok=''
3466 orig_rp="$rp"
3467 orig_dflt="$dflt"
3468 case "$gfpth" in
3469 '') gfpth='.' ;;
3470 esac
3471
3472 case "$fn" in
3473 *\(*)
3474         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3475         fn=`echo $fn | sed 's/(.*)//'`
3476         ;;
3477 esac
3478
3479 case "$fn" in
3480 *:*)
3481         loc_file=`expr $fn : '.*:\(.*\)'`
3482         fn=`expr $fn : '\(.*\):.*'`
3483         ;;
3484 esac
3485
3486 case "$fn" in
3487 *~*) tilde=true;;
3488 esac
3489 case "$fn" in
3490 */*) fullpath=true;;
3491 esac
3492 case "$fn" in
3493 *+*) skip=true;;
3494 esac
3495 case "$fn" in
3496 *n*) none_ok=true;;
3497 esac
3498 case "$fn" in
3499 *e*) exp_file=true;;
3500 esac
3501 case "$fn" in
3502 *p*) nopath_ok=true;;
3503 esac
3504
3505 case "$fn" in
3506 *f*) type='File';;
3507 *d*) type='Directory';;
3508 *l*) type='Locate';;
3509 esac
3510
3511 what="$type"
3512 case "$what" in
3513 Locate) what='File';;
3514 esac
3515
3516 case "$exp_file" in
3517 '')
3518         case "$d_portable" in
3519         "$define") ;;
3520         *) exp_file=true;;
3521         esac
3522         ;;
3523 esac
3524
3525 cd ..
3526 while test "$type"; do
3527         redo=''
3528         rp="$orig_rp"
3529         dflt="$orig_dflt"
3530         case "$tilde" in
3531         true) rp="$rp (~name ok)";;
3532         esac
3533         . UU/myread
3534         if test -f UU/getfile.ok && \
3535                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3536         then
3537                 value="$ans"
3538                 ansexp="$ans"
3539                 break
3540         fi
3541         case "$ans" in
3542         none)
3543                 value=''
3544                 ansexp=''
3545                 case "$none_ok" in
3546                 true) type='';;
3547                 esac
3548                 ;;
3549         *)
3550                 case "$tilde" in
3551                 '') value="$ans"
3552                         ansexp="$ans";;
3553                 *)
3554                         value=`UU/filexp $ans`
3555                         case $? in
3556                         0)
3557                                 if test "$ans" != "$value"; then
3558                                         echo "(That expands to $value on this system.)"
3559                                 fi
3560                                 ;;
3561                         *) value="$ans";;
3562                         esac
3563                         ansexp="$value"
3564                         case "$exp_file" in
3565                         '') value="$ans";;
3566                         esac
3567                         ;;
3568                 esac
3569                 case "$fullpath" in
3570                 true)
3571                         case "$ansexp" in
3572                         /*) value="$ansexp" ;;
3573                         [a-zA-Z]:/*) value="$ansexp" ;;
3574                         *)
3575                                 redo=true
3576                                 case "$already" in
3577                                 true)
3578                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3579                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3580                                         ;;
3581                                 *)
3582                                 echo "Please give a full path name, starting with slash." >&4
3583                                         case "$tilde" in
3584                                         true)
3585                                 echo "Note that using ~name is ok provided it expands well." >&4
3586                                                 already=true
3587                                                 ;;
3588                                         esac
3589                                 esac
3590                                 ;;
3591                         esac
3592                         ;;
3593                 esac
3594                 case "$redo" in
3595                 '')
3596                         case "$type" in
3597                         File)
3598                                 for fp in $gfpth; do
3599                                         if test "X$fp" = X.; then
3600                                             pf="$ansexp"
3601                                         else    
3602                                             pf="$fp/$ansexp"
3603                                         fi
3604                                         if test -f "$pf"; then
3605                                                 type=''
3606                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3607                                         then
3608                                                 echo "($value is not a plain file, but that's ok.)"
3609                                                 type=''
3610                                         fi
3611                                         if test X"$type" = X; then
3612                                             value="$pf"
3613                                             break
3614                                         fi
3615                                 done
3616                                 ;;
3617                         Directory)
3618                                 for fp in $gfpth; do
3619                                         if test "X$fp" = X.; then
3620                                             dir="$ans"
3621                                             direxp="$ansexp"
3622                                         else    
3623                                             dir="$fp/$ansexp"
3624                                             direxp="$fp/$ansexp"
3625                                         fi
3626                                         if test -d "$direxp"; then
3627                                                 type=''
3628                                                 value="$dir"
3629                                                 break
3630                                         fi
3631                                 done
3632                                 ;;
3633                         Locate)
3634                                 if test -d "$ansexp"; then
3635                                         echo "(Looking for $loc_file in directory $value.)"
3636                                         value="$value/$loc_file"
3637                                         ansexp="$ansexp/$loc_file"
3638                                 fi
3639                                 if test -f "$ansexp"; then
3640                                         type=''
3641                                 fi
3642                                 case "$nopath_ok" in
3643                                 true)   case "$value" in
3644                                         */*) ;;
3645                                         *)      echo "Assuming $value will be in people's path."
3646                                                 type=''
3647                                                 ;;
3648                                         esac
3649                                         ;;
3650                                 esac
3651                                 ;;
3652                         esac
3653
3654                         case "$skip" in
3655                         true) type='';
3656                         esac
3657
3658                         case "$type" in
3659                         '') ;;
3660                         *)
3661                                 if test "$fastread" = yes; then
3662                                         dflt=y
3663                                 else
3664                                         dflt=n
3665                                 fi
3666                                 rp="$what $value doesn't exist.  Use that name anyway?"
3667                                 . UU/myread
3668                                 dflt=''
3669                                 case "$ans" in
3670                                 y*) type='';;
3671                                 *) echo " ";;
3672                                 esac
3673                                 ;;
3674                         esac
3675                         ;;
3676                 esac
3677                 ;;
3678         esac
3679 done
3680 cd UU
3681 ans="$value"
3682 rp="$orig_rp"
3683 dflt="$orig_dflt"
3684 rm -f getfile.ok
3685 test "X$gfpthkeep" != Xy && gfpth=""
3686 EOSC
3687
3688 : What should the include directory be ?
3689 echo " "
3690 $echo $n "Hmm...  $c"
3691 dflt='/usr/include'
3692 incpath=''
3693 mips_type=''
3694 if $test -f /bin/mips && /bin/mips; then
3695         echo "Looks like a MIPS system..."
3696         $cat >usr.c <<'EOCP'
3697 #ifdef SYSTYPE_BSD43
3698 /bsd43
3699 #endif
3700 EOCP
3701         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3702                 dflt='/bsd43/usr/include'
3703                 incpath='/bsd43'
3704                 mips_type='BSD 4.3'
3705         else
3706                 mips_type='System V'
3707         fi
3708         $rm -f usr.c usr.out
3709         echo "and you're compiling with the $mips_type compiler and libraries."
3710         xxx_prompt=y
3711         echo "exit 0" >mips
3712 else
3713         echo "Doesn't look like a MIPS system."
3714         xxx_prompt=n
3715         echo "exit 1" >mips
3716 fi
3717 chmod +x mips
3718 $eunicefix mips
3719 case "$usrinc" in
3720 '') ;;
3721 *) dflt="$usrinc";;
3722 esac
3723 case "$xxx_prompt" in
3724 y)      fn=d/
3725         echo " "
3726         rp='Where are the include files you want to use?'
3727         . ./getfile
3728         usrinc="$ans"
3729         ;;
3730 *)      usrinc="$dflt"
3731         ;;
3732 esac
3733
3734 : Set private lib path
3735 case "$plibpth" in
3736 '') if ./mips; then
3737                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3738         fi;;
3739 esac
3740 case "$libpth" in
3741 ' ') dlist='';;
3742 '') dlist="$loclibpth $plibpth $glibpth";;
3743 *) dlist="$libpth";;
3744 esac
3745
3746 : Now check and see which directories actually exist, avoiding duplicates
3747 libpth=''
3748 for xxx in $dlist
3749 do
3750     if $test -d $xxx; then
3751                 case " $libpth " in
3752                 *" $xxx "*) ;;
3753                 *) libpth="$libpth $xxx";;
3754                 esac
3755     fi
3756 done
3757 $cat <<'EOM'
3758
3759 Some systems have incompatible or broken versions of libraries.  Among
3760 the directories listed in the question below, please remove any you
3761 know not to be holding relevant libraries, and add any that are needed.
3762 Say "none" for none.
3763
3764 EOM
3765 case "$libpth" in
3766 '') dflt='none';;
3767 *)
3768         set X $libpth
3769         shift
3770         dflt=${1+"$@"}
3771         ;;
3772 esac
3773 rp="Directories to use for library searches?"
3774 . ./myread
3775 case "$ans" in
3776 none) libpth=' ';;
3777 *) libpth="$ans";;
3778 esac
3779
3780 : compute shared library extension
3781 case "$so" in
3782 '')
3783         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3784                 dflt='sl'
3785         else
3786                 dflt='so'
3787         fi
3788         ;;
3789 *) dflt="$so";;
3790 esac
3791 $cat <<EOM
3792
3793 On some systems, shared libraries may be available.  Answer 'none' if
3794 you want to suppress searching of shared libraries for the remainder
3795 of this configuration.
3796
3797 EOM
3798 rp='What is the file extension used for shared libraries?'
3799 . ./myread
3800 so="$ans"
3801
3802 : Define several unixisms.
3803 : Hints files or command line option can be used to override them.
3804 : The convoluted testing is in case hints files set either the old
3805 : or the new name.
3806 case "$_exe" in
3807 '')     case "$exe_ext" in
3808     '') ;;
3809         *)      _exe="$exe_ext" ;;
3810         esac
3811         ;;
3812 esac
3813 case "$_a" in
3814 '')     case "$lib_ext" in
3815     '') _a='.a';;
3816         *)      _a="$lib_ext" ;;
3817         esac
3818         ;;
3819 esac
3820 case "$_o" in
3821 '') case "$obj_ext" in
3822         '')     _o='.o';;
3823         *)      _o="$obj_ext";;
3824         esac
3825         ;;
3826 esac
3827 case "$p_" in
3828 '') case "$path_sep" in
3829         '')     p_=':';;
3830         *)      p_="$path_sep";;
3831         esac
3832         ;;
3833 esac
3834 exe_ext=$_exe
3835 lib_ext=$_a
3836 obj_ext=$_o
3837 path_sep=$p_
3838
3839 : Which makefile gets called first.  This is used by make depend.
3840 case "$firstmakefile" in
3841 '') firstmakefile='makefile';;
3842 esac
3843
3844 case "$usesocks" in
3845 $define|true|[yY]*)     dflt='y';;
3846 *) dflt='n';;
3847 esac
3848 cat <<EOM
3849
3850 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3851 Configure must be run with -Dusesocks.
3852
3853 If this doesn't make any sense to you, just accept the default '$dflt'.
3854 EOM
3855 rp='Build Perl for SOCKS?'
3856 . ./myread
3857 case "$ans" in
3858 y|Y)    val="$define" ;;     
3859 *)      val="$undef" ;;
3860 esac
3861 set usesocks
3862 eval $setvar
3863
3864 : Looking for optional libraries
3865 echo " "
3866 echo "Checking for optional libraries..." >&4
3867 case "$libs" in
3868 ' '|'') dflt='';;
3869 *) dflt="$libs";;
3870 esac
3871 case "$libswanted" in
3872 '') libswanted='c_s';;
3873 esac
3874 case "$usesocks" in
3875 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3876 esac
3877 libsfound=''
3878 libsfiles=''
3879 libsdirs=''
3880 libspath=''
3881 for thisdir in $libpth $xlibpth; do
3882   test -d $thisdir && libspath="$libspath $thisdir"
3883 done
3884 for thislib in $libswanted; do
3885         for thisdir in $libspath; do
3886             xxx=''
3887             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3888                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3889                 $test -f "$xxx" && eval $libscheck
3890                 $test -f "$xxx" && libstyle=shared
3891             fi
3892             if test ! -f "$xxx"; then
3893                 xxx=$thisdir/lib$thislib.$so
3894                 $test -f "$xxx" && eval $libscheck
3895                 $test -f "$xxx" && libstyle=shared
3896             fi  
3897             if test ! -f "$xxx"; then
3898                 xxx=$thisdir/lib$thislib$_a
3899                 $test -f "$xxx" && eval $libscheck
3900                 $test -f "$xxx" && libstyle=static
3901             fi
3902             if test ! -f "$xxx"; then
3903                 xxx=$thisdir/$thislib$_a
3904                 $test -f "$xxx" && eval $libscheck
3905                 $test -f "$xxx" && libstyle=static
3906             fi
3907             if test ! -f "$xxx"; then
3908                 xxx=$thisdir/lib${thislib}_s$_a
3909                 $test -f "$xxx" && eval $libscheck
3910                 $test -f "$xxx" && libstyle=static
3911                 $test -f "$xxx" && thislib=${thislib}_s
3912             fi
3913             if test ! -f "$xxx"; then
3914                 xxx=$thisdir/Slib$thislib$_a
3915                 $test -f "$xxx" && eval $libscheck
3916                 $test -f "$xxx" && libstyle=static
3917             fi
3918             if $test -f "$xxx"; then
3919                 case "$libstyle" in
3920                 shared) echo "Found -l$thislib (shared)." ;;
3921                 static) echo "Found -l$thislib." ;;
3922                 *)      echo "Found -l$thislib ($libstyle)." ;;
3923                 esac
3924                 case " $dflt " in
3925                 *"-l$thislib "*);;
3926                 *) dflt="$dflt -l$thislib"
3927                    libsfound="$libsfound $xxx"
3928                    yyy=`basename $xxx`
3929                    libsfiles="$libsfiles $yyy"
3930                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3931                    case " $libsdirs " in
3932                    *" $yyy "*) ;;
3933                    *) libsdirs="$libsdirs $yyy" ;;
3934                    esac
3935                    ;;
3936                 esac
3937                 break
3938             fi  
3939         done
3940         if $test ! -f "$xxx"; then
3941             echo "No -l$thislib."
3942         fi
3943 done
3944 set X $dflt
3945 shift
3946 dflt="$*"
3947 case "$libs" in
3948 '') dflt="$dflt";;
3949 *) dflt="$libs";;
3950 esac
3951 case "$dflt" in
3952 ' '|'') dflt='none';;
3953 esac
3954
3955 $cat <<EOM
3956
3957 In order to compile $package on your machine, a number of libraries
3958 are usually needed.  Include any other special libraries here as well.
3959 Say "none" for none.  The default list is almost always right.
3960 EOM
3961
3962 echo " "
3963 rp="What libraries to use?"
3964 . ./myread
3965 case "$ans" in
3966 none) libs=' ';;
3967 *) libs="$ans";;
3968 esac
3969
3970 : determine optimization, if desired, or use for debug flag also
3971 case "$optimize" in
3972 ' '|$undef) dflt='none';;
3973 '') dflt='-O';;
3974 *) dflt="$optimize";;
3975 esac
3976 $cat <<EOH
3977
3978 By default, $package compiles with the -O flag to use the optimizer.
3979 Alternately, you might want to use the symbolic debugger, which uses
3980 the -g flag (on traditional Unix systems).  Either flag can be
3981 specified here.  To use neither flag, specify the word "none".
3982
3983 EOH
3984 rp="What optimizer/debugger flag should be used?"
3985 . ./myread
3986 optimize="$ans"
3987 case "$optimize" in
3988 'none') optimize=" ";;
3989 esac
3990
3991 dflt=''
3992 : We will not override a previous value, but we might want to
3993 : augment a hint file
3994 case "$hint" in
3995 default|recommended)
3996         case "$gccversion" in
3997         1*) dflt='-fpcc-struct-return' ;;
3998         esac
3999         case "$optimize" in
4000         *-g*) dflt="$dflt -DDEBUGGING";;
4001         esac
4002         case "$gccversion" in
4003         2*) if test -d /etc/conf/kconfig.d &&
4004                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4005                 then
4006                         dflt="$dflt -posix"
4007                 fi
4008                 ;;
4009         esac
4010         case "$gccversion" in
4011         1*) ;;
4012         2.[0-8]*) ;;
4013         ?*)     echo " "
4014                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4015                 echo 'int main(void) { return 0; }' > gcctest.c
4016                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4017                         echo "Yes, it does." 2>&1
4018                         case "$ccflags" in
4019                         *strict-aliasing*) 
4020                                 echo "Leaving current flags $ccflags alone." 2>&1
4021                                 ;;
4022                         *) dflt="$dflt -fno-strict-aliasing" ;;
4023                         esac
4024                 else
4025                         echo "Nope, it doesn't, but that's ok." 2>&1
4026                 fi
4027                 ;;
4028         esac
4029         ;;
4030 esac
4031
4032 case "$mips_type" in
4033 *BSD*|'') inclwanted="$locincpth $usrinc";;
4034 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4035 esac
4036 for thisincl in $inclwanted; do
4037         if $test -d $thisincl; then
4038                 if $test x$thisincl != x$usrinc; then
4039                         case "$dflt" in
4040                         *$thisincl*);;
4041                         *) dflt="$dflt -I$thisincl";;
4042                         esac
4043                 fi
4044         fi
4045 done
4046
4047 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4048         xxx=true;
4049 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4050         xxx=true;
4051 else
4052         xxx=false;
4053 fi;
4054 if $xxx; then
4055         case "$dflt" in
4056         *$2*);;
4057         *) dflt="$dflt -D$2";;
4058         esac;
4059 fi'
4060
4061 set signal.h LANGUAGE_C; eval $inctest
4062
4063 case "$usesocks" in
4064 $define)
4065         ccflags="$ccflags -DSOCKS"
4066         ;;
4067 esac
4068
4069 case "$hint" in
4070 default|recommended) dflt="$ccflags $dflt" ;;
4071 *) dflt="$ccflags";;
4072 esac
4073
4074 case "$dflt" in
4075 ''|' ') dflt=none;;
4076 esac
4077 $cat <<EOH
4078
4079 Your C compiler may want other flags.  For this question you should include
4080 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4081 but you should NOT include libraries or ld flags like -lwhatever.  If you
4082 want $package to honor its debug switch, you should include -DDEBUGGING here.
4083 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4084
4085 To use no flags, specify the word "none".
4086
4087 EOH
4088 set X $dflt
4089 shift
4090 dflt=${1+"$@"}
4091 rp="Any additional cc flags?"
4092 . ./myread
4093 case "$ans" in
4094 none) ccflags='';;
4095 *) ccflags="$ans";;
4096 esac
4097
4098 : the following weeds options from ccflags that are of no interest to cpp
4099 cppflags="$ccflags"
4100 case "$gccversion" in
4101 1*) cppflags="$cppflags -D__GNUC__"
4102 esac
4103 case "$mips_type" in
4104 '');;
4105 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4106 esac
4107 case "$cppflags" in
4108 '');;
4109 *)
4110         echo " "
4111         echo "Let me guess what the preprocessor flags are..." >&4
4112         set X $cppflags
4113         shift
4114         cppflags=''
4115         $cat >cpp.c <<'EOM'
4116 #define BLURFL foo
4117
4118 BLURFL xx LFRULB
4119 EOM
4120         previous=''
4121         for flag in $*
4122         do
4123                 case "$flag" in
4124                 -*) ftry="$flag";;
4125                 *) ftry="$previous $flag";;
4126                 esac
4127                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4128                         >cpp1.out 2>/dev/null && \
4129                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4130                         >cpp2.out 2>/dev/null && \
4131                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4132                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4133                 then
4134                         cppflags="$cppflags $ftry"
4135                         previous=''
4136                 else
4137                         previous="$flag"
4138                 fi
4139         done
4140         set X $cppflags
4141         shift
4142         cppflags=${1+"$@"}
4143         case "$cppflags" in
4144         *-*)  echo "They appear to be: $cppflags";;
4145         esac
4146         $rm -f cpp.c cpp?.out
4147         ;;
4148 esac
4149
4150 : flags used in final linking phase
4151 case "$ldflags" in
4152 '') if ./venix; then
4153                 dflt='-i -z'
4154         else
4155                 dflt=''
4156         fi
4157         case "$ccflags" in
4158         *-posix*) dflt="$dflt -posix" ;;
4159         esac
4160         ;;
4161 *) dflt="$ldflags";;
4162 esac
4163
4164 : Try to guess additional flags to pick up local libraries.
4165 for thislibdir in $libpth; do
4166         case " $loclibpth " in
4167         *" $thislibdir "*)
4168                 case "$dflt " in 
4169                 *"-L$thislibdir "*) ;;
4170                 *)  dflt="$dflt -L$thislibdir" ;;
4171                 esac
4172                 ;;
4173         esac
4174 done
4175
4176 case "$dflt" in
4177 '') dflt='none' ;;
4178 esac
4179
4180 $cat <<EOH
4181
4182 Your C linker may need flags.  For this question you should
4183 include -L/whatever and any other flags used by the C linker, but you
4184 should NOT include libraries like -lwhatever.
4185
4186 Make sure you include the appropriate -L/path flags if your C linker
4187 does not normally search all of the directories you specified above,
4188 namely
4189         $libpth
4190 To use no flags, specify the word "none".
4191
4192 EOH
4193
4194 rp="Any additional ld flags (NOT including libraries)?"
4195 . ./myread
4196 case "$ans" in
4197 none) ldflags='';;
4198 *) ldflags="$ans";;
4199 esac
4200 rmlist="$rmlist pdp11"
4201
4202 : coherency check
4203 echo " "
4204 echo "Checking your choice of C compiler and flags for coherency..." >&4
4205 $cat > try.c <<'EOF'
4206 #include <stdio.h>
4207 int main() { printf("Ok\n"); exit(0); }
4208 EOF
4209 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4210 shift
4211 $cat >try.msg <<'EOM'
4212 I've tried to compile and run the following simple program:
4213
4214 EOM
4215 $cat try.c >> try.msg
4216
4217 $cat >> try.msg <<EOM
4218
4219 I used the command:
4220
4221         $*
4222         ./try
4223
4224 and I got the following output:
4225
4226 EOM
4227 dflt=y
4228 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4229         if sh -c './try' >>try.msg 2>&1; then
4230                 xxx=`./try`
4231                 case "$xxx" in
4232                 "Ok") dflt=n ;;
4233                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4234                         case " $libs " in
4235                         *" -lsfio "*)
4236                                 cat >> try.msg <<'EOQS'
4237 If $libs contains -lsfio, and sfio is mis-configured, then it
4238 sometimes (apparently) runs and exits with a 0 status, but with no
4239 output!  It may have to do with sfio's use of _exit vs. exit.
4240
4241 EOQS
4242                                 rp="You have a big problem.  Shall I abort Configure"
4243                                 dflt=y
4244                                 ;;
4245                         esac
4246                         ;;
4247                 esac
4248         else
4249                 echo "The program compiled OK, but exited with status $?." >>try.msg
4250                 rp="You have a problem.  Shall I abort Configure"
4251                 dflt=y
4252         fi
4253 else
4254         echo "I can't compile the test program." >>try.msg
4255         rp="You have a BIG problem.  Shall I abort Configure"
4256         dflt=y
4257 fi
4258 case "$dflt" in
4259 y)
4260         $cat try.msg >&4
4261         case "$knowitall" in
4262         '')
4263                 echo "(The supplied flags or libraries might be incorrect.)"
4264                 ;;
4265         *) dflt=n;;
4266         esac
4267         echo " "
4268         . ./myread
4269         case "$ans" in
4270         n*|N*) ;;
4271         *)      echo "Ok.  Stopping Configure." >&4
4272                 exit 1
4273                 ;;
4274         esac
4275         ;;
4276 n) echo "OK, that should do.";;
4277 esac
4278 $rm -f try try.* core
4279
4280 : define an is-a-typedef? function
4281 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4282 case "$inclist" in
4283 "") inclist="sys/types.h";;
4284 esac;
4285 eval "varval=\$$var";
4286 case "$varval" in
4287 "")
4288         $rm -f temp.c;
4289         for inc in $inclist; do
4290                 echo "#include <$inc>" >>temp.c;
4291         done;
4292         echo "#ifdef $type" >> temp.c;
4293         echo "printf(\"We have $type\");" >> temp.c;
4294         echo "#endif" >> temp.c;
4295         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4296         if $contains $type temp.E >/dev/null 2>&1; then
4297                 eval "$var=\$type";
4298         else
4299                 eval "$var=\$def";
4300         fi;
4301         $rm -f temp.?;;
4302 *) eval "$var=\$varval";;
4303 esac'
4304
4305 : define an is-a-typedef? function that prompts if the type is not available.
4306 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4307 case "$inclist" in
4308 "") inclist="sys/types.h";;
4309 esac;
4310 eval "varval=\$$var";
4311 case "$varval" in
4312 "")
4313         $rm -f temp.c;
4314         for inc in $inclist; do
4315                 echo "#include <$inc>" >>temp.c;
4316         done;
4317         echo "#ifdef $type" >> temp.c;
4318         echo "printf(\"We have $type\");" >> temp.c;
4319         echo "#endif" >> temp.c;
4320         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4321         echo " " ;
4322         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4323         if $contains $type temp.E >/dev/null 2>&1; then
4324                 echo "$type found." >&4;
4325                 eval "$var=\$type";
4326         else
4327                 echo "$type NOT found." >&4;
4328                 dflt="$def";
4329                 . ./myread ;
4330                 eval "$var=\$ans";
4331         fi;
4332         $rm -f temp.?;;
4333 *) eval "$var=\$varval";;
4334 esac'
4335
4336 : define a shorthand compile call
4337 compile='
4338 mc_file=$1;
4339 shift;
4340 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4341 : define a shorthand compile call for compilations that should be ok.
4342 compile_ok='
4343 mc_file=$1;
4344 shift;
4345 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4346
4347 : check for lengths of integral types
4348 echo " "
4349 case "$intsize" in
4350 '')
4351         echo "Checking to see how big your integers are..." >&4
4352         $cat >intsize.c <<'EOCP'
4353 #include <stdio.h>
4354 int main()
4355 {
4356         printf("intsize=%d;\n", (int)sizeof(int));
4357         printf("longsize=%d;\n", (int)sizeof(long));
4358         printf("shortsize=%d;\n", (int)sizeof(short));
4359         exit(0);
4360 }
4361 EOCP
4362         set intsize
4363         if eval $compile_ok && ./intsize > /dev/null; then
4364                 eval `./intsize`
4365                 echo "Your integers are $intsize bytes long."
4366                 echo "Your long integers are $longsize bytes long."
4367                 echo "Your short integers are $shortsize bytes long."
4368         else
4369                 $cat >&4 <<EOM
4370 !
4371 Help! I can't compile and run the intsize test program: please enlighten me!
4372 (This is probably a misconfiguration in your system or libraries, and
4373 you really ought to fix it.  Still, I'll try anyway.)
4374 !
4375 EOM
4376                 dflt=4
4377                 rp="What is the size of an integer (in bytes)?"
4378                 . ./myread
4379                 intsize="$ans"
4380                 dflt=$intsize
4381                 rp="What is the size of a long integer (in bytes)?"
4382                 . ./myread
4383                 longsize="$ans"
4384                 dflt=2
4385                 rp="What is the size of a short integer (in bytes)?"
4386                 . ./myread
4387                 shortsize="$ans"
4388         fi
4389         ;;
4390 esac
4391 $rm -f intsize intsize.*
4392
4393 : see what type lseek is declared as in the kernel
4394 rp="What is the type used for lseek's offset on this system?"
4395 set off_t lseektype long stdio.h sys/types.h
4396 eval $typedef_ask
4397
4398 echo " "
4399 echo "Checking to see how big your file offsets are..." >&4
4400 $cat >try.c <<EOCP
4401 #include <sys/types.h>
4402 #include <stdio.h>
4403 int main()
4404 {
4405     printf("%d\n", (int)sizeof($lseektype));
4406     return(0); 
4407 }
4408 EOCP
4409 set try
4410 if eval $compile_ok; then
4411         lseeksize=`./try`
4412         echo "Your file offsets are $lseeksize bytes long."
4413 else
4414         dflt=$longsize
4415         echo " "
4416         echo "(I can't seem to compile the test program.  Guessing...)"
4417         rp="What is the size of your file offsets (in bytes)?"
4418         . ./myread
4419         lseeksize="$ans"
4420 fi
4421 $rm -f try.c try
4422
4423 : see what type file positions are declared as in the library
4424 rp="What is the type for file position used by fsetpos()?"
4425 set fpos_t fpostype long stdio.h sys/types.h
4426 eval $typedef_ask
4427
4428 echo " "
4429 case "$fpostype" in
4430 *_t) zzz="$fpostype"    ;;
4431 *)   zzz="fpos_t"       ;;
4432 esac
4433 echo "Checking the size of $zzz..." >&4 
4434 cat > try.c <<EOCP
4435 #include <sys/types.h>
4436 #include <stdio.h>
4437 int main() {
4438     printf("%d\n", (int)sizeof($fpostype));
4439     exit(0);
4440 }
4441 EOCP
4442 set try
4443 if eval $compile_ok; then
4444         yyy=`./try`
4445         case "$yyy" in
4446         '')     fpossize=4
4447                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4448                 ;;
4449         *)      fpossize=$yyy
4450                 echo "Your $zzz is $fpossize bytes long."
4451                 ;;
4452         esac
4453 else
4454         dflt="$longsize"
4455         echo " " >&4
4456         echo "(I can't compile the test program.  Guessing...)" >&4
4457         rp="What is the size of your file positions (in bytes)?"
4458         . ./myread
4459         fpossize="$ans"
4460 fi
4461
4462
4463
4464 # Backward compatibility (uselfs is deprecated).
4465 case "$uselfs" in
4466 "$define"|true|[yY]*)
4467         cat <<EOM >&4
4468
4469 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4470 EOM
4471         uselargefiles="$define"
4472         ;;
4473 esac                          
4474
4475 case "$lseeksize:$fpossize" in
4476 8:8) cat <<EOM
4477
4478 You can have files larger than 2 gigabytes.
4479 EOM
4480    val="$define" ;;
4481 *)    case "$uselargefiles" in
4482    "$undef"|false|[nN]*) dflt='n' ;;
4483    *)   dflt='y' ;;
4484    esac
4485    cat <<EOM
4486
4487 Perl can be built to understand large files (files larger than 2 gigabytes)
4488 on some systems.  To do so, Configure can be run with -Duselargefiles.
4489
4490 If this doesn't make any sense to you, just accept the default '$dflt'.
4491 EOM
4492    rp='Try to understand large files, if available?'
4493    . ./myread
4494    case "$ans" in
4495    y|Y)         val="$define" ;;
4496    *)           val="$undef"  ;;
4497    esac
4498    ;;
4499 esac
4500 set uselargefiles
4501 eval $setvar
4502 case "$uselargefiles" in
4503 "$define")
4504 : Look for a hint-file generated 'call-back-unit'.  If the
4505 : user has specified that a large files perl is to be built,
4506 : we may need to set or change some other defaults.
4507         if $test -f uselargefiles.cbu; then
4508                 echo "Your platform has some specific hints for large file builds, using them..."
4509                 . ./uselargefiles.cbu
4510                 echo " "
4511                 echo "Rechecking to see how big your file offsets are..." >&4
4512                 $cat >try.c <<EOCP
4513 #include <sys/types.h>
4514 #include <stdio.h>
4515 int main()
4516 {
4517     printf("%d\n", (int)sizeof($lseektype));
4518     return(0); 
4519 }
4520 EOCP
4521                 set try
4522                 if eval $compile_ok; then
4523                         lseeksize=`./try`
4524                         $echo "Your file offsets are now $lseeksize bytes long."
4525                 else
4526                         dflt="$lseeksize"
4527                         echo " "
4528                         echo "(I can't seem to compile the test program.  Guessing...)"
4529                         rp="What is the size of your file offsets (in bytes)?"
4530                         . ./myread
4531                         lseeksize="$ans"
4532                 fi
4533                 case "$fpostype" in
4534                 *_t) zzz="$fpostype"    ;;
4535                 *)   zzz="fpos_t"       ;;
4536                 esac
4537                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4538                 $cat > try.c <<EOCP
4539 #include <sys/types.h>
4540 #include <stdio.h>
4541 int main() {
4542     printf("%d\n", (int)sizeof($fpostype));
4543     exit(0);
4544 }
4545 EOCP
4546                 set try
4547                 if eval $compile_ok; then
4548                         yyy=`./try`
4549                         dflt="$lseeksize"
4550                         case "$yyy" in
4551                         '')     echo " "
4552                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4553                                 ;;
4554                         *)      fpossize=$yyy
4555                                 echo " $fpossize bytes." >&4
4556                                 ;;
4557                         esac
4558                 else
4559                         dflt="$fpossize"
4560                         echo " "
4561                         echo "(I can't compile the test program.  Guessing...)" >&4
4562                         rp="What is the size of your file positions (in bytes)?"
4563                         . ./myread
4564                         fpossize="$ans"
4565                 fi
4566                 $rm -f try.c try
4567         fi
4568         ;;
4569 esac
4570
4571
4572 case "$usemorebits" in
4573 "$define"|true|[yY]*)
4574         use64bitint="$define"
4575         uselongdouble="$define"
4576         usemorebits="$define"
4577         ;;
4578 *)      usemorebits="$undef"
4579         ;;
4580 esac
4581
4582
4583 case "$uselonglong" in
4584 "$define"|true|[yY]*)
4585         cat <<EOM >&4
4586
4587 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4588 EOM
4589         use64bitint="$define"
4590         ;;
4591 esac                          
4592 case "$use64bits" in
4593 "$define"|true|[yY]*)
4594         cat <<EOM >&4
4595
4596 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4597 EOM
4598         use64bitint="$define"
4599         ;;
4600 esac                          
4601 case "$use64bitints" in
4602 "$define"|true|[yY]*)
4603         cat <<EOM >&4
4604
4605 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4606 EOM
4607         use64bitint="$define"
4608         ;;
4609 esac                          
4610 case "$use64bitsint" in
4611 "$define"|true|[yY]*)
4612         cat <<EOM >&4
4613
4614 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4615 EOM
4616         use64bitint="$define"
4617         ;;
4618 esac                          
4619 case "$uselonglongs" in
4620 "$define"|true|[yY]*)
4621         cat <<EOM >&4
4622
4623 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4624 EOM
4625         use64bitint="$define"
4626         ;;
4627 esac                          
4628 case "$use64bitsall" in
4629 "$define"|true|[yY]*)
4630         cat <<EOM >&4
4631
4632 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4633 EOM
4634         use64bitall="$define"
4635         ;;
4636 esac                          
4637
4638 case "$ccflags" in
4639 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4640 esac
4641 case "$use64bitall" in
4642 "$define"|true|[yY]*) use64bitint="$define" ;;
4643 esac
4644
4645 case "$longsize" in
4646 8) cat <<EOM
4647
4648 You have natively 64-bit long integers.
4649 EOM
4650    val="$define"
4651    ;;
4652 *) case "$use64bitint" in
4653    "$define"|true|[yY]*) dflt='y';;
4654    *) dflt='n';;
4655    esac
4656    cat <<EOM
4657
4658 Perl can be built to take advantage of 64-bit integer types
4659 on some systems.  To do so, Configure can be run with -Duse64bitint.
4660 Choosing this option will most probably introduce binary incompatibilities.
4661
4662 If this doesn't make any sense to you, just accept the default '$dflt'.
4663 EOM
4664    rp='Try to use 64-bit integers, if available?'
4665    . ./myread
4666    case "$ans" in
4667    [yY]*) val="$define" ;;
4668    *)     val="$undef"  ;;
4669    esac
4670    ;;
4671 esac
4672 set use64bitint
4673 eval $setvar
4674
4675 case "$use64bitall" in
4676 "$define"|true|[yY]*) dflt='y' ;;
4677 *) case "$longsize" in
4678    8) dflt='y' ;;
4679    *) dflt='n' ;;
4680    esac
4681    ;;
4682 esac    
4683 cat <<EOM
4684
4685 You may also choose to try maximal 64-bitness.  It means using as much
4686 64-bitness as possible on the platform.  This in turn means even more
4687 binary incompatibilities.  On the other hand, your platform may not
4688 have any more 64-bitness available than what you already have chosen.
4689
4690 If this doesn't make any sense to you, just accept the default '$dflt'.
4691 EOM
4692 rp='Try to use maximal 64-bit support, if available?'
4693 . ./myread
4694 case "$ans" in
4695 [yY]*) val="$define" ;;
4696 *)     val="$undef"  ;;
4697 esac
4698 set use64bitall
4699 eval $setvar
4700 case "$use64bitall" in
4701 "$define")
4702         case "$use64bitint" in
4703         "$undef")
4704                 cat <<EOM
4705
4706 Since you have chosen a maximally 64-bit build, I'm also turning on
4707 the use of 64-bit integers.
4708 EOM
4709                 use64bitint="$define" ;;
4710         esac
4711         ;;
4712 esac
4713
4714 case "$use64bitint" in
4715 "$define"|true|[yY]*)
4716 : Look for a hint-file generated 'call-back-unit'.  If the
4717 : user has specified that a 64-bit perl is to be built,
4718 : we may need to set or change some other defaults.
4719         if $test -f use64bitint.cbu; then
4720                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4721                 . ./use64bitint.cbu
4722         fi
4723         case "$longsize" in
4724         4) case "$archname64" in
4725            '') archname64=64int ;;
4726            esac
4727            ;;
4728         esac
4729         ;;
4730 esac
4731
4732 case "$use64bitall" in
4733 "$define"|true|[yY]*)
4734 : Look for a hint-file generated 'call-back-unit'.  If the
4735 : user has specified that a maximally 64-bit perl is to be built,
4736 : we may need to set or change some other defaults.
4737         if $test -f use64bitall.cbu; then
4738                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4739                 . ./use64bitall.cbu
4740         fi
4741         case "$longsize" in
4742         4) case "$archname64" in
4743            ''|64int) archname64=64all ;;
4744            esac
4745            ;;
4746         esac
4747         ;;
4748 esac
4749
4750 : determine the architecture name
4751 echo " "
4752 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4753         tarch=`arch`"-$osname"
4754 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4755         if uname -m > tmparch 2>&1 ; then
4756                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4757                         -e 's/$/'"-$osname/" tmparch`
4758         else
4759                 tarch="$osname"
4760         fi
4761         $rm -f tmparch
4762 else
4763         tarch="$osname"
4764 fi
4765 case "$myarchname" in
4766 ''|"$tarch") ;;
4767 *)
4768         echo "(Your architecture name used to be $myarchname.)"
4769         archname=''
4770         ;;
4771 esac
4772 myarchname="$tarch"
4773 case "$archname" in
4774 '') dflt="$tarch";;
4775 *) dflt="$archname";;
4776 esac
4777 rp='What is your architecture name'
4778 . ./myread
4779 archname="$ans"
4780 case "$usethreads" in
4781 $define)
4782         echo "Threads selected." >&4
4783         case "$archname" in
4784         *-thread*) echo "...and architecture name already has -thread." >&4
4785                 ;;
4786         *)      archname="$archname-thread"
4787                 echo "...setting architecture name to $archname." >&4
4788                 ;;
4789         esac
4790         ;;
4791 esac
4792 case "$usemultiplicity" in
4793 $define)
4794         echo "Multiplicity selected." >&4
4795         case "$archname" in
4796         *-multi*) echo "...and architecture name already has -multi." >&4
4797                 ;;
4798         *)      archname="$archname-multi"
4799                 echo "...setting architecture name to $archname." >&4
4800                 ;;
4801         esac
4802         ;;
4803 esac
4804 case "$use64bitint" in
4805 $define)
4806         case "$archname64" in
4807         '')
4808                 ;;
4809         *)
4810                 case "$archname" in
4811                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4812                         ;;
4813                 *)      archname="$archname-$archname64"
4814                         echo "...setting architecture name to $archname." >&4
4815                         ;;
4816                 esac
4817                 ;;
4818         esac
4819 esac
4820
4821 : determine root of directory hierarchy where package will be installed.
4822 case "$prefix" in
4823 '')
4824         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4825         ;;
4826 *)
4827         dflt="$prefix"
4828         ;;
4829 esac
4830 $cat <<EOM
4831
4832 By default, $package will be installed in $dflt/bin, manual pages
4833 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4834 installation directories. Typically this is something like /usr/local.
4835 If you wish to have binaries under /usr/bin but other parts of the
4836 installation under /usr/local, that's ok: you will be prompted
4837 separately for each of the installation directories, the prefix being
4838 only used to set the defaults.
4839
4840 EOM
4841 fn=d~
4842 rp='Installation prefix to use?'
4843 . ./getfile
4844 oldprefix=''
4845 case "$prefix" in
4846 '') ;;
4847 *)
4848         case "$ans" in
4849         "$prefix") ;;
4850         *) oldprefix="$prefix";;
4851         esac
4852         ;;
4853 esac
4854 prefix="$ans"
4855 prefixexp="$ansexp"
4856
4857 : is AFS running?
4858 echo " "
4859 case "$afs" in
4860 $define|true)   afs=true ;;
4861 $undef|false)   afs=false ;;
4862 *)      if test -d /afs; then
4863                 afs=true
4864         else
4865                 afs=false
4866         fi
4867         ;;
4868 esac
4869 if $afs; then
4870         echo "AFS may be running... I'll be extra cautious then..." >&4
4871 else
4872         echo "AFS does not seem to be running..." >&4
4873 fi
4874
4875 : determine installation prefix for where package is to be installed.
4876 if $afs; then 
4877 $cat <<EOM
4878
4879 Since you are running AFS, I need to distinguish the directory in which
4880 files will reside from the directory in which they are installed (and from
4881 which they are presumably copied to the former directory by occult means).
4882
4883 EOM
4884         case "$installprefix" in
4885         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4886         *) dflt="$installprefix";;
4887         esac
4888 else
4889 $cat <<EOM
4890
4891 In some special cases, particularly when building $package for distribution,
4892 it is convenient to distinguish between the directory in which files should 
4893 be installed from the directory ($prefix) in which they 
4894 will eventually reside.  For most users, these two directories are the same.
4895
4896 EOM
4897         case "$installprefix" in
4898         '') dflt=$prefix ;;
4899         *) dflt=$installprefix;;
4900         esac
4901 fi
4902 fn=d~
4903 rp='What installation prefix should I use for installing files?'
4904 . ./getfile
4905 installprefix="$ans"
4906 installprefixexp="$ansexp"
4907
4908 : set the prefixit variable, to compute a suitable default value
4909 prefixit='case "$3" in
4910 ""|none)
4911         case "$oldprefix" in
4912         "") eval "$1=\"\$$2\"";;
4913         *)
4914                 case "$3" in
4915                 "") eval "$1=";;
4916                 none)
4917                         eval "tp=\"\$$2\"";
4918                         case "$tp" in
4919                         ""|" ") eval "$1=\"\$$2\"";;
4920                         *) eval "$1=";;
4921                         esac;;
4922                 esac;;
4923         esac;;
4924 *)
4925         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4926         case "$tp" in
4927         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4928         /*-$oldprefix/*|\~*-$oldprefix/*)
4929                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4930         *) eval "$1=\"\$$2\"";;
4931         esac;;
4932 esac'
4933
4934
4935 : get the patchlevel
4936 echo " "
4937 echo "Getting the current patchlevel..." >&4
4938 if $test -r $rsrc/patchlevel.h;then
4939         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4940         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4941         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4942         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4943         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4944         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4945 else
4946         revision=0
4947         patchlevel=0
4948         subversion=0
4949         api_revision=0
4950         api_version=0
4951         api_subversion=0
4952 fi
4953 $echo $n "(You have $package revision $revision" $c
4954 $echo $n " patchlevel $patchlevel" $c
4955 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4956 echo ".)"
4957 case "$osname" in
4958 dos|vms)
4959         : XXX Should be a Configure test for double-dots in filenames.
4960         version=`echo $revision $patchlevel $subversion | \
4961                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4962         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4963                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4964         ;;
4965 *)
4966         version=`echo $revision $patchlevel $subversion | \
4967                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4968         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4969                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4970         ;;
4971 esac
4972 : Special case the 5.005_xx maintenance series, which used 5.005
4973 : without any subversion label as a subdirectory in $sitelib
4974 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4975         api_versionstring='5.005'
4976 fi
4977
4978 : determine installation style
4979 : For now, try to deduce it from prefix unless it is already set.
4980 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4981 case "$installstyle" in
4982 '')     case "$prefix" in
4983                 *perl*) dflt='lib';;
4984                 *) dflt='lib/perl5' ;;
4985         esac
4986         ;;
4987 *)      dflt="$installstyle" ;;
4988 esac
4989 : Probably not worth prompting for this since we prompt for all
4990 : the directories individually, and the prompt would be too long and
4991 : confusing anyway.
4992 installstyle=$dflt
4993
4994 : determine where private library files go
4995 : Usual default is /usr/local/lib/perl5/$version.
4996 : Also allow things like /opt/perl/lib/$version, since 
4997 : /opt/perl/lib/perl5... would be redundant.
4998 : The default "style" setting is made in installstyle.U
4999 case "$installstyle" in
5000 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5001 *)       set dflt privlib lib/$version ;;
5002 esac
5003 eval $prefixit
5004 $cat <<EOM
5005
5006 There are some auxiliary files for $package that need to be put into a
5007 private library directory that is accessible by everyone.
5008
5009 EOM
5010 fn=d~+
5011 rp='Pathname where the private library files will reside?'
5012 . ./getfile
5013 privlib="$ans"
5014 privlibexp="$ansexp"
5015 : Change installation prefix, if necessary.
5016 if $test X"$prefix" != X"$installprefix"; then
5017         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5018 else
5019         installprivlib="$privlibexp"
5020 fi
5021
5022 : set the prefixup variable, to restore leading tilda escape
5023 prefixup='case "$prefixexp" in
5024 "$prefix") ;;
5025 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5026 esac'
5027
5028 : determine where public architecture dependent libraries go
5029 set archlib archlib
5030 eval $prefixit
5031 : privlib default is /usr/local/lib/$package/$version
5032 : archlib default is /usr/local/lib/$package/$version/$archname
5033 : privlib may have an optional trailing /share.
5034 tdflt=`echo $privlib | $sed 's,/share$,,'`
5035 tdflt=$tdflt/$archname
5036 case "$archlib" in
5037 '')     dflt=$tdflt
5038         ;;
5039 *)      dflt="$archlib"
5040     ;;
5041 esac
5042 $cat <<EOM
5043
5044 $spackage contains architecture-dependent library files.  If you are
5045 sharing libraries in a heterogeneous environment, you might store
5046 these files in a separate location.  Otherwise, you can just include
5047 them with the rest of the public library files.
5048
5049 EOM
5050 fn=d+~
5051 rp='Where do you want to put the public architecture-dependent libraries?'
5052 . ./getfile
5053 archlib="$ans"
5054 archlibexp="$ansexp"
5055 if $test X"$archlib" = X"$privlib"; then
5056         d_archlib="$undef"
5057 else
5058         d_archlib="$define"
5059 fi
5060 : Change installation prefix, if necessary.
5061 if $test X"$prefix" != X"$installprefix"; then
5062         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5063 else
5064         installarchlib="$archlibexp"
5065 fi
5066
5067
5068 : Binary compatibility with 5.005 is not possible for builds
5069 : with advanced features
5070 case "$usethreads$usemultiplicity" in
5071 *define*)
5072         bincompat5005="$undef"
5073         d_bincompat5005="$undef"
5074         ;;
5075 *)      $cat <<EOM
5076
5077 This version of Perl can be compiled for binary compatibility with 5.005.
5078 If you decide to do so, you will be able to continue using most of the
5079 extensions that were compiled for Perl 5.005.
5080
5081 EOM
5082         case "$bincompat5005$d_bincompat5005" in
5083         *"$undef"*) dflt=n ;;
5084         *) dflt=y ;;
5085         esac
5086         rp='Binary compatibility with Perl 5.005?'
5087         . ./myread
5088         case "$ans" in
5089         y*) val="$define" ;;
5090         *)  val="$undef" ;;
5091         esac
5092         set d_bincompat5005
5093         eval $setvar
5094         case "$d_bincompat5005" in
5095         "$define")
5096                 bincompat5005="$define"
5097                 ;;
5098         *)      bincompat5005="$undef"
5099                 d_bincompat5005="$undef"
5100                 ;;
5101         esac
5102         ;;
5103 esac
5104
5105
5106 : see if setuid scripts can be secure
5107 $cat <<EOM
5108
5109 Some kernels have a bug that prevents setuid #! scripts from being
5110 secure.  Some sites have disabled setuid #! scripts because of this.
5111
5112 First let's decide if your kernel supports secure setuid #! scripts.
5113 (If setuid #! scripts would be secure but have been disabled anyway,
5114 don't say that they are secure if asked.)
5115
5116 EOM
5117
5118 val="$undef"
5119 if $test -d /dev/fd; then
5120         echo "#!$ls" >reflect
5121         chmod +x,u+s reflect
5122         ./reflect >flect 2>&1
5123         if $contains "/dev/fd" flect >/dev/null; then
5124                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5125                 val="$define"
5126         else
5127                 $cat <<EOM
5128 If you are not sure if they are secure, I can check but I'll need a
5129 username and password different from the one you are using right now.
5130 If you don't have such a username or don't want me to test, simply
5131 enter 'none'.
5132
5133 EOM
5134                 rp='Other username to test security of setuid scripts with?'
5135                 dflt='none'
5136                 . ./myread
5137                 case "$ans" in
5138                 n|none)
5139                         case "$d_suidsafe" in
5140                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5141                                 dflt=n;;
5142                         "$undef")
5143                                 echo "Well, the $hint value is *not* secure." >&4
5144                                 dflt=n;;
5145                         *)      echo "Well, the $hint value *is* secure." >&4
5146                                 dflt=y;;
5147                         esac
5148                         ;;
5149                 *)
5150                         $rm -f reflect flect
5151                         echo "#!$ls" >reflect
5152                         chmod +x,u+s reflect
5153                         echo >flect
5154                         chmod a+w flect
5155                         echo '"su" will (probably) prompt you for '"$ans's password."
5156                         su $ans -c './reflect >flect'
5157                         if $contains "/dev/fd" flect >/dev/null; then
5158                                 echo "Okay, it looks like setuid scripts are secure." >&4
5159                                 dflt=y
5160                         else
5161                                 echo "I don't think setuid scripts are secure." >&4
5162                                 dflt=n
5163                         fi
5164                         ;;
5165                 esac
5166                 rp='Does your kernel have *secure* setuid scripts?'
5167                 . ./myread
5168                 case "$ans" in
5169                 [yY]*)  val="$define";;
5170                 *)      val="$undef";;
5171                 esac
5172         fi
5173 else
5174         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5175         echo "(That's for file descriptors, not floppy disks.)"
5176         val="$undef"
5177 fi
5178 set d_suidsafe
5179 eval $setvar
5180
5181 $rm -f reflect flect
5182
5183 : now see if they want to do setuid emulation
5184 echo " "
5185 val="$undef"
5186 case "$d_suidsafe" in
5187 "$define")
5188         val="$undef"
5189         echo "No need to emulate SUID scripts since they are secure here." >& 4
5190         ;;
5191 *)
5192         $cat <<EOM
5193 Some systems have disabled setuid scripts, especially systems where
5194 setuid scripts cannot be secure.  On systems where setuid scripts have
5195 been disabled, the setuid/setgid bits on scripts are currently
5196 useless.  It is possible for $package to detect those bits and emulate
5197 setuid/setgid in a secure fashion.  This emulation will only work if
5198 setuid scripts have been disabled in your kernel.
5199
5200 EOM
5201         case "$d_dosuid" in
5202         "$define") dflt=y ;;
5203         *) dflt=n ;;
5204         esac
5205         rp="Do you want to do setuid/setgid emulation?"
5206         . ./myread
5207         case "$ans" in
5208         [yY]*)  val="$define";;
5209         *)      val="$undef";;
5210         esac
5211         ;;
5212 esac
5213 set d_dosuid
5214 eval $setvar
5215
5216 : determine filename position in cpp output
5217 echo " "
5218 echo "Computing filename position in cpp output for #include directives..." >&4
5219 echo '#include <stdio.h>' > foo.c
5220 $cat >fieldn <<EOF
5221 $startsh
5222 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5223 $grep '^[       ]*#.*stdio\.h' | \
5224 while read cline; do
5225         pos=1
5226         set \$cline
5227         while $test \$# -gt 0; do
5228                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5229                         echo "\$pos"
5230                         exit 0
5231                 fi
5232                 shift
5233                 pos=\`expr \$pos + 1\`
5234         done
5235 done
5236 EOF
5237 chmod +x fieldn
5238 fieldn=`./fieldn`
5239 $rm -f foo.c fieldn
5240 case $fieldn in
5241 '') pos='???';;
5242 1) pos=first;;
5243 2) pos=second;;
5244 3) pos=third;;
5245 *) pos="${fieldn}th";;
5246 esac
5247 echo "Your cpp writes the filename in the $pos field of the line."
5248
5249 : locate header file
5250 $cat >findhdr <<EOF
5251 $startsh
5252 wanted=\$1
5253 name=''
5254 for usrincdir in $usrinc
5255 do
5256         if test -f \$usrincdir/\$wanted; then
5257                 echo "\$usrincdir/\$wanted"
5258                 exit 0
5259         fi
5260 done
5261 awkprg='{ print \$$fieldn }'
5262 echo "#include <\$wanted>" > foo\$\$.c
5263 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5264 $grep "^[       ]*#.*\$wanted" | \
5265 while read cline; do
5266         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5267         case "\$name" in
5268         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5269         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5270         *) exit 2;;
5271         esac;
5272 done;
5273 #
5274 # status = 0: grep returned 0 lines, case statement not executed
5275 # status = 1: headerfile found
5276 # status = 2: while loop executed, no headerfile found
5277 #
5278 status=\$?
5279 $rm -f foo\$\$.c;
5280 if test \$status -eq 1; then
5281         exit 0;
5282 fi
5283 exit 1
5284 EOF
5285 chmod +x findhdr
5286
5287 : define an alternate in-header-list? function
5288 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5289 cont=true; xxf="echo \"<\$1> found.\" >&4";
5290 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5291 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5292 esac;
5293 case $# in 4) instead=instead;; *) instead="at last";; esac;
5294 while $test "$cont"; do
5295         xxx=`./findhdr $1`
5296         var=$2; eval "was=\$$2";
5297         if $test "$xxx" && $test -r "$xxx";
5298         then eval $xxf;
5299         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5300                 cont="";
5301         else eval $xxnf;
5302         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5303         set $yyy; shift; shift; yyy=$@;
5304         case $# in 0) cont="";;
5305         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5306                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5307         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5308                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5309         esac;
5310 done;
5311 while $test "$yyy";
5312 do set $yyy; var=$2; eval "was=\$$2";
5313         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5314         set $yyy; shift; shift; yyy=$@;
5315 done'
5316
5317 : see if this is a malloc.h system
5318 set malloc.h i_malloc
5319 eval $inhdr
5320
5321 : see if stdlib is available
5322 set stdlib.h i_stdlib
5323 eval $inhdr
5324
5325 : determine which malloc to compile in
5326 echo " "
5327 case "$usemymalloc" in
5328 ''|[yY]*|true|$define)  dflt='y' ;;
5329 *)      dflt='n' ;;
5330 esac
5331 rp="Do you wish to attempt to use the malloc that comes with $package?"
5332 . ./myread
5333 usemymalloc="$ans"
5334 case "$ans" in
5335 y*|true)
5336         usemymalloc='y'
5337         mallocsrc='malloc.c'
5338         mallocobj="malloc$_o"
5339         d_mymalloc="$define"
5340         case "$libs" in
5341         *-lmalloc*)
5342                 : Remove malloc from list of libraries to use
5343                 echo "Removing unneeded -lmalloc from library list" >&4
5344                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5345                 shift
5346                 libs="$*"
5347                 echo "libs = $libs" >&4
5348                 ;;
5349         esac
5350         ;;
5351 *)
5352         usemymalloc='n'
5353         mallocsrc=''
5354         mallocobj=''
5355         d_mymalloc="$undef"
5356         ;;
5357 esac
5358
5359 : compute the return types of malloc and free
5360 echo " "
5361 $cat >malloc.c <<END
5362 #$i_malloc I_MALLOC
5363 #$i_stdlib I_STDLIB
5364 #include <stdio.h>
5365 #include <sys/types.h>
5366 #ifdef I_MALLOC
5367 #include <malloc.h>
5368 #endif
5369 #ifdef I_STDLIB
5370 #include <stdlib.h>
5371 #endif
5372 #ifdef TRY_MALLOC
5373 void *malloc();
5374 #endif
5375 #ifdef TRY_FREE
5376 void free();
5377 #endif
5378 END
5379 case "$malloctype" in
5380 '')
5381         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5382                 malloctype='void *'
5383         else
5384                 malloctype='char *'
5385         fi
5386         ;;
5387 esac
5388 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5389
5390 case "$freetype" in
5391 '')
5392         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5393                 freetype='void'
5394         else
5395                 freetype='int'
5396         fi
5397         ;;
5398 esac
5399 echo "Your system uses $freetype free(), it would seem." >&4
5400 $rm -f malloc.[co]
5401 $cat <<EOM
5402
5403 After $package is installed, you may wish to install various
5404 add-on modules and utilities.  Typically, these add-ons will
5405 be installed under $prefix with the rest
5406 of this package.  However, you may wish to install such add-ons
5407 elsewhere under a different prefix.
5408
5409 If you do not wish to put everything under a single prefix, that's
5410 ok.  You will be prompted for the individual locations; this siteprefix
5411 is only used to suggest the defaults.
5412
5413 The default should be fine for most people.
5414
5415 EOM
5416 fn=d~+
5417 rp='Installation prefix to use for add-on modules and utilities?'
5418 : XXX Here might be another good place for an installstyle setting.
5419 case "$siteprefix" in
5420 '') dflt=$prefix ;;
5421 *)  dflt=$siteprefix ;;
5422 esac
5423 . ./getfile
5424 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5425 oldsiteprefix=''
5426 case "$siteprefix" in
5427 '') ;;
5428 *)      case "$ans" in
5429         "$prefix") ;;
5430         *) oldsiteprefix="$prefix";;
5431         esac
5432         ;;
5433 esac
5434 siteprefix="$ans"
5435 siteprefixexp="$ansexp"
5436
5437 : determine where site specific libraries go.
5438 : Usual default is /usr/local/lib/perl5/site_perl/$version
5439 : The default "style" setting is made in installstyle.U
5440 : XXX No longer works with Prefixit stuff.
5441 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5442 case "$sitelib" in
5443 '') case "$installstyle" in
5444         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5445         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5446         esac
5447         ;;
5448 *)      dflt="$sitelib"
5449         ;;
5450 esac
5451 $cat <<EOM
5452
5453 The installation process will create a directory for
5454 site-specific extensions and modules.  Most users find it convenient
5455 to place all site-specific files in this directory rather than in the
5456 main distribution directory.
5457
5458 EOM
5459 fn=d~+
5460 rp='Pathname for the site-specific library files?'
5461 . ./getfile
5462 sitelib="$ans"
5463 sitelibexp="$ansexp"
5464 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5465 : Change installation prefix, if necessary.
5466 if $test X"$prefix" != X"$installprefix"; then
5467         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5468 else
5469         installsitelib="$sitelibexp"
5470 fi
5471
5472 : determine where site specific architecture-dependent libraries go.
5473 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5474 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5475 : sitelib may have an optional trailing /share.
5476 case "$sitearch" in
5477 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5478         dflt="$dflt/$archname"
5479         ;;
5480 *)      dflt="$sitearch"
5481         ;;
5482 esac
5483 set sitearch sitearch none
5484 eval $prefixit
5485 $cat <<EOM
5486
5487 The installation process will also create a directory for
5488 architecture-dependent site-specific extensions and modules.
5489
5490 EOM
5491 fn=d~+
5492 rp='Pathname for the site-specific architecture-dependent library files?'
5493 . ./getfile
5494 sitearch="$ans"
5495 sitearchexp="$ansexp"
5496 : Change installation prefix, if necessary.
5497 if $test X"$prefix" != X"$installprefix"; then
5498         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5499 else
5500         installsitearch="$sitearchexp"
5501 fi
5502
5503 $cat <<EOM
5504
5505 The installation process will also create a directory for
5506 vendor-supplied add-ons.  Vendors who supply perl with their system
5507 may find it convenient to place all vendor-supplied files in this
5508 directory rather than in the main distribution directory.  This will
5509 ease upgrades between binary-compatible maintenance versions of perl.
5510
5511 Of course you may also use these directories in whatever way you see
5512 fit.  For example, you might use them to access modules shared over a
5513 company-wide network.
5514
5515 The default answer should be fine for most people.
5516 This causes further questions about vendor add-ons to be skipped
5517 and no vendor-specific directories will be configured for perl.
5518
5519 EOM
5520 rp='Do you want to configure vendor-specific add-on directories?'
5521 case "$usevendorprefix" in
5522 define|true|[yY]*) dflt=y ;;
5523 *)      : User may have set vendorprefix directly on Configure command line.
5524         case "$vendorprefix" in
5525         ''|' ') dflt=n ;;
5526         *)      dflt=y ;;
5527         esac
5528         ;;
5529 esac
5530 . ./myread
5531 case "$ans" in
5532 [yY]*)  fn=d~+
5533         rp='Installation prefix to use for vendor-supplied add-ons?'
5534         case "$vendorprefix" in
5535         '') dflt='' ;;
5536         *)  dflt=$vendorprefix ;;
5537         esac
5538         . ./getfile
5539         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5540         oldvendorprefix=''
5541         case "$vendorprefix" in
5542         '') ;;
5543         *)      case "$ans" in
5544                 "$prefix") ;;
5545                 *) oldvendorprefix="$prefix";;
5546                 esac
5547                 ;;
5548         esac
5549         usevendorprefix="$define"
5550         vendorprefix="$ans"
5551         vendorprefixexp="$ansexp"
5552         ;;
5553 *)      usevendorprefix="$undef"
5554         vendorprefix=''
5555         vendorprefixexp=''
5556         ;;
5557 esac
5558
5559 case "$vendorprefix" in
5560 '')     d_vendorlib="$undef"
5561         vendorlib=''
5562         vendorlibexp=''
5563         ;;
5564 *)      d_vendorlib="$define"
5565         : determine where vendor-supplied modules go.
5566         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5567         case "$vendorlib" in
5568         '')
5569                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5570                 case "$installstyle" in
5571                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5572                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5573                 esac
5574                 ;;
5575         *)      dflt="$vendorlib"
5576                 ;;
5577         esac
5578         fn=d~+
5579         rp='Pathname for the vendor-supplied library files?'
5580         . ./getfile
5581         vendorlib="$ans"
5582         vendorlibexp="$ansexp"
5583         ;;
5584 esac
5585 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5586 : Change installation prefix, if necessary.
5587 if $test X"$prefix" != X"$installprefix"; then
5588         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5589 else
5590         installvendorlib="$vendorlibexp"
5591 fi
5592
5593 case "$vendorprefix" in
5594 '')     d_vendorarch="$undef"
5595         vendorarch=''
5596         vendorarchexp=''
5597         ;;
5598 *)      d_vendorarch="$define"
5599         : determine where vendor-supplied architecture-dependent libraries go.
5600         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5601         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5602         : vendorlib may have an optional trailing /share.
5603         case "$vendorarch" in
5604         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5605                 dflt="$dflt/$archname"
5606                 ;;
5607         *)      dflt="$vendorarch" ;;
5608         esac
5609         fn=d~+
5610         rp='Pathname for vendor-supplied architecture-dependent files?'
5611         . ./getfile
5612         vendorarch="$ans"
5613         vendorarchexp="$ansexp"
5614         ;;
5615 esac
5616 : Change installation prefix, if necessary.
5617 if $test X"$prefix" != X"$installprefix"; then
5618         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5619 else
5620         installvendorarch="$vendorarchexp"
5621 fi
5622
5623 : Final catch-all directories to search
5624 $cat <<EOM
5625
5626 Lastly, you can have perl look in other directories for extensions and
5627 modules in addition to those already specified.
5628 These directories will be searched after 
5629         $sitearch 
5630         $sitelib 
5631 EOM
5632 test X"$vendorlib" != "X" && echo '     ' $vendorlib
5633 test X"$vendorarch" != "X" && echo '    ' $vendorarch
5634 echo ' '
5635 case "$otherlibdirs" in
5636 ''|' ') dflt='none' ;;
5637 *)      dflt="$otherlibdirs" ;;
5638 esac
5639 $cat <<EOM
5640 Enter a colon-separated set of extra paths to include in perl's @INC
5641 search path, or enter 'none' for no extra paths.
5642
5643 EOM
5644
5645 rp='Colon-separated list of additional directories for perl to search?'
5646 . ./myread
5647 case "$ans" in
5648 ' '|''|none)    otherlibdirs=' ' ;;     
5649 *)      otherlibdirs="$ans" ;;
5650 esac
5651 case "$otherlibdirs" in
5652 ' ') val=$undef ;;
5653 *)      val=$define ;;
5654 esac
5655 set d_perl_otherlibdirs
5656 eval $setvar
5657
5658 : Cruising for prototypes
5659 echo " "
5660 echo "Checking out function prototypes..." >&4
5661 $cat >prototype.c <<'EOCP'
5662 int main(int argc, char *argv[]) {
5663         exit(0);}
5664 EOCP
5665 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5666         echo "Your C compiler appears to support function prototypes."
5667         val="$define"
5668 else
5669         echo "Your C compiler doesn't seem to understand function prototypes."
5670         val="$undef"
5671 fi
5672 set prototype
5673 eval $setvar
5674 $rm -f prototype*
5675
5676 case "$prototype" in
5677 "$define") ;;
5678 *)      ansi2knr='ansi2knr'
5679         echo " "
5680         cat <<EOM >&4
5681
5682 $me:  FATAL ERROR:
5683 This version of $package can only be compiled by a compiler that 
5684 understands function prototypes.  Unfortunately, your C compiler 
5685         $cc $ccflags
5686 doesn't seem to understand them.  Sorry about that.
5687
5688 If GNU cc is available for your system, perhaps you could try that instead.  
5689
5690 Eventually, we hope to support building Perl with pre-ANSI compilers.
5691 If you would like to help in that effort, please contact <perlbug@perl.org>.
5692
5693 Aborting Configure now.
5694 EOM
5695         exit 2
5696         ;;
5697 esac
5698
5699 : determine where public executables go
5700 echo " "
5701 set dflt bin bin
5702 eval $prefixit
5703 fn=d~
5704 rp='Pathname where the public executables will reside?'
5705 . ./getfile
5706 if $test "X$ansexp" != "X$binexp"; then
5707         installbin=''
5708 fi
5709 bin="$ans"
5710 binexp="$ansexp"
5711 : Change installation prefix, if necessary.
5712 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5713 if $test X"$prefix" != X"$installprefix"; then
5714         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5715 else
5716         installbin="$binexp"
5717 fi
5718
5719 : Find perl5.005 or later.
5720 echo "Looking for a previously installed perl5.005 or later... "
5721 case "$perl5" in
5722 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5723                 : Check if this perl is recent and can load a simple module
5724                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5725                         perl5=$tdir/perl
5726                         break;
5727                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5728                         perl5=$tdir/perl
5729                         break;
5730                 fi
5731         done
5732         ;;
5733 *)      perl5="$perl5"
5734         ;;
5735 esac
5736 case "$perl5" in
5737 '')     echo "None found.  That's ok.";;
5738 *)      echo "Using $perl5." ;;
5739 esac
5740
5741 : Determine list of previous versions to include in @INC
5742 $cat > getverlist <<EOPL
5743 #!$perl5 -w
5744 use File::Basename;
5745 \$api_versionstring = "$api_versionstring";
5746 \$version = "$version";
5747 \$stem = "$sitelib_stem";
5748 \$archname = "$archname";
5749 EOPL
5750         $cat >> getverlist <<'EOPL'
5751 # Can't have leading @ because metaconfig interprets it as a command!
5752 ;@inc_version_list=();
5753 # XXX Redo to do opendir/readdir? 
5754 if (-d $stem) {
5755     chdir($stem);
5756     ;@candidates = glob("5.*");
5757 }
5758 else {
5759     ;@candidates = ();
5760 }
5761
5762 # XXX ToDo:  These comparisons must be reworked when two-digit
5763 # subversions come along, so that 5.7.10 compares as greater than
5764 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5765 # widespread that we can use the built-in version vectors rather
5766 # than reinventing them here.  For 5.6.0, however, we must
5767 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5768 foreach $d (@candidates) {
5769     if ($d lt $version) {
5770         if ($d ge $api_versionstring) {
5771             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5772         }
5773         elsif ($d ge "5.005") {
5774             unshift(@inc_version_list, grep { -d } $d);
5775         }
5776     }
5777     else {
5778         # Skip newer version.  I.e. don't look in
5779         # 5.7.0 if we're installing 5.6.1.
5780     }
5781 }
5782
5783 if (@inc_version_list) {
5784     print join(' ', @inc_version_list);
5785 }
5786 else {
5787     # Blank space to preserve value for next Configure run.
5788     print " ";
5789 }
5790 EOPL
5791 chmod +x getverlist
5792 case "$inc_version_list" in
5793 '')     if test -x "$perl5"; then
5794                 dflt=`$perl5 getverlist`
5795         else
5796                 dflt='none'
5797         fi
5798         ;;
5799 $undef) dflt='none' ;;
5800 *)  dflt="$inc_version_list" ;;
5801 esac
5802 case "$dflt" in
5803 ''|' ') dflt=none ;;
5804 esac
5805 case "$dflt" in
5806 5.005) case "$bincompat5005" in
5807        $define|true|[yY]*) ;;
5808        *) dflt=none ;;
5809        esac
5810        ;;
5811 esac
5812 $cat <<'EOM'
5813
5814 In order to ease the process of upgrading, this version of perl 
5815 can be configured to use modules built and installed with earlier 
5816 versions of perl that were installed under $prefix.  Specify here
5817 the list of earlier versions that this version of perl should check.
5818 If Configure detected no earlier versions of perl installed under
5819 $prefix, then the list will be empty.  Answer 'none' to tell perl
5820 to not search earlier versions.
5821
5822 The default should almost always be sensible, so if you're not sure,
5823 just accept the default.
5824 EOM
5825
5826 rp='List of earlier versions to include in @INC?'
5827 . ./myread
5828 case "$ans" in
5829 [Nn]one|''|' ') inc_version_list=' ' ;;
5830 *) inc_version_list="$ans" ;;
5831 esac
5832 case "$inc_version_list" in
5833 ''|' ') 
5834         inc_version_list_init='0';;
5835 *)      inc_version_list_init=`echo $inc_version_list |
5836                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5837         ;;
5838 esac
5839 $rm -f getverlist
5840
5841 : determine whether to install perl also as /usr/bin/perl
5842
5843 echo " "
5844 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5845         $cat <<EOM
5846 Many scripts expect perl to be installed as /usr/bin/perl.
5847 I can install the perl you are about to compile also as /usr/bin/perl
5848 (in addition to $installbin/perl).
5849 EOM
5850         case "$installusrbinperl" in
5851         "$undef"|[nN]*) dflt='n';;
5852         *)              dflt='y';;
5853         esac
5854         rp="Do you want to install perl as /usr/bin/perl?"
5855         . ./myread
5856         case "$ans" in
5857         [yY]*)  val="$define";;
5858         *)      val="$undef" ;;
5859         esac
5860 else
5861         val="$undef"
5862 fi
5863 set installusrbinperl
5864 eval $setvar
5865
5866 echo " "
5867 echo "Checking for GNU C Library..." >&4
5868 cat >gnulibc.c <<EOM
5869 #include <stdio.h>
5870 int main()
5871 {
5872 #ifdef __GLIBC__
5873     exit(0);
5874 #else
5875     exit(1);
5876 #endif
5877 }
5878 EOM
5879 set gnulibc
5880 if eval $compile_ok && ./gnulibc; then
5881         val="$define"
5882         echo "You are using the GNU C Library"
5883 else
5884         val="$undef"
5885         echo "You are not using the GNU C Library"
5886 fi
5887 $rm -f gnulibc*
5888 set d_gnulibc
5889 eval $setvar
5890
5891 : see if nm is to be used to determine whether a symbol is defined or not
5892 case "$usenm" in
5893 '')
5894         dflt=''
5895         case "$d_gnulibc" in
5896         "$define")
5897                 echo " "
5898                 echo "nm probably won't work on the GNU C Library." >&4
5899                 dflt=n
5900                 ;;
5901         esac
5902         case "$dflt" in
5903         '') 
5904                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5905                         echo " "
5906                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5907                         echo "'nm' won't be sufficient on this sytem." >&4
5908                         dflt=n
5909                 fi
5910                 ;;
5911         esac
5912         case "$dflt" in
5913         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5914                 if $test $dflt -gt 20; then
5915                         dflt=y
5916                 else
5917                         dflt=n
5918                 fi
5919                 ;;
5920         esac
5921         ;;
5922 *)
5923         case "$usenm" in
5924         true|$define) dflt=y;;
5925         *) dflt=n;;
5926         esac
5927         ;;
5928 esac
5929 $cat <<EOM
5930
5931 I can use $nm to extract the symbols from your C libraries. This
5932 is a time consuming task which may generate huge output on the disk (up
5933 to 3 megabytes) but that should make the symbols extraction faster. The
5934 alternative is to skip the 'nm' extraction part and to compile a small
5935 test program instead to determine whether each symbol is present. If
5936 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5937 this may be the best solution.
5938
5939 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5940
5941 EOM
5942 rp="Shall I use $nm to extract C symbols from the libraries?"
5943 . ./myread
5944 case "$ans" in
5945 [Nn]*) usenm=false;;
5946 *) usenm=true;;
5947 esac
5948
5949 runnm=$usenm
5950 case "$reuseval" in
5951 true) runnm=false;;
5952 esac
5953
5954 : nm options which may be necessary
5955 case "$nm_opt" in
5956 '') if $test -f /mach_boot; then
5957                 nm_opt=''       # Mach
5958         elif $test -d /usr/ccs/lib; then
5959                 nm_opt='-p'     # Solaris (and SunOS?)
5960         elif $test -f /dgux; then
5961                 nm_opt='-p'     # DG-UX
5962         elif $test -f /lib64/rld; then
5963                 nm_opt='-p'     # 64-bit Irix
5964         else
5965                 nm_opt=''
5966         fi;;
5967 esac
5968
5969 : nm options which may be necessary for shared libraries but illegal
5970 : for archive libraries.  Thank you, Linux.
5971 case "$nm_so_opt" in
5972 '')     case "$myuname" in
5973         *linux*)
5974                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5975                         nm_so_opt='--dynamic'
5976                 fi
5977                 ;;
5978         esac
5979         ;;
5980 esac
5981
5982 case "$runnm" in
5983 true)
5984 : get list of predefined functions in a handy place
5985 echo " "
5986 case "$libc" in
5987 '') libc=unknown
5988         case "$libs" in
5989         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5990         esac
5991         ;;
5992 esac
5993 libnames='';
5994 case "$libs" in
5995 '') ;;
5996 *)  for thislib in $libs; do
5997         case "$thislib" in
5998         -lc|-lc_s)
5999                 : Handle C library specially below.
6000                 ;;
6001         -l*)
6002                 thislib=`echo $thislib | $sed -e 's/^-l//'`
6003                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
6004                         :
6005                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
6006                         :
6007                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
6008                         :
6009                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
6010                         :
6011                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
6012                         :
6013                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
6014                         :
6015                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
6016                         :
6017                 else
6018                         try=''
6019                 fi
6020                 libnames="$libnames $try"
6021                 ;;
6022         *) libnames="$libnames $thislib" ;;
6023         esac
6024         done
6025         ;;
6026 esac
6027 xxx=normal
6028 case "$libc" in
6029 unknown)
6030         set /lib/libc.$so
6031         for xxx in $libpth; do
6032                 $test -r $1 || set $xxx/libc.$so
6033                 : The messy sed command sorts on library version numbers.
6034                 $test -r $1 || \
6035                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
6036                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
6037                                 h
6038                                 s/[0-9][0-9]*/0000&/g
6039                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
6040                                 G
6041                                 s/\n/ /' | \
6042                          sort | $sed -e 's/^.* //'`
6043                 eval set \$$#
6044         done
6045         $test -r $1 || set /usr/ccs/lib/libc.$so
6046         $test -r $1 || set /lib/libsys_s$_a
6047         ;;
6048 *)
6049         set blurfl
6050         ;;
6051 esac
6052 if $test -r "$1"; then
6053         echo "Your (shared) C library seems to be in $1."
6054         libc="$1"
6055 elif $test -r /lib/libc && $test -r /lib/clib; then
6056         echo "Your C library seems to be in both /lib/clib and /lib/libc."
6057         xxx=apollo
6058         libc='/lib/clib /lib/libc'
6059         if $test -r /lib/syslib; then
6060                 echo "(Your math library is in /lib/syslib.)"
6061                 libc="$libc /lib/syslib"
6062         fi
6063 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6064         echo "Your C library seems to be in $libc, as you said before."
6065 elif $test -r $incpath/usr/lib/libc$_a; then
6066         libc=$incpath/usr/lib/libc$_a;
6067         echo "Your C library seems to be in $libc.  That's fine."
6068 elif $test -r /lib/libc$_a; then
6069         libc=/lib/libc$_a;
6070         echo "Your C library seems to be in $libc.  You're normal."
6071 else
6072         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
6073                 :
6074         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
6075                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
6076         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
6077                 :
6078         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6079                 :
6080         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6081                 :
6082         else
6083                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
6084         fi
6085         if $test -r "$tans"; then
6086                 echo "Your C library seems to be in $tans, of all places."
6087                 libc=$tans
6088         else
6089                 libc='blurfl'
6090         fi
6091 fi
6092 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6093         dflt="$libc"
6094         cat <<EOM
6095
6096 If the guess above is wrong (which it might be if you're using a strange
6097 compiler, or your machine supports multiple models), you can override it here.
6098
6099 EOM
6100 else
6101         dflt=''
6102         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
6103         cat >&4 <<EOM
6104 I can't seem to find your C library.  I've looked in the following places:
6105
6106 EOM
6107         $sed 's/^/      /' libpath
6108         cat <<EOM
6109
6110 None of these seems to contain your C library. I need to get its name...
6111
6112 EOM
6113 fi
6114 fn=f
6115 rp='Where is your C library?'
6116 . ./getfile
6117 libc="$ans"
6118
6119 echo " "
6120 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
6121 set X `cat libnames`
6122 shift
6123 xxx=files
6124 case $# in 1) xxx=file; esac
6125 echo "Extracting names from the following $xxx for later perusal:" >&4
6126 echo " "
6127 $sed 's/^/      /' libnames >&4
6128 echo " "
6129 $echo $n "This may take a while...$c" >&4
6130
6131 for file in $*; do
6132         case $file in
6133         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6134         *) $nm $nm_opt $file 2>/dev/null;;
6135         esac
6136 done >libc.tmp
6137
6138 $echo $n ".$c"
6139 $grep fprintf libc.tmp > libc.ptf
6140 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6141 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6142 xxx='[ADTSIW]'
6143 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
6144         eval $xscan;\
6145         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6146                 eval $xrun
6147 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6148         eval $xscan;\
6149         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6150                 eval $xrun
6151 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6152         eval $xscan;\
6153         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6154                 eval $xrun
6155 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6156         eval $xscan;\
6157         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6158                 eval $xrun
6159 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6160         eval $xscan;\
6161         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6162                 eval $xrun
6163 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6164         eval $xscan;\
6165         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6166                 eval $xrun
6167 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6168                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6169         eval $xscan;\
6170         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6171                 eval $xrun
6172 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6173         eval $xscan;\
6174         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6175                 eval $xrun
6176 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6177         eval $xscan;\
6178         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6179                 eval $xrun
6180 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6181         eval $xscan;\
6182         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6183                 eval $xrun
6184 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6185         eval $xscan;\
6186         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6187                 eval $xrun
6188 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6189         eval $xscan;\
6190         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6191                 eval $xrun
6192 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6193         eval $xscan;\
6194         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6195                 eval $xrun
6196 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6197         eval $xscan;\
6198         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6199                 eval $xrun
6200 else
6201         $nm -p $* 2>/dev/null >libc.tmp
6202         $grep fprintf libc.tmp > libc.ptf
6203         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6204                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6205         then
6206                 nm_opt='-p'
6207                 eval $xrun
6208         else
6209                 echo " "
6210                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6211                 com=''
6212                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6213                         for thisname in $libnames $libc; do
6214                                 $ar t $thisname >>libc.tmp
6215                         done
6216                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6217                         echo "Ok." >&4
6218                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6219                         # Repeat libc to extract forwarders to DLL entries too
6220                         for thisname in $libnames $libc; do
6221                                 $ar tv $thisname >>libc.tmp
6222                                 # Revision 50 of EMX has bug in $ar.
6223                                 # it will not extract forwarders to DLL entries
6224                                 # Use emximp which will extract exactly them.
6225                                 emximp -o tmp.imp $thisname \
6226                                     2>/dev/null && \
6227                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6228                                     < tmp.imp >>libc.tmp
6229                                 $rm tmp.imp
6230                         done
6231                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6232                         echo "Ok." >&4
6233                 else
6234                         echo "$ar didn't seem to work right." >&4
6235                         echo "Maybe this is a Cray...trying bld instead..." >&4
6236                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6237                         then
6238                                 for thisname in $libnames; do
6239                                         bld t $libnames | \
6240                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6241                                         $ar t $thisname >>libc.tmp
6242                                 done
6243                                 echo "Ok." >&4
6244                         else
6245                                 echo "That didn't work either.  Giving up." >&4
6246                                 exit 1
6247                         fi
6248                 fi
6249         fi
6250 fi
6251 nm_extract="$com"
6252 if $test -f /lib/syscalls.exp; then
6253         echo " "
6254         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6255         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6256 fi
6257 ;;
6258 esac
6259 $rm -f libnames libpath
6260
6261 : see if dld is available
6262 set dld.h i_dld
6263 eval $inhdr
6264
6265 : is a C symbol defined?
6266 csym='tlook=$1;
6267 case "$3" in
6268 -v) tf=libc.tmp; tc=""; tdc="";;
6269 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6270 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6271 esac;
6272 tx=yes;
6273 case "$reuseval-$4" in
6274 true-) ;;
6275 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6276 esac;
6277 case "$tx" in
6278 yes)
6279         case "$runnm" in
6280         true)
6281                 if $contains $tlook $tf >/dev/null 2>&1;
6282                 then tval=true;
6283                 else tval=false;
6284                 fi;;
6285         *)
6286                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6287                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6288                 then tval=true;
6289                 else tval=false;
6290                 fi;
6291                 $rm -f t t.c;;
6292         esac;;
6293 *)
6294         case "$tval" in
6295         $define) tval=true;;
6296         *) tval=false;;
6297         esac;;
6298 esac;
6299 eval "$2=$tval"'
6300
6301 : define an is-in-libc? function
6302 inlibc='echo " "; td=$define; tu=$undef;
6303 sym=$1; var=$2; eval "was=\$$2";
6304 tx=yes;
6305 case "$reuseval$was" in
6306 true) ;;
6307 true*) tx=no;;
6308 esac;
6309 case "$tx" in
6310 yes)
6311         set $sym tres -f;
6312         eval $csym;
6313         case "$tres" in
6314         true)
6315                 echo "$sym() found." >&4;
6316                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6317         *)
6318                 echo "$sym() NOT found." >&4;
6319                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6320         esac;;
6321 *)
6322         case "$was" in
6323         $define) echo "$sym() found." >&4;;
6324         *) echo "$sym() NOT found." >&4;;
6325         esac;;
6326 esac'
6327
6328 : see if dlopen exists
6329 xxx_runnm="$runnm"
6330 runnm=false
6331 set dlopen d_dlopen
6332 eval $inlibc
6333 runnm="$xxx_runnm"
6334
6335 : determine which dynamic loading, if any, to compile in
6336 echo " "
6337 dldir="ext/DynaLoader"
6338 case "$usedl" in
6339 $define|y|true)
6340         dflt='y'
6341         usedl="$define"
6342         ;;
6343 $undef|n|false)
6344         dflt='n'
6345         usedl="$undef"
6346         ;;
6347 *) 
6348         dflt='n'
6349         case "$d_dlopen" in
6350             $define) dflt='y' ;;
6351         esac
6352         case "$i_dld" in
6353             $define) dflt='y' ;;
6354         esac
6355         : Does a dl_xxx.xs file exist for this operating system
6356         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6357         ;;
6358 esac
6359 rp="Do you wish to use dynamic loading?"
6360 . ./myread
6361 usedl="$ans"
6362 case "$ans" in
6363 y*) usedl="$define"
6364         case "$dlsrc" in
6365         '')
6366                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6367                         dflt="$dldir/dl_${osname}.xs"
6368                 elif $test "$d_dlopen" = "$define" ; then
6369                         dflt="$dldir/dl_dlopen.xs"
6370                 elif $test "$i_dld" = "$define" ; then
6371                         dflt="$dldir/dl_dld.xs"
6372                 else
6373                         dflt=''
6374                 fi
6375                 ;;
6376         *)      dflt="$dldir/$dlsrc"
6377                 ;;
6378         esac
6379     echo "The following dynamic loading files are available:"
6380         : Can not go over to $dldir because getfile has path hard-coded in.
6381         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6382         rp="Source file to use for dynamic loading"
6383         fn="fne"
6384         gfpth="$src"
6385         . ./getfile
6386         usedl="$define"
6387         : emulate basename
6388         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6389
6390         $cat << EOM
6391
6392 Some systems may require passing special flags to $cc -c to
6393 compile modules that will be used to create a shared library.
6394 To use no flags, say "none".
6395
6396 EOM
6397     case "$cccdlflags" in
6398     '') case "$gccversion" in
6399                 '') case "$osname" in
6400                         hpux)   dflt='+z' ;;
6401                         next)   dflt='none' ;;
6402                         irix*)  dflt='-KPIC' ;;
6403                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6404                         sunos)  dflt='-pic' ;;
6405                         *)      dflt='none' ;;
6406                     esac
6407                         ;;
6408                 *)  case "$osname" in
6409                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6410                         *)      dflt='-fpic' ;;
6411                     esac ;;
6412             esac ;;
6413         ' ') dflt='none' ;;
6414     *)  dflt="$cccdlflags" ;;
6415     esac
6416     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6417     . ./myread
6418     case "$ans" in
6419     none) cccdlflags=' ' ;;
6420     *) cccdlflags="$ans" ;;
6421     esac
6422
6423     cat << EOM
6424
6425 Some systems use ld to create libraries that can be dynamically loaded,
6426 while other systems (such as those using ELF) use $cc.
6427
6428 EOM
6429         case "$ld" in
6430         '')     $cat >try.c <<'EOM'
6431 /* Test for whether ELF binaries are produced */
6432 #include <fcntl.h>
6433 #include <stdlib.h>
6434 int main() {
6435         char b[4];
6436         int i = open("a.out",O_RDONLY);
6437         if(i == -1) 
6438                 exit(1); /* fail */
6439         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6440                 exit(0); /* succeed (yes, it's ELF) */
6441         else
6442                 exit(1); /* fail */
6443 }
6444 EOM
6445                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6446                         cat <<EOM
6447 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6448 EOM
6449                         dflt="$cc"
6450                 else
6451                         echo "I'll use ld to build dynamic libraries."
6452                         dflt='ld'
6453                 fi
6454                 rm -f try.c a.out
6455                 ;;
6456         *)      dflt="$ld"
6457                 ;;
6458         esac
6459
6460     rp="What command should be used to create dynamic libraries?"
6461     . ./myread
6462         ld="$ans"
6463
6464     cat << EOM
6465
6466 Some systems may require passing special flags to $ld to create a
6467 library that can be dynamically loaded.  If your ld flags include
6468 -L/other/path options to locate libraries outside your loader's normal
6469 search path, you may need to specify those -L options here as well.  To
6470 use no flags, say "none".
6471
6472 EOM
6473     case "$lddlflags" in
6474     '') case "$osname" in
6475                         beos) dflt='-nostart' ;;
6476                         hpux) dflt='-b';
6477                               case "$gccversion" in
6478                               '') dflt="$dflt +vnocompatwarnings" ;;
6479                               esac
6480                               ;;        
6481                         linux|irix*)    dflt='-shared' ;;
6482                         next)  dflt='none' ;;
6483                         solaris) dflt='-G' ;;
6484                         sunos) dflt='-assert nodefinitions' ;;
6485                         svr4*|esix*) dflt="-G $ldflags" ;;
6486                 *)     dflt='none' ;;
6487                         esac
6488                         ;;
6489     *) dflt="$lddlflags" ;;
6490     esac
6491
6492         : Try to guess additional flags to pick up local libraries.
6493         : Be careful not to append to a plain 'none'
6494         case "$dflt" in
6495         none) dflt='' ;;
6496         esac
6497         for thisflag in $ldflags; do
6498                 case "$thisflag" in
6499                 -L*)
6500                         case " $dflt " in
6501                         *" $thisflag "*) ;;
6502                         *) dflt="$dflt $thisflag" ;;
6503                         esac
6504                         ;;
6505                 esac
6506         done
6507
6508         case "$dflt" in
6509         ''|' ') dflt='none' ;;
6510         esac
6511
6512     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6513     . ./myread
6514     case "$ans" in
6515     none) lddlflags=' ' ;;
6516     *) lddlflags="$ans" ;;
6517     esac
6518
6519         cat <<EOM
6520
6521 Some systems may require passing special flags to $cc to indicate that
6522 the resulting executable will use dynamic linking.  To use no flags,
6523 say "none".
6524
6525 EOM
6526     case "$ccdlflags" in
6527     '') case "$osname" in
6528                 hpux)   dflt='-Wl,-E' ;;
6529                 linux)  dflt='-rdynamic' ;;
6530                 next)   dflt='none' ;;
6531                 sunos)  dflt='none' ;;
6532                 *)      dflt='none' ;;
6533             esac ;;
6534     ' ')  dflt='none' ;;
6535     *)  dflt="$ccdlflags" ;;
6536     esac
6537     rp="Any special flags to pass to $cc to use dynamic linking?"
6538     . ./myread
6539     case "$ans" in
6540     none) ccdlflags=' ' ;;
6541     *) ccdlflags="$ans" ;;
6542     esac
6543     ;;
6544 *)  usedl="$undef"
6545         ld='ld'
6546     dlsrc='dl_none.xs'
6547     lddlflags=''
6548     ccdlflags=''
6549     ;;
6550 esac
6551
6552 also=''
6553 case "$usedl" in
6554 $undef)
6555         # No dynamic loading being used, so don't bother even to prompt.
6556         useshrplib='false'
6557         ;;
6558 *)      case "$useshrplib" in
6559         '')     case "$osname" in
6560                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6561                         dflt=y
6562                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6563                         ;;
6564                 next*)
6565                         case "$osvers" in
6566                         4*)     dflt=y
6567                                 also='Building a shared libperl is needed for MAB support.'
6568                                 ;;
6569                         *)      dflt=n
6570                                 ;;
6571                         esac
6572                         ;;
6573                 *)      dflt=n
6574                         ;;
6575                 esac
6576                 ;;
6577         $define|true|[Yy]*)
6578                 dflt=y
6579                 ;;
6580         *)      dflt=n
6581                 ;;
6582         esac
6583         $cat << EOM
6584
6585 The perl executable is normally obtained by linking perlmain.c with
6586 libperl${_a}, any static extensions (usually just DynaLoader), and
6587 any other libraries needed on this system (such as -lm, etc.).  Since
6588 your system supports dynamic loading, it is probably possible to build
6589 a shared libperl.$so.  If you will have more than one executable linked
6590 to libperl.$so, this will significantly reduce the size of each
6591 executable, but it may have a noticeable affect on performance.  The
6592 default is probably sensible for your system.
6593 $also
6594
6595 EOM
6596         rp="Build a shared libperl.$so (y/n)"
6597         . ./myread
6598         case "$ans" in
6599         true|$define|[Yy]*)
6600                 useshrplib='true'  ;;
6601         *)      useshrplib='false' ;;
6602         esac
6603         ;;
6604 esac
6605
6606 case "$useshrplib" in
6607 true)
6608         case "$libperl" in
6609         '')
6610                 # Figure out a good name for libperl.so.  Since it gets stored in
6611                 # a version-specific architecture-dependent library, the version
6612                 # number isn't really that important, except for making cc/ld happy.
6613                 #
6614                 # A name such as libperl.so.3.1
6615                 majmin="libperl.$so.$patchlevel.$subversion"
6616                 # A name such as libperl.so.301
6617                 majonly=`echo $patchlevel $subversion |
6618                         $awk '{printf "%d%02d", $1, $2}'`
6619                 majonly=libperl.$so.$majonly
6620                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6621                 # rely on figuring it out from the naming of libc.
6622                 case "${osname}${osvers}" in
6623                 next4*)
6624                         dflt=libperl.5.$so
6625                         # XXX How handle the --version stuff for MAB?
6626                         ;;
6627                 linux*)  # ld won't link with a bare -lperl otherwise.
6628                         dflt=libperl.$so
6629                         ;;
6630                 cygwin*) # include version
6631                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6632                         ;;
6633                 *)      # Try to guess based on whether libc has major.minor.
6634                         case "$libc" in
6635                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6636                         *libc.$so.[0-9]*) dflt=$majonly ;;
6637                         *)      dflt=libperl.$so ;;
6638                         esac
6639                         ;;
6640                 esac
6641                 ;;
6642         *)      dflt=$libperl
6643                 ;;
6644         esac
6645         cat << EOM
6646
6647 I need to select a good name for the shared libperl.  If your system uses
6648 library names with major and minor numbers, then you might want something
6649 like $majmin.  Alternatively, if your system uses a single version
6650 number for shared libraries, then you might want to use $majonly.
6651 Or, your system might be quite happy with a simple libperl.$so.
6652
6653 Since the shared libperl will get installed into a version-specific
6654 architecture-dependent directory, the version number of the shared perl
6655 library probably isn't important, so the default should be o.k.
6656
6657 EOM
6658         rp='What name do you want to give to the shared libperl?'
6659         . ./myread
6660         libperl=$ans
6661         echo "Ok, I'll use $libperl"
6662         ;;
6663 *)
6664         libperl="libperl${_a}"
6665         ;;
6666 esac
6667
6668 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6669 case "$shrpdir" in
6670 '') ;;
6671 *)      $cat >&4 <<EOM
6672 WARNING:  Use of the shrpdir variable for the installation location of
6673 the shared $libperl is not supported.  It was never documented and
6674 will not work in this version.  Let me (perlbug@perl.com)
6675 know of any problems this may cause.
6676
6677 EOM
6678         case "$shrpdir" in
6679         "$archlibexp/CORE")
6680                 $cat >&4 <<EOM
6681 But your current setting of $shrpdir is
6682 the default anyway, so it's harmless.
6683 EOM
6684                 ;;
6685         *)
6686                 $cat >&4 <<EOM
6687 Further, your current attempted setting of $shrpdir
6688 conflicts with the value of $archlibexp/CORE
6689 that installperl will use.
6690 EOM
6691                 ;;
6692         esac
6693         ;;
6694 esac
6695
6696 # How will the perl executable find the installed shared $libperl?
6697 # Add $xxx to ccdlflags.
6698 # If we can't figure out a command-line option, use $shrpenv to
6699 # set env LD_RUN_PATH.  The main perl makefile uses this.
6700 shrpdir=$archlibexp/CORE
6701 xxx=''
6702 tmp_shrpenv=''
6703 if "$useshrplib"; then
6704     case "$osname" in 
6705         aix)
6706                 # We'll set it in Makefile.SH...
6707                 ;;
6708         solaris|netbsd)
6709                 xxx="-R $shrpdir"
6710                 ;;
6711         freebsd)
6712                 xxx="-Wl,-R$shrpdir"
6713                 ;;
6714         linux|irix*|dec_osf)
6715                 xxx="-Wl,-rpath,$shrpdir"
6716                 ;;
6717         next)
6718                 # next doesn't like the default...
6719                 ;;
6720         beos)
6721                 # beos doesn't like the default, either.
6722                 ;;
6723         hpux*)
6724                 # hpux doesn't like the default, either.
6725                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6726                 ;;
6727         *)
6728                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6729                 ;;
6730         esac
6731         case "$xxx" in
6732         '') ;;
6733         *)      
6734                 # Only add $xxx if it isn't already in ccdlflags.
6735                 case " $ccdlflags " in
6736                 *" $xxx "*)     ;;
6737                 *)      ccdlflags="$ccdlflags $xxx"
6738                         cat <<EOM >&4
6739
6740 Adding $xxx to the flags
6741 passed to $ld so that the perl executable will find the 
6742 installed shared $libperl.
6743
6744 EOM
6745                         ;;
6746                 esac
6747                 ;;
6748         esac
6749 fi
6750 # Fix ccdlflags in AIX for building external extensions.
6751 # (For building Perl itself bare -bE:perl.exp is needed,
6752 #  Makefile.SH takes care of this.)
6753 case "$osname" in
6754 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6755 esac
6756 # Respect a hint or command-line value.
6757 case "$shrpenv" in
6758 '') shrpenv="$tmp_shrpenv" ;;
6759 esac
6760 case "$ldlibpthname" in
6761 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6762 none)   ldlibpthname='' ;;
6763 esac
6764
6765 : determine where manual pages go
6766 set man1dir man1dir none
6767 eval $prefixit
6768 $cat <<EOM
6769
6770 $spackage has manual pages available in source form.
6771 EOM
6772 case "$nroff" in
6773 nroff)
6774         echo "However, you don't have nroff, so they're probably useless to you."
6775         case "$man1dir" in
6776         '') man1dir="none";;
6777         esac;;
6778 esac
6779 echo "If you don't want the manual sources installed, answer 'none'."
6780 case "$man1dir" in
6781 ' ') dflt=none
6782         ;;
6783 '')
6784         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6785         lookpath="$lookpath $prefixexp/man/p_man/man1"
6786         lookpath="$lookpath $prefixexp/man/u_man/man1"
6787         lookpath="$lookpath $prefixexp/man/man.1"
6788         case "$sysman" in
6789         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6790         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6791         esac
6792         set dflt
6793         eval $prefixup
6794         ;;
6795 *)  dflt="$man1dir"
6796         ;;
6797 esac
6798 echo " "
6799 fn=dn+~
6800 rp="Where do the main $spackage manual pages (source) go?"
6801 . ./getfile
6802 if $test "X$man1direxp" != "X$ansexp"; then
6803         installman1dir=''
6804 fi
6805 man1dir="$ans"
6806 man1direxp="$ansexp"
6807 case "$man1dir" in
6808 '')     man1dir=' '
6809         installman1dir='';;
6810 esac
6811
6812 : Change installation prefix, if necessary.
6813 if $test X"$prefix" != X"$installprefix"; then
6814         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6815 else
6816         installman1dir="$man1direxp"
6817 fi
6818
6819 : What suffix to use on installed man pages
6820
6821 case "$man1dir" in
6822 ' ')
6823         man1ext='0'
6824         ;;
6825 *)
6826         rp="What suffix should be used for the main $spackage man pages?"
6827         case "$man1ext" in
6828         '')     case "$man1dir" in
6829                 *1)  dflt=1 ;;
6830                 *1p) dflt=1p ;;
6831                 *1pm) dflt=1pm ;;
6832                 *l) dflt=l;;
6833                 *n) dflt=n;;
6834                 *o) dflt=o;;
6835                 *p) dflt=p;;
6836                 *C) dflt=C;;
6837                 *L) dflt=L;;
6838                 *L1) dflt=L1;;
6839                 *) dflt=1;;
6840                 esac
6841                 ;;
6842         *)      dflt="$man1ext";;
6843         esac
6844         . ./myread
6845         man1ext="$ans"
6846         ;;
6847 esac
6848
6849 : see if we can have long filenames
6850 echo " "
6851 first=123456789abcdef
6852 $rm -f $first
6853 if (echo hi >$first) 2>/dev/null; then
6854         if $test -f 123456789abcde; then
6855                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6856                 val="$undef"
6857         else
6858                 echo 'You can have filenames longer than 14 characters.'>&4
6859                 val="$define"
6860         fi
6861 else
6862         $cat <<'EOM'
6863 You can't have filenames longer than 14 chars.
6864 You can't even think about them!
6865 EOM
6866         val="$undef"
6867 fi 
6868 set d_flexfnam
6869 eval $setvar
6870 $rm -rf 123456789abcde*
6871
6872 : determine where library module manual pages go
6873 set man3dir man3dir none
6874 eval $prefixit
6875 $cat <<EOM
6876
6877 $spackage has manual pages for many of the library modules.
6878 EOM
6879
6880 case "$nroff" in
6881 nroff)
6882         $cat <<'EOM'
6883 However, you don't have nroff, so they're probably useless to you.
6884 EOM
6885         case "$man3dir" in
6886         '') man3dir="none";;
6887         esac;;
6888 esac
6889
6890 case "$d_flexfnam" in
6891 undef)
6892         $cat <<'EOM'
6893 However, your system can't handle the long file names like File::Basename.3. 
6894 EOM
6895         case "$man3dir" in
6896         '') man3dir="none";;
6897         esac;;
6898 esac
6899
6900 echo "If you don't want the manual sources installed, answer 'none'."
6901 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6902 case "$man3dir" in
6903 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6904         if $test -d "$privlib/man/man3"; then
6905                 cat <<EOM >&4
6906
6907 WARNING:  Previous versions of perl installed man3 pages into
6908 $privlib/man/man3.  This version will suggest a 
6909 new default of $dflt.  
6910 EOM
6911                 tdflt=$dflt
6912                 dflt='n'
6913                 rp='Do you wish to preserve the old behavior?(y/n)'
6914                 . ./myread
6915                 case "$ans" in
6916                 y*) dflt="$privlib/man/man3" ;;
6917                 *)  dflt=$tdflt ;;
6918                 esac
6919     fi
6920         ;;
6921 *)      dflt="$man3dir" ;;
6922 esac
6923 case "$dflt" in
6924 ' ') dflt=none ;;
6925 esac
6926 echo " "
6927 fn=dn+~
6928 rp="Where do the $package library man pages (source) go?"
6929 . ./getfile
6930 man3dir="$ans"
6931 man3direxp="$ansexp"
6932 case "$man3dir" in
6933 '')     man3dir=' '
6934         installman3dir='';;
6935 esac
6936
6937 : Change installation prefix, if necessary.
6938 if $test X"$prefix" != X"$installprefix"; then
6939         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6940 else
6941         installman3dir="$man3direxp"
6942 fi
6943
6944 : What suffix to use on installed man pages
6945 case "$man3dir" in
6946 ' ')
6947         man3ext='0'
6948         ;;
6949 *)
6950         rp="What suffix should be used for the $package library man pages?"
6951         case "$man3ext" in
6952         '')     case "$man3dir" in
6953                 *3)  dflt=3 ;;
6954                 *3p) dflt=3p ;;
6955                 *3pm) dflt=3pm ;;
6956                 *l) dflt=l;;
6957                 *n) dflt=n;;
6958                 *o) dflt=o;;
6959                 *p) dflt=p;;
6960                 *C) dflt=C;;
6961                 *L) dflt=L;;
6962                 *L3) dflt=L3;;
6963                 *) dflt=3;;
6964                 esac
6965                 ;;
6966         *)      dflt="$man3ext";;
6967         esac
6968         . ./myread
6969         man3ext="$ans"
6970         ;;
6971 esac
6972
6973 : see if we have to deal with yellow pages, now NIS.
6974 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6975         if $test -f /usr/etc/nibindd; then
6976                 echo " "
6977                 echo "I'm fairly confident you're on a NeXT."
6978                 echo " "
6979                 rp='Do you get the hosts file via NetInfo?'
6980                 dflt=y
6981                 case "$hostcat" in
6982                 nidump*) ;;
6983                 '') ;;
6984                 *) dflt=n;;
6985                 esac
6986                 . ./myread
6987                 case "$ans" in
6988                 y*) hostcat='nidump hosts .';;
6989                 *)      case "$hostcat" in
6990                         nidump*) hostcat='';;
6991                         esac
6992                         ;;
6993                 esac
6994         fi
6995         case "$hostcat" in
6996         nidump*) ;;
6997         *)
6998                 case "$hostcat" in
6999                 *ypcat*) dflt=y;;
7000                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7001                                 dflt=y
7002                         else
7003                                 dflt=n
7004                         fi;;
7005                 *) dflt=n;;
7006                 esac
7007                 echo " "
7008                 rp='Are you getting the hosts file via yellow pages?'
7009                 . ./myread
7010                 case "$ans" in
7011                 y*) hostcat='ypcat hosts';;
7012                 *) hostcat='cat /etc/hosts';;
7013                 esac
7014                 ;;
7015         esac
7016 fi
7017 case "$hostcat" in
7018 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7019 esac
7020 case "$groupcat" in
7021 '') test -f /etc/group && groupcat='cat /etc/group';;
7022 esac
7023 case "$passcat" in
7024 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7025 esac
7026
7027 : now get the host name
7028 echo " "
7029 echo "Figuring out host name..." >&4
7030 case "$myhostname" in
7031 '') cont=true
7032         echo 'Maybe "hostname" will work...'
7033         if tans=`sh -c hostname 2>&1` ; then
7034                 myhostname=$tans
7035                 phostname=hostname
7036                 cont=''
7037         fi
7038         ;;
7039 *) cont='';;
7040 esac
7041 if $test "$cont"; then
7042         if ./xenix; then
7043                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7044                 if tans=`cat /etc/systemid 2>&1` ; then
7045                         myhostname=$tans
7046                         phostname='cat /etc/systemid'
7047                         echo "Whadyaknow.  Xenix always was a bit strange..."
7048                         cont=''
7049                 fi
7050         elif $test -r /etc/systemid; then
7051                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7052         fi
7053 fi
7054 if $test "$cont"; then
7055         echo 'No, maybe "uuname -l" will work...'
7056         if tans=`sh -c 'uuname -l' 2>&1` ; then
7057                 myhostname=$tans
7058                 phostname='uuname -l'
7059         else
7060                 echo 'Strange.  Maybe "uname -n" will work...'
7061                 if tans=`sh -c 'uname -n' 2>&1` ; then
7062                         myhostname=$tans
7063                         phostname='uname -n'
7064                 else
7065                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7066                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7067                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7068                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7069                         else
7070                                 case "$myhostname" in
7071                                 '') echo "Does this machine have an identity crisis or something?"
7072                                         phostname='';;
7073                                 *)
7074                                         echo "Well, you said $myhostname before..."
7075                                         phostname='echo $myhostname';;
7076                                 esac
7077                         fi
7078                 fi
7079         fi
7080 fi
7081 : you do not want to know about this
7082 set $myhostname
7083 myhostname=$1
7084
7085 : verify guess
7086 if $test "$myhostname" ; then
7087         dflt=y
7088         rp='Your host name appears to be "'$myhostname'".'" Right?"
7089         . ./myread
7090         case "$ans" in
7091         y*) ;;
7092         *) myhostname='';;
7093         esac
7094 fi
7095
7096 : bad guess or no guess
7097 while $test "X$myhostname" = X ; do
7098         dflt=''
7099         rp="Please type the (one word) name of your host:"
7100         . ./myread
7101         myhostname="$ans"
7102 done
7103
7104 : translate upper to lower if necessary
7105 case "$myhostname" in
7106 *[A-Z]*)
7107         echo "(Normalizing case in your host name)"
7108         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7109         ;;
7110 esac
7111
7112 case "$myhostname" in
7113 *.*)
7114         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7115         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7116         echo "(Trimming domain name from host name--host name is now $myhostname)"
7117         ;;
7118 *) case "$mydomain" in
7119         '')
7120                 {
7121                         test "X$hostcat" = "Xypcat hosts" &&
7122                         ypmatch "$myhostname" hosts 2>/dev/null |\
7123                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7124                         $test -s hosts
7125                 } || {
7126                         test "X$hostcat" != "X" &&
7127                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7128                                         /[       ]$myhostname[  . ]/p" > hosts
7129                 }
7130                 tmp_re="[       . ]"
7131                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7132                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7133                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7134                         hosts | $sort | $uniq | \
7135                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7136                 case `$echo X$dflt` in
7137                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7138                         dflt=.
7139                         ;;
7140                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7141                         ;;
7142                 esac
7143                 case "$dflt" in
7144                 .)
7145                         tans=`./loc resolv.conf X /etc /usr/etc`
7146                         if $test -f "$tans"; then
7147                                 echo "(Attempting domain name extraction from $tans)"
7148                                 dflt=.`$sed -n -e 's/   / /g' \
7149                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7150                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7151                                 case "$dflt" in
7152                                 .) dflt=.`$sed -n -e 's/        / /g' \
7153                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7154                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7155                                         ;;
7156                                 esac
7157                         fi
7158                         ;;
7159                 esac
7160                 case "$dflt" in
7161                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7162                         dflt=.`sh -c domainname 2>/dev/null`
7163                         case "$dflt" in
7164                         '') dflt='.';;
7165                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7166                         esac
7167                         ;;
7168                 esac
7169                 case "$dflt" in
7170                 .) echo "(Lost all hope -- silly guess then)"
7171                         dflt='.uucp'
7172                         ;;
7173                 esac
7174                 $rm -f hosts
7175                 ;;
7176         *) dflt="$mydomain";;
7177         esac;;
7178 esac
7179 echo " "
7180 rp="What is your domain name?"
7181 . ./myread
7182 tans="$ans"
7183 case "$ans" in
7184 '') ;;
7185 .*) ;;
7186 *) tans=".$tans";;
7187 esac
7188 mydomain="$tans"
7189
7190 : translate upper to lower if necessary
7191 case "$mydomain" in
7192 *[A-Z]*)
7193         echo "(Normalizing case in your domain name)"
7194         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7195         ;;
7196 esac
7197
7198 : a little sanity check here
7199 case "$phostname" in
7200 '') ;;
7201 *)
7202         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7203         $myhostname$mydomain|$myhostname) ;;
7204         *)
7205                 case "$phostname" in
7206                 sed*)
7207                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7208                         ;;
7209                 *)
7210                         echo "(That doesn't agree with your $phostname command, by the way.)"
7211                         ;;
7212                 esac
7213         ;;
7214         esac
7215         ;;
7216 esac
7217
7218 $cat <<EOM
7219
7220 I need to get your e-mail address in Internet format if possible, i.e.
7221 something like user@host.domain. Please answer accurately since I have
7222 no easy means to double check it. The default value provided below
7223 is most probably close to reality but may not be valid from outside
7224 your organization...
7225
7226 EOM
7227 cont=x
7228 while test "$cont"; do
7229         case "$cf_email" in
7230         '') dflt="$cf_by@$myhostname$mydomain";;
7231         *) dflt="$cf_email";;
7232         esac
7233         rp='What is your e-mail address?'
7234         . ./myread
7235         cf_email="$ans"
7236         case "$cf_email" in
7237         *@*.*) cont='' ;;
7238         *)
7239                 rp='Address does not look like an Internet one.  Use it anyway?'
7240                 case "$fastread" in
7241                 yes) dflt=y ;;
7242                 *) dflt=n ;;
7243                 esac
7244                 . ./myread
7245                 case "$ans" in
7246                 y*) cont='' ;;
7247                 *) echo " " ;;
7248                 esac
7249                 ;;
7250         esac
7251 done
7252
7253 $cat <<EOM
7254
7255 If you or somebody else will be maintaining perl at your site, please
7256 fill in the correct e-mail address here so that they may be contacted
7257 if necessary. Currently, the "perlbug" program included with perl
7258 will send mail to this address in addition to perlbug@perl.com. You may
7259 enter "none" for no administrator.
7260
7261 EOM
7262 case "$perladmin" in
7263 '') dflt="$cf_email";;
7264 *) dflt="$perladmin";;
7265 esac
7266 rp='Perl administrator e-mail address'
7267 . ./myread
7268 perladmin="$ans"
7269
7270 : figure out how to guarantee perl startup
7271 case "$startperl" in
7272 '')
7273         case "$sharpbang" in
7274         *!)
7275                 $cat <<EOH
7276
7277 I can use the #! construct to start perl on your system. This will
7278 make startup of perl scripts faster, but may cause problems if you
7279 want to share those scripts and perl is not in a standard place
7280 ($binexp/perl) on all your platforms. The alternative is to force
7281 a shell by starting the script with a single ':' character.
7282
7283 EOH
7284                 dflt="$binexp/perl"
7285                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7286                 . ./myread
7287                 case "$ans" in
7288                 none)   startperl=": # use perl";;
7289                 *)      startperl="#!$ans"
7290                         if $test 30 -lt `echo "$ans" | wc -c`; then
7291                                 $cat >&4 <<EOM
7292
7293 WARNING:  Some systems limit the #! command to 32 characters.
7294 If you experience difficulty running Perl scripts with #!, try
7295 installing Perl in a directory with a shorter pathname.
7296
7297 EOM
7298                         fi ;;
7299                 esac
7300                 ;;
7301         *) startperl=": # use perl"
7302                 ;;
7303         esac
7304         ;;
7305 esac
7306 echo "I'll use $startperl to start perl scripts."
7307
7308 : figure best path for perl in scripts
7309 case "$perlpath" in
7310 '')
7311         perlpath="$binexp/perl"
7312         case "$startperl" in
7313         *!*) ;;
7314         *)
7315                 $cat <<EOH
7316
7317 I will use the "eval 'exec'" idiom to start Perl on your system.
7318 I can use the full path of your Perl binary for this purpose, but
7319 doing so may cause problems if you want to share those scripts and
7320 Perl is not always in a standard place ($binexp/perl).
7321
7322 EOH
7323                 dflt="$binexp/perl"
7324                 rp="What path shall I use in \"eval 'exec'\"?"
7325                 . ./myread
7326                 perlpath="$ans"
7327                 ;;
7328         esac
7329         ;;
7330 esac
7331 case "$startperl" in
7332 *!*)    ;;
7333 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7334 esac
7335
7336 : determine where public executable scripts go
7337 set scriptdir scriptdir
7338 eval $prefixit
7339 case "$scriptdir" in
7340 '')
7341         dflt="$bin"
7342         : guess some guesses
7343         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7344         $test -d /usr/share/bin     && dflt=/usr/share/bin
7345         $test -d /usr/local/script  && dflt=/usr/local/script
7346         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7347         $test -d $prefixexp/script  && dflt=$prefixexp/script
7348         set dflt
7349         eval $prefixup
7350         ;;
7351 *)  dflt="$scriptdir"
7352         ;;
7353 esac
7354 $cat <<EOM
7355  
7356 Some installations have a separate directory just for executable scripts so
7357 that they can mount it across multiple architectures but keep the scripts in
7358 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7359 Or you might just lump your scripts in with all your other executables.
7360  
7361 EOM
7362 fn=d~
7363 rp='Where do you keep publicly executable scripts?'
7364 . ./getfile
7365 if $test "X$ansexp" != "X$scriptdirexp"; then
7366         installscript=''
7367 fi
7368 scriptdir="$ans"
7369 scriptdirexp="$ansexp"
7370 : Change installation prefix, if necessary.
7371 if $test X"$prefix" != X"$installprefix"; then
7372         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7373 else
7374         installscript="$scriptdirexp"
7375 fi
7376
7377 : determine where add-on public executables go
7378 case "$sitebin" in
7379 '')     dflt=$siteprefix/bin ;;
7380 *)      dflt=$sitebin ;;
7381 esac
7382 fn=d~
7383 rp='Pathname where the add-on public executables should be installed?'
7384 . ./getfile
7385 sitebin="$ans"
7386 sitebinexp="$ansexp"
7387 : Change installation prefix, if necessary.
7388 if $test X"$prefix" != X"$installprefix"; then
7389         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7390 else
7391         installsitebin="$sitebinexp"
7392 fi
7393
7394 : see if sqrtl exists
7395 set sqrtl d_sqrtl
7396 eval $inlibc
7397
7398 case "$ccflags" in
7399 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7400 esac
7401
7402 case "$uselongdouble" in
7403 $define|true|[yY]*)     dflt='y';;
7404 *) dflt='n';;
7405 esac
7406 cat <<EOM
7407
7408 Perl can be built to take advantage of long doubles which
7409 (if available) may give more accuracy and range for floating point numbers.
7410
7411 If this doesn't make any sense to you, just accept the default '$dflt'.
7412 EOM
7413 rp='Try to use long doubles if available?'
7414 . ./myread
7415 case "$ans" in
7416 y|Y)    val="$define"   ;;
7417 *)      val="$undef"    ;;
7418 esac
7419 set uselongdouble
7420 eval $setvar
7421
7422 case "$uselongdouble" in
7423 true|[yY]*) uselongdouble="$define" ;;
7424 esac
7425
7426 case "$uselongdouble" in
7427 $define)
7428 : Look for a hint-file generated 'call-back-unit'.  If the
7429 : user has specified that long doubles should be used,
7430 : we may need to set or change some other defaults.
7431         if $test -f uselongdouble.cbu; then
7432                 echo "Your platform has some specific hints for long doubles, using them..."
7433                 . ./uselongdouble.cbu
7434         else
7435                 $cat <<EOM
7436 (Your platform doesn't have any specific hints for long doubles.)
7437 EOM
7438         fi
7439         ;;
7440 esac
7441
7442 case "$uselongdouble:$d_sqrtl" in
7443 $define:$undef)
7444                 $cat <<EOM >&4
7445
7446 *** You requested the use of long doubles but you do not seem to have
7447 *** the mathematic functions for long doubles.  I'm disabling the use
7448 *** of long doubles.
7449
7450 EOM
7451         uselongdouble=$undef
7452         ;;
7453 esac
7454
7455 case "$useperlio" in
7456 $define|true|[yY]*)     dflt='y';;
7457 *) dflt='n';;
7458 esac
7459 cat <<EOM
7460
7461 Previous version of $package used the standard IO mechanisms as defined
7462 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7463 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7464 the default.  This abstraction layer can use AT&T's sfio (if you already
7465 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7466 problems with some extension modules.  Using PerlIO with stdio is safe,
7467 but it is slower than plain stdio and therefore is not the default.
7468
7469 If this doesn't make any sense to you, just accept the default '$dflt'.
7470 EOM
7471 rp='Use the experimental PerlIO abstraction layer?'
7472 . ./myread
7473 case "$ans" in
7474 y|Y) 
7475         val="$define"
7476         ;;     
7477 *)      
7478         echo "Ok, doing things the stdio way"
7479         val="$undef"
7480         ;;
7481 esac
7482 set useperlio
7483 eval $setvar 
7484
7485 case "$vendorprefix" in
7486 '')     d_vendorbin="$undef"
7487         vendorbin=''
7488         vendorbinexp=''
7489         ;;
7490 *)      d_vendorbin="$define"
7491         : determine where vendor-supplied executables go.
7492         case "$vendorbin" in
7493         '') dflt=$vendorprefix/bin ;;
7494         *)      dflt="$vendorbin" ;;
7495         esac
7496         fn=d~+
7497         rp='Pathname for the vendor-supplied executables directory?'
7498         . ./getfile
7499         vendorbin="$ans"
7500         vendorbinexp="$ansexp"
7501         ;;
7502 esac
7503 : Change installation prefix, if necessary.
7504 if $test X"$prefix" != X"$installprefix"; then
7505         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7506 else
7507         installvendorbin="$vendorbinexp"
7508 fi
7509
7510 : see if qgcvt exists
7511 set qgcvt d_qgcvt
7512 eval $inlibc
7513
7514 : check for length of double
7515 echo " "
7516 case "$doublesize" in
7517 '')
7518         echo "Checking to see how big your double precision numbers are..." >&4
7519         $cat >try.c <<'EOCP'
7520 #include <stdio.h>
7521 int main()
7522 {
7523     printf("%d\n", (int)sizeof(double));
7524     exit(0);
7525 }
7526 EOCP
7527         set try
7528         if eval $compile_ok; then
7529                 doublesize=`./try`
7530                 echo "Your double is $doublesize bytes long."
7531         else
7532                 dflt='8'
7533                 echo "(I can't seem to compile the test program.  Guessing...)"
7534                 rp="What is the size of a double precision number (in bytes)?"
7535                 . ./myread
7536                 doublesize="$ans"
7537         fi
7538         ;;
7539 esac
7540 $rm -f try.c try
7541
7542 : check for long doubles
7543 echo " "
7544 echo "Checking to see if you have long double..." >&4
7545 echo 'int main() { long double x = 7.0; }' > try.c
7546 set try
7547 if eval $compile; then
7548         val="$define"
7549         echo "You have long double."
7550 else
7551         val="$undef"
7552         echo "You do not have long double."
7553 fi
7554 $rm try.*
7555 set d_longdbl
7556 eval $setvar
7557
7558 : check for length of long double
7559 case "${d_longdbl}${longdblsize}" in
7560 $define)
7561         echo " "
7562         echo "Checking to see how big your long doubles are..." >&4
7563         $cat >try.c <<'EOCP'
7564 #include <stdio.h>
7565 int main()
7566 {
7567         printf("%d\n", sizeof(long double));
7568 }
7569 EOCP
7570         set try
7571         set try
7572         if eval $compile; then
7573                 longdblsize=`./try$exe_ext`
7574                 echo "Your long doubles are $longdblsize bytes long."
7575         else
7576                 dflt='8'
7577                 echo " "
7578                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7579                 rp="What is the size of a long double (in bytes)?"
7580                 . ./myread
7581                 longdblsize="$ans"
7582         fi
7583         if $test "X$doublesize" = "X$longdblsize"; then
7584                 echo "(That isn't any different from an ordinary double.)"
7585         fi      
7586         ;;
7587 esac
7588 $rm -f try.* try
7589
7590 echo " "
7591
7592 if $test X"$d_longdbl" = X"$define"; then
7593
7594 echo "Checking how to print long doubles..." >&4
7595
7596 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7597         $cat >try.c <<'EOCP'
7598 #include <sys/types.h>
7599 #include <stdio.h>
7600 int main() {
7601   double d = 123.456;
7602   printf("%.3f\n", d);
7603 }
7604 EOCP
7605         set try
7606         if eval $compile; then
7607                 yyy=`./try$exe_ext`
7608                 case "$yyy" in
7609                 123.456)
7610                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7611                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7612                         echo "We will use %f."
7613                         ;;
7614                 esac
7615         fi
7616 fi
7617
7618 if $test X"$sPRIfldbl" = X; then
7619         $cat >try.c <<'EOCP'
7620 #include <sys/types.h>
7621 #include <stdio.h>
7622 int main() {
7623   long double d = 123.456;
7624   printf("%.3llf\n", d);
7625 }
7626 EOCP
7627         set try
7628         if eval $compile; then
7629                 yyy=`./try$exe_ext`
7630                 case "$yyy" in
7631                 123.456)
7632                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7633                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7634                         echo "We will use %llf."
7635                         ;;
7636                 esac
7637         fi
7638 fi
7639
7640 if $test X"$sPRIfldbl" = X; then
7641         $cat >try.c <<'EOCP'
7642 #include <sys/types.h>
7643 #include <stdio.h>
7644 int main() {
7645   long double d = 123.456;
7646   printf("%.3Lf\n", d);
7647 }
7648 EOCP
7649         set try
7650         if eval $compile; then
7651                 yyy=`./try$exe_ext`
7652                 case "$yyy" in
7653                 123.456)
7654                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7655                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7656                         echo "We will use %Lf."
7657                         ;;
7658                 esac
7659         fi
7660 fi
7661
7662 if $test X"$sPRIfldbl" = X; then
7663         $cat >try.c <<'EOCP'
7664 #include <sys/types.h>
7665 #include <stdio.h>
7666 int main() {
7667   long double d = 123.456;
7668   printf("%.3lf\n", d);
7669 }
7670 EOCP
7671         set try
7672         if eval $compile; then
7673                 yyy=`./try$exe_ext`
7674                 case "$yyy" in
7675                 123.456)
7676                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7677                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7678                         echo "We will use %lf."
7679                         ;;
7680                 esac
7681         fi
7682 fi
7683
7684 if $test X"$sPRIfldbl" = X; then
7685         echo "Cannot figure out how to print long doubles." >&4
7686 fi
7687
7688 $rm -f try try.*
7689
7690 fi # d_longdbl
7691
7692 case "$sPRIfldbl" in
7693 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7694         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7695         ;;
7696 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7697         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7698         ;;
7699 esac
7700
7701 : Check how to convert floats to strings.
7702 if test "X$d_Gconvert" = X; then
7703         echo " "
7704         echo "Checking for an efficient way to convert floats to strings."
7705         echo " " > try.c
7706         case "$uselongdouble" in
7707         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7708         esac
7709         case "$d_longdbl" in
7710         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7711         esac
7712         case "$d_PRIgldbl" in
7713         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7714         esac
7715         $cat >>try.c <<EOP
7716 #ifdef TRY_gconvert
7717 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7718 char *myname = "gconvert";
7719 #endif
7720 #ifdef TRY_gcvt
7721 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7722 char *myname = "gcvt";
7723 #endif
7724 #ifdef TRY_qgcvt
7725 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7726 char *myname = "qgcvt";
7727 #define DOUBLETYPE long double
7728 #endif
7729 #ifdef TRY_sprintf
7730 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7731 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7732 #else
7733 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7734 #endif
7735 char *myname = "sprintf";
7736 #endif
7737
7738 #ifndef DOUBLETYPE
7739 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7740 #define DOUBLETYPE long double
7741 #else
7742 #define DOUBLETYPE double
7743 #endif
7744 #endif
7745
7746 #include <stdio.h>
7747
7748 #define I_STDLIB $i_stdlib
7749 #ifdef I_STDLIB
7750 #include <stdlib.h>
7751 #endif
7752
7753 int
7754 checkit(expect, got)
7755 char *expect;
7756 char *got;
7757 {
7758     if (strcmp(expect, got)) {
7759                 printf("%s oddity:  Expected %s, got %s\n",
7760                         myname, expect, got);
7761                 exit(1);
7762         }
7763 }
7764
7765 int main()
7766
7767         char buf[64]; 
7768         buf[63] = '\0';
7769
7770         /* This must be 1st test on (which?) platform */
7771         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7772         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7773         checkit("0.1", buf);
7774
7775         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7776         checkit("1", buf);
7777
7778         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7779         checkit("1.1", buf);
7780
7781         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7782         checkit("1.01", buf);
7783
7784         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7785         checkit("1.001", buf);
7786
7787         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7788         checkit("1.0001", buf);
7789
7790         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7791         checkit("1.00001", buf);
7792
7793         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7794         checkit("1.000001", buf);
7795
7796         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7797         checkit("0", buf);
7798
7799         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7800         checkit("-1", buf);
7801
7802         /* Some Linux gcvt's give 1.e+5 here. */
7803         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7804         checkit("100000", buf);
7805         
7806         /* Some Linux gcvt's give -1.e+5 here. */
7807         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7808         checkit("-100000", buf);
7809
7810         exit(0);
7811 }
7812 EOP
7813         case "$d_Gconvert" in
7814         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7815         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7816         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7817         *) xxx_list='gconvert gcvt sprintf' ;;
7818         esac
7819
7820         case "$d_longdbl$uselongdouble$d_qgcvt" in
7821         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7822         esac
7823
7824         for xxx_convert in $xxx_list; do
7825                 echo "Trying $xxx_convert..."
7826                 $rm -f try try$_o
7827                 set try -DTRY_$xxx_convert
7828                 if eval $compile; then
7829                         echo "$xxx_convert() found." >&4
7830                         if ./try; then
7831                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7832                                 break;
7833                         else
7834                                 echo "...But $xxx_convert didn't work as I expected."
7835                         fi
7836                 else
7837                         echo "$xxx_convert NOT found." >&4
7838                 fi
7839         done
7840                 
7841         case "$xxx_convert" in
7842         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7843         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7844         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7845         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7846            "$define$define$define")
7847               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7848            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7849            esac
7850            ;;  
7851         esac
7852 fi
7853
7854 : Initialize h_fcntl
7855 h_fcntl=false
7856
7857 : Initialize h_sysfile
7858 h_sysfile=false
7859
7860 : access call always available on UNIX
7861 set access d_access
7862 eval $inlibc
7863
7864 : locate the flags for 'access()'
7865 case "$d_access" in
7866 "$define")
7867         echo " "
7868         $cat >access.c <<'EOCP'
7869 #include <sys/types.h>
7870 #ifdef I_FCNTL
7871 #include <fcntl.h>
7872 #endif
7873 #ifdef I_SYS_FILE
7874 #include <sys/file.h>
7875 #endif
7876 #ifdef I_UNISTD
7877 #include <unistd.h>
7878 #endif
7879 int main() {
7880         exit(R_OK);
7881 }
7882 EOCP
7883         : check sys/file.h first, no particular reason here
7884         if $test `./findhdr sys/file.h` && \
7885                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7886                 h_sysfile=true;
7887                 echo "<sys/file.h> defines the *_OK access constants." >&4
7888         elif $test `./findhdr fcntl.h` && \
7889                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7890                 h_fcntl=true;
7891                 echo "<fcntl.h> defines the *_OK access constants." >&4
7892         elif $test `./findhdr unistd.h` && \
7893                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7894                 echo "<unistd.h> defines the *_OK access constants." >&4
7895         else
7896                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7897         fi
7898         ;;
7899 esac
7900 $rm -f access*
7901
7902 : see if accessx exists
7903 set accessx d_accessx
7904 eval $inlibc
7905
7906 : see if alarm exists
7907 set alarm d_alarm
7908 eval $inlibc
7909
7910 : see if atolf exists
7911 set atolf d_atolf
7912 eval $inlibc
7913
7914 : see if atoll exists
7915 set atoll d_atoll
7916 eval $inlibc
7917
7918 : Look for GNU-cc style attribute checking
7919 echo " "
7920 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7921 $cat >attrib.c <<'EOCP'
7922 #include <stdio.h>
7923 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7924 EOCP
7925 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7926         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7927                 echo "Your C compiler doesn't fully support __attribute__."
7928                 val="$undef"
7929         else
7930                 echo "Your C compiler supports __attribute__."
7931                 val="$define"
7932         fi
7933 else
7934         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7935         val="$undef"
7936 fi
7937 set d_attribut
7938 eval $setvar
7939 $rm -f attrib*
7940
7941 : see if bcmp exists
7942 set bcmp d_bcmp
7943 eval $inlibc
7944
7945 : see if bcopy exists
7946 set bcopy d_bcopy
7947 eval $inlibc
7948
7949 : see if this is a unistd.h system
7950 set unistd.h i_unistd
7951 eval $inhdr
7952
7953 : see if getpgrp exists
7954 set getpgrp d_getpgrp
7955 eval $inlibc
7956
7957 case "$d_getpgrp" in
7958 "$define")
7959         echo " "
7960         echo "Checking to see which flavor of getpgrp is in use..."
7961         $cat >set.c <<EOP
7962 #$i_unistd I_UNISTD
7963 #include <sys/types.h>
7964 #ifdef I_UNISTD
7965 #  include <unistd.h>
7966 #endif
7967 int main()
7968 {
7969         if (getuid() == 0) {
7970                 printf("(I see you are running Configure as super-user...)\n");
7971                 setuid(1);
7972         }
7973 #ifdef TRY_BSD_PGRP
7974         if (getpgrp(1) == 0)
7975                 exit(0);
7976 #else
7977         if (getpgrp() > 0)
7978                 exit(0);
7979 #endif
7980         exit(1);
7981 }
7982 EOP
7983         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7984                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7985                 val="$define"
7986         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7987                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7988                 val="$undef"
7989         else
7990                 echo "I can't seem to compile and run the test program."
7991                 if ./usg; then
7992                         xxx="a USG one, i.e. you use getpgrp()."
7993                 else
7994                         # SVR4 systems can appear rather BSD-ish.
7995                         case "$i_unistd" in
7996                         $undef)
7997                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7998                                 val="$define"
7999                                 ;;
8000                         $define)
8001                                 xxx="probably a USG one, i.e. you use getpgrp()."
8002                                 val="$undef"
8003                                 ;;
8004                         esac
8005                 fi
8006                 echo "Assuming your getpgrp is $xxx" >&4
8007         fi
8008         ;;
8009 *) val="$undef";;
8010 esac
8011 set d_bsdgetpgrp
8012 eval $setvar
8013 $rm -f set set.c
8014
8015 : see if setpgrp exists
8016 set setpgrp d_setpgrp
8017 eval $inlibc
8018
8019 case "$d_setpgrp" in
8020 "$define")
8021         echo " "
8022         echo "Checking to see which flavor of setpgrp is in use..."
8023         $cat >set.c <<EOP
8024 #$i_unistd I_UNISTD
8025 #include <sys/types.h>
8026 #ifdef I_UNISTD
8027 #  include <unistd.h>
8028 #endif
8029 int main()
8030 {
8031         if (getuid() == 0) {
8032                 printf("(I see you are running Configure as super-user...)\n");
8033                 setuid(1);
8034         }
8035 #ifdef TRY_BSD_PGRP
8036         if (-1 == setpgrp(1, 1))
8037                 exit(0);
8038 #else
8039         if (setpgrp() != -1)
8040                 exit(0);
8041 #endif
8042         exit(1);
8043 }
8044 EOP
8045         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8046                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8047                 val="$define"
8048         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8049                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8050                 val="$undef"
8051         else
8052                 echo "(I can't seem to compile and run the test program.)"
8053                 if ./usg; then
8054                         xxx="a USG one, i.e. you use setpgrp()."
8055                 else
8056                         # SVR4 systems can appear rather BSD-ish.
8057                         case "$i_unistd" in
8058                         $undef)
8059                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8060                                 val="$define"
8061                                 ;;
8062                         $define)
8063                                 xxx="probably a USG one, i.e. you use setpgrp()."
8064                                 val="$undef"
8065                                 ;;
8066                         esac
8067                 fi
8068                 echo "Assuming your setpgrp is $xxx" >&4
8069         fi
8070         ;;
8071 *) val="$undef";;
8072 esac
8073 set d_bsdsetpgrp
8074 eval $setvar
8075 $rm -f set set.c
8076 : see if bzero exists
8077 set bzero d_bzero
8078 eval $inlibc
8079
8080 : see if signal is declared as pointer to function returning int or void
8081 echo " "
8082 xxx=`./findhdr signal.h`
8083 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8084 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8085         echo "You have int (*signal())() instead of void." >&4
8086         val="$undef"
8087 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8088         echo "You have void (*signal())()." >&4
8089         val="$define"
8090 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8091         echo "You have int (*signal())() instead of void." >&4
8092         val="$undef"
8093 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8094         echo "You have void (*signal())()." >&4
8095         val="$define"
8096 else
8097         case "$d_voidsig" in
8098         '')
8099         echo "I can't determine whether signal handler returns void or int..." >&4
8100                 dflt=void
8101                 rp="What type does your signal handler return?"
8102                 . ./myread
8103                 case "$ans" in
8104                 v*) val="$define";;
8105                 *) val="$undef";;
8106                 esac;;
8107         "$define")
8108                 echo "As you already told me, signal handler returns void." >&4
8109                 val="$define"
8110                 ;;
8111         *)      echo "As you already told me, signal handler returns int." >&4
8112                 val="$undef"
8113                 ;;
8114         esac
8115 fi
8116 set d_voidsig
8117 eval $setvar
8118 case "$d_voidsig" in
8119 "$define") signal_t="void";;
8120 *) signal_t="int";;
8121 esac
8122 $rm -f $$.tmp
8123
8124 : check for ability to cast large floats to 32-bit ints.
8125 echo " "
8126 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8127 if $test "$intsize" -ge 4; then
8128         xxx=int
8129 else
8130         xxx=long
8131 fi
8132 $cat >try.c <<EOCP
8133 #include <stdio.h>
8134 #include <sys/types.h>
8135 #include <signal.h>
8136 $signal_t blech(s) int s; { exit(3); }
8137 int main()
8138 {
8139         $xxx i32;
8140         double f, g;
8141         int result = 0;
8142         char str[16];
8143         signal(SIGFPE, blech);
8144
8145         /* Don't let compiler optimize the test away.  Store the number 
8146            in a writable string for gcc to pass to sscanf under HP/UX.
8147         */
8148         sprintf(str, "2147483647");
8149         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8150         g = 10 * f;
8151         i32  = ($xxx) g;
8152
8153         /* x86 processors will probably give 0x8000 0000, which is a
8154        sign change.  We don't want that.  We want to mimic SPARC
8155            behavior here, which is to preserve the sign and give
8156            back 0x7fff ffff.
8157         */
8158         if (i32 != ($xxx) f)
8159                 result |= 1;
8160         exit(result);
8161 }
8162 EOCP
8163 set try
8164 if eval $compile_ok; then
8165         ./try
8166         yyy=$?
8167 else
8168         echo "(I can't seem to compile the test program--assuming it can't)"
8169         yyy=1
8170 fi
8171 case "$yyy" in
8172 0)      val="$define"
8173         echo "Yup, it can."
8174         ;;
8175 *)      val="$undef"
8176         echo "Nope, it can't."
8177         ;;
8178 esac
8179 set d_casti32
8180 eval $setvar
8181 $rm -f try try.*
8182
8183 : check for ability to cast negative floats to unsigned
8184 echo " "
8185 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8186 $cat >try.c <<EOCP
8187 #include <stdio.h>
8188 #include <sys/types.h>
8189 #include <signal.h>
8190 $signal_t blech(s) int s; { exit(7); }
8191 $signal_t blech_in_list(s) int s; { exit(4); }
8192 unsigned long dummy_long(p) unsigned long p; { return p; }
8193 unsigned int dummy_int(p) unsigned int p; { return p; }
8194 unsigned short dummy_short(p) unsigned short p; { return p; }
8195 int main()
8196 {
8197         double f;
8198         unsigned long along;
8199         unsigned int aint;
8200         unsigned short ashort;
8201         int result = 0;
8202         char str[16];
8203         
8204         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8205            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8206            optimized the whole file away
8207         */
8208         /* Store the number in a writable string for gcc to pass to 
8209            sscanf under HP/UX.
8210         */
8211         sprintf(str, "-123");
8212         sscanf(str, "%lf", &f);  /* f = -123.; */
8213
8214         signal(SIGFPE, blech);
8215         along = (unsigned long)f;
8216         aint = (unsigned int)f;
8217         ashort = (unsigned short)f;
8218         if (along != (unsigned long)-123)
8219                 result |= 1;
8220         if (aint != (unsigned int)-123)
8221                 result |= 1;
8222         if (ashort != (unsigned short)-123)
8223                 result |= 1;
8224         sprintf(str, "1073741824.");
8225         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8226         f = f + f;
8227         along = 0;
8228         along = (unsigned long)f;
8229         if (along != 0x80000000)
8230                 result |= 2;
8231         f -= 1.;
8232         along = 0;
8233         along = (unsigned long)f;
8234         if (along != 0x7fffffff)
8235                 result |= 1;
8236         f += 2.;
8237         along = 0;
8238         along = (unsigned long)f;
8239         if (along != 0x80000001)
8240                 result |= 2;
8241         if (result)
8242                 exit(result);
8243         signal(SIGFPE, blech_in_list);
8244         sprintf(str, "123.");
8245         sscanf(str, "%lf", &f);  /* f = 123.; */
8246         along = dummy_long((unsigned long)f);
8247         aint = dummy_int((unsigned int)f);
8248         ashort = dummy_short((unsigned short)f);
8249         if (along != (unsigned long)123)
8250                 result |= 4;
8251         if (aint != (unsigned int)123)
8252                 result |= 4;
8253         if (ashort != (unsigned short)123)
8254                 result |= 4;
8255         exit(result);
8256
8257 }
8258 EOCP
8259 set try
8260 if eval $compile_ok; then
8261         ./try
8262         castflags=$?
8263 else
8264         echo "(I can't seem to compile the test program--assuming it can't)"
8265         castflags=7
8266 fi
8267 case "$castflags" in
8268 0)      val="$define"
8269         echo "Yup, it can."
8270         ;;
8271 *)      val="$undef"
8272         echo "Nope, it can't."
8273         ;;
8274 esac
8275 set d_castneg
8276 eval $setvar
8277 $rm -f try.*
8278
8279 : see if vprintf exists
8280 echo " "
8281 if set vprintf val -f d_vprintf; eval $csym; $val; then
8282         echo 'vprintf() found.' >&4
8283         val="$define"
8284         $cat >vprintf.c <<'EOF'
8285 #include <varargs.h>
8286
8287 int main() { xxx("foo"); }
8288
8289 xxx(va_alist)
8290 va_dcl
8291 {
8292         va_list args;
8293         char buf[10];
8294
8295         va_start(args);
8296         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8297 }
8298 EOF
8299         set vprintf
8300         if eval $compile && ./vprintf; then
8301                 echo "Your vsprintf() returns (int)." >&4
8302                 val2="$undef"
8303         else
8304                 echo "Your vsprintf() returns (char*)." >&4
8305                 val2="$define"
8306         fi
8307 else
8308         echo 'vprintf() NOT found.' >&4
8309                 val="$undef"
8310                 val2="$undef"
8311 fi
8312 set d_vprintf
8313 eval $setvar
8314 val=$val2
8315 set d_charvspr
8316 eval $setvar
8317
8318 : see if chown exists
8319 set chown d_chown
8320 eval $inlibc
8321
8322 : see if chroot exists
8323 set chroot d_chroot
8324 eval $inlibc
8325
8326 : see if chsize exists
8327 set chsize d_chsize
8328 eval $inlibc
8329
8330 : check for const keyword
8331 echo " "
8332 echo 'Checking to see if your C compiler knows about "const"...' >&4
8333 $cat >const.c <<'EOCP'
8334 typedef struct spug { int drokk; } spug;
8335 int main()
8336 {
8337         const char *foo;
8338         const spug y;
8339 }
8340 EOCP
8341 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8342         val="$define"
8343         echo "Yup, it does."
8344 else
8345         val="$undef"
8346         echo "Nope, it doesn't."
8347 fi
8348 set d_const
8349 eval $setvar
8350
8351 : see if crypt exists
8352 echo " "
8353 if set crypt val -f d_crypt; eval $csym; $val; then
8354         echo 'crypt() found.' >&4
8355         val="$define"
8356         cryptlib=''
8357 else
8358         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8359         if $test -z "$cryptlib"; then
8360                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8361         else
8362                 cryptlib=-lcrypt
8363         fi
8364         if $test -z "$cryptlib"; then
8365                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8366         else
8367                 cryptlib=-lcrypt
8368         fi
8369         if $test -z "$cryptlib"; then
8370                 cryptlib=`./loc libcrypt$_a "" $libpth`
8371         else
8372                 cryptlib=-lcrypt
8373         fi
8374         if $test -z "$cryptlib"; then
8375                 echo 'crypt() NOT found.' >&4
8376                 val="$undef"
8377         else
8378                 val="$define"
8379         fi
8380 fi
8381 set d_crypt
8382 eval $setvar
8383
8384 : get csh whereabouts
8385 case "$csh" in
8386 'csh') val="$undef" ;;
8387 *) val="$define" ;;
8388 esac
8389 set d_csh
8390 eval $setvar
8391 : Respect a hint or command line value for full_csh.
8392 case "$full_csh" in
8393 '') full_csh=$csh ;;
8394 esac
8395
8396 : see if cuserid exists
8397 set cuserid d_cuserid
8398 eval $inlibc
8399
8400 : see if this is a limits.h system
8401 set limits.h i_limits
8402 eval $inhdr
8403
8404 : see if this is a float.h system
8405 set float.h i_float
8406 eval $inhdr
8407
8408 : See if number of significant digits in a double precision number is known
8409 echo " "
8410 $cat >dbl_dig.c <<EOM
8411 #$i_limits I_LIMITS
8412 #$i_float I_FLOAT
8413 #ifdef I_LIMITS
8414 #include <limits.h>
8415 #endif
8416 #ifdef I_FLOAT
8417 #include <float.h>
8418 #endif
8419 #ifdef DBL_DIG
8420 printf("Contains DBL_DIG");
8421 #endif
8422 EOM
8423 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8424 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8425         echo "DBL_DIG found." >&4
8426         val="$define"
8427 else
8428         echo "DBL_DIG NOT found." >&4
8429         val="$undef"
8430 fi
8431 $rm -f dbl_dig.?
8432 set d_dbl_dig
8433 eval $setvar
8434
8435 : see if difftime exists
8436 set difftime d_difftime
8437 eval $inlibc
8438
8439 : see if this is a dirent system
8440 echo " "
8441 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8442         val="$define"
8443         echo "<dirent.h> found." >&4
8444 else
8445         val="$undef"
8446         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8447                 echo "<sys/dir.h> found." >&4
8448                 echo " "
8449         else
8450                 xinc=`./findhdr sys/ndir.h`
8451         fi
8452         echo "<dirent.h> NOT found." >&4
8453 fi
8454 set i_dirent
8455 eval $setvar
8456
8457 : Look for type of directory structure.
8458 echo " "
8459 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8460
8461 case "$direntrytype" in
8462 ''|' ')
8463         case "$i_dirent" in
8464         $define) guess1='struct dirent' ;;
8465         *) guess1='struct direct'  ;;
8466         esac
8467         ;;
8468 *)      guess1="$direntrytype"
8469         ;;
8470 esac
8471
8472 case "$guess1" in
8473 'struct dirent') guess2='struct direct' ;;
8474 *) guess2='struct dirent' ;;
8475 esac
8476                 
8477 if $contains "$guess1" try.c >/dev/null 2>&1; then
8478         direntrytype="$guess1"
8479         echo "Your directory entries are $direntrytype." >&4
8480 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8481         direntrytype="$guess2"
8482         echo "Your directory entries seem to be $direntrytype." >&4
8483 else
8484         echo "I don't recognize your system's directory entries." >&4
8485         rp="What type is used for directory entries on this system?"
8486         dflt="$guess1"
8487         . ./myread
8488         direntrytype="$ans"
8489 fi
8490 $rm -f try.c
8491
8492
8493 : see if the directory entry stores field length
8494 echo " "
8495 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8496 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8497         echo "Good, your directory entry keeps length information in d_namlen." >&4
8498         val="$define"
8499 else
8500         echo "Your directory entry does not know about the d_namlen field." >&4
8501         val="$undef"
8502 fi
8503 set d_dirnamlen
8504 eval $setvar
8505 $rm -f try.c
8506
8507 : see if dlerror exists
8508 xxx_runnm="$runnm"
8509 runnm=false
8510 set dlerror d_dlerror
8511 eval $inlibc
8512 runnm="$xxx_runnm"
8513
8514 : see if dlfcn is available
8515 set dlfcn.h i_dlfcn
8516 eval $inhdr
8517
8518 case "$usedl" in
8519 $define|y|true)
8520         $cat << EOM
8521
8522 On a few systems, the dynamically loaded modules that perl generates and uses
8523 will need a different extension than shared libs. The default will probably
8524 be appropriate.
8525
8526 EOM
8527         case "$dlext" in
8528         '')     dflt="$so" ;;
8529         *)      dflt="$dlext" ;;
8530         esac
8531         rp='What is the extension of dynamically loaded modules'
8532         . ./myread
8533         dlext="$ans"
8534         ;;
8535 *)
8536         dlext="none"
8537         ;;
8538 esac
8539
8540 : Check if dlsym need a leading underscore
8541 echo " "
8542 val="$undef"
8543
8544 case "$dlsrc" in
8545 dl_dlopen.xs)
8546         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8547         $cat >dyna.c <<'EOM'
8548 fred () { }
8549 EOM
8550
8551 $cat >fred.c<<EOM
8552
8553 #include <stdio.h>
8554 #$i_dlfcn I_DLFCN
8555 #ifdef I_DLFCN
8556 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8557 #else
8558 #include <sys/types.h>
8559 #include <nlist.h>
8560 #include <link.h>
8561 #endif
8562
8563 extern int fred() ;
8564
8565 int main()
8566 {
8567     void * handle ;
8568     void * symbol ;
8569 #ifndef RTLD_LAZY
8570     int mode = 1 ;
8571 #else
8572     int mode = RTLD_LAZY ;
8573 #endif
8574     handle = dlopen("./dyna.$dlext", mode) ;
8575     if (handle == NULL) {
8576         printf ("1\n") ;
8577         fflush (stdout) ;
8578         exit(0);
8579     }
8580     symbol = dlsym(handle, "fred") ;
8581     if (symbol == NULL) {
8582         /* try putting a leading underscore */
8583         symbol = dlsym(handle, "_fred") ;
8584         if (symbol == NULL) {
8585             printf ("2\n") ;
8586             fflush (stdout) ;
8587             exit(0);
8588         }
8589         printf ("3\n") ;
8590     }
8591     else
8592         printf ("4\n") ;
8593     fflush (stdout) ;
8594     exit(0);
8595 }
8596 EOM
8597         : Call the object file tmp-dyna.o in case dlext=o.
8598         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8599                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8600                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8601                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8602                 xxx=`./fred`
8603                 case $xxx in
8604                 1)      echo "Test program failed using dlopen." >&4
8605                         echo "Perhaps you should not use dynamic loading." >&4;;
8606                 2)      echo "Test program failed using dlsym." >&4
8607                         echo "Perhaps you should not use dynamic loading." >&4;;
8608                 3)      echo "dlsym needs a leading underscore" >&4
8609                         val="$define" ;;
8610                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8611                 esac
8612         else
8613                 echo "I can't compile and run the test program." >&4
8614                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8615         fi
8616         ;;
8617 esac
8618                 
8619 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8620
8621 set d_dlsymun
8622 eval $setvar
8623
8624 hasproto='varname=$1; func=$2; shift; shift;
8625 while $test $# -ge 2; do
8626         case "$1" in
8627         $define) echo "#include <$2>";;
8628         esac ;
8629     shift 2;
8630 done > try.c;
8631 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8632 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8633         echo "$func() prototype found.";
8634         val="$define";
8635 else
8636         echo "$func() prototype NOT found.";
8637         val="$undef";
8638 fi;
8639 set $varname;
8640 eval $setvar;
8641 $rm -f try.c tryout.c'
8642
8643 : see if prototype for drand48 is available
8644 echo " "
8645 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8646 eval $hasproto
8647
8648 : see if dup2 exists
8649 set dup2 d_dup2
8650 eval $inlibc
8651
8652 : see if eaccess exists
8653 set eaccess d_eaccess
8654 eval $inlibc
8655
8656 : see if endgrent exists
8657 set endgrent d_endgrent
8658 eval $inlibc
8659
8660 : see if endhostent exists
8661 set endhostent d_endhent
8662 eval $inlibc
8663
8664 : see if endnetent exists
8665 set endnetent d_endnent
8666 eval $inlibc
8667
8668 : see if endprotoent exists
8669 set endprotoent d_endpent
8670 eval $inlibc
8671
8672 : see if endpwent exists
8673 set endpwent d_endpwent
8674 eval $inlibc
8675
8676 : see if endservent exists
8677 set endservent d_endsent
8678 eval $inlibc
8679
8680 : Locate the flags for 'open()'
8681 echo " "
8682 $cat >open3.c <<'EOCP'
8683 #include <sys/types.h>
8684 #ifdef I_FCNTL
8685 #include <fcntl.h>
8686 #endif
8687 #ifdef I_SYS_FILE
8688 #include <sys/file.h>
8689 #endif
8690 int main() {
8691         if(O_RDONLY);
8692 #ifdef O_TRUNC
8693         exit(0);
8694 #else
8695         exit(1);
8696 #endif
8697 }
8698 EOCP
8699 : check sys/file.h first to get FREAD on Sun
8700 if $test `./findhdr sys/file.h` && \
8701                 set open3 -DI_SYS_FILE && eval $compile; then
8702         h_sysfile=true;
8703         echo "<sys/file.h> defines the O_* constants..." >&4
8704         if ./open3; then
8705                 echo "and you have the 3 argument form of open()." >&4
8706                 val="$define"
8707         else
8708                 echo "but not the 3 argument form of open().  Oh, well." >&4
8709                 val="$undef"
8710         fi
8711 elif $test `./findhdr fcntl.h` && \
8712                 set open3 -DI_FCNTL && eval $compile; then
8713         h_fcntl=true;
8714         echo "<fcntl.h> defines the O_* constants..." >&4
8715         if ./open3; then
8716                 echo "and you have the 3 argument form of open()." >&4
8717                 val="$define"
8718         else
8719                 echo "but not the 3 argument form of open().  Oh, well." >&4
8720                 val="$undef"
8721         fi
8722 else
8723         val="$undef"
8724         echo "I can't find the O_* constant definitions!  You got problems." >&4
8725 fi
8726 set d_open3
8727 eval $setvar
8728 $rm -f open3*
8729
8730 : see which of string.h or strings.h is needed
8731 echo " "
8732 strings=`./findhdr string.h`
8733 if $test "$strings" && $test -r "$strings"; then
8734         echo "Using <string.h> instead of <strings.h>." >&4
8735         val="$define"
8736 else
8737         val="$undef"
8738         strings=`./findhdr strings.h`
8739         if $test "$strings" && $test -r "$strings"; then
8740                 echo "Using <strings.h> instead of <string.h>." >&4
8741         else
8742                 echo "No string header found -- You'll surely have problems." >&4
8743         fi
8744 fi
8745 set i_string
8746 eval $setvar
8747 case "$i_string" in
8748 "$undef") strings=`./findhdr strings.h`;;
8749 *)        strings=`./findhdr string.h`;;
8750 esac
8751
8752 : check for non-blocking I/O stuff
8753 case "$h_sysfile" in
8754 true) echo "#include <sys/file.h>" > head.c;;
8755 *)
8756         case "$h_fcntl" in
8757         true) echo "#include <fcntl.h>" > head.c;;
8758         *) echo "#include <sys/fcntl.h>" > head.c;;
8759         esac
8760         ;;
8761 esac
8762 echo " "
8763 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8764 case "$o_nonblock" in
8765 '')
8766         $cat head.c > try.c
8767         $cat >>try.c <<'EOCP'
8768 #include <stdio.h>
8769 int main() {
8770 #ifdef O_NONBLOCK
8771         printf("O_NONBLOCK\n");
8772         exit(0);
8773 #endif
8774 #ifdef O_NDELAY
8775         printf("O_NDELAY\n");
8776         exit(0);
8777 #endif
8778 #ifdef FNDELAY
8779         printf("FNDELAY\n");
8780         exit(0);
8781 #endif
8782         exit(0);
8783 }
8784 EOCP
8785         set try
8786         if eval $compile_ok; then
8787                 o_nonblock=`./try`
8788                 case "$o_nonblock" in
8789                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8790                 *) echo "Seems like we can use $o_nonblock.";;
8791                 esac
8792         else
8793                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8794         fi
8795         ;;
8796 *) echo "Using $hint value $o_nonblock.";;
8797 esac
8798 $rm -f try try.* .out core
8799
8800 echo " "
8801 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8802 case "$eagain" in
8803 '')
8804         $cat head.c > try.c
8805         $cat >>try.c <<EOCP
8806 #include <errno.h>
8807 #include <sys/types.h>
8808 #include <signal.h>
8809 #include <stdio.h> 
8810 #define MY_O_NONBLOCK $o_nonblock
8811 #ifndef errno  /* XXX need better Configure test */
8812 extern int errno;
8813 #endif
8814 #$i_unistd I_UNISTD
8815 #ifdef I_UNISTD
8816 #include <unistd.h>
8817 #endif
8818 #$i_string I_STRING
8819 #ifdef I_STRING
8820 #include <string.h>
8821 #else
8822 #include <strings.h>
8823 #endif
8824 $signal_t blech(x) int x; { exit(3); }
8825 EOCP
8826         $cat >> try.c <<'EOCP'
8827 int main()
8828 {
8829         int pd[2];
8830         int pu[2];
8831         char buf[1];
8832         char string[100];
8833
8834         pipe(pd);       /* Down: child -> parent */
8835         pipe(pu);       /* Up: parent -> child */
8836         if (0 != fork()) {
8837                 int ret;
8838                 close(pd[1]);   /* Parent reads from pd[0] */
8839                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8840                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8841                         exit(1);
8842                 signal(SIGALRM, blech);
8843                 alarm(5);
8844                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8845                         exit(2);
8846                 sprintf(string, "%d\n", ret);
8847                 write(2, string, strlen(string));
8848                 alarm(0);
8849 #ifdef EAGAIN
8850                 if (errno == EAGAIN) {
8851                         printf("EAGAIN\n");
8852                         goto ok;
8853                 }
8854 #endif
8855 #ifdef EWOULDBLOCK
8856                 if (errno == EWOULDBLOCK)
8857                         printf("EWOULDBLOCK\n");
8858 #endif
8859         ok:
8860                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8861                 sleep(2);                               /* Give it time to close our pipe */
8862                 alarm(5);
8863                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8864                 alarm(0);
8865                 sprintf(string, "%d\n", ret);
8866                 write(3, string, strlen(string));
8867                 exit(0);
8868         }
8869
8870         close(pd[0]);                   /* We write to pd[1] */
8871         close(pu[1]);                   /* We read from pu[0] */
8872         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8873         close(pd[1]);                   /* Pipe pd is now fully closed! */
8874         exit(0);                                /* Bye bye, thank you for playing! */
8875 }
8876 EOCP
8877         set try
8878         if eval $compile_ok; then
8879                 echo "$startsh" >mtry
8880                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8881                 chmod +x mtry
8882                 ./mtry >/dev/null 2>&1
8883                 case $? in
8884                 0) eagain=`$cat try.out`;;
8885                 1) echo "Could not perform non-blocking setting!";;
8886                 2) echo "I did a successful read() for something that was not there!";;
8887                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8888                 *) echo "Something terribly wrong happened during testing.";;
8889                 esac
8890                 rd_nodata=`$cat try.ret`
8891                 echo "A read() system call with no data present returns $rd_nodata."
8892                 case "$rd_nodata" in
8893                 0|-1) ;;
8894                 *)
8895                         echo "(That's peculiar, fixing that to be -1.)"
8896                         rd_nodata=-1
8897                         ;;
8898                 esac
8899                 case "$eagain" in
8900                 '')
8901                         echo "Forcing errno EAGAIN on read() with no data available."
8902                         eagain=EAGAIN
8903                         ;;
8904                 *)
8905                         echo "Your read() sets errno to $eagain when no data is available."
8906                         ;;
8907                 esac
8908                 status=`$cat try.err`
8909                 case "$status" in
8910                 0) echo "And it correctly returns 0 to signal EOF.";;
8911                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8912                 *) echo "However, your read() returns '$status' on EOF??";;
8913                 esac
8914                 val="$define"
8915                 if test "$status" = "$rd_nodata"; then
8916                         echo "WARNING: you can't distinguish between EOF and no data!"
8917                         val="$undef"
8918                 fi
8919         else
8920                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8921                 eagain=EAGAIN
8922         fi
8923         set d_eofnblk
8924         eval $setvar
8925         ;;
8926 *)
8927         echo "Using $hint value $eagain."
8928         echo "Your read() returns $rd_nodata when no data is present."
8929         case "$d_eofnblk" in
8930         "$define") echo "And you can see EOF because read() returns 0.";;
8931         "$undef") echo "But you can't see EOF status from read() returned value.";;
8932         *)
8933                 echo "(Assuming you can't see EOF status from read anyway.)"
8934                 d_eofnblk=$undef
8935                 ;;
8936         esac
8937         ;;
8938 esac
8939 $rm -f try try.* .out core head.c mtry
8940
8941 : see if fchmod exists
8942 set fchmod d_fchmod
8943 eval $inlibc
8944
8945 : see if fchown exists
8946 set fchown d_fchown
8947 eval $inlibc
8948
8949 : see if this is an fcntl system
8950 set fcntl d_fcntl
8951 eval $inlibc
8952
8953 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8954 while $test $# -ge 2; do
8955         case "$1" in
8956         $define) echo "#include <$2>";;
8957         esac ;
8958     shift 2;
8959 done > try.c;
8960 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8961 set try;
8962 if eval $compile; then
8963         val="$define";
8964 else
8965         val="$undef";
8966 fi;
8967 set $varname;
8968 eval $setvar;
8969 $rm -f try.c try.o'
8970
8971 socketlib=''
8972 sockethdr=''
8973 : see whether socket exists
8974 echo " "
8975 $echo $n "Hmm... $c" >&4
8976 if set socket val -f d_socket; eval $csym; $val; then
8977         echo "Looks like you have Berkeley networking support." >&4
8978         d_socket="$define"
8979         if set setsockopt val -f; eval $csym; $val; then
8980                 d_oldsock="$undef"
8981         else
8982                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8983                 d_oldsock="$define"
8984         fi
8985 else
8986         if $contains socklib libc.list >/dev/null 2>&1; then
8987                 echo "Looks like you have Berkeley networking support." >&4
8988                 d_socket="$define"
8989                 : we will have to assume that it supports the 4.2 BSD interface
8990                 d_oldsock="$undef"
8991         else
8992                 echo "You don't have Berkeley networking in libc$_a..." >&4
8993                 if test "X$d_socket" = "X$define"; then
8994                    echo "...but you seem to believe that you have sockets." >&4
8995                 else
8996                         for net in net socket
8997                         do
8998                                 if test -f /usr/lib/lib$net$_a; then
8999                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9000                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9001                                         if $contains socket libc.list >/dev/null 2>&1; then
9002                                                 d_socket="$define"
9003                                                 socketlib="-l$net"
9004                                                 case "$net" in
9005                                                 net)
9006                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9007                                                         sockethdr="-I/usr/netinclude"
9008                                                         ;;
9009                                                 esac
9010                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9011                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9012                                                         d_oldsock="$undef"
9013                                                 else
9014                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9015                                                         d_oldsock="$define"
9016                                                 fi
9017                                                 break
9018                                         fi
9019                                 fi
9020                         done
9021                         if test "X$d_socket" != "X$define"; then
9022                            echo "or anywhere else I see." >&4
9023                            d_socket="$undef"
9024                            d_oldsock="$undef"
9025                         fi
9026                 fi
9027         fi
9028 fi
9029
9030 : see if socketpair exists
9031 set socketpair d_sockpair
9032 eval $inlibc
9033
9034
9035 echo " "
9036 echo "Checking the availability of certain socket constants..." >& 4
9037 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9038         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9039         $cat >try.c <<EOF
9040 #include <sys/types.h>
9041 #include <sys/socket.h>
9042 int main() {
9043     int i = $ENUM;
9044 }
9045 EOF
9046         val="$undef"
9047         set try; if eval $compile; then
9048                 val="$define"
9049         fi
9050         set d_${enum}; eval $setvar
9051         $rm -f try.c try
9052 done
9053
9054 : see if sys/select.h has to be included
9055 set sys/select.h i_sysselct
9056 eval $inhdr
9057
9058 : see if we should include time.h, sys/time.h, or both
9059 echo " "
9060 if test "X$timeincl" = X; then
9061         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9062         $echo $n "I'm now running the test program...$c"
9063         $cat >try.c <<'EOCP'
9064 #include <sys/types.h>
9065 #ifdef I_TIME
9066 #include <time.h>
9067 #endif
9068 #ifdef I_SYSTIME
9069 #ifdef SYSTIMEKERNEL
9070 #define KERNEL
9071 #endif
9072 #include <sys/time.h>
9073 #endif
9074 #ifdef I_SYSSELECT
9075 #include <sys/select.h>
9076 #endif
9077 int main()
9078 {
9079         struct tm foo;
9080 #ifdef S_TIMEVAL
9081         struct timeval bar;
9082 #endif
9083 #ifdef S_TIMEZONE
9084         struct timezone tzp;
9085 #endif
9086         if (foo.tm_sec == foo.tm_sec)
9087                 exit(0);
9088 #ifdef S_TIMEVAL
9089         if (bar.tv_sec == bar.tv_sec)
9090                 exit(0);
9091 #endif
9092         exit(1);
9093 }
9094 EOCP
9095         flags=''
9096         for s_timezone in '-DS_TIMEZONE' ''; do
9097         sysselect=''
9098         for s_timeval in '-DS_TIMEVAL' ''; do
9099         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9100         for i_time in '' '-DI_TIME'; do
9101         for i_systime in '-DI_SYSTIME' ''; do
9102                 case "$flags" in
9103                 '') $echo $n ".$c"
9104                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9105                         if eval $compile; then
9106                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9107                                 shift
9108                                 flags="$*"
9109                                 echo " "
9110                                 $echo $n "Succeeded with $flags$c"
9111                         fi
9112                         ;;
9113                 esac
9114         done
9115         done
9116         done
9117         done
9118         done
9119         timeincl=''
9120         echo " "
9121         case "$flags" in
9122         *SYSTIMEKERNEL*) i_systimek="$define"
9123                 timeincl=`./findhdr sys/time.h`
9124                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9125         *) i_systimek="$undef";;
9126         esac
9127         case "$flags" in
9128         *I_TIME*) i_time="$define"
9129                 timeincl=`./findhdr time.h`" $timeincl"
9130                 echo "We'll include <time.h>." >&4;;
9131         *) i_time="$undef";;
9132         esac
9133         case "$flags" in
9134         *I_SYSTIME*) i_systime="$define"
9135                 timeincl=`./findhdr sys/time.h`" $timeincl"
9136                 echo "We'll include <sys/time.h>." >&4;;
9137         *) i_systime="$undef";;
9138         esac
9139         $rm -f try.c try
9140 fi
9141
9142 : check for fd_set items
9143 $cat <<EOM
9144
9145 Checking to see how well your C compiler handles fd_set and friends ...
9146 EOM
9147 $cat >fd_set.c <<EOCP
9148 #$i_systime I_SYS_TIME
9149 #$i_sysselct I_SYS_SELECT
9150 #$d_socket HAS_SOCKET
9151 #include <sys/types.h>
9152 #ifdef HAS_SOCKET
9153 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9154 #endif
9155 #ifdef I_SYS_TIME
9156 #include <sys/time.h>
9157 #endif
9158 #ifdef I_SYS_SELECT
9159 #include <sys/select.h>
9160 #endif
9161 int main() {
9162         fd_set fds;
9163
9164 #ifdef TRYBITS
9165         if(fds.fds_bits);
9166 #endif
9167
9168 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9169         exit(0);
9170 #else
9171         exit(1);
9172 #endif
9173 }
9174 EOCP
9175 set fd_set -DTRYBITS
9176 if eval $compile; then
9177         d_fds_bits="$define"
9178         d_fd_set="$define"
9179         echo "Well, your system knows about the normal fd_set typedef..." >&4
9180         if ./fd_set; then
9181                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9182                 d_fd_macros="$define"
9183         else
9184                 $cat >&4 <<'EOM'
9185 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9186 EOM
9187                 d_fd_macros="$undef"
9188         fi
9189 else
9190         $cat <<'EOM'
9191 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9192 EOM
9193         set fd_set
9194         if eval $compile; then
9195                 d_fds_bits="$undef"
9196                 d_fd_set="$define"
9197                 echo "Well, your system has some sort of fd_set available..." >&4
9198                 if ./fd_set; then
9199                         echo "and you have the normal fd_set macros." >&4
9200                         d_fd_macros="$define"
9201                 else
9202                         $cat <<'EOM'
9203 but not the normal fd_set macros!  Gross!  More work for me...
9204 EOM
9205                         d_fd_macros="$undef"
9206                 fi
9207         else
9208         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9209                 d_fd_set="$undef"
9210                 d_fds_bits="$undef"
9211                 d_fd_macros="$undef"
9212         fi
9213 fi
9214 $rm -f fd_set*
9215
9216 : see if fgetpos exists
9217 set fgetpos d_fgetpos
9218 eval $inlibc
9219
9220 : see if flock exists
9221 set flock d_flock
9222 eval $inlibc
9223
9224 : see if fork exists
9225 set fork d_fork
9226 eval $inlibc
9227
9228 : see if pathconf exists
9229 set pathconf d_pathconf
9230 eval $inlibc
9231
9232 : see if fpathconf exists
9233 set fpathconf d_fpathconf
9234 eval $inlibc
9235
9236
9237 : check for fpos64_t
9238 echo " "
9239 echo "Checking to see if you have fpos64_t..." >&4
9240 $cat >try.c <<EOCP
9241 #include <stdio.h>
9242 int main() { fpos64_t x = 7; }
9243 EOCP
9244 set try
9245 if eval $compile; then
9246         val="$define"
9247         echo "You have fpos64_t."
9248 else
9249         val="$undef"
9250         echo "You do not have fpos64_t."
9251         case "$fpossize" in
9252         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9253         esac
9254 fi
9255 $rm -f try.* try
9256 set d_fpos64_t
9257 eval $setvar
9258
9259 : see if frexpl exists
9260 set frexpl d_frexpl
9261 eval $inlibc
9262
9263 hasstruct='varname=$1; struct=$2; shift; shift;
9264 while $test $# -ge 2; do
9265         case "$1" in
9266         $define) echo "#include <$2>";;
9267         esac ;
9268     shift 2;
9269 done > try.c;
9270 echo "int main () { struct $struct foo; }" >> try.c;
9271 set try;
9272 if eval $compile; then
9273         val="$define";
9274 else
9275         val="$undef";
9276 fi;
9277 set $varname;
9278 eval $setvar;
9279 $rm -f try.c try.o'
9280
9281 : see if this is a sys/param system
9282 set sys/param.h i_sysparam
9283 eval $inhdr
9284
9285 : see if this is a sys/mount.h system
9286 set sys/mount.h i_sysmount
9287 eval $inhdr
9288
9289 : see if sys/types.h has to be included
9290 set sys/types.h i_systypes
9291 eval $inhdr
9292
9293
9294 echo " "
9295 echo "Checking to see if your system supports struct fs_data..." >&4
9296 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9297 eval $hasstruct
9298 case "$d_fs_data_s" in
9299 "$define")      echo "Yes, it does."   ;;
9300 *)              echo "No, it doesn't." ;;
9301 esac
9302
9303 : see if fseeko exists
9304 set fseeko d_fseeko
9305 eval $inlibc
9306 case "$longsize" in
9307 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9308 esac
9309
9310 : see if fsetpos exists
9311 set fsetpos d_fsetpos
9312 eval $inlibc
9313
9314
9315 : see if fstatfs exists
9316 set fstatfs d_fstatfs
9317 eval $inlibc
9318
9319
9320 : see if statvfs exists
9321 set statvfs d_statvfs
9322 eval $inlibc
9323
9324 : see if fstatvfs exists
9325 set fstatvfs d_fstatvfs
9326 eval $inlibc
9327
9328
9329 : see if ftello exists
9330 set ftello d_ftello
9331 eval $inlibc
9332 case "$longsize" in
9333 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9334 esac
9335
9336 : see if getcwd exists
9337 set getcwd d_getcwd
9338 eval $inlibc
9339
9340 : see if getespwnam exists
9341 set getespwnam d_getespwnam
9342 eval $inlibc
9343
9344
9345 : see if getfsstat exists
9346 set getfsstat d_getfsstat
9347 eval $inlibc
9348
9349 : see if getgrent exists
9350 set getgrent d_getgrent
9351 eval $inlibc
9352
9353 : see if gethostbyaddr exists
9354 set gethostbyaddr d_gethbyaddr
9355 eval $inlibc
9356
9357 : see if gethostbyname exists
9358 set gethostbyname d_gethbyname
9359 eval $inlibc
9360
9361 : see if gethostent exists
9362 set gethostent d_gethent
9363 eval $inlibc
9364
9365 : see how we will look up host name
9366 echo " "
9367 call=''
9368 if set gethostname val -f d_gethname; eval $csym; $val; then
9369         echo 'gethostname() found.' >&4
9370         d_gethname="$define"
9371         call=gethostname
9372 fi
9373 if set uname val -f d_uname; eval $csym; $val; then
9374         if ./xenix; then
9375                 $cat <<'EOM'
9376 uname() was found, but you're running xenix, and older versions of xenix
9377 have a broken uname(). If you don't really know whether your xenix is old
9378 enough to have a broken system call, use the default answer.
9379
9380 EOM
9381                 dflt=y
9382                 case "$d_uname" in
9383                 "$define") dflt=n;;
9384                 esac
9385                 rp='Is your uname() broken?'
9386                 . ./myread
9387                 case "$ans" in
9388                 n*) d_uname="$define"; call=uname;;
9389                 esac
9390         else
9391                 echo 'uname() found.' >&4
9392                 d_uname="$define"
9393                 case "$call" in
9394                 '') call=uname ;;
9395                 esac
9396         fi
9397 fi
9398 case "$d_gethname" in
9399 '') d_gethname="$undef";;
9400 esac
9401 case "$d_uname" in
9402 '') d_uname="$undef";;
9403 esac
9404 case "$d_uname$d_gethname" in
9405 *define*)
9406         dflt=n
9407         cat <<EOM
9408  
9409 Every now and then someone has a $call() that lies about the hostname
9410 but can't be fixed for political or economic reasons.  If you wish, I can
9411 pretend $call() isn't there and maybe compute hostname at run-time
9412 thanks to the '$phostname' command.
9413
9414 EOM
9415         rp="Shall I ignore $call() from now on?"
9416         . ./myread
9417         case "$ans" in
9418         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9419         esac;;
9420 esac
9421 case "$phostname" in
9422 '') aphostname='';;
9423 *) case "$aphostname" in
9424         /*) ;;
9425         *) set X $phostname
9426                 shift
9427                 file=$1
9428                 shift
9429                 file=`./loc $file $file $pth`
9430                 aphostname=`echo $file $*`
9431                 ;;
9432         esac
9433         ;;
9434 esac
9435 case "$d_uname$d_gethname" in
9436 *define*) ;;
9437 *)
9438         case "$phostname" in
9439         '')
9440                 echo "There will be no way for $package to get your hostname." >&4;;
9441         *)
9442         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9443                 ;;
9444         esac;;
9445 esac
9446 case "$d_phostname" in
9447 '') d_phostname="$undef";;
9448 esac
9449
9450 : see if this is a netdb.h system
9451 set netdb.h i_netdb
9452 eval $inhdr
9453
9454 : see if prototypes for various gethostxxx netdb.h functions are available
9455 echo " "
9456 set d_gethostprotos gethostent $i_netdb netdb.h
9457 eval $hasproto
9458
9459 : see if getlogin exists
9460 set getlogin d_getlogin
9461 eval $inlibc
9462
9463 : see if getmnt exists
9464 set getmnt d_getmnt
9465 eval $inlibc
9466
9467 : see if getmntent exists
9468 set getmntent d_getmntent
9469 eval $inlibc
9470
9471 : see if getnetbyaddr exists
9472 set getnetbyaddr d_getnbyaddr
9473 eval $inlibc
9474
9475 : see if getnetbyname exists
9476 set getnetbyname d_getnbyname
9477 eval $inlibc
9478
9479 : see if getnetent exists
9480 set getnetent d_getnent
9481 eval $inlibc
9482
9483 : see if prototypes for various getnetxxx netdb.h functions are available
9484 echo " "
9485 set d_getnetprotos getnetent $i_netdb netdb.h
9486 eval $hasproto
9487
9488
9489 : see if getprotobyname exists
9490 set getprotobyname d_getpbyname
9491 eval $inlibc
9492
9493 : see if getprotobynumber exists
9494 set getprotobynumber d_getpbynumber
9495 eval $inlibc
9496
9497 : see if getprotoent exists
9498 set getprotoent d_getpent
9499 eval $inlibc
9500
9501 : see if getpgid exists
9502 set getpgid d_getpgid
9503 eval $inlibc
9504
9505 : see if getpgrp2 exists
9506 set getpgrp2 d_getpgrp2
9507 eval $inlibc
9508
9509 : see if getppid exists
9510 set getppid d_getppid
9511 eval $inlibc
9512
9513 : see if getpriority exists
9514 set getpriority d_getprior
9515 eval $inlibc
9516
9517 : see if prototypes for various getprotoxxx netdb.h functions are available
9518 echo " "
9519 set d_getprotoprotos getprotoent $i_netdb netdb.h
9520 eval $hasproto
9521
9522 : see if getprpwnam exists
9523 set getprpwnam d_getprpwnam
9524 eval $inlibc
9525
9526 : see if getpwent exists
9527 set getpwent d_getpwent
9528 eval $inlibc
9529
9530
9531 : see if getservbyname exists
9532 set getservbyname d_getsbyname
9533 eval $inlibc
9534
9535 : see if getservbyport exists
9536 set getservbyport d_getsbyport
9537 eval $inlibc
9538
9539 : see if getservent exists
9540 set getservent d_getsent
9541 eval $inlibc
9542
9543 : see if prototypes for various getservxxx netdb.h functions are available
9544 echo " "
9545 set d_getservprotos getservent $i_netdb netdb.h
9546 eval $hasproto
9547
9548 : see if getspnam exists
9549 set getspnam d_getspnam
9550 eval $inlibc
9551
9552 : see if gettimeofday or ftime exists
9553 set gettimeofday d_gettimeod
9554 eval $inlibc
9555 case "$d_gettimeod" in
9556 "$undef")
9557         set ftime d_ftime 
9558         eval $inlibc
9559         ;;
9560 *)
9561         val="$undef"; set d_ftime; eval $setvar
9562         ;;
9563 esac
9564 case "$d_gettimeod$d_ftime" in
9565 "$undef$undef")
9566         echo " "
9567         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9568         ;;
9569 esac
9570
9571 : see if this is an grp system
9572 set grp.h i_grp
9573 eval $inhdr
9574
9575 case "$i_grp" in
9576 $define)
9577         xxx=`./findhdr grp.h`
9578         $cppstdin $cppflags $cppminus < $xxx >$$.h
9579
9580         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9581                 val="$define"
9582         else
9583                 val="$undef"
9584         fi
9585         set d_grpasswd
9586         eval $setvar
9587
9588         $rm -f $$.h
9589         ;;
9590 *)
9591         val="$undef";
9592         set d_grpasswd; eval $setvar
9593         ;;
9594 esac
9595
9596 : see if hasmntopt exists
9597 set hasmntopt d_hasmntopt
9598 eval $inlibc
9599
9600 : see if this is a netinet/in.h or sys/in.h system
9601 set netinet/in.h i_niin sys/in.h i_sysin
9602 eval $inhdr
9603
9604 : see if arpa/inet.h has to be included
9605 set arpa/inet.h i_arpainet
9606 eval $inhdr
9607
9608 : see if htonl --and friends-- exists
9609 val=''
9610 set htonl val
9611 eval $inlibc
9612
9613 : Maybe they are macros.
9614 case "$val" in
9615 $undef)
9616         $cat >htonl.c <<EOM
9617 #include <stdio.h>
9618 #include <sys/types.h>
9619 #$i_niin I_NETINET_IN
9620 #$i_sysin I_SYS_IN
9621 #$i_arpainet I_ARPA_INET
9622 #ifdef I_NETINET_IN
9623 #include <netinet/in.h>
9624 #endif
9625 #ifdef I_SYS_IN
9626 #include <sys/in.h>
9627 #endif
9628 #ifdef I_ARPA_INET
9629 #include <arpa/inet.h>
9630 #endif
9631 #ifdef htonl
9632 printf("Defined as a macro.");
9633 #endif
9634 EOM
9635         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9636         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9637                 val="$define"
9638                 echo "But it seems to be defined as a macro." >&4
9639         fi
9640         $rm -f htonl.?
9641         ;;
9642 esac
9643 set d_htonl
9644 eval $setvar
9645
9646 : see if iconv exists
9647 set iconv d_iconv
9648 eval $inlibc
9649
9650 : index or strchr
9651 echo " "
9652 if set index val -f; eval $csym; $val; then
9653         if set strchr val -f d_strchr; eval $csym; $val; then
9654                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9655                         val="$define"
9656                         vali="$undef"
9657                         echo "strchr() found." >&4
9658                 else
9659                         val="$undef"
9660                         vali="$define"
9661                         echo "index() found." >&4
9662                 fi
9663         else
9664                 val="$undef"
9665                 vali="$define"
9666                 echo "index() found." >&4
9667         fi
9668 else
9669         if set strchr val -f d_strchr; eval $csym; $val; then
9670                 val="$define"
9671                 vali="$undef"
9672                 echo "strchr() found." >&4
9673         else
9674                 echo "No index() or strchr() found!" >&4
9675                 val="$undef"
9676                 vali="$undef"
9677         fi
9678 fi
9679 set d_strchr; eval $setvar
9680 val="$vali"
9681 set d_index; eval $setvar
9682
9683 : check whether inet_aton exists
9684 set inet_aton d_inetaton
9685 eval $inlibc
9686
9687 : see if inttypes.h is available
9688 : we want a real compile instead of Inhdr because some systems
9689 : have an inttypes.h which includes non-existent headers
9690 echo " "
9691 $cat >try.c <<EOCP
9692 #include <inttypes.h>
9693 int main() {
9694         static int32_t foo32 = 0x12345678;
9695 }
9696 EOCP
9697 set try
9698 if eval $compile; then
9699         echo "<inttypes.h> found." >&4
9700         val="$define"
9701 else
9702         echo "<inttypes.h> NOT found." >&4
9703         val="$undef"
9704 fi
9705 $rm -f try.c try
9706 set i_inttypes
9707 eval $setvar
9708
9709 : check for int64_t
9710 echo " "
9711 echo "Checking to see if you have int64_t..." >&4
9712 $cat >try.c <<EOCP
9713 #include <sys/types.h>
9714 #$i_inttypes I_INTTYPES
9715 #ifdef I_INTTYPES
9716 #include <inttypes.h>
9717 #endif
9718 int main() { int64_t x = 7; }
9719 EOCP
9720 set try
9721 if eval $compile; then
9722         val="$define"
9723         echo "You have int64_t."
9724 else
9725         val="$undef"
9726         echo "You do not have int64_t."
9727 fi
9728 $rm -f try try.*
9729 set d_int64_t
9730 eval $setvar
9731
9732 : Look for isascii
9733 echo " "
9734 $cat >isascii.c <<'EOCP'
9735 #include <stdio.h>
9736 #include <ctype.h>
9737 int main() {
9738         int c = 'A';
9739         if (isascii(c))
9740                 exit(0);
9741         else
9742                 exit(1);
9743 }
9744 EOCP
9745 set isascii
9746 if eval $compile; then
9747         echo "isascii() found." >&4
9748         val="$define"
9749 else
9750         echo "isascii() NOT found." >&4
9751         val="$undef"
9752 fi
9753 set d_isascii
9754 eval $setvar
9755 $rm -f isascii*
9756
9757 : see if isnan exists
9758 set isnan d_isnan
9759 eval $inlibc
9760
9761 : see if isnanl exists
9762 set isnanl d_isnanl
9763 eval $inlibc
9764
9765 : see if killpg exists
9766 set killpg d_killpg
9767 eval $inlibc
9768
9769 : see if lchown exists
9770 echo " "
9771 $cat > try.c <<'EOCP'
9772 /* System header to define __stub macros and hopefully few prototypes,
9773     which can conflict with char lchown(); below.  */
9774 #include <assert.h>
9775 /* Override any gcc2 internal prototype to avoid an error.  */
9776 /* We use char because int might match the return type of a gcc2
9777    builtin and then its argument prototype would still apply.  */
9778 char lchown();
9779 int main() {
9780     /*  The GNU C library defines this for functions which it implements
9781         to always fail with ENOSYS.  Some functions are actually named
9782         something starting with __ and the normal name is an alias.  */
9783 #if defined (__stub_lchown) || defined (__stub___lchown)
9784 choke me
9785 #else
9786 lchown();
9787 #endif
9788 ; return 0; }
9789 EOCP
9790 set try
9791 if eval $compile; then
9792     $echo "lchown() found." >&4
9793     val="$define"
9794 else
9795     $echo "lchown() NOT found." >&4
9796     val="$undef"
9797 fi
9798 set d_lchown
9799 eval $setvar
9800
9801 : See if number of significant digits in a double precision number is known
9802 echo " "
9803 $cat >ldbl_dig.c <<EOM
9804 #$i_limits I_LIMITS
9805 #$i_float I_FLOAT
9806 #ifdef I_LIMITS
9807 #include <limits.h>
9808 #endif
9809 #ifdef I_FLOAT
9810 #include <float.h>
9811 #endif
9812 #ifdef LDBL_DIG
9813 printf("Contains LDBL_DIG");
9814 #endif
9815 EOM
9816 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9817 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9818         echo "LDBL_DIG found." >&4
9819         val="$define"
9820 else
9821         echo "LDBL_DIG NOT found." >&4
9822         val="$undef"
9823 fi
9824 $rm -f ldbl_dig.?
9825 set d_ldbl_dig
9826 eval $setvar
9827
9828 : see if link exists
9829 set link d_link
9830 eval $inlibc
9831
9832 : see if localeconv exists
9833 set localeconv d_locconv
9834 eval $inlibc
9835
9836 : see if lockf exists
9837 set lockf d_lockf
9838 eval $inlibc
9839
9840 : check for long long
9841 echo " "
9842 echo "Checking to see if you have long long..." >&4
9843 echo 'int main() { long long x = 7; return 0; }' > try.c
9844 set try
9845 if eval $compile; then
9846         val="$define"
9847         echo "You have long long."
9848 else
9849         val="$undef"
9850         echo "You do not have long long."
9851 fi
9852 $rm try.*
9853 set d_longlong
9854 eval $setvar
9855
9856 : check for length of long long
9857 case "${d_longlong}${longlongsize}" in
9858 $define)
9859         echo " "
9860         echo "Checking to see how big your long longs are..." >&4
9861         $cat >try.c <<'EOCP'
9862 #include <stdio.h>
9863 int main()
9864 {
9865     printf("%d\n", (int)sizeof(long long));
9866     return(0);
9867 }
9868 EOCP
9869         set try
9870         if eval $compile_ok; then
9871                 longlongsize=`./try$exe_ext`
9872                 echo "Your long longs are $longlongsize bytes long."
9873         else
9874                 dflt='8'
9875                 echo " "
9876                 echo "(I can't seem to compile the test program.  Guessing...)"
9877                 rp="What is the size of a long long (in bytes)?"
9878                 . ./myread
9879                 longlongsize="$ans"
9880         fi
9881         if $test "X$longsize" = "X$longlongsize"; then
9882                 echo "(That isn't any different from an ordinary long.)"
9883         fi      
9884         ;;
9885 esac
9886 $rm -f try.* try
9887
9888 : see if prototype for lseek is available
9889 echo " "
9890 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9891 eval $hasproto
9892
9893 : see if lstat exists
9894 set lstat d_lstat
9895 eval $inlibc
9896
9897 : see if madvise exists
9898 set madvise d_madvise
9899 eval $inlibc
9900
9901 : see if mblen exists
9902 set mblen d_mblen
9903 eval $inlibc
9904
9905 : see if mbstowcs exists
9906 set mbstowcs d_mbstowcs
9907 eval $inlibc
9908
9909 : see if mbtowc exists
9910 set mbtowc d_mbtowc
9911 eval $inlibc
9912
9913 : see if memchr exists
9914 set memchr d_memchr
9915 eval $inlibc
9916
9917 : see if memcmp exists
9918 set memcmp d_memcmp
9919 eval $inlibc
9920
9921 : see if memcpy exists
9922 set memcpy d_memcpy
9923 eval $inlibc
9924
9925 : see if memmove exists
9926 set memmove d_memmove
9927 eval $inlibc
9928
9929 : see if memset exists
9930 set memset d_memset
9931 eval $inlibc
9932
9933 : see if mkdir exists
9934 set mkdir d_mkdir
9935 eval $inlibc
9936
9937 : see if mkdtemp exists
9938 set mkdtemp d_mkdtemp
9939 eval $inlibc
9940
9941 : see if mkfifo exists
9942 set mkfifo d_mkfifo
9943 eval $inlibc
9944
9945 : see if mkstemp exists
9946 set mkstemp d_mkstemp
9947 eval $inlibc
9948
9949 : see if mkstemps exists
9950 set mkstemps d_mkstemps
9951 eval $inlibc
9952
9953 : see if mktime exists
9954 set mktime d_mktime
9955 eval $inlibc
9956
9957 : see if this is a sys/mman.h system
9958 set sys/mman.h i_sysmman
9959 eval $inhdr
9960
9961 : see if mmap exists
9962 set mmap d_mmap
9963 eval $inlibc
9964 : see what shmat returns
9965 : default to something harmless
9966 mmaptype='void *'
9967 case "$i_sysmman$d_mmap" in
9968 "$define$define")
9969         $cat >mmap.c <<'END'
9970 #include <sys/mman.h>
9971 void *mmap();
9972 END
9973         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9974                 mmaptype='void *'
9975         else
9976                 mmaptype='caddr_t'
9977         fi
9978         echo "and it returns ($mmaptype)." >&4
9979         ;;
9980 esac
9981
9982
9983
9984 : see if modfl exists
9985 set modfl d_modfl
9986 eval $inlibc
9987
9988 : see if mprotect exists
9989 set mprotect d_mprotect
9990 eval $inlibc
9991
9992 : see if msgctl exists
9993 set msgctl d_msgctl
9994 eval $inlibc
9995
9996 : see if msgget exists
9997 set msgget d_msgget
9998 eval $inlibc
9999
10000 : see if msgsnd exists
10001 set msgsnd d_msgsnd
10002 eval $inlibc
10003
10004 : see if msgrcv exists
10005 set msgrcv d_msgrcv
10006 eval $inlibc
10007
10008 : see how much of the 'msg*(2)' library is present.
10009 h_msg=true
10010 echo " "
10011 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10012 *"$undef"*) h_msg=false;;
10013 esac
10014 case "$osname" in
10015 freebsd)
10016     case "`ipcs 2>&1`" in
10017     "SVID messages"*"not configured"*)
10018         echo "Your $osname does not have the msg*(2) configured." >&4
10019         h_msg=false
10020         val="$undef"
10021         set msgctl d_msgctl
10022         eval $setvar
10023         set msgget d_msgget
10024         eval $setvar
10025         set msgsnd d_msgsnd
10026         eval $setvar
10027         set msgrcv d_msgrcv
10028         eval $setvar
10029         ;;
10030     esac
10031     ;;
10032 esac
10033 : we could also check for sys/ipc.h ...
10034 if $h_msg && $test `./findhdr sys/msg.h`; then
10035         echo "You have the full msg*(2) library." >&4
10036         val="$define"
10037 else
10038         echo "You don't have the full msg*(2) library." >&4
10039         val="$undef"
10040 fi
10041 set d_msg
10042 eval $setvar
10043
10044 : see if msync exists
10045 set msync d_msync
10046 eval $inlibc
10047
10048 : see if munmap exists
10049 set munmap d_munmap
10050 eval $inlibc
10051
10052 : see if nice exists
10053 set nice d_nice
10054 eval $inlibc
10055
10056
10057 echo " "
10058 echo "Checking which 64-bit integer type we could use..." >&4
10059
10060 case "$intsize" in
10061 8) val=int
10062    set quadtype
10063    eval $setvar
10064    val='"unsigned int"'
10065    set uquadtype
10066    eval $setvar
10067    quadkind=1
10068    ;;
10069 *) case "$longsize" in
10070    8) val=long
10071       set quadtype
10072       eval $setvar
10073       val='"unsigned long"'
10074       set uquadtype
10075       eval $setvar
10076       quadkind=2
10077       ;;
10078    *) case "$d_longlong:$longlongsize" in
10079       define:8)
10080         val='"long long"'
10081         set quadtype
10082         eval $setvar
10083         val='"unsigned long long"'
10084         set uquadtype
10085         eval $setvar
10086         quadkind=3
10087         ;;
10088       *) case "$d_int64_t" in
10089          define)
10090            val=int64_t
10091            set quadtype
10092            eval $setvar
10093            val=uint64_t
10094            set uquadtype
10095            eval $setvar
10096            quadkind=4
10097            ;;
10098          esac
10099          ;;
10100       esac
10101       ;;
10102    esac
10103    ;;
10104 esac
10105
10106 case "$quadtype" in
10107 '')     echo "Alas, no 64-bit integer types in sight." >&4
10108         d_quad="$undef"
10109         ;;
10110 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10111             verb="will"
10112         else
10113             verb="could"
10114         fi
10115         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10116         d_quad="$define"
10117         ;;
10118 esac
10119
10120 : check for length of character
10121 echo " "
10122 case "$charsize" in
10123 '')
10124         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10125         $cat >try.c <<'EOCP'
10126 #include <stdio.h>
10127 int main()
10128 {
10129     printf("%d\n", (int)sizeof(char));
10130     exit(0);
10131 }
10132 EOCP
10133         set try
10134         if eval $compile_ok; then
10135                 dflt=`./try`
10136         else
10137                 dflt='1'
10138                 echo "(I can't seem to compile the test program.  Guessing...)"
10139         fi
10140         ;;
10141 *)
10142         dflt="$charsize"
10143         ;;
10144 esac
10145 rp="What is the size of a character (in bytes)?"
10146 . ./myread
10147 charsize="$ans"
10148 $rm -f try.c try
10149
10150
10151 echo " "
10152 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10153
10154 case "$use64bitint:$d_quad:$quadtype" in
10155 define:define:?*)
10156         ivtype="$quadtype"
10157         uvtype="$uquadtype"
10158         ivsize=8
10159         uvsize=8
10160         ;;
10161 *)      ivtype="long"
10162         uvtype="unsigned long"
10163         ivsize=$longsize
10164         uvsize=$longsize
10165         ;;
10166 esac
10167
10168 case "$uselongdouble:$d_longdbl" in
10169 define:define)
10170         nvtype="long double"
10171         nvsize=$longdblsize
10172         ;;
10173 *)      nvtype=double
10174         nvsize=$doublesize
10175         ;;
10176 esac
10177
10178 $echo "(IV will be "$ivtype", $ivsize bytes)"
10179 $echo "(UV will be "$uvtype", $uvsize bytes)"
10180 $echo "(NV will be "$nvtype", $nvsize bytes)"
10181
10182 $cat >try.c <<EOCP
10183 #$i_inttypes I_INTTYPES
10184 #ifdef I_INTTYPES
10185 #include <inttypes.h>
10186 #endif
10187 #include <stdio.h>
10188 int main() {
10189 #ifdef INT8
10190    int8_t i =  INT8_MAX;
10191   uint8_t u = UINT8_MAX;
10192   printf("int8_t\n");
10193 #endif
10194 #ifdef INT16
10195    int16_t i =  INT16_MAX;
10196   uint16_t i = UINT16_MAX;
10197   printf("int16_t\n");
10198 #endif
10199 #ifdef INT32
10200    int32_t i =  INT32_MAX;
10201   uint32_t u = UINT32_MAX;
10202   printf("int32_t\n");
10203 #endif
10204 }
10205 EOCP
10206
10207 case "$i8type" in
10208 '')     case "$charsize" in
10209         1)      i8type=char
10210                 u8type="unsigned char"
10211                 i8size=$charsize
10212                 u8size=$charsize
10213                 ;;
10214         esac
10215         ;;
10216 esac
10217 case "$i8type" in
10218 '')     set try -DINT8
10219         if eval $compile; then
10220                 case "`./try$exe_ext`" in
10221                 int8_t) i8type=int8_t
10222                         u8type=uint8_t
10223                         i8size=1
10224                         u8size=1
10225                         ;;
10226                 esac
10227         fi
10228         ;;
10229 esac
10230 case "$i8type" in
10231 '')     if $test $charsize -ge 1; then
10232                 i8type=char
10233                 u8type="unsigned char"
10234                 i8size=$charsize
10235                 u8size=$charsize
10236         fi
10237         ;;
10238 esac
10239
10240 case "$i16type" in
10241 '')     case "$shortsize" in
10242         2)      i16type=short
10243                 u16type="unsigned short"
10244                 i16size=$shortsize
10245                 u16size=$shortsize
10246                 ;;
10247         esac
10248         ;;
10249 esac
10250 case "$i16type" in
10251 '')     set try -DINT16
10252         if eval $compile; then
10253                 case "`./try$exe_ext`" in
10254                 int16_t)
10255                         i16type=int16_t
10256                         u16type=uint16_t
10257                         i16size=2
10258                         u16size=2
10259                         ;;
10260                 esac
10261         fi
10262         ;;
10263 esac
10264 case "$i16type" in
10265 '')     if $test $shortsize -ge 2; then
10266                 i16type=short
10267                 u16type="unsigned short"
10268                 i16size=$shortsize
10269                 u16size=$shortsize
10270         fi
10271         ;;
10272 esac
10273
10274 case "$i32type" in
10275 '')     case "$longsize" in
10276         4)      i32type=long
10277                 u32type="unsigned long"
10278                 i32size=$longsize
10279                 u32size=$longsize
10280                 ;;
10281         *)      case "$intsize" in
10282                 4)      i32type=int
10283                         u32type="unsigned int"
10284                         i32size=$intsize
10285                         u32size=$intsize
10286                         ;;
10287                 esac
10288                 ;;
10289         esac
10290         ;;
10291 esac
10292 case "$i32type" in
10293 '')     set try -DINT32
10294         if eval $compile; then
10295                 case "`./try$exe_ext`" in
10296                 int32_t)
10297                         i32type=int32_t
10298                         u32type=uint32_t
10299                         i32size=4
10300                         u32size=4
10301                         ;;
10302                 esac
10303         fi
10304         ;;
10305 esac
10306 case "$i32type" in
10307 '')     if $test $intsize -ge 4; then
10308                 i32type=int
10309                 u32type="unsigned int"
10310                 i32size=$intsize
10311                 u32size=$intsize
10312         fi
10313         ;;
10314 esac
10315
10316 case "$i64type" in
10317 '')     case "$d_quad:$quadtype" in
10318         define:?*)
10319                 i64type="$quadtype"
10320                 u64type="$uquadtype"
10321                 i64size=8
10322                 u64size=8
10323                 ;;
10324         esac
10325         ;;
10326 esac
10327
10328 $echo "Checking whether your NVs can preserve your UVs..." >&4
10329 $cat <<EOP >try.c
10330 #include <stdio.h>
10331 int main() {
10332     $uvtype k = ($uvtype)~0, l;
10333     $nvtype d;
10334     l = k;
10335     d = ($nvtype)l;
10336     l = ($uvtype)d;
10337     if (l == k)
10338        printf("preserve\n");
10339     exit(0);
10340 }
10341 EOP
10342 set try
10343 if eval $compile; then
10344         case "`./try$exe_ext`" in
10345         preserve) d_nv_preserves_uv="$define" ;;
10346         esac
10347 fi      
10348 case "$d_nv_preserves_uv" in
10349 $define) $echo "Yes, they can."  2>&1 ;;
10350 *)       $echo "No, they can't." 2>&1
10351          d_nv_preserves_uv="$undef"
10352          ;;
10353 esac
10354
10355 $rm -f try.* try
10356
10357 case "$d_nv_preserves_uv" in
10358 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10359 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10360         $cat <<EOP >try.c
10361 #include <stdio.h>
10362 int main() {
10363     $uvtype u = 0;
10364     int     n = 8 * $uvsize;
10365     int     i;
10366     for (i = 0; i < n; i++) {
10367       u = u << 1 | ($uvtype)1;
10368       if (($uvtype)($nvtype)u != u)
10369         break;
10370     }
10371     printf("%d\n", i);
10372     exit(0);
10373 }
10374 EOP
10375         set try
10376         if eval $compile; then
10377                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10378         fi
10379         case "$d_nv_preserves_uv_bits" in
10380         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10381         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10382                 d_nv_preserves_uv_bits="$undef"
10383                 ;;
10384         esac
10385         $rm -f try.* try
10386         ;;
10387 esac
10388
10389
10390
10391 : check for off64_t
10392 echo " "
10393 echo "Checking to see if you have off64_t..." >&4
10394 $cat >try.c <<EOCP
10395 #include <sys/types.h>
10396 #include <unistd.h>
10397 int main() { off64_t x = 7; }
10398 EOCP
10399 set try
10400 if eval $compile; then
10401         val="$define"
10402         echo "You have off64_t."
10403 else
10404         val="$undef"
10405         echo "You do not have off64_t."
10406         case "$lseeksize" in
10407         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10408         esac
10409 fi
10410 $rm -f try.* try
10411 set d_off64_t
10412 eval $setvar
10413
10414 : see if POSIX threads are available
10415 set pthread.h i_pthread
10416 eval $inhdr
10417
10418
10419
10420
10421 : how to create joinable pthreads
10422 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10423         echo " "
10424         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10425         $cat >try.c <<'EOCP'
10426 #include <pthread.h>
10427 int main() {
10428     int detachstate = JOINABLE;
10429 }
10430 EOCP
10431         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10432         if eval $compile; then
10433                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10434                 val="$undef" # Yes, undef.
10435                 set d_old_pthread_create_joinable
10436                 eval $setvar
10437                 val=""
10438                 set old_pthread_create_joinable
10439                 eval $setvar
10440         else
10441                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10442                 if eval $compile; then
10443                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10444                         val="$define"
10445                         set d_old_pthread_create_joinable
10446                         eval $setvar
10447                         val=PTHREAD_CREATE_UNDETACHED
10448                         set old_pthread_create_joinable
10449                         eval $setvar
10450                 else            
10451                         set try -DJOINABLE=__UNDETACHED
10452                         if eval $compile; then
10453                                 echo "You seem to use __UNDETACHED." >&4
10454                                 val="$define"
10455                                 set d_old_pthread_create_joinable
10456                                 eval $setvar
10457                                 val=__UNDETACHED
10458                                 set old_pthread_create_joinable
10459                                 eval $setvar
10460                         else
10461                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10462                                 val="$define"
10463                                 set d_old_pthread_create_joinable
10464                                 eval $setvar
10465                                 val=0
10466                                 set old_pthread_create_joinable
10467                                 eval $setvar
10468                         fi
10469                 fi
10470         fi
10471         $rm -f try try.*
10472 else
10473     d_old_pthread_create_joinable="$undef"
10474     old_pthread_create_joinable=""
10475 fi
10476
10477 : see if pause exists
10478 set pause d_pause
10479 eval $inlibc
10480
10481 : see if pipe exists
10482 set pipe d_pipe
10483 eval $inlibc
10484
10485 : see if poll exists
10486 set poll d_poll
10487 eval $inlibc
10488
10489
10490 : see whether the various POSIXish _yields exist
10491 $cat >try.c <<EOP
10492 #include <pthread.h>
10493 #include <stdio.h>
10494 int main() {
10495 #ifdef SCHED_YIELD
10496         sched_yield();
10497 #else
10498 #ifdef PTHREAD_YIELD
10499         pthread_yield();
10500 #else
10501 #ifdef PTHREAD_YIELD_NULL
10502         pthread_yield(NULL);
10503 #endif
10504 #endif
10505 #endif
10506 }
10507 EOP
10508 : see if sched_yield exists
10509 set try -DSCHED_YIELD
10510 if eval $compile; then
10511     val="$define"
10512     sched_yield='sched_yield()'
10513 else
10514     val="$undef"
10515 fi
10516 case "$usethreads" in
10517 $define)
10518         case "$val" in
10519         $define) echo 'sched_yield() found.' >&4        ;;
10520         *)       echo 'sched_yield() NOT found.' >&4    ;;
10521         esac
10522 esac
10523 set d_sched_yield
10524 eval $setvar
10525
10526 : see if pthread_yield exists
10527 set try -DPTHREAD_YIELD
10528 if eval $compile; then
10529     val="$define"
10530     case "$sched_yield" in
10531     '') sched_yield='pthread_yield()' ;;
10532     esac
10533 else
10534     set try -DPTHREAD_YIELD_NULL
10535     if eval $compile; then
10536         val="$define"
10537         case "$sched_yield" in
10538         '') sched_yield='pthread_yield(NULL)' ;;
10539         esac
10540     else
10541         val="$undef"
10542     fi
10543 fi
10544 case "$usethreads" in
10545 $define)
10546         case "$val" in
10547         $define) echo 'pthread_yield() found.' >&4      ;;
10548         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10549         esac
10550         ;;
10551 esac
10552 set d_pthread_yield
10553 eval $setvar
10554
10555 case "$sched_yield" in
10556 '') sched_yield=undef ;;
10557 esac
10558
10559 $rm -f try try.*
10560
10561 : see if this is a pwd.h system
10562 set pwd.h i_pwd
10563 eval $inhdr
10564
10565 case "$i_pwd" in
10566 $define)
10567         xxx=`./findhdr pwd.h`
10568         $cppstdin $cppflags $cppminus < $xxx >$$.h
10569
10570         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10571                 val="$define"
10572         else
10573                 val="$undef"
10574         fi
10575         set d_pwquota
10576         eval $setvar
10577
10578         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10579                 val="$define"
10580         else
10581                 val="$undef"
10582         fi
10583         set d_pwage
10584         eval $setvar
10585
10586         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10587                 val="$define"
10588         else
10589                 val="$undef"
10590         fi
10591         set d_pwchange
10592         eval $setvar
10593
10594         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10595                 val="$define"
10596         else
10597                 val="$undef"
10598         fi
10599         set d_pwclass
10600         eval $setvar
10601
10602         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10603                 val="$define"
10604         else
10605                 val="$undef"
10606         fi
10607         set d_pwexpire
10608         eval $setvar
10609
10610         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10611                 val="$define"
10612         else
10613                 val="$undef"
10614         fi
10615         set d_pwcomment
10616         eval $setvar
10617
10618         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10619                 val="$define"
10620         else
10621                 val="$undef"
10622         fi
10623         set d_pwgecos
10624         eval $setvar
10625
10626         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10627                 val="$define"
10628         else
10629                 val="$undef"
10630         fi
10631         set d_pwpasswd
10632         eval $setvar
10633
10634         $rm -f $$.h
10635         ;;
10636 *)
10637         val="$undef"; 
10638         set d_pwquota; eval $setvar
10639         set d_pwage; eval $setvar
10640         set d_pwchange; eval $setvar
10641         set d_pwclass; eval $setvar
10642         set d_pwexpire; eval $setvar
10643         set d_pwcomment; eval $setvar
10644         set d_pwgecos; eval $setvar
10645         set d_pwpasswd; eval $setvar
10646         ;;
10647 esac
10648
10649 : see if readdir and friends exist
10650 set readdir d_readdir
10651 eval $inlibc
10652 set seekdir d_seekdir
10653 eval $inlibc
10654 set telldir d_telldir
10655 eval $inlibc
10656 set rewinddir d_rewinddir
10657 eval $inlibc
10658
10659 : see if readlink exists
10660 set readlink d_readlink
10661 eval $inlibc
10662
10663 : see if rename exists
10664 set rename d_rename
10665 eval $inlibc
10666
10667 : see if rmdir exists
10668 set rmdir d_rmdir
10669 eval $inlibc
10670
10671 : see if memory.h is available.
10672 val=''
10673 set memory.h val
10674 eval $inhdr
10675
10676 : See if it conflicts with string.h
10677 case "$val" in
10678 $define)
10679         case "$strings" in
10680         '') ;;
10681         *)
10682                 $cppstdin $cppflags $cppminus < $strings > mem.h
10683                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10684                         echo " "
10685                         echo "We won't be including <memory.h>."
10686                         val="$undef"
10687                 fi
10688                 $rm -f mem.h
10689                 ;;
10690         esac
10691 esac
10692 set i_memory
10693 eval $setvar
10694
10695 : can bcopy handle overlapping blocks?
10696 val="$undef"
10697 case "$d_bcopy" in
10698 "$define")
10699         echo " "
10700         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10701         $cat >try.c <<EOCP
10702 #$i_memory I_MEMORY
10703 #$i_stdlib I_STDLIB
10704 #$i_string I_STRING
10705 #$i_unistd I_UNISTD
10706 EOCP
10707         $cat >>try.c <<'EOCP'
10708 #include <stdio.h>
10709 #ifdef I_MEMORY
10710 #  include <memory.h>
10711 #endif
10712 #ifdef I_STDLIB
10713 #  include <stdlib.h>
10714 #endif
10715 #ifdef I_STRING
10716 #  include <string.h>
10717 #else
10718 #  include <strings.h>
10719 #endif
10720 #ifdef I_UNISTD
10721 #  include <unistd.h>  /* Needed for NetBSD */
10722 #endif
10723 int main()
10724 {
10725 char buf[128], abc[128];
10726 char *b;
10727 int len;
10728 int off;
10729 int align;
10730
10731 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10732
10733 for (align = 7; align >= 0; align--) {
10734         for (len = 36; len; len--) {
10735                 b = buf+align;
10736                 bcopy(abc, b, len);
10737                 for (off = 1; off <= len; off++) {
10738                         bcopy(b, b+off, len);
10739                         bcopy(b+off, b, len);
10740                         if (bcmp(b, abc, len))
10741                                 exit(1);
10742                 }
10743         }
10744 }
10745 exit(0);
10746 }
10747 EOCP
10748         set try
10749         if eval $compile_ok; then
10750                 if ./try 2>/dev/null; then
10751                         echo "Yes, it can."
10752                         val="$define"
10753                 else
10754                         echo "It can't, sorry."
10755                         case "$d_memmove" in
10756                         "$define") echo "But that's Ok since you have memmove()." ;;
10757                         esac
10758                 fi
10759         else
10760                 echo "(I can't compile the test program, so we'll assume not...)"
10761                 case "$d_memmove" in
10762                 "$define") echo "But that's Ok since you have memmove()." ;;
10763                 esac
10764         fi
10765         ;;
10766 esac
10767 $rm -f try.* try core
10768 set d_safebcpy
10769 eval $setvar
10770
10771 : can memcpy handle overlapping blocks?
10772 val="$undef"
10773 case "$d_memcpy" in
10774 "$define")
10775         echo " "
10776         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10777         $cat >try.c <<EOCP
10778 #$i_memory I_MEMORY
10779 #$i_stdlib I_STDLIB
10780 #$i_string I_STRING
10781 #$i_unistd I_UNISTD
10782 EOCP
10783         $cat >>try.c <<'EOCP'
10784 #include <stdio.h>
10785 #ifdef I_MEMORY
10786 #  include <memory.h>
10787 #endif
10788 #ifdef I_STDLIB
10789 #  include <stdlib.h>
10790 #endif
10791 #ifdef I_STRING
10792 #  include <string.h>
10793 #else
10794 #  include <strings.h>
10795 #endif
10796 #ifdef I_UNISTD
10797 #  include <unistd.h>  /* Needed for NetBSD */
10798 #endif
10799 int main()
10800 {
10801 char buf[128], abc[128];
10802 char *b;
10803 int len;
10804 int off;
10805 int align;
10806
10807 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10808    try to store the string in read-only memory. */
10809 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10810
10811 for (align = 7; align >= 0; align--) {
10812         for (len = 36; len; len--) {
10813                 b = buf+align;
10814                 memcpy(b, abc, len);
10815                 for (off = 1; off <= len; off++) {
10816                         memcpy(b+off, b, len);
10817                         memcpy(b, b+off, len);
10818                         if (memcmp(b, abc, len))
10819                                 exit(1);
10820                 }
10821         }
10822 }
10823 exit(0);
10824 }
10825 EOCP
10826         set try
10827         if eval $compile_ok; then
10828                 if ./try 2>/dev/null; then
10829                         echo "Yes, it can."
10830                         val="$define"
10831                 else
10832                         echo "It can't, sorry."
10833                         case "$d_memmove" in
10834                         "$define") echo "But that's Ok since you have memmove()." ;;
10835                         esac
10836                 fi
10837         else
10838                 echo "(I can't compile the test program, so we'll assume not...)"
10839                 case "$d_memmove" in
10840                 "$define") echo "But that's Ok since you have memmove()." ;;
10841                 esac
10842         fi
10843         ;;
10844 esac
10845 $rm -f try.* try core
10846 set d_safemcpy
10847 eval $setvar
10848
10849 : can memcmp be trusted to compare relative magnitude?
10850 val="$undef"
10851 case "$d_memcmp" in
10852 "$define")
10853         echo " "
10854         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10855         $cat >try.c <<EOCP
10856 #$i_memory I_MEMORY
10857 #$i_stdlib I_STDLIB
10858 #$i_string I_STRING
10859 #$i_unistd I_UNISTD
10860 EOCP
10861         $cat >>try.c <<'EOCP'
10862 #include <stdio.h>
10863 #ifdef I_MEMORY
10864 #  include <memory.h>
10865 #endif
10866 #ifdef I_STDLIB
10867 #  include <stdlib.h>
10868 #endif
10869 #ifdef I_STRING
10870 #  include <string.h>
10871 #else
10872 #  include <strings.h>
10873 #endif
10874 #ifdef I_UNISTD
10875 #  include <unistd.h>  /* Needed for NetBSD */
10876 #endif
10877 int main()
10878 {
10879 char a = -1;
10880 char b = 0;
10881 if ((a < b) && memcmp(&a, &b, 1) < 0)
10882         exit(1);
10883 exit(0);
10884 }
10885 EOCP
10886         set try
10887         if eval $compile_ok; then
10888                 if ./try 2>/dev/null; then
10889                         echo "Yes, it can."
10890                         val="$define"
10891                 else
10892                         echo "No, it can't (it uses signed chars)."
10893                 fi
10894         else
10895                 echo "(I can't compile the test program, so we'll assume not...)"
10896         fi
10897         ;;
10898 esac
10899 $rm -f try.* try core
10900 set d_sanemcmp
10901 eval $setvar
10902
10903 : see if select exists
10904 set select d_select
10905 eval $inlibc
10906
10907 : see if semctl exists
10908 set semctl d_semctl
10909 eval $inlibc
10910
10911 : see if semget exists
10912 set semget d_semget
10913 eval $inlibc
10914
10915 : see if semop exists
10916 set semop d_semop
10917 eval $inlibc
10918
10919 : see how much of the 'sem*(2)' library is present.
10920 h_sem=true
10921 echo " "
10922 case "$d_semctl$d_semget$d_semop" in
10923 *"$undef"*) h_sem=false;;
10924 esac
10925 case "$osname" in
10926 freebsd)
10927     case "`ipcs 2>&1`" in
10928     "SVID messages"*"not configured"*)
10929         echo "Your $osname does not have the sem*(2) configured." >&4
10930         h_sem=false
10931         val="$undef"
10932         set semctl d_semctl
10933         eval $setvar
10934         set semget d_semget
10935         eval $setvar
10936         set semop d_semop
10937         eval $setvar
10938         ;;
10939     esac
10940     ;;
10941 esac
10942 : we could also check for sys/ipc.h ...
10943 if $h_sem && $test `./findhdr sys/sem.h`; then
10944         echo "You have the full sem*(2) library." >&4
10945         val="$define"
10946 else
10947         echo "You don't have the full sem*(2) library." >&4
10948         val="$undef"
10949 fi
10950 set d_sem
10951 eval $setvar
10952
10953 : see whether sys/sem.h defines union semun
10954 echo " "
10955 $cat > try.c <<'END'
10956 #include <sys/types.h>
10957 #include <sys/ipc.h>
10958 #include <sys/sem.h>
10959 int main () { union semun semun; semun.buf = 0; }
10960 END
10961 set try
10962 if eval $compile; then
10963     echo "You have union semun in <sys/sem.h>." >&4
10964     val="$define"
10965 else
10966     echo "You do not have union semun in <sys/sem.h>." >&4
10967     val="$undef"
10968 fi
10969 $rm -f try try.c try.h
10970 set d_union_semun
10971 eval $setvar
10972
10973 : see how to do semctl IPC_STAT
10974 case "$d_sem" in
10975 $define)
10976     : see whether semctl IPC_STAT can use union semun
10977     echo " "
10978     $cat > try.h <<END
10979 #ifndef S_IRUSR
10980 #   ifdef S_IREAD
10981 #       define S_IRUSR S_IREAD
10982 #       define S_IWUSR S_IWRITE
10983 #       define S_IXUSR S_IEXEC
10984 #   else
10985 #       define S_IRUSR 0400
10986 #       define S_IWUSR 0200
10987 #       define S_IXUSR 0100
10988 #   endif
10989 #   define S_IRGRP (S_IRUSR>>3)
10990 #   define S_IWGRP (S_IWUSR>>3)
10991 #   define S_IXGRP (S_IXUSR>>3)
10992 #   define S_IROTH (S_IRUSR>>6)
10993 #   define S_IWOTH (S_IWUSR>>6)
10994 #   define S_IXOTH (S_IXUSR>>6)
10995 #endif
10996 #ifndef S_IRWXU
10997 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10998 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10999 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11000 #endif
11001 END
11002
11003     $cat > try.c <<END
11004 #include <sys/types.h>
11005 #include <sys/ipc.h>
11006 #include <sys/sem.h>
11007 #include <sys/stat.h>
11008 #include <stdio.h>
11009 #include <errno.h>
11010 #include "try.h"
11011 #ifndef errno
11012 extern int errno;
11013 #endif
11014 #$d_union_semun HAS_UNION_SEMUN
11015 int main() {
11016     union semun
11017 #ifndef HAS_UNION_SEMUN
11018     {
11019         int val;
11020         struct semid_ds *buf;
11021         unsigned short *array;
11022     }
11023 #endif
11024     arg;
11025     int sem, st;
11026
11027 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11028     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11029     if (sem > -1) {
11030         struct semid_ds argbuf;
11031         arg.buf = &argbuf;
11032 #       ifdef IPC_STAT
11033         st = semctl(sem, 0, IPC_STAT, arg);
11034         if (st == 0)
11035             printf("semun\n");
11036         else
11037 #       endif /* IPC_STAT */
11038             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11039 #       ifdef IPC_RMID
11040         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11041 #       endif /* IPC_RMID */
11042             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11043     } else
11044 #endif /* IPC_PRIVATE && ... */
11045         printf("semget failed: errno = %d\n", errno);
11046   return 0;
11047 }
11048 END
11049     val="$undef"
11050     set try
11051     if eval $compile; then
11052         xxx=`./try`
11053         case "$xxx" in
11054         semun) val="$define" ;;
11055         esac
11056     fi
11057     $rm -f try try.c
11058     set d_semctl_semun
11059     eval $setvar
11060     case "$d_semctl_semun" in
11061     $define)
11062         echo "You can use union semun for semctl IPC_STAT." >&4
11063         also='also'
11064         ;;
11065     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11066         also=''
11067         ;;
11068     esac
11069
11070     : see whether semctl IPC_STAT can use struct semid_ds pointer
11071     $cat > try.c <<'END'
11072 #include <sys/types.h>
11073 #include <sys/ipc.h>
11074 #include <sys/sem.h>
11075 #include <sys/stat.h>
11076 #include "try.h"
11077 #include <stdio.h>
11078 #include <errno.h>
11079 #ifndef errno
11080 extern int errno;
11081 #endif
11082 int main() {
11083     struct semid_ds arg;
11084     int sem, st;
11085
11086 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11087     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11088     if (sem > -1) {
11089 #       ifdef IPC_STAT
11090         st = semctl(sem, 0, IPC_STAT, &arg);
11091         if (st == 0)
11092             printf("semid_ds\n");
11093         else
11094 #       endif /* IPC_STAT */
11095             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11096 #       ifdef IPC_RMID
11097         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11098 #       endif /* IPC_RMID */
11099             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11100     } else
11101 #endif /* IPC_PRIVATE && ... */
11102         printf("semget failed: errno = %d\n", errno);
11103
11104     return 0;
11105 }
11106 END
11107     val="$undef"
11108     set try
11109     if eval $compile; then
11110         xxx=`./try`
11111         case "$xxx" in
11112         semid_ds) val="$define" ;;
11113         esac
11114     fi
11115     $rm -f try try.c
11116     set d_semctl_semid_ds
11117     eval $setvar
11118     case "$d_semctl_semid_ds" in
11119     $define)
11120         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11121         ;;
11122     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11123         ;;
11124     esac
11125     $rm -f try.h
11126     ;;
11127 *)  val="$undef"
11128
11129     # We do not have the full sem*(2) library, so assume we can not
11130     # use either.
11131
11132     set d_semctl_semun
11133     eval $setvar
11134
11135     set d_semctl_semid_ds
11136     eval $setvar
11137     ;;
11138 esac
11139
11140 : see if setegid exists
11141 set setegid d_setegid
11142 eval $inlibc
11143
11144 : see if seteuid exists
11145 set seteuid d_seteuid
11146 eval $inlibc
11147
11148 : see if setgrent exists
11149 set setgrent d_setgrent
11150 eval $inlibc
11151
11152 : see if sethostent exists
11153 set sethostent d_sethent
11154 eval $inlibc
11155
11156 : see if setlinebuf exists
11157 set setlinebuf d_setlinebuf
11158 eval $inlibc
11159
11160 : see if setlocale exists
11161 set setlocale d_setlocale
11162 eval $inlibc
11163
11164 : see if setnetent exists
11165 set setnetent d_setnent
11166 eval $inlibc
11167
11168 : see if setprotoent exists
11169 set setprotoent d_setpent
11170 eval $inlibc
11171
11172 : see if setpgid exists
11173 set setpgid d_setpgid
11174 eval $inlibc
11175
11176 : see if setpgrp2 exists
11177 set setpgrp2 d_setpgrp2
11178 eval $inlibc
11179
11180 : see if setpriority exists
11181 set setpriority d_setprior
11182 eval $inlibc
11183
11184 : see if setproctitle exists
11185 set setproctitle d_setproctitle
11186 eval $inlibc
11187
11188 : see if setpwent exists
11189 set setpwent d_setpwent
11190 eval $inlibc
11191
11192 : see if setregid exists
11193 set setregid d_setregid
11194 eval $inlibc
11195 set setresgid d_setresgid
11196 eval $inlibc
11197
11198 : see if setreuid exists
11199 set setreuid d_setreuid
11200 eval $inlibc
11201 set setresuid d_setresuid
11202 eval $inlibc
11203
11204 : see if setrgid exists
11205 set setrgid d_setrgid
11206 eval $inlibc
11207
11208 : see if setruid exists
11209 set setruid d_setruid
11210 eval $inlibc
11211
11212 : see if setservent exists
11213 set setservent d_setsent
11214 eval $inlibc
11215
11216 : see if setsid exists
11217 set setsid d_setsid
11218 eval $inlibc
11219
11220 : see if setvbuf exists
11221 set setvbuf d_setvbuf
11222 eval $inlibc
11223
11224 : see if sfio.h is available
11225 set sfio.h i_sfio
11226 eval $inhdr
11227
11228
11229 : see if sfio library is available
11230 case "$i_sfio" in
11231 $define)
11232         val=''
11233         set sfreserve val
11234         eval $inlibc
11235         ;;
11236 *)
11237         val="$undef"
11238         ;;
11239 esac
11240 : Ok, but do we want to use it.
11241 case "$val" in
11242 $define)
11243         case "$usesfio" in
11244         true|$define|[yY]*) dflt='y';;
11245         *) dflt='n';;
11246         esac
11247         echo "$package can use the sfio library, but it is experimental."
11248         rp="You seem to have sfio available, do you want to try using it?"
11249         . ./myread
11250         case "$ans" in
11251         y|Y) ;;
11252         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11253                 val="$undef"
11254                 : Remove sfio from list of libraries to use
11255                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11256                 shift
11257                 libs="$*"
11258                 echo "libs = $libs" >&4
11259                 ;;
11260         esac
11261         ;;
11262 *)      case "$usesfio" in
11263         true|$define|[yY]*)
11264                 echo "Sorry, cannot find sfio on this machine" >&4
11265                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11266                 ;;
11267         esac
11268         ;;
11269 esac
11270 set d_sfio
11271 eval $setvar
11272 case "$d_sfio" in
11273 $define) usesfio='true';;
11274 *) usesfio='false';;
11275 esac
11276
11277 : see if shmctl exists
11278 set shmctl d_shmctl
11279 eval $inlibc
11280
11281 : see if shmget exists
11282 set shmget d_shmget
11283 eval $inlibc
11284
11285 : see if shmat exists
11286 set shmat d_shmat
11287 eval $inlibc
11288 : see what shmat returns
11289 case "$d_shmat" in
11290 "$define")
11291         $cat >shmat.c <<'END'
11292 #include <sys/shm.h>
11293 void *shmat();
11294 END
11295         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11296                 shmattype='void *'
11297         else
11298                 shmattype='char *'
11299         fi
11300         echo "and it returns ($shmattype)." >&4
11301         : see if a prototype for shmat is available
11302         xxx=`./findhdr sys/shm.h`
11303         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11304         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11305                 val="$define"
11306         else
11307                 val="$undef"
11308         fi
11309         $rm -f shmat.[co]
11310         ;;
11311 *)
11312         val="$undef"
11313         ;;
11314 esac
11315 set d_shmatprototype
11316 eval $setvar
11317
11318 : see if shmdt exists
11319 set shmdt d_shmdt
11320 eval $inlibc
11321
11322 : see how much of the 'shm*(2)' library is present.
11323 h_shm=true
11324 echo " "
11325 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11326 *"$undef"*) h_shm=false;;
11327 esac
11328 case "$osname" in
11329 freebsd)
11330     case "`ipcs 2>&1`" in
11331     "SVID shared memory"*"not configured"*)
11332         echo "Your $osname does not have the shm*(2) configured." >&4
11333         h_shm=false
11334         val="$undef"
11335         set shmctl d_shmctl
11336         evat $setvar
11337         set shmget d_shmget
11338         evat $setvar
11339         set shmat d_shmat
11340         evat $setvar
11341         set shmdt d_shmdt
11342         evat $setvar
11343         ;;
11344     esac
11345     ;;
11346 esac
11347 : we could also check for sys/ipc.h ...
11348 if $h_shm && $test `./findhdr sys/shm.h`; then
11349         echo "You have the full shm*(2) library." >&4
11350         val="$define"
11351 else
11352         echo "You don't have the full shm*(2) library." >&4
11353         val="$undef"
11354 fi
11355 set d_shm
11356 eval $setvar
11357
11358 echo " "
11359 : see if we have sigaction
11360 if set sigaction val -f d_sigaction; eval $csym; $val; then
11361         echo 'sigaction() found.' >&4
11362         $cat > try.c <<'EOP'
11363 #include <stdio.h>
11364 #include <sys/types.h>
11365 #include <signal.h>
11366 int main()
11367 {
11368     struct sigaction act, oact;
11369     act.sa_flags = 0;
11370     oact.sa_handler = 0;
11371     /* so that act and oact are used */
11372     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11373 }
11374 EOP
11375         set try
11376         if eval $compile_ok; then
11377                 val="$define"
11378         else
11379                 echo "But you don't seem to have a useable struct sigaction." >&4
11380                 val="$undef"
11381         fi
11382 else
11383         echo 'sigaction NOT found.' >&4
11384         val="$undef"
11385 fi
11386 set d_sigaction; eval $setvar
11387 $rm -f try try$_o try.c
11388
11389 : see if sigsetjmp exists
11390 echo " "
11391 case "$d_sigsetjmp" in
11392 '')
11393         $cat >try.c <<'EOP'
11394 #include <setjmp.h>
11395 sigjmp_buf env;
11396 int set = 1;
11397 int main()
11398 {
11399         if (sigsetjmp(env,1))
11400                 exit(set);
11401         set = 0;
11402         siglongjmp(env, 1);
11403         exit(1);
11404 }
11405 EOP
11406         set try
11407         if eval $compile; then
11408                 if ./try >/dev/null 2>&1; then
11409                         echo "POSIX sigsetjmp found." >&4
11410                         val="$define"
11411                 else
11412                         $cat >&4 <<EOM
11413 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11414 I'll ignore them.
11415 EOM
11416                         val="$undef"
11417                 fi
11418         else
11419                 echo "sigsetjmp not found." >&4
11420                 val="$undef"
11421         fi
11422         ;;
11423 *) val="$d_sigsetjmp"
11424         case "$d_sigsetjmp" in
11425         $define) echo "POSIX sigsetjmp found." >&4;;
11426         $undef) echo "sigsetjmp not found." >&4;;
11427         esac
11428         ;;
11429 esac
11430 set d_sigsetjmp
11431 eval $setvar
11432 $rm -f try.c try
11433
11434 : see if sys/stat.h is available
11435 set sys/stat.h i_sysstat
11436 eval $inhdr
11437
11438
11439 : see if stat knows about block sizes
11440 echo " "
11441 echo "Checking to see if your struct stat has st_blocks field..." >&4
11442 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11443 eval $hasfield
11444
11445
11446 : see if this is a sys/vfs.h system
11447 set sys/vfs.h i_sysvfs
11448 eval $inhdr
11449
11450
11451 : see if this is a sys/statfs.h system
11452 set sys/statfs.h i_sysstatfs
11453 eval $inhdr
11454
11455
11456 echo " "
11457 echo "Checking to see if your system supports struct statfs..." >&4
11458 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
11459 eval $hasstruct
11460 case "$d_statfs_s" in
11461 "$define")      echo "Yes, it does."   ;;
11462 *)              echo "No, it doesn't." ;;
11463 esac
11464
11465
11466
11467 : see if struct statfs knows about f_flags
11468 case "$d_statfs_s" in
11469 define) 
11470         echo " "
11471         echo "Checking to see if your struct statfs has f_flags field..." >&4
11472         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
11473         eval $hasfield
11474         ;;
11475 *)      val="$undef"
11476         set d_statfs_f_flags
11477         eval $setvar
11478         ;;
11479 esac
11480 case "$d_statfs_f_flags" in
11481 "$define")      echo "Yes, it does."   ;;
11482 *)              echo "No, it doesn't." ;;
11483 esac
11484
11485 : see if _ptr and _cnt from stdio act std
11486 echo " "
11487 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11488         echo "(Looks like you have stdio.h from Linux.)"
11489         case "$stdio_ptr" in
11490         '') stdio_ptr='((fp)->_IO_read_ptr)'
11491                 ptr_lval=$define
11492                 ;;
11493         *)      ptr_lval=$d_stdio_ptr_lval;;
11494         esac
11495         case "$stdio_cnt" in
11496         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11497                 cnt_lval=$undef
11498                 ;;
11499         *)      cnt_lval=$d_stdio_cnt_lval;;
11500         esac
11501         case "$stdio_base" in
11502         '') stdio_base='((fp)->_IO_read_base)';;
11503         esac
11504         case "$stdio_bufsiz" in
11505         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11506         esac
11507 else
11508         case "$stdio_ptr" in
11509         '') stdio_ptr='((fp)->_ptr)'
11510                 ptr_lval=$define
11511                 ;;
11512         *)      ptr_lval=$d_stdio_ptr_lval;;
11513         esac
11514         case "$stdio_cnt" in
11515         '') stdio_cnt='((fp)->_cnt)'
11516                 cnt_lval=$define
11517                 ;;
11518         *)      cnt_lval=$d_stdio_cnt_lval;;
11519         esac
11520         case "$stdio_base" in
11521         '') stdio_base='((fp)->_base)';;
11522         esac
11523         case "$stdio_bufsiz" in
11524         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11525         esac
11526 fi
11527 : test whether _ptr and _cnt really work
11528 echo "Checking how std your stdio is..." >&4
11529 $cat >try.c <<EOP
11530 #include <stdio.h>
11531 #define FILE_ptr(fp)    $stdio_ptr
11532 #define FILE_cnt(fp)    $stdio_cnt
11533 int main() {
11534         FILE *fp = fopen("try.c", "r");
11535         char c = getc(fp);
11536         if (
11537                 18 <= FILE_cnt(fp) &&
11538                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11539         )
11540                 exit(0);
11541         exit(1);
11542 }
11543 EOP
11544 val="$undef"
11545 set try
11546 if eval $compile; then
11547         if ./try; then
11548                 echo "Your stdio acts pretty std."
11549                 val="$define"
11550         else
11551                 echo "Your stdio isn't very std."
11552         fi
11553 else
11554         echo "Your stdio doesn't appear very std."
11555 fi
11556 $rm -f try.c try
11557 set d_stdstdio
11558 eval $setvar
11559
11560 : Can _ptr be used as an lvalue?
11561 case "$d_stdstdio$ptr_lval" in
11562 $define$define) val=$define ;;
11563 *) val=$undef ;;
11564 esac
11565 set d_stdio_ptr_lval
11566 eval $setvar
11567
11568 : Can _cnt be used as an lvalue?
11569 case "$d_stdstdio$cnt_lval" in
11570 $define$define) val=$define ;;
11571 *) val=$undef ;;
11572 esac
11573 set d_stdio_cnt_lval
11574 eval $setvar
11575
11576 : see if _base is also standard
11577 val="$undef"
11578 case "$d_stdstdio" in
11579 $define)
11580         $cat >try.c <<EOP
11581 #include <stdio.h>
11582 #define FILE_base(fp)   $stdio_base
11583 #define FILE_bufsiz(fp) $stdio_bufsiz
11584 int main() {
11585         FILE *fp = fopen("try.c", "r");
11586         char c = getc(fp);
11587         if (
11588                 19 <= FILE_bufsiz(fp) &&
11589                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11590         )
11591                 exit(0);
11592         exit(1);
11593 }
11594 EOP
11595         set try
11596         if eval $compile; then
11597                 if ./try; then
11598                         echo "And its _base field acts std."
11599                         val="$define"
11600                 else
11601                         echo "But its _base field isn't std."
11602                 fi
11603         else
11604                 echo "However, it seems to be lacking the _base field."
11605         fi
11606         $rm -f try.c try
11607         ;;
11608 esac
11609 set d_stdiobase
11610 eval $setvar
11611
11612 $cat >&4 <<EOM
11613 Checking how to access stdio streams by file descriptor number...
11614 EOM
11615 case "$stdio_stream_array" in
11616 '')     $cat >try.c <<EOCP
11617 #include <stdio.h>
11618 int main() {
11619   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11620     printf("yes\n");
11621 }
11622 EOCP
11623         for s in _iob __iob __sF
11624         do
11625                 set try -DSTDIO_STREAM_ARRAY=$s
11626                 if eval $compile; then
11627                         case "`./try$exe_ext`" in
11628                         yes)    stdio_stream_array=$s; break ;;
11629                         esac
11630                 fi
11631         done
11632         $rm -f try.* try$exe_ext
11633 esac
11634 case "$stdio_stream_array" in
11635 '')     $cat >&4 <<EOM
11636 I can't figure out how to access stdio streams by file descriptor number.
11637 EOM
11638         d_stdio_stream_array="$undef"
11639         ;;
11640 *)      $cat >&4 <<EOM
11641 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11642 EOM
11643         d_stdio_stream_array="$define"
11644         ;;
11645 esac
11646
11647 : see if strcoll exists
11648 set strcoll d_strcoll
11649 eval $inlibc
11650
11651 : check for structure copying
11652 echo " "
11653 echo "Checking to see if your C compiler can copy structs..." >&4
11654 $cat >try.c <<'EOCP'
11655 int main()
11656 {
11657         struct blurfl {
11658                 int dyick;
11659         } foo, bar;
11660
11661         foo = bar;
11662 }
11663 EOCP
11664 if $cc -c try.c >/dev/null 2>&1 ; then
11665         val="$define"
11666         echo "Yup, it can."
11667 else
11668         val="$undef"
11669         echo "Nope, it can't."
11670 fi
11671 set d_strctcpy
11672 eval $setvar
11673 $rm -f try.*
11674
11675 : see if strerror and/or sys_errlist[] exist
11676 echo " "
11677 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11678     if set strerror val -f d_strerror; eval $csym; $val; then
11679                 echo 'strerror() found.' >&4
11680                 d_strerror="$define"
11681                 d_strerrm='strerror(e)'
11682                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11683                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11684                         d_syserrlst="$define"
11685                 else
11686                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11687                         d_syserrlst="$undef"
11688                 fi
11689     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11690                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11691                 echo 'strerror() found in string header.' >&4
11692                 d_strerror="$define"
11693                 d_strerrm='strerror(e)'
11694                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11695                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11696                                 d_syserrlst="$define"
11697                 else
11698                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11699                         d_syserrlst="$undef"
11700                 fi
11701     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11702                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11703                 d_strerror="$undef"
11704                 d_syserrlst="$define"
11705                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11706     else
11707                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11708                 d_strerror="$undef"
11709                 d_syserrlst="$undef"
11710                 d_strerrm='"unknown"'
11711     fi
11712 fi
11713
11714 : see if strtod exists
11715 set strtod d_strtod
11716 eval $inlibc
11717
11718 : see if strtol exists
11719 set strtol d_strtol
11720 eval $inlibc
11721
11722 : see if strtold exists
11723 set strtold d_strtold
11724 eval $inlibc
11725
11726 : see if strtoll exists
11727 set strtoll d_strtoll
11728 eval $inlibc
11729
11730 case "$d_longlong-$d_strtoll" in
11731 "$define-$define")
11732         $cat <<EOM
11733 Checking whether your strtoll() works okay...
11734 EOM
11735         $cat >try.c <<'EOCP'
11736 #include <errno.h>
11737 #ifdef __hpux
11738 #define strtoll __strtoll
11739 #endif
11740 #include <stdio.h>
11741 extern long long int strtoll(char *s, char **, int); 
11742 static int bad = 0;
11743 int check(char *s, long long ell, int een) {
11744         long long gll;
11745         errno = 0;
11746         gll = strtoll(s, 0, 10);
11747         if (!((gll == ell) && (errno == een)))
11748                 bad++;
11749 }
11750 int main() {
11751         check(" 1",                                      1LL, 0);
11752         check(" 0",                                      0LL, 0);
11753         check("-1",                                     -1LL, 0);
11754         check("-9223372036854775808", -9223372036854775808LL, 0);
11755         check("-9223372036854775808", -9223372036854775808LL, 0);
11756         check(" 9223372036854775807",  9223372036854775807LL, 0);
11757         check("-9223372036854775808", -9223372036854775808LL, 0);
11758         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11759         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11760         if (!bad)
11761                 printf("ok\n");
11762 }
11763 EOCP
11764         set try
11765         if eval $compile; then
11766                 case "`./try`" in
11767                 ok) echo "Your strtoll() seems to be working okay." ;;
11768                 *) cat <<EOM >&4
11769 Your strtoll() doesn't seem to be working okay.
11770 EOM
11771                    d_strtoll="$undef"
11772                    ;;
11773                 esac
11774         fi
11775         ;;
11776 esac
11777
11778 : see if strtoul exists
11779 set strtoul d_strtoul
11780 eval $inlibc
11781
11782 : see if strtoull exists
11783 set strtoull d_strtoull
11784 eval $inlibc
11785
11786 case "$d_longlong-$d_strtoull" in
11787 "$define-$define")
11788         $cat <<EOM
11789 Checking whether your strtoull() works okay...
11790 EOM
11791         $cat >try.c <<'EOCP'
11792 #include <errno.h>
11793 #ifdef __hpux
11794 #define strtoull __strtoull
11795 #endif
11796 #include <stdio.h>
11797 extern unsigned long long int strtoull(char *s, char **, int); 
11798 static int bad = 0;
11799 int check(char *s, long long eull, int een) {
11800         long long gull;
11801         errno = 0;
11802         gull = strtoull(s, 0, 10);
11803         if (!((gull == eull) && (errno == een)))
11804                 bad++;
11805 }
11806 int main() {
11807         check(" 1",                                       1LL, 0);
11808         check(" 0",                                       0LL, 0);
11809         check("18446744073709551615", 18446744073709551615ULL, 0);
11810         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11811         if (!bad)
11812                 printf("ok\n");
11813 }
11814 EOCP
11815         set try
11816         if eval $compile; then
11817                 case "`./try`" in
11818                 ok) echo "Your strtoull() seems to be working okay." ;;
11819                 *) cat <<EOM >&4
11820 Your strtoull() doesn't seem to be working okay.
11821 EOM
11822                    d_strtoull="$undef"
11823                    ;;
11824                 esac
11825         fi
11826         ;;
11827 esac
11828
11829 : see if strtouq exists
11830 set strtouq d_strtouq
11831 eval $inlibc
11832
11833 : see if strxfrm exists
11834 set strxfrm d_strxfrm
11835 eval $inlibc
11836
11837 : see if symlink exists
11838 set symlink d_symlink
11839 eval $inlibc
11840
11841 : see if syscall exists
11842 set syscall d_syscall
11843 eval $inlibc
11844
11845 : see if sysconf exists
11846 set sysconf d_sysconf
11847 eval $inlibc
11848
11849 : see if system exists
11850 set system d_system
11851 eval $inlibc
11852
11853 : see if tcgetpgrp exists
11854 set tcgetpgrp d_tcgetpgrp
11855 eval $inlibc
11856
11857 : see if tcsetpgrp exists
11858 set tcsetpgrp d_tcsetpgrp
11859 eval $inlibc
11860
11861 : see if prototype for telldir is available
11862 echo " "
11863 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11864 eval $hasproto
11865
11866 : see if this is a sys/times.h system
11867 set sys/times.h i_systimes
11868 eval $inhdr
11869
11870 : see if times exists
11871 echo " "
11872 if set times val -f d_times; eval $csym; $val; then
11873         echo 'times() found.' >&4
11874         d_times="$define"
11875         inc=''
11876         case "$i_systimes" in
11877         "$define") inc='sys/times.h';;
11878         esac
11879         rp="What is the type returned by times() on this system?"
11880         set clock_t clocktype long stdio.h sys/types.h $inc
11881         eval $typedef_ask
11882 else
11883         echo 'times() NOT found, hope that will do.' >&4
11884         d_times="$undef"
11885         clocktype='int'
11886 fi
11887
11888 : see if truncate exists
11889 set truncate d_truncate
11890 eval $inlibc
11891
11892 : see if tzname[] exists
11893 echo " "
11894 if set tzname val -a d_tzname; eval $csym; $val; then
11895         val="$define"
11896         echo 'tzname[] found.' >&4
11897 else
11898         val="$undef"
11899         echo 'tzname[] NOT found.' >&4
11900 fi
11901 set d_tzname
11902 eval $setvar
11903
11904 : see if umask exists
11905 set umask d_umask
11906 eval $inlibc
11907
11908 : see if ustat exists
11909 set ustat d_ustat
11910 eval $inlibc
11911
11912 : backward compatibility for d_hvfork
11913 if test X$d_hvfork != X; then
11914         d_vfork="$d_hvfork"
11915         d_hvfork=''
11916 fi
11917 : see if there is a vfork
11918 val=''
11919 set vfork val
11920 eval $inlibc
11921
11922 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11923 : perl on Solaris 2.x, and probably elsewhere.
11924 case "$val" in
11925 $define)
11926         echo " "
11927         case "$usevfork" in
11928         false) dflt='n';;
11929         *) dflt='y';;
11930         esac
11931         cat <<'EOM'
11932  
11933 Perl can only use a vfork() that doesn't suffer from strict
11934 restrictions on calling functions or modifying global data in
11935 the child.  For example, glibc-2.1 contains such a vfork()
11936 that is unsuitable.  If your system provides a proper fork()
11937 call, chances are that you do NOT want perl to use vfork().
11938
11939 EOM
11940         rp="Do you still want to use vfork()?"
11941         . ./myread
11942         case "$ans" in
11943         y|Y) ;;
11944         *)
11945                 echo "Ok, we won't use vfork()."
11946                 val="$undef"
11947                 ;;
11948         esac
11949         ;;
11950 esac
11951 set d_vfork
11952 eval $setvar
11953 case "$d_vfork" in
11954 $define) usevfork='true';;
11955 *) usevfork='false';;
11956 esac
11957
11958 : see if this is an sysdir system
11959 set sys/dir.h i_sysdir
11960 eval $inhdr
11961
11962 : see if this is an sysndir system
11963 set sys/ndir.h i_sysndir
11964 eval $inhdr
11965
11966 : see if closedir exists
11967 set closedir d_closedir
11968 eval $inlibc
11969
11970 case "$d_closedir" in
11971 "$define")
11972         echo " "
11973         echo "Checking whether closedir() returns a status..." >&4
11974         cat > closedir.c <<EOM
11975 #$i_dirent I_DIRENT             /**/
11976 #$i_sysdir I_SYS_DIR            /**/
11977 #$i_sysndir I_SYS_NDIR          /**/
11978 #$i_systypes I_SYS_TYPES        /**/
11979
11980 #if defined(I_SYS_TYPES)
11981 #include <sys/types.h>
11982 #endif
11983 #if defined(I_DIRENT)
11984 #include <dirent.h>
11985 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11986 #include <sys/dir.h>
11987 #endif
11988 #else
11989 #ifdef I_SYS_NDIR
11990 #include <sys/ndir.h>
11991 #else
11992 #ifdef I_SYS_DIR
11993 #ifdef hp9000s500
11994 #include <ndir.h>       /* may be wrong in the future */
11995 #else
11996 #include <sys/dir.h>
11997 #endif
11998 #endif
11999 #endif
12000 #endif 
12001 int main() { return closedir(opendir(".")); }
12002 EOM
12003         set closedir
12004         if eval $compile_ok; then
12005                 if ./closedir > /dev/null 2>&1 ; then
12006                         echo "Yes, it does."
12007                         val="$undef"
12008                 else
12009                         echo "No, it doesn't."
12010                         val="$define"
12011                 fi
12012         else
12013                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12014                 val="$define"
12015         fi
12016         ;;
12017 *)
12018         val="$undef";
12019         ;;
12020 esac
12021 set d_void_closedir
12022 eval $setvar
12023 $rm -f closedir*
12024 : check for volatile keyword
12025 echo " "
12026 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12027 $cat >try.c <<'EOCP'
12028 int main()
12029 {
12030         typedef struct _goo_struct goo_struct;
12031         goo_struct * volatile goo = ((goo_struct *)0);
12032         struct _goo_struct {
12033                 long long_int;
12034                 int reg_int;
12035                 char char_var;
12036         };
12037         typedef unsigned short foo_t;
12038         char *volatile foo;
12039         volatile int bar;
12040         volatile foo_t blech;
12041         foo = foo;
12042 }
12043 EOCP
12044 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12045         val="$define"
12046         echo "Yup, it does."
12047 else
12048         val="$undef"
12049         echo "Nope, it doesn't."
12050 fi
12051 set d_volatile
12052 eval $setvar
12053 $rm -f try.*
12054
12055 : see if there is a wait4
12056 set wait4 d_wait4
12057 eval $inlibc
12058
12059 : see if waitpid exists
12060 set waitpid d_waitpid
12061 eval $inlibc
12062
12063 : see if wcstombs exists
12064 set wcstombs d_wcstombs
12065 eval $inlibc
12066
12067 : see if wctomb exists
12068 set wctomb d_wctomb
12069 eval $inlibc
12070
12071 : preserve RCS keywords in files with variable substitution, grrr
12072 Date='$Date'
12073 Id='$Id'
12074 Log='$Log'
12075 RCSfile='$RCSfile'
12076 Revision='$Revision'
12077
12078 case "$crosscompile" in
12079 ''|[nN]*) crosscompile="$undef" ;;
12080 esac
12081
12082 case "$osname" in
12083 next|rhapsody|darwin) multiarch="$define" ;;
12084 esac
12085 case "$multiarch" in
12086 ''|[nN]*) multiarch="$undef" ;;
12087 esac
12088
12089 : check for alignment requirements
12090 echo " "
12091 case "$crosscompile$multiarch" in
12092 *$define*)
12093         $cat <<EOM
12094 You seem to be either cross-compiling or doing a multiarchitecture build,
12095 skipping the memory alignment check.
12096
12097 EOM
12098         case "$alignbytes" in
12099         '') alignbytes=8 ;;
12100         esac
12101         ;;
12102 *)
12103         case "$alignbytes" in
12104         '') echo "Checking alignment constraints..." >&4
12105                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12106                         $cat >try.c <<'EOCP'
12107 typedef long double NV;
12108 EOCP
12109                 else
12110                         $cat >try.c <<'EOCP'
12111 typedef double NV;
12112 EOCP
12113                 fi
12114                 $cat >>try.c <<'EOCP'
12115 #include <stdio.h>
12116 struct foobar {
12117         char foo;
12118         NV bar;
12119 } try_algn;
12120 int main()
12121 {
12122     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12123     return(0);
12124 }
12125 EOCP
12126                 set try
12127                 if eval $compile_ok; then
12128                         dflt=`./try`
12129                 else
12130                         dflt='8'
12131                         echo "(I can't seem to compile the test program...)"
12132                 fi
12133                 ;;
12134         *) dflt="$alignbytes"
12135                 ;;
12136         esac
12137         rp="Doubles must be aligned on a how-many-byte boundary?"
12138         . ./myread
12139         alignbytes="$ans"
12140         $rm -f try.c try
12141         ;;
12142 esac
12143
12144
12145 : set the base revision
12146 baserev=5.0
12147
12148 : check for ordering of bytes in a long
12149 echo " "
12150 case "$crosscompile$multiarch" in
12151 *$define*)
12152         $cat <<EOM
12153 You seem to be either cross-compiling or doing a multiarchitecture build,
12154 skipping the byteorder check.
12155
12156 EOM
12157         byteorder='0xffff'
12158         ;;
12159 *)
12160         case "$byteorder" in
12161         '')
12162                 $cat <<'EOM'
12163 In the following, larger digits indicate more significance.  A big-endian
12164 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12165 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12166 machines may have weird orders like 3412.  A Cray will report 87654321,
12167 an Alpha will report 12345678. If the test program works the default is
12168 probably right.
12169 I'm now running the test program...
12170 EOM
12171                 $cat >try.c <<'EOCP'
12172 #include <stdio.h>
12173 int main()
12174 {
12175         int i;
12176         union {
12177                 unsigned long l;
12178                 char c[sizeof(long)];
12179         } u;
12180
12181         if (sizeof(long) > 4)
12182                 u.l = (0x08070605L << 32) | 0x04030201L;
12183         else
12184                 u.l = 0x04030201L;
12185         for (i = 0; i < sizeof(long); i++)
12186                 printf("%c", u.c[i]+'0');
12187         printf("\n");
12188         exit(0);
12189 }
12190 EOCP
12191                 xxx_prompt=y
12192                 set try
12193                 if eval $compile && ./try > /dev/null; then
12194                         dflt=`./try`
12195                         case "$dflt" in
12196                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12197                                 echo "(The test program ran ok.)"
12198                                 echo "byteorder=$dflt"
12199                                 xxx_prompt=n
12200                         ;;
12201                         ????|????????) echo "(The test program ran ok.)" ;;
12202                         *) echo "(The test program didn't run right for some reason.)" ;;
12203                         esac
12204                 else
12205                         dflt='4321'
12206                         cat <<'EOM'
12207 (I can't seem to compile the test program.  Guessing big-endian...)
12208 EOM
12209                 fi
12210                 case "$xxx_prompt" in
12211                 y)
12212                         rp="What is the order of bytes in a long?"
12213                         . ./myread
12214                         byteorder="$ans"
12215                         ;;
12216                 *)      byteorder=$dflt
12217                         ;;
12218                 esac
12219                 ;;
12220         esac
12221         $rm -f try.c try
12222         ;;
12223 esac
12224
12225
12226 : how do we catenate cpp tokens here?
12227 echo " "
12228 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12229 $cat >cpp_stuff.c <<'EOCP'
12230 #define RCAT(a,b)a/**/b
12231 #define ACAT(a,b)a ## b
12232 RCAT(Rei,ser)
12233 ACAT(Cir,cus)
12234 EOCP
12235 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12236 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12237         echo "Oh!  Smells like ANSI's been here." >&4
12238         echo "We can catify or stringify, separately or together!"
12239         cpp_stuff=42
12240 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12241         echo "Ah, yes!  The good old days!" >&4
12242         echo "However, in the good old days we don't know how to stringify and"
12243         echo "catify at the same time."
12244         cpp_stuff=1
12245 else
12246         $cat >&4 <<EOM
12247 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12248 to have to edit the values of CAT[2-5] in config.h...
12249 EOM
12250         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12251 fi
12252 $rm -f cpp_stuff.*
12253
12254 : see if this is a db.h system
12255 set db.h i_db
12256 eval $inhdr
12257
12258 case "$i_db" in
12259 $define)
12260         : Check db version.
12261         echo " "
12262         echo "Checking Berkeley DB version ..." >&4
12263         $cat >try.c <<EOCP
12264 #$d_const HASCONST
12265 #ifndef HASCONST
12266 #define const
12267 #endif
12268 #include <sys/types.h>
12269 #include <stdio.h>
12270 #include <db.h>
12271 int main()
12272 {
12273 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12274     int Major, Minor, Patch ;
12275     unsigned long Version ;
12276     (void)db_version(&Major, &Minor, &Patch) ;
12277     printf("You have Berkeley DB Version 2 or greater\n");
12278
12279     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12280                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12281     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12282                 Major, Minor, Patch) ;
12283
12284     /* check that db.h & libdb are compatible */
12285     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12286         printf("db.h and libdb are incompatible\n") ;
12287         exit(3);        
12288     }
12289
12290     printf("db.h and libdb are compatible\n") ;
12291
12292     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12293                 + DB_VERSION_PATCH ;
12294
12295     /* needs to be >= 2.3.4 */
12296     if (Version < 2003004) {
12297     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12298         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12299         exit(2);        
12300     }
12301
12302     exit(0);
12303 #else
12304 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12305     printf("You have Berkeley DB Version 1\n");
12306     exit(0);    /* DB version < 2: the coast is clear. */
12307 #else
12308     exit(1);    /* <db.h> not Berkeley DB? */
12309 #endif
12310 #endif
12311 }
12312 EOCP
12313         set try
12314         if eval $compile_ok && ./try; then
12315                 echo 'Looks OK.' >&4
12316         else
12317                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12318                 i_db=$undef
12319                 case " $libs " in
12320                 *"-ldb "*)
12321                         : Remove db from list of libraries to use
12322                         echo "Removing unusable -ldb from library list" >&4
12323                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12324                         shift
12325                         libs="$*"
12326                         echo "libs = $libs" >&4
12327                         ;;
12328                 esac
12329         fi
12330         $rm -f try.*
12331         ;;
12332 esac
12333
12334 case "$i_db" in
12335 define)
12336         : Check the return type needed for hash 
12337         echo " "
12338         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12339         $cat >try.c <<EOCP
12340 #$d_const HASCONST
12341 #ifndef HASCONST
12342 #define const
12343 #endif
12344 #include <sys/types.h>
12345 #include <db.h>
12346
12347 #ifndef DB_VERSION_MAJOR
12348 u_int32_t hash_cb (ptr, size)
12349 const void *ptr;
12350 size_t size;
12351 {
12352 }
12353 HASHINFO info;
12354 int main()
12355 {
12356         info.hash = hash_cb;
12357 }
12358 #endif
12359 EOCP
12360         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12361                 if $contains warning try.out >>/dev/null 2>&1 ; then
12362                         db_hashtype='int'
12363                 else
12364                         db_hashtype='u_int32_t'
12365                 fi
12366         else
12367                 : XXX Maybe we should just give up here.
12368                 db_hashtype=u_int32_t
12369                 $cat try.out >&4
12370                 echo "Help:  I can't seem to compile the db test program." >&4
12371                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12372         fi
12373         $rm -f try.*
12374         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12375         ;;
12376 *)      db_hashtype=u_int32_t
12377         ;;
12378 esac
12379 case "$i_db" in
12380 define)
12381         : Check the return type needed for prefix 
12382         echo " "
12383         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12384         cat >try.c <<EOCP
12385 #$d_const HASCONST
12386 #ifndef HASCONST
12387 #define const
12388 #endif
12389 #include <sys/types.h>
12390 #include <db.h>
12391
12392 #ifndef DB_VERSION_MAJOR
12393 size_t prefix_cb (key1, key2)
12394 const DBT *key1;
12395 const DBT *key2;
12396 {
12397 }
12398 BTREEINFO info;
12399 int main()
12400 {
12401         info.prefix = prefix_cb;
12402 }
12403 #endif
12404 EOCP
12405         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12406                 if $contains warning try.out >>/dev/null 2>&1 ; then
12407                         db_prefixtype='int'
12408                 else
12409                         db_prefixtype='size_t'
12410                 fi
12411         else
12412                 db_prefixtype='size_t'
12413                 : XXX Maybe we should just give up here.
12414                 $cat try.out >&4
12415                 echo "Help:  I can't seem to compile the db test program." >&4
12416                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12417         fi
12418         $rm -f try.*
12419         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12420         ;;
12421 *)      db_prefixtype='size_t'
12422         ;;
12423 esac
12424
12425 : check for void type
12426 echo " "
12427 echo "Checking to see how well your C compiler groks the void type..." >&4
12428 case "$voidflags" in
12429 '')
12430         $cat >try.c <<'EOCP'
12431 #if TRY & 1
12432 void sub() {
12433 #else
12434 sub() {
12435 #endif
12436         extern void moo();      /* function returning void */
12437         void (*goo)();          /* ptr to func returning void */
12438 #if TRY & 8
12439         void *hue;              /* generic ptr */
12440 #endif
12441 #if TRY & 2
12442         void (*foo[10])();
12443 #endif
12444
12445 #if TRY & 4
12446         if(goo == moo) {
12447                 exit(0);
12448         }
12449 #endif
12450         exit(0);
12451 }
12452 int main() { sub(); }
12453 EOCP
12454         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12455                 voidflags=$defvoidused
12456         echo "Good.  It appears to support void to the level $package wants.">&4
12457                 if $contains warning .out >/dev/null 2>&1; then
12458                         echo "However, you might get some warnings that look like this:"
12459                         $cat .out
12460                 fi
12461         else
12462 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12463                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12464                         echo "It supports 1..."
12465                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12466                                 echo "It also supports 2..."
12467                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12468                                         voidflags=7
12469                                         echo "And it supports 4 but not 8 definitely."
12470                                 else
12471                                         echo "It doesn't support 4..."
12472                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12473                                                 voidflags=11
12474                                                 echo "But it supports 8."
12475                                         else
12476                                                 voidflags=3
12477                                                 echo "Neither does it support 8."
12478                                         fi
12479                                 fi
12480                         else
12481                                 echo "It does not support 2..."
12482                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12483                                         voidflags=13
12484                                         echo "But it supports 4 and 8."
12485                                 else
12486                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12487                                                 voidflags=5
12488                                                 echo "And it supports 4 but has not heard about 8."
12489                                         else
12490                                                 echo "However it supports 8 but not 4."
12491                                         fi
12492                                 fi
12493                         fi
12494                 else
12495                         echo "There is no support at all for void."
12496                         voidflags=0
12497                 fi
12498         fi
12499 esac
12500 case "$voidflags" in
12501 "$defvoidused") ;;
12502 *)      $cat >&4 <<'EOM'
12503   Support flag bits are:
12504     1: basic void declarations.
12505     2: arrays of pointers to functions returning void.
12506     4: operations between pointers to and addresses of void functions.
12507     8: generic void pointers.
12508 EOM
12509         dflt="$voidflags";
12510         rp="Your void support flags add up to what?"
12511         . ./myread
12512         voidflags="$ans"
12513         ;;
12514 esac
12515 $rm -f try.* .out
12516
12517
12518 : How can we generate normalized random numbers ?
12519 echo " "
12520 echo "Looking for a random number function..." >&4
12521 case "$randfunc" in
12522 '')
12523         if set drand48 val -f; eval $csym; $val; then
12524                 dflt="drand48"
12525                 echo "Good, found drand48()." >&4
12526         elif set random val -f; eval $csym; $val; then
12527                 dflt="random"
12528                 echo "OK, found random()." >&4
12529         else
12530                 dflt="rand"
12531                 echo "Yick, looks like I have to use rand()." >&4
12532         fi
12533         echo " "
12534         ;;
12535 *)
12536         dflt="$randfunc"
12537         ;;
12538 esac
12539 cont=true
12540
12541 case "$ccflags" in
12542 *-Dmy_rand=*|*-Dmy_srand=*)
12543         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12544         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12545         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12546         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12547         ;;
12548 esac
12549
12550 while $test "$cont"; do
12551         rp="Use which function to generate random numbers?"
12552         . ./myread
12553         if $test "$ans" = "$dflt"; then
12554                 : null
12555         else
12556                 randbits=''
12557         fi
12558         randfunc="$ans"
12559         if set $ans val -f; eval $csym; $val; then
12560                 cont=''
12561         else
12562                 dflt=y
12563                 rp="I cannot find function $ans. Use that name anyway?"
12564                 . ./myread
12565                 dflt=rand
12566                 case "$ans" in
12567                         [yY]*) cont='';;
12568                 esac
12569         fi
12570         case "$cont" in
12571         '')
12572                 case "$randfunc" in
12573                 drand48)
12574                         drand01="drand48()"
12575                         seedfunc="srand48"
12576                         randbits=48
12577                         randseedtype=long
12578                         ;;
12579                 rand|random)
12580                         case "$randbits" in
12581                         '')
12582 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12583                                 $cat >try.c <<EOCP
12584 #$i_unistd I_UNISTD
12585 #$i_stdlib I_STDLIB
12586 #include <stdio.h>
12587 #ifdef I_UNISTD
12588 #  include <unistd.h>
12589 #endif
12590 #ifdef I_STDLIB
12591 #  include <stdlib.h>
12592 #endif
12593 int main()
12594 {
12595         register int i;
12596         register unsigned long tmp;
12597         register unsigned long max = 0L;
12598
12599         for (i = 1000; i; i--) {
12600                 tmp = (unsigned long) $randfunc();
12601                 if (tmp > max) max = tmp;
12602         }
12603         for (i = 0; max; i++)
12604                 max /= 2;
12605         printf("%d\n",i);
12606 }
12607 EOCP
12608                                 set try
12609                                 if eval $compile_ok; then
12610                                         dflt=`try`
12611                                 else
12612                                         dflt='?'
12613                                         echo "(I can't seem to compile the test program...)"
12614                                 fi
12615                                 ;;
12616                         *)
12617                                 dflt="$randbits"
12618                                 ;;
12619                         esac
12620                         rp="How many bits does your $randfunc() function produce?"
12621                         . ./myread
12622                         randbits="$ans"
12623                         $rm -f try.c try
12624                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12625                         seedfunc="s$randfunc"
12626                         randseedtype=unsigned
12627                         ;;
12628                 *)
12629                         dflt="31"
12630                         rp="How many bits does your $randfunc() function produce?"
12631                         . ./myread
12632                         randbits="$ans"
12633                         seedfunc="s$randfunc"
12634                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12635                         if set $seedfunc val -f; eval $csym; $val; then
12636                                 echo "(Using $seedfunc() to seed random generator)"
12637                         else
12638                                 echo "(Warning: no $seedfunc() to seed random generator)"
12639                                 seedfunc=rand
12640                         fi
12641                         randseedtype=unsigned
12642                         ;;
12643                 esac
12644                 ;;
12645         esac
12646 done
12647
12648 echo " "
12649 echo "Determining whether or not we are on an EBCDIC system..." >&4
12650 $cat >tebcdic.c <<'EOM'
12651 int main()
12652 {
12653   if ('M'==0xd4) return 0;
12654   return 1;
12655 }
12656 EOM
12657
12658 val=$undef
12659 set tebcdic
12660 if eval $compile_ok; then
12661         if ./tebcdic; then
12662                 echo "You have EBCDIC." >&4
12663                 val="$define"
12664         else
12665                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12666         fi
12667 else
12668         echo "I'm unable to compile the test program." >&4
12669         echo "I'll assume ASCII or some ISO Latin." >&4
12670 fi
12671 $rm -f tebcdic.c tebcdic
12672 set ebcdic
12673 eval $setvar
12674
12675 echo " "
12676 $cat >&4 <<EOM
12677 Checking how to flush all pending stdio output...
12678 EOM
12679 # I only know how to find the first 32 possibly open files on SunOS.
12680 # See also hints/sunos_4_1.sh and util.c  --AD
12681 case "$osname" in
12682 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12683 esac
12684 $cat >>try.c <<EOCP
12685 #include <stdio.h>
12686 #$i_unistd I_UNISTD
12687 #ifdef I_UNISTD
12688 # include <unistd.h>
12689 #endif
12690 #$d_sysconf HAS_SYSCONF
12691 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12692 #ifdef HAS_STDIO_STREAM_ARRAY
12693 # define STDIO_STREAM_ARRAY $stdio_stream_array
12694 #endif
12695 int main() {
12696   FILE* p = fopen("try.out", "w");
12697 #ifdef TRY_FPUTC
12698   fputc('x', p);
12699 #else
12700 # ifdef TRY_FPRINTF
12701   fprintf(p, "x");
12702 # endif
12703 #endif
12704 #ifdef TRY_FFLUSH_NULL
12705   fflush(NULL);
12706 #endif
12707 #ifdef TRY_FFLUSH_ALL
12708   {
12709     long open_max = -1;
12710 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12711     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12712 # else
12713 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12714     open_max = sysconf(_SC_OPEN_MAX);
12715 #  else
12716 #   ifdef FOPEN_MAX
12717     open_max = FOPEN_MAX;
12718 #   else
12719 #    ifdef OPEN_MAX
12720     open_max = OPEN_MAX;
12721 #    else
12722 #     ifdef _NFILE
12723     open_max = _NFILE;
12724 #     endif
12725 #    endif
12726 #   endif
12727 #  endif
12728 # endif 
12729 # ifdef HAS_STDIO_STREAM_ARRAY
12730     if (open_max > 0) {
12731       long i;
12732       for (i = 0; i < open_max; i++)
12733             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12734                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12735                 STDIO_STREAM_ARRAY[i]._flag)
12736                 fflush(&STDIO_STREAM_ARRAY[i]);
12737     }   
12738   }
12739 # endif
12740 #endif
12741   _exit(42);
12742 }
12743 EOCP
12744 : first we have to find out how _not_ to flush
12745 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12746     output=''
12747     set try -DTRY_FPUTC
12748     if eval $compile; then
12749             $rm -f try.out
12750             ./try$exe_ext 2>/dev/null
12751             if $test ! -s try.out -a "X$?" = X42; then
12752                 output=-DTRY_FPUTC
12753             fi
12754     fi
12755     case "$output" in
12756     '')
12757             set try -DTRY_FPRINTF
12758             $rm -f try.out
12759             if eval $compile; then
12760                     $rm -f try.out
12761                     ./try$exe_ext 2>/dev/null
12762                     if $test ! -s try.out -a "X$?" = X42; then
12763                         output=-DTRY_FPRINTF
12764                     fi
12765             fi
12766         ;;
12767     esac
12768 fi
12769 : check for fflush NULL behaviour
12770 case "$fflushNULL" in
12771 '')     set try -DTRY_FFLUSH_NULL $output
12772         if eval $compile; then
12773                 $rm -f try.out
12774                 ./try$exe_ext 2>/dev/null
12775                 code="$?"
12776                 if $test -s try.out -a "X$code" = X42; then
12777                         fflushNULL="`$cat try.out`"
12778                 else
12779                         if $test "X$code" != X42; then
12780                                 $cat >&4 <<EOM
12781 (If this test failed, don't worry, we'll try another method shortly.)
12782 EOM
12783                         fi
12784                 fi
12785         fi
12786         $rm -f core try.core core.try.*
12787         case "$fflushNULL" in
12788         x)      $cat >&4 <<EOM
12789 Your fflush(NULL) works okay for output streams.
12790 Let's see if it clobbers input pipes...
12791 EOM
12792 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12793 # bug that improperly flushes the input end of pipes.  So we avoid the
12794 # autoflush on fork/system/exec support for now. :-(
12795 $cat >tryp.c <<EOCP
12796 #include <stdio.h>
12797 int
12798 main(int argc, char **argv)
12799 {
12800     char buf[1024];
12801     int i;
12802     char *bp = buf;
12803     while (1) {
12804         while ((i = getc(stdin)) != -1
12805                && (*bp++ = i) != '\n'
12806                && bp < &buf[1024])
12807         /* DO NOTHING */ ;
12808         *bp = '\0';
12809         fprintf(stdout, "%s", buf);
12810         fflush(NULL);
12811         if (i == -1)
12812             return 0;
12813         bp = buf;
12814     }
12815 }
12816 EOCP
12817                 fflushNULL="$define"
12818                 set tryp
12819                 if eval $compile; then
12820                     $rm -f tryp.out
12821                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12822                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12823                        $cat >&4 <<EOM
12824 fflush(NULL) seems to behave okay with input streams.
12825 EOM
12826                         fflushNULL="$define"
12827                     else
12828                         $cat >&4 <<EOM
12829 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12830 EOM
12831                         fflushNULL="$undef"
12832                     fi
12833                 fi
12834                 $rm -f core tryp.c tryp.core core.tryp.*
12835                 ;;
12836         '')     $cat >&4 <<EOM
12837 Your fflush(NULL) isn't working (contrary to ANSI C).
12838 EOM
12839                 fflushNULL="$undef"
12840                 ;;
12841         *)      $cat >&4 <<EOM
12842 Cannot figure out whether your fflush(NULL) works or not.
12843 I'm assuming it doesn't (contrary to ANSI C).
12844 EOM
12845                 fflushNULL="$undef"
12846                 ;;
12847         esac
12848         ;;
12849 $define|true|[yY]*)
12850         fflushNULL="$define"
12851         ;;
12852 *)
12853         fflushNULL="$undef"
12854         ;;
12855 esac
12856 : check explicit looping only if NULL did not work, and if the pipe
12857 : bug does not show up on an explicit flush too
12858 case "$fflushNULL" in
12859 "$undef")
12860         $cat >tryp.c <<EOCP
12861 #include <stdio.h>
12862 int
12863 main(int argc, char **argv)
12864 {
12865     char buf[1024];
12866     int i;
12867     char *bp = buf;
12868     while (1) {
12869         while ((i = getc(stdin)) != -1
12870                && (*bp++ = i) != '\n'
12871                && bp < &buf[1024])
12872         /* DO NOTHING */ ;
12873         *bp = '\0';
12874         fprintf(stdout, "%s", buf);
12875         fflush(stdin);
12876         if (i == -1)
12877             return 0;
12878         bp = buf;
12879     }
12880 }
12881 EOCP
12882         set tryp
12883         if eval $compile; then
12884             $rm -f tryp.out
12885             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12886             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12887                $cat >&4 <<EOM
12888 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12889 EOM
12890                 : now check for fflushall behaviour
12891                 case "$fflushall" in
12892                 '')     set try -DTRY_FFLUSH_ALL $output
12893                         if eval $compile; then
12894                                 $cat >&4 <<EOM
12895 (Now testing the other method--but note that this also may fail.)
12896 EOM
12897                                 $rm -f try.out
12898                                 ./try$exe_ext 2>/dev/null
12899                                 if $test -s try.out -a "X$?" = X42; then
12900                                         fflushall="`$cat try.out`"
12901                                 fi
12902                         fi
12903                         $rm -f core try.core core.try.*
12904                         case "$fflushall" in
12905                         x)      $cat >&4 <<EOM
12906 Whew. Flushing explicitly all the stdio streams works.
12907 EOM
12908                                 fflushall="$define"
12909                                 ;;
12910                         '')     $cat >&4 <<EOM
12911 Sigh. Flushing explicitly all the stdio streams doesn't work.
12912 EOM
12913                                 fflushall="$undef"
12914                                 ;;
12915                         *)      $cat >&4 <<EOM
12916 Cannot figure out whether flushing stdio streams explicitly works or not.
12917 I'm assuming it doesn't.
12918 EOM
12919                                 fflushall="$undef"
12920                                 ;;
12921                         esac
12922                         ;;
12923                 "$define"|true|[yY]*)
12924                         fflushall="$define"
12925                         ;;
12926                 *)
12927                         fflushall="$undef"
12928                         ;;
12929                 esac
12930             else
12931                 $cat >&4 <<EOM
12932 All is futile.  Even fflush(stdin) clobbers input pipes!
12933 EOM
12934                 fflushall="$undef"
12935             fi
12936         else
12937             fflushall="$undef"
12938         fi
12939         $rm -f core tryp.c tryp.core core.tryp.*
12940         ;;
12941 *)      fflushall="$undef"
12942         ;;
12943 esac
12944
12945 case "$fflushNULL$fflushall" in
12946 undefundef)
12947         $cat <<EOM
12948 OK, I give up.  I cannot figure out how to flush pending stdio output.
12949 We won't be flushing handles at all before fork/exec/popen.
12950 EOM
12951         ;;
12952 esac
12953 $rm -f try.* try$exe_ext
12954
12955 : Store the full pathname to the ar program for use in the C program
12956 : Respect a hint or command line value for full_ar.
12957 case "$full_ar" in
12958 '') full_ar=$ar ;;
12959 esac
12960
12961 : Store the full pathname to the sed program for use in the C program
12962 full_sed=$sed
12963
12964 : see what type gids are declared as in the kernel
12965 echo " "
12966 echo "Looking for the type for group ids returned by getgid()."
12967 set gid_t gidtype xxx stdio.h sys/types.h
12968 eval $typedef
12969 case "$gidtype" in
12970 xxx)
12971         xxx=`./findhdr sys/user.h`
12972         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12973         case $1 in
12974         unsigned) dflt="$1 $2" ;;
12975         *) dflt="$1" ;;
12976         esac
12977         ;;
12978 *) dflt="$gidtype";;
12979 esac
12980 case "$gidtype" in
12981 gid_t) echo "gid_t found." ;;
12982 *)      rp="What is the type for group ids returned by getgid()?"
12983         . ./myread
12984         gidtype="$ans"
12985         ;;
12986 esac
12987
12988 echo " "
12989 case "$gidtype" in
12990 *_t) zzz="$gidtype"     ;;
12991 *)   zzz="gid"          ;;
12992 esac
12993 echo "Checking the size of $zzz..." >&4 
12994 cat > try.c <<EOCP
12995 #include <sys/types.h>
12996 #include <stdio.h>
12997 int main() {
12998     printf("%d\n", (int)sizeof($gidtype));
12999     exit(0);
13000 }
13001 EOCP
13002 set try
13003 if eval $compile_ok; then
13004         yyy=`./try`
13005         case "$yyy" in
13006         '')     gidsize=4
13007                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13008                 ;;
13009         *)      gidsize=$yyy
13010                 echo "Your $zzz is $gidsize bytes long."
13011                 ;;
13012         esac
13013 else
13014         gidsize=4
13015         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13016 fi
13017
13018
13019 echo " "
13020 case "$gidtype" in
13021 *_t) zzz="$gidtype"     ;;
13022 *)   zzz="gid"          ;;
13023 esac
13024 echo "Checking the sign of $zzz..." >&4 
13025 cat > try.c <<EOCP
13026 #include <sys/types.h>
13027 #include <stdio.h>
13028 int main() {
13029         $gidtype foo = -1;
13030         if (foo < 0)
13031                 printf("-1\n");
13032         else
13033                 printf("1\n");
13034 }
13035 EOCP
13036 set try
13037 if eval $compile; then
13038         yyy=`./try`
13039         case "$yyy" in
13040         '')     gidsign=1
13041                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13042                 ;;
13043         *)      gidsign=$yyy
13044                 case "$gidsign" in
13045                  1) echo "Your $zzz is unsigned." ;;
13046                 -1) echo "Your $zzz is signed."   ;;
13047                 esac
13048                 ;;
13049         esac
13050 else
13051         gidsign=1
13052         echo "(I can't compile the test program--guessing unsigned.)" >&4
13053 fi
13054
13055
13056 echo " "
13057
13058 if $test X"$quadtype" != X; then
13059
13060 echo "Checking how to print 64-bit integers..." >&4
13061
13062 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13063         $cat >try.c <<'EOCP'
13064 #include <sys/types.h>
13065 #include <stdio.h>
13066 int main() {
13067   int q = 12345678901;
13068   printf("%ld\n", q);
13069 }
13070 EOCP
13071         set try
13072         if eval $compile; then
13073                 yyy=`./try$exe_ext`
13074                 case "$yyy" in
13075                 12345678901)
13076                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13077                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13078                         echo "We will use %d."
13079                         ;;
13080                 esac
13081         fi
13082 fi
13083
13084 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13085         $cat >try.c <<'EOCP'
13086 #include <sys/types.h>
13087 #include <stdio.h>
13088 int main() {
13089   long q = 12345678901;
13090   printf("%ld\n", q);
13091 }
13092 EOCP
13093         set try
13094         if eval $compile; then
13095                 yyy=`./try$exe_ext`
13096                 case "$yyy" in
13097                 12345678901)
13098                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13099                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13100                         echo "We will use %ld."
13101                         ;;
13102                 esac
13103         fi
13104 fi
13105
13106 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13107         $cat >try.c <<'EOCP'
13108 #include <sys/types.h>
13109 #include <inttypes.h>
13110 #include <stdio.h>
13111 int main() {
13112   int64_t q = 12345678901;
13113   printf("%" PRId64 "\n", q);
13114 }
13115 EOCP
13116         set try
13117         if eval $compile; then
13118                 yyy=`./try$exe_ext`
13119                 case "$yyy" in
13120                 12345678901)
13121                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13122                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13123                         echo "We will use the C9X style."
13124                         ;;
13125                 esac
13126         fi
13127 fi
13128
13129 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13130         $cat >try.c <<'EOCP'
13131 #include <sys/types.h>
13132 #include <stdio.h>
13133 int main() {
13134   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13135   printf("%lld\n", q);
13136 }
13137 EOCP
13138         set try
13139         if eval $compile; then
13140                 yyy=`./try$exe_ext`
13141                 case "$yyy" in
13142                 12345678901)
13143                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13144                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13145                         echo "We will use the %lld style."
13146                         ;;
13147                 esac
13148         fi
13149 fi
13150
13151 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13152         $cat >try.c <<EOCP
13153 #include <sys/types.h>
13154 #include <stdio.h>
13155 int main() {
13156   $quadtype q = 12345678901;
13157   printf("%Ld\n", q);
13158 }
13159 EOCP
13160         set try
13161         if eval $compile; then
13162                 yyy=`./try$exe_ext`
13163                 case "$yyy" in
13164                 12345678901)
13165                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13166                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13167                         echo "We will use %Ld."
13168                         ;;
13169                 esac
13170         fi
13171 fi
13172
13173 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13174         $cat >try.c <<EOCP
13175 #include <sys/types.h>
13176 #include <stdio.h>
13177 int main() {
13178   $quadtype q = 12345678901;
13179   printf("%qd\n", q);
13180 }
13181 EOCP
13182         set try
13183         if eval $compile; then
13184                 yyy=`./try$exe_ext`
13185                 case "$yyy" in
13186                 12345678901)
13187                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13188                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13189                         echo "We will use %qd."
13190                         ;;
13191                 esac
13192         fi
13193 fi
13194
13195 if $test X"$sPRId64" = X; then
13196         echo "Cannot figure out how to print 64-bit integers." >&4
13197 fi
13198
13199 $rm -f try try.*
13200
13201 fi
13202
13203 case "$sPRId64" in
13204 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13205         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13206         ;;
13207 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13208         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13209         ;;
13210 esac
13211
13212
13213 echo " "
13214 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13215
13216 if $test X"$ivsize" = X8; then
13217         ivdformat="$sPRId64"
13218         uvuformat="$sPRIu64"
13219         uvoformat="$sPRIo64"
13220         uvxformat="$sPRIx64"
13221 else
13222         if $test X"$ivsize" = X"$longsize"; then
13223                 ivdformat='"ld"'
13224                 uvuformat='"lu"'
13225                 uvoformat='"lo"'
13226                 uvxformat='"lx"'
13227         else
13228                 if $test X"$ivsize" = X"$intsize"; then
13229                         ivdformat='"d"'
13230                         uvuformat='"u"'
13231                         uvoformat='"o"'
13232                         uvxformat='"x"'
13233                 else
13234                         : far out
13235                         if $test X"$ivsize" = X"$shortsize"; then
13236                                 ivdformat='"hd"'
13237                                 uvuformat='"hu"'
13238                                 uvoformat='"ho"'
13239                                 uvxformat='"hx"'
13240                         fi
13241                 fi
13242         fi
13243 fi
13244
13245 case "$ivdformat" in
13246 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13247     exit 1
13248     ;;
13249 esac
13250
13251
13252 echo " "
13253 $echo "Checking the format string to be used for gids..." >&4
13254
13255 case "$gidsign" in
13256 -1)     if $test X"$gidsize" = X"$ivsize"; then
13257                 gidformat="$ivdformat"
13258         else
13259                 if $test X"$gidsize" = X"$longsize"; then
13260                         gidformat='"ld"'
13261                 else
13262                         if $test X"$gidsize" = X"$intsize"; then
13263                                 gidformat='"d"'
13264                         else
13265                                 if $test X"$gidsize" = X"$shortsize"; then
13266                                         gidformat='"hd"'
13267                                 fi
13268                         fi
13269                 fi
13270         fi
13271         ;;
13272 *)      if $test X"$gidsize" = X"$uvsize"; then
13273                 gidformat="$uvuformat"
13274         else
13275                 if $test X"$gidsize" = X"$longsize"; then
13276                         gidformat='"lu"'
13277                 else
13278                         if $test X"$gidsize" = X"$intsize"; then
13279                                 gidformat='"u"'
13280                         else
13281                                 if $test X"$gidsize" = X"$shortsize"; then
13282                                         gidformat='"hu"'
13283                                 fi
13284                         fi
13285                 fi
13286         fi
13287         ;;
13288 esac
13289
13290 : see if getgroups exists
13291 set getgroups d_getgrps
13292 eval $inlibc
13293
13294 : see if setgroups exists
13295 set setgroups d_setgrps
13296 eval $inlibc
13297
13298
13299 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13300 echo " "
13301 case "$d_getgrps$d_setgrps" in
13302 *define*)
13303         case "$groupstype" in
13304         '') dflt="$gidtype" ;;
13305         *)  dflt="$groupstype" ;;
13306         esac
13307         $cat <<EOM
13308 What type of pointer is the second argument to getgroups() and setgroups()?
13309 Usually this is the same as group ids, $gidtype, but not always.
13310
13311 EOM
13312         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13313         . ./myread
13314         groupstype="$ans"
13315         ;;
13316 *)  groupstype="$gidtype";;
13317 esac
13318
13319 echo " "
13320 echo "Checking if your $make program sets \$(MAKE)..." >&4
13321 case "$make_set_make" in
13322 '')
13323         $sed 's/^X //' > testmake.mak << 'EOF'
13324 Xall:
13325 X       @echo 'maketemp="$(MAKE)"'
13326 EOF
13327         case "`$make -f testmake.mak 2>/dev/null`" in
13328         *maketemp=*) make_set_make='#' ;;
13329         *)      make_set_make="MAKE=$make" ;;
13330         esac
13331         $rm -f testmake.mak
13332         ;;
13333 esac
13334 case "$make_set_make" in
13335 '#') echo "Yup, it does.";;
13336 *) echo "Nope, it doesn't.";;
13337 esac
13338
13339 : see what type is used for mode_t
13340 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13341 set mode_t modetype int stdio.h sys/types.h
13342 eval $typedef_ask
13343
13344 : define a fucntion to check prototypes
13345 $cat > protochk <<EOSH
13346 $startsh
13347 cc="$cc"
13348 optimize="$optimize"
13349 ccflags="$ccflags"
13350 prototype="$prototype"
13351 define="$define"
13352 rm=$rm
13353 EOSH
13354
13355 $cat >> protochk <<'EOSH'
13356
13357 $rm -f try.c
13358 foo="$1"
13359 shift
13360 while test $# -ge 2; do
13361         case "$1" in
13362                 $define) echo "#include <$2>" >> try.c ;;
13363                 literal) echo "$2" >> try.c ;;
13364         esac
13365     shift 2
13366 done
13367 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13368 cat >> try.c <<'EOCP'
13369 #ifdef CAN_PROTOTYPE
13370 #define _(args) args
13371 #else
13372 #define _(args) ()
13373 #endif
13374 EOCP
13375 echo "$foo" >> try.c
13376 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13377 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13378 status=$?
13379 $rm -f try.[co]
13380 exit $status
13381 EOSH
13382 chmod +x protochk
13383 $eunicefix protochk
13384
13385 : see what type is used for size_t
13386 rp="What is the type used for the length parameter for string functions?"
13387 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13388 eval $typedef_ask
13389
13390 : check for type of arguments to gethostbyaddr. 
13391 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13392         case "$d_gethbyaddr" in
13393         $define)
13394                 $cat <<EOM
13395
13396 Checking to see what type of arguments are accepted by gethostbyaddr().
13397 EOM
13398                 hdrs="$define sys/types.h
13399                         $d_socket sys/socket.h 
13400                         $i_niin netinet/in.h 
13401                         $i_netdb netdb.h
13402                         $i_unistd unistd.h"
13403                 : The first arg can 'char *' or 'void *'
13404                 : The second arg is some of integral type
13405                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13406                         for yyy in size_t long int; do
13407                                 case "$netdb_host_type" in
13408                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13409                                         if ./protochk "$try" $hdrs; then
13410                                                 echo "Your system accepts $xxx for the first arg."
13411                                                 echo "...and $yyy for the second arg."
13412                                                 netdb_host_type="$xxx"
13413                                                 netdb_hlen_type="$yyy"
13414                                         fi
13415                                         ;;
13416                                 esac
13417                         done
13418                 done
13419                 : In case none of those worked, prompt the user.
13420                 case "$netdb_host_type" in
13421                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13422                         dflt='char *'
13423                         . ./myread
13424                         netdb_host_type=$ans
13425                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13426                         dflt="$sizetype"
13427                         . ./myread
13428                         netdb_hlen_type=$ans
13429                         ;;
13430                 esac
13431                 ;;
13432         *)      : no gethostbyaddr, so pick harmless defaults
13433                 netdb_host_type='char *'
13434                 netdb_hlen_type="$sizetype"
13435                 ;;
13436         esac
13437         # Remove the "const" if needed. -- but then we'll have a 
13438         # prototype clash!
13439         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13440 fi
13441
13442 : check for type of argument to gethostbyname. 
13443 if test "X$netdb_name_type" = X ; then
13444         case "$d_gethbyname" in
13445         $define)
13446                 $cat <<EOM
13447
13448 Checking to see what type of argument is accepted by gethostbyname().
13449 EOM
13450                 hdrs="$define sys/types.h
13451                         $d_socket sys/socket.h 
13452                         $i_niin netinet/in.h 
13453                         $i_netdb netdb.h
13454                         $i_unistd unistd.h"
13455                 for xxx in "const char *" "char *"; do
13456                         case "$netdb_name_type" in
13457                         '')     try="extern struct hostent *gethostbyname($xxx);"
13458                                 if ./protochk "$try" $hdrs; then
13459                                         echo "Your system accepts $xxx."
13460                                         netdb_name_type="$xxx"
13461                                 fi
13462                                 ;;
13463                         esac
13464                 done
13465                 : In case none of those worked, prompt the user.
13466                 case "$netdb_name_type" in
13467                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13468                         dflt='char *'
13469                         . ./myread
13470                         netdb_name_type=$ans
13471                         ;;
13472                 esac
13473                 ;;
13474         *)      : no gethostbyname, so pick harmless default
13475                 netdb_name_type='char *'
13476                 ;;
13477         esac
13478 fi
13479
13480 : check for type of 1st argument to getnetbyaddr. 
13481 if test "X$netdb_net_type" = X ; then
13482         case "$d_getnbyaddr" in
13483         $define)
13484                 $cat <<EOM
13485
13486 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13487 EOM
13488                 hdrs="$define sys/types.h
13489                         $d_socket sys/socket.h 
13490                         $i_niin netinet/in.h 
13491                         $i_netdb netdb.h
13492                         $i_unistd unistd.h"
13493                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13494                         case "$netdb_net_type" in
13495                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13496                                 if ./protochk "$try" $hdrs; then
13497                                         echo "Your system accepts $xxx."
13498                                         netdb_net_type="$xxx"
13499                                 fi
13500                                 ;;
13501                         esac
13502                 done
13503                 : In case none of those worked, prompt the user.
13504                 case "$netdb_net_type" in
13505                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13506                         dflt='long'
13507                         . ./myread
13508                         netdb_net_type=$ans
13509                         ;;
13510                 esac
13511                 ;;
13512         *)      : no getnetbyaddr, so pick harmless default
13513                 netdb_net_type='long'
13514                 ;;
13515         esac
13516 fi
13517 : locate the preferred pager for this system
13518 case "$pager" in
13519 '')
13520         dflt=''
13521         case "$pg" in
13522         /*) dflt=$pg;;
13523         esac
13524         case "$more" in
13525         /*) dflt=$more;;
13526         esac
13527         case "$less" in
13528         /*) dflt=$less;;
13529         esac
13530         case "$dflt" in
13531         '') dflt=/usr/ucb/more;;
13532         esac
13533         ;;
13534 *) dflt="$pager";;
13535 esac
13536 echo " "
13537 fn=f/
13538 rp='What pager is used on your system?'
13539 . ./getfile
13540 pager="$ans"
13541
13542 : see what type pids are declared as in the kernel
13543 rp="What is the type of process ids on this system?"
13544 set pid_t pidtype int stdio.h sys/types.h
13545 eval $typedef_ask
13546
13547 : Find earliest binary compatible site_perl subdirectory perl can use.
13548 case "$bincompat5005" in
13549 "$define") xs_apiversion='5.005' ;;
13550 *) xs_apiversion=$version ;;   # The current site_perl version.
13551 esac
13552 : Find earliest pure perl site_perl subdirectory perl can use.
13553 : The versioned directories started at 5.005.
13554 pm_apiversion='5.005'
13555
13556 : check for length of pointer
13557 echo " "
13558 case "$ptrsize" in
13559 '')
13560         echo "Checking to see how big your pointers are..." >&4
13561         if test "$voidflags" -gt 7; then
13562                 echo '#define VOID_PTR char *' > try.c
13563         else
13564                 echo '#define VOID_PTR void *' > try.c
13565         fi
13566         $cat >>try.c <<'EOCP'
13567 #include <stdio.h>
13568 int main()
13569 {
13570     printf("%d\n", (int)sizeof(VOID_PTR));
13571     exit(0);
13572 }
13573 EOCP
13574         set try
13575         if eval $compile_ok; then
13576                 ptrsize=`./try`
13577                 echo "Your pointers are $ptrsize bytes long."
13578         else
13579                 dflt='4'
13580                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13581                 rp="What is the size of a pointer (in bytes)?"
13582                 . ./myread
13583                 ptrsize="$ans"
13584         fi
13585         ;;
13586 esac
13587 $rm -f try.c try
13588
13589 : see if ar generates random libraries by itself
13590 echo " "
13591 echo "Checking how to generate random libraries on your machine..." >&4
13592 echo 'int bar1() { return bar2(); }' > bar1.c
13593 echo 'int bar2() { return 2; }' > bar2.c
13594 $cat > foo.c <<'EOP'
13595 int main() { printf("%d\n", bar1()); exit(0); }
13596 EOP
13597 $cc $ccflags -c bar1.c >/dev/null 2>&1
13598 $cc $ccflags -c bar2.c >/dev/null 2>&1
13599 $cc $ccflags -c foo.c >/dev/null 2>&1
13600 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13601 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13602         ./foobar >/dev/null 2>&1; then
13603         echo "$ar appears to generate random libraries itself."
13604         orderlib=false
13605         ranlib=":"
13606 elif $ar ts bar$_a >/dev/null 2>&1 &&
13607         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13608         ./foobar >/dev/null 2>&1; then
13609                 echo "a table of contents needs to be added with '$ar ts'."
13610                 orderlib=false
13611                 ranlib="$ar ts"
13612 else
13613         case "$ranlib" in
13614         :) ranlib='';;
13615         '')
13616                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13617                 $test -f $ranlib || ranlib=''
13618                 ;;
13619         esac
13620         if $test -n "$ranlib"; then
13621                 echo "your system has '$ranlib'; we'll use that."
13622                 orderlib=false
13623         else
13624                 echo "your system doesn't seem to support random libraries"
13625                 echo "so we'll use lorder and tsort to order the libraries."
13626                 orderlib=true
13627                 ranlib=":"
13628         fi
13629 fi
13630 $rm -f foo* bar* 
13631
13632 : check for type of arguments to select. 
13633 case "$selecttype" in
13634 '') case "$d_select" in
13635         $define)
13636                 echo " "
13637                 $cat <<EOM
13638 Checking to see what type of arguments are accepted by select().
13639 EOM
13640                 hdrs="$define sys/types.h
13641                         $i_systime sys/time.h 
13642                         $i_sysselct sys/select.h
13643                         $d_socket sys/socket.h"
13644                 : The first arg can be int, unsigned, or size_t
13645                 : The last arg may or may not be 'const'
13646                 val=''
13647                 : void pointer has been seen but using that
13648                 : breaks the selectminbits test
13649                 for xxx in 'fd_set *' 'int *'; do
13650                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13651                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13652                                         case "$val" in
13653                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13654                                                 if ./protochk "$try" $hdrs; then
13655                                                         echo "Your system accepts $xxx."
13656                                                         val="$xxx"
13657                                                 fi
13658                                                 ;;
13659                                         esac
13660                                 done
13661                         done
13662                 done
13663                 case "$val" in
13664                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13665                         case "$d_fd_set" in
13666                                 $define) dflt="fd_set *" ;;
13667                                 *)              dflt="int *" ;;
13668                         esac
13669                         . ./myread
13670                         val=$ans
13671                         ;;
13672                 esac
13673                 selecttype="$val"
13674                 ;;
13675         *)      : no select, so pick a harmless default
13676                 selecttype='int *'
13677                 ;;
13678         esac
13679         ;;
13680 esac
13681
13682 : check for the select 'width'
13683 case "$selectminbits" in
13684 '') case "$d_select" in
13685         $define)
13686                 $cat <<EOM
13687
13688 Checking to see on how many bits at a time your select() operates...
13689 EOM
13690                 $cat >try.c <<EOCP
13691 #include <sys/types.h>
13692 #$i_time I_TIME
13693 #$i_systime I_SYS_TIME
13694 #$i_systimek I_SYS_TIME_KERNEL
13695 #ifdef I_TIME
13696 #   include <time.h>
13697 #endif
13698 #ifdef I_SYS_TIME
13699 #   ifdef I_SYS_TIME_KERNEL
13700 #       define KERNEL
13701 #   endif
13702 #   include <sys/time.h>
13703 #   ifdef I_SYS_TIME_KERNEL
13704 #       undef KERNEL
13705 #   endif
13706 #endif
13707 #$i_sysselct I_SYS_SELECT
13708 #ifdef I_SYS_SELECT
13709 #include <sys/select.h>
13710 #endif
13711 #$d_socket HAS_SOCKET
13712 #ifdef HAS_SOCKET
13713 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13714 #endif
13715 #include <stdio.h>
13716 $selecttype b;
13717 #define S sizeof(*(b))
13718 #define MINBITS 64
13719 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13720 #define NBITS  (NBYTES * 8)
13721 int main() {
13722     char s[NBYTES];
13723     struct timeval t;
13724     int i;
13725     FILE* fp;
13726     int fd;
13727
13728     fclose(stdin);
13729     fp = fopen("try.c", "r");
13730     if (fp == 0)
13731       exit(1);
13732     fd = fileno(fp);
13733     if (fd < 0)
13734       exit(2);
13735     b = ($selecttype)s;
13736     for (i = 0; i < NBITS; i++)
13737         FD_SET(i, b);
13738     t.tv_sec  = 0;
13739     t.tv_usec = 0;
13740     select(fd + 1, b, 0, 0, &t);
13741     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13742     printf("%d\n", i + 1);
13743     return 0;
13744 }
13745 EOCP
13746                 set try
13747                 if eval $compile_ok; then
13748                         selectminbits=`./try`
13749                         case "$selectminbits" in
13750                         '')     cat >&4 <<EOM
13751 Cannot figure out on how many bits at a time your select() operates.
13752 I'll play safe and guess it is 32 bits.
13753 EOM
13754                                 selectminbits=32
13755                                 bits="32 bits"
13756                                 ;;
13757                         1)      bits="1 bit" ;;
13758                         *)      bits="$selectminbits bits" ;;
13759                         esac
13760                         echo "Your select() operates on $bits at a time." >&4
13761                 else
13762                         rp='What is the minimum number of bits your select() operates on?'
13763                         case "$byteorder" in
13764                         1234|12345678)  dflt=32 ;;
13765                         *)              dflt=1  ;;
13766                         esac
13767                         . ./myread
13768                         val=$ans
13769                         selectminbits="$val"
13770                 fi
13771                 $rm -f try.* try
13772                 ;;
13773         *)      : no select, so pick a harmless default
13774                 selectminbits='32'
13775                 ;;
13776         esac
13777         ;;
13778 esac
13779
13780 : Trace out the files included by signal.h, then look for SIGxxx names.
13781 : Remove SIGARRAYSIZE used by HPUX.
13782 : Remove SIGSTKSIZE used by Linux.
13783 : Remove SIGSTKSZ used by Posix.
13784 : Remove SIGTYP void lines used by OS2.
13785 : Some cpps, like os390, dont give the file name anywhere
13786 if [ "X$fieldn" = X ]; then
13787         : Just make some guesses.  We check them later.
13788         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13789 else
13790         xxx=`echo '#include <signal.h>' |
13791         $cppstdin $cppminus $cppflags 2>/dev/null |
13792         $grep '^[       ]*#.*include' | 
13793         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13794 fi
13795 : Check this list of files to be sure we have parsed the cpp output ok.
13796 : This will also avoid potentially non-existent files, such 
13797 : as ../foo/bar.h
13798 xxxfiles=''
13799 for xx in $xxx /dev/null ; do
13800         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13801 done
13802 : If we have found no files, at least try signal.h
13803 case "$xxxfiles" in
13804 '')     xxxfiles=`./findhdr signal.h` ;;
13805 esac
13806 xxx=`awk '
13807 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13808         print substr($2, 4, 20)
13809 }
13810 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13811         print substr($3, 4, 20)
13812 }' $xxxfiles`
13813 : Append some common names just in case the awk scan failed.
13814 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13815 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13816 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13817 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13818 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13819
13820 : generate a few handy files for later
13821 $cat > signal.c <<'EOCP'
13822 #include <sys/types.h>
13823 #include <signal.h>
13824 #include <stdio.h>
13825 int main() {
13826
13827 /* Strange style to avoid deeply-nested #if/#else/#endif */
13828 #ifndef NSIG
13829 #  ifdef _NSIG
13830 #    define NSIG (_NSIG)
13831 #  endif
13832 #endif
13833
13834 #ifndef NSIG
13835 #  ifdef SIGMAX
13836 #    define NSIG (SIGMAX+1)
13837 #  endif
13838 #endif
13839
13840 #ifndef NSIG
13841 #  ifdef SIG_MAX
13842 #    define NSIG (SIG_MAX+1)
13843 #  endif
13844 #endif
13845
13846 #ifndef NSIG
13847 #  ifdef MAXSIG
13848 #    define NSIG (MAXSIG+1)
13849 #  endif
13850 #endif
13851
13852 #ifndef NSIG
13853 #  ifdef MAX_SIG
13854 #    define NSIG (MAX_SIG+1)
13855 #  endif
13856 #endif
13857
13858 #ifndef NSIG
13859 #  ifdef SIGARRAYSIZE
13860 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13861 #  endif
13862 #endif
13863
13864 #ifndef NSIG
13865 #  ifdef _sys_nsig
13866 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13867 #  endif
13868 #endif
13869
13870 /* Default to some arbitrary number that's big enough to get most
13871    of the common signals.
13872 */
13873 #ifndef NSIG
13874 #    define NSIG 50
13875 #endif
13876
13877 printf("NSIG %d\n", NSIG);
13878
13879 #ifndef JUST_NSIG
13880
13881 EOCP
13882
13883 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13884 {
13885         printf "#ifdef SIG"; printf $1; printf "\n"
13886         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13887         printf $1; printf ");\n"
13888         printf "#endif\n"
13889 }
13890 END {
13891         printf "#endif /* JUST_NSIG */\n";
13892         printf "exit(0);\n}\n";
13893 }
13894 ' >>signal.c
13895 $cat >signal.awk <<'EOP'
13896 BEGIN { ndups = 0 }
13897 $1 ~ /^NSIG$/ { nsig = $2 }
13898 ($1 !~ /^NSIG$/) && (NF == 2) {
13899     if ($2 > maxsig) { maxsig = $2 }
13900     if (sig_name[$2]) {
13901         dup_name[ndups] = $1
13902         dup_num[ndups] = $2
13903         ndups++ 
13904     }
13905     else {
13906         sig_name[$2] = $1
13907         sig_num[$2] = $2
13908     }
13909 }
13910 END { 
13911     if (nsig == 0) {
13912         nsig = maxsig + 1
13913     }
13914     printf("NSIG %d\n", nsig);
13915     for (n = 1; n < nsig; n++) {
13916         if (sig_name[n]) {
13917             printf("%s %d\n", sig_name[n], sig_num[n])
13918         }
13919         else {
13920             printf("NUM%d %d\n", n, n) 
13921         }
13922     }
13923     for (n = 0; n < ndups; n++) {
13924         printf("%s %d\n", dup_name[n], dup_num[n])
13925     }
13926 }
13927 EOP
13928 $cat >signal_cmd <<EOS
13929 $startsh
13930 if $test -s signal.lst; then
13931     echo "Using your existing signal.lst file"
13932         exit 0
13933 fi
13934 xxx="$xxx"
13935 EOS
13936 $cat >>signal_cmd <<'EOS'
13937
13938 set signal
13939 if eval $compile_ok; then
13940         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13941 else
13942         echo "(I can't seem be able to compile the whole test program)" >&4
13943         echo "(I'll try it in little pieces.)" >&4
13944         set signal -DJUST_NSIG
13945         if eval $compile_ok; then
13946                 ./signal$_exe > signal.nsg
13947                 $cat signal.nsg
13948         else
13949                 echo "I can't seem to figure out how many signals you have." >&4
13950                 echo "Guessing 50." >&4
13951                 echo 'NSIG 50' > signal.nsg
13952         fi
13953         : Now look at all the signal names, one at a time.
13954         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13955                 $cat > signal.c <<EOCP
13956 #include <sys/types.h>
13957 #include <signal.h>
13958 #include <stdio.h>
13959 int main() {
13960 printf("$xx %d\n", SIG${xx});
13961 return 0;
13962 }
13963 EOCP
13964                 set signal
13965                 if eval $compile; then
13966                         echo "SIG${xx} found."
13967                         ./signal$_exe  >> signal.ls1
13968                 else
13969                         echo "SIG${xx} NOT found."
13970                 fi
13971         done
13972         if $test -s signal.ls1; then
13973                 $cat signal.nsg signal.ls1 |
13974                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13975         fi
13976
13977 fi
13978 if $test -s signal.lst; then
13979         :
13980 else
13981         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13982         echo 'kill -l' >signal
13983         set X `csh -f <signal`
13984         $rm -f signal
13985         shift
13986         case $# in
13987         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13988         esac
13989         echo $@ | $tr ' ' $trnl | \
13990             $awk '{ printf "%s %d\n", $1, ++s; }
13991                   END { printf "NSIG %d\n", ++s }' >signal.lst
13992 fi
13993 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13994 EOS
13995 chmod a+x signal_cmd
13996 $eunicefix signal_cmd
13997
13998 : generate list of signal names
13999 echo " "
14000 case "$sig_name_init" in
14001 '') doinit=yes ;;
14002 *)  case "$sig_num_init" in
14003     ''|*,*) doinit=yes ;;
14004     esac ;;
14005 esac
14006 case "$doinit" in
14007 yes)
14008         echo "Generating a list of signal names and numbers..." >&4
14009         . ./signal_cmd
14010         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14011         sig_name=`$awk 'BEGIN { printf "ZERO " }
14012                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14013         sig_num=`$awk  'BEGIN { printf "0 " }
14014                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14015         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14016                              !/^NSIG/   { printf "\"%s\", ", $1 }
14017                              END        { printf "0\n" }' signal.lst`
14018         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14019                              !/^NSIG/   { printf "%d, ", $2}
14020                              END        { printf "0\n"}' signal.lst`
14021         ;;
14022 esac
14023 echo "The following $sig_count signals are available:"
14024 echo " "
14025 echo $sig_name | $awk \
14026 'BEGIN { linelen = 0 }
14027 {
14028         for (i = 1; i <= NF; i++) {
14029                 name = "SIG" $i " "
14030                 linelen = linelen + length(name)
14031                 if (linelen > 70) {
14032                         printf "\n"
14033                         linelen = length(name)
14034                 }
14035                 printf "%s", name
14036         }
14037         printf "\n"
14038 }'
14039 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14040
14041 echo " "
14042 case "$sizetype" in
14043 *_t) zzz="$sizetype"    ;;
14044 *)   zzz="filesize"     ;;
14045 esac
14046 echo "Checking the size of $zzz..." >&4 
14047 cat > try.c <<EOCP
14048 #include <sys/types.h>
14049 #include <stdio.h>
14050 int main() {
14051     printf("%d\n", (int)sizeof($sizetype));
14052     exit(0);
14053 }
14054 EOCP
14055 set try
14056 if eval $compile_ok; then
14057         yyy=`./try`
14058         case "$yyy" in
14059         '')     sizesize=4
14060                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14061                 ;;
14062         *)      sizesize=$yyy
14063                 echo "Your $zzz size is $sizesize bytes."
14064                 ;;
14065         esac
14066 else
14067         sizesize=4
14068         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14069 fi
14070
14071
14072 : check for socklen_t
14073 echo " "
14074 echo "Checking to see if you have socklen_t..." >&4
14075 $cat >try.c <<EOCP
14076 #include <sys/types.h>
14077 #$d_socket HAS_SOCKET
14078 #ifdef HAS_SOCKET
14079 #include <sys/socket.h>
14080 #endif
14081 int main() { socklen_t x = 16; }
14082 EOCP
14083 set try
14084 if eval $compile; then
14085         val="$define"
14086         echo "You have socklen_t."
14087 else
14088         val="$undef"
14089         echo "You do not have socklen_t."
14090         case "$sizetype" in
14091         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14092         esac
14093 fi
14094 $rm -f try try.*
14095 set d_socklen_t
14096 eval $setvar
14097
14098 : check for type of the size argument to socket calls
14099 case "$d_socket" in
14100 "$define")
14101         $cat <<EOM
14102
14103 Checking to see what type is the last argument of accept().
14104 EOM
14105         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14106         yyy=''
14107         case "$d_socklen_t" in
14108         "$define") yyy="$yyy socklen_t"
14109         esac
14110         yyy="$yyy $sizetype int long unsigned"
14111         for xxx in $yyy; do
14112                 case "$socksizetype" in
14113                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14114                         if ./protochk "$try" $hdrs; then
14115                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14116                                 socksizetype="$xxx"
14117                         fi
14118                         ;;
14119                 esac
14120         done
14121 : In case none of those worked, prompt the user.
14122         case "$socksizetype" in
14123         '')     rp='What is the type for socket address structure sizes?'
14124                 dflt='int'
14125                 . ./myread
14126                 socksizetype=$ans
14127                 ;;
14128         esac
14129         ;;
14130 *)      : no sockets, so pick relatively harmless default
14131         socksizetype='int'
14132         ;;
14133 esac
14134
14135 : see what type is used for signed size_t
14136 set ssize_t ssizetype int stdio.h sys/types.h
14137 eval $typedef
14138 dflt="$ssizetype"
14139 $cat > ssize.c <<EOM
14140 #include <stdio.h>
14141 #include <sys/types.h>
14142 #define Size_t $sizetype
14143 #define SSize_t $dflt
14144 int main()
14145 {
14146         if (sizeof(Size_t) == sizeof(SSize_t))
14147                 printf("$dflt\n");
14148         else if (sizeof(Size_t) == sizeof(int))
14149                 printf("int\n");
14150         else 
14151                 printf("long\n");
14152         exit(0);
14153 }
14154 EOM
14155 echo " "
14156 set ssize
14157 if eval $compile_ok && ./ssize > /dev/null; then
14158         ssizetype=`./ssize`
14159         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14160 else
14161         $cat >&4 <<EOM
14162 Help! I can't compile and run the ssize_t test program: please enlighten me!
14163 (This is probably a misconfiguration in your system or libraries, and
14164 you really ought to fix it.  Still, I'll try anyway.)
14165
14166 I need a type that is the same size as $sizetype, but is guaranteed to
14167 be signed.  Common values are ssize_t, int and long.
14168
14169 EOM
14170         rp="What signed type is the same size as $sizetype?"
14171         . ./myread
14172         ssizetype="$ans"
14173 fi
14174 $rm -f ssize ssize.*
14175
14176 : see what type of char stdio uses.
14177 echo " "
14178 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14179         echo "Your stdio uses unsigned chars." >&4
14180         stdchar="unsigned char"
14181 else
14182         echo "Your stdio uses signed chars." >&4
14183         stdchar="char"
14184 fi
14185
14186 : see if time exists
14187 echo " "
14188 if test "X$d_time" = X -o X"$timetype" = X; then
14189     if set time val -f d_time; eval $csym; $val; then
14190                 echo 'time() found.' >&4
14191                 val="$define"
14192                 rp="What is the type returned by time() on this system?"
14193                 set time_t timetype long stdio.h sys/types.h
14194                 eval $typedef_ask
14195     else
14196                 echo 'time() not found, hope that will do.' >&4
14197                 val="$undef"
14198                 timetype='int';
14199     fi
14200     set d_time
14201     eval $setvar
14202 fi
14203
14204 : see what type uids are declared as in the kernel
14205 echo " "
14206 echo "Looking for the type for user ids returned by getuid()."
14207 set uid_t uidtype xxx stdio.h sys/types.h
14208 eval $typedef
14209 case "$uidtype" in
14210 xxx)
14211         xxx=`./findhdr sys/user.h`
14212         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14213         case $1 in
14214         unsigned) dflt="$1 $2" ;;
14215         *) dflt="$1" ;;
14216         esac
14217         ;;
14218 *) dflt="$uidtype";;
14219 esac
14220 case "$uidtype" in
14221 uid_t)  echo "uid_t found." ;;
14222 *)      rp="What is the type for user ids returned by getuid()?"
14223         . ./myread
14224         uidtype="$ans"
14225         ;;
14226 esac
14227
14228 echo " "
14229 case "$uidtype" in
14230 *_t) zzz="$uidtype"     ;;
14231 *)   zzz="uid"          ;;
14232 esac
14233 echo "Checking the size of $zzz..." >&4 
14234 cat > try.c <<EOCP
14235 #include <sys/types.h>
14236 #include <stdio.h>
14237 int main() {
14238     printf("%d\n", (int)sizeof($uidtype));
14239     exit(0);
14240 }
14241 EOCP
14242 set try
14243 if eval $compile_ok; then
14244         yyy=`./try`
14245         case "$yyy" in
14246         '')     uidsize=4
14247                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14248                 ;;
14249         *)      uidsize=$yyy
14250                 echo "Your $zzz is $uidsize bytes long."
14251                 ;;
14252         esac
14253 else
14254         uidsize=4
14255         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14256 fi
14257
14258 echo " "
14259 case "$uidtype" in
14260 *_t) zzz="$uidtype"     ;;
14261 *)   zzz="uid"          ;;
14262 esac
14263 echo "Checking the sign of $zzz..." >&4
14264 cat > try.c <<EOCP
14265 #include <sys/types.h>
14266 #include <stdio.h>
14267 int main() {
14268         $uidtype foo = -1;
14269         if (foo < 0)
14270                 printf("-1\n");
14271         else
14272                 printf("1\n");
14273 }
14274 EOCP
14275 set try
14276 if eval $compile; then
14277         yyy=`./try`
14278         case "$yyy" in
14279         '')     uidsign=1
14280                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14281                 ;;
14282         *)      uidsign=$yyy
14283                 case "$uidsign" in
14284                  1) echo "Your $zzz is unsigned." ;;
14285                 -1) echo "Your $zzz is signed."   ;;
14286                 esac
14287                 ;;
14288         esac
14289 else
14290         uidsign=1
14291         echo "(I can't compile the test program--guessing unsigned.)" >&4
14292 fi
14293
14294
14295
14296 echo " "
14297 $echo "Checking the format string to be used for uids..." >&4
14298
14299 case "$uidsign" in
14300 -1)     if $test X"$uidsize" = X"$ivsize"; then
14301                 uidformat="$ivdformat"
14302         else
14303                 if $test X"$uidsize" = X"$longsize"; then
14304                         uidformat='"ld"'
14305                 else
14306                         if $test X"$uidsize" = X"$intsize"; then
14307                                 uidformat='"d"'
14308                         else
14309                                 if $test X"$uidsize" = X"$shortsize"; then
14310                                         uidformat='"hd"'
14311                                 fi
14312                         fi
14313                 fi
14314         fi
14315         ;;
14316 *)      if $test X"$uidsize" = X"$uvsize"; then
14317                 uidformat="$uvuformat"
14318         else
14319                 if $test X"$uidsize" = X"$longsize"; then
14320                         uidformat='"lu"'
14321                 else
14322                         if $test X"$uidsize" = X"$intsize"; then
14323                                 uidformat='"u"'
14324                         else
14325                                 if $test X"$uidsize" = X"$shortsize"; then
14326                                         uidformat='"hu"'
14327                                 fi
14328                         fi
14329                 fi
14330         fi
14331         ;;
14332 esac
14333
14334 : see if dbm.h is available
14335 : see if dbmclose exists
14336 set dbmclose d_dbmclose
14337 eval $inlibc
14338
14339 case "$d_dbmclose" in
14340 $define)
14341         set dbm.h i_dbm
14342         eval $inhdr
14343         case "$i_dbm" in
14344         $define)
14345                 val="$undef"
14346                 set i_rpcsvcdbm
14347                 eval $setvar
14348                 ;;
14349         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14350                 eval $inhdr
14351                 ;;
14352         esac
14353         ;;
14354 *)      echo "We won't be including <dbm.h>"
14355         val="$undef"
14356         set i_dbm
14357         eval $setvar
14358         val="$undef"
14359         set i_rpcsvcdbm
14360         eval $setvar
14361         ;;
14362 esac
14363
14364 : see if this is a sys/file.h system
14365 val=''
14366 set sys/file.h val
14367 eval $inhdr
14368
14369 : do we need to include sys/file.h ?
14370 case "$val" in
14371 "$define")
14372         echo " "
14373         if $h_sysfile; then
14374                 val="$define"
14375                 echo "We'll be including <sys/file.h>." >&4
14376         else
14377                 val="$undef"
14378                 echo "We won't be including <sys/file.h>." >&4
14379         fi
14380         ;;
14381 *)
14382         h_sysfile=false
14383         ;;
14384 esac
14385 set i_sysfile
14386 eval $setvar
14387
14388 : see if fcntl.h is there
14389 val=''
14390 set fcntl.h val
14391 eval $inhdr
14392
14393 : see if we can include fcntl.h
14394 case "$val" in
14395 "$define")
14396         echo " "
14397         if $h_fcntl; then
14398                 val="$define"
14399                 echo "We'll be including <fcntl.h>." >&4
14400         else
14401                 val="$undef"
14402                 if $h_sysfile; then
14403         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14404                 else
14405                         echo "We won't be including <fcntl.h>." >&4
14406                 fi
14407         fi
14408         ;;
14409 *)
14410         h_fcntl=false
14411         val="$undef"
14412         ;;
14413 esac
14414 set i_fcntl
14415 eval $setvar
14416
14417 : see if this is a iconv.h system
14418 set iconv.h i_iconv
14419 eval $inhdr
14420
14421 : see if this is a ieeefp.h system
14422 set ieeefp.h i_ieeefp
14423 eval $inhdr
14424
14425 : see if this is a libutil.h system
14426 set libutil.h i_libutil
14427 eval $inhdr
14428
14429 : see if locale.h is available
14430 set locale.h i_locale
14431 eval $inhdr
14432
14433 : see if mach cthreads are available
14434 if test "X$usethreads" = "X$define"; then
14435         set mach/cthreads.h i_machcthr
14436         eval $inhdr
14437 else
14438         i_machcthr="$undef"
14439 fi
14440
14441
14442
14443 : see if this is a math.h system
14444 set math.h i_math
14445 eval $inhdr
14446
14447 : see if this is a mntent.h system
14448 set mntent.h i_mntent
14449 eval $inhdr
14450
14451 : see if ndbm.h is available
14452 set ndbm.h t_ndbm
14453 eval $inhdr
14454 case "$t_ndbm" in
14455 $define)
14456         : see if dbm_open exists
14457         set dbm_open d_dbm_open
14458         eval $inlibc
14459         case "$d_dbm_open" in
14460         $undef)
14461                 t_ndbm="$undef"
14462                 echo "We won't be including <ndbm.h>"
14463                 ;;
14464         esac
14465         ;;
14466 esac
14467 val="$t_ndbm"
14468 set i_ndbm
14469 eval $setvar
14470
14471 : see if net/errno.h is available
14472 val=''
14473 set net/errno.h val
14474 eval $inhdr
14475
14476 : Unfortunately, it causes problems on some systems.  Arrgh.
14477 case "$val" in
14478 $define)
14479         cat > try.c <<'EOM'
14480 #include <stdio.h>
14481 #include <errno.h>
14482 #include <net/errno.h>
14483 int func()
14484 {
14485         return ENOTSOCK;
14486 }
14487 EOM
14488         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14489                 echo "We'll be including <net/errno.h>." >&4
14490         else
14491                 echo "We won't be including <net/errno.h>." >&4
14492                 val="$undef"
14493         fi
14494         $rm -f try.* try
14495         ;;
14496 esac
14497 set i_neterrno
14498 eval $setvar
14499
14500 : see if netinet/tcp.h is available
14501 set netinet/tcp.h i_netinettcp
14502 eval $inhdr
14503
14504 : see if this is a poll.h system
14505 set poll.h i_poll
14506 eval $inhdr
14507
14508 : see if this is a prot.h system
14509 set prot.h i_prot
14510 eval $inhdr
14511
14512 echo " "
14513 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14514 $cat <<'EOSH' > Cppsym.know
14515 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14516 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14517 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14518 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14519 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14520 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14521 bull c cadmus clipper CMU COFF COMPILER_VERSION
14522 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14523 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14524 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14525 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14526 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14527 H3050R H3050RX hbullx20 hcx host_mips
14528 hp200 hp300 hp700 HP700 hp800 hp9000
14529 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14530 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14531 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14532 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14533 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14534 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14535 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14536 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14537 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14538 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14539 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14540 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14541 MATH_HAS_NO_SIDE_EFFECTS
14542 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14543 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14544 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14545 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14546 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14547 NetBSD news1500 news1700 news1800 news1900 news3700
14548 news700 news800 news900 NeXT NLS ns16000 ns32000
14549 ns32016 ns32332 ns32k nsc32000
14550 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14551 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14552 pc532 pdp11 PGC PIC plexus PORTAR posix
14553 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14554 POSIX_C_SOURCE POSIX_SOURCE POWER
14555 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14556 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14557 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14558 sony sony_news sonyrisc sparc sparclite spectrum
14559 stardent stdc STDC_EXT stratos sun sun3 sun386
14560 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14561 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14562 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14563 sysV68 sysV88 Tek4132 Tek4300 titan
14564 tower tower32 tower32_200 tower32_600 tower32_700
14565 tower32_800 tower32_850 tss
14566 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14567 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14568 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14569 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14570 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14571 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14572 z8000
14573 EOSH
14574 # Maybe put other stuff here too.
14575 cat <<EOSH >>Cppsym.know
14576 $osname
14577 EOSH
14578 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14579 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14580 $cat Cppsym.know > Cppsym.c
14581 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14582 $rm -f Cppsym.a Cppsym.b Cppsym.c
14583 cat <<EOSH > Cppsym
14584 $startsh
14585 if $test \$# -gt 0; then
14586     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14587     if $test -s Cppsym.got; then
14588         $rm -f Cppsym.got
14589         exit 0
14590     fi
14591     $rm -f Cppsym.got
14592     exit 1
14593 else
14594     $tr " " "$trnl" | ./Cppsym.try
14595     exit 0
14596 fi
14597 EOSH
14598 chmod +x Cppsym
14599 $eunicefix Cppsym
14600 cat <<EOSH > Cppsym.try
14601 $startsh
14602 cat <<'EOCP' > try.c
14603 #include <stdio.h>
14604 int main() {
14605 EOCP
14606 $awk \\
14607 EOSH
14608 cat <<'EOSH' >> Cppsym.try
14609 'length($1) > 0 {
14610     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
14611     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
14612     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
14613     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
14614 }'       >> try.c
14615 echo '}' >> try.c
14616 EOSH
14617 cat <<EOSH >> Cppsym.try
14618 ccflags="$ccflags"
14619 case "$osname-$gccversion" in
14620 irix-) ccflags="\$ccflags -woff 1178" ;;
14621 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14622 esac
14623 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14624 EOSH
14625 chmod +x Cppsym.try
14626 $eunicefix Cppsym.try
14627 ./Cppsym < Cppsym.know > Cppsym.true
14628 : now check the C compiler for additional symbols
14629 postprocess_cc_v=''
14630 case "$osname" in
14631 aix) postprocess_cc_v="|$tr , ' '" ;;
14632 esac
14633 $cat >ccsym <<EOS
14634 $startsh
14635 $cat >tmp.c <<EOF
14636 extern int foo;
14637 EOF
14638 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14639 do
14640         case "\$i" in
14641         -D*) echo "\$i" | $sed 's/^-D//';;
14642         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14643         esac
14644 done
14645 $rm -f try.c
14646 EOS
14647 postprocess_cc_v=''
14648 chmod +x ccsym
14649 $eunicefix ccsym
14650 ./ccsym > ccsym1.raw
14651 if $test -s ccsym1.raw; then
14652        $sort ccsym1.raw | $uniq >ccsym.raw
14653 else
14654        mv ccsym1.raw ccsym.raw
14655 fi
14656
14657 $awk '/\=/ { print $0; next }
14658         { print $0"=1" }' ccsym.raw >ccsym.list
14659 $awk '/\=/ { print $0; next }
14660         { print $0"=1" }' Cppsym.true >ccsym.true
14661 $comm -13 ccsym.true ccsym.list >ccsym.own
14662 $comm -12 ccsym.true ccsym.list >ccsym.com
14663 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14664 also=''
14665 if $test -z ccsym.raw; then
14666         echo "Your C compiler doesn't seem to define any symbols!" >&4
14667         echo " "
14668         echo "However, your C preprocessor defines the following symbols:"
14669         $cat Cppsym.true
14670         ccsymbols=''
14671         cppsymbols=`$cat Cppsym.true`
14672         cppsymbols=`echo $cppsymbols`
14673         cppccsymbols="$cppsymbols"
14674 else
14675         if $test -s ccsym.com; then
14676                 echo "Your C compiler and pre-processor define these symbols:"
14677                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14678                 also='also '
14679                 symbols='ones'
14680                 cppccsymbols=`$cat ccsym.com`
14681                 cppccsymbols=`echo $cppccsymbols`
14682                 $test "$silent" || sleep 1
14683         fi
14684         if $test -s ccsym.cpp; then
14685                 $test "$also" && echo " "
14686                 echo "Your C pre-processor ${also}defines the following symbols:"
14687                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14688                 also='further '
14689                 cppsymbols=`$cat ccsym.cpp`
14690                 cppsymbols=`echo $cppsymbols`
14691                 $test "$silent" || sleep 1
14692         fi
14693         if $test -s ccsym.own; then
14694                 $test "$also" && echo " "
14695                 echo "Your C compiler ${also}defines the following cpp symbols:"
14696                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14697                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14698                 ccsymbols=`$cat ccsym.own`
14699                 ccsymbols=`echo $ccsymbols`
14700                 $test "$silent" || sleep 1
14701         fi
14702 fi
14703 $rm -f ccsym* Cppsym.*
14704
14705 : see if this is a termio system
14706 val="$undef"
14707 val2="$undef"
14708 val3="$undef"
14709 if $test `./findhdr termios.h`; then
14710         set tcsetattr i_termios
14711         eval $inlibc
14712         val3="$i_termios"
14713 fi
14714 echo " "
14715 case "$val3" in
14716 "$define") echo "You have POSIX termios.h... good!" >&4;;
14717 *) if ./Cppsym pyr; then
14718                 case "`/bin/universe`" in
14719                 ucb) if $test `./findhdr sgtty.h`; then
14720                                 val2="$define"
14721                                 echo "<sgtty.h> found." >&4
14722                         else
14723                                 echo "System is pyramid with BSD universe."
14724                                 echo "<sgtty.h> not found--you could have problems." >&4
14725                         fi;;
14726                 *) if $test `./findhdr termio.h`; then
14727                                 val="$define"
14728                                 echo "<termio.h> found." >&4
14729                         else
14730                                 echo "System is pyramid with USG universe."
14731                                 echo "<termio.h> not found--you could have problems." >&4
14732                         fi;;
14733                 esac
14734         elif ./usg; then
14735                 if $test `./findhdr termio.h`; then
14736                         echo "<termio.h> found." >&4
14737                         val="$define"
14738                 elif $test `./findhdr sgtty.h`; then
14739                         echo "<sgtty.h> found." >&4
14740                         val2="$define"
14741                 else
14742 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14743                 fi
14744         else
14745                 if $test `./findhdr sgtty.h`; then
14746                         echo "<sgtty.h> found." >&4
14747                         val2="$define"
14748                 elif $test `./findhdr termio.h`; then
14749                         echo "<termio.h> found." >&4
14750                         val="$define"
14751                 else
14752 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14753                 fi
14754         fi;;
14755 esac
14756 set i_termio; eval $setvar
14757 val=$val2; set i_sgtty; eval $setvar
14758 val=$val3; set i_termios; eval $setvar
14759
14760 : see if this is a shadow.h system
14761 set shadow.h i_shadow
14762 eval $inhdr
14763
14764 : see if this is a socks.h system
14765 set socks.h i_socks
14766 eval $inhdr
14767
14768 : see if stdarg is available
14769 echo " "
14770 if $test `./findhdr stdarg.h`; then
14771         echo "<stdarg.h> found." >&4
14772         valstd="$define"
14773 else
14774         echo "<stdarg.h> NOT found." >&4
14775         valstd="$undef"
14776 fi
14777
14778 : see if varags is available
14779 echo " "
14780 if $test `./findhdr varargs.h`; then
14781         echo "<varargs.h> found." >&4
14782 else
14783         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14784 fi
14785
14786 : set up the varargs testing programs
14787 $cat > varargs.c <<EOP
14788 #ifdef I_STDARG
14789 #include <stdarg.h>
14790 #endif
14791 #ifdef I_VARARGS
14792 #include <varargs.h>
14793 #endif
14794
14795 #ifdef I_STDARG
14796 int f(char *p, ...)
14797 #else
14798 int f(va_alist)
14799 va_dcl
14800 #endif
14801 {
14802         va_list ap;
14803 #ifndef I_STDARG
14804         char *p;
14805 #endif
14806 #ifdef I_STDARG
14807         va_start(ap,p);
14808 #else
14809         va_start(ap);
14810         p = va_arg(ap, char *);
14811 #endif
14812         va_end(ap);
14813 }
14814 EOP
14815 $cat > varargs <<EOP
14816 $startsh
14817 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14818         echo "true"
14819 else
14820         echo "false"
14821 fi
14822 $rm -f varargs$_o
14823 EOP
14824 chmod +x varargs
14825
14826 : now check which varargs header should be included
14827 echo " "
14828 i_varhdr=''
14829 case "$valstd" in
14830 "$define")
14831         if `./varargs I_STDARG`; then
14832                 val='stdarg.h'
14833         elif `./varargs I_VARARGS`; then
14834                 val='varargs.h'
14835         fi
14836         ;;
14837 *)
14838         if `./varargs I_VARARGS`; then
14839                 val='varargs.h'
14840         fi
14841         ;;
14842 esac
14843 case "$val" in
14844 '')
14845 echo "I could not find the definition for va_dcl... You have problems..." >&4
14846         val="$undef"; set i_stdarg; eval $setvar
14847         val="$undef"; set i_varargs; eval $setvar
14848         ;;
14849 *) 
14850         set i_varhdr
14851         eval $setvar
14852         case "$i_varhdr" in
14853         stdarg.h)
14854                 val="$define"; set i_stdarg; eval $setvar
14855                 val="$undef"; set i_varargs; eval $setvar
14856                 ;;
14857         varargs.h)
14858                 val="$undef"; set i_stdarg; eval $setvar
14859                 val="$define"; set i_varargs; eval $setvar
14860                 ;;
14861         esac
14862         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14863 esac
14864 $rm -f varargs*
14865
14866 : see if stddef is available
14867 set stddef.h i_stddef
14868 eval $inhdr
14869
14870 : see if this is a sunmath.h system
14871 set sunmath.h i_sunmath
14872 eval $inhdr
14873
14874 : see if sys/access.h is available
14875 set sys/access.h i_sysaccess
14876 eval $inhdr
14877
14878 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14879 set sys/filio.h i_sysfilio
14880 eval $inhdr
14881 echo " "
14882 if $test `./findhdr sys/ioctl.h`; then
14883         val="$define"
14884         echo '<sys/ioctl.h> found.' >&4
14885 else
14886         val="$undef"
14887         if $test $i_sysfilio = "$define"; then
14888             echo '<sys/ioctl.h> NOT found.' >&4
14889         else
14890                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14891                 $test $i_termio = "$define" && xxx="termio.h"
14892                 $test $i_termios = "$define" && xxx="termios.h"
14893 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14894         fi
14895 fi
14896 set i_sysioctl
14897 eval $setvar
14898
14899
14900 : see if this is a syslog.h system
14901 set syslog.h i_syslog
14902 eval $inhdr
14903
14904
14905 : see if this is a sys/mode.h system
14906 set sys/mode.h i_sysmode
14907 eval $inhdr
14908
14909 : see if sys/resource.h has to be included
14910 set sys/resource.h i_sysresrc
14911 eval $inhdr
14912
14913 : see if sys/security.h is available
14914 set sys/security.h i_syssecrt
14915 eval $inhdr
14916
14917 : see if this is a sys/statvfs.h system
14918 set sys/statvfs.h i_sysstatvfs
14919 eval $inhdr
14920
14921 : see if this is a sys/uio.h system
14922 set sys/uio.h i_sysuio
14923 eval $inhdr
14924
14925 : see if this is a sys/un.h system
14926 set sys/un.h i_sysun
14927 eval $inhdr
14928
14929
14930 : see if this is a sys/utsname.h system
14931 set sys/utsname.h i_sysutsname
14932 eval $inhdr
14933
14934 : see if this is a syswait system
14935 set sys/wait.h i_syswait
14936 eval $inhdr
14937
14938 : see if this is a ustat.h system
14939 set ustat.h i_ustat
14940 eval $inhdr
14941
14942 : see if this is an utime system
14943 set utime.h i_utime
14944 eval $inhdr
14945
14946 : see if this is a values.h system
14947 set values.h i_values
14948 eval $inhdr
14949
14950 : see if this is a vfork system
14951 case "$d_vfork" in
14952 "$define")
14953         set vfork.h i_vfork
14954         eval $inhdr
14955         ;;
14956 *)
14957         i_vfork="$undef"
14958         ;;
14959 esac
14960
14961 : see if gdbm.h is available
14962 set gdbm.h t_gdbm
14963 eval $inhdr
14964 case "$t_gdbm" in
14965 $define)
14966         : see if gdbm_open exists
14967         set gdbm_open d_gdbm_open
14968         eval $inlibc
14969         case "$d_gdbm_open" in
14970         $undef)
14971                 t_gdbm="$undef"
14972                 echo "We won't be including <gdbm.h>"
14973                 ;;
14974         esac
14975         ;;
14976 esac
14977 val="$t_gdbm"
14978 set i_gdbm
14979 eval $setvar
14980
14981 echo " "
14982 echo "Looking for extensions..." >&4
14983 : If we are using the old config.sh, known_extensions may contain
14984 : old or inaccurate or duplicate values.
14985 known_extensions=''
14986 nonxs_extensions=''
14987 : We do not use find because it might not be available.
14988 : We do not just use MANIFEST because the user may have dropped
14989 : some additional extensions into the source tree and expect them
14990 : to be built.
14991
14992 : Function to recursively find available extensions, ignoring DynaLoader
14993 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14994 find_extensions='
14995     for xxx in *; do
14996        case "$xxx" in
14997            DynaLoader|dynaload) ;;
14998            *)
14999            if $test -f $xxx/$xxx.xs; then
15000                known_extensions="$known_extensions $1$xxx";
15001            elif $test -f $xxx/Makefile.PL; then
15002                nonxs_extensions="$nonxs_extensions $1$xxx";
15003            else
15004                if $test -d $xxx -a $# -lt 10; then
15005                    set $1$xxx/ $*;
15006                    cd $xxx;
15007                    eval $find_extensions;
15008                    cd ..;
15009                    shift;
15010                fi;
15011            fi
15012            ;;
15013        esac;
15014     done'
15015 tdir=`pwd`
15016 cd $rsrc/ext
15017 set X
15018 shift
15019 eval $find_extensions
15020 set X $nonxs_extensions
15021 shift
15022 nonxs_extensions="$*"
15023 set X $known_extensions
15024 shift
15025 known_extensions="$*"
15026 cd $tdir
15027
15028 : Now see which are supported on this system.
15029 avail_ext=''
15030 for xxx in $known_extensions ; do
15031         case "$xxx" in
15032         DB_File|db_file)
15033                 case "$i_db" in
15034                 $define) avail_ext="$avail_ext $xxx" ;;
15035                 esac
15036                 ;;
15037         GDBM_File|gdbm_fil)
15038                 case "$i_gdbm" in 
15039                 $define) avail_ext="$avail_ext $xxx" ;;
15040                 esac
15041                 ;;
15042         NDBM_File|ndbm_fil)
15043                 case "$i_ndbm" in
15044                 $define)
15045                     case "$osname-$use64bitint" in
15046                     hpux-define)
15047                         case "$libs" in
15048                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15049                         esac
15050                         ;;
15051                     *) avail_ext="$avail_ext $xxx" ;;
15052                     esac
15053                     ;;
15054                 esac
15055                 ;;
15056         ODBM_File|odbm_fil) 
15057                 case "${i_dbm}${i_rpcsvcdbm}" in
15058                 *"${define}"*)
15059                     case "$osname-$use64bitint" in
15060                     hpux-define)
15061                         case "$libs" in
15062                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15063                         esac
15064                         ;;
15065                     *) avail_ext="$avail_ext $xxx" ;;
15066                     esac
15067                     ;;
15068                 esac
15069                 ;;
15070         POSIX|posix)
15071                 case "$useposix" in
15072                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15073                 esac
15074                 ;;
15075         Opcode|opcode)
15076                 case "$useopcode" in
15077                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15078                 esac
15079                 ;;
15080         Socket|socket)
15081                 case "$d_socket" in 
15082                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15083                 esac
15084                 ;;
15085         Sys/Syslog|sys/syslog)
15086                 : XXX syslog requires socket
15087                 case "$d_socket" in 
15088                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15089                 esac
15090                 ;;
15091         Thread|thread)
15092                 case "$usethreads" in 
15093                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15094                 esac
15095                 ;;
15096         IPC/SysV|ipc/sysv)
15097                 : XXX Do we need a useipcsysv variable here
15098                 case "${d_msg}${d_sem}${d_shm}" in 
15099                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15100                 esac
15101                 ;;
15102         *)      avail_ext="$avail_ext $xxx"
15103                 ;;
15104         esac
15105 done
15106
15107 set X $avail_ext
15108 shift
15109 avail_ext="$*"
15110
15111 : Now see which nonxs extensions are supported on this system.
15112 : For now assume all are.
15113 nonxs_ext=''
15114 for xxx in $nonxs_extensions ; do
15115         case "$xxx" in
15116         *)      nonxs_ext="$nonxs_ext $xxx"
15117                 ;;
15118         esac
15119 done
15120
15121 set X $nonxs_ext
15122 shift
15123 nonxs_ext="$*"
15124
15125 case $usedl in
15126 $define)
15127         $cat <<EOM
15128 A number of extensions are supplied with $package.  You may choose to
15129 compile these extensions for dynamic loading (the default), compile
15130 them into the $package executable (static loading), or not include
15131 them at all.  Answer "none" to include no extensions.
15132 Note that DynaLoader is always built and need not be mentioned here.
15133
15134 EOM
15135         case "$dynamic_ext" in
15136         '') dflt="$avail_ext" ;;
15137         *)      dflt="$dynamic_ext"
15138                 # Perhaps we are reusing an old out-of-date config.sh.
15139                 case "$hint" in
15140                 previous)
15141                         if test X"$dynamic_ext" != X"$avail_ext"; then
15142                                 $cat <<EOM
15143 NOTICE:  Your previous config.sh list may be incorrect. 
15144 The extensions now available to you are 
15145         ${avail_ext}
15146 but the default list from your previous config.sh is
15147         ${dynamic_ext} 
15148
15149 EOM
15150                         fi
15151                         ;;
15152                 esac
15153                 ;;
15154         esac
15155         case "$dflt" in
15156         '')     dflt=none;;
15157         esac
15158         rp="What extensions do you wish to load dynamically?"
15159         . ./myread
15160         case "$ans" in
15161         none) dynamic_ext=' ' ;;
15162         *) dynamic_ext="$ans" ;;
15163         esac
15164
15165         case "$static_ext" in
15166         '')
15167                 : Exclude those already listed in dynamic linking
15168                 dflt=''
15169                 for xxx in $avail_ext; do
15170                         case " $dynamic_ext " in
15171                         *" $xxx "*) ;;
15172                         *) dflt="$dflt $xxx" ;;
15173                         esac
15174                 done
15175                 set X $dflt
15176                 shift
15177                 dflt="$*"
15178                 ;;
15179         *)  dflt="$static_ext" 
15180                 ;;
15181         esac
15182
15183         case "$dflt" in
15184         '')     dflt=none;;
15185         esac
15186         rp="What extensions do you wish to load statically?"
15187         . ./myread
15188         case "$ans" in
15189         none) static_ext=' ' ;;
15190         *) static_ext="$ans" ;;
15191         esac
15192         ;;
15193 *)
15194         $cat <<EOM
15195 A number of extensions are supplied with $package.  Answer "none" 
15196 to include no extensions. 
15197 Note that DynaLoader is always built and need not be mentioned here.
15198
15199 EOM
15200         case "$static_ext" in
15201         '') dflt="$avail_ext" ;;
15202         *)      dflt="$static_ext"
15203                 # Perhaps we are reusing an old out-of-date config.sh.
15204                 case "$hint" in
15205                 previous)
15206                         if test X"$static_ext" != X"$avail_ext"; then
15207                                 $cat <<EOM
15208 NOTICE:  Your previous config.sh list may be incorrect. 
15209 The extensions now available to you are 
15210         ${avail_ext}
15211 but the default list from your previous config.sh is
15212         ${static_ext} 
15213
15214 EOM
15215                         fi
15216                         ;;
15217                 esac
15218                 ;;
15219         esac
15220         : Exclude those that are not xs extensions
15221         case "$dflt" in
15222         '')     dflt=none;;
15223         esac
15224         rp="What extensions do you wish to include?"
15225         . ./myread
15226         case "$ans" in
15227         none) static_ext=' ' ;;
15228         *) static_ext="$ans" ;;
15229         esac
15230         ;;
15231 esac
15232
15233 set X $dynamic_ext $static_ext $nonxs_ext
15234 shift
15235 extensions="$*"
15236
15237 : Remove build directory name from cppstdin so it can be used from
15238 : either the present location or the final installed location.
15239 echo " "
15240 : Get out of the UU directory to get correct path name.
15241 cd ..
15242 case "$cppstdin" in
15243 `pwd`/cppstdin)
15244         echo "Stripping down cppstdin path name"
15245         cppstdin=cppstdin
15246         ;;
15247 esac
15248 cd UU
15249
15250 : end of configuration questions
15251 echo " "
15252 echo "End of configuration questions."
15253 echo " "
15254
15255 : back to where it started
15256 if test -d ../UU; then
15257         cd ..
15258 fi
15259
15260 : configuration may be patched via a 'config.over' file
15261 if $test -f config.over; then
15262         echo " "
15263         dflt=y
15264         rp='I see a config.over file.  Do you wish to load it?'
15265         . UU/myread
15266         case "$ans" in
15267         n*) echo "OK, I'll ignore it.";;
15268         *)      . ./config.over
15269                 echo "Configuration override changes have been loaded."
15270                 ;;
15271         esac
15272 fi
15273
15274 : in case they want portability, strip down executable paths
15275 case "$d_portable" in
15276 "$define")
15277         echo " "
15278         echo "Stripping down executable paths..." >&4
15279         for file in $loclist $trylist; do
15280                 eval temp=\$$file
15281                 eval $file=`basename $temp`
15282         done
15283         ;;
15284 esac
15285
15286 : create config.sh file
15287 echo " "
15288 echo "Creating config.sh..." >&4
15289 $spitshell <<EOT >config.sh
15290 $startsh
15291 #
15292 # This file was produced by running the Configure script. It holds all the
15293 # definitions figured out by Configure. Should you modify one of these values,
15294 # do not forget to propagate your changes by running "Configure -der". You may
15295 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15296 #
15297
15298 # Package name      : $package
15299 # Source directory  : $src
15300 # Configuration time: $cf_time
15301 # Configured by     : $cf_by
15302 # Target system     : $myuname
15303
15304 Author='$Author'
15305 Date='$Date'
15306 Header='$Header'
15307 Id='$Id'
15308 Locker='$Locker'
15309 Log='$Log'
15310 Mcc='$Mcc'
15311 RCSfile='$RCSfile'
15312 Revision='$Revision'
15313 Source='$Source'
15314 State='$State'
15315 _a='$_a'
15316 _exe='$_exe'
15317 _o='$_o'
15318 afs='$afs'
15319 alignbytes='$alignbytes'
15320 ansi2knr='$ansi2knr'
15321 aphostname='$aphostname'
15322 api_revision='$api_revision'
15323 api_subversion='$api_subversion'
15324 api_version='$api_version'
15325 api_versionstring='$api_versionstring'
15326 ar='$ar'
15327 archlib='$archlib'
15328 archlibexp='$archlibexp'
15329 archname64='$archname64'
15330 archname='$archname'
15331 archobjs='$archobjs'
15332 awk='$awk'
15333 baserev='$baserev'
15334 bash='$bash'
15335 bin='$bin'
15336 bincompat5005='$bincompat5005'
15337 binexp='$binexp'
15338 bison='$bison'
15339 byacc='$byacc'
15340 byteorder='$byteorder'
15341 c='$c'
15342 castflags='$castflags'
15343 cat='$cat'
15344 cc='$cc'
15345 cccdlflags='$cccdlflags'
15346 ccdlflags='$ccdlflags'
15347 ccflags='$ccflags'
15348 ccflags_uselargefiles='$ccflags_uselargefiles'
15349 ccsymbols='$ccsymbols'
15350 cf_by='$cf_by'
15351 cf_email='$cf_email'
15352 cf_time='$cf_time'
15353 charsize='$charsize'
15354 chgrp='$chgrp'
15355 chmod='$chmod'
15356 chown='$chown'
15357 clocktype='$clocktype'
15358 comm='$comm'
15359 compress='$compress'
15360 contains='$contains'
15361 cp='$cp'
15362 cpio='$cpio'
15363 cpp='$cpp'
15364 cpp_stuff='$cpp_stuff'
15365 cppccsymbols='$cppccsymbols'
15366 cppflags='$cppflags'
15367 cpplast='$cpplast'
15368 cppminus='$cppminus'
15369 cpprun='$cpprun'
15370 cppstdin='$cppstdin'
15371 cppsymbols='$cppsymbols'
15372 crosscompile='$crosscompile'
15373 cryptlib='$cryptlib'
15374 csh='$csh'
15375 d_Gconvert='$d_Gconvert'
15376 d_PRIEldbl='$d_PRIEldbl'
15377 d_PRIFldbl='$d_PRIFldbl'
15378 d_PRIGldbl='$d_PRIGldbl'
15379 d_PRIX64='$d_PRIX64'
15380 d_PRId64='$d_PRId64'
15381 d_PRIeldbl='$d_PRIeldbl'
15382 d_PRIfldbl='$d_PRIfldbl'
15383 d_PRIgldbl='$d_PRIgldbl'
15384 d_PRIi64='$d_PRIi64'
15385 d_PRIo64='$d_PRIo64'
15386 d_PRIu64='$d_PRIu64'
15387 d_PRIx64='$d_PRIx64'
15388 d_access='$d_access'
15389 d_accessx='$d_accessx'
15390 d_alarm='$d_alarm'
15391 d_archlib='$d_archlib'
15392 d_atolf='$d_atolf'
15393 d_atoll='$d_atoll'
15394 d_attribut='$d_attribut'
15395 d_bcmp='$d_bcmp'
15396 d_bcopy='$d_bcopy'
15397 d_bincompat5005='$d_bincompat5005'
15398 d_bsd='$d_bsd'
15399 d_bsdgetpgrp='$d_bsdgetpgrp'
15400 d_bsdsetpgrp='$d_bsdsetpgrp'
15401 d_bzero='$d_bzero'
15402 d_casti32='$d_casti32'
15403 d_castneg='$d_castneg'
15404 d_charvspr='$d_charvspr'
15405 d_chown='$d_chown'
15406 d_chroot='$d_chroot'
15407 d_chsize='$d_chsize'
15408 d_closedir='$d_closedir'
15409 d_const='$d_const'
15410 d_crypt='$d_crypt'
15411 d_csh='$d_csh'
15412 d_cuserid='$d_cuserid'
15413 d_dbl_dig='$d_dbl_dig'
15414 d_difftime='$d_difftime'
15415 d_dirnamlen='$d_dirnamlen'
15416 d_dlerror='$d_dlerror'
15417 d_dlopen='$d_dlopen'
15418 d_dlsymun='$d_dlsymun'
15419 d_dosuid='$d_dosuid'
15420 d_drand48proto='$d_drand48proto'
15421 d_dup2='$d_dup2'
15422 d_eaccess='$d_eaccess'
15423 d_endgrent='$d_endgrent'
15424 d_endhent='$d_endhent'
15425 d_endnent='$d_endnent'
15426 d_endpent='$d_endpent'
15427 d_endpwent='$d_endpwent'
15428 d_endsent='$d_endsent'
15429 d_eofnblk='$d_eofnblk'
15430 d_eunice='$d_eunice'
15431 d_fchmod='$d_fchmod'
15432 d_fchown='$d_fchown'
15433 d_fcntl='$d_fcntl'
15434 d_fd_macros='$d_fd_macros'
15435 d_fd_set='$d_fd_set'
15436 d_fds_bits='$d_fds_bits'
15437 d_fgetpos='$d_fgetpos'
15438 d_flexfnam='$d_flexfnam'
15439 d_flock='$d_flock'
15440 d_fork='$d_fork'
15441 d_fpathconf='$d_fpathconf'
15442 d_fpos64_t='$d_fpos64_t'
15443 d_frexpl='$d_frexpl'
15444 d_fs_data_s='$d_fs_data_s'
15445 d_fseeko='$d_fseeko'
15446 d_fsetpos='$d_fsetpos'
15447 d_fstatfs='$d_fstatfs'
15448 d_fstatvfs='$d_fstatvfs'
15449 d_ftello='$d_ftello'
15450 d_ftime='$d_ftime'
15451 d_getcwd='$d_getcwd'
15452 d_getespwnam='$d_getespwnam'
15453 d_getfsstat='$d_getfsstat'
15454 d_getgrent='$d_getgrent'
15455 d_getgrps='$d_getgrps'
15456 d_gethbyaddr='$d_gethbyaddr'
15457 d_gethbyname='$d_gethbyname'
15458 d_gethent='$d_gethent'
15459 d_gethname='$d_gethname'
15460 d_gethostprotos='$d_gethostprotos'
15461 d_getlogin='$d_getlogin'
15462 d_getmnt='$d_getmnt'
15463 d_getmntent='$d_getmntent'
15464 d_getnbyaddr='$d_getnbyaddr'
15465 d_getnbyname='$d_getnbyname'
15466 d_getnent='$d_getnent'
15467 d_getnetprotos='$d_getnetprotos'
15468 d_getpbyname='$d_getpbyname'
15469 d_getpbynumber='$d_getpbynumber'
15470 d_getpent='$d_getpent'
15471 d_getpgid='$d_getpgid'
15472 d_getpgrp2='$d_getpgrp2'
15473 d_getpgrp='$d_getpgrp'
15474 d_getppid='$d_getppid'
15475 d_getprior='$d_getprior'
15476 d_getprotoprotos='$d_getprotoprotos'
15477 d_getprpwnam='$d_getprpwnam'
15478 d_getpwent='$d_getpwent'
15479 d_getsbyname='$d_getsbyname'
15480 d_getsbyport='$d_getsbyport'
15481 d_getsent='$d_getsent'
15482 d_getservprotos='$d_getservprotos'
15483 d_getspnam='$d_getspnam'
15484 d_gettimeod='$d_gettimeod'
15485 d_gnulibc='$d_gnulibc'
15486 d_grpasswd='$d_grpasswd'
15487 d_hasmntopt='$d_hasmntopt'
15488 d_htonl='$d_htonl'
15489 d_iconv='$d_iconv'
15490 d_index='$d_index'
15491 d_inetaton='$d_inetaton'
15492 d_int64_t='$d_int64_t'
15493 d_isascii='$d_isascii'
15494 d_isnan='$d_isnan'
15495 d_isnanl='$d_isnanl'
15496 d_killpg='$d_killpg'
15497 d_lchown='$d_lchown'
15498 d_ldbl_dig='$d_ldbl_dig'
15499 d_link='$d_link'
15500 d_locconv='$d_locconv'
15501 d_lockf='$d_lockf'
15502 d_longdbl='$d_longdbl'
15503 d_longlong='$d_longlong'
15504 d_lseekproto='$d_lseekproto'
15505 d_lstat='$d_lstat'
15506 d_madvise='$d_madvise'
15507 d_mblen='$d_mblen'
15508 d_mbstowcs='$d_mbstowcs'
15509 d_mbtowc='$d_mbtowc'
15510 d_memchr='$d_memchr'
15511 d_memcmp='$d_memcmp'
15512 d_memcpy='$d_memcpy'
15513 d_memmove='$d_memmove'
15514 d_memset='$d_memset'
15515 d_mkdir='$d_mkdir'
15516 d_mkdtemp='$d_mkdtemp'
15517 d_mkfifo='$d_mkfifo'
15518 d_mkstemp='$d_mkstemp'
15519 d_mkstemps='$d_mkstemps'
15520 d_mktime='$d_mktime'
15521 d_mmap='$d_mmap'
15522 d_modfl='$d_modfl'
15523 d_mprotect='$d_mprotect'
15524 d_msg='$d_msg'
15525 d_msg_ctrunc='$d_msg_ctrunc'
15526 d_msg_dontroute='$d_msg_dontroute'
15527 d_msg_oob='$d_msg_oob'
15528 d_msg_peek='$d_msg_peek'
15529 d_msg_proxy='$d_msg_proxy'
15530 d_msgctl='$d_msgctl'
15531 d_msgget='$d_msgget'
15532 d_msgrcv='$d_msgrcv'
15533 d_msgsnd='$d_msgsnd'
15534 d_msync='$d_msync'
15535 d_munmap='$d_munmap'
15536 d_mymalloc='$d_mymalloc'
15537 d_nice='$d_nice'
15538 d_nv_preserves_uv='$d_nv_preserves_uv'
15539 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15540 d_off64_t='$d_off64_t'
15541 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15542 d_oldpthreads='$d_oldpthreads'
15543 d_oldsock='$d_oldsock'
15544 d_open3='$d_open3'
15545 d_pathconf='$d_pathconf'
15546 d_pause='$d_pause'
15547 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15548 d_phostname='$d_phostname'
15549 d_pipe='$d_pipe'
15550 d_poll='$d_poll'
15551 d_portable='$d_portable'
15552 d_pthread_yield='$d_pthread_yield'
15553 d_pwage='$d_pwage'
15554 d_pwchange='$d_pwchange'
15555 d_pwclass='$d_pwclass'
15556 d_pwcomment='$d_pwcomment'
15557 d_pwexpire='$d_pwexpire'
15558 d_pwgecos='$d_pwgecos'
15559 d_pwpasswd='$d_pwpasswd'
15560 d_pwquota='$d_pwquota'
15561 d_qgcvt='$d_qgcvt'
15562 d_quad='$d_quad'
15563 d_readdir='$d_readdir'
15564 d_readlink='$d_readlink'
15565 d_rename='$d_rename'
15566 d_rewinddir='$d_rewinddir'
15567 d_rmdir='$d_rmdir'
15568 d_safebcpy='$d_safebcpy'
15569 d_safemcpy='$d_safemcpy'
15570 d_sanemcmp='$d_sanemcmp'
15571 d_sched_yield='$d_sched_yield'
15572 d_scm_rights='$d_scm_rights'
15573 d_seekdir='$d_seekdir'
15574 d_select='$d_select'
15575 d_sem='$d_sem'
15576 d_semctl='$d_semctl'
15577 d_semctl_semid_ds='$d_semctl_semid_ds'
15578 d_semctl_semun='$d_semctl_semun'
15579 d_semget='$d_semget'
15580 d_semop='$d_semop'
15581 d_setegid='$d_setegid'
15582 d_seteuid='$d_seteuid'
15583 d_setgrent='$d_setgrent'
15584 d_setgrps='$d_setgrps'
15585 d_sethent='$d_sethent'
15586 d_setlinebuf='$d_setlinebuf'
15587 d_setlocale='$d_setlocale'
15588 d_setnent='$d_setnent'
15589 d_setpent='$d_setpent'
15590 d_setpgid='$d_setpgid'
15591 d_setpgrp2='$d_setpgrp2'
15592 d_setpgrp='$d_setpgrp'
15593 d_setprior='$d_setprior'
15594 d_setproctitle='$d_setproctitle'
15595 d_setpwent='$d_setpwent'
15596 d_setregid='$d_setregid'
15597 d_setresgid='$d_setresgid'
15598 d_setresuid='$d_setresuid'
15599 d_setreuid='$d_setreuid'
15600 d_setrgid='$d_setrgid'
15601 d_setruid='$d_setruid'
15602 d_setsent='$d_setsent'
15603 d_setsid='$d_setsid'
15604 d_setvbuf='$d_setvbuf'
15605 d_sfio='$d_sfio'
15606 d_shm='$d_shm'
15607 d_shmat='$d_shmat'
15608 d_shmatprototype='$d_shmatprototype'
15609 d_shmctl='$d_shmctl'
15610 d_shmdt='$d_shmdt'
15611 d_shmget='$d_shmget'
15612 d_sigaction='$d_sigaction'
15613 d_sigsetjmp='$d_sigsetjmp'
15614 d_socket='$d_socket'
15615 d_socklen_t='$d_socklen_t'
15616 d_sockpair='$d_sockpair'
15617 d_sqrtl='$d_sqrtl'
15618 d_statblks='$d_statblks'
15619 d_statfs_f_flags='$d_statfs_f_flags'
15620 d_statfs_s='$d_statfs_s'
15621 d_statvfs='$d_statvfs'
15622 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15623 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15624 d_stdio_stream_array='$d_stdio_stream_array'
15625 d_stdiobase='$d_stdiobase'
15626 d_stdstdio='$d_stdstdio'
15627 d_strchr='$d_strchr'
15628 d_strcoll='$d_strcoll'
15629 d_strctcpy='$d_strctcpy'
15630 d_strerrm='$d_strerrm'
15631 d_strerror='$d_strerror'
15632 d_strtod='$d_strtod'
15633 d_strtol='$d_strtol'
15634 d_strtold='$d_strtold'
15635 d_strtoll='$d_strtoll'
15636 d_strtoul='$d_strtoul'
15637 d_strtoull='$d_strtoull'
15638 d_strtouq='$d_strtouq'
15639 d_strxfrm='$d_strxfrm'
15640 d_suidsafe='$d_suidsafe'
15641 d_symlink='$d_symlink'
15642 d_syscall='$d_syscall'
15643 d_sysconf='$d_sysconf'
15644 d_sysernlst='$d_sysernlst'
15645 d_syserrlst='$d_syserrlst'
15646 d_system='$d_system'
15647 d_tcgetpgrp='$d_tcgetpgrp'
15648 d_tcsetpgrp='$d_tcsetpgrp'
15649 d_telldir='$d_telldir'
15650 d_telldirproto='$d_telldirproto'
15651 d_time='$d_time'
15652 d_times='$d_times'
15653 d_truncate='$d_truncate'
15654 d_tzname='$d_tzname'
15655 d_umask='$d_umask'
15656 d_uname='$d_uname'
15657 d_union_semun='$d_union_semun'
15658 d_ustat='$d_ustat'
15659 d_vendorarch='$d_vendorarch'
15660 d_vendorbin='$d_vendorbin'
15661 d_vendorlib='$d_vendorlib'
15662 d_vfork='$d_vfork'
15663 d_void_closedir='$d_void_closedir'
15664 d_voidsig='$d_voidsig'
15665 d_voidtty='$d_voidtty'
15666 d_volatile='$d_volatile'
15667 d_vprintf='$d_vprintf'
15668 d_wait4='$d_wait4'
15669 d_waitpid='$d_waitpid'
15670 d_wcstombs='$d_wcstombs'
15671 d_wctomb='$d_wctomb'
15672 d_xenix='$d_xenix'
15673 date='$date'
15674 db_hashtype='$db_hashtype'
15675 db_prefixtype='$db_prefixtype'
15676 defvoidused='$defvoidused'
15677 direntrytype='$direntrytype'
15678 dlext='$dlext'
15679 dlsrc='$dlsrc'
15680 doublesize='$doublesize'
15681 drand01='$drand01'
15682 dynamic_ext='$dynamic_ext'
15683 eagain='$eagain'
15684 ebcdic='$ebcdic'
15685 echo='$echo'
15686 egrep='$egrep'
15687 emacs='$emacs'
15688 eunicefix='$eunicefix'
15689 exe_ext='$exe_ext'
15690 expr='$expr'
15691 extensions='$extensions'
15692 fflushNULL='$fflushNULL'
15693 fflushall='$fflushall'
15694 find='$find'
15695 firstmakefile='$firstmakefile'
15696 flex='$flex'
15697 fpossize='$fpossize'
15698 fpostype='$fpostype'
15699 freetype='$freetype'
15700 full_ar='$full_ar'
15701 full_csh='$full_csh'
15702 full_sed='$full_sed'
15703 gccosandvers='$gccosandvers'
15704 gccversion='$gccversion'
15705 gidformat='$gidformat'
15706 gidsign='$gidsign'
15707 gidsize='$gidsize'
15708 gidtype='$gidtype'
15709 glibpth='$glibpth'
15710 grep='$grep'
15711 groupcat='$groupcat'
15712 groupstype='$groupstype'
15713 gzip='$gzip'
15714 h_fcntl='$h_fcntl'
15715 h_sysfile='$h_sysfile'
15716 hint='$hint'
15717 hostcat='$hostcat'
15718 huge='$huge'
15719 i16size='$i16size'
15720 i16type='$i16type'
15721 i32size='$i32size'
15722 i32type='$i32type'
15723 i64size='$i64size'
15724 i64type='$i64type'
15725 i8size='$i8size'
15726 i8type='$i8type'
15727 i_arpainet='$i_arpainet'
15728 i_bsdioctl='$i_bsdioctl'
15729 i_db='$i_db'
15730 i_dbm='$i_dbm'
15731 i_dirent='$i_dirent'
15732 i_dld='$i_dld'
15733 i_dlfcn='$i_dlfcn'
15734 i_fcntl='$i_fcntl'
15735 i_float='$i_float'
15736 i_gdbm='$i_gdbm'
15737 i_grp='$i_grp'
15738 i_iconv='$i_iconv'
15739 i_ieeefp='$i_ieeefp'
15740 i_inttypes='$i_inttypes'
15741 i_libutil='$i_libutil'
15742 i_limits='$i_limits'
15743 i_locale='$i_locale'
15744 i_machcthr='$i_machcthr'
15745 i_malloc='$i_malloc'
15746 i_math='$i_math'
15747 i_memory='$i_memory'
15748 i_mntent='$i_mntent'
15749 i_ndbm='$i_ndbm'
15750 i_netdb='$i_netdb'
15751 i_neterrno='$i_neterrno'
15752 i_netinettcp='$i_netinettcp'
15753 i_niin='$i_niin'
15754 i_poll='$i_poll'
15755 i_prot='$i_prot'
15756 i_pthread='$i_pthread'
15757 i_pwd='$i_pwd'
15758 i_rpcsvcdbm='$i_rpcsvcdbm'
15759 i_sfio='$i_sfio'
15760 i_sgtty='$i_sgtty'
15761 i_shadow='$i_shadow'
15762 i_socks='$i_socks'
15763 i_stdarg='$i_stdarg'
15764 i_stddef='$i_stddef'
15765 i_stdlib='$i_stdlib'
15766 i_string='$i_string'
15767 i_sunmath='$i_sunmath'
15768 i_sysaccess='$i_sysaccess'
15769 i_sysdir='$i_sysdir'
15770 i_sysfile='$i_sysfile'
15771 i_sysfilio='$i_sysfilio'
15772 i_sysin='$i_sysin'
15773 i_sysioctl='$i_sysioctl'
15774 i_syslog='$i_syslog'
15775 i_sysmman='$i_sysmman'
15776 i_sysmode='$i_sysmode'
15777 i_sysmount='$i_sysmount'
15778 i_sysndir='$i_sysndir'
15779 i_sysparam='$i_sysparam'
15780 i_sysresrc='$i_sysresrc'
15781 i_syssecrt='$i_syssecrt'
15782 i_sysselct='$i_sysselct'
15783 i_syssockio='$i_syssockio'
15784 i_sysstat='$i_sysstat'
15785 i_sysstatfs='$i_sysstatfs'
15786 i_sysstatvfs='$i_sysstatvfs'
15787 i_systime='$i_systime'
15788 i_systimek='$i_systimek'
15789 i_systimes='$i_systimes'
15790 i_systypes='$i_systypes'
15791 i_sysuio='$i_sysuio'
15792 i_sysun='$i_sysun'
15793 i_sysutsname='$i_sysutsname'
15794 i_sysvfs='$i_sysvfs'
15795 i_syswait='$i_syswait'
15796 i_termio='$i_termio'
15797 i_termios='$i_termios'
15798 i_time='$i_time'
15799 i_unistd='$i_unistd'
15800 i_ustat='$i_ustat'
15801 i_utime='$i_utime'
15802 i_values='$i_values'
15803 i_varargs='$i_varargs'
15804 i_varhdr='$i_varhdr'
15805 i_vfork='$i_vfork'
15806 ignore_versioned_solibs='$ignore_versioned_solibs'
15807 inc_version_list='$inc_version_list'
15808 inc_version_list_init='$inc_version_list_init'
15809 incpath='$incpath'
15810 inews='$inews'
15811 installarchlib='$installarchlib'
15812 installbin='$installbin'
15813 installman1dir='$installman1dir'
15814 installman3dir='$installman3dir'
15815 installprefix='$installprefix'
15816 installprefixexp='$installprefixexp'
15817 installprivlib='$installprivlib'
15818 installscript='$installscript'
15819 installsitearch='$installsitearch'
15820 installsitebin='$installsitebin'
15821 installsitelib='$installsitelib'
15822 installstyle='$installstyle'
15823 installusrbinperl='$installusrbinperl'
15824 installvendorarch='$installvendorarch'
15825 installvendorbin='$installvendorbin'
15826 installvendorlib='$installvendorlib'
15827 intsize='$intsize'
15828 ivdformat='$ivdformat'
15829 ivsize='$ivsize'
15830 ivtype='$ivtype'
15831 known_extensions='$known_extensions'
15832 ksh='$ksh'
15833 large='$large'
15834 ld='$ld'
15835 lddlflags='$lddlflags'
15836 ldflags='$ldflags'
15837 ldflags_uselargefiles='$ldflags_uselargefiles'
15838 ldlibpthname='$ldlibpthname'
15839 less='$less'
15840 lib_ext='$lib_ext'
15841 libc='$libc'
15842 libperl='$libperl'
15843 libpth='$libpth'
15844 libs='$libs'
15845 libsdirs='$libsdirs'
15846 libsfiles='$libsfiles'
15847 libsfound='$libsfound'
15848 libspath='$libspath'
15849 libswanted='$libswanted'
15850 libswanted_uselargefiles='$libswanted_uselargefiles'
15851 line='$line'
15852 lint='$lint'
15853 lkflags='$lkflags'
15854 ln='$ln'
15855 lns='$lns'
15856 locincpth='$locincpth'
15857 loclibpth='$loclibpth'
15858 longdblsize='$longdblsize'
15859 longlongsize='$longlongsize'
15860 longsize='$longsize'
15861 lp='$lp'
15862 lpr='$lpr'
15863 ls='$ls'
15864 lseeksize='$lseeksize'
15865 lseektype='$lseektype'
15866 mail='$mail'
15867 mailx='$mailx'
15868 make='$make'
15869 make_set_make='$make_set_make'
15870 mallocobj='$mallocobj'
15871 mallocsrc='$mallocsrc'
15872 malloctype='$malloctype'
15873 man1dir='$man1dir'
15874 man1direxp='$man1direxp'
15875 man1ext='$man1ext'
15876 man3dir='$man3dir'
15877 man3direxp='$man3direxp'
15878 man3ext='$man3ext'
15879 medium='$medium'
15880 mips_type='$mips_type'
15881 mkdir='$mkdir'
15882 mmaptype='$mmaptype'
15883 models='$models'
15884 modetype='$modetype'
15885 more='$more'
15886 multiarch='$multiarch'
15887 mv='$mv'
15888 myarchname='$myarchname'
15889 mydomain='$mydomain'
15890 myhostname='$myhostname'
15891 myuname='$myuname'
15892 n='$n'
15893 netdb_hlen_type='$netdb_hlen_type'
15894 netdb_host_type='$netdb_host_type'
15895 netdb_name_type='$netdb_name_type'
15896 netdb_net_type='$netdb_net_type'
15897 nm='$nm'
15898 nm_opt='$nm_opt'
15899 nm_so_opt='$nm_so_opt'
15900 nonxs_ext='$nonxs_ext'
15901 nroff='$nroff'
15902 nvsize='$nvsize'
15903 nvtype='$nvtype'
15904 o_nonblock='$o_nonblock'
15905 obj_ext='$obj_ext'
15906 old_pthread_create_joinable='$old_pthread_create_joinable'
15907 optimize='$optimize'
15908 orderlib='$orderlib'
15909 osname='$osname'
15910 osvers='$osvers'
15911 otherlibdirs='$otherlibdirs'
15912 package='$package'
15913 pager='$pager'
15914 passcat='$passcat'
15915 patchlevel='$patchlevel'
15916 path_sep='$path_sep'
15917 perl5='$perl5'
15918 perl='$perl'
15919 perladmin='$perladmin'
15920 perlpath='$perlpath'
15921 pg='$pg'
15922 phostname='$phostname'
15923 pidtype='$pidtype'
15924 plibpth='$plibpth'
15925 pm_apiversion='$pm_apiversion'
15926 pmake='$pmake'
15927 pr='$pr'
15928 prefix='$prefix'
15929 prefixexp='$prefixexp'
15930 privlib='$privlib'
15931 privlibexp='$privlibexp'
15932 prototype='$prototype'
15933 ptrsize='$ptrsize'
15934 quadkind='$quadkind'
15935 quadtype='$quadtype'
15936 randbits='$randbits'
15937 randfunc='$randfunc'
15938 randseedtype='$randseedtype'
15939 ranlib='$ranlib'
15940 rd_nodata='$rd_nodata'
15941 revision='$revision'
15942 rm='$rm'
15943 rmail='$rmail'
15944 runnm='$runnm'
15945 sPRIEldbl='$sPRIEldbl'
15946 sPRIFldbl='$sPRIFldbl'
15947 sPRIGldbl='$sPRIGldbl'
15948 sPRIX64='$sPRIX64'
15949 sPRId64='$sPRId64'
15950 sPRIeldbl='$sPRIeldbl'
15951 sPRIfldbl='$sPRIfldbl'
15952 sPRIgldbl='$sPRIgldbl'
15953 sPRIi64='$sPRIi64'
15954 sPRIo64='$sPRIo64'
15955 sPRIu64='$sPRIu64'
15956 sPRIx64='$sPRIx64'
15957 sched_yield='$sched_yield'
15958 scriptdir='$scriptdir'
15959 scriptdirexp='$scriptdirexp'
15960 sed='$sed'
15961 seedfunc='$seedfunc'
15962 selectminbits='$selectminbits'
15963 selecttype='$selecttype'
15964 sendmail='$sendmail'
15965 sh='$sh'
15966 shar='$shar'
15967 sharpbang='$sharpbang'
15968 shmattype='$shmattype'
15969 shortsize='$shortsize'
15970 shrpenv='$shrpenv'
15971 shsharp='$shsharp'
15972 sig_count='$sig_count'
15973 sig_name='$sig_name'
15974 sig_name_init='$sig_name_init'
15975 sig_num='$sig_num'
15976 sig_num_init='$sig_num_init'
15977 signal_t='$signal_t'
15978 sitearch='$sitearch'
15979 sitearchexp='$sitearchexp'
15980 sitebin='$sitebin'
15981 sitebinexp='$sitebinexp'
15982 sitelib='$sitelib'
15983 sitelib_stem='$sitelib_stem'
15984 sitelibexp='$sitelibexp'
15985 siteprefix='$siteprefix'
15986 siteprefixexp='$siteprefixexp'
15987 sizesize='$sizesize'
15988 sizetype='$sizetype'
15989 sleep='$sleep'
15990 smail='$smail'
15991 small='$small'
15992 so='$so'
15993 sockethdr='$sockethdr'
15994 socketlib='$socketlib'
15995 socksizetype='$socksizetype'
15996 sort='$sort'
15997 spackage='$spackage'
15998 spitshell='$spitshell'
15999 split='$split'
16000 src='$src'
16001 ssizetype='$ssizetype'
16002 startperl='$startperl'
16003 startsh='$startsh'
16004 static_ext='$static_ext'
16005 stdchar='$stdchar'
16006 stdio_base='$stdio_base'
16007 stdio_bufsiz='$stdio_bufsiz'
16008 stdio_cnt='$stdio_cnt'
16009 stdio_filbuf='$stdio_filbuf'
16010 stdio_ptr='$stdio_ptr'
16011 stdio_stream_array='$stdio_stream_array'
16012 strings='$strings'
16013 submit='$submit'
16014 subversion='$subversion'
16015 sysman='$sysman'
16016 tail='$tail'
16017 tar='$tar'
16018 tbl='$tbl'
16019 tee='$tee'
16020 test='$test'
16021 timeincl='$timeincl'
16022 timetype='$timetype'
16023 touch='$touch'
16024 tr='$tr'
16025 trnl='$trnl'
16026 troff='$troff'
16027 u16size='$u16size'
16028 u16type='$u16type'
16029 u32size='$u32size'
16030 u32type='$u32type'
16031 u64size='$u64size'
16032 u64type='$u64type'
16033 u8size='$u8size'
16034 u8type='$u8type'
16035 uidformat='$uidformat'
16036 uidsign='$uidsign'
16037 uidsize='$uidsize'
16038 uidtype='$uidtype'
16039 uname='$uname'
16040 uniq='$uniq'
16041 uquadtype='$uquadtype'
16042 use5005threads='$use5005threads'
16043 use64bitall='$use64bitall'
16044 use64bitint='$use64bitint'
16045 usedl='$usedl'
16046 useithreads='$useithreads'
16047 uselargefiles='$uselargefiles'
16048 uselongdouble='$uselongdouble'
16049 usemorebits='$usemorebits'
16050 usemultiplicity='$usemultiplicity'
16051 usemymalloc='$usemymalloc'
16052 usenm='$usenm'
16053 useopcode='$useopcode'
16054 useperlio='$useperlio'
16055 useposix='$useposix'
16056 usesfio='$usesfio'
16057 useshrplib='$useshrplib'
16058 usesocks='$usesocks'
16059 usethreads='$usethreads'
16060 usevendorprefix='$usevendorprefix'
16061 usevfork='$usevfork'
16062 usrinc='$usrinc'
16063 uuname='$uuname'
16064 uvoformat='$uvoformat'
16065 uvsize='$uvsize'
16066 uvtype='$uvtype'
16067 uvuformat='$uvuformat'
16068 uvxformat='$uvxformat'
16069 vendorarch='$vendorarch'
16070 vendorarchexp='$vendorarchexp'
16071 vendorbin='$vendorbin'
16072 vendorbinexp='$vendorbinexp'
16073 vendorlib='$vendorlib'
16074 vendorlib_stem='$vendorlib_stem'
16075 vendorlibexp='$vendorlibexp'
16076 vendorprefix='$vendorprefix'
16077 vendorprefixexp='$vendorprefixexp'
16078 version='$version'
16079 vi='$vi'
16080 voidflags='$voidflags'
16081 xlibpth='$xlibpth'
16082 xs_apiversion='$xs_apiversion'
16083 zcat='$zcat'
16084 zip='$zip'
16085 EOT
16086
16087 : Add in command line options if available
16088 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16089
16090 : add special variables
16091 $test -f $src/patchlevel.h && \
16092 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16093 echo "CONFIGDOTSH=true" >>config.sh
16094
16095 : propagate old symbols
16096 if $test -f UU/config.sh; then
16097         <UU/config.sh sort | uniq >UU/oldconfig.sh
16098         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16099         sort | uniq -u >UU/oldsyms
16100         set X `cat UU/oldsyms`
16101         shift
16102         case $# in
16103         0) ;;
16104         *)
16105                 cat <<EOM
16106 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16107 EOM
16108                 echo "# Variables propagated from previous config.sh file." >>config.sh
16109                 for sym in `cat UU/oldsyms`; do
16110                         echo "    Propagating $hint variable "'$'"$sym..."
16111                         eval 'tmp="$'"${sym}"'"'
16112                         echo "$tmp" | \
16113                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16114                 done
16115                 ;;
16116         esac
16117 fi
16118
16119 : Finish up by extracting the .SH files
16120 case "$alldone" in
16121 exit)
16122         $rm -rf UU
16123         echo "Done."
16124         exit 0
16125         ;;
16126 cont)
16127         ;;
16128 '')
16129         dflt=''
16130         nostick=true
16131         $cat <<EOM
16132
16133 If you'd like to make any changes to the config.sh file before I begin
16134 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16135
16136 EOM
16137         rp="Press return or use a shell escape to edit config.sh:"
16138         . UU/myread
16139         nostick=''
16140         case "$ans" in
16141         '') ;;
16142         *) : in case they cannot read
16143                 sh 1>&4 -c "$ans";;
16144         esac
16145         ;;
16146 esac
16147
16148 : if this fails, just run all the .SH files by hand
16149 . ./config.sh
16150
16151 echo " "
16152 exec 1>&4
16153 . ./UU/extract
16154
16155 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16156         dflt=y
16157         case "$silent" in
16158         true) ;;
16159         *)
16160                 $cat <<EOM
16161
16162 Now you need to generate make dependencies by running "$make depend".
16163 You might prefer to run it in background: "$make depend > makedepend.out &"
16164 It can take a while, so you might not want to run it right now.
16165
16166 EOM
16167                 ;;
16168         esac
16169         rp="Run $make depend now?"
16170         . UU/myread
16171         case "$ans" in
16172         y*)
16173                 $make depend && echo "Now you must run a $make."
16174                 ;;
16175         *)
16176                 echo "You must run '$make depend' then '$make'."
16177                 ;;
16178         esac
16179 elif test -f [Mm]akefile; then
16180         echo " "
16181         echo "Now you must run a $make."
16182 else
16183         echo "Done."
16184 fi
16185
16186 if $test -f Policy.sh; then
16187     $cat <<EOM
16188
16189 If you compile $package on a different machine or from a different object
16190 directory, copy the Policy.sh file from this object directory to the
16191 new one before you run Configure -- this will help you with most of
16192 the policy defaults.
16193
16194 EOM
16195 fi
16196 if $test -f config.msg; then
16197     echo "Hmm.  I also noted the following information while running:"
16198     echo " "
16199     $cat config.msg >&4
16200     $rm -f config.msg
16201 fi
16202 $rm -f kit*isdone ark*isdone
16203 $rm -rf UU
16204
16205 : End of Configure
16206