This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Undo change #2581.
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Fri Jan  8 10:36:44 EET 1999 [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_old_pthread_create_joinable=''
413 old_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 >> try.msg
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 int 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 main()
4480 {
4481 #ifdef __GLIBC__
4482     exit(0);
4483 #else
4484     exit(1);
4485 #endif
4486 }
4487 EOM
4488 set gnulibc
4489 if eval $compile_ok && ./gnulibc; then
4490         val="$define"
4491         echo "You are using the GNU C Library"
4492 else
4493         val="$undef"
4494         echo "You are not using the GNU C Library"
4495 fi
4496 $rm -f gnulibc*
4497 set d_gnulibc
4498 eval $setvar
4499
4500 : see if nm is to be used to determine whether a symbol is defined or not
4501 case "$usenm" in
4502 '')
4503         dflt=''
4504         case "$d_gnulibc" in
4505         "$define")
4506                 echo " "
4507                 echo "nm probably won't work on the GNU C Library." >&4
4508                 dflt=n
4509                 ;;
4510         esac
4511         case "$dflt" in
4512         '') 
4513                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4514                         echo " "
4515                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4516                         echo "'nm' won't be sufficient on this sytem." >&4
4517                         dflt=n
4518                 fi
4519                 ;;
4520         esac
4521         case "$dflt" in
4522         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4523                 if $test $dflt -gt 20; then
4524                         dflt=y
4525                 else
4526                         dflt=n
4527                 fi
4528                 ;;
4529         esac
4530         ;;
4531 *)
4532         case "$usenm" in
4533         true|$define) dflt=y;;
4534         *) dflt=n;;
4535         esac
4536         ;;
4537 esac
4538 $cat <<EOM
4539
4540 I can use $nm to extract the symbols from your C libraries. This
4541 is a time consuming task which may generate huge output on the disk (up
4542 to 3 megabytes) but that should make the symbols extraction faster. The
4543 alternative is to skip the 'nm' extraction part and to compile a small
4544 test program instead to determine whether each symbol is present. If
4545 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4546 this may be the best solution.
4547
4548 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4549
4550 EOM
4551 rp="Shall I use $nm to extract C symbols from the libraries?"
4552 . ./myread
4553 case "$ans" in
4554 [Nn]*) usenm=false;;
4555 *) usenm=true;;
4556 esac
4557
4558 runnm=$usenm
4559 case "$reuseval" in
4560 true) runnm=false;;
4561 esac
4562
4563 : nm options which may be necessary
4564 case "$nm_opt" in
4565 '') if $test -f /mach_boot; then
4566                 nm_opt=''       # Mach
4567         elif $test -d /usr/ccs/lib; then
4568                 nm_opt='-p'     # Solaris (and SunOS?)
4569         elif $test -f /dgux; then
4570                 nm_opt='-p'     # DG-UX
4571         elif $test -f /lib64/rld; then
4572                 nm_opt='-p'     # 64-bit Irix
4573         else
4574                 nm_opt=''
4575         fi;;
4576 esac
4577
4578 : nm options which may be necessary for shared libraries but illegal
4579 : for archive libraries.  Thank you, Linux.
4580 case "$nm_so_opt" in
4581 '')     case "$myuname" in
4582         *linux*)
4583                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4584                         nm_so_opt='--dynamic'
4585                 fi
4586                 ;;
4587         esac
4588         ;;
4589 esac
4590
4591 case "$runnm" in
4592 true)
4593 : get list of predefined functions in a handy place
4594 echo " "
4595 case "$libc" in
4596 '') libc=unknown
4597         case "$libs" in
4598         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4599         esac
4600         ;;
4601 esac
4602 libnames='';
4603 case "$libs" in
4604 '') ;;
4605 *)  for thislib in $libs; do
4606         case "$thislib" in
4607         -lc|-lc_s)
4608                 : Handle C library specially below.
4609                 ;;
4610         -l*)
4611                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4612                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4613                         :
4614                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4615                         :
4616                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4617                         :
4618                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4619                         :
4620                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4621                         :
4622                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4623                         :
4624                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4625                         :
4626                 else
4627                         try=''
4628                 fi
4629                 libnames="$libnames $try"
4630                 ;;
4631         *) libnames="$libnames $thislib" ;;
4632         esac
4633         done
4634         ;;
4635 esac
4636 xxx=normal
4637 case "$libc" in
4638 unknown)
4639         set /lib/libc.$so
4640         for xxx in $libpth; do
4641                 $test -r $1 || set $xxx/libc.$so
4642                 : The messy sed command sorts on library version numbers.
4643                 $test -r $1 || \
4644                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4645                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4646                                 h
4647                                 s/[0-9][0-9]*/0000&/g
4648                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4649                                 G
4650                                 s/\n/ /' | \
4651                          sort | $sed -e 's/^.* //'`
4652                 eval set \$$#
4653         done
4654         $test -r $1 || set /usr/ccs/lib/libc.$so
4655         $test -r $1 || set /lib/libsys_s$_a
4656         ;;
4657 *)
4658         set blurfl
4659         ;;
4660 esac
4661 if $test -r "$1"; then
4662         echo "Your (shared) C library seems to be in $1."
4663         libc="$1"
4664 elif $test -r /lib/libc && $test -r /lib/clib; then
4665         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4666         xxx=apollo
4667         libc='/lib/clib /lib/libc'
4668         if $test -r /lib/syslib; then
4669                 echo "(Your math library is in /lib/syslib.)"
4670                 libc="$libc /lib/syslib"
4671         fi
4672 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4673         echo "Your C library seems to be in $libc, as you said before."
4674 elif $test -r $incpath/usr/lib/libc$_a; then
4675         libc=$incpath/usr/lib/libc$_a;
4676         echo "Your C library seems to be in $libc.  That's fine."
4677 elif $test -r /lib/libc$_a; then
4678         libc=/lib/libc$_a;
4679         echo "Your C library seems to be in $libc.  You're normal."
4680 else
4681         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4682                 :
4683         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4684                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4685         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4686                 :
4687         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4688                 :
4689         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4690                 :
4691         else
4692                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4693         fi
4694         if $test -r "$tans"; then
4695                 echo "Your C library seems to be in $tans, of all places."
4696                 libc=$tans
4697         else
4698                 libc='blurfl'
4699         fi
4700 fi
4701 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4702         dflt="$libc"
4703         cat <<EOM
4704
4705 If the guess above is wrong (which it might be if you're using a strange
4706 compiler, or your machine supports multiple models), you can override it here.
4707
4708 EOM
4709 else
4710         dflt=''
4711         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4712         cat >&4 <<EOM
4713 I can't seem to find your C library.  I've looked in the following places:
4714
4715 EOM
4716         $sed 's/^/      /' libpath
4717         cat <<EOM
4718
4719 None of these seems to contain your C library. I need to get its name...
4720
4721 EOM
4722 fi
4723 fn=f
4724 rp='Where is your C library?'
4725 . ./getfile
4726 libc="$ans"
4727
4728 echo " "
4729 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4730 set X `cat libnames`
4731 shift
4732 xxx=files
4733 case $# in 1) xxx=file; esac
4734 echo "Extracting names from the following $xxx for later perusal:" >&4
4735 echo " "
4736 $sed 's/^/      /' libnames >&4
4737 echo " "
4738 $echo $n "This may take a while...$c" >&4
4739
4740 for file in $*; do
4741         case $file in
4742         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4743         *) $nm $nm_opt $file 2>/dev/null;;
4744         esac
4745 done >libc.tmp
4746
4747 $echo $n ".$c"
4748 $grep fprintf libc.tmp > libc.ptf
4749 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4750 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4751 xxx='[ADTSIW]'
4752 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4753         eval $xscan;\
4754         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4755                 eval $xrun
4756 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4757         eval $xscan;\
4758         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4759                 eval $xrun
4760 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4761         eval $xscan;\
4762         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4763                 eval $xrun
4764 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4765         eval $xscan;\
4766         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4767                 eval $xrun
4768 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4769         eval $xscan;\
4770         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4771                 eval $xrun
4772 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4773         eval $xscan;\
4774         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4775                 eval $xrun
4776 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4777                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4778         eval $xscan;\
4779         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4780                 eval $xrun
4781 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4782         eval $xscan;\
4783         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4784                 eval $xrun
4785 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4786         eval $xscan;\
4787         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4788                 eval $xrun
4789 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4790         eval $xscan;\
4791         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4792                 eval $xrun
4793 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4794         eval $xscan;\
4795         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4796                 eval $xrun
4797 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4798         eval $xscan;\
4799         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4800                 eval $xrun
4801 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4802         eval $xscan;\
4803         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4804                 eval $xrun
4805 else
4806         $nm -p $* 2>/dev/null >libc.tmp
4807         $grep fprintf libc.tmp > libc.ptf
4808         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4809                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4810         then
4811                 nm_opt='-p'
4812                 eval $xrun
4813         else
4814                 echo " "
4815                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4816                 com=''
4817                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4818                         for thisname in $libnames $libc; do
4819                                 $ar t $thisname >>libc.tmp
4820                         done
4821                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4822                         echo "Ok." >&4
4823                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4824                         # Repeat libc to extract forwarders to DLL entries too
4825                         for thisname in $libnames $libc; do
4826                                 $ar tv $thisname >>libc.tmp
4827                                 # Revision 50 of EMX has bug in $ar.
4828                                 # it will not extract forwarders to DLL entries
4829                                 # Use emximp which will extract exactly them.
4830                                 emximp -o tmp.imp $thisname \
4831                                     2>/dev/null && \
4832                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4833                                     < tmp.imp >>libc.tmp
4834                                 $rm tmp.imp
4835                         done
4836                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4837                         echo "Ok." >&4
4838                 else
4839                         echo "$ar didn't seem to work right." >&4
4840                         echo "Maybe this is a Cray...trying bld instead..." >&4
4841                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4842                         then
4843                                 for thisname in $libnames; do
4844                                         bld t $libnames | \
4845                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4846                                         $ar t $thisname >>libc.tmp
4847                                 done
4848                                 echo "Ok." >&4
4849                         else
4850                                 echo "That didn't work either.  Giving up." >&4
4851                                 exit 1
4852                         fi
4853                 fi
4854         fi
4855 fi
4856 nm_extract="$com"
4857 if $test -f /lib/syscalls.exp; then
4858         echo " "
4859         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4860         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4861 fi
4862 ;;
4863 esac
4864 $rm -f libnames libpath
4865
4866 : see if dld is available
4867 set dld.h i_dld
4868 eval $inhdr
4869
4870 : is a C symbol defined?
4871 csym='tlook=$1;
4872 case "$3" in
4873 -v) tf=libc.tmp; tc=""; tdc="";;
4874 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4875 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4876 esac;
4877 tx=yes;
4878 case "$reuseval-$4" in
4879 true-) ;;
4880 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4881 esac;
4882 case "$tx" in
4883 yes)
4884         case "$runnm" in
4885         true)
4886                 if $contains $tlook $tf >/dev/null 2>&1;
4887                 then tval=true;
4888                 else tval=false;
4889                 fi;;
4890         *)
4891                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4892                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4893                 then tval=true;
4894                 else tval=false;
4895                 fi;
4896                 $rm -f t t.c;;
4897         esac;;
4898 *)
4899         case "$tval" in
4900         $define) tval=true;;
4901         *) tval=false;;
4902         esac;;
4903 esac;
4904 eval "$2=$tval"'
4905
4906 : define an is-in-libc? function
4907 inlibc='echo " "; td=$define; tu=$undef;
4908 sym=$1; var=$2; eval "was=\$$2";
4909 tx=yes;
4910 case "$reuseval$was" in
4911 true) ;;
4912 true*) tx=no;;
4913 esac;
4914 case "$tx" in
4915 yes)
4916         set $sym tres -f;
4917         eval $csym;
4918         case "$tres" in
4919         true)
4920                 echo "$sym() found." >&4;
4921                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4922         *)
4923                 echo "$sym() NOT found." >&4;
4924                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4925         esac;;
4926 *)
4927         case "$was" in
4928         $define) echo "$sym() found." >&4;;
4929         *) echo "$sym() NOT found." >&4;;
4930         esac;;
4931 esac'
4932
4933 : see if dlopen exists
4934 xxx_runnm="$runnm"
4935 runnm=false
4936 set dlopen d_dlopen
4937 eval $inlibc
4938 runnm="$xxx_runnm"
4939
4940 : determine which dynamic loading, if any, to compile in
4941 echo " "
4942 dldir="ext/DynaLoader"
4943 case "$usedl" in
4944 $define|y|true)
4945         dflt='y'
4946         usedl="$define"
4947         ;;
4948 $undef|n|false)
4949         dflt='n'
4950         usedl="$undef"
4951         ;;
4952 *) 
4953         dflt='n'
4954         case "$d_dlopen" in
4955             $define) dflt='y' ;;
4956         esac
4957         case "$i_dld" in
4958             $define) dflt='y' ;;
4959         esac
4960         : Does a dl_xxx.xs file exist for this operating system
4961         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
4962         ;;
4963 esac
4964 rp="Do you wish to use dynamic loading?"
4965 . ./myread
4966 usedl="$ans"
4967 case "$ans" in
4968 y*) usedl="$define"
4969         case "$dlsrc" in
4970         '')
4971                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
4972                         dflt="$dldir/dl_${osname}.xs"
4973                 elif $test "$d_dlopen" = "$define" ; then
4974                         dflt="$dldir/dl_dlopen.xs"
4975                 elif $test "$i_dld" = "$define" ; then
4976                         dflt="$dldir/dl_dld.xs"
4977                 else
4978                         dflt=''
4979                 fi
4980                 ;;
4981         *)      dflt="$dldir/$dlsrc"
4982                 ;;
4983         esac
4984     echo "The following dynamic loading files are available:"
4985         : Can not go over to $dldir because getfile has path hard-coded in.
4986         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
4987         rp="Source file to use for dynamic loading"
4988         fn="fne"
4989         # XXX This getfile call will fail the existence check if you try 
4990         # building away from $src (this is not supported yet).
4991         . ./getfile
4992         usedl="$define"
4993         : emulate basename
4994         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4995
4996         $cat << EOM
4997
4998 Some systems may require passing special flags to $cc -c to
4999 compile modules that will be used to create a shared library.
5000 To use no flags, say "none".
5001
5002 EOM
5003     case "$cccdlflags" in
5004     '') case "$gccversion" in
5005                 '') case "$osname" in
5006                         hpux)   dflt='+z' ;;
5007                         next)   dflt='none' ;;
5008                         irix*)  dflt='-KPIC' ;;
5009                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5010                         sunos)  dflt='-pic' ;;
5011                         *)      dflt='none' ;;
5012                     esac
5013                         ;;
5014                 *)  case "$osname" in
5015                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5016                         *)      dflt='-fpic' ;;
5017                     esac ;;
5018             esac ;;
5019         ' ') dflt='none' ;;
5020     *)  dflt="$cccdlflags" ;;
5021     esac
5022     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5023     . ./myread
5024     case "$ans" in
5025     none) cccdlflags=' ' ;;
5026     *) cccdlflags="$ans" ;;
5027     esac
5028
5029     cat << EOM
5030
5031 Some systems use ld to create libraries that can be dynamically loaded,
5032 while other systems (such as those using ELF) use $cc.
5033
5034 EOM
5035         case "$ld" in
5036         '')     $cat >try.c <<'EOM'
5037 /* Test for whether ELF binaries are produced */
5038 #include <fcntl.h>
5039 #include <stdlib.h>
5040 int main() {
5041         char b[4];
5042         int i = open("a.out",O_RDONLY);
5043         if(i == -1) 
5044                 exit(1); /* fail */
5045         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5046                 exit(0); /* succeed (yes, it's ELF) */
5047         else
5048                 exit(1); /* fail */
5049 }
5050 EOM
5051                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5052                         cat <<EOM
5053 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5054 EOM
5055                         dflt="$cc"
5056                 else
5057                         echo "I'll use ld to build dynamic libraries."
5058                         dflt='ld'
5059                 fi
5060                 rm -f try.c a.out
5061                 ;;
5062         *)      dflt="$ld"
5063                 ;;
5064         esac
5065
5066     rp="What command should be used to create dynamic libraries?"
5067     . ./myread
5068         ld="$ans"
5069
5070     cat << EOM
5071
5072 Some systems may require passing special flags to $ld to create a
5073 library that can be dynamically loaded.  If your ld flags include
5074 -L/other/path options to locate libraries outside your loader's normal
5075 search path, you may need to specify those -L options here as well.  To
5076 use no flags, say "none".
5077
5078 EOM
5079     case "$lddlflags" in
5080     '') case "$osname" in
5081                         hpux)  dflt='-b' ;;
5082                         linux|irix*)    dflt='-shared' ;;
5083                         next)  dflt='none' ;;
5084                         solaris) dflt='-G' ;;
5085                         sunos) dflt='-assert nodefinitions' ;;
5086                         svr4*|esix*) dflt="-G $ldflags" ;;
5087                 *)     dflt='none' ;;
5088                         esac
5089                         ;;
5090     *) dflt="$lddlflags" ;;
5091     esac
5092
5093         : Try to guess additional flags to pick up local libraries.
5094         : Be careful not to append to a plain 'none'
5095         case "$dflt" in
5096         none) dflt='' ;;
5097         esac
5098         for thisflag in $ldflags; do
5099                 case "$thisflag" in
5100                 -L*)
5101                         case " $dflt " in
5102                         *" $thisflag "*) ;;
5103                         *) dflt="$dflt $thisflag" ;;
5104                         esac
5105                         ;;
5106                 esac
5107         done
5108
5109         case "$dflt" in
5110         ''|' ') dflt='none' ;;
5111         esac
5112
5113     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5114     . ./myread
5115     case "$ans" in
5116     none) lddlflags=' ' ;;
5117     *) lddlflags="$ans" ;;
5118     esac
5119
5120         cat <<EOM
5121
5122 Some systems may require passing special flags to $cc to indicate that
5123 the resulting executable will use dynamic linking.  To use no flags,
5124 say "none".
5125
5126 EOM
5127     case "$ccdlflags" in
5128     '') case "$osname" in
5129                 hpux)   dflt='-Wl,-E' ;;
5130                 linux)  dflt='-rdynamic' ;;
5131                 next)   dflt='none' ;;
5132                 sunos)  dflt='none' ;;
5133                 *)      dflt='none' ;;
5134             esac ;;
5135     ' ')  dflt='none' ;;
5136     *)  dflt="$ccdlflags" ;;
5137     esac
5138     rp="Any special flags to pass to $cc to use dynamic loading?"
5139     . ./myread
5140     case "$ans" in
5141     none) ccdlflags=' ' ;;
5142     *) ccdlflags="$ans" ;;
5143     esac
5144     ;;
5145 *)  usedl="$undef"
5146         ld='ld'
5147     dlsrc='dl_none.xs'
5148     lddlflags=''
5149     ccdlflags=''
5150     ;;
5151 esac
5152
5153 also=''
5154 case "$usedl" in
5155 $undef)
5156         # No dynamic loading being used, so don't bother even to prompt.
5157         useshrplib='false'
5158         ;;
5159 *)      case "$useshrplib" in
5160         '')     case "$osname" in
5161                 svr4*|dgux|dynixptx|esix|powerux)
5162                         dflt=y
5163                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5164                         ;;
5165                 next*)
5166                         case "$osvers" in
5167                         4*)     dflt=y
5168                                 also='Building a shared libperl is needed for MAB support.'
5169                                 ;;
5170                         *)      dflt=n
5171                                 ;;
5172                         esac
5173                         ;;
5174                 *)      dflt=n
5175                         ;;
5176                 esac
5177                 ;;
5178         $define|true|[Yy]*)
5179                 dflt=y
5180                 ;;
5181         *)      dflt=n
5182                 ;;
5183         esac
5184         $cat << EOM
5185
5186 The perl executable is normally obtained by linking perlmain.c with
5187 libperl${_a}, any static extensions (usually just DynaLoader), and
5188 any other libraries needed on this system (such as -lm, etc.).  Since
5189 your system supports dynamic loading, it is probably possible to build
5190 a shared libperl.$so.  If you will have more than one executable linked
5191 to libperl.$so, this will significantly reduce the size of each
5192 executable, but it may have a noticeable affect on performance.  The
5193 default is probably sensible for your system.
5194 $also
5195
5196 EOM
5197         rp="Build a shared libperl.$so (y/n)"
5198         . ./myread
5199         case "$ans" in
5200         true|$define|[Yy]*)
5201                 useshrplib='true'
5202                 # Why does next4 have to be so different?
5203                 case "${osname}${osvers}" in
5204                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5205                 os2*)   xxx='' ;; # Nothing special needed.
5206                 *)              xxx='LD_LIBRARY_PATH' ;;
5207                 esac
5208                 if test X"$xxx" != "X"; then
5209                         $cat <<EOM  | $tee -a ../config.msg >&4
5210
5211 To build perl, you must add the current working directory to your
5212 $xxx environment variable before running make.  You can do
5213 this with
5214    $xxx=\`pwd\`:\$$xxx; export $xxx
5215 for Bourne-style shells, or
5216    setenv $xxx \`pwd\`
5217 for Csh-style shells.  You *MUST* do this before running make.
5218
5219 EOM
5220                 fi
5221                 ;;
5222         *)      useshrplib='false' ;;
5223         esac
5224         ;;
5225 esac
5226
5227 case "$useshrplib" in
5228 true)
5229         case "$libperl" in
5230         '')
5231                 # Figure out a good name for libperl.so.  Since it gets stored in
5232                 # a version-specific architecture-dependent library, the version
5233                 # number isn't really that important, except for making cc/ld happy.
5234                 #
5235                 # A name such as libperl.so.3.1
5236                 majmin="libperl.$so.$patchlevel.$subversion"
5237                 # A name such as libperl.so.301
5238                 majonly=`echo $patchlevel $subversion |
5239                         $awk '{printf "%d%02d", $1, $2}'`
5240                 majonly=libperl.$so.$majonly
5241                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5242                 # rely on figuring it out from the naming of libc.
5243                 case "${osname}${osvers}" in
5244                 next4*)
5245                         dflt=libperl.5.$so
5246                         # XXX How handle the --version stuff for MAB?
5247                         ;;
5248                 linux*)  # ld won't link with a bare -lperl otherwise.
5249                         dflt=libperl.$so
5250                         ;;
5251                 *)      # Try to guess based on whether libc has major.minor.
5252                         case "$libc" in
5253                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5254                         *libc.$so.[0-9]*) dflt=$majonly ;;
5255                         *)      dflt=libperl.$so ;;
5256                         esac
5257                         ;;
5258                 esac
5259                 ;;
5260         *)      dflt=$libperl
5261                 ;;
5262         esac
5263         cat << EOM
5264
5265 I need to select a good name for the shared libperl.  If your system uses
5266 library names with major and minor numbers, then you might want something
5267 like $majmin.  Alternatively, if your system uses a single version
5268 number for shared libraries, then you might want to use $majonly.
5269 Or, your system might be quite happy with a simple libperl.$so.
5270
5271 Since the shared libperl will get installed into a version-specific
5272 architecture-dependent directory, the version number of the shared perl
5273 library probably isn't important, so the default should be o.k.
5274
5275 EOM
5276         rp='What name do you want to give to the shared libperl?'
5277         . ./myread
5278         libperl=$ans
5279         echo "Ok, I'll use $libperl"
5280         ;;
5281 *)
5282         libperl="libperl${_a}"
5283         ;;
5284 esac
5285
5286 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5287 case "$shrpdir" in
5288 '') ;;
5289 *)      $cat >&4 <<EOM
5290 WARNING:  Use of the shrpdir variable for the installation location of
5291 the shared $libperl is not supported.  It was never documented and
5292 will not work in this version.  Let me (jhi@iki.fi)
5293 know of any problems this may cause.
5294
5295 EOM
5296         case "$shrpdir" in
5297         "$archlibexp/CORE")
5298                 $cat >&4 <<EOM
5299 But your current setting of $shrpdir is
5300 the default anyway, so it's harmless.
5301 EOM
5302                 ;;
5303         *)
5304                 $cat >&4 <<EOM
5305 Further, your current attempted setting of $shrpdir
5306 conflicts with the value of $archlibexp/CORE
5307 that installperl will use.
5308 EOM
5309                 ;;
5310         esac
5311         ;;
5312 esac
5313
5314 # How will the perl executable find the installed shared $libperl?
5315 # Add $xxx to ccdlflags.
5316 # If we can't figure out a command-line option, use $shrpenv to
5317 # set env LD_RUN_PATH.  The main perl makefile uses this.
5318 shrpdir=$archlibexp/CORE
5319 xxx=''
5320 tmp_shrpenv=''
5321 if "$useshrplib"; then
5322     case "$osname" in 
5323         aix)
5324                 # We'll set it in Makefile.SH...
5325                 ;;
5326         solaris|netbsd)
5327                 xxx="-R $shrpdir"
5328                 ;;
5329         freebsd)
5330                 xxx="-Wl,-R$shrpdir"
5331                 ;;
5332         linux|irix*|dec_osf)
5333                 xxx="-Wl,-rpath,$shrpdir"
5334                 ;;
5335         next)
5336                 # next doesn't like the default...
5337                 ;;
5338         *)
5339                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5340                 ;;
5341         esac
5342         case "$xxx" in
5343         '') ;;
5344         *)      
5345                 # Only add $xxx if it isn't already in ccdlflags.
5346                 case " $ccdlflags " in
5347                 *" $xxx "*)     ;;
5348                 *)      ccdlflags="$ccdlflags $xxx"
5349                         cat <<EOM >&4
5350
5351 Adding $xxx to the flags
5352 passed to $ld so that the perl executable will find the 
5353 installed shared $libperl.
5354
5355 EOM
5356                         ;;
5357                 esac
5358                 ;;
5359         esac
5360 fi
5361 # Respect a hint or command-line value.
5362 case "$shrpenv" in
5363 '') shrpenv="$tmp_shrpenv" ;;
5364 esac
5365
5366 : determine where manual pages go
5367 set man1dir man1dir none
5368 eval $prefixit
5369 $cat <<EOM
5370
5371 $spackage has manual pages available in source form.
5372 EOM
5373 case "$nroff" in
5374 nroff)
5375         echo "However, you don't have nroff, so they're probably useless to you."
5376         case "$man1dir" in
5377         '') man1dir="none";;
5378         esac;;
5379 esac
5380 echo "If you don't want the manual sources installed, answer 'none'."
5381 case "$man1dir" in
5382 ' ') dflt=none
5383         ;;
5384 '')
5385         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5386         lookpath="$lookpath $prefixexp/man/p_man/man1"
5387         lookpath="$lookpath $prefixexp/man/u_man/man1"
5388         lookpath="$lookpath $prefixexp/man/man.1"
5389         case "$sysman" in
5390         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5391         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5392         esac
5393         set dflt
5394         eval $prefixup
5395         ;;
5396 *)  dflt="$man1dir"
5397         ;;
5398 esac
5399 echo " "
5400 fn=dn+~
5401 rp="Where do the main $spackage manual pages (source) go?"
5402 . ./getfile
5403 if $test "X$man1direxp" != "X$ansexp"; then
5404         installman1dir=''
5405 fi
5406 man1dir="$ans"
5407 man1direxp="$ansexp"
5408 case "$man1dir" in
5409 '') man1dir=' '
5410         installman1dir='';;
5411 esac
5412 if $afs; then
5413         $cat <<EOM
5414
5415 Since you are running AFS, I need to distinguish the directory in which
5416 manual pages reside from the directory in which they are installed (and from
5417 which they are presumably copied to the former directory by occult means).
5418
5419 EOM
5420         case "$installman1dir" in
5421         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5422         *) dflt="$installman1dir";;
5423         esac
5424         fn=de~
5425         rp='Where will man pages be installed?'
5426         . ./getfile
5427         installman1dir="$ans"
5428 else
5429         installman1dir="$man1direxp"
5430 fi
5431
5432 : What suffix to use on installed man pages
5433
5434 case "$man1dir" in
5435 ' ')
5436         man1ext='0'
5437         ;;
5438 *)
5439         rp="What suffix should be used for the main $spackage man pages?"
5440         case "$man1ext" in
5441         '')     case "$man1dir" in
5442                 *1)  dflt=1 ;;
5443                 *1p) dflt=1p ;;
5444                 *1pm) dflt=1pm ;;
5445                 *l) dflt=l;;
5446                 *n) dflt=n;;
5447                 *o) dflt=o;;
5448                 *p) dflt=p;;
5449                 *C) dflt=C;;
5450                 *L) dflt=L;;
5451                 *L1) dflt=L1;;
5452                 *) dflt=1;;
5453                 esac
5454                 ;;
5455         *)      dflt="$man1ext";;
5456         esac
5457         . ./myread
5458         man1ext="$ans"
5459         ;;
5460 esac
5461
5462 : see if we can have long filenames
5463 echo " "
5464 rmlist="$rmlist /tmp/cf$$"
5465 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5466 first=123456789abcdef
5467 second=/tmp/cf$$/$first
5468 $rm -f $first $second
5469 if (echo hi >$first) 2>/dev/null; then
5470         if $test -f 123456789abcde; then
5471                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5472                 val="$undef"
5473         else
5474                 if (echo hi >$second) 2>/dev/null; then
5475                         if $test -f /tmp/cf$$/123456789abcde; then
5476                                 $cat <<'EOM'
5477 That's peculiar... You can have filenames longer than 14 characters, but only
5478 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5479 I shall consider your system cannot support long filenames at all.
5480 EOM
5481                                 val="$undef"
5482                         else
5483                                 echo 'You can have filenames longer than 14 characters.' >&4
5484                                 val="$define"
5485                         fi
5486                 else
5487                         $cat <<'EOM'
5488 How confusing! Some of your filesystems are sane enough to allow filenames
5489 longer than 14 characters but some others like /tmp can't even think about them.
5490 So, for now on, I shall assume your kernel does not allow them at all.
5491 EOM
5492                         val="$undef"
5493                 fi
5494         fi
5495 else
5496         $cat <<'EOM'
5497 You can't have filenames longer than 14 chars.  You can't even think about them!
5498 EOM
5499         val="$undef"
5500 fi 
5501 set d_flexfnam
5502 eval $setvar
5503 $rm -rf /tmp/cf$$ 123456789abcde*
5504
5505 : determine where library module manual pages go
5506 set man3dir man3dir none
5507 eval $prefixit
5508 $cat <<EOM
5509
5510 $spackage has manual pages for many of the library modules.
5511 EOM
5512
5513 case "$nroff" in
5514 nroff)
5515         $cat <<'EOM'
5516 However, you don't have nroff, so they're probably useless to you.
5517 EOM
5518         case "$man3dir" in
5519         '') man3dir="none";;
5520         esac;;
5521 esac
5522
5523 case "$d_flexfnam" in
5524 undef)
5525         $cat <<'EOM'
5526 However, your system can't handle the long file names like File::Basename.3. 
5527 EOM
5528         case "$man3dir" in
5529         '') man3dir="none";;
5530         esac;;
5531 esac
5532
5533 echo "If you don't want the manual sources installed, answer 'none'."
5534 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5535 case "$man3dir" in
5536 '')     case "$prefix" in 
5537         *$prog*) dflt=`echo $man1dir | 
5538                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5539         *)      dflt="$privlib/man/man3" ;;
5540         esac
5541         ;;
5542 ' ') dflt=none;;
5543 *)      dflt="$man3dir" ;;
5544 esac
5545 echo " "
5546
5547 fn=dn+~
5548 rp="Where do the $package library man pages (source) go?"
5549 . ./getfile
5550 if test "X$man3direxp" != "X$ansexp"; then
5551         installman3dir=''
5552 fi
5553
5554 man3dir="$ans"
5555 man3direxp="$ansexp"
5556 case "$man3dir" in
5557 '') man3dir=' '
5558         installman3dir='';;
5559 esac
5560 if $afs; then
5561         $cat <<EOM
5562
5563 Since you are running AFS, I need to distinguish the directory in which
5564 manual pages reside from the directory in which they are installed (and from
5565 which they are presumably copied to the former directory by occult means).
5566
5567 EOM
5568         case "$installman3dir" in
5569         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5570         *) dflt="$installman3dir";;
5571         esac
5572         fn=de~
5573         rp='Where will man pages be installed?'
5574         . ./getfile
5575         installman3dir="$ans"
5576 else
5577         installman3dir="$man3direxp"
5578 fi
5579
5580 : What suffix to use on installed man pages
5581
5582 case "$man3dir" in
5583 ' ')
5584         man3ext='0'
5585         ;;
5586 *)
5587         rp="What suffix should be used for the $package library man pages?"
5588         case "$man3ext" in
5589         '')     case "$man3dir" in
5590                 *3)  dflt=3 ;;
5591                 *3p) dflt=3p ;;
5592                 *3pm) dflt=3pm ;;
5593                 *l) dflt=l;;
5594                 *n) dflt=n;;
5595                 *o) dflt=o;;
5596                 *p) dflt=p;;
5597                 *C) dflt=C;;
5598                 *L) dflt=L;;
5599                 *L3) dflt=L3;;
5600                 *) dflt=3;;
5601                 esac
5602                 ;;
5603         *)      dflt="$man3ext";;
5604         esac
5605         . ./myread
5606         man3ext="$ans"
5607         ;;
5608 esac
5609
5610 : see if we have to deal with yellow pages, now NIS.
5611 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5612         if $test -f /usr/etc/nibindd; then
5613                 echo " "
5614                 echo "I'm fairly confident you're on a NeXT."
5615                 echo " "
5616                 rp='Do you get the hosts file via NetInfo?'
5617                 dflt=y
5618                 case "$hostcat" in
5619                 nidump*) ;;
5620                 '') ;;
5621                 *) dflt=n;;
5622                 esac
5623                 . ./myread
5624                 case "$ans" in
5625                 y*) hostcat='nidump hosts .';;
5626                 *)      case "$hostcat" in
5627                         nidump*) hostcat='';;
5628                         esac
5629                         ;;
5630                 esac
5631         fi
5632         case "$hostcat" in
5633         nidump*) ;;
5634         *)
5635                 case "$hostcat" in
5636                 *ypcat*) dflt=y;;
5637                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5638                                 dflt=y
5639                         else
5640                                 dflt=n
5641                         fi;;
5642                 *) dflt=n;;
5643                 esac
5644                 echo " "
5645                 rp='Are you getting the hosts file via yellow pages?'
5646                 . ./myread
5647                 case "$ans" in
5648                 y*) hostcat='ypcat hosts';;
5649                 *) hostcat='cat /etc/hosts';;
5650                 esac
5651                 ;;
5652         esac
5653 fi
5654 case "$hostcat" in
5655 '') hostcat='cat /etc/hosts';;
5656 esac
5657 case "$groupcat" in
5658 '') groupcat='cat /etc/group';;
5659 esac
5660 case "$passcat" in
5661 '') passcat='cat /etc/passwd';;
5662 esac
5663
5664 : now get the host name
5665 echo " "
5666 echo "Figuring out host name..." >&4
5667 case "$myhostname" in
5668 '') cont=true
5669         echo 'Maybe "hostname" will work...'
5670         if tans=`sh -c hostname 2>&1` ; then
5671                 myhostname=$tans
5672                 phostname=hostname
5673                 cont=''
5674         fi
5675         ;;
5676 *) cont='';;
5677 esac
5678 if $test "$cont"; then
5679         if ./xenix; then
5680                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5681                 if tans=`cat /etc/systemid 2>&1` ; then
5682                         myhostname=$tans
5683                         phostname='cat /etc/systemid'
5684                         echo "Whadyaknow.  Xenix always was a bit strange..."
5685                         cont=''
5686                 fi
5687         elif $test -r /etc/systemid; then
5688                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5689         fi
5690 fi
5691 if $test "$cont"; then
5692         echo 'No, maybe "uuname -l" will work...'
5693         if tans=`sh -c 'uuname -l' 2>&1` ; then
5694                 myhostname=$tans
5695                 phostname='uuname -l'
5696         else
5697                 echo 'Strange.  Maybe "uname -n" will work...'
5698                 if tans=`sh -c 'uname -n' 2>&1` ; then
5699                         myhostname=$tans
5700                         phostname='uname -n'
5701                 else
5702                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5703                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5704                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5705                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5706                         else
5707                                 case "$myhostname" in
5708                                 '') echo "Does this machine have an identity crisis or something?"
5709                                         phostname='';;
5710                                 *)
5711                                         echo "Well, you said $myhostname before..."
5712                                         phostname='echo $myhostname';;
5713                                 esac
5714                         fi
5715                 fi
5716         fi
5717 fi
5718 : you do not want to know about this
5719 set $myhostname
5720 myhostname=$1
5721
5722 : verify guess
5723 if $test "$myhostname" ; then
5724         dflt=y
5725         rp='Your host name appears to be "'$myhostname'".'" Right?"
5726         . ./myread
5727         case "$ans" in
5728         y*) ;;
5729         *) myhostname='';;
5730         esac
5731 fi
5732
5733 : bad guess or no guess
5734 while $test "X$myhostname" = X ; do
5735         dflt=''
5736         rp="Please type the (one word) name of your host:"
5737         . ./myread
5738         myhostname="$ans"
5739 done
5740
5741 : translate upper to lower if necessary
5742 case "$myhostname" in
5743 *[A-Z]*)
5744         echo "(Normalizing case in your host name)"
5745         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5746         ;;
5747 esac
5748
5749 case "$myhostname" in
5750 *.*)
5751         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5752         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5753         echo "(Trimming domain name from host name--host name is now $myhostname)"
5754         ;;
5755 *) case "$mydomain" in
5756         '')
5757                 {
5758                         test "X$hostcat" = "Xypcat hosts" &&
5759                         ypmatch "$myhostname" hosts 2>/dev/null |\
5760                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5761                         $test -s hosts
5762                 } || {
5763                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5764                                         /[       ]$myhostname[  . ]/p" > hosts
5765                 }
5766                 tmp_re="[       . ]"
5767                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5768                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5769                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5770                         hosts | $sort | $uniq | \
5771                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5772                 case `$echo X$dflt` in
5773                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5774                         dflt=.
5775                         ;;
5776                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5777                         ;;
5778                 esac
5779                 case "$dflt" in
5780                 .)
5781                         tans=`./loc resolv.conf X /etc /usr/etc`
5782                         if $test -f "$tans"; then
5783                                 echo "(Attempting domain name extraction from $tans)"
5784                                 dflt=.`$sed -n -e 's/   / /g' \
5785                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5786                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5787                                 case "$dflt" in
5788                                 .) dflt=.`$sed -n -e 's/        / /g' \
5789                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5790                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5791                                         ;;
5792                                 esac
5793                         fi
5794                         ;;
5795                 esac
5796                 case "$dflt" in
5797                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5798                         dflt=.`sh -c domainname 2>/dev/null`
5799                         case "$dflt" in
5800                         '') dflt='.';;
5801                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5802                         esac
5803                         ;;
5804                 esac
5805                 case "$dflt" in
5806                 .) echo "(Lost all hope -- silly guess then)"
5807                         dflt='.uucp'
5808                         ;;
5809                 esac
5810                 $rm -f hosts
5811                 ;;
5812         *) dflt="$mydomain";;
5813         esac;;
5814 esac
5815 echo " "
5816 rp="What is your domain name?"
5817 . ./myread
5818 tans="$ans"
5819 case "$ans" in
5820 '') ;;
5821 .*) ;;
5822 *) tans=".$tans";;
5823 esac
5824 mydomain="$tans"
5825
5826 : translate upper to lower if necessary
5827 case "$mydomain" in
5828 *[A-Z]*)
5829         echo "(Normalizing case in your domain name)"
5830         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5831         ;;
5832 esac
5833
5834 : a little sanity check here
5835 case "$phostname" in
5836 '') ;;
5837 *)
5838         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5839         $myhostname$mydomain|$myhostname) ;;
5840         *)
5841                 case "$phostname" in
5842                 sed*)
5843                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5844                         ;;
5845                 *)
5846                         echo "(That doesn't agree with your $phostname command, by the way.)"
5847                         ;;
5848                 esac
5849         ;;
5850         esac
5851         ;;
5852 esac
5853
5854 $cat <<EOM
5855
5856 I need to get your e-mail address in Internet format if possible, i.e.
5857 something like user@host.domain. Please answer accurately since I have
5858 no easy means to double check it. The default value provided below
5859 is most probably close to the reality but may not be valid from outside
5860 your organization...
5861
5862 EOM
5863 cont=x
5864 while test "$cont"; do
5865         case "$cf_email" in
5866         '') dflt="$cf_by@$myhostname$mydomain";;
5867         *) dflt="$cf_email";;
5868         esac
5869         rp='What is your e-mail address?'
5870         . ./myread
5871         cf_email="$ans"
5872         case "$cf_email" in
5873         *@*.*) cont='' ;;
5874         *)
5875                 rp='Address does not look like an Internet one.  Use it anyway?'
5876                 case "$fastread" in
5877                 yes) dflt=y ;;
5878                 *) dflt=n ;;
5879                 esac
5880                 . ./myread
5881                 case "$ans" in
5882                 y*) cont='' ;;
5883                 *) echo " " ;;
5884                 esac
5885                 ;;
5886         esac
5887 done
5888
5889 $cat <<EOM
5890
5891 If you or somebody else will be maintaining perl at your site, please
5892 fill in the correct e-mail address here so that they may be contacted
5893 if necessary. Currently, the "perlbug" program included with perl
5894 will send mail to this address in addition to perlbug@perl.com. You may
5895 enter "none" for no administrator.
5896
5897 EOM
5898 case "$perladmin" in
5899 '') dflt="$cf_email";;
5900 *) dflt="$perladmin";;
5901 esac
5902 rp='Perl administrator e-mail address'
5903 . ./myread
5904 perladmin="$ans"
5905
5906 : figure out how to guarantee perl startup
5907 case "$startperl" in
5908 '')
5909         case "$sharpbang" in
5910         *!)
5911                 $cat <<EOH
5912
5913 I can use the #! construct to start perl on your system. This will
5914 make startup of perl scripts faster, but may cause problems if you
5915 want to share those scripts and perl is not in a standard place
5916 ($binexp/perl) on all your platforms. The alternative is to force
5917 a shell by starting the script with a single ':' character.
5918
5919 EOH
5920                 dflt="$binexp/perl"
5921                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5922                 . ./myread
5923                 case "$ans" in
5924                 none)   startperl=": # use perl";;
5925                 *)      startperl="#!$ans"
5926                         if $test 30 -lt `echo "$ans" | wc -c`; then
5927                                 $cat >&4 <<EOM
5928
5929 WARNING:  Some systems limit the #! command to 32 characters.
5930 If you experience difficulty running Perl scripts with #!, try
5931 installing Perl in a directory with a shorter pathname.
5932
5933 EOM
5934                         fi ;;
5935                 esac
5936                 ;;
5937         *) startperl=": # use perl"
5938                 ;;
5939         esac
5940         ;;
5941 esac
5942 echo "I'll use $startperl to start perl scripts."
5943
5944 : figure best path for perl in scripts
5945 case "$perlpath" in
5946 '')
5947         perlpath="$binexp/perl"
5948         case "$startperl" in
5949         *!*) ;;
5950         *)
5951                 $cat <<EOH
5952
5953 I will use the "eval 'exec'" idiom to start Perl on your system.
5954 I can use the full path of your Perl binary for this purpose, but
5955 doing so may cause problems if you want to share those scripts and
5956 Perl is not always in a standard place ($binexp/perl).
5957
5958 EOH
5959                 dflt="$binexp/perl"
5960                 rp="What path shall I use in \"eval 'exec'\"?"
5961                 . ./myread
5962                 perlpath="$ans"
5963                 ;;
5964         esac
5965         ;;
5966 esac
5967 case "$startperl" in
5968 *!*)    ;;
5969 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
5970 esac
5971
5972 : determine where public executable scripts go
5973 set scriptdir scriptdir
5974 eval $prefixit
5975 case "$scriptdir" in
5976 '')
5977         dflt="$bin"
5978         : guess some guesses
5979         $test -d /usr/share/scripts && dflt=/usr/share/scripts
5980         $test -d /usr/share/bin && dflt=/usr/share/bin
5981         $test -d /usr/local/script && dflt=/usr/local/script
5982         $test -d $prefixexp/script && dflt=$prefixexp/script
5983         set dflt
5984         eval $prefixup
5985         ;;
5986 *)  dflt="$scriptdir"
5987         ;;
5988 esac
5989 $cat <<EOM
5990  
5991 Some installations have a separate directory just for executable scripts so
5992 that they can mount it across multiple architectures but keep the scripts in
5993 one spot.  You might, for example, have a subdirectory of /usr/share for this.
5994 Or you might just lump your scripts in with all your other executables.
5995  
5996 EOM
5997 fn=d~
5998 rp='Where do you keep publicly executable scripts?'
5999 . ./getfile
6000 if $test "X$ansexp" != "X$scriptdirexp"; then
6001         installscript=''
6002 fi
6003 scriptdir="$ans"
6004 scriptdirexp="$ansexp"
6005 if $afs; then
6006         $cat <<EOM
6007
6008 Since you are running AFS, I need to distinguish the directory in which
6009 scripts reside from the directory in which they are installed (and from
6010 which they are presumably copied to the former directory by occult means).
6011
6012 EOM
6013         case "$installscript" in
6014         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6015         *) dflt="$installscript";;
6016         esac
6017         fn=de~
6018         rp='Where will public scripts be installed?'
6019         . ./getfile
6020         installscript="$ans"
6021 else
6022         installscript="$scriptdirexp"
6023 fi
6024
6025 : determine where site specific libraries go.
6026 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6027 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6028 case "$prefix" in
6029 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6030 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6031 esac
6032 eval $prefixit
6033 $cat <<EOM
6034
6035 The installation process will also create a directory for
6036 site-specific extensions and modules.  Some users find it convenient
6037 to place all local files in this directory rather than in the main
6038 distribution directory.
6039
6040 EOM
6041 fn=d~+
6042 rp='Pathname for the site-specific library files?'
6043 . ./getfile
6044 if $test "X$sitelibexp" != "X$ansexp"; then
6045         installsitelib=''
6046 fi
6047 sitelib="$ans"
6048 sitelibexp="$ansexp"
6049 if $afs; then
6050         $cat <<EOM
6051
6052 Since you are running AFS, I need to distinguish the directory in
6053 which site-specific files reside from the directory in which they are
6054 installed (and from which they are presumably copied to the former
6055 directory by occult means).
6056
6057 EOM
6058         case "$installsitelib" in
6059         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6060         *) dflt="$installsitelib";;
6061         esac
6062         fn=de~
6063         rp='Where will site-specific files be installed?'
6064         . ./getfile
6065         installsitelib="$ans"
6066 else
6067         installsitelib="$sitelibexp"
6068 fi
6069
6070 : determine where site specific architecture-dependent libraries go.
6071 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6072 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6073 : sitelib may have an optional trailing /share.
6074 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6075 tdflt="$tdflt/$archname"
6076 set sitearch sitearch none
6077 eval $prefixit
6078 case "$sitearch" in
6079 '')     dflt="$tdflt" ;;
6080 *)      dflt="$sitearch" ;;
6081 esac
6082 $cat <<EOM
6083
6084 The installation process will also create a directory for
6085 architecture-dependent site-specific extensions and modules.
6086
6087 EOM
6088 fn=nd~+
6089 rp='Pathname for the site-specific architecture-dependent library files?'
6090 . ./getfile
6091 if $test "X$sitearchexp" != "X$ansexp"; then
6092         installsitearch=''
6093 fi
6094 sitearch="$ans"
6095 sitearchexp="$ansexp"
6096 if $afs; then
6097         $cat <<EOM
6098
6099 Since you are running AFS, I need to distinguish the directory in
6100 which site-specific architecture-dependent library files reside from
6101 the directory in which they are installed (and from which they are
6102 presumably copied to the former directory by occult means).
6103
6104 EOM
6105         case "$installsitearch" in
6106         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6107         *) dflt="$installsitearch";;
6108         esac
6109         fn=de~
6110         rp='Where will site-specific architecture-dependent files be installed?'
6111         . ./getfile
6112         installsitearch="$ans"
6113 else
6114         installsitearch="$sitearchexp"
6115 fi
6116
6117 cat <<EOM
6118
6119 Previous version of $package used the standard IO mechanisms as defined
6120 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6121 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6122 the default.  This abstraction layer can use AT&T's sfio (if you already
6123 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6124 problems with some extension modules.  Using PerlIO with stdio is safe,
6125 but it is slower than plain stdio and therefore is not the default.
6126
6127 If this doesn't make any sense to you, just accept the default 'n'.
6128 EOM
6129 case "$useperlio" in
6130 $define|true|[yY]*)     dflt='y';;
6131 *) dflt='n';;
6132 esac
6133 rp='Use the experimental PerlIO abstraction layer?'
6134 . ./myread
6135 case "$ans" in
6136 y|Y) 
6137         val="$define"
6138         ;;     
6139 *)      
6140         echo "Ok, doing things the stdio way"
6141         val="$undef"
6142         ;;
6143 esac
6144 set useperlio
6145 eval $setvar 
6146
6147 : Check how to convert floats to strings.
6148 if test "X$d_Gconvert" = X; then
6149         echo " "
6150         echo "Checking for an efficient way to convert floats to strings."
6151         $cat >try.c <<'EOP'
6152 #ifdef TRY_gconvert
6153 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6154 char *myname = "gconvert";
6155 #endif
6156 #ifdef TRY_gcvt
6157 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6158 char *myname = "gcvt";
6159 #endif
6160 #ifdef TRY_sprintf
6161 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6162 char *myname = "sprintf";
6163 #endif
6164
6165 #include <stdio.h>
6166
6167 int
6168 checkit(expect, got)
6169 char *expect;
6170 char *got;
6171 {
6172     if (strcmp(expect, got)) {
6173                 printf("%s oddity:  Expected %s, got %s\n",
6174                         myname, expect, got);
6175                 exit(1);
6176         }
6177 }
6178
6179 int main()
6180
6181         char buf[64]; 
6182         buf[63] = '\0';
6183
6184         /* This must be 1st test on (which?) platform */
6185         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6186         Gconvert(0.1, 8, 0, buf);
6187         checkit("0.1", buf);
6188
6189         Gconvert(1.0, 8, 0, buf); 
6190         checkit("1", buf);
6191
6192         Gconvert(0.0, 8, 0, buf); 
6193         checkit("0", buf);
6194
6195         Gconvert(-1.0, 8, 0, buf); 
6196         checkit("-1", buf);
6197
6198         /* Some Linux gcvt's give 1.e+5 here. */
6199         Gconvert(100000.0, 8, 0, buf); 
6200         checkit("100000", buf);
6201         
6202         /* Some Linux gcvt's give -1.e+5 here. */
6203         Gconvert(-100000.0, 8, 0, buf); 
6204         checkit("-100000", buf);
6205
6206         exit(0);
6207 }
6208 EOP
6209         case "$d_Gconvert" in
6210         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6211         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6212         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6213         *) xxx_list='gconvert gcvt sprintf' ;;
6214         esac
6215
6216         for xxx_convert in $xxx_list; do
6217                 echo "Trying $xxx_convert"
6218                 $rm -f try try$_o
6219                 set try -DTRY_$xxx_convert
6220                 if eval $compile; then
6221                         echo "$xxx_convert" found. >&4
6222                         if ./try; then
6223                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6224                                 break;
6225                         else
6226                                 echo "...But $xxx_convert didn't work as I expected."
6227                         fi
6228                 else
6229                         echo "$xxx_convert NOT found." >&4
6230                 fi
6231         done
6232                 
6233         case "$xxx_convert" in
6234         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6235         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6236         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6237         esac
6238 fi
6239
6240 : Initialize h_fcntl
6241 h_fcntl=false
6242
6243 : Initialize h_sysfile
6244 h_sysfile=false
6245
6246 : access call always available on UNIX
6247 set access d_access
6248 eval $inlibc
6249
6250 : locate the flags for 'access()'
6251 case "$d_access" in
6252 "$define")
6253         echo " "
6254         $cat >access.c <<'EOCP'
6255 #include <sys/types.h>
6256 #ifdef I_FCNTL
6257 #include <fcntl.h>
6258 #endif
6259 #ifdef I_SYS_FILE
6260 #include <sys/file.h>
6261 #endif
6262 #ifdef I_UNISTD
6263 #include <unistd.h>
6264 #endif
6265 main() {
6266         exit(R_OK);
6267 }
6268 EOCP
6269         : check sys/file.h first, no particular reason here
6270         if $test `./findhdr sys/file.h` && \
6271                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6272                 h_sysfile=true;
6273                 echo "<sys/file.h> defines the *_OK access constants." >&4
6274         elif $test `./findhdr fcntl.h` && \
6275                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6276                 h_fcntl=true;
6277                 echo "<fcntl.h> defines the *_OK access constants." >&4
6278         elif $test `./findhdr unistd.h` && \
6279                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6280                 echo "<unistd.h> defines the *_OK access constants." >&4
6281         else
6282                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6283         fi
6284         ;;
6285 esac
6286 $rm -f access*
6287
6288 : see if accessx exists
6289 set accessx d_accessx
6290 eval $inlibc
6291
6292 : see if alarm exists
6293 set alarm d_alarm
6294 eval $inlibc
6295
6296 : Look for GNU-cc style attribute checking
6297 echo " "
6298 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6299 $cat >attrib.c <<'EOCP'
6300 #include <stdio.h>
6301 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6302 EOCP
6303 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6304         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6305                 echo "Your C compiler doesn't fully support __attribute__."
6306                 val="$undef"
6307         else
6308                 echo "Your C compiler supports __attribute__."
6309                 val="$define"
6310         fi
6311 else
6312         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6313         val="$undef"
6314 fi
6315 set d_attribut
6316 eval $setvar
6317 $rm -f attrib*
6318
6319 : see if bcmp exists
6320 set bcmp d_bcmp
6321 eval $inlibc
6322
6323 : see if bcopy exists
6324 set bcopy d_bcopy
6325 eval $inlibc
6326
6327 : see if this is a unistd.h system
6328 set unistd.h i_unistd
6329 eval $inhdr
6330
6331 : see if getpgrp exists
6332 set getpgrp d_getpgrp
6333 eval $inlibc
6334
6335 case "$d_getpgrp" in
6336 "$define")
6337         echo " "
6338         echo "Checking to see which flavor of getpgrp is in use..."
6339         $cat >set.c <<EOP
6340 #$i_unistd I_UNISTD
6341 #include <sys/types.h>
6342 #ifdef I_UNISTD
6343 #  include <unistd.h>
6344 #endif
6345 int main()
6346 {
6347         if (getuid() == 0) {
6348                 printf("(I see you are running Configure as super-user...)\n");
6349                 setuid(1);
6350         }
6351 #ifdef TRY_BSD_PGRP
6352         if (getpgrp(1) == 0)
6353                 exit(0);
6354 #else
6355         if (getpgrp() > 0)
6356                 exit(0);
6357 #endif
6358         exit(1);
6359 }
6360 EOP
6361         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6362                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6363                 val="$define"
6364         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6365                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6366                 val="$undef"
6367         else
6368                 echo "I can't seem to compile and run the test program."
6369                 if ./usg; then
6370                         xxx="a USG one, i.e. you use getpgrp()."
6371                 else
6372                         # SVR4 systems can appear rather BSD-ish.
6373                         case "$i_unistd" in
6374                         $undef)
6375                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6376                                 val="$define"
6377                                 ;;
6378                         $define)
6379                                 xxx="probably a USG one, i.e. you use getpgrp()."
6380                                 val="$undef"
6381                                 ;;
6382                         esac
6383                 fi
6384                 echo "Assuming your getpgrp is $xxx" >&4
6385         fi
6386         ;;
6387 *) val="$undef";;
6388 esac
6389 set d_bsdgetpgrp
6390 eval $setvar
6391 $rm -f set set.c
6392
6393 : see if setpgrp exists
6394 set setpgrp d_setpgrp
6395 eval $inlibc
6396
6397 case "$d_setpgrp" in
6398 "$define")
6399         echo " "
6400         echo "Checking to see which flavor of setpgrp is in use..."
6401         $cat >set.c <<EOP
6402 #$i_unistd I_UNISTD
6403 #include <sys/types.h>
6404 #ifdef I_UNISTD
6405 #  include <unistd.h>
6406 #endif
6407 int main()
6408 {
6409         if (getuid() == 0) {
6410                 printf("(I see you are running Configure as super-user...)\n");
6411                 setuid(1);
6412         }
6413 #ifdef TRY_BSD_PGRP
6414         if (-1 == setpgrp(1, 1))
6415                 exit(0);
6416 #else
6417         if (setpgrp() != -1)
6418                 exit(0);
6419 #endif
6420         exit(1);
6421 }
6422 EOP
6423         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6424                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6425                 val="$define"
6426         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6427                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6428                 val="$undef"
6429         else
6430                 echo "(I can't seem to compile and run the test program.)"
6431                 if ./usg; then
6432                         xxx="a USG one, i.e. you use setpgrp()."
6433                 else
6434                         # SVR4 systems can appear rather BSD-ish.
6435                         case "$i_unistd" in
6436                         $undef)
6437                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6438                                 val="$define"
6439                                 ;;
6440                         $define)
6441                                 xxx="probably a USG one, i.e. you use setpgrp()."
6442                                 val="$undef"
6443                                 ;;
6444                         esac
6445                 fi
6446                 echo "Assuming your setpgrp is $xxx" >&4
6447         fi
6448         ;;
6449 *) val="$undef";;
6450 esac
6451 set d_bsdsetpgrp
6452 eval $setvar
6453 $rm -f set set.c
6454 : see if bzero exists
6455 set bzero d_bzero
6456 eval $inlibc
6457
6458 : check for lengths of integral types
6459 echo " "
6460 case "$intsize" in
6461 '')
6462         echo "Checking to see how big your integers are..." >&4
6463         $cat >intsize.c <<'EOCP'
6464 #include <stdio.h>
6465 main()
6466 {
6467         printf("intsize=%d;\n", sizeof(int));
6468         printf("longsize=%d;\n", sizeof(long));
6469         printf("shortsize=%d;\n", sizeof(short));
6470         exit(0);
6471 }
6472 EOCP
6473         set intsize
6474         if eval $compile_ok && ./intsize > /dev/null; then
6475                 eval `./intsize`
6476                 echo "Your integers are $intsize bytes long."
6477                 echo "Your long integers are $longsize bytes long."
6478                 echo "Your short integers are $shortsize bytes long."
6479         else
6480                 $cat >&4 <<EOM
6481 !
6482 Help! I can't compile and run the intsize test program: please enlighten me!
6483 (This is probably a misconfiguration in your system or libraries, and
6484 you really ought to fix it.  Still, I'll try anyway.)
6485 !
6486 EOM
6487                 dflt=4
6488                 rp="What is the size of an integer (in bytes)?"
6489                 . ./myread
6490                 intsize="$ans"
6491                 dflt=$intsize
6492                 rp="What is the size of a long integer (in bytes)?"
6493                 . ./myread
6494                 longsize="$ans"
6495                 dflt=2
6496                 rp="What is the size of a short integer (in bytes)?"
6497                 . ./myread
6498                 shortsize="$ans"
6499         fi
6500         ;;
6501 esac
6502 $rm -f intsize intsize.*
6503
6504 : see if signal is declared as pointer to function returning int or void
6505 echo " "
6506 xxx=`./findhdr signal.h`
6507 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6508 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6509         echo "You have int (*signal())() instead of void." >&4
6510         val="$undef"
6511 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6512         echo "You have void (*signal())()." >&4
6513         val="$define"
6514 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6515         echo "You have int (*signal())() instead of void." >&4
6516         val="$undef"
6517 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6518         echo "You have void (*signal())()." >&4
6519         val="$define"
6520 else
6521         case "$d_voidsig" in
6522         '')
6523         echo "I can't determine whether signal handler returns void or int..." >&4
6524                 dflt=void
6525                 rp="What type does your signal handler return?"
6526                 . ./myread
6527                 case "$ans" in
6528                 v*) val="$define";;
6529                 *) val="$undef";;
6530                 esac;;
6531         "$define")
6532                 echo "As you already told me, signal handler returns void." >&4
6533                 val="$define"
6534                 ;;
6535         *)      echo "As you already told me, signal handler returns int." >&4
6536                 val="$undef"
6537                 ;;
6538         esac
6539 fi
6540 set d_voidsig
6541 eval $setvar
6542 case "$d_voidsig" in
6543 "$define") signal_t="void";;
6544 *) signal_t="int";;
6545 esac
6546 $rm -f $$.tmp
6547
6548 : check for ability to cast large floats to 32-bit ints.
6549 echo " "
6550 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6551 if $test "$intsize" -ge 4; then
6552         xxx=int
6553 else
6554         xxx=long
6555 fi
6556 $cat >try.c <<EOCP
6557 #include <stdio.h>
6558 #include <sys/types.h>
6559 #include <signal.h>
6560 $signal_t blech(s) int s; { exit(3); }
6561 main()
6562 {
6563         $xxx i32;
6564         double f, g;
6565         int result = 0;
6566         char str[16];
6567         signal(SIGFPE, blech);
6568
6569         /* Don't let compiler optimize the test away.  Store the number 
6570            in a writable string for gcc to pass to sscanf under HP/UX.
6571         */
6572         sprintf(str, "2147483647");
6573         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6574         g = 10 * f;
6575         i32  = ($xxx) g;
6576
6577         /* x86 processors will probably give 0x8000 0000, which is a
6578        sign change.  We don't want that.  We want to mimic SPARC
6579            behavior here, which is to preserve the sign and give
6580            back 0x7fff ffff.
6581         */
6582         if (i32 != ($xxx) f)
6583                 result |= 1;
6584         exit(result);
6585 }
6586 EOCP
6587 set try
6588 if eval $compile_ok; then
6589         ./try
6590         yyy=$?
6591 else
6592         echo "(I can't seem to compile the test program--assuming it can't)"
6593         yyy=1
6594 fi
6595 case "$yyy" in
6596 0)      val="$define"
6597         echo "Yup, it can."
6598         ;;
6599 *)      val="$undef"
6600         echo "Nope, it can't."
6601         ;;
6602 esac
6603 set d_casti32
6604 eval $setvar
6605 $rm -f try try.*
6606
6607 : check for ability to cast negative floats to unsigned
6608 echo " "
6609 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6610 $cat >try.c <<EOCP
6611 #include <stdio.h>
6612 #include <sys/types.h>
6613 #include <signal.h>
6614 $signal_t blech(s) int s; { exit(7); }
6615 $signal_t blech_in_list(s) int s; { exit(4); }
6616 unsigned long dummy_long(p) unsigned long p; { return p; }
6617 unsigned int dummy_int(p) unsigned int p; { return p; }
6618 unsigned short dummy_short(p) unsigned short p; { return p; }
6619 main()
6620 {
6621         double f;
6622         unsigned long along;
6623         unsigned int aint;
6624         unsigned short ashort;
6625         int result = 0;
6626         char str[16];
6627         
6628         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6629            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6630            optimized the whole file away
6631         */
6632         /* Store the number in a writable string for gcc to pass to 
6633            sscanf under HP/UX.
6634         */
6635         sprintf(str, "-123");
6636         sscanf(str, "%lf", &f);  /* f = -123.; */
6637
6638         signal(SIGFPE, blech);
6639         along = (unsigned long)f;
6640         aint = (unsigned int)f;
6641         ashort = (unsigned short)f;
6642         if (along != (unsigned long)-123)
6643                 result |= 1;
6644         if (aint != (unsigned int)-123)
6645                 result |= 1;
6646         if (ashort != (unsigned short)-123)
6647                 result |= 1;
6648         sprintf(str, "1073741824.");
6649         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6650         f = f + f;
6651         along = 0;
6652         along = (unsigned long)f;
6653         if (along != 0x80000000)
6654                 result |= 2;
6655         f -= 1.;
6656         along = 0;
6657         along = (unsigned long)f;
6658         if (along != 0x7fffffff)
6659                 result |= 1;
6660         f += 2.;
6661         along = 0;
6662         along = (unsigned long)f;
6663         if (along != 0x80000001)
6664                 result |= 2;
6665         if (result)
6666                 exit(result);
6667         signal(SIGFPE, blech_in_list);
6668         sprintf(str, "123.");
6669         sscanf(str, "%lf", &f);  /* f = 123.; */
6670         along = dummy_long((unsigned long)f);
6671         aint = dummy_int((unsigned int)f);
6672         ashort = dummy_short((unsigned short)f);
6673         if (along != (unsigned long)123)
6674                 result |= 4;
6675         if (aint != (unsigned int)123)
6676                 result |= 4;
6677         if (ashort != (unsigned short)123)
6678                 result |= 4;
6679         exit(result);
6680
6681 }
6682 EOCP
6683 set try
6684 if eval $compile_ok; then
6685         ./try
6686         castflags=$?
6687 else
6688         echo "(I can't seem to compile the test program--assuming it can't)"
6689         castflags=7
6690 fi
6691 case "$castflags" in
6692 0)      val="$define"
6693         echo "Yup, it can."
6694         ;;
6695 *)      val="$undef"
6696         echo "Nope, it can't."
6697         ;;
6698 esac
6699 set d_castneg
6700 eval $setvar
6701 $rm -f try.*
6702
6703 : see if vprintf exists
6704 echo " "
6705 if set vprintf val -f d_vprintf; eval $csym; $val; then
6706         echo 'vprintf() found.' >&4
6707         val="$define"
6708         $cat >vprintf.c <<'EOF'
6709 #include <varargs.h>
6710
6711 main() { xxx("foo"); }
6712
6713 xxx(va_alist)
6714 va_dcl
6715 {
6716         va_list args;
6717         char buf[10];
6718
6719         va_start(args);
6720         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6721 }
6722 EOF
6723         set vprintf
6724         if eval $compile && ./vprintf; then
6725                 echo "Your vsprintf() returns (int)." >&4
6726                 val2="$undef"
6727         else
6728                 echo "Your vsprintf() returns (char*)." >&4
6729                 val2="$define"
6730         fi
6731 else
6732         echo 'vprintf() NOT found.' >&4
6733                 val="$undef"
6734                 val2="$undef"
6735 fi
6736 set d_vprintf
6737 eval $setvar
6738 val=$val2
6739 set d_charvspr
6740 eval $setvar
6741
6742 : see if chown exists
6743 set chown d_chown
6744 eval $inlibc
6745
6746 : see if chroot exists
6747 set chroot d_chroot
6748 eval $inlibc
6749
6750 : see if chsize exists
6751 set chsize d_chsize
6752 eval $inlibc
6753
6754 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6755 while $test $# -ge 2; do
6756         case "$1" in
6757         $define) echo "#include <$2>";;
6758         esac ;
6759     shift 2;
6760 done > try.c;
6761 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6762 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6763         val="$define";
6764 else
6765         val="$undef";
6766 fi;
6767 set $varname;
6768 eval $setvar;
6769 $rm -f try.c try.o'
6770
6771 : see if this is a sys/uio.h system
6772 set sys/uio.h i_sysuio
6773 eval $inhdr
6774
6775 echo "Checking to see if your system supports struct iovec..." >&4
6776 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6777 eval $hasfield
6778 case "$d_iovec_s" in
6779 "$define")      echo "Yup, it does." >&4
6780                 ;;
6781 *)              echo "Nope, it doesn't." >&4
6782                 ;;
6783 esac
6784
6785 socketlib=''
6786 sockethdr=''
6787 : see whether socket exists
6788 echo " "
6789 $echo $n "Hmm... $c" >&4
6790 if set socket val -f d_socket; eval $csym; $val; then
6791         echo "Looks like you have Berkeley networking support." >&4
6792         d_socket="$define"
6793         if set setsockopt val -f; eval $csym; $val; then
6794                 d_oldsock="$undef"
6795         else
6796                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6797                 d_oldsock="$define"
6798         fi
6799 else
6800         if $contains socklib libc.list >/dev/null 2>&1; then
6801                 echo "Looks like you have Berkeley networking support." >&4
6802                 d_socket="$define"
6803                 : we will have to assume that it supports the 4.2 BSD interface
6804                 d_oldsock="$undef"
6805         else
6806                 echo "You don't have Berkeley networking in libc$_a..." >&4
6807                 if test "X$d_socket" = "X$define"; then
6808                    echo "...but you seem to believe that you have sockets." >&4
6809                 else
6810                         for net in net socket
6811                         do
6812                                 if test -f /usr/lib/lib$net$_a; then
6813                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6814                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6815                                         if $contains socket libc.list >/dev/null 2>&1; then
6816                                                 d_socket="$define"
6817                                                 socketlib="-l$net"
6818                                                 case "$net" in
6819                                                 net)
6820                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6821                                                         sockethdr="-I/usr/netinclude"
6822                                                         ;;
6823                                                 esac
6824                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6825                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6826                                                         d_oldsock="$undef"
6827                                                 else
6828                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6829                                                         d_oldsock="$define"
6830                                                 fi
6831                                                 break
6832                                         fi
6833                                 fi
6834                         done
6835                         if test "X$d_socket" != "X$define"; then
6836                            echo "or anywhere else I see." >&4
6837                            d_socket="$undef"
6838                            d_oldsock="$undef"
6839                         fi
6840                 fi
6841         fi
6842 fi
6843
6844 : see if socketpair exists
6845 set socketpair d_sockpair
6846 eval $inlibc
6847
6848
6849 echo " "
6850 echo "Checking the availability of certain socket constants..." >& 4
6851 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6852         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6853         $cat >try.c <<EOF
6854 #include <sys/types.h>
6855 #include <sys/socket.h>
6856 int main() {
6857     int i = $ENUM;
6858 }
6859 EOF
6860         val="$undef"
6861         set try; if eval $compile; then
6862                 val="$define"
6863         fi
6864         set d_${enum}; eval $setvar
6865         $rm -f try.c try
6866 done
6867
6868 set sendmsg d_sendmsg
6869 eval $inlibc
6870
6871 set recvmsg d_recvmsg
6872 eval $inlibc
6873
6874 echo " "
6875 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6876 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6877 eval $hasfield
6878 case "$d_msghdr_s" in
6879 "$define")      echo "Yup, it does." >&4
6880                 ;;
6881 *)              echo "Nope, it doesn't." >&4
6882                 ;;
6883 esac
6884
6885 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6886 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6887 eval $hasfield
6888 case "$d_cmsghdr_s" in
6889 "$define")      echo "Yup, it does." >&4
6890                 ;;
6891 *)              echo "Nope, it doesn't." >&4
6892                 ;;
6893 esac
6894
6895 : check for const keyword
6896 echo " "
6897 echo 'Checking to see if your C compiler knows about "const"...' >&4
6898 $cat >const.c <<'EOCP'
6899 typedef struct spug { int drokk; } spug;
6900 int main()
6901 {
6902         const char *foo;
6903         const spug y;
6904 }
6905 EOCP
6906 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6907         val="$define"
6908         echo "Yup, it does."
6909 else
6910         val="$undef"
6911         echo "Nope, it doesn't."
6912 fi
6913 set d_const
6914 eval $setvar
6915
6916 : see if crypt exists
6917 echo " "
6918 if set crypt val -f d_crypt; eval $csym; $val; then
6919         echo 'crypt() found.' >&4
6920         val="$define"
6921         cryptlib=''
6922 else
6923         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
6924         if $test -z "$cryptlib"; then
6925                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
6926         else
6927                 cryptlib=-lcrypt
6928         fi
6929         if $test -z "$cryptlib"; then
6930                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
6931         else
6932                 cryptlib=-lcrypt
6933         fi
6934         if $test -z "$cryptlib"; then
6935                 cryptlib=`./loc libcrypt$_a "" $libpth`
6936         else
6937                 cryptlib=-lcrypt
6938         fi
6939         if $test -z "$cryptlib"; then
6940                 echo 'crypt() NOT found.' >&4
6941                 val="$undef"
6942         else
6943                 val="$define"
6944         fi
6945 fi
6946 set d_crypt
6947 eval $setvar
6948
6949 : get csh whereabouts
6950 case "$csh" in
6951 'csh') val="$undef" ;;
6952 *) val="$define" ;;
6953 esac
6954 set d_csh
6955 eval $setvar
6956 : Respect a hint or command line value for full_csh.
6957 case "$full_csh" in
6958 '') full_csh=$csh ;;
6959 esac
6960
6961 : see if cuserid exists
6962 set cuserid d_cuserid
6963 eval $inlibc
6964
6965 : see if this is a limits.h system
6966 set limits.h i_limits
6967 eval $inhdr
6968
6969 : see if this is a float.h system
6970 set float.h i_float
6971 eval $inhdr
6972
6973 : See if number of significant digits in a double precision number is known
6974 echo " "
6975 $cat >dbl_dig.c <<EOM
6976 #$i_limits I_LIMITS
6977 #$i_float I_FLOAT
6978 #ifdef I_LIMITS
6979 #include <limits.h>
6980 #endif
6981 #ifdef I_FLOAT
6982 #include <float.h>
6983 #endif
6984 #ifdef DBL_DIG
6985 printf("Contains DBL_DIG");
6986 #endif
6987 EOM
6988 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
6989 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
6990         echo "DBL_DIG found." >&4
6991         val="$define"
6992 else
6993         echo "DBL_DIG NOT found." >&4
6994         val="$undef"
6995 fi
6996 $rm -f dbl_dig.?
6997 set d_dbl_dig
6998 eval $setvar
6999
7000
7001 if $test X"$use64bits" = X"$define"; then
7002         : see if dbminit64 exists
7003         set dbminit64 d_dbminit64
7004         eval $inlibc
7005
7006         : see if dbmclose64 exists
7007         set dbmclose64 d_dbmclose64
7008         eval $inlibc
7009
7010         : see if fetch64 exists
7011         set fetch64 d_fetch64
7012         eval $inlibc
7013
7014         : see if store64 exists
7015         set store64 d_store64
7016         eval $inlibc
7017
7018         : see if delete64 exists
7019         set delete64 d_delete64
7020         eval $inlibc
7021
7022         : see if firstkey64 exists
7023         set firstkey64 d_firstkey64
7024         eval $inlibc
7025
7026         : see if nextkey64 exists
7027         set nextkey64 d_nextkey64
7028         eval $inlibc
7029 else
7030         val="$undef"
7031         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7032         do
7033                 set $xxx
7034                 eval $setvar
7035         done
7036 fi
7037
7038 : see if difftime exists
7039 set difftime d_difftime
7040 eval $inlibc
7041
7042 : see if sys/stat.h is available
7043 set sys/stat.h i_sysstat
7044 eval $inhdr
7045
7046 : see if this is a dirent system
7047 echo " "
7048 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7049         val="$define"
7050         echo "<dirent.h> found." >&4
7051 else
7052         val="$undef"
7053         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7054                 echo "<sys/dir.h> found." >&4
7055                 echo " "
7056         else
7057                 xinc=`./findhdr sys/ndir.h`
7058         fi
7059         echo "<dirent.h> NOT found." >&4
7060 fi
7061 set i_dirent
7062 eval $setvar
7063
7064 : Look for type of directory structure.
7065 echo " "
7066 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7067
7068 case "$direntrytype" in
7069 ''|' ')
7070         case "$i_dirent" in
7071         $define) guess1='struct dirent' ;;
7072         *) guess1='struct direct'  ;;
7073         esac
7074         ;;
7075 *)      guess1="$direntrytype"
7076         ;;
7077 esac
7078
7079 case "$guess1" in
7080 'struct dirent') guess2='struct direct' ;;
7081 *) guess2='struct dirent' ;;
7082 esac
7083                 
7084 if $contains "$guess1" try.c >/dev/null 2>&1; then
7085         direntrytype="$guess1"
7086         echo "Your directory entries are $direntrytype." >&4
7087 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7088         direntrytype="$guess2"
7089         echo "Your directory entries seem to be $direntrytype." >&4
7090 else
7091         echo "I don't recognize your system's directory entries." >&4
7092         rp="What type is used for directory entries on this system?"
7093         dflt="$guess1"
7094         . ./myread
7095         direntrytype="$ans"
7096 fi
7097 $rm -f try.c
7098
7099
7100 : see if the directory entry stores field length
7101 echo " "
7102 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7103 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7104         echo "Good, your directory entry keeps length information in d_namlen." >&4
7105         val="$define"
7106 else
7107         echo "Your directory entry does not know about the d_namlen field." >&4
7108         val="$undef"
7109 fi
7110 set d_dirnamlen
7111 eval $setvar
7112 $rm -f try.c
7113
7114
7115 if $test X"$use64bits" = X"$define"; then
7116         : see if fstat64 exists
7117         set fstat64 d_fstat64
7118         eval $inlibc
7119
7120         : see if ftruncate64 exists
7121         set ftruncate64 d_ftruncate64
7122         eval $inlibc
7123
7124         : see if lockf64 exists
7125         set lockf64 d_lockf64
7126         eval $inlibc
7127
7128         : see if lseek64 exists
7129         set lseek64 d_lseek64
7130         eval $inlibc
7131
7132         : see if lstat64 exists
7133         set lstat64 d_lstat64
7134         eval $inlibc
7135
7136         : see if open64 exists
7137         set open64 d_open64
7138         eval $inlibc
7139
7140         : see if opendir64 exists
7141         set opendir64 d_opendir64
7142         eval $inlibc
7143
7144         : see if readdir64 exists
7145         set readdir64 d_readdir64
7146         eval $inlibc
7147
7148         : see if seekdir64 exists
7149         set seekdir64 d_seekdir64
7150         eval $inlibc
7151
7152         : see if stat64 exists
7153         set stat64 d_stat64
7154         eval $inlibc
7155
7156         : see if telldir64 exists
7157         set telldir64 d_telldir64
7158         eval $inlibc
7159
7160         : see if truncate64 exists
7161         set truncate64 d_truncate64
7162         eval $inlibc
7163
7164         : check for off64_t
7165         echo " "
7166         echo $n "Checking to see if your system supports off64_t...$c" >&4
7167         $cat >try.c <<EOCP
7168 #include <sys/types.h>
7169 off64_t foo() { off64_t x; x = 7; return x; }'
7170 EOCP
7171         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7172                 val="$define"
7173                 echo " Yup, it does." >&4
7174         else
7175                 val="$undef"
7176                 echo " Nope, it doesn't." >&4
7177         fi
7178         $rm -f try.*
7179         set d_off64t
7180         eval $setvar
7181
7182         : check for ino64_t
7183         echo " "
7184         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7185         val="$undef"
7186         case "$i_sysstat" in
7187         "$define" )
7188                 $cat >try.c <<EOCP
7189 #include <sys/types.h>
7190 #include <sys/stat.h>
7191 ino64_t foo() { ino64_t x; x = 7; return x; }'
7192 EOCP
7193                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7194                         val="$define"
7195                 fi
7196                 $rm -f try.*
7197                 ;;
7198         esac
7199         if $test "X$val" = X"$define"; then
7200                 echo " Yup, it does." >&4
7201         else
7202                 echo " Nope, it doesn't." >&4
7203         fi
7204         set d_ino64t
7205         eval $setvar
7206
7207         : check for struct flock64
7208         echo " "
7209         echo "Checking to see if your system supports struct flock64..." >&4
7210         if $h_fcntl; then
7211                 set d_flock64_s flock64 l_len define fcntl.h
7212                 eval $hasfield
7213         else
7214                 val="$undef"
7215                 set d_flock64_s
7216                 eval $setvar
7217         fi
7218         case "$d_flock64_s" in
7219         "$define")      echo "Yup, it does." >&4
7220                         ;;
7221         *)              echo "Nope, it doesn't." >&4
7222                         ;;
7223         esac
7224
7225         : check for struct dirent64
7226         echo " "
7227         echo "Checking to see if your system supports struct dirent64..." >&4
7228         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7229         eval $hasfield
7230         case "$d_dirent64_s" in
7231         "$define")      echo "Yup, it does." >&4
7232                         ;;
7233         *)              echo "Nope, it doesn't." >&4
7234                         ;;
7235         esac
7236
7237 else
7238         val="$undef"
7239         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
7240         do
7241                 set $xxx
7242                 eval $setvar
7243         done
7244 fi
7245
7246 : see if dlerror exists
7247 xxx_runnm="$runnm"
7248 runnm=false
7249 set dlerror d_dlerror
7250 eval $inlibc
7251 runnm="$xxx_runnm"
7252
7253 : see if dlfcn is available
7254 set dlfcn.h i_dlfcn
7255 eval $inhdr
7256
7257 case "$usedl" in
7258 $define|y|true)
7259         $cat << EOM
7260
7261 On a few systems, the dynamically loaded modules that perl generates and uses
7262 will need a different extension than shared libs. The default will probably
7263 be appropriate.
7264
7265 EOM
7266         case "$dlext" in
7267         '')     dflt="$so" ;;
7268         *)      dflt="$dlext" ;;
7269         esac
7270         rp='What is the extension of dynamically loaded modules'
7271         . ./myread
7272         dlext="$ans"
7273         ;;
7274 *)
7275         dlext="none"
7276         ;;
7277 esac
7278
7279 : Check if dlsym need a leading underscore
7280 echo " "
7281 val="$undef"
7282
7283 case "$dlsrc" in
7284 dl_dlopen.xs)
7285         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7286         $cat >dyna.c <<'EOM'
7287 fred () { }
7288 EOM
7289
7290 $cat >fred.c<<EOM
7291
7292 #include <stdio.h>
7293 #$i_dlfcn I_DLFCN
7294 #ifdef I_DLFCN
7295 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7296 #else
7297 #include <sys/types.h>
7298 #include <nlist.h>
7299 #include <link.h>
7300 #endif
7301
7302 extern int fred() ;
7303
7304 int main()
7305 {
7306     void * handle ;
7307     void * symbol ;
7308 #ifndef RTLD_LAZY
7309     int mode = 1 ;
7310 #else
7311     int mode = RTLD_LAZY ;
7312 #endif
7313     handle = dlopen("./dyna.$dlext", mode) ;
7314     if (handle == NULL) {
7315         printf ("1\n") ;
7316         fflush (stdout) ;
7317         exit(0);
7318     }
7319     symbol = dlsym(handle, "fred") ;
7320     if (symbol == NULL) {
7321         /* try putting a leading underscore */
7322         symbol = dlsym(handle, "_fred") ;
7323         if (symbol == NULL) {
7324             printf ("2\n") ;
7325             fflush (stdout) ;
7326             exit(0);
7327         }
7328         printf ("3\n") ;
7329     }
7330     else
7331         printf ("4\n") ;
7332     fflush (stdout) ;
7333     exit(0);
7334 }
7335 EOM
7336         : Call the object file tmp-dyna.o in case dlext=o.
7337         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7338                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7339                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7340                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7341                 xxx=`./fred`
7342                 case $xxx in
7343                 1)      echo "Test program failed using dlopen." >&4
7344                         echo "Perhaps you should not use dynamic loading." >&4;;
7345                 2)      echo "Test program failed using dlsym." >&4
7346                         echo "Perhaps you should not use dynamic loading." >&4;;
7347                 3)      echo "dlsym needs a leading underscore" >&4
7348                         val="$define" ;;
7349                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7350                 esac
7351         else
7352                 echo "I can't compile and run the test program." >&4
7353         fi
7354         ;;
7355 esac
7356                 
7357 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7358
7359 set d_dlsymun
7360 eval $setvar
7361
7362 hasproto='varname=$1; func=$2; shift; shift;
7363 while $test $# -ge 2; do
7364         case "$1" in
7365         $define) echo "#include <$2>";;
7366         esac ;
7367     shift 2;
7368 done > try.c;
7369 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7370 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7371         echo "$func() prototype found.";
7372         val="$define";
7373 else
7374         echo "$func() prototype NOT found.";
7375         val="$undef";
7376 fi;
7377 set $varname;
7378 eval $setvar;
7379 $rm -f try.c tryout.c'
7380
7381 : see if prototype for drand48 is available
7382 echo " "
7383 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7384 eval $hasproto
7385
7386 : see if dup2 exists
7387 set dup2 d_dup2
7388 eval $inlibc
7389
7390 : see if eaccess exists
7391 set eaccess d_eaccess
7392 eval $inlibc
7393
7394 : see if endgrent exists
7395 set endgrent d_endgrent
7396 eval $inlibc
7397
7398 : see if endhostent exists
7399 set endhostent d_endhent
7400 eval $inlibc
7401
7402 : see if endnetent exists
7403 set endnetent d_endnent
7404 eval $inlibc
7405
7406 : see if endprotoent exists
7407 set endprotoent d_endpent
7408 eval $inlibc
7409
7410 : see if endpwent exists
7411 set endpwent d_endpwent
7412 eval $inlibc
7413
7414 : see if endservent exists
7415 set endservent d_endsent
7416 eval $inlibc
7417
7418 : Locate the flags for 'open()'
7419 echo " "
7420 $cat >open3.c <<'EOCP'
7421 #include <sys/types.h>
7422 #ifdef I_FCNTL
7423 #include <fcntl.h>
7424 #endif
7425 #ifdef I_SYS_FILE
7426 #include <sys/file.h>
7427 #endif
7428 main() {
7429         if(O_RDONLY);
7430 #ifdef O_TRUNC
7431         exit(0);
7432 #else
7433         exit(1);
7434 #endif
7435 }
7436 EOCP
7437 : check sys/file.h first to get FREAD on Sun
7438 if $test `./findhdr sys/file.h` && \
7439                 set open3 -DI_SYS_FILE && eval $compile; then
7440         h_sysfile=true;
7441         echo "<sys/file.h> defines the O_* constants..." >&4
7442         if ./open3; then
7443                 echo "and you have the 3 argument form of open()." >&4
7444                 val="$define"
7445         else
7446                 echo "but not the 3 argument form of open().  Oh, well." >&4
7447                 val="$undef"
7448         fi
7449 elif $test `./findhdr fcntl.h` && \
7450                 set open3 -DI_FCNTL && eval $compile; then
7451         h_fcntl=true;
7452         echo "<fcntl.h> defines the O_* constants..." >&4
7453         if ./open3; then
7454                 echo "and you have the 3 argument form of open()." >&4
7455                 val="$define"
7456         else
7457                 echo "but not the 3 argument form of open().  Oh, well." >&4
7458                 val="$undef"
7459         fi
7460 else
7461         val="$undef"
7462         echo "I can't find the O_* constant definitions!  You got problems." >&4
7463 fi
7464 set d_open3
7465 eval $setvar
7466 $rm -f open3*
7467
7468 : check for non-blocking I/O stuff
7469 case "$h_sysfile" in
7470 true) echo "#include <sys/file.h>" > head.c;;
7471 *)
7472         case "$h_fcntl" in
7473         true) echo "#include <fcntl.h>" > head.c;;
7474         *) echo "#include <sys/fcntl.h>" > head.c;;
7475         esac
7476         ;;
7477 esac
7478 echo " "
7479 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7480 case "$o_nonblock" in
7481 '')
7482         $cat head.c > try.c
7483         $cat >>try.c <<'EOCP'
7484 main() {
7485 #ifdef O_NONBLOCK
7486         printf("O_NONBLOCK\n");
7487         exit(0);
7488 #endif
7489 #ifdef O_NDELAY
7490         printf("O_NDELAY\n");
7491         exit(0);
7492 #endif
7493 #ifdef FNDELAY
7494         printf("FNDELAY\n");
7495         exit(0);
7496 #endif
7497         exit(0);
7498 }
7499 EOCP
7500         set try
7501         if eval $compile_ok; then
7502                 o_nonblock=`./try`
7503                 case "$o_nonblock" in
7504                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7505                 *) echo "Seems like we can use $o_nonblock.";;
7506                 esac
7507         else
7508                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7509         fi
7510         ;;
7511 *) echo "Using $hint value $o_nonblock.";;
7512 esac
7513 $rm -f try try.* .out core
7514
7515 echo " "
7516 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7517 case "$eagain" in
7518 '')
7519         $cat head.c > try.c
7520         $cat >>try.c <<EOCP
7521 #include <errno.h>
7522 #include <sys/types.h>
7523 #include <signal.h>
7524 #define MY_O_NONBLOCK $o_nonblock
7525 #ifndef errno  /* XXX need better Configure test */
7526 extern int errno;
7527 #endif
7528 $signal_t blech(x) int x; { exit(3); }
7529 EOCP
7530         $cat >> try.c <<'EOCP'
7531 main()
7532 {
7533         int pd[2];
7534         int pu[2];
7535         char buf[1];
7536         char string[100];
7537
7538         pipe(pd);       /* Down: child -> parent */
7539         pipe(pu);       /* Up: parent -> child */
7540         if (0 != fork()) {
7541                 int ret;
7542                 close(pd[1]);   /* Parent reads from pd[0] */
7543                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7544                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7545                         exit(1);
7546                 signal(SIGALRM, blech);
7547                 alarm(5);
7548                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7549                         exit(2);
7550                 sprintf(string, "%d\n", ret);
7551                 write(2, string, strlen(string));
7552                 alarm(0);
7553 #ifdef EAGAIN
7554                 if (errno == EAGAIN) {
7555                         printf("EAGAIN\n");
7556                         goto ok;
7557                 }
7558 #endif
7559 #ifdef EWOULDBLOCK
7560                 if (errno == EWOULDBLOCK)
7561                         printf("EWOULDBLOCK\n");
7562 #endif
7563         ok:
7564                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7565                 sleep(2);                               /* Give it time to close our pipe */
7566                 alarm(5);
7567                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7568                 alarm(0);
7569                 sprintf(string, "%d\n", ret);
7570                 write(3, string, strlen(string));
7571                 exit(0);
7572         }
7573
7574         close(pd[0]);                   /* We write to pd[1] */
7575         close(pu[1]);                   /* We read from pu[0] */
7576         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7577         close(pd[1]);                   /* Pipe pd is now fully closed! */
7578         exit(0);                                /* Bye bye, thank you for playing! */
7579 }
7580 EOCP
7581         set try
7582         if eval $compile_ok; then
7583                 echo "$startsh" >mtry
7584                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7585                 chmod +x mtry
7586                 ./mtry >/dev/null 2>&1
7587                 case $? in
7588                 0) eagain=`$cat try.out`;;
7589                 1) echo "Could not perform non-blocking setting!";;
7590                 2) echo "I did a successful read() for something that was not there!";;
7591                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7592                 *) echo "Something terribly wrong happened during testing.";;
7593                 esac
7594                 rd_nodata=`$cat try.ret`
7595                 echo "A read() system call with no data present returns $rd_nodata."
7596                 case "$rd_nodata" in
7597                 0|-1) ;;
7598                 *)
7599                         echo "(That's peculiar, fixing that to be -1.)"
7600                         rd_nodata=-1
7601                         ;;
7602                 esac
7603                 case "$eagain" in
7604                 '')
7605                         echo "Forcing errno EAGAIN on read() with no data available."
7606                         eagain=EAGAIN
7607                         ;;
7608                 *)
7609                         echo "Your read() sets errno to $eagain when no data is available."
7610                         ;;
7611                 esac
7612                 status=`$cat try.err`
7613                 case "$status" in
7614                 0) echo "And it correctly returns 0 to signal EOF.";;
7615                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7616                 *) echo "However, your read() returns '$status' on EOF??";;
7617                 esac
7618                 val="$define"
7619                 if test "$status" = "$rd_nodata"; then
7620                         echo "WARNING: you can't distinguish between EOF and no data!"
7621                         val="$undef"
7622                 fi
7623         else
7624                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7625                 eagain=EAGAIN
7626         fi
7627         set d_eofnblk
7628         eval $setvar
7629         ;;
7630 *)
7631         echo "Using $hint value $eagain."
7632         echo "Your read() returns $rd_nodata when no data is present."
7633         case "$d_eofnblk" in
7634         "$define") echo "And you can see EOF because read() returns 0.";;
7635         "$undef") echo "But you can't see EOF status from read() returned value.";;
7636         *)
7637                 echo "(Assuming you can't see EOF status from read anyway.)"
7638                 d_eofnblk=$undef
7639                 ;;
7640         esac
7641         ;;
7642 esac
7643 $rm -f try try.* .out core head.c mtry
7644
7645 : see if fchmod exists
7646 set fchmod d_fchmod
7647 eval $inlibc
7648
7649 : see if fchown exists
7650 set fchown d_fchown
7651 eval $inlibc
7652
7653 : see if this is an fcntl system
7654 set fcntl d_fcntl
7655 eval $inlibc
7656
7657 : see if sys/select.h has to be included
7658 set sys/select.h i_sysselct
7659 eval $inhdr
7660
7661 : see if we should include time.h, sys/time.h, or both
7662 echo " "
7663 if test "X$timeincl" = X; then
7664         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7665         $echo $n "I'm now running the test program...$c"
7666         $cat >try.c <<'EOCP'
7667 #include <sys/types.h>
7668 #ifdef I_TIME
7669 #include <time.h>
7670 #endif
7671 #ifdef I_SYSTIME
7672 #ifdef SYSTIMEKERNEL
7673 #define KERNEL
7674 #endif
7675 #include <sys/time.h>
7676 #endif
7677 #ifdef I_SYSSELECT
7678 #include <sys/select.h>
7679 #endif
7680 main()
7681 {
7682         struct tm foo;
7683 #ifdef S_TIMEVAL
7684         struct timeval bar;
7685 #endif
7686 #ifdef S_TIMEZONE
7687         struct timezone tzp;
7688 #endif
7689         if (foo.tm_sec == foo.tm_sec)
7690                 exit(0);
7691 #ifdef S_TIMEVAL
7692         if (bar.tv_sec == bar.tv_sec)
7693                 exit(0);
7694 #endif
7695         exit(1);
7696 }
7697 EOCP
7698         flags=''
7699         for s_timezone in '-DS_TIMEZONE' ''; do
7700         sysselect=''
7701         for s_timeval in '-DS_TIMEVAL' ''; do
7702         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7703         for i_time in '' '-DI_TIME'; do
7704         for i_systime in '-DI_SYSTIME' ''; do
7705                 case "$flags" in
7706                 '') $echo $n ".$c"
7707                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7708                         if eval $compile; then
7709                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7710                                 shift
7711                                 flags="$*"
7712                                 echo " "
7713                                 $echo $n "Succeeded with $flags$c"
7714                         fi
7715                         ;;
7716                 esac
7717         done
7718         done
7719         done
7720         done
7721         done
7722         timeincl=''
7723         echo " "
7724         case "$flags" in
7725         *SYSTIMEKERNEL*) i_systimek="$define"
7726                 timeincl=`./findhdr sys/time.h`
7727                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7728         *) i_systimek="$undef";;
7729         esac
7730         case "$flags" in
7731         *I_TIME*) i_time="$define"
7732                 timeincl=`./findhdr time.h`" $timeincl"
7733                 echo "We'll include <time.h>." >&4;;
7734         *) i_time="$undef";;
7735         esac
7736         case "$flags" in
7737         *I_SYSTIME*) i_systime="$define"
7738                 timeincl=`./findhdr sys/time.h`" $timeincl"
7739                 echo "We'll include <sys/time.h>." >&4;;
7740         *) i_systime="$undef";;
7741         esac
7742         $rm -f try.c try
7743 fi
7744
7745 : check for fd_set items
7746 $cat <<EOM
7747
7748 Checking to see how well your C compiler handles fd_set and friends ...
7749 EOM
7750 $cat >fd_set.c <<EOCP
7751 #$i_systime I_SYS_TIME
7752 #$i_sysselct I_SYS_SELECT
7753 #$d_socket HAS_SOCKET
7754 #include <sys/types.h>
7755 #ifdef HAS_SOCKET
7756 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7757 #endif
7758 #ifdef I_SYS_TIME
7759 #include <sys/time.h>
7760 #endif
7761 #ifdef I_SYS_SELECT
7762 #include <sys/select.h>
7763 #endif
7764 main() {
7765         fd_set fds;
7766
7767 #ifdef TRYBITS
7768         if(fds.fds_bits);
7769 #endif
7770
7771 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7772         exit(0);
7773 #else
7774         exit(1);
7775 #endif
7776 }
7777 EOCP
7778 set fd_set -DTRYBITS
7779 if eval $compile; then
7780         d_fds_bits="$define"
7781         d_fd_set="$define"
7782         echo "Well, your system knows about the normal fd_set typedef..." >&4
7783         if ./fd_set; then
7784                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7785                 d_fd_macros="$define"
7786         else
7787                 $cat >&4 <<'EOM'
7788 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7789 EOM
7790                 d_fd_macros="$undef"
7791         fi
7792 else
7793         $cat <<'EOM'
7794 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7795 EOM
7796         set fd_set
7797         if eval $compile; then
7798                 d_fds_bits="$undef"
7799                 d_fd_set="$define"
7800                 echo "Well, your system has some sort of fd_set available..." >&4
7801                 if ./fd_set; then
7802                         echo "and you have the normal fd_set macros." >&4
7803                         d_fd_macros="$define"
7804                 else
7805                         $cat <<'EOM'
7806 but not the normal fd_set macros!  Gross!  More work for me...
7807 EOM
7808                         d_fd_macros="$undef"
7809                 fi
7810         else
7811         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7812                 d_fd_set="$undef"
7813                 d_fds_bits="$undef"
7814                 d_fd_macros="$undef"
7815         fi
7816 fi
7817 $rm -f fd_set*
7818
7819 : see if fgetpos exists
7820 set fgetpos d_fgetpos
7821 eval $inlibc
7822
7823
7824 if $test X"$use64bits" = X"$define"; then
7825         : see if fgetpos64 exists
7826         set fgetpos64 d_fgetpos64
7827         eval $inlibc
7828
7829         : see if fopen64 exists
7830         set freopen64 d_fopen64
7831         eval $inlibc
7832
7833         : see if freopen64 exists
7834         set freopen64 d_freopen64
7835         eval $inlibc
7836
7837         : see if fseek64 exists
7838         set fseek64 d_fseek64
7839         eval $inlibc
7840
7841         : see if fseeko64 exists
7842         set fseeko64 d_fseeko64
7843         eval $inlibc
7844
7845         : see if fsetpos64 exists
7846         set fsetpos64 d_fsetpos64
7847         eval $inlibc
7848
7849         : see if ftell64 exists
7850         set ftell64 d_ftell64
7851         eval $inlibc
7852
7853         : see if ftello64 exists
7854         set ftello64 d_ftello64
7855         eval $inlibc
7856
7857         : see if tmpfile64 exists
7858         set tmpfile64 d_tmpfile64
7859         eval $inlibc
7860 else
7861         val="$undef"
7862         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7863         do
7864                 set $xxx
7865                 eval $setvar
7866         done
7867 fi
7868
7869 : see if flock exists
7870 set flock d_flock
7871 eval $inlibc
7872
7873 : see if fork exists
7874 set fork d_fork
7875 eval $inlibc
7876
7877 : see if pathconf exists
7878 set pathconf d_pathconf
7879 eval $inlibc
7880
7881 : see if fpathconf exists
7882 set fpathconf d_fpathconf
7883 eval $inlibc
7884
7885 : see if fseeko exists
7886 set fseeko d_fseeko
7887 eval $inlibc
7888
7889 : see if fsetpos exists
7890 set fsetpos d_fsetpos
7891 eval $inlibc
7892
7893 : see if ftello exists
7894 set ftello d_ftello
7895 eval $inlibc
7896
7897 : see if getgrent exists
7898 set getgrent d_getgrent
7899 eval $inlibc
7900
7901 : see if gethostbyaddr exists
7902 set gethostbyaddr d_gethbyaddr
7903 eval $inlibc
7904
7905 : see if gethostbyname exists
7906 set gethostbyname d_gethbyname
7907 eval $inlibc
7908
7909 : see if gethostent exists
7910 set gethostent d_gethent
7911 eval $inlibc
7912
7913 : see how we will look up host name
7914 echo " "
7915 if false; then
7916         : dummy stub to allow use of elif
7917 elif set gethostname val -f d_gethname; eval $csym; $val; then
7918         echo 'gethostname() found.' >&4
7919         d_gethname="$define"
7920         call=gethostname
7921 elif set uname val -f d_uname; eval $csym; $val; then
7922         if ./xenix; then
7923                 $cat <<'EOM'
7924 uname() was found, but you're running xenix, and older versions of xenix
7925 have a broken uname(). If you don't really know whether your xenix is old
7926 enough to have a broken system call, use the default answer.
7927
7928 EOM
7929                 dflt=y
7930                 case "$d_uname" in
7931                 "$define") dflt=n;;
7932                 esac
7933                 rp='Is your uname() broken?'
7934                 . ./myread
7935                 case "$ans" in
7936                 n*) d_uname="$define"; call=uname;;
7937                 esac
7938         else
7939                 echo 'uname() found.' >&4
7940                 d_uname="$define"
7941                 call=uname
7942         fi
7943 fi
7944 case "$d_gethname" in
7945 '') d_gethname="$undef";;
7946 esac
7947 case "$d_uname" in
7948 '') d_uname="$undef";;
7949 esac
7950 case "$d_uname$d_gethname" in
7951 *define*)
7952         dflt=n
7953         cat <<EOM
7954  
7955 Every now and then someone has a $call() that lies about the hostname
7956 but can't be fixed for political or economic reasons.  If you wish, I can
7957 pretend $call() isn't there and maybe compute hostname at run-time
7958 thanks to the '$phostname' command.
7959
7960 EOM
7961         rp="Shall I ignore $call() from now on?"
7962         . ./myread
7963         case "$ans" in
7964         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
7965         esac;;
7966 esac
7967 case "$phostname" in
7968 '') aphostname='';;
7969 *) case "$aphostname" in
7970         /*) ;;
7971         *) set X $phostname
7972                 shift
7973                 file=$1
7974                 shift
7975                 file=`./loc $file $file $pth`
7976                 aphostname=`echo $file $*`
7977                 ;;
7978         esac
7979         ;;
7980 esac
7981 case "$d_uname$d_gethname" in
7982 *define*) ;;
7983 *)
7984         case "$phostname" in
7985         '')
7986                 echo "There will be no way for $package to get your hostname." >&4;;
7987         *)
7988         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
7989                 ;;
7990         esac;;
7991 esac
7992 case "$d_phostname" in
7993 '') d_phostname="$undef";;
7994 esac
7995
7996 : see if this is a netdb.h system
7997 set netdb.h i_netdb
7998 eval $inhdr
7999
8000 : see if prototypes for various gethostxxx netdb.h functions are available
8001 echo " "
8002 set d_gethostprotos gethostent $i_netdb netdb.h
8003 eval $hasproto
8004
8005 : see if getlogin exists
8006 set getlogin d_getlogin
8007 eval $inlibc
8008
8009 : see if getnetbyaddr exists
8010 set getnetbyaddr d_getnbyaddr
8011 eval $inlibc
8012
8013 : see if getnetbyname exists
8014 set getnetbyname d_getnbyname
8015 eval $inlibc
8016
8017 : see if getnetent exists
8018 set getnetent d_getnent
8019 eval $inlibc
8020
8021 : see if prototypes for various getnetxxx netdb.h functions are available
8022 echo " "
8023 set d_getnetprotos getnetent $i_netdb netdb.h
8024 eval $hasproto
8025
8026
8027 : see if getprotobyname exists
8028 set getprotobyname d_getpbyname
8029 eval $inlibc
8030
8031 : see if getprotobynumber exists
8032 set getprotobynumber d_getpbynumber
8033 eval $inlibc
8034
8035 : see if getprotoent exists
8036 set getprotoent d_getpent
8037 eval $inlibc
8038
8039 : see if getpgid exists
8040 set getpgid d_getpgid
8041 eval $inlibc
8042
8043 : see if getpgrp2 exists
8044 set getpgrp2 d_getpgrp2
8045 eval $inlibc
8046
8047 : see if getppid exists
8048 set getppid d_getppid
8049 eval $inlibc
8050
8051 : see if getpriority exists
8052 set getpriority d_getprior
8053 eval $inlibc
8054
8055 : see if prototypes for various getprotoxxx netdb.h functions are available
8056 echo " "
8057 set d_getprotoprotos getprotoent $i_netdb netdb.h
8058 eval $hasproto
8059
8060 : see if getpwent exists
8061 set getpwent d_getpwent
8062 eval $inlibc
8063
8064
8065 : see if getservbyname exists
8066 set getservbyname d_getsbyname
8067 eval $inlibc
8068
8069 : see if getservbyport exists
8070 set getservbyport d_getsbyport
8071 eval $inlibc
8072
8073 : see if getservent exists
8074 set getservent d_getsent
8075 eval $inlibc
8076
8077 : see if prototypes for various getservxxx netdb.h functions are available
8078 echo " "
8079 set d_getservprotos getservent $i_netdb netdb.h
8080 eval $hasproto
8081
8082 : see if gettimeofday or ftime exists
8083 set gettimeofday d_gettimeod
8084 eval $inlibc
8085 case "$d_gettimeod" in
8086 "$undef")
8087         set ftime d_ftime 
8088         eval $inlibc
8089         ;;
8090 *)
8091         val="$undef"; set d_ftime; eval $setvar
8092         ;;
8093 esac
8094 case "$d_gettimeod$d_ftime" in
8095 "$undef$undef")
8096         echo " "
8097         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8098         ;;
8099 esac
8100
8101 : see if this is an grp system
8102 set grp.h i_grp
8103 eval $inhdr
8104
8105 case "$i_grp" in
8106 $define)
8107         xxx=`./findhdr grp.h`
8108         $cppstdin $cppflags $cppminus < $xxx >$$.h
8109
8110         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8111                 val="$define"
8112         else
8113                 val="$undef"
8114         fi
8115         set d_grpasswd
8116         eval $setvar
8117
8118         $rm -f $$.h
8119         ;;
8120 *)
8121         val="$undef";
8122         set d_grpasswd; eval $setvar
8123         ;;
8124 esac
8125
8126 : see if this is a netinet/in.h or sys/in.h system
8127 set netinet/in.h i_niin sys/in.h i_sysin
8128 eval $inhdr
8129
8130 : see if arpa/inet.h has to be included
8131 set arpa/inet.h i_arpainet
8132 eval $inhdr
8133
8134 : see if htonl --and friends-- exists
8135 val=''
8136 set htonl val
8137 eval $inlibc
8138
8139 : Maybe they are macros.
8140 case "$val" in
8141 $undef)
8142         $cat >htonl.c <<EOM
8143 #include <stdio.h>
8144 #include <sys/types.h>
8145 #$i_niin I_NETINET_IN
8146 #$i_sysin I_SYS_IN
8147 #$i_arpainet I_ARPA_INET
8148 #ifdef I_NETINET_IN
8149 #include <netinet/in.h>
8150 #endif
8151 #ifdef I_SYS_IN
8152 #include <sys/in.h>
8153 #endif
8154 #ifdef I_ARPA_INET
8155 #include <arpa/inet.h>
8156 #endif
8157 #ifdef htonl
8158 printf("Defined as a macro.");
8159 #endif
8160 EOM
8161         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8162         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8163                 val="$define"
8164                 echo "But it seems to be defined as a macro." >&4
8165         fi
8166         $rm -f htonl.?
8167         ;;
8168 esac
8169 set d_htonl
8170 eval $setvar
8171
8172 : see which of string.h or strings.h is needed
8173 echo " "
8174 strings=`./findhdr string.h`
8175 if $test "$strings" && $test -r "$strings"; then
8176         echo "Using <string.h> instead of <strings.h>." >&4
8177         val="$define"
8178 else
8179         val="$undef"
8180         strings=`./findhdr strings.h`
8181         if $test "$strings" && $test -r "$strings"; then
8182                 echo "Using <strings.h> instead of <string.h>." >&4
8183         else
8184                 echo "No string header found -- You'll surely have problems." >&4
8185         fi
8186 fi
8187 set i_string
8188 eval $setvar
8189 case "$i_string" in
8190 "$undef") strings=`./findhdr strings.h`;;
8191 *)        strings=`./findhdr string.h`;;
8192 esac
8193
8194 : index or strchr
8195 echo " "
8196 if set index val -f; eval $csym; $val; then
8197         if set strchr val -f d_strchr; eval $csym; $val; then
8198                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8199                         val="$define"
8200                         vali="$undef"
8201                         echo "strchr() found." >&4
8202                 else
8203                         val="$undef"
8204                         vali="$define"
8205                         echo "index() found." >&4
8206                 fi
8207         else
8208                 val="$undef"
8209                 vali="$define"
8210                 echo "index() found." >&4
8211         fi
8212 else
8213         if set strchr val -f d_strchr; eval $csym; $val; then
8214                 val="$define"
8215                 vali="$undef"
8216                 echo "strchr() found." >&4
8217         else
8218                 echo "No index() or strchr() found!" >&4
8219                 val="$undef"
8220                 vali="$undef"
8221         fi
8222 fi
8223 set d_strchr; eval $setvar
8224 val="$vali"
8225 set d_index; eval $setvar
8226
8227 : check whether inet_aton exists
8228 set inet_aton d_inetaton
8229 eval $inlibc
8230
8231 : see if inttypes.h is available
8232 : we want a real compile instead of Inhdr because some systems
8233 : have an inttypes.h which includes non-existent headers
8234 echo " "
8235 $cat >try.c <<EOCP
8236 #include <inttypes.h>
8237 int main() {
8238         static int32_t foo32 = 0x12345678;
8239 }
8240 EOCP
8241 set try
8242 if eval $compile; then
8243         echo "<inttypes.h> found." >&4
8244         val="$define"
8245 else
8246         echo "<inttypes.h> NOT found." >&4
8247         val="$undef"
8248 fi
8249 $rm -f try.c try
8250 set i_inttypes
8251 eval $setvar
8252
8253 : check for int64_t
8254 case "$use64bits" in
8255 "$define" )
8256         echo " "
8257         echo $n "Checking to see if your system supports int64_t...$c" >&4
8258         $cat >try.c <<EOCP
8259 #include <sys/types.h>
8260 #$i_inttypes I_INTTYPES
8261 #ifdef I_INTTYPES
8262 #include <inttypes.h>
8263 #endif
8264 int64_t foo() { int64_t x; x = 7; return x; }
8265 EOCP
8266         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8267                 val="$define"
8268                 echo " Yup, it does." >&4
8269         else
8270                 val="$undef"
8271                 echo " Nope, it doesn't." >&4
8272         fi
8273         $rm -f try.*
8274         ;;
8275 *)      val="$undef"
8276         ;;
8277 esac
8278 set d_int64t
8279 eval $setvar
8280
8281
8282 : Look for isascii
8283 echo " "
8284 $cat >isascii.c <<'EOCP'
8285 #include <stdio.h>
8286 #include <ctype.h>
8287 main() {
8288         int c = 'A';
8289         if (isascii(c))
8290                 exit(0);
8291         else
8292                 exit(1);
8293 }
8294 EOCP
8295 set isascii
8296 if eval $compile; then
8297         echo "isascii() found." >&4
8298         val="$define"
8299 else
8300         echo "isascii() NOT found." >&4
8301         val="$undef"
8302 fi
8303 set d_isascii
8304 eval $setvar
8305 $rm -f isascii*
8306
8307 : see if killpg exists
8308 set killpg d_killpg
8309 eval $inlibc
8310
8311 : see if lchown exists
8312 echo " "
8313 $cat > try.c <<'EOCP'
8314 /* System header to define __stub macros and hopefully few prototypes,
8315     which can conflict with char lchown(); below.  */
8316 #include <assert.h>
8317 /* Override any gcc2 internal prototype to avoid an error.  */
8318 /* We use char because int might match the return type of a gcc2
8319    builtin and then its argument prototype would still apply.  */
8320 char lchown();
8321 int main() {
8322     /*  The GNU C library defines this for functions which it implements
8323         to always fail with ENOSYS.  Some functions are actually named
8324         something starting with __ and the normal name is an alias.  */
8325 #if defined (__stub_lchown) || defined (__stub___lchown)
8326 choke me
8327 #else
8328 lchown();
8329 #endif
8330 ; return 0; }
8331 EOCP
8332 set try
8333 if eval $compile; then
8334     $echo "lchown() found." >&4
8335     val="$define"
8336 else
8337     $echo "lchown() NOT found." >&4
8338     val="$undef"
8339 fi
8340 set d_lchown
8341 eval $setvar
8342
8343 : see if link exists
8344 set link d_link
8345 eval $inlibc
8346
8347 : see if localeconv exists
8348 set localeconv d_locconv
8349 eval $inlibc
8350
8351 : see if lockf exists
8352 set lockf d_lockf
8353 eval $inlibc
8354
8355 : check for length of double
8356 echo " "
8357 case "$doublesize" in
8358 '')
8359         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8360         $cat >try.c <<'EOCP'
8361 #include <stdio.h>
8362 main()
8363 {
8364         printf("%d\n", sizeof(double));
8365 }
8366 EOCP
8367         set try
8368         if eval $compile_ok; then
8369                 doublesize=`./try`
8370                 $echo " $doublesize bytes." >&4
8371         else
8372                 dflt='8'
8373                 echo "(I can't seem to compile the test program.  Guessing...)"
8374                 rp="What is the size of a double precision number (in bytes)?"
8375                 . ./myread
8376                 doublesize="$ans"
8377         fi
8378         ;;
8379 esac
8380 $rm -f try.c try
8381
8382 : check for long doubles
8383 echo " "
8384 echo $n "Checking to see if your system supports long doubles...$c" >&4
8385 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8386 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8387         val="$define"
8388         echo " Yup, it does." >&4
8389 else
8390         val="$undef"
8391         echo " Nope, it doesn't." >&4
8392 fi
8393 $rm try.*
8394 set d_longdbl
8395 eval $setvar
8396
8397 : check for length of long double
8398 case "${d_longdbl}${longdblsize}" in
8399 $define)
8400         echo " "
8401         $echo $n "Checking to see how big your long doubles are...$c" >&4
8402         $cat >try.c <<'EOCP'
8403 #include <stdio.h>
8404 int main()
8405 {
8406         printf("%d\n", sizeof(long double));
8407 }
8408 EOCP
8409         set try
8410         if eval $compile; then
8411                 longdblsize=`./try`
8412                 $echo " $longdblsize bytes." >&4
8413         else
8414                 dflt='8'
8415                 echo " "
8416                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8417                 rp="What is the size of a long double (in bytes)?"
8418                 . ./myread
8419                 longdblsize="$ans"
8420         fi
8421         if $test "X$doublesize" = "X$longdblsize"; then
8422                 echo "(That isn't any different from an ordinary double.)"
8423         fi      
8424         ;;
8425 esac
8426 $rm -f try.c try
8427
8428 : check for long long
8429 echo " "
8430 echo $n "Checking to see if your system supports long long...$c" >&4
8431 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8432 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8433         val="$define"
8434         echo " Yup, it does." >&4
8435 else
8436         val="$undef"
8437         echo " Nope, it doesn't." >&4
8438 fi
8439 $rm try.*
8440 set d_longlong
8441 eval $setvar
8442
8443 : check for length of long long
8444 case "${d_longlong}${longlongsize}" in
8445 $define)
8446         echo " "
8447         $echo $n "Checking to see how big your long longs are...$c" >&4
8448         $cat >try.c <<'EOCP'
8449 #include <stdio.h>
8450 int main()
8451 {
8452         printf("%d\n", sizeof(long long));
8453 }
8454 EOCP
8455         set try
8456         if eval $compile_ok; then
8457                 longlongsize=`./try`
8458                 $echo " $longlongsize bytes." >&4
8459         else
8460                 dflt='8'
8461                 echo " "
8462                 echo "(I can't seem to compile the test program.  Guessing...)"
8463                 rp="What is the size of a long long (in bytes)?"
8464                 . ./myread
8465                 longlongsize="$ans"
8466         fi
8467         if $test "X$longsize" = "X$longlongsize"; then
8468                 echo "(That isn't any different from an ordinary long.)"
8469         fi      
8470         ;;
8471 esac
8472 $rm -f try.c try
8473
8474 : see if lstat exists
8475 set lstat d_lstat
8476 eval $inlibc
8477
8478 : see if mblen exists
8479 set mblen d_mblen
8480 eval $inlibc
8481
8482 : see if mbstowcs exists
8483 set mbstowcs d_mbstowcs
8484 eval $inlibc
8485
8486 : see if mbtowc exists
8487 set mbtowc d_mbtowc
8488 eval $inlibc
8489
8490 : see if memcmp exists
8491 set memcmp d_memcmp
8492 eval $inlibc
8493
8494 : see if memcpy exists
8495 set memcpy d_memcpy
8496 eval $inlibc
8497
8498 : see if memmove exists
8499 set memmove d_memmove
8500 eval $inlibc
8501
8502 : see if memset exists
8503 set memset d_memset
8504 eval $inlibc
8505
8506 : see if mkdir exists
8507 set mkdir d_mkdir
8508 eval $inlibc
8509
8510 : see if mkfifo exists
8511 set mkfifo d_mkfifo
8512 eval $inlibc
8513
8514 : see if mktime exists
8515 set mktime d_mktime
8516 eval $inlibc
8517
8518 : see if msgctl exists
8519 set msgctl d_msgctl
8520 eval $inlibc
8521
8522 : see if msgget exists
8523 set msgget d_msgget
8524 eval $inlibc
8525
8526 : see if msgsnd exists
8527 set msgsnd d_msgsnd
8528 eval $inlibc
8529
8530 : see if msgrcv exists
8531 set msgrcv d_msgrcv
8532 eval $inlibc
8533
8534 : see how much of the 'msg*(2)' library is present.
8535 h_msg=true
8536 echo " "
8537 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8538 *"$undef"*) h_msg=false;;
8539 esac
8540 case "$osname" in
8541 freebsd)
8542     case "`ipcs 2>&1`" in
8543     "SVID messages"*"not configured"*)
8544         echo "Your $osname does not have the msg*(2) configured." >&4
8545         h_msg=false
8546         val="$undef"
8547         set msgctl d_msgctl
8548         eval $setvar
8549         set msgget d_msgget
8550         eval $setvar
8551         set msgsnd d_msgsnd
8552         eval $setvar
8553         set msgrcv d_msgrcv
8554         eval $setvar
8555         ;;
8556     esac
8557     ;;
8558 esac
8559 : we could also check for sys/ipc.h ...
8560 if $h_msg && $test `./findhdr sys/msg.h`; then
8561         echo "You have the full msg*(2) library." >&4
8562         val="$define"
8563 else
8564         echo "You don't have the full msg*(2) library." >&4
8565         val="$undef"
8566 fi
8567 set d_msg
8568 eval $setvar
8569
8570 : see if nice exists
8571 set nice d_nice
8572 eval $inlibc
8573
8574 : how to create joinable pthreads
8575 if test "X$usethreads" = "X$define"; then
8576         echo " "
8577         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8578         $cat >try.c <<'EOCP'
8579 #include <pthread.h>
8580 int main() {
8581     int detachstate = JOINABLE;
8582 }
8583 EOCP
8584         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8585         if eval $compile; then
8586                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8587                 val="$undef" # Yes, undef.
8588                 set d_old_pthread_create_joinable
8589                 eval $setvar
8590                 val=""
8591                 set old_pthread_create_joinable
8592                 eval $setvar
8593         else
8594                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8595                 if eval $compile; then
8596                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8597                         val="$define"
8598                         set d_old_pthread_create_joinable
8599                         eval $setvar
8600                         val=PTHREAD_CREATE_UNDETACHED
8601                         set old_pthread_create_joinable
8602                         eval $setvar
8603                 else            
8604                         set try -DJOINABLE=__UNDETACHED
8605                         if eval $compile; then
8606                                 echo "You seem to use __UNDETACHED." >&2
8607                                 val="$define"
8608                                 set d_old_pthread_create_joinable
8609                                 eval $setvar
8610                                 val=__UNDETACHED
8611                                 set old_pthread_create_joinable
8612                                 eval $setvar
8613                         else
8614                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8615                                 val="$define"
8616                                 set d_old_pthread_create_joinable
8617                                 eval $setvar
8618                                 val=0
8619                                 set old_pthread_create_joinable
8620                                 eval $setvar
8621                         fi
8622                 fi
8623         fi
8624         $rm -f try try.*
8625 else
8626     d_old_pthread_create_joinable="$undef"
8627     old_pthread_create_joinable=""
8628 fi
8629
8630 : see if pause exists
8631 set pause d_pause
8632 eval $inlibc
8633
8634 : see if pipe exists
8635 set pipe d_pipe
8636 eval $inlibc
8637
8638 : see if poll exists
8639 set poll d_poll
8640 eval $inlibc
8641
8642
8643 : see whether the various POSIXish _yields exist
8644 $cat >try.c <<EOP
8645 #include <pthread.h>
8646 #include <stdio.h>
8647 int main() {
8648 #ifdef SCHED_YIELD
8649         sched_yield();
8650 #else
8651 #ifdef PTHREAD_YIELD
8652         pthread_yield();
8653 #else
8654 #ifdef PTHREAD_YIELD_NULL
8655         pthread_yield(NULL);
8656 #endif
8657 #endif
8658 #endif
8659 }
8660 EOP
8661 : see if sched_yield exists
8662 set try -DSCHED_YIELD
8663 if eval $compile; then
8664     val="$define"
8665     sched_yield='sched_yield()'
8666 else
8667     val="$undef"
8668 fi
8669 case "$usethreads" in
8670 $define)
8671         case "$val" in
8672         $define) echo 'sched_yield() found.' >&4        ;;
8673         *)       echo 'sched_yield() NOT found.' >&4    ;;
8674         esac
8675 esac
8676 set d_sched_yield
8677 eval $setvar
8678
8679 : see if pthread_yield exists
8680 set try -DPTHREAD_YIELD
8681 if eval $compile; then
8682     val="$define"
8683     case "$sched_yield" in
8684     '') sched_yield='pthread_yield()' ;;
8685     esac
8686 else
8687     set try -DPTHREAD_YIELD_NULL
8688     if eval $compile; then
8689         val="$define"
8690         case "$sched_yield" in
8691         '') sched_yield='pthread_yield(NULL)' ;;
8692         esac
8693     else
8694         val="$undef"
8695     fi
8696 fi
8697 case "$usethreads" in
8698 $define)
8699         case "$val" in
8700         $define) echo 'pthread_yield() found.' >&4      ;;
8701         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8702         esac
8703         ;;
8704 esac
8705 set d_pthread_yield
8706 eval $setvar
8707
8708 case "$sched_yield" in
8709 '') sched_yield=undef ;;
8710 esac
8711
8712 $rm -f try try.*
8713
8714 : see if this is a pwd.h system
8715 set pwd.h i_pwd
8716 eval $inhdr
8717
8718 case "$i_pwd" in
8719 $define)
8720         xxx=`./findhdr pwd.h`
8721         $cppstdin $cppflags $cppminus < $xxx >$$.h
8722
8723         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8724                 val="$define"
8725         else
8726                 val="$undef"
8727         fi
8728         set d_pwquota
8729         eval $setvar
8730
8731         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8732                 val="$define"
8733         else
8734                 val="$undef"
8735         fi
8736         set d_pwage
8737         eval $setvar
8738
8739         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8740                 val="$define"
8741         else
8742                 val="$undef"
8743         fi
8744         set d_pwchange
8745         eval $setvar
8746
8747         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8748                 val="$define"
8749         else
8750                 val="$undef"
8751         fi
8752         set d_pwclass
8753         eval $setvar
8754
8755         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8756                 val="$define"
8757         else
8758                 val="$undef"
8759         fi
8760         set d_pwexpire
8761         eval $setvar
8762
8763         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8764                 val="$define"
8765         else
8766                 val="$undef"
8767         fi
8768         set d_pwcomment
8769         eval $setvar
8770
8771         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8772                 val="$define"
8773         else
8774                 val="$undef"
8775         fi
8776         set d_pwgecos
8777         eval $setvar
8778
8779         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8780                 val="$define"
8781         else
8782                 val="$undef"
8783         fi
8784         set d_pwpasswd
8785         eval $setvar
8786
8787         $rm -f $$.h
8788         ;;
8789 *)
8790         val="$undef"; 
8791         set d_pwquota; eval $setvar
8792         set d_pwage; eval $setvar
8793         set d_pwchange; eval $setvar
8794         set d_pwclass; eval $setvar
8795         set d_pwexpire; eval $setvar
8796         set d_pwcomment; eval $setvar
8797         set d_pwgecos; eval $setvar
8798         set d_pwpasswd; eval $setvar
8799         ;;
8800 esac
8801
8802 : see if readdir and friends exist
8803 set readdir d_readdir
8804 eval $inlibc
8805 set seekdir d_seekdir
8806 eval $inlibc
8807 set telldir d_telldir
8808 eval $inlibc
8809 set rewinddir d_rewinddir
8810 eval $inlibc
8811
8812 : see if readlink exists
8813 set readlink d_readlink
8814 eval $inlibc
8815
8816 : see if readv exists
8817 set readv d_readv
8818 eval $inlibc
8819
8820 : see if rename exists
8821 set rename d_rename
8822 eval $inlibc
8823
8824 : see if rmdir exists
8825 set rmdir d_rmdir
8826 eval $inlibc
8827
8828 : see if memory.h is available.
8829 val=''
8830 set memory.h val
8831 eval $inhdr
8832
8833 : See if it conflicts with string.h
8834 case "$val" in
8835 $define)
8836         case "$strings" in
8837         '') ;;
8838         *)
8839                 $cppstdin $cppflags $cppminus < $strings > mem.h
8840                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8841                         echo " "
8842                         echo "We won't be including <memory.h>."
8843                         val="$undef"
8844                 fi
8845                 $rm -f mem.h
8846                 ;;
8847         esac
8848 esac
8849 set i_memory
8850 eval $setvar
8851
8852 : can bcopy handle overlapping blocks?
8853 val="$undef"
8854 case "$d_bcopy" in
8855 "$define")
8856         echo " "
8857         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8858         $cat >try.c <<EOCP
8859 #$i_memory I_MEMORY
8860 #$i_stdlib I_STDLIB
8861 #$i_string I_STRING
8862 #$i_unistd I_UNISTD
8863 EOCP
8864         $cat >>try.c <<'EOCP'
8865 #include <stdio.h>
8866 #ifdef I_MEMORY
8867 #  include <memory.h>
8868 #endif
8869 #ifdef I_STDLIB
8870 #  include <stdlib.h>
8871 #endif
8872 #ifdef I_STRING
8873 #  include <string.h>
8874 #else
8875 #  include <strings.h>
8876 #endif
8877 #ifdef I_UNISTD
8878 #  include <unistd.h>  /* Needed for NetBSD */
8879 #endif
8880 main()
8881 {
8882 char buf[128], abc[128];
8883 char *b;
8884 int len;
8885 int off;
8886 int align;
8887
8888 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
8889
8890 for (align = 7; align >= 0; align--) {
8891         for (len = 36; len; len--) {
8892                 b = buf+align;
8893                 bcopy(abc, b, len);
8894                 for (off = 1; off <= len; off++) {
8895                         bcopy(b, b+off, len);
8896                         bcopy(b+off, b, len);
8897                         if (bcmp(b, abc, len))
8898                                 exit(1);
8899                 }
8900         }
8901 }
8902 exit(0);
8903 }
8904 EOCP
8905         set try
8906         if eval $compile_ok; then
8907                 if ./try 2>/dev/null; then
8908                         echo "Yes, it can."
8909                         val="$define"
8910                 else
8911                         echo "It can't, sorry."
8912                         case "$d_memmove" in
8913                         "$define") echo "But that's Ok since you have memmove()." ;;
8914                         esac
8915                 fi
8916         else
8917                 echo "(I can't compile the test program, so we'll assume not...)"
8918                 case "$d_memmove" in
8919                 "$define") echo "But that's Ok since you have memmove()." ;;
8920                 esac
8921         fi
8922         ;;
8923 esac
8924 $rm -f try.* try core
8925 set d_safebcpy
8926 eval $setvar
8927
8928 : can memcpy handle overlapping blocks?
8929 val="$undef"
8930 case "$d_memcpy" in
8931 "$define")
8932         echo " "
8933         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
8934         $cat >try.c <<EOCP
8935 #$i_memory I_MEMORY
8936 #$i_stdlib I_STDLIB
8937 #$i_string I_STRING
8938 #$i_unistd I_UNISTD
8939 EOCP
8940         $cat >>try.c <<'EOCP'
8941 #include <stdio.h>
8942 #ifdef I_MEMORY
8943 #  include <memory.h>
8944 #endif
8945 #ifdef I_STDLIB
8946 #  include <stdlib.h>
8947 #endif
8948 #ifdef I_STRING
8949 #  include <string.h>
8950 #else
8951 #  include <strings.h>
8952 #endif
8953 #ifdef I_UNISTD
8954 #  include <unistd.h>  /* Needed for NetBSD */
8955 #endif
8956 main()
8957 {
8958 char buf[128], abc[128];
8959 char *b;
8960 int len;
8961 int off;
8962 int align;
8963
8964 /* Copy "abcde..." string to char abc[] so that gcc doesn't
8965    try to store the string in read-only memory. */
8966 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
8967
8968 for (align = 7; align >= 0; align--) {
8969         for (len = 36; len; len--) {
8970                 b = buf+align;
8971                 memcpy(b, abc, len);
8972                 for (off = 1; off <= len; off++) {
8973                         memcpy(b+off, b, len);
8974                         memcpy(b, b+off, len);
8975                         if (memcmp(b, abc, len))
8976                                 exit(1);
8977                 }
8978         }
8979 }
8980 exit(0);
8981 }
8982 EOCP
8983         set try
8984         if eval $compile_ok; then
8985                 if ./try 2>/dev/null; then
8986                         echo "Yes, it can."
8987                         val="$define"
8988                 else
8989                         echo "It can't, sorry."
8990                         case "$d_memmove" in
8991                         "$define") echo "But that's Ok since you have memmove()." ;;
8992                         esac
8993                 fi
8994         else
8995                 echo "(I can't compile the test program, so we'll assume not...)"
8996                 case "$d_memmove" in
8997                 "$define") echo "But that's Ok since you have memmove()." ;;
8998                 esac
8999         fi
9000         ;;
9001 esac
9002 $rm -f try.* try core
9003 set d_safemcpy
9004 eval $setvar
9005
9006 : can memcmp be trusted to compare relative magnitude?
9007 val="$undef"
9008 case "$d_memcmp" in
9009 "$define")
9010         echo " "
9011         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9012         $cat >try.c <<EOCP
9013 #$i_memory I_MEMORY
9014 #$i_stdlib I_STDLIB
9015 #$i_string I_STRING
9016 #$i_unistd I_UNISTD
9017 EOCP
9018         $cat >>try.c <<'EOCP'
9019 #include <stdio.h>
9020 #ifdef I_MEMORY
9021 #  include <memory.h>
9022 #endif
9023 #ifdef I_STDLIB
9024 #  include <stdlib.h>
9025 #endif
9026 #ifdef I_STRING
9027 #  include <string.h>
9028 #else
9029 #  include <strings.h>
9030 #endif
9031 #ifdef I_UNISTD
9032 #  include <unistd.h>  /* Needed for NetBSD */
9033 #endif
9034 main()
9035 {
9036 char a = -1;
9037 char b = 0;
9038 if ((a < b) && memcmp(&a, &b, 1) < 0)
9039         exit(1);
9040 exit(0);
9041 }
9042 EOCP
9043         set try
9044         if eval $compile_ok; then
9045                 if ./try 2>/dev/null; then
9046                         echo "Yes, it can."
9047                         val="$define"
9048                 else
9049                         echo "No, it can't (it uses signed chars)."
9050                 fi
9051         else
9052                 echo "(I can't compile the test program, so we'll assume not...)"
9053         fi
9054         ;;
9055 esac
9056 $rm -f try.* try core
9057 set d_sanemcmp
9058 eval $setvar
9059
9060 : see if select exists
9061 set select d_select
9062 eval $inlibc
9063
9064 : see if semctl exists
9065 set semctl d_semctl
9066 eval $inlibc
9067
9068 : see if semget exists
9069 set semget d_semget
9070 eval $inlibc
9071
9072 : see if semop exists
9073 set semop d_semop
9074 eval $inlibc
9075
9076 : see how much of the 'sem*(2)' library is present.
9077 h_sem=true
9078 echo " "
9079 case "$d_semctl$d_semget$d_semop" in
9080 *"$undef"*) h_sem=false;;
9081 esac
9082 case "$osname" in
9083 freebsd)
9084     case "`ipcs 2>&1`" in
9085     "SVID messages"*"not configured"*)
9086         echo "Your $osname does not have the sem*(2) configured." >&4
9087         h_sem=false
9088         val="$undef"
9089         set semctl d_semctl
9090         eval $setvar
9091         set semget d_semget
9092         eval $setvar
9093         set semop d_semop
9094         eval $setvar
9095         ;;
9096     esac
9097     ;;
9098 esac
9099 : we could also check for sys/ipc.h ...
9100 if $h_sem && $test `./findhdr sys/sem.h`; then
9101         echo "You have the full sem*(2) library." >&4
9102         val="$define"
9103 else
9104         echo "You don't have the full sem*(2) library." >&4
9105         val="$undef"
9106 fi
9107 set d_sem
9108 eval $setvar
9109
9110 : see whether sys/sem.h defines union semun
9111 echo " "
9112 $cat > try.c <<'END'
9113 #include <sys/types.h>
9114 #include <sys/ipc.h>
9115 #include <sys/sem.h>
9116 int main () { union semun semun; semun.buf = 0; }
9117 END
9118 set try
9119 if eval $compile; then
9120     echo "You have union semun in <sys/sem.h>." >&4
9121     val="$define"
9122 else
9123     echo "You do not have union semun in <sys/sem.h>." >&4
9124     val="$undef"
9125 fi
9126 $rm -f try try.c try.h
9127 set d_union_semun
9128 eval $setvar
9129
9130 : see how to do semctl IPC_STAT
9131 case "$d_sem" in
9132 $define)
9133     : see whether semctl IPC_STAT can use union semun
9134     echo " "
9135     $cat > try.h <<END
9136 #ifndef S_IRUSR
9137 #   ifdef S_IREAD
9138 #       define S_IRUSR S_IREAD
9139 #       define S_IWUSR S_IWRITE
9140 #       define S_IXUSR S_IEXEC
9141 #   else
9142 #       define S_IRUSR 0400
9143 #       define S_IWUSR 0200
9144 #       define S_IXUSR 0100
9145 #   endif
9146 #   define S_IRGRP (S_IRUSR>>3)
9147 #   define S_IWGRP (S_IWUSR>>3)
9148 #   define S_IXGRP (S_IXUSR>>3)
9149 #   define S_IROTH (S_IRUSR>>6)
9150 #   define S_IWOTH (S_IWUSR>>6)
9151 #   define S_IXOTH (S_IXUSR>>6)
9152 #endif
9153 #ifndef S_IRWXU
9154 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9155 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9156 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9157 #endif
9158 END
9159
9160     $cat > try.c <<END
9161 #include <sys/types.h>
9162 #include <sys/ipc.h>
9163 #include <sys/sem.h>
9164 #include <sys/stat.h>
9165 #include <stdio.h>
9166 #include <errno.h>
9167 #include "try.h"
9168 #ifndef errno
9169 extern int errno;
9170 #endif
9171 #$d_union_semun HAS_UNION_SEMUN
9172 int main() {
9173     union semun
9174 #ifndef HAS_UNION_SEMUN
9175     {
9176         int val;
9177         struct semid_ds *buf;
9178         unsigned short *array;
9179     }
9180 #endif
9181     arg;
9182     int sem, st;
9183
9184 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9185     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9186     if (sem > -1) {
9187         struct semid_ds argbuf;
9188         arg.buf = &argbuf;
9189 #       ifdef IPC_STAT
9190         st = semctl(sem, 0, IPC_STAT, arg);
9191         if (st == 0)
9192             printf("semun\n");
9193         else
9194 #       endif /* IPC_STAT */
9195             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9196 #       ifdef IPC_RMID
9197         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9198 #       endif /* IPC_RMID */
9199             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9200     } else
9201 #endif /* IPC_PRIVATE && ... */
9202         printf("semget failed: errno = %d\n", errno);
9203   return 0;
9204 }
9205 END
9206     val="$undef"
9207     set try
9208     if eval $compile; then
9209         xxx=`./try`
9210         case "$xxx" in
9211         semun) val="$define" ;;
9212         esac
9213     fi
9214     $rm -f try try.c
9215     set d_semctl_semun
9216     eval $setvar
9217     case "$d_semctl_semun" in
9218     $define)
9219         echo "You can use union semun for semctl IPC_STAT." >&4
9220         also='also'
9221         ;;
9222     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9223         also=''
9224         ;;
9225     esac
9226
9227     : see whether semctl IPC_STAT can use struct semid_ds pointer
9228     $cat > try.c <<'END'
9229 #include <sys/types.h>
9230 #include <sys/ipc.h>
9231 #include <sys/sem.h>
9232 #include <sys/stat.h>
9233 #include "try.h"
9234 #include <stdio.h>
9235 #include <errno.h>
9236 #ifndef errno
9237 extern int errno;
9238 #endif
9239 int main() {
9240     struct semid_ds arg;
9241     int sem, st;
9242
9243 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9244     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9245     if (sem > -1) {
9246 #       ifdef IPC_STAT
9247         st = semctl(sem, 0, IPC_STAT, &arg);
9248         if (st == 0)
9249             printf("semid_ds\n");
9250         else
9251 #       endif /* IPC_STAT */
9252             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9253 #       ifdef IPC_RMID
9254         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9255 #       endif /* IPC_RMID */
9256             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9257     } else
9258 #endif /* IPC_PRIVATE && ... */
9259         printf("semget failed: errno = %d\n", errno);
9260
9261     return 0;
9262 }
9263 END
9264     val="$undef"
9265     set try
9266     if eval $compile; then
9267         xxx=`./try`
9268         case "$xxx" in
9269         semid_ds) val="$define" ;;
9270         esac
9271     fi
9272     $rm -f try try.c
9273     set d_semctl_semid_ds
9274     eval $setvar
9275     case "$d_semctl_semid_ds" in
9276     $define)
9277         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9278         ;;
9279     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9280         ;;
9281     esac
9282     $rm -f try.h
9283     ;;
9284 *)  val="$undef"
9285
9286     # We do not have the full sem*(2) library, so assume we can not
9287     # use either.
9288
9289     set d_semctl_semun
9290     eval $setvar
9291
9292     set d_semctl_semid_ds
9293     eval $setvar
9294     ;;
9295 esac
9296
9297 : see if setegid exists
9298 set setegid d_setegid
9299 eval $inlibc
9300
9301 : see if seteuid exists
9302 set seteuid d_seteuid
9303 eval $inlibc
9304
9305 : see if setgrent exists
9306 set setgrent d_setgrent
9307 eval $inlibc
9308
9309 : see if sethostent exists
9310 set sethostent d_sethent
9311 eval $inlibc
9312
9313 : see if setlinebuf exists
9314 set setlinebuf d_setlinebuf
9315 eval $inlibc
9316
9317 : see if setlocale exists
9318 set setlocale d_setlocale
9319 eval $inlibc
9320
9321 : see if setnetent exists
9322 set setnetent d_setnent
9323 eval $inlibc
9324
9325 : see if setprotoent exists
9326 set setprotoent d_setpent
9327 eval $inlibc
9328
9329 : see if setpgid exists
9330 set setpgid d_setpgid
9331 eval $inlibc
9332
9333 : see if setpgrp2 exists
9334 set setpgrp2 d_setpgrp2
9335 eval $inlibc
9336
9337 : see if setpriority exists
9338 set setpriority d_setprior
9339 eval $inlibc
9340
9341 : see if setpwent exists
9342 set setpwent d_setpwent
9343 eval $inlibc
9344
9345 : see if setregid exists
9346 set setregid d_setregid
9347 eval $inlibc
9348 set setresgid d_setresgid
9349 eval $inlibc
9350
9351 : see if setreuid exists
9352 set setreuid d_setreuid
9353 eval $inlibc
9354 set setresuid d_setresuid
9355 eval $inlibc
9356
9357 : see if setrgid exists
9358 set setrgid d_setrgid
9359 eval $inlibc
9360
9361 : see if setruid exists
9362 set setruid d_setruid
9363 eval $inlibc
9364
9365 : see if setservent exists
9366 set setservent d_setsent
9367 eval $inlibc
9368
9369 : see if setsid exists
9370 set setsid d_setsid
9371 eval $inlibc
9372
9373 : see if setvbuf exists
9374 set setvbuf d_setvbuf
9375 eval $inlibc
9376
9377 : see if sfio.h is available
9378 set sfio.h i_sfio
9379 eval $inhdr
9380
9381
9382 : see if sfio library is available
9383 case "$i_sfio" in
9384 $define)
9385         val=''
9386         set sfreserve val
9387         eval $inlibc
9388         ;;
9389 *)
9390         val="$undef"
9391         ;;
9392 esac
9393 : Ok, but do we want to use it.
9394 case "$val" in
9395 $define)
9396         case "$usesfio" in
9397         true|$define|[yY]*) dflt='y';;
9398         *) dflt='n';;
9399         esac
9400         echo "$package can use the sfio library, but it is experimental."
9401         rp="You seem to have sfio available, do you want to try using it?"
9402         . ./myread
9403         case "$ans" in
9404         y|Y) ;;
9405         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9406                 val="$undef"
9407                 : Remove sfio from list of libraries to use
9408                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9409                 shift
9410                 libs="$*"
9411                 echo "libs = $libs" >&4
9412                 ;;
9413         esac
9414         ;;
9415 *)      case "$usesfio" in
9416         true|$define|[yY]*)
9417                 echo "Sorry, cannot find sfio on this machine" >&4
9418                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9419                 ;;
9420         esac
9421         ;;
9422 esac
9423 set d_sfio
9424 eval $setvar
9425 case "$d_sfio" in
9426 $define) usesfio='true';;
9427 *) usesfio='false';;
9428 esac
9429
9430 : see if shmctl exists
9431 set shmctl d_shmctl
9432 eval $inlibc
9433
9434 : see if shmget exists
9435 set shmget d_shmget
9436 eval $inlibc
9437
9438 : see if shmat exists
9439 set shmat d_shmat
9440 eval $inlibc
9441 : see what shmat returns
9442 case "$d_shmat" in
9443 "$define")
9444         $cat >shmat.c <<'END'
9445 #include <sys/shm.h>
9446 void *shmat();
9447 END
9448         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9449                 shmattype='void *'
9450         else
9451                 shmattype='char *'
9452         fi
9453         echo "and it returns ($shmattype)." >&4
9454         : see if a prototype for shmat is available
9455         xxx=`./findhdr sys/shm.h`
9456         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9457         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9458                 val="$define"
9459         else
9460                 val="$undef"
9461         fi
9462         $rm -f shmat.[co]
9463         ;;
9464 *)
9465         val="$undef"
9466         ;;
9467 esac
9468 set d_shmatprototype
9469 eval $setvar
9470
9471 : see if shmdt exists
9472 set shmdt d_shmdt
9473 eval $inlibc
9474
9475 : see how much of the 'shm*(2)' library is present.
9476 h_shm=true
9477 echo " "
9478 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9479 *"$undef"*) h_shm=false;;
9480 esac
9481 case "$osname" in
9482 freebsd)
9483     case "`ipcs 2>&1`" in
9484     "SVID shared memory"*"not configured"*)
9485         echo "Your $osname does not have the shm*(2) configured." >&4
9486         h_shm=false
9487         val="$undef"
9488         set shmctl d_shmctl
9489         evat $setvar
9490         set shmget d_shmget
9491         evat $setvar
9492         set shmat d_shmat
9493         evat $setvar
9494         set shmdt d_shmdt
9495         evat $setvar
9496         ;;
9497     esac
9498     ;;
9499 esac
9500 : we could also check for sys/ipc.h ...
9501 if $h_shm && $test `./findhdr sys/shm.h`; then
9502         echo "You have the full shm*(2) library." >&4
9503         val="$define"
9504 else
9505         echo "You don't have the full shm*(2) library." >&4
9506         val="$undef"
9507 fi
9508 set d_shm
9509 eval $setvar
9510
9511 echo " "
9512 : see if we have sigaction
9513 if set sigaction val -f d_sigaction; eval $csym; $val; then
9514         echo 'sigaction() found.' >&4
9515         $cat > try.c <<'EOP'
9516 #include <stdio.h>
9517 #include <sys/types.h>
9518 #include <signal.h>
9519 main()
9520 {
9521     struct sigaction act, oact;
9522 }
9523 EOP
9524         set try
9525         if eval $compile_ok; then
9526                 val="$define"
9527         else
9528                 echo "But you don't seem to have a useable struct sigaction." >&4
9529                 val="$undef"
9530         fi
9531 else
9532         echo 'sigaction NOT found.' >&4
9533         val="$undef"
9534 fi
9535 set d_sigaction; eval $setvar
9536 $rm -f try try$_o try.c
9537
9538 : see if sigsetjmp exists
9539 echo " "
9540 case "$d_sigsetjmp" in
9541 '')
9542         $cat >try.c <<'EOP'
9543 #include <setjmp.h>
9544 sigjmp_buf env;
9545 int set = 1;
9546 main()
9547 {
9548         if (sigsetjmp(env,1))
9549                 exit(set);
9550         set = 0;
9551         siglongjmp(env, 1);
9552         exit(1);
9553 }
9554 EOP
9555         set try
9556         if eval $compile; then
9557                 if ./try >/dev/null 2>&1; then
9558                         echo "POSIX sigsetjmp found." >&4
9559                         val="$define"
9560                 else
9561                         $cat >&4 <<EOM
9562 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9563 I'll ignore them.
9564 EOM
9565                         val="$undef"
9566                 fi
9567         else
9568                 echo "sigsetjmp not found." >&4
9569                 val="$undef"
9570         fi
9571         ;;
9572 *) val="$d_sigsetjmp"
9573         case "$d_sigsetjmp" in
9574         $define) echo "POSIX sigsetjmp found." >&4;;
9575         $undef) echo "sigsetjmp not found." >&4;;
9576         esac
9577         ;;
9578 esac
9579 set d_sigsetjmp
9580 eval $setvar
9581 $rm -f try.c try
9582
9583 : see if stat knows about block sizes
9584 echo " "
9585 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9586 eval $hasfield
9587
9588 : see if _ptr and _cnt from stdio act std
9589 echo " "
9590 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9591         echo "(Looks like you have stdio.h from Linux.)"
9592         case "$stdio_ptr" in
9593         '') stdio_ptr='((fp)->_IO_read_ptr)'
9594                 ptr_lval=$define
9595                 ;;
9596         *)      ptr_lval=$d_stdio_ptr_lval;;
9597         esac
9598         case "$stdio_cnt" in
9599         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9600                 cnt_lval=$undef
9601                 ;;
9602         *)      cnt_lval=$d_stdio_cnt_lval;;
9603         esac
9604         case "$stdio_base" in
9605         '') stdio_base='((fp)->_IO_read_base)';;
9606         esac
9607         case "$stdio_bufsiz" in
9608         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9609         esac
9610 else
9611         case "$stdio_ptr" in
9612         '') stdio_ptr='((fp)->_ptr)'
9613                 ptr_lval=$define
9614                 ;;
9615         *)      ptr_lval=$d_stdio_ptr_lval;;
9616         esac
9617         case "$stdio_cnt" in
9618         '') stdio_cnt='((fp)->_cnt)'
9619                 cnt_lval=$define
9620                 ;;
9621         *)      cnt_lval=$d_stdio_cnt_lval;;
9622         esac
9623         case "$stdio_base" in
9624         '') stdio_base='((fp)->_base)';;
9625         esac
9626         case "$stdio_bufsiz" in
9627         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9628         esac
9629 fi
9630 : test whether _ptr and _cnt really work
9631 echo "Checking how std your stdio is..." >&4
9632 $cat >try.c <<EOP
9633 #include <stdio.h>
9634 #define FILE_ptr(fp)    $stdio_ptr
9635 #define FILE_cnt(fp)    $stdio_cnt
9636 main() {
9637         FILE *fp = fopen("try.c", "r");
9638         char c = getc(fp);
9639         if (
9640                 18 <= FILE_cnt(fp) &&
9641                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9642         )
9643                 exit(0);
9644         exit(1);
9645 }
9646 EOP
9647 val="$undef"
9648 set try
9649 if eval $compile; then
9650         if ./try; then
9651                 echo "Your stdio acts pretty std."
9652                 val="$define"
9653         else
9654                 echo "Your stdio isn't very std."
9655         fi
9656 else
9657         echo "Your stdio doesn't appear very std."
9658 fi
9659 $rm -f try.c try
9660 set d_stdstdio
9661 eval $setvar
9662
9663 : Can _ptr be used as an lvalue?
9664 case "$d_stdstdio$ptr_lval" in
9665 $define$define) val=$define ;;
9666 *) val=$undef ;;
9667 esac
9668 set d_stdio_ptr_lval
9669 eval $setvar
9670
9671 : Can _cnt be used as an lvalue?
9672 case "$d_stdstdio$cnt_lval" in
9673 $define$define) val=$define ;;
9674 *) val=$undef ;;
9675 esac
9676 set d_stdio_cnt_lval
9677 eval $setvar
9678
9679 : see if _base is also standard
9680 val="$undef"
9681 case "$d_stdstdio" in
9682 $define)
9683         $cat >try.c <<EOP
9684 #include <stdio.h>
9685 #define FILE_base(fp)   $stdio_base
9686 #define FILE_bufsiz(fp) $stdio_bufsiz
9687 main() {
9688         FILE *fp = fopen("try.c", "r");
9689         char c = getc(fp);
9690         if (
9691                 19 <= FILE_bufsiz(fp) &&
9692                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9693         )
9694                 exit(0);
9695         exit(1);
9696 }
9697 EOP
9698         set try
9699         if eval $compile; then
9700                 if ./try; then
9701                         echo "And its _base field acts std."
9702                         val="$define"
9703                 else
9704                         echo "But its _base field isn't std."
9705                 fi
9706         else
9707                 echo "However, it seems to be lacking the _base field."
9708         fi
9709         $rm -f try.c try
9710         ;;
9711 esac
9712 set d_stdiobase
9713 eval $setvar
9714
9715 : see if strcoll exists
9716 set strcoll d_strcoll
9717 eval $inlibc
9718
9719 : check for structure copying
9720 echo " "
9721 echo "Checking to see if your C compiler can copy structs..." >&4
9722 $cat >try.c <<'EOCP'
9723 int main()
9724 {
9725         struct blurfl {
9726                 int dyick;
9727         } foo, bar;
9728
9729         foo = bar;
9730 }
9731 EOCP
9732 if $cc -c try.c >/dev/null 2>&1 ; then
9733         val="$define"
9734         echo "Yup, it can."
9735 else
9736         val="$undef"
9737         echo "Nope, it can't."
9738 fi
9739 set d_strctcpy
9740 eval $setvar
9741 $rm -f try.*
9742
9743 : see if strerror and/or sys_errlist[] exist
9744 echo " "
9745 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9746     if set strerror val -f d_strerror; eval $csym; $val; then
9747                 echo 'strerror() found.' >&4
9748                 d_strerror="$define"
9749                 d_strerrm='strerror(e)'
9750                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9751                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9752                         d_syserrlst="$define"
9753                 else
9754                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9755                         d_syserrlst="$undef"
9756                 fi
9757     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9758                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9759                 echo 'strerror() found in string header.' >&4
9760                 d_strerror="$define"
9761                 d_strerrm='strerror(e)'
9762                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9763                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9764                                 d_syserrlst="$define"
9765                 else
9766                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9767                         d_syserrlst="$undef"
9768                 fi
9769     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9770                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9771                 d_strerror="$undef"
9772                 d_syserrlst="$define"
9773                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9774     else
9775                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9776                 d_strerror="$undef"
9777                 d_syserrlst="$undef"
9778                 d_strerrm='"unknown"'
9779     fi
9780 fi
9781
9782 : see if strtod exists
9783 set strtod d_strtod
9784 eval $inlibc
9785
9786 : see if strtol exists
9787 set strtol d_strtol
9788 eval $inlibc
9789
9790 : see if strtoul exists
9791 set strtoul d_strtoul
9792 eval $inlibc
9793
9794 : see if strxfrm exists
9795 set strxfrm d_strxfrm
9796 eval $inlibc
9797
9798 : see if symlink exists
9799 set symlink d_symlink
9800 eval $inlibc
9801
9802 : see if syscall exists
9803 set syscall d_syscall
9804 eval $inlibc
9805
9806 : see if sysconf exists
9807 set sysconf d_sysconf
9808 eval $inlibc
9809
9810 : see if system exists
9811 set system d_system
9812 eval $inlibc
9813
9814 : see if tcgetpgrp exists
9815 set tcgetpgrp d_tcgetpgrp
9816 eval $inlibc
9817
9818 : see if tcsetpgrp exists
9819 set tcsetpgrp d_tcsetpgrp
9820 eval $inlibc
9821
9822 : define an is-a-typedef? function
9823 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9824 case "$inclist" in
9825 "") inclist="sys/types.h";;
9826 esac;
9827 eval "varval=\$$var";
9828 case "$varval" in
9829 "")
9830         $rm -f temp.c;
9831         for inc in $inclist; do
9832                 echo "#include <$inc>" >>temp.c;
9833         done;
9834         echo "#ifdef $type" >> temp.c;
9835         echo "printf(\"We have $type\");" >> temp.c;
9836         echo "#endif" >> temp.c;
9837         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9838         if $contains $type temp.E >/dev/null 2>&1; then
9839                 eval "$var=\$type";
9840         else
9841                 eval "$var=\$def";
9842         fi;
9843         $rm -f temp.?;;
9844 *) eval "$var=\$varval";;
9845 esac'
9846
9847 : define an is-a-typedef? function that prompts if the type is not available.
9848 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9849 case "$inclist" in
9850 "") inclist="sys/types.h";;
9851 esac;
9852 eval "varval=\$$var";
9853 case "$varval" in
9854 "")
9855         $rm -f temp.c;
9856         for inc in $inclist; do
9857                 echo "#include <$inc>" >>temp.c;
9858         done;
9859         echo "#ifdef $type" >> temp.c;
9860         echo "printf(\"We have $type\");" >> temp.c;
9861         echo "#endif" >> temp.c;
9862         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9863         echo " " ;
9864         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9865         if $contains $type temp.E >/dev/null 2>&1; then
9866                 echo "$type found." >&4;
9867                 eval "$var=\$type";
9868         else
9869                 echo "$type NOT found." >&4;
9870                 dflt="$def";
9871                 . ./myread ;
9872                 eval "$var=\$ans";
9873         fi;
9874         $rm -f temp.?;;
9875 *) eval "$var=\$varval";;
9876 esac'
9877
9878 : see if this is a sys/times.h system
9879 set sys/times.h i_systimes
9880 eval $inhdr
9881
9882 : see if times exists
9883 echo " "
9884 if set times val -f d_times; eval $csym; $val; then
9885         echo 'times() found.' >&4
9886         d_times="$define"
9887         inc=''
9888         case "$i_systimes" in
9889         "$define") inc='sys/times.h';;
9890         esac
9891         rp="What is the type returned by times() on this system?"
9892         set clock_t clocktype long stdio.h sys/types.h $inc
9893         eval $typedef_ask
9894 else
9895         echo 'times() NOT found, hope that will do.' >&4
9896         d_times="$undef"
9897         clocktype='int'
9898 fi
9899
9900 : see if truncate exists
9901 set truncate d_truncate
9902 eval $inlibc
9903
9904 : see if tzname[] exists
9905 echo " "
9906 if set tzname val -a d_tzname; eval $csym; $val; then
9907         val="$define"
9908         echo 'tzname[] found.' >&4
9909 else
9910         val="$undef"
9911         echo 'tzname[] NOT found.' >&4
9912 fi
9913 set d_tzname
9914 eval $setvar
9915
9916 : see if umask exists
9917 set umask d_umask
9918 eval $inlibc
9919
9920 : backward compatibility for d_hvfork
9921 if test X$d_hvfork != X; then
9922         d_vfork="$d_hvfork"
9923         d_hvfork=''
9924 fi
9925 : see if there is a vfork
9926 val=''
9927 set vfork val
9928 eval $inlibc
9929
9930 : Ok, but do we want to use it. vfork is reportedly unreliable in 
9931 : perl on Solaris 2.x, and probably elsewhere.
9932 case "$val" in
9933 $define)
9934         echo " "
9935         case "$usevfork" in
9936         false) dflt='n';;
9937         *) dflt='y';;
9938         esac
9939         rp="Some systems have problems with vfork().  Do you want to use it?"
9940         . ./myread
9941         case "$ans" in
9942         y|Y) ;;
9943         *)
9944                 echo "Ok, we won't use vfork()."
9945                 val="$undef"
9946                 ;;
9947         esac
9948         ;;
9949 esac
9950 set d_vfork
9951 eval $setvar
9952 case "$d_vfork" in
9953 $define) usevfork='true';;
9954 *) usevfork='false';;
9955 esac
9956
9957 : see if this is an sysdir system
9958 set sys/dir.h i_sysdir
9959 eval $inhdr
9960
9961 : see if this is an sysndir system
9962 set sys/ndir.h i_sysndir
9963 eval $inhdr
9964
9965 : see if sys/types.h has to be included
9966 set sys/types.h i_systypes
9967 eval $inhdr
9968
9969 : see if closedir exists
9970 set closedir d_closedir
9971 eval $inlibc
9972
9973 case "$d_closedir" in
9974 "$define")
9975         echo " "
9976         echo "Checking whether closedir() returns a status..." >&4
9977         cat > closedir.c <<EOM
9978 #$i_dirent I_DIRENT             /**/
9979 #$i_sysdir I_SYS_DIR            /**/
9980 #$i_sysndir I_SYS_NDIR          /**/
9981 #$i_systypes I_SYS_TYPES        /**/
9982
9983 #if defined(I_SYS_TYPES)
9984 #include <sys/types.h>
9985 #endif
9986 #if defined(I_DIRENT)
9987 #include <dirent.h>
9988 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9989 #include <sys/dir.h>
9990 #endif
9991 #else
9992 #ifdef I_SYS_NDIR
9993 #include <sys/ndir.h>
9994 #else
9995 #ifdef I_SYS_DIR
9996 #ifdef hp9000s500
9997 #include <ndir.h>       /* may be wrong in the future */
9998 #else
9999 #include <sys/dir.h>
10000 #endif
10001 #endif
10002 #endif
10003 #endif 
10004 int main() { return closedir(opendir(".")); }
10005 EOM
10006         set closedir
10007         if eval $compile_ok; then
10008                 if ./closedir > /dev/null 2>&1 ; then
10009                         echo "Yes, it does."
10010                         val="$undef"
10011                 else
10012                         echo "No, it doesn't."
10013                         val="$define"
10014                 fi
10015         else
10016                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10017                 val="$define"
10018         fi
10019         ;;
10020 *)
10021         val="$undef";
10022         ;;
10023 esac
10024 set d_void_closedir
10025 eval $setvar
10026 $rm -f closedir*
10027 : check for volatile keyword
10028 echo " "
10029 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10030 $cat >try.c <<'EOCP'
10031 int main()
10032 {
10033         typedef struct _goo_struct goo_struct;
10034         goo_struct * volatile goo = ((goo_struct *)0);
10035         struct _goo_struct {
10036                 long long_int;
10037                 int reg_int;
10038                 char char_var;
10039         };
10040         typedef unsigned short foo_t;
10041         char *volatile foo;
10042         volatile int bar;
10043         volatile foo_t blech;
10044         foo = foo;
10045 }
10046 EOCP
10047 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10048         val="$define"
10049         echo "Yup, it does."
10050 else
10051         val="$undef"
10052         echo "Nope, it doesn't."
10053 fi
10054 set d_volatile
10055 eval $setvar
10056 $rm -f try.*
10057
10058 : see if there is a wait4
10059 set wait4 d_wait4
10060 eval $inlibc
10061
10062 : see if waitpid exists
10063 set waitpid d_waitpid
10064 eval $inlibc
10065
10066 : see if wcstombs exists
10067 set wcstombs d_wcstombs
10068 eval $inlibc
10069
10070 : see if wctomb exists
10071 set wctomb d_wctomb
10072 eval $inlibc
10073
10074 : see if writev exists
10075 set writev d_writev
10076 eval $inlibc
10077
10078 : preserve RCS keywords in files with variable substitution, grrr
10079 Date='$Date'
10080 Id='$Id'
10081 Log='$Log'
10082 RCSfile='$RCSfile'
10083 Revision='$Revision'
10084
10085 : check for alignment requirements
10086 echo " "
10087 case "$alignbytes" in
10088 '') echo "Checking alignment constraints..." >&4
10089         $cat >try.c <<'EOCP'
10090 struct foobar {
10091         char foo;
10092         double bar;
10093 } try;
10094 main()
10095 {
10096         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10097 }
10098 EOCP
10099         set try
10100         if eval $compile_ok; then
10101                 dflt=`./try`
10102         else
10103                 dflt='8'
10104                 echo "(I can't seem to compile the test program...)"
10105         fi
10106         ;;
10107 *) dflt="$alignbytes"
10108         ;;
10109 esac
10110 rp="Doubles must be aligned on a how-many-byte boundary?"
10111 . ./myread
10112 alignbytes="$ans"
10113 $rm -f try.c try
10114
10115 : check for ordering of bytes in a long
10116 case "$byteorder" in
10117 '')
10118         $cat <<'EOM'
10119   
10120 In the following, larger digits indicate more significance.  A big-endian
10121 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10122 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10123 machines may have weird orders like 3412.  A Cray will report 87654321. If
10124 the test program works the default is probably right.
10125 I'm now running the test program...
10126 EOM
10127         $cat >try.c <<'EOCP'
10128 #include <stdio.h>
10129 main()
10130 {
10131         int i;
10132         union {
10133                 unsigned long l;
10134                 char c[sizeof(long)];
10135         } u;
10136
10137         if (sizeof(long) > 4)
10138                 u.l = (0x08070605L << 32) | 0x04030201L;
10139         else
10140                 u.l = 0x04030201L;
10141         for (i = 0; i < sizeof(long); i++)
10142                 printf("%c", u.c[i]+'0');
10143         printf("\n");
10144         exit(0);
10145 }
10146 EOCP
10147         xxx_prompt=y
10148         set try
10149         if eval $compile && ./try > /dev/null; then
10150                 dflt=`./try`
10151                 case "$dflt" in
10152                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10153                         echo "(The test program ran ok.)"
10154                         echo "byteorder=$dflt"
10155                         xxx_prompt=n
10156                         ;;
10157                 ????|????????) echo "(The test program ran ok.)" ;;
10158                 *) echo "(The test program didn't run right for some reason.)" ;;
10159                 esac
10160         else
10161                 dflt='4321'
10162                 cat <<'EOM'
10163 (I can't seem to compile the test program.  Guessing big-endian...)
10164 EOM
10165         fi
10166         case "$xxx_prompt" in
10167         y)
10168                 rp="What is the order of bytes in a long?"
10169                 . ./myread
10170                 byteorder="$ans"
10171                 ;;
10172         *)      byteorder=$dflt
10173                 ;;
10174         esac
10175         ;;
10176 esac
10177 $rm -f try.c try
10178
10179 : how do we catenate cpp tokens here?
10180 echo " "
10181 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10182 $cat >cpp_stuff.c <<'EOCP'
10183 #define RCAT(a,b)a/**/b
10184 #define ACAT(a,b)a ## b
10185 RCAT(Rei,ser)
10186 ACAT(Cir,cus)
10187 EOCP
10188 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10189 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10190         echo "Oh!  Smells like ANSI's been here." >&4
10191         echo "We can catify or stringify, separately or together!"
10192         cpp_stuff=42
10193 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10194         echo "Ah, yes!  The good old days!" >&4
10195         echo "However, in the good old days we don't know how to stringify and"
10196         echo "catify at the same time."
10197         cpp_stuff=1
10198 else
10199         $cat >&4 <<EOM
10200 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10201 to have to edit the values of CAT[2-5] in config.h...
10202 EOM
10203         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10204 fi
10205 $rm -f cpp_stuff.*
10206
10207 : see if this is a db.h system
10208 set db.h i_db
10209 eval $inhdr
10210
10211 case "$i_db" in
10212 $define)
10213         : Check db version.
10214         echo " "
10215         echo "Checking Berkeley DB version ..." >&4
10216         $cat >try.c <<EOCP
10217 #$d_const HASCONST
10218 #ifndef HASCONST
10219 #define const
10220 #endif
10221 #include <sys/types.h>
10222 #include <stdio.h>
10223 #include <db.h>
10224 main()
10225 {
10226 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10227     int Major, Minor, Patch ;
10228     unsigned long Version ;
10229     (void)db_version(&Major, &Minor, &Patch) ;
10230     printf("You have Berkeley DB Version 2 or greater\n");
10231
10232     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10233                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10234     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10235                 Major, Minor, Patch) ;
10236
10237     /* check that db.h & libdb are compatible */
10238     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10239         printf("db.h and libdb are incompatible\n") ;
10240         exit(3);        
10241     }
10242
10243     printf("db.h and libdb are compatible\n") ;
10244
10245     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10246                 + DB_VERSION_PATCH ;
10247
10248     /* needs to be >= 2.3.4 */
10249     if (Version < 2003004) {
10250     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10251         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10252         exit(2);        
10253     }
10254
10255     exit(0);
10256 #else
10257 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10258     printf("You have Berkeley DB Version 1\n");
10259     exit(0);    /* DB version < 2: the coast is clear. */
10260 #else
10261     exit(1);    /* <db.h> not Berkeley DB? */
10262 #endif
10263 #endif
10264 }
10265 EOCP
10266         set try
10267         if eval $compile && ./try; then
10268                 echo 'Looks OK.' >&4
10269         else
10270                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10271                 i_db=$undef
10272                 case " $libs " in
10273                 *"-ldb "*)
10274                         : Remove db from list of libraries to use
10275                         echo "Removing unusable -ldb from library list" >&4
10276                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10277                         shift
10278                         libs="$*"
10279                         echo "libs = $libs" >&4
10280                         ;;
10281                 esac
10282         fi
10283         $rm -f try.*
10284         ;;
10285 esac
10286
10287 case "$i_db" in
10288 define)
10289         : Check the return type needed for hash 
10290         echo " "
10291         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10292         $cat >try.c <<EOCP
10293 #$d_const HASCONST
10294 #ifndef HASCONST
10295 #define const
10296 #endif
10297 #include <sys/types.h>
10298 #include <db.h>
10299
10300 #ifndef DB_VERSION_MAJOR
10301 u_int32_t hash_cb (ptr, size)
10302 const void *ptr;
10303 size_t size;
10304 {
10305 }
10306 HASHINFO info;
10307 main()
10308 {
10309         info.hash = hash_cb;
10310 }
10311 #endif
10312 EOCP
10313         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10314                 if $contains warning try.out >>/dev/null 2>&1 ; then
10315                         db_hashtype='int'
10316                 else
10317                         db_hashtype='u_int32_t'
10318                 fi
10319         else
10320                 : XXX Maybe we should just give up here.
10321                 db_hashtype=u_int32_t
10322                 $cat try.out >&4
10323                 echo "Help:  I can't seem to compile the db test program." >&4
10324                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10325         fi
10326         $rm -f try.*
10327         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10328         ;;
10329 *)      db_hashtype=u_int32_t
10330         ;;
10331 esac
10332 case "$i_db" in
10333 define)
10334         : Check the return type needed for prefix 
10335         echo " "
10336         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10337         cat >try.c <<EOCP
10338 #$d_const HASCONST
10339 #ifndef HASCONST
10340 #define const
10341 #endif
10342 #include <sys/types.h>
10343 #include <db.h>
10344
10345 #ifndef DB_VERSION_MAJOR
10346 size_t prefix_cb (key1, key2)
10347 const DBT *key1;
10348 const DBT *key2;
10349 {
10350 }
10351 BTREEINFO info;
10352 main()
10353 {
10354         info.prefix = prefix_cb;
10355 }
10356 #endif
10357 EOCP
10358         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10359                 if $contains warning try.out >>/dev/null 2>&1 ; then
10360                         db_prefixtype='int'
10361                 else
10362                         db_prefixtype='size_t'
10363                 fi
10364         else
10365                 db_prefixtype='size_t'
10366                 : XXX Maybe we should just give up here.
10367                 $cat try.out >&4
10368                 echo "Help:  I can't seem to compile the db test program." >&4
10369                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10370         fi
10371         $rm -f try.*
10372         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10373         ;;
10374 *)      db_prefixtype='size_t'
10375         ;;
10376 esac
10377
10378 : check for void type
10379 echo " "
10380 echo "Checking to see how well your C compiler groks the void type..." >&4
10381 case "$voidflags" in
10382 '')
10383         $cat >try.c <<'EOCP'
10384 #if TRY & 1
10385 void sub() {
10386 #else
10387 sub() {
10388 #endif
10389         extern void moo();      /* function returning void */
10390         void (*goo)();          /* ptr to func returning void */
10391 #if TRY & 8
10392         void *hue;              /* generic ptr */
10393 #endif
10394 #if TRY & 2
10395         void (*foo[10])();
10396 #endif
10397
10398 #if TRY & 4
10399         if(goo == moo) {
10400                 exit(0);
10401         }
10402 #endif
10403         exit(0);
10404 }
10405 main() { sub(); }
10406 EOCP
10407         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10408                 voidflags=$defvoidused
10409         echo "Good.  It appears to support void to the level $package wants.">&4
10410                 if $contains warning .out >/dev/null 2>&1; then
10411                         echo "However, you might get some warnings that look like this:"
10412                         $cat .out
10413                 fi
10414         else
10415 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10416                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10417                         echo "It supports 1..."
10418                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10419                                 echo "It also supports 2..."
10420                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10421                                         voidflags=7
10422                                         echo "And it supports 4 but not 8 definitely."
10423                                 else
10424                                         echo "It doesn't support 4..."
10425                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10426                                                 voidflags=11
10427                                                 echo "But it supports 8."
10428                                         else
10429                                                 voidflags=3
10430                                                 echo "Neither does it support 8."
10431                                         fi
10432                                 fi
10433                         else
10434                                 echo "It does not support 2..."
10435                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10436                                         voidflags=13
10437                                         echo "But it supports 4 and 8."
10438                                 else
10439                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10440                                                 voidflags=5
10441                                                 echo "And it supports 4 but has not heard about 8."
10442                                         else
10443                                                 echo "However it supports 8 but not 4."
10444                                         fi
10445                                 fi
10446                         fi
10447                 else
10448                         echo "There is no support at all for void."
10449                         voidflags=0
10450                 fi
10451         fi
10452 esac
10453 case "$voidflags" in
10454 "$defvoidused") ;;
10455 *)      $cat >&4 <<'EOM'
10456   Support flag bits are:
10457     1: basic void declarations.
10458     2: arrays of pointers to functions returning void.
10459     4: operations between pointers to and addresses of void functions.
10460     8: generic void pointers.
10461 EOM
10462         dflt="$voidflags";
10463         rp="Your void support flags add up to what?"
10464         . ./myread
10465         voidflags="$ans"
10466         ;;
10467 esac
10468 $rm -f try.* .out
10469
10470
10471 : How can we generate normalized random numbers ?
10472 echo " "
10473 echo "Looking for a random number function..." >&4
10474 case "$randfunc" in
10475 '')
10476         if set drand48 val -f; eval $csym; $val; then
10477                 dflt="drand48"
10478                 echo "Good, found drand48()." >&4
10479         elif set random val -f; eval $csym; $val; then
10480                 dflt="random"
10481                 echo "OK, found random()." >&4
10482         else
10483                 dflt="rand"
10484                 echo "Yick, looks like I have to use rand()." >&4
10485         fi
10486         echo " "
10487         ;;
10488 *)
10489         dflt="$randfunc"
10490         ;;
10491 esac
10492 cont=true
10493
10494 case "$ccflags" in
10495 *-Dmy_rand=*|*-Dmy_srand=*)
10496         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10497         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10498         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10499         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10500         ;;
10501 esac
10502
10503 while $test "$cont"; do
10504         rp="Use which function to generate random numbers?"
10505         . ./myread
10506         if $test "$ans" = "$dflt"; then
10507                 : null
10508         else
10509                 randbits=''
10510         fi
10511         randfunc="$ans"
10512         if set $ans val -f; eval $csym; $val; then
10513                 cont=''
10514         else
10515                 dflt=y
10516                 rp="I cannot find function $ans. Use that name anyway?"
10517                 . ./myread
10518                 dflt=rand
10519                 case "$ans" in
10520                         [yY]*) cont='';;
10521                 esac
10522         fi
10523         case "$cont" in
10524         '')
10525                 case "$randfunc" in
10526                 drand48)
10527                         drand01="drand48()"
10528                         seedfunc="srand48"
10529                         randbits=48
10530                         randseedtype=long
10531                         ;;
10532                 rand|random)
10533                         case "$randbits" in
10534                         '')
10535 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10536                                 $cat >try.c <<EOCP
10537 #$i_unistd I_UNISTD
10538 #$i_stdlib I_STDLIB
10539 #include <stdio.h>
10540 #ifdef I_UNISTD
10541 #  include <unistd.h>
10542 #endif
10543 #ifdef I_STDLIB
10544 #  include <stdlib.h>
10545 #endif
10546 main()
10547 {
10548         register int i;
10549         register unsigned long tmp;
10550         register unsigned long max = 0L;
10551
10552         for (i = 1000; i; i--) {
10553                 tmp = (unsigned long) $randfunc();
10554                 if (tmp > max) max = tmp;
10555         }
10556         for (i = 0; max; i++)
10557                 max /= 2;
10558         printf("%d\n",i);
10559 }
10560 EOCP
10561                                 set try
10562                                 if eval $compile_ok; then
10563                                         dflt=`try`
10564                                 else
10565                                         dflt='?'
10566                                         echo "(I can't seem to compile the test program...)"
10567                                 fi
10568                                 ;;
10569                         *)
10570                                 dflt="$randbits"
10571                                 ;;
10572                         esac
10573                         rp="How many bits does your $randfunc() function produce?"
10574                         . ./myread
10575                         randbits="$ans"
10576                         $rm -f try.c try
10577                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10578                         seedfunc="s$randfunc"
10579                         randseedtype=unsigned
10580                         ;;
10581                 *)
10582                         dflt="31"
10583                         rp="How many bits does your $randfunc() function produce?"
10584                         . ./myread
10585                         randbits="$ans"
10586                         seedfunc="s$randfunc"
10587                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10588                         if set $seedfunc val -f; eval $csym; $val; then
10589                                 echo "(Using $seedfunc() to seed random generator)"
10590                         else
10591                                 echo "(Warning: no $seedfunc() to seed random generator)"
10592                                 seedfunc=rand
10593                         fi
10594                         randseedtype=unsigned
10595                         ;;
10596                 esac
10597                 ;;
10598         esac
10599 done
10600
10601 echo " "
10602 echo "Determining whether or not we are on an EBCDIC system..." >&4
10603 $cat >tebcdic.c <<'EOM'
10604 int main()
10605 {
10606   if ('M'==0xd4) return 0;
10607   return 1;
10608 }
10609 EOM
10610
10611 val=$undef
10612 set tebcdic
10613 if eval $compile_ok; then
10614         if ./tebcdic; then
10615                 echo "You have EBCDIC." >&4
10616                 val="$define"
10617         else
10618                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10619         fi
10620 else
10621         echo "I'm unable to compile the test program." >&4
10622         echo "I'll assume ASCII or some ISO Latin." >&4
10623 fi
10624 $rm -f tebcdic.c tebcdic
10625 set ebcdic
10626 eval $setvar
10627
10628 : see what type file positions are declared as in the library
10629 rp="What is the type for file position used by fsetpos()?"
10630 set fpos_t fpostype long stdio.h sys/types.h
10631 eval $typedef_ask
10632
10633 : Store the full pathname to the sed program for use in the C program
10634 full_sed=$sed
10635
10636 : see what type gids are declared as in the kernel
10637 echo " "
10638 echo "Looking for the type for group ids returned by getgid()."
10639 set gid_t gidtype xxx stdio.h sys/types.h
10640 eval $typedef
10641 case "$gidtype" in
10642 xxx)
10643         xxx=`./findhdr sys/user.h`
10644         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10645         case $1 in
10646         unsigned) dflt="$1 $2" ;;
10647         *) dflt="$1" ;;
10648         esac
10649         ;;
10650 *) dflt="$gidtype";;
10651 esac
10652 case "$gidtype" in
10653 gid_t) echo "gid_t found." ;;
10654 *)      rp="What is the type for group ids returned by getgid()?"
10655         . ./myread
10656         gidtype="$ans"
10657         ;;
10658 esac
10659
10660 : see if getgroups exists
10661 set getgroups d_getgrps
10662 eval $inlibc
10663
10664 : see if setgroups exists
10665 set setgroups d_setgrps
10666 eval $inlibc
10667
10668
10669 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10670 echo " "
10671 case "$d_getgrps$d_setgrps" in
10672 *define*)
10673         case "$groupstype" in
10674         '') dflt="$gidtype" ;;
10675         *)  dflt="$groupstype" ;;
10676         esac
10677         $cat <<EOM
10678 What type of pointer is the second argument to getgroups() and setgroups()?
10679 Usually this is the same as group ids, $gidtype, but not always.
10680
10681 EOM
10682         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10683         . ./myread
10684         groupstype="$ans"
10685         ;;
10686 *)  groupstype="$gidtype";;
10687 esac
10688
10689 : see what type lseek is declared as in the kernel
10690 rp="What is the type used for lseek's offset on this system?"
10691 set off_t lseektype long stdio.h sys/types.h
10692 eval $typedef_ask
10693
10694 echo " "
10695 $echo $n "Checking to see how big your file offsets are...$c" >&4
10696 $cat >try.c <<EOCP
10697 #include <sys/types.h>
10698 #include <stdio.h>
10699 int main()
10700 {
10701         printf("%d\n", sizeof($lseektype));
10702 }
10703 EOCP
10704 set try
10705 if eval $compile_ok; then
10706         lseeksize=`./try`
10707         $echo " $lseeksize bytes." >&4
10708 else
10709         dflt='4'
10710         echo " "
10711         echo "(I can't seem to compile the test program.  Guessing...)"
10712         rp="What is the size of your file offsets (in bytes)?"
10713         . ./myread
10714         lseeksize="$ans"
10715 fi
10716 $rm -f try.c try
10717
10718 echo " "
10719 echo "Checking if your $make program sets \$(MAKE)..." >&4
10720 case "$make_set_make" in
10721 '')
10722         $sed 's/^X //' > testmake.mak << 'EOF'
10723 Xall:
10724 X       @echo 'maketemp="$(MAKE)"'
10725 EOF
10726         case "`$make -f testmake.mak 2>/dev/null`" in
10727         *maketemp=*) make_set_make='#' ;;
10728         *)      make_set_make="MAKE=$make" ;;
10729         esac
10730         $rm -f testmake.mak
10731         ;;
10732 esac
10733 case "$make_set_make" in
10734 '#') echo "Yup, it does.";;
10735 *) echo "Nope, it doesn't.";;
10736 esac
10737
10738 : see what type is used for mode_t
10739 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10740 set mode_t modetype int stdio.h sys/types.h
10741 eval $typedef_ask
10742
10743 : define a fucntion to check prototypes
10744 $cat > protochk <<EOSH
10745 $startsh
10746 cc="$cc"
10747 optimize="$optimize"
10748 ccflags="$ccflags"
10749 prototype="$prototype"
10750 define="$define"
10751 rm=$rm
10752 EOSH
10753
10754 $cat >> protochk <<'EOSH'
10755
10756 $rm -f try.c
10757 foo="$1"
10758 shift
10759 while test $# -ge 2; do
10760         case "$1" in
10761                 $define) echo "#include <$2>" >> try.c ;;
10762                 literal) echo "$2" >> try.c ;;
10763         esac
10764     shift 2
10765 done
10766 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10767 cat >> try.c <<'EOCP'
10768 #ifdef CAN_PROTOTYPE
10769 #define _(args) args
10770 #else
10771 #define _(args) ()
10772 #endif
10773 EOCP
10774 echo "$foo" >> try.c
10775 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10776 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10777 status=$?
10778 $rm -f try.[co]
10779 exit $status
10780 EOSH
10781 chmod +x protochk
10782 $eunicefix protochk
10783
10784 : see what type is used for size_t
10785 rp="What is the type used for the length parameter for string functions?"
10786 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10787 eval $typedef_ask
10788
10789 : check for type of arguments to gethostbyaddr. 
10790 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10791         case "$d_gethbyaddr" in
10792         $define)
10793                 $cat <<EOM
10794
10795 Checking to see what type of arguments are accepted by gethostbyaddr().
10796 EOM
10797                 hdrs="$define sys/types.h
10798                         $d_socket sys/socket.h 
10799                         $i_niin netinet/in.h 
10800                         $i_netdb netdb.h
10801                         $i_unistd unistd.h"
10802                 : The first arg can 'char *' or 'void *'
10803                 : The second arg is some of integral type
10804                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10805                         for yyy in size_t long int; do
10806                                 case "$netdb_host_type" in
10807                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10808                                         if ./protochk "$try" $hdrs; then
10809                                                 echo "Your system accepts $xxx for the first arg."
10810                                                 echo "...and $yyy for the second arg."
10811                                                 netdb_host_type="$xxx"
10812                                                 netdb_hlen_type="$yyy"
10813                                         fi
10814                                         ;;
10815                                 esac
10816                         done
10817                 done
10818                 : In case none of those worked, prompt the user.
10819                 case "$netdb_host_type" in
10820                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10821                         dflt='char *'
10822                         . ./myread
10823                         netdb_host_type=$ans
10824                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10825                         dflt="$sizetype"
10826                         . ./myread
10827                         netdb_hlen_type=$ans
10828                         ;;
10829                 esac
10830                 ;;
10831         *)      : no gethostbyaddr, so pick harmless defaults
10832                 netdb_host_type='char *'
10833                 netdb_hlen_type="$sizetype"
10834                 ;;
10835         esac
10836         # Remove the "const" if needed. -- but then we'll have a 
10837         # prototype clash!
10838         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10839 fi
10840
10841 : check for type of argument to gethostbyname. 
10842 if test "X$netdb_name_type" = X ; then
10843         case "$d_gethbyname" in
10844         $define)
10845                 $cat <<EOM
10846
10847 Checking to see what type of argument is accepted by gethostbyname().
10848 EOM
10849                 hdrs="$define sys/types.h
10850                         $d_socket sys/socket.h 
10851                         $i_niin netinet/in.h 
10852                         $i_netdb netdb.h
10853                         $i_unistd unistd.h"
10854                 for xxx in "const char *" "char *"; do
10855                         case "$netdb_name_type" in
10856                         '')     try="extern struct hostent *gethostbyname($xxx);"
10857                                 if ./protochk "$try" $hdrs; then
10858                                         echo "Your system accepts $xxx."
10859                                         netdb_name_type="$xxx"
10860                                 fi
10861                                 ;;
10862                         esac
10863                 done
10864                 : In case none of those worked, prompt the user.
10865                 case "$netdb_name_type" in
10866                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10867                         dflt='char *'
10868                         . ./myread
10869                         netdb_name_type=$ans
10870                         ;;
10871                 esac
10872                 ;;
10873         *)      : no gethostbyname, so pick harmless default
10874                 netdb_name_type='char *'
10875                 ;;
10876         esac
10877 fi
10878
10879 : check for type of 1st argument to getnetbyaddr. 
10880 if test "X$netdb_net_type" = X ; then
10881         case "$d_getnbyaddr" in
10882         $define)
10883                 $cat <<EOM
10884
10885 Checking to see what type of 1st argument is accepted by getnetbyaddr().
10886 EOM
10887                 hdrs="$define sys/types.h
10888                         $d_socket sys/socket.h 
10889                         $i_niin netinet/in.h 
10890                         $i_netdb netdb.h
10891                         $i_unistd unistd.h"
10892                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
10893                         case "$netdb_net_type" in
10894                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
10895                                 if ./protochk "$try" $hdrs; then
10896                                         echo "Your system accepts $xxx."
10897                                         netdb_net_type="$xxx"
10898                                 fi
10899                                 ;;
10900                         esac
10901                 done
10902                 : In case none of those worked, prompt the user.
10903                 case "$netdb_net_type" in
10904                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
10905                         dflt='long'
10906                         . ./myread
10907                         netdb_net_type=$ans
10908                         ;;
10909                 esac
10910                 ;;
10911         *)      : no getnetbyaddr, so pick harmless default
10912                 netdb_net_type='long'
10913                 ;;
10914         esac
10915 fi
10916 : locate the preferred pager for this system
10917 case "$pager" in
10918 '')
10919         dflt=''
10920         case "$pg" in
10921         /*) dflt=$pg;;
10922         esac
10923         case "$more" in
10924         /*) dflt=$more;;
10925         esac
10926         case "$less" in
10927         /*) dflt=$less;;
10928         esac
10929         case "$dflt" in
10930         '') dflt=/usr/ucb/more;;
10931         esac
10932         ;;
10933 *) dflt="$pager";;
10934 esac
10935 echo " "
10936 fn=f/
10937 rp='What pager is used on your system?'
10938 . ./getfile
10939 pager="$ans"
10940
10941 : see what type pids are declared as in the kernel
10942 rp="What is the type of process ids on this system?"
10943 set pid_t pidtype int stdio.h sys/types.h
10944 eval $typedef_ask
10945
10946 : check for length of pointer
10947 echo " "
10948 case "$ptrsize" in
10949 '')
10950         $echo $n "Checking to see how big your pointers are...$c" >&4
10951         if test "$voidflags" -gt 7; then
10952                 echo '#define VOID_PTR char *' > try.c
10953         else
10954                 echo '#define VOID_PTR void *' > try.c
10955         fi
10956         $cat >>try.c <<'EOCP'
10957 #include <stdio.h>
10958 main()
10959 {
10960         printf("%d\n", sizeof(VOID_PTR));
10961         exit(0);
10962 }
10963 EOCP
10964         set try
10965         if eval $compile_ok; then
10966                 ptrsize=`./try`
10967                 $echo " $ptrsize bytes." >&4
10968         else
10969                 dflt='4'
10970                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
10971                 rp="What is the size of a pointer (in bytes)?"
10972                 . ./myread
10973                 ptrsize="$ans"
10974         fi
10975         ;;
10976 esac
10977 $rm -f try.c try
10978
10979 : see if ar generates random libraries by itself
10980 echo " "
10981 echo "Checking how to generate random libraries on your machine..." >&4
10982 echo 'int bar1() { return bar2(); }' > bar1.c
10983 echo 'int bar2() { return 2; }' > bar2.c
10984 $cat > foo.c <<'EOP'
10985 main() { printf("%d\n", bar1()); exit(0); }
10986 EOP
10987 $cc $ccflags -c bar1.c >/dev/null 2>&1
10988 $cc $ccflags -c bar2.c >/dev/null 2>&1
10989 $cc $ccflags -c foo.c >/dev/null 2>&1
10990 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
10991 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
10992         ./foobar >/dev/null 2>&1; then
10993         echo "$ar appears to generate random libraries itself."
10994         orderlib=false
10995         ranlib=":"
10996 elif $ar ts bar$_a >/dev/null 2>&1 &&
10997         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
10998         ./foobar >/dev/null 2>&1; then
10999                 echo "a table of contents needs to be added with '$ar ts'."
11000                 orderlib=false
11001                 ranlib="$ar ts"
11002 else
11003         case "$ranlib" in
11004         :) ranlib='';;
11005         '')
11006                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11007                 $test -f $ranlib || ranlib=''
11008                 ;;
11009         esac
11010         if $test -n "$ranlib"; then
11011                 echo "your system has '$ranlib'; we'll use that."
11012                 orderlib=false
11013         else
11014                 echo "your system doesn't seem to support random libraries"
11015                 echo "so we'll use lorder and tsort to order the libraries."
11016                 orderlib=true
11017                 ranlib=":"
11018         fi
11019 fi
11020 $rm -f foo* bar* 
11021
11022 : check for type of arguments to select. 
11023 case "$selecttype" in
11024 '') case "$d_select" in
11025         $define)
11026                 $cat <<EOM
11027 Checking to see what type of arguments are accepted by select().
11028 EOM
11029                 hdrs="$define sys/types.h
11030                         $i_systime sys/time.h 
11031                         $i_sysselct sys/select.h
11032                         $d_socket sys/socket.h"
11033                 : The first arg can be int, unsigned, or size_t
11034                 : The last arg may or may not be 'const'
11035                 val=''
11036                 : void pointer has been seen but using that
11037                 : breaks the selectminbits test
11038                 for xxx in 'fd_set *' 'int *'; do
11039                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11040                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11041                                         case "$val" in
11042                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11043                                                 if ./protochk "$try" $hdrs; then
11044                                                         echo "Your system accepts $xxx."
11045                                                         val="$xxx"
11046                                                 fi
11047                                                 ;;
11048                                         esac
11049                                 done
11050                         done
11051                 done
11052                 case "$val" in
11053                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11054                         case "$d_fd_set" in
11055                                 $define) dflt="fd_set *" ;;
11056                                 *)              dflt="int *" ;;
11057                         esac
11058                         . ./myread
11059                         val=$ans
11060                         ;;
11061                 esac
11062                 selecttype="$val"
11063                 ;;
11064         *)      : no select, so pick a harmless default
11065                 selecttype='int *'
11066                 ;;
11067         esac
11068         ;;
11069 esac
11070
11071 : check for the select 'width'
11072 case "$selectminbits" in
11073 '') case "$d_select" in
11074         $define)
11075                 $cat <<EOM
11076
11077 Checking to see on how many bits at a time your select() operates...
11078 EOM
11079                 $cat >try.c <<EOCP
11080 #include <sys/types.h>
11081 #$i_time I_TIME
11082 #$i_systime I_SYS_TIME
11083 #$i_systimek I_SYS_TIME_KERNEL
11084 #ifdef I_TIME
11085 #   include <time.h>
11086 #endif
11087 #ifdef I_SYS_TIME
11088 #   ifdef I_SYS_TIME_KERNEL
11089 #       define KERNEL
11090 #   endif
11091 #   include <sys/time.h>
11092 #   ifdef I_SYS_TIME_KERNEL
11093 #       undef KERNEL
11094 #   endif
11095 #endif
11096 #$i_sysselct I_SYS_SELECT
11097 #ifdef I_SYS_SELECT
11098 #include <sys/select.h>
11099 #endif
11100 #include <stdio.h>
11101 $selecttype b;
11102 #define S sizeof(*(b))
11103 #define MINBITS 64
11104 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11105 #define NBITS  (NBYTES * 8)
11106 int main() {
11107     char s[NBYTES];
11108     struct timeval t;
11109     int i;
11110     FILE* fp;
11111     int fd;
11112
11113     fclose(stdin);
11114     fp = fopen("try.c", "r");
11115     if (fp == 0)
11116       exit(1);
11117     fd = fileno(fp);
11118     if (fd < 0)
11119       exit(2);
11120     b = ($selecttype)s;
11121     for (i = 0; i < NBITS; i++)
11122         FD_SET(i, b);
11123     t.tv_sec  = 0;
11124     t.tv_usec = 0;
11125     select(fd + 1, b, 0, 0, &t);
11126     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11127     printf("%d\n", i + 1);
11128     return 0;
11129 }
11130 EOCP
11131                 set try
11132                 if eval $compile_ok; then
11133                         selectminbits=`./try`
11134                         case "$selectminbits" in
11135                         '')     cat >&4 <<EOM
11136 Cannot figure out on how many bits at a time your select() operates.
11137 I'll play safe and guess it is 32 bits.
11138 EOM
11139                                 selectminbits=32
11140                                 bits="32 bits"
11141                                 ;;
11142                         1)      bits="1 bit" ;;
11143                         *)      bits="$selectminbits bits" ;;
11144                         esac
11145                         echo "Your select() operates on $bits at a time." >&4
11146                 else
11147                         rp='What is the minimum number of bits your select() operates on?'
11148                         case "$byteorder" in
11149                         1234|12345678)  dflt=32 ;;
11150                         *)              dflt=1  ;;
11151                         esac
11152                         . ./myread
11153                         val=$ans
11154                         selectminbits="$val"
11155                 fi
11156                 $rm -f try.* try
11157                 ;;
11158         *)      : no select, so pick a harmless default
11159                 selectminbits='32'
11160                 ;;
11161         esac
11162         ;;
11163 esac
11164
11165 : Trace out the files included by signal.h, then look for SIGxxx names.
11166 : Remove SIGARRAYSIZE used by HPUX.
11167 : Remove SIGTYP void lines used by OS2.
11168 xxx=`echo '#include <signal.h>' |
11169         $cppstdin $cppminus $cppflags 2>/dev/null |
11170         $grep '^[       ]*#.*include' | 
11171         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11172 : Check this list of files to be sure we have parsed the cpp output ok.
11173 : This will also avoid potentially non-existent files, such 
11174 : as ../foo/bar.h
11175 xxxfiles=''
11176 for xx in $xxx /dev/null ; do
11177         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11178 done
11179 : If we have found no files, at least try signal.h
11180 case "$xxxfiles" in
11181 '')     xxxfiles=`./findhdr signal.h` ;;
11182 esac
11183 xxx=`awk '
11184 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11185         print substr($2, 4, 20)
11186 }
11187 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11188         print substr($3, 4, 20)
11189 }' $xxxfiles`
11190 : Append some common names just in case the awk scan failed.
11191 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11192 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11193 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11194 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11195 : generate a few handy files for later
11196 $cat > signal.c <<'EOCP'
11197 #include <sys/types.h>
11198 #include <signal.h>
11199 #include <stdio.h>
11200 int main() {
11201
11202 /* Strange style to avoid deeply-nested #if/#else/#endif */
11203 #ifndef NSIG
11204 #  ifdef _NSIG
11205 #    define NSIG (_NSIG)
11206 #  endif
11207 #endif
11208
11209 #ifndef NSIG
11210 #  ifdef SIGMAX
11211 #    define NSIG (SIGMAX+1)
11212 #  endif
11213 #endif
11214
11215 #ifndef NSIG
11216 #  ifdef SIG_MAX
11217 #    define NSIG (SIG_MAX+1)
11218 #  endif
11219 #endif
11220
11221 #ifndef NSIG
11222 #  ifdef MAXSIG
11223 #    define NSIG (MAXSIG+1)
11224 #  endif
11225 #endif
11226
11227 #ifndef NSIG
11228 #  ifdef MAX_SIG
11229 #    define NSIG (MAX_SIG+1)
11230 #  endif
11231 #endif
11232
11233 #ifndef NSIG
11234 #  ifdef SIGARRAYSIZE
11235 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11236 #  endif
11237 #endif
11238
11239 #ifndef NSIG
11240 #  ifdef _sys_nsig
11241 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11242 #  endif
11243 #endif
11244
11245 /* Default to some arbitrary number that's big enough to get most
11246    of the common signals.
11247 */
11248 #ifndef NSIG
11249 #    define NSIG 50
11250 #endif
11251
11252 printf("NSIG %d\n", NSIG);
11253
11254 #ifndef JUST_NSIG
11255
11256 EOCP
11257
11258 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11259 {
11260         printf "#ifdef SIG"; printf $1; printf "\n"
11261         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11262         printf $1; printf ");\n"
11263         printf "#endif\n"
11264 }
11265 END {
11266         printf "#endif /* JUST_NSIG */\n";
11267         printf "}\n";
11268 }
11269 ' >>signal.c
11270 $cat >signal.awk <<'EOP'
11271 BEGIN { ndups = 0 }
11272 $1 ~ /^NSIG$/ { nsig = $2 }
11273 ($1 !~ /^NSIG$/) && (NF == 2) {
11274     if ($2 > maxsig) { maxsig = $2 }
11275     if (sig_name[$2]) {
11276         dup_name[ndups] = $1
11277         dup_num[ndups] = $2
11278         ndups++ 
11279     }
11280     else {
11281         sig_name[$2] = $1
11282         sig_num[$2] = $2
11283     }
11284
11285 }
11286 END { 
11287     if (nsig == 0) { nsig = maxsig + 1 }
11288         for (n = 1; n < nsig; n++) {
11289                 if (sig_name[n]) {
11290                         printf("%s %d\n", sig_name[n], sig_num[n])
11291                 }
11292                 else {
11293                         printf("NUM%d %d\n", n, n) 
11294                 }
11295         }
11296     for (n = 0; n < ndups; n++) {
11297                 printf("%s %d\n", dup_name[n], dup_num[n])
11298     }
11299 }
11300 EOP
11301 $cat >signal_cmd <<EOS
11302 $startsh
11303 if $test -s signal.lst; then
11304     echo "Using your existing signal.lst file"
11305         exit 0
11306 fi
11307 xxx="$xxx"
11308 EOS
11309 $cat >>signal_cmd <<'EOS'
11310
11311 set signal
11312 if eval $compile_ok; then
11313         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11314 else
11315         echo "(I can't seem be able to compile the whole test program)" >&4
11316         echo "(I'll try it in little pieces.)" >&4
11317         set signal -DJUST_NSIG
11318         if eval $compile_ok; then
11319                 ./signal$_exe > signal.nsg
11320                 $cat signal.nsg
11321         else
11322                 echo "I can't seem to figure out how many signals you have." >&4
11323                 echo "Guessing 50." >&4
11324                 echo 'NSIG 50' > signal.nsg
11325         fi
11326         : Now look at all the signal names, one at a time.
11327         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11328                 $cat > signal.c <<EOCP
11329 #include <sys/types.h>
11330 #include <signal.h>
11331 #include <stdio.h>
11332 int main() {
11333 printf("$xx %d\n", SIG${xx});
11334 return 0;
11335 }
11336 EOCP
11337                 set signal
11338                 if eval $compile; then
11339                         echo "SIG${xx} found."
11340                         ./signal$_exe  >> signal.ls1
11341                 else
11342                         echo "SIG${xx} NOT found."
11343                 fi
11344         done
11345         if $test -s signal.ls1; then
11346                 $cat signal.nsg signal.ls1 |
11347                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11348         fi
11349
11350 fi
11351 if $test -s signal.lst; then
11352         :
11353 else
11354         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11355         echo 'kill -l' >signal
11356         set X `csh -f <signal`
11357         $rm -f signal
11358         shift
11359         case $# in
11360         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11361         esac
11362         echo $@ | $tr ' ' $trnl | \
11363                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11364 fi
11365 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11366 EOS
11367 chmod a+x signal_cmd
11368 $eunicefix signal_cmd
11369
11370 : generate list of signal names
11371 echo " "
11372 case "$sig_name_init" in
11373 '') doinit=yes ;;
11374 *)  case "$sig_num_init" in
11375     ''|*,*) doinit=yes ;;
11376     esac ;;
11377 esac
11378 case "$doinit" in
11379 yes)
11380         echo "Generating a list of signal names and numbers..." >&4
11381         . ./signal_cmd
11382         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11383         sig_name="ZERO $sig_name"
11384         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11385                                                 { printf "\"%s\", ", $1 }
11386                                                 END { printf "0\n" }' signal.lst`
11387         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11388         sig_num="0 $sig_num"
11389         sig_num_init=`$awk 'BEGIN { printf "0, " }
11390                                         { printf "%d, ", $2}
11391                                         END { printf "0\n"}' signal.lst`
11392         ;;
11393 esac
11394 echo "The following signals are available:"
11395 echo " "
11396 echo $sig_name | $awk \
11397 'BEGIN { linelen = 0 }
11398 {
11399         for (i = 1; i <= NF; i++) {
11400                 name = "SIG" $i " "
11401                 linelen = linelen + length(name)
11402                 if (linelen > 70) {
11403                         printf "\n"
11404                         linelen = length(name)
11405                 }
11406                 printf "%s", name
11407         }
11408         printf "\n"
11409 }'
11410 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11411
11412 : see what type is used for signed size_t
11413 set ssize_t ssizetype int stdio.h sys/types.h
11414 eval $typedef
11415 dflt="$ssizetype"
11416 $cat > ssize.c <<EOM
11417 #include <stdio.h>
11418 #include <sys/types.h>
11419 #define Size_t $sizetype
11420 #define SSize_t $dflt
11421 main()
11422 {
11423         if (sizeof(Size_t) == sizeof(SSize_t))
11424                 printf("$dflt\n");
11425         else if (sizeof(Size_t) == sizeof(int))
11426                 printf("int\n");
11427         else 
11428                 printf("long\n");
11429         exit(0);
11430 }
11431 EOM
11432 echo " "
11433 set ssize
11434 if eval $compile_ok && ./ssize > /dev/null; then
11435         ssizetype=`./ssize`
11436         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11437 else
11438         $cat >&4 <<EOM
11439 Help! I can't compile and run the ssize_t test program: please enlighten me!
11440 (This is probably a misconfiguration in your system or libraries, and
11441 you really ought to fix it.  Still, I'll try anyway.)
11442
11443 I need a type that is the same size as $sizetype, but is guaranteed to
11444 be signed.  Common values are ssize_t, int and long.
11445
11446 EOM
11447         rp="What signed type is the same size as $sizetype?"
11448         . ./myread
11449         ssizetype="$ans"
11450 fi
11451 $rm -f ssize ssize.*
11452
11453 : see what type of char stdio uses.
11454 echo " "
11455 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11456         echo "Your stdio uses unsigned chars." >&4
11457         stdchar="unsigned char"
11458 else
11459         echo "Your stdio uses signed chars." >&4
11460         stdchar="char"
11461 fi
11462
11463 : see if time exists
11464 echo " "
11465 if test "X$d_time" = X -o X"$timetype" = X; then
11466     if set time val -f d_time; eval $csym; $val; then
11467                 echo 'time() found.' >&4
11468                 val="$define"
11469                 rp="What is the type returned by time() on this system?"
11470                 set time_t timetype long stdio.h sys/types.h
11471                 eval $typedef_ask
11472     else
11473                 echo 'time() not found, hope that will do.' >&4
11474                 val="$undef"
11475                 timetype='int';
11476     fi
11477     set d_time
11478     eval $setvar
11479 fi
11480
11481 : see what type uids are declared as in the kernel
11482 echo " "
11483 echo "Looking for the type for user ids returned by getuid()."
11484 set uid_t uidtype xxx stdio.h sys/types.h
11485 eval $typedef
11486 case "$uidtype" in
11487 xxx)
11488         xxx=`./findhdr sys/user.h`
11489         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11490         case $1 in
11491         unsigned) dflt="$1 $2" ;;
11492         *) dflt="$1" ;;
11493         esac
11494         ;;
11495 *) dflt="$uidtype";;
11496 esac
11497 case "$uidtype" in
11498 uid_t)  echo "uid_t found." ;;
11499 *)      rp="What is the type for user ids returned by getuid()?"
11500         . ./myread
11501         uidtype="$ans"
11502         ;;
11503 esac
11504
11505 : see if dbm.h is available
11506 : see if dbmclose exists
11507 set dbmclose d_dbmclose
11508 eval $inlibc
11509
11510 case "$d_dbmclose" in
11511 $define)
11512         set dbm.h i_dbm
11513         eval $inhdr
11514         case "$i_dbm" in
11515         $define)
11516                 val="$undef"
11517                 set i_rpcsvcdbm
11518                 eval $setvar
11519                 ;;
11520         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11521                 eval $inhdr
11522                 ;;
11523         esac
11524         ;;
11525 *)      echo "We won't be including <dbm.h>"
11526         val="$undef"
11527         set i_dbm
11528         eval $setvar
11529         val="$undef"
11530         set i_rpcsvcdbm
11531         eval $setvar
11532         ;;
11533 esac
11534
11535 : see if this is a sys/file.h system
11536 val=''
11537 set sys/file.h val
11538 eval $inhdr
11539
11540 : do we need to include sys/file.h ?
11541 case "$val" in
11542 "$define")
11543         echo " "
11544         if $h_sysfile; then
11545                 val="$define"
11546                 echo "We'll be including <sys/file.h>." >&4
11547         else
11548                 val="$undef"
11549                 echo "We won't be including <sys/file.h>." >&4
11550         fi
11551         ;;
11552 *)
11553         h_sysfile=false
11554         ;;
11555 esac
11556 set i_sysfile
11557 eval $setvar
11558
11559 : see if fcntl.h is there
11560 val=''
11561 set fcntl.h val
11562 eval $inhdr
11563
11564 : see if we can include fcntl.h
11565 case "$val" in
11566 "$define")
11567         echo " "
11568         if $h_fcntl; then
11569                 val="$define"
11570                 echo "We'll be including <fcntl.h>." >&4
11571         else
11572                 val="$undef"
11573                 if $h_sysfile; then
11574         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11575                 else
11576                         echo "We won't be including <fcntl.h>." >&4
11577                 fi
11578         fi
11579         ;;
11580 *)
11581         h_fcntl=false
11582         val="$undef"
11583         ;;
11584 esac
11585 set i_fcntl
11586 eval $setvar
11587
11588 : see if locale.h is available
11589 set locale.h i_locale
11590 eval $inhdr
11591
11592 : see if mach cthreads are available
11593 if test "X$usethreads" = "X$define"; then
11594         set mach/cthreads.h i_machcthr
11595         eval $inhdr
11596 else
11597         i_machcthr="$undef"
11598 fi
11599
11600
11601
11602 : see if this is a math.h system
11603 set math.h i_math
11604 eval $inhdr
11605
11606 : see if ndbm.h is available
11607 set ndbm.h t_ndbm
11608 eval $inhdr
11609 case "$t_ndbm" in
11610 $define)
11611         : see if dbm_open exists
11612         set dbm_open d_dbm_open
11613         eval $inlibc
11614         case "$d_dbm_open" in
11615         $undef)
11616                 t_ndbm="$undef"
11617                 echo "We won't be including <ndbm.h>"
11618                 ;;
11619         esac
11620         ;;
11621 esac
11622 val="$t_ndbm"
11623 set i_ndbm
11624 eval $setvar
11625
11626 : see if net/errno.h is available
11627 val=''
11628 set net/errno.h val
11629 eval $inhdr
11630
11631 : Unfortunately, it causes problems on some systems.  Arrgh.
11632 case "$val" in
11633 $define)
11634         cat > try.c <<'EOM'
11635 #include <stdio.h>
11636 #include <errno.h>
11637 #include <net/errno.h>
11638 int func()
11639 {
11640         return ENOTSOCK;
11641 }
11642 EOM
11643         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11644                 echo "We'll be including <net/errno.h>." >&4
11645         else
11646                 echo "We won't be including <net/errno.h>." >&4
11647                 val="$undef"
11648         fi
11649         $rm -f try.* try
11650         ;;
11651 esac
11652 set i_neterrno
11653 eval $setvar
11654
11655 : see if this is a poll.h system
11656 set poll.h i_poll
11657 eval $inhdr
11658
11659 : get C preprocessor symbols handy
11660 echo " "
11661 $echo $n "Hmm... $c"
11662 echo $al | $tr ' ' $trnl >Cppsym.know
11663 $cat <<EOSS >Cppsym
11664 $startsh
11665 case "\$1" in
11666 -l) list=true
11667         shift
11668         ;;
11669 esac
11670 unknown=''
11671 case "\$list\$#" in
11672 1|2)
11673         for sym do
11674                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11675                         exit 0
11676                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11677                         :
11678                 else
11679                         unknown="\$unknown \$sym"
11680                 fi
11681         done
11682         set X \$unknown
11683         shift
11684         ;;
11685 esac
11686 case \$# in
11687 0) exit 1;;
11688 esac
11689 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11690 #ifdef \1\\
11691 exit 0; _ _ _ _\1\\      \1\\
11692 #endif\\
11693 /' >Cppsym\$\$
11694 echo "exit 1; _ _ _" >>Cppsym\$\$
11695 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11696 case "\$list" in
11697 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11698 *)
11699         sh Cppsym2\$\$
11700         status=\$?
11701         ;;
11702 esac
11703 $rm -f Cppsym\$\$ Cppsym2\$\$
11704 exit \$status
11705 EOSS
11706 chmod +x Cppsym
11707 $eunicefix Cppsym
11708 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11709
11710 : now check the C compiler for additional symbols
11711 $cat >ccsym <<EOS
11712 $startsh
11713 $cat >tmp.c <<EOF
11714 extern int foo;
11715 EOF
11716 for i in \`$cc -v -c tmp.c 2>&1\`
11717 do
11718         case "\$i" in
11719         -D*) echo "\$i" | $sed 's/^-D//';;
11720         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11721         esac
11722 done
11723 $rm -f try.c
11724 EOS
11725 chmod +x ccsym
11726 $eunicefix ccsym
11727 ./ccsym > ccsym1.raw
11728 if $test -s ccsym1.raw; then
11729        $sort ccsym1.raw | $uniq >ccsym.raw
11730 else
11731        mv ccsym1.raw ccsym.raw
11732 fi
11733
11734 $awk '/\=/ { print $0; next }
11735         { print $0"=1" }' ccsym.raw >ccsym.list
11736 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11737 $comm -13 ccsym.true ccsym.list >ccsym.own
11738 $comm -12 ccsym.true ccsym.list >ccsym.com
11739 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11740 also=''
11741 symbols='symbols'
11742 if $test -z ccsym.raw; then
11743         echo "Your C compiler doesn't seem to define any symbol!" >&4
11744         echo " "
11745         echo "However, your C preprocessor defines the following ones:"
11746         $cat Cppsym.true
11747 else
11748         if $test -s ccsym.com; then
11749                 echo "Your C compiler and pre-processor define these symbols:"
11750                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11751                 also='also '
11752                 symbols='ones'
11753                 $test "$silent" || sleep 1
11754         fi
11755         if $test -s ccsym.cpp; then
11756                 $test "$also" && echo " "
11757                 echo "Your C pre-processor ${also}defines the following $symbols:"
11758                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11759                 also='further '
11760                 $test "$silent" || sleep 1
11761         fi
11762         if $test -s ccsym.own; then
11763                 $test "$also" && echo " "
11764                 echo "Your C compiler ${also}defines the following cpp variables:"
11765                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11766                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11767                 $test "$silent" || sleep 1
11768         fi
11769 fi
11770 $rm -f ccsym*
11771
11772 : see if this is a termio system
11773 val="$undef"
11774 val2="$undef"
11775 val3="$undef"
11776 if $test `./findhdr termios.h`; then
11777         set tcsetattr i_termios
11778         eval $inlibc
11779         val3="$i_termios"
11780 fi
11781 echo " "
11782 case "$val3" in
11783 "$define") echo "You have POSIX termios.h... good!" >&4;;
11784 *) if ./Cppsym pyr; then
11785                 case "`/bin/universe`" in
11786                 ucb) if $test `./findhdr sgtty.h`; then
11787                                 val2="$define"
11788                                 echo "<sgtty.h> found." >&4
11789                         else
11790                                 echo "System is pyramid with BSD universe."
11791                                 echo "<sgtty.h> not found--you could have problems." >&4
11792                         fi;;
11793                 *) if $test `./findhdr termio.h`; then
11794                                 val="$define"
11795                                 echo "<termio.h> found." >&4
11796                         else
11797                                 echo "System is pyramid with USG universe."
11798                                 echo "<termio.h> not found--you could have problems." >&4
11799                         fi;;
11800                 esac
11801         elif ./usg; then
11802                 if $test `./findhdr termio.h`; then
11803                         echo "<termio.h> found." >&4
11804                         val="$define"
11805                 elif $test `./findhdr sgtty.h`; then
11806                         echo "<sgtty.h> found." >&4
11807                         val2="$define"
11808                 else
11809 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11810                 fi
11811         else
11812                 if $test `./findhdr sgtty.h`; then
11813                         echo "<sgtty.h> found." >&4
11814                         val2="$define"
11815                 elif $test `./findhdr termio.h`; then
11816                         echo "<termio.h> found." >&4
11817                         val="$define"
11818                 else
11819 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11820                 fi
11821         fi;;
11822 esac
11823 set i_termio; eval $setvar
11824 val=$val2; set i_sgtty; eval $setvar
11825 val=$val3; set i_termios; eval $setvar
11826
11827 : see if stdarg is available
11828 echo " "
11829 if $test `./findhdr stdarg.h`; then
11830         echo "<stdarg.h> found." >&4
11831         valstd="$define"
11832 else
11833         echo "<stdarg.h> NOT found." >&4
11834         valstd="$undef"
11835 fi
11836
11837 : see if varags is available
11838 echo " "
11839 if $test `./findhdr varargs.h`; then
11840         echo "<varargs.h> found." >&4
11841 else
11842         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11843 fi
11844
11845 : set up the varargs testing programs
11846 $cat > varargs.c <<EOP
11847 #ifdef I_STDARG
11848 #include <stdarg.h>
11849 #endif
11850 #ifdef I_VARARGS
11851 #include <varargs.h>
11852 #endif
11853
11854 #ifdef I_STDARG
11855 int f(char *p, ...)
11856 #else
11857 int f(va_alist)
11858 va_dcl
11859 #endif
11860 {
11861         va_list ap;
11862 #ifndef I_STDARG
11863         char *p;
11864 #endif
11865 #ifdef I_STDARG
11866         va_start(ap,p);
11867 #else
11868         va_start(ap);
11869         p = va_arg(ap, char *);
11870 #endif
11871         va_end(ap);
11872 }
11873 EOP
11874 $cat > varargs <<EOP
11875 $startsh
11876 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
11877         echo "true"
11878 else
11879         echo "false"
11880 fi
11881 $rm -f varargs$_o
11882 EOP
11883 chmod +x varargs
11884
11885 : now check which varargs header should be included
11886 echo " "
11887 i_varhdr=''
11888 case "$valstd" in
11889 "$define")
11890         if `./varargs I_STDARG`; then
11891                 val='stdarg.h'
11892         elif `./varargs I_VARARGS`; then
11893                 val='varargs.h'
11894         fi
11895         ;;
11896 *)
11897         if `./varargs I_VARARGS`; then
11898                 val='varargs.h'
11899         fi
11900         ;;
11901 esac
11902 case "$val" in
11903 '')
11904 echo "I could not find the definition for va_dcl... You have problems..." >&4
11905         val="$undef"; set i_stdarg; eval $setvar
11906         val="$undef"; set i_varargs; eval $setvar
11907         ;;
11908 *) 
11909         set i_varhdr
11910         eval $setvar
11911         case "$i_varhdr" in
11912         stdarg.h)
11913                 val="$define"; set i_stdarg; eval $setvar
11914                 val="$undef"; set i_varargs; eval $setvar
11915                 ;;
11916         varargs.h)
11917                 val="$undef"; set i_stdarg; eval $setvar
11918                 val="$define"; set i_varargs; eval $setvar
11919                 ;;
11920         esac
11921         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
11922 esac
11923 $rm -f varargs*
11924
11925 : see if stddef is available
11926 set stddef.h i_stddef
11927 eval $inhdr
11928
11929 : see if sys/access.h is available
11930 set sys/access.h i_sysaccess
11931 eval $inhdr
11932
11933 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
11934 set sys/filio.h i_sysfilio
11935 eval $inhdr
11936 echo " "
11937 if $test `./findhdr sys/ioctl.h`; then
11938         val="$define"
11939         echo '<sys/ioctl.h> found.' >&4
11940 else
11941         val="$undef"
11942         if $test $i_sysfilio = "$define"; then
11943             echo '<sys/ioctl.h> NOT found.' >&4
11944         else
11945                 $test $i_sgtty = "$define" && xxx="sgtty.h"
11946                 $test $i_termio = "$define" && xxx="termio.h"
11947                 $test $i_termios = "$define" && xxx="termios.h"
11948 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
11949         fi
11950 fi
11951 set i_sysioctl
11952 eval $setvar
11953
11954 : see if this is a sys/param system
11955 set sys/param.h i_sysparam
11956 eval $inhdr
11957
11958 : see if sys/resource.h has to be included
11959 set sys/resource.h i_sysresrc
11960 eval $inhdr
11961
11962 : see if sys/security.h is available
11963 set sys/security.h i_syssecrt
11964 eval $inhdr
11965
11966 : see if this is a sys/un.h system
11967 set sys/un.h i_sysun
11968 eval $inhdr
11969
11970 : see if this is a syswait system
11971 set sys/wait.h i_syswait
11972 eval $inhdr
11973
11974 : see if this is an utime system
11975 set utime.h i_utime
11976 eval $inhdr
11977
11978 : see if this is a values.h system
11979 set values.h i_values
11980 eval $inhdr
11981
11982 : see if this is a vfork system
11983 case "$d_vfork" in
11984 "$define")
11985         set vfork.h i_vfork
11986         eval $inhdr
11987         ;;
11988 *)
11989         i_vfork="$undef"
11990         ;;
11991 esac
11992
11993 : see if gdbm.h is available
11994 set gdbm.h t_gdbm
11995 eval $inhdr
11996 case "$t_gdbm" in
11997 $define)
11998         : see if gdbm_open exists
11999         set gdbm_open d_gdbm_open
12000         eval $inlibc
12001         case "$d_gdbm_open" in
12002         $undef)
12003                 t_gdbm="$undef"
12004                 echo "We won't be including <gdbm.h>"
12005                 ;;
12006         esac
12007         ;;
12008 esac
12009 val="$t_gdbm"
12010 set i_gdbm
12011 eval $setvar
12012
12013 echo " "
12014 echo "Looking for extensions..." >&4
12015 tdir=`pwd`
12016 cd $rsrc/ext
12017 : If we are using the old config.sh, known_extensions may contain
12018 : old or inaccurate or duplicate values.
12019 known_extensions=''
12020 nonxs_extensions=''
12021 : We do not use find because it might not be available.
12022 : We do not just use MANIFEST because the user may have dropped
12023 : some additional extensions into the source tree and expect them
12024 : to be built.
12025 for xxx in * ; do
12026         case "$xxx" in
12027         DynaLoader|dynaload) ;;
12028         *)      if $test -f $xxx/$xxx.xs; then
12029                         known_extensions="$known_extensions $xxx"
12030                 elif $test -f $xxx/Makefile.PL; then
12031                         nonxs_extensions="$nonxs_extensions $xxx"
12032                 else
12033                         if $test -d $xxx; then
12034                                 # Look for nested extensions, eg. Devel/Dprof.
12035                                 cd $xxx
12036                                 for yyy in * ; do
12037                                 if $test -f $yyy/$yyy.xs; then
12038                                         known_extensions="$known_extensions $xxx/$yyy"
12039                                 elif $test -f $yyy/Makefile.PL; then
12040                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12041                                 fi
12042                                 done
12043                                 cd ..
12044                         fi
12045                 fi 
12046                 ;;
12047         esac
12048 done
12049 set X $nonxs_extensions
12050 shift
12051 nonxs_extensions="$*"
12052 set X $known_extensions
12053 shift
12054 known_extensions="$*"
12055 cd $tdir
12056
12057 : Now see which are supported on this system.
12058 avail_ext=''
12059 for xxx in $known_extensions ; do
12060         case "$xxx" in
12061         DB_File|db_file)
12062                 case "$i_db" in
12063                 $define) avail_ext="$avail_ext $xxx" ;;
12064                 esac
12065                 ;;
12066         GDBM_File|gdbm_fil)
12067                 case "$i_gdbm" in 
12068                 $define) avail_ext="$avail_ext $xxx" ;;
12069                 esac
12070                 ;;
12071         NDBM_File|ndbm_fil)
12072                 case "$i_ndbm" in
12073                 $define) avail_ext="$avail_ext $xxx" ;;
12074                 esac
12075                 ;;
12076         ODBM_File|odbm_fil) 
12077                 case "${i_dbm}${i_rpcsvcdbm}" in
12078                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12079                 esac
12080                 ;;
12081         POSIX|posix)
12082                 case "$useposix" in
12083                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12084                 esac
12085                 ;;
12086         Opcode|opcode)
12087                 case "$useopcode" in
12088                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12089                 esac
12090                 ;;
12091         Socket|socket)
12092                 case "$d_socket" in 
12093                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12094                 esac
12095                 ;;
12096         Thread|thread)
12097                 case "$usethreads" in 
12098                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12099                 esac
12100                 ;;
12101         IPC/SysV|ipc/sysv)
12102                 : XXX Do we need a useipcsysv variable here
12103                 case "${d_msg}${d_sem}${d_shm}" in 
12104                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12105                 esac
12106                 ;;
12107         *)      avail_ext="$avail_ext $xxx"
12108                 ;;
12109         esac
12110 done
12111
12112 set X $avail_ext
12113 shift
12114 avail_ext="$*"
12115
12116 : Now see which nonxs extensions are supported on this system.
12117 : For now assume all are.
12118 nonxs_ext=''
12119 for xxx in $nonxs_extensions ; do
12120         case "$xxx" in
12121         *)      nonxs_ext="$nonxs_ext $xxx"
12122                 ;;
12123         esac
12124 done
12125
12126 set X $nonxs_ext
12127 shift
12128 nonxs_ext="$*"
12129
12130 case $usedl in
12131 $define)
12132         $cat <<EOM
12133 A number of extensions are supplied with $package.  You may choose to
12134 compile these extensions for dynamic loading (the default), compile
12135 them into the $package executable (static loading), or not include
12136 them at all.  Answer "none" to include no extensions.
12137 Note that DynaLoader is always built and need not be mentioned here.
12138
12139 EOM
12140         case "$dynamic_ext" in
12141         '') dflt="$avail_ext" ;;
12142         *)      dflt="$dynamic_ext"
12143                 # Perhaps we are reusing an old out-of-date config.sh.
12144                 case "$hint" in
12145                 previous)
12146                         if test X"$dynamic_ext" != X"$avail_ext"; then
12147                                 $cat <<EOM
12148 NOTICE:  Your previous config.sh list may be incorrect. 
12149 The extensions now available to you are 
12150         ${avail_ext}
12151 but the default list from your previous config.sh is
12152         ${dynamic_ext} 
12153
12154 EOM
12155                         fi
12156                         ;;
12157                 esac
12158                 ;;
12159         esac
12160         case "$dflt" in
12161         '')     dflt=none;;
12162         esac
12163         rp="What extensions do you wish to load dynamically?"
12164         . ./myread
12165         case "$ans" in
12166         none) dynamic_ext=' ' ;;
12167         *) dynamic_ext="$ans" ;;
12168         esac
12169
12170         case "$static_ext" in
12171         '')
12172                 : Exclude those already listed in dynamic linking
12173                 dflt=''
12174                 for xxx in $avail_ext; do
12175                         case " $dynamic_ext " in
12176                         *" $xxx "*) ;;
12177                         *) dflt="$dflt $xxx" ;;
12178                         esac
12179                 done
12180                 set X $dflt
12181                 shift
12182                 dflt="$*"
12183                 ;;
12184         *)  dflt="$static_ext" 
12185                 ;;
12186         esac
12187
12188         case "$dflt" in
12189         '')     dflt=none;;
12190         esac
12191         rp="What extensions do you wish to load statically?"
12192         . ./myread
12193         case "$ans" in
12194         none) static_ext=' ' ;;
12195         *) static_ext="$ans" ;;
12196         esac
12197         ;;
12198 *)
12199         $cat <<EOM
12200 A number of extensions are supplied with $package.  Answer "none" 
12201 to include no extensions. 
12202 Note that DynaLoader is always built and need not be mentioned here.
12203
12204 EOM
12205         case "$static_ext" in
12206         '') dflt="$avail_ext" ;;
12207         *)      dflt="$static_ext"
12208                 # Perhaps we are reusing an old out-of-date config.sh.
12209                 case "$hint" in
12210                 previous)
12211                         if test X"$static_ext" != X"$avail_ext"; then
12212                                 $cat <<EOM
12213 NOTICE:  Your previous config.sh list may be incorrect. 
12214 The extensions now available to you are 
12215         ${avail_ext}
12216 but the default list from your previous config.sh is
12217         ${static_ext} 
12218
12219 EOM
12220                         fi
12221                         ;;
12222                 esac
12223                 ;;
12224         esac
12225         : Exclude those that are not xs extensions
12226         case "$dflt" in
12227         '')     dflt=none;;
12228         esac
12229         rp="What extensions do you wish to include?"
12230         . ./myread
12231         case "$ans" in
12232         none) static_ext=' ' ;;
12233         *) static_ext="$ans" ;;
12234         esac
12235         ;;
12236 esac
12237
12238 set X $dynamic_ext $static_ext $nonxs_ext
12239 shift
12240 extensions="$*"
12241
12242 : Remove build directory name from cppstdin so it can be used from
12243 : either the present location or the final installed location.
12244 echo " "
12245 : Get out of the UU directory to get correct path name.
12246 cd ..
12247 case "$cppstdin" in
12248 `pwd`/cppstdin)
12249         echo "Stripping down cppstdin path name"
12250         cppstdin=cppstdin
12251         ;;
12252 esac
12253 cd UU
12254
12255 : end of configuration questions
12256 echo " "
12257 echo "End of configuration questions."
12258 echo " "
12259
12260 : back to where it started
12261 if test -d ../UU; then
12262         cd ..
12263 fi
12264
12265 : configuration may be patched via a 'config.over' file
12266 if $test -f config.over; then
12267         echo " "
12268         dflt=y
12269         rp='I see a config.over file.  Do you wish to load it?'
12270         . UU/myread
12271         case "$ans" in
12272         n*) echo "OK, I'll ignore it.";;
12273         *)      . ./config.over
12274                 echo "Configuration override changes have been loaded."
12275                 ;;
12276         esac
12277 fi
12278
12279 : in case they want portability, strip down executable paths
12280 case "$d_portable" in
12281 "$define")
12282         echo " "
12283         echo "Stripping down executable paths..." >&4
12284         for file in $loclist $trylist; do
12285                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12286                         eval $file="\$file"
12287                 fi
12288         done
12289         ;;
12290 esac
12291
12292 : create config.sh file
12293 echo " "
12294 echo "Creating config.sh..." >&4
12295 $spitshell <<EOT >config.sh
12296 $startsh
12297 #
12298 # This file was produced by running the Configure script. It holds all the
12299 # definitions figured out by Configure. Should you modify one of these values,
12300 # do not forget to propagate your changes by running "Configure -der". You may
12301 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12302 #
12303
12304 # Package name      : $package
12305 # Source directory  : $src
12306 # Configuration time: $cf_time
12307 # Configured by     : $cf_by
12308 # Target system     : $myuname
12309
12310 Author='$Author'
12311 Date='$Date'
12312 Header='$Header'
12313 Id='$Id'
12314 Locker='$Locker'
12315 Log='$Log'
12316 Mcc='$Mcc'
12317 RCSfile='$RCSfile'
12318 Revision='$Revision'
12319 Source='$Source'
12320 State='$State'
12321 _a='$_a'
12322 _exe='$_exe'
12323 _o='$_o'
12324 afs='$afs'
12325 alignbytes='$alignbytes'
12326 ansi2knr='$ansi2knr'
12327 aphostname='$aphostname'
12328 apiversion='$apiversion'
12329 ar='$ar'
12330 archlib='$archlib'
12331 archlibexp='$archlibexp'
12332 archname64='$archname64'
12333 archname='$archname'
12334 archobjs='$archobjs'
12335 awk='$awk'
12336 baserev='$baserev'
12337 bash='$bash'
12338 bin='$bin'
12339 binexp='$binexp'
12340 bison='$bison'
12341 byacc='$byacc'
12342 byteorder='$byteorder'
12343 c='$c'
12344 castflags='$castflags'
12345 cat='$cat'
12346 cc='$cc'
12347 cccdlflags='$cccdlflags'
12348 ccdlflags='$ccdlflags'
12349 ccflags='$ccflags'
12350 cf_by='$cf_by'
12351 cf_email='$cf_email'
12352 cf_time='$cf_time'
12353 chgrp='$chgrp'
12354 chmod='$chmod'
12355 chown='$chown'
12356 clocktype='$clocktype'
12357 comm='$comm'
12358 compress='$compress'
12359 contains='$contains'
12360 cp='$cp'
12361 cpio='$cpio'
12362 cpp='$cpp'
12363 cpp_stuff='$cpp_stuff'
12364 cppflags='$cppflags'
12365 cpplast='$cpplast'
12366 cppminus='$cppminus'
12367 cpprun='$cpprun'
12368 cppstdin='$cppstdin'
12369 cryptlib='$cryptlib'
12370 csh='$csh'
12371 d_Gconvert='$d_Gconvert'
12372 d_access='$d_access'
12373 d_accessx='$d_accessx'
12374 d_alarm='$d_alarm'
12375 d_archlib='$d_archlib'
12376 d_attribut='$d_attribut'
12377 d_bcmp='$d_bcmp'
12378 d_bcopy='$d_bcopy'
12379 d_bsd='$d_bsd'
12380 d_bsdgetpgrp='$d_bsdgetpgrp'
12381 d_bsdsetpgrp='$d_bsdsetpgrp'
12382 d_bzero='$d_bzero'
12383 d_casti32='$d_casti32'
12384 d_castneg='$d_castneg'
12385 d_charvspr='$d_charvspr'
12386 d_chown='$d_chown'
12387 d_chroot='$d_chroot'
12388 d_chsize='$d_chsize'
12389 d_closedir='$d_closedir'
12390 d_cmsghdr_s='$d_cmsghdr_s'
12391 d_const='$d_const'
12392 d_crypt='$d_crypt'
12393 d_csh='$d_csh'
12394 d_cuserid='$d_cuserid'
12395 d_dbl_dig='$d_dbl_dig'
12396 d_dbmclose64='$d_dbmclose64'
12397 d_dbminit64='$d_dbminit64'
12398 d_delete64='$d_delete64'
12399 d_difftime='$d_difftime'
12400 d_dirent64_s='$d_dirent64_s'
12401 d_dirnamlen='$d_dirnamlen'
12402 d_dlerror='$d_dlerror'
12403 d_dlopen='$d_dlopen'
12404 d_dlsymun='$d_dlsymun'
12405 d_dosuid='$d_dosuid'
12406 d_drand48proto='$d_drand48proto'
12407 d_dup2='$d_dup2'
12408 d_eaccess='$d_eaccess'
12409 d_endgrent='$d_endgrent'
12410 d_endhent='$d_endhent'
12411 d_endnent='$d_endnent'
12412 d_endpent='$d_endpent'
12413 d_endpwent='$d_endpwent'
12414 d_endsent='$d_endsent'
12415 d_eofnblk='$d_eofnblk'
12416 d_eunice='$d_eunice'
12417 d_fchmod='$d_fchmod'
12418 d_fchown='$d_fchown'
12419 d_fcntl='$d_fcntl'
12420 d_fd_macros='$d_fd_macros'
12421 d_fd_set='$d_fd_set'
12422 d_fds_bits='$d_fds_bits'
12423 d_fetch64='$d_fetch64'
12424 d_fgetpos64='$d_fgetpos64'
12425 d_fgetpos='$d_fgetpos'
12426 d_firstkey64='$d_firstkey64'
12427 d_flexfnam='$d_flexfnam'
12428 d_flock64_s='$d_flock64_s'
12429 d_flock='$d_flock'
12430 d_fopen64='$d_fopen64'
12431 d_fork='$d_fork'
12432 d_fpathconf='$d_fpathconf'
12433 d_freopen64='$d_freopen64'
12434 d_fseek64='$d_fseek64'
12435 d_fseeko64='$d_fseeko64'
12436 d_fseeko='$d_fseeko'
12437 d_fsetpos64='$d_fsetpos64'
12438 d_fsetpos='$d_fsetpos'
12439 d_fstat64='$d_fstat64'
12440 d_ftell64='$d_ftell64'
12441 d_ftello64='$d_ftello64'
12442 d_ftello='$d_ftello'
12443 d_ftime='$d_ftime'
12444 d_ftruncate64='$d_ftruncate64'
12445 d_getgrent='$d_getgrent'
12446 d_getgrps='$d_getgrps'
12447 d_gethbyaddr='$d_gethbyaddr'
12448 d_gethbyname='$d_gethbyname'
12449 d_gethent='$d_gethent'
12450 d_gethname='$d_gethname'
12451 d_gethostprotos='$d_gethostprotos'
12452 d_getlogin='$d_getlogin'
12453 d_getnbyaddr='$d_getnbyaddr'
12454 d_getnbyname='$d_getnbyname'
12455 d_getnent='$d_getnent'
12456 d_getnetprotos='$d_getnetprotos'
12457 d_getpbyname='$d_getpbyname'
12458 d_getpbynumber='$d_getpbynumber'
12459 d_getpent='$d_getpent'
12460 d_getpgid='$d_getpgid'
12461 d_getpgrp2='$d_getpgrp2'
12462 d_getpgrp='$d_getpgrp'
12463 d_getppid='$d_getppid'
12464 d_getprior='$d_getprior'
12465 d_getprotoprotos='$d_getprotoprotos'
12466 d_getpwent='$d_getpwent'
12467 d_getsbyname='$d_getsbyname'
12468 d_getsbyport='$d_getsbyport'
12469 d_getsent='$d_getsent'
12470 d_getservprotos='$d_getservprotos'
12471 d_gettimeod='$d_gettimeod'
12472 d_gnulibc='$d_gnulibc'
12473 d_grpasswd='$d_grpasswd'
12474 d_htonl='$d_htonl'
12475 d_index='$d_index'
12476 d_inetaton='$d_inetaton'
12477 d_ino64t='$d_ino64t'
12478 d_int64t='$d_int64t'
12479 d_iovec_s='$d_iovec_s'
12480 d_isascii='$d_isascii'
12481 d_killpg='$d_killpg'
12482 d_lchown='$d_lchown'
12483 d_link='$d_link'
12484 d_locconv='$d_locconv'
12485 d_lockf64='$d_lockf64'
12486 d_lockf='$d_lockf'
12487 d_longdbl='$d_longdbl'
12488 d_longlong='$d_longlong'
12489 d_lseek64='$d_lseek64'
12490 d_lstat64='$d_lstat64'
12491 d_lstat='$d_lstat'
12492 d_mblen='$d_mblen'
12493 d_mbstowcs='$d_mbstowcs'
12494 d_mbtowc='$d_mbtowc'
12495 d_memcmp='$d_memcmp'
12496 d_memcpy='$d_memcpy'
12497 d_memmove='$d_memmove'
12498 d_memset='$d_memset'
12499 d_mkdir='$d_mkdir'
12500 d_mkfifo='$d_mkfifo'
12501 d_mktime='$d_mktime'
12502 d_msg='$d_msg'
12503 d_msg_ctrunc='$d_msg_ctrunc'
12504 d_msg_dontroute='$d_msg_dontroute'
12505 d_msg_oob='$d_msg_oob'
12506 d_msg_peek='$d_msg_peek'
12507 d_msg_proxy='$d_msg_proxy'
12508 d_msgctl='$d_msgctl'
12509 d_msgget='$d_msgget'
12510 d_msghdr_s='$d_msghdr_s'
12511 d_msgrcv='$d_msgrcv'
12512 d_msgsnd='$d_msgsnd'
12513 d_mymalloc='$d_mymalloc'
12514 d_nextkey64='$d_nextkey64'
12515 d_nice='$d_nice'
12516 d_off64t='$d_off64t'
12517 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12518 d_oldpthreads='$d_oldpthreads'
12519 d_oldsock='$d_oldsock'
12520 d_open3='$d_open3'
12521 d_open64='$d_open64'
12522 d_opendir64='$d_opendir64'
12523 d_pathconf='$d_pathconf'
12524 d_pause='$d_pause'
12525 d_phostname='$d_phostname'
12526 d_pipe='$d_pipe'
12527 d_poll='$d_poll'
12528 d_portable='$d_portable'
12529 d_pthread_yield='$d_pthread_yield'
12530 d_pwage='$d_pwage'
12531 d_pwchange='$d_pwchange'
12532 d_pwclass='$d_pwclass'
12533 d_pwcomment='$d_pwcomment'
12534 d_pwexpire='$d_pwexpire'
12535 d_pwgecos='$d_pwgecos'
12536 d_pwpasswd='$d_pwpasswd'
12537 d_pwquota='$d_pwquota'
12538 d_readdir64='$d_readdir64'
12539 d_readdir='$d_readdir'
12540 d_readlink='$d_readlink'
12541 d_readv='$d_readv'
12542 d_recvmsg='$d_recvmsg'
12543 d_rename='$d_rename'
12544 d_rewinddir='$d_rewinddir'
12545 d_rmdir='$d_rmdir'
12546 d_safebcpy='$d_safebcpy'
12547 d_safemcpy='$d_safemcpy'
12548 d_sanemcmp='$d_sanemcmp'
12549 d_sched_yield='$d_sched_yield'
12550 d_scm_rights='$d_scm_rights'
12551 d_seekdir64='$d_seekdir64'
12552 d_seekdir='$d_seekdir'
12553 d_select='$d_select'
12554 d_sem='$d_sem'
12555 d_semctl='$d_semctl'
12556 d_semctl_semid_ds='$d_semctl_semid_ds'
12557 d_semctl_semun='$d_semctl_semun'
12558 d_semget='$d_semget'
12559 d_semop='$d_semop'
12560 d_sendmsg='$d_sendmsg'
12561 d_setegid='$d_setegid'
12562 d_seteuid='$d_seteuid'
12563 d_setgrent='$d_setgrent'
12564 d_setgrps='$d_setgrps'
12565 d_sethent='$d_sethent'
12566 d_setlinebuf='$d_setlinebuf'
12567 d_setlocale='$d_setlocale'
12568 d_setnent='$d_setnent'
12569 d_setpent='$d_setpent'
12570 d_setpgid='$d_setpgid'
12571 d_setpgrp2='$d_setpgrp2'
12572 d_setpgrp='$d_setpgrp'
12573 d_setprior='$d_setprior'
12574 d_setpwent='$d_setpwent'
12575 d_setregid='$d_setregid'
12576 d_setresgid='$d_setresgid'
12577 d_setresuid='$d_setresuid'
12578 d_setreuid='$d_setreuid'
12579 d_setrgid='$d_setrgid'
12580 d_setruid='$d_setruid'
12581 d_setsent='$d_setsent'
12582 d_setsid='$d_setsid'
12583 d_setvbuf='$d_setvbuf'
12584 d_sfio='$d_sfio'
12585 d_shm='$d_shm'
12586 d_shmat='$d_shmat'
12587 d_shmatprototype='$d_shmatprototype'
12588 d_shmctl='$d_shmctl'
12589 d_shmdt='$d_shmdt'
12590 d_shmget='$d_shmget'
12591 d_sigaction='$d_sigaction'
12592 d_sigsetjmp='$d_sigsetjmp'
12593 d_socket='$d_socket'
12594 d_sockpair='$d_sockpair'
12595 d_stat64='$d_stat64'
12596 d_statblks='$d_statblks'
12597 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12598 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12599 d_stdiobase='$d_stdiobase'
12600 d_stdstdio='$d_stdstdio'
12601 d_store64='$d_store64'
12602 d_strchr='$d_strchr'
12603 d_strcoll='$d_strcoll'
12604 d_strctcpy='$d_strctcpy'
12605 d_strerrm='$d_strerrm'
12606 d_strerror='$d_strerror'
12607 d_strtod='$d_strtod'
12608 d_strtol='$d_strtol'
12609 d_strtoul='$d_strtoul'
12610 d_strxfrm='$d_strxfrm'
12611 d_suidsafe='$d_suidsafe'
12612 d_symlink='$d_symlink'
12613 d_syscall='$d_syscall'
12614 d_sysconf='$d_sysconf'
12615 d_sysernlst='$d_sysernlst'
12616 d_syserrlst='$d_syserrlst'
12617 d_system='$d_system'
12618 d_tcgetpgrp='$d_tcgetpgrp'
12619 d_tcsetpgrp='$d_tcsetpgrp'
12620 d_telldir64='$d_telldir64'
12621 d_telldir='$d_telldir'
12622 d_time='$d_time'
12623 d_times='$d_times'
12624 d_tmpfile64='$d_tmpfile64'
12625 d_truncate64='$d_truncate64'
12626 d_truncate='$d_truncate'
12627 d_tzname='$d_tzname'
12628 d_umask='$d_umask'
12629 d_uname='$d_uname'
12630 d_union_semun='$d_union_semun'
12631 d_vfork='$d_vfork'
12632 d_void_closedir='$d_void_closedir'
12633 d_voidsig='$d_voidsig'
12634 d_voidtty='$d_voidtty'
12635 d_volatile='$d_volatile'
12636 d_vprintf='$d_vprintf'
12637 d_wait4='$d_wait4'
12638 d_waitpid='$d_waitpid'
12639 d_wcstombs='$d_wcstombs'
12640 d_wctomb='$d_wctomb'
12641 d_writev='$d_writev'
12642 d_xenix='$d_xenix'
12643 date='$date'
12644 db_hashtype='$db_hashtype'
12645 db_prefixtype='$db_prefixtype'
12646 defvoidused='$defvoidused'
12647 direntrytype='$direntrytype'
12648 dlext='$dlext'
12649 dlsrc='$dlsrc'
12650 doublesize='$doublesize'
12651 drand01='$drand01'
12652 dynamic_ext='$dynamic_ext'
12653 eagain='$eagain'
12654 ebcdic='$ebcdic'
12655 echo='$echo'
12656 egrep='$egrep'
12657 emacs='$emacs'
12658 eunicefix='$eunicefix'
12659 exe_ext='$exe_ext'
12660 expr='$expr'
12661 extensions='$extensions'
12662 find='$find'
12663 firstmakefile='$firstmakefile'
12664 flex='$flex'
12665 fpostype='$fpostype'
12666 freetype='$freetype'
12667 full_csh='$full_csh'
12668 full_sed='$full_sed'
12669 gccversion='$gccversion'
12670 gidtype='$gidtype'
12671 glibpth='$glibpth'
12672 grep='$grep'
12673 groupcat='$groupcat'
12674 groupstype='$groupstype'
12675 gzip='$gzip'
12676 h_fcntl='$h_fcntl'
12677 h_sysfile='$h_sysfile'
12678 hint='$hint'
12679 hostcat='$hostcat'
12680 huge='$huge'
12681 i_arpainet='$i_arpainet'
12682 i_bsdioctl='$i_bsdioctl'
12683 i_db='$i_db'
12684 i_dbm='$i_dbm'
12685 i_dirent='$i_dirent'
12686 i_dld='$i_dld'
12687 i_dlfcn='$i_dlfcn'
12688 i_fcntl='$i_fcntl'
12689 i_float='$i_float'
12690 i_gdbm='$i_gdbm'
12691 i_grp='$i_grp'
12692 i_inttypes='$i_inttypes'
12693 i_limits='$i_limits'
12694 i_locale='$i_locale'
12695 i_machcthr='$i_machcthr'
12696 i_malloc='$i_malloc'
12697 i_math='$i_math'
12698 i_memory='$i_memory'
12699 i_ndbm='$i_ndbm'
12700 i_netdb='$i_netdb'
12701 i_neterrno='$i_neterrno'
12702 i_niin='$i_niin'
12703 i_poll='$i_poll'
12704 i_pwd='$i_pwd'
12705 i_rpcsvcdbm='$i_rpcsvcdbm'
12706 i_sfio='$i_sfio'
12707 i_sgtty='$i_sgtty'
12708 i_stdarg='$i_stdarg'
12709 i_stddef='$i_stddef'
12710 i_stdlib='$i_stdlib'
12711 i_string='$i_string'
12712 i_sysaccess='$i_sysaccess'
12713 i_sysdir='$i_sysdir'
12714 i_sysfile='$i_sysfile'
12715 i_sysfilio='$i_sysfilio'
12716 i_sysin='$i_sysin'
12717 i_sysioctl='$i_sysioctl'
12718 i_sysndir='$i_sysndir'
12719 i_sysparam='$i_sysparam'
12720 i_sysresrc='$i_sysresrc'
12721 i_syssecrt='$i_syssecrt'
12722 i_sysselct='$i_sysselct'
12723 i_syssockio='$i_syssockio'
12724 i_sysstat='$i_sysstat'
12725 i_systime='$i_systime'
12726 i_systimek='$i_systimek'
12727 i_systimes='$i_systimes'
12728 i_systypes='$i_systypes'
12729 i_sysuio='$i_sysuio'
12730 i_sysun='$i_sysun'
12731 i_syswait='$i_syswait'
12732 i_termio='$i_termio'
12733 i_termios='$i_termios'
12734 i_time='$i_time'
12735 i_unistd='$i_unistd'
12736 i_utime='$i_utime'
12737 i_values='$i_values'
12738 i_varargs='$i_varargs'
12739 i_varhdr='$i_varhdr'
12740 i_vfork='$i_vfork'
12741 ignore_versioned_solibs='$ignore_versioned_solibs'
12742 incpath='$incpath'
12743 inews='$inews'
12744 installarchlib='$installarchlib'
12745 installbin='$installbin'
12746 installman1dir='$installman1dir'
12747 installman3dir='$installman3dir'
12748 installprivlib='$installprivlib'
12749 installscript='$installscript'
12750 installsitearch='$installsitearch'
12751 installsitelib='$installsitelib'
12752 intsize='$intsize'
12753 known_extensions='$known_extensions'
12754 ksh='$ksh'
12755 large='$large'
12756 ld='$ld'
12757 lddlflags='$lddlflags'
12758 ldflags='$ldflags'
12759 less='$less'
12760 lib_ext='$lib_ext'
12761 libc='$libc'
12762 libperl='$libperl'
12763 libpth='$libpth'
12764 libs='$libs'
12765 libswanted='$libswanted'
12766 line='$line'
12767 lint='$lint'
12768 lkflags='$lkflags'
12769 ln='$ln'
12770 lns='$lns'
12771 locincpth='$locincpth'
12772 loclibpth='$loclibpth'
12773 longdblsize='$longdblsize'
12774 longlongsize='$longlongsize'
12775 longsize='$longsize'
12776 lp='$lp'
12777 lpr='$lpr'
12778 ls='$ls'
12779 lseeksize='$lseeksize'
12780 lseektype='$lseektype'
12781 mail='$mail'
12782 mailx='$mailx'
12783 make='$make'
12784 make_set_make='$make_set_make'
12785 mallocobj='$mallocobj'
12786 mallocsrc='$mallocsrc'
12787 malloctype='$malloctype'
12788 man1dir='$man1dir'
12789 man1direxp='$man1direxp'
12790 man1ext='$man1ext'
12791 man3dir='$man3dir'
12792 man3direxp='$man3direxp'
12793 man3ext='$man3ext'
12794 medium='$medium'
12795 mips='$mips'
12796 mips_type='$mips_type'
12797 mkdir='$mkdir'
12798 models='$models'
12799 modetype='$modetype'
12800 more='$more'
12801 mv='$mv'
12802 myarchname='$myarchname'
12803 mydomain='$mydomain'
12804 myhostname='$myhostname'
12805 myuname='$myuname'
12806 n='$n'
12807 netdb_hlen_type='$netdb_hlen_type'
12808 netdb_host_type='$netdb_host_type'
12809 netdb_name_type='$netdb_name_type'
12810 netdb_net_type='$netdb_net_type'
12811 nm='$nm'
12812 nm_opt='$nm_opt'
12813 nm_so_opt='$nm_so_opt'
12814 nonxs_ext='$nonxs_ext'
12815 nroff='$nroff'
12816 o_nonblock='$o_nonblock'
12817 obj_ext='$obj_ext'
12818 old_pthread_create_joinable='$old_pthread_create_joinable'
12819 optimize='$optimize'
12820 orderlib='$orderlib'
12821 osname='$osname'
12822 osvers='$osvers'
12823 package='$package'
12824 pager='$pager'
12825 passcat='$passcat'
12826 patchlevel='$patchlevel'
12827 path_sep='$path_sep'
12828 perl='$perl'
12829 perladmin='$perladmin'
12830 perlpath='$perlpath'
12831 pg='$pg'
12832 phostname='$phostname'
12833 pidtype='$pidtype'
12834 plibpth='$plibpth'
12835 pmake='$pmake'
12836 pr='$pr'
12837 prefix='$prefix'
12838 prefixexp='$prefixexp'
12839 privlib='$privlib'
12840 privlibexp='$privlibexp'
12841 prototype='$prototype'
12842 ptrsize='$ptrsize'
12843 randbits='$randbits'
12844 randfunc='$randfunc'
12845 randseedtype='$randseedtype'
12846 ranlib='$ranlib'
12847 rd_nodata='$rd_nodata'
12848 rm='$rm'
12849 rmail='$rmail'
12850 runnm='$runnm'
12851 sched_yield='$sched_yield'
12852 scriptdir='$scriptdir'
12853 scriptdirexp='$scriptdirexp'
12854 sed='$sed'
12855 seedfunc='$seedfunc'
12856 selectminbits='$selectminbits'
12857 selecttype='$selecttype'
12858 sendmail='$sendmail'
12859 sh='$sh'
12860 shar='$shar'
12861 sharpbang='$sharpbang'
12862 shmattype='$shmattype'
12863 shortsize='$shortsize'
12864 shrpenv='$shrpenv'
12865 shsharp='$shsharp'
12866 sig_name='$sig_name'
12867 sig_name_init='$sig_name_init'
12868 sig_num='$sig_num'
12869 sig_num_init='$sig_num_init'
12870 signal_t='$signal_t'
12871 sitearch='$sitearch'
12872 sitearchexp='$sitearchexp'
12873 sitelib='$sitelib'
12874 sitelibexp='$sitelibexp'
12875 sizetype='$sizetype'
12876 sleep='$sleep'
12877 smail='$smail'
12878 small='$small'
12879 so='$so'
12880 sockethdr='$sockethdr'
12881 socketlib='$socketlib'
12882 sort='$sort'
12883 spackage='$spackage'
12884 spitshell='$spitshell'
12885 split='$split'
12886 src='$src'
12887 ssizetype='$ssizetype'
12888 startperl='$startperl'
12889 startsh='$startsh'
12890 static_ext='$static_ext'
12891 stdchar='$stdchar'
12892 stdio_base='$stdio_base'
12893 stdio_bufsiz='$stdio_bufsiz'
12894 stdio_cnt='$stdio_cnt'
12895 stdio_filbuf='$stdio_filbuf'
12896 stdio_ptr='$stdio_ptr'
12897 strings='$strings'
12898 submit='$submit'
12899 subversion='$subversion'
12900 sysman='$sysman'
12901 tail='$tail'
12902 tar='$tar'
12903 tbl='$tbl'
12904 tee='$tee'
12905 test='$test'
12906 timeincl='$timeincl'
12907 timetype='$timetype'
12908 touch='$touch'
12909 tr='$tr'
12910 trnl='$trnl'
12911 troff='$troff'
12912 uidtype='$uidtype'
12913 uname='$uname'
12914 uniq='$uniq'
12915 use64bits='$use64bits'
12916 usedl='$usedl'
12917 usemultiplicity='$usemultiplicity'
12918 usemymalloc='$usemymalloc'
12919 usenm='$usenm'
12920 useopcode='$useopcode'
12921 useperlio='$useperlio'
12922 useposix='$useposix'
12923 usesfio='$usesfio'
12924 useshrplib='$useshrplib'
12925 usethreads='$usethreads'
12926 usevfork='$usevfork'
12927 usrinc='$usrinc'
12928 uuname='$uuname'
12929 version='$version'
12930 vi='$vi'
12931 voidflags='$voidflags'
12932 xlibpth='$xlibpth'
12933 zcat='$zcat'
12934 zip='$zip'
12935 EOT
12936
12937 : Add in command line options if available
12938 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
12939
12940 : add special variables
12941 $test -f $src/patchlevel.h && \
12942 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
12943 echo "CONFIG=true" >>config.sh
12944
12945 : propagate old symbols
12946 if $test -f UU/config.sh; then
12947         <UU/config.sh sort | uniq >UU/oldconfig.sh
12948         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
12949         sort | uniq -u >UU/oldsyms
12950         set X `cat UU/oldsyms`
12951         shift
12952         case $# in
12953         0) ;;
12954         *)
12955                 cat <<EOM
12956 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
12957 EOM
12958                 echo "# Variables propagated from previous config.sh file." >>config.sh
12959                 for sym in `cat UU/oldsyms`; do
12960                         echo "    Propagating $hint variable "'$'"$sym..."
12961                         eval 'tmp="$'"${sym}"'"'
12962                         echo "$tmp" | \
12963                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
12964                 done
12965                 ;;
12966         esac
12967 fi
12968
12969 : Finish up by extracting the .SH files
12970 case "$alldone" in
12971 exit)
12972         $rm -rf UU
12973         echo "Done."
12974         exit 0
12975         ;;
12976 cont)
12977         ;;
12978 '')
12979         dflt=''
12980         nostick=true
12981         $cat <<EOM
12982
12983 If you'd like to make any changes to the config.sh file before I begin
12984 to configure things, do it as a shell escape now (e.g. !vi config.sh).
12985
12986 EOM
12987         rp="Press return or use a shell escape to edit config.sh:"
12988         . UU/myread
12989         nostick=''
12990         case "$ans" in
12991         '') ;;
12992         *) : in case they cannot read
12993                 sh 1>&4 -c "$ans";;
12994         esac
12995         ;;
12996 esac
12997
12998 : if this fails, just run all the .SH files by hand
12999 . ./config.sh
13000
13001 echo " "
13002 exec 1>&4
13003 . ./UU/extract
13004
13005 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13006         dflt=y
13007         case "$silent" in
13008         true) ;;
13009         *)
13010                 $cat <<EOM
13011
13012 Now you need to generate make dependencies by running "$make depend".
13013 You might prefer to run it in background: "$make depend > makedepend.out &"
13014 It can take a while, so you might not want to run it right now.
13015
13016 EOM
13017                 ;;
13018         esac
13019         rp="Run $make depend now?"
13020         . UU/myread
13021         case "$ans" in
13022         y*)
13023                 $make depend && echo "Now you must run a $make."
13024                 ;;
13025         *)
13026                 echo "You must run '$make depend' then '$make'."
13027                 ;;
13028         esac
13029 elif test -f [Mm]akefile; then
13030         echo " "
13031         echo "Now you must run a $make."
13032 else
13033         echo "Done."
13034 fi
13035
13036 if $test -f Policy.sh; then
13037     $cat <<EOM
13038
13039 If you compile $package on a different machine or from a different object
13040 directory, copy the Policy.sh file from this object directory to the
13041 new one before you run Configure -- this will help you with most of
13042 the policy defaults.
13043
13044 EOM
13045 fi
13046 if $test -f config.msg; then
13047     echo "Hmm.  I also noted the following information while running:"
13048     echo " "
13049     $cat config.msg >&4
13050     $rm -f config.msg
13051 fi
13052 $rm -f kit*isdone ark*isdone
13053 $rm -rf UU
13054
13055 : End of Configure
13056