hints/freebsd.sh - reflect the birth of version 4.0
[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 Jan 21 10:23:50 EET 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by jhi@iki.fi)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 case "$inksh/$needksh" in
112 /[a-z]*)
113                 ENV=''
114                 changesh=true
115                 reason="$needksh"
116         ;;
117 esac
118 case "$inksh/$avoidksh" in
119 true/[a-z]*)
120         changesh=true
121         reason="$avoidksh"
122         ;;
123 esac
124 case "$inksh/$needksh-$avoidksh-" in
125 true/--)
126                 cat <<EOM
127 (I see you are using the Korn shell.  Some ksh's blow up on $me,
128 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
129 EOM
130         ;;
131 esac
132 case "$changesh" in
133 true)
134         echo "(Feeding myself to $newsh $reason.)"
135         case "$0" in
136         Configure|*/Configure) exec $newsh $0 "$@";;
137         *) exec $newsh Configure "$@";;
138         esac
139         ;;
140 esac
141
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
144 case "$CDPATH" in
145 '')     ;;
146 *)      case "$SHELL" in
147         *bash*) CDPATH='.' ;;
148         *)              CDPATH='' ;;
149         esac
150         ;;
151 esac
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
154 cd UU && rm -f ./*
155
156 dynamic_ext=''
157 extensions=''
158 known_extensions=''
159 nonxs_ext=''
160 static_ext=''
161 useopcode=''
162 useposix=''
163 d_bsd=''
164 d_eunice=''
165 d_xenix=''
166 eunicefix=''
167 Mcc=''
168 ar=''
169 awk=''
170 bash=''
171 bison=''
172 byacc=''
173 cat=''
174 chgrp=''
175 chmod=''
176 chown=''
177 comm=''
178 compress=''
179 cp=''
180 cpio=''
181 cpp=''
182 csh=''
183 date=''
184 echo=''
185 egrep=''
186 emacs=''
187 expr=''
188 find=''
189 flex=''
190 grep=''
191 gzip=''
192 inews=''
193 ksh=''
194 less=''
195 line=''
196 lint=''
197 ln=''
198 lp=''
199 lpr=''
200 ls=''
201 mail=''
202 mailx=''
203 make=''
204 mkdir=''
205 more=''
206 mv=''
207 nm=''
208 nroff=''
209 perl=''
210 pg=''
211 pmake=''
212 pr=''
213 rm=''
214 rmail=''
215 sed=''
216 sendmail=''
217 shar=''
218 sleep=''
219 smail=''
220 sort=''
221 submit=''
222 tail=''
223 tar=''
224 tbl=''
225 tee=''
226 test=''
227 touch=''
228 tr=''
229 troff=''
230 uname=''
231 uniq=''
232 uuname=''
233 vi=''
234 zcat=''
235 zip=''
236 full_sed=''
237 libswanted=''
238 hint=''
239 myuname=''
240 osname=''
241 osvers=''
242 Author=''
243 Date=''
244 Header=''
245 Id=''
246 Locker=''
247 Log=''
248 RCSfile=''
249 Revision=''
250 Source=''
251 State=''
252 _a=''
253 _exe=''
254 _o=''
255 archobjs=''
256 exe_ext=''
257 firstmakefile=''
258 lib_ext=''
259 obj_ext=''
260 path_sep=''
261 afs=''
262 alignbytes=''
263 ansi2knr=''
264 archlib=''
265 archlibexp=''
266 d_archlib=''
267 installarchlib=''
268 archname=''
269 myarchname=''
270 baserev=''
271 bin=''
272 binexp=''
273 installbin=''
274 byteorder=''
275 cc=''
276 gccversion=''
277 ccflags=''
278 cppflags=''
279 ldflags=''
280 lkflags=''
281 locincpth=''
282 optimize=''
283 cf_email=''
284 cf_by=''
285 cf_time=''
286 contains=''
287 cpp_stuff=''
288 cpplast=''
289 cppminus=''
290 cpprun=''
291 cppstdin=''
292 d_access=''
293 d_accessx=''
294 d_alarm=''
295 d_attribut=''
296 d_bcmp=''
297 d_bcopy=''
298 d_bzero=''
299 d_casti32=''
300 castflags=''
301 d_castneg=''
302 d_chown=''
303 d_chroot=''
304 d_chsize=''
305 d_closedir=''
306 d_void_closedir=''
307 d_const=''
308 cryptlib=''
309 d_crypt=''
310 d_csh=''
311 full_csh=''
312 d_cuserid=''
313 d_dbl_dig=''
314 d_difftime=''
315 d_dlerror=''
316 d_dlopen=''
317 d_dlsymun=''
318 d_dosuid=''
319 d_suidsafe=''
320 d_drand48proto=''
321 d_dup2=''
322 d_eaccess=''
323 d_endgrent=''
324 d_endhent=''
325 d_endnent=''
326 d_endpent=''
327 d_endpwent=''
328 d_endsent=''
329 d_fchmod=''
330 d_fchown=''
331 d_fcntl=''
332 d_fd_macros=''
333 d_fd_set=''
334 d_fds_bits=''
335 d_fgetpos=''
336 d_flexfnam=''
337 d_flock=''
338 d_fork=''
339 d_fseeko=''
340 d_fsetpos=''
341 d_ftello=''
342 d_ftime=''
343 d_gettimeod=''
344 d_Gconvert=''
345 d_getgrent=''
346 d_getgrps=''
347 d_gethbyaddr=''
348 d_gethbyname=''
349 d_gethent=''
350 aphostname=''
351 d_gethname=''
352 d_phostname=''
353 d_uname=''
354 d_gethostprotos=''
355 d_getlogin=''
356 d_getnbyaddr=''
357 d_getnbyname=''
358 d_getnent=''
359 d_getnetprotos=''
360 d_getpent=''
361 d_getpgid=''
362 d_getpgrp2=''
363 d_bsdgetpgrp=''
364 d_getpgrp=''
365 d_getppid=''
366 d_getprior=''
367 d_getpbyname=''
368 d_getpbynumber=''
369 d_getprotoprotos=''
370 d_getpwent=''
371 d_getsent=''
372 d_getservprotos=''
373 d_getsbyname=''
374 d_getsbyport=''
375 d_gnulibc=''
376 d_htonl=''
377 d_inetaton=''
378 d_isascii=''
379 d_killpg=''
380 d_lchown=''
381 d_link=''
382 d_locconv=''
383 d_lockf=''
384 d_longdbl=''
385 longdblsize=''
386 d_longlong=''
387 longlongsize=''
388 d_lstat=''
389 d_mblen=''
390 d_mbstowcs=''
391 d_mbtowc=''
392 d_memcmp=''
393 d_memcpy=''
394 d_memmove=''
395 d_memset=''
396 d_mkdir=''
397 d_mkfifo=''
398 d_mktime=''
399 d_msg=''
400 d_msgctl=''
401 d_msgget=''
402 d_msgrcv=''
403 d_msgsnd=''
404 d_nice=''
405 d_open3=''
406 d_fpathconf=''
407 d_pathconf=''
408 d_pause=''
409 d_pipe=''
410 d_poll=''
411 d_portable=''
412 d_old_pthread_create_joinable=''
413 old_pthread_create_joinable=''
414 d_pthread_yield=''
415 d_sched_yield=''
416 sched_yield=''
417 d_readdir=''
418 d_rewinddir=''
419 d_seekdir=''
420 d_telldir=''
421 d_readlink=''
422 d_readv=''
423 d_rename=''
424 d_rmdir=''
425 d_safebcpy=''
426 d_safemcpy=''
427 d_sanemcmp=''
428 d_select=''
429 d_sem=''
430 d_semctl=''
431 d_semget=''
432 d_semop=''
433 d_setegid=''
434 d_seteuid=''
435 d_setgrent=''
436 d_setgrps=''
437 d_sethent=''
438 d_setlinebuf=''
439 d_setlocale=''
440 d_setnent=''
441 d_setpent=''
442 d_setpgid=''
443 d_setpgrp2=''
444 d_bsdsetpgrp=''
445 d_setpgrp=''
446 d_setprior=''
447 d_setpwent=''
448 d_setregid=''
449 d_setresgid=''
450 d_setresuid=''
451 d_setreuid=''
452 d_setrgid=''
453 d_setruid=''
454 d_setsent=''
455 d_setsid=''
456 d_setvbuf=''
457 d_sfio=''
458 usesfio=''
459 d_shm=''
460 d_shmat=''
461 d_shmatprototype=''
462 shmattype=''
463 d_shmctl=''
464 d_shmdt=''
465 d_shmget=''
466 d_sigaction=''
467 d_sigsetjmp=''
468 d_cmsghdr_s=''
469 d_msg_ctrunc=''
470 d_msg_dontroute=''
471 d_msg_oob=''
472 d_msg_peek=''
473 d_msg_proxy=''
474 d_msghdr_s=''
475 d_oldsock=''
476 d_recvmsg=''
477 d_scm_rights=''
478 d_sendmsg=''
479 d_socket=''
480 d_sockpair=''
481 sockethdr=''
482 socketlib=''
483 d_statblks=''
484 d_fstatfs=''
485 d_statfs=''
486 d_statfsflags=''
487 d_fstatvfs=''
488 d_statvfs=''
489 d_stdio_cnt_lval=''
490 d_stdio_ptr_lval=''
491 d_stdiobase=''
492 d_stdstdio=''
493 stdio_base=''
494 stdio_bufsiz=''
495 stdio_cnt=''
496 stdio_filbuf=''
497 stdio_ptr=''
498 d_index=''
499 d_strchr=''
500 d_strcoll=''
501 d_strctcpy=''
502 d_strerrm=''
503 d_strerror=''
504 d_sysernlst=''
505 d_syserrlst=''
506 d_strtod=''
507 d_strtol=''
508 d_strtoul=''
509 d_strxfrm=''
510 d_symlink=''
511 d_syscall=''
512 d_sysconf=''
513 d_system=''
514 d_tcgetpgrp=''
515 d_tcsetpgrp=''
516 d_time=''
517 timetype=''
518 clocktype=''
519 d_times=''
520 d_truncate=''
521 d_tzname=''
522 d_umask=''
523 d_semctl_semid_ds=''
524 d_semctl_semun=''
525 d_union_semun=''
526 d_vfork=''
527 usevfork=''
528 d_voidsig=''
529 signal_t=''
530 d_volatile=''
531 d_charvspr=''
532 d_vprintf=''
533 d_wait4=''
534 d_waitpid=''
535 d_wcstombs=''
536 d_wctomb=''
537 d_writev=''
538 d_dbmclose64=''
539 d_dbminit64=''
540 d_delete64=''
541 d_fetch64=''
542 d_firstkey64=''
543 d_nextkey64=''
544 d_store64=''
545 dlext=''
546 cccdlflags=''
547 ccdlflags=''
548 dlsrc=''
549 ld=''
550 lddlflags=''
551 usedl=''
552 doublesize=''
553 ebcdic=''
554 fpostype=''
555 gidtype=''
556 groupstype=''
557 h_fcntl=''
558 h_sysfile=''
559 i_arpainet=''
560 db_hashtype=''
561 db_prefixtype=''
562 i_db=''
563 i_dbm=''
564 i_rpcsvcdbm=''
565 d_dirnamlen=''
566 direntrytype=''
567 i_dirent=''
568 i_dld=''
569 i_dlfcn=''
570 i_fcntl=''
571 i_float=''
572 i_gdbm=''
573 d_grpasswd=''
574 i_grp=''
575 d_int64t=''
576 i_inttypes=''
577 i_limits=''
578 i_locale=''
579 i_machcthr=''
580 i_malloc=''
581 i_math=''
582 i_memory=''
583 i_mntent=''
584 i_ndbm=''
585 i_netdb=''
586 i_neterrno=''
587 i_niin=''
588 i_sysin=''
589 i_poll=''
590 d_pwage=''
591 d_pwchange=''
592 d_pwclass=''
593 d_pwcomment=''
594 d_pwexpire=''
595 d_pwgecos=''
596 d_pwpasswd=''
597 d_pwquota=''
598 i_pwd=''
599 i_sfio=''
600 i_stddef=''
601 i_stdlib=''
602 i_string=''
603 strings=''
604 i_sysaccess=''
605 i_sysdir=''
606 i_sysfile=''
607 d_voidtty=''
608 i_bsdioctl=''
609 i_sysfilio=''
610 i_sysioctl=''
611 i_syssockio=''
612 i_sysmount=''
613 i_sysndir=''
614 i_sysparam=''
615 i_sysresrc=''
616 i_syssecrt=''
617 i_sysselct=''
618 i_sysstat=''
619 i_sysstatvfs=''
620 i_systimes=''
621 i_systypes=''
622 d_iovec_s=''
623 i_sysuio=''
624 i_sysun=''
625 i_syswait=''
626 i_sgtty=''
627 i_termio=''
628 i_termios=''
629 i_systime=''
630 i_systimek=''
631 i_time=''
632 timeincl=''
633 i_unistd=''
634 i_utime=''
635 i_values=''
636 i_stdarg=''
637 i_varargs=''
638 i_varhdr=''
639 i_vfork=''
640 installusrbinperl=''
641 intsize=''
642 longsize=''
643 shortsize=''
644 d_dirent64_s=''
645 d_flock64_s=''
646 d_fstat64=''
647 d_ftruncate64=''
648 d_ino64t=''
649 d_lockf64=''
650 d_lseek64=''
651 d_lstat64=''
652 d_off64t=''
653 d_open64=''
654 d_opendir64=''
655 d_readdir64=''
656 d_seekdir64=''
657 d_stat64=''
658 d_telldir64=''
659 d_truncate64=''
660 libc=''
661 libperl=''
662 shrpenv=''
663 useshrplib=''
664 glibpth=''
665 libpth=''
666 loclibpth=''
667 plibpth=''
668 xlibpth=''
669 ignore_versioned_solibs=''
670 libs=''
671 lns=''
672 lseeksize=''
673 lseektype=''
674 make_set_make=''
675 d_mymalloc=''
676 freetype=''
677 mallocobj=''
678 mallocsrc=''
679 malloctype=''
680 usemymalloc=''
681 installman1dir=''
682 man1dir=''
683 man1direxp=''
684 man1ext=''
685 installman3dir=''
686 man3dir=''
687 man3direxp=''
688 man3ext=''
689 huge=''
690 large=''
691 medium=''
692 models=''
693 small=''
694 split=''
695 modetype=''
696 mydomain=''
697 myhostname=''
698 phostname=''
699 c=''
700 n=''
701 d_eofnblk=''
702 eagain=''
703 o_nonblock=''
704 rd_nodata=''
705 netdb_hlen_type=''
706 netdb_host_type=''
707 netdb_name_type=''
708 netdb_net_type=''
709 groupcat=''
710 hostcat=''
711 passcat=''
712 orderlib=''
713 ranlib=''
714 package=''
715 spackage=''
716 pager=''
717 apiversion=''
718 patchlevel=''
719 subversion=''
720 version=''
721 perladmin=''
722 perlpath=''
723 pidtype=''
724 prefix=''
725 prefixexp=''
726 installprivlib=''
727 privlib=''
728 privlibexp=''
729 prototype=''
730 ptrsize=''
731 drand01=''
732 randbits=''
733 randfunc=''
734 randseedtype=''
735 seedfunc=''
736 installscript=''
737 scriptdir=''
738 scriptdirexp=''
739 selectminbits=''
740 selecttype=''
741 sh=''
742 sig_name=''
743 sig_name_init=''
744 sig_num=''
745 sig_num_init=''
746 installsitearch=''
747 sitearch=''
748 sitearchexp=''
749 installsitelib=''
750 sitelib=''
751 sitelibexp=''
752 sizetype=''
753 so=''
754 sharpbang=''
755 shsharp=''
756 spitshell=''
757 src=''
758 ssizetype=''
759 startperl=''
760 startsh=''
761 stdchar=''
762 d_fgetpos64=''
763 d_fopen64=''
764 d_freopen64=''
765 d_fseek64=''
766 d_fseeko64=''
767 d_fsetpos64=''
768 d_ftell64=''
769 d_ftello64=''
770 d_tmpfile64=''
771 sysman=''
772 trnl=''
773 uidtype=''
774 archname64=''
775 use64bits=''
776 usemultiplicity=''
777 nm_opt=''
778 nm_so_opt=''
779 runnm=''
780 usenm=''
781 useperlio=''
782 d_oldpthreads=''
783 usethreads=''
784 incpath=''
785 mips=''
786 mips_type=''
787 usrinc=''
788 defvoidused=''
789 voidflags=''
790 CONFIG=''
791
792 define='define'
793 undef='undef'
794 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
795 rmlist=''
796
797 : We must find out about Eunice early
798 eunicefix=':'
799 if test -f /etc/unixtovms; then
800         eunicefix=/etc/unixtovms
801 fi
802 if test -f /etc/unixtovms.exe; then
803         eunicefix=/etc/unixtovms.exe
804 fi
805
806 i_whoami=''
807 : change the next line if compiling for Xenix/286 on Xenix/386
808 xlibpth='/usr/lib/386 /lib/386'
809
810 : Possible local library directories to search.
811 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
812 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
813
814 : general looking path for locating libraries
815 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
816 glibpth="$glibpth /lib /usr/lib $xlibpth"
817 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
818 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
819
820 : Private path used by Configure to find libraries.  Its value
821 : is prepended to libpth. This variable takes care of special
822 : machines, like the mips.  Usually, it should be empty.
823 plibpth=''
824
825 : Possible local include directories to search.
826 : Set locincpth to "" in a hint file to defeat local include searches.
827 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
828 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
829 :
830 : no include file wanted by default
831 inclwanted=''
832
833 : list of known cpp symbols, sorted alphabetically
834 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
835 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
836 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
837 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
838 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
839 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
840 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
841 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
842 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
843 al="$al VMS Xenix286"
844 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
845 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
846 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
847 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
848 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
849 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
850 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
851 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
852 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
853 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
854 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
855 al="$al __SVR4_2__ __UMAXV__"
856 al="$al ____386BSD____ __alpha __alpha__ __amiga"
857 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
858 al="$al __host_mips__"
859 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
860 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
861 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
862 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
863 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
864 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
865 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
866 al="$al __mc88100 __mc88100__ __mips __mips__"
867 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
868 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
869 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
870 al="$al _host_mips _mips _unix"
871 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
872 al="$al apollo ardent att386 att3b"
873 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
874 al="$al cadmus clipper concurrent convex cray ctix"
875 al="$al dmert encore gcos gcx gimpel gould"
876 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
877 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
878 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
879 al="$al i186 i286 i386 i486 i8086"
880 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
881 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
882 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
883 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
884 al="$al mc88000 mc88100 merlin mert mips mvs n16"
885 al="$al ncl_el ncl_mr"
886 al="$al news1500 news1700 news1800 news1900 news3700"
887 al="$al news700 news800 news900 ns16000 ns32000"
888 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
889 al="$al parisc pc532 pdp11 plexus posix pyr"
890 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
891 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
892 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
893 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
894 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
895 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
896 al="$al xenix z8000"
897
898 : Trailing extension.  Override this in a hint file, if needed.
899 _exe=''
900 : Extra object files, if any, needed on this platform.
901 archobjs=''
902 groupstype=''
903 : default library list
904 libswanted=''
905 : some systems want to use only the non-versioned libso:s
906 ignore_versioned_solibs=''
907 : full support for void wanted by default
908 defvoidused=15
909
910 : set useposix=false in your hint file to disable the POSIX extension.
911 useposix=true
912 : set useopcode=false in your hint file to disable the Opcode extension.
913 useopcode=true
914 : set usemultiplicity on the Configure command line to enable multiplicity.
915 : set usethreads on the Configure command line to enable threads.
916 : List of libraries we want.
917 : If anyone needs -lnet, put it in a hint file.
918 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
919 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
920 libswanted="$libswanted ucb bsd BSD PW x"
921 : We probably want to search /usr/shlib before most other libraries.
922 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
923 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
924 glibpth="/usr/shlib $glibpth"
925 : Do not use vfork unless overridden by a hint file.
926 usevfork=false
927
928 : Find the basic shell for Bourne shell scripts
929 case "$sh" in
930 '')
931         case "$SYSTYPE" in
932         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
933         *) xxx='/bin/sh';;
934         esac
935         if test -f "$xxx"; then
936                 sh="$xxx"
937         else
938                 : Build up a list and do a single loop so we can 'break' out.
939                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
940                 for xxx in sh bash ksh pdksh ash; do
941                         for p in $pth; do
942                                 try="$try ${p}/${xxx}"
943                         done
944                 done
945                 for xxx in $try; do
946                         if test -f "$xxx"; then
947                                 sh="$xxx";
948                                 break
949                         elif test -f "$xxx.exe"; then
950                                 sh="$xxx";
951                                 break
952                         fi
953                 done
954         fi
955         ;;
956 esac
957
958 case "$sh" in
959 '')     cat <<EOM >&2
960 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
961
962 Usually it's in /bin/sh.  How did you even get this far?
963 Please contact me (Jarkko Hietaniemi) at jhi@iki.fi and 
964 we'll try to straighten this all out.
965 EOM
966         exit 1
967         ;;
968 esac
969
970 : see if sh knows # comments
971 if `$sh -c '#' >/dev/null 2>&1`; then
972         shsharp=true
973         spitshell=cat
974         xcat=/bin/cat
975         test -f $xcat || xcat=/usr/bin/cat
976         echo "#!$xcat" >try
977         $eunicefix try
978         chmod +x try
979         ./try > today
980         if test -s today; then
981                 sharpbang='#!'
982         else
983                 echo "#! $xcat" > try
984                 $eunicefix try
985                 chmod +x try
986                 ./try > today
987                 if test -s today; then
988                         sharpbang='#! '
989                 else
990                         sharpbang=': use '
991                 fi
992         fi
993 else
994         echo " "
995         echo "Your $sh doesn't grok # comments--I will strip them later on."
996         shsharp=false
997         cd ..
998         echo "exec grep -v '^[  ]*#'" >spitshell
999         chmod +x spitshell
1000         $eunicefix spitshell
1001         spitshell=`pwd`/spitshell
1002         cd UU
1003         echo "I presume that if # doesn't work, #! won't work either!"
1004         sharpbang=': use '
1005 fi
1006 rm -f try today
1007
1008 : figure out how to guarantee sh startup
1009 case "$startsh" in
1010 '') startsh=${sharpbang}${sh} ;;
1011 *)
1012 esac
1013 cat >try <<EOSS
1014 $startsh
1015 set abc
1016 test "$?abc" != 1
1017 EOSS
1018
1019 chmod +x try
1020 $eunicefix try
1021 if ./try; then
1022         : echo "Yup, it does."
1023 else
1024         echo "Hmm... '$startsh' does not guarantee sh startup..."
1025         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1026 fi
1027 rm -f try
1028
1029
1030 : Save command line options in file UU/cmdline.opt for later use in
1031 : generating config.sh.
1032 cat > cmdline.opt <<EOSH
1033 # Configure command line arguments.
1034 config_arg0='$0'
1035 config_args='$*'
1036 config_argc=$#
1037 EOSH
1038 argn=1
1039 for arg in "$@"; do
1040         cat >>cmdline.opt <<EOSH
1041 config_arg$argn='$arg'
1042 EOSH
1043         argn=`expr $argn + 1`
1044 done
1045
1046 : produce awk script to parse command line options
1047 cat >options.awk <<'EOF'
1048 BEGIN {
1049         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1050
1051         len = length(optstr);
1052         for (i = 1; i <= len; i++) {
1053                 c = substr(optstr, i, 1);
1054                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1055                 if (a == ":") {
1056                         arg[c] = 1;
1057                         i++;
1058                 }
1059                 opt[c] = 1;
1060         }
1061 }
1062 {
1063         expect = 0;
1064         str = $0;
1065         if (substr(str, 1, 1) != "-") {
1066                 printf("'%s'\n", str);
1067                 next;
1068         }
1069         len = length($0);
1070         for (i = 2; i <= len; i++) {
1071                 c = substr(str, i, 1);
1072                 if (!opt[c]) {
1073                         printf("-%s\n", substr(str, i));
1074                         next;
1075                 }
1076                 printf("-%s\n", c);
1077                 if (arg[c]) {
1078                         if (i < len)
1079                                 printf("'%s'\n", substr(str, i + 1));
1080                         else
1081                                 expect = 1;
1082                         next;
1083                 }
1084         }
1085 }
1086 END {
1087         if (expect)
1088                 print "?";
1089 }
1090 EOF
1091
1092 : process the command line options
1093 set X `for arg in "$@"; do echo "X$arg"; done |
1094         sed -e s/X// | awk -f options.awk`
1095 eval "set $*"
1096 shift
1097 rm -f options.awk
1098
1099 : set up default values
1100 fastread=''
1101 reuseval=false
1102 config_sh=''
1103 alldone=''
1104 error=''
1105 silent=''
1106 extractsh=''
1107 override=''
1108 knowitall=''
1109 rm -f optdef.sh
1110 cat >optdef.sh <<EOS
1111 $startsh
1112 EOS
1113
1114
1115 : option parsing
1116 while test $# -gt 0; do
1117         case "$1" in
1118         -d) shift; fastread=yes;;
1119         -e) shift; alldone=cont;;
1120         -f)
1121                 shift
1122                 cd ..
1123                 if test -r "$1"; then
1124                         config_sh="$1"
1125                 else
1126                         echo "$me: cannot read config file $1." >&2
1127                         error=true
1128                 fi
1129                 cd UU
1130                 shift;;
1131         -h) shift; error=true;;
1132         -r) shift; reuseval=true;;
1133         -s) shift; silent=true; realsilent=true;;
1134         -E) shift; alldone=exit;;
1135         -K) shift; knowitall=true;;
1136         -O) shift; override=true;;
1137         -S) shift; silent=true; extractsh=true;;
1138         -D)
1139                 shift
1140                 case "$1" in
1141                 *=)
1142                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1143                         echo "$me: ignoring -D $1" >&2
1144                         ;;
1145                 *=*) echo "$1" | \
1146                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1147                 *) echo "$1='define'" >> optdef.sh;;
1148                 esac
1149                 shift
1150                 ;;
1151         -U)
1152                 shift
1153                 case "$1" in
1154                 *=) echo "$1" >> optdef.sh;;
1155                 *=*)
1156                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1157                         echo "$me: ignoring -U $1" >&2
1158                         ;;
1159                 *) echo "$1='undef'" >> optdef.sh;;
1160                 esac
1161                 shift
1162                 ;;
1163         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1164                 exit 0;;
1165         --) break;;
1166         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1167         *) break;;
1168         esac
1169 done
1170
1171 case "$error" in
1172 true)
1173         cat >&2 <<EOM
1174 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1175                  [-U symbol] [-U symbol=]
1176   -d : use defaults for all answers.
1177   -e : go on without questioning past the production of config.sh.
1178   -f : specify an alternate default configuration file.
1179   -h : print this help message and exit (with an error status).
1180   -r : reuse C symbols value if possible (skips costly nm extraction).
1181   -s : silent mode, only echoes questions and essential information.
1182   -D : define symbol to have some value:
1183          -D symbol         symbol gets the value 'define'
1184          -D symbol=value   symbol gets the value 'value'
1185   -E : stop at the end of questions, after having produced config.sh.
1186   -K : do not use unless you know what you are doing.
1187   -O : let -D and -U override definitions from loaded configuration file.
1188   -S : perform variable substitutions on all .SH files (can mix with -f)
1189   -U : undefine symbol:
1190          -U symbol    symbol gets the value 'undef'
1191          -U symbol=   symbol gets completely empty
1192   -V : print version number and exit (with a zero status).
1193 EOM
1194         exit 1
1195         ;;
1196 esac
1197
1198 : Sanity checks
1199 case "$fastread$alldone" in
1200 yescont|yesexit) ;;
1201 *)
1202         if test ! -t 0; then
1203                 echo "Say 'sh Configure', not 'sh <Configure'"
1204                 exit 1
1205         fi
1206         ;;
1207 esac
1208
1209 exec 4>&1
1210 case "$silent" in
1211 true) exec 1>/dev/null;;
1212 esac
1213
1214 : run the defines and the undefines, if any, but leave the file out there...
1215 touch optdef.sh
1216 . ./optdef.sh
1217
1218 : set package name
1219 package=perl5
1220 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1221 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1222 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1223 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1224 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1225 esac
1226
1227 : Some greps do not return status, grrr.
1228 echo "grimblepritz" >grimble
1229 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1230         contains=contains
1231 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1232         contains=grep
1233 else
1234         contains=contains
1235 fi
1236 rm -f grimble
1237 : the following should work in any shell
1238 case "$contains" in
1239 contains*)
1240         echo " "
1241         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1242         cat >contains <<'EOSS'
1243 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1244 EOSS
1245 chmod +x contains
1246 esac
1247
1248 : Find the path to the source tree
1249 case "$src" in
1250 '') case "$0" in
1251     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1252     *)   src='.';;
1253     esac;;
1254 esac
1255 case "$src" in
1256 '')     src=/
1257         rsrc=/
1258         ;;
1259 /*) rsrc="$src";;
1260 *) rsrc="../$src";;
1261 esac
1262 if test -f $rsrc/Configure && \
1263         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1264 then
1265    : found it, so we are ok.
1266 else
1267         rsrc=''
1268         for src in . .. ../.. ../../.. ../../../..; do
1269                 if test -f ../$src/Configure && \
1270                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1271                 then
1272                         rsrc=../$src
1273                         break
1274                 fi
1275         done
1276 fi
1277 case "$rsrc" in
1278 '')
1279         cat <<EOM >&4
1280
1281 Sorry, I can't seem to locate the source dir for $package.  Please start
1282 Configure with an explicit path -- i.e. /some/path/Configure.
1283
1284 EOM
1285         exit 1
1286         ;;
1287 ../.)   rsrc='..';;
1288 *)
1289         echo " "
1290         echo "Sources for $package found in \"$src\"." >&4
1291         ;;
1292 esac
1293
1294 : script used to extract .SH files with variable substitutions
1295 cat >extract <<'EOS'
1296 CONFIG=true
1297 echo "Doing variable substitutions on .SH files..."
1298 if test -f $src/MANIFEST; then
1299         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1300 else
1301         echo "(Looking for .SH files under the source directory.)"
1302         set x `(cd $src; find . -name "*.SH" -print)`
1303 fi
1304 shift
1305 case $# in
1306 0) set x `(cd $src; echo *.SH)`; shift;;
1307 esac
1308 if test ! -f $src/$1; then
1309         shift
1310 fi
1311 mkdir_p='
1312 name=$1;
1313 create="";
1314 while test $name; do
1315         if test ! -d "$name"; then
1316                 create="$name $create";
1317                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1318                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1319         else
1320                 name="";
1321         fi;
1322 done;
1323 for file in $create; do
1324         mkdir $file;
1325 done
1326 '
1327 for file in $*; do
1328         case "$src" in
1329         ".")
1330                 case "$file" in
1331                 */*)
1332                         dir=`expr X$file : 'X\(.*\)/'`
1333                         file=`expr X$file : 'X.*/\(.*\)'`
1334                         (cd $dir && . ./$file)
1335                         ;;
1336                 *)
1337                         . ./$file
1338                         ;;
1339                 esac
1340                 ;;
1341         *)
1342                 case "$file" in
1343                 */*)
1344                         dir=`expr X$file : 'X\(.*\)/'`
1345                         file=`expr X$file : 'X.*/\(.*\)'`
1346                         (set x $dir; shift; eval $mkdir_p)
1347                         sh <$src/$dir/$file
1348                         ;;
1349                 *)
1350                         sh <$src/$file
1351                         ;;
1352                 esac
1353                 ;;
1354         esac
1355 done
1356 if test -f $src/config_h.SH; then
1357         if test ! -f config.h; then
1358         : oops, they left it out of MANIFEST, probably, so do it anyway.
1359         . $src/config_h.SH
1360         fi
1361 fi
1362 EOS
1363
1364 : extract files and exit if asked to do so
1365 case "$extractsh" in
1366 true)
1367         case "$realsilent" in
1368         true) ;;
1369         *) exec 1>&4;;
1370         esac
1371         case "$config_sh" in
1372         '') config_sh='config.sh';;
1373         esac
1374         echo " "
1375         echo "Fetching answers from $config_sh..."
1376         cd ..
1377         . $config_sh
1378         test "$override" && . ./optdef.sh
1379         echo " "
1380         . UU/extract
1381         rm -rf UU
1382         echo "Done."
1383         exit 0
1384         ;;
1385 esac
1386
1387 : Eunice requires " " instead of "", can you believe it
1388 echo " "
1389 : Here we go...
1390 echo "Beginning of configuration questions for $package."
1391
1392 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1393
1394 : first determine how to suppress newline on echo command
1395 echo " "
1396 echo "Checking echo to see how to suppress newlines..."
1397 (echo "hi there\c" ; echo " ") >.echotmp
1398 if $contains c .echotmp >/dev/null 2>&1 ; then
1399         echo "...using -n."
1400         n='-n'
1401         c=''
1402 else
1403         cat <<'EOM'
1404 ...using \c
1405 EOM
1406         n=''
1407         c='\c'
1408 fi
1409 echo $n "The star should be here-->$c"
1410 echo '*'
1411 rm -f .echotmp
1412
1413 : Now test for existence of everything in MANIFEST
1414 echo " "
1415 if test -f $rsrc/MANIFEST; then
1416         echo "First let's make sure your kit is complete.  Checking..." >&4
1417         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1418         rm -f missing
1419         tmppwd=`pwd`
1420         for filelist in x??; do
1421                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1422         done
1423         if test -s missing; then
1424                 cat missing >&4
1425                 cat >&4 <<'EOM'
1426
1427 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1428
1429 You have the option of continuing the configuration process, despite the
1430 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1431 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1432 and contact the author (jhi@iki.fi).
1433
1434 EOM
1435                 echo $n "Continue? [n] $c" >&4
1436                 read ans
1437                 case "$ans" in
1438                 y*)
1439                         echo "Continuing..." >&4
1440                         rm -f missing
1441                         ;;
1442                 *)
1443                         echo "ABORTING..." >&4
1444                         kill $$
1445                         ;;
1446                 esac
1447         else
1448                 echo "Looks good..."
1449         fi
1450 else
1451         echo "There is no MANIFEST file.  I hope your kit is complete !"
1452 fi
1453 rm -f missing x??
1454
1455 echo " "
1456 : Find the appropriate value for a newline for tr
1457 if test -n "$DJGPP"; then
1458        trnl='\012'
1459 fi
1460 if test X"$trnl" = X; then
1461         case "`echo foo|tr '\n' x 2>/dev/null`" in
1462         foox) trnl='\n' ;;
1463         esac
1464 fi
1465 if test X"$trnl" = X; then
1466         case "`echo foo|tr '\012' x 2>/dev/null`" in
1467         foox) trnl='\012' ;;
1468         esac
1469 fi
1470 if test X"$trnl" = X; then
1471         cat <<EOM >&2
1472
1473 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1474
1475 EOM
1476         exit 1
1477 fi
1478
1479 : compute the number of columns on the terminal for proper question formatting
1480 case "$COLUMNS" in
1481 '') COLUMNS='80';;
1482 esac
1483
1484 : set up the echo used in my read
1485 myecho="case \"\$xxxm\" in
1486 '') echo $n \"\$rp $c\" >&4;;
1487 *) case \"\$rp\" in
1488         '') echo $n \"[\$xxxm] $c\";;
1489         *)
1490                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1491                         echo \"\$rp\" >&4
1492                         echo $n \"[\$xxxm] $c\" >&4
1493                 else
1494                         echo $n \"\$rp [\$xxxm] $c\" >&4
1495                 fi
1496                 ;;
1497         esac;;
1498 esac"
1499
1500 : now set up to do reads with possible shell escape and default assignment
1501 cat <<EOSC >myread
1502 $startsh
1503 xxxm=\$dflt
1504 $myecho
1505 ans='!'
1506 case "\$fastread" in
1507 yes) case "\$dflt" in
1508         '') ;;
1509         *) ans='';
1510                 case "\$silent-\$rp" in
1511                 true-) ;;
1512                 *) echo " " >&4;;
1513                 esac;;
1514         esac;;
1515 *) case "\$silent" in
1516         true) case "\$rp" in
1517                 '') ans='';;
1518                 esac;;
1519         esac;;
1520 esac
1521 while expr "X\$ans" : "X!" >/dev/null; do
1522         read answ
1523         set x \$xxxm
1524         shift
1525         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1526         case  "\$answ" in
1527         "!")
1528                 sh 1>&4
1529                 echo " "
1530                 $myecho
1531                 ;;
1532         !*)
1533                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1534                 shift
1535                 sh 1>&4 -c "\$*"
1536                 echo " "
1537                 $myecho
1538                 ;;
1539         "\$ans")
1540                 case "\$ans" in
1541                 \\&*)
1542                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1543                         shift
1544                         case "\$1" in
1545                         -d)
1546                                 fastread=yes
1547                                 echo "(OK, I'll run with -d after this question.)" >&4
1548                                 ;;
1549                         -*)
1550                                 echo "*** Sorry, \$1 not supported yet." >&4
1551                                 ;;
1552                         esac
1553                         $myecho
1554                         ans=!
1555                         ;;
1556                 esac;;
1557         *)
1558                 case "\$aok" in
1559                 y)
1560                         echo "*** Substitution done -- please confirm."
1561                         xxxm="\$ans"
1562                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1563                         xxxm="\$ans"
1564                         ans=!
1565                         ;;
1566                 *)
1567                         echo "*** Error -- try again."
1568                         ans=!
1569                         ;;
1570                 esac
1571                 $myecho
1572                 ;;
1573         esac
1574         case "\$ans\$xxxm\$nostick" in
1575         '')
1576                 ans=!
1577                 $myecho
1578                 ;;
1579         esac
1580 done
1581 case "\$ans" in
1582 '') ans="\$xxxm";;
1583 esac
1584 EOSC
1585
1586 : create .config dir to save info across Configure sessions
1587 test -d ../.config || mkdir ../.config
1588 cat >../.config/README <<EOF
1589 This directory created by Configure to save information that should
1590 persist across sessions for $package.
1591
1592 You may safely delete it if you wish.
1593 EOF
1594
1595 : general instructions
1596 needman=true
1597 firsttime=true
1598 user=`(logname) 2>/dev/null`
1599 case "$user" in
1600 '') user=`whoami 2>&1`;;
1601 esac
1602 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1603         firsttime=false
1604         echo " "
1605         rp='Would you like to see the instructions?'
1606         dflt=n
1607         . ./myread
1608         case "$ans" in
1609         [yY]*) ;;
1610         *) needman=false;;
1611         esac
1612 fi
1613 if $needman; then
1614         cat <<EOH
1615
1616 This installation shell script will examine your system and ask you questions
1617 to determine how the perl5 package should be installed. If you get
1618 stuck on a question, you may use a ! shell escape to start a subshell or
1619 execute a command.  Many of the questions will have default answers in square
1620 brackets; typing carriage return will give you the default.
1621
1622 On some of the questions which ask for file or directory names you are allowed
1623 to use the ~name construct to specify the login directory belonging to "name",
1624 even if you don't have a shell which knows about that.  Questions where this is
1625 allowed will be marked "(~name ok)".
1626
1627 EOH
1628         rp=''
1629         dflt='Type carriage return to continue'
1630         . ./myread
1631         cat <<'EOH'
1632
1633 The prompter used in this script allows you to use shell variables and
1634 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1635 in the default answer, as if the default line was a set of arguments given to a
1636 script shell.  This means you may also use $* to repeat the whole default line,
1637 so you do not have to re-type everything to add something to the default.
1638
1639 Everytime there is a substitution, you will have to confirm.  If there is an
1640 error (e.g. an unmatched backtick), the default answer will remain unchanged
1641 and you will be prompted again.
1642
1643 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1644 the questions and use the computed defaults (or the previous answers if there
1645 was already a config.sh file). Type 'Configure -h' for a list of options.
1646 You may also start interactively and then answer '& -d' at any prompt to turn
1647 on the non-interactive behaviour for the remainder of the execution.
1648
1649 EOH
1650         . ./myread
1651         cat <<EOH
1652
1653 Much effort has been expended to ensure that this shell script will run on any
1654 Unix system.  If despite that it blows up on yours, your best bet is to edit
1655 Configure and run it again.  If you can't run Configure for some reason,
1656 you'll have to generate a config.sh file by hand.  Whatever problems you
1657 have, let me (jhi@iki.fi) know how I blew it.
1658
1659 This installation script affects things in two ways:
1660
1661 1) it may do direct variable substitutions on some of the files included
1662    in this kit.
1663 2) it builds a config.h file for inclusion in C programs.  You may edit
1664    any of these files as the need arises after running this script.
1665
1666 If you make a mistake on a question, there is no easy way to back up to it
1667 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1668 files.  Configure will offer to let you do this before it runs the SH files.
1669
1670 EOH
1671         dflt='Type carriage return to continue'
1672         . ./myread
1673         case "$firsttime" in
1674         true) echo $user >>../.config/instruct;;
1675         esac
1676 fi
1677
1678 : find out where common programs are
1679 echo " "
1680 echo "Locating common programs..." >&4
1681 cat <<EOSC >loc
1682 $startsh
1683 case \$# in
1684 0) exit 1;;
1685 esac
1686 thing=\$1
1687 shift
1688 dflt=\$1
1689 shift
1690 for dir in \$*; do
1691         case "\$thing" in
1692         .)
1693         if test -d \$dir/\$thing; then
1694                 echo \$dir
1695                 exit 0
1696         fi
1697         ;;
1698         *)
1699         for thisthing in \$dir/\$thing; do
1700                 : just loop through to pick last item
1701         done
1702         if test -f \$thisthing; then
1703                 echo \$thisthing
1704                 exit 0
1705         elif test -f \$dir/\$thing.exe; then
1706                 if test -n "$DJGPP"; then
1707                         echo \$dir/\$thing.exe
1708                 else
1709                         : on Eunice apparently
1710                         echo \$dir/\$thing
1711                 fi
1712                 exit 0
1713         fi
1714         ;;
1715         esac
1716 done
1717 echo \$dflt
1718 exit 1
1719 EOSC
1720 chmod +x loc
1721 $eunicefix loc
1722 loclist="
1723 awk
1724 cat
1725 comm
1726 cp
1727 echo
1728 expr
1729 grep
1730 ls
1731 make
1732 mkdir
1733 rm
1734 sed
1735 sort
1736 touch
1737 tr
1738 uniq
1739 "
1740 trylist="
1741 Mcc
1742 ar
1743 byacc
1744 cpp
1745 csh
1746 date
1747 egrep
1748 gzip
1749 less
1750 ln
1751 more
1752 nm
1753 nroff
1754 pg
1755 tee
1756 test
1757 uname
1758 zip
1759 "
1760 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1761 pth="$pth /lib /usr/lib"
1762 for file in $loclist; do
1763         eval xxx=\$$file
1764         case "$xxx" in
1765         /*|?:[\\/]*)
1766                 if test -f "$xxx"; then
1767                         : ok
1768                 else
1769                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1770                         xxx=`./loc $file $file $pth`
1771                 fi
1772                 ;;
1773         '') xxx=`./loc $file $file $pth`;;
1774         *) xxx=`./loc $xxx $xxx $pth`;;
1775         esac
1776         eval $file=$xxx
1777         eval _$file=$xxx
1778         case "$xxx" in
1779         /*)
1780                 echo $file is in $xxx.
1781                 ;;
1782         ?:[\\/]*)
1783                 echo $file is in $xxx.
1784                 ;;
1785         *)
1786                 echo "I don't know where '$file' is, and my life depends on it." >&4
1787                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1788                 exit 1
1789                 ;;
1790         esac
1791 done
1792 echo " "
1793 echo "Don't worry if any of the following aren't found..."
1794 say=offhand
1795 for file in $trylist; do
1796         eval xxx=\$$file
1797         case "$xxx" in
1798         /*|?:[\\/]*)
1799                 if test -f "$xxx"; then
1800                         : ok
1801                 else
1802                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1803                         xxx=`./loc $file $file $pth`
1804                 fi
1805                 ;;
1806         '') xxx=`./loc $file $file $pth`;;
1807         *) xxx=`./loc $xxx $xxx $pth`;;
1808         esac
1809         eval $file=$xxx
1810         eval _$file=$xxx
1811         case "$xxx" in
1812         /*)
1813                 echo $file is in $xxx.
1814                 ;;
1815         ?:[\\/]*)
1816                 echo $file is in $xxx.
1817                 ;;
1818         *)
1819                 echo "I don't see $file out there, $say."
1820                 say=either
1821                 ;;
1822         esac
1823 done
1824 case "$egrep" in
1825 egrep)
1826         echo "Substituting grep for egrep."
1827         egrep=$grep
1828         ;;
1829 esac
1830 case "$ln" in
1831 ln)
1832         echo "Substituting cp for ln."
1833         ln=$cp
1834         ;;
1835 esac
1836 case "$test" in
1837 test)
1838         echo "Hopefully test is built into your sh."
1839         ;;
1840 *)
1841         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1842                 echo "Using the test built into your sh."
1843                 test=test
1844                 _test=test
1845         fi
1846         ;;
1847 esac
1848 case "$echo" in
1849 echo)
1850         echo "Hopefully echo is built into your sh."
1851         ;;
1852 '') ;;
1853 *)
1854         echo " "
1855 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1856         $echo $n "hi there$c" >foo1
1857         echo $n "hi there$c" >foo2
1858         if cmp foo1 foo2 >/dev/null 2>&1; then
1859                 echo "They are compatible.  In fact, they may be identical."
1860         else
1861                 case "$n" in
1862                 '-n') n='' c='\c';;
1863                 *) n='-n' c='';;
1864                 esac
1865                 cat <<FOO
1866 They are not compatible!  You are probably running ksh on a non-USG system.
1867 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1868 have echo built in and we may have to run some Bourne shell scripts.  That
1869 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1870
1871 FOO
1872                 $echo $n "The star should be here-->$c"
1873                 $echo "*"
1874         fi
1875         $rm -f foo1 foo2
1876         ;;
1877 esac
1878
1879 : determine whether symbolic links are supported
1880 echo " "
1881 $touch blurfl
1882 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1883         echo "Symbolic links are supported." >&4
1884         lns="$ln -s"
1885 else
1886         echo "Symbolic links are NOT supported." >&4
1887         lns="$ln"
1888 fi
1889 $rm -f blurfl sym
1890
1891 : see whether [:lower:] and [:upper:] are supported character classes
1892 echo " "
1893 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1894 ABYZ)
1895         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1896         up='[:upper:]'
1897         low='[:lower:]'
1898         ;;
1899 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1900         # (0xc9 and 0xd1), therefore that is a nice testing point.
1901         if test "X$up" = X -o "X$low" = X; then
1902             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1903             ij) up='[A-Z]'
1904                 low='[a-z]'
1905                 ;;
1906             esac
1907         fi
1908         if test "X$up" = X -o "X$low" = X; then
1909             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1910             ij) up='A-Z'
1911                 low='a-z'
1912                 ;;
1913             esac
1914         fi
1915         if test "X$up" = X -o "X$low" = X; then
1916             case "`echo IJ | od -x 2>/dev/null`" in
1917             *C9D1*|*c9d1*)
1918                 echo "Hey, this might be EBCDIC." >&4
1919                 if test "X$up" = X -o "X$low" = X; then
1920                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1921                     ij) up='[A-IJ-RS-Z]'
1922                         low='[a-ij-rs-z]'
1923                         ;;
1924                     esac
1925                 fi
1926                 if test "X$up" = X -o "X$low" = X; then
1927                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1928                     ij) up='A-IJ-RS-Z'
1929                         low='a-ij-rs-z'
1930                         ;;
1931                     esac
1932                 fi
1933                 ;;
1934             esac
1935         fi
1936 esac
1937 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1938 ij)
1939     echo "Using $up and $low to convert case." >&4
1940     ;;
1941 *)
1942     echo "I don't know how to translate letters from upper to lower case." >&4
1943     echo "Your tr is not acting any way I know of." >&4
1944     exit 1
1945     ;;
1946 esac
1947 : set up the translation script tr, must be called with ./tr of course
1948 cat >tr <<EOSC
1949 $startsh
1950 case "\$1\$2" in
1951 '[A-Z][a-z]') exec $tr '$up' '$low';;
1952 '[a-z][A-Z]') exec $tr '$low' '$up';;
1953 esac
1954 exec $tr "\$@"
1955 EOSC
1956 chmod +x tr
1957 $eunicefix tr
1958
1959 : Try to determine whether config.sh was made on this system
1960 case "$config_sh" in
1961 '')
1962 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1963 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1964 # because the A-Z/a-z are not consecutive.
1965 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1966         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1967 newmyuname="$myuname"
1968 dflt=n
1969 case "$knowitall" in
1970 '')
1971         if test -f ../config.sh; then
1972                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1973                         eval "`grep myuname= ../config.sh`"
1974                 fi
1975                 if test "X$myuname" = "X$newmyuname"; then
1976                         dflt=y
1977                 fi
1978         fi
1979         ;;
1980 *) dflt=y;;
1981 esac
1982
1983 : Get old answers from old config file if Configure was run on the
1984 : same system, otherwise use the hints.
1985 hint=default
1986 cd ..
1987 if test -f config.sh; then
1988         echo " "
1989         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1990         . UU/myread
1991         case "$ans" in
1992         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1993         *)  echo "Fetching default answers from your old config.sh file..." >&4
1994                 tmp_n="$n"
1995                 tmp_c="$c"
1996                 tmp_sh="$sh"
1997                 . ./config.sh
1998                 cp config.sh UU
1999                 n="$tmp_n"
2000                 c="$tmp_c"
2001                 : Older versions did not always set $sh.  Catch re-use of such
2002                 : an old config.sh.
2003                 case "$sh" in
2004                 '') sh="$tmp_sh" ;;
2005                 esac
2006                 hint=previous
2007                 ;;
2008         esac
2009 fi
2010 if test ! -f config.sh; then
2011         $cat <<EOM
2012
2013 First time through, eh?  I have some defaults handy for some systems
2014 that need some extra help getting the Configure answers right:
2015
2016 EOM
2017         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2018         dflt=''
2019         : Half the following guesses are probably wrong... If you have better
2020         : tests or hints, please send them to jhi@iki.fi
2021         : The metaconfig authors would also appreciate a copy...
2022         $test -f /irix && osname=irix
2023         $test -f /xenix && osname=sco_xenix
2024         $test -f /dynix && osname=dynix
2025         $test -f /dnix && osname=dnix
2026         $test -f /lynx.os && osname=lynxos
2027         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2028         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2029         $test -f /bin/mips && /bin/mips && osname=mips
2030         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2031                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2032         $test -d /usr/apollo/bin && osname=apollo
2033         $test -f /etc/saf/_sactab && osname=svr4
2034         $test -d /usr/include/minix && osname=minix
2035         if $test -d /MachTen -o -d /MachTen_Folder; then
2036                 osname=machten
2037                 if $test -x /sbin/version; then
2038                         osvers=`/sbin/version | $awk '{print $2}' |
2039                         $sed -e 's/[A-Za-z]$//'`
2040                 elif $test -x /usr/etc/version; then
2041                         osvers=`/usr/etc/version | $awk '{print $2}' |
2042                         $sed -e 's/[A-Za-z]$//'`
2043                 else
2044                         osvers="$2.$3"
2045                 fi
2046         fi
2047        $test -f /sys/posix.dll &&
2048                $test -f /usr/bin/what &&
2049                set X `/usr/bin/what /sys/posix.dll` &&
2050                $test "$3" = UWIN &&
2051                osname=uwin &&
2052                osvers="$5"
2053         if $test -f $uname; then
2054                 set X $myuname
2055                 shift
2056
2057                 case "$5" in
2058                 fps*) osname=fps ;;
2059                 mips*)
2060                         case "$4" in
2061                         umips) osname=umips ;;
2062                         *) osname=mips ;;
2063                         esac;;
2064                 [23]100) osname=mips ;;
2065                 next*) osname=next ;;
2066                 i386*)
2067                         if $test -f /etc/kconfig; then
2068                                 osname=isc
2069                                 if test "$lns" = "ln -s"; then
2070                                         osvers=4
2071                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2072                                         osvers=3
2073                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2074                                         osvers=2
2075                                 fi
2076                         fi
2077                         ;;
2078                 pc*)
2079                         if test -n "$DJGPP"; then
2080                                 osname=dos
2081                                 osvers=djgpp
2082                         fi
2083                         ;;
2084                 esac
2085
2086                 case "$1" in
2087                 aix) osname=aix
2088                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2089                         case "$tmp" in
2090                         'not found') osvers="$4"."$3" ;;
2091                         '<3240'|'<>3240') osvers=3.2.0 ;;
2092                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2093                         '=3250'|'>3250') osvers=3.2.5 ;;
2094                         *) osvers=$tmp;;
2095                         esac
2096                         ;;
2097                 *dc.osx) osname=dcosx
2098                         osvers="$3"
2099                         ;;
2100                 dnix) osname=dnix
2101                         osvers="$3"
2102                         ;;
2103                 domainos) osname=apollo
2104                         osvers="$3"
2105                         ;;
2106                 dgux) osname=dgux 
2107                         osvers="$3"
2108                         ;;
2109                 dynixptx*) osname=dynixptx
2110                         osvers=`echo "$4"|sed 's/^v//'`
2111                         ;;
2112                 freebsd) osname=freebsd 
2113                         osvers="$3" ;;
2114                 genix) osname=genix ;;
2115                 hp*) osname=hpux 
2116                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2117                         ;;
2118                 irix*) osname=irix
2119                         case "$3" in
2120                         4*) osvers=4 ;;
2121                         5*) osvers=5 ;;
2122                         *)      osvers="$3" ;;
2123                         esac
2124                         ;;
2125                 linux) osname=linux
2126                         case "$3" in
2127                         *)      osvers="$3" ;;
2128                         esac
2129                         ;;
2130                 MiNT) osname=mint
2131                         ;;
2132                 netbsd*) osname=netbsd
2133                         osvers="$3"
2134                         ;;
2135                 news-os) osvers="$3"
2136                         case "$3" in
2137                         4*) osname=newsos4 ;;
2138                         *) osname=newsos ;;
2139                         esac
2140                         ;;
2141                 bsd386) osname=bsd386
2142                         osvers=`$uname -r`
2143                         ;;
2144                 POSIX-BC | posix-bc ) osname=posix-bc
2145                         osvers="$3"
2146                         ;;
2147                 powerux | power_ux | powermax_os | powermaxos | \
2148                 powerunix | power_unix) osname=powerux
2149                         osvers="$3"
2150                         ;;
2151                 next*) osname=next ;;
2152                 solaris) osname=solaris
2153                         case "$3" in
2154                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2155                         *)      osvers="$3" ;;
2156                         esac
2157                         ;;
2158                 sunos) osname=sunos
2159                         case "$3" in
2160                         5*) osname=solaris
2161                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2162                         *)      osvers="$3" ;;
2163                         esac
2164                         ;;
2165                 titanos) osname=titanos
2166                         case "$3" in
2167                         1*) osvers=1 ;;
2168                         2*) osvers=2 ;;
2169                         3*) osvers=3 ;;
2170                         4*) osvers=4 ;;
2171                         *)      osvers="$3" ;;
2172                         esac
2173                         ;;
2174                 ultrix) osname=ultrix
2175                         osvers="$3"
2176                         ;;
2177                 osf1|mls+)      case "$5" in
2178                                 alpha)
2179                                         osname=dec_osf
2180                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2181                                         ;;
2182                         hp*)    osname=hp_osf1  ;;
2183                         mips)   osname=mips_osf1 ;;
2184                         esac
2185                         ;;
2186                 uts) osname=uts 
2187                         osvers="$3"
2188                         ;;
2189                 qnx) osname=qnx
2190                         osvers="$4"
2191                         ;;
2192                 $2) case "$osname" in
2193                         *isc*) ;;
2194                         *freebsd*) ;;
2195                         svr*)
2196                                 : svr4.x or possibly later
2197                                 case "svr$3" in 
2198                                 ${osname}*)
2199                                         osname=svr$3
2200                                         osvers=$4
2201                                         ;;
2202                                 esac
2203                                 case "$osname" in
2204                                 svr4.0)
2205                                         : Check for ESIX
2206                                         if test -f /stand/boot ; then
2207                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2208                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2209                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2210                                                         if test -n "$isesix"; then
2211                                                                 osname=esix4
2212                                                         fi
2213                                                 fi
2214                                         fi
2215                                         ;;
2216                                 esac
2217                                 ;;
2218                         *)      if test -f /etc/systemid; then
2219                                         osname=sco
2220                                         set `echo $3 | $sed 's/\./ /g'` $4
2221                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2222                                                 osvers=$1.$2.$3
2223                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2224                                                 osvers=$1.$2
2225                                         elif $test -f $src/hints/sco_$1.sh; then
2226                                                 osvers=$1
2227                                         fi
2228                                 else
2229                                         case "$osname" in
2230                                         '') : Still unknown.  Probably a generic Sys V.
2231                                                 osname="sysv"
2232                                                 osvers="$3"
2233                                                 ;;
2234                                         esac
2235                                 fi
2236                                 ;;
2237                         esac
2238                         ;;
2239                 *)      case "$osname" in
2240                         '') : Still unknown.  Probably a generic BSD.
2241                                 osname="$1"
2242                                 osvers="$3"
2243                                 ;;
2244                         esac
2245                         ;;
2246                 esac
2247         else
2248                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2249                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2250                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2251                                 osname=news_os
2252                         fi
2253                         $rm -f UU/kernel.what
2254                 elif test -d c:/.; then
2255                         set X $myuname
2256                         osname=os2
2257                         osvers="$5"
2258                 fi
2259         fi
2260         
2261         : Now look for a hint file osname_osvers, unless one has been
2262         : specified already.
2263         case "$hintfile" in
2264         ''|' ')
2265                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2266                 : Also try without trailing minor version numbers.
2267                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2268                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2269                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2270                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2271                 case "$file" in
2272                 '') dflt=none ;;
2273                 *)  case "$osvers" in
2274                         '') dflt=$file
2275                                 ;;
2276                         *)  if $test -f $src/hints/$file.sh ; then
2277                                         dflt=$file
2278                                 elif $test -f $src/hints/$xfile.sh ; then
2279                                         dflt=$xfile
2280                                 elif $test -f $src/hints/$xxfile.sh ; then
2281                                         dflt=$xxfile
2282                                 elif $test -f $src/hints/$xxxfile.sh ; then
2283                                         dflt=$xxxfile
2284                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2285                                         dflt=$xxxxfile
2286                                 elif $test -f "$src/hints/${osname}.sh" ; then
2287                                         dflt="${osname}"
2288                                 else
2289                                         dflt=none
2290                                 fi
2291                                 ;;
2292                         esac
2293                         ;;
2294                 esac
2295                 if $test -f Policy.sh ; then
2296                         case "$dflt" in
2297                         *Policy*) ;;
2298                         none) dflt="Policy" ;;
2299                         *) dflt="Policy $dflt" ;;
2300                         esac
2301                 fi
2302                 ;;
2303         *)
2304                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2305                 ;;
2306         esac
2307
2308         if $test -f Policy.sh ; then
2309                 $cat <<EOM
2310
2311 There's also a Policy hint file available, which should make the
2312 site-specific (policy) questions easier to answer.
2313 EOM
2314
2315         fi
2316
2317         $cat <<EOM
2318
2319 You may give one or more space-separated answers, or "none" if appropriate.
2320 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2321 is a good thing.  DO NOT give a wrong version.
2322
2323 EOM
2324
2325         rp="Which of these apply, if any?"
2326         . UU/myread
2327         tans=$ans
2328         for file in $tans; do
2329                 if $test X$file = XPolicy -a -f Policy.sh; then
2330                         . Policy.sh
2331                         $cat Policy.sh >> UU/config.sh
2332                 elif $test -f $src/hints/$file.sh; then
2333                         . $src/hints/$file.sh
2334                         $cat $src/hints/$file.sh >> UU/config.sh
2335                 elif $test X$tans = X -o X$tans = Xnone ; then
2336                         : nothing
2337                 else
2338                         : Give one chance to correct a possible typo.
2339                         echo "$file.sh does not exist"
2340                         dflt=$file
2341                         rp="hint to use instead?"
2342                         . UU/myread
2343                         for file in $ans; do
2344                                 if $test -f "$src/hints/$file.sh"; then
2345                                         . $src/hints/$file.sh
2346                                         $cat $src/hints/$file.sh >> UU/config.sh
2347                                 elif $test X$ans = X -o X$ans = Xnone ; then
2348                                         : nothing
2349                                 else
2350                                         echo "$file.sh does not exist -- ignored."
2351                                 fi
2352                         done
2353                 fi
2354         done
2355
2356         hint=recommended
2357         : Remember our hint file for later.
2358         if $test -f "$src/hints/$file.sh" ; then
2359                 hintfile="$file"
2360         else
2361                 hintfile=''
2362         fi
2363 fi
2364 cd UU
2365 ;;
2366 *)
2367         echo " "
2368         echo "Fetching default answers from $config_sh..." >&4
2369         tmp_n="$n"
2370         tmp_c="$c"
2371         cd ..
2372         cp $config_sh config.sh 2>/dev/null
2373         chmod +w config.sh
2374         . ./config.sh
2375         cd UU
2376         cp ../config.sh .
2377         n="$tmp_n"
2378         c="$tmp_c"
2379         hint=previous
2380         ;;
2381 esac
2382 test "$override" && . ./optdef.sh
2383 myuname="$newmyuname"
2384
2385 : Restore computed paths
2386 for file in $loclist $trylist; do
2387         eval $file="\$_$file"
2388 done
2389
2390 cat << EOM
2391
2392 Configure uses the operating system name and version to set some defaults.
2393 The default value is probably right if the name rings a bell. Otherwise,
2394 since spelling matters for me, either accept the default or answer "none"
2395 to leave it blank.
2396
2397 EOM
2398 case "$osname" in
2399         ''|' ')
2400                 case "$hintfile" in
2401                 ''|' '|none) dflt=none ;;
2402                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2403                 esac
2404                 ;;
2405         *) dflt="$osname" ;;
2406 esac
2407 rp="Operating system name?"
2408 . ./myread
2409 case "$ans" in
2410 none)  osname='' ;;
2411 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2412 esac
2413 echo " "
2414 case "$osvers" in
2415         ''|' ')
2416                 case "$hintfile" in
2417                 ''|' '|none) dflt=none ;;
2418                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2419                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2420                         case "$dflt" in
2421                         ''|' ') dflt=none ;;
2422                         esac
2423                         ;;
2424                 esac
2425                 ;;
2426         *) dflt="$osvers" ;;
2427 esac
2428 rp="Operating system version?"
2429 . ./myread
2430 case "$ans" in
2431 none)  osvers='' ;;
2432 *) osvers="$ans" ;;
2433 esac
2434
2435 : who configured the system
2436 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2437 cf_by=`(logname) 2>/dev/null`
2438 case "$cf_by" in
2439 "")
2440         cf_by=`(whoami) 2>/dev/null`
2441         case "$cf_by" in
2442         "") cf_by=unknown ;;
2443         esac ;;
2444 esac
2445
2446 : set up the script used to warn in case of inconsistency
2447 cat <<EOS >whoa
2448 $startsh
2449 EOS
2450 cat <<'EOSC' >>whoa
2451 dflt=y
2452 echo " "
2453 echo "*** WHOA THERE!!! ***" >&4
2454 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2455 rp="    Keep the $hint value?"
2456 . ./myread
2457 case "$ans" in
2458 y) td=$was; tu=$was;;
2459 esac
2460 EOSC
2461
2462 : function used to set $1 to $val
2463 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2464 case "$val$was" in
2465 $define$undef) . ./whoa; eval "$var=\$td";;
2466 $undef$define) . ./whoa; eval "$var=\$tu";;
2467 *) eval "$var=$val";;
2468 esac'
2469
2470 cat <<EOM
2471
2472 Perl can be built to take advantage of threads, on some systems.
2473 To do so, Configure must be run with -Dusethreads.
2474 (See README.threads for details.)
2475 EOM
2476 case "$usethreads" in
2477 $define|true|[yY]*)     dflt='y';;
2478 *) dflt='n';;
2479 esac
2480 rp='Build a threading Perl?'
2481 . ./myread
2482 case "$ans" in
2483 y|Y)    val="$define" ;;     
2484 *)      val="$undef" ;;
2485 esac
2486 set usethreads
2487 eval $setvar 
2488
2489 case "$d_oldpthreads" in
2490 '')     : Configure tests would be welcome here.  For now, assume undef.
2491         val="$undef" ;;
2492 *)      val="$d_oldpthreads" ;;
2493 esac
2494 set d_oldpthreads
2495 eval $setvar
2496
2497
2498 case "$usethreads" in
2499 "$define"|true|[yY]*)
2500 : Look for a hint-file generated 'call-back-unit'.  If the
2501 : user has specified that a threading perl is to be built,
2502 : we may need to set or change some other defaults.
2503         if $test -f usethreads.cbu; then
2504                 . ./usethreads.cbu
2505         fi
2506         case "$osname" in
2507         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|os2|solaris|vmesa)
2508                 # Known thread-capable platforms.
2509                 ;;
2510         *)
2511                 cat >&4 <<EOM
2512 $osname is not known to support threads.
2513 Please let me (jhi@iki.fi) know how to do that.
2514
2515 Cannot continue, aborting.
2516 EOM
2517                 exit 1
2518         ;;
2519         esac # $osname
2520     ;;
2521 esac # $usethreads
2522
2523 cat <<EOM
2524
2525 Perl can be built so that multiple Perl interpreters can coexist
2526 within the same Perl executable.  To do so, Configure must be run with
2527 -Dusemultiplicity.
2528
2529 Normally you do not need this and you should answer no.
2530
2531 EOM
2532 case "$usemultiplicity" in
2533 $define|true|[yY]*)     dflt='y';;
2534 *) dflt='n';;
2535 esac
2536 rp='Build Perl for multiplicity?'
2537 . ./myread
2538 case "$ans" in
2539 y|Y)    val="$define" ;;     
2540 *)      val="$undef" ;;
2541 esac
2542 set usemultiplicity
2543 eval $setvar 
2544
2545 cat <<EOM
2546
2547 Perl can be built to take advantage of explicit 64-bit interfaces,
2548 on some systems.  To do so, Configure must be run with -Duse64bits.
2549
2550 If this doesn't make any sense to you, just accept the default 'n'.
2551 EOM
2552 case "$use64bits" in
2553 $define|true|[yY]*)     dflt='y';;
2554 *) dflt='n';;
2555 esac
2556 rp='Try to use explicit 64-bit interfaces, if available?'
2557 . ./myread
2558 case "$ans" in
2559 y|Y) 
2560         val="$define"
2561         ;;     
2562 *)      
2563         val="$undef"
2564         ;;
2565 esac
2566 set use64bits
2567 eval $setvar
2568
2569 case "$archname64" in
2570 '') archname64='' ;;    # not a typo
2571 esac
2572
2573 case "$use64bits" in
2574 "$define"|true|[yY]*)
2575 : Look for a hint-file generated 'call-back-unit'.  If the
2576 : user has specified that a threading perl is to be built,
2577 : we may need to set or change some other defaults.
2578         if $test -f use64bits.cbu; then
2579                 . ./use64bits.cbu
2580         fi
2581         case "$osname" in
2582         dec_osf|hpux|irix|solaris|unicos)
2583                 # Known 64-bit capable platforms.
2584                 ;;
2585         *)
2586                 cat >&4 <<EOM
2587 $osname is not known to support 64-bit interfaces.
2588 Please let me (jhi@iki.fi) know how to do that.
2589
2590 Cannot continue, aborting.
2591 EOM
2592                 exit 1
2593                 ;;
2594         esac
2595         ;;
2596 esac
2597
2598 : determine the architecture name
2599 echo " "
2600 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2601         tarch=`arch`"-$osname"
2602 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2603         if uname -m > tmparch 2>&1 ; then
2604                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2605                         -e 's/$/'"-$osname/" tmparch`
2606         else
2607                 tarch="$osname"
2608         fi
2609         $rm -f tmparch
2610 else
2611         tarch="$osname"
2612 fi
2613 case "$myarchname" in
2614 ''|"$tarch") ;;
2615 *)
2616         echo "(Your architecture name used to be $myarchname.)"
2617         archname=''
2618         ;;
2619 esac
2620 myarchname="$tarch"
2621 case "$archname" in
2622 '') dflt="$tarch";;
2623 *) dflt="$archname";;
2624 esac
2625 rp='What is your architecture name'
2626 . ./myread
2627 archname="$ans"
2628 case "$usethreads" in
2629 $define)
2630         echo "Threads selected." >&4
2631         case "$archname" in
2632         *-thread*) echo "...and architecture name already has -thread." >&4
2633                 ;;
2634         *)      archname="$archname-thread"
2635                 echo "...setting architecture name to $archname." >&4
2636                 ;;
2637         esac
2638         ;;
2639 esac
2640 case "$usemultiplicity" in
2641 $define)
2642         echo "Multiplicity selected." >&4
2643         case "$archname" in
2644         *-multi*) echo "...and architecture name already has -multi." >&4
2645                 ;;
2646         *)      archname="$archname-multi"
2647                 echo "...setting architecture name to $archname." >&4
2648                 ;;
2649         esac
2650         ;;
2651 esac
2652 case "$use64bits" in
2653 $define)
2654         echo "Explicit 64-bitness selected." >&4
2655         case "$archname64" in
2656         '')
2657                 ;;
2658         *)
2659                 case "$archname" in
2660                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2661                         ;;
2662                 *)      archname="$archname-$archname64"
2663                         echo "...setting architecture name to $archname." >&4
2664                         ;;
2665                 esac
2666                 ;;
2667         esac
2668 esac
2669
2670 : is AFS running?
2671 echo " "
2672 case "$afs" in
2673 $define|true)   afs=true ;;
2674 $undef|false)   afs=false ;;
2675 *)      if test -d /afs; then
2676                 afs=true
2677         else
2678                 afs=false
2679         fi
2680         ;;
2681 esac
2682 if $afs; then
2683         echo "AFS may be running... I'll be extra cautious then..." >&4
2684 else
2685         echo "AFS does not seem to be running..." >&4
2686 fi
2687
2688 : decide how portable to be.  Allow command line overrides.
2689 case "$d_portable" in
2690 "$undef") ;;
2691 *)      d_portable="$define" ;;
2692 esac
2693
2694 : set up shell script to do ~ expansion
2695 cat >filexp <<EOSS
2696 $startsh
2697 : expand filename
2698 case "\$1" in
2699  ~/*|~)
2700         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2701         ;;
2702  ~*)
2703         if $test -f /bin/csh; then
2704                 /bin/csh -f -c "glob \$1"
2705                 failed=\$?
2706                 echo ""
2707                 exit \$failed
2708         else
2709                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2710                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2711                 if $test ! -d "\$dir"; then
2712                         me=\`basename \$0\`
2713                         echo "\$me: can't locate home directory for: \$name" >&2
2714                         exit 1
2715                 fi
2716                 case "\$1" in
2717                 */*)
2718                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2719                         ;;
2720                 *)
2721                         echo \$dir
2722                         ;;
2723                 esac
2724         fi
2725         ;;
2726 *)
2727         echo \$1
2728         ;;
2729 esac
2730 EOSS
2731 chmod +x filexp
2732 $eunicefix filexp
2733
2734 : now set up to get a file name
2735 cat <<EOS >getfile
2736 $startsh
2737 EOS
2738 cat <<'EOSC' >>getfile
2739 tilde=''
2740 fullpath=''
2741 already=''
2742 skip=''
2743 none_ok=''
2744 exp_file=''
2745 nopath_ok=''
2746 orig_rp="$rp"
2747 orig_dflt="$dflt"
2748
2749 case "$fn" in
2750 *\(*)
2751         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2752         fn=`echo $fn | sed 's/(.*)//'`
2753         ;;
2754 esac
2755
2756 case "$fn" in
2757 *:*)
2758         loc_file=`expr $fn : '.*:\(.*\)'`
2759         fn=`expr $fn : '\(.*\):.*'`
2760         ;;
2761 esac
2762
2763 case "$fn" in
2764 *~*) tilde=true;;
2765 esac
2766 case "$fn" in
2767 */*) fullpath=true;;
2768 esac
2769 case "$fn" in
2770 *+*) skip=true;;
2771 esac
2772 case "$fn" in
2773 *n*) none_ok=true;;
2774 esac
2775 case "$fn" in
2776 *e*) exp_file=true;;
2777 esac
2778 case "$fn" in
2779 *p*) nopath_ok=true;;
2780 esac
2781
2782 case "$fn" in
2783 *f*) type='File';;
2784 *d*) type='Directory';;
2785 *l*) type='Locate';;
2786 esac
2787
2788 what="$type"
2789 case "$what" in
2790 Locate) what='File';;
2791 esac
2792
2793 case "$exp_file" in
2794 '')
2795         case "$d_portable" in
2796         "$define") ;;
2797         *) exp_file=true;;
2798         esac
2799         ;;
2800 esac
2801
2802 cd ..
2803 while test "$type"; do
2804         redo=''
2805         rp="$orig_rp"
2806         dflt="$orig_dflt"
2807         case "$tilde" in
2808         true) rp="$rp (~name ok)";;
2809         esac
2810         . UU/myread
2811         if test -f UU/getfile.ok && \
2812                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2813         then
2814                 value="$ans"
2815                 ansexp="$ans"
2816                 break
2817         fi
2818         case "$ans" in
2819         none)
2820                 value=''
2821                 ansexp=''
2822                 case "$none_ok" in
2823                 true) type='';;
2824                 esac
2825                 ;;
2826         *)
2827                 case "$tilde" in
2828                 '') value="$ans"
2829                         ansexp="$ans";;
2830                 *)
2831                         value=`UU/filexp $ans`
2832                         case $? in
2833                         0)
2834                                 if test "$ans" != "$value"; then
2835                                         echo "(That expands to $value on this system.)"
2836                                 fi
2837                                 ;;
2838                         *) value="$ans";;
2839                         esac
2840                         ansexp="$value"
2841                         case "$exp_file" in
2842                         '') value="$ans";;
2843                         esac
2844                         ;;
2845                 esac
2846                 case "$fullpath" in
2847                 true)
2848                         case "$ansexp" in
2849                         /*) value="$ansexp" ;;
2850                         *)
2851                                 redo=true
2852                                 case "$already" in
2853                                 true)
2854                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2855                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2856                                         ;;
2857                                 *)
2858                                 echo "Please give a full path name, starting with slash." >&4
2859                                         case "$tilde" in
2860                                         true)
2861                                 echo "Note that using ~name is ok provided it expands well." >&4
2862                                                 already=true
2863                                                 ;;
2864                                         esac
2865                                 esac
2866                                 ;;
2867                         esac
2868                         ;;
2869                 esac
2870                 case "$redo" in
2871                 '')
2872                         case "$type" in
2873                         File)
2874                                 if test -f "$ansexp"; then
2875                                         type=''
2876                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2877                                 then
2878                                         echo "($value is not a plain file, but that's ok.)"
2879                                         type=''
2880                                 fi
2881                                 ;;
2882                         Directory)
2883                                 if test -d "$ansexp"; then
2884                                         type=''
2885                                 fi
2886                                 ;;
2887                         Locate)
2888                                 if test -d "$ansexp"; then
2889                                         echo "(Looking for $loc_file in directory $value.)"
2890                                         value="$value/$loc_file"
2891                                         ansexp="$ansexp/$loc_file"
2892                                 fi
2893                                 if test -f "$ansexp"; then
2894                                         type=''
2895                                 fi
2896                                 case "$nopath_ok" in
2897                                 true)   case "$value" in
2898                                         */*) ;;
2899                                         *)      echo "Assuming $value will be in people's path."
2900                                                 type=''
2901                                                 ;;
2902                                         esac
2903                                         ;;
2904                                 esac
2905                                 ;;
2906                         esac
2907
2908                         case "$skip" in
2909                         true) type='';
2910                         esac
2911
2912                         case "$type" in
2913                         '') ;;
2914                         *)
2915                                 if test "$fastread" = yes; then
2916                                         dflt=y
2917                                 else
2918                                         dflt=n
2919                                 fi
2920                                 rp="$what $value doesn't exist.  Use that name anyway?"
2921                                 . UU/myread
2922                                 dflt=''
2923                                 case "$ans" in
2924                                 y*) type='';;
2925                                 *) echo " ";;
2926                                 esac
2927                                 ;;
2928                         esac
2929                         ;;
2930                 esac
2931                 ;;
2932         esac
2933 done
2934 cd UU
2935 ans="$value"
2936 rp="$orig_rp"
2937 dflt="$orig_dflt"
2938 rm -f getfile.ok
2939 EOSC
2940
2941 : determine root of directory hierarchy where package will be installed.
2942 case "$prefix" in
2943 '')
2944         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2945         ;;
2946 *)
2947         dflt="$prefix"
2948         ;;
2949 esac
2950 $cat <<EOM
2951
2952 By default, $package will be installed in $dflt/bin, manual
2953 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2954 all installation directories. Typically set to /usr/local, but you
2955 may choose /usr if you wish to install $package among your system
2956 binaries. If you wish to have binaries under /bin but manual pages
2957 under /usr/local/man, that's ok: you will be prompted separately
2958 for each of the installation directories, the prefix being only used
2959 to set the defaults.
2960
2961 EOM
2962 fn=d~
2963 rp='Installation prefix to use?'
2964 . ./getfile
2965 oldprefix=''
2966 case "$prefix" in
2967 '') ;;
2968 *)
2969         case "$ans" in
2970         "$prefix") ;;
2971         *) oldprefix="$prefix";;
2972         esac
2973         ;;
2974 esac
2975 prefix="$ans"
2976 prefixexp="$ansexp"
2977
2978 : set the prefixit variable, to compute a suitable default value
2979 prefixit='case "$3" in
2980 ""|none)
2981         case "$oldprefix" in
2982         "") eval "$1=\"\$$2\"";;
2983         *)
2984                 case "$3" in
2985                 "") eval "$1=";;
2986                 none)
2987                         eval "tp=\"\$$2\"";
2988                         case "$tp" in
2989                         ""|" ") eval "$1=\"\$$2\"";;
2990                         *) eval "$1=";;
2991                         esac;;
2992                 esac;;
2993         esac;;
2994 *)
2995         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2996         case "$tp" in
2997         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2998         /*-$oldprefix/*|\~*-$oldprefix/*)
2999                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3000         *) eval "$1=\"\$$2\"";;
3001         esac;;
3002 esac'
3003
3004 : set the base revision
3005 baserev=5.0
3006
3007 : get the patchlevel
3008 echo " "
3009 echo "Getting the current patchlevel..." >&4
3010 if $test -r $rsrc/patchlevel.h;then
3011         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3012         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3013 else
3014         patchlevel=0
3015         subversion=0
3016 fi
3017 $echo $n "(You have $package" $c
3018 case "$package" in
3019 "*$baserev")    ;;
3020 *)              $echo $n " $baserev" $c ;;
3021 esac
3022 $echo $n " patchlevel $patchlevel" $c
3023 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3024 echo ".)"
3025
3026 if test 0 -eq "$subversion"; then
3027         version=`LC_ALL=C; export LC_ALL; \
3028                  LANGUAGE=C; export LANGUAGE; \
3029                  echo $baserev $patchlevel | \
3030                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3031 else
3032         version=`LC_ALL=C; export LC_ALL; \
3033                  LANGUAGE=C; export LANGUAGE; \
3034                  echo $baserev $patchlevel $subversion | \
3035                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3036 fi
3037 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3038 if test "$subversion" -lt 50; then
3039         apiversion=`LC_ALL=C; export LC_ALL; \
3040                  LANGUAGE=C; export LANGUAGE; \
3041                  echo $baserev $patchlevel | \
3042                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3043 else
3044         apiversion="$version"
3045 fi
3046
3047 : determine where private library files go
3048 : Usual default is /usr/local/lib/perl5/$version.
3049 : Also allow things like /opt/perl/lib/$version, since 
3050 : /opt/perl/lib/perl5... would be redundant.
3051 case "$prefix" in
3052 *perl*) set dflt privlib lib/$version ;;
3053 *)       set dflt privlib lib/$package/$version ;;
3054 esac
3055 eval $prefixit
3056 $cat <<EOM
3057
3058 There are some auxiliary files for $package that need to be put into a
3059 private library directory that is accessible by everyone.
3060
3061 EOM
3062 fn=d~+
3063 rp='Pathname where the private library files will reside?'
3064 . ./getfile
3065 if $test "X$privlibexp" != "X$ansexp"; then
3066         installprivlib=''
3067 fi
3068 privlib="$ans"
3069 privlibexp="$ansexp"
3070 if $afs; then
3071         $cat <<EOM
3072
3073 Since you are running AFS, I need to distinguish the directory in which
3074 private files reside from the directory in which they are installed (and from
3075 which they are presumably copied to the former directory by occult means).
3076
3077 EOM
3078         case "$installprivlib" in
3079         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3080         *) dflt="$installprivlib";;
3081         esac
3082         fn=de~
3083         rp='Where will private files be installed?'
3084         . ./getfile
3085         installprivlib="$ans"
3086 else
3087         installprivlib="$privlibexp"
3088 fi
3089
3090 : set the prefixup variable, to restore leading tilda escape
3091 prefixup='case "$prefixexp" in
3092 "$prefix") ;;
3093 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3094 esac'
3095
3096 : determine where public architecture dependent libraries go
3097 set archlib archlib
3098 eval $prefixit
3099 : privlib default is /usr/local/lib/$package/$version
3100 : archlib default is /usr/local/lib/$package/$version/$archname
3101 : privlib may have an optional trailing /share.
3102 tdflt=`echo $privlib | $sed 's,/share$,,'`
3103 tdflt=$tdflt/$archname
3104 case "$archlib" in
3105 '')     dflt=$tdflt
3106         ;;
3107 *)      dflt="$archlib"
3108     ;;
3109 esac
3110 cat <<EOM
3111
3112 $spackage contains architecture-dependent library files.  If you are
3113 sharing libraries in a heterogeneous environment, you might store
3114 these files in a separate location.  Otherwise, you can just include
3115 them with the rest of the public library files.
3116
3117 EOM
3118 fn=d+~
3119 rp='Where do you want to put the public architecture-dependent libraries?'
3120 . ./getfile
3121 archlib="$ans"
3122 archlibexp="$ansexp"
3123
3124 if $afs; then
3125         $cat <<EOM
3126
3127 Since you are running AFS, I need to distinguish the directory in
3128 which architecture-dependent library files reside from the directory
3129 in which they are installed (and from which they are presumably copied
3130 to the former directory by occult means).
3131
3132 EOM
3133         case "$installarchlib" in
3134         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3135         *) dflt="$installarchlib";;
3136         esac
3137         fn=de~
3138         rp='Where will architecture-dependent library files be installed?'
3139         . ./getfile
3140         installarchlib="$ans"
3141 else
3142         installarchlib="$archlibexp"
3143 fi
3144 if $test X"$archlib" = X"$privlib"; then
3145         d_archlib="$undef"
3146 else
3147         d_archlib="$define"
3148 fi
3149
3150 : make some quick guesses about what we are up against
3151 echo " "
3152 $echo $n "Hmm...  $c"
3153 echo exit 1 >bsd
3154 echo exit 1 >usg
3155 echo exit 1 >v7
3156 echo exit 1 >osf1
3157 echo exit 1 >eunice
3158 echo exit 1 >xenix
3159 echo exit 1 >venix
3160 echo exit 1 >os2
3161 d_bsd="$undef"
3162 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3163 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3164 then
3165         echo "Looks kind of like an OSF/1 system, but we'll see..."
3166         echo exit 0 >osf1
3167 elif test `echo abc | tr a-z A-Z` = Abc ; then
3168         xxx=`./loc addbib blurfl $pth`
3169         if $test -f $xxx; then
3170         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3171                 echo exit 0 >bsd
3172                 echo exit 0 >usg
3173         else
3174                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3175                         echo "Looks kind of like an extended USG system, but we'll see..."
3176                 else
3177                         echo "Looks kind of like a USG system, but we'll see..."
3178                 fi
3179                 echo exit 0 >usg
3180         fi
3181 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3182         echo "Looks kind of like a BSD system, but we'll see..."
3183         d_bsd="$define"
3184         echo exit 0 >bsd
3185 else
3186         echo "Looks kind of like a Version 7 system, but we'll see..."
3187         echo exit 0 >v7
3188 fi
3189 case "$eunicefix" in
3190 *unixtovms*)
3191         $cat <<'EOI'
3192 There is, however, a strange, musty smell in the air that reminds me of
3193 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3194 EOI
3195         echo exit 0 >eunice
3196         d_eunice="$define"
3197 : it so happens the Eunice I know will not run shell scripts in Unix format
3198         ;;
3199 *)
3200         echo " "
3201         echo "Congratulations.  You aren't running Eunice."
3202         d_eunice="$undef"
3203         ;;
3204 esac
3205 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3206 case "$p_" in
3207 :) ;;
3208 *)
3209         $cat <<'EOI'
3210 I have the feeling something is not exactly right, however...don't tell me...
3211 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3212 EOI
3213         echo exit 0 >os2
3214         ;;
3215 esac
3216 if test -f /xenix; then
3217         echo "Actually, this looks more like a XENIX system..."
3218         echo exit 0 >xenix
3219         d_xenix="$define"
3220 else
3221         echo " "
3222         echo "It's not Xenix..."
3223         d_xenix="$undef"
3224 fi
3225 chmod +x xenix
3226 $eunicefix xenix
3227 if test -f /venix; then
3228         echo "Actually, this looks more like a VENIX system..."
3229         echo exit 0 >venix
3230 else
3231         echo " "
3232         if ./xenix; then
3233                 : null
3234         else
3235                 echo "Nor is it Venix..."
3236         fi
3237 fi
3238 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3239 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3240 $rm -f foo
3241
3242 : see if setuid scripts can be secure
3243 $cat <<EOM
3244
3245 Some kernels have a bug that prevents setuid #! scripts from being
3246 secure.  Some sites have disabled setuid #! scripts because of this.
3247
3248 First let's decide if your kernel supports secure setuid #! scripts.
3249 (If setuid #! scripts would be secure but have been disabled anyway,
3250 don't say that they are secure if asked.)
3251
3252 EOM
3253
3254 val="$undef"
3255 if $test -d /dev/fd; then
3256         echo "#!$ls" >reflect
3257         chmod +x,u+s reflect
3258         ./reflect >flect 2>&1
3259         if $contains "/dev/fd" flect >/dev/null; then
3260                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3261                 val="$define"
3262         else
3263                 $cat <<EOM
3264 If you are not sure if they are secure, I can check but I'll need a
3265 username and password different from the one you are using right now.
3266 If you don't have such a username or don't want me to test, simply
3267 enter 'none'.
3268
3269 EOM
3270                 rp='Other username to test security of setuid scripts with?'
3271                 dflt='none'
3272                 . ./myread
3273                 case "$ans" in
3274                 n|none)
3275                         case "$d_suidsafe" in
3276                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3277                                 dflt=n;;
3278                         "$undef")
3279                                 echo "Well, the $hint value is *not* secure." >&4
3280                                 dflt=n;;
3281                         *)      echo "Well, the $hint value *is* secure." >&4
3282                                 dflt=y;;
3283                         esac
3284                         ;;
3285                 *)
3286                         $rm -f reflect flect
3287                         echo "#!$ls" >reflect
3288                         chmod +x,u+s reflect
3289                         echo >flect
3290                         chmod a+w flect
3291                         echo '"su" will (probably) prompt you for '"$ans's password."
3292                         su $ans -c './reflect >flect'
3293                         if $contains "/dev/fd" flect >/dev/null; then
3294                                 echo "Okay, it looks like setuid scripts are secure." >&4
3295                                 dflt=y
3296                         else
3297                                 echo "I don't think setuid scripts are secure." >&4
3298                                 dflt=n
3299                         fi
3300                         ;;
3301                 esac
3302                 rp='Does your kernel have *secure* setuid scripts?'
3303                 . ./myread
3304                 case "$ans" in
3305                 [yY]*)  val="$define";;
3306                 *)      val="$undef";;
3307                 esac
3308         fi
3309 else
3310         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3311         echo "(That's for file descriptors, not floppy disks.)"
3312         val="$undef"
3313 fi
3314 set d_suidsafe
3315 eval $setvar
3316
3317 $rm -f reflect flect
3318
3319 : now see if they want to do setuid emulation
3320 echo " "
3321 val="$undef"
3322 case "$d_suidsafe" in
3323 "$define")
3324         val="$undef"
3325         echo "No need to emulate SUID scripts since they are secure here." >& 4
3326         ;;
3327 *)
3328         $cat <<EOM
3329 Some systems have disabled setuid scripts, especially systems where
3330 setuid scripts cannot be secure.  On systems where setuid scripts have
3331 been disabled, the setuid/setgid bits on scripts are currently
3332 useless.  It is possible for $package to detect those bits and emulate
3333 setuid/setgid in a secure fashion.  This emulation will only work if
3334 setuid scripts have been disabled in your kernel.
3335
3336 EOM
3337         case "$d_dosuid" in
3338         "$define") dflt=y ;;
3339         *) dflt=n ;;
3340         esac
3341         rp="Do you want to do setuid/setgid emulation?"
3342         . ./myread
3343         case "$ans" in
3344         [yY]*)  val="$define";;
3345         *)      val="$undef";;
3346         esac
3347         ;;
3348 esac
3349 set d_dosuid
3350 eval $setvar
3351
3352 : determine where manual pages are on this system
3353 echo " "
3354 case "$sysman" in
3355 '') 
3356         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3357         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3358         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3359         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3360         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3361         sysman=`./loc . /usr/man/man1 $syspath`
3362         ;;
3363 esac
3364 if $test -d "$sysman"; then
3365         echo "System manual is in $sysman." >&4
3366 else
3367         echo "Could not find manual pages in source form." >&4
3368 fi
3369
3370 : see what memory models we can support
3371 case "$models" in
3372 '')
3373         $cat >pdp11.c <<'EOP'
3374 main() {
3375 #ifdef pdp11
3376         exit(0);
3377 #else
3378         exit(1);
3379 #endif
3380 }
3381 EOP
3382         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3383         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3384                 dflt='unsplit split'
3385         else
3386                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3387                 case "$tans" in
3388                 X) dflt='none';;
3389                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3390                                 dflt='small'
3391                         else
3392                                 dflt=''
3393                         fi
3394                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3395                                 dflt="$dflt medium"
3396                         fi
3397                         if $test -d /lib/large || $test -d /usr/lib/large; then
3398                                 dflt="$dflt large"
3399                         fi
3400                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3401                                 dflt="$dflt huge"
3402                         fi
3403                 esac
3404         fi;;
3405 *) dflt="$models";;
3406 esac
3407 $cat <<EOM
3408  
3409 Some systems have different model sizes.  On most systems they are called
3410 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3411 split.  If your system doesn't support different memory models, say "none".
3412 If you wish to force everything to one memory model, say "none" here and
3413 put the appropriate flags later when it asks you for other cc and ld flags.
3414 Venix systems may wish to put "none" and let the compiler figure things out.
3415 (In the following question multiple model names should be space separated.)
3416
3417 The default for most systems is "none".
3418
3419 EOM
3420 rp="Which memory models are supported?"
3421 . ./myread
3422 models="$ans"
3423
3424 case "$models" in
3425 none)
3426         small=''
3427         medium=''
3428         large=''
3429         huge=''
3430         unsplit=''
3431         split=''
3432         ;;
3433 *split)
3434         case "$split" in
3435         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3436                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3437                         dflt='-i'
3438                 else
3439                         dflt='none'
3440                 fi;;
3441         *) dflt="$split";;
3442         esac
3443         rp="What flag indicates separate I and D space?"
3444         . ./myread
3445         tans="$ans"
3446         case "$tans" in
3447         none) tans='';;
3448         esac
3449         split="$tans"
3450         unsplit='';;
3451 *large*|*small*|*medium*|*huge*)
3452         case "$models" in
3453         *large*)
3454                 case "$large" in
3455                 '') dflt='-Ml';;
3456                 *) dflt="$large";;
3457                 esac
3458         rp="What flag indicates large model?"
3459         . ./myread
3460         tans="$ans"
3461         case "$tans" in
3462         none) tans='';
3463         esac
3464         large="$tans";;
3465         *) large='';;
3466         esac
3467         case "$models" in
3468         *huge*) case "$huge" in
3469                 '') dflt='-Mh';;
3470                 *) dflt="$huge";;
3471                 esac
3472                 rp="What flag indicates huge model?"
3473                 . ./myread
3474                 tans="$ans"
3475                 case "$tans" in
3476                 none) tans='';
3477                 esac
3478                 huge="$tans";;
3479         *) huge="$large";;
3480         esac
3481         case "$models" in
3482         *medium*) case "$medium" in
3483                 '') dflt='-Mm';;
3484                 *) dflt="$medium";;
3485                 esac
3486                 rp="What flag indicates medium model?"
3487                 . ./myread
3488                 tans="$ans"
3489                 case "$tans" in
3490                 none) tans='';
3491                 esac
3492                 medium="$tans";;
3493         *) medium="$large";;
3494         esac
3495         case "$models" in
3496         *small*) case "$small" in
3497                 '') dflt='none';;
3498                 *) dflt="$small";;
3499                 esac
3500                 rp="What flag indicates small model?"
3501                 . ./myread
3502                 tans="$ans"
3503                 case "$tans" in
3504                 none) tans='';
3505                 esac
3506                 small="$tans";;
3507         *) small='';;
3508         esac
3509         ;;
3510 *)
3511         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3512         ;;
3513 esac
3514 $rm -f pdp11.* pdp11
3515
3516 : see if we need a special compiler
3517 echo " "
3518 if ./usg; then
3519         case "$cc" in
3520         '') case "$Mcc" in
3521                 /*) dflt='Mcc';;
3522                 *) case "$large" in
3523                         -M*) dflt='cc';;
3524                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3525                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3526                                                 dflt='cc'
3527                                         else
3528                                                 dflt='cc -M'
3529                                         fi
3530                                 else
3531                                         dflt='cc'
3532                                 fi;;
3533                         esac;;
3534                 esac;;
3535         *)  dflt="$cc";;
3536         esac
3537         case "$dflt" in
3538         *M*)    $cat <<'EOM'
3539 On some older systems the default C compiler will not resolve multiple global
3540 references that happen to have the same name.  On some such systems the "Mcc"
3541 command may be used to force these to be resolved.  On other systems a "cc -M"
3542 command is required.  (Note that the -M flag on other systems indicates a
3543 memory model to use!) If you have the Gnu C compiler, you might wish to use
3544 that instead.
3545
3546 EOM
3547         ;;
3548         esac
3549         rp="Use which C compiler?"
3550         . ./myread
3551         cc="$ans"
3552 else
3553         case "$cc" in
3554         '') dflt=cc;;
3555         *) dflt="$cc";;
3556         esac
3557         rp="Use which C compiler?"
3558         . ./myread
3559         cc="$ans"
3560 fi
3561 : Look for a hint-file generated 'call-back-unit'.  Now that the
3562 : user has specified the compiler, we may need to set or change some
3563 : other defaults.
3564 if $test -f cc.cbu; then
3565     . ./cc.cbu
3566 fi
3567 echo " "
3568 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3569 $cat >gccvers.c <<EOM
3570 #include <stdio.h>
3571 int main() {
3572 #ifdef __GNUC__
3573 #ifdef __VERSION__
3574         printf("%s\n", __VERSION__);
3575 #else
3576         printf("%s\n", "1");
3577 #endif
3578 #endif
3579         exit(0);
3580 }
3581 EOM
3582 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3583         gccversion=`./gccvers`
3584         case "$gccversion" in
3585         '') echo "You are not using GNU cc." ;;
3586         *)  echo "You are using GNU cc $gccversion." ;;
3587         esac
3588 else
3589         echo " "
3590         echo "*** WHOA THERE!!! ***" >&4
3591         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3592         case "$knowitall" in
3593         '')
3594         echo "    You'd better start hunting for one and let me know about it." >&4
3595                 exit 1
3596                 ;;
3597         esac
3598 fi
3599 $rm -f gccvers*
3600 case "$gccversion" in
3601 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3602 esac
3603
3604 : What should the include directory be ?
3605 echo " "
3606 $echo $n "Hmm...  $c"
3607 dflt='/usr/include'
3608 incpath=''
3609 mips_type=''
3610 if $test -f /bin/mips && /bin/mips; then
3611         echo "Looks like a MIPS system..."
3612         $cat >usr.c <<'EOCP'
3613 #ifdef SYSTYPE_BSD43
3614 /bsd43
3615 #endif
3616 EOCP
3617         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3618                 dflt='/bsd43/usr/include'
3619                 incpath='/bsd43'
3620                 mips_type='BSD 4.3'
3621         else
3622                 mips_type='System V'
3623         fi
3624         $rm -f usr.c usr.out
3625         echo "and you're compiling with the $mips_type compiler and libraries."
3626         xxx_prompt=y
3627         echo "exit 0" >mips
3628 else
3629         echo "Doesn't look like a MIPS system."
3630         xxx_prompt=n
3631         echo "exit 1" >mips
3632 fi
3633 chmod +x mips
3634 $eunicefix mips
3635 case "$usrinc" in
3636 '') ;;
3637 *) dflt="$usrinc";;
3638 esac
3639 case "$xxx_prompt" in
3640 y)      fn=d/
3641         echo " "
3642         rp='Where are the include files you want to use?'
3643         . ./getfile
3644         usrinc="$ans"
3645         ;;
3646 *)      usrinc="$dflt"
3647         ;;
3648 esac
3649
3650 : see how we invoke the C preprocessor
3651 echo " "
3652 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3653 cat <<'EOT' >testcpp.c
3654 #define ABC abc
3655 #define XYZ xyz
3656 ABC.XYZ
3657 EOT
3658 cd ..
3659 if test ! -f cppstdin; then
3660         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3661 else
3662         echo "Keeping your $hint cppstdin wrapper."
3663 fi
3664 chmod 755 cppstdin
3665 wrapper=`pwd`/cppstdin
3666 ok='false'
3667 cd UU
3668
3669 if $test "X$cppstdin" != "X" && \
3670         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3671         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3672 then
3673         echo "You used to use $cppstdin $cppminus so we'll use that again."
3674         case "$cpprun" in
3675         '') echo "But let's see if we can live without a wrapper..." ;;
3676         *)
3677                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3678                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3679                 then
3680                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3681                         ok='true'
3682                 else
3683                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3684                 fi
3685                 ;;
3686         esac
3687 else
3688         case "$cppstdin" in
3689         '') ;;
3690         *)
3691                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3692                 ;;
3693         esac
3694 fi
3695
3696 if $ok; then
3697         : nothing
3698 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3699         $cc -E <testcpp.c >testcpp.out 2>&1; \
3700         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3701         echo "Yup, it does."
3702         x_cpp="$cc -E"
3703         x_minus='';
3704 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3705         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3706         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3707         echo "Yup, it does."
3708         x_cpp="$cc -E"
3709         x_minus='-';
3710 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3711         $cc -P <testcpp.c >testcpp.out 2>&1; \
3712         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3713         echo "Yipee, that works!"
3714         x_cpp="$cc -P"
3715         x_minus='';
3716 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3717         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3718         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3719         echo "At long last!"
3720         x_cpp="$cc -P"
3721         x_minus='-';
3722 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3723         $cpp <testcpp.c >testcpp.out 2>&1; \
3724         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3725         echo "It works!"
3726         x_cpp="$cpp"
3727         x_minus='';
3728 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3729         $cpp - <testcpp.c >testcpp.out 2>&1; \
3730         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3731         echo "Hooray, it works!  I was beginning to wonder."
3732         x_cpp="$cpp"
3733         x_minus='-';
3734 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3735         $wrapper <testcpp.c >testcpp.out 2>&1; \
3736         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3737         x_cpp="$wrapper"
3738         x_minus=''
3739         echo "Eureka!"
3740 else
3741         dflt=''
3742         rp="No dice.  I can't find a C preprocessor.  Name one:"
3743         . ./myread
3744         x_cpp="$ans"
3745         x_minus=''
3746         $x_cpp <testcpp.c >testcpp.out 2>&1
3747         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3748                 echo "OK, that will do." >&4
3749         else
3750 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3751                 exit 1
3752         fi
3753 fi
3754
3755 case "$ok" in
3756 false)
3757         cppstdin="$x_cpp"
3758         cppminus="$x_minus"
3759         cpprun="$x_cpp"
3760         cpplast="$x_minus"
3761         set X $x_cpp
3762         shift
3763         case "$1" in
3764         "$cpp")
3765                 echo "Perhaps can we force $cc -E using a wrapper..."
3766                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3767                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3768                 then
3769                         echo "Yup, we can."
3770                         cppstdin="$wrapper"
3771                         cppminus='';
3772                 else
3773                         echo "Nope, we'll have to live without it..."
3774                 fi
3775                 ;;
3776         esac
3777         case "$cpprun" in
3778         "$wrapper")
3779                 cpprun=''
3780                 cpplast=''
3781                 ;;
3782         esac
3783         ;;
3784 esac
3785
3786 case "$cppstdin" in
3787 "$wrapper") ;;
3788 *) $rm -f $wrapper;;
3789 esac
3790 $rm -f testcpp.c testcpp.out
3791
3792 : Set private lib path
3793 case "$plibpth" in
3794 '') if ./mips; then
3795                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3796         fi;;
3797 esac
3798 case "$libpth" in
3799 ' ') dlist='';;
3800 '') dlist="$loclibpth $plibpth $glibpth";;
3801 *) dlist="$libpth";;
3802 esac
3803
3804 : Now check and see which directories actually exist, avoiding duplicates
3805 libpth=''
3806 for xxx in $dlist
3807 do
3808     if $test -d $xxx; then
3809                 case " $libpth " in
3810                 *" $xxx "*) ;;
3811                 *) libpth="$libpth $xxx";;
3812                 esac
3813     fi
3814 done
3815 $cat <<'EOM'
3816
3817 Some systems have incompatible or broken versions of libraries.  Among
3818 the directories listed in the question below, please remove any you
3819 know not to be holding relevant libraries, and add any that are needed.
3820 Say "none" for none.
3821
3822 EOM
3823 case "$libpth" in
3824 '') dflt='none';;
3825 *)
3826         set X $libpth
3827         shift
3828         dflt=${1+"$@"}
3829         ;;
3830 esac
3831 rp="Directories to use for library searches?"
3832 . ./myread
3833 case "$ans" in
3834 none) libpth=' ';;
3835 *) libpth="$ans";;
3836 esac
3837
3838 : compute shared library extension
3839 case "$so" in
3840 '')
3841         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3842                 dflt='sl'
3843         else
3844                 dflt='so'
3845         fi
3846         ;;
3847 *) dflt="$so";;
3848 esac
3849 $cat <<EOM
3850
3851 On some systems, shared libraries may be available.  Answer 'none' if
3852 you want to suppress searching of shared libraries for the remaining
3853 of this configuration.
3854
3855 EOM
3856 rp='What is the file extension used for shared libraries?'
3857 . ./myread
3858 so="$ans"
3859
3860 : Define several unixisms.
3861 : Hints files or command line option can be used to override them.
3862 : The convoluted testing is in case hints files set either the old
3863 : or the new name.
3864 case "$_exe" in
3865 '')     case "$exe_ext" in
3866     '') ;;
3867         *)      _exe="$exe_ext" ;;
3868         esac
3869         ;;
3870 esac
3871 case "$_a" in
3872 '')     case "$lib_ext" in
3873     '') _a='.a';;
3874         *)      _a="$lib_ext" ;;
3875         esac
3876         ;;
3877 esac
3878 case "$_o" in
3879 '') case "$obj_ext" in
3880         '')     _o='.o';;
3881         *)      _o="$obj_ext";;
3882         esac
3883         ;;
3884 esac
3885 case "$p_" in
3886 '') case "$path_sep" in
3887         '')     p_=':';;
3888         *)      p_="$path_sep";;
3889         esac
3890         ;;
3891 esac
3892 exe_ext=$_exe
3893 lib_ext=$_a
3894 obj_ext=$_o
3895 path_sep=$p_
3896
3897 : Which makefile gets called first.  This is used by make depend.
3898 case "$firstmakefile" in
3899 '') firstmakefile='makefile';;
3900 esac
3901
3902 : Looking for optional libraries
3903 echo " "
3904 echo "Checking for optional libraries..." >&4
3905 case "$libs" in
3906 ' '|'') dflt='';;
3907 *) dflt="$libs";;
3908 esac
3909 case "$libswanted" in
3910 '') libswanted='c_s';;
3911 esac
3912 for thislib in $libswanted; do
3913         
3914         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3915                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3916                 echo "Found -l$thislib (shared)."
3917                 case " $dflt " in
3918                 *"-l$thislib "*);;
3919                 *) dflt="$dflt -l$thislib";;
3920                 esac
3921         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3922                 echo "Found -l$thislib (shared)."
3923                 case " $dflt " in
3924                 *"-l$thislib "*);;
3925                 *) dflt="$dflt -l$thislib";;
3926                 esac
3927         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3928                 echo "Found -l$thislib."
3929                 case " $dflt " in
3930                 *"-l$thislib "*);;
3931                 *) dflt="$dflt -l$thislib";;
3932                 esac
3933         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3934                 echo "Found -l$thislib."
3935                 case " $dflt " in
3936                 *"-l$thislib "*);;
3937                 *) dflt="$dflt -l$thislib";;
3938                 esac
3939         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3940                 echo "Found -l${thislib}_s."
3941                 case " $dflt " in
3942                 *"-l$thislib "*);;
3943                 *) dflt="$dflt -l${thislib}_s";;
3944                 esac
3945         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3946                 echo "Found -l$thislib."
3947                 case " $dflt " in
3948                 *"-l$thislib "*);;
3949                 *) dflt="$dflt -l$thislib";;
3950                 esac
3951         else
3952                 echo "No -l$thislib."
3953         fi
3954 done
3955 set X $dflt
3956 shift
3957 dflt="$*"
3958 case "$libs" in
3959 '') dflt="$dflt";;
3960 *) dflt="$libs";;
3961 esac
3962 case "$dflt" in
3963 ' '|'') dflt='none';;
3964 esac
3965
3966 $cat <<EOM
3967  
3968 Some versions of Unix support shared libraries, which make executables smaller
3969 but make load time slightly longer.
3970
3971 On some systems, mostly System V Release 3's, the shared library is included
3972 by putting the option "-lc_s" as the last thing on the cc command line when
3973 linking.  Other systems use shared libraries by default.  There may be other
3974 libraries needed to compile $package on your machine as well.  If your system
3975 needs the "-lc_s" option, include it here.  Include any other special libraries
3976 here as well.  Say "none" for none.
3977 EOM
3978
3979 echo " "
3980 rp="Any additional libraries?"
3981 . ./myread
3982 case "$ans" in
3983 none) libs=' ';;
3984 *) libs="$ans";;
3985 esac
3986
3987 : determine optimize, if desired, or use for debug flag also
3988 case "$optimize" in
3989 ' '|$undef) dflt='none';;
3990 '') dflt='-O';;
3991 *) dflt="$optimize";;
3992 esac
3993 $cat <<EOH
3994
3995 Some C compilers have problems with their optimizers.  By default, $package
3996 compiles with the -O flag to use the optimizer.  Alternately, you might want
3997 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3998 systems).  Either flag can be specified here.  To use neither flag, specify
3999 the word "none".
4000
4001 EOH
4002 rp="What optimizer/debugger flag should be used?"
4003 . ./myread
4004 optimize="$ans"
4005 case "$optimize" in
4006 'none') optimize=" ";;
4007 esac
4008
4009 dflt=''
4010 : We will not override a previous value, but we might want to
4011 : augment a hint file
4012 case "$hint" in
4013 none|recommended)
4014         case "$gccversion" in
4015         1*) dflt='-fpcc-struct-return' ;;
4016         esac
4017         case "$optimize" in
4018         *-g*) dflt="$dflt -DDEBUGGING";;
4019         esac
4020         case "$gccversion" in
4021         2*) if test -d /etc/conf/kconfig.d &&
4022                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4023                 then
4024                         dflt="$dflt -posix"
4025                 fi
4026                 ;;
4027         esac
4028         ;;
4029 esac
4030
4031 case "$mips_type" in
4032 *BSD*|'') inclwanted="$locincpth $usrinc";;
4033 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4034 esac
4035 for thisincl in $inclwanted; do
4036         if $test -d $thisincl; then
4037                 if $test x$thisincl != x$usrinc; then
4038                         case "$dflt" in
4039                         *$thisincl*);;
4040                         *) dflt="$dflt -I$thisincl";;
4041                         esac
4042                 fi
4043         fi
4044 done
4045
4046 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4047         xxx=true;
4048 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4049         xxx=true;
4050 else
4051         xxx=false;
4052 fi;
4053 if $xxx; then
4054         case "$dflt" in
4055         *$2*);;
4056         *) dflt="$dflt -D$2";;
4057         esac;
4058 fi'
4059
4060 if ./osf1; then
4061         set signal.h __LANGUAGE_C__; eval $inctest
4062 else
4063         set signal.h LANGUAGE_C; eval $inctest
4064 fi
4065
4066 case "$hint" in
4067 none|recommended) dflt="$ccflags $dflt" ;;
4068 *) dflt="$ccflags";;
4069 esac
4070
4071 case "$dflt" in
4072 ''|' ') dflt=none;;
4073 esac
4074 $cat <<EOH
4075
4076 Your C compiler may want other flags.  For this question you should include
4077 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4078 but you should NOT include libraries or ld flags like -lwhatever.  If you
4079 want $package to honor its debug switch, you should include -DDEBUGGING here.
4080 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4081
4082 To use no flags, specify the word "none".
4083
4084 EOH
4085 set X $dflt
4086 shift
4087 dflt=${1+"$@"}
4088 rp="Any additional cc flags?"
4089 . ./myread
4090 case "$ans" in
4091 none) ccflags='';;
4092 *) ccflags="$ans";;
4093 esac
4094
4095 : the following weeds options from ccflags that are of no interest to cpp
4096 cppflags="$ccflags"
4097 case "$gccversion" in
4098 1*) cppflags="$cppflags -D__GNUC__"
4099 esac
4100 case "$mips_type" in
4101 '');;
4102 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4103 esac
4104 case "$cppflags" in
4105 '');;
4106 *)
4107         echo " "
4108         echo "Let me guess what the preprocessor flags are..." >&4
4109         set X $cppflags
4110         shift
4111         cppflags=''
4112         $cat >cpp.c <<'EOM'
4113 #define BLURFL foo
4114
4115 BLURFL xx LFRULB
4116 EOM
4117         previous=''
4118         for flag in $*
4119         do
4120                 case "$flag" in
4121                 -*) ftry="$flag";;
4122                 *) ftry="$previous $flag";;
4123                 esac
4124                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4125                         >cpp1.out 2>/dev/null && \
4126                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4127                         >cpp2.out 2>/dev/null && \
4128                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4129                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4130                 then
4131                         cppflags="$cppflags $ftry"
4132                         previous=''
4133                 else
4134                         previous="$flag"
4135                 fi
4136         done
4137         set X $cppflags
4138         shift
4139         cppflags=${1+"$@"}
4140         case "$cppflags" in
4141         *-*)  echo "They appear to be: $cppflags";;
4142         esac
4143         $rm -f cpp.c cpp?.out
4144         ;;
4145 esac
4146
4147 : flags used in final linking phase
4148 case "$ldflags" in
4149 '') if ./venix; then
4150                 dflt='-i -z'
4151         else
4152                 dflt=''
4153         fi
4154         case "$ccflags" in
4155         *-posix*) dflt="$dflt -posix" ;;
4156         esac
4157         ;;
4158 *) dflt="$ldflags";;
4159 esac
4160
4161 : Try to guess additional flags to pick up local libraries.
4162 for thislibdir in $libpth; do
4163         case " $loclibpth " in
4164         *" $thislibdir "*)
4165                 case "$dflt " in 
4166                 *"-L$thislibdir "*) ;;
4167                 *)  dflt="$dflt -L$thislibdir" ;;
4168                 esac
4169                 ;;
4170         esac
4171 done
4172
4173 case "$dflt" in
4174 '') dflt='none' ;;
4175 esac
4176
4177 $cat <<EOH
4178
4179 Your C linker may need flags.  For this question you should
4180 include -L/whatever and any other flags used by the C linker, but you
4181 should NOT include libraries like -lwhatever.
4182
4183 Make sure you include the appropriate -L/path flags if your C linker
4184 does not normally search all of the directories you specified above,
4185 namely
4186         $libpth
4187 To use no flags, specify the word "none".
4188
4189 EOH
4190
4191 rp="Any additional ld flags (NOT including libraries)?"
4192 . ./myread
4193 case "$ans" in
4194 none) ldflags='';;
4195 *) ldflags="$ans";;
4196 esac
4197 rmlist="$rmlist pdp11"
4198
4199 : coherency check
4200 echo " "
4201 echo "Checking your choice of C compiler and flags for coherency..." >&4
4202 $cat > try.c <<'EOF'
4203 #include <stdio.h>
4204 main() { printf("Ok\n"); exit(0); }
4205 EOF
4206 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4207 shift
4208 $cat >try.msg <<'EOM'
4209 I've tried to compile and run the following simple program:
4210
4211 EOM
4212 $cat try.c >> try.msg
4213
4214 $cat >> try.msg <<EOM
4215
4216 I used the command:
4217
4218         $*
4219         ./try
4220
4221 and I got the following output:
4222
4223 EOM
4224 dflt=y
4225 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4226         if sh -c './try' >>try.msg 2>&1; then
4227                 xxx=`./try`
4228                 case "$xxx" in
4229                 "Ok") dflt=n ;;
4230                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4231                         case " $libs " in
4232                         *" -lsfio "*)
4233                                 cat >> try.msg <<'EOQS'
4234 If $libs contains -lsfio, and sfio is mis-configured, then it
4235 sometimes (apparently) runs and exits with a 0 status, but with no
4236 output!  It may have to do with sfio's use of _exit vs. exit.
4237
4238 EOQS
4239                                 rp="You have a big problem.  Shall I abort Configure"
4240                                 dflt=y
4241                                 ;;
4242                         esac
4243                         ;;
4244                 esac
4245         else
4246                 echo "The program compiled OK, but exited with status $?." >>try.msg
4247                 rp="You have a problem.  Shall I abort Configure"
4248                 dflt=y
4249         fi
4250 else
4251         echo "I can't compile the test program." >>try.msg
4252         rp="You have a BIG problem.  Shall I abort Configure"
4253         dflt=y
4254 fi
4255 case "$dflt" in
4256 y)
4257         $cat try.msg >&4
4258         case "$knowitall" in
4259         '')
4260                 echo "(The supplied flags or libraries might be incorrect.)"
4261                 ;;
4262         *) dflt=n;;
4263         esac
4264         echo " "
4265         . ./myread
4266         case "$ans" in
4267         n*|N*) ;;
4268         *)      echo "Ok.  Stopping Configure." >&4
4269                 exit 1
4270                 ;;
4271         esac
4272         ;;
4273 n) echo "OK, that should do.";;
4274 esac
4275 $rm -f try try.* core
4276
4277 : determine filename position in cpp output
4278 echo " "
4279 echo "Computing filename position in cpp output for #include directives..." >&4
4280 echo '#include <stdio.h>' > foo.c
4281 $cat >fieldn <<EOF
4282 $startsh
4283 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4284 $grep '^[       ]*#.*stdio\.h' | \
4285 while read cline; do
4286         pos=1
4287         set \$cline
4288         while $test \$# -gt 0; do
4289                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4290                         echo "\$pos"
4291                         exit 0
4292                 fi
4293                 shift
4294                 pos=\`expr \$pos + 1\`
4295         done
4296 done
4297 EOF
4298 chmod +x fieldn
4299 fieldn=`./fieldn`
4300 $rm -f foo.c fieldn
4301 case $fieldn in
4302 '') pos='???';;
4303 1) pos=first;;
4304 2) pos=second;;
4305 3) pos=third;;
4306 *) pos="${fieldn}th";;
4307 esac
4308 echo "Your cpp writes the filename in the $pos field of the line."
4309
4310 : locate header file
4311 $cat >findhdr <<EOF
4312 $startsh
4313 wanted=\$1
4314 name=''
4315 if test -f $usrinc/\$wanted; then
4316         echo "$usrinc/\$wanted"
4317         exit 0
4318 fi
4319 awkprg='{ print \$$fieldn }'
4320 echo "#include <\$wanted>" > foo\$\$.c
4321 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4322 $grep "^[       ]*#.*\$wanted" | \
4323 while read cline; do
4324         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4325         case "\$name" in
4326         */\$wanted) echo "\$name"; exit 0;;
4327         *) name='';;
4328         esac;
4329 done;
4330 $rm -f foo\$\$.c;
4331 case "\$name" in
4332 '') exit 1;;
4333 esac
4334 EOF
4335 chmod +x findhdr
4336
4337 : define an alternate in-header-list? function
4338 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4339 cont=true; xxf="echo \"<\$1> found.\" >&4";
4340 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4341 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4342 esac;
4343 case $# in 4) instead=instead;; *) instead="at last";; esac;
4344 while $test "$cont"; do
4345         xxx=`./findhdr $1`
4346         var=$2; eval "was=\$$2";
4347         if $test "$xxx" && $test -r "$xxx";
4348         then eval $xxf;
4349         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4350                 cont="";
4351         else eval $xxnf;
4352         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4353         set $yyy; shift; shift; yyy=$@;
4354         case $# in 0) cont="";;
4355         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4356                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4357         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4358                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4359         esac;
4360 done;
4361 while $test "$yyy";
4362 do set $yyy; var=$2; eval "was=\$$2";
4363         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4364         set $yyy; shift; shift; yyy=$@;
4365 done'
4366
4367 : see if this is a malloc.h system
4368 set malloc.h i_malloc
4369 eval $inhdr
4370
4371 : see if stdlib is available
4372 set stdlib.h i_stdlib
4373 eval $inhdr
4374
4375 : determine which malloc to compile in
4376 echo " "
4377 case "$usemymalloc" in
4378 ''|[yY]*|true|$define)  dflt='y' ;;
4379 *)      dflt='n' ;;
4380 esac
4381 rp="Do you wish to attempt to use the malloc that comes with $package?"
4382 . ./myread
4383 usemymalloc="$ans"
4384 case "$ans" in
4385 y*|true)
4386         usemymalloc='y'
4387         mallocsrc='malloc.c'
4388         mallocobj="malloc$_o"
4389         d_mymalloc="$define"
4390         case "$libs" in
4391         *-lmalloc*)
4392                 : Remove malloc from list of libraries to use
4393                 echo "Removing unneeded -lmalloc from library list" >&4
4394                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4395                 shift
4396                 libs="$*"
4397                 echo "libs = $libs" >&4
4398                 ;;
4399         esac
4400         ;;
4401 *)
4402         usemymalloc='n'
4403         mallocsrc=''
4404         mallocobj=''
4405         d_mymalloc="$undef"
4406         ;;
4407 esac
4408
4409 : compute the return types of malloc and free
4410 echo " "
4411 $cat >malloc.c <<END
4412 #$i_malloc I_MALLOC
4413 #$i_stdlib I_STDLIB
4414 #include <stdio.h>
4415 #include <sys/types.h>
4416 #ifdef I_MALLOC
4417 #include <malloc.h>
4418 #endif
4419 #ifdef I_STDLIB
4420 #include <stdlib.h>
4421 #endif
4422 #ifdef TRY_MALLOC
4423 void *malloc();
4424 #endif
4425 #ifdef TRY_FREE
4426 void free();
4427 #endif
4428 END
4429 case "$malloctype" in
4430 '')
4431         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4432                 malloctype='void *'
4433         else
4434                 malloctype='char *'
4435         fi
4436         ;;
4437 esac
4438 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4439
4440 case "$freetype" in
4441 '')
4442         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4443                 freetype='void'
4444         else
4445                 freetype='int'
4446         fi
4447         ;;
4448 esac
4449 echo "Your system uses $freetype free(), it would seem." >&4
4450 $rm -f malloc.[co]
4451 : Cruising for prototypes
4452 echo " "
4453 echo "Checking out function prototypes..." >&4
4454 $cat >prototype.c <<'EOCP'
4455 int main(int argc, char *argv[]) {
4456         exit(0);}
4457 EOCP
4458 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4459         echo "Your C compiler appears to support function prototypes."
4460         val="$define"
4461 else
4462         echo "Your C compiler doesn't seem to understand function prototypes."
4463         val="$undef"
4464 fi
4465 set prototype
4466 eval $setvar
4467 $rm -f prototype*
4468
4469 case "$prototype" in
4470 "$define") ;;
4471 *)      ansi2knr='ansi2knr'
4472         echo " "
4473         cat <<EOM >&4
4474
4475 $me:  FATAL ERROR:
4476 This version of $package can only be compiled by a compiler that 
4477 understands function prototypes.  Unfortunately, your C compiler 
4478         $cc $ccflags
4479 doesn't seem to understand them.  Sorry about that.
4480
4481 If GNU cc is available for your system, perhaps you could try that instead.  
4482
4483 Eventually, we hope to support building Perl with pre-ANSI compilers.
4484 If you would like to help in that effort, please contact <perlbug@perl.org>.
4485
4486 Aborting Configure now.
4487 EOM
4488         exit 2
4489         ;;
4490 esac
4491
4492 : determine where public executables go
4493 echo " "
4494 set dflt bin bin
4495 eval $prefixit
4496 fn=d~
4497 rp='Pathname where the public executables will reside?'
4498 . ./getfile
4499 if $test "X$ansexp" != "X$binexp"; then
4500         installbin=''
4501 fi
4502 bin="$ans"
4503 binexp="$ansexp"
4504 if $afs; then
4505         $cat <<EOM
4506
4507 Since you are running AFS, I need to distinguish the directory in which
4508 executables reside from the directory in which they are installed (and from
4509 which they are presumably copied to the former directory by occult means).
4510
4511 EOM
4512         case "$installbin" in
4513         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4514         *) dflt="$installbin";;
4515         esac
4516         fn=de~
4517         rp='Where will public executables be installed?'
4518         . ./getfile
4519         installbin="$ans"
4520 else
4521         installbin="$binexp"
4522 fi
4523
4524 : determine whether to install perl also as /usr/bin/perl
4525
4526 echo " "
4527 case "$installusrbinperl" in
4528 '') if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4529         $cat <<EOM
4530 Many scripts expect to perl to be installed as /usr/bin/perl.
4531 I can install the perl you are about to compile also as /usr/bin/perl
4532 (in addition to $installbin/perl).
4533 EOM
4534         dflt='y'
4535         rp="Do you want to install perl as /usr/bin/perl?"
4536         . ./myread
4537         case "$ans" in
4538         [yY]*)  val="$define";;
4539         *)      val="$undef";;
4540         esac
4541     fi
4542     ;;
4543 esac
4544 case "$installusrbinperl" in
4545 "$undef"|[nN]*) val="$undef";;
4546 *)              val="$define";;
4547 esac
4548 set installusrbinperl
4549 eval $setvar
4550
4551 : define a shorthand compile call
4552 compile='
4553 mc_file=$1;
4554 shift;
4555 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4556 : define a shorthand compile call for compilations that should be ok.
4557 compile_ok='
4558 mc_file=$1;
4559 shift;
4560 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4561
4562 echo " "
4563 echo "Checking for GNU C Library..." >&4
4564 cat >gnulibc.c <<EOM
4565 #include <stdio.h>
4566 int main()
4567 {
4568 #ifdef __GLIBC__
4569     exit(0);
4570 #else
4571     exit(1);
4572 #endif
4573 }
4574 EOM
4575 set gnulibc
4576 if eval $compile_ok && ./gnulibc; then
4577         val="$define"
4578         echo "You are using the GNU C Library"
4579 else
4580         val="$undef"
4581         echo "You are not using the GNU C Library"
4582 fi
4583 $rm -f gnulibc*
4584 set d_gnulibc
4585 eval $setvar
4586
4587 : see if nm is to be used to determine whether a symbol is defined or not
4588 case "$usenm" in
4589 '')
4590         dflt=''
4591         case "$d_gnulibc" in
4592         "$define")
4593                 echo " "
4594                 echo "nm probably won't work on the GNU C Library." >&4
4595                 dflt=n
4596                 ;;
4597         esac
4598         case "$dflt" in
4599         '') 
4600                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4601                         echo " "
4602                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4603                         echo "'nm' won't be sufficient on this sytem." >&4
4604                         dflt=n
4605                 fi
4606                 ;;
4607         esac
4608         case "$dflt" in
4609         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4610                 if $test $dflt -gt 20; then
4611                         dflt=y
4612                 else
4613                         dflt=n
4614                 fi
4615                 ;;
4616         esac
4617         ;;
4618 *)
4619         case "$usenm" in
4620         true|$define) dflt=y;;
4621         *) dflt=n;;
4622         esac
4623         ;;
4624 esac
4625 $cat <<EOM
4626
4627 I can use $nm to extract the symbols from your C libraries. This
4628 is a time consuming task which may generate huge output on the disk (up
4629 to 3 megabytes) but that should make the symbols extraction faster. The
4630 alternative is to skip the 'nm' extraction part and to compile a small
4631 test program instead to determine whether each symbol is present. If
4632 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4633 this may be the best solution.
4634
4635 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4636
4637 EOM
4638 rp="Shall I use $nm to extract C symbols from the libraries?"
4639 . ./myread
4640 case "$ans" in
4641 [Nn]*) usenm=false;;
4642 *) usenm=true;;
4643 esac
4644
4645 runnm=$usenm
4646 case "$reuseval" in
4647 true) runnm=false;;
4648 esac
4649
4650 : nm options which may be necessary
4651 case "$nm_opt" in
4652 '') if $test -f /mach_boot; then
4653                 nm_opt=''       # Mach
4654         elif $test -d /usr/ccs/lib; then
4655                 nm_opt='-p'     # Solaris (and SunOS?)
4656         elif $test -f /dgux; then
4657                 nm_opt='-p'     # DG-UX
4658         elif $test -f /lib64/rld; then
4659                 nm_opt='-p'     # 64-bit Irix
4660         else
4661                 nm_opt=''
4662         fi;;
4663 esac
4664
4665 : nm options which may be necessary for shared libraries but illegal
4666 : for archive libraries.  Thank you, Linux.
4667 case "$nm_so_opt" in
4668 '')     case "$myuname" in
4669         *linux*)
4670                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4671                         nm_so_opt='--dynamic'
4672                 fi
4673                 ;;
4674         esac
4675         ;;
4676 esac
4677
4678 case "$runnm" in
4679 true)
4680 : get list of predefined functions in a handy place
4681 echo " "
4682 case "$libc" in
4683 '') libc=unknown
4684         case "$libs" in
4685         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4686         esac
4687         ;;
4688 esac
4689 libnames='';
4690 case "$libs" in
4691 '') ;;
4692 *)  for thislib in $libs; do
4693         case "$thislib" in
4694         -lc|-lc_s)
4695                 : Handle C library specially below.
4696                 ;;
4697         -l*)
4698                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4699                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4700                         :
4701                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4702                         :
4703                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4704                         :
4705                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4706                         :
4707                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4708                         :
4709                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4710                         :
4711                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4712                         :
4713                 else
4714                         try=''
4715                 fi
4716                 libnames="$libnames $try"
4717                 ;;
4718         *) libnames="$libnames $thislib" ;;
4719         esac
4720         done
4721         ;;
4722 esac
4723 xxx=normal
4724 case "$libc" in
4725 unknown)
4726         set /lib/libc.$so
4727         for xxx in $libpth; do
4728                 $test -r $1 || set $xxx/libc.$so
4729                 : The messy sed command sorts on library version numbers.
4730                 $test -r $1 || \
4731                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4732                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4733                                 h
4734                                 s/[0-9][0-9]*/0000&/g
4735                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4736                                 G
4737                                 s/\n/ /' | \
4738                          sort | $sed -e 's/^.* //'`
4739                 eval set \$$#
4740         done
4741         $test -r $1 || set /usr/ccs/lib/libc.$so
4742         $test -r $1 || set /lib/libsys_s$_a
4743         ;;
4744 *)
4745         set blurfl
4746         ;;
4747 esac
4748 if $test -r "$1"; then
4749         echo "Your (shared) C library seems to be in $1."
4750         libc="$1"
4751 elif $test -r /lib/libc && $test -r /lib/clib; then
4752         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4753         xxx=apollo
4754         libc='/lib/clib /lib/libc'
4755         if $test -r /lib/syslib; then
4756                 echo "(Your math library is in /lib/syslib.)"
4757                 libc="$libc /lib/syslib"
4758         fi
4759 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4760         echo "Your C library seems to be in $libc, as you said before."
4761 elif $test -r $incpath/usr/lib/libc$_a; then
4762         libc=$incpath/usr/lib/libc$_a;
4763         echo "Your C library seems to be in $libc.  That's fine."
4764 elif $test -r /lib/libc$_a; then
4765         libc=/lib/libc$_a;
4766         echo "Your C library seems to be in $libc.  You're normal."
4767 else
4768         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4769                 :
4770         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4771                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4772         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4773                 :
4774         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4775                 :
4776         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4777                 :
4778         else
4779                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4780         fi
4781         if $test -r "$tans"; then
4782                 echo "Your C library seems to be in $tans, of all places."
4783                 libc=$tans
4784         else
4785                 libc='blurfl'
4786         fi
4787 fi
4788 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4789         dflt="$libc"
4790         cat <<EOM
4791
4792 If the guess above is wrong (which it might be if you're using a strange
4793 compiler, or your machine supports multiple models), you can override it here.
4794
4795 EOM
4796 else
4797         dflt=''
4798         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4799         cat >&4 <<EOM
4800 I can't seem to find your C library.  I've looked in the following places:
4801
4802 EOM
4803         $sed 's/^/      /' libpath
4804         cat <<EOM
4805
4806 None of these seems to contain your C library. I need to get its name...
4807
4808 EOM
4809 fi
4810 fn=f
4811 rp='Where is your C library?'
4812 . ./getfile
4813 libc="$ans"
4814
4815 echo " "
4816 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4817 set X `cat libnames`
4818 shift
4819 xxx=files
4820 case $# in 1) xxx=file; esac
4821 echo "Extracting names from the following $xxx for later perusal:" >&4
4822 echo " "
4823 $sed 's/^/      /' libnames >&4
4824 echo " "
4825 $echo $n "This may take a while...$c" >&4
4826
4827 for file in $*; do
4828         case $file in
4829         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4830         *) $nm $nm_opt $file 2>/dev/null;;
4831         esac
4832 done >libc.tmp
4833
4834 $echo $n ".$c"
4835 $grep fprintf libc.tmp > libc.ptf
4836 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4837 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4838 xxx='[ADTSIW]'
4839 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4840         eval $xscan;\
4841         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4842                 eval $xrun
4843 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4844         eval $xscan;\
4845         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4846                 eval $xrun
4847 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4848         eval $xscan;\
4849         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4850                 eval $xrun
4851 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4852         eval $xscan;\
4853         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4854                 eval $xrun
4855 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4856         eval $xscan;\
4857         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4858                 eval $xrun
4859 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4860         eval $xscan;\
4861         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4862                 eval $xrun
4863 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4864                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4865         eval $xscan;\
4866         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4867                 eval $xrun
4868 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4869         eval $xscan;\
4870         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4871                 eval $xrun
4872 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4873         eval $xscan;\
4874         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4875                 eval $xrun
4876 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4877         eval $xscan;\
4878         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4879                 eval $xrun
4880 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4881         eval $xscan;\
4882         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4883                 eval $xrun
4884 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4885         eval $xscan;\
4886         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4887                 eval $xrun
4888 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4889         eval $xscan;\
4890         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4891                 eval $xrun
4892 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4893         eval $xscan;\
4894         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4895                 eval $xrun
4896 else
4897         $nm -p $* 2>/dev/null >libc.tmp
4898         $grep fprintf libc.tmp > libc.ptf
4899         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4900                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4901         then
4902                 nm_opt='-p'
4903                 eval $xrun
4904         else
4905                 echo " "
4906                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4907                 com=''
4908                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4909                         for thisname in $libnames $libc; do
4910                                 $ar t $thisname >>libc.tmp
4911                         done
4912                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4913                         echo "Ok." >&4
4914                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4915                         # Repeat libc to extract forwarders to DLL entries too
4916                         for thisname in $libnames $libc; do
4917                                 $ar tv $thisname >>libc.tmp
4918                                 # Revision 50 of EMX has bug in $ar.
4919                                 # it will not extract forwarders to DLL entries
4920                                 # Use emximp which will extract exactly them.
4921                                 emximp -o tmp.imp $thisname \
4922                                     2>/dev/null && \
4923                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4924                                     < tmp.imp >>libc.tmp
4925                                 $rm tmp.imp
4926                         done
4927                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4928                         echo "Ok." >&4
4929                 else
4930                         echo "$ar didn't seem to work right." >&4
4931                         echo "Maybe this is a Cray...trying bld instead..." >&4
4932                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4933                         then
4934                                 for thisname in $libnames; do
4935                                         bld t $libnames | \
4936                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4937                                         $ar t $thisname >>libc.tmp
4938                                 done
4939                                 echo "Ok." >&4
4940                         else
4941                                 echo "That didn't work either.  Giving up." >&4
4942                                 exit 1
4943                         fi
4944                 fi
4945         fi
4946 fi
4947 nm_extract="$com"
4948 if $test -f /lib/syscalls.exp; then
4949         echo " "
4950         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4951         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4952 fi
4953 ;;
4954 esac
4955 $rm -f libnames libpath
4956
4957 : see if dld is available
4958 set dld.h i_dld
4959 eval $inhdr
4960
4961 : is a C symbol defined?
4962 csym='tlook=$1;
4963 case "$3" in
4964 -v) tf=libc.tmp; tc=""; tdc="";;
4965 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4966 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4967 esac;
4968 tx=yes;
4969 case "$reuseval-$4" in
4970 true-) ;;
4971 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4972 esac;
4973 case "$tx" in
4974 yes)
4975         case "$runnm" in
4976         true)
4977                 if $contains $tlook $tf >/dev/null 2>&1;
4978                 then tval=true;
4979                 else tval=false;
4980                 fi;;
4981         *)
4982                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4983                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4984                 then tval=true;
4985                 else tval=false;
4986                 fi;
4987                 $rm -f t t.c;;
4988         esac;;
4989 *)
4990         case "$tval" in
4991         $define) tval=true;;
4992         *) tval=false;;
4993         esac;;
4994 esac;
4995 eval "$2=$tval"'
4996
4997 : define an is-in-libc? function
4998 inlibc='echo " "; td=$define; tu=$undef;
4999 sym=$1; var=$2; eval "was=\$$2";
5000 tx=yes;
5001 case "$reuseval$was" in
5002 true) ;;
5003 true*) tx=no;;
5004 esac;
5005 case "$tx" in
5006 yes)
5007         set $sym tres -f;
5008         eval $csym;
5009         case "$tres" in
5010         true)
5011                 echo "$sym() found." >&4;
5012                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5013         *)
5014                 echo "$sym() NOT found." >&4;
5015                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5016         esac;;
5017 *)
5018         case "$was" in
5019         $define) echo "$sym() found." >&4;;
5020         *) echo "$sym() NOT found." >&4;;
5021         esac;;
5022 esac'
5023
5024 : see if dlopen exists
5025 xxx_runnm="$runnm"
5026 runnm=false
5027 set dlopen d_dlopen
5028 eval $inlibc
5029 runnm="$xxx_runnm"
5030
5031 : determine which dynamic loading, if any, to compile in
5032 echo " "
5033 dldir="ext/DynaLoader"
5034 case "$usedl" in
5035 $define|y|true)
5036         dflt='y'
5037         usedl="$define"
5038         ;;
5039 $undef|n|false)
5040         dflt='n'
5041         usedl="$undef"
5042         ;;
5043 *) 
5044         dflt='n'
5045         case "$d_dlopen" in
5046             $define) dflt='y' ;;
5047         esac
5048         case "$i_dld" in
5049             $define) dflt='y' ;;
5050         esac
5051         : Does a dl_xxx.xs file exist for this operating system
5052         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5053         ;;
5054 esac
5055 rp="Do you wish to use dynamic loading?"
5056 . ./myread
5057 usedl="$ans"
5058 case "$ans" in
5059 y*) usedl="$define"
5060         case "$dlsrc" in
5061         '')
5062                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5063                         dflt="$dldir/dl_${osname}.xs"
5064                 elif $test "$d_dlopen" = "$define" ; then
5065                         dflt="$dldir/dl_dlopen.xs"
5066                 elif $test "$i_dld" = "$define" ; then
5067                         dflt="$dldir/dl_dld.xs"
5068                 else
5069                         dflt=''
5070                 fi
5071                 ;;
5072         *)      dflt="$dldir/$dlsrc"
5073                 ;;
5074         esac
5075     echo "The following dynamic loading files are available:"
5076         : Can not go over to $dldir because getfile has path hard-coded in.
5077         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5078         rp="Source file to use for dynamic loading"
5079         fn="fne"
5080         # XXX This getfile call will fail the existence check if you try 
5081         # building away from $src (this is not supported yet).
5082         . ./getfile
5083         usedl="$define"
5084         : emulate basename
5085         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5086
5087         $cat << EOM
5088
5089 Some systems may require passing special flags to $cc -c to
5090 compile modules that will be used to create a shared library.
5091 To use no flags, say "none".
5092
5093 EOM
5094     case "$cccdlflags" in
5095     '') case "$gccversion" in
5096                 '') case "$osname" in
5097                         hpux)   dflt='+z' ;;
5098                         next)   dflt='none' ;;
5099                         irix*)  dflt='-KPIC' ;;
5100                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5101                         sunos)  dflt='-pic' ;;
5102                         *)      dflt='none' ;;
5103                     esac
5104                         ;;
5105                 *)  case "$osname" in
5106                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5107                         *)      dflt='-fpic' ;;
5108                     esac ;;
5109             esac ;;
5110         ' ') dflt='none' ;;
5111     *)  dflt="$cccdlflags" ;;
5112     esac
5113     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5114     . ./myread
5115     case "$ans" in
5116     none) cccdlflags=' ' ;;
5117     *) cccdlflags="$ans" ;;
5118     esac
5119
5120     cat << EOM
5121
5122 Some systems use ld to create libraries that can be dynamically loaded,
5123 while other systems (such as those using ELF) use $cc.
5124
5125 EOM
5126         case "$ld" in
5127         '')     $cat >try.c <<'EOM'
5128 /* Test for whether ELF binaries are produced */
5129 #include <fcntl.h>
5130 #include <stdlib.h>
5131 int main() {
5132         char b[4];
5133         int i = open("a.out",O_RDONLY);
5134         if(i == -1) 
5135                 exit(1); /* fail */
5136         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5137                 exit(0); /* succeed (yes, it's ELF) */
5138         else
5139                 exit(1); /* fail */
5140 }
5141 EOM
5142                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5143                         cat <<EOM
5144 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5145 EOM
5146                         dflt="$cc"
5147                 else
5148                         echo "I'll use ld to build dynamic libraries."
5149                         dflt='ld'
5150                 fi
5151                 rm -f try.c a.out
5152                 ;;
5153         *)      dflt="$ld"
5154                 ;;
5155         esac
5156
5157     rp="What command should be used to create dynamic libraries?"
5158     . ./myread
5159         ld="$ans"
5160
5161     cat << EOM
5162
5163 Some systems may require passing special flags to $ld to create a
5164 library that can be dynamically loaded.  If your ld flags include
5165 -L/other/path options to locate libraries outside your loader's normal
5166 search path, you may need to specify those -L options here as well.  To
5167 use no flags, say "none".
5168
5169 EOM
5170     case "$lddlflags" in
5171     '') case "$osname" in
5172                         hpux)  dflt='-b' ;;
5173                         linux|irix*)    dflt='-shared' ;;
5174                         next)  dflt='none' ;;
5175                         solaris) dflt='-G' ;;
5176                         sunos) dflt='-assert nodefinitions' ;;
5177                         svr4*|esix*) dflt="-G $ldflags" ;;
5178                 *)     dflt='none' ;;
5179                         esac
5180                         ;;
5181     *) dflt="$lddlflags" ;;
5182     esac
5183
5184         : Try to guess additional flags to pick up local libraries.
5185         : Be careful not to append to a plain 'none'
5186         case "$dflt" in
5187         none) dflt='' ;;
5188         esac
5189         for thisflag in $ldflags; do
5190                 case "$thisflag" in
5191                 -L*)
5192                         case " $dflt " in
5193                         *" $thisflag "*) ;;
5194                         *) dflt="$dflt $thisflag" ;;
5195                         esac
5196                         ;;
5197                 esac
5198         done
5199
5200         case "$dflt" in
5201         ''|' ') dflt='none' ;;
5202         esac
5203
5204     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5205     . ./myread
5206     case "$ans" in
5207     none) lddlflags=' ' ;;
5208     *) lddlflags="$ans" ;;
5209     esac
5210
5211         cat <<EOM
5212
5213 Some systems may require passing special flags to $cc to indicate that
5214 the resulting executable will use dynamic linking.  To use no flags,
5215 say "none".
5216
5217 EOM
5218     case "$ccdlflags" in
5219     '') case "$osname" in
5220                 hpux)   dflt='-Wl,-E' ;;
5221                 linux)  dflt='-rdynamic' ;;
5222                 next)   dflt='none' ;;
5223                 sunos)  dflt='none' ;;
5224                 *)      dflt='none' ;;
5225             esac ;;
5226     ' ')  dflt='none' ;;
5227     *)  dflt="$ccdlflags" ;;
5228     esac
5229     rp="Any special flags to pass to $cc to use dynamic loading?"
5230     . ./myread
5231     case "$ans" in
5232     none) ccdlflags=' ' ;;
5233     *) ccdlflags="$ans" ;;
5234     esac
5235     ;;
5236 *)  usedl="$undef"
5237         ld='ld'
5238     dlsrc='dl_none.xs'
5239     lddlflags=''
5240     ccdlflags=''
5241     ;;
5242 esac
5243
5244 also=''
5245 case "$usedl" in
5246 $undef)
5247         # No dynamic loading being used, so don't bother even to prompt.
5248         useshrplib='false'
5249         ;;
5250 *)      case "$useshrplib" in
5251         '')     case "$osname" in
5252                 svr4*|dgux|dynixptx|esix|powerux)
5253                         dflt=y
5254                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5255                         ;;
5256                 next*)
5257                         case "$osvers" in
5258                         4*)     dflt=y
5259                                 also='Building a shared libperl is needed for MAB support.'
5260                                 ;;
5261                         *)      dflt=n
5262                                 ;;
5263                         esac
5264                         ;;
5265                 *)      dflt=n
5266                         ;;
5267                 esac
5268                 ;;
5269         $define|true|[Yy]*)
5270                 dflt=y
5271                 ;;
5272         *)      dflt=n
5273                 ;;
5274         esac
5275         $cat << EOM
5276
5277 The perl executable is normally obtained by linking perlmain.c with
5278 libperl${_a}, any static extensions (usually just DynaLoader), and
5279 any other libraries needed on this system (such as -lm, etc.).  Since
5280 your system supports dynamic loading, it is probably possible to build
5281 a shared libperl.$so.  If you will have more than one executable linked
5282 to libperl.$so, this will significantly reduce the size of each
5283 executable, but it may have a noticeable affect on performance.  The
5284 default is probably sensible for your system.
5285 $also
5286
5287 EOM
5288         rp="Build a shared libperl.$so (y/n)"
5289         . ./myread
5290         case "$ans" in
5291         true|$define|[Yy]*)
5292                 useshrplib='true'
5293                 # Why does next4 have to be so different?
5294                 case "${osname}${osvers}" in
5295                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5296                 os2*)   xxx='' ;; # Nothing special needed.
5297                 *)              xxx='LD_LIBRARY_PATH' ;;
5298                 esac
5299                 if test X"$xxx" != "X"; then
5300                         $cat <<EOM  | $tee -a ../config.msg >&4
5301
5302 To build perl, you must add the current working directory to your
5303 $xxx environment variable before running make.  You can do
5304 this with
5305    $xxx=\`pwd\`:\$$xxx; export $xxx
5306 for Bourne-style shells, or
5307    setenv $xxx \`pwd\`
5308 for Csh-style shells.  You *MUST* do this before running make.
5309
5310 EOM
5311                 fi
5312                 ;;
5313         *)      useshrplib='false' ;;
5314         esac
5315         ;;
5316 esac
5317
5318 case "$useshrplib" in
5319 true)
5320         case "$libperl" in
5321         '')
5322                 # Figure out a good name for libperl.so.  Since it gets stored in
5323                 # a version-specific architecture-dependent library, the version
5324                 # number isn't really that important, except for making cc/ld happy.
5325                 #
5326                 # A name such as libperl.so.3.1
5327                 majmin="libperl.$so.$patchlevel.$subversion"
5328                 # A name such as libperl.so.301
5329                 majonly=`echo $patchlevel $subversion |
5330                         $awk '{printf "%d%02d", $1, $2}'`
5331                 majonly=libperl.$so.$majonly
5332                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5333                 # rely on figuring it out from the naming of libc.
5334                 case "${osname}${osvers}" in
5335                 next4*)
5336                         dflt=libperl.5.$so
5337                         # XXX How handle the --version stuff for MAB?
5338                         ;;
5339                 linux*)  # ld won't link with a bare -lperl otherwise.
5340                         dflt=libperl.$so
5341                         ;;
5342                 *)      # Try to guess based on whether libc has major.minor.
5343                         case "$libc" in
5344                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5345                         *libc.$so.[0-9]*) dflt=$majonly ;;
5346                         *)      dflt=libperl.$so ;;
5347                         esac
5348                         ;;
5349                 esac
5350                 ;;
5351         *)      dflt=$libperl
5352                 ;;
5353         esac
5354         cat << EOM
5355
5356 I need to select a good name for the shared libperl.  If your system uses
5357 library names with major and minor numbers, then you might want something
5358 like $majmin.  Alternatively, if your system uses a single version
5359 number for shared libraries, then you might want to use $majonly.
5360 Or, your system might be quite happy with a simple libperl.$so.
5361
5362 Since the shared libperl will get installed into a version-specific
5363 architecture-dependent directory, the version number of the shared perl
5364 library probably isn't important, so the default should be o.k.
5365
5366 EOM
5367         rp='What name do you want to give to the shared libperl?'
5368         . ./myread
5369         libperl=$ans
5370         echo "Ok, I'll use $libperl"
5371         ;;
5372 *)
5373         libperl="libperl${_a}"
5374         ;;
5375 esac
5376
5377 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5378 case "$shrpdir" in
5379 '') ;;
5380 *)      $cat >&4 <<EOM
5381 WARNING:  Use of the shrpdir variable for the installation location of
5382 the shared $libperl is not supported.  It was never documented and
5383 will not work in this version.  Let me (jhi@iki.fi)
5384 know of any problems this may cause.
5385
5386 EOM
5387         case "$shrpdir" in
5388         "$archlibexp/CORE")
5389                 $cat >&4 <<EOM
5390 But your current setting of $shrpdir is
5391 the default anyway, so it's harmless.
5392 EOM
5393                 ;;
5394         *)
5395                 $cat >&4 <<EOM
5396 Further, your current attempted setting of $shrpdir
5397 conflicts with the value of $archlibexp/CORE
5398 that installperl will use.
5399 EOM
5400                 ;;
5401         esac
5402         ;;
5403 esac
5404
5405 # How will the perl executable find the installed shared $libperl?
5406 # Add $xxx to ccdlflags.
5407 # If we can't figure out a command-line option, use $shrpenv to
5408 # set env LD_RUN_PATH.  The main perl makefile uses this.
5409 shrpdir=$archlibexp/CORE
5410 xxx=''
5411 tmp_shrpenv=''
5412 if "$useshrplib"; then
5413     case "$osname" in 
5414         aix)
5415                 # We'll set it in Makefile.SH...
5416                 ;;
5417         solaris|netbsd)
5418                 xxx="-R $shrpdir"
5419                 ;;
5420         freebsd)
5421                 xxx="-Wl,-R$shrpdir"
5422                 ;;
5423         linux|irix*|dec_osf)
5424                 xxx="-Wl,-rpath,$shrpdir"
5425                 ;;
5426         next)
5427                 # next doesn't like the default...
5428                 ;;
5429         *)
5430                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5431                 ;;
5432         esac
5433         case "$xxx" in
5434         '') ;;
5435         *)      
5436                 # Only add $xxx if it isn't already in ccdlflags.
5437                 case " $ccdlflags " in
5438                 *" $xxx "*)     ;;
5439                 *)      ccdlflags="$ccdlflags $xxx"
5440                         cat <<EOM >&4
5441
5442 Adding $xxx to the flags
5443 passed to $ld so that the perl executable will find the 
5444 installed shared $libperl.
5445
5446 EOM
5447                         ;;
5448                 esac
5449                 ;;
5450         esac
5451 fi
5452 # Respect a hint or command-line value.
5453 case "$shrpenv" in
5454 '') shrpenv="$tmp_shrpenv" ;;
5455 esac
5456
5457 : determine where manual pages go
5458 set man1dir man1dir none
5459 eval $prefixit
5460 $cat <<EOM
5461
5462 $spackage has manual pages available in source form.
5463 EOM
5464 case "$nroff" in
5465 nroff)
5466         echo "However, you don't have nroff, so they're probably useless to you."
5467         case "$man1dir" in
5468         '') man1dir="none";;
5469         esac;;
5470 esac
5471 echo "If you don't want the manual sources installed, answer 'none'."
5472 case "$man1dir" in
5473 ' ') dflt=none
5474         ;;
5475 '')
5476         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5477         lookpath="$lookpath $prefixexp/man/p_man/man1"
5478         lookpath="$lookpath $prefixexp/man/u_man/man1"
5479         lookpath="$lookpath $prefixexp/man/man.1"
5480         case "$sysman" in
5481         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5482         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5483         esac
5484         set dflt
5485         eval $prefixup
5486         ;;
5487 *)  dflt="$man1dir"
5488         ;;
5489 esac
5490 echo " "
5491 fn=dn+~
5492 rp="Where do the main $spackage manual pages (source) go?"
5493 . ./getfile
5494 if $test "X$man1direxp" != "X$ansexp"; then
5495         installman1dir=''
5496 fi
5497 man1dir="$ans"
5498 man1direxp="$ansexp"
5499 case "$man1dir" in
5500 '') man1dir=' '
5501         installman1dir='';;
5502 esac
5503 if $afs; then
5504         $cat <<EOM
5505
5506 Since you are running AFS, I need to distinguish the directory in which
5507 manual pages reside from the directory in which they are installed (and from
5508 which they are presumably copied to the former directory by occult means).
5509
5510 EOM
5511         case "$installman1dir" in
5512         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5513         *) dflt="$installman1dir";;
5514         esac
5515         fn=de~
5516         rp='Where will man pages be installed?'
5517         . ./getfile
5518         installman1dir="$ans"
5519 else
5520         installman1dir="$man1direxp"
5521 fi
5522
5523 : What suffix to use on installed man pages
5524
5525 case "$man1dir" in
5526 ' ')
5527         man1ext='0'
5528         ;;
5529 *)
5530         rp="What suffix should be used for the main $spackage man pages?"
5531         case "$man1ext" in
5532         '')     case "$man1dir" in
5533                 *1)  dflt=1 ;;
5534                 *1p) dflt=1p ;;
5535                 *1pm) dflt=1pm ;;
5536                 *l) dflt=l;;
5537                 *n) dflt=n;;
5538                 *o) dflt=o;;
5539                 *p) dflt=p;;
5540                 *C) dflt=C;;
5541                 *L) dflt=L;;
5542                 *L1) dflt=L1;;
5543                 *) dflt=1;;
5544                 esac
5545                 ;;
5546         *)      dflt="$man1ext";;
5547         esac
5548         . ./myread
5549         man1ext="$ans"
5550         ;;
5551 esac
5552
5553 : see if we can have long filenames
5554 echo " "
5555 rmlist="$rmlist /tmp/cf$$"
5556 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5557 first=123456789abcdef
5558 second=/tmp/cf$$/$first
5559 $rm -f $first $second
5560 if (echo hi >$first) 2>/dev/null; then
5561         if $test -f 123456789abcde; then
5562                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5563                 val="$undef"
5564         else
5565                 if (echo hi >$second) 2>/dev/null; then
5566                         if $test -f /tmp/cf$$/123456789abcde; then
5567                                 $cat <<'EOM'
5568 That's peculiar... You can have filenames longer than 14 characters, but only
5569 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5570 I shall consider your system cannot support long filenames at all.
5571 EOM
5572                                 val="$undef"
5573                         else
5574                                 echo 'You can have filenames longer than 14 characters.' >&4
5575                                 val="$define"
5576                         fi
5577                 else
5578                         $cat <<'EOM'
5579 How confusing! Some of your filesystems are sane enough to allow filenames
5580 longer than 14 characters but some others like /tmp can't even think about them.
5581 So, for now on, I shall assume your kernel does not allow them at all.
5582 EOM
5583                         val="$undef"
5584                 fi
5585         fi
5586 else
5587         $cat <<'EOM'
5588 You can't have filenames longer than 14 chars.  You can't even think about them!
5589 EOM
5590         val="$undef"
5591 fi 
5592 set d_flexfnam
5593 eval $setvar
5594 $rm -rf /tmp/cf$$ 123456789abcde*
5595
5596 : determine where library module manual pages go
5597 set man3dir man3dir none
5598 eval $prefixit
5599 $cat <<EOM
5600
5601 $spackage has manual pages for many of the library modules.
5602 EOM
5603
5604 case "$nroff" in
5605 nroff)
5606         $cat <<'EOM'
5607 However, you don't have nroff, so they're probably useless to you.
5608 EOM
5609         case "$man3dir" in
5610         '') man3dir="none";;
5611         esac;;
5612 esac
5613
5614 case "$d_flexfnam" in
5615 undef)
5616         $cat <<'EOM'
5617 However, your system can't handle the long file names like File::Basename.3. 
5618 EOM
5619         case "$man3dir" in
5620         '') man3dir="none";;
5621         esac;;
5622 esac
5623
5624 echo "If you don't want the manual sources installed, answer 'none'."
5625 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5626 case "$man3dir" in
5627 '')     case "$prefix" in 
5628         *$prog*) dflt=`echo $man1dir | 
5629                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5630         *)      dflt="$privlib/man/man3" ;;
5631         esac
5632         ;;
5633 ' ') dflt=none;;
5634 *)      dflt="$man3dir" ;;
5635 esac
5636 echo " "
5637
5638 fn=dn+~
5639 rp="Where do the $package library man pages (source) go?"
5640 . ./getfile
5641 if test "X$man3direxp" != "X$ansexp"; then
5642         installman3dir=''
5643 fi
5644
5645 man3dir="$ans"
5646 man3direxp="$ansexp"
5647 case "$man3dir" in
5648 '') man3dir=' '
5649         installman3dir='';;
5650 esac
5651 if $afs; then
5652         $cat <<EOM
5653
5654 Since you are running AFS, I need to distinguish the directory in which
5655 manual pages reside from the directory in which they are installed (and from
5656 which they are presumably copied to the former directory by occult means).
5657
5658 EOM
5659         case "$installman3dir" in
5660         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5661         *) dflt="$installman3dir";;
5662         esac
5663         fn=de~
5664         rp='Where will man pages be installed?'
5665         . ./getfile
5666         installman3dir="$ans"
5667 else
5668         installman3dir="$man3direxp"
5669 fi
5670
5671 : What suffix to use on installed man pages
5672
5673 case "$man3dir" in
5674 ' ')
5675         man3ext='0'
5676         ;;
5677 *)
5678         rp="What suffix should be used for the $package library man pages?"
5679         case "$man3ext" in
5680         '')     case "$man3dir" in
5681                 *3)  dflt=3 ;;
5682                 *3p) dflt=3p ;;
5683                 *3pm) dflt=3pm ;;
5684                 *l) dflt=l;;
5685                 *n) dflt=n;;
5686                 *o) dflt=o;;
5687                 *p) dflt=p;;
5688                 *C) dflt=C;;
5689                 *L) dflt=L;;
5690                 *L3) dflt=L3;;
5691                 *) dflt=3;;
5692                 esac
5693                 ;;
5694         *)      dflt="$man3ext";;
5695         esac
5696         . ./myread
5697         man3ext="$ans"
5698         ;;
5699 esac
5700
5701 : see if we have to deal with yellow pages, now NIS.
5702 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5703         if $test -f /usr/etc/nibindd; then
5704                 echo " "
5705                 echo "I'm fairly confident you're on a NeXT."
5706                 echo " "
5707                 rp='Do you get the hosts file via NetInfo?'
5708                 dflt=y
5709                 case "$hostcat" in
5710                 nidump*) ;;
5711                 '') ;;
5712                 *) dflt=n;;
5713                 esac
5714                 . ./myread
5715                 case "$ans" in
5716                 y*) hostcat='nidump hosts .';;
5717                 *)      case "$hostcat" in
5718                         nidump*) hostcat='';;
5719                         esac
5720                         ;;
5721                 esac
5722         fi
5723         case "$hostcat" in
5724         nidump*) ;;
5725         *)
5726                 case "$hostcat" in
5727                 *ypcat*) dflt=y;;
5728                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5729                                 dflt=y
5730                         else
5731                                 dflt=n
5732                         fi;;
5733                 *) dflt=n;;
5734                 esac
5735                 echo " "
5736                 rp='Are you getting the hosts file via yellow pages?'
5737                 . ./myread
5738                 case "$ans" in
5739                 y*) hostcat='ypcat hosts';;
5740                 *) hostcat='cat /etc/hosts';;
5741                 esac
5742                 ;;
5743         esac
5744 fi
5745 case "$hostcat" in
5746 '') hostcat='cat /etc/hosts';;
5747 esac
5748 case "$groupcat" in
5749 '') groupcat='cat /etc/group';;
5750 esac
5751 case "$passcat" in
5752 '') passcat='cat /etc/passwd';;
5753 esac
5754
5755 : now get the host name
5756 echo " "
5757 echo "Figuring out host name..." >&4
5758 case "$myhostname" in
5759 '') cont=true
5760         echo 'Maybe "hostname" will work...'
5761         if tans=`sh -c hostname 2>&1` ; then
5762                 myhostname=$tans
5763                 phostname=hostname
5764                 cont=''
5765         fi
5766         ;;
5767 *) cont='';;
5768 esac
5769 if $test "$cont"; then
5770         if ./xenix; then
5771                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5772                 if tans=`cat /etc/systemid 2>&1` ; then
5773                         myhostname=$tans
5774                         phostname='cat /etc/systemid'
5775                         echo "Whadyaknow.  Xenix always was a bit strange..."
5776                         cont=''
5777                 fi
5778         elif $test -r /etc/systemid; then
5779                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5780         fi
5781 fi
5782 if $test "$cont"; then
5783         echo 'No, maybe "uuname -l" will work...'
5784         if tans=`sh -c 'uuname -l' 2>&1` ; then
5785                 myhostname=$tans
5786                 phostname='uuname -l'
5787         else
5788                 echo 'Strange.  Maybe "uname -n" will work...'
5789                 if tans=`sh -c 'uname -n' 2>&1` ; then
5790                         myhostname=$tans
5791                         phostname='uname -n'
5792                 else
5793                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5794                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5795                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5796                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5797                         else
5798                                 case "$myhostname" in
5799                                 '') echo "Does this machine have an identity crisis or something?"
5800                                         phostname='';;
5801                                 *)
5802                                         echo "Well, you said $myhostname before..."
5803                                         phostname='echo $myhostname';;
5804                                 esac
5805                         fi
5806                 fi
5807         fi
5808 fi
5809 : you do not want to know about this
5810 set $myhostname
5811 myhostname=$1
5812
5813 : verify guess
5814 if $test "$myhostname" ; then
5815         dflt=y
5816         rp='Your host name appears to be "'$myhostname'".'" Right?"
5817         . ./myread
5818         case "$ans" in
5819         y*) ;;
5820         *) myhostname='';;
5821         esac
5822 fi
5823
5824 : bad guess or no guess
5825 while $test "X$myhostname" = X ; do
5826         dflt=''
5827         rp="Please type the (one word) name of your host:"
5828         . ./myread
5829         myhostname="$ans"
5830 done
5831
5832 : translate upper to lower if necessary
5833 case "$myhostname" in
5834 *[A-Z]*)
5835         echo "(Normalizing case in your host name)"
5836         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5837         ;;
5838 esac
5839
5840 case "$myhostname" in
5841 *.*)
5842         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5843         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5844         echo "(Trimming domain name from host name--host name is now $myhostname)"
5845         ;;
5846 *) case "$mydomain" in
5847         '')
5848                 {
5849                         test "X$hostcat" = "Xypcat hosts" &&
5850                         ypmatch "$myhostname" hosts 2>/dev/null |\
5851                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5852                         $test -s hosts
5853                 } || {
5854                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5855                                         /[       ]$myhostname[  . ]/p" > hosts
5856                 }
5857                 tmp_re="[       . ]"
5858                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5859                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5860                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5861                         hosts | $sort | $uniq | \
5862                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5863                 case `$echo X$dflt` in
5864                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5865                         dflt=.
5866                         ;;
5867                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5868                         ;;
5869                 esac
5870                 case "$dflt" in
5871                 .)
5872                         tans=`./loc resolv.conf X /etc /usr/etc`
5873                         if $test -f "$tans"; then
5874                                 echo "(Attempting domain name extraction from $tans)"
5875                                 dflt=.`$sed -n -e 's/   / /g' \
5876                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5877                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5878                                 case "$dflt" in
5879                                 .) dflt=.`$sed -n -e 's/        / /g' \
5880                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5881                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5882                                         ;;
5883                                 esac
5884                         fi
5885                         ;;
5886                 esac
5887                 case "$dflt" in
5888                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5889                         dflt=.`sh -c domainname 2>/dev/null`
5890                         case "$dflt" in
5891                         '') dflt='.';;
5892                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5893                         esac
5894                         ;;
5895                 esac
5896                 case "$dflt" in
5897                 .) echo "(Lost all hope -- silly guess then)"
5898                         dflt='.uucp'
5899                         ;;
5900                 esac
5901                 $rm -f hosts
5902                 ;;
5903         *) dflt="$mydomain";;
5904         esac;;
5905 esac
5906 echo " "
5907 rp="What is your domain name?"
5908 . ./myread
5909 tans="$ans"
5910 case "$ans" in
5911 '') ;;
5912 .*) ;;
5913 *) tans=".$tans";;
5914 esac
5915 mydomain="$tans"
5916
5917 : translate upper to lower if necessary
5918 case "$mydomain" in
5919 *[A-Z]*)
5920         echo "(Normalizing case in your domain name)"
5921         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5922         ;;
5923 esac
5924
5925 : a little sanity check here
5926 case "$phostname" in
5927 '') ;;
5928 *)
5929         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5930         $myhostname$mydomain|$myhostname) ;;
5931         *)
5932                 case "$phostname" in
5933                 sed*)
5934                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5935                         ;;
5936                 *)
5937                         echo "(That doesn't agree with your $phostname command, by the way.)"
5938                         ;;
5939                 esac
5940         ;;
5941         esac
5942         ;;
5943 esac
5944
5945 $cat <<EOM
5946
5947 I need to get your e-mail address in Internet format if possible, i.e.
5948 something like user@host.domain. Please answer accurately since I have
5949 no easy means to double check it. The default value provided below
5950 is most probably close to the reality but may not be valid from outside
5951 your organization...
5952
5953 EOM
5954 cont=x
5955 while test "$cont"; do
5956         case "$cf_email" in
5957         '') dflt="$cf_by@$myhostname$mydomain";;
5958         *) dflt="$cf_email";;
5959         esac
5960         rp='What is your e-mail address?'
5961         . ./myread
5962         cf_email="$ans"
5963         case "$cf_email" in
5964         *@*.*) cont='' ;;
5965         *)
5966                 rp='Address does not look like an Internet one.  Use it anyway?'
5967                 case "$fastread" in
5968                 yes) dflt=y ;;
5969                 *) dflt=n ;;
5970                 esac
5971                 . ./myread
5972                 case "$ans" in
5973                 y*) cont='' ;;
5974                 *) echo " " ;;
5975                 esac
5976                 ;;
5977         esac
5978 done
5979
5980 $cat <<EOM
5981
5982 If you or somebody else will be maintaining perl at your site, please
5983 fill in the correct e-mail address here so that they may be contacted
5984 if necessary. Currently, the "perlbug" program included with perl
5985 will send mail to this address in addition to perlbug@perl.com. You may
5986 enter "none" for no administrator.
5987
5988 EOM
5989 case "$perladmin" in
5990 '') dflt="$cf_email";;
5991 *) dflt="$perladmin";;
5992 esac
5993 rp='Perl administrator e-mail address'
5994 . ./myread
5995 perladmin="$ans"
5996
5997 : figure out how to guarantee perl startup
5998 case "$startperl" in
5999 '')
6000         case "$sharpbang" in
6001         *!)
6002                 $cat <<EOH
6003
6004 I can use the #! construct to start perl on your system. This will
6005 make startup of perl scripts faster, but may cause problems if you
6006 want to share those scripts and perl is not in a standard place
6007 ($binexp/perl) on all your platforms. The alternative is to force
6008 a shell by starting the script with a single ':' character.
6009
6010 EOH
6011                 dflt="$binexp/perl"
6012                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6013                 . ./myread
6014                 case "$ans" in
6015                 none)   startperl=": # use perl";;
6016                 *)      startperl="#!$ans"
6017                         if $test 30 -lt `echo "$ans" | wc -c`; then
6018                                 $cat >&4 <<EOM
6019
6020 WARNING:  Some systems limit the #! command to 32 characters.
6021 If you experience difficulty running Perl scripts with #!, try
6022 installing Perl in a directory with a shorter pathname.
6023
6024 EOM
6025                         fi ;;
6026                 esac
6027                 ;;
6028         *) startperl=": # use perl"
6029                 ;;
6030         esac
6031         ;;
6032 esac
6033 echo "I'll use $startperl to start perl scripts."
6034
6035 : figure best path for perl in scripts
6036 case "$perlpath" in
6037 '')
6038         perlpath="$binexp/perl"
6039         case "$startperl" in
6040         *!*) ;;
6041         *)
6042                 $cat <<EOH
6043
6044 I will use the "eval 'exec'" idiom to start Perl on your system.
6045 I can use the full path of your Perl binary for this purpose, but
6046 doing so may cause problems if you want to share those scripts and
6047 Perl is not always in a standard place ($binexp/perl).
6048
6049 EOH
6050                 dflt="$binexp/perl"
6051                 rp="What path shall I use in \"eval 'exec'\"?"
6052                 . ./myread
6053                 perlpath="$ans"
6054                 ;;
6055         esac
6056         ;;
6057 esac
6058 case "$startperl" in
6059 *!*)    ;;
6060 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6061 esac
6062
6063 : determine where public executable scripts go
6064 set scriptdir scriptdir
6065 eval $prefixit
6066 case "$scriptdir" in
6067 '')
6068         dflt="$bin"
6069         : guess some guesses
6070         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6071         $test -d /usr/share/bin && dflt=/usr/share/bin
6072         $test -d /usr/local/script && dflt=/usr/local/script
6073         $test -d $prefixexp/script && dflt=$prefixexp/script
6074         set dflt
6075         eval $prefixup
6076         ;;
6077 *)  dflt="$scriptdir"
6078         ;;
6079 esac
6080 $cat <<EOM
6081  
6082 Some installations have a separate directory just for executable scripts so
6083 that they can mount it across multiple architectures but keep the scripts in
6084 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6085 Or you might just lump your scripts in with all your other executables.
6086  
6087 EOM
6088 fn=d~
6089 rp='Where do you keep publicly executable scripts?'
6090 . ./getfile
6091 if $test "X$ansexp" != "X$scriptdirexp"; then
6092         installscript=''
6093 fi
6094 scriptdir="$ans"
6095 scriptdirexp="$ansexp"
6096 if $afs; then
6097         $cat <<EOM
6098
6099 Since you are running AFS, I need to distinguish the directory in which
6100 scripts reside from the directory in which they are installed (and from
6101 which they are presumably copied to the former directory by occult means).
6102
6103 EOM
6104         case "$installscript" in
6105         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6106         *) dflt="$installscript";;
6107         esac
6108         fn=de~
6109         rp='Where will public scripts be installed?'
6110         . ./getfile
6111         installscript="$ans"
6112 else
6113         installscript="$scriptdirexp"
6114 fi
6115
6116 : determine where site specific libraries go.
6117 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6118 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6119 case "$prefix" in
6120 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6121 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6122 esac
6123 eval $prefixit
6124 $cat <<EOM
6125
6126 The installation process will also create a directory for
6127 site-specific extensions and modules.  Some users find it convenient
6128 to place all local files in this directory rather than in the main
6129 distribution directory.
6130
6131 EOM
6132 fn=d~+
6133 rp='Pathname for the site-specific library files?'
6134 . ./getfile
6135 if $test "X$sitelibexp" != "X$ansexp"; then
6136         installsitelib=''
6137 fi
6138 sitelib="$ans"
6139 sitelibexp="$ansexp"
6140 if $afs; then
6141         $cat <<EOM
6142
6143 Since you are running AFS, I need to distinguish the directory in
6144 which site-specific files reside from the directory in which they are
6145 installed (and from which they are presumably copied to the former
6146 directory by occult means).
6147
6148 EOM
6149         case "$installsitelib" in
6150         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6151         *) dflt="$installsitelib";;
6152         esac
6153         fn=de~
6154         rp='Where will site-specific files be installed?'
6155         . ./getfile
6156         installsitelib="$ans"
6157 else
6158         installsitelib="$sitelibexp"
6159 fi
6160
6161 : determine where site specific architecture-dependent libraries go.
6162 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6163 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6164 : sitelib may have an optional trailing /share.
6165 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6166 tdflt="$tdflt/$archname"
6167 set sitearch sitearch none
6168 eval $prefixit
6169 case "$sitearch" in
6170 '')     dflt="$tdflt" ;;
6171 *)      dflt="$sitearch" ;;
6172 esac
6173 $cat <<EOM
6174
6175 The installation process will also create a directory for
6176 architecture-dependent site-specific extensions and modules.
6177
6178 EOM
6179 fn=nd~+
6180 rp='Pathname for the site-specific architecture-dependent library files?'
6181 . ./getfile
6182 if $test "X$sitearchexp" != "X$ansexp"; then
6183         installsitearch=''
6184 fi
6185 sitearch="$ans"
6186 sitearchexp="$ansexp"
6187 if $afs; then
6188         $cat <<EOM
6189
6190 Since you are running AFS, I need to distinguish the directory in
6191 which site-specific architecture-dependent library files reside from
6192 the directory in which they are installed (and from which they are
6193 presumably copied to the former directory by occult means).
6194
6195 EOM
6196         case "$installsitearch" in
6197         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6198         *) dflt="$installsitearch";;
6199         esac
6200         fn=de~
6201         rp='Where will site-specific architecture-dependent files be installed?'
6202         . ./getfile
6203         installsitearch="$ans"
6204 else
6205         installsitearch="$sitearchexp"
6206 fi
6207
6208 cat <<EOM
6209
6210 Previous version of $package used the standard IO mechanisms as defined
6211 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6212 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6213 the default.  This abstraction layer can use AT&T's sfio (if you already
6214 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6215 problems with some extension modules.  Using PerlIO with stdio is safe,
6216 but it is slower than plain stdio and therefore is not the default.
6217
6218 If this doesn't make any sense to you, just accept the default 'n'.
6219 EOM
6220 case "$useperlio" in
6221 $define|true|[yY]*)     dflt='y';;
6222 *) dflt='n';;
6223 esac
6224 rp='Use the experimental PerlIO abstraction layer?'
6225 . ./myread
6226 case "$ans" in
6227 y|Y) 
6228         val="$define"
6229         ;;     
6230 *)      
6231         echo "Ok, doing things the stdio way"
6232         val="$undef"
6233         ;;
6234 esac
6235 set useperlio
6236 eval $setvar 
6237
6238 : Check how to convert floats to strings.
6239 if test "X$d_Gconvert" = X; then
6240         echo " "
6241         echo "Checking for an efficient way to convert floats to strings."
6242         $cat >try.c <<'EOP'
6243 #ifdef TRY_gconvert
6244 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6245 char *myname = "gconvert";
6246 #endif
6247 #ifdef TRY_gcvt
6248 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6249 char *myname = "gcvt";
6250 #endif
6251 #ifdef TRY_sprintf
6252 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6253 char *myname = "sprintf";
6254 #endif
6255
6256 #include <stdio.h>
6257
6258 int
6259 checkit(expect, got)
6260 char *expect;
6261 char *got;
6262 {
6263     if (strcmp(expect, got)) {
6264                 printf("%s oddity:  Expected %s, got %s\n",
6265                         myname, expect, got);
6266                 exit(1);
6267         }
6268 }
6269
6270 int main()
6271
6272         char buf[64]; 
6273         buf[63] = '\0';
6274
6275         /* This must be 1st test on (which?) platform */
6276         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6277         Gconvert(0.1, 8, 0, buf);
6278         checkit("0.1", buf);
6279
6280         Gconvert(1.0, 8, 0, buf); 
6281         checkit("1", buf);
6282
6283         Gconvert(0.0, 8, 0, buf); 
6284         checkit("0", buf);
6285
6286         Gconvert(-1.0, 8, 0, buf); 
6287         checkit("-1", buf);
6288
6289         /* Some Linux gcvt's give 1.e+5 here. */
6290         Gconvert(100000.0, 8, 0, buf); 
6291         checkit("100000", buf);
6292         
6293         /* Some Linux gcvt's give -1.e+5 here. */
6294         Gconvert(-100000.0, 8, 0, buf); 
6295         checkit("-100000", buf);
6296
6297         exit(0);
6298 }
6299 EOP
6300         case "$d_Gconvert" in
6301         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6302         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6303         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6304         *) xxx_list='gconvert gcvt sprintf' ;;
6305         esac
6306
6307         for xxx_convert in $xxx_list; do
6308                 echo "Trying $xxx_convert"
6309                 $rm -f try try$_o
6310                 set try -DTRY_$xxx_convert
6311                 if eval $compile; then
6312                         echo "$xxx_convert" found. >&4
6313                         if ./try; then
6314                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6315                                 break;
6316                         else
6317                                 echo "...But $xxx_convert didn't work as I expected."
6318                         fi
6319                 else
6320                         echo "$xxx_convert NOT found." >&4
6321                 fi
6322         done
6323                 
6324         case "$xxx_convert" in
6325         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6326         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6327         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6328         esac
6329 fi
6330
6331 : Initialize h_fcntl
6332 h_fcntl=false
6333
6334 : Initialize h_sysfile
6335 h_sysfile=false
6336
6337 : access call always available on UNIX
6338 set access d_access
6339 eval $inlibc
6340
6341 : locate the flags for 'access()'
6342 case "$d_access" in
6343 "$define")
6344         echo " "
6345         $cat >access.c <<'EOCP'
6346 #include <sys/types.h>
6347 #ifdef I_FCNTL
6348 #include <fcntl.h>
6349 #endif
6350 #ifdef I_SYS_FILE
6351 #include <sys/file.h>
6352 #endif
6353 #ifdef I_UNISTD
6354 #include <unistd.h>
6355 #endif
6356 main() {
6357         exit(R_OK);
6358 }
6359 EOCP
6360         : check sys/file.h first, no particular reason here
6361         if $test `./findhdr sys/file.h` && \
6362                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6363                 h_sysfile=true;
6364                 echo "<sys/file.h> defines the *_OK access constants." >&4
6365         elif $test `./findhdr fcntl.h` && \
6366                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6367                 h_fcntl=true;
6368                 echo "<fcntl.h> defines the *_OK access constants." >&4
6369         elif $test `./findhdr unistd.h` && \
6370                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6371                 echo "<unistd.h> defines the *_OK access constants." >&4
6372         else
6373                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6374         fi
6375         ;;
6376 esac
6377 $rm -f access*
6378
6379 : see if accessx exists
6380 set accessx d_accessx
6381 eval $inlibc
6382
6383 : see if alarm exists
6384 set alarm d_alarm
6385 eval $inlibc
6386
6387 : Look for GNU-cc style attribute checking
6388 echo " "
6389 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6390 $cat >attrib.c <<'EOCP'
6391 #include <stdio.h>
6392 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6393 EOCP
6394 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6395         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6396                 echo "Your C compiler doesn't fully support __attribute__."
6397                 val="$undef"
6398         else
6399                 echo "Your C compiler supports __attribute__."
6400                 val="$define"
6401         fi
6402 else
6403         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6404         val="$undef"
6405 fi
6406 set d_attribut
6407 eval $setvar
6408 $rm -f attrib*
6409
6410 : see if bcmp exists
6411 set bcmp d_bcmp
6412 eval $inlibc
6413
6414 : see if bcopy exists
6415 set bcopy d_bcopy
6416 eval $inlibc
6417
6418 : see if this is a unistd.h system
6419 set unistd.h i_unistd
6420 eval $inhdr
6421
6422 : see if getpgrp exists
6423 set getpgrp d_getpgrp
6424 eval $inlibc
6425
6426 case "$d_getpgrp" in
6427 "$define")
6428         echo " "
6429         echo "Checking to see which flavor of getpgrp is in use..."
6430         $cat >set.c <<EOP
6431 #$i_unistd I_UNISTD
6432 #include <sys/types.h>
6433 #ifdef I_UNISTD
6434 #  include <unistd.h>
6435 #endif
6436 int main()
6437 {
6438         if (getuid() == 0) {
6439                 printf("(I see you are running Configure as super-user...)\n");
6440                 setuid(1);
6441         }
6442 #ifdef TRY_BSD_PGRP
6443         if (getpgrp(1) == 0)
6444                 exit(0);
6445 #else
6446         if (getpgrp() > 0)
6447                 exit(0);
6448 #endif
6449         exit(1);
6450 }
6451 EOP
6452         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6453                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6454                 val="$define"
6455         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6456                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6457                 val="$undef"
6458         else
6459                 echo "I can't seem to compile and run the test program."
6460                 if ./usg; then
6461                         xxx="a USG one, i.e. you use getpgrp()."
6462                 else
6463                         # SVR4 systems can appear rather BSD-ish.
6464                         case "$i_unistd" in
6465                         $undef)
6466                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6467                                 val="$define"
6468                                 ;;
6469                         $define)
6470                                 xxx="probably a USG one, i.e. you use getpgrp()."
6471                                 val="$undef"
6472                                 ;;
6473                         esac
6474                 fi
6475                 echo "Assuming your getpgrp is $xxx" >&4
6476         fi
6477         ;;
6478 *) val="$undef";;
6479 esac
6480 set d_bsdgetpgrp
6481 eval $setvar
6482 $rm -f set set.c
6483
6484 : see if setpgrp exists
6485 set setpgrp d_setpgrp
6486 eval $inlibc
6487
6488 case "$d_setpgrp" in
6489 "$define")
6490         echo " "
6491         echo "Checking to see which flavor of setpgrp is in use..."
6492         $cat >set.c <<EOP
6493 #$i_unistd I_UNISTD
6494 #include <sys/types.h>
6495 #ifdef I_UNISTD
6496 #  include <unistd.h>
6497 #endif
6498 int main()
6499 {
6500         if (getuid() == 0) {
6501                 printf("(I see you are running Configure as super-user...)\n");
6502                 setuid(1);
6503         }
6504 #ifdef TRY_BSD_PGRP
6505         if (-1 == setpgrp(1, 1))
6506                 exit(0);
6507 #else
6508         if (setpgrp() != -1)
6509                 exit(0);
6510 #endif
6511         exit(1);
6512 }
6513 EOP
6514         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6515                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6516                 val="$define"
6517         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6518                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6519                 val="$undef"
6520         else
6521                 echo "(I can't seem to compile and run the test program.)"
6522                 if ./usg; then
6523                         xxx="a USG one, i.e. you use setpgrp()."
6524                 else
6525                         # SVR4 systems can appear rather BSD-ish.
6526                         case "$i_unistd" in
6527                         $undef)
6528                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6529                                 val="$define"
6530                                 ;;
6531                         $define)
6532                                 xxx="probably a USG one, i.e. you use setpgrp()."
6533                                 val="$undef"
6534                                 ;;
6535                         esac
6536                 fi
6537                 echo "Assuming your setpgrp is $xxx" >&4
6538         fi
6539         ;;
6540 *) val="$undef";;
6541 esac
6542 set d_bsdsetpgrp
6543 eval $setvar
6544 $rm -f set set.c
6545 : see if bzero exists
6546 set bzero d_bzero
6547 eval $inlibc
6548
6549 : check for lengths of integral types
6550 echo " "
6551 case "$intsize" in
6552 '')
6553         echo "Checking to see how big your integers are..." >&4
6554         $cat >intsize.c <<'EOCP'
6555 #include <stdio.h>
6556 main()
6557 {
6558         printf("intsize=%d;\n", sizeof(int));
6559         printf("longsize=%d;\n", sizeof(long));
6560         printf("shortsize=%d;\n", sizeof(short));
6561         exit(0);
6562 }
6563 EOCP
6564         set intsize
6565         if eval $compile_ok && ./intsize > /dev/null; then
6566                 eval `./intsize`
6567                 echo "Your integers are $intsize bytes long."
6568                 echo "Your long integers are $longsize bytes long."
6569                 echo "Your short integers are $shortsize bytes long."
6570         else
6571                 $cat >&4 <<EOM
6572 !
6573 Help! I can't compile and run the intsize test program: please enlighten me!
6574 (This is probably a misconfiguration in your system or libraries, and
6575 you really ought to fix it.  Still, I'll try anyway.)
6576 !
6577 EOM
6578                 dflt=4
6579                 rp="What is the size of an integer (in bytes)?"
6580                 . ./myread
6581                 intsize="$ans"
6582                 dflt=$intsize
6583                 rp="What is the size of a long integer (in bytes)?"
6584                 . ./myread
6585                 longsize="$ans"
6586                 dflt=2
6587                 rp="What is the size of a short integer (in bytes)?"
6588                 . ./myread
6589                 shortsize="$ans"
6590         fi
6591         ;;
6592 esac
6593 $rm -f intsize intsize.*
6594
6595 : see if signal is declared as pointer to function returning int or void
6596 echo " "
6597 xxx=`./findhdr signal.h`
6598 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6599 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6600         echo "You have int (*signal())() instead of void." >&4
6601         val="$undef"
6602 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6603         echo "You have void (*signal())()." >&4
6604         val="$define"
6605 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6606         echo "You have int (*signal())() instead of void." >&4
6607         val="$undef"
6608 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6609         echo "You have void (*signal())()." >&4
6610         val="$define"
6611 else
6612         case "$d_voidsig" in
6613         '')
6614         echo "I can't determine whether signal handler returns void or int..." >&4
6615                 dflt=void
6616                 rp="What type does your signal handler return?"
6617                 . ./myread
6618                 case "$ans" in
6619                 v*) val="$define";;
6620                 *) val="$undef";;
6621                 esac;;
6622         "$define")
6623                 echo "As you already told me, signal handler returns void." >&4
6624                 val="$define"
6625                 ;;
6626         *)      echo "As you already told me, signal handler returns int." >&4
6627                 val="$undef"
6628                 ;;
6629         esac
6630 fi
6631 set d_voidsig
6632 eval $setvar
6633 case "$d_voidsig" in
6634 "$define") signal_t="void";;
6635 *) signal_t="int";;
6636 esac
6637 $rm -f $$.tmp
6638
6639 : check for ability to cast large floats to 32-bit ints.
6640 echo " "
6641 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6642 if $test "$intsize" -ge 4; then
6643         xxx=int
6644 else
6645         xxx=long
6646 fi
6647 $cat >try.c <<EOCP
6648 #include <stdio.h>
6649 #include <sys/types.h>
6650 #include <signal.h>
6651 $signal_t blech(s) int s; { exit(3); }
6652 main()
6653 {
6654         $xxx i32;
6655         double f, g;
6656         int result = 0;
6657         char str[16];
6658         signal(SIGFPE, blech);
6659
6660         /* Don't let compiler optimize the test away.  Store the number 
6661            in a writable string for gcc to pass to sscanf under HP/UX.
6662         */
6663         sprintf(str, "2147483647");
6664         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6665         g = 10 * f;
6666         i32  = ($xxx) g;
6667
6668         /* x86 processors will probably give 0x8000 0000, which is a
6669        sign change.  We don't want that.  We want to mimic SPARC
6670            behavior here, which is to preserve the sign and give
6671            back 0x7fff ffff.
6672         */
6673         if (i32 != ($xxx) f)
6674                 result |= 1;
6675         exit(result);
6676 }
6677 EOCP
6678 set try
6679 if eval $compile_ok; then
6680         ./try
6681         yyy=$?
6682 else
6683         echo "(I can't seem to compile the test program--assuming it can't)"
6684         yyy=1
6685 fi
6686 case "$yyy" in
6687 0)      val="$define"
6688         echo "Yup, it can."
6689         ;;
6690 *)      val="$undef"
6691         echo "Nope, it can't."
6692         ;;
6693 esac
6694 set d_casti32
6695 eval $setvar
6696 $rm -f try try.*
6697
6698 : check for ability to cast negative floats to unsigned
6699 echo " "
6700 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6701 $cat >try.c <<EOCP
6702 #include <stdio.h>
6703 #include <sys/types.h>
6704 #include <signal.h>
6705 $signal_t blech(s) int s; { exit(7); }
6706 $signal_t blech_in_list(s) int s; { exit(4); }
6707 unsigned long dummy_long(p) unsigned long p; { return p; }
6708 unsigned int dummy_int(p) unsigned int p; { return p; }
6709 unsigned short dummy_short(p) unsigned short p; { return p; }
6710 main()
6711 {
6712         double f;
6713         unsigned long along;
6714         unsigned int aint;
6715         unsigned short ashort;
6716         int result = 0;
6717         char str[16];
6718         
6719         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6720            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6721            optimized the whole file away
6722         */
6723         /* Store the number in a writable string for gcc to pass to 
6724            sscanf under HP/UX.
6725         */
6726         sprintf(str, "-123");
6727         sscanf(str, "%lf", &f);  /* f = -123.; */
6728
6729         signal(SIGFPE, blech);
6730         along = (unsigned long)f;
6731         aint = (unsigned int)f;
6732         ashort = (unsigned short)f;
6733         if (along != (unsigned long)-123)
6734                 result |= 1;
6735         if (aint != (unsigned int)-123)
6736                 result |= 1;
6737         if (ashort != (unsigned short)-123)
6738                 result |= 1;
6739         sprintf(str, "1073741824.");
6740         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6741         f = f + f;
6742         along = 0;
6743         along = (unsigned long)f;
6744         if (along != 0x80000000)
6745                 result |= 2;
6746         f -= 1.;
6747         along = 0;
6748         along = (unsigned long)f;
6749         if (along != 0x7fffffff)
6750                 result |= 1;
6751         f += 2.;
6752         along = 0;
6753         along = (unsigned long)f;
6754         if (along != 0x80000001)
6755                 result |= 2;
6756         if (result)
6757                 exit(result);
6758         signal(SIGFPE, blech_in_list);
6759         sprintf(str, "123.");
6760         sscanf(str, "%lf", &f);  /* f = 123.; */
6761         along = dummy_long((unsigned long)f);
6762         aint = dummy_int((unsigned int)f);
6763         ashort = dummy_short((unsigned short)f);
6764         if (along != (unsigned long)123)
6765                 result |= 4;
6766         if (aint != (unsigned int)123)
6767                 result |= 4;
6768         if (ashort != (unsigned short)123)
6769                 result |= 4;
6770         exit(result);
6771
6772 }
6773 EOCP
6774 set try
6775 if eval $compile_ok; then
6776         ./try
6777         castflags=$?
6778 else
6779         echo "(I can't seem to compile the test program--assuming it can't)"
6780         castflags=7
6781 fi
6782 case "$castflags" in
6783 0)      val="$define"
6784         echo "Yup, it can."
6785         ;;
6786 *)      val="$undef"
6787         echo "Nope, it can't."
6788         ;;
6789 esac
6790 set d_castneg
6791 eval $setvar
6792 $rm -f try.*
6793
6794 : see if vprintf exists
6795 echo " "
6796 if set vprintf val -f d_vprintf; eval $csym; $val; then
6797         echo 'vprintf() found.' >&4
6798         val="$define"
6799         $cat >vprintf.c <<'EOF'
6800 #include <varargs.h>
6801
6802 main() { xxx("foo"); }
6803
6804 xxx(va_alist)
6805 va_dcl
6806 {
6807         va_list args;
6808         char buf[10];
6809
6810         va_start(args);
6811         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6812 }
6813 EOF
6814         set vprintf
6815         if eval $compile && ./vprintf; then
6816                 echo "Your vsprintf() returns (int)." >&4
6817                 val2="$undef"
6818         else
6819                 echo "Your vsprintf() returns (char*)." >&4
6820                 val2="$define"
6821         fi
6822 else
6823         echo 'vprintf() NOT found.' >&4
6824                 val="$undef"
6825                 val2="$undef"
6826 fi
6827 set d_vprintf
6828 eval $setvar
6829 val=$val2
6830 set d_charvspr
6831 eval $setvar
6832
6833 : see if chown exists
6834 set chown d_chown
6835 eval $inlibc
6836
6837 : see if chroot exists
6838 set chroot d_chroot
6839 eval $inlibc
6840
6841 : see if chsize exists
6842 set chsize d_chsize
6843 eval $inlibc
6844
6845 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6846 while $test $# -ge 2; do
6847         case "$1" in
6848         $define) echo "#include <$2>";;
6849         esac ;
6850     shift 2;
6851 done > try.c;
6852 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6853 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6854         val="$define";
6855 else
6856         val="$undef";
6857 fi;
6858 set $varname;
6859 eval $setvar;
6860 $rm -f try.c try.o'
6861
6862 : see if this is a sys/uio.h system
6863 set sys/uio.h i_sysuio
6864 eval $inhdr
6865
6866 echo "Checking to see if your system supports struct iovec..." >&4
6867 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6868 eval $hasfield
6869 case "$d_iovec_s" in
6870 "$define")      echo "Yup, it does." >&4
6871                 ;;
6872 *)              echo "Nope, it doesn't." >&4
6873                 ;;
6874 esac
6875
6876 socketlib=''
6877 sockethdr=''
6878 : see whether socket exists
6879 echo " "
6880 $echo $n "Hmm... $c" >&4
6881 if set socket val -f d_socket; eval $csym; $val; then
6882         echo "Looks like you have Berkeley networking support." >&4
6883         d_socket="$define"
6884         if set setsockopt val -f; eval $csym; $val; then
6885                 d_oldsock="$undef"
6886         else
6887                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6888                 d_oldsock="$define"
6889         fi
6890 else
6891         if $contains socklib libc.list >/dev/null 2>&1; then
6892                 echo "Looks like you have Berkeley networking support." >&4
6893                 d_socket="$define"
6894                 : we will have to assume that it supports the 4.2 BSD interface
6895                 d_oldsock="$undef"
6896         else
6897                 echo "You don't have Berkeley networking in libc$_a..." >&4
6898                 if test "X$d_socket" = "X$define"; then
6899                    echo "...but you seem to believe that you have sockets." >&4
6900                 else
6901                         for net in net socket
6902                         do
6903                                 if test -f /usr/lib/lib$net$_a; then
6904                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6905                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6906                                         if $contains socket libc.list >/dev/null 2>&1; then
6907                                                 d_socket="$define"
6908                                                 socketlib="-l$net"
6909                                                 case "$net" in
6910                                                 net)
6911                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6912                                                         sockethdr="-I/usr/netinclude"
6913                                                         ;;
6914                                                 esac
6915                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6916                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6917                                                         d_oldsock="$undef"
6918                                                 else
6919                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6920                                                         d_oldsock="$define"
6921                                                 fi
6922                                                 break
6923                                         fi
6924                                 fi
6925                         done
6926                         if test "X$d_socket" != "X$define"; then
6927                            echo "or anywhere else I see." >&4
6928                            d_socket="$undef"
6929                            d_oldsock="$undef"
6930                         fi
6931                 fi
6932         fi
6933 fi
6934
6935 : see if socketpair exists
6936 set socketpair d_sockpair
6937 eval $inlibc
6938
6939
6940 echo " "
6941 echo "Checking the availability of certain socket constants..." >& 4
6942 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6943         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6944         $cat >try.c <<EOF
6945 #include <sys/types.h>
6946 #include <sys/socket.h>
6947 int main() {
6948     int i = $ENUM;
6949 }
6950 EOF
6951         val="$undef"
6952         set try; if eval $compile; then
6953                 val="$define"
6954         fi
6955         set d_${enum}; eval $setvar
6956         $rm -f try.c try
6957 done
6958
6959 set sendmsg d_sendmsg
6960 eval $inlibc
6961
6962 set recvmsg d_recvmsg
6963 eval $inlibc
6964
6965 echo " "
6966 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6967 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6968 eval $hasfield
6969 case "$d_msghdr_s" in
6970 "$define")      echo "Yup, it does." >&4
6971                 ;;
6972 *)              echo "Nope, it doesn't." >&4
6973                 ;;
6974 esac
6975
6976 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6977 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6978 eval $hasfield
6979 case "$d_cmsghdr_s" in
6980 "$define")      echo "Yup, it does." >&4
6981                 ;;
6982 *)              echo "Nope, it doesn't." >&4
6983                 ;;
6984 esac
6985
6986 : check for const keyword
6987 echo " "
6988 echo 'Checking to see if your C compiler knows about "const"...' >&4
6989 $cat >const.c <<'EOCP'
6990 typedef struct spug { int drokk; } spug;
6991 int main()
6992 {
6993         const char *foo;
6994         const spug y;
6995 }
6996 EOCP
6997 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6998         val="$define"
6999         echo "Yup, it does."
7000 else
7001         val="$undef"
7002         echo "Nope, it doesn't."
7003 fi
7004 set d_const
7005 eval $setvar
7006
7007 : see if crypt exists
7008 echo " "
7009 if set crypt val -f d_crypt; eval $csym; $val; then
7010         echo 'crypt() found.' >&4
7011         val="$define"
7012         cryptlib=''
7013 else
7014         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7015         if $test -z "$cryptlib"; then
7016                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7017         else
7018                 cryptlib=-lcrypt
7019         fi
7020         if $test -z "$cryptlib"; then
7021                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7022         else
7023                 cryptlib=-lcrypt
7024         fi
7025         if $test -z "$cryptlib"; then
7026                 cryptlib=`./loc libcrypt$_a "" $libpth`
7027         else
7028                 cryptlib=-lcrypt
7029         fi
7030         if $test -z "$cryptlib"; then
7031                 echo 'crypt() NOT found.' >&4
7032                 val="$undef"
7033         else
7034                 val="$define"
7035         fi
7036 fi
7037 set d_crypt
7038 eval $setvar
7039
7040 : get csh whereabouts
7041 case "$csh" in
7042 'csh') val="$undef" ;;
7043 *) val="$define" ;;
7044 esac
7045 set d_csh
7046 eval $setvar
7047 : Respect a hint or command line value for full_csh.
7048 case "$full_csh" in
7049 '') full_csh=$csh ;;
7050 esac
7051
7052 : see if cuserid exists
7053 set cuserid d_cuserid
7054 eval $inlibc
7055
7056 : see if this is a limits.h system
7057 set limits.h i_limits
7058 eval $inhdr
7059
7060 : see if this is a float.h system
7061 set float.h i_float
7062 eval $inhdr
7063
7064 : See if number of significant digits in a double precision number is known
7065 echo " "
7066 $cat >dbl_dig.c <<EOM
7067 #$i_limits I_LIMITS
7068 #$i_float I_FLOAT
7069 #ifdef I_LIMITS
7070 #include <limits.h>
7071 #endif
7072 #ifdef I_FLOAT
7073 #include <float.h>
7074 #endif
7075 #ifdef DBL_DIG
7076 printf("Contains DBL_DIG");
7077 #endif
7078 EOM
7079 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7080 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7081         echo "DBL_DIG found." >&4
7082         val="$define"
7083 else
7084         echo "DBL_DIG NOT found." >&4
7085         val="$undef"
7086 fi
7087 $rm -f dbl_dig.?
7088 set d_dbl_dig
7089 eval $setvar
7090
7091
7092 if $test X"$use64bits" = X"$define"; then
7093         : see if dbminit64 exists
7094         set dbminit64 d_dbminit64
7095         eval $inlibc
7096
7097         : see if dbmclose64 exists
7098         set dbmclose64 d_dbmclose64
7099         eval $inlibc
7100
7101         : see if fetch64 exists
7102         set fetch64 d_fetch64
7103         eval $inlibc
7104
7105         : see if store64 exists
7106         set store64 d_store64
7107         eval $inlibc
7108
7109         : see if delete64 exists
7110         set delete64 d_delete64
7111         eval $inlibc
7112
7113         : see if firstkey64 exists
7114         set firstkey64 d_firstkey64
7115         eval $inlibc
7116
7117         : see if nextkey64 exists
7118         set nextkey64 d_nextkey64
7119         eval $inlibc
7120 else
7121         val="$undef"
7122         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7123         do
7124                 set $xxx
7125                 eval $setvar
7126         done
7127 fi
7128
7129 : see if difftime exists
7130 set difftime d_difftime
7131 eval $inlibc
7132
7133 : see if sys/stat.h is available
7134 set sys/stat.h i_sysstat
7135 eval $inhdr
7136
7137 : see if this is a dirent system
7138 echo " "
7139 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7140         val="$define"
7141         echo "<dirent.h> found." >&4
7142 else
7143         val="$undef"
7144         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7145                 echo "<sys/dir.h> found." >&4
7146                 echo " "
7147         else
7148                 xinc=`./findhdr sys/ndir.h`
7149         fi
7150         echo "<dirent.h> NOT found." >&4
7151 fi
7152 set i_dirent
7153 eval $setvar
7154
7155 : Look for type of directory structure.
7156 echo " "
7157 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7158
7159 case "$direntrytype" in
7160 ''|' ')
7161         case "$i_dirent" in
7162         $define) guess1='struct dirent' ;;
7163         *) guess1='struct direct'  ;;
7164         esac
7165         ;;
7166 *)      guess1="$direntrytype"
7167         ;;
7168 esac
7169
7170 case "$guess1" in
7171 'struct dirent') guess2='struct direct' ;;
7172 *) guess2='struct dirent' ;;
7173 esac
7174                 
7175 if $contains "$guess1" try.c >/dev/null 2>&1; then
7176         direntrytype="$guess1"
7177         echo "Your directory entries are $direntrytype." >&4
7178 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7179         direntrytype="$guess2"
7180         echo "Your directory entries seem to be $direntrytype." >&4
7181 else
7182         echo "I don't recognize your system's directory entries." >&4
7183         rp="What type is used for directory entries on this system?"
7184         dflt="$guess1"
7185         . ./myread
7186         direntrytype="$ans"
7187 fi
7188 $rm -f try.c
7189
7190
7191 : see if the directory entry stores field length
7192 echo " "
7193 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7194 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7195         echo "Good, your directory entry keeps length information in d_namlen." >&4
7196         val="$define"
7197 else
7198         echo "Your directory entry does not know about the d_namlen field." >&4
7199         val="$undef"
7200 fi
7201 set d_dirnamlen
7202 eval $setvar
7203 $rm -f try.c
7204
7205
7206 if $test X"$use64bits" = X"$define"; then
7207         : see if fstat64 exists
7208         set fstat64 d_fstat64
7209         eval $inlibc
7210
7211         : see if ftruncate64 exists
7212         set ftruncate64 d_ftruncate64
7213         eval $inlibc
7214
7215         : see if lockf64 exists
7216         set lockf64 d_lockf64
7217         eval $inlibc
7218
7219         : see if lseek64 exists
7220         set lseek64 d_lseek64
7221         eval $inlibc
7222
7223         : see if lstat64 exists
7224         set lstat64 d_lstat64
7225         eval $inlibc
7226
7227         : see if open64 exists
7228         set open64 d_open64
7229         eval $inlibc
7230
7231         : see if opendir64 exists
7232         set opendir64 d_opendir64
7233         eval $inlibc
7234
7235         : see if readdir64 exists
7236         set readdir64 d_readdir64
7237         eval $inlibc
7238
7239         : see if seekdir64 exists
7240         set seekdir64 d_seekdir64
7241         eval $inlibc
7242
7243         : see if stat64 exists
7244         set stat64 d_stat64
7245         eval $inlibc
7246
7247         : see if telldir64 exists
7248         set telldir64 d_telldir64
7249         eval $inlibc
7250
7251         : see if truncate64 exists
7252         set truncate64 d_truncate64
7253         eval $inlibc
7254
7255         : check for off64_t
7256         echo " "
7257         echo $n "Checking to see if your system supports off64_t...$c" >&4
7258         $cat >try.c <<EOCP
7259 #include <sys/types.h>
7260 off64_t foo() { off64_t x; x = 7; return x; }'
7261 EOCP
7262         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7263                 val="$define"
7264                 echo " Yup, it does." >&4
7265         else
7266                 val="$undef"
7267                 echo " Nope, it doesn't." >&4
7268         fi
7269         $rm -f try.*
7270         set d_off64t
7271         eval $setvar
7272
7273         : check for ino64_t
7274         echo " "
7275         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7276         val="$undef"
7277         case "$i_sysstat" in
7278         "$define" )
7279                 $cat >try.c <<EOCP
7280 #include <sys/types.h>
7281 #include <sys/stat.h>
7282 ino64_t foo() { ino64_t x; x = 7; return x; }'
7283 EOCP
7284                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7285                         val="$define"
7286                 fi
7287                 $rm -f try.*
7288                 ;;
7289         esac
7290         if $test "X$val" = X"$define"; then
7291                 echo " Yup, it does." >&4
7292         else
7293                 echo " Nope, it doesn't." >&4
7294         fi
7295         set d_ino64t
7296         eval $setvar
7297
7298         : check for struct flock64
7299         echo " "
7300         echo "Checking to see if your system supports struct flock64..." >&4
7301         if $h_fcntl; then
7302                 set d_flock64_s flock64 l_len define fcntl.h
7303                 eval $hasfield
7304         else
7305                 val="$undef"
7306                 set d_flock64_s
7307                 eval $setvar
7308         fi
7309         case "$d_flock64_s" in
7310         "$define")      echo "Yup, it does." >&4
7311                         ;;
7312         *)              echo "Nope, it doesn't." >&4
7313                         ;;
7314         esac
7315
7316         : check for struct dirent64
7317         echo " "
7318         echo "Checking to see if your system supports struct dirent64..." >&4
7319         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7320         eval $hasfield
7321         case "$d_dirent64_s" in
7322         "$define")      echo "Yup, it does." >&4
7323                         ;;
7324         *)              echo "Nope, it doesn't." >&4
7325                         ;;
7326         esac
7327
7328 else
7329         val="$undef"
7330         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
7331         do
7332                 set $xxx
7333                 eval $setvar
7334         done
7335 fi
7336
7337 : see if dlerror exists
7338 xxx_runnm="$runnm"
7339 runnm=false
7340 set dlerror d_dlerror
7341 eval $inlibc
7342 runnm="$xxx_runnm"
7343
7344 : see if dlfcn is available
7345 set dlfcn.h i_dlfcn
7346 eval $inhdr
7347
7348 case "$usedl" in
7349 $define|y|true)
7350         $cat << EOM
7351
7352 On a few systems, the dynamically loaded modules that perl generates and uses
7353 will need a different extension than shared libs. The default will probably
7354 be appropriate.
7355
7356 EOM
7357         case "$dlext" in
7358         '')     dflt="$so" ;;
7359         *)      dflt="$dlext" ;;
7360         esac
7361         rp='What is the extension of dynamically loaded modules'
7362         . ./myread
7363         dlext="$ans"
7364         ;;
7365 *)
7366         dlext="none"
7367         ;;
7368 esac
7369
7370 : Check if dlsym need a leading underscore
7371 echo " "
7372 val="$undef"
7373
7374 case "$dlsrc" in
7375 dl_dlopen.xs)
7376         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7377         $cat >dyna.c <<'EOM'
7378 fred () { }
7379 EOM
7380
7381 $cat >fred.c<<EOM
7382
7383 #include <stdio.h>
7384 #$i_dlfcn I_DLFCN
7385 #ifdef I_DLFCN
7386 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7387 #else
7388 #include <sys/types.h>
7389 #include <nlist.h>
7390 #include <link.h>
7391 #endif
7392
7393 extern int fred() ;
7394
7395 int main()
7396 {
7397     void * handle ;
7398     void * symbol ;
7399 #ifndef RTLD_LAZY
7400     int mode = 1 ;
7401 #else
7402     int mode = RTLD_LAZY ;
7403 #endif
7404     handle = dlopen("./dyna.$dlext", mode) ;
7405     if (handle == NULL) {
7406         printf ("1\n") ;
7407         fflush (stdout) ;
7408         exit(0);
7409     }
7410     symbol = dlsym(handle, "fred") ;
7411     if (symbol == NULL) {
7412         /* try putting a leading underscore */
7413         symbol = dlsym(handle, "_fred") ;
7414         if (symbol == NULL) {
7415             printf ("2\n") ;
7416             fflush (stdout) ;
7417             exit(0);
7418         }
7419         printf ("3\n") ;
7420     }
7421     else
7422         printf ("4\n") ;
7423     fflush (stdout) ;
7424     exit(0);
7425 }
7426 EOM
7427         : Call the object file tmp-dyna.o in case dlext=o.
7428         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7429                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7430                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7431                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7432                 xxx=`./fred`
7433                 case $xxx in
7434                 1)      echo "Test program failed using dlopen." >&4
7435                         echo "Perhaps you should not use dynamic loading." >&4;;
7436                 2)      echo "Test program failed using dlsym." >&4
7437                         echo "Perhaps you should not use dynamic loading." >&4;;
7438                 3)      echo "dlsym needs a leading underscore" >&4
7439                         val="$define" ;;
7440                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7441                 esac
7442         else
7443                 echo "I can't compile and run the test program." >&4
7444         fi
7445         ;;
7446 esac
7447                 
7448 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7449
7450 set d_dlsymun
7451 eval $setvar
7452
7453 hasproto='varname=$1; func=$2; shift; shift;
7454 while $test $# -ge 2; do
7455         case "$1" in
7456         $define) echo "#include <$2>";;
7457         esac ;
7458     shift 2;
7459 done > try.c;
7460 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7461 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7462         echo "$func() prototype found.";
7463         val="$define";
7464 else
7465         echo "$func() prototype NOT found.";
7466         val="$undef";
7467 fi;
7468 set $varname;
7469 eval $setvar;
7470 $rm -f try.c tryout.c'
7471
7472 : see if prototype for drand48 is available
7473 echo " "
7474 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7475 eval $hasproto
7476
7477 : see if dup2 exists
7478 set dup2 d_dup2
7479 eval $inlibc
7480
7481 : see if eaccess exists
7482 set eaccess d_eaccess
7483 eval $inlibc
7484
7485 : see if endgrent exists
7486 set endgrent d_endgrent
7487 eval $inlibc
7488
7489 : see if endhostent exists
7490 set endhostent d_endhent
7491 eval $inlibc
7492
7493 : see if endnetent exists
7494 set endnetent d_endnent
7495 eval $inlibc
7496
7497 : see if endprotoent exists
7498 set endprotoent d_endpent
7499 eval $inlibc
7500
7501 : see if endpwent exists
7502 set endpwent d_endpwent
7503 eval $inlibc
7504
7505 : see if endservent exists
7506 set endservent d_endsent
7507 eval $inlibc
7508
7509 : Locate the flags for 'open()'
7510 echo " "
7511 $cat >open3.c <<'EOCP'
7512 #include <sys/types.h>
7513 #ifdef I_FCNTL
7514 #include <fcntl.h>
7515 #endif
7516 #ifdef I_SYS_FILE
7517 #include <sys/file.h>
7518 #endif
7519 main() {
7520         if(O_RDONLY);
7521 #ifdef O_TRUNC
7522         exit(0);
7523 #else
7524         exit(1);
7525 #endif
7526 }
7527 EOCP
7528 : check sys/file.h first to get FREAD on Sun
7529 if $test `./findhdr sys/file.h` && \
7530                 set open3 -DI_SYS_FILE && eval $compile; then
7531         h_sysfile=true;
7532         echo "<sys/file.h> defines the O_* constants..." >&4
7533         if ./open3; then
7534                 echo "and you have the 3 argument form of open()." >&4
7535                 val="$define"
7536         else
7537                 echo "but not the 3 argument form of open().  Oh, well." >&4
7538                 val="$undef"
7539         fi
7540 elif $test `./findhdr fcntl.h` && \
7541                 set open3 -DI_FCNTL && eval $compile; then
7542         h_fcntl=true;
7543         echo "<fcntl.h> defines the O_* constants..." >&4
7544         if ./open3; then
7545                 echo "and you have the 3 argument form of open()." >&4
7546                 val="$define"
7547         else
7548                 echo "but not the 3 argument form of open().  Oh, well." >&4
7549                 val="$undef"
7550         fi
7551 else
7552         val="$undef"
7553         echo "I can't find the O_* constant definitions!  You got problems." >&4
7554 fi
7555 set d_open3
7556 eval $setvar
7557 $rm -f open3*
7558
7559 : check for non-blocking I/O stuff
7560 case "$h_sysfile" in
7561 true) echo "#include <sys/file.h>" > head.c;;
7562 *)
7563         case "$h_fcntl" in
7564         true) echo "#include <fcntl.h>" > head.c;;
7565         *) echo "#include <sys/fcntl.h>" > head.c;;
7566         esac
7567         ;;
7568 esac
7569 echo " "
7570 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7571 case "$o_nonblock" in
7572 '')
7573         $cat head.c > try.c
7574         $cat >>try.c <<'EOCP'
7575 main() {
7576 #ifdef O_NONBLOCK
7577         printf("O_NONBLOCK\n");
7578         exit(0);
7579 #endif
7580 #ifdef O_NDELAY
7581         printf("O_NDELAY\n");
7582         exit(0);
7583 #endif
7584 #ifdef FNDELAY
7585         printf("FNDELAY\n");
7586         exit(0);
7587 #endif
7588         exit(0);
7589 }
7590 EOCP
7591         set try
7592         if eval $compile_ok; then
7593                 o_nonblock=`./try`
7594                 case "$o_nonblock" in
7595                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7596                 *) echo "Seems like we can use $o_nonblock.";;
7597                 esac
7598         else
7599                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7600         fi
7601         ;;
7602 *) echo "Using $hint value $o_nonblock.";;
7603 esac
7604 $rm -f try try.* .out core
7605
7606 echo " "
7607 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7608 case "$eagain" in
7609 '')
7610         $cat head.c > try.c
7611         $cat >>try.c <<EOCP
7612 #include <errno.h>
7613 #include <sys/types.h>
7614 #include <signal.h>
7615 #define MY_O_NONBLOCK $o_nonblock
7616 #ifndef errno  /* XXX need better Configure test */
7617 extern int errno;
7618 #endif
7619 $signal_t blech(x) int x; { exit(3); }
7620 EOCP
7621         $cat >> try.c <<'EOCP'
7622 main()
7623 {
7624         int pd[2];
7625         int pu[2];
7626         char buf[1];
7627         char string[100];
7628
7629         pipe(pd);       /* Down: child -> parent */
7630         pipe(pu);       /* Up: parent -> child */
7631         if (0 != fork()) {
7632                 int ret;
7633                 close(pd[1]);   /* Parent reads from pd[0] */
7634                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7635                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7636                         exit(1);
7637                 signal(SIGALRM, blech);
7638                 alarm(5);
7639                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7640                         exit(2);
7641                 sprintf(string, "%d\n", ret);
7642                 write(2, string, strlen(string));
7643                 alarm(0);
7644 #ifdef EAGAIN
7645                 if (errno == EAGAIN) {
7646                         printf("EAGAIN\n");
7647                         goto ok;
7648                 }
7649 #endif
7650 #ifdef EWOULDBLOCK
7651                 if (errno == EWOULDBLOCK)
7652                         printf("EWOULDBLOCK\n");
7653 #endif
7654         ok:
7655                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7656                 sleep(2);                               /* Give it time to close our pipe */
7657                 alarm(5);
7658                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7659                 alarm(0);
7660                 sprintf(string, "%d\n", ret);
7661                 write(3, string, strlen(string));
7662                 exit(0);
7663         }
7664
7665         close(pd[0]);                   /* We write to pd[1] */
7666         close(pu[1]);                   /* We read from pu[0] */
7667         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7668         close(pd[1]);                   /* Pipe pd is now fully closed! */
7669         exit(0);                                /* Bye bye, thank you for playing! */
7670 }
7671 EOCP
7672         set try
7673         if eval $compile_ok; then
7674                 echo "$startsh" >mtry
7675                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7676                 chmod +x mtry
7677                 ./mtry >/dev/null 2>&1
7678                 case $? in
7679                 0) eagain=`$cat try.out`;;
7680                 1) echo "Could not perform non-blocking setting!";;
7681                 2) echo "I did a successful read() for something that was not there!";;
7682                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7683                 *) echo "Something terribly wrong happened during testing.";;
7684                 esac
7685                 rd_nodata=`$cat try.ret`
7686                 echo "A read() system call with no data present returns $rd_nodata."
7687                 case "$rd_nodata" in
7688                 0|-1) ;;
7689                 *)
7690                         echo "(That's peculiar, fixing that to be -1.)"
7691                         rd_nodata=-1
7692                         ;;
7693                 esac
7694                 case "$eagain" in
7695                 '')
7696                         echo "Forcing errno EAGAIN on read() with no data available."
7697                         eagain=EAGAIN
7698                         ;;
7699                 *)
7700                         echo "Your read() sets errno to $eagain when no data is available."
7701                         ;;
7702                 esac
7703                 status=`$cat try.err`
7704                 case "$status" in
7705                 0) echo "And it correctly returns 0 to signal EOF.";;
7706                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7707                 *) echo "However, your read() returns '$status' on EOF??";;
7708                 esac
7709                 val="$define"
7710                 if test "$status" = "$rd_nodata"; then
7711                         echo "WARNING: you can't distinguish between EOF and no data!"
7712                         val="$undef"
7713                 fi
7714         else
7715                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7716                 eagain=EAGAIN
7717         fi
7718         set d_eofnblk
7719         eval $setvar
7720         ;;
7721 *)
7722         echo "Using $hint value $eagain."
7723         echo "Your read() returns $rd_nodata when no data is present."
7724         case "$d_eofnblk" in
7725         "$define") echo "And you can see EOF because read() returns 0.";;
7726         "$undef") echo "But you can't see EOF status from read() returned value.";;
7727         *)
7728                 echo "(Assuming you can't see EOF status from read anyway.)"
7729                 d_eofnblk=$undef
7730                 ;;
7731         esac
7732         ;;
7733 esac
7734 $rm -f try try.* .out core head.c mtry
7735
7736 : see if fchmod exists
7737 set fchmod d_fchmod
7738 eval $inlibc
7739
7740 : see if fchown exists
7741 set fchown d_fchown
7742 eval $inlibc
7743
7744 : see if this is an fcntl system
7745 set fcntl d_fcntl
7746 eval $inlibc
7747
7748 : see if sys/select.h has to be included
7749 set sys/select.h i_sysselct
7750 eval $inhdr
7751
7752 : see if we should include time.h, sys/time.h, or both
7753 echo " "
7754 if test "X$timeincl" = X; then
7755         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7756         $echo $n "I'm now running the test program...$c"
7757         $cat >try.c <<'EOCP'
7758 #include <sys/types.h>
7759 #ifdef I_TIME
7760 #include <time.h>
7761 #endif
7762 #ifdef I_SYSTIME
7763 #ifdef SYSTIMEKERNEL
7764 #define KERNEL
7765 #endif
7766 #include <sys/time.h>
7767 #endif
7768 #ifdef I_SYSSELECT
7769 #include <sys/select.h>
7770 #endif
7771 main()
7772 {
7773         struct tm foo;
7774 #ifdef S_TIMEVAL
7775         struct timeval bar;
7776 #endif
7777 #ifdef S_TIMEZONE
7778         struct timezone tzp;
7779 #endif
7780         if (foo.tm_sec == foo.tm_sec)
7781                 exit(0);
7782 #ifdef S_TIMEVAL
7783         if (bar.tv_sec == bar.tv_sec)
7784                 exit(0);
7785 #endif
7786         exit(1);
7787 }
7788 EOCP
7789         flags=''
7790         for s_timezone in '-DS_TIMEZONE' ''; do
7791         sysselect=''
7792         for s_timeval in '-DS_TIMEVAL' ''; do
7793         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7794         for i_time in '' '-DI_TIME'; do
7795         for i_systime in '-DI_SYSTIME' ''; do
7796                 case "$flags" in
7797                 '') $echo $n ".$c"
7798                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7799                         if eval $compile; then
7800                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7801                                 shift
7802                                 flags="$*"
7803                                 echo " "
7804                                 $echo $n "Succeeded with $flags$c"
7805                         fi
7806                         ;;
7807                 esac
7808         done
7809         done
7810         done
7811         done
7812         done
7813         timeincl=''
7814         echo " "
7815         case "$flags" in
7816         *SYSTIMEKERNEL*) i_systimek="$define"
7817                 timeincl=`./findhdr sys/time.h`
7818                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7819         *) i_systimek="$undef";;
7820         esac
7821         case "$flags" in
7822         *I_TIME*) i_time="$define"
7823                 timeincl=`./findhdr time.h`" $timeincl"
7824                 echo "We'll include <time.h>." >&4;;
7825         *) i_time="$undef";;
7826         esac
7827         case "$flags" in
7828         *I_SYSTIME*) i_systime="$define"
7829                 timeincl=`./findhdr sys/time.h`" $timeincl"
7830                 echo "We'll include <sys/time.h>." >&4;;
7831         *) i_systime="$undef";;
7832         esac
7833         $rm -f try.c try
7834 fi
7835
7836 : check for fd_set items
7837 $cat <<EOM
7838
7839 Checking to see how well your C compiler handles fd_set and friends ...
7840 EOM
7841 $cat >fd_set.c <<EOCP
7842 #$i_systime I_SYS_TIME
7843 #$i_sysselct I_SYS_SELECT
7844 #$d_socket HAS_SOCKET
7845 #include <sys/types.h>
7846 #ifdef HAS_SOCKET
7847 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7848 #endif
7849 #ifdef I_SYS_TIME
7850 #include <sys/time.h>
7851 #endif
7852 #ifdef I_SYS_SELECT
7853 #include <sys/select.h>
7854 #endif
7855 main() {
7856         fd_set fds;
7857
7858 #ifdef TRYBITS
7859         if(fds.fds_bits);
7860 #endif
7861
7862 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7863         exit(0);
7864 #else
7865         exit(1);
7866 #endif
7867 }
7868 EOCP
7869 set fd_set -DTRYBITS
7870 if eval $compile; then
7871         d_fds_bits="$define"
7872         d_fd_set="$define"
7873         echo "Well, your system knows about the normal fd_set typedef..." >&4
7874         if ./fd_set; then
7875                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7876                 d_fd_macros="$define"
7877         else
7878                 $cat >&4 <<'EOM'
7879 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7880 EOM
7881                 d_fd_macros="$undef"
7882         fi
7883 else
7884         $cat <<'EOM'
7885 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7886 EOM
7887         set fd_set
7888         if eval $compile; then
7889                 d_fds_bits="$undef"
7890                 d_fd_set="$define"
7891                 echo "Well, your system has some sort of fd_set available..." >&4
7892                 if ./fd_set; then
7893                         echo "and you have the normal fd_set macros." >&4
7894                         d_fd_macros="$define"
7895                 else
7896                         $cat <<'EOM'
7897 but not the normal fd_set macros!  Gross!  More work for me...
7898 EOM
7899                         d_fd_macros="$undef"
7900                 fi
7901         else
7902         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7903                 d_fd_set="$undef"
7904                 d_fds_bits="$undef"
7905                 d_fd_macros="$undef"
7906         fi
7907 fi
7908 $rm -f fd_set*
7909
7910 : see if fgetpos exists
7911 set fgetpos d_fgetpos
7912 eval $inlibc
7913
7914
7915 if $test X"$use64bits" = X"$define"; then
7916         : see if fgetpos64 exists
7917         set fgetpos64 d_fgetpos64
7918         eval $inlibc
7919
7920         : see if fopen64 exists
7921         set freopen64 d_fopen64
7922         eval $inlibc
7923
7924         : see if freopen64 exists
7925         set freopen64 d_freopen64
7926         eval $inlibc
7927
7928         : see if fseek64 exists
7929         set fseek64 d_fseek64
7930         eval $inlibc
7931
7932         : see if fseeko64 exists
7933         set fseeko64 d_fseeko64
7934         eval $inlibc
7935
7936         : see if fsetpos64 exists
7937         set fsetpos64 d_fsetpos64
7938         eval $inlibc
7939
7940         : see if ftell64 exists
7941         set ftell64 d_ftell64
7942         eval $inlibc
7943
7944         : see if ftello64 exists
7945         set ftello64 d_ftello64
7946         eval $inlibc
7947
7948         : see if tmpfile64 exists
7949         set tmpfile64 d_tmpfile64
7950         eval $inlibc
7951 else
7952         val="$undef"
7953         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7954         do
7955                 set $xxx
7956                 eval $setvar
7957         done
7958 fi
7959
7960 : see if flock exists
7961 set flock d_flock
7962 eval $inlibc
7963
7964 : see if fork exists
7965 set fork d_fork
7966 eval $inlibc
7967
7968 : see if pathconf exists
7969 set pathconf d_pathconf
7970 eval $inlibc
7971
7972 : see if fpathconf exists
7973 set fpathconf d_fpathconf
7974 eval $inlibc
7975
7976 : see if fseeko exists
7977 set fseeko d_fseeko
7978 eval $inlibc
7979
7980 : see if fsetpos exists
7981 set fsetpos d_fsetpos
7982 eval $inlibc
7983
7984 : see if this is a sys/mount.h system
7985 set sys/mount.h i_sysmount
7986 eval $inhdr
7987
7988
7989 : see if statfs exists
7990 set statfs d_statfs
7991 eval $inlibc
7992
7993 : see if fstatfs exists
7994 set fstatfs d_fstatfs
7995 eval $inlibc
7996
7997 : see if statfs knows about mount flags
7998 set d_statfsflags statfs f_flags $i_sysmount sys/mount.h
7999 eval $hasfield
8000
8001
8002 : see if statvfs exists
8003 set statvfs d_statvfs
8004 eval $inlibc
8005
8006 : see if fstatvfs exists
8007 set fstatvfs d_fstatvfs
8008 eval $inlibc
8009
8010
8011 : see if ftello exists
8012 set ftello d_ftello
8013 eval $inlibc
8014
8015 : see if getgrent exists
8016 set getgrent d_getgrent
8017 eval $inlibc
8018
8019 : see if gethostbyaddr exists
8020 set gethostbyaddr d_gethbyaddr
8021 eval $inlibc
8022
8023 : see if gethostbyname exists
8024 set gethostbyname d_gethbyname
8025 eval $inlibc
8026
8027 : see if gethostent exists
8028 set gethostent d_gethent
8029 eval $inlibc
8030
8031 : see how we will look up host name
8032 echo " "
8033 if false; then
8034         : dummy stub to allow use of elif
8035 elif set gethostname val -f d_gethname; eval $csym; $val; then
8036         echo 'gethostname() found.' >&4
8037         d_gethname="$define"
8038         call=gethostname
8039 elif set uname val -f d_uname; eval $csym; $val; then
8040         if ./xenix; then
8041                 $cat <<'EOM'
8042 uname() was found, but you're running xenix, and older versions of xenix
8043 have a broken uname(). If you don't really know whether your xenix is old
8044 enough to have a broken system call, use the default answer.
8045
8046 EOM
8047                 dflt=y
8048                 case "$d_uname" in
8049                 "$define") dflt=n;;
8050                 esac
8051                 rp='Is your uname() broken?'
8052                 . ./myread
8053                 case "$ans" in
8054                 n*) d_uname="$define"; call=uname;;
8055                 esac
8056         else
8057                 echo 'uname() found.' >&4
8058                 d_uname="$define"
8059                 call=uname
8060         fi
8061 fi
8062 case "$d_gethname" in
8063 '') d_gethname="$undef";;
8064 esac
8065 case "$d_uname" in
8066 '') d_uname="$undef";;
8067 esac
8068 case "$d_uname$d_gethname" in
8069 *define*)
8070         dflt=n
8071         cat <<EOM
8072  
8073 Every now and then someone has a $call() that lies about the hostname
8074 but can't be fixed for political or economic reasons.  If you wish, I can
8075 pretend $call() isn't there and maybe compute hostname at run-time
8076 thanks to the '$phostname' command.
8077
8078 EOM
8079         rp="Shall I ignore $call() from now on?"
8080         . ./myread
8081         case "$ans" in
8082         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8083         esac;;
8084 esac
8085 case "$phostname" in
8086 '') aphostname='';;
8087 *) case "$aphostname" in
8088         /*) ;;
8089         *) set X $phostname
8090                 shift
8091                 file=$1
8092                 shift
8093                 file=`./loc $file $file $pth`
8094                 aphostname=`echo $file $*`
8095                 ;;
8096         esac
8097         ;;
8098 esac
8099 case "$d_uname$d_gethname" in
8100 *define*) ;;
8101 *)
8102         case "$phostname" in
8103         '')
8104                 echo "There will be no way for $package to get your hostname." >&4;;
8105         *)
8106         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8107                 ;;
8108         esac;;
8109 esac
8110 case "$d_phostname" in
8111 '') d_phostname="$undef";;
8112 esac
8113
8114 : see if this is a netdb.h system
8115 set netdb.h i_netdb
8116 eval $inhdr
8117
8118 : see if prototypes for various gethostxxx netdb.h functions are available
8119 echo " "
8120 set d_gethostprotos gethostent $i_netdb netdb.h
8121 eval $hasproto
8122
8123 : see if getlogin exists
8124 set getlogin d_getlogin
8125 eval $inlibc
8126
8127 : see if getnetbyaddr exists
8128 set getnetbyaddr d_getnbyaddr
8129 eval $inlibc
8130
8131 : see if getnetbyname exists
8132 set getnetbyname d_getnbyname
8133 eval $inlibc
8134
8135 : see if getnetent exists
8136 set getnetent d_getnent
8137 eval $inlibc
8138
8139 : see if prototypes for various getnetxxx netdb.h functions are available
8140 echo " "
8141 set d_getnetprotos getnetent $i_netdb netdb.h
8142 eval $hasproto
8143
8144
8145 : see if getprotobyname exists
8146 set getprotobyname d_getpbyname
8147 eval $inlibc
8148
8149 : see if getprotobynumber exists
8150 set getprotobynumber d_getpbynumber
8151 eval $inlibc
8152
8153 : see if getprotoent exists
8154 set getprotoent d_getpent
8155 eval $inlibc
8156
8157 : see if getpgid exists
8158 set getpgid d_getpgid
8159 eval $inlibc
8160
8161 : see if getpgrp2 exists
8162 set getpgrp2 d_getpgrp2
8163 eval $inlibc
8164
8165 : see if getppid exists
8166 set getppid d_getppid
8167 eval $inlibc
8168
8169 : see if getpriority exists
8170 set getpriority d_getprior
8171 eval $inlibc
8172
8173 : see if prototypes for various getprotoxxx netdb.h functions are available
8174 echo " "
8175 set d_getprotoprotos getprotoent $i_netdb netdb.h
8176 eval $hasproto
8177
8178 : see if getpwent exists
8179 set getpwent d_getpwent
8180 eval $inlibc
8181
8182
8183 : see if getservbyname exists
8184 set getservbyname d_getsbyname
8185 eval $inlibc
8186
8187 : see if getservbyport exists
8188 set getservbyport d_getsbyport
8189 eval $inlibc
8190
8191 : see if getservent exists
8192 set getservent d_getsent
8193 eval $inlibc
8194
8195 : see if prototypes for various getservxxx netdb.h functions are available
8196 echo " "
8197 set d_getservprotos getservent $i_netdb netdb.h
8198 eval $hasproto
8199
8200 : see if gettimeofday or ftime exists
8201 set gettimeofday d_gettimeod
8202 eval $inlibc
8203 case "$d_gettimeod" in
8204 "$undef")
8205         set ftime d_ftime 
8206         eval $inlibc
8207         ;;
8208 *)
8209         val="$undef"; set d_ftime; eval $setvar
8210         ;;
8211 esac
8212 case "$d_gettimeod$d_ftime" in
8213 "$undef$undef")
8214         echo " "
8215         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8216         ;;
8217 esac
8218
8219 : see if this is an grp system
8220 set grp.h i_grp
8221 eval $inhdr
8222
8223 case "$i_grp" in
8224 $define)
8225         xxx=`./findhdr grp.h`
8226         $cppstdin $cppflags $cppminus < $xxx >$$.h
8227
8228         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8229                 val="$define"
8230         else
8231                 val="$undef"
8232         fi
8233         set d_grpasswd
8234         eval $setvar
8235
8236         $rm -f $$.h
8237         ;;
8238 *)
8239         val="$undef";
8240         set d_grpasswd; eval $setvar
8241         ;;
8242 esac
8243
8244 : see if this is a netinet/in.h or sys/in.h system
8245 set netinet/in.h i_niin sys/in.h i_sysin
8246 eval $inhdr
8247
8248 : see if arpa/inet.h has to be included
8249 set arpa/inet.h i_arpainet
8250 eval $inhdr
8251
8252 : see if htonl --and friends-- exists
8253 val=''
8254 set htonl val
8255 eval $inlibc
8256
8257 : Maybe they are macros.
8258 case "$val" in
8259 $undef)
8260         $cat >htonl.c <<EOM
8261 #include <stdio.h>
8262 #include <sys/types.h>
8263 #$i_niin I_NETINET_IN
8264 #$i_sysin I_SYS_IN
8265 #$i_arpainet I_ARPA_INET
8266 #ifdef I_NETINET_IN
8267 #include <netinet/in.h>
8268 #endif
8269 #ifdef I_SYS_IN
8270 #include <sys/in.h>
8271 #endif
8272 #ifdef I_ARPA_INET
8273 #include <arpa/inet.h>
8274 #endif
8275 #ifdef htonl
8276 printf("Defined as a macro.");
8277 #endif
8278 EOM
8279         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8280         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8281                 val="$define"
8282                 echo "But it seems to be defined as a macro." >&4
8283         fi
8284         $rm -f htonl.?
8285         ;;
8286 esac
8287 set d_htonl
8288 eval $setvar
8289
8290 : see which of string.h or strings.h is needed
8291 echo " "
8292 strings=`./findhdr string.h`
8293 if $test "$strings" && $test -r "$strings"; then
8294         echo "Using <string.h> instead of <strings.h>." >&4
8295         val="$define"
8296 else
8297         val="$undef"
8298         strings=`./findhdr strings.h`
8299         if $test "$strings" && $test -r "$strings"; then
8300                 echo "Using <strings.h> instead of <string.h>." >&4
8301         else
8302                 echo "No string header found -- You'll surely have problems." >&4
8303         fi
8304 fi
8305 set i_string
8306 eval $setvar
8307 case "$i_string" in
8308 "$undef") strings=`./findhdr strings.h`;;
8309 *)        strings=`./findhdr string.h`;;
8310 esac
8311
8312 : index or strchr
8313 echo " "
8314 if set index val -f; eval $csym; $val; then
8315         if set strchr val -f d_strchr; eval $csym; $val; then
8316                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8317                         val="$define"
8318                         vali="$undef"
8319                         echo "strchr() found." >&4
8320                 else
8321                         val="$undef"
8322                         vali="$define"
8323                         echo "index() found." >&4
8324                 fi
8325         else
8326                 val="$undef"
8327                 vali="$define"
8328                 echo "index() found." >&4
8329         fi
8330 else
8331         if set strchr val -f d_strchr; eval $csym; $val; then
8332                 val="$define"
8333                 vali="$undef"
8334                 echo "strchr() found." >&4
8335         else
8336                 echo "No index() or strchr() found!" >&4
8337                 val="$undef"
8338                 vali="$undef"
8339         fi
8340 fi
8341 set d_strchr; eval $setvar
8342 val="$vali"
8343 set d_index; eval $setvar
8344
8345 : check whether inet_aton exists
8346 set inet_aton d_inetaton
8347 eval $inlibc
8348
8349 : see if inttypes.h is available
8350 : we want a real compile instead of Inhdr because some systems
8351 : have an inttypes.h which includes non-existent headers
8352 echo " "
8353 $cat >try.c <<EOCP
8354 #include <inttypes.h>
8355 int main() {
8356         static int32_t foo32 = 0x12345678;
8357 }
8358 EOCP
8359 set try
8360 if eval $compile; then
8361         echo "<inttypes.h> found." >&4
8362         val="$define"
8363 else
8364         echo "<inttypes.h> NOT found." >&4
8365         val="$undef"
8366 fi
8367 $rm -f try.c try
8368 set i_inttypes
8369 eval $setvar
8370
8371 : check for int64_t
8372 case "$use64bits" in
8373 "$define" )
8374         echo " "
8375         echo $n "Checking to see if your system supports int64_t...$c" >&4
8376         $cat >try.c <<EOCP
8377 #include <sys/types.h>
8378 #$i_inttypes I_INTTYPES
8379 #ifdef I_INTTYPES
8380 #include <inttypes.h>
8381 #endif
8382 int64_t foo() { int64_t x; x = 7; return x; }
8383 EOCP
8384         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8385                 val="$define"
8386                 echo " Yup, it does." >&4
8387         else
8388                 val="$undef"
8389                 echo " Nope, it doesn't." >&4
8390         fi
8391         $rm -f try.*
8392         ;;
8393 *)      val="$undef"
8394         ;;
8395 esac
8396 set d_int64t
8397 eval $setvar
8398
8399
8400 : Look for isascii
8401 echo " "
8402 $cat >isascii.c <<'EOCP'
8403 #include <stdio.h>
8404 #include <ctype.h>
8405 main() {
8406         int c = 'A';
8407         if (isascii(c))
8408                 exit(0);
8409         else
8410                 exit(1);
8411 }
8412 EOCP
8413 set isascii
8414 if eval $compile; then
8415         echo "isascii() found." >&4
8416         val="$define"
8417 else
8418         echo "isascii() NOT found." >&4
8419         val="$undef"
8420 fi
8421 set d_isascii
8422 eval $setvar
8423 $rm -f isascii*
8424
8425 : see if killpg exists
8426 set killpg d_killpg
8427 eval $inlibc
8428
8429 : see if lchown exists
8430 echo " "
8431 $cat > try.c <<'EOCP'
8432 /* System header to define __stub macros and hopefully few prototypes,
8433     which can conflict with char lchown(); below.  */
8434 #include <assert.h>
8435 /* Override any gcc2 internal prototype to avoid an error.  */
8436 /* We use char because int might match the return type of a gcc2
8437    builtin and then its argument prototype would still apply.  */
8438 char lchown();
8439 int main() {
8440     /*  The GNU C library defines this for functions which it implements
8441         to always fail with ENOSYS.  Some functions are actually named
8442         something starting with __ and the normal name is an alias.  */
8443 #if defined (__stub_lchown) || defined (__stub___lchown)
8444 choke me
8445 #else
8446 lchown();
8447 #endif
8448 ; return 0; }
8449 EOCP
8450 set try
8451 if eval $compile; then
8452     $echo "lchown() found." >&4
8453     val="$define"
8454 else
8455     $echo "lchown() NOT found." >&4
8456     val="$undef"
8457 fi
8458 set d_lchown
8459 eval $setvar
8460
8461 : see if link exists
8462 set link d_link
8463 eval $inlibc
8464
8465 : see if localeconv exists
8466 set localeconv d_locconv
8467 eval $inlibc
8468
8469 : see if lockf exists
8470 set lockf d_lockf
8471 eval $inlibc
8472
8473 : check for length of double
8474 echo " "
8475 case "$doublesize" in
8476 '')
8477         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8478         $cat >try.c <<'EOCP'
8479 #include <stdio.h>
8480 main()
8481 {
8482         printf("%d\n", sizeof(double));
8483 }
8484 EOCP
8485         set try
8486         if eval $compile_ok; then
8487                 doublesize=`./try`
8488                 $echo " $doublesize bytes." >&4
8489         else
8490                 dflt='8'
8491                 echo "(I can't seem to compile the test program.  Guessing...)"
8492                 rp="What is the size of a double precision number (in bytes)?"
8493                 . ./myread
8494                 doublesize="$ans"
8495         fi
8496         ;;
8497 esac
8498 $rm -f try.c try
8499
8500 : check for long doubles
8501 echo " "
8502 echo $n "Checking to see if your system supports long doubles...$c" >&4
8503 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8504 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8505         val="$define"
8506         echo " Yup, it does." >&4
8507 else
8508         val="$undef"
8509         echo " Nope, it doesn't." >&4
8510 fi
8511 $rm try.*
8512 set d_longdbl
8513 eval $setvar
8514
8515 : check for length of long double
8516 case "${d_longdbl}${longdblsize}" in
8517 $define)
8518         echo " "
8519         $echo $n "Checking to see how big your long doubles are...$c" >&4
8520         $cat >try.c <<'EOCP'
8521 #include <stdio.h>
8522 int main()
8523 {
8524         printf("%d\n", sizeof(long double));
8525 }
8526 EOCP
8527         set try
8528         if eval $compile; then
8529                 longdblsize=`./try`
8530                 $echo " $longdblsize bytes." >&4
8531         else
8532                 dflt='8'
8533                 echo " "
8534                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8535                 rp="What is the size of a long double (in bytes)?"
8536                 . ./myread
8537                 longdblsize="$ans"
8538         fi
8539         if $test "X$doublesize" = "X$longdblsize"; then
8540                 echo "(That isn't any different from an ordinary double.)"
8541         fi      
8542         ;;
8543 esac
8544 $rm -f try.c try
8545
8546 : check for long long
8547 echo " "
8548 echo $n "Checking to see if your system supports long long...$c" >&4
8549 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8550 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8551         val="$define"
8552         echo " Yup, it does." >&4
8553 else
8554         val="$undef"
8555         echo " Nope, it doesn't." >&4
8556 fi
8557 $rm try.*
8558 set d_longlong
8559 eval $setvar
8560
8561 : check for length of long long
8562 case "${d_longlong}${longlongsize}" in
8563 $define)
8564         echo " "
8565         $echo $n "Checking to see how big your long longs are...$c" >&4
8566         $cat >try.c <<'EOCP'
8567 #include <stdio.h>
8568 int main()
8569 {
8570         printf("%d\n", sizeof(long long));
8571 }
8572 EOCP
8573         set try
8574         if eval $compile_ok; then
8575                 longlongsize=`./try`
8576                 $echo " $longlongsize bytes." >&4
8577         else
8578                 dflt='8'
8579                 echo " "
8580                 echo "(I can't seem to compile the test program.  Guessing...)"
8581                 rp="What is the size of a long long (in bytes)?"
8582                 . ./myread
8583                 longlongsize="$ans"
8584         fi
8585         if $test "X$longsize" = "X$longlongsize"; then
8586                 echo "(That isn't any different from an ordinary long.)"
8587         fi      
8588         ;;
8589 esac
8590 $rm -f try.c try
8591
8592 : see if lstat exists
8593 set lstat d_lstat
8594 eval $inlibc
8595
8596 : see if mblen exists
8597 set mblen d_mblen
8598 eval $inlibc
8599
8600 : see if mbstowcs exists
8601 set mbstowcs d_mbstowcs
8602 eval $inlibc
8603
8604 : see if mbtowc exists
8605 set mbtowc d_mbtowc
8606 eval $inlibc
8607
8608 : see if memcmp exists
8609 set memcmp d_memcmp
8610 eval $inlibc
8611
8612 : see if memcpy exists
8613 set memcpy d_memcpy
8614 eval $inlibc
8615
8616 : see if memmove exists
8617 set memmove d_memmove
8618 eval $inlibc
8619
8620 : see if memset exists
8621 set memset d_memset
8622 eval $inlibc
8623
8624 : see if mkdir exists
8625 set mkdir d_mkdir
8626 eval $inlibc
8627
8628 : see if mkfifo exists
8629 set mkfifo d_mkfifo
8630 eval $inlibc
8631
8632 : see if mktime exists
8633 set mktime d_mktime
8634 eval $inlibc
8635
8636 : see if msgctl exists
8637 set msgctl d_msgctl
8638 eval $inlibc
8639
8640 : see if msgget exists
8641 set msgget d_msgget
8642 eval $inlibc
8643
8644 : see if msgsnd exists
8645 set msgsnd d_msgsnd
8646 eval $inlibc
8647
8648 : see if msgrcv exists
8649 set msgrcv d_msgrcv
8650 eval $inlibc
8651
8652 : see how much of the 'msg*(2)' library is present.
8653 h_msg=true
8654 echo " "
8655 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8656 *"$undef"*) h_msg=false;;
8657 esac
8658 case "$osname" in
8659 freebsd)
8660     case "`ipcs 2>&1`" in
8661     "SVID messages"*"not configured"*)
8662         echo "Your $osname does not have the msg*(2) configured." >&4
8663         h_msg=false
8664         val="$undef"
8665         set msgctl d_msgctl
8666         eval $setvar
8667         set msgget d_msgget
8668         eval $setvar
8669         set msgsnd d_msgsnd
8670         eval $setvar
8671         set msgrcv d_msgrcv
8672         eval $setvar
8673         ;;
8674     esac
8675     ;;
8676 esac
8677 : we could also check for sys/ipc.h ...
8678 if $h_msg && $test `./findhdr sys/msg.h`; then
8679         echo "You have the full msg*(2) library." >&4
8680         val="$define"
8681 else
8682         echo "You don't have the full msg*(2) library." >&4
8683         val="$undef"
8684 fi
8685 set d_msg
8686 eval $setvar
8687
8688 : see if nice exists
8689 set nice d_nice
8690 eval $inlibc
8691
8692 : how to create joinable pthreads
8693 if test "X$usethreads" = "X$define"; then
8694         echo " "
8695         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8696         $cat >try.c <<'EOCP'
8697 #include <pthread.h>
8698 int main() {
8699     int detachstate = JOINABLE;
8700 }
8701 EOCP
8702         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8703         if eval $compile; then
8704                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8705                 val="$undef" # Yes, undef.
8706                 set d_old_pthread_create_joinable
8707                 eval $setvar
8708                 val=""
8709                 set old_pthread_create_joinable
8710                 eval $setvar
8711         else
8712                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8713                 if eval $compile; then
8714                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8715                         val="$define"
8716                         set d_old_pthread_create_joinable
8717                         eval $setvar
8718                         val=PTHREAD_CREATE_UNDETACHED
8719                         set old_pthread_create_joinable
8720                         eval $setvar
8721                 else            
8722                         set try -DJOINABLE=__UNDETACHED
8723                         if eval $compile; then
8724                                 echo "You seem to use __UNDETACHED." >&2
8725                                 val="$define"
8726                                 set d_old_pthread_create_joinable
8727                                 eval $setvar
8728                                 val=__UNDETACHED
8729                                 set old_pthread_create_joinable
8730                                 eval $setvar
8731                         else
8732                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8733                                 val="$define"
8734                                 set d_old_pthread_create_joinable
8735                                 eval $setvar
8736                                 val=0
8737                                 set old_pthread_create_joinable
8738                                 eval $setvar
8739                         fi
8740                 fi
8741         fi
8742         $rm -f try try.*
8743 else
8744     d_old_pthread_create_joinable="$undef"
8745     old_pthread_create_joinable=""
8746 fi
8747
8748 : see if pause exists
8749 set pause d_pause
8750 eval $inlibc
8751
8752 : see if pipe exists
8753 set pipe d_pipe
8754 eval $inlibc
8755
8756 : see if poll exists
8757 set poll d_poll
8758 eval $inlibc
8759
8760
8761 : see whether the various POSIXish _yields exist
8762 $cat >try.c <<EOP
8763 #include <pthread.h>
8764 #include <stdio.h>
8765 int main() {
8766 #ifdef SCHED_YIELD
8767         sched_yield();
8768 #else
8769 #ifdef PTHREAD_YIELD
8770         pthread_yield();
8771 #else
8772 #ifdef PTHREAD_YIELD_NULL
8773         pthread_yield(NULL);
8774 #endif
8775 #endif
8776 #endif
8777 }
8778 EOP
8779 : see if sched_yield exists
8780 set try -DSCHED_YIELD
8781 if eval $compile; then
8782     val="$define"
8783     sched_yield='sched_yield()'
8784 else
8785     val="$undef"
8786 fi
8787 case "$usethreads" in
8788 $define)
8789         case "$val" in
8790         $define) echo 'sched_yield() found.' >&4        ;;
8791         *)       echo 'sched_yield() NOT found.' >&4    ;;
8792         esac
8793 esac
8794 set d_sched_yield
8795 eval $setvar
8796
8797 : see if pthread_yield exists
8798 set try -DPTHREAD_YIELD
8799 if eval $compile; then
8800     val="$define"
8801     case "$sched_yield" in
8802     '') sched_yield='pthread_yield()' ;;
8803     esac
8804 else
8805     set try -DPTHREAD_YIELD_NULL
8806     if eval $compile; then
8807         val="$define"
8808         case "$sched_yield" in
8809         '') sched_yield='pthread_yield(NULL)' ;;
8810         esac
8811     else
8812         val="$undef"
8813     fi
8814 fi
8815 case "$usethreads" in
8816 $define)
8817         case "$val" in
8818         $define) echo 'pthread_yield() found.' >&4      ;;
8819         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8820         esac
8821         ;;
8822 esac
8823 set d_pthread_yield
8824 eval $setvar
8825
8826 case "$sched_yield" in
8827 '') sched_yield=undef ;;
8828 esac
8829
8830 $rm -f try try.*
8831
8832 : see if this is a pwd.h system
8833 set pwd.h i_pwd
8834 eval $inhdr
8835
8836 case "$i_pwd" in
8837 $define)
8838         xxx=`./findhdr pwd.h`
8839         $cppstdin $cppflags $cppminus < $xxx >$$.h
8840
8841         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8842                 val="$define"
8843         else
8844                 val="$undef"
8845         fi
8846         set d_pwquota
8847         eval $setvar
8848
8849         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8850                 val="$define"
8851         else
8852                 val="$undef"
8853         fi
8854         set d_pwage
8855         eval $setvar
8856
8857         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8858                 val="$define"
8859         else
8860                 val="$undef"
8861         fi
8862         set d_pwchange
8863         eval $setvar
8864
8865         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8866                 val="$define"
8867         else
8868                 val="$undef"
8869         fi
8870         set d_pwclass
8871         eval $setvar
8872
8873         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8874                 val="$define"
8875         else
8876                 val="$undef"
8877         fi
8878         set d_pwexpire
8879         eval $setvar
8880
8881         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8882                 val="$define"
8883         else
8884                 val="$undef"
8885         fi
8886         set d_pwcomment
8887         eval $setvar
8888
8889         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8890                 val="$define"
8891         else
8892                 val="$undef"
8893         fi
8894         set d_pwgecos
8895         eval $setvar
8896
8897         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8898                 val="$define"
8899         else
8900                 val="$undef"
8901         fi
8902         set d_pwpasswd
8903         eval $setvar
8904
8905         $rm -f $$.h
8906         ;;
8907 *)
8908         val="$undef"; 
8909         set d_pwquota; eval $setvar
8910         set d_pwage; eval $setvar
8911         set d_pwchange; eval $setvar
8912         set d_pwclass; eval $setvar
8913         set d_pwexpire; eval $setvar
8914         set d_pwcomment; eval $setvar
8915         set d_pwgecos; eval $setvar
8916         set d_pwpasswd; eval $setvar
8917         ;;
8918 esac
8919
8920 : see if readdir and friends exist
8921 set readdir d_readdir
8922 eval $inlibc
8923 set seekdir d_seekdir
8924 eval $inlibc
8925 set telldir d_telldir
8926 eval $inlibc
8927 set rewinddir d_rewinddir
8928 eval $inlibc
8929
8930 : see if readlink exists
8931 set readlink d_readlink
8932 eval $inlibc
8933
8934 : see if readv exists
8935 set readv d_readv
8936 eval $inlibc
8937
8938 : see if rename exists
8939 set rename d_rename
8940 eval $inlibc
8941
8942 : see if rmdir exists
8943 set rmdir d_rmdir
8944 eval $inlibc
8945
8946 : see if memory.h is available.
8947 val=''
8948 set memory.h val
8949 eval $inhdr
8950
8951 : See if it conflicts with string.h
8952 case "$val" in
8953 $define)
8954         case "$strings" in
8955         '') ;;
8956         *)
8957                 $cppstdin $cppflags $cppminus < $strings > mem.h
8958                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8959                         echo " "
8960                         echo "We won't be including <memory.h>."
8961                         val="$undef"
8962                 fi
8963                 $rm -f mem.h
8964                 ;;
8965         esac
8966 esac
8967 set i_memory
8968 eval $setvar
8969
8970 : can bcopy handle overlapping blocks?
8971 val="$undef"
8972 case "$d_bcopy" in
8973 "$define")
8974         echo " "
8975         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8976         $cat >try.c <<EOCP
8977 #$i_memory I_MEMORY
8978 #$i_stdlib I_STDLIB
8979 #$i_string I_STRING
8980 #$i_unistd I_UNISTD
8981 EOCP
8982         $cat >>try.c <<'EOCP'
8983 #include <stdio.h>
8984 #ifdef I_MEMORY
8985 #  include <memory.h>
8986 #endif
8987 #ifdef I_STDLIB
8988 #  include <stdlib.h>
8989 #endif
8990 #ifdef I_STRING
8991 #  include <string.h>
8992 #else
8993 #  include <strings.h>
8994 #endif
8995 #ifdef I_UNISTD
8996 #  include <unistd.h>  /* Needed for NetBSD */
8997 #endif
8998 main()
8999 {
9000 char buf[128], abc[128];
9001 char *b;
9002 int len;
9003 int off;
9004 int align;
9005
9006 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9007
9008 for (align = 7; align >= 0; align--) {
9009         for (len = 36; len; len--) {
9010                 b = buf+align;
9011                 bcopy(abc, b, len);
9012                 for (off = 1; off <= len; off++) {
9013                         bcopy(b, b+off, len);
9014                         bcopy(b+off, b, len);
9015                         if (bcmp(b, abc, len))
9016                                 exit(1);
9017                 }
9018         }
9019 }
9020 exit(0);
9021 }
9022 EOCP
9023         set try
9024         if eval $compile_ok; then
9025                 if ./try 2>/dev/null; then
9026                         echo "Yes, it can."
9027                         val="$define"
9028                 else
9029                         echo "It can't, sorry."
9030                         case "$d_memmove" in
9031                         "$define") echo "But that's Ok since you have memmove()." ;;
9032                         esac
9033                 fi
9034         else
9035                 echo "(I can't compile the test program, so we'll assume not...)"
9036                 case "$d_memmove" in
9037                 "$define") echo "But that's Ok since you have memmove()." ;;
9038                 esac
9039         fi
9040         ;;
9041 esac
9042 $rm -f try.* try core
9043 set d_safebcpy
9044 eval $setvar
9045
9046 : can memcpy handle overlapping blocks?
9047 val="$undef"
9048 case "$d_memcpy" in
9049 "$define")
9050         echo " "
9051         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9052         $cat >try.c <<EOCP
9053 #$i_memory I_MEMORY
9054 #$i_stdlib I_STDLIB
9055 #$i_string I_STRING
9056 #$i_unistd I_UNISTD
9057 EOCP
9058         $cat >>try.c <<'EOCP'
9059 #include <stdio.h>
9060 #ifdef I_MEMORY
9061 #  include <memory.h>
9062 #endif
9063 #ifdef I_STDLIB
9064 #  include <stdlib.h>
9065 #endif
9066 #ifdef I_STRING
9067 #  include <string.h>
9068 #else
9069 #  include <strings.h>
9070 #endif
9071 #ifdef I_UNISTD
9072 #  include <unistd.h>  /* Needed for NetBSD */
9073 #endif
9074 main()
9075 {
9076 char buf[128], abc[128];
9077 char *b;
9078 int len;
9079 int off;
9080 int align;
9081
9082 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9083    try to store the string in read-only memory. */
9084 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9085
9086 for (align = 7; align >= 0; align--) {
9087         for (len = 36; len; len--) {
9088                 b = buf+align;
9089                 memcpy(b, abc, len);
9090                 for (off = 1; off <= len; off++) {
9091                         memcpy(b+off, b, len);
9092                         memcpy(b, b+off, len);
9093                         if (memcmp(b, abc, len))
9094                                 exit(1);
9095                 }
9096         }
9097 }
9098 exit(0);
9099 }
9100 EOCP
9101         set try
9102         if eval $compile_ok; then
9103                 if ./try 2>/dev/null; then
9104                         echo "Yes, it can."
9105                         val="$define"
9106                 else
9107                         echo "It can't, sorry."
9108                         case "$d_memmove" in
9109                         "$define") echo "But that's Ok since you have memmove()." ;;
9110                         esac
9111                 fi
9112         else
9113                 echo "(I can't compile the test program, so we'll assume not...)"
9114                 case "$d_memmove" in
9115                 "$define") echo "But that's Ok since you have memmove()." ;;
9116                 esac
9117         fi
9118         ;;
9119 esac
9120 $rm -f try.* try core
9121 set d_safemcpy
9122 eval $setvar
9123
9124 : can memcmp be trusted to compare relative magnitude?
9125 val="$undef"
9126 case "$d_memcmp" in
9127 "$define")
9128         echo " "
9129         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9130         $cat >try.c <<EOCP
9131 #$i_memory I_MEMORY
9132 #$i_stdlib I_STDLIB
9133 #$i_string I_STRING
9134 #$i_unistd I_UNISTD
9135 EOCP
9136         $cat >>try.c <<'EOCP'
9137 #include <stdio.h>
9138 #ifdef I_MEMORY
9139 #  include <memory.h>
9140 #endif
9141 #ifdef I_STDLIB
9142 #  include <stdlib.h>
9143 #endif
9144 #ifdef I_STRING
9145 #  include <string.h>
9146 #else
9147 #  include <strings.h>
9148 #endif
9149 #ifdef I_UNISTD
9150 #  include <unistd.h>  /* Needed for NetBSD */
9151 #endif
9152 main()
9153 {
9154 char a = -1;
9155 char b = 0;
9156 if ((a < b) && memcmp(&a, &b, 1) < 0)
9157         exit(1);
9158 exit(0);
9159 }
9160 EOCP
9161         set try
9162         if eval $compile_ok; then
9163                 if ./try 2>/dev/null; then
9164                         echo "Yes, it can."
9165                         val="$define"
9166                 else
9167                         echo "No, it can't (it uses signed chars)."
9168                 fi
9169         else
9170                 echo "(I can't compile the test program, so we'll assume not...)"
9171         fi
9172         ;;
9173 esac
9174 $rm -f try.* try core
9175 set d_sanemcmp
9176 eval $setvar
9177
9178 : see if select exists
9179 set select d_select
9180 eval $inlibc
9181
9182 : see if semctl exists
9183 set semctl d_semctl
9184 eval $inlibc
9185
9186 : see if semget exists
9187 set semget d_semget
9188 eval $inlibc
9189
9190 : see if semop exists
9191 set semop d_semop
9192 eval $inlibc
9193
9194 : see how much of the 'sem*(2)' library is present.
9195 h_sem=true
9196 echo " "
9197 case "$d_semctl$d_semget$d_semop" in
9198 *"$undef"*) h_sem=false;;
9199 esac
9200 case "$osname" in
9201 freebsd)
9202     case "`ipcs 2>&1`" in
9203     "SVID messages"*"not configured"*)
9204         echo "Your $osname does not have the sem*(2) configured." >&4
9205         h_sem=false
9206         val="$undef"
9207         set semctl d_semctl
9208         eval $setvar
9209         set semget d_semget
9210         eval $setvar
9211         set semop d_semop
9212         eval $setvar
9213         ;;
9214     esac
9215     ;;
9216 esac
9217 : we could also check for sys/ipc.h ...
9218 if $h_sem && $test `./findhdr sys/sem.h`; then
9219         echo "You have the full sem*(2) library." >&4
9220         val="$define"
9221 else
9222         echo "You don't have the full sem*(2) library." >&4
9223         val="$undef"
9224 fi
9225 set d_sem
9226 eval $setvar
9227
9228 : see whether sys/sem.h defines union semun
9229 echo " "
9230 $cat > try.c <<'END'
9231 #include <sys/types.h>
9232 #include <sys/ipc.h>
9233 #include <sys/sem.h>
9234 int main () { union semun semun; semun.buf = 0; }
9235 END
9236 set try
9237 if eval $compile; then
9238     echo "You have union semun in <sys/sem.h>." >&4
9239     val="$define"
9240 else
9241     echo "You do not have union semun in <sys/sem.h>." >&4
9242     val="$undef"
9243 fi
9244 $rm -f try try.c try.h
9245 set d_union_semun
9246 eval $setvar
9247
9248 : see how to do semctl IPC_STAT
9249 case "$d_sem" in
9250 $define)
9251     : see whether semctl IPC_STAT can use union semun
9252     echo " "
9253     $cat > try.h <<END
9254 #ifndef S_IRUSR
9255 #   ifdef S_IREAD
9256 #       define S_IRUSR S_IREAD
9257 #       define S_IWUSR S_IWRITE
9258 #       define S_IXUSR S_IEXEC
9259 #   else
9260 #       define S_IRUSR 0400
9261 #       define S_IWUSR 0200
9262 #       define S_IXUSR 0100
9263 #   endif
9264 #   define S_IRGRP (S_IRUSR>>3)
9265 #   define S_IWGRP (S_IWUSR>>3)
9266 #   define S_IXGRP (S_IXUSR>>3)
9267 #   define S_IROTH (S_IRUSR>>6)
9268 #   define S_IWOTH (S_IWUSR>>6)
9269 #   define S_IXOTH (S_IXUSR>>6)
9270 #endif
9271 #ifndef S_IRWXU
9272 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9273 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9274 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9275 #endif
9276 END
9277
9278     $cat > try.c <<END
9279 #include <sys/types.h>
9280 #include <sys/ipc.h>
9281 #include <sys/sem.h>
9282 #include <sys/stat.h>
9283 #include <stdio.h>
9284 #include <errno.h>
9285 #include "try.h"
9286 #ifndef errno
9287 extern int errno;
9288 #endif
9289 #$d_union_semun HAS_UNION_SEMUN
9290 int main() {
9291     union semun
9292 #ifndef HAS_UNION_SEMUN
9293     {
9294         int val;
9295         struct semid_ds *buf;
9296         unsigned short *array;
9297     }
9298 #endif
9299     arg;
9300     int sem, st;
9301
9302 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9303     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9304     if (sem > -1) {
9305         struct semid_ds argbuf;
9306         arg.buf = &argbuf;
9307 #       ifdef IPC_STAT
9308         st = semctl(sem, 0, IPC_STAT, arg);
9309         if (st == 0)
9310             printf("semun\n");
9311         else
9312 #       endif /* IPC_STAT */
9313             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9314 #       ifdef IPC_RMID
9315         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9316 #       endif /* IPC_RMID */
9317             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9318     } else
9319 #endif /* IPC_PRIVATE && ... */
9320         printf("semget failed: errno = %d\n", errno);
9321   return 0;
9322 }
9323 END
9324     val="$undef"
9325     set try
9326     if eval $compile; then
9327         xxx=`./try`
9328         case "$xxx" in
9329         semun) val="$define" ;;
9330         esac
9331     fi
9332     $rm -f try try.c
9333     set d_semctl_semun
9334     eval $setvar
9335     case "$d_semctl_semun" in
9336     $define)
9337         echo "You can use union semun for semctl IPC_STAT." >&4
9338         also='also'
9339         ;;
9340     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9341         also=''
9342         ;;
9343     esac
9344
9345     : see whether semctl IPC_STAT can use struct semid_ds pointer
9346     $cat > try.c <<'END'
9347 #include <sys/types.h>
9348 #include <sys/ipc.h>
9349 #include <sys/sem.h>
9350 #include <sys/stat.h>
9351 #include "try.h"
9352 #include <stdio.h>
9353 #include <errno.h>
9354 #ifndef errno
9355 extern int errno;
9356 #endif
9357 int main() {
9358     struct semid_ds arg;
9359     int sem, st;
9360
9361 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9362     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9363     if (sem > -1) {
9364 #       ifdef IPC_STAT
9365         st = semctl(sem, 0, IPC_STAT, &arg);
9366         if (st == 0)
9367             printf("semid_ds\n");
9368         else
9369 #       endif /* IPC_STAT */
9370             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9371 #       ifdef IPC_RMID
9372         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9373 #       endif /* IPC_RMID */
9374             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9375     } else
9376 #endif /* IPC_PRIVATE && ... */
9377         printf("semget failed: errno = %d\n", errno);
9378
9379     return 0;
9380 }
9381 END
9382     val="$undef"
9383     set try
9384     if eval $compile; then
9385         xxx=`./try`
9386         case "$xxx" in
9387         semid_ds) val="$define" ;;
9388         esac
9389     fi
9390     $rm -f try try.c
9391     set d_semctl_semid_ds
9392     eval $setvar
9393     case "$d_semctl_semid_ds" in
9394     $define)
9395         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9396         ;;
9397     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9398         ;;
9399     esac
9400     $rm -f try.h
9401     ;;
9402 *)  val="$undef"
9403
9404     # We do not have the full sem*(2) library, so assume we can not
9405     # use either.
9406
9407     set d_semctl_semun
9408     eval $setvar
9409
9410     set d_semctl_semid_ds
9411     eval $setvar
9412     ;;
9413 esac
9414
9415 : see if setegid exists
9416 set setegid d_setegid
9417 eval $inlibc
9418
9419 : see if seteuid exists
9420 set seteuid d_seteuid
9421 eval $inlibc
9422
9423 : see if setgrent exists
9424 set setgrent d_setgrent
9425 eval $inlibc
9426
9427 : see if sethostent exists
9428 set sethostent d_sethent
9429 eval $inlibc
9430
9431 : see if setlinebuf exists
9432 set setlinebuf d_setlinebuf
9433 eval $inlibc
9434
9435 : see if setlocale exists
9436 set setlocale d_setlocale
9437 eval $inlibc
9438
9439 : see if setnetent exists
9440 set setnetent d_setnent
9441 eval $inlibc
9442
9443 : see if setprotoent exists
9444 set setprotoent d_setpent
9445 eval $inlibc
9446
9447 : see if setpgid exists
9448 set setpgid d_setpgid
9449 eval $inlibc
9450
9451 : see if setpgrp2 exists
9452 set setpgrp2 d_setpgrp2
9453 eval $inlibc
9454
9455 : see if setpriority exists
9456 set setpriority d_setprior
9457 eval $inlibc
9458
9459 : see if setpwent exists
9460 set setpwent d_setpwent
9461 eval $inlibc
9462
9463 : see if setregid exists
9464 set setregid d_setregid
9465 eval $inlibc
9466 set setresgid d_setresgid
9467 eval $inlibc
9468
9469 : see if setreuid exists
9470 set setreuid d_setreuid
9471 eval $inlibc
9472 set setresuid d_setresuid
9473 eval $inlibc
9474
9475 : see if setrgid exists
9476 set setrgid d_setrgid
9477 eval $inlibc
9478
9479 : see if setruid exists
9480 set setruid d_setruid
9481 eval $inlibc
9482
9483 : see if setservent exists
9484 set setservent d_setsent
9485 eval $inlibc
9486
9487 : see if setsid exists
9488 set setsid d_setsid
9489 eval $inlibc
9490
9491 : see if setvbuf exists
9492 set setvbuf d_setvbuf
9493 eval $inlibc
9494
9495 : see if sfio.h is available
9496 set sfio.h i_sfio
9497 eval $inhdr
9498
9499
9500 : see if sfio library is available
9501 case "$i_sfio" in
9502 $define)
9503         val=''
9504         set sfreserve val
9505         eval $inlibc
9506         ;;
9507 *)
9508         val="$undef"
9509         ;;
9510 esac
9511 : Ok, but do we want to use it.
9512 case "$val" in
9513 $define)
9514         case "$usesfio" in
9515         true|$define|[yY]*) dflt='y';;
9516         *) dflt='n';;
9517         esac
9518         echo "$package can use the sfio library, but it is experimental."
9519         rp="You seem to have sfio available, do you want to try using it?"
9520         . ./myread
9521         case "$ans" in
9522         y|Y) ;;
9523         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9524                 val="$undef"
9525                 : Remove sfio from list of libraries to use
9526                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9527                 shift
9528                 libs="$*"
9529                 echo "libs = $libs" >&4
9530                 ;;
9531         esac
9532         ;;
9533 *)      case "$usesfio" in
9534         true|$define|[yY]*)
9535                 echo "Sorry, cannot find sfio on this machine" >&4
9536                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9537                 ;;
9538         esac
9539         ;;
9540 esac
9541 set d_sfio
9542 eval $setvar
9543 case "$d_sfio" in
9544 $define) usesfio='true';;
9545 *) usesfio='false';;
9546 esac
9547
9548 : see if shmctl exists
9549 set shmctl d_shmctl
9550 eval $inlibc
9551
9552 : see if shmget exists
9553 set shmget d_shmget
9554 eval $inlibc
9555
9556 : see if shmat exists
9557 set shmat d_shmat
9558 eval $inlibc
9559 : see what shmat returns
9560 case "$d_shmat" in
9561 "$define")
9562         $cat >shmat.c <<'END'
9563 #include <sys/shm.h>
9564 void *shmat();
9565 END
9566         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9567                 shmattype='void *'
9568         else
9569                 shmattype='char *'
9570         fi
9571         echo "and it returns ($shmattype)." >&4
9572         : see if a prototype for shmat is available
9573         xxx=`./findhdr sys/shm.h`
9574         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9575         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9576                 val="$define"
9577         else
9578                 val="$undef"
9579         fi
9580         $rm -f shmat.[co]
9581         ;;
9582 *)
9583         val="$undef"
9584         ;;
9585 esac
9586 set d_shmatprototype
9587 eval $setvar
9588
9589 : see if shmdt exists
9590 set shmdt d_shmdt
9591 eval $inlibc
9592
9593 : see how much of the 'shm*(2)' library is present.
9594 h_shm=true
9595 echo " "
9596 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9597 *"$undef"*) h_shm=false;;
9598 esac
9599 case "$osname" in
9600 freebsd)
9601     case "`ipcs 2>&1`" in
9602     "SVID shared memory"*"not configured"*)
9603         echo "Your $osname does not have the shm*(2) configured." >&4
9604         h_shm=false
9605         val="$undef"
9606         set shmctl d_shmctl
9607         evat $setvar
9608         set shmget d_shmget
9609         evat $setvar
9610         set shmat d_shmat
9611         evat $setvar
9612         set shmdt d_shmdt
9613         evat $setvar
9614         ;;
9615     esac
9616     ;;
9617 esac
9618 : we could also check for sys/ipc.h ...
9619 if $h_shm && $test `./findhdr sys/shm.h`; then
9620         echo "You have the full shm*(2) library." >&4
9621         val="$define"
9622 else
9623         echo "You don't have the full shm*(2) library." >&4
9624         val="$undef"
9625 fi
9626 set d_shm
9627 eval $setvar
9628
9629 echo " "
9630 : see if we have sigaction
9631 if set sigaction val -f d_sigaction; eval $csym; $val; then
9632         echo 'sigaction() found.' >&4
9633         $cat > try.c <<'EOP'
9634 #include <stdio.h>
9635 #include <sys/types.h>
9636 #include <signal.h>
9637 main()
9638 {
9639     struct sigaction act, oact;
9640 }
9641 EOP
9642         set try
9643         if eval $compile_ok; then
9644                 val="$define"
9645         else
9646                 echo "But you don't seem to have a useable struct sigaction." >&4
9647                 val="$undef"
9648         fi
9649 else
9650         echo 'sigaction NOT found.' >&4
9651         val="$undef"
9652 fi
9653 set d_sigaction; eval $setvar
9654 $rm -f try try$_o try.c
9655
9656 : see if sigsetjmp exists
9657 echo " "
9658 case "$d_sigsetjmp" in
9659 '')
9660         $cat >try.c <<'EOP'
9661 #include <setjmp.h>
9662 sigjmp_buf env;
9663 int set = 1;
9664 main()
9665 {
9666         if (sigsetjmp(env,1))
9667                 exit(set);
9668         set = 0;
9669         siglongjmp(env, 1);
9670         exit(1);
9671 }
9672 EOP
9673         set try
9674         if eval $compile; then
9675                 if ./try >/dev/null 2>&1; then
9676                         echo "POSIX sigsetjmp found." >&4
9677                         val="$define"
9678                 else
9679                         $cat >&4 <<EOM
9680 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9681 I'll ignore them.
9682 EOM
9683                         val="$undef"
9684                 fi
9685         else
9686                 echo "sigsetjmp not found." >&4
9687                 val="$undef"
9688         fi
9689         ;;
9690 *) val="$d_sigsetjmp"
9691         case "$d_sigsetjmp" in
9692         $define) echo "POSIX sigsetjmp found." >&4;;
9693         $undef) echo "sigsetjmp not found." >&4;;
9694         esac
9695         ;;
9696 esac
9697 set d_sigsetjmp
9698 eval $setvar
9699 $rm -f try.c try
9700
9701 : see if stat knows about block sizes
9702 echo " "
9703 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9704 eval $hasfield
9705
9706 : see if _ptr and _cnt from stdio act std
9707 echo " "
9708 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9709         echo "(Looks like you have stdio.h from Linux.)"
9710         case "$stdio_ptr" in
9711         '') stdio_ptr='((fp)->_IO_read_ptr)'
9712                 ptr_lval=$define
9713                 ;;
9714         *)      ptr_lval=$d_stdio_ptr_lval;;
9715         esac
9716         case "$stdio_cnt" in
9717         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9718                 cnt_lval=$undef
9719                 ;;
9720         *)      cnt_lval=$d_stdio_cnt_lval;;
9721         esac
9722         case "$stdio_base" in
9723         '') stdio_base='((fp)->_IO_read_base)';;
9724         esac
9725         case "$stdio_bufsiz" in
9726         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9727         esac
9728 else
9729         case "$stdio_ptr" in
9730         '') stdio_ptr='((fp)->_ptr)'
9731                 ptr_lval=$define
9732                 ;;
9733         *)      ptr_lval=$d_stdio_ptr_lval;;
9734         esac
9735         case "$stdio_cnt" in
9736         '') stdio_cnt='((fp)->_cnt)'
9737                 cnt_lval=$define
9738                 ;;
9739         *)      cnt_lval=$d_stdio_cnt_lval;;
9740         esac
9741         case "$stdio_base" in
9742         '') stdio_base='((fp)->_base)';;
9743         esac
9744         case "$stdio_bufsiz" in
9745         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9746         esac
9747 fi
9748 : test whether _ptr and _cnt really work
9749 echo "Checking how std your stdio is..." >&4
9750 $cat >try.c <<EOP
9751 #include <stdio.h>
9752 #define FILE_ptr(fp)    $stdio_ptr
9753 #define FILE_cnt(fp)    $stdio_cnt
9754 main() {
9755         FILE *fp = fopen("try.c", "r");
9756         char c = getc(fp);
9757         if (
9758                 18 <= FILE_cnt(fp) &&
9759                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9760         )
9761                 exit(0);
9762         exit(1);
9763 }
9764 EOP
9765 val="$undef"
9766 set try
9767 if eval $compile; then
9768         if ./try; then
9769                 echo "Your stdio acts pretty std."
9770                 val="$define"
9771         else
9772                 echo "Your stdio isn't very std."
9773         fi
9774 else
9775         echo "Your stdio doesn't appear very std."
9776 fi
9777 $rm -f try.c try
9778 set d_stdstdio
9779 eval $setvar
9780
9781 : Can _ptr be used as an lvalue?
9782 case "$d_stdstdio$ptr_lval" in
9783 $define$define) val=$define ;;
9784 *) val=$undef ;;
9785 esac
9786 set d_stdio_ptr_lval
9787 eval $setvar
9788
9789 : Can _cnt be used as an lvalue?
9790 case "$d_stdstdio$cnt_lval" in
9791 $define$define) val=$define ;;
9792 *) val=$undef ;;
9793 esac
9794 set d_stdio_cnt_lval
9795 eval $setvar
9796
9797 : see if _base is also standard
9798 val="$undef"
9799 case "$d_stdstdio" in
9800 $define)
9801         $cat >try.c <<EOP
9802 #include <stdio.h>
9803 #define FILE_base(fp)   $stdio_base
9804 #define FILE_bufsiz(fp) $stdio_bufsiz
9805 main() {
9806         FILE *fp = fopen("try.c", "r");
9807         char c = getc(fp);
9808         if (
9809                 19 <= FILE_bufsiz(fp) &&
9810                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9811         )
9812                 exit(0);
9813         exit(1);
9814 }
9815 EOP
9816         set try
9817         if eval $compile; then
9818                 if ./try; then
9819                         echo "And its _base field acts std."
9820                         val="$define"
9821                 else
9822                         echo "But its _base field isn't std."
9823                 fi
9824         else
9825                 echo "However, it seems to be lacking the _base field."
9826         fi
9827         $rm -f try.c try
9828         ;;
9829 esac
9830 set d_stdiobase
9831 eval $setvar
9832
9833 : see if strcoll exists
9834 set strcoll d_strcoll
9835 eval $inlibc
9836
9837 : check for structure copying
9838 echo " "
9839 echo "Checking to see if your C compiler can copy structs..." >&4
9840 $cat >try.c <<'EOCP'
9841 int main()
9842 {
9843         struct blurfl {
9844                 int dyick;
9845         } foo, bar;
9846
9847         foo = bar;
9848 }
9849 EOCP
9850 if $cc -c try.c >/dev/null 2>&1 ; then
9851         val="$define"
9852         echo "Yup, it can."
9853 else
9854         val="$undef"
9855         echo "Nope, it can't."
9856 fi
9857 set d_strctcpy
9858 eval $setvar
9859 $rm -f try.*
9860
9861 : see if strerror and/or sys_errlist[] exist
9862 echo " "
9863 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9864     if set strerror val -f d_strerror; eval $csym; $val; then
9865                 echo 'strerror() found.' >&4
9866                 d_strerror="$define"
9867                 d_strerrm='strerror(e)'
9868                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9869                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9870                         d_syserrlst="$define"
9871                 else
9872                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9873                         d_syserrlst="$undef"
9874                 fi
9875     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9876                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9877                 echo 'strerror() found in string header.' >&4
9878                 d_strerror="$define"
9879                 d_strerrm='strerror(e)'
9880                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9881                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9882                                 d_syserrlst="$define"
9883                 else
9884                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9885                         d_syserrlst="$undef"
9886                 fi
9887     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9888                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9889                 d_strerror="$undef"
9890                 d_syserrlst="$define"
9891                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9892     else
9893                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9894                 d_strerror="$undef"
9895                 d_syserrlst="$undef"
9896                 d_strerrm='"unknown"'
9897     fi
9898 fi
9899
9900 : see if strtod exists
9901 set strtod d_strtod
9902 eval $inlibc
9903
9904 : see if strtol exists
9905 set strtol d_strtol
9906 eval $inlibc
9907
9908 : see if strtoul exists
9909 set strtoul d_strtoul
9910 eval $inlibc
9911
9912 : see if strxfrm exists
9913 set strxfrm d_strxfrm
9914 eval $inlibc
9915
9916 : see if symlink exists
9917 set symlink d_symlink
9918 eval $inlibc
9919
9920 : see if syscall exists
9921 set syscall d_syscall
9922 eval $inlibc
9923
9924 : see if sysconf exists
9925 set sysconf d_sysconf
9926 eval $inlibc
9927
9928 : see if system exists
9929 set system d_system
9930 eval $inlibc
9931
9932 : see if tcgetpgrp exists
9933 set tcgetpgrp d_tcgetpgrp
9934 eval $inlibc
9935
9936 : see if tcsetpgrp exists
9937 set tcsetpgrp d_tcsetpgrp
9938 eval $inlibc
9939
9940 : define an is-a-typedef? function
9941 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9942 case "$inclist" in
9943 "") inclist="sys/types.h";;
9944 esac;
9945 eval "varval=\$$var";
9946 case "$varval" in
9947 "")
9948         $rm -f temp.c;
9949         for inc in $inclist; do
9950                 echo "#include <$inc>" >>temp.c;
9951         done;
9952         echo "#ifdef $type" >> temp.c;
9953         echo "printf(\"We have $type\");" >> temp.c;
9954         echo "#endif" >> temp.c;
9955         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9956         if $contains $type temp.E >/dev/null 2>&1; then
9957                 eval "$var=\$type";
9958         else
9959                 eval "$var=\$def";
9960         fi;
9961         $rm -f temp.?;;
9962 *) eval "$var=\$varval";;
9963 esac'
9964
9965 : define an is-a-typedef? function that prompts if the type is not available.
9966 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9967 case "$inclist" in
9968 "") inclist="sys/types.h";;
9969 esac;
9970 eval "varval=\$$var";
9971 case "$varval" in
9972 "")
9973         $rm -f temp.c;
9974         for inc in $inclist; do
9975                 echo "#include <$inc>" >>temp.c;
9976         done;
9977         echo "#ifdef $type" >> temp.c;
9978         echo "printf(\"We have $type\");" >> temp.c;
9979         echo "#endif" >> temp.c;
9980         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9981         echo " " ;
9982         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9983         if $contains $type temp.E >/dev/null 2>&1; then
9984                 echo "$type found." >&4;
9985                 eval "$var=\$type";
9986         else
9987                 echo "$type NOT found." >&4;
9988                 dflt="$def";
9989                 . ./myread ;
9990                 eval "$var=\$ans";
9991         fi;
9992         $rm -f temp.?;;
9993 *) eval "$var=\$varval";;
9994 esac'
9995
9996 : see if this is a sys/times.h system
9997 set sys/times.h i_systimes
9998 eval $inhdr
9999
10000 : see if times exists
10001 echo " "
10002 if set times val -f d_times; eval $csym; $val; then
10003         echo 'times() found.' >&4
10004         d_times="$define"
10005         inc=''
10006         case "$i_systimes" in
10007         "$define") inc='sys/times.h';;
10008         esac
10009         rp="What is the type returned by times() on this system?"
10010         set clock_t clocktype long stdio.h sys/types.h $inc
10011         eval $typedef_ask
10012 else
10013         echo 'times() NOT found, hope that will do.' >&4
10014         d_times="$undef"
10015         clocktype='int'
10016 fi
10017
10018 : see if truncate exists
10019 set truncate d_truncate
10020 eval $inlibc
10021
10022 : see if tzname[] exists
10023 echo " "
10024 if set tzname val -a d_tzname; eval $csym; $val; then
10025         val="$define"
10026         echo 'tzname[] found.' >&4
10027 else
10028         val="$undef"
10029         echo 'tzname[] NOT found.' >&4
10030 fi
10031 set d_tzname
10032 eval $setvar
10033
10034 : see if umask exists
10035 set umask d_umask
10036 eval $inlibc
10037
10038 : backward compatibility for d_hvfork
10039 if test X$d_hvfork != X; then
10040         d_vfork="$d_hvfork"
10041         d_hvfork=''
10042 fi
10043 : see if there is a vfork
10044 val=''
10045 set vfork val
10046 eval $inlibc
10047
10048 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10049 : perl on Solaris 2.x, and probably elsewhere.
10050 case "$val" in
10051 $define)
10052         echo " "
10053         case "$usevfork" in
10054         false) dflt='n';;
10055         *) dflt='y';;
10056         esac
10057         rp="Some systems have problems with vfork().  Do you want to use it?"
10058         . ./myread
10059         case "$ans" in
10060         y|Y) ;;
10061         *)
10062                 echo "Ok, we won't use vfork()."
10063                 val="$undef"
10064                 ;;
10065         esac
10066         ;;
10067 esac
10068 set d_vfork
10069 eval $setvar
10070 case "$d_vfork" in
10071 $define) usevfork='true';;
10072 *) usevfork='false';;
10073 esac
10074
10075 : see if this is an sysdir system
10076 set sys/dir.h i_sysdir
10077 eval $inhdr
10078
10079 : see if this is an sysndir system
10080 set sys/ndir.h i_sysndir
10081 eval $inhdr
10082
10083 : see if sys/types.h has to be included
10084 set sys/types.h i_systypes
10085 eval $inhdr
10086
10087 : see if closedir exists
10088 set closedir d_closedir
10089 eval $inlibc
10090
10091 case "$d_closedir" in
10092 "$define")
10093         echo " "
10094         echo "Checking whether closedir() returns a status..." >&4
10095         cat > closedir.c <<EOM
10096 #$i_dirent I_DIRENT             /**/
10097 #$i_sysdir I_SYS_DIR            /**/
10098 #$i_sysndir I_SYS_NDIR          /**/
10099 #$i_systypes I_SYS_TYPES        /**/
10100
10101 #if defined(I_SYS_TYPES)
10102 #include <sys/types.h>
10103 #endif
10104 #if defined(I_DIRENT)
10105 #include <dirent.h>
10106 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10107 #include <sys/dir.h>
10108 #endif
10109 #else
10110 #ifdef I_SYS_NDIR
10111 #include <sys/ndir.h>
10112 #else
10113 #ifdef I_SYS_DIR
10114 #ifdef hp9000s500
10115 #include <ndir.h>       /* may be wrong in the future */
10116 #else
10117 #include <sys/dir.h>
10118 #endif
10119 #endif
10120 #endif
10121 #endif 
10122 int main() { return closedir(opendir(".")); }
10123 EOM
10124         set closedir
10125         if eval $compile_ok; then
10126                 if ./closedir > /dev/null 2>&1 ; then
10127                         echo "Yes, it does."
10128                         val="$undef"
10129                 else
10130                         echo "No, it doesn't."
10131                         val="$define"
10132                 fi
10133         else
10134                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10135                 val="$define"
10136         fi
10137         ;;
10138 *)
10139         val="$undef";
10140         ;;
10141 esac
10142 set d_void_closedir
10143 eval $setvar
10144 $rm -f closedir*
10145 : check for volatile keyword
10146 echo " "
10147 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10148 $cat >try.c <<'EOCP'
10149 int main()
10150 {
10151         typedef struct _goo_struct goo_struct;
10152         goo_struct * volatile goo = ((goo_struct *)0);
10153         struct _goo_struct {
10154                 long long_int;
10155                 int reg_int;
10156                 char char_var;
10157         };
10158         typedef unsigned short foo_t;
10159         char *volatile foo;
10160         volatile int bar;
10161         volatile foo_t blech;
10162         foo = foo;
10163 }
10164 EOCP
10165 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10166         val="$define"
10167         echo "Yup, it does."
10168 else
10169         val="$undef"
10170         echo "Nope, it doesn't."
10171 fi
10172 set d_volatile
10173 eval $setvar
10174 $rm -f try.*
10175
10176 : see if there is a wait4
10177 set wait4 d_wait4
10178 eval $inlibc
10179
10180 : see if waitpid exists
10181 set waitpid d_waitpid
10182 eval $inlibc
10183
10184 : see if wcstombs exists
10185 set wcstombs d_wcstombs
10186 eval $inlibc
10187
10188 : see if wctomb exists
10189 set wctomb d_wctomb
10190 eval $inlibc
10191
10192 : see if writev exists
10193 set writev d_writev
10194 eval $inlibc
10195
10196 : preserve RCS keywords in files with variable substitution, grrr
10197 Date='$Date'
10198 Id='$Id'
10199 Log='$Log'
10200 RCSfile='$RCSfile'
10201 Revision='$Revision'
10202
10203 : check for alignment requirements
10204 echo " "
10205 case "$alignbytes" in
10206 '') echo "Checking alignment constraints..." >&4
10207         $cat >try.c <<'EOCP'
10208 struct foobar {
10209         char foo;
10210         double bar;
10211 } try;
10212 main()
10213 {
10214         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10215 }
10216 EOCP
10217         set try
10218         if eval $compile_ok; then
10219                 dflt=`./try`
10220         else
10221                 dflt='8'
10222                 echo "(I can't seem to compile the test program...)"
10223         fi
10224         ;;
10225 *) dflt="$alignbytes"
10226         ;;
10227 esac
10228 rp="Doubles must be aligned on a how-many-byte boundary?"
10229 . ./myread
10230 alignbytes="$ans"
10231 $rm -f try.c try
10232
10233 : check for ordering of bytes in a long
10234 case "$byteorder" in
10235 '')
10236         $cat <<'EOM'
10237   
10238 In the following, larger digits indicate more significance.  A big-endian
10239 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10240 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10241 machines may have weird orders like 3412.  A Cray will report 87654321. If
10242 the test program works the default is probably right.
10243 I'm now running the test program...
10244 EOM
10245         $cat >try.c <<'EOCP'
10246 #include <stdio.h>
10247 main()
10248 {
10249         int i;
10250         union {
10251                 unsigned long l;
10252                 char c[sizeof(long)];
10253         } u;
10254
10255         if (sizeof(long) > 4)
10256                 u.l = (0x08070605L << 32) | 0x04030201L;
10257         else
10258                 u.l = 0x04030201L;
10259         for (i = 0; i < sizeof(long); i++)
10260                 printf("%c", u.c[i]+'0');
10261         printf("\n");
10262         exit(0);
10263 }
10264 EOCP
10265         xxx_prompt=y
10266         set try
10267         if eval $compile && ./try > /dev/null; then
10268                 dflt=`./try`
10269                 case "$dflt" in
10270                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10271                         echo "(The test program ran ok.)"
10272                         echo "byteorder=$dflt"
10273                         xxx_prompt=n
10274                         ;;
10275                 ????|????????) echo "(The test program ran ok.)" ;;
10276                 *) echo "(The test program didn't run right for some reason.)" ;;
10277                 esac
10278         else
10279                 dflt='4321'
10280                 cat <<'EOM'
10281 (I can't seem to compile the test program.  Guessing big-endian...)
10282 EOM
10283         fi
10284         case "$xxx_prompt" in
10285         y)
10286                 rp="What is the order of bytes in a long?"
10287                 . ./myread
10288                 byteorder="$ans"
10289                 ;;
10290         *)      byteorder=$dflt
10291                 ;;
10292         esac
10293         ;;
10294 esac
10295 $rm -f try.c try
10296
10297 : how do we catenate cpp tokens here?
10298 echo " "
10299 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10300 $cat >cpp_stuff.c <<'EOCP'
10301 #define RCAT(a,b)a/**/b
10302 #define ACAT(a,b)a ## b
10303 RCAT(Rei,ser)
10304 ACAT(Cir,cus)
10305 EOCP
10306 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10307 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10308         echo "Oh!  Smells like ANSI's been here." >&4
10309         echo "We can catify or stringify, separately or together!"
10310         cpp_stuff=42
10311 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10312         echo "Ah, yes!  The good old days!" >&4
10313         echo "However, in the good old days we don't know how to stringify and"
10314         echo "catify at the same time."
10315         cpp_stuff=1
10316 else
10317         $cat >&4 <<EOM
10318 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10319 to have to edit the values of CAT[2-5] in config.h...
10320 EOM
10321         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10322 fi
10323 $rm -f cpp_stuff.*
10324
10325 : see if this is a db.h system
10326 set db.h i_db
10327 eval $inhdr
10328
10329 case "$i_db" in
10330 $define)
10331         : Check db version.
10332         echo " "
10333         echo "Checking Berkeley DB version ..." >&4
10334         $cat >try.c <<EOCP
10335 #$d_const HASCONST
10336 #ifndef HASCONST
10337 #define const
10338 #endif
10339 #include <sys/types.h>
10340 #include <stdio.h>
10341 #include <db.h>
10342 main()
10343 {
10344 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10345     int Major, Minor, Patch ;
10346     unsigned long Version ;
10347     (void)db_version(&Major, &Minor, &Patch) ;
10348     printf("You have Berkeley DB Version 2 or greater\n");
10349
10350     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10351                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10352     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10353                 Major, Minor, Patch) ;
10354
10355     /* check that db.h & libdb are compatible */
10356     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10357         printf("db.h and libdb are incompatible\n") ;
10358         exit(3);        
10359     }
10360
10361     printf("db.h and libdb are compatible\n") ;
10362
10363     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10364                 + DB_VERSION_PATCH ;
10365
10366     /* needs to be >= 2.3.4 */
10367     if (Version < 2003004) {
10368     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10369         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10370         exit(2);        
10371     }
10372
10373     exit(0);
10374 #else
10375 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10376     printf("You have Berkeley DB Version 1\n");
10377     exit(0);    /* DB version < 2: the coast is clear. */
10378 #else
10379     exit(1);    /* <db.h> not Berkeley DB? */
10380 #endif
10381 #endif
10382 }
10383 EOCP
10384         set try
10385         if eval $compile && ./try; then
10386                 echo 'Looks OK.' >&4
10387         else
10388                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10389                 i_db=$undef
10390                 case " $libs " in
10391                 *"-ldb "*)
10392                         : Remove db from list of libraries to use
10393                         echo "Removing unusable -ldb from library list" >&4
10394                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10395                         shift
10396                         libs="$*"
10397                         echo "libs = $libs" >&4
10398                         ;;
10399                 esac
10400         fi
10401         $rm -f try.*
10402         ;;
10403 esac
10404
10405 case "$i_db" in
10406 define)
10407         : Check the return type needed for hash 
10408         echo " "
10409         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10410         $cat >try.c <<EOCP
10411 #$d_const HASCONST
10412 #ifndef HASCONST
10413 #define const
10414 #endif
10415 #include <sys/types.h>
10416 #include <db.h>
10417
10418 #ifndef DB_VERSION_MAJOR
10419 u_int32_t hash_cb (ptr, size)
10420 const void *ptr;
10421 size_t size;
10422 {
10423 }
10424 HASHINFO info;
10425 main()
10426 {
10427         info.hash = hash_cb;
10428 }
10429 #endif
10430 EOCP
10431         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10432                 if $contains warning try.out >>/dev/null 2>&1 ; then
10433                         db_hashtype='int'
10434                 else
10435                         db_hashtype='u_int32_t'
10436                 fi
10437         else
10438                 : XXX Maybe we should just give up here.
10439                 db_hashtype=u_int32_t
10440                 $cat try.out >&4
10441                 echo "Help:  I can't seem to compile the db test program." >&4
10442                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10443         fi
10444         $rm -f try.*
10445         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10446         ;;
10447 *)      db_hashtype=u_int32_t
10448         ;;
10449 esac
10450 case "$i_db" in
10451 define)
10452         : Check the return type needed for prefix 
10453         echo " "
10454         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10455         cat >try.c <<EOCP
10456 #$d_const HASCONST
10457 #ifndef HASCONST
10458 #define const
10459 #endif
10460 #include <sys/types.h>
10461 #include <db.h>
10462
10463 #ifndef DB_VERSION_MAJOR
10464 size_t prefix_cb (key1, key2)
10465 const DBT *key1;
10466 const DBT *key2;
10467 {
10468 }
10469 BTREEINFO info;
10470 main()
10471 {
10472         info.prefix = prefix_cb;
10473 }
10474 #endif
10475 EOCP
10476         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10477                 if $contains warning try.out >>/dev/null 2>&1 ; then
10478                         db_prefixtype='int'
10479                 else
10480                         db_prefixtype='size_t'
10481                 fi
10482         else
10483                 db_prefixtype='size_t'
10484                 : XXX Maybe we should just give up here.
10485                 $cat try.out >&4
10486                 echo "Help:  I can't seem to compile the db test program." >&4
10487                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10488         fi
10489         $rm -f try.*
10490         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10491         ;;
10492 *)      db_prefixtype='size_t'
10493         ;;
10494 esac
10495
10496 : check for void type
10497 echo " "
10498 echo "Checking to see how well your C compiler groks the void type..." >&4
10499 case "$voidflags" in
10500 '')
10501         $cat >try.c <<'EOCP'
10502 #if TRY & 1
10503 void sub() {
10504 #else
10505 sub() {
10506 #endif
10507         extern void moo();      /* function returning void */
10508         void (*goo)();          /* ptr to func returning void */
10509 #if TRY & 8
10510         void *hue;              /* generic ptr */
10511 #endif
10512 #if TRY & 2
10513         void (*foo[10])();
10514 #endif
10515
10516 #if TRY & 4
10517         if(goo == moo) {
10518                 exit(0);
10519         }
10520 #endif
10521         exit(0);
10522 }
10523 main() { sub(); }
10524 EOCP
10525         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10526                 voidflags=$defvoidused
10527         echo "Good.  It appears to support void to the level $package wants.">&4
10528                 if $contains warning .out >/dev/null 2>&1; then
10529                         echo "However, you might get some warnings that look like this:"
10530                         $cat .out
10531                 fi
10532         else
10533 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10534                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10535                         echo "It supports 1..."
10536                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10537                                 echo "It also supports 2..."
10538                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10539                                         voidflags=7
10540                                         echo "And it supports 4 but not 8 definitely."
10541                                 else
10542                                         echo "It doesn't support 4..."
10543                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10544                                                 voidflags=11
10545                                                 echo "But it supports 8."
10546                                         else
10547                                                 voidflags=3
10548                                                 echo "Neither does it support 8."
10549                                         fi
10550                                 fi
10551                         else
10552                                 echo "It does not support 2..."
10553                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10554                                         voidflags=13
10555                                         echo "But it supports 4 and 8."
10556                                 else
10557                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10558                                                 voidflags=5
10559                                                 echo "And it supports 4 but has not heard about 8."
10560                                         else
10561                                                 echo "However it supports 8 but not 4."
10562                                         fi
10563                                 fi
10564                         fi
10565                 else
10566                         echo "There is no support at all for void."
10567                         voidflags=0
10568                 fi
10569         fi
10570 esac
10571 case "$voidflags" in
10572 "$defvoidused") ;;
10573 *)      $cat >&4 <<'EOM'
10574   Support flag bits are:
10575     1: basic void declarations.
10576     2: arrays of pointers to functions returning void.
10577     4: operations between pointers to and addresses of void functions.
10578     8: generic void pointers.
10579 EOM
10580         dflt="$voidflags";
10581         rp="Your void support flags add up to what?"
10582         . ./myread
10583         voidflags="$ans"
10584         ;;
10585 esac
10586 $rm -f try.* .out
10587
10588
10589 : How can we generate normalized random numbers ?
10590 echo " "
10591 echo "Looking for a random number function..." >&4
10592 case "$randfunc" in
10593 '')
10594         if set drand48 val -f; eval $csym; $val; then
10595                 dflt="drand48"
10596                 echo "Good, found drand48()." >&4
10597         elif set random val -f; eval $csym; $val; then
10598                 dflt="random"
10599                 echo "OK, found random()." >&4
10600         else
10601                 dflt="rand"
10602                 echo "Yick, looks like I have to use rand()." >&4
10603         fi
10604         echo " "
10605         ;;
10606 *)
10607         dflt="$randfunc"
10608         ;;
10609 esac
10610 cont=true
10611
10612 case "$ccflags" in
10613 *-Dmy_rand=*|*-Dmy_srand=*)
10614         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10615         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10616         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10617         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10618         ;;
10619 esac
10620
10621 while $test "$cont"; do
10622         rp="Use which function to generate random numbers?"
10623         . ./myread
10624         if $test "$ans" = "$dflt"; then
10625                 : null
10626         else
10627                 randbits=''
10628         fi
10629         randfunc="$ans"
10630         if set $ans val -f; eval $csym; $val; then
10631                 cont=''
10632         else
10633                 dflt=y
10634                 rp="I cannot find function $ans. Use that name anyway?"
10635                 . ./myread
10636                 dflt=rand
10637                 case "$ans" in
10638                         [yY]*) cont='';;
10639                 esac
10640         fi
10641         case "$cont" in
10642         '')
10643                 case "$randfunc" in
10644                 drand48)
10645                         drand01="drand48()"
10646                         seedfunc="srand48"
10647                         randbits=48
10648                         randseedtype=long
10649                         ;;
10650                 rand|random)
10651                         case "$randbits" in
10652                         '')
10653 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10654                                 $cat >try.c <<EOCP
10655 #$i_unistd I_UNISTD
10656 #$i_stdlib I_STDLIB
10657 #include <stdio.h>
10658 #ifdef I_UNISTD
10659 #  include <unistd.h>
10660 #endif
10661 #ifdef I_STDLIB
10662 #  include <stdlib.h>
10663 #endif
10664 main()
10665 {
10666         register int i;
10667         register unsigned long tmp;
10668         register unsigned long max = 0L;
10669
10670         for (i = 1000; i; i--) {
10671                 tmp = (unsigned long) $randfunc();
10672                 if (tmp > max) max = tmp;
10673         }
10674         for (i = 0; max; i++)
10675                 max /= 2;
10676         printf("%d\n",i);
10677 }
10678 EOCP
10679                                 set try
10680                                 if eval $compile_ok; then
10681                                         dflt=`try`
10682                                 else
10683                                         dflt='?'
10684                                         echo "(I can't seem to compile the test program...)"
10685                                 fi
10686                                 ;;
10687                         *)
10688                                 dflt="$randbits"
10689                                 ;;
10690                         esac
10691                         rp="How many bits does your $randfunc() function produce?"
10692                         . ./myread
10693                         randbits="$ans"
10694                         $rm -f try.c try
10695                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10696                         seedfunc="s$randfunc"
10697                         randseedtype=unsigned
10698                         ;;
10699                 *)
10700                         dflt="31"
10701                         rp="How many bits does your $randfunc() function produce?"
10702                         . ./myread
10703                         randbits="$ans"
10704                         seedfunc="s$randfunc"
10705                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10706                         if set $seedfunc val -f; eval $csym; $val; then
10707                                 echo "(Using $seedfunc() to seed random generator)"
10708                         else
10709                                 echo "(Warning: no $seedfunc() to seed random generator)"
10710                                 seedfunc=rand
10711                         fi
10712                         randseedtype=unsigned
10713                         ;;
10714                 esac
10715                 ;;
10716         esac
10717 done
10718
10719 echo " "
10720 echo "Determining whether or not we are on an EBCDIC system..." >&4
10721 $cat >tebcdic.c <<'EOM'
10722 int main()
10723 {
10724   if ('M'==0xd4) return 0;
10725   return 1;
10726 }
10727 EOM
10728
10729 val=$undef
10730 set tebcdic
10731 if eval $compile_ok; then
10732         if ./tebcdic; then
10733                 echo "You have EBCDIC." >&4
10734                 val="$define"
10735         else
10736                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10737         fi
10738 else
10739         echo "I'm unable to compile the test program." >&4
10740         echo "I'll assume ASCII or some ISO Latin." >&4
10741 fi
10742 $rm -f tebcdic.c tebcdic
10743 set ebcdic
10744 eval $setvar
10745
10746 : see what type file positions are declared as in the library
10747 rp="What is the type for file position used by fsetpos()?"
10748 set fpos_t fpostype long stdio.h sys/types.h
10749 eval $typedef_ask
10750
10751 : Store the full pathname to the sed program for use in the C program
10752 full_sed=$sed
10753
10754 : see what type gids are declared as in the kernel
10755 echo " "
10756 echo "Looking for the type for group ids returned by getgid()."
10757 set gid_t gidtype xxx stdio.h sys/types.h
10758 eval $typedef
10759 case "$gidtype" in
10760 xxx)
10761         xxx=`./findhdr sys/user.h`
10762         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10763         case $1 in
10764         unsigned) dflt="$1 $2" ;;
10765         *) dflt="$1" ;;
10766         esac
10767         ;;
10768 *) dflt="$gidtype";;
10769 esac
10770 case "$gidtype" in
10771 gid_t) echo "gid_t found." ;;
10772 *)      rp="What is the type for group ids returned by getgid()?"
10773         . ./myread
10774         gidtype="$ans"
10775         ;;
10776 esac
10777
10778 : see if getgroups exists
10779 set getgroups d_getgrps
10780 eval $inlibc
10781
10782 : see if setgroups exists
10783 set setgroups d_setgrps
10784 eval $inlibc
10785
10786
10787 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10788 echo " "
10789 case "$d_getgrps$d_setgrps" in
10790 *define*)
10791         case "$groupstype" in
10792         '') dflt="$gidtype" ;;
10793         *)  dflt="$groupstype" ;;
10794         esac
10795         $cat <<EOM
10796 What type of pointer is the second argument to getgroups() and setgroups()?
10797 Usually this is the same as group ids, $gidtype, but not always.
10798
10799 EOM
10800         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10801         . ./myread
10802         groupstype="$ans"
10803         ;;
10804 *)  groupstype="$gidtype";;
10805 esac
10806
10807 : see what type lseek is declared as in the kernel
10808 rp="What is the type used for lseek's offset on this system?"
10809 set off_t lseektype long stdio.h sys/types.h
10810 eval $typedef_ask
10811
10812 echo " "
10813 $echo $n "Checking to see how big your file offsets are...$c" >&4
10814 $cat >try.c <<EOCP
10815 #include <sys/types.h>
10816 #include <stdio.h>
10817 int main()
10818 {
10819         printf("%d\n", sizeof($lseektype));
10820 }
10821 EOCP
10822 set try
10823 if eval $compile_ok; then
10824         lseeksize=`./try`
10825         $echo " $lseeksize bytes." >&4
10826 else
10827         dflt='4'
10828         echo " "
10829         echo "(I can't seem to compile the test program.  Guessing...)"
10830         rp="What is the size of your file offsets (in bytes)?"
10831         . ./myread
10832         lseeksize="$ans"
10833 fi
10834 $rm -f try.c try
10835
10836 echo " "
10837 echo "Checking if your $make program sets \$(MAKE)..." >&4
10838 case "$make_set_make" in
10839 '')
10840         $sed 's/^X //' > testmake.mak << 'EOF'
10841 Xall:
10842 X       @echo 'maketemp="$(MAKE)"'
10843 EOF
10844         case "`$make -f testmake.mak 2>/dev/null`" in
10845         *maketemp=*) make_set_make='#' ;;
10846         *)      make_set_make="MAKE=$make" ;;
10847         esac
10848         $rm -f testmake.mak
10849         ;;
10850 esac
10851 case "$make_set_make" in
10852 '#') echo "Yup, it does.";;
10853 *) echo "Nope, it doesn't.";;
10854 esac
10855
10856 : see what type is used for mode_t
10857 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10858 set mode_t modetype int stdio.h sys/types.h
10859 eval $typedef_ask
10860
10861 : define a fucntion to check prototypes
10862 $cat > protochk <<EOSH
10863 $startsh
10864 cc="$cc"
10865 optimize="$optimize"
10866 ccflags="$ccflags"
10867 prototype="$prototype"
10868 define="$define"
10869 rm=$rm
10870 EOSH
10871
10872 $cat >> protochk <<'EOSH'
10873
10874 $rm -f try.c
10875 foo="$1"
10876 shift
10877 while test $# -ge 2; do
10878         case "$1" in
10879                 $define) echo "#include <$2>" >> try.c ;;
10880                 literal) echo "$2" >> try.c ;;
10881         esac
10882     shift 2
10883 done
10884 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10885 cat >> try.c <<'EOCP'
10886 #ifdef CAN_PROTOTYPE
10887 #define _(args) args
10888 #else
10889 #define _(args) ()
10890 #endif
10891 EOCP
10892 echo "$foo" >> try.c
10893 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10894 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10895 status=$?
10896 $rm -f try.[co]
10897 exit $status
10898 EOSH
10899 chmod +x protochk
10900 $eunicefix protochk
10901
10902 : see what type is used for size_t
10903 rp="What is the type used for the length parameter for string functions?"
10904 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10905 eval $typedef_ask
10906
10907 : check for type of arguments to gethostbyaddr. 
10908 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10909         case "$d_gethbyaddr" in
10910         $define)
10911                 $cat <<EOM
10912
10913 Checking to see what type of arguments are accepted by gethostbyaddr().
10914 EOM
10915                 hdrs="$define sys/types.h
10916                         $d_socket sys/socket.h 
10917                         $i_niin netinet/in.h 
10918                         $i_netdb netdb.h
10919                         $i_unistd unistd.h"
10920                 : The first arg can 'char *' or 'void *'
10921                 : The second arg is some of integral type
10922                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10923                         for yyy in size_t long int; do
10924                                 case "$netdb_host_type" in
10925                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10926                                         if ./protochk "$try" $hdrs; then
10927                                                 echo "Your system accepts $xxx for the first arg."
10928                                                 echo "...and $yyy for the second arg."
10929                                                 netdb_host_type="$xxx"
10930                                                 netdb_hlen_type="$yyy"
10931                                         fi
10932                                         ;;
10933                                 esac
10934                         done
10935                 done
10936                 : In case none of those worked, prompt the user.
10937                 case "$netdb_host_type" in
10938                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10939                         dflt='char *'
10940                         . ./myread
10941                         netdb_host_type=$ans
10942                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10943                         dflt="$sizetype"
10944                         . ./myread
10945                         netdb_hlen_type=$ans
10946                         ;;
10947                 esac
10948                 ;;
10949         *)      : no gethostbyaddr, so pick harmless defaults
10950                 netdb_host_type='char *'
10951                 netdb_hlen_type="$sizetype"
10952                 ;;
10953         esac
10954         # Remove the "const" if needed. -- but then we'll have a 
10955         # prototype clash!
10956         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10957 fi
10958
10959 : check for type of argument to gethostbyname. 
10960 if test "X$netdb_name_type" = X ; then
10961         case "$d_gethbyname" in
10962         $define)
10963                 $cat <<EOM
10964
10965 Checking to see what type of argument is accepted by gethostbyname().
10966 EOM
10967                 hdrs="$define sys/types.h
10968                         $d_socket sys/socket.h 
10969                         $i_niin netinet/in.h 
10970                         $i_netdb netdb.h
10971                         $i_unistd unistd.h"
10972                 for xxx in "const char *" "char *"; do
10973                         case "$netdb_name_type" in
10974                         '')     try="extern struct hostent *gethostbyname($xxx);"
10975                                 if ./protochk "$try" $hdrs; then
10976                                         echo "Your system accepts $xxx."
10977                                         netdb_name_type="$xxx"
10978                                 fi
10979                                 ;;
10980                         esac
10981                 done
10982                 : In case none of those worked, prompt the user.
10983                 case "$netdb_name_type" in
10984                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10985                         dflt='char *'
10986                         . ./myread
10987                         netdb_name_type=$ans
10988                         ;;
10989                 esac
10990                 ;;
10991         *)      : no gethostbyname, so pick harmless default
10992                 netdb_name_type='char *'
10993                 ;;
10994         esac
10995 fi
10996
10997 : check for type of 1st argument to getnetbyaddr. 
10998 if test "X$netdb_net_type" = X ; then
10999         case "$d_getnbyaddr" in
11000         $define)
11001                 $cat <<EOM
11002
11003 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11004 EOM
11005                 hdrs="$define sys/types.h
11006                         $d_socket sys/socket.h 
11007                         $i_niin netinet/in.h 
11008                         $i_netdb netdb.h
11009                         $i_unistd unistd.h"
11010                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11011                         case "$netdb_net_type" in
11012                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11013                                 if ./protochk "$try" $hdrs; then
11014                                         echo "Your system accepts $xxx."
11015                                         netdb_net_type="$xxx"
11016                                 fi
11017                                 ;;
11018                         esac
11019                 done
11020                 : In case none of those worked, prompt the user.
11021                 case "$netdb_net_type" in
11022                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11023                         dflt='long'
11024                         . ./myread
11025                         netdb_net_type=$ans
11026                         ;;
11027                 esac
11028                 ;;
11029         *)      : no getnetbyaddr, so pick harmless default
11030                 netdb_net_type='long'
11031                 ;;
11032         esac
11033 fi
11034 : locate the preferred pager for this system
11035 case "$pager" in
11036 '')
11037         dflt=''
11038         case "$pg" in
11039         /*) dflt=$pg;;
11040         esac
11041         case "$more" in
11042         /*) dflt=$more;;
11043         esac
11044         case "$less" in
11045         /*) dflt=$less;;
11046         esac
11047         case "$dflt" in
11048         '') dflt=/usr/ucb/more;;
11049         esac
11050         ;;
11051 *) dflt="$pager";;
11052 esac
11053 echo " "
11054 fn=f/
11055 rp='What pager is used on your system?'
11056 . ./getfile
11057 pager="$ans"
11058
11059 : see what type pids are declared as in the kernel
11060 rp="What is the type of process ids on this system?"
11061 set pid_t pidtype int stdio.h sys/types.h
11062 eval $typedef_ask
11063
11064 : check for length of pointer
11065 echo " "
11066 case "$ptrsize" in
11067 '')
11068         $echo $n "Checking to see how big your pointers are...$c" >&4
11069         if test "$voidflags" -gt 7; then
11070                 echo '#define VOID_PTR char *' > try.c
11071         else
11072                 echo '#define VOID_PTR void *' > try.c
11073         fi
11074         $cat >>try.c <<'EOCP'
11075 #include <stdio.h>
11076 main()
11077 {
11078         printf("%d\n", sizeof(VOID_PTR));
11079         exit(0);
11080 }
11081 EOCP
11082         set try
11083         if eval $compile_ok; then
11084                 ptrsize=`./try`
11085                 $echo " $ptrsize bytes." >&4
11086         else
11087                 dflt='4'
11088                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11089                 rp="What is the size of a pointer (in bytes)?"
11090                 . ./myread
11091                 ptrsize="$ans"
11092         fi
11093         ;;
11094 esac
11095 $rm -f try.c try
11096
11097 : see if ar generates random libraries by itself
11098 echo " "
11099 echo "Checking how to generate random libraries on your machine..." >&4
11100 echo 'int bar1() { return bar2(); }' > bar1.c
11101 echo 'int bar2() { return 2; }' > bar2.c
11102 $cat > foo.c <<'EOP'
11103 main() { printf("%d\n", bar1()); exit(0); }
11104 EOP
11105 $cc $ccflags -c bar1.c >/dev/null 2>&1
11106 $cc $ccflags -c bar2.c >/dev/null 2>&1
11107 $cc $ccflags -c foo.c >/dev/null 2>&1
11108 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11109 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11110         ./foobar >/dev/null 2>&1; then
11111         echo "$ar appears to generate random libraries itself."
11112         orderlib=false
11113         ranlib=":"
11114 elif $ar ts bar$_a >/dev/null 2>&1 &&
11115         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11116         ./foobar >/dev/null 2>&1; then
11117                 echo "a table of contents needs to be added with '$ar ts'."
11118                 orderlib=false
11119                 ranlib="$ar ts"
11120 else
11121         case "$ranlib" in
11122         :) ranlib='';;
11123         '')
11124                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11125                 $test -f $ranlib || ranlib=''
11126                 ;;
11127         esac
11128         if $test -n "$ranlib"; then
11129                 echo "your system has '$ranlib'; we'll use that."
11130                 orderlib=false
11131         else
11132                 echo "your system doesn't seem to support random libraries"
11133                 echo "so we'll use lorder and tsort to order the libraries."
11134                 orderlib=true
11135                 ranlib=":"
11136         fi
11137 fi
11138 $rm -f foo* bar* 
11139
11140 : check for type of arguments to select. 
11141 case "$selecttype" in
11142 '') case "$d_select" in
11143         $define)
11144                 $cat <<EOM
11145 Checking to see what type of arguments are accepted by select().
11146 EOM
11147                 hdrs="$define sys/types.h
11148                         $i_systime sys/time.h 
11149                         $i_sysselct sys/select.h
11150                         $d_socket sys/socket.h"
11151                 : The first arg can be int, unsigned, or size_t
11152                 : The last arg may or may not be 'const'
11153                 val=''
11154                 : void pointer has been seen but using that
11155                 : breaks the selectminbits test
11156                 for xxx in 'fd_set *' 'int *'; do
11157                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11158                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11159                                         case "$val" in
11160                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11161                                                 if ./protochk "$try" $hdrs; then
11162                                                         echo "Your system accepts $xxx."
11163                                                         val="$xxx"
11164                                                 fi
11165                                                 ;;
11166                                         esac
11167                                 done
11168                         done
11169                 done
11170                 case "$val" in
11171                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11172                         case "$d_fd_set" in
11173                                 $define) dflt="fd_set *" ;;
11174                                 *)              dflt="int *" ;;
11175                         esac
11176                         . ./myread
11177                         val=$ans
11178                         ;;
11179                 esac
11180                 selecttype="$val"
11181                 ;;
11182         *)      : no select, so pick a harmless default
11183                 selecttype='int *'
11184                 ;;
11185         esac
11186         ;;
11187 esac
11188
11189 : check for the select 'width'
11190 case "$selectminbits" in
11191 '') case "$d_select" in
11192         $define)
11193                 $cat <<EOM
11194
11195 Checking to see on how many bits at a time your select() operates...
11196 EOM
11197                 $cat >try.c <<EOCP
11198 #include <sys/types.h>
11199 #$i_time I_TIME
11200 #$i_systime I_SYS_TIME
11201 #$i_systimek I_SYS_TIME_KERNEL
11202 #ifdef I_TIME
11203 #   include <time.h>
11204 #endif
11205 #ifdef I_SYS_TIME
11206 #   ifdef I_SYS_TIME_KERNEL
11207 #       define KERNEL
11208 #   endif
11209 #   include <sys/time.h>
11210 #   ifdef I_SYS_TIME_KERNEL
11211 #       undef KERNEL
11212 #   endif
11213 #endif
11214 #$i_sysselct I_SYS_SELECT
11215 #ifdef I_SYS_SELECT
11216 #include <sys/select.h>
11217 #endif
11218 #include <stdio.h>
11219 $selecttype b;
11220 #define S sizeof(*(b))
11221 #define MINBITS 64
11222 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11223 #define NBITS  (NBYTES * 8)
11224 int main() {
11225     char s[NBYTES];
11226     struct timeval t;
11227     int i;
11228     FILE* fp;
11229     int fd;
11230
11231     fclose(stdin);
11232     fp = fopen("try.c", "r");
11233     if (fp == 0)
11234       exit(1);
11235     fd = fileno(fp);
11236     if (fd < 0)
11237       exit(2);
11238     b = ($selecttype)s;
11239     for (i = 0; i < NBITS; i++)
11240         FD_SET(i, b);
11241     t.tv_sec  = 0;
11242     t.tv_usec = 0;
11243     select(fd + 1, b, 0, 0, &t);
11244     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11245     printf("%d\n", i + 1);
11246     return 0;
11247 }
11248 EOCP
11249                 set try
11250                 if eval $compile_ok; then
11251                         selectminbits=`./try`
11252                         case "$selectminbits" in
11253                         '')     cat >&4 <<EOM
11254 Cannot figure out on how many bits at a time your select() operates.
11255 I'll play safe and guess it is 32 bits.
11256 EOM
11257                                 selectminbits=32
11258                                 bits="32 bits"
11259                                 ;;
11260                         1)      bits="1 bit" ;;
11261                         *)      bits="$selectminbits bits" ;;
11262                         esac
11263                         echo "Your select() operates on $bits at a time." >&4
11264                 else
11265                         rp='What is the minimum number of bits your select() operates on?'
11266                         case "$byteorder" in
11267                         1234|12345678)  dflt=32 ;;
11268                         *)              dflt=1  ;;
11269                         esac
11270                         . ./myread
11271                         val=$ans
11272                         selectminbits="$val"
11273                 fi
11274                 $rm -f try.* try
11275                 ;;
11276         *)      : no select, so pick a harmless default
11277                 selectminbits='32'
11278                 ;;
11279         esac
11280         ;;
11281 esac
11282
11283 : Trace out the files included by signal.h, then look for SIGxxx names.
11284 : Remove SIGARRAYSIZE used by HPUX.
11285 : Remove SIGTYP void lines used by OS2.
11286 xxx=`echo '#include <signal.h>' |
11287         $cppstdin $cppminus $cppflags 2>/dev/null |
11288         $grep '^[       ]*#.*include' | 
11289         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11290 : Check this list of files to be sure we have parsed the cpp output ok.
11291 : This will also avoid potentially non-existent files, such 
11292 : as ../foo/bar.h
11293 xxxfiles=''
11294 for xx in $xxx /dev/null ; do
11295         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11296 done
11297 : If we have found no files, at least try signal.h
11298 case "$xxxfiles" in
11299 '')     xxxfiles=`./findhdr signal.h` ;;
11300 esac
11301 xxx=`awk '
11302 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11303         print substr($2, 4, 20)
11304 }
11305 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11306         print substr($3, 4, 20)
11307 }' $xxxfiles`
11308 : Append some common names just in case the awk scan failed.
11309 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11310 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11311 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11312 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11313 : generate a few handy files for later
11314 $cat > signal.c <<'EOCP'
11315 #include <sys/types.h>
11316 #include <signal.h>
11317 #include <stdio.h>
11318 int main() {
11319
11320 /* Strange style to avoid deeply-nested #if/#else/#endif */
11321 #ifndef NSIG
11322 #  ifdef _NSIG
11323 #    define NSIG (_NSIG)
11324 #  endif
11325 #endif
11326
11327 #ifndef NSIG
11328 #  ifdef SIGMAX
11329 #    define NSIG (SIGMAX+1)
11330 #  endif
11331 #endif
11332
11333 #ifndef NSIG
11334 #  ifdef SIG_MAX
11335 #    define NSIG (SIG_MAX+1)
11336 #  endif
11337 #endif
11338
11339 #ifndef NSIG
11340 #  ifdef MAXSIG
11341 #    define NSIG (MAXSIG+1)
11342 #  endif
11343 #endif
11344
11345 #ifndef NSIG
11346 #  ifdef MAX_SIG
11347 #    define NSIG (MAX_SIG+1)
11348 #  endif
11349 #endif
11350
11351 #ifndef NSIG
11352 #  ifdef SIGARRAYSIZE
11353 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11354 #  endif
11355 #endif
11356
11357 #ifndef NSIG
11358 #  ifdef _sys_nsig
11359 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11360 #  endif
11361 #endif
11362
11363 /* Default to some arbitrary number that's big enough to get most
11364    of the common signals.
11365 */
11366 #ifndef NSIG
11367 #    define NSIG 50
11368 #endif
11369
11370 printf("NSIG %d\n", NSIG);
11371
11372 #ifndef JUST_NSIG
11373
11374 EOCP
11375
11376 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11377 {
11378         printf "#ifdef SIG"; printf $1; printf "\n"
11379         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11380         printf $1; printf ");\n"
11381         printf "#endif\n"
11382 }
11383 END {
11384         printf "#endif /* JUST_NSIG */\n";
11385         printf "}\n";
11386 }
11387 ' >>signal.c
11388 $cat >signal.awk <<'EOP'
11389 BEGIN { ndups = 0 }
11390 $1 ~ /^NSIG$/ { nsig = $2 }
11391 ($1 !~ /^NSIG$/) && (NF == 2) {
11392     if ($2 > maxsig) { maxsig = $2 }
11393     if (sig_name[$2]) {
11394         dup_name[ndups] = $1
11395         dup_num[ndups] = $2
11396         ndups++ 
11397     }
11398     else {
11399         sig_name[$2] = $1
11400         sig_num[$2] = $2
11401     }
11402
11403 }
11404 END { 
11405     if (nsig == 0) { nsig = maxsig + 1 }
11406         for (n = 1; n < nsig; n++) {
11407                 if (sig_name[n]) {
11408                         printf("%s %d\n", sig_name[n], sig_num[n])
11409                 }
11410                 else {
11411                         printf("NUM%d %d\n", n, n) 
11412                 }
11413         }
11414     for (n = 0; n < ndups; n++) {
11415                 printf("%s %d\n", dup_name[n], dup_num[n])
11416     }
11417 }
11418 EOP
11419 $cat >signal_cmd <<EOS
11420 $startsh
11421 if $test -s signal.lst; then
11422     echo "Using your existing signal.lst file"
11423         exit 0
11424 fi
11425 xxx="$xxx"
11426 EOS
11427 $cat >>signal_cmd <<'EOS'
11428
11429 set signal
11430 if eval $compile_ok; then
11431         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11432 else
11433         echo "(I can't seem be able to compile the whole test program)" >&4
11434         echo "(I'll try it in little pieces.)" >&4
11435         set signal -DJUST_NSIG
11436         if eval $compile_ok; then
11437                 ./signal$_exe > signal.nsg
11438                 $cat signal.nsg
11439         else
11440                 echo "I can't seem to figure out how many signals you have." >&4
11441                 echo "Guessing 50." >&4
11442                 echo 'NSIG 50' > signal.nsg
11443         fi
11444         : Now look at all the signal names, one at a time.
11445         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11446                 $cat > signal.c <<EOCP
11447 #include <sys/types.h>
11448 #include <signal.h>
11449 #include <stdio.h>
11450 int main() {
11451 printf("$xx %d\n", SIG${xx});
11452 return 0;
11453 }
11454 EOCP
11455                 set signal
11456                 if eval $compile; then
11457                         echo "SIG${xx} found."
11458                         ./signal$_exe  >> signal.ls1
11459                 else
11460                         echo "SIG${xx} NOT found."
11461                 fi
11462         done
11463         if $test -s signal.ls1; then
11464                 $cat signal.nsg signal.ls1 |
11465                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11466         fi
11467
11468 fi
11469 if $test -s signal.lst; then
11470         :
11471 else
11472         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11473         echo 'kill -l' >signal
11474         set X `csh -f <signal`
11475         $rm -f signal
11476         shift
11477         case $# in
11478         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11479         esac
11480         echo $@ | $tr ' ' $trnl | \
11481                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11482 fi
11483 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11484 EOS
11485 chmod a+x signal_cmd
11486 $eunicefix signal_cmd
11487
11488 : generate list of signal names
11489 echo " "
11490 case "$sig_name_init" in
11491 '') doinit=yes ;;
11492 *)  case "$sig_num_init" in
11493     ''|*,*) doinit=yes ;;
11494     esac ;;
11495 esac
11496 case "$doinit" in
11497 yes)
11498         echo "Generating a list of signal names and numbers..." >&4
11499         . ./signal_cmd
11500         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11501         sig_name="ZERO $sig_name"
11502         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11503                                                 { printf "\"%s\", ", $1 }
11504                                                 END { printf "0\n" }' signal.lst`
11505         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11506         sig_num="0 $sig_num"
11507         sig_num_init=`$awk 'BEGIN { printf "0, " }
11508                                         { printf "%d, ", $2}
11509                                         END { printf "0\n"}' signal.lst`
11510         ;;
11511 esac
11512 echo "The following signals are available:"
11513 echo " "
11514 echo $sig_name | $awk \
11515 'BEGIN { linelen = 0 }
11516 {
11517         for (i = 1; i <= NF; i++) {
11518                 name = "SIG" $i " "
11519                 linelen = linelen + length(name)
11520                 if (linelen > 70) {
11521                         printf "\n"
11522                         linelen = length(name)
11523                 }
11524                 printf "%s", name
11525         }
11526         printf "\n"
11527 }'
11528 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11529
11530 : see what type is used for signed size_t
11531 set ssize_t ssizetype int stdio.h sys/types.h
11532 eval $typedef
11533 dflt="$ssizetype"
11534 $cat > ssize.c <<EOM
11535 #include <stdio.h>
11536 #include <sys/types.h>
11537 #define Size_t $sizetype
11538 #define SSize_t $dflt
11539 main()
11540 {
11541         if (sizeof(Size_t) == sizeof(SSize_t))
11542                 printf("$dflt\n");
11543         else if (sizeof(Size_t) == sizeof(int))
11544                 printf("int\n");
11545         else 
11546                 printf("long\n");
11547         exit(0);
11548 }
11549 EOM
11550 echo " "
11551 set ssize
11552 if eval $compile_ok && ./ssize > /dev/null; then
11553         ssizetype=`./ssize`
11554         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11555 else
11556         $cat >&4 <<EOM
11557 Help! I can't compile and run the ssize_t test program: please enlighten me!
11558 (This is probably a misconfiguration in your system or libraries, and
11559 you really ought to fix it.  Still, I'll try anyway.)
11560
11561 I need a type that is the same size as $sizetype, but is guaranteed to
11562 be signed.  Common values are ssize_t, int and long.
11563
11564 EOM
11565         rp="What signed type is the same size as $sizetype?"
11566         . ./myread
11567         ssizetype="$ans"
11568 fi
11569 $rm -f ssize ssize.*
11570
11571 : see what type of char stdio uses.
11572 echo " "
11573 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11574         echo "Your stdio uses unsigned chars." >&4
11575         stdchar="unsigned char"
11576 else
11577         echo "Your stdio uses signed chars." >&4
11578         stdchar="char"
11579 fi
11580
11581 : see if time exists
11582 echo " "
11583 if test "X$d_time" = X -o X"$timetype" = X; then
11584     if set time val -f d_time; eval $csym; $val; then
11585                 echo 'time() found.' >&4
11586                 val="$define"
11587                 rp="What is the type returned by time() on this system?"
11588                 set time_t timetype long stdio.h sys/types.h
11589                 eval $typedef_ask
11590     else
11591                 echo 'time() not found, hope that will do.' >&4
11592                 val="$undef"
11593                 timetype='int';
11594     fi
11595     set d_time
11596     eval $setvar
11597 fi
11598
11599 : see what type uids are declared as in the kernel
11600 echo " "
11601 echo "Looking for the type for user ids returned by getuid()."
11602 set uid_t uidtype xxx stdio.h sys/types.h
11603 eval $typedef
11604 case "$uidtype" in
11605 xxx)
11606         xxx=`./findhdr sys/user.h`
11607         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11608         case $1 in
11609         unsigned) dflt="$1 $2" ;;
11610         *) dflt="$1" ;;
11611         esac
11612         ;;
11613 *) dflt="$uidtype";;
11614 esac
11615 case "$uidtype" in
11616 uid_t)  echo "uid_t found." ;;
11617 *)      rp="What is the type for user ids returned by getuid()?"
11618         . ./myread
11619         uidtype="$ans"
11620         ;;
11621 esac
11622
11623 : see if dbm.h is available
11624 : see if dbmclose exists
11625 set dbmclose d_dbmclose
11626 eval $inlibc
11627
11628 case "$d_dbmclose" in
11629 $define)
11630         set dbm.h i_dbm
11631         eval $inhdr
11632         case "$i_dbm" in
11633         $define)
11634                 val="$undef"
11635                 set i_rpcsvcdbm
11636                 eval $setvar
11637                 ;;
11638         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11639                 eval $inhdr
11640                 ;;
11641         esac
11642         ;;
11643 *)      echo "We won't be including <dbm.h>"
11644         val="$undef"
11645         set i_dbm
11646         eval $setvar
11647         val="$undef"
11648         set i_rpcsvcdbm
11649         eval $setvar
11650         ;;
11651 esac
11652
11653 : see if this is a sys/file.h system
11654 val=''
11655 set sys/file.h val
11656 eval $inhdr
11657
11658 : do we need to include sys/file.h ?
11659 case "$val" in
11660 "$define")
11661         echo " "
11662         if $h_sysfile; then
11663                 val="$define"
11664                 echo "We'll be including <sys/file.h>." >&4
11665         else
11666                 val="$undef"
11667                 echo "We won't be including <sys/file.h>." >&4
11668         fi
11669         ;;
11670 *)
11671         h_sysfile=false
11672         ;;
11673 esac
11674 set i_sysfile
11675 eval $setvar
11676
11677 : see if fcntl.h is there
11678 val=''
11679 set fcntl.h val
11680 eval $inhdr
11681
11682 : see if we can include fcntl.h
11683 case "$val" in
11684 "$define")
11685         echo " "
11686         if $h_fcntl; then
11687                 val="$define"
11688                 echo "We'll be including <fcntl.h>." >&4
11689         else
11690                 val="$undef"
11691                 if $h_sysfile; then
11692         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11693                 else
11694                         echo "We won't be including <fcntl.h>." >&4
11695                 fi
11696         fi
11697         ;;
11698 *)
11699         h_fcntl=false
11700         val="$undef"
11701         ;;
11702 esac
11703 set i_fcntl
11704 eval $setvar
11705
11706 : see if locale.h is available
11707 set locale.h i_locale
11708 eval $inhdr
11709
11710 : see if mach cthreads are available
11711 if test "X$usethreads" = "X$define"; then
11712         set mach/cthreads.h i_machcthr
11713         eval $inhdr
11714 else
11715         i_machcthr="$undef"
11716 fi
11717
11718
11719
11720 : see if this is a math.h system
11721 set math.h i_math
11722 eval $inhdr
11723
11724 : see if this is a mntent.h system
11725 set mntent.h i_mntent
11726 eval $inhdr
11727
11728 : see if ndbm.h is available
11729 set ndbm.h t_ndbm
11730 eval $inhdr
11731 case "$t_ndbm" in
11732 $define)
11733         : see if dbm_open exists
11734         set dbm_open d_dbm_open
11735         eval $inlibc
11736         case "$d_dbm_open" in
11737         $undef)
11738                 t_ndbm="$undef"
11739                 echo "We won't be including <ndbm.h>"
11740                 ;;
11741         esac
11742         ;;
11743 esac
11744 val="$t_ndbm"
11745 set i_ndbm
11746 eval $setvar
11747
11748 : see if net/errno.h is available
11749 val=''
11750 set net/errno.h val
11751 eval $inhdr
11752
11753 : Unfortunately, it causes problems on some systems.  Arrgh.
11754 case "$val" in
11755 $define)
11756         cat > try.c <<'EOM'
11757 #include <stdio.h>
11758 #include <errno.h>
11759 #include <net/errno.h>
11760 int func()
11761 {
11762         return ENOTSOCK;
11763 }
11764 EOM
11765         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11766                 echo "We'll be including <net/errno.h>." >&4
11767         else
11768                 echo "We won't be including <net/errno.h>." >&4
11769                 val="$undef"
11770         fi
11771         $rm -f try.* try
11772         ;;
11773 esac
11774 set i_neterrno
11775 eval $setvar
11776
11777 : see if this is a poll.h system
11778 set poll.h i_poll
11779 eval $inhdr
11780
11781 : get C preprocessor symbols handy
11782 echo " "
11783 $echo $n "Hmm... $c"
11784 echo $al | $tr ' ' $trnl >Cppsym.know
11785 $cat <<EOSS >Cppsym
11786 $startsh
11787 case "\$1" in
11788 -l) list=true
11789         shift
11790         ;;
11791 esac
11792 unknown=''
11793 case "\$list\$#" in
11794 1|2)
11795         for sym do
11796                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11797                         exit 0
11798                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11799                         :
11800                 else
11801                         unknown="\$unknown \$sym"
11802                 fi
11803         done
11804         set X \$unknown
11805         shift
11806         ;;
11807 esac
11808 case \$# in
11809 0) exit 1;;
11810 esac
11811 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11812 #ifdef \1\\
11813 exit 0; _ _ _ _\1\\      \1\\
11814 #endif\\
11815 /' >Cppsym\$\$
11816 echo "exit 1; _ _ _" >>Cppsym\$\$
11817 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11818 case "\$list" in
11819 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11820 *)
11821         sh Cppsym2\$\$
11822         status=\$?
11823         ;;
11824 esac
11825 $rm -f Cppsym\$\$ Cppsym2\$\$
11826 exit \$status
11827 EOSS
11828 chmod +x Cppsym
11829 $eunicefix Cppsym
11830 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11831
11832 : now check the C compiler for additional symbols
11833 $cat >ccsym <<EOS
11834 $startsh
11835 $cat >tmp.c <<EOF
11836 extern int foo;
11837 EOF
11838 for i in \`$cc -v -c tmp.c 2>&1\`
11839 do
11840         case "\$i" in
11841         -D*) echo "\$i" | $sed 's/^-D//';;
11842         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11843         esac
11844 done
11845 $rm -f try.c
11846 EOS
11847 chmod +x ccsym
11848 $eunicefix ccsym
11849 ./ccsym > ccsym1.raw
11850 if $test -s ccsym1.raw; then
11851        $sort ccsym1.raw | $uniq >ccsym.raw
11852 else
11853        mv ccsym1.raw ccsym.raw
11854 fi
11855
11856 $awk '/\=/ { print $0; next }
11857         { print $0"=1" }' ccsym.raw >ccsym.list
11858 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11859 $comm -13 ccsym.true ccsym.list >ccsym.own
11860 $comm -12 ccsym.true ccsym.list >ccsym.com
11861 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11862 also=''
11863 symbols='symbols'
11864 if $test -z ccsym.raw; then
11865         echo "Your C compiler doesn't seem to define any symbol!" >&4
11866         echo " "
11867         echo "However, your C preprocessor defines the following ones:"
11868         $cat Cppsym.true
11869 else
11870         if $test -s ccsym.com; then
11871                 echo "Your C compiler and pre-processor define these symbols:"
11872                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11873                 also='also '
11874                 symbols='ones'
11875                 $test "$silent" || sleep 1
11876         fi
11877         if $test -s ccsym.cpp; then
11878                 $test "$also" && echo " "
11879                 echo "Your C pre-processor ${also}defines the following $symbols:"
11880                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11881                 also='further '
11882                 $test "$silent" || sleep 1
11883         fi
11884         if $test -s ccsym.own; then
11885                 $test "$also" && echo " "
11886                 echo "Your C compiler ${also}defines the following cpp variables:"
11887                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11888                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11889                 $test "$silent" || sleep 1
11890         fi
11891 fi
11892 $rm -f ccsym*
11893
11894 : see if this is a termio system
11895 val="$undef"
11896 val2="$undef"
11897 val3="$undef"
11898 if $test `./findhdr termios.h`; then
11899         set tcsetattr i_termios
11900         eval $inlibc
11901         val3="$i_termios"
11902 fi
11903 echo " "
11904 case "$val3" in
11905 "$define") echo "You have POSIX termios.h... good!" >&4;;
11906 *) if ./Cppsym pyr; then
11907                 case "`/bin/universe`" in
11908                 ucb) if $test `./findhdr sgtty.h`; then
11909                                 val2="$define"
11910                                 echo "<sgtty.h> found." >&4
11911                         else
11912                                 echo "System is pyramid with BSD universe."
11913                                 echo "<sgtty.h> not found--you could have problems." >&4
11914                         fi;;
11915                 *) if $test `./findhdr termio.h`; then
11916                                 val="$define"
11917                                 echo "<termio.h> found." >&4
11918                         else
11919                                 echo "System is pyramid with USG universe."
11920                                 echo "<termio.h> not found--you could have problems." >&4
11921                         fi;;
11922                 esac
11923         elif ./usg; then
11924                 if $test `./findhdr termio.h`; then
11925                         echo "<termio.h> found." >&4
11926                         val="$define"
11927                 elif $test `./findhdr sgtty.h`; then
11928                         echo "<sgtty.h> found." >&4
11929                         val2="$define"
11930                 else
11931 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11932                 fi
11933         else
11934                 if $test `./findhdr sgtty.h`; then
11935                         echo "<sgtty.h> found." >&4
11936                         val2="$define"
11937                 elif $test `./findhdr termio.h`; then
11938                         echo "<termio.h> found." >&4
11939                         val="$define"
11940                 else
11941 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11942                 fi
11943         fi;;
11944 esac
11945 set i_termio; eval $setvar
11946 val=$val2; set i_sgtty; eval $setvar
11947 val=$val3; set i_termios; eval $setvar
11948
11949 : see if stdarg is available
11950 echo " "
11951 if $test `./findhdr stdarg.h`; then
11952         echo "<stdarg.h> found." >&4
11953         valstd="$define"
11954 else
11955         echo "<stdarg.h> NOT found." >&4
11956         valstd="$undef"
11957 fi
11958
11959 : see if varags is available
11960 echo " "
11961 if $test `./findhdr varargs.h`; then
11962         echo "<varargs.h> found." >&4
11963 else
11964         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11965 fi
11966
11967 : set up the varargs testing programs
11968 $cat > varargs.c <<EOP
11969 #ifdef I_STDARG
11970 #include <stdarg.h>
11971 #endif
11972 #ifdef I_VARARGS
11973 #include <varargs.h>
11974 #endif
11975
11976 #ifdef I_STDARG
11977 int f(char *p, ...)
11978 #else
11979 int f(va_alist)
11980 va_dcl
11981 #endif
11982 {
11983         va_list ap;
11984 #ifndef I_STDARG
11985         char *p;
11986 #endif
11987 #ifdef I_STDARG
11988         va_start(ap,p);
11989 #else
11990         va_start(ap);
11991         p = va_arg(ap, char *);
11992 #endif
11993         va_end(ap);
11994 }
11995 EOP
11996 $cat > varargs <<EOP
11997 $startsh
11998 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
11999         echo "true"
12000 else
12001         echo "false"
12002 fi
12003 $rm -f varargs$_o
12004 EOP
12005 chmod +x varargs
12006
12007 : now check which varargs header should be included
12008 echo " "
12009 i_varhdr=''
12010 case "$valstd" in
12011 "$define")
12012         if `./varargs I_STDARG`; then
12013                 val='stdarg.h'
12014         elif `./varargs I_VARARGS`; then
12015                 val='varargs.h'
12016         fi
12017         ;;
12018 *)
12019         if `./varargs I_VARARGS`; then
12020                 val='varargs.h'
12021         fi
12022         ;;
12023 esac
12024 case "$val" in
12025 '')
12026 echo "I could not find the definition for va_dcl... You have problems..." >&4
12027         val="$undef"; set i_stdarg; eval $setvar
12028         val="$undef"; set i_varargs; eval $setvar
12029         ;;
12030 *) 
12031         set i_varhdr
12032         eval $setvar
12033         case "$i_varhdr" in
12034         stdarg.h)
12035                 val="$define"; set i_stdarg; eval $setvar
12036                 val="$undef"; set i_varargs; eval $setvar
12037                 ;;
12038         varargs.h)
12039                 val="$undef"; set i_stdarg; eval $setvar
12040                 val="$define"; set i_varargs; eval $setvar
12041                 ;;
12042         esac
12043         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12044 esac
12045 $rm -f varargs*
12046
12047 : see if stddef is available
12048 set stddef.h i_stddef
12049 eval $inhdr
12050
12051 : see if sys/access.h is available
12052 set sys/access.h i_sysaccess
12053 eval $inhdr
12054
12055 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12056 set sys/filio.h i_sysfilio
12057 eval $inhdr
12058 echo " "
12059 if $test `./findhdr sys/ioctl.h`; then
12060         val="$define"
12061         echo '<sys/ioctl.h> found.' >&4
12062 else
12063         val="$undef"
12064         if $test $i_sysfilio = "$define"; then
12065             echo '<sys/ioctl.h> NOT found.' >&4
12066         else
12067                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12068                 $test $i_termio = "$define" && xxx="termio.h"
12069                 $test $i_termios = "$define" && xxx="termios.h"
12070 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12071         fi
12072 fi
12073 set i_sysioctl
12074 eval $setvar
12075
12076 : see if this is a sys/param system
12077 set sys/param.h i_sysparam
12078 eval $inhdr
12079
12080 : see if sys/resource.h has to be included
12081 set sys/resource.h i_sysresrc
12082 eval $inhdr
12083
12084 : see if sys/security.h is available
12085 set sys/security.h i_syssecrt
12086 eval $inhdr
12087
12088 : see if this is a sys/statvfs.h system
12089 set sys/statvfs.h i_sysstatvfs
12090 eval $inhdr
12091
12092 : see if this is a sys/un.h system
12093 set sys/un.h i_sysun
12094 eval $inhdr
12095
12096 : see if this is a syswait system
12097 set sys/wait.h i_syswait
12098 eval $inhdr
12099
12100 : see if this is an utime system
12101 set utime.h i_utime
12102 eval $inhdr
12103
12104 : see if this is a values.h system
12105 set values.h i_values
12106 eval $inhdr
12107
12108 : see if this is a vfork system
12109 case "$d_vfork" in
12110 "$define")
12111         set vfork.h i_vfork
12112         eval $inhdr
12113         ;;
12114 *)
12115         i_vfork="$undef"
12116         ;;
12117 esac
12118
12119 : see if gdbm.h is available
12120 set gdbm.h t_gdbm
12121 eval $inhdr
12122 case "$t_gdbm" in
12123 $define)
12124         : see if gdbm_open exists
12125         set gdbm_open d_gdbm_open
12126         eval $inlibc
12127         case "$d_gdbm_open" in
12128         $undef)
12129                 t_gdbm="$undef"
12130                 echo "We won't be including <gdbm.h>"
12131                 ;;
12132         esac
12133         ;;
12134 esac
12135 val="$t_gdbm"
12136 set i_gdbm
12137 eval $setvar
12138
12139 echo " "
12140 echo "Looking for extensions..." >&4
12141 tdir=`pwd`
12142 cd $rsrc/ext
12143 : If we are using the old config.sh, known_extensions may contain
12144 : old or inaccurate or duplicate values.
12145 known_extensions=''
12146 nonxs_extensions=''
12147 : We do not use find because it might not be available.
12148 : We do not just use MANIFEST because the user may have dropped
12149 : some additional extensions into the source tree and expect them
12150 : to be built.
12151 for xxx in * ; do
12152         case "$xxx" in
12153         DynaLoader|dynaload) ;;
12154         *)      if $test -f $xxx/$xxx.xs; then
12155                         known_extensions="$known_extensions $xxx"
12156                 elif $test -f $xxx/Makefile.PL; then
12157                         nonxs_extensions="$nonxs_extensions $xxx"
12158                 else
12159                         if $test -d $xxx; then
12160                                 # Look for nested extensions, eg. Devel/Dprof.
12161                                 cd $xxx
12162                                 for yyy in * ; do
12163                                 if $test -f $yyy/$yyy.xs; then
12164                                         known_extensions="$known_extensions $xxx/$yyy"
12165                                 elif $test -f $yyy/Makefile.PL; then
12166                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12167                                 fi
12168                                 done
12169                                 cd ..
12170                         fi
12171                 fi 
12172                 ;;
12173         esac
12174 done
12175 set X $nonxs_extensions
12176 shift
12177 nonxs_extensions="$*"
12178 set X $known_extensions
12179 shift
12180 known_extensions="$*"
12181 cd $tdir
12182
12183 : Now see which are supported on this system.
12184 avail_ext=''
12185 for xxx in $known_extensions ; do
12186         case "$xxx" in
12187         DB_File|db_file)
12188                 case "$i_db" in
12189                 $define) avail_ext="$avail_ext $xxx" ;;
12190                 esac
12191                 ;;
12192         GDBM_File|gdbm_fil)
12193                 case "$i_gdbm" in 
12194                 $define) avail_ext="$avail_ext $xxx" ;;
12195                 esac
12196                 ;;
12197         NDBM_File|ndbm_fil)
12198                 case "$i_ndbm" in
12199                 $define) avail_ext="$avail_ext $xxx" ;;
12200                 esac
12201                 ;;
12202         ODBM_File|odbm_fil) 
12203                 case "${i_dbm}${i_rpcsvcdbm}" in
12204                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12205                 esac
12206                 ;;
12207         POSIX|posix)
12208                 case "$useposix" in
12209                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12210                 esac
12211                 ;;
12212         Opcode|opcode)
12213                 case "$useopcode" in
12214                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12215                 esac
12216                 ;;
12217         Socket|socket)
12218                 case "$d_socket" in 
12219                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12220                 esac
12221                 ;;
12222         Thread|thread)
12223                 case "$usethreads" in 
12224                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12225                 esac
12226                 ;;
12227         IPC/SysV|ipc/sysv)
12228                 : XXX Do we need a useipcsysv variable here
12229                 case "${d_msg}${d_sem}${d_shm}" in 
12230                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12231                 esac
12232                 ;;
12233         *)      avail_ext="$avail_ext $xxx"
12234                 ;;
12235         esac
12236 done
12237
12238 set X $avail_ext
12239 shift
12240 avail_ext="$*"
12241
12242 : Now see which nonxs extensions are supported on this system.
12243 : For now assume all are.
12244 nonxs_ext=''
12245 for xxx in $nonxs_extensions ; do
12246         case "$xxx" in
12247         *)      nonxs_ext="$nonxs_ext $xxx"
12248                 ;;
12249         esac
12250 done
12251
12252 set X $nonxs_ext
12253 shift
12254 nonxs_ext="$*"
12255
12256 case $usedl in
12257 $define)
12258         $cat <<EOM
12259 A number of extensions are supplied with $package.  You may choose to
12260 compile these extensions for dynamic loading (the default), compile
12261 them into the $package executable (static loading), or not include
12262 them at all.  Answer "none" to include no extensions.
12263 Note that DynaLoader is always built and need not be mentioned here.
12264
12265 EOM
12266         case "$dynamic_ext" in
12267         '') dflt="$avail_ext" ;;
12268         *)      dflt="$dynamic_ext"
12269                 # Perhaps we are reusing an old out-of-date config.sh.
12270                 case "$hint" in
12271                 previous)
12272                         if test X"$dynamic_ext" != X"$avail_ext"; then
12273                                 $cat <<EOM
12274 NOTICE:  Your previous config.sh list may be incorrect. 
12275 The extensions now available to you are 
12276         ${avail_ext}
12277 but the default list from your previous config.sh is
12278         ${dynamic_ext} 
12279
12280 EOM
12281                         fi
12282                         ;;
12283                 esac
12284                 ;;
12285         esac
12286         case "$dflt" in
12287         '')     dflt=none;;
12288         esac
12289         rp="What extensions do you wish to load dynamically?"
12290         . ./myread
12291         case "$ans" in
12292         none) dynamic_ext=' ' ;;
12293         *) dynamic_ext="$ans" ;;
12294         esac
12295
12296         case "$static_ext" in
12297         '')
12298                 : Exclude those already listed in dynamic linking
12299                 dflt=''
12300                 for xxx in $avail_ext; do
12301                         case " $dynamic_ext " in
12302                         *" $xxx "*) ;;
12303                         *) dflt="$dflt $xxx" ;;
12304                         esac
12305                 done
12306                 set X $dflt
12307                 shift
12308                 dflt="$*"
12309                 ;;
12310         *)  dflt="$static_ext" 
12311                 ;;
12312         esac
12313
12314         case "$dflt" in
12315         '')     dflt=none;;
12316         esac
12317         rp="What extensions do you wish to load statically?"
12318         . ./myread
12319         case "$ans" in
12320         none) static_ext=' ' ;;
12321         *) static_ext="$ans" ;;
12322         esac
12323         ;;
12324 *)
12325         $cat <<EOM
12326 A number of extensions are supplied with $package.  Answer "none" 
12327 to include no extensions. 
12328 Note that DynaLoader is always built and need not be mentioned here.
12329
12330 EOM
12331         case "$static_ext" in
12332         '') dflt="$avail_ext" ;;
12333         *)      dflt="$static_ext"
12334                 # Perhaps we are reusing an old out-of-date config.sh.
12335                 case "$hint" in
12336                 previous)
12337                         if test X"$static_ext" != X"$avail_ext"; then
12338                                 $cat <<EOM
12339 NOTICE:  Your previous config.sh list may be incorrect. 
12340 The extensions now available to you are 
12341         ${avail_ext}
12342 but the default list from your previous config.sh is
12343         ${static_ext} 
12344
12345 EOM
12346                         fi
12347                         ;;
12348                 esac
12349                 ;;
12350         esac
12351         : Exclude those that are not xs extensions
12352         case "$dflt" in
12353         '')     dflt=none;;
12354         esac
12355         rp="What extensions do you wish to include?"
12356         . ./myread
12357         case "$ans" in
12358         none) static_ext=' ' ;;
12359         *) static_ext="$ans" ;;
12360         esac
12361         ;;
12362 esac
12363
12364 set X $dynamic_ext $static_ext $nonxs_ext
12365 shift
12366 extensions="$*"
12367
12368 : Remove build directory name from cppstdin so it can be used from
12369 : either the present location or the final installed location.
12370 echo " "
12371 : Get out of the UU directory to get correct path name.
12372 cd ..
12373 case "$cppstdin" in
12374 `pwd`/cppstdin)
12375         echo "Stripping down cppstdin path name"
12376         cppstdin=cppstdin
12377         ;;
12378 esac
12379 cd UU
12380
12381 : end of configuration questions
12382 echo " "
12383 echo "End of configuration questions."
12384 echo " "
12385
12386 : back to where it started
12387 if test -d ../UU; then
12388         cd ..
12389 fi
12390
12391 : configuration may be patched via a 'config.over' file
12392 if $test -f config.over; then
12393         echo " "
12394         dflt=y
12395         rp='I see a config.over file.  Do you wish to load it?'
12396         . UU/myread
12397         case "$ans" in
12398         n*) echo "OK, I'll ignore it.";;
12399         *)      . ./config.over
12400                 echo "Configuration override changes have been loaded."
12401                 ;;
12402         esac
12403 fi
12404
12405 : in case they want portability, strip down executable paths
12406 case "$d_portable" in
12407 "$define")
12408         echo " "
12409         echo "Stripping down executable paths..." >&4
12410         for file in $loclist $trylist; do
12411                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12412                         eval $file="\$file"
12413                 fi
12414         done
12415         ;;
12416 esac
12417
12418 : create config.sh file
12419 echo " "
12420 echo "Creating config.sh..." >&4
12421 $spitshell <<EOT >config.sh
12422 $startsh
12423 #
12424 # This file was produced by running the Configure script. It holds all the
12425 # definitions figured out by Configure. Should you modify one of these values,
12426 # do not forget to propagate your changes by running "Configure -der". You may
12427 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12428 #
12429
12430 # Package name      : $package
12431 # Source directory  : $src
12432 # Configuration time: $cf_time
12433 # Configured by     : $cf_by
12434 # Target system     : $myuname
12435
12436 Author='$Author'
12437 Date='$Date'
12438 Header='$Header'
12439 Id='$Id'
12440 Locker='$Locker'
12441 Log='$Log'
12442 Mcc='$Mcc'
12443 RCSfile='$RCSfile'
12444 Revision='$Revision'
12445 Source='$Source'
12446 State='$State'
12447 _a='$_a'
12448 _exe='$_exe'
12449 _o='$_o'
12450 afs='$afs'
12451 alignbytes='$alignbytes'
12452 ansi2knr='$ansi2knr'
12453 aphostname='$aphostname'
12454 apiversion='$apiversion'
12455 ar='$ar'
12456 archlib='$archlib'
12457 archlibexp='$archlibexp'
12458 archname64='$archname64'
12459 archname='$archname'
12460 archobjs='$archobjs'
12461 awk='$awk'
12462 baserev='$baserev'
12463 bash='$bash'
12464 bin='$bin'
12465 binexp='$binexp'
12466 bison='$bison'
12467 byacc='$byacc'
12468 byteorder='$byteorder'
12469 c='$c'
12470 castflags='$castflags'
12471 cat='$cat'
12472 cc='$cc'
12473 cccdlflags='$cccdlflags'
12474 ccdlflags='$ccdlflags'
12475 ccflags='$ccflags'
12476 cf_by='$cf_by'
12477 cf_email='$cf_email'
12478 cf_time='$cf_time'
12479 chgrp='$chgrp'
12480 chmod='$chmod'
12481 chown='$chown'
12482 clocktype='$clocktype'
12483 comm='$comm'
12484 compress='$compress'
12485 contains='$contains'
12486 cp='$cp'
12487 cpio='$cpio'
12488 cpp='$cpp'
12489 cpp_stuff='$cpp_stuff'
12490 cppflags='$cppflags'
12491 cpplast='$cpplast'
12492 cppminus='$cppminus'
12493 cpprun='$cpprun'
12494 cppstdin='$cppstdin'
12495 cryptlib='$cryptlib'
12496 csh='$csh'
12497 d_Gconvert='$d_Gconvert'
12498 d_access='$d_access'
12499 d_accessx='$d_accessx'
12500 d_alarm='$d_alarm'
12501 d_archlib='$d_archlib'
12502 d_attribut='$d_attribut'
12503 d_bcmp='$d_bcmp'
12504 d_bcopy='$d_bcopy'
12505 d_bsd='$d_bsd'
12506 d_bsdgetpgrp='$d_bsdgetpgrp'
12507 d_bsdsetpgrp='$d_bsdsetpgrp'
12508 d_bzero='$d_bzero'
12509 d_casti32='$d_casti32'
12510 d_castneg='$d_castneg'
12511 d_charvspr='$d_charvspr'
12512 d_chown='$d_chown'
12513 d_chroot='$d_chroot'
12514 d_chsize='$d_chsize'
12515 d_closedir='$d_closedir'
12516 d_cmsghdr_s='$d_cmsghdr_s'
12517 d_const='$d_const'
12518 d_crypt='$d_crypt'
12519 d_csh='$d_csh'
12520 d_cuserid='$d_cuserid'
12521 d_dbl_dig='$d_dbl_dig'
12522 d_dbmclose64='$d_dbmclose64'
12523 d_dbminit64='$d_dbminit64'
12524 d_delete64='$d_delete64'
12525 d_difftime='$d_difftime'
12526 d_dirent64_s='$d_dirent64_s'
12527 d_dirnamlen='$d_dirnamlen'
12528 d_dlerror='$d_dlerror'
12529 d_dlopen='$d_dlopen'
12530 d_dlsymun='$d_dlsymun'
12531 d_dosuid='$d_dosuid'
12532 d_drand48proto='$d_drand48proto'
12533 d_dup2='$d_dup2'
12534 d_eaccess='$d_eaccess'
12535 d_endgrent='$d_endgrent'
12536 d_endhent='$d_endhent'
12537 d_endnent='$d_endnent'
12538 d_endpent='$d_endpent'
12539 d_endpwent='$d_endpwent'
12540 d_endsent='$d_endsent'
12541 d_eofnblk='$d_eofnblk'
12542 d_eunice='$d_eunice'
12543 d_fchmod='$d_fchmod'
12544 d_fchown='$d_fchown'
12545 d_fcntl='$d_fcntl'
12546 d_fd_macros='$d_fd_macros'
12547 d_fd_set='$d_fd_set'
12548 d_fds_bits='$d_fds_bits'
12549 d_fetch64='$d_fetch64'
12550 d_fgetpos64='$d_fgetpos64'
12551 d_fgetpos='$d_fgetpos'
12552 d_firstkey64='$d_firstkey64'
12553 d_flexfnam='$d_flexfnam'
12554 d_flock64_s='$d_flock64_s'
12555 d_flock='$d_flock'
12556 d_fopen64='$d_fopen64'
12557 d_fork='$d_fork'
12558 d_fpathconf='$d_fpathconf'
12559 d_freopen64='$d_freopen64'
12560 d_fseek64='$d_fseek64'
12561 d_fseeko64='$d_fseeko64'
12562 d_fseeko='$d_fseeko'
12563 d_fsetpos64='$d_fsetpos64'
12564 d_fsetpos='$d_fsetpos'
12565 d_fstat64='$d_fstat64'
12566 d_fstatfs='$d_fstatfs'
12567 d_fstatvfs='$d_fstatvfs'
12568 d_ftell64='$d_ftell64'
12569 d_ftello64='$d_ftello64'
12570 d_ftello='$d_ftello'
12571 d_ftime='$d_ftime'
12572 d_ftruncate64='$d_ftruncate64'
12573 d_getgrent='$d_getgrent'
12574 d_getgrps='$d_getgrps'
12575 d_gethbyaddr='$d_gethbyaddr'
12576 d_gethbyname='$d_gethbyname'
12577 d_gethent='$d_gethent'
12578 d_gethname='$d_gethname'
12579 d_gethostprotos='$d_gethostprotos'
12580 d_getlogin='$d_getlogin'
12581 d_getnbyaddr='$d_getnbyaddr'
12582 d_getnbyname='$d_getnbyname'
12583 d_getnent='$d_getnent'
12584 d_getnetprotos='$d_getnetprotos'
12585 d_getpbyname='$d_getpbyname'
12586 d_getpbynumber='$d_getpbynumber'
12587 d_getpent='$d_getpent'
12588 d_getpgid='$d_getpgid'
12589 d_getpgrp2='$d_getpgrp2'
12590 d_getpgrp='$d_getpgrp'
12591 d_getppid='$d_getppid'
12592 d_getprior='$d_getprior'
12593 d_getprotoprotos='$d_getprotoprotos'
12594 d_getpwent='$d_getpwent'
12595 d_getsbyname='$d_getsbyname'
12596 d_getsbyport='$d_getsbyport'
12597 d_getsent='$d_getsent'
12598 d_getservprotos='$d_getservprotos'
12599 d_gettimeod='$d_gettimeod'
12600 d_gnulibc='$d_gnulibc'
12601 d_grpasswd='$d_grpasswd'
12602 d_htonl='$d_htonl'
12603 d_index='$d_index'
12604 d_inetaton='$d_inetaton'
12605 d_ino64t='$d_ino64t'
12606 d_int64t='$d_int64t'
12607 d_iovec_s='$d_iovec_s'
12608 d_isascii='$d_isascii'
12609 d_killpg='$d_killpg'
12610 d_lchown='$d_lchown'
12611 d_link='$d_link'
12612 d_locconv='$d_locconv'
12613 d_lockf64='$d_lockf64'
12614 d_lockf='$d_lockf'
12615 d_longdbl='$d_longdbl'
12616 d_longlong='$d_longlong'
12617 d_lseek64='$d_lseek64'
12618 d_lstat64='$d_lstat64'
12619 d_lstat='$d_lstat'
12620 d_mblen='$d_mblen'
12621 d_mbstowcs='$d_mbstowcs'
12622 d_mbtowc='$d_mbtowc'
12623 d_memcmp='$d_memcmp'
12624 d_memcpy='$d_memcpy'
12625 d_memmove='$d_memmove'
12626 d_memset='$d_memset'
12627 d_mkdir='$d_mkdir'
12628 d_mkfifo='$d_mkfifo'
12629 d_mktime='$d_mktime'
12630 d_msg='$d_msg'
12631 d_msg_ctrunc='$d_msg_ctrunc'
12632 d_msg_dontroute='$d_msg_dontroute'
12633 d_msg_oob='$d_msg_oob'
12634 d_msg_peek='$d_msg_peek'
12635 d_msg_proxy='$d_msg_proxy'
12636 d_msgctl='$d_msgctl'
12637 d_msgget='$d_msgget'
12638 d_msghdr_s='$d_msghdr_s'
12639 d_msgrcv='$d_msgrcv'
12640 d_msgsnd='$d_msgsnd'
12641 d_mymalloc='$d_mymalloc'
12642 d_nextkey64='$d_nextkey64'
12643 d_nice='$d_nice'
12644 d_off64t='$d_off64t'
12645 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12646 d_oldpthreads='$d_oldpthreads'
12647 d_oldsock='$d_oldsock'
12648 d_open3='$d_open3'
12649 d_open64='$d_open64'
12650 d_opendir64='$d_opendir64'
12651 d_pathconf='$d_pathconf'
12652 d_pause='$d_pause'
12653 d_phostname='$d_phostname'
12654 d_pipe='$d_pipe'
12655 d_poll='$d_poll'
12656 d_portable='$d_portable'
12657 d_pthread_yield='$d_pthread_yield'
12658 d_pwage='$d_pwage'
12659 d_pwchange='$d_pwchange'
12660 d_pwclass='$d_pwclass'
12661 d_pwcomment='$d_pwcomment'
12662 d_pwexpire='$d_pwexpire'
12663 d_pwgecos='$d_pwgecos'
12664 d_pwpasswd='$d_pwpasswd'
12665 d_pwquota='$d_pwquota'
12666 d_readdir64='$d_readdir64'
12667 d_readdir='$d_readdir'
12668 d_readlink='$d_readlink'
12669 d_readv='$d_readv'
12670 d_recvmsg='$d_recvmsg'
12671 d_rename='$d_rename'
12672 d_rewinddir='$d_rewinddir'
12673 d_rmdir='$d_rmdir'
12674 d_safebcpy='$d_safebcpy'
12675 d_safemcpy='$d_safemcpy'
12676 d_sanemcmp='$d_sanemcmp'
12677 d_sched_yield='$d_sched_yield'
12678 d_scm_rights='$d_scm_rights'
12679 d_seekdir64='$d_seekdir64'
12680 d_seekdir='$d_seekdir'
12681 d_select='$d_select'
12682 d_sem='$d_sem'
12683 d_semctl='$d_semctl'
12684 d_semctl_semid_ds='$d_semctl_semid_ds'
12685 d_semctl_semun='$d_semctl_semun'
12686 d_semget='$d_semget'
12687 d_semop='$d_semop'
12688 d_sendmsg='$d_sendmsg'
12689 d_setegid='$d_setegid'
12690 d_seteuid='$d_seteuid'
12691 d_setgrent='$d_setgrent'
12692 d_setgrps='$d_setgrps'
12693 d_sethent='$d_sethent'
12694 d_setlinebuf='$d_setlinebuf'
12695 d_setlocale='$d_setlocale'
12696 d_setnent='$d_setnent'
12697 d_setpent='$d_setpent'
12698 d_setpgid='$d_setpgid'
12699 d_setpgrp2='$d_setpgrp2'
12700 d_setpgrp='$d_setpgrp'
12701 d_setprior='$d_setprior'
12702 d_setpwent='$d_setpwent'
12703 d_setregid='$d_setregid'
12704 d_setresgid='$d_setresgid'
12705 d_setresuid='$d_setresuid'
12706 d_setreuid='$d_setreuid'
12707 d_setrgid='$d_setrgid'
12708 d_setruid='$d_setruid'
12709 d_setsent='$d_setsent'
12710 d_setsid='$d_setsid'
12711 d_setvbuf='$d_setvbuf'
12712 d_sfio='$d_sfio'
12713 d_shm='$d_shm'
12714 d_shmat='$d_shmat'
12715 d_shmatprototype='$d_shmatprototype'
12716 d_shmctl='$d_shmctl'
12717 d_shmdt='$d_shmdt'
12718 d_shmget='$d_shmget'
12719 d_sigaction='$d_sigaction'
12720 d_sigsetjmp='$d_sigsetjmp'
12721 d_socket='$d_socket'
12722 d_sockpair='$d_sockpair'
12723 d_stat64='$d_stat64'
12724 d_statblks='$d_statblks'
12725 d_statfs='$d_statfs'
12726 d_statfsflags='$d_statfsflags'
12727 d_statvfs='$d_statvfs'
12728 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12729 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12730 d_stdiobase='$d_stdiobase'
12731 d_stdstdio='$d_stdstdio'
12732 d_store64='$d_store64'
12733 d_strchr='$d_strchr'
12734 d_strcoll='$d_strcoll'
12735 d_strctcpy='$d_strctcpy'
12736 d_strerrm='$d_strerrm'
12737 d_strerror='$d_strerror'
12738 d_strtod='$d_strtod'
12739 d_strtol='$d_strtol'
12740 d_strtoul='$d_strtoul'
12741 d_strxfrm='$d_strxfrm'
12742 d_suidsafe='$d_suidsafe'
12743 d_symlink='$d_symlink'
12744 d_syscall='$d_syscall'
12745 d_sysconf='$d_sysconf'
12746 d_sysernlst='$d_sysernlst'
12747 d_syserrlst='$d_syserrlst'
12748 d_system='$d_system'
12749 d_tcgetpgrp='$d_tcgetpgrp'
12750 d_tcsetpgrp='$d_tcsetpgrp'
12751 d_telldir64='$d_telldir64'
12752 d_telldir='$d_telldir'
12753 d_time='$d_time'
12754 d_times='$d_times'
12755 d_tmpfile64='$d_tmpfile64'
12756 d_truncate64='$d_truncate64'
12757 d_truncate='$d_truncate'
12758 d_tzname='$d_tzname'
12759 d_umask='$d_umask'
12760 d_uname='$d_uname'
12761 d_union_semun='$d_union_semun'
12762 d_vfork='$d_vfork'
12763 d_void_closedir='$d_void_closedir'
12764 d_voidsig='$d_voidsig'
12765 d_voidtty='$d_voidtty'
12766 d_volatile='$d_volatile'
12767 d_vprintf='$d_vprintf'
12768 d_wait4='$d_wait4'
12769 d_waitpid='$d_waitpid'
12770 d_wcstombs='$d_wcstombs'
12771 d_wctomb='$d_wctomb'
12772 d_writev='$d_writev'
12773 d_xenix='$d_xenix'
12774 date='$date'
12775 db_hashtype='$db_hashtype'
12776 db_prefixtype='$db_prefixtype'
12777 defvoidused='$defvoidused'
12778 direntrytype='$direntrytype'
12779 dlext='$dlext'
12780 dlsrc='$dlsrc'
12781 doublesize='$doublesize'
12782 drand01='$drand01'
12783 dynamic_ext='$dynamic_ext'
12784 eagain='$eagain'
12785 ebcdic='$ebcdic'
12786 echo='$echo'
12787 egrep='$egrep'
12788 emacs='$emacs'
12789 eunicefix='$eunicefix'
12790 exe_ext='$exe_ext'
12791 expr='$expr'
12792 extensions='$extensions'
12793 find='$find'
12794 firstmakefile='$firstmakefile'
12795 flex='$flex'
12796 fpostype='$fpostype'
12797 freetype='$freetype'
12798 full_csh='$full_csh'
12799 full_sed='$full_sed'
12800 gccversion='$gccversion'
12801 gidtype='$gidtype'
12802 glibpth='$glibpth'
12803 grep='$grep'
12804 groupcat='$groupcat'
12805 groupstype='$groupstype'
12806 gzip='$gzip'
12807 h_fcntl='$h_fcntl'
12808 h_sysfile='$h_sysfile'
12809 hint='$hint'
12810 hostcat='$hostcat'
12811 huge='$huge'
12812 i_arpainet='$i_arpainet'
12813 i_bsdioctl='$i_bsdioctl'
12814 i_db='$i_db'
12815 i_dbm='$i_dbm'
12816 i_dirent='$i_dirent'
12817 i_dld='$i_dld'
12818 i_dlfcn='$i_dlfcn'
12819 i_fcntl='$i_fcntl'
12820 i_float='$i_float'
12821 i_gdbm='$i_gdbm'
12822 i_grp='$i_grp'
12823 i_inttypes='$i_inttypes'
12824 i_limits='$i_limits'
12825 i_locale='$i_locale'
12826 i_machcthr='$i_machcthr'
12827 i_malloc='$i_malloc'
12828 i_math='$i_math'
12829 i_memory='$i_memory'
12830 i_mntent='$i_mntent'
12831 i_ndbm='$i_ndbm'
12832 i_netdb='$i_netdb'
12833 i_neterrno='$i_neterrno'
12834 i_niin='$i_niin'
12835 i_poll='$i_poll'
12836 i_pwd='$i_pwd'
12837 i_rpcsvcdbm='$i_rpcsvcdbm'
12838 i_sfio='$i_sfio'
12839 i_sgtty='$i_sgtty'
12840 i_stdarg='$i_stdarg'
12841 i_stddef='$i_stddef'
12842 i_stdlib='$i_stdlib'
12843 i_string='$i_string'
12844 i_sysaccess='$i_sysaccess'
12845 i_sysdir='$i_sysdir'
12846 i_sysfile='$i_sysfile'
12847 i_sysfilio='$i_sysfilio'
12848 i_sysin='$i_sysin'
12849 i_sysioctl='$i_sysioctl'
12850 i_sysmount='$i_sysmount'
12851 i_sysndir='$i_sysndir'
12852 i_sysparam='$i_sysparam'
12853 i_sysresrc='$i_sysresrc'
12854 i_syssecrt='$i_syssecrt'
12855 i_sysselct='$i_sysselct'
12856 i_syssockio='$i_syssockio'
12857 i_sysstat='$i_sysstat'
12858 i_sysstatvfs='$i_sysstatvfs'
12859 i_systime='$i_systime'
12860 i_systimek='$i_systimek'
12861 i_systimes='$i_systimes'
12862 i_systypes='$i_systypes'
12863 i_sysuio='$i_sysuio'
12864 i_sysun='$i_sysun'
12865 i_syswait='$i_syswait'
12866 i_termio='$i_termio'
12867 i_termios='$i_termios'
12868 i_time='$i_time'
12869 i_unistd='$i_unistd'
12870 i_utime='$i_utime'
12871 i_values='$i_values'
12872 i_varargs='$i_varargs'
12873 i_varhdr='$i_varhdr'
12874 i_vfork='$i_vfork'
12875 ignore_versioned_solibs='$ignore_versioned_solibs'
12876 incpath='$incpath'
12877 inews='$inews'
12878 installarchlib='$installarchlib'
12879 installbin='$installbin'
12880 installman1dir='$installman1dir'
12881 installman3dir='$installman3dir'
12882 installprivlib='$installprivlib'
12883 installscript='$installscript'
12884 installsitearch='$installsitearch'
12885 installsitelib='$installsitelib'
12886 installusrbinperl='$installusrbinperl'
12887 intsize='$intsize'
12888 known_extensions='$known_extensions'
12889 ksh='$ksh'
12890 large='$large'
12891 ld='$ld'
12892 lddlflags='$lddlflags'
12893 ldflags='$ldflags'
12894 less='$less'
12895 lib_ext='$lib_ext'
12896 libc='$libc'
12897 libperl='$libperl'
12898 libpth='$libpth'
12899 libs='$libs'
12900 libswanted='$libswanted'
12901 line='$line'
12902 lint='$lint'
12903 lkflags='$lkflags'
12904 ln='$ln'
12905 lns='$lns'
12906 locincpth='$locincpth'
12907 loclibpth='$loclibpth'
12908 longdblsize='$longdblsize'
12909 longlongsize='$longlongsize'
12910 longsize='$longsize'
12911 lp='$lp'
12912 lpr='$lpr'
12913 ls='$ls'
12914 lseeksize='$lseeksize'
12915 lseektype='$lseektype'
12916 mail='$mail'
12917 mailx='$mailx'
12918 make='$make'
12919 make_set_make='$make_set_make'
12920 mallocobj='$mallocobj'
12921 mallocsrc='$mallocsrc'
12922 malloctype='$malloctype'
12923 man1dir='$man1dir'
12924 man1direxp='$man1direxp'
12925 man1ext='$man1ext'
12926 man3dir='$man3dir'
12927 man3direxp='$man3direxp'
12928 man3ext='$man3ext'
12929 medium='$medium'
12930 mips='$mips'
12931 mips_type='$mips_type'
12932 mkdir='$mkdir'
12933 models='$models'
12934 modetype='$modetype'
12935 more='$more'
12936 mv='$mv'
12937 myarchname='$myarchname'
12938 mydomain='$mydomain'
12939 myhostname='$myhostname'
12940 myuname='$myuname'
12941 n='$n'
12942 netdb_hlen_type='$netdb_hlen_type'
12943 netdb_host_type='$netdb_host_type'
12944 netdb_name_type='$netdb_name_type'
12945 netdb_net_type='$netdb_net_type'
12946 nm='$nm'
12947 nm_opt='$nm_opt'
12948 nm_so_opt='$nm_so_opt'
12949 nonxs_ext='$nonxs_ext'
12950 nroff='$nroff'
12951 o_nonblock='$o_nonblock'
12952 obj_ext='$obj_ext'
12953 old_pthread_create_joinable='$old_pthread_create_joinable'
12954 optimize='$optimize'
12955 orderlib='$orderlib'
12956 osname='$osname'
12957 osvers='$osvers'
12958 package='$package'
12959 pager='$pager'
12960 passcat='$passcat'
12961 patchlevel='$patchlevel'
12962 path_sep='$path_sep'
12963 perl='$perl'
12964 perladmin='$perladmin'
12965 perlpath='$perlpath'
12966 pg='$pg'
12967 phostname='$phostname'
12968 pidtype='$pidtype'
12969 plibpth='$plibpth'
12970 pmake='$pmake'
12971 pr='$pr'
12972 prefix='$prefix'
12973 prefixexp='$prefixexp'
12974 privlib='$privlib'
12975 privlibexp='$privlibexp'
12976 prototype='$prototype'
12977 ptrsize='$ptrsize'
12978 randbits='$randbits'
12979 randfunc='$randfunc'
12980 randseedtype='$randseedtype'
12981 ranlib='$ranlib'
12982 rd_nodata='$rd_nodata'
12983 rm='$rm'
12984 rmail='$rmail'
12985 runnm='$runnm'
12986 sched_yield='$sched_yield'
12987 scriptdir='$scriptdir'
12988 scriptdirexp='$scriptdirexp'
12989 sed='$sed'
12990 seedfunc='$seedfunc'
12991 selectminbits='$selectminbits'
12992 selecttype='$selecttype'
12993 sendmail='$sendmail'
12994 sh='$sh'
12995 shar='$shar'
12996 sharpbang='$sharpbang'
12997 shmattype='$shmattype'
12998 shortsize='$shortsize'
12999 shrpenv='$shrpenv'
13000 shsharp='$shsharp'
13001 sig_name='$sig_name'
13002 sig_name_init='$sig_name_init'
13003 sig_num='$sig_num'
13004 sig_num_init='$sig_num_init'
13005 signal_t='$signal_t'
13006 sitearch='$sitearch'
13007 sitearchexp='$sitearchexp'
13008 sitelib='$sitelib'
13009 sitelibexp='$sitelibexp'
13010 sizetype='$sizetype'
13011 sleep='$sleep'
13012 smail='$smail'
13013 small='$small'
13014 so='$so'
13015 sockethdr='$sockethdr'
13016 socketlib='$socketlib'
13017 sort='$sort'
13018 spackage='$spackage'
13019 spitshell='$spitshell'
13020 split='$split'
13021 src='$src'
13022 ssizetype='$ssizetype'
13023 startperl='$startperl'
13024 startsh='$startsh'
13025 static_ext='$static_ext'
13026 stdchar='$stdchar'
13027 stdio_base='$stdio_base'
13028 stdio_bufsiz='$stdio_bufsiz'
13029 stdio_cnt='$stdio_cnt'
13030 stdio_filbuf='$stdio_filbuf'
13031 stdio_ptr='$stdio_ptr'
13032 strings='$strings'
13033 submit='$submit'
13034 subversion='$subversion'
13035 sysman='$sysman'
13036 tail='$tail'
13037 tar='$tar'
13038 tbl='$tbl'
13039 tee='$tee'
13040 test='$test'
13041 timeincl='$timeincl'
13042 timetype='$timetype'
13043 touch='$touch'
13044 tr='$tr'
13045 trnl='$trnl'
13046 troff='$troff'
13047 uidtype='$uidtype'
13048 uname='$uname'
13049 uniq='$uniq'
13050 use64bits='$use64bits'
13051 usedl='$usedl'
13052 usemultiplicity='$usemultiplicity'
13053 usemymalloc='$usemymalloc'
13054 usenm='$usenm'
13055 useopcode='$useopcode'
13056 useperlio='$useperlio'
13057 useposix='$useposix'
13058 usesfio='$usesfio'
13059 useshrplib='$useshrplib'
13060 usethreads='$usethreads'
13061 usevfork='$usevfork'
13062 usrinc='$usrinc'
13063 uuname='$uuname'
13064 version='$version'
13065 vi='$vi'
13066 voidflags='$voidflags'
13067 xlibpth='$xlibpth'
13068 zcat='$zcat'
13069 zip='$zip'
13070 EOT
13071
13072 : Add in command line options if available
13073 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13074
13075 : add special variables
13076 $test -f $src/patchlevel.h && \
13077 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13078 echo "CONFIG=true" >>config.sh
13079
13080 : propagate old symbols
13081 if $test -f UU/config.sh; then
13082         <UU/config.sh sort | uniq >UU/oldconfig.sh
13083         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13084         sort | uniq -u >UU/oldsyms
13085         set X `cat UU/oldsyms`
13086         shift
13087         case $# in
13088         0) ;;
13089         *)
13090                 cat <<EOM
13091 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13092 EOM
13093                 echo "# Variables propagated from previous config.sh file." >>config.sh
13094                 for sym in `cat UU/oldsyms`; do
13095                         echo "    Propagating $hint variable "'$'"$sym..."
13096                         eval 'tmp="$'"${sym}"'"'
13097                         echo "$tmp" | \
13098                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13099                 done
13100                 ;;
13101         esac
13102 fi
13103
13104 : Finish up by extracting the .SH files
13105 case "$alldone" in
13106 exit)
13107         $rm -rf UU
13108         echo "Done."
13109         exit 0
13110         ;;
13111 cont)
13112         ;;
13113 '')
13114         dflt=''
13115         nostick=true
13116         $cat <<EOM
13117
13118 If you'd like to make any changes to the config.sh file before I begin
13119 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13120
13121 EOM
13122         rp="Press return or use a shell escape to edit config.sh:"
13123         . UU/myread
13124         nostick=''
13125         case "$ans" in
13126         '') ;;
13127         *) : in case they cannot read
13128                 sh 1>&4 -c "$ans";;
13129         esac
13130         ;;
13131 esac
13132
13133 : if this fails, just run all the .SH files by hand
13134 . ./config.sh
13135
13136 echo " "
13137 exec 1>&4
13138 . ./UU/extract
13139
13140 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13141         dflt=y
13142         case "$silent" in
13143         true) ;;
13144         *)
13145                 $cat <<EOM
13146
13147 Now you need to generate make dependencies by running "$make depend".
13148 You might prefer to run it in background: "$make depend > makedepend.out &"
13149 It can take a while, so you might not want to run it right now.
13150
13151 EOM
13152                 ;;
13153         esac
13154         rp="Run $make depend now?"
13155         . UU/myread
13156         case "$ans" in
13157         y*)
13158                 $make depend && echo "Now you must run a $make."
13159                 ;;
13160         *)
13161                 echo "You must run '$make depend' then '$make'."
13162                 ;;
13163         esac
13164 elif test -f [Mm]akefile; then
13165         echo " "
13166         echo "Now you must run a $make."
13167 else
13168         echo "Done."
13169 fi
13170
13171 if $test -f Policy.sh; then
13172     $cat <<EOM
13173
13174 If you compile $package on a different machine or from a different object
13175 directory, copy the Policy.sh file from this object directory to the
13176 new one before you run Configure -- this will help you with most of
13177 the policy defaults.
13178
13179 EOM
13180 fi
13181 if $test -f config.msg; then
13182     echo "Hmm.  I also noted the following information while running:"
13183     echo " "
13184     $cat config.msg >&4
13185     $rm -f config.msg
13186 fi
13187 $rm -f kit*isdone ark*isdone
13188 $rm -rf UU
13189
13190 : End of Configure
13191