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