a few doc typos
[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 Sun Nov 29 18:15:39 EET 1998 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by jhi@iki.fi)
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 case "$inksh/$needksh" in
112 /[a-z]*)
113                 ENV=''
114                 changesh=true
115                 reason="$needksh"
116         ;;
117 esac
118 case "$inksh/$avoidksh" in
119 true/[a-z]*)
120         changesh=true
121         reason="$avoidksh"
122         ;;
123 esac
124 case "$inksh/$needksh-$avoidksh-" in
125 true/--)
126                 cat <<EOM
127 (I see you are using the Korn shell.  Some ksh's blow up on $me,
128 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
129 EOM
130         ;;
131 esac
132 case "$changesh" in
133 true)
134         echo "(Feeding myself to $newsh $reason.)"
135         case "$0" in
136         Configure|*/Configure) exec $newsh $0 "$@";;
137         *) exec $newsh Configure "$@";;
138         esac
139         ;;
140 esac
141
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
144 case "$CDPATH" in
145 '')     ;;
146 *)      case "$SHELL" in
147         *bash*) CDPATH='.' ;;
148         *)              CDPATH='' ;;
149         esac
150         ;;
151 esac
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
154 cd UU && rm -f ./*
155
156 dynamic_ext=''
157 extensions=''
158 known_extensions=''
159 nonxs_ext=''
160 static_ext=''
161 useopcode=''
162 useposix=''
163 d_bsd=''
164 d_eunice=''
165 d_xenix=''
166 eunicefix=''
167 Mcc=''
168 ar=''
169 awk=''
170 bash=''
171 bison=''
172 byacc=''
173 cat=''
174 chgrp=''
175 chmod=''
176 chown=''
177 comm=''
178 compress=''
179 cp=''
180 cpio=''
181 cpp=''
182 csh=''
183 date=''
184 echo=''
185 egrep=''
186 emacs=''
187 expr=''
188 find=''
189 flex=''
190 grep=''
191 gzip=''
192 inews=''
193 ksh=''
194 less=''
195 line=''
196 lint=''
197 ln=''
198 lp=''
199 lpr=''
200 ls=''
201 mail=''
202 mailx=''
203 make=''
204 mkdir=''
205 more=''
206 mv=''
207 nm=''
208 nroff=''
209 perl=''
210 pg=''
211 pmake=''
212 pr=''
213 rm=''
214 rmail=''
215 sed=''
216 sendmail=''
217 shar=''
218 sleep=''
219 smail=''
220 sort=''
221 submit=''
222 tail=''
223 tar=''
224 tbl=''
225 tee=''
226 test=''
227 touch=''
228 tr=''
229 troff=''
230 uname=''
231 uniq=''
232 uuname=''
233 vi=''
234 zcat=''
235 zip=''
236 full_sed=''
237 libswanted=''
238 hint=''
239 myuname=''
240 osname=''
241 osvers=''
242 Author=''
243 Date=''
244 Header=''
245 Id=''
246 Locker=''
247 Log=''
248 RCSfile=''
249 Revision=''
250 Source=''
251 State=''
252 _a=''
253 _exe=''
254 _o=''
255 archobjs=''
256 exe_ext=''
257 firstmakefile=''
258 lib_ext=''
259 obj_ext=''
260 path_sep=''
261 afs=''
262 alignbytes=''
263 ansi2knr=''
264 archlib=''
265 archlibexp=''
266 d_archlib=''
267 installarchlib=''
268 archname=''
269 myarchname=''
270 baserev=''
271 bin=''
272 binexp=''
273 installbin=''
274 byteorder=''
275 cc=''
276 gccversion=''
277 ccflags=''
278 cppflags=''
279 ldflags=''
280 lkflags=''
281 locincpth=''
282 optimize=''
283 cf_email=''
284 cf_by=''
285 cf_time=''
286 contains=''
287 cpp_stuff=''
288 cpplast=''
289 cppminus=''
290 cpprun=''
291 cppstdin=''
292 d_access=''
293 d_accessx=''
294 d_alarm=''
295 d_attribut=''
296 d_bcmp=''
297 d_bcopy=''
298 d_bzero=''
299 d_casti32=''
300 castflags=''
301 d_castneg=''
302 d_chown=''
303 d_chroot=''
304 d_chsize=''
305 d_closedir=''
306 d_void_closedir=''
307 d_const=''
308 cryptlib=''
309 d_crypt=''
310 d_csh=''
311 full_csh=''
312 d_cuserid=''
313 d_dbl_dig=''
314 d_difftime=''
315 d_dlerror=''
316 d_dlopen=''
317 d_dlsymun=''
318 d_dosuid=''
319 d_suidsafe=''
320 d_drand48proto=''
321 d_dup2=''
322 d_eaccess=''
323 d_endgrent=''
324 d_endhent=''
325 d_endnent=''
326 d_endpent=''
327 d_endpwent=''
328 d_endsent=''
329 d_fchmod=''
330 d_fchown=''
331 d_fcntl=''
332 d_fd_macros=''
333 d_fd_set=''
334 d_fds_bits=''
335 d_fgetpos=''
336 d_flexfnam=''
337 d_flock=''
338 d_fork=''
339 d_fseeko=''
340 d_fsetpos=''
341 d_ftello=''
342 d_ftime=''
343 d_gettimeod=''
344 d_Gconvert=''
345 d_getgrent=''
346 d_getgrps=''
347 d_gethbyaddr=''
348 d_gethbyname=''
349 d_gethent=''
350 aphostname=''
351 d_gethname=''
352 d_phostname=''
353 d_uname=''
354 d_gethostprotos=''
355 d_getlogin=''
356 d_getnbyaddr=''
357 d_getnbyname=''
358 d_getnent=''
359 d_getnetprotos=''
360 d_getpent=''
361 d_getpgid=''
362 d_getpgrp2=''
363 d_bsdgetpgrp=''
364 d_getpgrp=''
365 d_getppid=''
366 d_getprior=''
367 d_getpbyname=''
368 d_getpbynumber=''
369 d_getprotoprotos=''
370 d_getpwent=''
371 d_getsent=''
372 d_getservprotos=''
373 d_getsbyname=''
374 d_getsbyport=''
375 d_gnulibc=''
376 d_htonl=''
377 d_inetaton=''
378 d_isascii=''
379 d_killpg=''
380 d_lchown=''
381 d_link=''
382 d_locconv=''
383 d_lockf=''
384 d_longdbl=''
385 longdblsize=''
386 d_longlong=''
387 longlongsize=''
388 d_lstat=''
389 d_mblen=''
390 d_mbstowcs=''
391 d_mbtowc=''
392 d_memcmp=''
393 d_memcpy=''
394 d_memmove=''
395 d_memset=''
396 d_mkdir=''
397 d_mkfifo=''
398 d_mktime=''
399 d_msg=''
400 d_msgctl=''
401 d_msgget=''
402 d_msgrcv=''
403 d_msgsnd=''
404 d_nice=''
405 d_open3=''
406 d_fpathconf=''
407 d_pathconf=''
408 d_pause=''
409 d_pipe=''
410 d_poll=''
411 d_portable=''
412 d_pthread_create_joinable=''
413 pthread_create_joinable=''
414 d_pthread_yield=''
415 d_sched_yield=''
416 sched_yield=''
417 d_readdir=''
418 d_rewinddir=''
419 d_seekdir=''
420 d_telldir=''
421 d_readlink=''
422 d_readv=''
423 d_rename=''
424 d_rmdir=''
425 d_safebcpy=''
426 d_safemcpy=''
427 d_sanemcmp=''
428 d_select=''
429 d_sem=''
430 d_semctl=''
431 d_semget=''
432 d_semop=''
433 d_setegid=''
434 d_seteuid=''
435 d_setgrent=''
436 d_setgrps=''
437 d_sethent=''
438 d_setlinebuf=''
439 d_setlocale=''
440 d_setnent=''
441 d_setpent=''
442 d_setpgid=''
443 d_setpgrp2=''
444 d_bsdsetpgrp=''
445 d_setpgrp=''
446 d_setprior=''
447 d_setpwent=''
448 d_setregid=''
449 d_setresgid=''
450 d_setresuid=''
451 d_setreuid=''
452 d_setrgid=''
453 d_setruid=''
454 d_setsent=''
455 d_setsid=''
456 d_setvbuf=''
457 d_sfio=''
458 usesfio=''
459 d_shm=''
460 d_shmat=''
461 d_shmatprototype=''
462 shmattype=''
463 d_shmctl=''
464 d_shmdt=''
465 d_shmget=''
466 d_sigaction=''
467 d_sigsetjmp=''
468 d_cmsghdr_s=''
469 d_msg_ctrunc=''
470 d_msg_dontroute=''
471 d_msg_oob=''
472 d_msg_peek=''
473 d_msg_proxy=''
474 d_msghdr_s=''
475 d_oldsock=''
476 d_recvmsg=''
477 d_scm_rights=''
478 d_sendmsg=''
479 d_socket=''
480 d_sockpair=''
481 sockethdr=''
482 socketlib=''
483 d_statblks=''
484 d_stdio_cnt_lval=''
485 d_stdio_ptr_lval=''
486 d_stdiobase=''
487 d_stdstdio=''
488 stdio_base=''
489 stdio_bufsiz=''
490 stdio_cnt=''
491 stdio_filbuf=''
492 stdio_ptr=''
493 d_index=''
494 d_strchr=''
495 d_strcoll=''
496 d_strctcpy=''
497 d_strerrm=''
498 d_strerror=''
499 d_sysernlst=''
500 d_syserrlst=''
501 d_strtod=''
502 d_strtol=''
503 d_strtoul=''
504 d_strxfrm=''
505 d_symlink=''
506 d_syscall=''
507 d_sysconf=''
508 d_system=''
509 d_tcgetpgrp=''
510 d_tcsetpgrp=''
511 d_time=''
512 timetype=''
513 clocktype=''
514 d_times=''
515 d_truncate=''
516 d_tzname=''
517 d_umask=''
518 d_semctl_semid_ds=''
519 d_semctl_semun=''
520 d_union_semun=''
521 d_vfork=''
522 usevfork=''
523 d_voidsig=''
524 signal_t=''
525 d_volatile=''
526 d_charvspr=''
527 d_vprintf=''
528 d_wait4=''
529 d_waitpid=''
530 d_wcstombs=''
531 d_wctomb=''
532 d_writev=''
533 d_dbmclose64=''
534 d_dbminit64=''
535 d_delete64=''
536 d_fetch64=''
537 d_firstkey64=''
538 d_nextkey64=''
539 d_store64=''
540 dlext=''
541 cccdlflags=''
542 ccdlflags=''
543 dlsrc=''
544 ld=''
545 lddlflags=''
546 usedl=''
547 doublesize=''
548 ebcdic=''
549 fpostype=''
550 gidtype=''
551 groupstype=''
552 h_fcntl=''
553 h_sysfile=''
554 i_arpainet=''
555 db_hashtype=''
556 db_prefixtype=''
557 i_db=''
558 i_dbm=''
559 i_rpcsvcdbm=''
560 d_dirnamlen=''
561 direntrytype=''
562 i_dirent=''
563 i_dld=''
564 i_dlfcn=''
565 i_fcntl=''
566 i_float=''
567 i_gdbm=''
568 d_grpasswd=''
569 i_grp=''
570 d_int64t=''
571 i_inttypes=''
572 i_limits=''
573 i_locale=''
574 i_machcthr=''
575 i_malloc=''
576 i_math=''
577 i_memory=''
578 i_ndbm=''
579 i_netdb=''
580 i_neterrno=''
581 i_niin=''
582 i_sysin=''
583 i_poll=''
584 d_pwage=''
585 d_pwchange=''
586 d_pwclass=''
587 d_pwcomment=''
588 d_pwexpire=''
589 d_pwgecos=''
590 d_pwpasswd=''
591 d_pwquota=''
592 i_pwd=''
593 i_sfio=''
594 i_stddef=''
595 i_stdlib=''
596 i_string=''
597 strings=''
598 i_sysaccess=''
599 i_sysdir=''
600 i_sysfile=''
601 d_voidtty=''
602 i_bsdioctl=''
603 i_sysfilio=''
604 i_sysioctl=''
605 i_syssockio=''
606 i_sysndir=''
607 i_sysparam=''
608 i_sysresrc=''
609 i_syssecrt=''
610 i_sysselct=''
611 i_sysstat=''
612 i_systimes=''
613 i_systypes=''
614 d_iovec_s=''
615 i_sysuio=''
616 i_sysun=''
617 i_syswait=''
618 i_sgtty=''
619 i_termio=''
620 i_termios=''
621 i_systime=''
622 i_systimek=''
623 i_time=''
624 timeincl=''
625 i_unistd=''
626 i_utime=''
627 i_values=''
628 i_stdarg=''
629 i_varargs=''
630 i_varhdr=''
631 i_vfork=''
632 intsize=''
633 longsize=''
634 shortsize=''
635 d_dirent64_s=''
636 d_flock64_s=''
637 d_fstat64=''
638 d_ftruncate64=''
639 d_ino64t=''
640 d_lockf64=''
641 d_lseek64=''
642 d_lstat64=''
643 d_off64t=''
644 d_open64=''
645 d_opendir64=''
646 d_readdir64=''
647 d_seekdir64=''
648 d_stat64=''
649 d_telldir64=''
650 d_truncate64=''
651 libc=''
652 libperl=''
653 shrpenv=''
654 useshrplib=''
655 glibpth=''
656 libpth=''
657 loclibpth=''
658 plibpth=''
659 xlibpth=''
660 ignore_versioned_solibs=''
661 libs=''
662 lns=''
663 lseeksize=''
664 lseektype=''
665 make_set_make=''
666 d_mymalloc=''
667 freetype=''
668 mallocobj=''
669 mallocsrc=''
670 malloctype=''
671 usemymalloc=''
672 installman1dir=''
673 man1dir=''
674 man1direxp=''
675 man1ext=''
676 installman3dir=''
677 man3dir=''
678 man3direxp=''
679 man3ext=''
680 huge=''
681 large=''
682 medium=''
683 models=''
684 small=''
685 split=''
686 modetype=''
687 mydomain=''
688 myhostname=''
689 phostname=''
690 c=''
691 n=''
692 d_eofnblk=''
693 eagain=''
694 o_nonblock=''
695 rd_nodata=''
696 netdb_hlen_type=''
697 netdb_host_type=''
698 netdb_name_type=''
699 netdb_net_type=''
700 groupcat=''
701 hostcat=''
702 passcat=''
703 orderlib=''
704 ranlib=''
705 package=''
706 spackage=''
707 pager=''
708 apiversion=''
709 patchlevel=''
710 subversion=''
711 version=''
712 perladmin=''
713 perlpath=''
714 pidtype=''
715 prefix=''
716 prefixexp=''
717 installprivlib=''
718 privlib=''
719 privlibexp=''
720 prototype=''
721 ptrsize=''
722 drand01=''
723 randbits=''
724 randfunc=''
725 randseedtype=''
726 seedfunc=''
727 installscript=''
728 scriptdir=''
729 scriptdirexp=''
730 selectminbits=''
731 selecttype=''
732 sh=''
733 sig_name=''
734 sig_name_init=''
735 sig_num=''
736 sig_num_init=''
737 installsitearch=''
738 sitearch=''
739 sitearchexp=''
740 installsitelib=''
741 sitelib=''
742 sitelibexp=''
743 sizetype=''
744 so=''
745 sharpbang=''
746 shsharp=''
747 spitshell=''
748 src=''
749 ssizetype=''
750 startperl=''
751 startsh=''
752 stdchar=''
753 d_fgetpos64=''
754 d_fopen64=''
755 d_freopen64=''
756 d_fseek64=''
757 d_fseeko64=''
758 d_fsetpos64=''
759 d_ftell64=''
760 d_ftello64=''
761 d_tmpfile64=''
762 sysman=''
763 trnl=''
764 uidtype=''
765 archname64=''
766 use64bits=''
767 usemultiplicity=''
768 nm_opt=''
769 nm_so_opt=''
770 runnm=''
771 usenm=''
772 useperlio=''
773 d_oldpthreads=''
774 usethreads=''
775 incpath=''
776 mips=''
777 mips_type=''
778 usrinc=''
779 defvoidused=''
780 voidflags=''
781 CONFIG=''
782
783 define='define'
784 undef='undef'
785 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
786 rmlist=''
787
788 : We must find out about Eunice early
789 eunicefix=':'
790 if test -f /etc/unixtovms; then
791         eunicefix=/etc/unixtovms
792 fi
793 if test -f /etc/unixtovms.exe; then
794         eunicefix=/etc/unixtovms.exe
795 fi
796
797 i_whoami=''
798 : change the next line if compiling for Xenix/286 on Xenix/386
799 xlibpth='/usr/lib/386 /lib/386'
800
801 : Possible local library directories to search.
802 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
803 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
804
805 : general looking path for locating libraries
806 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
807 glibpth="$glibpth /lib /usr/lib $xlibpth"
808 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
809 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
810
811 : Private path used by Configure to find libraries.  Its value
812 : is prepended to libpth. This variable takes care of special
813 : machines, like the mips.  Usually, it should be empty.
814 plibpth=''
815
816 : Possible local include directories to search.
817 : Set locincpth to "" in a hint file to defeat local include searches.
818 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
819 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
820 :
821 : no include file wanted by default
822 inclwanted=''
823
824 : list of known cpp symbols, sorted alphabetically
825 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
826 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
827 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
828 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
829 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
830 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
831 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
832 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
833 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
834 al="$al VMS Xenix286"
835 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
836 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
837 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
838 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
839 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
840 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
841 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
842 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
843 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
844 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
845 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
846 al="$al __SVR4_2__ __UMAXV__"
847 al="$al ____386BSD____ __alpha __alpha__ __amiga"
848 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
849 al="$al __host_mips__"
850 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
851 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
852 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
853 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
854 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
855 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
856 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
857 al="$al __mc88100 __mc88100__ __mips __mips__"
858 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
859 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
860 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
861 al="$al _host_mips _mips _unix"
862 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
863 al="$al apollo ardent att386 att3b"
864 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
865 al="$al cadmus clipper concurrent convex cray ctix"
866 al="$al dmert encore gcos gcx gimpel gould"
867 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
868 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
869 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
870 al="$al i186 i286 i386 i486 i8086"
871 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
872 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
873 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
874 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
875 al="$al mc88000 mc88100 merlin mert mips mvs n16"
876 al="$al ncl_el ncl_mr"
877 al="$al news1500 news1700 news1800 news1900 news3700"
878 al="$al news700 news800 news900 ns16000 ns32000"
879 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
880 al="$al parisc pc532 pdp11 plexus posix pyr"
881 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
882 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
883 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
884 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
885 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
886 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
887 al="$al xenix z8000"
888
889 : Trailing extension.  Override this in a hint file, if needed.
890 _exe=''
891 : Extra object files, if any, needed on this platform.
892 archobjs=''
893 groupstype=''
894 : default library list
895 libswanted=''
896 : some systems want to use only the non-versioned libso:s
897 ignore_versioned_solibs=''
898 : full support for void wanted by default
899 defvoidused=15
900
901 : set useposix=false in your hint file to disable the POSIX extension.
902 useposix=true
903 : set useopcode=false in your hint file to disable the Opcode extension.
904 useopcode=true
905 : set usemultiplicity on the Configure command line to enable multiplicity.
906 : set usethreads on the Configure command line to enable threads.
907 : List of libraries we want.
908 : If anyone needs -lnet, put it in a hint file.
909 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
910 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
911 libswanted="$libswanted ucb bsd BSD PW x"
912 : We probably want to search /usr/shlib before most other libraries.
913 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
914 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
915 glibpth="/usr/shlib $glibpth"
916 : Do not use vfork unless overridden by a hint file.
917 usevfork=false
918
919 : Find the basic shell for Bourne shell scripts
920 case "$sh" in
921 '')
922         case "$SYSTYPE" in
923         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
924         *) xxx='/bin/sh';;
925         esac
926         if test -f "$xxx"; then
927                 sh="$xxx"
928         else
929                 : Build up a list and do a single loop so we can 'break' out.
930                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
931                 for xxx in sh bash ksh pdksh ash; do
932                         for p in $pth; do
933                                 try="$try ${p}/${xxx}"
934                         done
935                 done
936                 for xxx in $try; do
937                         if test -f "$xxx"; then
938                                 sh="$xxx";
939                                 break
940                         elif test -f "$xxx.exe"; then
941                                 sh="$xxx";
942                                 break
943                         fi
944                 done
945         fi
946         ;;
947 esac
948
949 case "$sh" in
950 '')     cat <<EOM >&2
951 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
952
953 Usually it's in /bin/sh.  How did you even get this far?
954 Please contact me (Jarkko Hietaniemi) at jhi@iki.fi and 
955 we'll try to straighten this all out.
956 EOM
957         exit 1
958         ;;
959 esac
960
961 : see if sh knows # comments
962 if `$sh -c '#' >/dev/null 2>&1`; then
963         shsharp=true
964         spitshell=cat
965         xcat=/bin/cat
966         test -f $xcat || xcat=/usr/bin/cat
967         echo "#!$xcat" >try
968         $eunicefix try
969         chmod +x try
970         ./try > today
971         if test -s today; then
972                 sharpbang='#!'
973         else
974                 echo "#! $xcat" > try
975                 $eunicefix try
976                 chmod +x try
977                 ./try > today
978                 if test -s today; then
979                         sharpbang='#! '
980                 else
981                         sharpbang=': use '
982                 fi
983         fi
984 else
985         echo " "
986         echo "Your $sh doesn't grok # comments--I will strip them later on."
987         shsharp=false
988         cd ..
989         echo "exec grep -v '^[  ]*#'" >spitshell
990         chmod +x spitshell
991         $eunicefix spitshell
992         spitshell=`pwd`/spitshell
993         cd UU
994         echo "I presume that if # doesn't work, #! won't work either!"
995         sharpbang=': use '
996 fi
997 rm -f try today
998
999 : figure out how to guarantee sh startup
1000 case "$startsh" in
1001 '') startsh=${sharpbang}${sh} ;;
1002 *)
1003 esac
1004 cat >try <<EOSS
1005 $startsh
1006 set abc
1007 test "$?abc" != 1
1008 EOSS
1009
1010 chmod +x try
1011 $eunicefix try
1012 if ./try; then
1013         : echo "Yup, it does."
1014 else
1015         echo "Hmm... '$startsh' does not guarantee sh startup..."
1016         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1017 fi
1018 rm -f try
1019
1020
1021 : Save command line options in file UU/cmdline.opt for later use in
1022 : generating config.sh.
1023 cat > cmdline.opt <<EOSH
1024 # Configure command line arguments.
1025 config_arg0='$0'
1026 config_args='$*'
1027 config_argc=$#
1028 EOSH
1029 argn=1
1030 for arg in "$@"; do
1031         cat >>cmdline.opt <<EOSH
1032 config_arg$argn='$arg'
1033 EOSH
1034         argn=`expr $argn + 1`
1035 done
1036
1037 : produce awk script to parse command line options
1038 cat >options.awk <<'EOF'
1039 BEGIN {
1040         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1041
1042         len = length(optstr);
1043         for (i = 1; i <= len; i++) {
1044                 c = substr(optstr, i, 1);
1045                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1046                 if (a == ":") {
1047                         arg[c] = 1;
1048                         i++;
1049                 }
1050                 opt[c] = 1;
1051         }
1052 }
1053 {
1054         expect = 0;
1055         str = $0;
1056         if (substr(str, 1, 1) != "-") {
1057                 printf("'%s'\n", str);
1058                 next;
1059         }
1060         len = length($0);
1061         for (i = 2; i <= len; i++) {
1062                 c = substr(str, i, 1);
1063                 if (!opt[c]) {
1064                         printf("-%s\n", substr(str, i));
1065                         next;
1066                 }
1067                 printf("-%s\n", c);
1068                 if (arg[c]) {
1069                         if (i < len)
1070                                 printf("'%s'\n", substr(str, i + 1));
1071                         else
1072                                 expect = 1;
1073                         next;
1074                 }
1075         }
1076 }
1077 END {
1078         if (expect)
1079                 print "?";
1080 }
1081 EOF
1082
1083 : process the command line options
1084 set X `for arg in "$@"; do echo "X$arg"; done |
1085         sed -e s/X// | awk -f options.awk`
1086 eval "set $*"
1087 shift
1088 rm -f options.awk
1089
1090 : set up default values
1091 fastread=''
1092 reuseval=false
1093 config_sh=''
1094 alldone=''
1095 error=''
1096 silent=''
1097 extractsh=''
1098 override=''
1099 knowitall=''
1100 rm -f optdef.sh
1101 cat >optdef.sh <<EOS
1102 $startsh
1103 EOS
1104
1105
1106 : option parsing
1107 while test $# -gt 0; do
1108         case "$1" in
1109         -d) shift; fastread=yes;;
1110         -e) shift; alldone=cont;;
1111         -f)
1112                 shift
1113                 cd ..
1114                 if test -r "$1"; then
1115                         config_sh="$1"
1116                 else
1117                         echo "$me: cannot read config file $1." >&2
1118                         error=true
1119                 fi
1120                 cd UU
1121                 shift;;
1122         -h) shift; error=true;;
1123         -r) shift; reuseval=true;;
1124         -s) shift; silent=true; realsilent=true;;
1125         -E) shift; alldone=exit;;
1126         -K) shift; knowitall=true;;
1127         -O) shift; override=true;;
1128         -S) shift; silent=true; extractsh=true;;
1129         -D)
1130                 shift
1131                 case "$1" in
1132                 *=)
1133                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1134                         echo "$me: ignoring -D $1" >&2
1135                         ;;
1136                 *=*) echo "$1" | \
1137                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1138                 *) echo "$1='define'" >> optdef.sh;;
1139                 esac
1140                 shift
1141                 ;;
1142         -U)
1143                 shift
1144                 case "$1" in
1145                 *=) echo "$1" >> optdef.sh;;
1146                 *=*)
1147                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1148                         echo "$me: ignoring -U $1" >&2
1149                         ;;
1150                 *) echo "$1='undef'" >> optdef.sh;;
1151                 esac
1152                 shift
1153                 ;;
1154         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1155                 exit 0;;
1156         --) break;;
1157         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1158         *) break;;
1159         esac
1160 done
1161
1162 case "$error" in
1163 true)
1164         cat >&2 <<EOM
1165 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1166                  [-U symbol] [-U symbol=]
1167   -d : use defaults for all answers.
1168   -e : go on without questioning past the production of config.sh.
1169   -f : specify an alternate default configuration file.
1170   -h : print this help message and exit (with an error status).
1171   -r : reuse C symbols value if possible (skips costly nm extraction).
1172   -s : silent mode, only echoes questions and essential information.
1173   -D : define symbol to have some value:
1174          -D symbol         symbol gets the value 'define'
1175          -D symbol=value   symbol gets the value 'value'
1176   -E : stop at the end of questions, after having produced config.sh.
1177   -K : do not use unless you know what you are doing.
1178   -O : let -D and -U override definitions from loaded configuration file.
1179   -S : perform variable substitutions on all .SH files (can mix with -f)
1180   -U : undefine symbol:
1181          -U symbol    symbol gets the value 'undef'
1182          -U symbol=   symbol gets completely empty
1183   -V : print version number and exit (with a zero status).
1184 EOM
1185         exit 1
1186         ;;
1187 esac
1188
1189 : Sanity checks
1190 case "$fastread$alldone" in
1191 yescont|yesexit) ;;
1192 *)
1193         if test ! -t 0; then
1194                 echo "Say 'sh Configure', not 'sh <Configure'"
1195                 exit 1
1196         fi
1197         ;;
1198 esac
1199
1200 exec 4>&1
1201 case "$silent" in
1202 true) exec 1>/dev/null;;
1203 esac
1204
1205 : run the defines and the undefines, if any, but leave the file out there...
1206 touch optdef.sh
1207 . ./optdef.sh
1208
1209 : set package name
1210 package=perl5
1211 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1212 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1213 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1214 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1215 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1216 esac
1217
1218 : Some greps do not return status, grrr.
1219 echo "grimblepritz" >grimble
1220 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1221         contains=contains
1222 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1223         contains=grep
1224 else
1225         contains=contains
1226 fi
1227 rm -f grimble
1228 : the following should work in any shell
1229 case "$contains" in
1230 contains*)
1231         echo " "
1232         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1233         cat >contains <<'EOSS'
1234 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1235 EOSS
1236 chmod +x contains
1237 esac
1238
1239 : Find the path to the source tree
1240 case "$src" in
1241 '') case "$0" in
1242     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1243     *)   src='.';;
1244     esac;;
1245 esac
1246 case "$src" in
1247 '')     src=/
1248         rsrc=/
1249         ;;
1250 /*) rsrc="$src";;
1251 *) rsrc="../$src";;
1252 esac
1253 if test -f $rsrc/Configure && \
1254         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1255 then
1256    : found it, so we are ok.
1257 else
1258         rsrc=''
1259         for src in . .. ../.. ../../.. ../../../..; do
1260                 if test -f ../$src/Configure && \
1261                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1262                 then
1263                         rsrc=../$src
1264                         break
1265                 fi
1266         done
1267 fi
1268 case "$rsrc" in
1269 '')
1270         cat <<EOM >&4
1271
1272 Sorry, I can't seem to locate the source dir for $package.  Please start
1273 Configure with an explicit path -- i.e. /some/path/Configure.
1274
1275 EOM
1276         exit 1
1277         ;;
1278 ../.)   rsrc='..';;
1279 *)
1280         echo " "
1281         echo "Sources for $package found in \"$src\"." >&4
1282         ;;
1283 esac
1284
1285 : script used to extract .SH files with variable substitutions
1286 cat >extract <<'EOS'
1287 CONFIG=true
1288 echo "Doing variable substitutions on .SH files..."
1289 if test -f $src/MANIFEST; then
1290         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1291 else
1292         echo "(Looking for .SH files under the source directory.)"
1293         set x `(cd $src; find . -name "*.SH" -print)`
1294 fi
1295 shift
1296 case $# in
1297 0) set x `(cd $src; echo *.SH)`; shift;;
1298 esac
1299 if test ! -f $src/$1; then
1300         shift
1301 fi
1302 mkdir_p='
1303 name=$1;
1304 create="";
1305 while test $name; do
1306         if test ! -d "$name"; then
1307                 create="$name $create";
1308                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1309                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1310         else
1311                 name="";
1312         fi;
1313 done;
1314 for file in $create; do
1315         mkdir $file;
1316 done
1317 '
1318 for file in $*; do
1319         case "$src" in
1320         ".")
1321                 case "$file" in
1322                 */*)
1323                         dir=`expr X$file : 'X\(.*\)/'`
1324                         file=`expr X$file : 'X.*/\(.*\)'`
1325                         (cd $dir && . ./$file)
1326                         ;;
1327                 *)
1328                         . ./$file
1329                         ;;
1330                 esac
1331                 ;;
1332         *)
1333                 case "$file" in
1334                 */*)
1335                         dir=`expr X$file : 'X\(.*\)/'`
1336                         file=`expr X$file : 'X.*/\(.*\)'`
1337                         (set x $dir; shift; eval $mkdir_p)
1338                         sh <$src/$dir/$file
1339                         ;;
1340                 *)
1341                         sh <$src/$file
1342                         ;;
1343                 esac
1344                 ;;
1345         esac
1346 done
1347 if test -f $src/config_h.SH; then
1348         if test ! -f config.h; then
1349         : oops, they left it out of MANIFEST, probably, so do it anyway.
1350         . $src/config_h.SH
1351         fi
1352 fi
1353 EOS
1354
1355 : extract files and exit if asked to do so
1356 case "$extractsh" in
1357 true)
1358         case "$realsilent" in
1359         true) ;;
1360         *) exec 1>&4;;
1361         esac
1362         case "$config_sh" in
1363         '') config_sh='config.sh';;
1364         esac
1365         echo " "
1366         echo "Fetching answers from $config_sh..."
1367         cd ..
1368         . $config_sh
1369         test "$override" && . ./optdef.sh
1370         echo " "
1371         . UU/extract
1372         rm -rf UU
1373         echo "Done."
1374         exit 0
1375         ;;
1376 esac
1377
1378 : Eunice requires " " instead of "", can you believe it
1379 echo " "
1380 : Here we go...
1381 echo "Beginning of configuration questions for $package."
1382
1383 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1384
1385 : first determine how to suppress newline on echo command
1386 echo " "
1387 echo "Checking echo to see how to suppress newlines..."
1388 (echo "hi there\c" ; echo " ") >.echotmp
1389 if $contains c .echotmp >/dev/null 2>&1 ; then
1390         echo "...using -n."
1391         n='-n'
1392         c=''
1393 else
1394         cat <<'EOM'
1395 ...using \c
1396 EOM
1397         n=''
1398         c='\c'
1399 fi
1400 echo $n "The star should be here-->$c"
1401 echo '*'
1402 rm -f .echotmp
1403
1404 : Now test for existence of everything in MANIFEST
1405 echo " "
1406 if test -f $rsrc/MANIFEST; then
1407         echo "First let's make sure your kit is complete.  Checking..." >&4
1408         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1409         rm -f missing
1410         tmppwd=`pwd`
1411         for filelist in x??; do
1412                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1413         done
1414         if test -s missing; then
1415                 cat missing >&4
1416                 cat >&4 <<'EOM'
1417
1418 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1419
1420 You have the option of continuing the configuration process, despite the
1421 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1422 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1423 and contact the author (jhi@iki.fi).
1424
1425 EOM
1426                 echo $n "Continue? [n] $c" >&4
1427                 read ans
1428                 case "$ans" in
1429                 y*)
1430                         echo "Continuing..." >&4
1431                         rm -f missing
1432                         ;;
1433                 *)
1434                         echo "ABORTING..." >&4
1435                         kill $$
1436                         ;;
1437                 esac
1438         else
1439                 echo "Looks good..."
1440         fi
1441 else
1442         echo "There is no MANIFEST file.  I hope your kit is complete !"
1443 fi
1444 rm -f missing x??
1445
1446 echo " "
1447 : Find the appropriate value for a newline for tr
1448 if test -n "$DJGPP"; then
1449        trnl='\012'
1450 fi
1451 if test X"$trnl" = X; then
1452         case "`echo foo|tr '\n' x 2>/dev/null`" in
1453         foox) trnl='\n' ;;
1454         esac
1455 fi
1456 if test X"$trnl" = X; then
1457         case "`echo foo|tr '\012' x 2>/dev/null`" in
1458         foox) trnl='\012' ;;
1459         esac
1460 fi
1461 if test X"$trnl" = X; then
1462         cat <<EOM >&2
1463
1464 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1465
1466 EOM
1467         exit 1
1468 fi
1469
1470 : compute the number of columns on the terminal for proper question formatting
1471 case "$COLUMNS" in
1472 '') COLUMNS='80';;
1473 esac
1474
1475 : set up the echo used in my read
1476 myecho="case \"\$xxxm\" in
1477 '') echo $n \"\$rp $c\" >&4;;
1478 *) case \"\$rp\" in
1479         '') echo $n \"[\$xxxm] $c\";;
1480         *)
1481                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1482                         echo \"\$rp\" >&4
1483                         echo $n \"[\$xxxm] $c\" >&4
1484                 else
1485                         echo $n \"\$rp [\$xxxm] $c\" >&4
1486                 fi
1487                 ;;
1488         esac;;
1489 esac"
1490
1491 : now set up to do reads with possible shell escape and default assignment
1492 cat <<EOSC >myread
1493 $startsh
1494 xxxm=\$dflt
1495 $myecho
1496 ans='!'
1497 case "\$fastread" in
1498 yes) case "\$dflt" in
1499         '') ;;
1500         *) ans='';
1501                 case "\$silent-\$rp" in
1502                 true-) ;;
1503                 *) echo " " >&4;;
1504                 esac;;
1505         esac;;
1506 *) case "\$silent" in
1507         true) case "\$rp" in
1508                 '') ans='';;
1509                 esac;;
1510         esac;;
1511 esac
1512 while expr "X\$ans" : "X!" >/dev/null; do
1513         read answ
1514         set x \$xxxm
1515         shift
1516         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1517         case  "\$answ" in
1518         "!")
1519                 sh 1>&4
1520                 echo " "
1521                 $myecho
1522                 ;;
1523         !*)
1524                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1525                 shift
1526                 sh 1>&4 -c "\$*"
1527                 echo " "
1528                 $myecho
1529                 ;;
1530         "\$ans")
1531                 case "\$ans" in
1532                 \\&*)
1533                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1534                         shift
1535                         case "\$1" in
1536                         -d)
1537                                 fastread=yes
1538                                 echo "(OK, I'll run with -d after this question.)" >&4
1539                                 ;;
1540                         -*)
1541                                 echo "*** Sorry, \$1 not supported yet." >&4
1542                                 ;;
1543                         esac
1544                         $myecho
1545                         ans=!
1546                         ;;
1547                 esac;;
1548         *)
1549                 case "\$aok" in
1550                 y)
1551                         echo "*** Substitution done -- please confirm."
1552                         xxxm="\$ans"
1553                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1554                         xxxm="\$ans"
1555                         ans=!
1556                         ;;
1557                 *)
1558                         echo "*** Error -- try again."
1559                         ans=!
1560                         ;;
1561                 esac
1562                 $myecho
1563                 ;;
1564         esac
1565         case "\$ans\$xxxm\$nostick" in
1566         '')
1567                 ans=!
1568                 $myecho
1569                 ;;
1570         esac
1571 done
1572 case "\$ans" in
1573 '') ans="\$xxxm";;
1574 esac
1575 EOSC
1576
1577 : create .config dir to save info across Configure sessions
1578 test -d ../.config || mkdir ../.config
1579 cat >../.config/README <<EOF
1580 This directory created by Configure to save information that should
1581 persist across sessions for $package.
1582
1583 You may safely delete it if you wish.
1584 EOF
1585
1586 : general instructions
1587 needman=true
1588 firsttime=true
1589 user=`(logname) 2>/dev/null`
1590 case "$user" in
1591 '') user=`whoami 2>&1`;;
1592 esac
1593 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1594         firsttime=false
1595         echo " "
1596         rp='Would you like to see the instructions?'
1597         dflt=n
1598         . ./myread
1599         case "$ans" in
1600         [yY]*) ;;
1601         *) needman=false;;
1602         esac
1603 fi
1604 if $needman; then
1605         cat <<EOH
1606
1607 This installation shell script will examine your system and ask you questions
1608 to determine how the perl5 package should be installed. If you get
1609 stuck on a question, you may use a ! shell escape to start a subshell or
1610 execute a command.  Many of the questions will have default answers in square
1611 brackets; typing carriage return will give you the default.
1612
1613 On some of the questions which ask for file or directory names you are allowed
1614 to use the ~name construct to specify the login directory belonging to "name",
1615 even if you don't have a shell which knows about that.  Questions where this is
1616 allowed will be marked "(~name ok)".
1617
1618 EOH
1619         rp=''
1620         dflt='Type carriage return to continue'
1621         . ./myread
1622         cat <<'EOH'
1623
1624 The prompter used in this script allows you to use shell variables and
1625 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1626 in the default answer, as if the default line was a set of arguments given to a
1627 script shell.  This means you may also use $* to repeat the whole default line,
1628 so you do not have to re-type everything to add something to the default.
1629
1630 Everytime there is a substitution, you will have to confirm.  If there is an
1631 error (e.g. an unmatched backtick), the default answer will remain unchanged
1632 and you will be prompted again.
1633
1634 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1635 the questions and use the computed defaults (or the previous answers if there
1636 was already a config.sh file). Type 'Configure -h' for a list of options.
1637 You may also start interactively and then answer '& -d' at any prompt to turn
1638 on the non-interactive behaviour for the remainder of the execution.
1639
1640 EOH
1641         . ./myread
1642         cat <<EOH
1643
1644 Much effort has been expended to ensure that this shell script will run on any
1645 Unix system.  If despite that it blows up on yours, your best bet is to edit
1646 Configure and run it again.  If you can't run Configure for some reason,
1647 you'll have to generate a config.sh file by hand.  Whatever problems you
1648 have, let me (jhi@iki.fi) know how I blew it.
1649
1650 This installation script affects things in two ways:
1651
1652 1) it may do direct variable substitutions on some of the files included
1653    in this kit.
1654 2) it builds a config.h file for inclusion in C programs.  You may edit
1655    any of these files as the need arises after running this script.
1656
1657 If you make a mistake on a question, there is no easy way to back up to it
1658 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1659 files.  Configure will offer to let you do this before it runs the SH files.
1660
1661 EOH
1662         dflt='Type carriage return to continue'
1663         . ./myread
1664         case "$firsttime" in
1665         true) echo $user >>../.config/instruct;;
1666         esac
1667 fi
1668
1669 : find out where common programs are
1670 echo " "
1671 echo "Locating common programs..." >&4
1672 cat <<EOSC >loc
1673 $startsh
1674 case \$# in
1675 0) exit 1;;
1676 esac
1677 thing=\$1
1678 shift
1679 dflt=\$1
1680 shift
1681 for dir in \$*; do
1682         case "\$thing" in
1683         .)
1684         if test -d \$dir/\$thing; then
1685                 echo \$dir
1686                 exit 0
1687         fi
1688         ;;
1689         *)
1690         for thisthing in \$dir/\$thing; do
1691                 : just loop through to pick last item
1692         done
1693         if test -f \$thisthing; then
1694                 echo \$thisthing
1695                 exit 0
1696         elif test -f \$dir/\$thing.exe; then
1697                 if test -n "$DJGPP"; then
1698                         echo \$dir/\$thing.exe
1699                 else
1700                         : on Eunice apparently
1701                         echo \$dir/\$thing
1702                 fi
1703                 exit 0
1704         fi
1705         ;;
1706         esac
1707 done
1708 echo \$dflt
1709 exit 1
1710 EOSC
1711 chmod +x loc
1712 $eunicefix loc
1713 loclist="
1714 awk
1715 cat
1716 comm
1717 cp
1718 echo
1719 expr
1720 grep
1721 ls
1722 make
1723 mkdir
1724 rm
1725 sed
1726 sort
1727 touch
1728 tr
1729 uniq
1730 "
1731 trylist="
1732 Mcc
1733 ar
1734 byacc
1735 cpp
1736 csh
1737 date
1738 egrep
1739 gzip
1740 less
1741 ln
1742 more
1743 nm
1744 nroff
1745 pg
1746 tee
1747 test
1748 uname
1749 zip
1750 "
1751 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1752 pth="$pth /lib /usr/lib"
1753 for file in $loclist; do
1754         eval xxx=\$$file
1755         case "$xxx" in
1756         /*|?:[\\/]*)
1757                 if test -f "$xxx"; then
1758                         : ok
1759                 else
1760                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1761                         xxx=`./loc $file $file $pth`
1762                 fi
1763                 ;;
1764         '') xxx=`./loc $file $file $pth`;;
1765         *) xxx=`./loc $xxx $xxx $pth`;;
1766         esac
1767         eval $file=$xxx
1768         eval _$file=$xxx
1769         case "$xxx" in
1770         /*)
1771                 echo $file is in $xxx.
1772                 ;;
1773         ?:[\\/]*)
1774                 echo $file is in $xxx.
1775                 ;;
1776         *)
1777                 echo "I don't know where '$file' is, and my life depends on it." >&4
1778                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1779                 exit 1
1780                 ;;
1781         esac
1782 done
1783 echo " "
1784 echo "Don't worry if any of the following aren't found..."
1785 say=offhand
1786 for file in $trylist; do
1787         eval xxx=\$$file
1788         case "$xxx" in
1789         /*|?:[\\/]*)
1790                 if test -f "$xxx"; then
1791                         : ok
1792                 else
1793                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1794                         xxx=`./loc $file $file $pth`
1795                 fi
1796                 ;;
1797         '') xxx=`./loc $file $file $pth`;;
1798         *) xxx=`./loc $xxx $xxx $pth`;;
1799         esac
1800         eval $file=$xxx
1801         eval _$file=$xxx
1802         case "$xxx" in
1803         /*)
1804                 echo $file is in $xxx.
1805                 ;;
1806         ?:[\\/]*)
1807                 echo $file is in $xxx.
1808                 ;;
1809         *)
1810                 echo "I don't see $file out there, $say."
1811                 say=either
1812                 ;;
1813         esac
1814 done
1815 case "$egrep" in
1816 egrep)
1817         echo "Substituting grep for egrep."
1818         egrep=$grep
1819         ;;
1820 esac
1821 case "$ln" in
1822 ln)
1823         echo "Substituting cp for ln."
1824         ln=$cp
1825         ;;
1826 esac
1827 case "$test" in
1828 test)
1829         echo "Hopefully test is built into your sh."
1830         ;;
1831 *)
1832         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1833                 echo "Using the test built into your sh."
1834                 test=test
1835                 _test=test
1836         fi
1837         ;;
1838 esac
1839 case "$echo" in
1840 echo)
1841         echo "Hopefully echo is built into your sh."
1842         ;;
1843 '') ;;
1844 *)
1845         echo " "
1846 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1847         $echo $n "hi there$c" >foo1
1848         echo $n "hi there$c" >foo2
1849         if cmp foo1 foo2 >/dev/null 2>&1; then
1850                 echo "They are compatible.  In fact, they may be identical."
1851         else
1852                 case "$n" in
1853                 '-n') n='' c='\c';;
1854                 *) n='-n' c='';;
1855                 esac
1856                 cat <<FOO
1857 They are not compatible!  You are probably running ksh on a non-USG system.
1858 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1859 have echo built in and we may have to run some Bourne shell scripts.  That
1860 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1861
1862 FOO
1863                 $echo $n "The star should be here-->$c"
1864                 $echo "*"
1865         fi
1866         $rm -f foo1 foo2
1867         ;;
1868 esac
1869
1870 : determine whether symbolic links are supported
1871 echo " "
1872 $touch blurfl
1873 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1874         echo "Symbolic links are supported." >&4
1875         lns="$ln -s"
1876 else
1877         echo "Symbolic links are NOT supported." >&4
1878         lns="$ln"
1879 fi
1880 $rm -f blurfl sym
1881
1882 : see whether [:lower:] and [:upper:] are supported character classes
1883 echo " "
1884 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1885 ABYZ)
1886         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1887         up='[:upper:]'
1888         low='[:lower:]'
1889         ;;
1890 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1891         # (0xc9 and 0xd1), therefore that is a nice testing point.
1892         if test "X$up" = X -o "X$low" = X; then
1893             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1894             ij) up='[A-Z]'
1895                 low='[a-z]'
1896                 ;;
1897             esac
1898         fi
1899         if test "X$up" = X -o "X$low" = X; then
1900             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1901             ij) up='A-Z'
1902                 low='a-z'
1903                 ;;
1904             esac
1905         fi
1906         if test "X$up" = X -o "X$low" = X; then
1907             case "`echo IJ | od -x 2>/dev/null`" in
1908             *C9D1*|*c9d1*)
1909                 echo "Hey, this might be EBCDIC." >&4
1910                 if test "X$up" = X -o "X$low" = X; then
1911                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1912                     ij) up='[A-IJ-RS-Z]'
1913                         low='[a-ij-rs-z]'
1914                         ;;
1915                     esac
1916                 fi
1917                 if test "X$up" = X -o "X$low" = X; then
1918                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1919                     ij) up='A-IJ-RS-Z'
1920                         low='a-ij-rs-z'
1921                         ;;
1922                     esac
1923                 fi
1924                 ;;
1925             esac
1926         fi
1927 esac
1928 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1929 ij)
1930     echo "Using $up and $low to convert case." >&4
1931     ;;
1932 *)
1933     echo "I don't know how to translate letters from upper to lower case." >&4
1934     echo "Your tr is not acting any way I know of." >&4
1935     exit 1
1936     ;;
1937 esac
1938 : set up the translation script tr, must be called with ./tr of course
1939 cat >tr <<EOSC
1940 $startsh
1941 case "\$1\$2" in
1942 '[A-Z][a-z]') exec $tr '$up' '$low';;
1943 '[a-z][A-Z]') exec $tr '$low' '$up';;
1944 esac
1945 exec $tr "\$@"
1946 EOSC
1947 chmod +x tr
1948 $eunicefix tr
1949
1950 : Try to determine whether config.sh was made on this system
1951 case "$config_sh" in
1952 '')
1953 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1954 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1955 # because the A-Z/a-z are not consecutive.
1956 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1957         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1958 newmyuname="$myuname"
1959 dflt=n
1960 case "$knowitall" in
1961 '')
1962         if test -f ../config.sh; then
1963                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1964                         eval "`grep myuname= ../config.sh`"
1965                 fi
1966                 if test "X$myuname" = "X$newmyuname"; then
1967                         dflt=y
1968                 fi
1969         fi
1970         ;;
1971 *) dflt=y;;
1972 esac
1973
1974 : Get old answers from old config file if Configure was run on the
1975 : same system, otherwise use the hints.
1976 hint=default
1977 cd ..
1978 if test -f config.sh; then
1979         echo " "
1980         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1981         . UU/myread
1982         case "$ans" in
1983         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1984         *)  echo "Fetching default answers from your old config.sh file..." >&4
1985                 tmp_n="$n"
1986                 tmp_c="$c"
1987                 tmp_sh="$sh"
1988                 . ./config.sh
1989                 cp config.sh UU
1990                 n="$tmp_n"
1991                 c="$tmp_c"
1992                 : Older versions did not always set $sh.  Catch re-use of such
1993                 : an old config.sh.
1994                 case "$sh" in
1995                 '') sh="$tmp_sh" ;;
1996                 esac
1997                 hint=previous
1998                 ;;
1999         esac
2000 fi
2001 if test ! -f config.sh; then
2002         $cat <<EOM
2003
2004 First time through, eh?  I have some defaults handy for some systems
2005 that need some extra help getting the Configure answers right:
2006
2007 EOM
2008         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2009         dflt=''
2010         : Half the following guesses are probably wrong... If you have better
2011         : tests or hints, please send them to jhi@iki.fi
2012         : The metaconfig authors would also appreciate a copy...
2013         $test -f /irix && osname=irix
2014         $test -f /xenix && osname=sco_xenix
2015         $test -f /dynix && osname=dynix
2016         $test -f /dnix && osname=dnix
2017         $test -f /lynx.os && osname=lynxos
2018         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2019         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2020         $test -f /bin/mips && /bin/mips && osname=mips
2021         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2022                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2023         $test -d /usr/apollo/bin && osname=apollo
2024         $test -f /etc/saf/_sactab && osname=svr4
2025         $test -d /usr/include/minix && osname=minix
2026         if $test -d /MachTen -o -d /MachTen_Folder; then
2027                 osname=machten
2028                 if $test -x /sbin/version; then
2029                         osvers=`/sbin/version | $awk '{print $2}' |
2030                         $sed -e 's/[A-Za-z]$//'`
2031                 elif $test -x /usr/etc/version; then
2032                         osvers=`/usr/etc/version | $awk '{print $2}' |
2033                         $sed -e 's/[A-Za-z]$//'`
2034                 else
2035                         osvers="$2.$3"
2036                 fi
2037         fi
2038        $test -f /sys/posix.dll &&
2039                $test -f /usr/bin/what &&
2040                set X `/usr/bin/what /sys/posix.dll` &&
2041                $test "$3" = UWIN &&
2042                osname=uwin &&
2043                osvers="$5"
2044         if $test -f $uname; then
2045                 set X $myuname
2046                 shift
2047
2048                 case "$5" in
2049                 fps*) osname=fps ;;
2050                 mips*)
2051                         case "$4" in
2052                         umips) osname=umips ;;
2053                         *) osname=mips ;;
2054                         esac;;
2055                 [23]100) osname=mips ;;
2056                 next*) osname=next ;;
2057                 i386*)
2058                         if $test -f /etc/kconfig; then
2059                                 osname=isc
2060                                 if test "$lns" = "ln -s"; then
2061                                         osvers=4
2062                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2063                                         osvers=3
2064                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2065                                         osvers=2
2066                                 fi
2067                         fi
2068                         ;;
2069                 pc*)
2070                         if test -n "$DJGPP"; then
2071                                 osname=dos
2072                                 osvers=djgpp
2073                         fi
2074                         ;;
2075                 esac
2076
2077                 case "$1" in
2078                 aix) osname=aix
2079                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2080                         case "$tmp" in
2081                         'not found') osvers="$4"."$3" ;;
2082                         '<3240'|'<>3240') osvers=3.2.0 ;;
2083                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2084                         '=3250'|'>3250') osvers=3.2.5 ;;
2085                         *) osvers=$tmp;;
2086                         esac
2087                         ;;
2088                 *dc.osx) osname=dcosx
2089                         osvers="$3"
2090                         ;;
2091                 dnix) osname=dnix
2092                         osvers="$3"
2093                         ;;
2094                 domainos) osname=apollo
2095                         osvers="$3"
2096                         ;;
2097                 dgux) osname=dgux 
2098                         osvers="$3"
2099                         ;;
2100                 dynixptx*) osname=dynixptx
2101                         osvers=`echo "$4"|sed 's/^v//'`
2102                         ;;
2103                 freebsd) osname=freebsd 
2104                         osvers="$3" ;;
2105                 genix) osname=genix ;;
2106                 hp*) osname=hpux 
2107                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2108                         ;;
2109                 irix*) osname=irix
2110                         case "$3" in
2111                         4*) osvers=4 ;;
2112                         5*) osvers=5 ;;
2113                         *)      osvers="$3" ;;
2114                         esac
2115                         ;;
2116                 linux) osname=linux
2117                         case "$3" in
2118                         *)      osvers="$3" ;;
2119                         esac
2120                         ;;
2121                 MiNT) osname=mint
2122                         ;;
2123                 netbsd*) osname=netbsd
2124                         osvers="$3"
2125                         ;;
2126                 news-os) osvers="$3"
2127                         case "$3" in
2128                         4*) osname=newsos4 ;;
2129                         *) osname=newsos ;;
2130                         esac
2131                         ;;
2132                 bsd386) osname=bsd386
2133                         osvers=`$uname -r`
2134                         ;;
2135                 POSIX-BC | posix-bc ) osname=posix-bc
2136                         osvers="$3"
2137                         ;;
2138                 powerux | power_ux | powermax_os | powermaxos | \
2139                 powerunix | power_unix) osname=powerux
2140                         osvers="$3"
2141                         ;;
2142                 next*) osname=next ;;
2143                 solaris) osname=solaris
2144                         case "$3" in
2145                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2146                         *)      osvers="$3" ;;
2147                         esac
2148                         ;;
2149                 sunos) osname=sunos
2150                         case "$3" in
2151                         5*) osname=solaris
2152                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2153                         *)      osvers="$3" ;;
2154                         esac
2155                         ;;
2156                 titanos) osname=titanos
2157                         case "$3" in
2158                         1*) osvers=1 ;;
2159                         2*) osvers=2 ;;
2160                         3*) osvers=3 ;;
2161                         4*) osvers=4 ;;
2162                         *)      osvers="$3" ;;
2163                         esac
2164                         ;;
2165                 ultrix) osname=ultrix
2166                         osvers="$3"
2167                         ;;
2168                 osf1|mls+)      case "$5" in
2169                                 alpha)
2170                                         osname=dec_osf
2171                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2172                                         ;;
2173                         hp*)    osname=hp_osf1  ;;
2174                         mips)   osname=mips_osf1 ;;
2175                         esac
2176                         ;;
2177                 uts) osname=uts 
2178                         osvers="$3"
2179                         ;;
2180                 qnx) osname=qnx
2181                         osvers="$4"
2182                         ;;
2183                 $2) case "$osname" in
2184                         *isc*) ;;
2185                         *freebsd*) ;;
2186                         svr*)
2187                                 : svr4.x or possibly later
2188                                 case "svr$3" in 
2189                                 ${osname}*)
2190                                         osname=svr$3
2191                                         osvers=$4
2192                                         ;;
2193                                 esac
2194                                 case "$osname" in
2195                                 svr4.0)
2196                                         : Check for ESIX
2197                                         if test -f /stand/boot ; then
2198                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2199                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2200                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2201                                                         if test -n "$isesix"; then
2202                                                                 osname=esix4
2203                                                         fi
2204                                                 fi
2205                                         fi
2206                                         ;;
2207                                 esac
2208                                 ;;
2209                         *)      if test -f /etc/systemid; then
2210                                         osname=sco
2211                                         set `echo $3 | $sed 's/\./ /g'` $4
2212                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2213                                                 osvers=$1.$2.$3
2214                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2215                                                 osvers=$1.$2
2216                                         elif $test -f $src/hints/sco_$1.sh; then
2217                                                 osvers=$1
2218                                         fi
2219                                 else
2220                                         case "$osname" in
2221                                         '') : Still unknown.  Probably a generic Sys V.
2222                                                 osname="sysv"
2223                                                 osvers="$3"
2224                                                 ;;
2225                                         esac
2226                                 fi
2227                                 ;;
2228                         esac
2229                         ;;
2230                 *)      case "$osname" in
2231                         '') : Still unknown.  Probably a generic BSD.
2232                                 osname="$1"
2233                                 osvers="$3"
2234                                 ;;
2235                         esac
2236                         ;;
2237                 esac
2238         else
2239                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2240                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2241                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2242                                 osname=news_os
2243                         fi
2244                         $rm -f UU/kernel.what
2245                 elif test -d c:/.; then
2246                         set X $myuname
2247                         osname=os2
2248                         osvers="$5"
2249                 fi
2250         fi
2251         
2252         : Now look for a hint file osname_osvers, unless one has been
2253         : specified already.
2254         case "$hintfile" in
2255         ''|' ')
2256                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2257                 : Also try without trailing minor version numbers.
2258                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2259                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2260                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2261                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2262                 case "$file" in
2263                 '') dflt=none ;;
2264                 *)  case "$osvers" in
2265                         '') dflt=$file
2266                                 ;;
2267                         *)  if $test -f $src/hints/$file.sh ; then
2268                                         dflt=$file
2269                                 elif $test -f $src/hints/$xfile.sh ; then
2270                                         dflt=$xfile
2271                                 elif $test -f $src/hints/$xxfile.sh ; then
2272                                         dflt=$xxfile
2273                                 elif $test -f $src/hints/$xxxfile.sh ; then
2274                                         dflt=$xxxfile
2275                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2276                                         dflt=$xxxxfile
2277                                 elif $test -f "$src/hints/${osname}.sh" ; then
2278                                         dflt="${osname}"
2279                                 else
2280                                         dflt=none
2281                                 fi
2282                                 ;;
2283                         esac
2284                         ;;
2285                 esac
2286                 if $test -f Policy.sh ; then
2287                         case "$dflt" in
2288                         *Policy*) ;;
2289                         none) dflt="Policy" ;;
2290                         *) dflt="Policy $dflt" ;;
2291                         esac
2292                 fi
2293                 ;;
2294         *)
2295                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2296                 ;;
2297         esac
2298
2299         if $test -f Policy.sh ; then
2300                 $cat <<EOM
2301
2302 There's also a Policy hint file available, which should make the
2303 site-specific (policy) questions easier to answer.
2304 EOM
2305
2306         fi
2307
2308         $cat <<EOM
2309
2310 You may give one or more space-separated answers, or "none" if appropriate.
2311 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2312 is a good thing.  DO NOT give a wrong version.
2313
2314 EOM
2315
2316         rp="Which of these apply, if any?"
2317         . UU/myread
2318         tans=$ans
2319         for file in $tans; do
2320                 if $test X$file = XPolicy -a -f Policy.sh; then
2321                         . Policy.sh
2322                         $cat Policy.sh >> UU/config.sh
2323                 elif $test -f $src/hints/$file.sh; then
2324                         . $src/hints/$file.sh
2325                         $cat $src/hints/$file.sh >> UU/config.sh
2326                 elif $test X$tans = X -o X$tans = Xnone ; then
2327                         : nothing
2328                 else
2329                         : Give one chance to correct a possible typo.
2330                         echo "$file.sh does not exist"
2331                         dflt=$file
2332                         rp="hint to use instead?"
2333                         . UU/myread
2334                         for file in $ans; do
2335                                 if $test -f "$src/hints/$file.sh"; then
2336                                         . $src/hints/$file.sh
2337                                         $cat $src/hints/$file.sh >> UU/config.sh
2338                                 elif $test X$ans = X -o X$ans = Xnone ; then
2339                                         : nothing
2340                                 else
2341                                         echo "$file.sh does not exist -- ignored."
2342                                 fi
2343                         done
2344                 fi
2345         done
2346
2347         hint=recommended
2348         : Remember our hint file for later.
2349         if $test -f "$src/hints/$file.sh" ; then
2350                 hintfile="$file"
2351         else
2352                 hintfile=''
2353         fi
2354 fi
2355 cd UU
2356 ;;
2357 *)
2358         echo " "
2359         echo "Fetching default answers from $config_sh..." >&4
2360         tmp_n="$n"
2361         tmp_c="$c"
2362         cd ..
2363         cp $config_sh config.sh 2>/dev/null
2364         chmod +w config.sh
2365         . ./config.sh
2366         cd UU
2367         cp ../config.sh .
2368         n="$tmp_n"
2369         c="$tmp_c"
2370         hint=previous
2371         ;;
2372 esac
2373 test "$override" && . ./optdef.sh
2374 myuname="$newmyuname"
2375
2376 : Restore computed paths
2377 for file in $loclist $trylist; do
2378         eval $file="\$_$file"
2379 done
2380
2381 cat << EOM
2382
2383 Configure uses the operating system name and version to set some defaults.
2384 The default value is probably right if the name rings a bell. Otherwise,
2385 since spelling matters for me, either accept the default or answer "none"
2386 to leave it blank.
2387
2388 EOM
2389 case "$osname" in
2390         ''|' ')
2391                 case "$hintfile" in
2392                 ''|' '|none) dflt=none ;;
2393                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2394                 esac
2395                 ;;
2396         *) dflt="$osname" ;;
2397 esac
2398 rp="Operating system name?"
2399 . ./myread
2400 case "$ans" in
2401 none)  osname='' ;;
2402 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2403 esac
2404 echo " "
2405 case "$osvers" in
2406         ''|' ')
2407                 case "$hintfile" in
2408                 ''|' '|none) dflt=none ;;
2409                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2410                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2411                         case "$dflt" in
2412                         ''|' ') dflt=none ;;
2413                         esac
2414                         ;;
2415                 esac
2416                 ;;
2417         *) dflt="$osvers" ;;
2418 esac
2419 rp="Operating system version?"
2420 . ./myread
2421 case "$ans" in
2422 none)  osvers='' ;;
2423 *) osvers="$ans" ;;
2424 esac
2425
2426 : who configured the system
2427 cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1`
2428 cf_by=`(logname) 2>/dev/null`
2429 case "$cf_by" in
2430 "")
2431         cf_by=`(whoami) 2>/dev/null`
2432         case "$cf_by" in
2433         "") cf_by=unknown ;;
2434         esac ;;
2435 esac
2436
2437 : set up the script used to warn in case of inconsistency
2438 cat <<EOS >whoa
2439 $startsh
2440 EOS
2441 cat <<'EOSC' >>whoa
2442 dflt=y
2443 echo " "
2444 echo "*** WHOA THERE!!! ***" >&4
2445 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2446 rp="    Keep the $hint value?"
2447 . ./myread
2448 case "$ans" in
2449 y) td=$was; tu=$was;;
2450 esac
2451 EOSC
2452
2453 : function used to set $1 to $val
2454 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2455 case "$val$was" in
2456 $define$undef) . ./whoa; eval "$var=\$td";;
2457 $undef$define) . ./whoa; eval "$var=\$tu";;
2458 *) eval "$var=$val";;
2459 esac'
2460
2461 cat <<EOM
2462
2463 Perl can be built to take advantage of threads, on some systems.
2464 To do so, Configure must be run with -Dusethreads.
2465 (See README.threads for details.)
2466 EOM
2467 case "$usethreads" in
2468 $define|true|[yY]*)     dflt='y';;
2469 *) dflt='n';;
2470 esac
2471 rp='Build a threading Perl?'
2472 . ./myread
2473 case "$ans" in
2474 y|Y)    val="$define" ;;     
2475 *)      val="$undef" ;;
2476 esac
2477 set usethreads
2478 eval $setvar 
2479 : Look for a hint-file generated 'call-back-unit'.  Now that the
2480 : user has specified if a threading perl is to be built, we may need 
2481 : to set or change some other defaults.
2482 if $test -f usethreads.cbu; then
2483     . ./usethreads.cbu
2484 fi
2485 case "$d_oldpthreads" in
2486 '')     : Configure tests would be welcome here.  For now, assume undef.
2487         val="$undef" ;;
2488 *)      val="$d_oldpthreads" ;;
2489 esac
2490 set d_oldpthreads
2491 eval $setvar
2492
2493 cat <<EOM
2494
2495 Perl can be built so that multiple Perl interpreters can coexist
2496 within the same Perl executable.  To do so, Configure must be run with
2497 -Dusemultiplicity.
2498
2499 Normally you do not need this and you should answer no.
2500
2501 EOM
2502 case "$usemultiplicity" in
2503 $define|true|[yY]*)     dflt='y';;
2504 *) dflt='n';;
2505 esac
2506 rp='Build Perl for multiplicity?'
2507 . ./myread
2508 case "$ans" in
2509 y|Y)    val="$define" ;;     
2510 *)      val="$undef" ;;
2511 esac
2512 set usemultiplicity
2513 eval $setvar 
2514
2515 cat <<EOM
2516
2517 Perl can be built to take advantage of explicit 64-bit interfaces,
2518 on some systems.  To do so, Configure must be run with -Duse64bits.
2519
2520 If this doesn't make any sense to you, just accept the default 'n'.
2521 EOM
2522 case "$use64bits" in
2523 $define|true|[yY]*)     dflt='y';;
2524 *) dflt='n';;
2525 esac
2526 rp='Try to use explicit 64-bit interfaces, if available?'
2527 . ./myread
2528 case "$ans" in
2529 y|Y) 
2530         val="$define"
2531         ;;     
2532 *)      
2533         val="$undef"
2534         ;;
2535 esac
2536 set use64bits
2537 eval $setvar
2538
2539 archname64=''
2540
2541 : determine the architecture name
2542 echo " "
2543 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2544         tarch=`arch`"-$osname"
2545 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2546         if uname -m > tmparch 2>&1 ; then
2547                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2548                         -e 's/$/'"-$osname/" tmparch`
2549         else
2550                 tarch="$osname"
2551         fi
2552         $rm -f tmparch
2553 else
2554         tarch="$osname"
2555 fi
2556 case "$myarchname" in
2557 ''|"$tarch") ;;
2558 *)
2559         echo "(Your architecture name used to be $myarchname.)"
2560         archname=''
2561         ;;
2562 esac
2563 myarchname="$tarch"
2564 case "$archname" in
2565 '') dflt="$tarch";;
2566 *) dflt="$archname";;
2567 esac
2568 rp='What is your architecture name'
2569 . ./myread
2570 archname="$ans"
2571 case "$usethreads" in
2572 $define)
2573         echo "Threads selected." >&4
2574         case "$archname" in
2575         *-thread*) echo "...and architecture name already has -thread." >&4
2576                 ;;
2577         *)      archname="$archname-thread"
2578                 echo "...setting architecture name to $archname." >&4
2579                 ;;
2580         esac
2581         ;;
2582 esac
2583 case "$usemultiplicity" in
2584 $define)
2585         echo "Multiplicity selected." >&4
2586         case "$archname" in
2587         *-multi*) echo "...and architecture name already has -multi." >&4
2588                 ;;
2589         *)      archname="$archname-multi"
2590                 echo "...setting architecture name to $archname." >&4
2591                 ;;
2592         esac
2593         ;;
2594 esac
2595 case "$use64bits" in
2596 $define)
2597         echo "Explicit 64-bitness selected." >&4
2598         case "$archname64" in
2599         '')
2600                 ;;
2601         *)
2602                 case "$archname" in
2603                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2604                         ;;
2605                 *)      archname="$archname-$archname64"
2606                         echo "...setting architecture name to $archname." >&4
2607                         ;;
2608                 esac
2609                 ;;
2610         esac
2611 esac
2612
2613 : is AFS running?
2614 echo " "
2615 case "$afs" in
2616 $define|true)   afs=true ;;
2617 $undef|false)   afs=false ;;
2618 *)      if test -d /afs; then
2619                 afs=true
2620         else
2621                 afs=false
2622         fi
2623         ;;
2624 esac
2625 if $afs; then
2626         echo "AFS may be running... I'll be extra cautious then..." >&4
2627 else
2628         echo "AFS does not seem to be running..." >&4
2629 fi
2630
2631 : decide how portable to be.  Allow command line overrides.
2632 case "$d_portable" in
2633 "$undef") ;;
2634 *)      d_portable="$define" ;;
2635 esac
2636
2637 : set up shell script to do ~ expansion
2638 cat >filexp <<EOSS
2639 $startsh
2640 : expand filename
2641 case "\$1" in
2642  ~/*|~)
2643         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2644         ;;
2645  ~*)
2646         if $test -f /bin/csh; then
2647                 /bin/csh -f -c "glob \$1"
2648                 failed=\$?
2649                 echo ""
2650                 exit \$failed
2651         else
2652                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2653                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2654                 if $test ! -d "\$dir"; then
2655                         me=\`basename \$0\`
2656                         echo "\$me: can't locate home directory for: \$name" >&2
2657                         exit 1
2658                 fi
2659                 case "\$1" in
2660                 */*)
2661                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2662                         ;;
2663                 *)
2664                         echo \$dir
2665                         ;;
2666                 esac
2667         fi
2668         ;;
2669 *)
2670         echo \$1
2671         ;;
2672 esac
2673 EOSS
2674 chmod +x filexp
2675 $eunicefix filexp
2676
2677 : now set up to get a file name
2678 cat <<EOS >getfile
2679 $startsh
2680 EOS
2681 cat <<'EOSC' >>getfile
2682 tilde=''
2683 fullpath=''
2684 already=''
2685 skip=''
2686 none_ok=''
2687 exp_file=''
2688 nopath_ok=''
2689 orig_rp="$rp"
2690 orig_dflt="$dflt"
2691
2692 case "$fn" in
2693 *\(*)
2694         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2695         fn=`echo $fn | sed 's/(.*)//'`
2696         ;;
2697 esac
2698
2699 case "$fn" in
2700 *:*)
2701         loc_file=`expr $fn : '.*:\(.*\)'`
2702         fn=`expr $fn : '\(.*\):.*'`
2703         ;;
2704 esac
2705
2706 case "$fn" in
2707 *~*) tilde=true;;
2708 esac
2709 case "$fn" in
2710 */*) fullpath=true;;
2711 esac
2712 case "$fn" in
2713 *+*) skip=true;;
2714 esac
2715 case "$fn" in
2716 *n*) none_ok=true;;
2717 esac
2718 case "$fn" in
2719 *e*) exp_file=true;;
2720 esac
2721 case "$fn" in
2722 *p*) nopath_ok=true;;
2723 esac
2724
2725 case "$fn" in
2726 *f*) type='File';;
2727 *d*) type='Directory';;
2728 *l*) type='Locate';;
2729 esac
2730
2731 what="$type"
2732 case "$what" in
2733 Locate) what='File';;
2734 esac
2735
2736 case "$exp_file" in
2737 '')
2738         case "$d_portable" in
2739         "$define") ;;
2740         *) exp_file=true;;
2741         esac
2742         ;;
2743 esac
2744
2745 cd ..
2746 while test "$type"; do
2747         redo=''
2748         rp="$orig_rp"
2749         dflt="$orig_dflt"
2750         case "$tilde" in
2751         true) rp="$rp (~name ok)";;
2752         esac
2753         . UU/myread
2754         if test -f UU/getfile.ok && \
2755                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2756         then
2757                 value="$ans"
2758                 ansexp="$ans"
2759                 break
2760         fi
2761         case "$ans" in
2762         none)
2763                 value=''
2764                 ansexp=''
2765                 case "$none_ok" in
2766                 true) type='';;
2767                 esac
2768                 ;;
2769         *)
2770                 case "$tilde" in
2771                 '') value="$ans"
2772                         ansexp="$ans";;
2773                 *)
2774                         value=`UU/filexp $ans`
2775                         case $? in
2776                         0)
2777                                 if test "$ans" != "$value"; then
2778                                         echo "(That expands to $value on this system.)"
2779                                 fi
2780                                 ;;
2781                         *) value="$ans";;
2782                         esac
2783                         ansexp="$value"
2784                         case "$exp_file" in
2785                         '') value="$ans";;
2786                         esac
2787                         ;;
2788                 esac
2789                 case "$fullpath" in
2790                 true)
2791                         case "$ansexp" in
2792                         /*) value="$ansexp" ;;
2793                         *)
2794                                 redo=true
2795                                 case "$already" in
2796                                 true)
2797                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2798                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2799                                         ;;
2800                                 *)
2801                                 echo "Please give a full path name, starting with slash." >&4
2802                                         case "$tilde" in
2803                                         true)
2804                                 echo "Note that using ~name is ok provided it expands well." >&4
2805                                                 already=true
2806                                                 ;;
2807                                         esac
2808                                 esac
2809                                 ;;
2810                         esac
2811                         ;;
2812                 esac
2813                 case "$redo" in
2814                 '')
2815                         case "$type" in
2816                         File)
2817                                 if test -f "$ansexp"; then
2818                                         type=''
2819                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2820                                 then
2821                                         echo "($value is not a plain file, but that's ok.)"
2822                                         type=''
2823                                 fi
2824                                 ;;
2825                         Directory)
2826                                 if test -d "$ansexp"; then
2827                                         type=''
2828                                 fi
2829                                 ;;
2830                         Locate)
2831                                 if test -d "$ansexp"; then
2832                                         echo "(Looking for $loc_file in directory $value.)"
2833                                         value="$value/$loc_file"
2834                                         ansexp="$ansexp/$loc_file"
2835                                 fi
2836                                 if test -f "$ansexp"; then
2837                                         type=''
2838                                 fi
2839                                 case "$nopath_ok" in
2840                                 true)   case "$value" in
2841                                         */*) ;;
2842                                         *)      echo "Assuming $value will be in people's path."
2843                                                 type=''
2844                                                 ;;
2845                                         esac
2846                                         ;;
2847                                 esac
2848                                 ;;
2849                         esac
2850
2851                         case "$skip" in
2852                         true) type='';
2853                         esac
2854
2855                         case "$type" in
2856                         '') ;;
2857                         *)
2858                                 if test "$fastread" = yes; then
2859                                         dflt=y
2860                                 else
2861                                         dflt=n
2862                                 fi
2863                                 rp="$what $value doesn't exist.  Use that name anyway?"
2864                                 . UU/myread
2865                                 dflt=''
2866                                 case "$ans" in
2867                                 y*) type='';;
2868                                 *) echo " ";;
2869                                 esac
2870                                 ;;
2871                         esac
2872                         ;;
2873                 esac
2874                 ;;
2875         esac
2876 done
2877 cd UU
2878 ans="$value"
2879 rp="$orig_rp"
2880 dflt="$orig_dflt"
2881 rm -f getfile.ok
2882 EOSC
2883
2884 : determine root of directory hierarchy where package will be installed.
2885 case "$prefix" in
2886 '')
2887         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2888         ;;
2889 *)
2890         dflt="$prefix"
2891         ;;
2892 esac
2893 $cat <<EOM
2894
2895 By default, $package will be installed in $dflt/bin, manual
2896 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2897 all installation directories. Typically set to /usr/local, but you
2898 may choose /usr if you wish to install $package among your system
2899 binaries. If you wish to have binaries under /bin but manual pages
2900 under /usr/local/man, that's ok: you will be prompted separately
2901 for each of the installation directories, the prefix being only used
2902 to set the defaults.
2903
2904 EOM
2905 fn=d~
2906 rp='Installation prefix to use?'
2907 . ./getfile
2908 oldprefix=''
2909 case "$prefix" in
2910 '') ;;
2911 *)
2912         case "$ans" in
2913         "$prefix") ;;
2914         *) oldprefix="$prefix";;
2915         esac
2916         ;;
2917 esac
2918 prefix="$ans"
2919 prefixexp="$ansexp"
2920
2921 : set the prefixit variable, to compute a suitable default value
2922 prefixit='case "$3" in
2923 ""|none)
2924         case "$oldprefix" in
2925         "") eval "$1=\"\$$2\"";;
2926         *)
2927                 case "$3" in
2928                 "") eval "$1=";;
2929                 none)
2930                         eval "tp=\"\$$2\"";
2931                         case "$tp" in
2932                         ""|" ") eval "$1=\"\$$2\"";;
2933                         *) eval "$1=";;
2934                         esac;;
2935                 esac;;
2936         esac;;
2937 *)
2938         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2939         case "$tp" in
2940         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2941         /*-$oldprefix/*|\~*-$oldprefix/*)
2942                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2943         *) eval "$1=\"\$$2\"";;
2944         esac;;
2945 esac'
2946
2947 : set the base revision
2948 baserev=5.0
2949
2950 : get the patchlevel
2951 echo " "
2952 echo "Getting the current patchlevel..." >&4
2953 if $test -r $rsrc/patchlevel.h;then
2954         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
2955         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
2956 else
2957         patchlevel=0
2958         subversion=0
2959 fi
2960 $echo $n "(You have $package" $c
2961 case "$package" in
2962 "*$baserev")    ;;
2963 *)              $echo $n " $baserev" $c ;;
2964 esac
2965 $echo $n " patchlevel $patchlevel" $c
2966 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2967 echo ".)"
2968
2969 if test 0 -eq "$subversion"; then
2970         version=`LC_ALL=C; export LC_ALL; \
2971                  echo $baserev $patchlevel | \
2972                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2973 else
2974         version=`LC_ALL=C; export LC_ALL; \
2975                  echo $baserev $patchlevel $subversion | \
2976                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2977 fi
2978 : Figure out perl API version.  Perhaps this should be in patchlevel.h
2979 if test "$subversion" -lt 50; then
2980         apiversion=`LC_ALL=C; export LC_ALL; \
2981                  echo $baserev $patchlevel | \
2982                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2983 else
2984         apiversion="$version"
2985 fi
2986
2987 : determine where private library files go
2988 : Usual default is /usr/local/lib/perl5/$version.
2989 : Also allow things like /opt/perl/lib/$version, since 
2990 : /opt/perl/lib/perl5... would be redundant.
2991 case "$prefix" in
2992 *perl*) set dflt privlib lib/$version ;;
2993 *)       set dflt privlib lib/$package/$version ;;
2994 esac
2995 eval $prefixit
2996 $cat <<EOM
2997
2998 There are some auxiliary files for $package that need to be put into a
2999 private library directory that is accessible by everyone.
3000
3001 EOM
3002 fn=d~+
3003 rp='Pathname where the private library files will reside?'
3004 . ./getfile
3005 if $test "X$privlibexp" != "X$ansexp"; then
3006         installprivlib=''
3007 fi
3008 privlib="$ans"
3009 privlibexp="$ansexp"
3010 if $afs; then
3011         $cat <<EOM
3012
3013 Since you are running AFS, I need to distinguish the directory in which
3014 private files reside from the directory in which they are installed (and from
3015 which they are presumably copied to the former directory by occult means).
3016
3017 EOM
3018         case "$installprivlib" in
3019         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3020         *) dflt="$installprivlib";;
3021         esac
3022         fn=de~
3023         rp='Where will private files be installed?'
3024         . ./getfile
3025         installprivlib="$ans"
3026 else
3027         installprivlib="$privlibexp"
3028 fi
3029
3030 : set the prefixup variable, to restore leading tilda escape
3031 prefixup='case "$prefixexp" in
3032 "$prefix") ;;
3033 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3034 esac'
3035
3036 : determine where public architecture dependent libraries go
3037 set archlib archlib
3038 eval $prefixit
3039 : privlib default is /usr/local/lib/$package/$version
3040 : archlib default is /usr/local/lib/$package/$version/$archname
3041 : privlib may have an optional trailing /share.
3042 tdflt=`echo $privlib | $sed 's,/share$,,'`
3043 tdflt=$tdflt/$archname
3044 case "$archlib" in
3045 '')     dflt=$tdflt
3046         ;;
3047 *)      dflt="$archlib"
3048     ;;
3049 esac
3050 cat <<EOM
3051
3052 $spackage contains architecture-dependent library files.  If you are
3053 sharing libraries in a heterogeneous environment, you might store
3054 these files in a separate location.  Otherwise, you can just include
3055 them with the rest of the public library files.
3056
3057 EOM
3058 fn=d+~
3059 rp='Where do you want to put the public architecture-dependent libraries?'
3060 . ./getfile
3061 archlib="$ans"
3062 archlibexp="$ansexp"
3063
3064 if $afs; then
3065         $cat <<EOM
3066
3067 Since you are running AFS, I need to distinguish the directory in
3068 which architecture-dependent library files reside from the directory
3069 in which they are installed (and from which they are presumably copied
3070 to the former directory by occult means).
3071
3072 EOM
3073         case "$installarchlib" in
3074         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3075         *) dflt="$installarchlib";;
3076         esac
3077         fn=de~
3078         rp='Where will architecture-dependent library files be installed?'
3079         . ./getfile
3080         installarchlib="$ans"
3081 else
3082         installarchlib="$archlibexp"
3083 fi
3084 if $test X"$archlib" = X"$privlib"; then
3085         d_archlib="$undef"
3086 else
3087         d_archlib="$define"
3088 fi
3089
3090 : make some quick guesses about what we are up against
3091 echo " "
3092 $echo $n "Hmm...  $c"
3093 echo exit 1 >bsd
3094 echo exit 1 >usg
3095 echo exit 1 >v7
3096 echo exit 1 >osf1
3097 echo exit 1 >eunice
3098 echo exit 1 >xenix
3099 echo exit 1 >venix
3100 echo exit 1 >os2
3101 d_bsd="$undef"
3102 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3103 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3104 then
3105         echo "Looks kind of like an OSF/1 system, but we'll see..."
3106         echo exit 0 >osf1
3107 elif test `echo abc | tr a-z A-Z` = Abc ; then
3108         xxx=`./loc addbib blurfl $pth`
3109         if $test -f $xxx; then
3110         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3111                 echo exit 0 >bsd
3112                 echo exit 0 >usg
3113         else
3114                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3115                         echo "Looks kind of like an extended USG system, but we'll see..."
3116                 else
3117                         echo "Looks kind of like a USG system, but we'll see..."
3118                 fi
3119                 echo exit 0 >usg
3120         fi
3121 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3122         echo "Looks kind of like a BSD system, but we'll see..."
3123         d_bsd="$define"
3124         echo exit 0 >bsd
3125 else
3126         echo "Looks kind of like a Version 7 system, but we'll see..."
3127         echo exit 0 >v7
3128 fi
3129 case "$eunicefix" in
3130 *unixtovms*)
3131         $cat <<'EOI'
3132 There is, however, a strange, musty smell in the air that reminds me of
3133 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3134 EOI
3135         echo exit 0 >eunice
3136         d_eunice="$define"
3137 : it so happens the Eunice I know will not run shell scripts in Unix format
3138         ;;
3139 *)
3140         echo " "
3141         echo "Congratulations.  You aren't running Eunice."
3142         d_eunice="$undef"
3143         ;;
3144 esac
3145 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3146 case "$p_" in
3147 :) ;;
3148 *)
3149         $cat <<'EOI'
3150 I have the feeling something is not exactly right, however...don't tell me...
3151 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3152 EOI
3153         echo exit 0 >os2
3154         ;;
3155 esac
3156 if test -f /xenix; then
3157         echo "Actually, this looks more like a XENIX system..."
3158         echo exit 0 >xenix
3159         d_xenix="$define"
3160 else
3161         echo " "
3162         echo "It's not Xenix..."
3163         d_xenix="$undef"
3164 fi
3165 chmod +x xenix
3166 $eunicefix xenix
3167 if test -f /venix; then
3168         echo "Actually, this looks more like a VENIX system..."
3169         echo exit 0 >venix
3170 else
3171         echo " "
3172         if ./xenix; then
3173                 : null
3174         else
3175                 echo "Nor is it Venix..."
3176         fi
3177 fi
3178 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3179 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3180 $rm -f foo
3181
3182 : see if setuid scripts can be secure
3183 $cat <<EOM
3184
3185 Some kernels have a bug that prevents setuid #! scripts from being
3186 secure.  Some sites have disabled setuid #! scripts because of this.
3187
3188 First let's decide if your kernel supports secure setuid #! scripts.
3189 (If setuid #! scripts would be secure but have been disabled anyway,
3190 don't say that they are secure if asked.)
3191
3192 EOM
3193
3194 val="$undef"
3195 if $test -d /dev/fd; then
3196         echo "#!$ls" >reflect
3197         chmod +x,u+s reflect
3198         ./reflect >flect 2>&1
3199         if $contains "/dev/fd" flect >/dev/null; then
3200                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3201                 val="$define"
3202         else
3203                 $cat <<EOM
3204 If you are not sure if they are secure, I can check but I'll need a
3205 username and password different from the one you are using right now.
3206 If you don't have such a username or don't want me to test, simply
3207 enter 'none'.
3208
3209 EOM
3210                 rp='Other username to test security of setuid scripts with?'
3211                 dflt='none'
3212                 . ./myread
3213                 case "$ans" in
3214                 n|none)
3215                         case "$d_suidsafe" in
3216                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3217                                 dflt=n;;
3218                         "$undef")
3219                                 echo "Well, the $hint value is *not* secure." >&4
3220                                 dflt=n;;
3221                         *)      echo "Well, the $hint value *is* secure." >&4
3222                                 dflt=y;;
3223                         esac
3224                         ;;
3225                 *)
3226                         $rm -f reflect flect
3227                         echo "#!$ls" >reflect
3228                         chmod +x,u+s reflect
3229                         echo >flect
3230                         chmod a+w flect
3231                         echo '"su" will (probably) prompt you for '"$ans's password."
3232                         su $ans -c './reflect >flect'
3233                         if $contains "/dev/fd" flect >/dev/null; then
3234                                 echo "Okay, it looks like setuid scripts are secure." >&4
3235                                 dflt=y
3236                         else
3237                                 echo "I don't think setuid scripts are secure." >&4
3238                                 dflt=n
3239                         fi
3240                         ;;
3241                 esac
3242                 rp='Does your kernel have *secure* setuid scripts?'
3243                 . ./myread
3244                 case "$ans" in
3245                 [yY]*)  val="$define";;
3246                 *)      val="$undef";;
3247                 esac
3248         fi
3249 else
3250         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3251         echo "(That's for file descriptors, not floppy disks.)"
3252         val="$undef"
3253 fi
3254 set d_suidsafe
3255 eval $setvar
3256
3257 $rm -f reflect flect
3258
3259 : now see if they want to do setuid emulation
3260 echo " "
3261 val="$undef"
3262 case "$d_suidsafe" in
3263 "$define")
3264         val="$undef"
3265         echo "No need to emulate SUID scripts since they are secure here." >& 4
3266         ;;
3267 *)
3268         $cat <<EOM
3269 Some systems have disabled setuid scripts, especially systems where
3270 setuid scripts cannot be secure.  On systems where setuid scripts have
3271 been disabled, the setuid/setgid bits on scripts are currently
3272 useless.  It is possible for $package to detect those bits and emulate
3273 setuid/setgid in a secure fashion.  This emulation will only work if
3274 setuid scripts have been disabled in your kernel.
3275
3276 EOM
3277         case "$d_dosuid" in
3278         "$define") dflt=y ;;
3279         *) dflt=n ;;
3280         esac
3281         rp="Do you want to do setuid/setgid emulation?"
3282         . ./myread
3283         case "$ans" in
3284         [yY]*)  val="$define";;
3285         *)      val="$undef";;
3286         esac
3287         ;;
3288 esac
3289 set d_dosuid
3290 eval $setvar
3291
3292 : determine where manual pages are on this system
3293 echo " "
3294 case "$sysman" in
3295 '') 
3296         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3297         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3298         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3299         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3300         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3301         sysman=`./loc . /usr/man/man1 $syspath`
3302         ;;
3303 esac
3304 if $test -d "$sysman"; then
3305         echo "System manual is in $sysman." >&4
3306 else
3307         echo "Could not find manual pages in source form." >&4
3308 fi
3309
3310 : see what memory models we can support
3311 case "$models" in
3312 '')
3313         $cat >pdp11.c <<'EOP'
3314 main() {
3315 #ifdef pdp11
3316         exit(0);
3317 #else
3318         exit(1);
3319 #endif
3320 }
3321 EOP
3322         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3323         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3324                 dflt='unsplit split'
3325         else
3326                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3327                 case "$tans" in
3328                 X) dflt='none';;
3329                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3330                                 dflt='small'
3331                         else
3332                                 dflt=''
3333                         fi
3334                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3335                                 dflt="$dflt medium"
3336                         fi
3337                         if $test -d /lib/large || $test -d /usr/lib/large; then
3338                                 dflt="$dflt large"
3339                         fi
3340                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3341                                 dflt="$dflt huge"
3342                         fi
3343                 esac
3344         fi;;
3345 *) dflt="$models";;
3346 esac
3347 $cat <<EOM
3348  
3349 Some systems have different model sizes.  On most systems they are called
3350 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3351 split.  If your system doesn't support different memory models, say "none".
3352 If you wish to force everything to one memory model, say "none" here and
3353 put the appropriate flags later when it asks you for other cc and ld flags.
3354 Venix systems may wish to put "none" and let the compiler figure things out.
3355 (In the following question multiple model names should be space separated.)
3356
3357 The default for most systems is "none".
3358
3359 EOM
3360 rp="Which memory models are supported?"
3361 . ./myread
3362 models="$ans"
3363
3364 case "$models" in
3365 none)
3366         small=''
3367         medium=''
3368         large=''
3369         huge=''
3370         unsplit=''
3371         split=''
3372         ;;
3373 *split)
3374         case "$split" in
3375         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3376                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3377                         dflt='-i'
3378                 else
3379                         dflt='none'
3380                 fi;;
3381         *) dflt="$split";;
3382         esac
3383         rp="What flag indicates separate I and D space?"
3384         . ./myread
3385         tans="$ans"
3386         case "$tans" in
3387         none) tans='';;
3388         esac
3389         split="$tans"
3390         unsplit='';;
3391 *large*|*small*|*medium*|*huge*)
3392         case "$models" in
3393         *large*)
3394                 case "$large" in
3395                 '') dflt='-Ml';;
3396                 *) dflt="$large";;
3397                 esac
3398         rp="What flag indicates large model?"
3399         . ./myread
3400         tans="$ans"
3401         case "$tans" in
3402         none) tans='';
3403         esac
3404         large="$tans";;
3405         *) large='';;
3406         esac
3407         case "$models" in
3408         *huge*) case "$huge" in
3409                 '') dflt='-Mh';;
3410                 *) dflt="$huge";;
3411                 esac
3412                 rp="What flag indicates huge model?"
3413                 . ./myread
3414                 tans="$ans"
3415                 case "$tans" in
3416                 none) tans='';
3417                 esac
3418                 huge="$tans";;
3419         *) huge="$large";;
3420         esac
3421         case "$models" in
3422         *medium*) case "$medium" in
3423                 '') dflt='-Mm';;
3424                 *) dflt="$medium";;
3425                 esac
3426                 rp="What flag indicates medium model?"
3427                 . ./myread
3428                 tans="$ans"
3429                 case "$tans" in
3430                 none) tans='';
3431                 esac
3432                 medium="$tans";;
3433         *) medium="$large";;
3434         esac
3435         case "$models" in
3436         *small*) case "$small" in
3437                 '') dflt='none';;
3438                 *) dflt="$small";;
3439                 esac
3440                 rp="What flag indicates small model?"
3441                 . ./myread
3442                 tans="$ans"
3443                 case "$tans" in
3444                 none) tans='';
3445                 esac
3446                 small="$tans";;
3447         *) small='';;
3448         esac
3449         ;;
3450 *)
3451         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3452         ;;
3453 esac
3454 $rm -f pdp11.* pdp11
3455
3456 : see if we need a special compiler
3457 echo " "
3458 if ./usg; then
3459         case "$cc" in
3460         '') case "$Mcc" in
3461                 /*) dflt='Mcc';;
3462                 *) case "$large" in
3463                         -M*) dflt='cc';;
3464                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3465                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3466                                                 dflt='cc'
3467                                         else
3468                                                 dflt='cc -M'
3469                                         fi
3470                                 else
3471                                         dflt='cc'
3472                                 fi;;
3473                         esac;;
3474                 esac;;
3475         *)  dflt="$cc";;
3476         esac
3477         case "$dflt" in
3478         *M*)    $cat <<'EOM'
3479 On some older systems the default C compiler will not resolve multiple global
3480 references that happen to have the same name.  On some such systems the "Mcc"
3481 command may be used to force these to be resolved.  On other systems a "cc -M"
3482 command is required.  (Note that the -M flag on other systems indicates a
3483 memory model to use!) If you have the Gnu C compiler, you might wish to use
3484 that instead.
3485
3486 EOM
3487         ;;
3488         esac
3489         rp="Use which C compiler?"
3490         . ./myread
3491         cc="$ans"
3492 else
3493         case "$cc" in
3494         '') dflt=cc;;
3495         *) dflt="$cc";;
3496         esac
3497         rp="Use which C compiler?"
3498         . ./myread
3499         cc="$ans"
3500 fi
3501 : Look for a hint-file generated 'call-back-unit'.  Now that the
3502 : user has specified the compiler, we may need to set or change some
3503 : other defaults.
3504 if $test -f cc.cbu; then
3505     . ./cc.cbu
3506 fi
3507 echo " "
3508 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3509 $cat >gccvers.c <<EOM
3510 #include <stdio.h>
3511 int main() {
3512 #ifdef __GNUC__
3513 #ifdef __VERSION__
3514         printf("%s\n", __VERSION__);
3515 #else
3516         printf("%s\n", "1");
3517 #endif
3518 #endif
3519         exit(0);
3520 }
3521 EOM
3522 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3523         gccversion=`./gccvers`
3524         case "$gccversion" in
3525         '') echo "You are not using GNU cc." ;;
3526         *)  echo "You are using GNU cc $gccversion." ;;
3527         esac
3528 else
3529         echo " "
3530         echo "*** WHOA THERE!!! ***" >&4
3531         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3532         case "$knowitall" in
3533         '')
3534         echo "    You'd better start hunting for one and let me know about it." >&4
3535                 exit 1
3536                 ;;
3537         esac
3538 fi
3539 $rm -f gccvers*
3540 case "$gccversion" in
3541 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3542 esac
3543
3544 : What should the include directory be ?
3545 echo " "
3546 $echo $n "Hmm...  $c"
3547 dflt='/usr/include'
3548 incpath=''
3549 mips_type=''
3550 if $test -f /bin/mips && /bin/mips; then
3551         echo "Looks like a MIPS system..."
3552         $cat >usr.c <<'EOCP'
3553 #ifdef SYSTYPE_BSD43
3554 /bsd43
3555 #endif
3556 EOCP
3557         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3558                 dflt='/bsd43/usr/include'
3559                 incpath='/bsd43'
3560                 mips_type='BSD 4.3'
3561         else
3562                 mips_type='System V'
3563         fi
3564         $rm -f usr.c usr.out
3565         echo "and you're compiling with the $mips_type compiler and libraries."
3566         xxx_prompt=y
3567         echo "exit 0" >mips
3568 else
3569         echo "Doesn't look like a MIPS system."
3570         xxx_prompt=n
3571         echo "exit 1" >mips
3572 fi
3573 chmod +x mips
3574 $eunicefix mips
3575 case "$usrinc" in
3576 '') ;;
3577 *) dflt="$usrinc";;
3578 esac
3579 case "$xxx_prompt" in
3580 y)      fn=d/
3581         echo " "
3582         rp='Where are the include files you want to use?'
3583         . ./getfile
3584         usrinc="$ans"
3585         ;;
3586 *)      usrinc="$dflt"
3587         ;;
3588 esac
3589
3590 : see how we invoke the C preprocessor
3591 echo " "
3592 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3593 cat <<'EOT' >testcpp.c
3594 #define ABC abc
3595 #define XYZ xyz
3596 ABC.XYZ
3597 EOT
3598 cd ..
3599 if test ! -f cppstdin; then
3600         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3601 else
3602         echo "Keeping your $hint cppstdin wrapper."
3603 fi
3604 chmod 755 cppstdin
3605 wrapper=`pwd`/cppstdin
3606 ok='false'
3607 cd UU
3608
3609 if $test "X$cppstdin" != "X" && \
3610         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3611         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3612 then
3613         echo "You used to use $cppstdin $cppminus so we'll use that again."
3614         case "$cpprun" in
3615         '') echo "But let's see if we can live without a wrapper..." ;;
3616         *)
3617                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3618                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3619                 then
3620                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3621                         ok='true'
3622                 else
3623                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3624                 fi
3625                 ;;
3626         esac
3627 else
3628         case "$cppstdin" in
3629         '') ;;
3630         *)
3631                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3632                 ;;
3633         esac
3634 fi
3635
3636 if $ok; then
3637         : nothing
3638 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3639         $cc -E <testcpp.c >testcpp.out 2>&1; \
3640         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3641         echo "Yup, it does."
3642         x_cpp="$cc -E"
3643         x_minus='';
3644 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3645         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3646         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3647         echo "Yup, it does."
3648         x_cpp="$cc -E"
3649         x_minus='-';
3650 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3651         $cc -P <testcpp.c >testcpp.out 2>&1; \
3652         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3653         echo "Yipee, that works!"
3654         x_cpp="$cc -P"
3655         x_minus='';
3656 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3657         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3658         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3659         echo "At long last!"
3660         x_cpp="$cc -P"
3661         x_minus='-';
3662 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3663         $cpp <testcpp.c >testcpp.out 2>&1; \
3664         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3665         echo "It works!"
3666         x_cpp="$cpp"
3667         x_minus='';
3668 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3669         $cpp - <testcpp.c >testcpp.out 2>&1; \
3670         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3671         echo "Hooray, it works!  I was beginning to wonder."
3672         x_cpp="$cpp"
3673         x_minus='-';
3674 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3675         $wrapper <testcpp.c >testcpp.out 2>&1; \
3676         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3677         x_cpp="$wrapper"
3678         x_minus=''
3679         echo "Eureka!"
3680 else
3681         dflt=''
3682         rp="No dice.  I can't find a C preprocessor.  Name one:"
3683         . ./myread
3684         x_cpp="$ans"
3685         x_minus=''
3686         $x_cpp <testcpp.c >testcpp.out 2>&1
3687         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3688                 echo "OK, that will do." >&4
3689         else
3690 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3691                 exit 1
3692         fi
3693 fi
3694
3695 case "$ok" in
3696 false)
3697         cppstdin="$x_cpp"
3698         cppminus="$x_minus"
3699         cpprun="$x_cpp"
3700         cpplast="$x_minus"
3701         set X $x_cpp
3702         shift
3703         case "$1" in
3704         "$cpp")
3705                 echo "Perhaps can we force $cc -E using a wrapper..."
3706                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3707                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3708                 then
3709                         echo "Yup, we can."
3710                         cppstdin="$wrapper"
3711                         cppminus='';
3712                 else
3713                         echo "Nope, we'll have to live without it..."
3714                 fi
3715                 ;;
3716         esac
3717         case "$cpprun" in
3718         "$wrapper")
3719                 cpprun=''
3720                 cpplast=''
3721                 ;;
3722         esac
3723         ;;
3724 esac
3725
3726 case "$cppstdin" in
3727 "$wrapper") ;;
3728 *) $rm -f $wrapper;;
3729 esac
3730 $rm -f testcpp.c testcpp.out
3731
3732 : Set private lib path
3733 case "$plibpth" in
3734 '') if ./mips; then
3735                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3736         fi;;
3737 esac
3738 case "$libpth" in
3739 ' ') dlist='';;
3740 '') dlist="$loclibpth $plibpth $glibpth";;
3741 *) dlist="$libpth";;
3742 esac
3743
3744 : Now check and see which directories actually exist, avoiding duplicates
3745 libpth=''
3746 for xxx in $dlist
3747 do
3748     if $test -d $xxx; then
3749                 case " $libpth " in
3750                 *" $xxx "*) ;;
3751                 *) libpth="$libpth $xxx";;
3752                 esac
3753     fi
3754 done
3755 $cat <<'EOM'
3756
3757 Some systems have incompatible or broken versions of libraries.  Among
3758 the directories listed in the question below, please remove any you
3759 know not to be holding relevant libraries, and add any that are needed.
3760 Say "none" for none.
3761
3762 EOM
3763 case "$libpth" in
3764 '') dflt='none';;
3765 *)
3766         set X $libpth
3767         shift
3768         dflt=${1+"$@"}
3769         ;;
3770 esac
3771 rp="Directories to use for library searches?"
3772 . ./myread
3773 case "$ans" in
3774 none) libpth=' ';;
3775 *) libpth="$ans";;
3776 esac
3777
3778 : compute shared library extension
3779 case "$so" in
3780 '')
3781         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3782                 dflt='sl'
3783         else
3784                 dflt='so'
3785         fi
3786         ;;
3787 *) dflt="$so";;
3788 esac
3789 $cat <<EOM
3790
3791 On some systems, shared libraries may be available.  Answer 'none' if
3792 you want to suppress searching of shared libraries for the remaining
3793 of this configuration.
3794
3795 EOM
3796 rp='What is the file extension used for shared libraries?'
3797 . ./myread
3798 so="$ans"
3799
3800 : Define several unixisms.
3801 : Hints files or command line option can be used to override them.
3802 : The convoluted testing is in case hints files set either the old
3803 : or the new name.
3804 case "$_exe" in
3805 '')     case "$exe_ext" in
3806     '') ;;
3807         *)      _exe="$exe_ext" ;;
3808         esac
3809         ;;
3810 esac
3811 case "$_a" in
3812 '')     case "$lib_ext" in
3813     '') _a='.a';;
3814         *)      _a="$lib_ext" ;;
3815         esac
3816         ;;
3817 esac
3818 case "$_o" in
3819 '') case "$obj_ext" in
3820         '')     _o='.o';;
3821         *)      _o="$obj_ext";;
3822         esac
3823         ;;
3824 esac
3825 case "$p_" in
3826 '') case "$path_sep" in
3827         '')     p_=':';;
3828         *)      p_="$path_sep";;
3829         esac
3830         ;;
3831 esac
3832 exe_ext=$_exe
3833 lib_ext=$_a
3834 obj_ext=$_o
3835 path_sep=$p_
3836
3837 : Which makefile gets called first.  This is used by make depend.
3838 case "$firstmakefile" in
3839 '') firstmakefile='makefile';;
3840 esac
3841
3842 : Looking for optional libraries
3843 echo " "
3844 echo "Checking for optional libraries..." >&4
3845 case "$libs" in
3846 ' '|'') dflt='';;
3847 *) dflt="$libs";;
3848 esac
3849 case "$libswanted" in
3850 '') libswanted='c_s';;
3851 esac
3852 for thislib in $libswanted; do
3853         
3854         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3855                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3856                 echo "Found -l$thislib (shared)."
3857                 case " $dflt " in
3858                 *"-l$thislib "*);;
3859                 *) dflt="$dflt -l$thislib";;
3860                 esac
3861         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3862                 echo "Found -l$thislib (shared)."
3863                 case " $dflt " in
3864                 *"-l$thislib "*);;
3865                 *) dflt="$dflt -l$thislib";;
3866                 esac
3867         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3868                 echo "Found -l$thislib."
3869                 case " $dflt " in
3870                 *"-l$thislib "*);;
3871                 *) dflt="$dflt -l$thislib";;
3872                 esac
3873         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3874                 echo "Found -l$thislib."
3875                 case " $dflt " in
3876                 *"-l$thislib "*);;
3877                 *) dflt="$dflt -l$thislib";;
3878                 esac
3879         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3880                 echo "Found -l${thislib}_s."
3881                 case " $dflt " in
3882                 *"-l$thislib "*);;
3883                 *) dflt="$dflt -l${thislib}_s";;
3884                 esac
3885         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3886                 echo "Found -l$thislib."
3887                 case " $dflt " in
3888                 *"-l$thislib "*);;
3889                 *) dflt="$dflt -l$thislib";;
3890                 esac
3891         else
3892                 echo "No -l$thislib."
3893         fi
3894 done
3895 set X $dflt
3896 shift
3897 dflt="$*"
3898 case "$libs" in
3899 '') dflt="$dflt";;
3900 *) dflt="$libs";;
3901 esac
3902 case "$dflt" in
3903 ' '|'') dflt='none';;
3904 esac
3905
3906 $cat <<EOM
3907  
3908 Some versions of Unix support shared libraries, which make executables smaller
3909 but make load time slightly longer.
3910
3911 On some systems, mostly System V Release 3's, the shared library is included
3912 by putting the option "-lc_s" as the last thing on the cc command line when
3913 linking.  Other systems use shared libraries by default.  There may be other
3914 libraries needed to compile $package on your machine as well.  If your system
3915 needs the "-lc_s" option, include it here.  Include any other special libraries
3916 here as well.  Say "none" for none.
3917 EOM
3918
3919 echo " "
3920 rp="Any additional libraries?"
3921 . ./myread
3922 case "$ans" in
3923 none) libs=' ';;
3924 *) libs="$ans";;
3925 esac
3926
3927 : determine optimize, if desired, or use for debug flag also
3928 case "$optimize" in
3929 ' '|$undef) dflt='none';;
3930 '') dflt='-O';;
3931 *) dflt="$optimize";;
3932 esac
3933 $cat <<EOH
3934
3935 Some C compilers have problems with their optimizers.  By default, $package
3936 compiles with the -O flag to use the optimizer.  Alternately, you might want
3937 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3938 systems).  Either flag can be specified here.  To use neither flag, specify
3939 the word "none".
3940
3941 EOH
3942 rp="What optimizer/debugger flag should be used?"
3943 . ./myread
3944 optimize="$ans"
3945 case "$optimize" in
3946 'none') optimize=" ";;
3947 esac
3948
3949 dflt=''
3950 : We will not override a previous value, but we might want to
3951 : augment a hint file
3952 case "$hint" in
3953 none|recommended)
3954         case "$gccversion" in
3955         1*) dflt='-fpcc-struct-return' ;;
3956         esac
3957         case "$optimize" in
3958         *-g*) dflt="$dflt -DDEBUGGING";;
3959         esac
3960         case "$gccversion" in
3961         2*) if test -d /etc/conf/kconfig.d &&
3962                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3963                 then
3964                         dflt="$dflt -posix"
3965                 fi
3966                 ;;
3967         esac
3968         ;;
3969 esac
3970
3971 case "$mips_type" in
3972 *BSD*|'') inclwanted="$locincpth $usrinc";;
3973 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3974 esac
3975 for thisincl in $inclwanted; do
3976         if $test -d $thisincl; then
3977                 if $test x$thisincl != x$usrinc; then
3978                         case "$dflt" in
3979                         *$thisincl*);;
3980                         *) dflt="$dflt -I$thisincl";;
3981                         esac
3982                 fi
3983         fi
3984 done
3985
3986 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3987         xxx=true;
3988 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3989         xxx=true;
3990 else
3991         xxx=false;
3992 fi;
3993 if $xxx; then
3994         case "$dflt" in
3995         *$2*);;
3996         *) dflt="$dflt -D$2";;
3997         esac;
3998 fi'
3999
4000 if ./osf1; then
4001         set signal.h __LANGUAGE_C__; eval $inctest
4002 else
4003         set signal.h LANGUAGE_C; eval $inctest
4004 fi
4005
4006 case "$hint" in
4007 none|recommended) dflt="$ccflags $dflt" ;;
4008 *) dflt="$ccflags";;
4009 esac
4010
4011 case "$dflt" in
4012 ''|' ') dflt=none;;
4013 esac
4014 $cat <<EOH
4015
4016 Your C compiler may want other flags.  For this question you should include
4017 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4018 but you should NOT include libraries or ld flags like -lwhatever.  If you
4019 want $package to honor its debug switch, you should include -DDEBUGGING here.
4020 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4021
4022 To use no flags, specify the word "none".
4023
4024 EOH
4025 set X $dflt
4026 shift
4027 dflt=${1+"$@"}
4028 rp="Any additional cc flags?"
4029 . ./myread
4030 case "$ans" in
4031 none) ccflags='';;
4032 *) ccflags="$ans";;
4033 esac
4034
4035 : the following weeds options from ccflags that are of no interest to cpp
4036 cppflags="$ccflags"
4037 case "$gccversion" in
4038 1*) cppflags="$cppflags -D__GNUC__"
4039 esac
4040 case "$mips_type" in
4041 '');;
4042 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4043 esac
4044 case "$cppflags" in
4045 '');;
4046 *)
4047         echo " "
4048         echo "Let me guess what the preprocessor flags are..." >&4
4049         set X $cppflags
4050         shift
4051         cppflags=''
4052         $cat >cpp.c <<'EOM'
4053 #define BLURFL foo
4054
4055 BLURFL xx LFRULB
4056 EOM
4057         previous=''
4058         for flag in $*
4059         do
4060                 case "$flag" in
4061                 -*) ftry="$flag";;
4062                 *) ftry="$previous $flag";;
4063                 esac
4064                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4065                         >cpp1.out 2>/dev/null && \
4066                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4067                         >cpp2.out 2>/dev/null && \
4068                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4069                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4070                 then
4071                         cppflags="$cppflags $ftry"
4072                         previous=''
4073                 else
4074                         previous="$flag"
4075                 fi
4076         done
4077         set X $cppflags
4078         shift
4079         cppflags=${1+"$@"}
4080         case "$cppflags" in
4081         *-*)  echo "They appear to be: $cppflags";;
4082         esac
4083         $rm -f cpp.c cpp?.out
4084         ;;
4085 esac
4086
4087 : flags used in final linking phase
4088 case "$ldflags" in
4089 '') if ./venix; then
4090                 dflt='-i -z'
4091         else
4092                 dflt=''
4093         fi
4094         case "$ccflags" in
4095         *-posix*) dflt="$dflt -posix" ;;
4096         esac
4097         ;;
4098 *) dflt="$ldflags";;
4099 esac
4100
4101 : Try to guess additional flags to pick up local libraries.
4102 for thislibdir in $libpth; do
4103         case " $loclibpth " in
4104         *" $thislibdir "*)
4105                 case "$dflt " in 
4106                 *"-L$thislibdir "*) ;;
4107                 *)  dflt="$dflt -L$thislibdir" ;;
4108                 esac
4109                 ;;
4110         esac
4111 done
4112
4113 case "$dflt" in
4114 '') dflt='none' ;;
4115 esac
4116
4117 $cat <<EOH
4118
4119 Your C linker may need flags.  For this question you should
4120 include -L/whatever and any other flags used by the C linker, but you
4121 should NOT include libraries like -lwhatever.
4122
4123 Make sure you include the appropriate -L/path flags if your C linker
4124 does not normally search all of the directories you specified above,
4125 namely
4126         $libpth
4127 To use no flags, specify the word "none".
4128
4129 EOH
4130
4131 rp="Any additional ld flags (NOT including libraries)?"
4132 . ./myread
4133 case "$ans" in
4134 none) ldflags='';;
4135 *) ldflags="$ans";;
4136 esac
4137 rmlist="$rmlist pdp11"
4138
4139 : coherency check
4140 echo " "
4141 echo "Checking your choice of C compiler and flags for coherency..." >&4
4142 $cat > try.c <<'EOF'
4143 #include <stdio.h>
4144 main() { printf("Ok\n"); exit(0); }
4145 EOF
4146 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4147 shift
4148 $cat >try.msg <<'EOM'
4149 I've tried to compile and run the following simple program:
4150
4151 EOM
4152 $cat try.c
4153
4154 $cat >> try.msg <<EOM
4155
4156 I used the command:
4157
4158         $*
4159         ./try
4160
4161 and I got the following output:
4162
4163 EOM
4164 dflt=y
4165 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4166         if sh -c './try' >>try.msg 2>&1; then
4167                 xxx=`./try`
4168                 case "$xxx" in
4169                 "Ok") dflt=n ;;
4170                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4171                         case " $libs " in
4172                         *" -lsfio "*)
4173                                 cat >> try.msg <<'EOQS'
4174 If $libs contains -lsfio, and sfio is mis-configured, then it
4175 sometimes (apparently) runs and exits with a 0 status, but with no
4176 output!  It may have to do with sfio's use of _exit vs. exit.
4177
4178 EOQS
4179                                 rp="You have a big problem.  Shall I abort Configure"
4180                                 dflt=y
4181                                 ;;
4182                         esac
4183                         ;;
4184                 esac
4185         else
4186                 echo "The program compiled OK, but exited with status $?." >>try.msg
4187                 rp="You have a problem.  Shall I abort Configure"
4188                 dflt=y
4189         fi
4190 else
4191         echo "I can't compile the test program." >>try.msg
4192         rp="You have a BIG problem.  Shall I abort Configure"
4193         dflt=y
4194 fi
4195 case "$dflt" in
4196 y)
4197         $cat try.msg >&4
4198         case "$knowitall" in
4199         '')
4200                 echo "(The supplied flags or libraries might be incorrect.)"
4201                 ;;
4202         *) dflt=n;;
4203         esac
4204         echo " "
4205         . ./myread
4206         case "$ans" in
4207         n*|N*) ;;
4208         *)      echo "Ok.  Stopping Configure." >&4
4209                 exit 1
4210                 ;;
4211         esac
4212         ;;
4213 n) echo "OK, that should do.";;
4214 esac
4215 $rm -f try try.* core
4216
4217 : determine filename position in cpp output
4218 echo " "
4219 echo "Computing filename position in cpp output for #include directives..." >&4
4220 echo '#include <stdio.h>' > foo.c
4221 $cat >fieldn <<EOF
4222 $startsh
4223 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4224 $grep '^[       ]*#.*stdio\.h' | \
4225 while read cline; do
4226         pos=1
4227         set \$cline
4228         while $test \$# -gt 0; do
4229                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4230                         echo "\$pos"
4231                         exit 0
4232                 fi
4233                 shift
4234                 pos=\`expr \$pos + 1\`
4235         done
4236 done
4237 EOF
4238 chmod +x fieldn
4239 fieldn=`./fieldn`
4240 $rm -f foo.c fieldn
4241 case $fieldn in
4242 '') pos='???';;
4243 1) pos=first;;
4244 2) pos=second;;
4245 3) pos=third;;
4246 *) pos="${fieldn}th";;
4247 esac
4248 echo "Your cpp writes the filename in the $pos field of the line."
4249
4250 : locate header file
4251 $cat >findhdr <<EOF
4252 $startsh
4253 wanted=\$1
4254 name=''
4255 if test -f $usrinc/\$wanted; then
4256         echo "$usrinc/\$wanted"
4257         exit 0
4258 fi
4259 awkprg='{ print \$$fieldn }'
4260 echo "#include <\$wanted>" > foo\$\$.c
4261 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4262 $grep "^[       ]*#.*\$wanted" | \
4263 while read cline; do
4264         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4265         case "\$name" in
4266         */\$wanted) echo "\$name"; exit 0;;
4267         *) name='';;
4268         esac;
4269 done;
4270 $rm -f foo\$\$.c;
4271 case "\$name" in
4272 '') exit 1;;
4273 esac
4274 EOF
4275 chmod +x findhdr
4276
4277 : define an alternate in-header-list? function
4278 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4279 cont=true; xxf="echo \"<\$1> found.\" >&4";
4280 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4281 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4282 esac;
4283 case $# in 4) instead=instead;; *) instead="at last";; esac;
4284 while $test "$cont"; do
4285         xxx=`./findhdr $1`
4286         var=$2; eval "was=\$$2";
4287         if $test "$xxx" && $test -r "$xxx";
4288         then eval $xxf;
4289         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4290                 cont="";
4291         else eval $xxnf;
4292         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4293         set $yyy; shift; shift; yyy=$@;
4294         case $# in 0) cont="";;
4295         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4296                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4297         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4298                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4299         esac;
4300 done;
4301 while $test "$yyy";
4302 do set $yyy; var=$2; eval "was=\$$2";
4303         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4304         set $yyy; shift; shift; yyy=$@;
4305 done'
4306
4307 : see if this is a malloc.h system
4308 set malloc.h i_malloc
4309 eval $inhdr
4310
4311 : see if stdlib is available
4312 set stdlib.h i_stdlib
4313 eval $inhdr
4314
4315 : determine which malloc to compile in
4316 echo " "
4317 case "$usemymalloc" in
4318 ''|[yY]*|true|$define)  dflt='y' ;;
4319 *)      dflt='n' ;;
4320 esac
4321 rp="Do you wish to attempt to use the malloc that comes with $package?"
4322 . ./myread
4323 usemymalloc="$ans"
4324 case "$ans" in
4325 y*|true)
4326         usemymalloc='y'
4327         mallocsrc='malloc.c'
4328         mallocobj="malloc$_o"
4329         d_mymalloc="$define"
4330         case "$libs" in
4331         *-lmalloc*)
4332                 : Remove malloc from list of libraries to use
4333                 echo "Removing unneeded -lmalloc from library list" >&4
4334                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4335                 shift
4336                 libs="$*"
4337                 echo "libs = $libs" >&4
4338                 ;;
4339         esac
4340         ;;
4341 *)
4342         usemymalloc='n'
4343         mallocsrc=''
4344         mallocobj=''
4345         d_mymalloc="$undef"
4346         ;;
4347 esac
4348
4349 : compute the return types of malloc and free
4350 echo " "
4351 $cat >malloc.c <<END
4352 #$i_malloc I_MALLOC
4353 #$i_stdlib I_STDLIB
4354 #include <stdio.h>
4355 #include <sys/types.h>
4356 #ifdef I_MALLOC
4357 #include <malloc.h>
4358 #endif
4359 #ifdef I_STDLIB
4360 #include <stdlib.h>
4361 #endif
4362 #ifdef TRY_MALLOC
4363 void *malloc();
4364 #endif
4365 #ifdef TRY_FREE
4366 void free();
4367 #endif
4368 END
4369 case "$malloctype" in
4370 '')
4371         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4372                 malloctype='void *'
4373         else
4374                 malloctype='char *'
4375         fi
4376         ;;
4377 esac
4378 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4379
4380 case "$freetype" in
4381 '')
4382         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4383                 freetype='void'
4384         else
4385                 freetype='int'
4386         fi
4387         ;;
4388 esac
4389 echo "Your system uses $freetype free(), it would seem." >&4
4390 $rm -f malloc.[co]
4391 : Cruising for prototypes
4392 echo " "
4393 echo "Checking out function prototypes..." >&4
4394 $cat >prototype.c <<'EOCP'
4395 main(int argc, char *argv[]) {
4396         exit(0);}
4397 EOCP
4398 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4399         echo "Your C compiler appears to support function prototypes."
4400         val="$define"
4401 else
4402         echo "Your C compiler doesn't seem to understand function prototypes."
4403         val="$undef"
4404 fi
4405 set prototype
4406 eval $setvar
4407 $rm -f prototype*
4408
4409 case "$prototype" in
4410 "$define") ;;
4411 *)      ansi2knr='ansi2knr'
4412         echo " "
4413         cat <<EOM >&4
4414
4415 $me:  FATAL ERROR:
4416 This version of $package can only be compiled by a compiler that 
4417 understands function prototypes.  Unfortunately, your C compiler 
4418         $cc $ccflags
4419 doesn't seem to understand them.  Sorry about that.
4420
4421 If GNU cc is available for your system, perhaps you could try that instead.  
4422
4423 Eventually, we hope to support building Perl with pre-ANSI compilers.
4424 If you would like to help in that effort, please contact <perlbug@perl.org>.
4425
4426 Aborting Configure now.
4427 EOM
4428         exit 2
4429         ;;
4430 esac
4431
4432 : determine where public executables go
4433 echo " "
4434 set dflt bin bin
4435 eval $prefixit
4436 fn=d~
4437 rp='Pathname where the public executables will reside?'
4438 . ./getfile
4439 if $test "X$ansexp" != "X$binexp"; then
4440         installbin=''
4441 fi
4442 bin="$ans"
4443 binexp="$ansexp"
4444 if $afs; then
4445         $cat <<EOM
4446
4447 Since you are running AFS, I need to distinguish the directory in which
4448 executables reside from the directory in which they are installed (and from
4449 which they are presumably copied to the former directory by occult means).
4450
4451 EOM
4452         case "$installbin" in
4453         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4454         *) dflt="$installbin";;
4455         esac
4456         fn=de~
4457         rp='Where will public executables be installed?'
4458         . ./getfile
4459         installbin="$ans"
4460 else
4461         installbin="$binexp"
4462 fi
4463
4464 : define a shorthand compile call
4465 compile='
4466 mc_file=$1;
4467 shift;
4468 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4469 : define a shorthand compile call for compilations that should be ok.
4470 compile_ok='
4471 mc_file=$1;
4472 shift;
4473 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4474
4475 echo " "
4476 echo "Checking for GNU C Library..." >&4
4477 cat >gnulibc.c <<EOM
4478 #include <stdio.h>
4479 int
4480 main()
4481 {
4482 #ifdef __GLIBC__
4483     exit(0);
4484 #else
4485     exit(1);
4486 #endif
4487 }
4488 EOM
4489 set gnulibc
4490 if eval $compile_ok && ./gnulibc; then
4491         val="$define"
4492         echo "You are using the GNU C Library"
4493 else
4494         val="$undef"
4495         echo "You are not using the GNU C Library"
4496 fi
4497 $rm -f gnulibc*
4498 set d_gnulibc
4499 eval $setvar
4500
4501 : see if nm is to be used to determine whether a symbol is defined or not
4502 case "$usenm" in
4503 '')
4504         dflt=''
4505         case "$d_gnulibc" in
4506         "$define")
4507                 echo " "
4508                 echo "nm probably won't work on the GNU C Library." >&4
4509                 dflt=n
4510                 ;;
4511         esac
4512         case "$dflt" in
4513         '') 
4514                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4515                         echo " "
4516                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4517                         echo "'nm' won't be sufficient on this sytem." >&4
4518                         dflt=n
4519                 fi
4520                 ;;
4521         esac
4522         case "$dflt" in
4523         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4524                 if $test $dflt -gt 20; then
4525                         dflt=y
4526                 else
4527                         dflt=n
4528                 fi
4529                 ;;
4530         esac
4531         ;;
4532 *)
4533         case "$usenm" in
4534         true|$define) dflt=y;;
4535         *) dflt=n;;
4536         esac
4537         ;;
4538 esac
4539 $cat <<EOM
4540
4541 I can use $nm to extract the symbols from your C libraries. This
4542 is a time consuming task which may generate huge output on the disk (up
4543 to 3 megabytes) but that should make the symbols extraction faster. The
4544 alternative is to skip the 'nm' extraction part and to compile a small
4545 test program instead to determine whether each symbol is present. If
4546 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4547 this may be the best solution.
4548
4549 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4550
4551 EOM
4552 rp="Shall I use $nm to extract C symbols from the libraries?"
4553 . ./myread
4554 case "$ans" in
4555 [Nn]*) usenm=false;;
4556 *) usenm=true;;
4557 esac
4558
4559 runnm=$usenm
4560 case "$reuseval" in
4561 true) runnm=false;;
4562 esac
4563
4564 : nm options which may be necessary
4565 case "$nm_opt" in
4566 '') if $test -f /mach_boot; then
4567                 nm_opt=''       # Mach
4568         elif $test -d /usr/ccs/lib; then
4569                 nm_opt='-p'     # Solaris (and SunOS?)
4570         elif $test -f /dgux; then
4571                 nm_opt='-p'     # DG-UX
4572         elif $test -f /lib64/rld; then
4573                 nm_opt='-p'     # 64-bit Irix
4574         else
4575                 nm_opt=''
4576         fi;;
4577 esac
4578
4579 : nm options which may be necessary for shared libraries but illegal
4580 : for archive libraries.  Thank you, Linux.
4581 case "$nm_so_opt" in
4582 '')     case "$myuname" in
4583         *linux*)
4584                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4585                         nm_so_opt='--dynamic'
4586                 fi
4587                 ;;
4588         esac
4589         ;;
4590 esac
4591
4592 case "$runnm" in
4593 true)
4594 : get list of predefined functions in a handy place
4595 echo " "
4596 case "$libc" in
4597 '') libc=unknown
4598         case "$libs" in
4599         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4600         esac
4601         ;;
4602 esac
4603 libnames='';
4604 case "$libs" in
4605 '') ;;
4606 *)  for thislib in $libs; do
4607         case "$thislib" in
4608         -lc|-lc_s)
4609                 : Handle C library specially below.
4610                 ;;
4611         -l*)
4612                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4613                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4614                         :
4615                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4616                         :
4617                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4618                         :
4619                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4620                         :
4621                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4622                         :
4623                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4624                         :
4625                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4626                         :
4627                 else
4628                         try=''
4629                 fi
4630                 libnames="$libnames $try"
4631                 ;;
4632         *) libnames="$libnames $thislib" ;;
4633         esac
4634         done
4635         ;;
4636 esac
4637 xxx=normal
4638 case "$libc" in
4639 unknown)
4640         set /lib/libc.$so
4641         for xxx in $libpth; do
4642                 $test -r $1 || set $xxx/libc.$so
4643                 : The messy sed command sorts on library version numbers.
4644                 $test -r $1 || \
4645                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4646                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4647                                 h
4648                                 s/[0-9][0-9]*/0000&/g
4649                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4650                                 G
4651                                 s/\n/ /' | \
4652                          sort | $sed -e 's/^.* //'`
4653                 eval set \$$#
4654         done
4655         $test -r $1 || set /usr/ccs/lib/libc.$so
4656         $test -r $1 || set /lib/libsys_s$_a
4657         ;;
4658 *)
4659         set blurfl
4660         ;;
4661 esac
4662 if $test -r "$1"; then
4663         echo "Your (shared) C library seems to be in $1."
4664         libc="$1"
4665 elif $test -r /lib/libc && $test -r /lib/clib; then
4666         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4667         xxx=apollo
4668         libc='/lib/clib /lib/libc'
4669         if $test -r /lib/syslib; then
4670                 echo "(Your math library is in /lib/syslib.)"
4671                 libc="$libc /lib/syslib"
4672         fi
4673 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4674         echo "Your C library seems to be in $libc, as you said before."
4675 elif $test -r $incpath/usr/lib/libc$_a; then
4676         libc=$incpath/usr/lib/libc$_a;
4677         echo "Your C library seems to be in $libc.  That's fine."
4678 elif $test -r /lib/libc$_a; then
4679         libc=/lib/libc$_a;
4680         echo "Your C library seems to be in $libc.  You're normal."
4681 else
4682         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4683                 :
4684         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4685                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4686         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4687                 :
4688         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4689                 :
4690         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4691                 :
4692         else
4693                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4694         fi
4695         if $test -r "$tans"; then
4696                 echo "Your C library seems to be in $tans, of all places."
4697                 libc=$tans
4698         else
4699                 libc='blurfl'
4700         fi
4701 fi
4702 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4703         dflt="$libc"
4704         cat <<EOM
4705
4706 If the guess above is wrong (which it might be if you're using a strange
4707 compiler, or your machine supports multiple models), you can override it here.
4708
4709 EOM
4710 else
4711         dflt=''
4712         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4713         cat >&4 <<EOM
4714 I can't seem to find your C library.  I've looked in the following places:
4715
4716 EOM
4717         $sed 's/^/      /' libpath
4718         cat <<EOM
4719
4720 None of these seems to contain your C library. I need to get its name...
4721
4722 EOM
4723 fi
4724 fn=f
4725 rp='Where is your C library?'
4726 . ./getfile
4727 libc="$ans"
4728
4729 echo " "
4730 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4731 set X `cat libnames`
4732 shift
4733 xxx=files
4734 case $# in 1) xxx=file; esac
4735 echo "Extracting names from the following $xxx for later perusal:" >&4
4736 echo " "
4737 $sed 's/^/      /' libnames >&4
4738 echo " "
4739 $echo $n "This may take a while...$c" >&4
4740
4741 for file in $*; do
4742         case $file in
4743         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4744         *) $nm $nm_opt $file 2>/dev/null;;
4745         esac
4746 done >libc.tmp
4747
4748 $echo $n ".$c"
4749 $grep fprintf libc.tmp > libc.ptf
4750 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4751 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4752 xxx='[ADTSIW]'
4753 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4754         eval $xscan;\
4755         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4756                 eval $xrun
4757 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4758         eval $xscan;\
4759         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4760                 eval $xrun
4761 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4762         eval $xscan;\
4763         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4764                 eval $xrun
4765 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4766         eval $xscan;\
4767         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4768                 eval $xrun
4769 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4770         eval $xscan;\
4771         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4772                 eval $xrun
4773 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4774         eval $xscan;\
4775         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4776                 eval $xrun
4777 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4778                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4779         eval $xscan;\
4780         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4781                 eval $xrun
4782 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4783         eval $xscan;\
4784         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4785                 eval $xrun
4786 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4787         eval $xscan;\
4788         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4789                 eval $xrun
4790 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4791         eval $xscan;\
4792         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4793                 eval $xrun
4794 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4795         eval $xscan;\
4796         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4797                 eval $xrun
4798 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4799         eval $xscan;\
4800         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4801                 eval $xrun
4802 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4803         eval $xscan;\
4804         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4805                 eval $xrun
4806 else
4807         $nm -p $* 2>/dev/null >libc.tmp
4808         $grep fprintf libc.tmp > libc.ptf
4809         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4810                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4811         then
4812                 nm_opt='-p'
4813                 eval $xrun
4814         else
4815                 echo " "
4816                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4817                 com=''
4818                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4819                         for thisname in $libnames $libc; do
4820                                 $ar t $thisname >>libc.tmp
4821                         done
4822                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4823                         echo "Ok." >&4
4824                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4825                         # Repeat libc to extract forwarders to DLL entries too
4826                         for thisname in $libnames $libc; do
4827                                 $ar tv $thisname >>libc.tmp
4828                                 # Revision 50 of EMX has bug in $ar.
4829                                 # it will not extract forwarders to DLL entries
4830                                 # Use emximp which will extract exactly them.
4831                                 emximp -o tmp.imp $thisname \
4832                                     2>/dev/null && \
4833                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4834                                     < tmp.imp >>libc.tmp
4835                                 $rm tmp.imp
4836                         done
4837                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4838                         echo "Ok." >&4
4839                 else
4840                         echo "$ar didn't seem to work right." >&4
4841                         echo "Maybe this is a Cray...trying bld instead..." >&4
4842                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4843                         then
4844                                 for thisname in $libnames; do
4845                                         bld t $libnames | \
4846                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4847                                         $ar t $thisname >>libc.tmp
4848                                 done
4849                                 echo "Ok." >&4
4850                         else
4851                                 echo "That didn't work either.  Giving up." >&4
4852                                 exit 1
4853                         fi
4854                 fi
4855         fi
4856 fi
4857 nm_extract="$com"
4858 if $test -f /lib/syscalls.exp; then
4859         echo " "
4860         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4861         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4862 fi
4863 ;;
4864 esac
4865 $rm -f libnames libpath
4866
4867 : see if dld is available
4868 set dld.h i_dld
4869 eval $inhdr
4870
4871 : is a C symbol defined?
4872 csym='tlook=$1;
4873 case "$3" in
4874 -v) tf=libc.tmp; tc=""; tdc="";;
4875 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4876 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4877 esac;
4878 tx=yes;
4879 case "$reuseval-$4" in
4880 true-) ;;
4881 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4882 esac;
4883 case "$tx" in
4884 yes)
4885         case "$runnm" in
4886         true)
4887                 if $contains $tlook $tf >/dev/null 2>&1;
4888                 then tval=true;
4889                 else tval=false;
4890                 fi;;
4891         *)
4892                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4893                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4894                 then tval=true;
4895                 else tval=false;
4896                 fi;
4897                 $rm -f t t.c;;
4898         esac;;
4899 *)
4900         case "$tval" in
4901         $define) tval=true;;
4902         *) tval=false;;
4903         esac;;
4904 esac;
4905 eval "$2=$tval"'
4906
4907 : define an is-in-libc? function
4908 inlibc='echo " "; td=$define; tu=$undef;
4909 sym=$1; var=$2; eval "was=\$$2";
4910 tx=yes;
4911 case "$reuseval$was" in
4912 true) ;;
4913 true*) tx=no;;
4914 esac;
4915 case "$tx" in
4916 yes)
4917         set $sym tres -f;
4918         eval $csym;
4919         case "$tres" in
4920         true)
4921                 echo "$sym() found." >&4;
4922                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4923         *)
4924                 echo "$sym() NOT found." >&4;
4925                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4926         esac;;
4927 *)
4928         case "$was" in
4929         $define) echo "$sym() found." >&4;;
4930         *) echo "$sym() NOT found." >&4;;
4931         esac;;
4932 esac'
4933
4934 : see if dlopen exists
4935 xxx_runnm="$runnm"
4936 runnm=false
4937 set dlopen d_dlopen
4938 eval $inlibc
4939 runnm="$xxx_runnm"
4940
4941 : determine which dynamic loading, if any, to compile in
4942 echo " "
4943 dldir="ext/DynaLoader"
4944 case "$usedl" in
4945 $define|y|true)
4946         dflt='y'
4947         usedl="$define"
4948         ;;
4949 $undef|n|false)
4950         dflt='n'
4951         usedl="$undef"
4952         ;;
4953 *) 
4954         dflt='n'
4955         case "$d_dlopen" in
4956             $define) dflt='y' ;;
4957         esac
4958         case "$i_dld" in
4959             $define) dflt='y' ;;
4960         esac
4961         : Does a dl_xxx.xs file exist for this operating system
4962         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
4963         ;;
4964 esac
4965 rp="Do you wish to use dynamic loading?"
4966 . ./myread
4967 usedl="$ans"
4968 case "$ans" in
4969 y*) usedl="$define"
4970         case "$dlsrc" in
4971         '')
4972                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
4973                         dflt="$dldir/dl_${osname}.xs"
4974                 elif $test "$d_dlopen" = "$define" ; then
4975                         dflt="$dldir/dl_dlopen.xs"
4976                 elif $test "$i_dld" = "$define" ; then
4977                         dflt="$dldir/dl_dld.xs"
4978                 else
4979                         dflt=''
4980                 fi
4981                 ;;
4982         *)      dflt="$dldir/$dlsrc"
4983                 ;;
4984         esac
4985     echo "The following dynamic loading files are available:"
4986         : Can not go over to $dldir because getfile has path hard-coded in.
4987         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
4988         rp="Source file to use for dynamic loading"
4989         fn="fne"
4990         # XXX This getfile call will fail the existence check if you try 
4991         # building away from $src (this is not supported yet).
4992         . ./getfile
4993         usedl="$define"
4994         : emulate basename
4995         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4996
4997         $cat << EOM
4998
4999 Some systems may require passing special flags to $cc -c to
5000 compile modules that will be used to create a shared library.
5001 To use no flags, say "none".
5002
5003 EOM
5004     case "$cccdlflags" in
5005     '') case "$gccversion" in
5006                 '') case "$osname" in
5007                         hpux)   dflt='+z' ;;
5008                         next)   dflt='none' ;;
5009                         irix*)  dflt='-KPIC' ;;
5010                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5011                         sunos)  dflt='-pic' ;;
5012                         *)      dflt='none' ;;
5013                     esac
5014                         ;;
5015                 *)  case "$osname" in
5016                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5017                         *)      dflt='-fpic' ;;
5018                     esac ;;
5019             esac ;;
5020         ' ') dflt='none' ;;
5021     *)  dflt="$cccdlflags" ;;
5022     esac
5023     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5024     . ./myread
5025     case "$ans" in
5026     none) cccdlflags=' ' ;;
5027     *) cccdlflags="$ans" ;;
5028     esac
5029
5030     cat << EOM
5031
5032 Some systems use ld to create libraries that can be dynamically loaded,
5033 while other systems (such as those using ELF) use $cc.
5034
5035 EOM
5036         case "$ld" in
5037         '')     $cat >try.c <<'EOM'
5038 /* Test for whether ELF binaries are produced */
5039 #include <fcntl.h>
5040 #include <stdlib.h>
5041 main() {
5042         char b[4];
5043         int i = open("a.out",O_RDONLY);
5044         if(i == -1) 
5045                 exit(1); /* fail */
5046         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5047                 exit(0); /* succeed (yes, it's ELF) */
5048         else
5049                 exit(1); /* fail */
5050 }
5051 EOM
5052                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5053                         cat <<EOM
5054 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5055 EOM
5056                         dflt="$cc"
5057                 else
5058                         echo "I'll use ld to build dynamic libraries."
5059                         dflt='ld'
5060                 fi
5061                 rm -f try.c a.out
5062                 ;;
5063         *)      dflt="$ld"
5064                 ;;
5065         esac
5066
5067     rp="What command should be used to create dynamic libraries?"
5068     . ./myread
5069         ld="$ans"
5070
5071     cat << EOM
5072
5073 Some systems may require passing special flags to $ld to create a
5074 library that can be dynamically loaded.  If your ld flags include
5075 -L/other/path options to locate libraries outside your loader's normal
5076 search path, you may need to specify those -L options here as well.  To
5077 use no flags, say "none".
5078
5079 EOM
5080     case "$lddlflags" in
5081     '') case "$osname" in
5082                         hpux)  dflt='-b' ;;
5083                         linux|irix*)    dflt='-shared' ;;
5084                         next)  dflt='none' ;;
5085                         solaris) dflt='-G' ;;
5086                         sunos) dflt='-assert nodefinitions' ;;
5087                         svr4*|esix*) dflt="-G $ldflags" ;;
5088                 *)     dflt='none' ;;
5089                         esac
5090                         ;;
5091     *) dflt="$lddlflags" ;;
5092     esac
5093
5094         : Try to guess additional flags to pick up local libraries.
5095         for thisflag in $ldflags; do
5096                 case "$thisflag" in
5097                 -L*)
5098                         case " $dflt " in
5099                         *" $thisflag "*) ;;
5100                         *) dflt="$dflt $thisflag" ;;
5101                         esac
5102                         ;;
5103                 esac
5104         done
5105
5106         case "$dflt" in
5107         ''|' ') dflt='none' ;;
5108         esac
5109
5110     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5111     . ./myread
5112     case "$ans" in
5113     none) lddlflags=' ' ;;
5114     *) lddlflags="$ans" ;;
5115     esac
5116
5117         cat <<EOM
5118
5119 Some systems may require passing special flags to $cc to indicate that
5120 the resulting executable will use dynamic linking.  To use no flags,
5121 say "none".
5122
5123 EOM
5124     case "$ccdlflags" in
5125     '') case "$osname" in
5126                 hpux)   dflt='-Wl,-E' ;;
5127                 linux)  dflt='-rdynamic' ;;
5128                 next)   dflt='none' ;;
5129                 sunos)  dflt='none' ;;
5130                 *)      dflt='none' ;;
5131             esac ;;
5132     ' ')  dflt='none' ;;
5133     *)  dflt="$ccdlflags" ;;
5134     esac
5135     rp="Any special flags to pass to $cc to use dynamic loading?"
5136     . ./myread
5137     case "$ans" in
5138     none) ccdlflags=' ' ;;
5139     *) ccdlflags="$ans" ;;
5140     esac
5141     ;;
5142 *)  usedl="$undef"
5143         ld='ld'
5144     dlsrc='dl_none.xs'
5145     lddlflags=''
5146     ccdlflags=''
5147     ;;
5148 esac
5149
5150 also=''
5151 case "$usedl" in
5152 $undef)
5153         # No dynamic loading being used, so don't bother even to prompt.
5154         useshrplib='false'
5155         ;;
5156 *)      case "$useshrplib" in
5157         '')     case "$osname" in
5158                 svr4*|dgux|dynixptx|esix|powerux)
5159                         dflt=y
5160                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5161                         ;;
5162                 next*)
5163                         case "$osvers" in
5164                         4*)     dflt=y
5165                                 also='Building a shared libperl is needed for MAB support.'
5166                                 ;;
5167                         *)      dflt=n
5168                                 ;;
5169                         esac
5170                         ;;
5171                 *)      dflt=n
5172                         ;;
5173                 esac
5174                 ;;
5175         $define|true|[Yy]*)
5176                 dflt=y
5177                 ;;
5178         *)      dflt=n
5179                 ;;
5180         esac
5181         $cat << EOM
5182
5183 The perl executable is normally obtained by linking perlmain.c with
5184 libperl${_a}, any static extensions (usually just DynaLoader), and
5185 any other libraries needed on this system (such as -lm, etc.).  Since
5186 your system supports dynamic loading, it is probably possible to build
5187 a shared libperl.$so.  If you will have more than one executable linked
5188 to libperl.$so, this will significantly reduce the size of each
5189 executable, but it may have a noticeable affect on performance.  The
5190 default is probably sensible for your system.
5191 $also
5192
5193 EOM
5194         rp="Build a shared libperl.$so (y/n)"
5195         . ./myread
5196         case "$ans" in
5197         true|$define|[Yy]*)
5198                 useshrplib='true'
5199                 # Why does next4 have to be so different?
5200                 case "${osname}${osvers}" in
5201                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5202                 os2*)   xxx='' ;; # Nothing special needed.
5203                 *)              xxx='LD_LIBRARY_PATH' ;;
5204                 esac
5205                 if test X"$xxx" != "X"; then
5206                         $cat <<EOM  | $tee -a ../config.msg >&4
5207
5208 To build perl, you must add the current working directory to your
5209 $xxx environment variable before running make.  You can do
5210 this with
5211    $xxx=\`pwd\`:\$$xxx; export $xxx
5212 for Bourne-style shells, or
5213    setenv $xxx \`pwd\`
5214 for Csh-style shells.  You *MUST* do this before running make.
5215
5216 EOM
5217                 fi
5218                 ;;
5219         *)      useshrplib='false' ;;
5220         esac
5221         ;;
5222 esac
5223
5224 case "$useshrplib" in
5225 true)
5226         case "$libperl" in
5227         '')
5228                 # Figure out a good name for libperl.so.  Since it gets stored in
5229                 # a version-specific architecture-dependent library, the version
5230                 # number isn't really that important, except for making cc/ld happy.
5231                 #
5232                 # A name such as libperl.so.3.1
5233                 majmin="libperl.$so.$patchlevel.$subversion"
5234                 # A name such as libperl.so.301
5235                 majonly=`echo $patchlevel $subversion |
5236                         $awk '{printf "%d%02d", $1, $2}'`
5237                 majonly=libperl.$so.$majonly
5238                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5239                 # rely on figuring it out from the naming of libc.
5240                 case "${osname}${osvers}" in
5241                 next4*)
5242                         dflt=libperl.5.$so
5243                         # XXX How handle the --version stuff for MAB?
5244                         ;;
5245                 linux*)  # ld won't link with a bare -lperl otherwise.
5246                         dflt=libperl.$so
5247                         ;;
5248                 *)      # Try to guess based on whether libc has major.minor.
5249                         case "$libc" in
5250                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5251                         *libc.$so.[0-9]*) dflt=$majonly ;;
5252                         *)      dflt=libperl.$so ;;
5253                         esac
5254                         ;;
5255                 esac
5256                 ;;
5257         *)      dflt=$libperl
5258                 ;;
5259         esac
5260         cat << EOM
5261
5262 I need to select a good name for the shared libperl.  If your system uses
5263 library names with major and minor numbers, then you might want something
5264 like $majmin.  Alternatively, if your system uses a single version
5265 number for shared libraries, then you might want to use $majonly.
5266 Or, your system might be quite happy with a simple libperl.$so.
5267
5268 Since the shared libperl will get installed into a version-specific
5269 architecture-dependent directory, the version number of the shared perl
5270 library probably isn't important, so the default should be o.k.
5271
5272 EOM
5273         rp='What name do you want to give to the shared libperl?'
5274         . ./myread
5275         libperl=$ans
5276         echo "Ok, I'll use $libperl"
5277         ;;
5278 *)
5279         libperl="libperl${_a}"
5280         ;;
5281 esac
5282
5283 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5284 case "$shrpdir" in
5285 '') ;;
5286 *)      $cat >&4 <<EOM
5287 WARNING:  Use of the shrpdir variable for the installation location of
5288 the shared $libperl is not supported.  It was never documented and
5289 will not work in this version.  Let me (jhi@iki.fi)
5290 know of any problems this may cause.
5291
5292 EOM
5293         case "$shrpdir" in
5294         "$archlibexp/CORE")
5295                 $cat >&4 <<EOM
5296 But your current setting of $shrpdir is
5297 the default anyway, so it's harmless.
5298 EOM
5299                 ;;
5300         *)
5301                 $cat >&4 <<EOM
5302 Further, your current attempted setting of $shrpdir
5303 conflicts with the value of $archlibexp/CORE
5304 that installperl will use.
5305 EOM
5306                 ;;
5307         esac
5308         ;;
5309 esac
5310
5311 # How will the perl executable find the installed shared $libperl?
5312 # Add $xxx to ccdlflags.
5313 # If we can't figure out a command-line option, use $shrpenv to
5314 # set env LD_RUN_PATH.  The main perl makefile uses this.
5315 shrpdir=$archlibexp/CORE
5316 xxx=''
5317 tmp_shrpenv=''
5318 if "$useshrplib"; then
5319     case "$osname" in 
5320         aix)
5321                 # We'll set it in Makefile.SH...
5322                 ;;
5323         solaris|netbsd)
5324                 xxx="-R $shrpdir"
5325                 ;;
5326         freebsd)
5327                 xxx="-Wl,-R$shrpdir"
5328                 ;;
5329         linux|irix*|dec_osf)
5330                 xxx="-Wl,-rpath,$shrpdir"
5331                 ;;
5332         next)
5333                 # next doesn't like the default...
5334                 ;;
5335         *)
5336                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5337                 ;;
5338         esac
5339         case "$xxx" in
5340         '') ;;
5341         *)      
5342                 # Only add $xxx if it isn't already in ccdlflags.
5343                 case " $ccdlflags " in
5344                 *" $xxx "*)     ;;
5345                 *)      ccdlflags="$ccdlflags $xxx"
5346                         cat <<EOM >&4
5347
5348 Adding $xxx to the flags
5349 passed to $ld so that the perl executable will find the 
5350 installed shared $libperl.
5351
5352 EOM
5353                         ;;
5354                 esac
5355                 ;;
5356         esac
5357 fi
5358 # Respect a hint or command-line value.
5359 case "$shrpenv" in
5360 '') shrpenv="$tmp_shrpenv" ;;
5361 esac
5362
5363 : determine where manual pages go
5364 set man1dir man1dir none
5365 eval $prefixit
5366 $cat <<EOM
5367
5368 $spackage has manual pages available in source form.
5369 EOM
5370 case "$nroff" in
5371 nroff)
5372         echo "However, you don't have nroff, so they're probably useless to you."
5373         case "$man1dir" in
5374         '') man1dir="none";;
5375         esac;;
5376 esac
5377 echo "If you don't want the manual sources installed, answer 'none'."
5378 case "$man1dir" in
5379 ' ') dflt=none
5380         ;;
5381 '')
5382         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5383         lookpath="$lookpath $prefixexp/man/p_man/man1"
5384         lookpath="$lookpath $prefixexp/man/u_man/man1"
5385         lookpath="$lookpath $prefixexp/man/man.1"
5386         case "$sysman" in
5387         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5388         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5389         esac
5390         set dflt
5391         eval $prefixup
5392         ;;
5393 *)  dflt="$man1dir"
5394         ;;
5395 esac
5396 echo " "
5397 fn=dn+~
5398 rp="Where do the main $spackage manual pages (source) go?"
5399 . ./getfile
5400 if $test "X$man1direxp" != "X$ansexp"; then
5401         installman1dir=''
5402 fi
5403 man1dir="$ans"
5404 man1direxp="$ansexp"
5405 case "$man1dir" in
5406 '') man1dir=' '
5407         installman1dir='';;
5408 esac
5409 if $afs; then
5410         $cat <<EOM
5411
5412 Since you are running AFS, I need to distinguish the directory in which
5413 manual pages reside from the directory in which they are installed (and from
5414 which they are presumably copied to the former directory by occult means).
5415
5416 EOM
5417         case "$installman1dir" in
5418         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5419         *) dflt="$installman1dir";;
5420         esac
5421         fn=de~
5422         rp='Where will man pages be installed?'
5423         . ./getfile
5424         installman1dir="$ans"
5425 else
5426         installman1dir="$man1direxp"
5427 fi
5428
5429 : What suffix to use on installed man pages
5430
5431 case "$man1dir" in
5432 ' ')
5433         man1ext='0'
5434         ;;
5435 *)
5436         rp="What suffix should be used for the main $spackage man pages?"
5437         case "$man1ext" in
5438         '')     case "$man1dir" in
5439                 *1)  dflt=1 ;;
5440                 *1p) dflt=1p ;;
5441                 *1pm) dflt=1pm ;;
5442                 *l) dflt=l;;
5443                 *n) dflt=n;;
5444                 *o) dflt=o;;
5445                 *p) dflt=p;;
5446                 *C) dflt=C;;
5447                 *L) dflt=L;;
5448                 *L1) dflt=L1;;
5449                 *) dflt=1;;
5450                 esac
5451                 ;;
5452         *)      dflt="$man1ext";;
5453         esac
5454         . ./myread
5455         man1ext="$ans"
5456         ;;
5457 esac
5458
5459 : see if we can have long filenames
5460 echo " "
5461 rmlist="$rmlist /tmp/cf$$"
5462 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5463 first=123456789abcdef
5464 second=/tmp/cf$$/$first
5465 $rm -f $first $second
5466 if (echo hi >$first) 2>/dev/null; then
5467         if $test -f 123456789abcde; then
5468                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5469                 val="$undef"
5470         else
5471                 if (echo hi >$second) 2>/dev/null; then
5472                         if $test -f /tmp/cf$$/123456789abcde; then
5473                                 $cat <<'EOM'
5474 That's peculiar... You can have filenames longer than 14 characters, but only
5475 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5476 I shall consider your system cannot support long filenames at all.
5477 EOM
5478                                 val="$undef"
5479                         else
5480                                 echo 'You can have filenames longer than 14 characters.' >&4
5481                                 val="$define"
5482                         fi
5483                 else
5484                         $cat <<'EOM'
5485 How confusing! Some of your filesystems are sane enough to allow filenames
5486 longer than 14 characters but some others like /tmp can't even think about them.
5487 So, for now on, I shall assume your kernel does not allow them at all.
5488 EOM
5489                         val="$undef"
5490                 fi
5491         fi
5492 else
5493         $cat <<'EOM'
5494 You can't have filenames longer than 14 chars.  You can't even think about them!
5495 EOM
5496         val="$undef"
5497 fi 
5498 set d_flexfnam
5499 eval $setvar
5500 $rm -rf /tmp/cf$$ 123456789abcde*
5501
5502 : determine where library module manual pages go
5503 set man3dir man3dir none
5504 eval $prefixit
5505 $cat <<EOM
5506
5507 $spackage has manual pages for many of the library modules.
5508 EOM
5509
5510 case "$nroff" in
5511 nroff)
5512         $cat <<'EOM'
5513 However, you don't have nroff, so they're probably useless to you.
5514 EOM
5515         case "$man3dir" in
5516         '') man3dir="none";;
5517         esac;;
5518 esac
5519
5520 case "$d_flexfnam" in
5521 undef)
5522         $cat <<'EOM'
5523 However, your system can't handle the long file names like File::Basename.3. 
5524 EOM
5525         case "$man3dir" in
5526         '') man3dir="none";;
5527         esac;;
5528 esac
5529
5530 echo "If you don't want the manual sources installed, answer 'none'."
5531 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5532 case "$man3dir" in
5533 '')     case "$prefix" in 
5534         *$prog*) dflt=`echo $man1dir | 
5535                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5536         *)      dflt="$privlib/man/man3" ;;
5537         esac
5538         ;;
5539 ' ') dflt=none;;
5540 *)      dflt="$man3dir" ;;
5541 esac
5542 echo " "
5543
5544 fn=dn+~
5545 rp="Where do the $package library man pages (source) go?"
5546 . ./getfile
5547 if test "X$man3direxp" != "X$ansexp"; then
5548         installman3dir=''
5549 fi
5550
5551 man3dir="$ans"
5552 man3direxp="$ansexp"
5553 case "$man3dir" in
5554 '') man3dir=' '
5555         installman3dir='';;
5556 esac
5557 if $afs; then
5558         $cat <<EOM
5559
5560 Since you are running AFS, I need to distinguish the directory in which
5561 manual pages reside from the directory in which they are installed (and from
5562 which they are presumably copied to the former directory by occult means).
5563
5564 EOM
5565         case "$installman3dir" in
5566         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5567         *) dflt="$installman3dir";;
5568         esac
5569         fn=de~
5570         rp='Where will man pages be installed?'
5571         . ./getfile
5572         installman3dir="$ans"
5573 else
5574         installman3dir="$man3direxp"
5575 fi
5576
5577 : What suffix to use on installed man pages
5578
5579 case "$man3dir" in
5580 ' ')
5581         man3ext='0'
5582         ;;
5583 *)
5584         rp="What suffix should be used for the $package library man pages?"
5585         case "$man3ext" in
5586         '')     case "$man3dir" in
5587                 *3)  dflt=3 ;;
5588                 *3p) dflt=3p ;;
5589                 *3pm) dflt=3pm ;;
5590                 *l) dflt=l;;
5591                 *n) dflt=n;;
5592                 *o) dflt=o;;
5593                 *p) dflt=p;;
5594                 *C) dflt=C;;
5595                 *L) dflt=L;;
5596                 *L3) dflt=L3;;
5597                 *) dflt=3;;
5598                 esac
5599                 ;;
5600         *)      dflt="$man3ext";;
5601         esac
5602         . ./myread
5603         man3ext="$ans"
5604         ;;
5605 esac
5606
5607 : see if we have to deal with yellow pages, now NIS.
5608 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5609         if $test -f /usr/etc/nibindd; then
5610                 echo " "
5611                 echo "I'm fairly confident you're on a NeXT."
5612                 echo " "
5613                 rp='Do you get the hosts file via NetInfo?'
5614                 dflt=y
5615                 case "$hostcat" in
5616                 nidump*) ;;
5617                 '') ;;
5618                 *) dflt=n;;
5619                 esac
5620                 . ./myread
5621                 case "$ans" in
5622                 y*) hostcat='nidump hosts .';;
5623                 *)      case "$hostcat" in
5624                         nidump*) hostcat='';;
5625                         esac
5626                         ;;
5627                 esac
5628         fi
5629         case "$hostcat" in
5630         nidump*) ;;
5631         *)
5632                 case "$hostcat" in
5633                 *ypcat*) dflt=y;;
5634                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5635                                 dflt=y
5636                         else
5637                                 dflt=n
5638                         fi;;
5639                 *) dflt=n;;
5640                 esac
5641                 echo " "
5642                 rp='Are you getting the hosts file via yellow pages?'
5643                 . ./myread
5644                 case "$ans" in
5645                 y*) hostcat='ypcat hosts';;
5646                 *) hostcat='cat /etc/hosts';;
5647                 esac
5648                 ;;
5649         esac
5650 fi
5651 case "$hostcat" in
5652 '') hostcat='cat /etc/hosts';;
5653 esac
5654 case "$groupcat" in
5655 '') groupcat='cat /etc/group';;
5656 esac
5657 case "$passcat" in
5658 '') passcat='cat /etc/passwd';;
5659 esac
5660
5661 : now get the host name
5662 echo " "
5663 echo "Figuring out host name..." >&4
5664 case "$myhostname" in
5665 '') cont=true
5666         echo 'Maybe "hostname" will work...'
5667         if tans=`sh -c hostname 2>&1` ; then
5668                 myhostname=$tans
5669                 phostname=hostname
5670                 cont=''
5671         fi
5672         ;;
5673 *) cont='';;
5674 esac
5675 if $test "$cont"; then
5676         if ./xenix; then
5677                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5678                 if tans=`cat /etc/systemid 2>&1` ; then
5679                         myhostname=$tans
5680                         phostname='cat /etc/systemid'
5681                         echo "Whadyaknow.  Xenix always was a bit strange..."
5682                         cont=''
5683                 fi
5684         elif $test -r /etc/systemid; then
5685                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5686         fi
5687 fi
5688 if $test "$cont"; then
5689         echo 'No, maybe "uuname -l" will work...'
5690         if tans=`sh -c 'uuname -l' 2>&1` ; then
5691                 myhostname=$tans
5692                 phostname='uuname -l'
5693         else
5694                 echo 'Strange.  Maybe "uname -n" will work...'
5695                 if tans=`sh -c 'uname -n' 2>&1` ; then
5696                         myhostname=$tans
5697                         phostname='uname -n'
5698                 else
5699                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5700                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5701                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5702                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5703                         else
5704                                 case "$myhostname" in
5705                                 '') echo "Does this machine have an identity crisis or something?"
5706                                         phostname='';;
5707                                 *)
5708                                         echo "Well, you said $myhostname before..."
5709                                         phostname='echo $myhostname';;
5710                                 esac
5711                         fi
5712                 fi
5713         fi
5714 fi
5715 : you do not want to know about this
5716 set $myhostname
5717 myhostname=$1
5718
5719 : verify guess
5720 if $test "$myhostname" ; then
5721         dflt=y
5722         rp='Your host name appears to be "'$myhostname'".'" Right?"
5723         . ./myread
5724         case "$ans" in
5725         y*) ;;
5726         *) myhostname='';;
5727         esac
5728 fi
5729
5730 : bad guess or no guess
5731 while $test "X$myhostname" = X ; do
5732         dflt=''
5733         rp="Please type the (one word) name of your host:"
5734         . ./myread
5735         myhostname="$ans"
5736 done
5737
5738 : translate upper to lower if necessary
5739 case "$myhostname" in
5740 *[A-Z]*)
5741         echo "(Normalizing case in your host name)"
5742         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5743         ;;
5744 esac
5745
5746 case "$myhostname" in
5747 *.*)
5748         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5749         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5750         echo "(Trimming domain name from host name--host name is now $myhostname)"
5751         ;;
5752 *) case "$mydomain" in
5753         '')
5754                 {
5755                         test "X$hostcat" = "Xypcat hosts" &&
5756                         ypmatch "$myhostname" hosts 2>/dev/null |\
5757                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5758                         $test -s hosts
5759                 } || {
5760                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5761                                         /[       ]$myhostname[  . ]/p" > hosts
5762                 }
5763                 tmp_re="[       . ]"
5764                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5765                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5766                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5767                         hosts | $sort | $uniq | \
5768                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5769                 case `$echo X$dflt` in
5770                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5771                         dflt=.
5772                         ;;
5773                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5774                         ;;
5775                 esac
5776                 case "$dflt" in
5777                 .)
5778                         tans=`./loc resolv.conf X /etc /usr/etc`
5779                         if $test -f "$tans"; then
5780                                 echo "(Attempting domain name extraction from $tans)"
5781                                 dflt=.`$sed -n -e 's/   / /g' \
5782                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5783                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5784                                 case "$dflt" in
5785                                 .) dflt=.`$sed -n -e 's/        / /g' \
5786                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5787                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5788                                         ;;
5789                                 esac
5790                         fi
5791                         ;;
5792                 esac
5793                 case "$dflt" in
5794                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5795                         dflt=.`sh -c domainname 2>/dev/null`
5796                         case "$dflt" in
5797                         '') dflt='.';;
5798                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5799                         esac
5800                         ;;
5801                 esac
5802                 case "$dflt" in
5803                 .) echo "(Lost all hope -- silly guess then)"
5804                         dflt='.uucp'
5805                         ;;
5806                 esac
5807                 $rm -f hosts
5808                 ;;
5809         *) dflt="$mydomain";;
5810         esac;;
5811 esac
5812 echo " "
5813 rp="What is your domain name?"
5814 . ./myread
5815 tans="$ans"
5816 case "$ans" in
5817 '') ;;
5818 .*) ;;
5819 *) tans=".$tans";;
5820 esac
5821 mydomain="$tans"
5822
5823 : translate upper to lower if necessary
5824 case "$mydomain" in
5825 *[A-Z]*)
5826         echo "(Normalizing case in your domain name)"
5827         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5828         ;;
5829 esac
5830
5831 : a little sanity check here
5832 case "$phostname" in
5833 '') ;;
5834 *)
5835         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5836         $myhostname$mydomain|$myhostname) ;;
5837         *)
5838                 case "$phostname" in
5839                 sed*)
5840                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5841                         ;;
5842                 *)
5843                         echo "(That doesn't agree with your $phostname command, by the way.)"
5844                         ;;
5845                 esac
5846         ;;
5847         esac
5848         ;;
5849 esac
5850
5851 $cat <<EOM
5852
5853 I need to get your e-mail address in Internet format if possible, i.e.
5854 something like user@host.domain. Please answer accurately since I have
5855 no easy means to double check it. The default value provided below
5856 is most probably close to the reality but may not be valid from outside
5857 your organization...
5858
5859 EOM
5860 cont=x
5861 while test "$cont"; do
5862         case "$cf_email" in
5863         '') dflt="$cf_by@$myhostname$mydomain";;
5864         *) dflt="$cf_email";;
5865         esac
5866         rp='What is your e-mail address?'
5867         . ./myread
5868         cf_email="$ans"
5869         case "$cf_email" in
5870         *@*.*) cont='' ;;
5871         *)
5872                 rp='Address does not look like an Internet one.  Use it anyway?'
5873                 case "$fastread" in
5874                 yes) dflt=y ;;
5875                 *) dflt=n ;;
5876                 esac
5877                 . ./myread
5878                 case "$ans" in
5879                 y*) cont='' ;;
5880                 *) echo " " ;;
5881                 esac
5882                 ;;
5883         esac
5884 done
5885
5886 $cat <<EOM
5887
5888 If you or somebody else will be maintaining perl at your site, please
5889 fill in the correct e-mail address here so that they may be contacted
5890 if necessary. Currently, the "perlbug" program included with perl
5891 will send mail to this address in addition to perlbug@perl.com. You may
5892 enter "none" for no administrator.
5893
5894 EOM
5895 case "$perladmin" in
5896 '') dflt="$cf_email";;
5897 *) dflt="$perladmin";;
5898 esac
5899 rp='Perl administrator e-mail address'
5900 . ./myread
5901 perladmin="$ans"
5902
5903 : figure out how to guarantee perl startup
5904 case "$startperl" in
5905 '')
5906         case "$sharpbang" in
5907         *!)
5908                 $cat <<EOH
5909
5910 I can use the #! construct to start perl on your system. This will
5911 make startup of perl scripts faster, but may cause problems if you
5912 want to share those scripts and perl is not in a standard place
5913 ($binexp/perl) on all your platforms. The alternative is to force
5914 a shell by starting the script with a single ':' character.
5915
5916 EOH
5917                 dflt="$binexp/perl"
5918                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5919                 . ./myread
5920                 case "$ans" in
5921                 none)   startperl=": # use perl";;
5922                 *)      startperl="#!$ans"
5923                         if $test 30 -lt `echo "$ans" | wc -c`; then
5924                                 $cat >&4 <<EOM
5925
5926 WARNING:  Some systems limit the #! command to 32 characters.
5927 If you experience difficulty running Perl scripts with #!, try
5928 installing Perl in a directory with a shorter pathname.
5929
5930 EOM
5931                         fi ;;
5932                 esac
5933                 ;;
5934         *) startperl=": # use perl"
5935                 ;;
5936         esac
5937         ;;
5938 esac
5939 echo "I'll use $startperl to start perl scripts."
5940
5941 : figure best path for perl in scripts
5942 case "$perlpath" in
5943 '')
5944         perlpath="$binexp/perl"
5945         case "$startperl" in
5946         *!*) ;;
5947         *)
5948                 $cat <<EOH
5949
5950 I will use the "eval 'exec'" idiom to start Perl on your system.
5951 I can use the full path of your Perl binary for this purpose, but
5952 doing so may cause problems if you want to share those scripts and
5953 Perl is not always in a standard place ($binexp/perl).
5954
5955 EOH
5956                 dflt="$binexp/perl"
5957                 rp="What path shall I use in \"eval 'exec'\"?"
5958                 . ./myread
5959                 perlpath="$ans"
5960                 ;;
5961         esac
5962         ;;
5963 esac
5964 case "$startperl" in
5965 *!*)    ;;
5966 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
5967 esac
5968
5969 : determine where public executable scripts go
5970 set scriptdir scriptdir
5971 eval $prefixit
5972 case "$scriptdir" in
5973 '')
5974         dflt="$bin"
5975         : guess some guesses
5976         $test -d /usr/share/scripts && dflt=/usr/share/scripts
5977         $test -d /usr/share/bin && dflt=/usr/share/bin
5978         $test -d /usr/local/script && dflt=/usr/local/script
5979         $test -d $prefixexp/script && dflt=$prefixexp/script
5980         set dflt
5981         eval $prefixup
5982         ;;
5983 *)  dflt="$scriptdir"
5984         ;;
5985 esac
5986 $cat <<EOM
5987  
5988 Some installations have a separate directory just for executable scripts so
5989 that they can mount it across multiple architectures but keep the scripts in
5990 one spot.  You might, for example, have a subdirectory of /usr/share for this.
5991 Or you might just lump your scripts in with all your other executables.
5992  
5993 EOM
5994 fn=d~
5995 rp='Where do you keep publicly executable scripts?'
5996 . ./getfile
5997 if $test "X$ansexp" != "X$scriptdirexp"; then
5998         installscript=''
5999 fi
6000 scriptdir="$ans"
6001 scriptdirexp="$ansexp"
6002 if $afs; then
6003         $cat <<EOM
6004
6005 Since you are running AFS, I need to distinguish the directory in which
6006 scripts reside from the directory in which they are installed (and from
6007 which they are presumably copied to the former directory by occult means).
6008
6009 EOM
6010         case "$installscript" in
6011         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6012         *) dflt="$installscript";;
6013         esac
6014         fn=de~
6015         rp='Where will public scripts be installed?'
6016         . ./getfile
6017         installscript="$ans"
6018 else
6019         installscript="$scriptdirexp"
6020 fi
6021
6022 : determine where site specific libraries go.
6023 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6024 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6025 case "$prefix" in
6026 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6027 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6028 esac
6029 eval $prefixit
6030 $cat <<EOM
6031
6032 The installation process will also create a directory for
6033 site-specific extensions and modules.  Some users find it convenient
6034 to place all local files in this directory rather than in the main
6035 distribution directory.
6036
6037 EOM
6038 fn=d~+
6039 rp='Pathname for the site-specific library files?'
6040 . ./getfile
6041 if $test "X$sitelibexp" != "X$ansexp"; then
6042         installsitelib=''
6043 fi
6044 sitelib="$ans"
6045 sitelibexp="$ansexp"
6046 if $afs; then
6047         $cat <<EOM
6048
6049 Since you are running AFS, I need to distinguish the directory in
6050 which site-specific files reside from the directory in which they are
6051 installed (and from which they are presumably copied to the former
6052 directory by occult means).
6053
6054 EOM
6055         case "$installsitelib" in
6056         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6057         *) dflt="$installsitelib";;
6058         esac
6059         fn=de~
6060         rp='Where will site-specific files be installed?'
6061         . ./getfile
6062         installsitelib="$ans"
6063 else
6064         installsitelib="$sitelibexp"
6065 fi
6066
6067 : determine where site specific architecture-dependent libraries go.
6068 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6069 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6070 : sitelib may have an optional trailing /share.
6071 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6072 tdflt="$tdflt/$archname"
6073 set sitearch sitearch none
6074 eval $prefixit
6075 case "$sitearch" in
6076 '')     dflt="$tdflt" ;;
6077 *)      dflt="$sitearch" ;;
6078 esac
6079 $cat <<EOM
6080
6081 The installation process will also create a directory for
6082 architecture-dependent site-specific extensions and modules.
6083
6084 EOM
6085 fn=nd~+
6086 rp='Pathname for the site-specific architecture-dependent library files?'
6087 . ./getfile
6088 if $test "X$sitearchexp" != "X$ansexp"; then
6089         installsitearch=''
6090 fi
6091 sitearch="$ans"
6092 sitearchexp="$ansexp"
6093 if $afs; then
6094         $cat <<EOM
6095
6096 Since you are running AFS, I need to distinguish the directory in
6097 which site-specific architecture-dependent library files reside from
6098 the directory in which they are installed (and from which they are
6099 presumably copied to the former directory by occult means).
6100
6101 EOM
6102         case "$installsitearch" in
6103         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6104         *) dflt="$installsitearch";;
6105         esac
6106         fn=de~
6107         rp='Where will site-specific architecture-dependent files be installed?'
6108         . ./getfile
6109         installsitearch="$ans"
6110 else
6111         installsitearch="$sitearchexp"
6112 fi
6113
6114 cat <<EOM
6115
6116 Previous version of $package used the standard IO mechanisms as defined
6117 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6118 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6119 the default.  This abstraction layer can use AT&T's sfio (if you already
6120 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6121 problems with some extension modules.  Using PerlIO with stdio is safe,
6122 but it is slower than plain stdio and therefore is not the default.
6123
6124 If this doesn't make any sense to you, just accept the default 'n'.
6125 EOM
6126 case "$useperlio" in
6127 $define|true|[yY]*)     dflt='y';;
6128 *) dflt='n';;
6129 esac
6130 rp='Use the experimental PerlIO abstraction layer?'
6131 . ./myread
6132 case "$ans" in
6133 y|Y) 
6134         val="$define"
6135         ;;     
6136 *)      
6137         echo "Ok, doing things the stdio way"
6138         val="$undef"
6139         ;;
6140 esac
6141 set useperlio
6142 eval $setvar 
6143
6144 : Check how to convert floats to strings.
6145 if test "X$d_Gconvert" = X; then
6146         echo " "
6147         echo "Checking for an efficient way to convert floats to strings."
6148         $cat >try.c <<'EOP'
6149 #ifdef TRY_gconvert
6150 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6151 char *myname = "gconvert";
6152 #endif
6153 #ifdef TRY_gcvt
6154 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6155 char *myname = "gcvt";
6156 #endif
6157 #ifdef TRY_sprintf
6158 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6159 char *myname = "sprintf";
6160 #endif
6161
6162 #include <stdio.h>
6163
6164 int
6165 checkit(expect, got)
6166 char *expect;
6167 char *got;
6168 {
6169     if (strcmp(expect, got)) {
6170                 printf("%s oddity:  Expected %s, got %s\n",
6171                         myname, expect, got);
6172                 exit(1);
6173         }
6174 }
6175
6176 int
6177 main()
6178
6179         char buf[64]; 
6180         buf[63] = '\0';
6181
6182         /* This must be 1st test on (which?) platform */
6183         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6184         Gconvert(0.1, 8, 0, buf);
6185         checkit("0.1", buf);
6186
6187         Gconvert(1.0, 8, 0, buf); 
6188         checkit("1", buf);
6189
6190         Gconvert(0.0, 8, 0, buf); 
6191         checkit("0", buf);
6192
6193         Gconvert(-1.0, 8, 0, buf); 
6194         checkit("-1", buf);
6195
6196         /* Some Linux gcvt's give 1.e+5 here. */
6197         Gconvert(100000.0, 8, 0, buf); 
6198         checkit("100000", buf);
6199         
6200         /* Some Linux gcvt's give -1.e+5 here. */
6201         Gconvert(-100000.0, 8, 0, buf); 
6202         checkit("-100000", buf);
6203
6204         exit(0);
6205 }
6206 EOP
6207         case "$d_Gconvert" in
6208         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6209         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6210         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6211         *) xxx_list='gconvert gcvt sprintf' ;;
6212         esac
6213
6214         for xxx_convert in $xxx_list; do
6215                 echo "Trying $xxx_convert"
6216                 $rm -f try try$_o
6217                 set try -DTRY_$xxx_convert
6218                 if eval $compile; then
6219                         echo "$xxx_convert" found. >&4
6220                         if ./try; then
6221                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6222                                 break;
6223                         else
6224                                 echo "...But $xxx_convert didn't work as I expected."
6225                         fi
6226                 else
6227                         echo "$xxx_convert NOT found." >&4
6228                 fi
6229         done
6230                 
6231         case "$xxx_convert" in
6232         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6233         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6234         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6235         esac
6236 fi
6237
6238 : Initialize h_fcntl
6239 h_fcntl=false
6240
6241 : Initialize h_sysfile
6242 h_sysfile=false
6243
6244 : access call always available on UNIX
6245 set access d_access
6246 eval $inlibc
6247
6248 : locate the flags for 'access()'
6249 case "$d_access" in
6250 "$define")
6251         echo " "
6252         $cat >access.c <<'EOCP'
6253 #include <sys/types.h>
6254 #ifdef I_FCNTL
6255 #include <fcntl.h>
6256 #endif
6257 #ifdef I_SYS_FILE
6258 #include <sys/file.h>
6259 #endif
6260 #ifdef I_UNISTD
6261 #include <unistd.h>
6262 #endif
6263 main() {
6264         exit(R_OK);
6265 }
6266 EOCP
6267         : check sys/file.h first, no particular reason here
6268         if $test `./findhdr sys/file.h` && \
6269                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6270                 h_sysfile=true;
6271                 echo "<sys/file.h> defines the *_OK access constants." >&4
6272         elif $test `./findhdr fcntl.h` && \
6273                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6274                 h_fcntl=true;
6275                 echo "<fcntl.h> defines the *_OK access constants." >&4
6276         elif $test `./findhdr unistd.h` && \
6277                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6278                 echo "<unistd.h> defines the *_OK access constants." >&4
6279         else
6280                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6281         fi
6282         ;;
6283 esac
6284 $rm -f access*
6285
6286 : see if accessx exists
6287 set accessx d_accessx
6288 eval $inlibc
6289
6290 : see if alarm exists
6291 set alarm d_alarm
6292 eval $inlibc
6293
6294 : Look for GNU-cc style attribute checking
6295 echo " "
6296 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6297 $cat >attrib.c <<'EOCP'
6298 #include <stdio.h>
6299 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6300 EOCP
6301 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6302         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6303                 echo "Your C compiler doesn't fully support __attribute__."
6304                 val="$undef"
6305         else
6306                 echo "Your C compiler supports __attribute__."
6307                 val="$define"
6308         fi
6309 else
6310         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6311         val="$undef"
6312 fi
6313 set d_attribut
6314 eval $setvar
6315 $rm -f attrib*
6316
6317 : see if bcmp exists
6318 set bcmp d_bcmp
6319 eval $inlibc
6320
6321 : see if bcopy exists
6322 set bcopy d_bcopy
6323 eval $inlibc
6324
6325 : see if this is a unistd.h system
6326 set unistd.h i_unistd
6327 eval $inhdr
6328
6329 : see if getpgrp exists
6330 set getpgrp d_getpgrp
6331 eval $inlibc
6332
6333 case "$d_getpgrp" in
6334 "$define")
6335         echo " "
6336         echo "Checking to see which flavor of getpgrp is in use..."
6337         $cat >set.c <<EOP
6338 #$i_unistd I_UNISTD
6339 #include <sys/types.h>
6340 #ifdef I_UNISTD
6341 #  include <unistd.h>
6342 #endif
6343 main()
6344 {
6345         if (getuid() == 0) {
6346                 printf("(I see you are running Configure as super-user...)\n");
6347                 setuid(1);
6348         }
6349 #ifdef TRY_BSD_PGRP
6350         if (getpgrp(1) == 0)
6351                 exit(0);
6352 #else
6353         if (getpgrp() > 0)
6354                 exit(0);
6355 #endif
6356         exit(1);
6357 }
6358 EOP
6359         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6360                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6361                 val="$define"
6362         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6363                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6364                 val="$undef"
6365         else
6366                 echo "I can't seem to compile and run the test program."
6367                 if ./usg; then
6368                         xxx="a USG one, i.e. you use getpgrp()."
6369                 else
6370                         # SVR4 systems can appear rather BSD-ish.
6371                         case "$i_unistd" in
6372                         $undef)
6373                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6374                                 val="$define"
6375                                 ;;
6376                         $define)
6377                                 xxx="probably a USG one, i.e. you use getpgrp()."
6378                                 val="$undef"
6379                                 ;;
6380                         esac
6381                 fi
6382                 echo "Assuming your getpgrp is $xxx" >&4
6383         fi
6384         ;;
6385 *) val="$undef";;
6386 esac
6387 set d_bsdgetpgrp
6388 eval $setvar
6389 $rm -f set set.c
6390
6391 : see if setpgrp exists
6392 set setpgrp d_setpgrp
6393 eval $inlibc
6394
6395 case "$d_setpgrp" in
6396 "$define")
6397         echo " "
6398         echo "Checking to see which flavor of setpgrp is in use..."
6399         $cat >set.c <<EOP
6400 #$i_unistd I_UNISTD
6401 #include <sys/types.h>
6402 #ifdef I_UNISTD
6403 #  include <unistd.h>
6404 #endif
6405 main()
6406 {
6407         if (getuid() == 0) {
6408                 printf("(I see you are running Configure as super-user...)\n");
6409                 setuid(1);
6410         }
6411 #ifdef TRY_BSD_PGRP
6412         if (-1 == setpgrp(1, 1))
6413                 exit(0);
6414 #else
6415         if (setpgrp() != -1)
6416                 exit(0);
6417 #endif
6418         exit(1);
6419 }
6420 EOP
6421         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6422                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6423                 val="$define"
6424         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6425                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6426                 val="$undef"
6427         else
6428                 echo "(I can't seem to compile and run the test program.)"
6429                 if ./usg; then
6430                         xxx="a USG one, i.e. you use setpgrp()."
6431                 else
6432                         # SVR4 systems can appear rather BSD-ish.
6433                         case "$i_unistd" in
6434                         $undef)
6435                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6436                                 val="$define"
6437                                 ;;
6438                         $define)
6439                                 xxx="probably a USG one, i.e. you use setpgrp()."
6440                                 val="$undef"
6441                                 ;;
6442                         esac
6443                 fi
6444                 echo "Assuming your setpgrp is $xxx" >&4
6445         fi
6446         ;;
6447 *) val="$undef";;
6448 esac
6449 set d_bsdsetpgrp
6450 eval $setvar
6451 $rm -f set set.c
6452 : see if bzero exists
6453 set bzero d_bzero
6454 eval $inlibc
6455
6456 : check for lengths of integral types
6457 echo " "
6458 case "$intsize" in
6459 '')
6460         echo "Checking to see how big your integers are..." >&4
6461         $cat >intsize.c <<'EOCP'
6462 #include <stdio.h>
6463 main()
6464 {
6465         printf("intsize=%d;\n", sizeof(int));
6466         printf("longsize=%d;\n", sizeof(long));
6467         printf("shortsize=%d;\n", sizeof(short));
6468         exit(0);
6469 }
6470 EOCP
6471         set intsize
6472         if eval $compile_ok && ./intsize > /dev/null; then
6473                 eval `./intsize`
6474                 echo "Your integers are $intsize bytes long."
6475                 echo "Your long integers are $longsize bytes long."
6476                 echo "Your short integers are $shortsize bytes long."
6477         else
6478                 $cat >&4 <<EOM
6479 !
6480 Help! I can't compile and run the intsize test program: please enlighten me!
6481 (This is probably a misconfiguration in your system or libraries, and
6482 you really ought to fix it.  Still, I'll try anyway.)
6483 !
6484 EOM
6485                 dflt=4
6486                 rp="What is the size of an integer (in bytes)?"
6487                 . ./myread
6488                 intsize="$ans"
6489                 dflt=$intsize
6490                 rp="What is the size of a long integer (in bytes)?"
6491                 . ./myread
6492                 longsize="$ans"
6493                 dflt=2
6494                 rp="What is the size of a short integer (in bytes)?"
6495                 . ./myread
6496                 shortsize="$ans"
6497         fi
6498         ;;
6499 esac
6500 $rm -f intsize intsize.*
6501
6502 : see if signal is declared as pointer to function returning int or void
6503 echo " "
6504 xxx=`./findhdr signal.h`
6505 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6506 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6507         echo "You have int (*signal())() instead of void." >&4
6508         val="$undef"
6509 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6510         echo "You have void (*signal())()." >&4
6511         val="$define"
6512 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6513         echo "You have int (*signal())() instead of void." >&4
6514         val="$undef"
6515 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6516         echo "You have void (*signal())()." >&4
6517         val="$define"
6518 else
6519         case "$d_voidsig" in
6520         '')
6521         echo "I can't determine whether signal handler returns void or int..." >&4
6522                 dflt=void
6523                 rp="What type does your signal handler return?"
6524                 . ./myread
6525                 case "$ans" in
6526                 v*) val="$define";;
6527                 *) val="$undef";;
6528                 esac;;
6529         "$define")
6530                 echo "As you already told me, signal handler returns void." >&4
6531                 val="$define"
6532                 ;;
6533         *)      echo "As you already told me, signal handler returns int." >&4
6534                 val="$undef"
6535                 ;;
6536         esac
6537 fi
6538 set d_voidsig
6539 eval $setvar
6540 case "$d_voidsig" in
6541 "$define") signal_t="void";;
6542 *) signal_t="int";;
6543 esac
6544 $rm -f $$.tmp
6545
6546 : check for ability to cast large floats to 32-bit ints.
6547 echo " "
6548 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6549 if $test "$intsize" -ge 4; then
6550         xxx=int
6551 else
6552         xxx=long
6553 fi
6554 $cat >try.c <<EOCP
6555 #include <stdio.h>
6556 #include <sys/types.h>
6557 #include <signal.h>
6558 $signal_t blech(s) int s; { exit(3); }
6559 main()
6560 {
6561         $xxx i32;
6562         double f, g;
6563         int result = 0;
6564         char str[16];
6565         signal(SIGFPE, blech);
6566
6567         /* Don't let compiler optimize the test away.  Store the number 
6568            in a writable string for gcc to pass to sscanf under HP/UX.
6569         */
6570         sprintf(str, "2147483647");
6571         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6572         g = 10 * f;
6573         i32  = ($xxx) g;
6574
6575         /* x86 processors will probably give 0x8000 0000, which is a
6576        sign change.  We don't want that.  We want to mimic SPARC
6577            behavior here, which is to preserve the sign and give
6578            back 0x7fff ffff.
6579         */
6580         if (i32 != ($xxx) f)
6581                 result |= 1;
6582         exit(result);
6583 }
6584 EOCP
6585 set try
6586 if eval $compile_ok; then
6587         ./try
6588         yyy=$?
6589 else
6590         echo "(I can't seem to compile the test program--assuming it can't)"
6591         yyy=1
6592 fi
6593 case "$yyy" in
6594 0)      val="$define"
6595         echo "Yup, it can."
6596         ;;
6597 *)      val="$undef"
6598         echo "Nope, it can't."
6599         ;;
6600 esac
6601 set d_casti32
6602 eval $setvar
6603 $rm -f try try.*
6604
6605 : check for ability to cast negative floats to unsigned
6606 echo " "
6607 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6608 $cat >try.c <<EOCP
6609 #include <stdio.h>
6610 #include <sys/types.h>
6611 #include <signal.h>
6612 $signal_t blech(s) int s; { exit(7); }
6613 $signal_t blech_in_list(s) int s; { exit(4); }
6614 unsigned long dummy_long(p) unsigned long p; { return p; }
6615 unsigned int dummy_int(p) unsigned int p; { return p; }
6616 unsigned short dummy_short(p) unsigned short p; { return p; }
6617 main()
6618 {
6619         double f;
6620         unsigned long along;
6621         unsigned int aint;
6622         unsigned short ashort;
6623         int result = 0;
6624         char str[16];
6625         
6626         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6627            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6628            optimized the whole file away
6629         */
6630         /* Store the number in a writable string for gcc to pass to 
6631            sscanf under HP/UX.
6632         */
6633         sprintf(str, "-123");
6634         sscanf(str, "%lf", &f);  /* f = -123.; */
6635
6636         signal(SIGFPE, blech);
6637         along = (unsigned long)f;
6638         aint = (unsigned int)f;
6639         ashort = (unsigned short)f;
6640         if (along != (unsigned long)-123)
6641                 result |= 1;
6642         if (aint != (unsigned int)-123)
6643                 result |= 1;
6644         if (ashort != (unsigned short)-123)
6645                 result |= 1;
6646         sprintf(str, "1073741824.");
6647         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6648         f = f + f;
6649         along = 0;
6650         along = (unsigned long)f;
6651         if (along != 0x80000000)
6652                 result |= 2;
6653         f -= 1.;
6654         along = 0;
6655         along = (unsigned long)f;
6656         if (along != 0x7fffffff)
6657                 result |= 1;
6658         f += 2.;
6659         along = 0;
6660         along = (unsigned long)f;
6661         if (along != 0x80000001)
6662                 result |= 2;
6663         if (result)
6664                 exit(result);
6665         signal(SIGFPE, blech_in_list);
6666         sprintf(str, "123.");
6667         sscanf(str, "%lf", &f);  /* f = 123.; */
6668         along = dummy_long((unsigned long)f);
6669         aint = dummy_int((unsigned int)f);
6670         ashort = dummy_short((unsigned short)f);
6671         if (along != (unsigned long)123)
6672                 result |= 4;
6673         if (aint != (unsigned int)123)
6674                 result |= 4;
6675         if (ashort != (unsigned short)123)
6676                 result |= 4;
6677         exit(result);
6678
6679 }
6680 EOCP
6681 set try
6682 if eval $compile_ok; then
6683         ./try
6684         castflags=$?
6685 else
6686         echo "(I can't seem to compile the test program--assuming it can't)"
6687         castflags=7
6688 fi
6689 case "$castflags" in
6690 0)      val="$define"
6691         echo "Yup, it can."
6692         ;;
6693 *)      val="$undef"
6694         echo "Nope, it can't."
6695         ;;
6696 esac
6697 set d_castneg
6698 eval $setvar
6699 $rm -f try.*
6700
6701 : see if vprintf exists
6702 echo " "
6703 if set vprintf val -f d_vprintf; eval $csym; $val; then
6704         echo 'vprintf() found.' >&4
6705         val="$define"
6706         $cat >vprintf.c <<'EOF'
6707 #include <varargs.h>
6708
6709 main() { xxx("foo"); }
6710
6711 xxx(va_alist)
6712 va_dcl
6713 {
6714         va_list args;
6715         char buf[10];
6716
6717         va_start(args);
6718         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6719 }
6720 EOF
6721         set vprintf
6722         if eval $compile && ./vprintf; then
6723                 echo "Your vsprintf() returns (int)." >&4
6724                 val2="$undef"
6725         else
6726                 echo "Your vsprintf() returns (char*)." >&4
6727                 val2="$define"
6728         fi
6729 else
6730         echo 'vprintf() NOT found.' >&4
6731                 val="$undef"
6732                 val2="$undef"
6733 fi
6734 set d_vprintf
6735 eval $setvar
6736 val=$val2
6737 set d_charvspr
6738 eval $setvar
6739
6740 : see if chown exists
6741 set chown d_chown
6742 eval $inlibc
6743
6744 : see if chroot exists
6745 set chroot d_chroot
6746 eval $inlibc
6747
6748 : see if chsize exists
6749 set chsize d_chsize
6750 eval $inlibc
6751
6752 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6753 while $test $# -ge 2; do
6754         case "$1" in
6755         $define) echo "#include <$2>";;
6756         esac ;
6757     shift 2;
6758 done > try.c;
6759 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6760 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6761         val="$define";
6762 else
6763         val="$undef";
6764 fi;
6765 set $varname;
6766 eval $setvar;
6767 $rm -f try.c try.o'
6768
6769 : see if this is a sys/uio.h system
6770 set sys/uio.h i_sysuio
6771 eval $inhdr
6772
6773 echo "Checking to see if your system supports struct iovec..." >&4
6774 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6775 eval $hasfield
6776 case "$d_iovec_s" in
6777 "$define")      echo "Yup, it does." >&4
6778                 ;;
6779 *)              echo "Nope, it doesn't." >&4
6780                 ;;
6781 esac
6782
6783 socketlib=''
6784 sockethdr=''
6785 : see whether socket exists
6786 echo " "
6787 $echo $n "Hmm... $c" >&4
6788 if set socket val -f d_socket; eval $csym; $val; then
6789         echo "Looks like you have Berkeley networking support." >&4
6790         d_socket="$define"
6791         if set setsockopt val -f; eval $csym; $val; then
6792                 d_oldsock="$undef"
6793         else
6794                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6795                 d_oldsock="$define"
6796         fi
6797 else
6798         if $contains socklib libc.list >/dev/null 2>&1; then
6799                 echo "Looks like you have Berkeley networking support." >&4
6800                 d_socket="$define"
6801                 : we will have to assume that it supports the 4.2 BSD interface
6802                 d_oldsock="$undef"
6803         else
6804                 echo "You don't have Berkeley networking in libc$_a..." >&4
6805                 if test "X$d_socket" = "X$define"; then
6806                    echo "...but you seem to believe that you have sockets." >&4
6807                 else
6808                         for net in net socket
6809                         do
6810                                 if test -f /usr/lib/lib$net$_a; then
6811                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6812                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6813                                         if $contains socket libc.list >/dev/null 2>&1; then
6814                                                 d_socket="$define"
6815                                                 socketlib="-l$net"
6816                                                 case "$net" in
6817                                                 net)
6818                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6819                                                         sockethdr="-I/usr/netinclude"
6820                                                         ;;
6821                                                 esac
6822                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6823                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6824                                                         d_oldsock="$undef"
6825                                                 else
6826                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6827                                                         d_oldsock="$define"
6828                                                 fi
6829                                                 break
6830                                         fi
6831                                 fi
6832                         done
6833                         if test "X$d_socket" != "X$define"; then
6834                            echo "or anywhere else I see." >&4
6835                            d_socket="$undef"
6836                            d_oldsock="$undef"
6837                         fi
6838                 fi
6839         fi
6840 fi
6841
6842 : see if socketpair exists
6843 set socketpair d_sockpair
6844 eval $inlibc
6845
6846
6847 echo " "
6848 echo "Checking the availability of certain socket constants..." >& 4
6849 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6850         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6851         $cat >try.c <<EOF
6852 #include <sys/types.h>
6853 #include <sys/socket.h>
6854 int main() {
6855     int i = $ENUM;
6856 }
6857 EOF
6858         val="$undef"
6859         set try; if eval $compile; then
6860                 val="$define"
6861         fi
6862         set d_${enum}; eval $setvar
6863         $rm -f try.c try
6864 done
6865
6866 set sendmsg d_sendmsg
6867 eval $inlibc
6868
6869 set recvmsg d_recvmsg
6870 eval $inlibc
6871
6872 echo " "
6873 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6874 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6875 eval $hasfield
6876 case "$d_msghdr_s" in
6877 "$define")      echo "Yup, it does." >&4
6878                 ;;
6879 *)              echo "Nope, it doesn't." >&4
6880                 ;;
6881 esac
6882
6883 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6884 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6885 eval $hasfield
6886 case "$d_cmsghdr_s" in
6887 "$define")      echo "Yup, it does." >&4
6888                 ;;
6889 *)              echo "Nope, it doesn't." >&4
6890                 ;;
6891 esac
6892
6893 : check for const keyword
6894 echo " "
6895 echo 'Checking to see if your C compiler knows about "const"...' >&4
6896 $cat >const.c <<'EOCP'
6897 typedef struct spug { int drokk; } spug;
6898 main()
6899 {
6900         const char *foo;
6901         const spug y;
6902 }
6903 EOCP
6904 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6905         val="$define"
6906         echo "Yup, it does."
6907 else
6908         val="$undef"
6909         echo "Nope, it doesn't."
6910 fi
6911 set d_const
6912 eval $setvar
6913
6914 : see if crypt exists
6915 echo " "
6916 if set crypt val -f d_crypt; eval $csym; $val; then
6917         echo 'crypt() found.' >&4
6918         val="$define"
6919         cryptlib=''
6920 else
6921         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
6922         if $test -z "$cryptlib"; then
6923                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
6924         else
6925                 cryptlib=-lcrypt
6926         fi
6927         if $test -z "$cryptlib"; then
6928                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
6929         else
6930                 cryptlib=-lcrypt
6931         fi
6932         if $test -z "$cryptlib"; then
6933                 cryptlib=`./loc libcrypt$_a "" $libpth`
6934         else
6935                 cryptlib=-lcrypt
6936         fi
6937         if $test -z "$cryptlib"; then
6938                 echo 'crypt() NOT found.' >&4
6939                 val="$undef"
6940         else
6941                 val="$define"
6942         fi
6943 fi
6944 set d_crypt
6945 eval $setvar
6946
6947 : get csh whereabouts
6948 case "$csh" in
6949 'csh') val="$undef" ;;
6950 *) val="$define" ;;
6951 esac
6952 set d_csh
6953 eval $setvar
6954 : Respect a hint or command line value for full_csh.
6955 case "$full_csh" in
6956 '') full_csh=$csh ;;
6957 esac
6958
6959 : see if cuserid exists
6960 set cuserid d_cuserid
6961 eval $inlibc
6962
6963 : see if this is a limits.h system
6964 set limits.h i_limits
6965 eval $inhdr
6966
6967 : see if this is a float.h system
6968 set float.h i_float
6969 eval $inhdr
6970
6971 : See if number of significant digits in a double precision number is known
6972 echo " "
6973 $cat >dbl_dig.c <<EOM
6974 #$i_limits I_LIMITS
6975 #$i_float I_FLOAT
6976 #ifdef I_LIMITS
6977 #include <limits.h>
6978 #endif
6979 #ifdef I_FLOAT
6980 #include <float.h>
6981 #endif
6982 #ifdef DBL_DIG
6983 printf("Contains DBL_DIG");
6984 #endif
6985 EOM
6986 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
6987 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
6988         echo "DBL_DIG found." >&4
6989         val="$define"
6990 else
6991         echo "DBL_DIG NOT found." >&4
6992         val="$undef"
6993 fi
6994 $rm -f dbl_dig.?
6995 set d_dbl_dig
6996 eval $setvar
6997
6998
6999 if $test X"$use64bits" = X"$define"; then
7000         : see if dbminit64 exists
7001         set dbminit64 d_dbminit64
7002         eval $inlibc
7003
7004         : see if dbmclose64 exists
7005         set dbmclose64 d_dbmclose64
7006         eval $inlibc
7007
7008         : see if fetch64 exists
7009         set fetch64 d_fetch64
7010         eval $inlibc
7011
7012         : see if store64 exists
7013         set store64 d_store64
7014         eval $inlibc
7015
7016         : see if delete64 exists
7017         set delete64 d_delete64
7018         eval $inlibc
7019
7020         : see if firstkey64 exists
7021         set firstkey64 d_firstkey64
7022         eval $inlibc
7023
7024         : see if nextkey64 exists
7025         set nextkey64 d_nextkey64
7026         eval $inlibc
7027 else
7028         val="$undef"
7029         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7030         do
7031                 set $xxx
7032                 eval $setvar
7033         done
7034 fi
7035
7036 : see if difftime exists
7037 set difftime d_difftime
7038 eval $inlibc
7039
7040 : see if sys/stat.h is available
7041 set sys/stat.h i_sysstat
7042 eval $inhdr
7043
7044 : see if this is a dirent system
7045 echo " "
7046 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7047         val="$define"
7048         echo "<dirent.h> found." >&4
7049 else
7050         val="$undef"
7051         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7052                 echo "<sys/dir.h> found." >&4
7053                 echo " "
7054         else
7055                 xinc=`./findhdr sys/ndir.h`
7056         fi
7057         echo "<dirent.h> NOT found." >&4
7058 fi
7059 set i_dirent
7060 eval $setvar
7061
7062 : Look for type of directory structure.
7063 echo " "
7064 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7065
7066 case "$direntrytype" in
7067 ''|' ')
7068         case "$i_dirent" in
7069         $define) guess1='struct dirent' ;;
7070         *) guess1='struct direct'  ;;
7071         esac
7072         ;;
7073 *)      guess1="$direntrytype"
7074         ;;
7075 esac
7076
7077 case "$guess1" in
7078 'struct dirent') guess2='struct direct' ;;
7079 *) guess2='struct dirent' ;;
7080 esac
7081                 
7082 if $contains "$guess1" try.c >/dev/null 2>&1; then
7083         direntrytype="$guess1"
7084         echo "Your directory entries are $direntrytype." >&4
7085 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7086         direntrytype="$guess2"
7087         echo "Your directory entries seem to be $direntrytype." >&4
7088 else
7089         echo "I don't recognize your system's directory entries." >&4
7090         rp="What type is used for directory entries on this system?"
7091         dflt="$guess1"
7092         . ./myread
7093         direntrytype="$ans"
7094 fi
7095 $rm -f try.c
7096
7097
7098 : see if the directory entry stores field length
7099 echo " "
7100 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7101 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7102         echo "Good, your directory entry keeps length information in d_namlen." >&4
7103         val="$define"
7104 else
7105         echo "Your directory entry does not know about the d_namlen field." >&4
7106         val="$undef"
7107 fi
7108 set d_dirnamlen
7109 eval $setvar
7110 $rm -f try.c
7111
7112
7113 if $test X"$use64bits" = X"$define"; then
7114         : see if fstat64 exists
7115         set fstat64 d_fstat64
7116         eval $inlibc
7117
7118         : see if ftruncate64 exists
7119         set ftruncate64 d_ftruncate64
7120         eval $inlibc
7121
7122         : see if lockf64 exists
7123         set lockf64 d_lockf64
7124         eval $inlibc
7125
7126         : see if lseek64 exists
7127         set lseek64 d_lseek64
7128         eval $inlibc
7129
7130         : see if lstat64 exists
7131         set lstat64 d_lstat64
7132         eval $inlibc
7133
7134         : see if open64 exists
7135         set open64 d_open64
7136         eval $inlibc
7137
7138         : see if opendir64 exists
7139         set opendir64 d_opendir64
7140         eval $inlibc
7141
7142         : see if readdir64 exists
7143         set readdir64 d_readdir64
7144         eval $inlibc
7145
7146         : see if seekdir64 exists
7147         set seekdir64 d_seekdir64
7148         eval $inlibc
7149
7150         : see if stat64 exists
7151         set stat64 d_stat64
7152         eval $inlibc
7153
7154         : see if telldir64 exists
7155         set telldir64 d_telldir64
7156         eval $inlibc
7157
7158         : see if truncate64 exists
7159         set truncate64 d_truncate64
7160         eval $inlibc
7161
7162         : check for off64_t
7163         echo " "
7164         echo $n "Checking to see if your system supports off64_t...$c" >&4
7165         $cat >try.c <<EOCP
7166 #include <sys/types.h>
7167 off64_t foo() { off64_t x; x = 7; return x; }'
7168 EOCP
7169         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7170                 val="$define"
7171                 echo " Yup, it does." >&4
7172         else
7173                 val="$undef"
7174                 echo " Nope, it doesn't." >&4
7175         fi
7176         $rm -f try.*
7177         set d_off64t
7178         eval $setvar
7179
7180         : check for ino64_t
7181         echo " "
7182         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7183         val="$undef"
7184         case "$i_sysstat" in
7185         "$define" )
7186                 $cat >try.c <<EOCP
7187 #include <sys/types.h>
7188 #include <sys/stat.h>
7189 ino64_t foo() { ino64_t x; x = 7; return x; }'
7190 EOCP
7191                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7192                         val="$define"
7193                 fi
7194                 $rm -f try.*
7195                 ;;
7196         esac
7197         if $test "X$val" = X"$define"; then
7198                 echo " Yup, it does." >&4
7199         else
7200                 echo " Nope, it doesn't." >&4
7201         fi
7202         set d_ino64t
7203         eval $setvar
7204
7205         : check for struct flock64
7206         echo " "
7207         echo "Checking to see if your system supports struct flock64..." >&4
7208         if $h_fcntl; then
7209                 set d_flock64_s flock64 l_len define fcntl.h
7210                 eval $hasfield
7211         else
7212                 val="$undef"
7213                 set d_flock64_s
7214                 eval $setvar
7215         fi
7216         case "$d_flock64_s" in
7217         "$define")      echo "Yup, it does." >&4
7218                         ;;
7219         *)              echo "Nope, it doesn't." >&4
7220                         ;;
7221         esac
7222
7223         : check for struct dirent64
7224         echo " "
7225         echo "Checking to see if your system supports struct dirent64..." >&4
7226         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7227         eval $hasfield
7228         case "$d_dirent64_s" in
7229         "$define")      echo "Yup, it does." >&4
7230                         ;;
7231         *)              echo "Nope, it doesn't." >&4
7232                         ;;
7233         esac
7234
7235 else
7236         val="$undef"
7237         for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64t d_ino64t d_flock64_s d_dirent64_s
7238         do
7239                 set $xxx
7240                 eval $setvar
7241         done
7242 fi
7243
7244 : see if dlerror exists
7245 xxx_runnm="$runnm"
7246 runnm=false
7247 set dlerror d_dlerror
7248 eval $inlibc
7249 runnm="$xxx_runnm"
7250
7251 : see if dlfcn is available
7252 set dlfcn.h i_dlfcn
7253 eval $inhdr
7254
7255 case "$usedl" in
7256 $define|y|true)
7257         $cat << EOM
7258
7259 On a few systems, the dynamically loaded modules that perl generates and uses
7260 will need a different extension than shared libs. The default will probably
7261 be appropriate.
7262
7263 EOM
7264         case "$dlext" in
7265         '')     dflt="$so" ;;
7266         *)      dflt="$dlext" ;;
7267         esac
7268         rp='What is the extension of dynamically loaded modules'
7269         . ./myread
7270         dlext="$ans"
7271         ;;
7272 *)
7273         dlext="none"
7274         ;;
7275 esac
7276
7277 : Check if dlsym need a leading underscore
7278 echo " "
7279 val="$undef"
7280
7281 case "$dlsrc" in
7282 dl_dlopen.xs)
7283         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7284         $cat >dyna.c <<'EOM'
7285 fred () { }
7286 EOM
7287
7288 $cat >fred.c<<EOM
7289
7290 #include <stdio.h>
7291 #$i_dlfcn I_DLFCN
7292 #ifdef I_DLFCN
7293 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7294 #else
7295 #include <sys/types.h>
7296 #include <nlist.h>
7297 #include <link.h>
7298 #endif
7299
7300 extern int fred() ;
7301
7302 main()
7303 {
7304     void * handle ;
7305     void * symbol ;
7306 #ifndef RTLD_LAZY
7307     int mode = 1 ;
7308 #else
7309     int mode = RTLD_LAZY ;
7310 #endif
7311     handle = dlopen("./dyna.$dlext", mode) ;
7312     if (handle == NULL) {
7313         printf ("1\n") ;
7314         fflush (stdout) ;
7315         exit(0);
7316     }
7317     symbol = dlsym(handle, "fred") ;
7318     if (symbol == NULL) {
7319         /* try putting a leading underscore */
7320         symbol = dlsym(handle, "_fred") ;
7321         if (symbol == NULL) {
7322             printf ("2\n") ;
7323             fflush (stdout) ;
7324             exit(0);
7325         }
7326         printf ("3\n") ;
7327     }
7328     else
7329         printf ("4\n") ;
7330     fflush (stdout) ;
7331     exit(0);
7332 }
7333 EOM
7334         : Call the object file tmp-dyna.o in case dlext=o.
7335         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7336                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7337                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7338                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7339                 xxx=`./fred`
7340                 case $xxx in
7341                 1)      echo "Test program failed using dlopen." >&4
7342                         echo "Perhaps you should not use dynamic loading." >&4;;
7343                 2)      echo "Test program failed using dlsym." >&4
7344                         echo "Perhaps you should not use dynamic loading." >&4;;
7345                 3)      echo "dlsym needs a leading underscore" >&4
7346                         val="$define" ;;
7347                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7348                 esac
7349         else
7350                 echo "I can't compile and run the test program." >&4
7351         fi
7352         ;;
7353 esac
7354                 
7355 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7356
7357 set d_dlsymun
7358 eval $setvar
7359
7360 hasproto='varname=$1; func=$2; shift; shift;
7361 while $test $# -ge 2; do
7362         case "$1" in
7363         $define) echo "#include <$2>";;
7364         esac ;
7365     shift 2;
7366 done > try.c;
7367 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7368 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7369         echo "$func() prototype found.";
7370         val="$define";
7371 else
7372         echo "$func() prototype NOT found.";
7373         val="$undef";
7374 fi;
7375 set $varname;
7376 eval $setvar;
7377 $rm -f try.c tryout.c'
7378
7379 : see if prototype for drand48 is available
7380 echo " "
7381 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7382 eval $hasproto
7383
7384 : see if dup2 exists
7385 set dup2 d_dup2
7386 eval $inlibc
7387
7388 : see if eaccess exists
7389 set eaccess d_eaccess
7390 eval $inlibc
7391
7392 : see if endgrent exists
7393 set endgrent d_endgrent
7394 eval $inlibc
7395
7396 : see if endhostent exists
7397 set endhostent d_endhent
7398 eval $inlibc
7399
7400 : see if endnetent exists
7401 set endnetent d_endnent
7402 eval $inlibc
7403
7404 : see if endprotoent exists
7405 set endprotoent d_endpent
7406 eval $inlibc
7407
7408 : see if endpwent exists
7409 set endpwent d_endpwent
7410 eval $inlibc
7411
7412 : see if endservent exists
7413 set endservent d_endsent
7414 eval $inlibc
7415
7416 : Locate the flags for 'open()'
7417 echo " "
7418 $cat >open3.c <<'EOCP'
7419 #include <sys/types.h>
7420 #ifdef I_FCNTL
7421 #include <fcntl.h>
7422 #endif
7423 #ifdef I_SYS_FILE
7424 #include <sys/file.h>
7425 #endif
7426 main() {
7427         if(O_RDONLY);
7428 #ifdef O_TRUNC
7429         exit(0);
7430 #else
7431         exit(1);
7432 #endif
7433 }
7434 EOCP
7435 : check sys/file.h first to get FREAD on Sun
7436 if $test `./findhdr sys/file.h` && \
7437                 set open3 -DI_SYS_FILE && eval $compile; then
7438         h_sysfile=true;
7439         echo "<sys/file.h> defines the O_* constants..." >&4
7440         if ./open3; then
7441                 echo "and you have the 3 argument form of open()." >&4
7442                 val="$define"
7443         else
7444                 echo "but not the 3 argument form of open().  Oh, well." >&4
7445                 val="$undef"
7446         fi
7447 elif $test `./findhdr fcntl.h` && \
7448                 set open3 -DI_FCNTL && eval $compile; then
7449         h_fcntl=true;
7450         echo "<fcntl.h> defines the O_* constants..." >&4
7451         if ./open3; then
7452                 echo "and you have the 3 argument form of open()." >&4
7453                 val="$define"
7454         else
7455                 echo "but not the 3 argument form of open().  Oh, well." >&4
7456                 val="$undef"
7457         fi
7458 else
7459         val="$undef"
7460         echo "I can't find the O_* constant definitions!  You got problems." >&4
7461 fi
7462 set d_open3
7463 eval $setvar
7464 $rm -f open3*
7465
7466 : check for non-blocking I/O stuff
7467 case "$h_sysfile" in
7468 true) echo "#include <sys/file.h>" > head.c;;
7469 *)
7470         case "$h_fcntl" in
7471         true) echo "#include <fcntl.h>" > head.c;;
7472         *) echo "#include <sys/fcntl.h>" > head.c;;
7473         esac
7474         ;;
7475 esac
7476 echo " "
7477 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7478 case "$o_nonblock" in
7479 '')
7480         $cat head.c > try.c
7481         $cat >>try.c <<'EOCP'
7482 main() {
7483 #ifdef O_NONBLOCK
7484         printf("O_NONBLOCK\n");
7485         exit(0);
7486 #endif
7487 #ifdef O_NDELAY
7488         printf("O_NDELAY\n");
7489         exit(0);
7490 #endif
7491 #ifdef FNDELAY
7492         printf("FNDELAY\n");
7493         exit(0);
7494 #endif
7495         exit(0);
7496 }
7497 EOCP
7498         set try
7499         if eval $compile_ok; then
7500                 o_nonblock=`./try`
7501                 case "$o_nonblock" in
7502                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7503                 *) echo "Seems like we can use $o_nonblock.";;
7504                 esac
7505         else
7506                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7507         fi
7508         ;;
7509 *) echo "Using $hint value $o_nonblock.";;
7510 esac
7511 $rm -f try try.* .out core
7512
7513 echo " "
7514 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7515 case "$eagain" in
7516 '')
7517         $cat head.c > try.c
7518         $cat >>try.c <<EOCP
7519 #include <errno.h>
7520 #include <sys/types.h>
7521 #include <signal.h>
7522 #define MY_O_NONBLOCK $o_nonblock
7523 #ifndef errno  /* XXX need better Configure test */
7524 extern int errno;
7525 #endif
7526 $signal_t blech(x) int x; { exit(3); }
7527 EOCP
7528         $cat >> try.c <<'EOCP'
7529 main()
7530 {
7531         int pd[2];
7532         int pu[2];
7533         char buf[1];
7534         char string[100];
7535
7536         pipe(pd);       /* Down: child -> parent */
7537         pipe(pu);       /* Up: parent -> child */
7538         if (0 != fork()) {
7539                 int ret;
7540                 close(pd[1]);   /* Parent reads from pd[0] */
7541                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7542                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7543                         exit(1);
7544                 signal(SIGALRM, blech);
7545                 alarm(5);
7546                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7547                         exit(2);
7548                 sprintf(string, "%d\n", ret);
7549                 write(2, string, strlen(string));
7550                 alarm(0);
7551 #ifdef EAGAIN
7552                 if (errno == EAGAIN) {
7553                         printf("EAGAIN\n");
7554                         goto ok;
7555                 }
7556 #endif
7557 #ifdef EWOULDBLOCK
7558                 if (errno == EWOULDBLOCK)
7559                         printf("EWOULDBLOCK\n");
7560 #endif
7561         ok:
7562                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7563                 sleep(2);                               /* Give it time to close our pipe */
7564                 alarm(5);
7565                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7566                 alarm(0);
7567                 sprintf(string, "%d\n", ret);
7568                 write(3, string, strlen(string));
7569                 exit(0);
7570         }
7571
7572         close(pd[0]);                   /* We write to pd[1] */
7573         close(pu[1]);                   /* We read from pu[0] */
7574         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7575         close(pd[1]);                   /* Pipe pd is now fully closed! */
7576         exit(0);                                /* Bye bye, thank you for playing! */
7577 }
7578 EOCP
7579         set try
7580         if eval $compile_ok; then
7581                 echo "$startsh" >mtry
7582                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7583                 chmod +x mtry
7584                 ./mtry >/dev/null 2>&1
7585                 case $? in
7586                 0) eagain=`$cat try.out`;;
7587                 1) echo "Could not perform non-blocking setting!";;
7588                 2) echo "I did a successful read() for something that was not there!";;
7589                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7590                 *) echo "Something terribly wrong happened during testing.";;
7591                 esac
7592                 rd_nodata=`$cat try.ret`
7593                 echo "A read() system call with no data present returns $rd_nodata."
7594                 case "$rd_nodata" in
7595                 0|-1) ;;
7596                 *)
7597                         echo "(That's peculiar, fixing that to be -1.)"
7598                         rd_nodata=-1
7599                         ;;
7600                 esac
7601                 case "$eagain" in
7602                 '')
7603                         echo "Forcing errno EAGAIN on read() with no data available."
7604                         eagain=EAGAIN
7605                         ;;
7606                 *)
7607                         echo "Your read() sets errno to $eagain when no data is available."
7608                         ;;
7609                 esac
7610                 status=`$cat try.err`
7611                 case "$status" in
7612                 0) echo "And it correctly returns 0 to signal EOF.";;
7613                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7614                 *) echo "However, your read() returns '$status' on EOF??";;
7615                 esac
7616                 val="$define"
7617                 if test "$status" = "$rd_nodata"; then
7618                         echo "WARNING: you can't distinguish between EOF and no data!"
7619                         val="$undef"
7620                 fi
7621         else
7622                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7623                 eagain=EAGAIN
7624         fi
7625         set d_eofnblk
7626         eval $setvar
7627         ;;
7628 *)
7629         echo "Using $hint value $eagain."
7630         echo "Your read() returns $rd_nodata when no data is present."
7631         case "$d_eofnblk" in
7632         "$define") echo "And you can see EOF because read() returns 0.";;
7633         "$undef") echo "But you can't see EOF status from read() returned value.";;
7634         *)
7635                 echo "(Assuming you can't see EOF status from read anyway.)"
7636                 d_eofnblk=$undef
7637                 ;;
7638         esac
7639         ;;
7640 esac
7641 $rm -f try try.* .out core head.c mtry
7642
7643 : see if fchmod exists
7644 set fchmod d_fchmod
7645 eval $inlibc
7646
7647 : see if fchown exists
7648 set fchown d_fchown
7649 eval $inlibc
7650
7651 : see if this is an fcntl system
7652 set fcntl d_fcntl
7653 eval $inlibc
7654
7655 : see if sys/select.h has to be included
7656 set sys/select.h i_sysselct
7657 eval $inhdr
7658
7659 : see if we should include time.h, sys/time.h, or both
7660 echo " "
7661 if test "X$timeincl" = X; then
7662         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7663         $echo $n "I'm now running the test program...$c"
7664         $cat >try.c <<'EOCP'
7665 #include <sys/types.h>
7666 #ifdef I_TIME
7667 #include <time.h>
7668 #endif
7669 #ifdef I_SYSTIME
7670 #ifdef SYSTIMEKERNEL
7671 #define KERNEL
7672 #endif
7673 #include <sys/time.h>
7674 #endif
7675 #ifdef I_SYSSELECT
7676 #include <sys/select.h>
7677 #endif
7678 main()
7679 {
7680         struct tm foo;
7681 #ifdef S_TIMEVAL
7682         struct timeval bar;
7683 #endif
7684 #ifdef S_TIMEZONE
7685         struct timezone tzp;
7686 #endif
7687         if (foo.tm_sec == foo.tm_sec)
7688                 exit(0);
7689 #ifdef S_TIMEVAL
7690         if (bar.tv_sec == bar.tv_sec)
7691                 exit(0);
7692 #endif
7693         exit(1);
7694 }
7695 EOCP
7696         flags=''
7697         for s_timezone in '-DS_TIMEZONE' ''; do
7698         sysselect=''
7699         for s_timeval in '-DS_TIMEVAL' ''; do
7700         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7701         for i_time in '' '-DI_TIME'; do
7702         for i_systime in '-DI_SYSTIME' ''; do
7703                 case "$flags" in
7704                 '') $echo $n ".$c"
7705                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7706                         if eval $compile; then
7707                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7708                                 shift
7709                                 flags="$*"
7710                                 echo " "
7711                                 $echo $n "Succeeded with $flags$c"
7712                         fi
7713                         ;;
7714                 esac
7715         done
7716         done
7717         done
7718         done
7719         done
7720         timeincl=''
7721         echo " "
7722         case "$flags" in
7723         *SYSTIMEKERNEL*) i_systimek="$define"
7724                 timeincl=`./findhdr sys/time.h`
7725                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7726         *) i_systimek="$undef";;
7727         esac
7728         case "$flags" in
7729         *I_TIME*) i_time="$define"
7730                 timeincl=`./findhdr time.h`" $timeincl"
7731                 echo "We'll include <time.h>." >&4;;
7732         *) i_time="$undef";;
7733         esac
7734         case "$flags" in
7735         *I_SYSTIME*) i_systime="$define"
7736                 timeincl=`./findhdr sys/time.h`" $timeincl"
7737                 echo "We'll include <sys/time.h>." >&4;;
7738         *) i_systime="$undef";;
7739         esac
7740         $rm -f try.c try
7741 fi
7742
7743 : check for fd_set items
7744 $cat <<EOM
7745
7746 Checking to see how well your C compiler handles fd_set and friends ...
7747 EOM
7748 $cat >fd_set.c <<EOCP
7749 #$i_systime I_SYS_TIME
7750 #$i_sysselct I_SYS_SELECT
7751 #$d_socket HAS_SOCKET
7752 #include <sys/types.h>
7753 #ifdef HAS_SOCKET
7754 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7755 #endif
7756 #ifdef I_SYS_TIME
7757 #include <sys/time.h>
7758 #endif
7759 #ifdef I_SYS_SELECT
7760 #include <sys/select.h>
7761 #endif
7762 main() {
7763         fd_set fds;
7764
7765 #ifdef TRYBITS
7766         if(fds.fds_bits);
7767 #endif
7768
7769 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7770         exit(0);
7771 #else
7772         exit(1);
7773 #endif
7774 }
7775 EOCP
7776 set fd_set -DTRYBITS
7777 if eval $compile; then
7778         d_fds_bits="$define"
7779         d_fd_set="$define"
7780         echo "Well, your system knows about the normal fd_set typedef..." >&4
7781         if ./fd_set; then
7782                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7783                 d_fd_macros="$define"
7784         else
7785                 $cat >&4 <<'EOM'
7786 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7787 EOM
7788                 d_fd_macros="$undef"
7789         fi
7790 else
7791         $cat <<'EOM'
7792 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7793 EOM
7794         set fd_set
7795         if eval $compile; then
7796                 d_fds_bits="$undef"
7797                 d_fd_set="$define"
7798                 echo "Well, your system has some sort of fd_set available..." >&4
7799                 if ./fd_set; then
7800                         echo "and you have the normal fd_set macros." >&4
7801                         d_fd_macros="$define"
7802                 else
7803                         $cat <<'EOM'
7804 but not the normal fd_set macros!  Gross!  More work for me...
7805 EOM
7806                         d_fd_macros="$undef"
7807                 fi
7808         else
7809         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7810                 d_fd_set="$undef"
7811                 d_fds_bits="$undef"
7812                 d_fd_macros="$undef"
7813         fi
7814 fi
7815 $rm -f fd_set*
7816
7817 : see if fgetpos exists
7818 set fgetpos d_fgetpos
7819 eval $inlibc
7820
7821
7822 if $test X"$use64bits" = X"$define"; then
7823         : see if fgetpos64 exists
7824         set fgetpos64 d_fgetpos64
7825         eval $inlibc
7826
7827         : see if fopen64 exists
7828         set freopen64 d_fopen64
7829         eval $inlibc
7830
7831         : see if freopen64 exists
7832         set freopen64 d_freopen64
7833         eval $inlibc
7834
7835         : see if fseek64 exists
7836         set fseek64 d_fseek64
7837         eval $inlibc
7838
7839         : see if fseeko64 exists
7840         set fseeko64 d_fseeko64
7841         eval $inlibc
7842
7843         : see if fsetpos64 exists
7844         set fsetpos64 d_fsetpos64
7845         eval $inlibc
7846
7847         : see if ftell64 exists
7848         set ftell64 d_ftell64
7849         eval $inlibc
7850
7851         : see if ftello64 exists
7852         set ftello64 d_ftello64
7853         eval $inlibc
7854
7855         : see if tmpfile64 exists
7856         set tmpfile64 d_tmpfile64
7857         eval $inlibc
7858 else
7859         val="$undef"
7860         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7861         do
7862                 set $xxx
7863                 eval $setvar
7864         done
7865 fi
7866
7867 : see if flock exists
7868 set flock d_flock
7869 eval $inlibc
7870
7871 : see if fork exists
7872 set fork d_fork
7873 eval $inlibc
7874
7875 : see if pathconf exists
7876 set pathconf d_pathconf
7877 eval $inlibc
7878
7879 : see if fpathconf exists
7880 set fpathconf d_fpathconf
7881 eval $inlibc
7882
7883 : see if fseeko exists
7884 set fseeko d_fseeko
7885 eval $inlibc
7886
7887 : see if fsetpos exists
7888 set fsetpos d_fsetpos
7889 eval $inlibc
7890
7891 : see if ftello exists
7892 set ftello d_ftello
7893 eval $inlibc
7894
7895 : see if getgrent exists
7896 set getgrent d_getgrent
7897 eval $inlibc
7898
7899 : see if gethostbyaddr exists
7900 set gethostbyaddr d_gethbyaddr
7901 eval $inlibc
7902
7903 : see if gethostbyname exists
7904 set gethostbyname d_gethbyname
7905 eval $inlibc
7906
7907 : see if gethostent exists
7908 set gethostent d_gethent
7909 eval $inlibc
7910
7911 : see how we will look up host name
7912 echo " "
7913 if false; then
7914         : dummy stub to allow use of elif
7915 elif set gethostname val -f d_gethname; eval $csym; $val; then
7916         echo 'gethostname() found.' >&4
7917         d_gethname="$define"
7918         call=gethostname
7919 elif set uname val -f d_uname; eval $csym; $val; then
7920         if ./xenix; then
7921                 $cat <<'EOM'
7922 uname() was found, but you're running xenix, and older versions of xenix
7923 have a broken uname(). If you don't really know whether your xenix is old
7924 enough to have a broken system call, use the default answer.
7925
7926 EOM
7927                 dflt=y
7928                 case "$d_uname" in
7929                 "$define") dflt=n;;
7930                 esac
7931                 rp='Is your uname() broken?'
7932                 . ./myread
7933                 case "$ans" in
7934                 n*) d_uname="$define"; call=uname;;
7935                 esac
7936         else
7937                 echo 'uname() found.' >&4
7938                 d_uname="$define"
7939                 call=uname
7940         fi
7941 fi
7942 case "$d_gethname" in
7943 '') d_gethname="$undef";;
7944 esac
7945 case "$d_uname" in
7946 '') d_uname="$undef";;
7947 esac
7948 case "$d_uname$d_gethname" in
7949 *define*)
7950         dflt=n
7951         cat <<EOM
7952  
7953 Every now and then someone has a $call() that lies about the hostname
7954 but can't be fixed for political or economic reasons.  If you wish, I can
7955 pretend $call() isn't there and maybe compute hostname at run-time
7956 thanks to the '$phostname' command.
7957
7958 EOM
7959         rp="Shall I ignore $call() from now on?"
7960         . ./myread
7961         case "$ans" in
7962         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
7963         esac;;
7964 esac
7965 case "$phostname" in
7966 '') aphostname='';;
7967 *) case "$aphostname" in
7968         /*) ;;
7969         *) set X $phostname
7970                 shift
7971                 file=$1
7972                 shift
7973                 file=`./loc $file $file $pth`
7974                 aphostname=`echo $file $*`
7975                 ;;
7976         esac
7977         ;;
7978 esac
7979 case "$d_uname$d_gethname" in
7980 *define*) ;;
7981 *)
7982         case "$phostname" in
7983         '')
7984                 echo "There will be no way for $package to get your hostname." >&4;;
7985         *)
7986         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
7987                 ;;
7988         esac;;
7989 esac
7990 case "$d_phostname" in
7991 '') d_phostname="$undef";;
7992 esac
7993
7994 : see if this is a netdb.h system
7995 set netdb.h i_netdb
7996 eval $inhdr
7997
7998 : see if prototypes for various gethostxxx netdb.h functions are available
7999 echo " "
8000 set d_gethostprotos gethostent $i_netdb netdb.h
8001 eval $hasproto
8002
8003 : see if getlogin exists
8004 set getlogin d_getlogin
8005 eval $inlibc
8006
8007 : see if getnetbyaddr exists
8008 set getnetbyaddr d_getnbyaddr
8009 eval $inlibc
8010
8011 : see if getnetbyname exists
8012 set getnetbyname d_getnbyname
8013 eval $inlibc
8014
8015 : see if getnetent exists
8016 set getnetent d_getnent
8017 eval $inlibc
8018
8019 : see if prototypes for various getnetxxx netdb.h functions are available
8020 echo " "
8021 set d_getnetprotos getnetent $i_netdb netdb.h
8022 eval $hasproto
8023
8024
8025 : see if getprotobyname exists
8026 set getprotobyname d_getpbyname
8027 eval $inlibc
8028
8029 : see if getprotobynumber exists
8030 set getprotobynumber d_getpbynumber
8031 eval $inlibc
8032
8033 : see if getprotoent exists
8034 set getprotoent d_getpent
8035 eval $inlibc
8036
8037 : see if getpgid exists
8038 set getpgid d_getpgid
8039 eval $inlibc
8040
8041 : see if getpgrp2 exists
8042 set getpgrp2 d_getpgrp2
8043 eval $inlibc
8044
8045 : see if getppid exists
8046 set getppid d_getppid
8047 eval $inlibc
8048
8049 : see if getpriority exists
8050 set getpriority d_getprior
8051 eval $inlibc
8052
8053 : see if prototypes for various getprotoxxx netdb.h functions are available
8054 echo " "
8055 set d_getprotoprotos getprotoent $i_netdb netdb.h
8056 eval $hasproto
8057
8058 : see if getpwent exists
8059 set getpwent d_getpwent
8060 eval $inlibc
8061
8062
8063 : see if getservbyname exists
8064 set getservbyname d_getsbyname
8065 eval $inlibc
8066
8067 : see if getservbyport exists
8068 set getservbyport d_getsbyport
8069 eval $inlibc
8070
8071 : see if getservent exists
8072 set getservent d_getsent
8073 eval $inlibc
8074
8075 : see if prototypes for various getservxxx netdb.h functions are available
8076 echo " "
8077 set d_getservprotos getservent $i_netdb netdb.h
8078 eval $hasproto
8079
8080 : see if gettimeofday or ftime exists
8081 set gettimeofday d_gettimeod
8082 eval $inlibc
8083 case "$d_gettimeod" in
8084 "$undef")
8085         set ftime d_ftime 
8086         eval $inlibc
8087         ;;
8088 *)
8089         val="$undef"; set d_ftime; eval $setvar
8090         ;;
8091 esac
8092 case "$d_gettimeod$d_ftime" in
8093 "$undef$undef")
8094         echo " "
8095         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8096         ;;
8097 esac
8098
8099 : see if this is an grp system
8100 set grp.h i_grp
8101 eval $inhdr
8102
8103 case "$i_grp" in
8104 $define)
8105         xxx=`./findhdr grp.h`
8106         $cppstdin $cppflags $cppminus < $xxx >$$.h
8107
8108         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8109                 val="$define"
8110         else
8111                 val="$undef"
8112         fi
8113         set d_grpasswd
8114         eval $setvar
8115
8116         $rm -f $$.h
8117         ;;
8118 *)
8119         val="$undef";
8120         set d_grpasswd; eval $setvar
8121         ;;
8122 esac
8123
8124 : see if this is a netinet/in.h or sys/in.h system
8125 set netinet/in.h i_niin sys/in.h i_sysin
8126 eval $inhdr
8127
8128 : see if arpa/inet.h has to be included
8129 set arpa/inet.h i_arpainet
8130 eval $inhdr
8131
8132 : see if htonl --and friends-- exists
8133 val=''
8134 set htonl val
8135 eval $inlibc
8136
8137 : Maybe they are macros.
8138 case "$val" in
8139 $undef)
8140         $cat >htonl.c <<EOM
8141 #include <stdio.h>
8142 #include <sys/types.h>
8143 #$i_niin I_NETINET_IN
8144 #$i_sysin I_SYS_IN
8145 #$i_arpainet I_ARPA_INET
8146 #ifdef I_NETINET_IN
8147 #include <netinet/in.h>
8148 #endif
8149 #ifdef I_SYS_IN
8150 #include <sys/in.h>
8151 #endif
8152 #ifdef I_ARPA_INET
8153 #include <arpa/inet.h>
8154 #endif
8155 #ifdef htonl
8156 printf("Defined as a macro.");
8157 #endif
8158 EOM
8159         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8160         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8161                 val="$define"
8162                 echo "But it seems to be defined as a macro." >&4
8163         fi
8164         $rm -f htonl.?
8165         ;;
8166 esac
8167 set d_htonl
8168 eval $setvar
8169
8170 : see which of string.h or strings.h is needed
8171 echo " "
8172 strings=`./findhdr string.h`
8173 if $test "$strings" && $test -r "$strings"; then
8174         echo "Using <string.h> instead of <strings.h>." >&4
8175         val="$define"
8176 else
8177         val="$undef"
8178         strings=`./findhdr strings.h`
8179         if $test "$strings" && $test -r "$strings"; then
8180                 echo "Using <strings.h> instead of <string.h>." >&4
8181         else
8182                 echo "No string header found -- You'll surely have problems." >&4
8183         fi
8184 fi
8185 set i_string
8186 eval $setvar
8187 case "$i_string" in
8188 "$undef") strings=`./findhdr strings.h`;;
8189 *)        strings=`./findhdr string.h`;;
8190 esac
8191
8192 : index or strchr
8193 echo " "
8194 if set index val -f; eval $csym; $val; then
8195         if set strchr val -f d_strchr; eval $csym; $val; then
8196                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8197                         val="$define"
8198                         vali="$undef"
8199                         echo "strchr() found." >&4
8200                 else
8201                         val="$undef"
8202                         vali="$define"
8203                         echo "index() found." >&4
8204                 fi
8205         else
8206                 val="$undef"
8207                 vali="$define"
8208                 echo "index() found." >&4
8209         fi
8210 else
8211         if set strchr val -f d_strchr; eval $csym; $val; then
8212                 val="$define"
8213                 vali="$undef"
8214                 echo "strchr() found." >&4
8215         else
8216                 echo "No index() or strchr() found!" >&4
8217                 val="$undef"
8218                 vali="$undef"
8219         fi
8220 fi
8221 set d_strchr; eval $setvar
8222 val="$vali"
8223 set d_index; eval $setvar
8224
8225 : check whether inet_aton exists
8226 set inet_aton d_inetaton
8227 eval $inlibc
8228
8229 : see if inttypes.h is available
8230 : we want a real compile instead of Inhdr because some systems
8231 : have an inttypes.h which includes non-existent headers
8232 echo " "
8233 $cat >try.c <<EOCP
8234 #include <inttypes.h>
8235 main() {
8236         static int32_t foo32 = 0x12345678;
8237 }
8238 EOCP
8239 set try
8240 if eval $compile; then
8241         echo "<inttypes.h> found." >&4
8242         val="$define"
8243 else
8244         echo "<inttypes.h> NOT found." >&4
8245         val="$undef"
8246 fi
8247 $rm -f try.c try
8248 set i_inttypes
8249 eval $setvar
8250
8251 : check for int64_t
8252 case "$use64bits" in
8253 "$define" )
8254         echo " "
8255         echo $n "Checking to see if your system supports int64_t...$c" >&4
8256         $cat >try.c <<EOCP
8257 #include <sys/types.h>
8258 #$i_inttypes I_INTTYPES
8259 #ifdef I_INTTYPES
8260 #include <inttypes.h>
8261 #endif
8262 int64_t foo() { int64_t x; x = 7; return x; }
8263 EOCP
8264         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8265                 val="$define"
8266                 echo " Yup, it does." >&4
8267         else
8268                 val="$undef"
8269                 echo " Nope, it doesn't." >&4
8270         fi
8271         $rm -f try.*
8272         ;;
8273 *)      val="$undef"
8274         ;;
8275 esac
8276 set d_int64t
8277 eval $setvar
8278
8279
8280 : Look for isascii
8281 echo " "
8282 $cat >isascii.c <<'EOCP'
8283 #include <stdio.h>
8284 #include <ctype.h>
8285 main() {
8286         int c = 'A';
8287         if (isascii(c))
8288                 exit(0);
8289         else
8290                 exit(1);
8291 }
8292 EOCP
8293 set isascii
8294 if eval $compile; then
8295         echo "isascii() found." >&4
8296         val="$define"
8297 else
8298         echo "isascii() NOT found." >&4
8299         val="$undef"
8300 fi
8301 set d_isascii
8302 eval $setvar
8303 $rm -f isascii*
8304
8305 : see if killpg exists
8306 set killpg d_killpg
8307 eval $inlibc
8308
8309 : see if lchown exists
8310 echo " "
8311 $cat > try.c <<'EOCP'
8312 /* System header to define __stub macros and hopefully few prototypes,
8313     which can conflict with char lchown(); below.  */
8314 #include <assert.h>
8315 /* Override any gcc2 internal prototype to avoid an error.  */
8316 /* We use char because int might match the return type of a gcc2
8317    builtin and then its argument prototype would still apply.  */
8318 char lchown();
8319 int main() {
8320     /*  The GNU C library defines this for functions which it implements
8321         to always fail with ENOSYS.  Some functions are actually named
8322         something starting with __ and the normal name is an alias.  */
8323 #if defined (__stub_lchown) || defined (__stub___lchown)
8324 choke me
8325 #else
8326 lchown();
8327 #endif
8328 ; return 0; }
8329 EOCP
8330 set try
8331 if eval $compile; then
8332     $echo "lchown() found." >&4
8333     val="$define"
8334 else
8335     $echo "lchown() NOT found." >&4
8336     val="$undef"
8337 fi
8338 set d_lchown
8339 eval $setvar
8340
8341 : see if link exists
8342 set link d_link
8343 eval $inlibc
8344
8345 : see if localeconv exists
8346 set localeconv d_locconv
8347 eval $inlibc
8348
8349 : see if lockf exists
8350 set lockf d_lockf
8351 eval $inlibc
8352
8353 : check for length of double
8354 echo " "
8355 case "$doublesize" in
8356 '')
8357         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8358         $cat >try.c <<'EOCP'
8359 #include <stdio.h>
8360 main()
8361 {
8362         printf("%d\n", sizeof(double));
8363 }
8364 EOCP
8365         set try
8366         if eval $compile_ok; then
8367                 doublesize=`./try`
8368                 $echo " $doublesize bytes." >&4
8369         else
8370                 dflt='8'
8371                 echo "(I can't seem to compile the test program.  Guessing...)"
8372                 rp="What is the size of a double precision number (in bytes)?"
8373                 . ./myread
8374                 doublesize="$ans"
8375         fi
8376         ;;
8377 esac
8378 $rm -f try.c try
8379
8380 : check for long doubles
8381 echo " "
8382 echo $n "Checking to see if your system supports long doubles...$c" >&4
8383 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8384 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8385         val="$define"
8386         echo " Yup, it does." >&4
8387 else
8388         val="$undef"
8389         echo " Nope, it doesn't." >&4
8390 fi
8391 $rm try.*
8392 set d_longdbl
8393 eval $setvar
8394
8395 : check for length of long double
8396 case "${d_longdbl}${longdblsize}" in
8397 $define)
8398         echo " "
8399         $echo $n "Checking to see how big your long doubles are...$c" >&4
8400         $cat >try.c <<'EOCP'
8401 #include <stdio.h>
8402 main()
8403 {
8404         printf("%d\n", sizeof(long double));
8405 }
8406 EOCP
8407         set try
8408         if eval $compile; then
8409                 longdblsize=`./try`
8410                 $echo " $longdblsize bytes." >&4
8411         else
8412                 dflt='8'
8413                 echo " "
8414                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8415                 rp="What is the size of a long double (in bytes)?"
8416                 . ./myread
8417                 longdblsize="$ans"
8418         fi
8419         if $test "X$doublesize" = "X$longdblsize"; then
8420                 echo "(That isn't any different from an ordinary double.)"
8421         fi      
8422         ;;
8423 esac
8424 $rm -f try.c try
8425
8426 : check for long long
8427 echo " "
8428 echo $n "Checking to see if your system supports long long...$c" >&4
8429 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8430 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8431         val="$define"
8432         echo " Yup, it does." >&4
8433 else
8434         val="$undef"
8435         echo " Nope, it doesn't." >&4
8436 fi
8437 $rm try.*
8438 set d_longlong
8439 eval $setvar
8440
8441 : check for length of long long
8442 case "${d_longlong}${longlongsize}" in
8443 $define)
8444         echo " "
8445         $echo $n "Checking to see how big your long longs are...$c" >&4
8446         $cat >try.c <<'EOCP'
8447 #include <stdio.h>
8448 main()
8449 {
8450         printf("%d\n", sizeof(long long));
8451 }
8452 EOCP
8453         set try
8454         if eval $compile_ok; then
8455                 longlongsize=`./try`
8456                 $echo " $longlongsize bytes." >&4
8457         else
8458                 dflt='8'
8459                 echo " "
8460                 echo "(I can't seem to compile the test program.  Guessing...)"
8461                 rp="What is the size of a long long (in bytes)?"
8462                 . ./myread
8463                 longlongsize="$ans"
8464         fi
8465         if $test "X$longsize" = "X$longlongsize"; then
8466                 echo "(That isn't any different from an ordinary long.)"
8467         fi      
8468         ;;
8469 esac
8470 $rm -f try.c try
8471
8472 : see if lstat exists
8473 set lstat d_lstat
8474 eval $inlibc
8475
8476 : see if mblen exists
8477 set mblen d_mblen
8478 eval $inlibc
8479
8480 : see if mbstowcs exists
8481 set mbstowcs d_mbstowcs
8482 eval $inlibc
8483
8484 : see if mbtowc exists
8485 set mbtowc d_mbtowc
8486 eval $inlibc
8487
8488 : see if memcmp exists
8489 set memcmp d_memcmp
8490 eval $inlibc
8491
8492 : see if memcpy exists
8493 set memcpy d_memcpy
8494 eval $inlibc
8495
8496 : see if memmove exists
8497 set memmove d_memmove
8498 eval $inlibc
8499
8500 : see if memset exists
8501 set memset d_memset
8502 eval $inlibc
8503
8504 : see if mkdir exists
8505 set mkdir d_mkdir
8506 eval $inlibc
8507
8508 : see if mkfifo exists
8509 set mkfifo d_mkfifo
8510 eval $inlibc
8511
8512 : see if mktime exists
8513 set mktime d_mktime
8514 eval $inlibc
8515
8516 : see if msgctl exists
8517 set msgctl d_msgctl
8518 eval $inlibc
8519
8520 : see if msgget exists
8521 set msgget d_msgget
8522 eval $inlibc
8523
8524 : see if msgsnd exists
8525 set msgsnd d_msgsnd
8526 eval $inlibc
8527
8528 : see if msgrcv exists
8529 set msgrcv d_msgrcv
8530 eval $inlibc
8531
8532 : see how much of the 'msg*(2)' library is present.
8533 h_msg=true
8534 echo " "
8535 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8536 *"$undef"*) h_msg=false;;
8537 esac
8538 case "$osname" in
8539 freebsd)
8540     case "`ipcs 2>&1`" in
8541     "SVID messages"*"not configured"*)
8542         echo "Your $osname does not have the msg*(2) configured." >&4
8543         h_msg=false
8544         val="$undef"
8545         set msgctl d_msgctl
8546         eval $setvar
8547         set msgget d_msgget
8548         eval $setvar
8549         set msgsnd d_msgsnd
8550         eval $setvar
8551         set msgrcv d_msgrcv
8552         eval $setvar
8553         ;;
8554     esac
8555     ;;
8556 esac
8557 : we could also check for sys/ipc.h ...
8558 if $h_msg && $test `./findhdr sys/msg.h`; then
8559         echo "You have the full msg*(2) library." >&4
8560         val="$define"
8561 else
8562         echo "You don't have the full msg*(2) library." >&4
8563         val="$undef"
8564 fi
8565 set d_msg
8566 eval $setvar
8567
8568 : see if nice exists
8569 set nice d_nice
8570 eval $inlibc
8571
8572 : see if pause exists
8573 set pause d_pause
8574 eval $inlibc
8575
8576 : see if pipe exists
8577 set pipe d_pipe
8578 eval $inlibc
8579
8580 : see if poll exists
8581 set poll d_poll
8582 eval $inlibc
8583
8584 : how to create joinable pthreads
8585 if test "X$usethreads" = "X$define"; then
8586         echo " "
8587         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8588         $cat >try.c <<'EOCP'
8589 #include <pthread.h>
8590 int main() {
8591     int detachstate = JOINABLE;
8592 }
8593 EOCP
8594         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8595         if eval $compile; then
8596                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8597                 val="$undef"
8598                 set d_pthread_create_joinable
8599                 eval $setvar
8600                 val=0
8601                 set pthread_create_joinable
8602                 eval $setvar
8603         else
8604                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8605                 if eval $compile; then
8606                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8607                         val="$define"
8608                         set d_pthread_create_joinable
8609                         eval $setvar
8610                         val=PTHREAD_CREATE_UNDETACHED
8611                         set pthread_create_joinable
8612                         eval $setvar
8613                 else            
8614                         set try -DJOINABLE=__UNDETACHED
8615                         if eval $compile; then
8616                                 echo "You seem to use __UNDETACHED." >&2
8617                                 val="$define"
8618                                 set d_pthread_create_joinable
8619                                 eval $setvar
8620                                 val=__UNDETACHED
8621                                 set pthread_create_joinable
8622                                 eval $setvar
8623                         else
8624                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8625                                 val="$define"
8626                                 set d_pthread_create_joinable
8627                                 eval $setvar
8628                                 val=0
8629                                 set pthread_create_joinable
8630                                 eval $setvar
8631                         fi
8632                 fi
8633         fi
8634         $rm -f try try.*
8635 else
8636     d_pthread_create_joinable="$undef"
8637     pthread_create_joinable=0
8638 fi
8639
8640
8641 : see whether the various POSIXish _yields exist
8642 $cat >try.c <<EOP
8643 #include <pthread.h>
8644 #include <stdio.h>
8645 main() {
8646 #ifdef SCHED_YIELD
8647         sched_yield();
8648 #else
8649 #ifdef PTHREAD_YIELD
8650         pthread_yield();
8651 #else
8652 #ifdef PTHREAD_YIELD_NULL
8653         pthread_yield(NULL);
8654 #endif
8655 #endif
8656 #endif
8657 }
8658 EOP
8659 : see if sched_yield exists
8660 set try -DSCHED_YIELD
8661 if eval $compile; then
8662     val="$define"
8663     sched_yield='sched_yield()'
8664 else
8665     val="$undef"
8666 fi
8667 case "$usethreads" in
8668 $define)
8669         case "$val" in
8670         $define) echo 'sched_yield() found.' >&4        ;;
8671         *)       echo 'sched_yield() NOT found.' >&4    ;;
8672         esac
8673 esac
8674 set d_sched_yield
8675 eval $setvar
8676
8677 : see if pthread_yield exists
8678 set try -DPTHREAD_YIELD
8679 if eval $compile; then
8680     val="$define"
8681     case "$sched_yield" in
8682     '') sched_yield='pthread_yield()' ;;
8683     esac
8684 else
8685     set try -DPTHREAD_YIELD_NULL
8686     if eval $compile; then
8687         val="$define"
8688         case "$sched_yield" in
8689         '') sched_yield='pthread_yield(NULL)' ;;
8690         esac
8691     else
8692         val="$undef"
8693     fi
8694 fi
8695 case "$usethreads" in
8696 $define)
8697         case "$val" in
8698         $define) echo 'pthread_yield() found.' >&4      ;;
8699         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8700         esac
8701         ;;
8702 esac
8703 set d_pthread_yield
8704 eval $setvar
8705
8706 case "$sched_yield" in
8707 '') sched_yield=undef ;;
8708 esac
8709
8710 $rm -f try try.*
8711
8712 : see if this is a pwd.h system
8713 set pwd.h i_pwd
8714 eval $inhdr
8715
8716 case "$i_pwd" in
8717 $define)
8718         xxx=`./findhdr pwd.h`
8719         $cppstdin $cppflags $cppminus < $xxx >$$.h
8720
8721         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8722                 val="$define"
8723         else
8724                 val="$undef"
8725         fi
8726         set d_pwquota
8727         eval $setvar
8728
8729         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8730                 val="$define"
8731         else
8732                 val="$undef"
8733         fi
8734         set d_pwage
8735         eval $setvar
8736
8737         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8738                 val="$define"
8739         else
8740                 val="$undef"
8741         fi
8742         set d_pwchange
8743         eval $setvar
8744
8745         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8746                 val="$define"
8747         else
8748                 val="$undef"
8749         fi
8750         set d_pwclass
8751         eval $setvar
8752
8753         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8754                 val="$define"
8755         else
8756                 val="$undef"
8757         fi
8758         set d_pwexpire
8759         eval $setvar
8760
8761         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8762                 val="$define"
8763         else
8764                 val="$undef"
8765         fi
8766         set d_pwcomment
8767         eval $setvar
8768
8769         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8770                 val="$define"
8771         else
8772                 val="$undef"
8773         fi
8774         set d_pwgecos
8775         eval $setvar
8776
8777         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8778                 val="$define"
8779         else
8780                 val="$undef"
8781         fi
8782         set d_pwpasswd
8783         eval $setvar
8784
8785         $rm -f $$.h
8786         ;;
8787 *)
8788         val="$undef"; 
8789         set d_pwquota; eval $setvar
8790         set d_pwage; eval $setvar
8791         set d_pwchange; eval $setvar
8792         set d_pwclass; eval $setvar
8793         set d_pwexpire; eval $setvar
8794         set d_pwcomment; eval $setvar
8795         set d_pwgecos; eval $setvar
8796         set d_pwpasswd; eval $setvar
8797         ;;
8798 esac
8799
8800 : see if readdir and friends exist
8801 set readdir d_readdir
8802 eval $inlibc
8803 set seekdir d_seekdir
8804 eval $inlibc
8805 set telldir d_telldir
8806 eval $inlibc
8807 set rewinddir d_rewinddir
8808 eval $inlibc
8809
8810 : see if readlink exists
8811 set readlink d_readlink
8812 eval $inlibc
8813
8814 : see if readv exists
8815 set readv d_readv
8816 eval $inlibc
8817
8818 : see if rename exists
8819 set rename d_rename
8820 eval $inlibc
8821
8822 : see if rmdir exists
8823 set rmdir d_rmdir
8824 eval $inlibc
8825
8826 : see if memory.h is available.
8827 val=''
8828 set memory.h val
8829 eval $inhdr
8830
8831 : See if it conflicts with string.h
8832 case "$val" in
8833 $define)
8834         case "$strings" in
8835         '') ;;
8836         *)
8837                 $cppstdin $cppflags $cppminus < $strings > mem.h
8838                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8839                         echo " "
8840                         echo "We won't be including <memory.h>."
8841                         val="$undef"
8842                 fi
8843                 $rm -f mem.h
8844                 ;;
8845         esac
8846 esac
8847 set i_memory
8848 eval $setvar
8849
8850 : can bcopy handle overlapping blocks?
8851 val="$undef"
8852 case "$d_bcopy" in
8853 "$define")
8854         echo " "
8855         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8856         $cat >try.c <<EOCP
8857 #$i_memory I_MEMORY
8858 #$i_stdlib I_STDLIB
8859 #$i_string I_STRING
8860 #$i_unistd I_UNISTD
8861 EOCP
8862         $cat >>try.c <<'EOCP'
8863 #include <stdio.h>
8864 #ifdef I_MEMORY
8865 #  include <memory.h>
8866 #endif
8867 #ifdef I_STDLIB
8868 #  include <stdlib.h>
8869 #endif
8870 #ifdef I_STRING
8871 #  include <string.h>
8872 #else
8873 #  include <strings.h>
8874 #endif
8875 #ifdef I_UNISTD
8876 #  include <unistd.h>  /* Needed for NetBSD */
8877 #endif
8878 main()
8879 {
8880 char buf[128], abc[128];
8881 char *b;
8882 int len;
8883 int off;
8884 int align;
8885
8886 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
8887
8888 for (align = 7; align >= 0; align--) {
8889         for (len = 36; len; len--) {
8890                 b = buf+align;
8891                 bcopy(abc, b, len);
8892                 for (off = 1; off <= len; off++) {
8893                         bcopy(b, b+off, len);
8894                         bcopy(b+off, b, len);
8895                         if (bcmp(b, abc, len))
8896                                 exit(1);
8897                 }
8898         }
8899 }
8900 exit(0);
8901 }
8902 EOCP
8903         set try
8904         if eval $compile_ok; then
8905                 if ./try 2>/dev/null; then
8906                         echo "Yes, it can."
8907                         val="$define"
8908                 else
8909                         echo "It can't, sorry."
8910                         case "$d_memmove" in
8911                         "$define") echo "But that's Ok since you have memmove()." ;;
8912                         esac
8913                 fi
8914         else
8915                 echo "(I can't compile the test program, so we'll assume not...)"
8916                 case "$d_memmove" in
8917                 "$define") echo "But that's Ok since you have memmove()." ;;
8918                 esac
8919         fi
8920         ;;
8921 esac
8922 $rm -f try.* try core
8923 set d_safebcpy
8924 eval $setvar
8925
8926 : can memcpy handle overlapping blocks?
8927 val="$undef"
8928 case "$d_memcpy" in
8929 "$define")
8930         echo " "
8931         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
8932         $cat >try.c <<EOCP
8933 #$i_memory I_MEMORY
8934 #$i_stdlib I_STDLIB
8935 #$i_string I_STRING
8936 #$i_unistd I_UNISTD
8937 EOCP
8938         $cat >>try.c <<'EOCP'
8939 #include <stdio.h>
8940 #ifdef I_MEMORY
8941 #  include <memory.h>
8942 #endif
8943 #ifdef I_STDLIB
8944 #  include <stdlib.h>
8945 #endif
8946 #ifdef I_STRING
8947 #  include <string.h>
8948 #else
8949 #  include <strings.h>
8950 #endif
8951 #ifdef I_UNISTD
8952 #  include <unistd.h>  /* Needed for NetBSD */
8953 #endif
8954 main()
8955 {
8956 char buf[128], abc[128];
8957 char *b;
8958 int len;
8959 int off;
8960 int align;
8961
8962 /* Copy "abcde..." string to char abc[] so that gcc doesn't
8963    try to store the string in read-only memory. */
8964 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
8965
8966 for (align = 7; align >= 0; align--) {
8967         for (len = 36; len; len--) {
8968                 b = buf+align;
8969                 memcpy(b, abc, len);
8970                 for (off = 1; off <= len; off++) {
8971                         memcpy(b+off, b, len);
8972                         memcpy(b, b+off, len);
8973                         if (memcmp(b, abc, len))
8974                                 exit(1);
8975                 }
8976         }
8977 }
8978 exit(0);
8979 }
8980 EOCP
8981         set try
8982         if eval $compile_ok; then
8983                 if ./try 2>/dev/null; then
8984                         echo "Yes, it can."
8985                         val="$define"
8986                 else
8987                         echo "It can't, sorry."
8988                         case "$d_memmove" in
8989                         "$define") echo "But that's Ok since you have memmove()." ;;
8990                         esac
8991                 fi
8992         else
8993                 echo "(I can't compile the test program, so we'll assume not...)"
8994                 case "$d_memmove" in
8995                 "$define") echo "But that's Ok since you have memmove()." ;;
8996                 esac
8997         fi
8998         ;;
8999 esac
9000 $rm -f try.* try core
9001 set d_safemcpy
9002 eval $setvar
9003
9004 : can memcmp be trusted to compare relative magnitude?
9005 val="$undef"
9006 case "$d_memcmp" in
9007 "$define")
9008         echo " "
9009         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9010         $cat >try.c <<EOCP
9011 #$i_memory I_MEMORY
9012 #$i_stdlib I_STDLIB
9013 #$i_string I_STRING
9014 #$i_unistd I_UNISTD
9015 EOCP
9016         $cat >>try.c <<'EOCP'
9017 #include <stdio.h>
9018 #ifdef I_MEMORY
9019 #  include <memory.h>
9020 #endif
9021 #ifdef I_STDLIB
9022 #  include <stdlib.h>
9023 #endif
9024 #ifdef I_STRING
9025 #  include <string.h>
9026 #else
9027 #  include <strings.h>
9028 #endif
9029 #ifdef I_UNISTD
9030 #  include <unistd.h>  /* Needed for NetBSD */
9031 #endif
9032 main()
9033 {
9034 char a = -1;
9035 char b = 0;
9036 if ((a < b) && memcmp(&a, &b, 1) < 0)
9037         exit(1);
9038 exit(0);
9039 }
9040 EOCP
9041         set try
9042         if eval $compile_ok; then
9043                 if ./try 2>/dev/null; then
9044                         echo "Yes, it can."
9045                         val="$define"
9046                 else
9047                         echo "No, it can't (it uses signed chars)."
9048                 fi
9049         else
9050                 echo "(I can't compile the test program, so we'll assume not...)"
9051         fi
9052         ;;
9053 esac
9054 $rm -f try.* try core
9055 set d_sanemcmp
9056 eval $setvar
9057
9058 : see if select exists
9059 set select d_select
9060 eval $inlibc
9061
9062 : see if semctl exists
9063 set semctl d_semctl
9064 eval $inlibc
9065
9066 : see if semget exists
9067 set semget d_semget
9068 eval $inlibc
9069
9070 : see if semop exists
9071 set semop d_semop
9072 eval $inlibc
9073
9074 : see how much of the 'sem*(2)' library is present.
9075 h_sem=true
9076 echo " "
9077 case "$d_semctl$d_semget$d_semop" in
9078 *"$undef"*) h_sem=false;;
9079 esac
9080 case "$osname" in
9081 freebsd)
9082     case "`ipcs 2>&1`" in
9083     "SVID messages"*"not configured"*)
9084         echo "Your $osname does not have the sem*(2) configured." >&4
9085         h_sem=false
9086         val="$undef"
9087         set semctl d_semctl
9088         eval $setvar
9089         set semget d_semget
9090         eval $setvar
9091         set semop d_semop
9092         eval $setvar
9093         ;;
9094     esac
9095     ;;
9096 esac
9097 : we could also check for sys/ipc.h ...
9098 if $h_sem && $test `./findhdr sys/sem.h`; then
9099         echo "You have the full sem*(2) library." >&4
9100         val="$define"
9101 else
9102         echo "You don't have the full sem*(2) library." >&4
9103         val="$undef"
9104 fi
9105 set d_sem
9106 eval $setvar
9107
9108 : see whether sys/sem.h defines union semun
9109 echo " "
9110 $cat > try.c <<'END'
9111 #include <sys/types.h>
9112 #include <sys/ipc.h>
9113 #include <sys/sem.h>
9114 int main () { union semun semun; semun.buf = 0; }
9115 END
9116 set try
9117 if eval $compile; then
9118     echo "You have union semun in <sys/sem.h>." >&4
9119     val="$define"
9120 else
9121     echo "You do not have union semun in <sys/sem.h>." >&4
9122     val="$undef"
9123 fi
9124 $rm -f try try.c try.h
9125 set d_union_semun
9126 eval $setvar
9127
9128 : see how to do semctl IPC_STAT
9129 case "$d_sem" in
9130 $define)
9131     : see whether semctl IPC_STAT can use union semun
9132     echo " "
9133     $cat > try.h <<END
9134 #ifndef S_IRUSR
9135 #   ifdef S_IREAD
9136 #       define S_IRUSR S_IREAD
9137 #       define S_IWUSR S_IWRITE
9138 #       define S_IXUSR S_IEXEC
9139 #   else
9140 #       define S_IRUSR 0400
9141 #       define S_IWUSR 0200
9142 #       define S_IXUSR 0100
9143 #   endif
9144 #   define S_IRGRP (S_IRUSR>>3)
9145 #   define S_IWGRP (S_IWUSR>>3)
9146 #   define S_IXGRP (S_IXUSR>>3)
9147 #   define S_IROTH (S_IRUSR>>6)
9148 #   define S_IWOTH (S_IWUSR>>6)
9149 #   define S_IXOTH (S_IXUSR>>6)
9150 #endif
9151 #ifndef S_IRWXU
9152 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9153 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9154 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9155 #endif
9156 END
9157
9158     $cat > try.c <<END
9159 #include <sys/types.h>
9160 #include <sys/ipc.h>
9161 #include <sys/sem.h>
9162 #include <sys/stat.h>
9163 #include <stdio.h>
9164 #include <errno.h>
9165 #include "try.h"
9166 #ifndef errno
9167 extern int errno;
9168 #endif
9169 #$d_union_semun HAS_UNION_SEMUN
9170 int main() {
9171     union semun
9172 #ifndef HAS_UNION_SEMUN
9173     {
9174         int val;
9175         struct semid_ds *buf;
9176         unsigned short *array;
9177     }
9178 #endif
9179     arg;
9180     int sem, st;
9181
9182 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9183     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9184     if (sem > -1) {
9185         struct semid_ds argbuf;
9186         arg.buf = &argbuf;
9187 #       ifdef IPC_STAT
9188         st = semctl(sem, 0, IPC_STAT, arg);
9189         if (st == 0)
9190             printf("semun\n");
9191         else
9192 #       endif /* IPC_STAT */
9193             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9194 #       ifdef IPC_RMID
9195         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9196 #       endif /* IPC_RMID */
9197             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9198     } else
9199 #endif /* IPC_PRIVATE && ... */
9200         printf("semget failed: errno = %d\n", errno);
9201   return 0;
9202 }
9203 END
9204     val="$undef"
9205     set try
9206     if eval $compile; then
9207         xxx=`./try`
9208         case "$xxx" in
9209         semun) val="$define" ;;
9210         esac
9211     fi
9212     $rm -f try try.c
9213     set d_semctl_semun
9214     eval $setvar
9215     case "$d_semctl_semun" in
9216     $define)
9217         echo "You can use union semun for semctl IPC_STAT." >&4
9218         also='also'
9219         ;;
9220     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9221         also=''
9222         ;;
9223     esac
9224
9225     : see whether semctl IPC_STAT can use struct semid_ds pointer
9226     $cat > try.c <<'END'
9227 #include <sys/types.h>
9228 #include <sys/ipc.h>
9229 #include <sys/sem.h>
9230 #include <sys/stat.h>
9231 #include "try.h"
9232 #include <stdio.h>
9233 #include <errno.h>
9234 #ifndef errno
9235 extern int errno;
9236 #endif
9237 int main() {
9238     struct semid_ds arg;
9239     int sem, st;
9240
9241 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9242     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9243     if (sem > -1) {
9244 #       ifdef IPC_STAT
9245         st = semctl(sem, 0, IPC_STAT, &arg);
9246         if (st == 0)
9247             printf("semid_ds\n");
9248         else
9249 #       endif /* IPC_STAT */
9250             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9251 #       ifdef IPC_RMID
9252         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9253 #       endif /* IPC_RMID */
9254             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9255     } else
9256 #endif /* IPC_PRIVATE && ... */
9257         printf("semget failed: errno = %d\n", errno);
9258
9259     return 0;
9260 }
9261 END
9262     val="$undef"
9263     set try
9264     if eval $compile; then
9265         xxx=`./try`
9266         case "$xxx" in
9267         semid_ds) val="$define" ;;
9268         esac
9269     fi
9270     $rm -f try try.c
9271     set d_semctl_semid_ds
9272     eval $setvar
9273     case "$d_semctl_semid_ds" in
9274     $define)
9275         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9276         ;;
9277     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9278         ;;
9279     esac
9280     $rm -f try.h
9281     ;;
9282 *)  val="$undef"
9283
9284     # We do not have the full sem*(2) library, so assume we can not
9285     # use either.
9286
9287     set d_semctl_semun
9288     eval $setvar
9289
9290     set d_semctl_semid_ds
9291     eval $setvar
9292     ;;
9293 esac
9294
9295 : see if setegid exists
9296 set setegid d_setegid
9297 eval $inlibc
9298
9299 : see if seteuid exists
9300 set seteuid d_seteuid
9301 eval $inlibc
9302
9303 : see if setgrent exists
9304 set setgrent d_setgrent
9305 eval $inlibc
9306
9307 : see if sethostent exists
9308 set sethostent d_sethent
9309 eval $inlibc
9310
9311 : see if setlinebuf exists
9312 set setlinebuf d_setlinebuf
9313 eval $inlibc
9314
9315 : see if setlocale exists
9316 set setlocale d_setlocale
9317 eval $inlibc
9318
9319 : see if setnetent exists
9320 set setnetent d_setnent
9321 eval $inlibc
9322
9323 : see if setprotoent exists
9324 set setprotoent d_setpent
9325 eval $inlibc
9326
9327 : see if setpgid exists
9328 set setpgid d_setpgid
9329 eval $inlibc
9330
9331 : see if setpgrp2 exists
9332 set setpgrp2 d_setpgrp2
9333 eval $inlibc
9334
9335 : see if setpriority exists
9336 set setpriority d_setprior
9337 eval $inlibc
9338
9339 : see if setpwent exists
9340 set setpwent d_setpwent
9341 eval $inlibc
9342
9343 : see if setregid exists
9344 set setregid d_setregid
9345 eval $inlibc
9346 set setresgid d_setresgid
9347 eval $inlibc
9348
9349 : see if setreuid exists
9350 set setreuid d_setreuid
9351 eval $inlibc
9352 set setresuid d_setresuid
9353 eval $inlibc
9354
9355 : see if setrgid exists
9356 set setrgid d_setrgid
9357 eval $inlibc
9358
9359 : see if setruid exists
9360 set setruid d_setruid
9361 eval $inlibc
9362
9363 : see if setservent exists
9364 set setservent d_setsent
9365 eval $inlibc
9366
9367 : see if setsid exists
9368 set setsid d_setsid
9369 eval $inlibc
9370
9371 : see if setvbuf exists
9372 set setvbuf d_setvbuf
9373 eval $inlibc
9374
9375 : see if sfio.h is available
9376 set sfio.h i_sfio
9377 eval $inhdr
9378
9379
9380 : see if sfio library is available
9381 case "$i_sfio" in
9382 $define)
9383         val=''
9384         set sfreserve val
9385         eval $inlibc
9386         ;;
9387 *)
9388         val="$undef"
9389         ;;
9390 esac
9391 : Ok, but do we want to use it.
9392 case "$val" in
9393 $define)
9394         case "$usesfio" in
9395         true|$define|[yY]*) dflt='y';;
9396         *) dflt='n';;
9397         esac
9398         echo "$package can use the sfio library, but it is experimental."
9399         rp="You seem to have sfio available, do you want to try using it?"
9400         . ./myread
9401         case "$ans" in
9402         y|Y) ;;
9403         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9404                 val="$undef"
9405                 : Remove sfio from list of libraries to use
9406                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9407                 shift
9408                 libs="$*"
9409                 echo "libs = $libs" >&4
9410                 ;;
9411         esac
9412         ;;
9413 *)      case "$usesfio" in
9414         true|$define|[yY]*)
9415                 echo "Sorry, cannot find sfio on this machine" >&4
9416                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9417                 ;;
9418         esac
9419         ;;
9420 esac
9421 set d_sfio
9422 eval $setvar
9423 case "$d_sfio" in
9424 $define) usesfio='true';;
9425 *) usesfio='false';;
9426 esac
9427
9428 : see if shmctl exists
9429 set shmctl d_shmctl
9430 eval $inlibc
9431
9432 : see if shmget exists
9433 set shmget d_shmget
9434 eval $inlibc
9435
9436 : see if shmat exists
9437 set shmat d_shmat
9438 eval $inlibc
9439 : see what shmat returns
9440 case "$d_shmat" in
9441 "$define")
9442         $cat >shmat.c <<'END'
9443 #include <sys/shm.h>
9444 void *shmat();
9445 END
9446         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9447                 shmattype='void *'
9448         else
9449                 shmattype='char *'
9450         fi
9451         echo "and it returns ($shmattype)." >&4
9452         : see if a prototype for shmat is available
9453         xxx=`./findhdr sys/shm.h`
9454         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9455         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9456                 val="$define"
9457         else
9458                 val="$undef"
9459         fi
9460         $rm -f shmat.[co]
9461         ;;
9462 *)
9463         val="$undef"
9464         ;;
9465 esac
9466 set d_shmatprototype
9467 eval $setvar
9468
9469 : see if shmdt exists
9470 set shmdt d_shmdt
9471 eval $inlibc
9472
9473 : see how much of the 'shm*(2)' library is present.
9474 h_shm=true
9475 echo " "
9476 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9477 *"$undef"*) h_shm=false;;
9478 esac
9479 case "$osname" in
9480 freebsd)
9481     case "`ipcs 2>&1`" in
9482     "SVID shared memory"*"not configured"*)
9483         echo "Your $osname does not have the shm*(2) configured." >&4
9484         h_shm=false
9485         val="$undef"
9486         set shmctl d_shmctl
9487         evat $setvar
9488         set shmget d_shmget
9489         evat $setvar
9490         set shmat d_shmat
9491         evat $setvar
9492         set shmdt d_shmdt
9493         evat $setvar
9494         ;;
9495     esac
9496     ;;
9497 esac
9498 : we could also check for sys/ipc.h ...
9499 if $h_shm && $test `./findhdr sys/shm.h`; then
9500         echo "You have the full shm*(2) library." >&4
9501         val="$define"
9502 else
9503         echo "You don't have the full shm*(2) library." >&4
9504         val="$undef"
9505 fi
9506 set d_shm
9507 eval $setvar
9508
9509 echo " "
9510 : see if we have sigaction
9511 if set sigaction val -f d_sigaction; eval $csym; $val; then
9512         echo 'sigaction() found.' >&4
9513         $cat > try.c <<'EOP'
9514 #include <stdio.h>
9515 #include <sys/types.h>
9516 #include <signal.h>
9517 main()
9518 {
9519     struct sigaction act, oact;
9520 }
9521 EOP
9522         set try
9523         if eval $compile_ok; then
9524                 val="$define"
9525         else
9526                 echo "But you don't seem to have a useable struct sigaction." >&4
9527                 val="$undef"
9528         fi
9529 else
9530         echo 'sigaction NOT found.' >&4
9531         val="$undef"
9532 fi
9533 set d_sigaction; eval $setvar
9534 $rm -f try try$_o try.c
9535
9536 : see if sigsetjmp exists
9537 echo " "
9538 case "$d_sigsetjmp" in
9539 '')
9540         $cat >try.c <<'EOP'
9541 #include <setjmp.h>
9542 sigjmp_buf env;
9543 int set = 1;
9544 main()
9545 {
9546         if (sigsetjmp(env,1))
9547                 exit(set);
9548         set = 0;
9549         siglongjmp(env, 1);
9550         exit(1);
9551 }
9552 EOP
9553         set try
9554         if eval $compile; then
9555                 if ./try >/dev/null 2>&1; then
9556                         echo "POSIX sigsetjmp found." >&4
9557                         val="$define"
9558                 else
9559                         $cat >&4 <<EOM
9560 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9561 I'll ignore them.
9562 EOM
9563                         val="$undef"
9564                 fi
9565         else
9566                 echo "sigsetjmp not found." >&4
9567                 val="$undef"
9568         fi
9569         ;;
9570 *) val="$d_sigsetjmp"
9571         case "$d_sigsetjmp" in
9572         $define) echo "POSIX sigsetjmp found." >&4;;
9573         $undef) echo "sigsetjmp not found." >&4;;
9574         esac
9575         ;;
9576 esac
9577 set d_sigsetjmp
9578 eval $setvar
9579 $rm -f try.c try
9580
9581 : see if stat knows about block sizes
9582 echo " "
9583 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9584 eval $hasfield
9585
9586 : see if _ptr and _cnt from stdio act std
9587 echo " "
9588 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9589         echo "(Looks like you have stdio.h from Linux.)"
9590         case "$stdio_ptr" in
9591         '') stdio_ptr='((fp)->_IO_read_ptr)'
9592                 ptr_lval=$define
9593                 ;;
9594         *)      ptr_lval=$d_stdio_ptr_lval;;
9595         esac
9596         case "$stdio_cnt" in
9597         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9598                 cnt_lval=$undef
9599                 ;;
9600         *)      cnt_lval=$d_stdio_cnt_lval;;
9601         esac
9602         case "$stdio_base" in
9603         '') stdio_base='((fp)->_IO_read_base)';;
9604         esac
9605         case "$stdio_bufsiz" in
9606         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9607         esac
9608 else
9609         case "$stdio_ptr" in
9610         '') stdio_ptr='((fp)->_ptr)'
9611                 ptr_lval=$define
9612                 ;;
9613         *)      ptr_lval=$d_stdio_ptr_lval;;
9614         esac
9615         case "$stdio_cnt" in
9616         '') stdio_cnt='((fp)->_cnt)'
9617                 cnt_lval=$define
9618                 ;;
9619         *)      cnt_lval=$d_stdio_cnt_lval;;
9620         esac
9621         case "$stdio_base" in
9622         '') stdio_base='((fp)->_base)';;
9623         esac
9624         case "$stdio_bufsiz" in
9625         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9626         esac
9627 fi
9628 : test whether _ptr and _cnt really work
9629 echo "Checking how std your stdio is..." >&4
9630 $cat >try.c <<EOP
9631 #include <stdio.h>
9632 #define FILE_ptr(fp)    $stdio_ptr
9633 #define FILE_cnt(fp)    $stdio_cnt
9634 main() {
9635         FILE *fp = fopen("try.c", "r");
9636         char c = getc(fp);
9637         if (
9638                 18 <= FILE_cnt(fp) &&
9639                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9640         )
9641                 exit(0);
9642         exit(1);
9643 }
9644 EOP
9645 val="$undef"
9646 set try
9647 if eval $compile; then
9648         if ./try; then
9649                 echo "Your stdio acts pretty std."
9650                 val="$define"
9651         else
9652                 echo "Your stdio isn't very std."
9653         fi
9654 else
9655         echo "Your stdio doesn't appear very std."
9656 fi
9657 $rm -f try.c try
9658 set d_stdstdio
9659 eval $setvar
9660
9661 : Can _ptr be used as an lvalue?
9662 case "$d_stdstdio$ptr_lval" in
9663 $define$define) val=$define ;;
9664 *) val=$undef ;;
9665 esac
9666 set d_stdio_ptr_lval
9667 eval $setvar
9668
9669 : Can _cnt be used as an lvalue?
9670 case "$d_stdstdio$cnt_lval" in
9671 $define$define) val=$define ;;
9672 *) val=$undef ;;
9673 esac
9674 set d_stdio_cnt_lval
9675 eval $setvar
9676
9677 : see if _base is also standard
9678 val="$undef"
9679 case "$d_stdstdio" in
9680 $define)
9681         $cat >try.c <<EOP
9682 #include <stdio.h>
9683 #define FILE_base(fp)   $stdio_base
9684 #define FILE_bufsiz(fp) $stdio_bufsiz
9685 main() {
9686         FILE *fp = fopen("try.c", "r");
9687         char c = getc(fp);
9688         if (
9689                 19 <= FILE_bufsiz(fp) &&
9690                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9691         )
9692                 exit(0);
9693         exit(1);
9694 }
9695 EOP
9696         set try
9697         if eval $compile; then
9698                 if ./try; then
9699                         echo "And its _base field acts std."
9700                         val="$define"
9701                 else
9702                         echo "But its _base field isn't std."
9703                 fi
9704         else
9705                 echo "However, it seems to be lacking the _base field."
9706         fi
9707         $rm -f try.c try
9708         ;;
9709 esac
9710 set d_stdiobase
9711 eval $setvar
9712
9713 : see if strcoll exists
9714 set strcoll d_strcoll
9715 eval $inlibc
9716
9717 : check for structure copying
9718 echo " "
9719 echo "Checking to see if your C compiler can copy structs..." >&4
9720 $cat >try.c <<'EOCP'
9721 main()
9722 {
9723         struct blurfl {
9724                 int dyick;
9725         } foo, bar;
9726
9727         foo = bar;
9728 }
9729 EOCP
9730 if $cc -c try.c >/dev/null 2>&1 ; then
9731         val="$define"
9732         echo "Yup, it can."
9733 else
9734         val="$undef"
9735         echo "Nope, it can't."
9736 fi
9737 set d_strctcpy
9738 eval $setvar
9739 $rm -f try.*
9740
9741 : see if strerror and/or sys_errlist[] exist
9742 echo " "
9743 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9744     if set strerror val -f d_strerror; eval $csym; $val; then
9745                 echo 'strerror() found.' >&4
9746                 d_strerror="$define"
9747                 d_strerrm='strerror(e)'
9748                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9749                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9750                         d_syserrlst="$define"
9751                 else
9752                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9753                         d_syserrlst="$undef"
9754                 fi
9755     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9756                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9757                 echo 'strerror() found in string header.' >&4
9758                 d_strerror="$define"
9759                 d_strerrm='strerror(e)'
9760                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9761                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9762                                 d_syserrlst="$define"
9763                 else
9764                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9765                         d_syserrlst="$undef"
9766                 fi
9767     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9768                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9769                 d_strerror="$undef"
9770                 d_syserrlst="$define"
9771                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9772     else
9773                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9774                 d_strerror="$undef"
9775                 d_syserrlst="$undef"
9776                 d_strerrm='"unknown"'
9777     fi
9778 fi
9779
9780 : see if strtod exists
9781 set strtod d_strtod
9782 eval $inlibc
9783
9784 : see if strtol exists
9785 set strtol d_strtol
9786 eval $inlibc
9787
9788 : see if strtoul exists
9789 set strtoul d_strtoul
9790 eval $inlibc
9791
9792 : see if strxfrm exists
9793 set strxfrm d_strxfrm
9794 eval $inlibc
9795
9796 : see if symlink exists
9797 set symlink d_symlink
9798 eval $inlibc
9799
9800 : see if syscall exists
9801 set syscall d_syscall
9802 eval $inlibc
9803
9804 : see if sysconf exists
9805 set sysconf d_sysconf
9806 eval $inlibc
9807
9808 : see if system exists
9809 set system d_system
9810 eval $inlibc
9811
9812 : see if tcgetpgrp exists
9813 set tcgetpgrp d_tcgetpgrp
9814 eval $inlibc
9815
9816 : see if tcsetpgrp exists
9817 set tcsetpgrp d_tcsetpgrp
9818 eval $inlibc
9819
9820 : define an is-a-typedef? function
9821 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9822 case "$inclist" in
9823 "") inclist="sys/types.h";;
9824 esac;
9825 eval "varval=\$$var";
9826 case "$varval" in
9827 "")
9828         $rm -f temp.c;
9829         for inc in $inclist; do
9830                 echo "#include <$inc>" >>temp.c;
9831         done;
9832         echo "#ifdef $type" >> temp.c;
9833         echo "printf(\"We have $type\");" >> temp.c;
9834         echo "#endif" >> temp.c;
9835         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9836         if $contains $type temp.E >/dev/null 2>&1; then
9837                 eval "$var=\$type";
9838         else
9839                 eval "$var=\$def";
9840         fi;
9841         $rm -f temp.?;;
9842 *) eval "$var=\$varval";;
9843 esac'
9844
9845 : define an is-a-typedef? function that prompts if the type is not available.
9846 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9847 case "$inclist" in
9848 "") inclist="sys/types.h";;
9849 esac;
9850 eval "varval=\$$var";
9851 case "$varval" in
9852 "")
9853         $rm -f temp.c;
9854         for inc in $inclist; do
9855                 echo "#include <$inc>" >>temp.c;
9856         done;
9857         echo "#ifdef $type" >> temp.c;
9858         echo "printf(\"We have $type\");" >> temp.c;
9859         echo "#endif" >> temp.c;
9860         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9861         echo " " ;
9862         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9863         if $contains $type temp.E >/dev/null 2>&1; then
9864                 echo "$type found." >&4;
9865                 eval "$var=\$type";
9866         else
9867                 echo "$type NOT found." >&4;
9868                 dflt="$def";
9869                 . ./myread ;
9870                 eval "$var=\$ans";
9871         fi;
9872         $rm -f temp.?;;
9873 *) eval "$var=\$varval";;
9874 esac'
9875
9876 : see if this is a sys/times.h system
9877 set sys/times.h i_systimes
9878 eval $inhdr
9879
9880 : see if times exists
9881 echo " "
9882 if set times val -f d_times; eval $csym; $val; then
9883         echo 'times() found.' >&4
9884         d_times="$define"
9885         inc=''
9886         case "$i_systimes" in
9887         "$define") inc='sys/times.h';;
9888         esac
9889         rp="What is the type returned by times() on this system?"
9890         set clock_t clocktype long stdio.h sys/types.h $inc
9891         eval $typedef_ask
9892 else
9893         echo 'times() NOT found, hope that will do.' >&4
9894         d_times="$undef"
9895         clocktype='int'
9896 fi
9897
9898 : see if truncate exists
9899 set truncate d_truncate
9900 eval $inlibc
9901
9902 : see if tzname[] exists
9903 echo " "
9904 if set tzname val -a d_tzname; eval $csym; $val; then
9905         val="$define"
9906         echo 'tzname[] found.' >&4
9907 else
9908         val="$undef"
9909         echo 'tzname[] NOT found.' >&4
9910 fi
9911 set d_tzname
9912 eval $setvar
9913
9914 : see if umask exists
9915 set umask d_umask
9916 eval $inlibc
9917
9918 : backward compatibility for d_hvfork
9919 if test X$d_hvfork != X; then
9920         d_vfork="$d_hvfork"
9921         d_hvfork=''
9922 fi
9923 : see if there is a vfork
9924 val=''
9925 set vfork val
9926 eval $inlibc
9927
9928 : Ok, but do we want to use it. vfork is reportedly unreliable in 
9929 : perl on Solaris 2.x, and probably elsewhere.
9930 case "$val" in
9931 $define)
9932         echo " "
9933         case "$usevfork" in
9934         false) dflt='n';;
9935         *) dflt='y';;
9936         esac
9937         rp="Some systems have problems with vfork().  Do you want to use it?"
9938         . ./myread
9939         case "$ans" in
9940         y|Y) ;;
9941         *)
9942                 echo "Ok, we won't use vfork()."
9943                 val="$undef"
9944                 ;;
9945         esac
9946         ;;
9947 esac
9948 set d_vfork
9949 eval $setvar
9950 case "$d_vfork" in
9951 $define) usevfork='true';;
9952 *) usevfork='false';;
9953 esac
9954
9955 : see if this is an sysdir system
9956 set sys/dir.h i_sysdir
9957 eval $inhdr
9958
9959 : see if this is an sysndir system
9960 set sys/ndir.h i_sysndir
9961 eval $inhdr
9962
9963 : see if sys/types.h has to be included
9964 set sys/types.h i_systypes
9965 eval $inhdr
9966
9967 : see if closedir exists
9968 set closedir d_closedir
9969 eval $inlibc
9970
9971 case "$d_closedir" in
9972 "$define")
9973         echo " "
9974         echo "Checking whether closedir() returns a status..." >&4
9975         cat > closedir.c <<EOM
9976 #$i_dirent I_DIRENT             /**/
9977 #$i_sysdir I_SYS_DIR            /**/
9978 #$i_sysndir I_SYS_NDIR          /**/
9979 #$i_systypes I_SYS_TYPES        /**/
9980
9981 #if defined(I_SYS_TYPES)
9982 #include <sys/types.h>
9983 #endif
9984 #if defined(I_DIRENT)
9985 #include <dirent.h>
9986 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9987 #include <sys/dir.h>
9988 #endif
9989 #else
9990 #ifdef I_SYS_NDIR
9991 #include <sys/ndir.h>
9992 #else
9993 #ifdef I_SYS_DIR
9994 #ifdef hp9000s500
9995 #include <ndir.h>       /* may be wrong in the future */
9996 #else
9997 #include <sys/dir.h>
9998 #endif
9999 #endif
10000 #endif
10001 #endif 
10002 int main() { return closedir(opendir(".")); }
10003 EOM
10004         set closedir
10005         if eval $compile_ok; then
10006                 if ./closedir > /dev/null 2>&1 ; then
10007                         echo "Yes, it does."
10008                         val="$undef"
10009                 else
10010                         echo "No, it doesn't."
10011                         val="$define"
10012                 fi
10013         else
10014                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10015                 val="$define"
10016         fi
10017         ;;
10018 *)
10019         val="$undef";
10020         ;;
10021 esac
10022 set d_void_closedir
10023 eval $setvar
10024 $rm -f closedir*
10025 : check for volatile keyword
10026 echo " "
10027 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10028 $cat >try.c <<'EOCP'
10029 main()
10030 {
10031         typedef struct _goo_struct goo_struct;
10032         goo_struct * volatile goo = ((goo_struct *)0);
10033         struct _goo_struct {
10034                 long long_int;
10035                 int reg_int;
10036                 char char_var;
10037         };
10038         typedef unsigned short foo_t;
10039         char *volatile foo;
10040         volatile int bar;
10041         volatile foo_t blech;
10042         foo = foo;
10043 }
10044 EOCP
10045 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10046         val="$define"
10047         echo "Yup, it does."
10048 else
10049         val="$undef"
10050         echo "Nope, it doesn't."
10051 fi
10052 set d_volatile
10053 eval $setvar
10054 $rm -f try.*
10055
10056 : see if there is a wait4
10057 set wait4 d_wait4
10058 eval $inlibc
10059
10060 : see if waitpid exists
10061 set waitpid d_waitpid
10062 eval $inlibc
10063
10064 : see if wcstombs exists
10065 set wcstombs d_wcstombs
10066 eval $inlibc
10067
10068 : see if wctomb exists
10069 set wctomb d_wctomb
10070 eval $inlibc
10071
10072 : see if writev exists
10073 set writev d_writev
10074 eval $inlibc
10075
10076 : preserve RCS keywords in files with variable substitution, grrr
10077 Date='$Date'
10078 Id='$Id'
10079 Log='$Log'
10080 RCSfile='$RCSfile'
10081 Revision='$Revision'
10082
10083 : check for alignment requirements
10084 echo " "
10085 case "$alignbytes" in
10086 '') echo "Checking alignment constraints..." >&4
10087         $cat >try.c <<'EOCP'
10088 struct foobar {
10089         char foo;
10090         double bar;
10091 } try;
10092 main()
10093 {
10094         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10095 }
10096 EOCP
10097         set try
10098         if eval $compile_ok; then
10099                 dflt=`./try`
10100         else
10101                 dflt='8'
10102                 echo "(I can't seem to compile the test program...)"
10103         fi
10104         ;;
10105 *) dflt="$alignbytes"
10106         ;;
10107 esac
10108 rp="Doubles must be aligned on a how-many-byte boundary?"
10109 . ./myread
10110 alignbytes="$ans"
10111 $rm -f try.c try
10112
10113 : check for ordering of bytes in a long
10114 case "$byteorder" in
10115 '')
10116         $cat <<'EOM'
10117   
10118 In the following, larger digits indicate more significance.  A big-endian
10119 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10120 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10121 machines may have weird orders like 3412.  A Cray will report 87654321. If
10122 the test program works the default is probably right.
10123 I'm now running the test program...
10124 EOM
10125         $cat >try.c <<'EOCP'
10126 #include <stdio.h>
10127 main()
10128 {
10129         int i;
10130         union {
10131                 unsigned long l;
10132                 char c[sizeof(long)];
10133         } u;
10134
10135         if (sizeof(long) > 4)
10136                 u.l = (0x08070605L << 32) | 0x04030201L;
10137         else
10138                 u.l = 0x04030201L;
10139         for (i = 0; i < sizeof(long); i++)
10140                 printf("%c", u.c[i]+'0');
10141         printf("\n");
10142         exit(0);
10143 }
10144 EOCP
10145         xxx_prompt=y
10146         set try
10147         if eval $compile && ./try > /dev/null; then
10148                 dflt=`./try`
10149                 case "$dflt" in
10150                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10151                         echo "(The test program ran ok.)"
10152                         echo "byteorder=$dflt"
10153                         xxx_prompt=n
10154                         ;;
10155                 ????|????????) echo "(The test program ran ok.)" ;;
10156                 *) echo "(The test program didn't run right for some reason.)" ;;
10157                 esac
10158         else
10159                 dflt='4321'
10160                 cat <<'EOM'
10161 (I can't seem to compile the test program.  Guessing big-endian...)
10162 EOM
10163         fi
10164         case "$xxx_prompt" in
10165         y)
10166                 rp="What is the order of bytes in a long?"
10167                 . ./myread
10168                 byteorder="$ans"
10169                 ;;
10170         *)      byteorder=$dflt
10171                 ;;
10172         esac
10173         ;;
10174 esac
10175 $rm -f try.c try
10176
10177 : how do we catenate cpp tokens here?
10178 echo " "
10179 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10180 $cat >cpp_stuff.c <<'EOCP'
10181 #define RCAT(a,b)a/**/b
10182 #define ACAT(a,b)a ## b
10183 RCAT(Rei,ser)
10184 ACAT(Cir,cus)
10185 EOCP
10186 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10187 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10188         echo "Oh!  Smells like ANSI's been here." >&4
10189         echo "We can catify or stringify, separately or together!"
10190         cpp_stuff=42
10191 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10192         echo "Ah, yes!  The good old days!" >&4
10193         echo "However, in the good old days we don't know how to stringify and"
10194         echo "catify at the same time."
10195         cpp_stuff=1
10196 else
10197         $cat >&4 <<EOM
10198 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10199 to have to edit the values of CAT[2-5] in config.h...
10200 EOM
10201         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10202 fi
10203 $rm -f cpp_stuff.*
10204
10205 : see if this is a db.h system
10206 set db.h i_db
10207 eval $inhdr
10208
10209 case "$i_db" in
10210 $define)
10211         : Check db version.
10212         echo " "
10213         echo "Checking Berkeley DB version ..." >&4
10214         $cat >try.c <<EOCP
10215 #$d_const HASCONST
10216 #ifndef HASCONST
10217 #define const
10218 #endif
10219 #include <sys/types.h>
10220 #include <stdio.h>
10221 #include <db.h>
10222 main()
10223 {
10224 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10225     int Major, Minor, Patch ;
10226     unsigned long Version ;
10227     (void)db_version(&Major, &Minor, &Patch) ;
10228     printf("You have Berkeley DB Version 2 or greater\n");
10229
10230     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10231                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10232     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10233                 Major, Minor, Patch) ;
10234
10235     /* check that db.h & libdb are compatible */
10236     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10237         printf("db.h and libdb are incompatible\n") ;
10238         exit(3);        
10239     }
10240
10241     printf("db.h and libdb are compatible\n") ;
10242
10243     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10244                 + DB_VERSION_PATCH ;
10245
10246     /* needs to be >= 2.3.4 */
10247     if (Version < 2003004) {
10248     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10249         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10250         exit(2);        
10251     }
10252
10253     exit(0);
10254 #else
10255 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10256     printf("You have Berkeley DB Version 1\n");
10257     exit(0);    /* DB version < 2: the coast is clear. */
10258 #else
10259     exit(1);    /* <db.h> not Berkeley DB? */
10260 #endif
10261 #endif
10262 }
10263 EOCP
10264         set try
10265         if eval $compile && ./try; then
10266                 echo 'Looks OK.' >&4
10267         else
10268                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10269                 i_db=$undef
10270                 case " $libs " in
10271                 *"-ldb "*)
10272                         : Remove db from list of libraries to use
10273                         echo "Removing unusable -ldb from library list" >&4
10274                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10275                         shift
10276                         libs="$*"
10277                         echo "libs = $libs" >&4
10278                         ;;
10279                 esac
10280         fi
10281         $rm -f try.*
10282         ;;
10283 esac
10284
10285 case "$i_db" in
10286 define)
10287         : Check the return type needed for hash 
10288         echo " "
10289         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10290         $cat >try.c <<EOCP
10291 #$d_const HASCONST
10292 #ifndef HASCONST
10293 #define const
10294 #endif
10295 #include <sys/types.h>
10296 #include <db.h>
10297
10298 #ifndef DB_VERSION_MAJOR
10299 u_int32_t hash_cb (ptr, size)
10300 const void *ptr;
10301 size_t size;
10302 {
10303 }
10304 HASHINFO info;
10305 main()
10306 {
10307         info.hash = hash_cb;
10308 }
10309 #endif
10310 EOCP
10311         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10312                 if $contains warning try.out >>/dev/null 2>&1 ; then
10313                         db_hashtype='int'
10314                 else
10315                         db_hashtype='u_int32_t'
10316                 fi
10317         else
10318                 : XXX Maybe we should just give up here.
10319                 db_hashtype=u_int32_t
10320                 $cat try.out >&4
10321                 echo "Help:  I can't seem to compile the db test program." >&4
10322                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10323         fi
10324         $rm -f try.*
10325         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10326         ;;
10327 *)      db_hashtype=u_int32_t
10328         ;;
10329 esac
10330 case "$i_db" in
10331 define)
10332         : Check the return type needed for prefix 
10333         echo " "
10334         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10335         cat >try.c <<EOCP
10336 #$d_const HASCONST
10337 #ifndef HASCONST
10338 #define const
10339 #endif
10340 #include <sys/types.h>
10341 #include <db.h>
10342
10343 #ifndef DB_VERSION_MAJOR
10344 size_t prefix_cb (key1, key2)
10345 const DBT *key1;
10346 const DBT *key2;
10347 {
10348 }
10349 BTREEINFO info;
10350 main()
10351 {
10352         info.prefix = prefix_cb;
10353 }
10354 #endif
10355 EOCP
10356         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10357                 if $contains warning try.out >>/dev/null 2>&1 ; then
10358                         db_prefixtype='int'
10359                 else
10360                         db_prefixtype='size_t'
10361                 fi
10362         else
10363                 db_prefixtype='size_t'
10364                 : XXX Maybe we should just give up here.
10365                 $cat try.out >&4
10366                 echo "Help:  I can't seem to compile the db test program." >&4
10367                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10368         fi
10369         $rm -f try.*
10370         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10371         ;;
10372 *)      db_prefixtype='size_t'
10373         ;;
10374 esac
10375
10376 : check for void type
10377 echo " "
10378 echo "Checking to see how well your C compiler groks the void type..." >&4
10379 case "$voidflags" in
10380 '')
10381         $cat >try.c <<'EOCP'
10382 #if TRY & 1
10383 void sub() {
10384 #else
10385 sub() {
10386 #endif
10387         extern void moo();      /* function returning void */
10388         void (*goo)();          /* ptr to func returning void */
10389 #if TRY & 8
10390         void *hue;              /* generic ptr */
10391 #endif
10392 #if TRY & 2
10393         void (*foo[10])();
10394 #endif
10395
10396 #if TRY & 4
10397         if(goo == moo) {
10398                 exit(0);
10399         }
10400 #endif
10401         exit(0);
10402 }
10403 main() { sub(); }
10404 EOCP
10405         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10406                 voidflags=$defvoidused
10407         echo "Good.  It appears to support void to the level $package wants.">&4
10408                 if $contains warning .out >/dev/null 2>&1; then
10409                         echo "However, you might get some warnings that look like this:"
10410                         $cat .out
10411                 fi
10412         else
10413 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10414                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10415                         echo "It supports 1..."
10416                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10417                                 echo "It also supports 2..."
10418                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10419                                         voidflags=7
10420                                         echo "And it supports 4 but not 8 definitely."
10421                                 else
10422                                         echo "It doesn't support 4..."
10423                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10424                                                 voidflags=11
10425                                                 echo "But it supports 8."
10426                                         else
10427                                                 voidflags=3
10428                                                 echo "Neither does it support 8."
10429                                         fi
10430                                 fi
10431                         else
10432                                 echo "It does not support 2..."
10433                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10434                                         voidflags=13
10435                                         echo "But it supports 4 and 8."
10436                                 else
10437                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10438                                                 voidflags=5
10439                                                 echo "And it supports 4 but has not heard about 8."
10440                                         else
10441                                                 echo "However it supports 8 but not 4."
10442                                         fi
10443                                 fi
10444                         fi
10445                 else
10446                         echo "There is no support at all for void."
10447                         voidflags=0
10448                 fi
10449         fi
10450 esac
10451 case "$voidflags" in
10452 "$defvoidused") ;;
10453 *)      $cat >&4 <<'EOM'
10454   Support flag bits are:
10455     1: basic void declarations.
10456     2: arrays of pointers to functions returning void.
10457     4: operations between pointers to and addresses of void functions.
10458     8: generic void pointers.
10459 EOM
10460         dflt="$voidflags";
10461         rp="Your void support flags add up to what?"
10462         . ./myread
10463         voidflags="$ans"
10464         ;;
10465 esac
10466 $rm -f try.* .out
10467
10468
10469 : How can we generate normalized random numbers ?
10470 echo " "
10471 echo "Looking for a random number function..." >&4
10472 case "$randfunc" in
10473 '')
10474         if set drand48 val -f; eval $csym; $val; then
10475                 dflt="drand48"
10476                 echo "Good, found drand48()." >&4
10477         elif set random val -f; eval $csym; $val; then
10478                 dflt="random"
10479                 echo "OK, found random()." >&4
10480         else
10481                 dflt="rand"
10482                 echo "Yick, looks like I have to use rand()." >&4
10483         fi
10484         echo " "
10485         ;;
10486 *)
10487         dflt="$randfunc"
10488         ;;
10489 esac
10490 cont=true
10491
10492 case "$ccflags" in
10493 *-Dmy_rand=*|*-Dmy_srand=*)
10494         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10495         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10496         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10497         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10498         ;;
10499 esac
10500
10501 while $test "$cont"; do
10502         rp="Use which function to generate random numbers?"
10503         . ./myread
10504         if $test "$ans" = "$dflt"; then
10505                 : null
10506         else
10507                 randbits=''
10508         fi
10509         randfunc="$ans"
10510         if set $ans val -f; eval $csym; $val; then
10511                 cont=''
10512         else
10513                 dflt=n
10514                 rp="Function $ans does not exist. Use that name anyway?"
10515                 . ./myread
10516                 dflt=rand
10517                 case "$ans" in
10518                         [yY]*) cont='';;
10519                 esac
10520         fi
10521         case "$cont" in
10522         '')
10523                 case "$randfunc" in
10524                 drand48)
10525                         drand01="drand48()"
10526                         seedfunc="srand48"
10527                         randbits=48
10528                         randseedtype=long
10529                         ;;
10530                 rand|random)
10531                         case "$randbits" in
10532                         '')
10533 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10534                                 $cat >try.c <<EOCP
10535 #$i_unistd I_UNISTD
10536 #$i_stdlib I_STDLIB
10537 #include <stdio.h>
10538 #ifdef I_UNISTD
10539 #  include <unistd.h>
10540 #endif
10541 #ifdef I_STDLIB
10542 #  include <stdlib.h>
10543 #endif
10544 main()
10545 {
10546         register int i;
10547         register unsigned long tmp;
10548         register unsigned long max = 0L;
10549
10550         for (i = 1000; i; i--) {
10551                 tmp = (unsigned long) $randfunc();
10552                 if (tmp > max) max = tmp;
10553         }
10554         for (i = 0; max; i++)
10555                 max /= 2;
10556         printf("%d\n",i);
10557 }
10558 EOCP
10559                                 set try
10560                                 if eval $compile_ok; then
10561                                         dflt=`try`
10562                                 else
10563                                         dflt='?'
10564                                         echo "(I can't seem to compile the test program...)"
10565                                 fi
10566                                 ;;
10567                         *)
10568                                 dflt="$randbits"
10569                                 ;;
10570                         esac
10571                         rp="How many bits does your $randfunc() function produce?"
10572                         . ./myread
10573                         randbits="$ans"
10574                         $rm -f try.c try
10575                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10576                         seedfunc="s$randfunc"
10577                         randseedtype=unsigned
10578                         ;;
10579                 *)
10580                         dflt="31"
10581                         rp="How many bits does your $randfunc() function produce?"
10582                         . ./myread
10583                         randbits="$ans"
10584                         seedfunc="s$randfunc"
10585                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10586                         if set $seedfunc val -f; eval $csym; $val; then
10587                                 echo "(Using $seedfunc() to seed random generator)"
10588                         else
10589                                 echo "(Warning: no $seedfunc() to seed random generator)"
10590                                 seedfunc=rand
10591                         fi
10592                         randseedtype=unsigned
10593                         ;;
10594                 esac
10595                 ;;
10596         esac
10597 done
10598
10599 echo " "
10600 echo "Determining whether or not we are on an EBCDIC system..." >&4
10601 $cat >tebcdic.c <<'EOM'
10602 int main()
10603 {
10604   if ('M'==0xd4) return 0;
10605   return 1;
10606 }
10607 EOM
10608
10609 val=$undef
10610 set tebcdic
10611 if eval $compile_ok; then
10612         if ./tebcdic; then
10613                 echo "You have EBCDIC." >&4
10614                 val="$define"
10615         else
10616                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10617         fi
10618 else
10619         echo "I'm unable to compile the test program." >&4
10620         echo "I'll assume ASCII or some ISO Latin." >&4
10621 fi
10622 $rm -f tebcdic.c tebcdic
10623 set ebcdic
10624 eval $setvar
10625
10626 : see what type file positions are declared as in the library
10627 rp="What is the type for file position used by fsetpos()?"
10628 set fpos_t fpostype long stdio.h sys/types.h
10629 eval $typedef_ask
10630
10631 : Store the full pathname to the sed program for use in the C program
10632 full_sed=$sed
10633
10634 : see what type gids are declared as in the kernel
10635 echo " "
10636 echo "Looking for the type for group ids returned by getgid()."
10637 set gid_t gidtype xxx stdio.h sys/types.h
10638 eval $typedef
10639 case "$gidtype" in
10640 xxx)
10641         xxx=`./findhdr sys/user.h`
10642         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10643         case $1 in
10644         unsigned) dflt="$1 $2" ;;
10645         *) dflt="$1" ;;
10646         esac
10647         ;;
10648 *) dflt="$gidtype";;
10649 esac
10650 case "$gidtype" in
10651 gid_t) echo "gid_t found." ;;
10652 *)      rp="What is the type for group ids returned by getgid()?"
10653         . ./myread
10654         gidtype="$ans"
10655         ;;
10656 esac
10657
10658 : see if getgroups exists
10659 set getgroups d_getgrps
10660 eval $inlibc
10661
10662 : see if setgroups exists
10663 set setgroups d_setgrps
10664 eval $inlibc
10665
10666
10667 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10668 echo " "
10669 case "$d_getgrps$d_setgrps" in
10670 *define*)
10671         case "$groupstype" in
10672         '') dflt="$gidtype" ;;
10673         *)  dflt="$groupstype" ;;
10674         esac
10675         $cat <<EOM
10676 What type of pointer is the second argument to getgroups() and setgroups()?
10677 Usually this is the same as group ids, $gidtype, but not always.
10678
10679 EOM
10680         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10681         . ./myread
10682         groupstype="$ans"
10683         ;;
10684 *)  groupstype="$gidtype";;
10685 esac
10686
10687 : see what type lseek is declared as in the kernel
10688 rp="What is the type used for lseek's offset on this system?"
10689 set off_t lseektype long stdio.h sys/types.h
10690 eval $typedef_ask
10691
10692 echo " "
10693 $echo $n "Checking to see how big your file offsets are...$c" >&4
10694 $cat >try.c <<EOCP
10695 #include <sys/types.h>
10696 #include <stdio.h>
10697 main()
10698 {
10699         printf("%d\n", sizeof($lseektype));
10700 }
10701 EOCP
10702 set try
10703 if eval $compile_ok; then
10704         lseeksize=`./try`
10705         $echo " $lseeksize bytes." >&4
10706 else
10707         dflt='4'
10708         echo " "
10709         echo "(I can't seem to compile the test program.  Guessing...)"
10710         rp="What is the size of your file offsets (in bytes)?"
10711         . ./myread
10712         lseeksize="$ans"
10713 fi
10714 $rm -f try.c try
10715
10716 echo " "
10717 echo "Checking if your $make program sets \$(MAKE)..." >&4
10718 case "$make_set_make" in
10719 '')
10720         $sed 's/^X //' > testmake.mak << 'EOF'
10721 Xall:
10722 X       @echo 'maketemp="$(MAKE)"'
10723 EOF
10724         case "`$make -f testmake.mak 2>/dev/null`" in
10725         *maketemp=*) make_set_make='#' ;;
10726         *)      make_set_make="MAKE=$make" ;;
10727         esac
10728         $rm -f testmake.mak
10729         ;;
10730 esac
10731 case "$make_set_make" in
10732 '#') echo "Yup, it does.";;
10733 *) echo "Nope, it doesn't.";;
10734 esac
10735
10736 : see what type is used for mode_t
10737 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10738 set mode_t modetype int stdio.h sys/types.h
10739 eval $typedef_ask
10740
10741 : define a fucntion to check prototypes
10742 $cat > protochk <<EOSH
10743 $startsh
10744 cc="$cc"
10745 optimize="$optimize"
10746 ccflags="$ccflags"
10747 prototype="$prototype"
10748 define="$define"
10749 rm=$rm
10750 EOSH
10751
10752 $cat >> protochk <<'EOSH'
10753
10754 $rm -f try.c
10755 foo="$1"
10756 shift
10757 while test $# -ge 2; do
10758         case "$1" in
10759                 $define) echo "#include <$2>" >> try.c ;;
10760                 literal) echo "$2" >> try.c ;;
10761         esac
10762     shift 2
10763 done
10764 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10765 cat >> try.c <<'EOCP'
10766 #ifdef CAN_PROTOTYPE
10767 #define _(args) args
10768 #else
10769 #define _(args) ()
10770 #endif
10771 EOCP
10772 echo "$foo" >> try.c
10773 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10774 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10775 status=$?
10776 $rm -f try.[co]
10777 exit $status
10778 EOSH
10779 chmod +x protochk
10780 $eunicefix protochk
10781
10782 : see what type is used for size_t
10783 rp="What is the type used for the length parameter for string functions?"
10784 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10785 eval $typedef_ask
10786
10787 : check for type of arguments to gethostbyaddr. 
10788 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10789         case "$d_gethbyaddr" in
10790         $define)
10791                 $cat <<EOM
10792
10793 Checking to see what type of arguments are accepted by gethostbyaddr().
10794 EOM
10795                 hdrs="$define sys/types.h
10796                         $d_socket sys/socket.h 
10797                         $i_niin netinet/in.h 
10798                         $i_netdb netdb.h
10799                         $i_unistd unistd.h"
10800                 : The first arg can 'char *' or 'void *'
10801                 : The second arg is some of integral type
10802                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10803                         for yyy in size_t long int; do
10804                                 case "$netdb_host_type" in
10805                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10806                                         if ./protochk "$try" $hdrs; then
10807                                                 echo "Your system accepts $xxx for the first arg."
10808                                                 echo "...and $yyy for the second arg."
10809                                                 netdb_host_type="$xxx"
10810                                                 netdb_hlen_type="$yyy"
10811                                         fi
10812                                         ;;
10813                                 esac
10814                         done
10815                 done
10816                 : In case none of those worked, prompt the user.
10817                 case "$netdb_host_type" in
10818                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10819                         dflt='char *'
10820                         . ./myread
10821                         netdb_host_type=$ans
10822                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10823                         dflt="$sizetype"
10824                         . ./myread
10825                         netdb_hlen_type=$ans
10826                         ;;
10827                 esac
10828                 ;;
10829         *)      : no gethostbyaddr, so pick harmless defaults
10830                 netdb_host_type='char *'
10831                 netdb_hlen_type="$sizetype"
10832                 ;;
10833         esac
10834         # Remove the "const" if needed. -- but then we'll have a 
10835         # prototype clash!
10836         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10837 fi
10838
10839 : check for type of argument to gethostbyname. 
10840 if test "X$netdb_name_type" = X ; then
10841         case "$d_gethbyname" in
10842         $define)
10843                 $cat <<EOM
10844
10845 Checking to see what type of argument is accepted by gethostbyname().
10846 EOM
10847                 hdrs="$define sys/types.h
10848                         $d_socket sys/socket.h 
10849                         $i_niin netinet/in.h 
10850                         $i_netdb netdb.h
10851                         $i_unistd unistd.h"
10852                 for xxx in "const char *" "char *"; do
10853                         case "$netdb_name_type" in
10854                         '')     try="extern struct hostent *gethostbyname($xxx);"
10855                                 if ./protochk "$try" $hdrs; then
10856                                         echo "Your system accepts $xxx."
10857                                         netdb_name_type="$xxx"
10858                                 fi
10859                                 ;;
10860                         esac
10861                 done
10862                 : In case none of those worked, prompt the user.
10863                 case "$netdb_name_type" in
10864                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10865                         dflt='char *'
10866                         . ./myread
10867                         netdb_name_type=$ans
10868                         ;;
10869                 esac
10870                 ;;
10871         *)      : no gethostbyname, so pick harmless default
10872                 netdb_name_type='char *'
10873                 ;;
10874         esac
10875 fi
10876
10877 : check for type of 1st argument to getnetbyaddr. 
10878 if test "X$netdb_net_type" = X ; then
10879         case "$d_getnbyaddr" in
10880         $define)
10881                 $cat <<EOM
10882
10883 Checking to see what type of 1st argument is accepted by getnetbyaddr().
10884 EOM
10885                 hdrs="$define sys/types.h
10886                         $d_socket sys/socket.h 
10887                         $i_niin netinet/in.h 
10888                         $i_netdb netdb.h
10889                         $i_unistd unistd.h"
10890                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
10891                         case "$netdb_net_type" in
10892                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
10893                                 if ./protochk "$try" $hdrs; then
10894                                         echo "Your system accepts $xxx."
10895                                         netdb_net_type="$xxx"
10896                                 fi
10897                                 ;;
10898                         esac
10899                 done
10900                 : In case none of those worked, prompt the user.
10901                 case "$netdb_net_type" in
10902                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
10903                         dflt='long'
10904                         . ./myread
10905                         netdb_net_type=$ans
10906                         ;;
10907                 esac
10908                 ;;
10909         *)      : no getnetbyaddr, so pick harmless default
10910                 netdb_net_type='long'
10911                 ;;
10912         esac
10913 fi
10914 : locate the preferred pager for this system
10915 case "$pager" in
10916 '')
10917         dflt=''
10918         case "$pg" in
10919         /*) dflt=$pg;;
10920         esac
10921         case "$more" in
10922         /*) dflt=$more;;
10923         esac
10924         case "$less" in
10925         /*) dflt=$less;;
10926         esac
10927         case "$dflt" in
10928         '') dflt=/usr/ucb/more;;
10929         esac
10930         ;;
10931 *) dflt="$pager";;
10932 esac
10933 echo " "
10934 fn=f/
10935 rp='What pager is used on your system?'
10936 . ./getfile
10937 pager="$ans"
10938
10939 : see what type pids are declared as in the kernel
10940 rp="What is the type of process ids on this system?"
10941 set pid_t pidtype int stdio.h sys/types.h
10942 eval $typedef_ask
10943
10944 : check for length of pointer
10945 echo " "
10946 case "$ptrsize" in
10947 '')
10948         $echo $n "Checking to see how big your pointers are...$c" >&4
10949         if test "$voidflags" -gt 7; then
10950                 echo '#define VOID_PTR char *' > try.c
10951         else
10952                 echo '#define VOID_PTR void *' > try.c
10953         fi
10954         $cat >>try.c <<'EOCP'
10955 #include <stdio.h>
10956 main()
10957 {
10958         printf("%d\n", sizeof(VOID_PTR));
10959         exit(0);
10960 }
10961 EOCP
10962         set try
10963         if eval $compile_ok; then
10964                 ptrsize=`./try`
10965                 $echo " $ptrsize bytes." >&4
10966         else
10967                 dflt='4'
10968                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
10969                 rp="What is the size of a pointer (in bytes)?"
10970                 . ./myread
10971                 ptrsize="$ans"
10972         fi
10973         ;;
10974 esac
10975 $rm -f try.c try
10976
10977 : see if ar generates random libraries by itself
10978 echo " "
10979 echo "Checking how to generate random libraries on your machine..." >&4
10980 echo 'int bar1() { return bar2(); }' > bar1.c
10981 echo 'int bar2() { return 2; }' > bar2.c
10982 $cat > foo.c <<'EOP'
10983 main() { printf("%d\n", bar1()); exit(0); }
10984 EOP
10985 $cc $ccflags -c bar1.c >/dev/null 2>&1
10986 $cc $ccflags -c bar2.c >/dev/null 2>&1
10987 $cc $ccflags -c foo.c >/dev/null 2>&1
10988 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
10989 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
10990         ./foobar >/dev/null 2>&1; then
10991         echo "$ar appears to generate random libraries itself."
10992         orderlib=false
10993         ranlib=":"
10994 elif $ar ts bar$_a >/dev/null 2>&1 &&
10995         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
10996         ./foobar >/dev/null 2>&1; then
10997                 echo "a table of contents needs to be added with '$ar ts'."
10998                 orderlib=false
10999                 ranlib="$ar ts"
11000 else
11001         case "$ranlib" in
11002         :) ranlib='';;
11003         '')
11004                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11005                 $test -f $ranlib || ranlib=''
11006                 ;;
11007         esac
11008         if $test -n "$ranlib"; then
11009                 echo "your system has '$ranlib'; we'll use that."
11010                 orderlib=false
11011         else
11012                 echo "your system doesn't seem to support random libraries"
11013                 echo "so we'll use lorder and tsort to order the libraries."
11014                 orderlib=true
11015                 ranlib=":"
11016         fi
11017 fi
11018 $rm -f foo* bar* 
11019
11020 : check for type of arguments to select. 
11021 case "$selecttype" in
11022 '') case "$d_select" in
11023         $define)
11024                 $cat <<EOM
11025 Checking to see what type of arguments are accepted by select().
11026 EOM
11027                 hdrs="$define sys/types.h
11028                         $i_systime sys/time.h 
11029                         $i_sysselct sys/select.h
11030                         $d_socket sys/socket.h"
11031                 : The first arg can be int, unsigned, or size_t
11032                 : The last arg may or may not be 'const'
11033                 val=''
11034                 : void pointer has been seen but using that
11035                 : breaks the selectminbits test
11036                 for xxx in 'fd_set *' 'int *'; do
11037                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11038                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11039                                         case "$val" in
11040                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11041                                                 if ./protochk "$try" $hdrs; then
11042                                                         echo "Your system accepts $xxx."
11043                                                         val="$xxx"
11044                                                 fi
11045                                                 ;;
11046                                         esac
11047                                 done
11048                         done
11049                 done
11050                 case "$val" in
11051                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11052                         case "$d_fd_set" in
11053                                 $define) dflt="fd_set *" ;;
11054                                 *)              dflt="int *" ;;
11055                         esac
11056                         . ./myread
11057                         val=$ans
11058                         ;;
11059                 esac
11060                 selecttype="$val"
11061                 ;;
11062         *)      : no select, so pick a harmless default
11063                 selecttype='int *'
11064                 ;;
11065         esac
11066         ;;
11067 esac
11068
11069 : check for the select 'width'
11070 case "$selectminbits" in
11071 '') case "$d_select" in
11072         $define)
11073                 $cat <<EOM
11074
11075 Checking to see on how many bits at a time your select() operates...
11076 EOM
11077                 $cat >try.c <<EOCP
11078 #include <sys/types.h>
11079 #$i_time I_TIME
11080 #$i_systime I_SYS_TIME
11081 #$i_systimek I_SYS_TIME_KERNEL
11082 #ifdef I_TIME
11083 #   include <time.h>
11084 #endif
11085 #ifdef I_SYS_TIME
11086 #   ifdef I_SYS_TIME_KERNEL
11087 #       define KERNEL
11088 #   endif
11089 #   include <sys/time.h>
11090 #   ifdef I_SYS_TIME_KERNEL
11091 #       undef KERNEL
11092 #   endif
11093 #endif
11094 #$i_sysselct I_SYS_SELECT
11095 #ifdef I_SYS_SELECT
11096 #include <sys/select.h>
11097 #endif
11098 #include <stdio.h>
11099 $selecttype b;
11100 #define S sizeof(*(b))
11101 #define MINBITS 64
11102 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11103 #define NBITS  (NBYTES * 8)
11104 int main() {
11105     char s[NBYTES];
11106     struct timeval t;
11107     int i;
11108     FILE* fp;
11109     int fd;
11110
11111     fclose(stdin);
11112     fp = fopen("try.c", "r");
11113     if (fp == 0)
11114       exit(1);
11115     fd = fileno(fp);
11116     if (fd < 0)
11117       exit(2);
11118     b = ($selecttype)s;
11119     for (i = 0; i < NBITS; i++)
11120         FD_SET(i, b);
11121     t.tv_sec  = 0;
11122     t.tv_usec = 0;
11123     select(fd + 1, b, 0, 0, &t);
11124     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11125     printf("%d\n", i + 1);
11126     return 0;
11127 }
11128 EOCP
11129                 set try
11130                 if eval $compile_ok; then
11131                         selectminbits=`./try`
11132                         case "$selectminbits" in
11133                         '')     cat >&4 <<EOM
11134 Cannot figure out on how many bits at a time your select() operates.
11135 I'll play safe and guess it is 32 bits.
11136 EOM
11137                                 selectminbits=32
11138                                 bits="32 bits"
11139                                 ;;
11140                         1)      bits="1 bit" ;;
11141                         *)      bits="$selectminbits bits" ;;
11142                         esac
11143                         echo "Your select() operates on $bits at a time." >&4
11144                 else
11145                         rp='What is the minimum number of bits your select() operates on?'
11146                         case "$byteorder" in
11147                         1234|12345678)  dflt=32 ;;
11148                         *)              dflt=1  ;;
11149                         esac
11150                         . ./myread
11151                         val=$ans
11152                         selectminbits="$val"
11153                 fi
11154                 $rm -f try.* try
11155                 ;;
11156         *)      : no select, so pick a harmless default
11157                 selectminbits='32'
11158                 ;;
11159         esac
11160         ;;
11161 esac
11162
11163 : Trace out the files included by signal.h, then look for SIGxxx names.
11164 : Remove SIGARRAYSIZE used by HPUX.
11165 : Remove SIGTYP void lines used by OS2.
11166 xxx=`echo '#include <signal.h>' |
11167         $cppstdin $cppminus $cppflags 2>/dev/null |
11168         $grep '^[       ]*#.*include' | 
11169         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11170 : Check this list of files to be sure we have parsed the cpp output ok.
11171 : This will also avoid potentially non-existent files, such 
11172 : as ../foo/bar.h
11173 xxxfiles=''
11174 for xx in $xxx /dev/null ; do
11175         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11176 done
11177 : If we have found no files, at least try signal.h
11178 case "$xxxfiles" in
11179 '')     xxxfiles=`./findhdr signal.h` ;;
11180 esac
11181 xxx=`awk '
11182 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11183         print substr($2, 4, 20)
11184 }
11185 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11186         print substr($3, 4, 20)
11187 }' $xxxfiles`
11188 : Append some common names just in case the awk scan failed.
11189 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11190 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11191 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11192 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11193 : generate a few handy files for later
11194 $cat > signal.c <<'EOCP'
11195 #include <sys/types.h>
11196 #include <signal.h>
11197 #include <stdio.h>
11198 int main() {
11199
11200 /* Strange style to avoid deeply-nested #if/#else/#endif */
11201 #ifndef NSIG
11202 #  ifdef _NSIG
11203 #    define NSIG (_NSIG)
11204 #  endif
11205 #endif
11206
11207 #ifndef NSIG
11208 #  ifdef SIGMAX
11209 #    define NSIG (SIGMAX+1)
11210 #  endif
11211 #endif
11212
11213 #ifndef NSIG
11214 #  ifdef SIG_MAX
11215 #    define NSIG (SIG_MAX+1)
11216 #  endif
11217 #endif
11218
11219 #ifndef NSIG
11220 #  ifdef MAXSIG
11221 #    define NSIG (MAXSIG+1)
11222 #  endif
11223 #endif
11224
11225 #ifndef NSIG
11226 #  ifdef MAX_SIG
11227 #    define NSIG (MAX_SIG+1)
11228 #  endif
11229 #endif
11230
11231 #ifndef NSIG
11232 #  ifdef SIGARRAYSIZE
11233 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11234 #  endif
11235 #endif
11236
11237 #ifndef NSIG
11238 #  ifdef _sys_nsig
11239 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11240 #  endif
11241 #endif
11242
11243 /* Default to some arbitrary number that's big enough to get most
11244    of the common signals.
11245 */
11246 #ifndef NSIG
11247 #    define NSIG 50
11248 #endif
11249
11250 printf("NSIG %d\n", NSIG);
11251
11252 #ifndef JUST_NSIG
11253
11254 EOCP
11255
11256 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11257 {
11258         printf "#ifdef SIG"; printf $1; printf "\n"
11259         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11260         printf $1; printf ");\n"
11261         printf "#endif\n"
11262 }
11263 END {
11264         printf "#endif /* JUST_NSIG */\n";
11265         printf "}\n";
11266 }
11267 ' >>signal.c
11268 $cat >signal.awk <<'EOP'
11269 BEGIN { ndups = 0 }
11270 $1 ~ /^NSIG$/ { nsig = $2 }
11271 ($1 !~ /^NSIG$/) && (NF == 2) {
11272     if ($2 > maxsig) { maxsig = $2 }
11273     if (sig_name[$2]) {
11274         dup_name[ndups] = $1
11275         dup_num[ndups] = $2
11276         ndups++ 
11277     }
11278     else {
11279         sig_name[$2] = $1
11280         sig_num[$2] = $2
11281     }
11282
11283 }
11284 END { 
11285     if (nsig == 0) { nsig = maxsig + 1 }
11286         for (n = 1; n < nsig; n++) {
11287                 if (sig_name[n]) {
11288                         printf("%s %d\n", sig_name[n], sig_num[n])
11289                 }
11290                 else {
11291                         printf("NUM%d %d\n", n, n) 
11292                 }
11293         }
11294     for (n = 0; n < ndups; n++) {
11295                 printf("%s %d\n", dup_name[n], dup_num[n])
11296     }
11297 }
11298 EOP
11299 $cat >signal_cmd <<EOS
11300 $startsh
11301 if $test -s signal.lst; then
11302     echo "Using your existing signal.lst file"
11303         exit 0
11304 fi
11305 xxx="$xxx"
11306 EOS
11307 $cat >>signal_cmd <<'EOS'
11308
11309 set signal
11310 if eval $compile_ok; then
11311         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11312 else
11313         echo "(I can't seem be able to compile the whole test program)" >&4
11314         echo "(I'll try it in little pieces.)" >&4
11315         set signal -DJUST_NSIG
11316         if eval $compile_ok; then
11317                 ./signal$_exe > signal.nsg
11318                 $cat signal.nsg
11319         else
11320                 echo "I can't seem to figure out how many signals you have." >&4
11321                 echo "Guessing 50." >&4
11322                 echo 'NSIG 50' > signal.nsg
11323         fi
11324         : Now look at all the signal names, one at a time.
11325         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11326                 $cat > signal.c <<EOCP
11327 #include <sys/types.h>
11328 #include <signal.h>
11329 #include <stdio.h>
11330 int main() {
11331 printf("$xx %d\n", SIG${xx});
11332 return 0;
11333 }
11334 EOCP
11335                 set signal
11336                 if eval $compile; then
11337                         echo "SIG${xx} found."
11338                         ./signal$_exe  >> signal.ls1
11339                 else
11340                         echo "SIG${xx} NOT found."
11341                 fi
11342         done
11343         if $test -s signal.ls1; then
11344                 $cat signal.nsg signal.ls1 |
11345                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11346         fi
11347
11348 fi
11349 if $test -s signal.lst; then
11350         :
11351 else
11352         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11353         echo 'kill -l' >signal
11354         set X `csh -f <signal`
11355         $rm -f signal
11356         shift
11357         case $# in
11358         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11359         esac
11360         echo $@ | $tr ' ' $trnl | \
11361                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11362 fi
11363 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11364 EOS
11365 chmod a+x signal_cmd
11366 $eunicefix signal_cmd
11367
11368 : generate list of signal names
11369 echo " "
11370 case "$sig_name_init" in
11371 '') doinit=yes ;;
11372 *)  case "$sig_num_init" in
11373     ''|*,*) doinit=yes ;;
11374     esac ;;
11375 esac
11376 case "$doinit" in
11377 yes)
11378         echo "Generating a list of signal names and numbers..." >&4
11379         . ./signal_cmd
11380         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11381         sig_name="ZERO $sig_name"
11382         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11383                                                 { printf "\"%s\", ", $1 }
11384                                                 END { printf "0\n" }' signal.lst`
11385         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11386         sig_num="0 $sig_num"
11387         sig_num_init=`$awk 'BEGIN { printf "0, " }
11388                                         { printf "%d, ", $2}
11389                                         END { printf "0\n"}' signal.lst`
11390         ;;
11391 esac
11392 echo "The following signals are available:"
11393 echo " "
11394 echo $sig_name | $awk \
11395 'BEGIN { linelen = 0 }
11396 {
11397         for (i = 1; i <= NF; i++) {
11398                 name = "SIG" $i " "
11399                 linelen = linelen + length(name)
11400                 if (linelen > 70) {
11401                         printf "\n"
11402                         linelen = length(name)
11403                 }
11404                 printf "%s", name
11405         }
11406         printf "\n"
11407 }'
11408 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11409
11410 : see what type is used for signed size_t
11411 set ssize_t ssizetype int stdio.h sys/types.h
11412 eval $typedef
11413 dflt="$ssizetype"
11414 $cat > ssize.c <<EOM
11415 #include <stdio.h>
11416 #include <sys/types.h>
11417 #define Size_t $sizetype
11418 #define SSize_t $dflt
11419 main()
11420 {
11421         if (sizeof(Size_t) == sizeof(SSize_t))
11422                 printf("$dflt\n");
11423         else if (sizeof(Size_t) == sizeof(int))
11424                 printf("int\n");
11425         else 
11426                 printf("long\n");
11427         exit(0);
11428 }
11429 EOM
11430 echo " "
11431 set ssize
11432 if eval $compile_ok && ./ssize > /dev/null; then
11433         ssizetype=`./ssize`
11434         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11435 else
11436         $cat >&4 <<EOM
11437 Help! I can't compile and run the ssize_t test program: please enlighten me!
11438 (This is probably a misconfiguration in your system or libraries, and
11439 you really ought to fix it.  Still, I'll try anyway.)
11440
11441 I need a type that is the same size as $sizetype, but is guaranteed to
11442 be signed.  Common values are ssize_t, int and long.
11443
11444 EOM
11445         rp="What signed type is the same size as $sizetype?"
11446         . ./myread
11447         ssizetype="$ans"
11448 fi
11449 $rm -f ssize ssize.*
11450
11451 : see what type of char stdio uses.
11452 echo " "
11453 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11454         echo "Your stdio uses unsigned chars." >&4
11455         stdchar="unsigned char"
11456 else
11457         echo "Your stdio uses signed chars." >&4
11458         stdchar="char"
11459 fi
11460
11461 : see if time exists
11462 echo " "
11463 if test "X$d_time" = X -o X"$timetype" = X; then
11464     if set time val -f d_time; eval $csym; $val; then
11465                 echo 'time() found.' >&4
11466                 val="$define"
11467                 rp="What is the type returned by time() on this system?"
11468                 set time_t timetype long stdio.h sys/types.h
11469                 eval $typedef_ask
11470     else
11471                 echo 'time() not found, hope that will do.' >&4
11472                 val="$undef"
11473                 timetype='int';
11474     fi
11475     set d_time
11476     eval $setvar
11477 fi
11478
11479 : see what type uids are declared as in the kernel
11480 echo " "
11481 echo "Looking for the type for user ids returned by getuid()."
11482 set uid_t uidtype xxx stdio.h sys/types.h
11483 eval $typedef
11484 case "$uidtype" in
11485 xxx)
11486         xxx=`./findhdr sys/user.h`
11487         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11488         case $1 in
11489         unsigned) dflt="$1 $2" ;;
11490         *) dflt="$1" ;;
11491         esac
11492         ;;
11493 *) dflt="$uidtype";;
11494 esac
11495 case "$uidtype" in
11496 uid_t)  echo "uid_t found." ;;
11497 *)      rp="What is the type for user ids returned by getuid()?"
11498         . ./myread
11499         uidtype="$ans"
11500         ;;
11501 esac
11502
11503 : see if dbm.h is available
11504 : see if dbmclose exists
11505 set dbmclose d_dbmclose
11506 eval $inlibc
11507
11508 case "$d_dbmclose" in
11509 $define)
11510         set dbm.h i_dbm
11511         eval $inhdr
11512         case "$i_dbm" in
11513         $define)
11514                 val="$undef"
11515                 set i_rpcsvcdbm
11516                 eval $setvar
11517                 ;;
11518         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11519                 eval $inhdr
11520                 ;;
11521         esac
11522         ;;
11523 *)      echo "We won't be including <dbm.h>"
11524         val="$undef"
11525         set i_dbm
11526         eval $setvar
11527         val="$undef"
11528         set i_rpcsvcdbm
11529         eval $setvar
11530         ;;
11531 esac
11532
11533 : see if this is a sys/file.h system
11534 val=''
11535 set sys/file.h val
11536 eval $inhdr
11537
11538 : do we need to include sys/file.h ?
11539 case "$val" in
11540 "$define")
11541         echo " "
11542         if $h_sysfile; then
11543                 val="$define"
11544                 echo "We'll be including <sys/file.h>." >&4
11545         else
11546                 val="$undef"
11547                 echo "We won't be including <sys/file.h>." >&4
11548         fi
11549         ;;
11550 *)
11551         h_sysfile=false
11552         ;;
11553 esac
11554 set i_sysfile
11555 eval $setvar
11556
11557 : see if fcntl.h is there
11558 val=''
11559 set fcntl.h val
11560 eval $inhdr
11561
11562 : see if we can include fcntl.h
11563 case "$val" in
11564 "$define")
11565         echo " "
11566         if $h_fcntl; then
11567                 val="$define"
11568                 echo "We'll be including <fcntl.h>." >&4
11569         else
11570                 val="$undef"
11571                 if $h_sysfile; then
11572         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11573                 else
11574                         echo "We won't be including <fcntl.h>." >&4
11575                 fi
11576         fi
11577         ;;
11578 *)
11579         h_fcntl=false
11580         val="$undef"
11581         ;;
11582 esac
11583 set i_fcntl
11584 eval $setvar
11585
11586 : see if locale.h is available
11587 set locale.h i_locale
11588 eval $inhdr
11589
11590 : see if mach cthreads are available
11591 if test "X$usethreads" = "X$define"; then
11592         set mach/cthreads.h i_machcthr
11593         eval $inhdr
11594 else
11595         i_machcthr="$undef"
11596 fi
11597
11598
11599
11600 : see if this is a math.h system
11601 set math.h i_math
11602 eval $inhdr
11603
11604 : see if ndbm.h is available
11605 set ndbm.h t_ndbm
11606 eval $inhdr
11607 case "$t_ndbm" in
11608 $define)
11609         : see if dbm_open exists
11610         set dbm_open d_dbm_open
11611         eval $inlibc
11612         case "$d_dbm_open" in
11613         $undef)
11614                 t_ndbm="$undef"
11615                 echo "We won't be including <ndbm.h>"
11616                 ;;
11617         esac
11618         ;;
11619 esac
11620 val="$t_ndbm"
11621 set i_ndbm
11622 eval $setvar
11623
11624 : see if net/errno.h is available
11625 val=''
11626 set net/errno.h val
11627 eval $inhdr
11628
11629 : Unfortunately, it causes problems on some systems.  Arrgh.
11630 case "$val" in
11631 $define)
11632         cat > try.c <<'EOM'
11633 #include <stdio.h>
11634 #include <errno.h>
11635 #include <net/errno.h>
11636 int func()
11637 {
11638         return ENOTSOCK;
11639 }
11640 EOM
11641         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11642                 echo "We'll be including <net/errno.h>." >&4
11643         else
11644                 echo "We won't be including <net/errno.h>." >&4
11645                 val="$undef"
11646         fi
11647         $rm -f try.* try
11648         ;;
11649 esac
11650 set i_neterrno
11651 eval $setvar
11652
11653 : see if this is a poll.h system
11654 set poll.h i_poll
11655 eval $inhdr
11656
11657 : get C preprocessor symbols handy
11658 echo " "
11659 $echo $n "Hmm... $c"
11660 echo $al | $tr ' ' $trnl >Cppsym.know
11661 $cat <<EOSS >Cppsym
11662 $startsh
11663 case "\$1" in
11664 -l) list=true
11665         shift
11666         ;;
11667 esac
11668 unknown=''
11669 case "\$list\$#" in
11670 1|2)
11671         for sym do
11672                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11673                         exit 0
11674                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11675                         :
11676                 else
11677                         unknown="\$unknown \$sym"
11678                 fi
11679         done
11680         set X \$unknown
11681         shift
11682         ;;
11683 esac
11684 case \$# in
11685 0) exit 1;;
11686 esac
11687 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11688 #ifdef \1\\
11689 exit 0; _ _ _ _\1\\      \1\\
11690 #endif\\
11691 /' >Cppsym\$\$
11692 echo "exit 1; _ _ _" >>Cppsym\$\$
11693 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11694 case "\$list" in
11695 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11696 *)
11697         sh Cppsym2\$\$
11698         status=\$?
11699         ;;
11700 esac
11701 $rm -f Cppsym\$\$ Cppsym2\$\$
11702 exit \$status
11703 EOSS
11704 chmod +x Cppsym
11705 $eunicefix Cppsym
11706 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11707
11708 : now check the C compiler for additional symbols
11709 $cat >ccsym <<EOS
11710 $startsh
11711 $cat >tmp.c <<EOF
11712 extern int foo;
11713 EOF
11714 for i in \`$cc -v -c tmp.c 2>&1\`
11715 do
11716         case "\$i" in
11717         -D*) echo "\$i" | $sed 's/^-D//';;
11718         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11719         esac
11720 done
11721 $rm -f try.c
11722 EOS
11723 chmod +x ccsym
11724 $eunicefix ccsym
11725 ./ccsym > ccsym1.raw
11726 if $test -s ccsym1.raw; then
11727        $sort ccsym1.raw | $uniq >ccsym.raw
11728 else
11729        mv ccsym1.raw ccsym.raw
11730 fi
11731
11732 $awk '/\=/ { print $0; next }
11733         { print $0"=1" }' ccsym.raw >ccsym.list
11734 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11735 $comm -13 ccsym.true ccsym.list >ccsym.own
11736 $comm -12 ccsym.true ccsym.list >ccsym.com
11737 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11738 also=''
11739 symbols='symbols'
11740 if $test -z ccsym.raw; then
11741         echo "Your C compiler doesn't seem to define any symbol!" >&4
11742         echo " "
11743         echo "However, your C preprocessor defines the following ones:"
11744         $cat Cppsym.true
11745 else
11746         if $test -s ccsym.com; then
11747                 echo "Your C compiler and pre-processor define these symbols:"
11748                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11749                 also='also '
11750                 symbols='ones'
11751                 $test "$silent" || sleep 1
11752         fi
11753         if $test -s ccsym.cpp; then
11754                 $test "$also" && echo " "
11755                 echo "Your C pre-processor ${also}defines the following $symbols:"
11756                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11757                 also='further '
11758                 $test "$silent" || sleep 1
11759         fi
11760         if $test -s ccsym.own; then
11761                 $test "$also" && echo " "
11762                 echo "Your C compiler ${also}defines the following cpp variables:"
11763                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11764                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11765                 $test "$silent" || sleep 1
11766         fi
11767 fi
11768 $rm -f ccsym*
11769
11770 : see if this is a termio system
11771 val="$undef"
11772 val2="$undef"
11773 val3="$undef"
11774 if $test `./findhdr termios.h`; then
11775         set tcsetattr i_termios
11776         eval $inlibc
11777         val3="$i_termios"
11778 fi
11779 echo " "
11780 case "$val3" in
11781 "$define") echo "You have POSIX termios.h... good!" >&4;;
11782 *) if ./Cppsym pyr; then
11783                 case "`/bin/universe`" in
11784                 ucb) if $test `./findhdr sgtty.h`; then
11785                                 val2="$define"
11786                                 echo "<sgtty.h> found." >&4
11787                         else
11788                                 echo "System is pyramid with BSD universe."
11789                                 echo "<sgtty.h> not found--you could have problems." >&4
11790                         fi;;
11791                 *) if $test `./findhdr termio.h`; then
11792                                 val="$define"
11793                                 echo "<termio.h> found." >&4
11794                         else
11795                                 echo "System is pyramid with USG universe."
11796                                 echo "<termio.h> not found--you could have problems." >&4
11797                         fi;;
11798                 esac
11799         elif ./usg; then
11800                 if $test `./findhdr termio.h`; then
11801                         echo "<termio.h> found." >&4
11802                         val="$define"
11803                 elif $test `./findhdr sgtty.h`; then
11804                         echo "<sgtty.h> found." >&4
11805                         val2="$define"
11806                 else
11807 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11808                 fi
11809         else
11810                 if $test `./findhdr sgtty.h`; then
11811                         echo "<sgtty.h> found." >&4
11812                         val2="$define"
11813                 elif $test `./findhdr termio.h`; then
11814                         echo "<termio.h> found." >&4
11815                         val="$define"
11816                 else
11817 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11818                 fi
11819         fi;;
11820 esac
11821 set i_termio; eval $setvar
11822 val=$val2; set i_sgtty; eval $setvar
11823 val=$val3; set i_termios; eval $setvar
11824
11825 : see if stdarg is available
11826 echo " "
11827 if $test `./findhdr stdarg.h`; then
11828         echo "<stdarg.h> found." >&4
11829         valstd="$define"
11830 else
11831         echo "<stdarg.h> NOT found." >&4
11832         valstd="$undef"
11833 fi
11834
11835 : see if varags is available
11836 echo " "
11837 if $test `./findhdr varargs.h`; then
11838         echo "<varargs.h> found." >&4
11839 else
11840         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11841 fi
11842
11843 : set up the varargs testing programs
11844 $cat > varargs.c <<EOP
11845 #ifdef I_STDARG
11846 #include <stdarg.h>
11847 #endif
11848 #ifdef I_VARARGS
11849 #include <varargs.h>
11850 #endif
11851
11852 #ifdef I_STDARG
11853 int f(char *p, ...)
11854 #else
11855 int f(va_alist)
11856 va_dcl
11857 #endif
11858 {
11859         va_list ap;
11860 #ifndef I_STDARG
11861         char *p;
11862 #endif
11863 #ifdef I_STDARG
11864         va_start(ap,p);
11865 #else
11866         va_start(ap);
11867         p = va_arg(ap, char *);
11868 #endif
11869         va_end(ap);
11870 }
11871 EOP
11872 $cat > varargs <<EOP
11873 $startsh
11874 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
11875         echo "true"
11876 else
11877         echo "false"
11878 fi
11879 $rm -f varargs$_o
11880 EOP
11881 chmod +x varargs
11882
11883 : now check which varargs header should be included
11884 echo " "
11885 i_varhdr=''
11886 case "$valstd" in
11887 "$define")
11888         if `./varargs I_STDARG`; then
11889                 val='stdarg.h'
11890         elif `./varargs I_VARARGS`; then
11891                 val='varargs.h'
11892         fi
11893         ;;
11894 *)
11895         if `./varargs I_VARARGS`; then
11896                 val='varargs.h'
11897         fi
11898         ;;
11899 esac
11900 case "$val" in
11901 '')
11902 echo "I could not find the definition for va_dcl... You have problems..." >&4
11903         val="$undef"; set i_stdarg; eval $setvar
11904         val="$undef"; set i_varargs; eval $setvar
11905         ;;
11906 *) 
11907         set i_varhdr
11908         eval $setvar
11909         case "$i_varhdr" in
11910         stdarg.h)
11911                 val="$define"; set i_stdarg; eval $setvar
11912                 val="$undef"; set i_varargs; eval $setvar
11913                 ;;
11914         varargs.h)
11915                 val="$undef"; set i_stdarg; eval $setvar
11916                 val="$define"; set i_varargs; eval $setvar
11917                 ;;
11918         esac
11919         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
11920 esac
11921 $rm -f varargs*
11922
11923 : see if stddef is available
11924 set stddef.h i_stddef
11925 eval $inhdr
11926
11927 : see if sys/access.h is available
11928 set sys/access.h i_sysaccess
11929 eval $inhdr
11930
11931 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
11932 set sys/filio.h i_sysfilio
11933 eval $inhdr
11934 echo " "
11935 if $test `./findhdr sys/ioctl.h`; then
11936         val="$define"
11937         echo '<sys/ioctl.h> found.' >&4
11938 else
11939         val="$undef"
11940         if $test $i_sysfilio = "$define"; then
11941             echo '<sys/ioctl.h> NOT found.' >&4
11942         else
11943                 $test $i_sgtty = "$define" && xxx="sgtty.h"
11944                 $test $i_termio = "$define" && xxx="termio.h"
11945                 $test $i_termios = "$define" && xxx="termios.h"
11946 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
11947         fi
11948 fi
11949 set i_sysioctl
11950 eval $setvar
11951
11952 : see if this is a sys/param system
11953 set sys/param.h i_sysparam
11954 eval $inhdr
11955
11956 : see if sys/resource.h has to be included
11957 set sys/resource.h i_sysresrc
11958 eval $inhdr
11959
11960 : see if sys/security.h is available
11961 set sys/security.h i_syssecrt
11962 eval $inhdr
11963
11964 : see if this is a sys/un.h system
11965 set sys/un.h i_sysun
11966 eval $inhdr
11967
11968 : see if this is a syswait system
11969 set sys/wait.h i_syswait
11970 eval $inhdr
11971
11972 : see if this is an utime system
11973 set utime.h i_utime
11974 eval $inhdr
11975
11976 : see if this is a values.h system
11977 set values.h i_values
11978 eval $inhdr
11979
11980 : see if this is a vfork system
11981 case "$d_vfork" in
11982 "$define")
11983         set vfork.h i_vfork
11984         eval $inhdr
11985         ;;
11986 *)
11987         i_vfork="$undef"
11988         ;;
11989 esac
11990
11991 : see if gdbm.h is available
11992 set gdbm.h t_gdbm
11993 eval $inhdr
11994 case "$t_gdbm" in
11995 $define)
11996         : see if gdbm_open exists
11997         set gdbm_open d_gdbm_open
11998         eval $inlibc
11999         case "$d_gdbm_open" in
12000         $undef)
12001                 t_gdbm="$undef"
12002                 echo "We won't be including <gdbm.h>"
12003                 ;;
12004         esac
12005         ;;
12006 esac
12007 val="$t_gdbm"
12008 set i_gdbm
12009 eval $setvar
12010
12011 echo " "
12012 echo "Looking for extensions..." >&4
12013 tdir=`pwd`
12014 cd $rsrc/ext
12015 : If we are using the old config.sh, known_extensions may contain
12016 : old or inaccurate or duplicate values.
12017 known_extensions=''
12018 nonxs_extensions=''
12019 : We do not use find because it might not be available.
12020 : We do not just use MANIFEST because the user may have dropped
12021 : some additional extensions into the source tree and expect them
12022 : to be built.
12023 for xxx in * ; do
12024         case "$xxx" in
12025         DynaLoader|dynaload) ;;
12026         *)      if $test -f $xxx/$xxx.xs; then
12027                         known_extensions="$known_extensions $xxx"
12028                 elif $test -f $xxx/Makefile.PL; then
12029                         nonxs_extensions="$nonxs_extensions $xxx"
12030                 else
12031                         if $test -d $xxx; then
12032                                 # Look for nested extensions, eg. Devel/Dprof.
12033                                 cd $xxx
12034                                 for yyy in * ; do
12035                                 if $test -f $yyy/$yyy.xs; then
12036                                         known_extensions="$known_extensions $xxx/$yyy"
12037                                 elif $test -f $yyy/Makefile.PL; then
12038                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12039                                 fi
12040                                 done
12041                                 cd ..
12042                         fi
12043                 fi 
12044                 ;;
12045         esac
12046 done
12047 set X $nonxs_extensions
12048 shift
12049 nonxs_extensions="$*"
12050 set X $known_extensions
12051 shift
12052 known_extensions="$*"
12053 cd $tdir
12054
12055 : Now see which are supported on this system.
12056 avail_ext=''
12057 for xxx in $known_extensions ; do
12058         case "$xxx" in
12059         DB_File|db_file)
12060                 case "$i_db" in
12061                 $define) avail_ext="$avail_ext $xxx" ;;
12062                 esac
12063                 ;;
12064         GDBM_File|gdbm_fil)
12065                 case "$i_gdbm" in 
12066                 $define) avail_ext="$avail_ext $xxx" ;;
12067                 esac
12068                 ;;
12069         NDBM_File|ndbm_fil)
12070                 case "$i_ndbm" in
12071                 $define) avail_ext="$avail_ext $xxx" ;;
12072                 esac
12073                 ;;
12074         ODBM_File|odbm_fil) 
12075                 case "${i_dbm}${i_rpcsvcdbm}" in
12076                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12077                 esac
12078                 ;;
12079         POSIX|posix)
12080                 case "$useposix" in
12081                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12082                 esac
12083                 ;;
12084         Opcode|opcode)
12085                 case "$useopcode" in
12086                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12087                 esac
12088                 ;;
12089         Socket|socket)
12090                 case "$d_socket" in 
12091                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12092                 esac
12093                 ;;
12094         Thread|thread)
12095                 case "$usethreads" in 
12096                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12097                 esac
12098                 ;;
12099         IPC/SysV|ipc/sysv)
12100                 : XXX Do we need a useipcsysv variable here
12101                 case "${d_msg}${d_sem}${d_shm}" in 
12102                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12103                 esac
12104                 ;;
12105         *)      avail_ext="$avail_ext $xxx"
12106                 ;;
12107         esac
12108 done
12109
12110 set X $avail_ext
12111 shift
12112 avail_ext="$*"
12113
12114 : Now see which nonxs extensions are supported on this system.
12115 : For now assume all are.
12116 nonxs_ext=''
12117 for xxx in $nonxs_extensions ; do
12118         case "$xxx" in
12119         *)      nonxs_ext="$nonxs_ext $xxx"
12120                 ;;
12121         esac
12122 done
12123
12124 set X $nonxs_ext
12125 shift
12126 nonxs_ext="$*"
12127
12128 case $usedl in
12129 $define)
12130         $cat <<EOM
12131 A number of extensions are supplied with $package.  You may choose to
12132 compile these extensions for dynamic loading (the default), compile
12133 them into the $package executable (static loading), or not include
12134 them at all.  Answer "none" to include no extensions.
12135 Note that DynaLoader is always built and need not be mentioned here.
12136
12137 EOM
12138         case "$dynamic_ext" in
12139         '') dflt="$avail_ext" ;;
12140         *)      dflt="$dynamic_ext"
12141                 # Perhaps we are reusing an old out-of-date config.sh.
12142                 case "$hint" in
12143                 previous)
12144                         if test X"$dynamic_ext" != X"$avail_ext"; then
12145                                 $cat <<EOM
12146 NOTICE:  Your previous config.sh list may be incorrect. 
12147 The extensions now available to you are 
12148         ${avail_ext}
12149 but the default list from your previous config.sh is
12150         ${dynamic_ext} 
12151
12152 EOM
12153                         fi
12154                         ;;
12155                 esac
12156                 ;;
12157         esac
12158         case "$dflt" in
12159         '')     dflt=none;;
12160         esac
12161         rp="What extensions do you wish to load dynamically?"
12162         . ./myread
12163         case "$ans" in
12164         none) dynamic_ext=' ' ;;
12165         *) dynamic_ext="$ans" ;;
12166         esac
12167
12168         case "$static_ext" in
12169         '')
12170                 : Exclude those already listed in dynamic linking
12171                 dflt=''
12172                 for xxx in $avail_ext; do
12173                         case " $dynamic_ext " in
12174                         *" $xxx "*) ;;
12175                         *) dflt="$dflt $xxx" ;;
12176                         esac
12177                 done
12178                 set X $dflt
12179                 shift
12180                 dflt="$*"
12181                 ;;
12182         *)  dflt="$static_ext" 
12183                 ;;
12184         esac
12185
12186         case "$dflt" in
12187         '')     dflt=none;;
12188         esac
12189         rp="What extensions do you wish to load statically?"
12190         . ./myread
12191         case "$ans" in
12192         none) static_ext=' ' ;;
12193         *) static_ext="$ans" ;;
12194         esac
12195         ;;
12196 *)
12197         $cat <<EOM
12198 A number of extensions are supplied with $package.  Answer "none" 
12199 to include no extensions. 
12200 Note that DynaLoader is always built and need not be mentioned here.
12201
12202 EOM
12203         case "$static_ext" in
12204         '') dflt="$avail_ext" ;;
12205         *)      dflt="$static_ext"
12206                 # Perhaps we are reusing an old out-of-date config.sh.
12207                 case "$hint" in
12208                 previous)
12209                         if test X"$static_ext" != X"$avail_ext"; then
12210                                 $cat <<EOM
12211 NOTICE:  Your previous config.sh list may be incorrect. 
12212 The extensions now available to you are 
12213         ${avail_ext}
12214 but the default list from your previous config.sh is
12215         ${static_ext} 
12216
12217 EOM
12218                         fi
12219                         ;;
12220                 esac
12221                 ;;
12222         esac
12223         : Exclude those that are not xs extensions
12224         case "$dflt" in
12225         '')     dflt=none;;
12226         esac
12227         rp="What extensions do you wish to include?"
12228         . ./myread
12229         case "$ans" in
12230         none) static_ext=' ' ;;
12231         *) static_ext="$ans" ;;
12232         esac
12233         ;;
12234 esac
12235
12236 set X $dynamic_ext $static_ext $nonxs_ext
12237 shift
12238 extensions="$*"
12239
12240 : Remove build directory name from cppstdin so it can be used from
12241 : either the present location or the final installed location.
12242 echo " "
12243 : Get out of the UU directory to get correct path name.
12244 cd ..
12245 case "$cppstdin" in
12246 `pwd`/cppstdin)
12247         echo "Stripping down cppstdin path name"
12248         cppstdin=cppstdin
12249         ;;
12250 esac
12251 cd UU
12252
12253 : end of configuration questions
12254 echo " "
12255 echo "End of configuration questions."
12256 echo " "
12257
12258 : back to where it started
12259 if test -d ../UU; then
12260         cd ..
12261 fi
12262
12263 : configuration may be patched via a 'config.over' file
12264 if $test -f config.over; then
12265         echo " "
12266         dflt=y
12267         rp='I see a config.over file.  Do you wish to load it?'
12268         . UU/myread
12269         case "$ans" in
12270         n*) echo "OK, I'll ignore it.";;
12271         *)      . ./config.over
12272                 echo "Configuration override changes have been loaded."
12273                 ;;
12274         esac
12275 fi
12276
12277 : in case they want portability, strip down executable paths
12278 case "$d_portable" in
12279 "$define")
12280         echo " "
12281         echo "Stripping down executable paths..." >&4
12282         for file in $loclist $trylist; do
12283                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12284                         eval $file="\$file"
12285                 fi
12286         done
12287         ;;
12288 esac
12289
12290 : create config.sh file
12291 echo " "
12292 echo "Creating config.sh..." >&4
12293 $spitshell <<EOT >config.sh
12294 $startsh
12295 #
12296 # This file was produced by running the Configure script. It holds all the
12297 # definitions figured out by Configure. Should you modify one of these values,
12298 # do not forget to propagate your changes by running "Configure -der". You may
12299 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12300 #
12301
12302 # Package name      : $package
12303 # Source directory  : $src
12304 # Configuration time: $cf_time
12305 # Configured by     : $cf_by
12306 # Target system     : $myuname
12307
12308 Author='$Author'
12309 Date='$Date'
12310 Header='$Header'
12311 Id='$Id'
12312 Locker='$Locker'
12313 Log='$Log'
12314 Mcc='$Mcc'
12315 RCSfile='$RCSfile'
12316 Revision='$Revision'
12317 Source='$Source'
12318 State='$State'
12319 _a='$_a'
12320 _exe='$_exe'
12321 _o='$_o'
12322 afs='$afs'
12323 alignbytes='$alignbytes'
12324 ansi2knr='$ansi2knr'
12325 aphostname='$aphostname'
12326 apiversion='$apiversion'
12327 ar='$ar'
12328 archlib='$archlib'
12329 archlibexp='$archlibexp'
12330 archname64='$archname64'
12331 archname='$archname'
12332 archobjs='$archobjs'
12333 awk='$awk'
12334 baserev='$baserev'
12335 bash='$bash'
12336 bin='$bin'
12337 binexp='$binexp'
12338 bison='$bison'
12339 byacc='$byacc'
12340 byteorder='$byteorder'
12341 c='$c'
12342 castflags='$castflags'
12343 cat='$cat'
12344 cc='$cc'
12345 cccdlflags='$cccdlflags'
12346 ccdlflags='$ccdlflags'
12347 ccflags='$ccflags'
12348 cf_by='$cf_by'
12349 cf_email='$cf_email'
12350 cf_time='$cf_time'
12351 chgrp='$chgrp'
12352 chmod='$chmod'
12353 chown='$chown'
12354 clocktype='$clocktype'
12355 comm='$comm'
12356 compress='$compress'
12357 contains='$contains'
12358 cp='$cp'
12359 cpio='$cpio'
12360 cpp='$cpp'
12361 cpp_stuff='$cpp_stuff'
12362 cppflags='$cppflags'
12363 cpplast='$cpplast'
12364 cppminus='$cppminus'
12365 cpprun='$cpprun'
12366 cppstdin='$cppstdin'
12367 cryptlib='$cryptlib'
12368 csh='$csh'
12369 d_Gconvert='$d_Gconvert'
12370 d_access='$d_access'
12371 d_accessx='$d_accessx'
12372 d_alarm='$d_alarm'
12373 d_archlib='$d_archlib'
12374 d_attribut='$d_attribut'
12375 d_bcmp='$d_bcmp'
12376 d_bcopy='$d_bcopy'
12377 d_bsd='$d_bsd'
12378 d_bsdgetpgrp='$d_bsdgetpgrp'
12379 d_bsdsetpgrp='$d_bsdsetpgrp'
12380 d_bzero='$d_bzero'
12381 d_casti32='$d_casti32'
12382 d_castneg='$d_castneg'
12383 d_charvspr='$d_charvspr'
12384 d_chown='$d_chown'
12385 d_chroot='$d_chroot'
12386 d_chsize='$d_chsize'
12387 d_closedir='$d_closedir'
12388 d_cmsghdr_s='$d_cmsghdr_s'
12389 d_const='$d_const'
12390 d_crypt='$d_crypt'
12391 d_csh='$d_csh'
12392 d_cuserid='$d_cuserid'
12393 d_dbl_dig='$d_dbl_dig'
12394 d_dbmclose64='$d_dbmclose64'
12395 d_dbminit64='$d_dbminit64'
12396 d_delete64='$d_delete64'
12397 d_difftime='$d_difftime'
12398 d_dirent64_s='$d_dirent64_s'
12399 d_dirnamlen='$d_dirnamlen'
12400 d_dlerror='$d_dlerror'
12401 d_dlopen='$d_dlopen'
12402 d_dlsymun='$d_dlsymun'
12403 d_dosuid='$d_dosuid'
12404 d_drand48proto='$d_drand48proto'
12405 d_dup2='$d_dup2'
12406 d_eaccess='$d_eaccess'
12407 d_endgrent='$d_endgrent'
12408 d_endhent='$d_endhent'
12409 d_endnent='$d_endnent'
12410 d_endpent='$d_endpent'
12411 d_endpwent='$d_endpwent'
12412 d_endsent='$d_endsent'
12413 d_eofnblk='$d_eofnblk'
12414 d_eunice='$d_eunice'
12415 d_fchmod='$d_fchmod'
12416 d_fchown='$d_fchown'
12417 d_fcntl='$d_fcntl'
12418 d_fd_macros='$d_fd_macros'
12419 d_fd_set='$d_fd_set'
12420 d_fds_bits='$d_fds_bits'
12421 d_fetch64='$d_fetch64'
12422 d_fgetpos64='$d_fgetpos64'
12423 d_fgetpos='$d_fgetpos'
12424 d_firstkey64='$d_firstkey64'
12425 d_flexfnam='$d_flexfnam'
12426 d_flock64_s='$d_flock64_s'
12427 d_flock='$d_flock'
12428 d_fopen64='$d_fopen64'
12429 d_fork='$d_fork'
12430 d_fpathconf='$d_fpathconf'
12431 d_freopen64='$d_freopen64'
12432 d_fseek64='$d_fseek64'
12433 d_fseeko64='$d_fseeko64'
12434 d_fseeko='$d_fseeko'
12435 d_fsetpos64='$d_fsetpos64'
12436 d_fsetpos='$d_fsetpos'
12437 d_fstat64='$d_fstat64'
12438 d_ftell64='$d_ftell64'
12439 d_ftello64='$d_ftello64'
12440 d_ftello='$d_ftello'
12441 d_ftime='$d_ftime'
12442 d_ftruncate64='$d_ftruncate64'
12443 d_getgrent='$d_getgrent'
12444 d_getgrps='$d_getgrps'
12445 d_gethbyaddr='$d_gethbyaddr'
12446 d_gethbyname='$d_gethbyname'
12447 d_gethent='$d_gethent'
12448 d_gethname='$d_gethname'
12449 d_gethostprotos='$d_gethostprotos'
12450 d_getlogin='$d_getlogin'
12451 d_getnbyaddr='$d_getnbyaddr'
12452 d_getnbyname='$d_getnbyname'
12453 d_getnent='$d_getnent'
12454 d_getnetprotos='$d_getnetprotos'
12455 d_getpbyname='$d_getpbyname'
12456 d_getpbynumber='$d_getpbynumber'
12457 d_getpent='$d_getpent'
12458 d_getpgid='$d_getpgid'
12459 d_getpgrp2='$d_getpgrp2'
12460 d_getpgrp='$d_getpgrp'
12461 d_getppid='$d_getppid'
12462 d_getprior='$d_getprior'
12463 d_getprotoprotos='$d_getprotoprotos'
12464 d_getpwent='$d_getpwent'
12465 d_getsbyname='$d_getsbyname'
12466 d_getsbyport='$d_getsbyport'
12467 d_getsent='$d_getsent'
12468 d_getservprotos='$d_getservprotos'
12469 d_gettimeod='$d_gettimeod'
12470 d_gnulibc='$d_gnulibc'
12471 d_grpasswd='$d_grpasswd'
12472 d_htonl='$d_htonl'
12473 d_index='$d_index'
12474 d_inetaton='$d_inetaton'
12475 d_ino64t='$d_ino64t'
12476 d_int64t='$d_int64t'
12477 d_iovec_s='$d_iovec_s'
12478 d_isascii='$d_isascii'
12479 d_killpg='$d_killpg'
12480 d_lchown='$d_lchown'
12481 d_link='$d_link'
12482 d_locconv='$d_locconv'
12483 d_lockf64='$d_lockf64'
12484 d_lockf='$d_lockf'
12485 d_longdbl='$d_longdbl'
12486 d_longlong='$d_longlong'
12487 d_lseek64='$d_lseek64'
12488 d_lstat64='$d_lstat64'
12489 d_lstat='$d_lstat'
12490 d_mblen='$d_mblen'
12491 d_mbstowcs='$d_mbstowcs'
12492 d_mbtowc='$d_mbtowc'
12493 d_memcmp='$d_memcmp'
12494 d_memcpy='$d_memcpy'
12495 d_memmove='$d_memmove'
12496 d_memset='$d_memset'
12497 d_mkdir='$d_mkdir'
12498 d_mkfifo='$d_mkfifo'
12499 d_mktime='$d_mktime'
12500 d_msg='$d_msg'
12501 d_msg_ctrunc='$d_msg_ctrunc'
12502 d_msg_dontroute='$d_msg_dontroute'
12503 d_msg_oob='$d_msg_oob'
12504 d_msg_peek='$d_msg_peek'
12505 d_msg_proxy='$d_msg_proxy'
12506 d_msgctl='$d_msgctl'
12507 d_msgget='$d_msgget'
12508 d_msghdr_s='$d_msghdr_s'
12509 d_msgrcv='$d_msgrcv'
12510 d_msgsnd='$d_msgsnd'
12511 d_mymalloc='$d_mymalloc'
12512 d_nextkey64='$d_nextkey64'
12513 d_nice='$d_nice'
12514 d_off64t='$d_off64t'
12515 d_oldpthreads='$d_oldpthreads'
12516 d_oldsock='$d_oldsock'
12517 d_open3='$d_open3'
12518 d_open64='$d_open64'
12519 d_opendir64='$d_opendir64'
12520 d_pathconf='$d_pathconf'
12521 d_pause='$d_pause'
12522 d_phostname='$d_phostname'
12523 d_pipe='$d_pipe'
12524 d_poll='$d_poll'
12525 d_portable='$d_portable'
12526 d_pthread_create_joinable='$d_pthread_create_joinable'
12527 d_pthread_yield='$d_pthread_yield'
12528 d_pwage='$d_pwage'
12529 d_pwchange='$d_pwchange'
12530 d_pwclass='$d_pwclass'
12531 d_pwcomment='$d_pwcomment'
12532 d_pwexpire='$d_pwexpire'
12533 d_pwgecos='$d_pwgecos'
12534 d_pwpasswd='$d_pwpasswd'
12535 d_pwquota='$d_pwquota'
12536 d_readdir64='$d_readdir64'
12537 d_readdir='$d_readdir'
12538 d_readlink='$d_readlink'
12539 d_readv='$d_readv'
12540 d_recvmsg='$d_recvmsg'
12541 d_rename='$d_rename'
12542 d_rewinddir='$d_rewinddir'
12543 d_rmdir='$d_rmdir'
12544 d_safebcpy='$d_safebcpy'
12545 d_safemcpy='$d_safemcpy'
12546 d_sanemcmp='$d_sanemcmp'
12547 d_sched_yield='$d_sched_yield'
12548 d_scm_rights='$d_scm_rights'
12549 d_seekdir64='$d_seekdir64'
12550 d_seekdir='$d_seekdir'
12551 d_select='$d_select'
12552 d_sem='$d_sem'
12553 d_semctl='$d_semctl'
12554 d_semctl_semid_ds='$d_semctl_semid_ds'
12555 d_semctl_semun='$d_semctl_semun'
12556 d_semget='$d_semget'
12557 d_semop='$d_semop'
12558 d_sendmsg='$d_sendmsg'
12559 d_setegid='$d_setegid'
12560 d_seteuid='$d_seteuid'
12561 d_setgrent='$d_setgrent'
12562 d_setgrps='$d_setgrps'
12563 d_sethent='$d_sethent'
12564 d_setlinebuf='$d_setlinebuf'
12565 d_setlocale='$d_setlocale'
12566 d_setnent='$d_setnent'
12567 d_setpent='$d_setpent'
12568 d_setpgid='$d_setpgid'
12569 d_setpgrp2='$d_setpgrp2'
12570 d_setpgrp='$d_setpgrp'
12571 d_setprior='$d_setprior'
12572 d_setpwent='$d_setpwent'
12573 d_setregid='$d_setregid'
12574 d_setresgid='$d_setresgid'
12575 d_setresuid='$d_setresuid'
12576 d_setreuid='$d_setreuid'
12577 d_setrgid='$d_setrgid'
12578 d_setruid='$d_setruid'
12579 d_setsent='$d_setsent'
12580 d_setsid='$d_setsid'
12581 d_setvbuf='$d_setvbuf'
12582 d_sfio='$d_sfio'
12583 d_shm='$d_shm'
12584 d_shmat='$d_shmat'
12585 d_shmatprototype='$d_shmatprototype'
12586 d_shmctl='$d_shmctl'
12587 d_shmdt='$d_shmdt'
12588 d_shmget='$d_shmget'
12589 d_sigaction='$d_sigaction'
12590 d_sigsetjmp='$d_sigsetjmp'
12591 d_socket='$d_socket'
12592 d_sockpair='$d_sockpair'
12593 d_stat64='$d_stat64'
12594 d_statblks='$d_statblks'
12595 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12596 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12597 d_stdiobase='$d_stdiobase'
12598 d_stdstdio='$d_stdstdio'
12599 d_store64='$d_store64'
12600 d_strchr='$d_strchr'
12601 d_strcoll='$d_strcoll'
12602 d_strctcpy='$d_strctcpy'
12603 d_strerrm='$d_strerrm'
12604 d_strerror='$d_strerror'
12605 d_strtod='$d_strtod'
12606 d_strtol='$d_strtol'
12607 d_strtoul='$d_strtoul'
12608 d_strxfrm='$d_strxfrm'
12609 d_suidsafe='$d_suidsafe'
12610 d_symlink='$d_symlink'
12611 d_syscall='$d_syscall'
12612 d_sysconf='$d_sysconf'
12613 d_sysernlst='$d_sysernlst'
12614 d_syserrlst='$d_syserrlst'
12615 d_system='$d_system'
12616 d_tcgetpgrp='$d_tcgetpgrp'
12617 d_tcsetpgrp='$d_tcsetpgrp'
12618 d_telldir64='$d_telldir64'
12619 d_telldir='$d_telldir'
12620 d_time='$d_time'
12621 d_times='$d_times'
12622 d_tmpfile64='$d_tmpfile64'
12623 d_truncate64='$d_truncate64'
12624 d_truncate='$d_truncate'
12625 d_tzname='$d_tzname'
12626 d_umask='$d_umask'
12627 d_uname='$d_uname'
12628 d_union_semun='$d_union_semun'
12629 d_vfork='$d_vfork'
12630 d_void_closedir='$d_void_closedir'
12631 d_voidsig='$d_voidsig'
12632 d_voidtty='$d_voidtty'
12633 d_volatile='$d_volatile'
12634 d_vprintf='$d_vprintf'
12635 d_wait4='$d_wait4'
12636 d_waitpid='$d_waitpid'
12637 d_wcstombs='$d_wcstombs'
12638 d_wctomb='$d_wctomb'
12639 d_writev='$d_writev'
12640 d_xenix='$d_xenix'
12641 date='$date'
12642 db_hashtype='$db_hashtype'
12643 db_prefixtype='$db_prefixtype'
12644 defvoidused='$defvoidused'
12645 direntrytype='$direntrytype'
12646 dlext='$dlext'
12647 dlsrc='$dlsrc'
12648 doublesize='$doublesize'
12649 drand01='$drand01'
12650 dynamic_ext='$dynamic_ext'
12651 eagain='$eagain'
12652 ebcdic='$ebcdic'
12653 echo='$echo'
12654 egrep='$egrep'
12655 emacs='$emacs'
12656 eunicefix='$eunicefix'
12657 exe_ext='$exe_ext'
12658 expr='$expr'
12659 extensions='$extensions'
12660 find='$find'
12661 firstmakefile='$firstmakefile'
12662 flex='$flex'
12663 fpostype='$fpostype'
12664 freetype='$freetype'
12665 full_csh='$full_csh'
12666 full_sed='$full_sed'
12667 gccversion='$gccversion'
12668 gidtype='$gidtype'
12669 glibpth='$glibpth'
12670 grep='$grep'
12671 groupcat='$groupcat'
12672 groupstype='$groupstype'
12673 gzip='$gzip'
12674 h_fcntl='$h_fcntl'
12675 h_sysfile='$h_sysfile'
12676 hint='$hint'
12677 hostcat='$hostcat'
12678 huge='$huge'
12679 i_arpainet='$i_arpainet'
12680 i_bsdioctl='$i_bsdioctl'
12681 i_db='$i_db'
12682 i_dbm='$i_dbm'
12683 i_dirent='$i_dirent'
12684 i_dld='$i_dld'
12685 i_dlfcn='$i_dlfcn'
12686 i_fcntl='$i_fcntl'
12687 i_float='$i_float'
12688 i_gdbm='$i_gdbm'
12689 i_grp='$i_grp'
12690 i_inttypes='$i_inttypes'
12691 i_limits='$i_limits'
12692 i_locale='$i_locale'
12693 i_machcthr='$i_machcthr'
12694 i_malloc='$i_malloc'
12695 i_math='$i_math'
12696 i_memory='$i_memory'
12697 i_ndbm='$i_ndbm'
12698 i_netdb='$i_netdb'
12699 i_neterrno='$i_neterrno'
12700 i_niin='$i_niin'
12701 i_poll='$i_poll'
12702 i_pwd='$i_pwd'
12703 i_rpcsvcdbm='$i_rpcsvcdbm'
12704 i_sfio='$i_sfio'
12705 i_sgtty='$i_sgtty'
12706 i_stdarg='$i_stdarg'
12707 i_stddef='$i_stddef'
12708 i_stdlib='$i_stdlib'
12709 i_string='$i_string'
12710 i_sysaccess='$i_sysaccess'
12711 i_sysdir='$i_sysdir'
12712 i_sysfile='$i_sysfile'
12713 i_sysfilio='$i_sysfilio'
12714 i_sysin='$i_sysin'
12715 i_sysioctl='$i_sysioctl'
12716 i_sysndir='$i_sysndir'
12717 i_sysparam='$i_sysparam'
12718 i_sysresrc='$i_sysresrc'
12719 i_syssecrt='$i_syssecrt'
12720 i_sysselct='$i_sysselct'
12721 i_syssockio='$i_syssockio'
12722 i_sysstat='$i_sysstat'
12723 i_systime='$i_systime'
12724 i_systimek='$i_systimek'
12725 i_systimes='$i_systimes'
12726 i_systypes='$i_systypes'
12727 i_sysuio='$i_sysuio'
12728 i_sysun='$i_sysun'
12729 i_syswait='$i_syswait'
12730 i_termio='$i_termio'
12731 i_termios='$i_termios'
12732 i_time='$i_time'
12733 i_unistd='$i_unistd'
12734 i_utime='$i_utime'
12735 i_values='$i_values'
12736 i_varargs='$i_varargs'
12737 i_varhdr='$i_varhdr'
12738 i_vfork='$i_vfork'
12739 ignore_versioned_solibs='$ignore_versioned_solibs'
12740 incpath='$incpath'
12741 inews='$inews'
12742 installarchlib='$installarchlib'
12743 installbin='$installbin'
12744 installman1dir='$installman1dir'
12745 installman3dir='$installman3dir'
12746 installprivlib='$installprivlib'
12747 installscript='$installscript'
12748 installsitearch='$installsitearch'
12749 installsitelib='$installsitelib'
12750 intsize='$intsize'
12751 known_extensions='$known_extensions'
12752 ksh='$ksh'
12753 large='$large'
12754 ld='$ld'
12755 lddlflags='$lddlflags'
12756 ldflags='$ldflags'
12757 less='$less'
12758 lib_ext='$lib_ext'
12759 libc='$libc'
12760 libperl='$libperl'
12761 libpth='$libpth'
12762 libs='$libs'
12763 libswanted='$libswanted'
12764 line='$line'
12765 lint='$lint'
12766 lkflags='$lkflags'
12767 ln='$ln'
12768 lns='$lns'
12769 locincpth='$locincpth'
12770 loclibpth='$loclibpth'
12771 longdblsize='$longdblsize'
12772 longlongsize='$longlongsize'
12773 longsize='$longsize'
12774 lp='$lp'
12775 lpr='$lpr'
12776 ls='$ls'
12777 lseeksize='$lseeksize'
12778 lseektype='$lseektype'
12779 mail='$mail'
12780 mailx='$mailx'
12781 make='$make'
12782 make_set_make='$make_set_make'
12783 mallocobj='$mallocobj'
12784 mallocsrc='$mallocsrc'
12785 malloctype='$malloctype'
12786 man1dir='$man1dir'
12787 man1direxp='$man1direxp'
12788 man1ext='$man1ext'
12789 man3dir='$man3dir'
12790 man3direxp='$man3direxp'
12791 man3ext='$man3ext'
12792 medium='$medium'
12793 mips='$mips'
12794 mips_type='$mips_type'
12795 mkdir='$mkdir'
12796 models='$models'
12797 modetype='$modetype'
12798 more='$more'
12799 mv='$mv'
12800 myarchname='$myarchname'
12801 mydomain='$mydomain'
12802 myhostname='$myhostname'
12803 myuname='$myuname'
12804 n='$n'
12805 netdb_hlen_type='$netdb_hlen_type'
12806 netdb_host_type='$netdb_host_type'
12807 netdb_name_type='$netdb_name_type'
12808 netdb_net_type='$netdb_net_type'
12809 nm='$nm'
12810 nm_opt='$nm_opt'
12811 nm_so_opt='$nm_so_opt'
12812 nonxs_ext='$nonxs_ext'
12813 nroff='$nroff'
12814 o_nonblock='$o_nonblock'
12815 obj_ext='$obj_ext'
12816 optimize='$optimize'
12817 orderlib='$orderlib'
12818 osname='$osname'
12819 osvers='$osvers'
12820 package='$package'
12821 pager='$pager'
12822 passcat='$passcat'
12823 patchlevel='$patchlevel'
12824 path_sep='$path_sep'
12825 perl='$perl'
12826 perladmin='$perladmin'
12827 perlpath='$perlpath'
12828 pg='$pg'
12829 phostname='$phostname'
12830 pidtype='$pidtype'
12831 plibpth='$plibpth'
12832 pmake='$pmake'
12833 pr='$pr'
12834 prefix='$prefix'
12835 prefixexp='$prefixexp'
12836 privlib='$privlib'
12837 privlibexp='$privlibexp'
12838 prototype='$prototype'
12839 pthread_create_joinable='$pthread_create_joinable'
12840 ptrsize='$ptrsize'
12841 randbits='$randbits'
12842 randfunc='$randfunc'
12843 randseedtype='$randseedtype'
12844 ranlib='$ranlib'
12845 rd_nodata='$rd_nodata'
12846 rm='$rm'
12847 rmail='$rmail'
12848 runnm='$runnm'
12849 sched_yield='$sched_yield'
12850 scriptdir='$scriptdir'
12851 scriptdirexp='$scriptdirexp'
12852 sed='$sed'
12853 seedfunc='$seedfunc'
12854 selectminbits='$selectminbits'
12855 selecttype='$selecttype'
12856 sendmail='$sendmail'
12857 sh='$sh'
12858 shar='$shar'
12859 sharpbang='$sharpbang'
12860 shmattype='$shmattype'
12861 shortsize='$shortsize'
12862 shrpenv='$shrpenv'
12863 shsharp='$shsharp'
12864 sig_name='$sig_name'
12865 sig_name_init='$sig_name_init'
12866 sig_num='$sig_num'
12867 sig_num_init='$sig_num_init'
12868 signal_t='$signal_t'
12869 sitearch='$sitearch'
12870 sitearchexp='$sitearchexp'
12871 sitelib='$sitelib'
12872 sitelibexp='$sitelibexp'
12873 sizetype='$sizetype'
12874 sleep='$sleep'
12875 smail='$smail'
12876 small='$small'
12877 so='$so'
12878 sockethdr='$sockethdr'
12879 socketlib='$socketlib'
12880 sort='$sort'
12881 spackage='$spackage'
12882 spitshell='$spitshell'
12883 split='$split'
12884 src='$src'
12885 ssizetype='$ssizetype'
12886 startperl='$startperl'
12887 startsh='$startsh'
12888 static_ext='$static_ext'
12889 stdchar='$stdchar'
12890 stdio_base='$stdio_base'
12891 stdio_bufsiz='$stdio_bufsiz'
12892 stdio_cnt='$stdio_cnt'
12893 stdio_filbuf='$stdio_filbuf'
12894 stdio_ptr='$stdio_ptr'
12895 strings='$strings'
12896 submit='$submit'
12897 subversion='$subversion'
12898 sysman='$sysman'
12899 tail='$tail'
12900 tar='$tar'
12901 tbl='$tbl'
12902 tee='$tee'
12903 test='$test'
12904 timeincl='$timeincl'
12905 timetype='$timetype'
12906 touch='$touch'
12907 tr='$tr'
12908 trnl='$trnl'
12909 troff='$troff'
12910 uidtype='$uidtype'
12911 uname='$uname'
12912 uniq='$uniq'
12913 use64bits='$use64bits'
12914 usedl='$usedl'
12915 usemultiplicity='$usemultiplicity'
12916 usemymalloc='$usemymalloc'
12917 usenm='$usenm'
12918 useopcode='$useopcode'
12919 useperlio='$useperlio'
12920 useposix='$useposix'
12921 usesfio='$usesfio'
12922 useshrplib='$useshrplib'
12923 usethreads='$usethreads'
12924 usevfork='$usevfork'
12925 usrinc='$usrinc'
12926 uuname='$uuname'
12927 version='$version'
12928 vi='$vi'
12929 voidflags='$voidflags'
12930 xlibpth='$xlibpth'
12931 zcat='$zcat'
12932 zip='$zip'
12933 EOT
12934
12935 : Add in command line options if available
12936 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
12937
12938 : add special variables
12939 $test -f $src/patchlevel.h && \
12940 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
12941 echo "CONFIG=true" >>config.sh
12942
12943 : propagate old symbols
12944 if $test -f UU/config.sh; then
12945         <UU/config.sh sort | uniq >UU/oldconfig.sh
12946         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
12947         sort | uniq -u >UU/oldsyms
12948         set X `cat UU/oldsyms`
12949         shift
12950         case $# in
12951         0) ;;
12952         *)
12953                 cat <<EOM
12954 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
12955 EOM
12956                 echo "# Variables propagated from previous config.sh file." >>config.sh
12957                 for sym in `cat UU/oldsyms`; do
12958                         echo "    Propagating $hint variable "'$'"$sym..."
12959                         eval 'tmp="$'"${sym}"'"'
12960                         echo "$tmp" | \
12961                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
12962                 done
12963                 ;;
12964         esac
12965 fi
12966
12967 : Finish up by extracting the .SH files
12968 case "$alldone" in
12969 exit)
12970         $rm -rf UU
12971         echo "Done."
12972         exit 0
12973         ;;
12974 cont)
12975         ;;
12976 '')
12977         dflt=''
12978         nostick=true
12979         $cat <<EOM
12980
12981 If you'd like to make any changes to the config.sh file before I begin
12982 to configure things, do it as a shell escape now (e.g. !vi config.sh).
12983
12984 EOM
12985         rp="Press return or use a shell escape to edit config.sh:"
12986         . UU/myread
12987         nostick=''
12988         case "$ans" in
12989         '') ;;
12990         *) : in case they cannot read
12991                 sh 1>&4 -c "$ans";;
12992         esac
12993         ;;
12994 esac
12995
12996 : if this fails, just run all the .SH files by hand
12997 . ./config.sh
12998
12999 echo " "
13000 exec 1>&4
13001 . ./UU/extract
13002
13003 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13004         dflt=y
13005         case "$silent" in
13006         true) ;;
13007         *)
13008                 $cat <<EOM
13009
13010 Now you need to generate make dependencies by running "$make depend".
13011 You might prefer to run it in background: "$make depend > makedepend.out &"
13012 It can take a while, so you might not want to run it right now.
13013
13014 EOM
13015                 ;;
13016         esac
13017         rp="Run $make depend now?"
13018         . UU/myread
13019         case "$ans" in
13020         y*)
13021                 $make depend && echo "Now you must run a $make."
13022                 ;;
13023         *)
13024                 echo "You must run '$make depend' then '$make'."
13025                 ;;
13026         esac
13027 elif test -f [Mm]akefile; then
13028         echo " "
13029         echo "Now you must run a $make."
13030 else
13031         echo "Done."
13032 fi
13033
13034 if $test -f Policy.sh; then
13035     $cat <<EOM
13036
13037 If you compile $package on a different machine or from a different object
13038 directory, copy the Policy.sh file from this object directory to the
13039 new one before you run Configure -- this will help you with most of
13040 the policy defaults.
13041
13042 EOM
13043 fi
13044 if $test -f config.msg; then
13045     echo "Hmm.  I also noted the following information while running:"
13046     echo " "
13047     $cat config.msg >&4
13048     $rm -f config.msg
13049 fi
13050 $rm -f kit*isdone ark*isdone
13051 $rm -rf UU
13052
13053 : End of Configure
13054