Quickier thread-specific data on OS/2
[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 Mon Apr 19 22:21:08 EET DST 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 baserev=''
282 bin=''
283 binexp=''
284 installbin=''
285 byteorder=''
286 cc=''
287 gccversion=''
288 ccflags=''
289 cppflags=''
290 ldflags=''
291 lkflags=''
292 locincpth=''
293 optimize=''
294 cf_email=''
295 cf_by=''
296 cf_time=''
297 contains=''
298 cpp_stuff=''
299 cpplast=''
300 cppminus=''
301 cpprun=''
302 cppstdin=''
303 crosscompile=''
304 d_access=''
305 d_accessx=''
306 d_alarm=''
307 d_attribut=''
308 d_bcmp=''
309 d_bcopy=''
310 d_bzero=''
311 d_casti32=''
312 castflags=''
313 d_castneg=''
314 d_chown=''
315 d_chroot=''
316 d_chsize=''
317 d_closedir=''
318 d_void_closedir=''
319 d_const=''
320 cryptlib=''
321 d_crypt=''
322 d_csh=''
323 full_csh=''
324 d_cuserid=''
325 d_dbl_dig=''
326 d_difftime=''
327 d_dlerror=''
328 d_dlopen=''
329 d_dlsymun=''
330 d_dosuid=''
331 d_suidsafe=''
332 d_drand48proto=''
333 d_dup2=''
334 d_eaccess=''
335 d_endgrent=''
336 d_endhent=''
337 d_endnent=''
338 d_endpent=''
339 d_endpwent=''
340 d_endsent=''
341 d_fchmod=''
342 d_fchown=''
343 d_fcntl=''
344 d_fd_macros=''
345 d_fd_set=''
346 d_fds_bits=''
347 d_fgetpos=''
348 d_flexfnam=''
349 d_flock=''
350 d_fork=''
351 d_fseeko=''
352 d_fsetpos=''
353 d_ftello=''
354 d_ftime=''
355 d_gettimeod=''
356 d_Gconvert=''
357 d_getgrent=''
358 d_getgrps=''
359 d_gethbyaddr=''
360 d_gethbyname=''
361 d_gethent=''
362 aphostname=''
363 d_gethname=''
364 d_phostname=''
365 d_uname=''
366 d_gethostprotos=''
367 d_getlogin=''
368 d_getmntent=''
369 d_getnbyaddr=''
370 d_getnbyname=''
371 d_getnent=''
372 d_getnetprotos=''
373 d_getpent=''
374 d_getpgid=''
375 d_getpgrp2=''
376 d_bsdgetpgrp=''
377 d_getpgrp=''
378 d_getppid=''
379 d_getprior=''
380 d_getpbyname=''
381 d_getpbynumber=''
382 d_getprotoprotos=''
383 d_getpwent=''
384 d_getsent=''
385 d_getservprotos=''
386 d_getsbyname=''
387 d_getsbyport=''
388 d_gnulibc=''
389 d_hasmntopt=''
390 d_htonl=''
391 d_inetaton=''
392 d_isascii=''
393 d_killpg=''
394 d_lchown=''
395 d_link=''
396 d_locconv=''
397 d_lockf=''
398 d_longdbl=''
399 longdblsize=''
400 d_longlong=''
401 longlongsize=''
402 d_lstat=''
403 d_madvise=''
404 d_mblen=''
405 d_mbstowcs=''
406 d_mbtowc=''
407 d_memcmp=''
408 d_memcpy=''
409 d_memmove=''
410 d_memset=''
411 d_mkdir=''
412 d_mkfifo=''
413 d_mktime=''
414 d_mmap=''
415 mmaptype=''
416 d_mprotect=''
417 d_msg=''
418 d_msgctl=''
419 d_msgget=''
420 d_msgrcv=''
421 d_msgsnd=''
422 d_msync=''
423 d_munmap=''
424 d_nice=''
425 d_open3=''
426 d_fpathconf=''
427 d_pathconf=''
428 d_pause=''
429 d_pipe=''
430 d_poll=''
431 d_portable=''
432 d_old_pthread_create_joinable=''
433 old_pthread_create_joinable=''
434 d_pthread_yield=''
435 d_sched_yield=''
436 sched_yield=''
437 d_readdir=''
438 d_rewinddir=''
439 d_seekdir=''
440 d_telldir=''
441 d_readlink=''
442 d_readv=''
443 d_rename=''
444 d_rmdir=''
445 d_safebcpy=''
446 d_safemcpy=''
447 d_sanemcmp=''
448 d_select=''
449 d_sem=''
450 d_semctl=''
451 d_semget=''
452 d_semop=''
453 d_setegid=''
454 d_seteuid=''
455 d_setgrent=''
456 d_setgrps=''
457 d_sethent=''
458 d_setlinebuf=''
459 d_setlocale=''
460 d_setnent=''
461 d_setpent=''
462 d_setpgid=''
463 d_setpgrp2=''
464 d_bsdsetpgrp=''
465 d_setpgrp=''
466 d_setprior=''
467 d_setpwent=''
468 d_setregid=''
469 d_setresgid=''
470 d_setresuid=''
471 d_setreuid=''
472 d_setrgid=''
473 d_setruid=''
474 d_setsent=''
475 d_setsid=''
476 d_setvbuf=''
477 d_sfio=''
478 usesfio=''
479 d_shm=''
480 d_shmat=''
481 d_shmatprototype=''
482 shmattype=''
483 d_shmctl=''
484 d_shmdt=''
485 d_shmget=''
486 d_sigaction=''
487 d_sigsetjmp=''
488 d_cmsghdr_s=''
489 d_msg_ctrunc=''
490 d_msg_dontroute=''
491 d_msg_oob=''
492 d_msg_peek=''
493 d_msg_proxy=''
494 d_msghdr_s=''
495 d_oldsock=''
496 d_recvmsg=''
497 d_scm_rights=''
498 d_sendmsg=''
499 d_socket=''
500 d_sockpair=''
501 sockethdr=''
502 socketlib=''
503 d_statblks=''
504 d_fstatfs=''
505 d_statfs=''
506 d_statfsflags=''
507 d_fstatvfs=''
508 d_statvfs=''
509 d_stdio_cnt_lval=''
510 d_stdio_ptr_lval=''
511 d_stdiobase=''
512 d_stdstdio=''
513 stdio_base=''
514 stdio_bufsiz=''
515 stdio_cnt=''
516 stdio_filbuf=''
517 stdio_ptr=''
518 d_index=''
519 d_strchr=''
520 d_strcoll=''
521 d_strctcpy=''
522 d_strerrm=''
523 d_strerror=''
524 d_sysernlst=''
525 d_syserrlst=''
526 d_strtod=''
527 d_strtol=''
528 d_strtoul=''
529 d_strxfrm=''
530 d_symlink=''
531 d_syscall=''
532 d_sysconf=''
533 d_system=''
534 d_tcgetpgrp=''
535 d_tcsetpgrp=''
536 d_telldirproto=''
537 d_time=''
538 timetype=''
539 clocktype=''
540 d_times=''
541 d_truncate=''
542 d_tzname=''
543 d_umask=''
544 d_semctl_semid_ds=''
545 d_semctl_semun=''
546 d_union_semun=''
547 d_vfork=''
548 usevfork=''
549 d_voidsig=''
550 signal_t=''
551 d_volatile=''
552 d_charvspr=''
553 d_vprintf=''
554 d_wait4=''
555 d_waitpid=''
556 d_wcstombs=''
557 d_wctomb=''
558 d_writev=''
559 d_dbmclose64=''
560 d_dbminit64=''
561 d_delete64=''
562 d_fetch64=''
563 d_firstkey64=''
564 d_nextkey64=''
565 d_store64=''
566 dlext=''
567 cccdlflags=''
568 ccdlflags=''
569 dlsrc=''
570 ld=''
571 lddlflags=''
572 usedl=''
573 doublesize=''
574 ebcdic=''
575 fpostype=''
576 gidtype=''
577 groupstype=''
578 h_fcntl=''
579 h_sysfile=''
580 i_arpainet=''
581 db_hashtype=''
582 db_prefixtype=''
583 i_db=''
584 i_dbm=''
585 i_rpcsvcdbm=''
586 d_dirnamlen=''
587 direntrytype=''
588 i_dirent=''
589 i_dld=''
590 i_dlfcn=''
591 i_fcntl=''
592 i_float=''
593 i_gdbm=''
594 d_grpasswd=''
595 i_grp=''
596 d_int64t=''
597 i_inttypes=''
598 i_limits=''
599 i_locale=''
600 i_machcthr=''
601 i_malloc=''
602 i_math=''
603 i_memory=''
604 i_mntent=''
605 i_ndbm=''
606 i_netdb=''
607 i_neterrno=''
608 i_niin=''
609 i_sysin=''
610 i_poll=''
611 i_pthread=''
612 d_pwage=''
613 d_pwchange=''
614 d_pwclass=''
615 d_pwcomment=''
616 d_pwexpire=''
617 d_pwgecos=''
618 d_pwpasswd=''
619 d_pwquota=''
620 i_pwd=''
621 i_sfio=''
622 i_stddef=''
623 i_stdlib=''
624 i_string=''
625 strings=''
626 i_sysaccess=''
627 i_sysdir=''
628 i_sysfile=''
629 d_voidtty=''
630 i_bsdioctl=''
631 i_sysfilio=''
632 i_sysioctl=''
633 i_syssockio=''
634 i_sysmman=''
635 i_sysmount=''
636 i_sysndir=''
637 i_sysparam=''
638 i_sysresrc=''
639 i_syssecrt=''
640 i_sysselct=''
641 i_sysstat=''
642 i_sysstatvfs=''
643 i_systimes=''
644 i_systypes=''
645 d_iovec_s=''
646 i_sysuio=''
647 i_sysun=''
648 i_syswait=''
649 i_sgtty=''
650 i_termio=''
651 i_termios=''
652 i_systime=''
653 i_systimek=''
654 i_time=''
655 timeincl=''
656 i_unistd=''
657 i_utime=''
658 i_values=''
659 i_stdarg=''
660 i_varargs=''
661 i_varhdr=''
662 i_vfork=''
663 installusrbinperl=''
664 intsize=''
665 longsize=''
666 shortsize=''
667 d_dirent64_s=''
668 d_flock64_s=''
669 d_fstat64=''
670 d_ftruncate64=''
671 d_ino64_t=''
672 d_llseek=''
673 d_lockf64=''
674 d_lseek64=''
675 d_lstat64=''
676 d_off64_t=''
677 d_offset_t=''
678 d_open64=''
679 d_opendir64=''
680 d_readdir64=''
681 d_seekdir64=''
682 d_stat64=''
683 d_telldir64=''
684 d_truncate64=''
685 libc=''
686 libperl=''
687 shrpenv=''
688 useshrplib=''
689 glibpth=''
690 libpth=''
691 loclibpth=''
692 plibpth=''
693 xlibpth=''
694 ignore_versioned_solibs=''
695 libs=''
696 lns=''
697 lseeksize=''
698 lseektype=''
699 make_set_make=''
700 d_mymalloc=''
701 freetype=''
702 mallocobj=''
703 mallocsrc=''
704 malloctype=''
705 usemymalloc=''
706 installman1dir=''
707 man1dir=''
708 man1direxp=''
709 man1ext=''
710 installman3dir=''
711 man3dir=''
712 man3direxp=''
713 man3ext=''
714 huge=''
715 large=''
716 medium=''
717 models=''
718 small=''
719 split=''
720 modetype=''
721 multiarch=''
722 mydomain=''
723 myhostname=''
724 phostname=''
725 c=''
726 n=''
727 d_eofnblk=''
728 eagain=''
729 o_nonblock=''
730 rd_nodata=''
731 netdb_hlen_type=''
732 netdb_host_type=''
733 netdb_name_type=''
734 netdb_net_type=''
735 groupcat=''
736 hostcat=''
737 passcat=''
738 orderlib=''
739 ranlib=''
740 package=''
741 spackage=''
742 pager=''
743 apiversion=''
744 patchlevel=''
745 subversion=''
746 version=''
747 perladmin=''
748 perlpath=''
749 pidtype=''
750 prefix=''
751 prefixexp=''
752 installprivlib=''
753 privlib=''
754 privlibexp=''
755 prototype=''
756 ptrsize=''
757 drand01=''
758 randbits=''
759 randfunc=''
760 randseedtype=''
761 seedfunc=''
762 installscript=''
763 scriptdir=''
764 scriptdirexp=''
765 selectminbits=''
766 selecttype=''
767 sh=''
768 sig_count=''
769 sig_name=''
770 sig_name_init=''
771 sig_num=''
772 sig_num_init=''
773 installsitearch=''
774 sitearch=''
775 sitearchexp=''
776 installsitelib=''
777 sitelib=''
778 sitelibexp=''
779 sizetype=''
780 so=''
781 sharpbang=''
782 shsharp=''
783 spitshell=''
784 src=''
785 ssizetype=''
786 startperl=''
787 startsh=''
788 stdchar=''
789 d_fgetpos64=''
790 d_fopen64=''
791 d_freopen64=''
792 d_fseek64=''
793 d_fseeko64=''
794 d_fsetpos64=''
795 d_ftell64=''
796 d_ftello64=''
797 d_tmpfile64=''
798 sysman=''
799 trnl=''
800 uidtype=''
801 archname64=''
802 use64bits=''
803 usemultiplicity=''
804 nm_opt=''
805 nm_so_opt=''
806 runnm=''
807 usenm=''
808 useperlio=''
809 d_oldpthreads=''
810 usethreads=''
811 incpath=''
812 mips=''
813 mips_type=''
814 usrinc=''
815 defvoidused=''
816 voidflags=''
817 CONFIG=''
818
819 define='define'
820 undef='undef'
821 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
822 rmlist=''
823
824 : We must find out about Eunice early
825 eunicefix=':'
826 if test -f /etc/unixtovms; then
827         eunicefix=/etc/unixtovms
828 fi
829 if test -f /etc/unixtovms.exe; then
830         eunicefix=/etc/unixtovms.exe
831 fi
832
833 i_whoami=''
834 : Possible local include directories to search.
835 : Set locincpth to "" in a hint file to defeat local include searches.
836 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
837 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
838 :
839 : no include file wanted by default
840 inclwanted=''
841
842 : list of known cpp symbols, sorted alphabetically
843 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
844 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
845 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
846 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
847 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
848 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
849 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
850 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
851 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
852 al="$al VMS Xenix286"
853 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
854 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
855 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
856 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
857 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
858 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
859 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
860 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
861 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
862 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
863 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
864 al="$al __SVR4_2__ __UMAXV__"
865 al="$al ____386BSD____ __alpha __alpha__ __amiga"
866 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
867 al="$al __host_mips__"
868 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
869 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
870 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
871 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
872 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
873 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
874 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
875 al="$al __mc88100 __mc88100__ __mips __mips__"
876 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
877 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
878 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
879 al="$al _host_mips _mips _unix"
880 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
881 al="$al apollo ardent att386 att3b"
882 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
883 al="$al cadmus clipper concurrent convex cray ctix"
884 al="$al dmert encore gcos gcx gimpel gould"
885 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
886 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
887 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
888 al="$al i186 i286 i386 i486 i8086"
889 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
890 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
891 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
892 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
893 al="$al mc88000 mc88100 merlin mert mips mvs n16"
894 al="$al ncl_el ncl_mr"
895 al="$al news1500 news1700 news1800 news1900 news3700"
896 al="$al news700 news800 news900 ns16000 ns32000"
897 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
898 al="$al parisc pc532 pdp11 plexus posix pyr"
899 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
900 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
901 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
902 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
903 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
904 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
905 al="$al xenix z8000"
906
907 : Trailing extension.  Override this in a hint file, if needed.
908 _exe=''
909 : Extra object files, if any, needed on this platform.
910 archobjs=''
911 groupstype=''
912 : change the next line if compiling for Xenix/286 on Xenix/386
913 xlibpth='/usr/lib/386 /lib/386'
914
915 : Possible local library directories to search.
916 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
917 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
918
919 : general looking path for locating libraries
920 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
921 glibpth="$glibpth /lib /usr/lib $xlibpth"
922 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
923 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
924
925 : Private path used by Configure to find libraries.  Its value
926 : is prepended to libpth. This variable takes care of special
927 : machines, like the mips.  Usually, it should be empty.
928 plibpth=''
929
930 : default library list
931 libswanted=''
932 : some systems want to use only the non-versioned libso:s
933 ignore_versioned_solibs=''
934 : full support for void wanted by default
935 defvoidused=15
936
937 : set useposix=false in your hint file to disable the POSIX extension.
938 useposix=true
939 : set useopcode=false in your hint file to disable the Opcode extension.
940 useopcode=true
941 : set usemultiplicity on the Configure command line to enable multiplicity.
942 : set usethreads on the Configure command line to enable threads.
943 : List of libraries we want.
944 : If anyone needs -lnet, put it in a hint file.
945 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
946 libswanted="$libswanted dld ld sun m rt c cposix posix"
947 libswanted="$libswanted ndir dir crypt"
948 libswanted="$libswanted ucb bsd BSD PW x"
949 : We probably want to search /usr/shlib before most other libraries.
950 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
951 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
952 glibpth="/usr/shlib $glibpth"
953 : Do not use vfork unless overridden by a hint file.
954 usevfork=false
955
956 : Find the basic shell for Bourne shell scripts
957 case "$sh" in
958 '')
959         case "$SYSTYPE" in
960         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
961         *) xxx='/bin/sh';;
962         esac
963         if test -f "$xxx"; then
964                 sh="$xxx"
965         else
966                 : Build up a list and do a single loop so we can 'break' out.
967                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
968                 for xxx in sh bash ksh pdksh ash; do
969                         for p in $pth; do
970                                 try="$try ${p}/${xxx}"
971                         done
972                 done
973                 for xxx in $try; do
974                         if test -f "$xxx"; then
975                                 sh="$xxx";
976                                 break
977                         elif test -f "$xxx.exe"; then
978                                 sh="$xxx";
979                                 break
980                         fi
981                 done
982         fi
983         ;;
984 esac
985
986 case "$sh" in
987 '')     cat <<EOM >&2
988 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
989
990 Usually it's in /bin/sh.  How did you even get this far?
991 Please contact me (Perl Maintainers) at perlbug@perl.com and 
992 we'll try to straighten this all out.
993 EOM
994         exit 1
995         ;;
996 esac
997
998 : see if sh knows # comments
999 if `$sh -c '#' >/dev/null 2>&1`; then
1000         shsharp=true
1001         spitshell=cat
1002         xcat=/bin/cat
1003         test -f $xcat || xcat=/usr/bin/cat
1004         echo "#!$xcat" >try
1005         $eunicefix try
1006         chmod +x try
1007         ./try > today
1008         if test -s today; then
1009                 sharpbang='#!'
1010         else
1011                 echo "#! $xcat" > try
1012                 $eunicefix try
1013                 chmod +x try
1014                 ./try > today
1015                 if test -s today; then
1016                         sharpbang='#! '
1017                 else
1018                         sharpbang=': use '
1019                 fi
1020         fi
1021 else
1022         echo " "
1023         echo "Your $sh doesn't grok # comments--I will strip them later on."
1024         shsharp=false
1025         cd ..
1026         echo "exec grep -v '^[  ]*#'" >spitshell
1027         chmod +x spitshell
1028         $eunicefix spitshell
1029         spitshell=`pwd`/spitshell
1030         cd UU
1031         echo "I presume that if # doesn't work, #! won't work either!"
1032         sharpbang=': use '
1033 fi
1034 rm -f try today
1035
1036 : figure out how to guarantee sh startup
1037 case "$startsh" in
1038 '') startsh=${sharpbang}${sh} ;;
1039 *)
1040 esac
1041 cat >try <<EOSS
1042 $startsh
1043 set abc
1044 test "$?abc" != 1
1045 EOSS
1046
1047 chmod +x try
1048 $eunicefix try
1049 if ./try; then
1050         : echo "Yup, it does."
1051 else
1052         echo "Hmm... '$startsh' does not guarantee sh startup..."
1053         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1054 fi
1055 rm -f try
1056
1057
1058 : Save command line options in file UU/cmdline.opt for later use in
1059 : generating config.sh.
1060 cat > cmdline.opt <<EOSH
1061 # Configure command line arguments.
1062 config_arg0='$0'
1063 config_args='$*'
1064 config_argc=$#
1065 EOSH
1066 argn=1
1067 for arg in "$@"; do
1068         cat >>cmdline.opt <<EOSH
1069 config_arg$argn='$arg'
1070 EOSH
1071         argn=`expr $argn + 1`
1072 done
1073
1074 : produce awk script to parse command line options
1075 cat >options.awk <<'EOF'
1076 BEGIN {
1077         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1078
1079         len = length(optstr);
1080         for (i = 1; i <= len; i++) {
1081                 c = substr(optstr, i, 1);
1082                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1083                 if (a == ":") {
1084                         arg[c] = 1;
1085                         i++;
1086                 }
1087                 opt[c] = 1;
1088         }
1089 }
1090 {
1091         expect = 0;
1092         str = $0;
1093         if (substr(str, 1, 1) != "-") {
1094                 printf("'%s'\n", str);
1095                 next;
1096         }
1097         len = length($0);
1098         for (i = 2; i <= len; i++) {
1099                 c = substr(str, i, 1);
1100                 if (!opt[c]) {
1101                         printf("-%s\n", substr(str, i));
1102                         next;
1103                 }
1104                 printf("-%s\n", c);
1105                 if (arg[c]) {
1106                         if (i < len)
1107                                 printf("'%s'\n", substr(str, i + 1));
1108                         else
1109                                 expect = 1;
1110                         next;
1111                 }
1112         }
1113 }
1114 END {
1115         if (expect)
1116                 print "?";
1117 }
1118 EOF
1119
1120 : process the command line options
1121 set X `for arg in "$@"; do echo "X$arg"; done |
1122         sed -e s/X// | awk -f options.awk`
1123 eval "set $*"
1124 shift
1125 rm -f options.awk
1126
1127 : set up default values
1128 fastread=''
1129 reuseval=false
1130 config_sh=''
1131 alldone=''
1132 error=''
1133 silent=''
1134 extractsh=''
1135 override=''
1136 knowitall=''
1137 rm -f optdef.sh
1138 cat >optdef.sh <<EOS
1139 $startsh
1140 EOS
1141
1142
1143 : option parsing
1144 while test $# -gt 0; do
1145         case "$1" in
1146         -d) shift; fastread=yes;;
1147         -e) shift; alldone=cont;;
1148         -f)
1149                 shift
1150                 cd ..
1151                 if test -r "$1"; then
1152                         config_sh="$1"
1153                 else
1154                         echo "$me: cannot read config file $1." >&2
1155                         error=true
1156                 fi
1157                 cd UU
1158                 shift;;
1159         -h) shift; error=true;;
1160         -r) shift; reuseval=true;;
1161         -s) shift; silent=true; realsilent=true;;
1162         -E) shift; alldone=exit;;
1163         -K) shift; knowitall=true;;
1164         -O) shift; override=true;;
1165         -S) shift; silent=true; extractsh=true;;
1166         -D)
1167                 shift
1168                 case "$1" in
1169                 *=)
1170                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1171                         echo "$me: ignoring -D $1" >&2
1172                         ;;
1173                 *=*) echo "$1" | \
1174                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1175                 *) echo "$1='define'" >> optdef.sh;;
1176                 esac
1177                 shift
1178                 ;;
1179         -U)
1180                 shift
1181                 case "$1" in
1182                 *=) echo "$1" >> optdef.sh;;
1183                 *=*)
1184                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1185                         echo "$me: ignoring -U $1" >&2
1186                         ;;
1187                 *) echo "$1='undef'" >> optdef.sh;;
1188                 esac
1189                 shift
1190                 ;;
1191         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1192                 exit 0;;
1193         --) break;;
1194         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1195         *) break;;
1196         esac
1197 done
1198
1199 case "$error" in
1200 true)
1201         cat >&2 <<EOM
1202 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1203                  [-U symbol] [-U symbol=]
1204   -d : use defaults for all answers.
1205   -e : go on without questioning past the production of config.sh.
1206   -f : specify an alternate default configuration file.
1207   -h : print this help message and exit (with an error status).
1208   -r : reuse C symbols value if possible (skips costly nm extraction).
1209   -s : silent mode, only echoes questions and essential information.
1210   -D : define symbol to have some value:
1211          -D symbol         symbol gets the value 'define'
1212          -D symbol=value   symbol gets the value 'value'
1213   -E : stop at the end of questions, after having produced config.sh.
1214   -K : do not use unless you know what you are doing.
1215   -O : let -D and -U override definitions from loaded configuration file.
1216   -S : perform variable substitutions on all .SH files (can mix with -f)
1217   -U : undefine symbol:
1218          -U symbol    symbol gets the value 'undef'
1219          -U symbol=   symbol gets completely empty
1220   -V : print version number and exit (with a zero status).
1221 EOM
1222         exit 1
1223         ;;
1224 esac
1225
1226 : Sanity checks
1227 case "$fastread$alldone" in
1228 yescont|yesexit) ;;
1229 *)
1230         if test ! -t 0; then
1231                 echo "Say 'sh Configure', not 'sh <Configure'"
1232                 exit 1
1233         fi
1234         ;;
1235 esac
1236
1237 exec 4>&1
1238 case "$silent" in
1239 true) exec 1>/dev/null;;
1240 esac
1241
1242 : run the defines and the undefines, if any, but leave the file out there...
1243 touch optdef.sh
1244 . ./optdef.sh
1245
1246 : set package name
1247 package=perl5
1248 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1249 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1250 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1251 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1252 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1253 esac
1254
1255 : Some greps do not return status, grrr.
1256 echo "grimblepritz" >grimble
1257 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1258         contains=contains
1259 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1260         contains=grep
1261 else
1262         contains=contains
1263 fi
1264 rm -f grimble
1265 : the following should work in any shell
1266 case "$contains" in
1267 contains*)
1268         echo " "
1269         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1270         cat >contains <<'EOSS'
1271 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1272 EOSS
1273 chmod +x contains
1274 esac
1275
1276 : Find the path to the source tree
1277 case "$src" in
1278 '') case "$0" in
1279     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1280     *)   src='.';;
1281     esac;;
1282 esac
1283 case "$src" in
1284 '')     src=/
1285         rsrc=/
1286         ;;
1287 /*) rsrc="$src";;
1288 *) rsrc="../$src";;
1289 esac
1290 if test -f $rsrc/Configure && \
1291         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1292 then
1293    : found it, so we are ok.
1294 else
1295         rsrc=''
1296         for src in . .. ../.. ../../.. ../../../..; do
1297                 if test -f ../$src/Configure && \
1298                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1299                 then
1300                         rsrc=../$src
1301                         break
1302                 fi
1303         done
1304 fi
1305 case "$rsrc" in
1306 '')
1307         cat <<EOM >&4
1308
1309 Sorry, I can't seem to locate the source dir for $package.  Please start
1310 Configure with an explicit path -- i.e. /some/path/Configure.
1311
1312 EOM
1313         exit 1
1314         ;;
1315 ../.)   rsrc='..';;
1316 *)
1317         echo " "
1318         echo "Sources for $package found in \"$src\"." >&4
1319         ;;
1320 esac
1321
1322 : script used to extract .SH files with variable substitutions
1323 cat >extract <<'EOS'
1324 CONFIGDOTSH=true
1325 echo "Doing variable substitutions on .SH files..."
1326 if test -f $src/MANIFEST; then
1327         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1328 else
1329         echo "(Looking for .SH files under the source directory.)"
1330         set x `(cd $src; find . -name "*.SH" -print)`
1331 fi
1332 shift
1333 case $# in
1334 0) set x `(cd $src; echo *.SH)`; shift;;
1335 esac
1336 if test ! -f $src/$1; then
1337         shift
1338 fi
1339 mkdir_p='
1340 name=$1;
1341 create="";
1342 while test $name; do
1343         if test ! -d "$name"; then
1344                 create="$name $create";
1345                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1346                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1347         else
1348                 name="";
1349         fi;
1350 done;
1351 for file in $create; do
1352         mkdir $file;
1353 done
1354 '
1355 for file in $*; do
1356         case "$src" in
1357         ".")
1358                 case "$file" in
1359                 */*)
1360                         dir=`expr X$file : 'X\(.*\)/'`
1361                         file=`expr X$file : 'X.*/\(.*\)'`
1362                         (cd $dir && . ./$file)
1363                         ;;
1364                 *)
1365                         . ./$file
1366                         ;;
1367                 esac
1368                 ;;
1369         *)
1370                 case "$file" in
1371                 */*)
1372                         dir=`expr X$file : 'X\(.*\)/'`
1373                         file=`expr X$file : 'X.*/\(.*\)'`
1374                         (set x $dir; shift; eval $mkdir_p)
1375                         sh <$src/$dir/$file
1376                         ;;
1377                 *)
1378                         sh <$src/$file
1379                         ;;
1380                 esac
1381                 ;;
1382         esac
1383 done
1384 if test -f $src/config_h.SH; then
1385         if test ! -f config.h; then
1386         : oops, they left it out of MANIFEST, probably, so do it anyway.
1387         . $src/config_h.SH
1388         fi
1389 fi
1390 EOS
1391
1392 : extract files and exit if asked to do so
1393 case "$extractsh" in
1394 true)
1395         case "$realsilent" in
1396         true) ;;
1397         *) exec 1>&4;;
1398         esac
1399         case "$config_sh" in
1400         '') config_sh='config.sh';;
1401         esac
1402         echo " "
1403         echo "Fetching answers from $config_sh..."
1404         cd ..
1405         . $config_sh
1406         test "$override" && . ./optdef.sh
1407         echo " "
1408         . UU/extract
1409         rm -rf UU
1410         echo "Done."
1411         exit 0
1412         ;;
1413 esac
1414
1415 : Eunice requires " " instead of "", can you believe it
1416 echo " "
1417 : Here we go...
1418 echo "Beginning of configuration questions for $package."
1419
1420 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1421
1422 : first determine how to suppress newline on echo command
1423 echo " "
1424 echo "Checking echo to see how to suppress newlines..."
1425 (echo "hi there\c" ; echo " ") >.echotmp
1426 if $contains c .echotmp >/dev/null 2>&1 ; then
1427         echo "...using -n."
1428         n='-n'
1429         c=''
1430 else
1431         cat <<'EOM'
1432 ...using \c
1433 EOM
1434         n=''
1435         c='\c'
1436 fi
1437 echo $n "The star should be here-->$c"
1438 echo '*'
1439 rm -f .echotmp
1440
1441 : Now test for existence of everything in MANIFEST
1442 echo " "
1443 if test -f $rsrc/MANIFEST; then
1444         echo "First let's make sure your kit is complete.  Checking..." >&4
1445         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1446         rm -f missing
1447         tmppwd=`pwd`
1448         for filelist in x??; do
1449                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1450         done
1451         if test -s missing; then
1452                 cat missing >&4
1453                 cat >&4 <<'EOM'
1454
1455 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1456
1457 You have the option of continuing the configuration process, despite the
1458 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1459 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1460 and contact the author (perlbug@perl.com).
1461
1462 EOM
1463                 echo $n "Continue? [n] $c" >&4
1464                 read ans
1465                 case "$ans" in
1466                 y*)
1467                         echo "Continuing..." >&4
1468                         rm -f missing
1469                         ;;
1470                 *)
1471                         echo "ABORTING..." >&4
1472                         kill $$
1473                         ;;
1474                 esac
1475         else
1476                 echo "Looks good..."
1477         fi
1478 else
1479         echo "There is no MANIFEST file.  I hope your kit is complete !"
1480 fi
1481 rm -f missing x??
1482
1483 echo " "
1484 : Find the appropriate value for a newline for tr
1485 if test -n "$DJGPP"; then
1486        trnl='\012'
1487 fi
1488 if test X"$trnl" = X; then
1489         case "`echo foo|tr '\n' x 2>/dev/null`" in
1490         foox) trnl='\n' ;;
1491         esac
1492 fi
1493 if test X"$trnl" = X; then
1494         case "`echo foo|tr '\012' x 2>/dev/null`" in
1495         foox) trnl='\012' ;;
1496         esac
1497 fi
1498 if test X"$trnl" = X; then
1499         cat <<EOM >&2
1500
1501 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1502
1503 EOM
1504         exit 1
1505 fi
1506
1507 : compute the number of columns on the terminal for proper question formatting
1508 case "$COLUMNS" in
1509 '') COLUMNS='80';;
1510 esac
1511
1512 : set up the echo used in my read
1513 myecho="case \"\$xxxm\" in
1514 '') echo $n \"\$rp $c\" >&4;;
1515 *) case \"\$rp\" in
1516         '') echo $n \"[\$xxxm] $c\";;
1517         *)
1518                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1519                         echo \"\$rp\" >&4
1520                         echo $n \"[\$xxxm] $c\" >&4
1521                 else
1522                         echo $n \"\$rp [\$xxxm] $c\" >&4
1523                 fi
1524                 ;;
1525         esac;;
1526 esac"
1527
1528 : now set up to do reads with possible shell escape and default assignment
1529 cat <<EOSC >myread
1530 $startsh
1531 xxxm=\$dflt
1532 $myecho
1533 ans='!'
1534 case "\$fastread" in
1535 yes) case "\$dflt" in
1536         '') ;;
1537         *) ans='';
1538                 case "\$silent-\$rp" in
1539                 true-) ;;
1540                 *) echo " " >&4;;
1541                 esac;;
1542         esac;;
1543 *) case "\$silent" in
1544         true) case "\$rp" in
1545                 '') ans='';;
1546                 esac;;
1547         esac;;
1548 esac
1549 while expr "X\$ans" : "X!" >/dev/null; do
1550         read answ
1551         set x \$xxxm
1552         shift
1553         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1554         case  "\$answ" in
1555         "!")
1556                 sh 1>&4
1557                 echo " "
1558                 $myecho
1559                 ;;
1560         !*)
1561                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1562                 shift
1563                 sh 1>&4 -c "\$*"
1564                 echo " "
1565                 $myecho
1566                 ;;
1567         "\$ans")
1568                 case "\$ans" in
1569                 \\&*)
1570                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1571                         shift
1572                         case "\$1" in
1573                         -d)
1574                                 fastread=yes
1575                                 echo "(OK, I'll run with -d after this question.)" >&4
1576                                 ;;
1577                         -*)
1578                                 echo "*** Sorry, \$1 not supported yet." >&4
1579                                 ;;
1580                         esac
1581                         $myecho
1582                         ans=!
1583                         ;;
1584                 esac;;
1585         *)
1586                 case "\$aok" in
1587                 y)
1588                         echo "*** Substitution done -- please confirm."
1589                         xxxm="\$ans"
1590                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1591                         xxxm="\$ans"
1592                         ans=!
1593                         ;;
1594                 *)
1595                         echo "*** Error -- try again."
1596                         ans=!
1597                         ;;
1598                 esac
1599                 $myecho
1600                 ;;
1601         esac
1602         case "\$ans\$xxxm\$nostick" in
1603         '')
1604                 ans=!
1605                 $myecho
1606                 ;;
1607         esac
1608 done
1609 case "\$ans" in
1610 '') ans="\$xxxm";;
1611 esac
1612 EOSC
1613
1614 : create .config dir to save info across Configure sessions
1615 test -d ../.config || mkdir ../.config
1616 cat >../.config/README <<EOF
1617 This directory created by Configure to save information that should
1618 persist across sessions for $package.
1619
1620 You may safely delete it if you wish.
1621 EOF
1622
1623 : general instructions
1624 needman=true
1625 firsttime=true
1626 user=`(logname) 2>/dev/null`
1627 case "$user" in
1628 '') user=`whoami 2>&1`;;
1629 esac
1630 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1631         firsttime=false
1632         echo " "
1633         rp='Would you like to see the instructions?'
1634         dflt=n
1635         . ./myread
1636         case "$ans" in
1637         [yY]*) ;;
1638         *) needman=false;;
1639         esac
1640 fi
1641 if $needman; then
1642         cat <<EOH
1643
1644 This installation shell script will examine your system and ask you questions
1645 to determine how the perl5 package should be installed. If you get
1646 stuck on a question, you may use a ! shell escape to start a subshell or
1647 execute a command.  Many of the questions will have default answers in square
1648 brackets; typing carriage return will give you the default.
1649
1650 On some of the questions which ask for file or directory names you are allowed
1651 to use the ~name construct to specify the login directory belonging to "name",
1652 even if you don't have a shell which knows about that.  Questions where this is
1653 allowed will be marked "(~name ok)".
1654
1655 EOH
1656         rp=''
1657         dflt='Type carriage return to continue'
1658         . ./myread
1659         cat <<'EOH'
1660
1661 The prompter used in this script allows you to use shell variables and
1662 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1663 in the default answer, as if the default line was a set of arguments given to a
1664 script shell.  This means you may also use $* to repeat the whole default line,
1665 so you do not have to re-type everything to add something to the default.
1666
1667 Everytime there is a substitution, you will have to confirm.  If there is an
1668 error (e.g. an unmatched backtick), the default answer will remain unchanged
1669 and you will be prompted again.
1670
1671 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1672 the questions and use the computed defaults (or the previous answers if there
1673 was already a config.sh file). Type 'Configure -h' for a list of options.
1674 You may also start interactively and then answer '& -d' at any prompt to turn
1675 on the non-interactive behaviour for the remainder of the execution.
1676
1677 EOH
1678         . ./myread
1679         cat <<EOH
1680
1681 Much effort has been expended to ensure that this shell script will run on any
1682 Unix system.  If despite that it blows up on yours, your best bet is to edit
1683 Configure and run it again.  If you can't run Configure for some reason,
1684 you'll have to generate a config.sh file by hand.  Whatever problems you
1685 have, let me (perlbug@perl.com) know how I blew it.
1686
1687 This installation script affects things in two ways:
1688
1689 1) it may do direct variable substitutions on some of the files included
1690    in this kit.
1691 2) it builds a config.h file for inclusion in C programs.  You may edit
1692    any of these files as the need arises after running this script.
1693
1694 If you make a mistake on a question, there is no easy way to back up to it
1695 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1696 files.  Configure will offer to let you do this before it runs the SH files.
1697
1698 EOH
1699         dflt='Type carriage return to continue'
1700         . ./myread
1701         case "$firsttime" in
1702         true) echo $user >>../.config/instruct;;
1703         esac
1704 fi
1705
1706 : find out where common programs are
1707 echo " "
1708 echo "Locating common programs..." >&4
1709 cat <<EOSC >loc
1710 $startsh
1711 case \$# in
1712 0) exit 1;;
1713 esac
1714 thing=\$1
1715 shift
1716 dflt=\$1
1717 shift
1718 for dir in \$*; do
1719         case "\$thing" in
1720         .)
1721         if test -d \$dir/\$thing; then
1722                 echo \$dir
1723                 exit 0
1724         fi
1725         ;;
1726         *)
1727         for thisthing in \$dir/\$thing; do
1728                 : just loop through to pick last item
1729         done
1730         if test -f \$thisthing; then
1731                 echo \$thisthing
1732                 exit 0
1733         elif test -f \$dir/\$thing.exe; then
1734                 if test -n "$DJGPP"; then
1735                         echo \$dir/\$thing.exe
1736                 else
1737                         : on Eunice apparently
1738                         echo \$dir/\$thing
1739                 fi
1740                 exit 0
1741         fi
1742         ;;
1743         esac
1744 done
1745 echo \$dflt
1746 exit 1
1747 EOSC
1748 chmod +x loc
1749 $eunicefix loc
1750 loclist="
1751 awk
1752 cat
1753 comm
1754 cp
1755 echo
1756 expr
1757 grep
1758 ls
1759 make
1760 mkdir
1761 rm
1762 sed
1763 sort
1764 touch
1765 tr
1766 uniq
1767 "
1768 trylist="
1769 Mcc
1770 ar
1771 byacc
1772 cpp
1773 csh
1774 date
1775 egrep
1776 gzip
1777 less
1778 ln
1779 more
1780 nm
1781 nroff
1782 pg
1783 test
1784 uname
1785 zip
1786 "
1787 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1788 pth="$pth /lib /usr/lib"
1789 for file in $loclist; do
1790         eval xxx=\$$file
1791         case "$xxx" in
1792         /*|?:[\\/]*)
1793                 if test -f "$xxx"; then
1794                         : ok
1795                 else
1796                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1797                         xxx=`./loc $file $file $pth`
1798                 fi
1799                 ;;
1800         '') xxx=`./loc $file $file $pth`;;
1801         *) xxx=`./loc $xxx $xxx $pth`;;
1802         esac
1803         eval $file=$xxx
1804         eval _$file=$xxx
1805         case "$xxx" in
1806         /*)
1807                 echo $file is in $xxx.
1808                 ;;
1809         ?:[\\/]*)
1810                 echo $file is in $xxx.
1811                 ;;
1812         *)
1813                 echo "I don't know where '$file' is, and my life depends on it." >&4
1814                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1815                 exit 1
1816                 ;;
1817         esac
1818 done
1819 echo " "
1820 echo "Don't worry if any of the following aren't found..."
1821 say=offhand
1822 for file in $trylist; do
1823         eval xxx=\$$file
1824         case "$xxx" in
1825         /*|?:[\\/]*)
1826                 if test -f "$xxx"; then
1827                         : ok
1828                 else
1829                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1830                         xxx=`./loc $file $file $pth`
1831                 fi
1832                 ;;
1833         '') xxx=`./loc $file $file $pth`;;
1834         *) xxx=`./loc $xxx $xxx $pth`;;
1835         esac
1836         eval $file=$xxx
1837         eval _$file=$xxx
1838         case "$xxx" in
1839         /*)
1840                 echo $file is in $xxx.
1841                 ;;
1842         ?:[\\/]*)
1843                 echo $file is in $xxx.
1844                 ;;
1845         *)
1846                 echo "I don't see $file out there, $say."
1847                 say=either
1848                 ;;
1849         esac
1850 done
1851 case "$egrep" in
1852 egrep)
1853         echo "Substituting grep for egrep."
1854         egrep=$grep
1855         ;;
1856 esac
1857 case "$ln" in
1858 ln)
1859         echo "Substituting cp for ln."
1860         ln=$cp
1861         ;;
1862 esac
1863 case "$test" in
1864 test)
1865         echo "Hopefully test is built into your sh."
1866         ;;
1867 *)
1868         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1869                 echo "Using the test built into your sh."
1870                 test=test
1871                 _test=test
1872         fi
1873         ;;
1874 esac
1875 case "$echo" in
1876 echo)
1877         echo "Hopefully echo is built into your sh."
1878         ;;
1879 '') ;;
1880 *)
1881         echo " "
1882 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1883         $echo $n "hi there$c" >foo1
1884         echo $n "hi there$c" >foo2
1885         if cmp foo1 foo2 >/dev/null 2>&1; then
1886                 echo "They are compatible.  In fact, they may be identical."
1887         else
1888                 case "$n" in
1889                 '-n') n='' c='\c';;
1890                 *) n='-n' c='';;
1891                 esac
1892                 cat <<FOO
1893 They are not compatible!  You are probably running ksh on a non-USG system.
1894 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1895 have echo built in and we may have to run some Bourne shell scripts.  That
1896 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1897
1898 FOO
1899                 $echo $n "The star should be here-->$c"
1900                 $echo "*"
1901         fi
1902         $rm -f foo1 foo2
1903         ;;
1904 esac
1905
1906 : determine whether symbolic links are supported
1907 echo " "
1908 $touch blurfl
1909 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1910         echo "Symbolic links are supported." >&4
1911         lns="$ln -s"
1912 else
1913         echo "Symbolic links are NOT supported." >&4
1914         lns="$ln"
1915 fi
1916 $rm -f blurfl sym
1917
1918 : see whether [:lower:] and [:upper:] are supported character classes
1919 echo " "
1920 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1921 ABYZ)
1922         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1923         up='[:upper:]'
1924         low='[:lower:]'
1925         ;;
1926 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1927         # (0xc9 and 0xd1), therefore that is a nice testing point.
1928         if test "X$up" = X -o "X$low" = X; then
1929             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1930             ij) up='[A-Z]'
1931                 low='[a-z]'
1932                 ;;
1933             esac
1934         fi
1935         if test "X$up" = X -o "X$low" = X; then
1936             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1937             ij) up='A-Z'
1938                 low='a-z'
1939                 ;;
1940             esac
1941         fi
1942         if test "X$up" = X -o "X$low" = X; then
1943             case "`echo IJ | od -x 2>/dev/null`" in
1944             *C9D1*|*c9d1*)
1945                 echo "Hey, this might be EBCDIC." >&4
1946                 if test "X$up" = X -o "X$low" = X; then
1947                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1948                     ij) up='[A-IJ-RS-Z]'
1949                         low='[a-ij-rs-z]'
1950                         ;;
1951                     esac
1952                 fi
1953                 if test "X$up" = X -o "X$low" = X; then
1954                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1955                     ij) up='A-IJ-RS-Z'
1956                         low='a-ij-rs-z'
1957                         ;;
1958                     esac
1959                 fi
1960                 ;;
1961             esac
1962         fi
1963 esac
1964 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1965 ij)
1966     echo "Using $up and $low to convert case." >&4
1967     ;;
1968 *)
1969     echo "I don't know how to translate letters from upper to lower case." >&4
1970     echo "Your tr is not acting any way I know of." >&4
1971     exit 1
1972     ;;
1973 esac
1974 : set up the translation script tr, must be called with ./tr of course
1975 cat >tr <<EOSC
1976 $startsh
1977 case "\$1\$2" in
1978 '[A-Z][a-z]') exec $tr '$up' '$low';;
1979 '[a-z][A-Z]') exec $tr '$low' '$up';;
1980 esac
1981 exec $tr "\$@"
1982 EOSC
1983 chmod +x tr
1984 $eunicefix tr
1985
1986 : Try to determine whether config.sh was made on this system
1987 case "$config_sh" in
1988 '')
1989 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1990 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1991 # because the A-Z/a-z are not consecutive.
1992 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1993         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1994 newmyuname="$myuname"
1995 dflt=n
1996 case "$knowitall" in
1997 '')
1998         if test -f ../config.sh; then
1999                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2000                         eval "`grep myuname= ../config.sh`"
2001                 fi
2002                 if test "X$myuname" = "X$newmyuname"; then
2003                         dflt=y
2004                 fi
2005         fi
2006         ;;
2007 *) dflt=y;;
2008 esac
2009
2010 : Get old answers from old config file if Configure was run on the
2011 : same system, otherwise use the hints.
2012 hint=default
2013 cd ..
2014 if test -f config.sh; then
2015         echo " "
2016         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2017         . UU/myread
2018         case "$ans" in
2019         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2020         *)  echo "Fetching default answers from your old config.sh file..." >&4
2021                 tmp_n="$n"
2022                 tmp_c="$c"
2023                 tmp_sh="$sh"
2024                 . ./config.sh
2025                 cp config.sh UU
2026                 n="$tmp_n"
2027                 c="$tmp_c"
2028                 : Older versions did not always set $sh.  Catch re-use of such
2029                 : an old config.sh.
2030                 case "$sh" in
2031                 '') sh="$tmp_sh" ;;
2032                 esac
2033                 hint=previous
2034                 ;;
2035         esac
2036 fi
2037 if test ! -f config.sh; then
2038         $cat <<EOM
2039
2040 First time through, eh?  I have some defaults handy for some systems
2041 that need some extra help getting the Configure answers right:
2042
2043 EOM
2044         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2045         dflt=''
2046         : Half the following guesses are probably wrong... If you have better
2047         : tests or hints, please send them to perlbug@perl.com
2048         : The metaconfig authors would also appreciate a copy...
2049         $test -f /irix && osname=irix
2050         $test -f /xenix && osname=sco_xenix
2051         $test -f /dynix && osname=dynix
2052         $test -f /dnix && osname=dnix
2053         $test -f /lynx.os && osname=lynxos
2054         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2055         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2056         $test -f /bin/mips && /bin/mips && osname=mips
2057         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2058                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2059         $test -d /usr/apollo/bin && osname=apollo
2060         $test -f /etc/saf/_sactab && osname=svr4
2061         $test -d /usr/include/minix && osname=minix
2062         if $test -d /MachTen -o -d /MachTen_Folder; then
2063                 osname=machten
2064                 if $test -x /sbin/version; then
2065                         osvers=`/sbin/version | $awk '{print $2}' |
2066                         $sed -e 's/[A-Za-z]$//'`
2067                 elif $test -x /usr/etc/version; then
2068                         osvers=`/usr/etc/version | $awk '{print $2}' |
2069                         $sed -e 's/[A-Za-z]$//'`
2070                 else
2071                         osvers="$2.$3"
2072                 fi
2073         fi
2074        $test -f /sys/posix.dll &&
2075                $test -f /usr/bin/what &&
2076                set X `/usr/bin/what /sys/posix.dll` &&
2077                $test "$3" = UWIN &&
2078                osname=uwin &&
2079                osvers="$5"
2080         if $test -f $uname; then
2081                 set X $myuname
2082                 shift
2083
2084                 case "$5" in
2085                 fps*) osname=fps ;;
2086                 mips*)
2087                         case "$4" in
2088                         umips) osname=umips ;;
2089                         *) osname=mips ;;
2090                         esac;;
2091                 [23]100) osname=mips ;;
2092                 next*) osname=next ;;
2093                 i386*)
2094                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2095                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2096                                 osname='sco'
2097                                 osvers=$tmp
2098                         elif $test -f /etc/kconfig; then
2099                                 osname=isc
2100                                 if test "$lns" = "ln -s"; then
2101                                         osvers=4
2102                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2103                                         osvers=3
2104                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2105                                         osvers=2
2106                                 fi
2107                         fi
2108                         tmp=''
2109                         ;;
2110                 pc*)
2111                         if test -n "$DJGPP"; then
2112                                 osname=dos
2113                                 osvers=djgpp
2114                         fi
2115                         ;;
2116                 esac
2117
2118                 case "$1" in
2119                 aix) osname=aix
2120                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2121                         case "$tmp" in
2122                         'not found') osvers="$4"."$3" ;;
2123                         '<3240'|'<>3240') osvers=3.2.0 ;;
2124                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2125                         '=3250'|'>3250') osvers=3.2.5 ;;
2126                         *) osvers=$tmp;;
2127                         esac
2128                         ;;
2129                 *dc.osx) osname=dcosx
2130                         osvers="$3"
2131                         ;;
2132                 dnix) osname=dnix
2133                         osvers="$3"
2134                         ;;
2135                 domainos) osname=apollo
2136                         osvers="$3"
2137                         ;;
2138                 dgux) osname=dgux 
2139                         osvers="$3"
2140                         ;;
2141                 dynixptx*) osname=dynixptx
2142                         osvers=`echo "$4"|sed 's/^v//'`
2143                         ;;
2144                 freebsd) osname=freebsd 
2145                         osvers="$3" ;;
2146                 genix) osname=genix ;;
2147                 hp*) osname=hpux 
2148                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2149                         ;;
2150                 irix*) osname=irix
2151                         case "$3" in
2152                         4*) osvers=4 ;;
2153                         5*) osvers=5 ;;
2154                         *)      osvers="$3" ;;
2155                         esac
2156                         ;;
2157                 linux) osname=linux
2158                         case "$3" in
2159                         *)      osvers="$3" ;;
2160                         esac
2161                         ;;
2162                 MiNT) osname=mint
2163                         ;;
2164                 netbsd*) osname=netbsd
2165                         osvers="$3"
2166                         ;;
2167                 news-os) osvers="$3"
2168                         case "$3" in
2169                         4*) osname=newsos4 ;;
2170                         *) osname=newsos ;;
2171                         esac
2172                         ;;
2173                 bsd386) osname=bsd386
2174                         osvers=`$uname -r`
2175                         ;;
2176                 POSIX-BC | posix-bc ) osname=posix-bc
2177                         osvers="$3"
2178                         ;;
2179                 powerux | power_ux | powermax_os | powermaxos | \
2180                 powerunix | power_unix) osname=powerux
2181                         osvers="$3"
2182                         ;;
2183                 next*) osname=next ;;
2184                 solaris) osname=solaris
2185                         case "$3" in
2186                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2187                         *)      osvers="$3" ;;
2188                         esac
2189                         ;;
2190                 sunos) osname=sunos
2191                         case "$3" in
2192                         5*) osname=solaris
2193                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2194                         *)      osvers="$3" ;;
2195                         esac
2196                         ;;
2197                 titanos) osname=titanos
2198                         case "$3" in
2199                         1*) osvers=1 ;;
2200                         2*) osvers=2 ;;
2201                         3*) osvers=3 ;;
2202                         4*) osvers=4 ;;
2203                         *)      osvers="$3" ;;
2204                         esac
2205                         ;;
2206                 ultrix) osname=ultrix
2207                         osvers="$3"
2208                         ;;
2209                 osf1|mls+)      case "$5" in
2210                                 alpha)
2211                                         osname=dec_osf
2212                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2213                                         ;;
2214                         hp*)    osname=hp_osf1  ;;
2215                         mips)   osname=mips_osf1 ;;
2216                         esac
2217                         ;;
2218                 uts) osname=uts 
2219                         osvers="$3"
2220                         ;;
2221                 qnx) osname=qnx
2222                         osvers="$4"
2223                         ;;
2224                 $2) case "$osname" in
2225                         *isc*) ;;
2226                         *freebsd*) ;;
2227                         svr*)
2228                                 : svr4.x or possibly later
2229                                 case "svr$3" in 
2230                                 ${osname}*)
2231                                         osname=svr$3
2232                                         osvers=$4
2233                                         ;;
2234                                 esac
2235                                 case "$osname" in
2236                                 svr4.0)
2237                                         : Check for ESIX
2238                                         if test -f /stand/boot ; then
2239                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2240                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2241                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2242                                                         if test -n "$isesix"; then
2243                                                                 osname=esix4
2244                                                         fi
2245                                                 fi
2246                                         fi
2247                                         ;;
2248                                 esac
2249                                 ;;
2250                         *)      if test -f /etc/systemid; then
2251                                         osname=sco
2252                                         set `echo $3 | $sed 's/\./ /g'` $4
2253                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2254                                                 osvers=$1.$2.$3
2255                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2256                                                 osvers=$1.$2
2257                                         elif $test -f $src/hints/sco_$1.sh; then
2258                                                 osvers=$1
2259                                         fi
2260                                 else
2261                                         case "$osname" in
2262                                         '') : Still unknown.  Probably a generic Sys V.
2263                                                 osname="sysv"
2264                                                 osvers="$3"
2265                                                 ;;
2266                                         esac
2267                                 fi
2268                                 ;;
2269                         esac
2270                         ;;
2271                 *)      case "$osname" in
2272                         '') : Still unknown.  Probably a generic BSD.
2273                                 osname="$1"
2274                                 osvers="$3"
2275                                 ;;
2276                         esac
2277                         ;;
2278                 esac
2279         else
2280                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2281                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2282                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2283                                 osname=news_os
2284                         fi
2285                         $rm -f UU/kernel.what
2286                 elif test -d c:/.; then
2287                         set X $myuname
2288                         osname=os2
2289                         osvers="$5"
2290                 fi
2291         fi
2292         
2293         : Now look for a hint file osname_osvers, unless one has been
2294         : specified already.
2295         case "$hintfile" in
2296         ''|' ')
2297                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2298                 : Also try without trailing minor version numbers.
2299                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2300                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2301                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2302                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2303                 case "$file" in
2304                 '') dflt=none ;;
2305                 *)  case "$osvers" in
2306                         '') dflt=$file
2307                                 ;;
2308                         *)  if $test -f $src/hints/$file.sh ; then
2309                                         dflt=$file
2310                                 elif $test -f $src/hints/$xfile.sh ; then
2311                                         dflt=$xfile
2312                                 elif $test -f $src/hints/$xxfile.sh ; then
2313                                         dflt=$xxfile
2314                                 elif $test -f $src/hints/$xxxfile.sh ; then
2315                                         dflt=$xxxfile
2316                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2317                                         dflt=$xxxxfile
2318                                 elif $test -f "$src/hints/${osname}.sh" ; then
2319                                         dflt="${osname}"
2320                                 else
2321                                         dflt=none
2322                                 fi
2323                                 ;;
2324                         esac
2325                         ;;
2326                 esac
2327                 if $test -f Policy.sh ; then
2328                         case "$dflt" in
2329                         *Policy*) ;;
2330                         none) dflt="Policy" ;;
2331                         *) dflt="Policy $dflt" ;;
2332                         esac
2333                 fi
2334                 ;;
2335         *)
2336                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2337                 ;;
2338         esac
2339
2340         if $test -f Policy.sh ; then
2341                 $cat <<EOM
2342
2343 There's also a Policy hint file available, which should make the
2344 site-specific (policy) questions easier to answer.
2345 EOM
2346
2347         fi
2348
2349         $cat <<EOM
2350
2351 You may give one or more space-separated answers, or "none" if appropriate.
2352 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2353 is a good thing.  DO NOT give a wrong version.
2354
2355 EOM
2356
2357         rp="Which of these apply, if any?"
2358         . UU/myread
2359         tans=$ans
2360         for file in $tans; do
2361                 if $test X$file = XPolicy -a -f Policy.sh; then
2362                         . Policy.sh
2363                         $cat Policy.sh >> UU/config.sh
2364                 elif $test -f $src/hints/$file.sh; then
2365                         . $src/hints/$file.sh
2366                         $cat $src/hints/$file.sh >> UU/config.sh
2367                 elif $test X$tans = X -o X$tans = Xnone ; then
2368                         : nothing
2369                 else
2370                         : Give one chance to correct a possible typo.
2371                         echo "$file.sh does not exist"
2372                         dflt=$file
2373                         rp="hint to use instead?"
2374                         . UU/myread
2375                         for file in $ans; do
2376                                 if $test -f "$src/hints/$file.sh"; then
2377                                         . $src/hints/$file.sh
2378                                         $cat $src/hints/$file.sh >> UU/config.sh
2379                                 elif $test X$ans = X -o X$ans = Xnone ; then
2380                                         : nothing
2381                                 else
2382                                         echo "$file.sh does not exist -- ignored."
2383                                 fi
2384                         done
2385                 fi
2386         done
2387
2388         hint=recommended
2389         : Remember our hint file for later.
2390         if $test -f "$src/hints/$file.sh" ; then
2391                 hintfile="$file"
2392         else
2393                 hintfile=''
2394         fi
2395 fi
2396 cd UU
2397 ;;
2398 *)
2399         echo " "
2400         echo "Fetching default answers from $config_sh..." >&4
2401         tmp_n="$n"
2402         tmp_c="$c"
2403         cd ..
2404         cp $config_sh config.sh 2>/dev/null
2405         chmod +w config.sh
2406         . ./config.sh
2407         cd UU
2408         cp ../config.sh .
2409         n="$tmp_n"
2410         c="$tmp_c"
2411         hint=previous
2412         ;;
2413 esac
2414 test "$override" && . ./optdef.sh
2415 myuname="$newmyuname"
2416
2417 : Restore computed paths
2418 for file in $loclist $trylist; do
2419         eval $file="\$_$file"
2420 done
2421
2422 cat << EOM
2423
2424 Configure uses the operating system name and version to set some defaults.
2425 The default value is probably right if the name rings a bell. Otherwise,
2426 since spelling matters for me, either accept the default or answer "none"
2427 to leave it blank.
2428
2429 EOM
2430 case "$osname" in
2431         ''|' ')
2432                 case "$hintfile" in
2433                 ''|' '|none) dflt=none ;;
2434                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2435                 esac
2436                 ;;
2437         *) dflt="$osname" ;;
2438 esac
2439 rp="Operating system name?"
2440 . ./myread
2441 case "$ans" in
2442 none)  osname='' ;;
2443 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2444 esac
2445 echo " "
2446 case "$osvers" in
2447         ''|' ')
2448                 case "$hintfile" in
2449                 ''|' '|none) dflt=none ;;
2450                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2451                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2452                         case "$dflt" in
2453                         ''|' ') dflt=none ;;
2454                         esac
2455                         ;;
2456                 esac
2457                 ;;
2458         *) dflt="$osvers" ;;
2459 esac
2460 rp="Operating system version?"
2461 . ./myread
2462 case "$ans" in
2463 none)  osvers='' ;;
2464 *) osvers="$ans" ;;
2465 esac
2466
2467 : who configured the system
2468 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2469 cf_by=`(logname) 2>/dev/null`
2470 case "$cf_by" in
2471 "")
2472         cf_by=`(whoami) 2>/dev/null`
2473         case "$cf_by" in
2474         "") cf_by=unknown ;;
2475         esac ;;
2476 esac
2477
2478 : set up the script used to warn in case of inconsistency
2479 cat <<EOS >whoa
2480 $startsh
2481 EOS
2482 cat <<'EOSC' >>whoa
2483 dflt=y
2484 echo " "
2485 echo "*** WHOA THERE!!! ***" >&4
2486 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2487 rp="    Keep the $hint value?"
2488 . ./myread
2489 case "$ans" in
2490 y) td=$was; tu=$was;;
2491 esac
2492 EOSC
2493
2494 : function used to set $1 to $val
2495 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2496 case "$val$was" in
2497 $define$undef) . ./whoa; eval "$var=\$td";;
2498 $undef$define) . ./whoa; eval "$var=\$tu";;
2499 *) eval "$var=$val";;
2500 esac'
2501
2502 cat <<EOM
2503
2504 Perl can be built to take advantage of threads, on some systems.
2505 To do so, Configure must be run with -Dusethreads.
2506
2507 Note that threading is a highly experimental feature, and
2508 some known race conditions still remain.  If you choose to try
2509 it, be very sure to not actually deploy it for production
2510 purposes.  README.threads has more details, and is required
2511 reading if you enable threads.
2512 EOM
2513 case "$usethreads" in
2514 $define|true|[yY]*)     dflt='y';;
2515 *) dflt='n';;
2516 esac
2517 rp='Build a threading Perl?'
2518 . ./myread
2519 case "$ans" in
2520 y|Y)    val="$define" ;;     
2521 *)      val="$undef" ;;
2522 esac
2523 set usethreads
2524 eval $setvar 
2525
2526 case "$d_oldpthreads" in
2527 '')     : Configure tests would be welcome here.  For now, assume undef.
2528         val="$undef" ;;
2529 *)      val="$d_oldpthreads" ;;
2530 esac
2531 set d_oldpthreads
2532 eval $setvar
2533
2534
2535 case "$usethreads" in
2536 "$define"|true|[yY]*)
2537 : Look for a hint-file generated 'call-back-unit'.  If the
2538 : user has specified that a threading perl is to be built,
2539 : we may need to set or change some other defaults.
2540         if $test -f usethreads.cbu; then
2541                 . ./usethreads.cbu
2542         fi
2543         case "$osname" in
2544         aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
2545                 # Known thread-capable platforms.
2546                 ;;
2547         *)
2548                 cat >&4 <<EOM
2549 $osname is not known to support threads.
2550 Please let perlbug@perl.com know how to do that.
2551
2552 Cannot continue, aborting.
2553 EOM
2554                 exit 1
2555         ;;
2556         esac # $osname
2557     ;;
2558 esac # $usethreads
2559
2560 cat <<EOM
2561
2562 Perl can be built so that multiple Perl interpreters can coexist
2563 within the same Perl executable.  To do so, Configure must be run with
2564 -Dusemultiplicity.
2565
2566 Normally you do not need this and you should answer no.
2567
2568 EOM
2569 case "$usemultiplicity" in
2570 $define|true|[yY]*)     dflt='y';;
2571 *) dflt='n';;
2572 esac
2573 rp='Build Perl for multiplicity?'
2574 . ./myread
2575 case "$ans" in
2576 y|Y)    val="$define" ;;     
2577 *)      val="$undef" ;;
2578 esac
2579 set usemultiplicity
2580 eval $setvar 
2581
2582 cat <<EOM
2583
2584 Perl can be built to take advantage of explicit 64-bit interfaces,
2585 on some systems.  To do so, Configure must be run with -Duse64bits.
2586
2587 If this doesn't make any sense to you, just accept the default 'n'.
2588 EOM
2589 case "$use64bits" in
2590 $define|true|[yY]*)     dflt='y';;
2591 *) dflt='n';;
2592 esac
2593 rp='Try to use explicit 64-bit interfaces, if available?'
2594 . ./myread
2595 case "$ans" in
2596 y|Y) 
2597         val="$define"
2598         ;;     
2599 *)      
2600         val="$undef"
2601         ;;
2602 esac
2603 set use64bits
2604 eval $setvar
2605
2606 case "$archname64" in
2607 '') archname64='' ;;    # not a typo
2608 esac
2609
2610 case "$use64bits" in
2611 "$define"|true|[yY]*)
2612 : Look for a hint-file generated 'call-back-unit'.  If the
2613 : user has specified that a threading perl is to be built,
2614 : we may need to set or change some other defaults.
2615         if $test -f use64bits.cbu; then
2616                 . ./use64bits.cbu
2617         fi
2618         case "$osname" in
2619         dec_osf|hpux|irix|solaris|unicos)
2620                 # Known 64-bit capable platforms.
2621                 ;;
2622         *)
2623                 cat >&4 <<EOM
2624 $osname is not known to support 64-bit interfaces.
2625 Please let perlbug@perl.com know how to do that.
2626
2627 Cannot continue, aborting.
2628 EOM
2629                 exit 1
2630                 ;;
2631         esac
2632         ;;
2633 esac
2634
2635 : determine the architecture name
2636 echo " "
2637 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2638         tarch=`arch`"-$osname"
2639 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2640         if uname -m > tmparch 2>&1 ; then
2641                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2642                         -e 's/$/'"-$osname/" tmparch`
2643         else
2644                 tarch="$osname"
2645         fi
2646         $rm -f tmparch
2647 else
2648         tarch="$osname"
2649 fi
2650 case "$myarchname" in
2651 ''|"$tarch") ;;
2652 *)
2653         echo "(Your architecture name used to be $myarchname.)"
2654         archname=''
2655         ;;
2656 esac
2657 myarchname="$tarch"
2658 case "$archname" in
2659 '') dflt="$tarch";;
2660 *) dflt="$archname";;
2661 esac
2662 rp='What is your architecture name'
2663 . ./myread
2664 archname="$ans"
2665 case "$usethreads" in
2666 $define)
2667         echo "Threads selected." >&4
2668         case "$archname" in
2669         *-thread*) echo "...and architecture name already has -thread." >&4
2670                 ;;
2671         *)      archname="$archname-thread"
2672                 echo "...setting architecture name to $archname." >&4
2673                 ;;
2674         esac
2675         ;;
2676 esac
2677 case "$usemultiplicity" in
2678 $define)
2679         echo "Multiplicity selected." >&4
2680         case "$archname" in
2681         *-multi*) echo "...and architecture name already has -multi." >&4
2682                 ;;
2683         *)      archname="$archname-multi"
2684                 echo "...setting architecture name to $archname." >&4
2685                 ;;
2686         esac
2687         ;;
2688 esac
2689 case "$use64bits" in
2690 $define)
2691         echo "Explicit 64-bitness selected." >&4
2692         case "$archname64" in
2693         '')
2694                 ;;
2695         *)
2696                 case "$archname" in
2697                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2698                         ;;
2699                 *)      archname="$archname-$archname64"
2700                         echo "...setting architecture name to $archname." >&4
2701                         ;;
2702                 esac
2703                 ;;
2704         esac
2705 esac
2706
2707 : is AFS running?
2708 echo " "
2709 case "$afs" in
2710 $define|true)   afs=true ;;
2711 $undef|false)   afs=false ;;
2712 *)      if test -d /afs; then
2713                 afs=true
2714         else
2715                 afs=false
2716         fi
2717         ;;
2718 esac
2719 if $afs; then
2720         echo "AFS may be running... I'll be extra cautious then..." >&4
2721 else
2722         echo "AFS does not seem to be running..." >&4
2723 fi
2724
2725 : decide how portable to be.  Allow command line overrides.
2726 case "$d_portable" in
2727 "$undef") ;;
2728 *)      d_portable="$define" ;;
2729 esac
2730
2731 : set up shell script to do ~ expansion
2732 cat >filexp <<EOSS
2733 $startsh
2734 : expand filename
2735 case "\$1" in
2736  ~/*|~)
2737         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2738         ;;
2739  ~*)
2740         if $test -f /bin/csh; then
2741                 /bin/csh -f -c "glob \$1"
2742                 failed=\$?
2743                 echo ""
2744                 exit \$failed
2745         else
2746                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2747                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2748                 if $test ! -d "\$dir"; then
2749                         me=\`basename \$0\`
2750                         echo "\$me: can't locate home directory for: \$name" >&2
2751                         exit 1
2752                 fi
2753                 case "\$1" in
2754                 */*)
2755                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2756                         ;;
2757                 *)
2758                         echo \$dir
2759                         ;;
2760                 esac
2761         fi
2762         ;;
2763 *)
2764         echo \$1
2765         ;;
2766 esac
2767 EOSS
2768 chmod +x filexp
2769 $eunicefix filexp
2770
2771 : now set up to get a file name
2772 cat <<EOS >getfile
2773 $startsh
2774 EOS
2775 cat <<'EOSC' >>getfile
2776 tilde=''
2777 fullpath=''
2778 already=''
2779 skip=''
2780 none_ok=''
2781 exp_file=''
2782 nopath_ok=''
2783 orig_rp="$rp"
2784 orig_dflt="$dflt"
2785
2786 case "$fn" in
2787 *\(*)
2788         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2789         fn=`echo $fn | sed 's/(.*)//'`
2790         ;;
2791 esac
2792
2793 case "$fn" in
2794 *:*)
2795         loc_file=`expr $fn : '.*:\(.*\)'`
2796         fn=`expr $fn : '\(.*\):.*'`
2797         ;;
2798 esac
2799
2800 case "$fn" in
2801 *~*) tilde=true;;
2802 esac
2803 case "$fn" in
2804 */*) fullpath=true;;
2805 esac
2806 case "$fn" in
2807 *+*) skip=true;;
2808 esac
2809 case "$fn" in
2810 *n*) none_ok=true;;
2811 esac
2812 case "$fn" in
2813 *e*) exp_file=true;;
2814 esac
2815 case "$fn" in
2816 *p*) nopath_ok=true;;
2817 esac
2818
2819 case "$fn" in
2820 *f*) type='File';;
2821 *d*) type='Directory';;
2822 *l*) type='Locate';;
2823 esac
2824
2825 what="$type"
2826 case "$what" in
2827 Locate) what='File';;
2828 esac
2829
2830 case "$exp_file" in
2831 '')
2832         case "$d_portable" in
2833         "$define") ;;
2834         *) exp_file=true;;
2835         esac
2836         ;;
2837 esac
2838
2839 cd ..
2840 while test "$type"; do
2841         redo=''
2842         rp="$orig_rp"
2843         dflt="$orig_dflt"
2844         case "$tilde" in
2845         true) rp="$rp (~name ok)";;
2846         esac
2847         . UU/myread
2848         if test -f UU/getfile.ok && \
2849                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2850         then
2851                 value="$ans"
2852                 ansexp="$ans"
2853                 break
2854         fi
2855         case "$ans" in
2856         none)
2857                 value=''
2858                 ansexp=''
2859                 case "$none_ok" in
2860                 true) type='';;
2861                 esac
2862                 ;;
2863         *)
2864                 case "$tilde" in
2865                 '') value="$ans"
2866                         ansexp="$ans";;
2867                 *)
2868                         value=`UU/filexp $ans`
2869                         case $? in
2870                         0)
2871                                 if test "$ans" != "$value"; then
2872                                         echo "(That expands to $value on this system.)"
2873                                 fi
2874                                 ;;
2875                         *) value="$ans";;
2876                         esac
2877                         ansexp="$value"
2878                         case "$exp_file" in
2879                         '') value="$ans";;
2880                         esac
2881                         ;;
2882                 esac
2883                 case "$fullpath" in
2884                 true)
2885                         case "$ansexp" in
2886                         /*) value="$ansexp" ;;
2887                         *)
2888                                 redo=true
2889                                 case "$already" in
2890                                 true)
2891                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2892                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2893                                         ;;
2894                                 *)
2895                                 echo "Please give a full path name, starting with slash." >&4
2896                                         case "$tilde" in
2897                                         true)
2898                                 echo "Note that using ~name is ok provided it expands well." >&4
2899                                                 already=true
2900                                                 ;;
2901                                         esac
2902                                 esac
2903                                 ;;
2904                         esac
2905                         ;;
2906                 esac
2907                 case "$redo" in
2908                 '')
2909                         case "$type" in
2910                         File)
2911                                 if test -f "$ansexp"; then
2912                                         type=''
2913                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2914                                 then
2915                                         echo "($value is not a plain file, but that's ok.)"
2916                                         type=''
2917                                 fi
2918                                 ;;
2919                         Directory)
2920                                 if test -d "$ansexp"; then
2921                                         type=''
2922                                 fi
2923                                 ;;
2924                         Locate)
2925                                 if test -d "$ansexp"; then
2926                                         echo "(Looking for $loc_file in directory $value.)"
2927                                         value="$value/$loc_file"
2928                                         ansexp="$ansexp/$loc_file"
2929                                 fi
2930                                 if test -f "$ansexp"; then
2931                                         type=''
2932                                 fi
2933                                 case "$nopath_ok" in
2934                                 true)   case "$value" in
2935                                         */*) ;;
2936                                         *)      echo "Assuming $value will be in people's path."
2937                                                 type=''
2938                                                 ;;
2939                                         esac
2940                                         ;;
2941                                 esac
2942                                 ;;
2943                         esac
2944
2945                         case "$skip" in
2946                         true) type='';
2947                         esac
2948
2949                         case "$type" in
2950                         '') ;;
2951                         *)
2952                                 if test "$fastread" = yes; then
2953                                         dflt=y
2954                                 else
2955                                         dflt=n
2956                                 fi
2957                                 rp="$what $value doesn't exist.  Use that name anyway?"
2958                                 . UU/myread
2959                                 dflt=''
2960                                 case "$ans" in
2961                                 y*) type='';;
2962                                 *) echo " ";;
2963                                 esac
2964                                 ;;
2965                         esac
2966                         ;;
2967                 esac
2968                 ;;
2969         esac
2970 done
2971 cd UU
2972 ans="$value"
2973 rp="$orig_rp"
2974 dflt="$orig_dflt"
2975 rm -f getfile.ok
2976 EOSC
2977
2978 : determine root of directory hierarchy where package will be installed.
2979 case "$prefix" in
2980 '')
2981         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2982         ;;
2983 *)
2984         dflt="$prefix"
2985         ;;
2986 esac
2987 $cat <<EOM
2988
2989 By default, $package will be installed in $dflt/bin, manual
2990 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2991 all installation directories. Typically set to /usr/local, but you
2992 may choose /usr if you wish to install $package among your system
2993 binaries. If you wish to have binaries under /bin but manual pages
2994 under /usr/local/man, that's ok: you will be prompted separately
2995 for each of the installation directories, the prefix being only used
2996 to set the defaults.
2997
2998 EOM
2999 fn=d~
3000 rp='Installation prefix to use?'
3001 . ./getfile
3002 oldprefix=''
3003 case "$prefix" in
3004 '') ;;
3005 *)
3006         case "$ans" in
3007         "$prefix") ;;
3008         *) oldprefix="$prefix";;
3009         esac
3010         ;;
3011 esac
3012 prefix="$ans"
3013 prefixexp="$ansexp"
3014
3015 : set the prefixit variable, to compute a suitable default value
3016 prefixit='case "$3" in
3017 ""|none)
3018         case "$oldprefix" in
3019         "") eval "$1=\"\$$2\"";;
3020         *)
3021                 case "$3" in
3022                 "") eval "$1=";;
3023                 none)
3024                         eval "tp=\"\$$2\"";
3025                         case "$tp" in
3026                         ""|" ") eval "$1=\"\$$2\"";;
3027                         *) eval "$1=";;
3028                         esac;;
3029                 esac;;
3030         esac;;
3031 *)
3032         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3033         case "$tp" in
3034         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3035         /*-$oldprefix/*|\~*-$oldprefix/*)
3036                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3037         *) eval "$1=\"\$$2\"";;
3038         esac;;
3039 esac'
3040
3041 : set the base revision
3042 baserev=5.0
3043
3044 : get the patchlevel
3045 echo " "
3046 echo "Getting the current patchlevel..." >&4
3047 if $test -r $rsrc/patchlevel.h;then
3048         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3049         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3050 else
3051         patchlevel=0
3052         subversion=0
3053 fi
3054 $echo $n "(You have $package" $c
3055 case "$package" in
3056 "*$baserev")    ;;
3057 *)              $echo $n " $baserev" $c ;;
3058 esac
3059 $echo $n " patchlevel $patchlevel" $c
3060 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3061 echo ".)"
3062
3063 if test 0 -eq "$subversion"; then
3064         version=`LC_ALL=C; export LC_ALL; \
3065                  echo $baserev $patchlevel | \
3066                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3067 else
3068         version=`LC_ALL=C; export LC_ALL; \
3069                  echo $baserev $patchlevel $subversion | \
3070                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3071 fi
3072 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3073 if test "$subversion" -lt 50; then
3074         apiversion=`LC_ALL=C; export LC_ALL; \
3075                  LANGUAGE=C; export LANGUAGE; \
3076                  echo $baserev $patchlevel | \
3077                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3078 else
3079         apiversion="$version"
3080 fi
3081
3082 : determine where private library files go
3083 : Usual default is /usr/local/lib/perl5/$version.
3084 : Also allow things like /opt/perl/lib/$version, since 
3085 : /opt/perl/lib/perl5... would be redundant.
3086 case "$prefix" in
3087 *perl*) set dflt privlib lib/$version ;;
3088 *)       set dflt privlib lib/$package/$version ;;
3089 esac
3090 eval $prefixit
3091 $cat <<EOM
3092
3093 There are some auxiliary files for $package that need to be put into a
3094 private library directory that is accessible by everyone.
3095
3096 EOM
3097 fn=d~+
3098 rp='Pathname where the private library files will reside?'
3099 . ./getfile
3100 if $test "X$privlibexp" != "X$ansexp"; then
3101         installprivlib=''
3102 fi
3103 privlib="$ans"
3104 privlibexp="$ansexp"
3105 if $afs; then
3106         $cat <<EOM
3107
3108 Since you are running AFS, I need to distinguish the directory in which
3109 private files reside from the directory in which they are installed (and from
3110 which they are presumably copied to the former directory by occult means).
3111
3112 EOM
3113         case "$installprivlib" in
3114         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3115         *) dflt="$installprivlib";;
3116         esac
3117         fn=de~
3118         rp='Where will private files be installed?'
3119         . ./getfile
3120         installprivlib="$ans"
3121 else
3122         installprivlib="$privlibexp"
3123 fi
3124
3125 : set the prefixup variable, to restore leading tilda escape
3126 prefixup='case "$prefixexp" in
3127 "$prefix") ;;
3128 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3129 esac'
3130
3131 : determine where public architecture dependent libraries go
3132 set archlib archlib
3133 eval $prefixit
3134 : privlib default is /usr/local/lib/$package/$version
3135 : archlib default is /usr/local/lib/$package/$version/$archname
3136 : privlib may have an optional trailing /share.
3137 tdflt=`echo $privlib | $sed 's,/share$,,'`
3138 tdflt=$tdflt/$archname
3139 case "$archlib" in
3140 '')     dflt=$tdflt
3141         ;;
3142 *)      dflt="$archlib"
3143     ;;
3144 esac
3145 cat <<EOM
3146
3147 $spackage contains architecture-dependent library files.  If you are
3148 sharing libraries in a heterogeneous environment, you might store
3149 these files in a separate location.  Otherwise, you can just include
3150 them with the rest of the public library files.
3151
3152 EOM
3153 fn=d+~
3154 rp='Where do you want to put the public architecture-dependent libraries?'
3155 . ./getfile
3156 archlib="$ans"
3157 archlibexp="$ansexp"
3158
3159 if $afs; then
3160         $cat <<EOM
3161
3162 Since you are running AFS, I need to distinguish the directory in
3163 which architecture-dependent library files reside from the directory
3164 in which they are installed (and from which they are presumably copied
3165 to the former directory by occult means).
3166
3167 EOM
3168         case "$installarchlib" in
3169         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3170         *) dflt="$installarchlib";;
3171         esac
3172         fn=de~
3173         rp='Where will architecture-dependent library files be installed?'
3174         . ./getfile
3175         installarchlib="$ans"
3176 else
3177         installarchlib="$archlibexp"
3178 fi
3179 if $test X"$archlib" = X"$privlib"; then
3180         d_archlib="$undef"
3181 else
3182         d_archlib="$define"
3183 fi
3184
3185 : make some quick guesses about what we are up against
3186 echo " "
3187 $echo $n "Hmm...  $c"
3188 echo exit 1 >bsd
3189 echo exit 1 >usg
3190 echo exit 1 >v7
3191 echo exit 1 >osf1
3192 echo exit 1 >eunice
3193 echo exit 1 >xenix
3194 echo exit 1 >venix
3195 echo exit 1 >os2
3196 d_bsd="$undef"
3197 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3198 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3199 then
3200         echo "Looks kind of like an OSF/1 system, but we'll see..."
3201         echo exit 0 >osf1
3202 elif test `echo abc | tr a-z A-Z` = Abc ; then
3203         xxx=`./loc addbib blurfl $pth`
3204         if $test -f $xxx; then
3205         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3206                 echo exit 0 >bsd
3207                 echo exit 0 >usg
3208         else
3209                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3210                         echo "Looks kind of like an extended USG system, but we'll see..."
3211                 else
3212                         echo "Looks kind of like a USG system, but we'll see..."
3213                 fi
3214                 echo exit 0 >usg
3215         fi
3216 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3217         echo "Looks kind of like a BSD system, but we'll see..."
3218         d_bsd="$define"
3219         echo exit 0 >bsd
3220 else
3221         echo "Looks kind of like a Version 7 system, but we'll see..."
3222         echo exit 0 >v7
3223 fi
3224 case "$eunicefix" in
3225 *unixtovms*)
3226         $cat <<'EOI'
3227 There is, however, a strange, musty smell in the air that reminds me of
3228 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3229 EOI
3230         echo exit 0 >eunice
3231         d_eunice="$define"
3232 : it so happens the Eunice I know will not run shell scripts in Unix format
3233         ;;
3234 *)
3235         echo " "
3236         echo "Congratulations.  You aren't running Eunice."
3237         d_eunice="$undef"
3238         ;;
3239 esac
3240 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3241 case "$p_" in
3242 :) ;;
3243 *)
3244         $cat <<'EOI'
3245 I have the feeling something is not exactly right, however...don't tell me...
3246 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3247 EOI
3248         echo exit 0 >os2
3249         ;;
3250 esac
3251 if test -f /xenix; then
3252         echo "Actually, this looks more like a XENIX system..."
3253         echo exit 0 >xenix
3254         d_xenix="$define"
3255 else
3256         echo " "
3257         echo "It's not Xenix..."
3258         d_xenix="$undef"
3259 fi
3260 chmod +x xenix
3261 $eunicefix xenix
3262 if test -f /venix; then
3263         echo "Actually, this looks more like a VENIX system..."
3264         echo exit 0 >venix
3265 else
3266         echo " "
3267         if ./xenix; then
3268                 : null
3269         else
3270                 echo "Nor is it Venix..."
3271         fi
3272 fi
3273 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3274 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3275 $rm -f foo
3276
3277 : see if setuid scripts can be secure
3278 $cat <<EOM
3279
3280 Some kernels have a bug that prevents setuid #! scripts from being
3281 secure.  Some sites have disabled setuid #! scripts because of this.
3282
3283 First let's decide if your kernel supports secure setuid #! scripts.
3284 (If setuid #! scripts would be secure but have been disabled anyway,
3285 don't say that they are secure if asked.)
3286
3287 EOM
3288
3289 val="$undef"
3290 if $test -d /dev/fd; then
3291         echo "#!$ls" >reflect
3292         chmod +x,u+s reflect
3293         ./reflect >flect 2>&1
3294         if $contains "/dev/fd" flect >/dev/null; then
3295                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3296                 val="$define"
3297         else
3298                 $cat <<EOM
3299 If you are not sure if they are secure, I can check but I'll need a
3300 username and password different from the one you are using right now.
3301 If you don't have such a username or don't want me to test, simply
3302 enter 'none'.
3303
3304 EOM
3305                 rp='Other username to test security of setuid scripts with?'
3306                 dflt='none'
3307                 . ./myread
3308                 case "$ans" in
3309                 n|none)
3310                         case "$d_suidsafe" in
3311                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3312                                 dflt=n;;
3313                         "$undef")
3314                                 echo "Well, the $hint value is *not* secure." >&4
3315                                 dflt=n;;
3316                         *)      echo "Well, the $hint value *is* secure." >&4
3317                                 dflt=y;;
3318                         esac
3319                         ;;
3320                 *)
3321                         $rm -f reflect flect
3322                         echo "#!$ls" >reflect
3323                         chmod +x,u+s reflect
3324                         echo >flect
3325                         chmod a+w flect
3326                         echo '"su" will (probably) prompt you for '"$ans's password."
3327                         su $ans -c './reflect >flect'
3328                         if $contains "/dev/fd" flect >/dev/null; then
3329                                 echo "Okay, it looks like setuid scripts are secure." >&4
3330                                 dflt=y
3331                         else
3332                                 echo "I don't think setuid scripts are secure." >&4
3333                                 dflt=n
3334                         fi
3335                         ;;
3336                 esac
3337                 rp='Does your kernel have *secure* setuid scripts?'
3338                 . ./myread
3339                 case "$ans" in
3340                 [yY]*)  val="$define";;
3341                 *)      val="$undef";;
3342                 esac
3343         fi
3344 else
3345         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3346         echo "(That's for file descriptors, not floppy disks.)"
3347         val="$undef"
3348 fi
3349 set d_suidsafe
3350 eval $setvar
3351
3352 $rm -f reflect flect
3353
3354 : now see if they want to do setuid emulation
3355 echo " "
3356 val="$undef"
3357 case "$d_suidsafe" in
3358 "$define")
3359         val="$undef"
3360         echo "No need to emulate SUID scripts since they are secure here." >& 4
3361         ;;
3362 *)
3363         $cat <<EOM
3364 Some systems have disabled setuid scripts, especially systems where
3365 setuid scripts cannot be secure.  On systems where setuid scripts have
3366 been disabled, the setuid/setgid bits on scripts are currently
3367 useless.  It is possible for $package to detect those bits and emulate
3368 setuid/setgid in a secure fashion.  This emulation will only work if
3369 setuid scripts have been disabled in your kernel.
3370
3371 EOM
3372         case "$d_dosuid" in
3373         "$define") dflt=y ;;
3374         *) dflt=n ;;
3375         esac
3376         rp="Do you want to do setuid/setgid emulation?"
3377         . ./myread
3378         case "$ans" in
3379         [yY]*)  val="$define";;
3380         *)      val="$undef";;
3381         esac
3382         ;;
3383 esac
3384 set d_dosuid
3385 eval $setvar
3386
3387 : determine where manual pages are on this system
3388 echo " "
3389 case "$sysman" in
3390 '') 
3391         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3392         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3393         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3394         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3395         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3396         sysman=`./loc . /usr/man/man1 $syspath`
3397         ;;
3398 esac
3399 if $test -d "$sysman"; then
3400         echo "System manual is in $sysman." >&4
3401 else
3402         echo "Could not find manual pages in source form." >&4
3403 fi
3404
3405 : see what memory models we can support
3406 case "$models" in
3407 '')
3408         $cat >pdp11.c <<'EOP'
3409 int main() {
3410 #ifdef pdp11
3411         exit(0);
3412 #else
3413         exit(1);
3414 #endif
3415 }
3416 EOP
3417         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3418         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3419                 dflt='unsplit split'
3420         else
3421                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3422                 case "$tans" in
3423                 X) dflt='none';;
3424                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3425                                 dflt='small'
3426                         else
3427                                 dflt=''
3428                         fi
3429                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3430                                 dflt="$dflt medium"
3431                         fi
3432                         if $test -d /lib/large || $test -d /usr/lib/large; then
3433                                 dflt="$dflt large"
3434                         fi
3435                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3436                                 dflt="$dflt huge"
3437                         fi
3438                 esac
3439         fi;;
3440 *) dflt="$models";;
3441 esac
3442 $cat <<EOM
3443  
3444 Some systems have different model sizes.  On most systems they are called
3445 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3446 split.  If your system doesn't support different memory models, say "none".
3447 If you wish to force everything to one memory model, say "none" here and
3448 put the appropriate flags later when it asks you for other cc and ld flags.
3449 Venix systems may wish to put "none" and let the compiler figure things out.
3450 (In the following question multiple model names should be space separated.)
3451
3452 The default for most systems is "none".
3453
3454 EOM
3455 rp="Which memory models are supported?"
3456 . ./myread
3457 models="$ans"
3458
3459 case "$models" in
3460 none)
3461         small=''
3462         medium=''
3463         large=''
3464         huge=''
3465         unsplit=''
3466         split=''
3467         ;;
3468 *split)
3469         case "$split" in
3470         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3471                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3472                         dflt='-i'
3473                 else
3474                         dflt='none'
3475                 fi;;
3476         *) dflt="$split";;
3477         esac
3478         rp="What flag indicates separate I and D space?"
3479         . ./myread
3480         tans="$ans"
3481         case "$tans" in
3482         none) tans='';;
3483         esac
3484         split="$tans"
3485         unsplit='';;
3486 *large*|*small*|*medium*|*huge*)
3487         case "$models" in
3488         *large*)
3489                 case "$large" in
3490                 '') dflt='-Ml';;
3491                 *) dflt="$large";;
3492                 esac
3493         rp="What flag indicates large model?"
3494         . ./myread
3495         tans="$ans"
3496         case "$tans" in
3497         none) tans='';
3498         esac
3499         large="$tans";;
3500         *) large='';;
3501         esac
3502         case "$models" in
3503         *huge*) case "$huge" in
3504                 '') dflt='-Mh';;
3505                 *) dflt="$huge";;
3506                 esac
3507                 rp="What flag indicates huge model?"
3508                 . ./myread
3509                 tans="$ans"
3510                 case "$tans" in
3511                 none) tans='';
3512                 esac
3513                 huge="$tans";;
3514         *) huge="$large";;
3515         esac
3516         case "$models" in
3517         *medium*) case "$medium" in
3518                 '') dflt='-Mm';;
3519                 *) dflt="$medium";;
3520                 esac
3521                 rp="What flag indicates medium model?"
3522                 . ./myread
3523                 tans="$ans"
3524                 case "$tans" in
3525                 none) tans='';
3526                 esac
3527                 medium="$tans";;
3528         *) medium="$large";;
3529         esac
3530         case "$models" in
3531         *small*) case "$small" in
3532                 '') dflt='none';;
3533                 *) dflt="$small";;
3534                 esac
3535                 rp="What flag indicates small model?"
3536                 . ./myread
3537                 tans="$ans"
3538                 case "$tans" in
3539                 none) tans='';
3540                 esac
3541                 small="$tans";;
3542         *) small='';;
3543         esac
3544         ;;
3545 *)
3546         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3547         ;;
3548 esac
3549 $rm -f pdp11.* pdp11
3550
3551 : see if we need a special compiler
3552 echo " "
3553 if ./usg; then
3554         case "$cc" in
3555         '') case "$Mcc" in
3556                 /*) dflt='Mcc';;
3557                 *) case "$large" in
3558                         -M*) dflt='cc';;
3559                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3560                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3561                                                 dflt='cc'
3562                                         else
3563                                                 dflt='cc -M'
3564                                         fi
3565                                 else
3566                                         dflt='cc'
3567                                 fi;;
3568                         esac;;
3569                 esac;;
3570         *)  dflt="$cc";;
3571         esac
3572         case "$dflt" in
3573         *M*)    $cat <<'EOM'
3574 On some older systems the default C compiler will not resolve multiple global
3575 references that happen to have the same name.  On some such systems the "Mcc"
3576 command may be used to force these to be resolved.  On other systems a "cc -M"
3577 command is required.  (Note that the -M flag on other systems indicates a
3578 memory model to use!) If you have the Gnu C compiler, you might wish to use
3579 that instead.
3580
3581 EOM
3582         ;;
3583         esac
3584         rp="Use which C compiler?"
3585         . ./myread
3586         cc="$ans"
3587 else
3588         case "$cc" in
3589         '') dflt=cc;;
3590         *) dflt="$cc";;
3591         esac
3592         rp="Use which C compiler?"
3593         . ./myread
3594         cc="$ans"
3595 fi
3596 : Look for a hint-file generated 'call-back-unit'.  Now that the
3597 : user has specified the compiler, we may need to set or change some
3598 : other defaults.
3599 if $test -f cc.cbu; then
3600     . ./cc.cbu
3601 fi
3602 echo " "
3603 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3604 $cat >gccvers.c <<EOM
3605 #include <stdio.h>
3606 int main() {
3607 #ifdef __GNUC__
3608 #ifdef __VERSION__
3609         printf("%s\n", __VERSION__);
3610 #else
3611         printf("%s\n", "1");
3612 #endif
3613 #endif
3614         exit(0);
3615 }
3616 EOM
3617 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3618         gccversion=`./gccvers`
3619         case "$gccversion" in
3620         '') echo "You are not using GNU cc." ;;
3621         *)  echo "You are using GNU cc $gccversion." ;;
3622         esac
3623 else
3624         echo " "
3625         echo "*** WHOA THERE!!! ***" >&4
3626         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3627         case "$knowitall" in
3628         '')
3629         echo "    You'd better start hunting for one and let me know about it." >&4
3630                 exit 1
3631                 ;;
3632         esac
3633 fi
3634 $rm -f gccvers*
3635 case "$gccversion" in
3636 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3637 esac
3638
3639 : What should the include directory be ?
3640 echo " "
3641 $echo $n "Hmm...  $c"
3642 dflt='/usr/include'
3643 incpath=''
3644 mips_type=''
3645 if $test -f /bin/mips && /bin/mips; then
3646         echo "Looks like a MIPS system..."
3647         $cat >usr.c <<'EOCP'
3648 #ifdef SYSTYPE_BSD43
3649 /bsd43
3650 #endif
3651 EOCP
3652         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3653                 dflt='/bsd43/usr/include'
3654                 incpath='/bsd43'
3655                 mips_type='BSD 4.3'
3656         else
3657                 mips_type='System V'
3658         fi
3659         $rm -f usr.c usr.out
3660         echo "and you're compiling with the $mips_type compiler and libraries."
3661         xxx_prompt=y
3662         echo "exit 0" >mips
3663 else
3664         echo "Doesn't look like a MIPS system."
3665         xxx_prompt=n
3666         echo "exit 1" >mips
3667 fi
3668 chmod +x mips
3669 $eunicefix mips
3670 case "$usrinc" in
3671 '') ;;
3672 *) dflt="$usrinc";;
3673 esac
3674 case "$xxx_prompt" in
3675 y)      fn=d/
3676         echo " "
3677         rp='Where are the include files you want to use?'
3678         . ./getfile
3679         usrinc="$ans"
3680         ;;
3681 *)      usrinc="$dflt"
3682         ;;
3683 esac
3684
3685 : see how we invoke the C preprocessor
3686 echo " "
3687 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3688 cat <<'EOT' >testcpp.c
3689 #define ABC abc
3690 #define XYZ xyz
3691 ABC.XYZ
3692 EOT
3693 cd ..
3694 if test ! -f cppstdin; then
3695         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3696 else
3697         echo "Keeping your $hint cppstdin wrapper."
3698 fi
3699 chmod 755 cppstdin
3700 wrapper=`pwd`/cppstdin
3701 ok='false'
3702 cd UU
3703
3704 if $test "X$cppstdin" != "X" && \
3705         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3706         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3707 then
3708         echo "You used to use $cppstdin $cppminus so we'll use that again."
3709         case "$cpprun" in
3710         '') echo "But let's see if we can live without a wrapper..." ;;
3711         *)
3712                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3713                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3714                 then
3715                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3716                         ok='true'
3717                 else
3718                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3719                 fi
3720                 ;;
3721         esac
3722 else
3723         case "$cppstdin" in
3724         '') ;;
3725         *)
3726                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3727                 ;;
3728         esac
3729 fi
3730
3731 if $ok; then
3732         : nothing
3733 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3734         $cc -E <testcpp.c >testcpp.out 2>&1; \
3735         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3736         echo "Yup, it does."
3737         x_cpp="$cc -E"
3738         x_minus='';
3739 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3740         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3741         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3742         echo "Yup, it does."
3743         x_cpp="$cc -E"
3744         x_minus='-';
3745 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3746         $cc -P <testcpp.c >testcpp.out 2>&1; \
3747         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3748         echo "Yipee, that works!"
3749         x_cpp="$cc -P"
3750         x_minus='';
3751 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3752         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3753         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3754         echo "At long last!"
3755         x_cpp="$cc -P"
3756         x_minus='-';
3757 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3758         $cpp <testcpp.c >testcpp.out 2>&1; \
3759         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3760         echo "It works!"
3761         x_cpp="$cpp"
3762         x_minus='';
3763 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3764         $cpp - <testcpp.c >testcpp.out 2>&1; \
3765         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3766         echo "Hooray, it works!  I was beginning to wonder."
3767         x_cpp="$cpp"
3768         x_minus='-';
3769 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3770         $wrapper <testcpp.c >testcpp.out 2>&1; \
3771         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3772         x_cpp="$wrapper"
3773         x_minus=''
3774         echo "Eureka!"
3775 else
3776         dflt=''
3777         rp="No dice.  I can't find a C preprocessor.  Name one:"
3778         . ./myread
3779         x_cpp="$ans"
3780         x_minus=''
3781         $x_cpp <testcpp.c >testcpp.out 2>&1
3782         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3783                 echo "OK, that will do." >&4
3784         else
3785 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3786                 exit 1
3787         fi
3788 fi
3789
3790 case "$ok" in
3791 false)
3792         cppstdin="$x_cpp"
3793         cppminus="$x_minus"
3794         cpprun="$x_cpp"
3795         cpplast="$x_minus"
3796         set X $x_cpp
3797         shift
3798         case "$1" in
3799         "$cpp")
3800                 echo "Perhaps can we force $cc -E using a wrapper..."
3801                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3802                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3803                 then
3804                         echo "Yup, we can."
3805                         cppstdin="$wrapper"
3806                         cppminus='';
3807                 else
3808                         echo "Nope, we'll have to live without it..."
3809                 fi
3810                 ;;
3811         esac
3812         case "$cpprun" in
3813         "$wrapper")
3814                 cpprun=''
3815                 cpplast=''
3816                 ;;
3817         esac
3818         ;;
3819 esac
3820
3821 case "$cppstdin" in
3822 "$wrapper"|'cppstdin') ;;
3823 *) $rm -f $wrapper;;
3824 esac
3825 $rm -f testcpp.c testcpp.out
3826
3827 : Set private lib path
3828 case "$plibpth" in
3829 '') if ./mips; then
3830                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3831         fi;;
3832 esac
3833 case "$libpth" in
3834 ' ') dlist='';;
3835 '') dlist="$loclibpth $plibpth $glibpth";;
3836 *) dlist="$libpth";;
3837 esac
3838
3839 : Now check and see which directories actually exist, avoiding duplicates
3840 libpth=''
3841 for xxx in $dlist
3842 do
3843     if $test -d $xxx; then
3844                 case " $libpth " in
3845                 *" $xxx "*) ;;
3846                 *) libpth="$libpth $xxx";;
3847                 esac
3848     fi
3849 done
3850 $cat <<'EOM'
3851
3852 Some systems have incompatible or broken versions of libraries.  Among
3853 the directories listed in the question below, please remove any you
3854 know not to be holding relevant libraries, and add any that are needed.
3855 Say "none" for none.
3856
3857 EOM
3858 case "$libpth" in
3859 '') dflt='none';;
3860 *)
3861         set X $libpth
3862         shift
3863         dflt=${1+"$@"}
3864         ;;
3865 esac
3866 rp="Directories to use for library searches?"
3867 . ./myread
3868 case "$ans" in
3869 none) libpth=' ';;
3870 *) libpth="$ans";;
3871 esac
3872
3873 : compute shared library extension
3874 case "$so" in
3875 '')
3876         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3877                 dflt='sl'
3878         else
3879                 dflt='so'
3880         fi
3881         ;;
3882 *) dflt="$so";;
3883 esac
3884 $cat <<EOM
3885
3886 On some systems, shared libraries may be available.  Answer 'none' if
3887 you want to suppress searching of shared libraries for the remaining
3888 of this configuration.
3889
3890 EOM
3891 rp='What is the file extension used for shared libraries?'
3892 . ./myread
3893 so="$ans"
3894
3895 : Define several unixisms.
3896 : Hints files or command line option can be used to override them.
3897 : The convoluted testing is in case hints files set either the old
3898 : or the new name.
3899 case "$_exe" in
3900 '')     case "$exe_ext" in
3901     '') ;;
3902         *)      _exe="$exe_ext" ;;
3903         esac
3904         ;;
3905 esac
3906 case "$_a" in
3907 '')     case "$lib_ext" in
3908     '') _a='.a';;
3909         *)      _a="$lib_ext" ;;
3910         esac
3911         ;;
3912 esac
3913 case "$_o" in
3914 '') case "$obj_ext" in
3915         '')     _o='.o';;
3916         *)      _o="$obj_ext";;
3917         esac
3918         ;;
3919 esac
3920 case "$p_" in
3921 '') case "$path_sep" in
3922         '')     p_=':';;
3923         *)      p_="$path_sep";;
3924         esac
3925         ;;
3926 esac
3927 exe_ext=$_exe
3928 lib_ext=$_a
3929 obj_ext=$_o
3930 path_sep=$p_
3931
3932 : Which makefile gets called first.  This is used by make depend.
3933 case "$firstmakefile" in
3934 '') firstmakefile='makefile';;
3935 esac
3936
3937 : Looking for optional libraries
3938 echo " "
3939 echo "Checking for optional libraries..." >&4
3940 case "$libs" in
3941 ' '|'') dflt='';;
3942 *) dflt="$libs";;
3943 esac
3944 case "$libswanted" in
3945 '') libswanted='c_s';;
3946 esac
3947 for thislib in $libswanted; do
3948         
3949         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3950                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3951                 echo "Found -l$thislib (shared)."
3952                 case " $dflt " in
3953                 *"-l$thislib "*);;
3954                 *) dflt="$dflt -l$thislib";;
3955                 esac
3956         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3957                 echo "Found -l$thislib (shared)."
3958                 case " $dflt " in
3959                 *"-l$thislib "*);;
3960                 *) dflt="$dflt -l$thislib";;
3961                 esac
3962         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3963                 echo "Found -l$thislib."
3964                 case " $dflt " in
3965                 *"-l$thislib "*);;
3966                 *) dflt="$dflt -l$thislib";;
3967                 esac
3968         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3969                 echo "Found -l$thislib."
3970                 case " $dflt " in
3971                 *"-l$thislib "*);;
3972                 *) dflt="$dflt -l$thislib";;
3973                 esac
3974         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3975                 echo "Found -l${thislib}_s."
3976                 case " $dflt " in
3977                 *"-l$thislib "*);;
3978                 *) dflt="$dflt -l${thislib}_s";;
3979                 esac
3980         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3981                 echo "Found -l$thislib."
3982                 case " $dflt " in
3983                 *"-l$thislib "*);;
3984                 *) dflt="$dflt -l$thislib";;
3985                 esac
3986         else
3987                 echo "No -l$thislib."
3988         fi
3989 done
3990 set X $dflt
3991 shift
3992 dflt="$*"
3993 case "$libs" in
3994 '') dflt="$dflt";;
3995 *) dflt="$libs";;
3996 esac
3997 case "$dflt" in
3998 ' '|'') dflt='none';;
3999 esac
4000
4001 $cat <<EOM
4002  
4003 Some versions of Unix support shared libraries, which make executables smaller
4004 but make load time slightly longer.
4005
4006 On some systems, mostly System V Release 3's, the shared library is included
4007 by putting the option "-lc_s" as the last thing on the cc command line when
4008 linking.  Other systems use shared libraries by default.  There may be other
4009 libraries needed to compile $package on your machine as well.  If your system
4010 needs the "-lc_s" option, include it here.  Include any other special libraries
4011 here as well.  Say "none" for none.
4012 EOM
4013
4014 echo " "
4015 rp="Any additional libraries?"
4016 . ./myread
4017 case "$ans" in
4018 none) libs=' ';;
4019 *) libs="$ans";;
4020 esac
4021
4022 : determine optimize, if desired, or use for debug flag also
4023 case "$optimize" in
4024 ' '|$undef) dflt='none';;
4025 '') dflt='-O';;
4026 *) dflt="$optimize";;
4027 esac
4028 $cat <<EOH
4029
4030 Some C compilers have problems with their optimizers.  By default, $package
4031 compiles with the -O flag to use the optimizer.  Alternately, you might want
4032 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4033 systems).  Either flag can be specified here.  To use neither flag, specify
4034 the word "none".
4035
4036 EOH
4037 rp="What optimizer/debugger flag should be used?"
4038 . ./myread
4039 optimize="$ans"
4040 case "$optimize" in
4041 'none') optimize=" ";;
4042 esac
4043
4044 dflt=''
4045 : We will not override a previous value, but we might want to
4046 : augment a hint file
4047 case "$hint" in
4048 none|recommended)
4049         case "$gccversion" in
4050         1*) dflt='-fpcc-struct-return' ;;
4051         esac
4052         case "$optimize" in
4053         *-g*) dflt="$dflt -DDEBUGGING";;
4054         esac
4055         case "$gccversion" in
4056         2*) if test -d /etc/conf/kconfig.d &&
4057                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4058                 then
4059                         dflt="$dflt -posix"
4060                 fi
4061                 ;;
4062         esac
4063         ;;
4064 esac
4065
4066 case "$mips_type" in
4067 *BSD*|'') inclwanted="$locincpth $usrinc";;
4068 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4069 esac
4070 for thisincl in $inclwanted; do
4071         if $test -d $thisincl; then
4072                 if $test x$thisincl != x$usrinc; then
4073                         case "$dflt" in
4074                         *$thisincl*);;
4075                         *) dflt="$dflt -I$thisincl";;
4076                         esac
4077                 fi
4078         fi
4079 done
4080
4081 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4082         xxx=true;
4083 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4084         xxx=true;
4085 else
4086         xxx=false;
4087 fi;
4088 if $xxx; then
4089         case "$dflt" in
4090         *$2*);;
4091         *) dflt="$dflt -D$2";;
4092         esac;
4093 fi'
4094
4095 set signal.h LANGUAGE_C; eval $inctest
4096
4097 case "$hint" in
4098 none|recommended) dflt="$ccflags $dflt" ;;
4099 *) dflt="$ccflags";;
4100 esac
4101
4102 case "$dflt" in
4103 ''|' ') dflt=none;;
4104 esac
4105 $cat <<EOH
4106
4107 Your C compiler may want other flags.  For this question you should include
4108 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4109 but you should NOT include libraries or ld flags like -lwhatever.  If you
4110 want $package to honor its debug switch, you should include -DDEBUGGING here.
4111 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4112
4113 To use no flags, specify the word "none".
4114
4115 EOH
4116 set X $dflt
4117 shift
4118 dflt=${1+"$@"}
4119 rp="Any additional cc flags?"
4120 . ./myread
4121 case "$ans" in
4122 none) ccflags='';;
4123 *) ccflags="$ans";;
4124 esac
4125
4126 : the following weeds options from ccflags that are of no interest to cpp
4127 cppflags="$ccflags"
4128 case "$gccversion" in
4129 1*) cppflags="$cppflags -D__GNUC__"
4130 esac
4131 case "$mips_type" in
4132 '');;
4133 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4134 esac
4135 case "$cppflags" in
4136 '');;
4137 *)
4138         echo " "
4139         echo "Let me guess what the preprocessor flags are..." >&4
4140         set X $cppflags
4141         shift
4142         cppflags=''
4143         $cat >cpp.c <<'EOM'
4144 #define BLURFL foo
4145
4146 BLURFL xx LFRULB
4147 EOM
4148         previous=''
4149         for flag in $*
4150         do
4151                 case "$flag" in
4152                 -*) ftry="$flag";;
4153                 *) ftry="$previous $flag";;
4154                 esac
4155                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4156                         >cpp1.out 2>/dev/null && \
4157                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4158                         >cpp2.out 2>/dev/null && \
4159                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4160                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4161                 then
4162                         cppflags="$cppflags $ftry"
4163                         previous=''
4164                 else
4165                         previous="$flag"
4166                 fi
4167         done
4168         set X $cppflags
4169         shift
4170         cppflags=${1+"$@"}
4171         case "$cppflags" in
4172         *-*)  echo "They appear to be: $cppflags";;
4173         esac
4174         $rm -f cpp.c cpp?.out
4175         ;;
4176 esac
4177
4178 : flags used in final linking phase
4179 case "$ldflags" in
4180 '') if ./venix; then
4181                 dflt='-i -z'
4182         else
4183                 dflt=''
4184         fi
4185         case "$ccflags" in
4186         *-posix*) dflt="$dflt -posix" ;;
4187         esac
4188         ;;
4189 *) dflt="$ldflags";;
4190 esac
4191
4192 : Try to guess additional flags to pick up local libraries.
4193 for thislibdir in $libpth; do
4194         case " $loclibpth " in
4195         *" $thislibdir "*)
4196                 case "$dflt " in 
4197                 *"-L$thislibdir "*) ;;
4198                 *)  dflt="$dflt -L$thislibdir" ;;
4199                 esac
4200                 ;;
4201         esac
4202 done
4203
4204 case "$dflt" in
4205 '') dflt='none' ;;
4206 esac
4207
4208 $cat <<EOH
4209
4210 Your C linker may need flags.  For this question you should
4211 include -L/whatever and any other flags used by the C linker, but you
4212 should NOT include libraries like -lwhatever.
4213
4214 Make sure you include the appropriate -L/path flags if your C linker
4215 does not normally search all of the directories you specified above,
4216 namely
4217         $libpth
4218 To use no flags, specify the word "none".
4219
4220 EOH
4221
4222 rp="Any additional ld flags (NOT including libraries)?"
4223 . ./myread
4224 case "$ans" in
4225 none) ldflags='';;
4226 *) ldflags="$ans";;
4227 esac
4228 rmlist="$rmlist pdp11"
4229
4230 : coherency check
4231 echo " "
4232 echo "Checking your choice of C compiler and flags for coherency..." >&4
4233 $cat > try.c <<'EOF'
4234 #include <stdio.h>
4235 int main() { printf("Ok\n"); exit(0); }
4236 EOF
4237 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4238 shift
4239 $cat >try.msg <<'EOM'
4240 I've tried to compile and run the following simple program:
4241
4242 EOM
4243 $cat try.c >> try.msg
4244
4245 $cat >> try.msg <<EOM
4246
4247 I used the command:
4248
4249         $*
4250         ./try
4251
4252 and I got the following output:
4253
4254 EOM
4255 dflt=y
4256 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4257         if sh -c './try' >>try.msg 2>&1; then
4258                 xxx=`./try`
4259                 case "$xxx" in
4260                 "Ok") dflt=n ;;
4261                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4262                         case " $libs " in
4263                         *" -lsfio "*)
4264                                 cat >> try.msg <<'EOQS'
4265 If $libs contains -lsfio, and sfio is mis-configured, then it
4266 sometimes (apparently) runs and exits with a 0 status, but with no
4267 output!  It may have to do with sfio's use of _exit vs. exit.
4268
4269 EOQS
4270                                 rp="You have a big problem.  Shall I abort Configure"
4271                                 dflt=y
4272                                 ;;
4273                         esac
4274                         ;;
4275                 esac
4276         else
4277                 echo "The program compiled OK, but exited with status $?." >>try.msg
4278                 rp="You have a problem.  Shall I abort Configure"
4279                 dflt=y
4280         fi
4281 else
4282         echo "I can't compile the test program." >>try.msg
4283         rp="You have a BIG problem.  Shall I abort Configure"
4284         dflt=y
4285 fi
4286 case "$dflt" in
4287 y)
4288         $cat try.msg >&4
4289         case "$knowitall" in
4290         '')
4291                 echo "(The supplied flags or libraries might be incorrect.)"
4292                 ;;
4293         *) dflt=n;;
4294         esac
4295         echo " "
4296         . ./myread
4297         case "$ans" in
4298         n*|N*) ;;
4299         *)      echo "Ok.  Stopping Configure." >&4
4300                 exit 1
4301                 ;;
4302         esac
4303         ;;
4304 n) echo "OK, that should do.";;
4305 esac
4306 $rm -f try try.* core
4307
4308 : determine filename position in cpp output
4309 echo " "
4310 echo "Computing filename position in cpp output for #include directives..." >&4
4311 echo '#include <stdio.h>' > foo.c
4312 $cat >fieldn <<EOF
4313 $startsh
4314 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4315 $grep '^[       ]*#.*stdio\.h' | \
4316 while read cline; do
4317         pos=1
4318         set \$cline
4319         while $test \$# -gt 0; do
4320                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4321                         echo "\$pos"
4322                         exit 0
4323                 fi
4324                 shift
4325                 pos=\`expr \$pos + 1\`
4326         done
4327 done
4328 EOF
4329 chmod +x fieldn
4330 fieldn=`./fieldn`
4331 $rm -f foo.c fieldn
4332 case $fieldn in
4333 '') pos='???';;
4334 1) pos=first;;
4335 2) pos=second;;
4336 3) pos=third;;
4337 *) pos="${fieldn}th";;
4338 esac
4339 echo "Your cpp writes the filename in the $pos field of the line."
4340
4341 : locate header file
4342 $cat >findhdr <<EOF
4343 $startsh
4344 wanted=\$1
4345 for usrincdir in $usrinc
4346 do
4347         if test -f \$usrincdir/\$wanted; then
4348                 echo "\$usrincdir/\$wanted"
4349                 exit 0
4350         fi
4351 done
4352 awkprg='{ print \$$fieldn }'
4353 echo "#include <\$wanted>" > foo\$\$.c
4354 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4355 $grep "^[       ]*#.*\$wanted" | \
4356 while read cline; do
4357         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4358         case "\$name" in
4359         *[/\\\\]\$wanted) echo "\$name"; exit 0;;
4360         *) name='';;
4361         esac;
4362 done;
4363 $rm -f foo\$\$.c;
4364 case "\$name" in
4365 '') exit 1;;
4366 esac
4367 EOF
4368 chmod +x findhdr
4369
4370 : define an alternate in-header-list? function
4371 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4372 cont=true; xxf="echo \"<\$1> found.\" >&4";
4373 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4374 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4375 esac;
4376 case $# in 4) instead=instead;; *) instead="at last";; esac;
4377 while $test "$cont"; do
4378         xxx=`./findhdr $1`
4379         var=$2; eval "was=\$$2";
4380         if $test "$xxx" && $test -r "$xxx";
4381         then eval $xxf;
4382         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4383                 cont="";
4384         else eval $xxnf;
4385         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4386         set $yyy; shift; shift; yyy=$@;
4387         case $# in 0) cont="";;
4388         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4389                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4390         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4391                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4392         esac;
4393 done;
4394 while $test "$yyy";
4395 do set $yyy; var=$2; eval "was=\$$2";
4396         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4397         set $yyy; shift; shift; yyy=$@;
4398 done'
4399
4400 : see if this is a malloc.h system
4401 set malloc.h i_malloc
4402 eval $inhdr
4403
4404 : see if stdlib is available
4405 set stdlib.h i_stdlib
4406 eval $inhdr
4407
4408 : determine which malloc to compile in
4409 echo " "
4410 case "$usemymalloc" in
4411 ''|[yY]*|true|$define)  dflt='y' ;;
4412 *)      dflt='n' ;;
4413 esac
4414 rp="Do you wish to attempt to use the malloc that comes with $package?"
4415 . ./myread
4416 usemymalloc="$ans"
4417 case "$ans" in
4418 y*|true)
4419         usemymalloc='y'
4420         mallocsrc='malloc.c'
4421         mallocobj="malloc$_o"
4422         d_mymalloc="$define"
4423         case "$libs" in
4424         *-lmalloc*)
4425                 : Remove malloc from list of libraries to use
4426                 echo "Removing unneeded -lmalloc from library list" >&4
4427                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4428                 shift
4429                 libs="$*"
4430                 echo "libs = $libs" >&4
4431                 ;;
4432         esac
4433         ;;
4434 *)
4435         usemymalloc='n'
4436         mallocsrc=''
4437         mallocobj=''
4438         d_mymalloc="$undef"
4439         ;;
4440 esac
4441
4442 : compute the return types of malloc and free
4443 echo " "
4444 $cat >malloc.c <<END
4445 #$i_malloc I_MALLOC
4446 #$i_stdlib I_STDLIB
4447 #include <stdio.h>
4448 #include <sys/types.h>
4449 #ifdef I_MALLOC
4450 #include <malloc.h>
4451 #endif
4452 #ifdef I_STDLIB
4453 #include <stdlib.h>
4454 #endif
4455 #ifdef TRY_MALLOC
4456 void *malloc();
4457 #endif
4458 #ifdef TRY_FREE
4459 void free();
4460 #endif
4461 END
4462 case "$malloctype" in
4463 '')
4464         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4465                 malloctype='void *'
4466         else
4467                 malloctype='char *'
4468         fi
4469         ;;
4470 esac
4471 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4472
4473 case "$freetype" in
4474 '')
4475         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4476                 freetype='void'
4477         else
4478                 freetype='int'
4479         fi
4480         ;;
4481 esac
4482 echo "Your system uses $freetype free(), it would seem." >&4
4483 $rm -f malloc.[co]
4484 : Cruising for prototypes
4485 echo " "
4486 echo "Checking out function prototypes..." >&4
4487 $cat >prototype.c <<'EOCP'
4488 int main(int argc, char *argv[]) {
4489         exit(0);}
4490 EOCP
4491 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4492         echo "Your C compiler appears to support function prototypes."
4493         val="$define"
4494 else
4495         echo "Your C compiler doesn't seem to understand function prototypes."
4496         val="$undef"
4497 fi
4498 set prototype
4499 eval $setvar
4500 $rm -f prototype*
4501
4502 case "$prototype" in
4503 "$define") ;;
4504 *)      ansi2knr='ansi2knr'
4505         echo " "
4506         cat <<EOM >&4
4507
4508 $me:  FATAL ERROR:
4509 This version of $package can only be compiled by a compiler that 
4510 understands function prototypes.  Unfortunately, your C compiler 
4511         $cc $ccflags
4512 doesn't seem to understand them.  Sorry about that.
4513
4514 If GNU cc is available for your system, perhaps you could try that instead.  
4515
4516 Eventually, we hope to support building Perl with pre-ANSI compilers.
4517 If you would like to help in that effort, please contact <perlbug@perl.org>.
4518
4519 Aborting Configure now.
4520 EOM
4521         exit 2
4522         ;;
4523 esac
4524
4525 : determine where public executables go
4526 echo " "
4527 set dflt bin bin
4528 eval $prefixit
4529 fn=d~
4530 rp='Pathname where the public executables will reside?'
4531 . ./getfile
4532 if $test "X$ansexp" != "X$binexp"; then
4533         installbin=''
4534 fi
4535 bin="$ans"
4536 binexp="$ansexp"
4537 if $afs; then
4538         $cat <<EOM
4539
4540 Since you are running AFS, I need to distinguish the directory in which
4541 executables reside from the directory in which they are installed (and from
4542 which they are presumably copied to the former directory by occult means).
4543
4544 EOM
4545         case "$installbin" in
4546         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4547         *) dflt="$installbin";;
4548         esac
4549         fn=de~
4550         rp='Where will public executables be installed?'
4551         . ./getfile
4552         installbin="$ans"
4553 else
4554         installbin="$binexp"
4555 fi
4556
4557 : determine whether to install perl also as /usr/bin/perl
4558
4559 echo " "
4560 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4561         $cat <<EOM
4562 Many scripts expect to perl to be installed as /usr/bin/perl.
4563 I can install the perl you are about to compile also as /usr/bin/perl
4564 (in addition to $installbin/perl).
4565 EOM
4566         case "$installusrbinperl" in
4567         "$undef"|[nN]*) dflt='n';;
4568         *)              dflt='y';;
4569         esac
4570         rp="Do you want to install perl as /usr/bin/perl?"
4571         . ./myread
4572         case "$ans" in
4573         [yY]*)  val="$define";;
4574         *)      val="$undef" ;;
4575         esac
4576 else
4577         val="$undef"
4578 fi
4579 set installusrbinperl
4580 eval $setvar
4581
4582 : define a shorthand compile call
4583 compile='
4584 mc_file=$1;
4585 shift;
4586 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4587 : define a shorthand compile call for compilations that should be ok.
4588 compile_ok='
4589 mc_file=$1;
4590 shift;
4591 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4592
4593 echo " "
4594 echo "Checking for GNU C Library..." >&4
4595 cat >gnulibc.c <<EOM
4596 #include <stdio.h>
4597 int main()
4598 {
4599 #ifdef __GLIBC__
4600     exit(0);
4601 #else
4602     exit(1);
4603 #endif
4604 }
4605 EOM
4606 set gnulibc
4607 if eval $compile_ok && ./gnulibc; then
4608         val="$define"
4609         echo "You are using the GNU C Library"
4610 else
4611         val="$undef"
4612         echo "You are not using the GNU C Library"
4613 fi
4614 $rm -f gnulibc*
4615 set d_gnulibc
4616 eval $setvar
4617
4618 : see if nm is to be used to determine whether a symbol is defined or not
4619 case "$usenm" in
4620 '')
4621         dflt=''
4622         case "$d_gnulibc" in
4623         "$define")
4624                 echo " "
4625                 echo "nm probably won't work on the GNU C Library." >&4
4626                 dflt=n
4627                 ;;
4628         esac
4629         case "$dflt" in
4630         '') 
4631                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4632                         echo " "
4633                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4634                         echo "'nm' won't be sufficient on this sytem." >&4
4635                         dflt=n
4636                 fi
4637                 ;;
4638         esac
4639         case "$dflt" in
4640         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4641                 if $test $dflt -gt 20; then
4642                         dflt=y
4643                 else
4644                         dflt=n
4645                 fi
4646                 ;;
4647         esac
4648         ;;
4649 *)
4650         case "$usenm" in
4651         true|$define) dflt=y;;
4652         *) dflt=n;;
4653         esac
4654         ;;
4655 esac
4656 $cat <<EOM
4657
4658 I can use $nm to extract the symbols from your C libraries. This
4659 is a time consuming task which may generate huge output on the disk (up
4660 to 3 megabytes) but that should make the symbols extraction faster. The
4661 alternative is to skip the 'nm' extraction part and to compile a small
4662 test program instead to determine whether each symbol is present. If
4663 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4664 this may be the best solution.
4665
4666 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4667
4668 EOM
4669 rp="Shall I use $nm to extract C symbols from the libraries?"
4670 . ./myread
4671 case "$ans" in
4672 [Nn]*) usenm=false;;
4673 *) usenm=true;;
4674 esac
4675
4676 runnm=$usenm
4677 case "$reuseval" in
4678 true) runnm=false;;
4679 esac
4680
4681 : nm options which may be necessary
4682 case "$nm_opt" in
4683 '') if $test -f /mach_boot; then
4684                 nm_opt=''       # Mach
4685         elif $test -d /usr/ccs/lib; then
4686                 nm_opt='-p'     # Solaris (and SunOS?)
4687         elif $test -f /dgux; then
4688                 nm_opt='-p'     # DG-UX
4689         elif $test -f /lib64/rld; then
4690                 nm_opt='-p'     # 64-bit Irix
4691         else
4692                 nm_opt=''
4693         fi;;
4694 esac
4695
4696 : nm options which may be necessary for shared libraries but illegal
4697 : for archive libraries.  Thank you, Linux.
4698 case "$nm_so_opt" in
4699 '')     case "$myuname" in
4700         *linux*)
4701                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4702                         nm_so_opt='--dynamic'
4703                 fi
4704                 ;;
4705         esac
4706         ;;
4707 esac
4708
4709 case "$runnm" in
4710 true)
4711 : get list of predefined functions in a handy place
4712 echo " "
4713 case "$libc" in
4714 '') libc=unknown
4715         case "$libs" in
4716         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4717         esac
4718         ;;
4719 esac
4720 libnames='';
4721 case "$libs" in
4722 '') ;;
4723 *)  for thislib in $libs; do
4724         case "$thislib" in
4725         -lc|-lc_s)
4726                 : Handle C library specially below.
4727                 ;;
4728         -l*)
4729                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4730                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4731                         :
4732                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4733                         :
4734                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4735                         :
4736                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4737                         :
4738                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4739                         :
4740                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4741                         :
4742                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4743                         :
4744                 else
4745                         try=''
4746                 fi
4747                 libnames="$libnames $try"
4748                 ;;
4749         *) libnames="$libnames $thislib" ;;
4750         esac
4751         done
4752         ;;
4753 esac
4754 xxx=normal
4755 case "$libc" in
4756 unknown)
4757         set /lib/libc.$so
4758         for xxx in $libpth; do
4759                 $test -r $1 || set $xxx/libc.$so
4760                 : The messy sed command sorts on library version numbers.
4761                 $test -r $1 || \
4762                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4763                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4764                                 h
4765                                 s/[0-9][0-9]*/0000&/g
4766                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4767                                 G
4768                                 s/\n/ /' | \
4769                          sort | $sed -e 's/^.* //'`
4770                 eval set \$$#
4771         done
4772         $test -r $1 || set /usr/ccs/lib/libc.$so
4773         $test -r $1 || set /lib/libsys_s$_a
4774         ;;
4775 *)
4776         set blurfl
4777         ;;
4778 esac
4779 if $test -r "$1"; then
4780         echo "Your (shared) C library seems to be in $1."
4781         libc="$1"
4782 elif $test -r /lib/libc && $test -r /lib/clib; then
4783         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4784         xxx=apollo
4785         libc='/lib/clib /lib/libc'
4786         if $test -r /lib/syslib; then
4787                 echo "(Your math library is in /lib/syslib.)"
4788                 libc="$libc /lib/syslib"
4789         fi
4790 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4791         echo "Your C library seems to be in $libc, as you said before."
4792 elif $test -r $incpath/usr/lib/libc$_a; then
4793         libc=$incpath/usr/lib/libc$_a;
4794         echo "Your C library seems to be in $libc.  That's fine."
4795 elif $test -r /lib/libc$_a; then
4796         libc=/lib/libc$_a;
4797         echo "Your C library seems to be in $libc.  You're normal."
4798 else
4799         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4800                 :
4801         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4802                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4803         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4804                 :
4805         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4806                 :
4807         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4808                 :
4809         else
4810                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4811         fi
4812         if $test -r "$tans"; then
4813                 echo "Your C library seems to be in $tans, of all places."
4814                 libc=$tans
4815         else
4816                 libc='blurfl'
4817         fi
4818 fi
4819 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4820         dflt="$libc"
4821         cat <<EOM
4822
4823 If the guess above is wrong (which it might be if you're using a strange
4824 compiler, or your machine supports multiple models), you can override it here.
4825
4826 EOM
4827 else
4828         dflt=''
4829         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4830         cat >&4 <<EOM
4831 I can't seem to find your C library.  I've looked in the following places:
4832
4833 EOM
4834         $sed 's/^/      /' libpath
4835         cat <<EOM
4836
4837 None of these seems to contain your C library. I need to get its name...
4838
4839 EOM
4840 fi
4841 fn=f
4842 rp='Where is your C library?'
4843 . ./getfile
4844 libc="$ans"
4845
4846 echo " "
4847 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4848 set X `cat libnames`
4849 shift
4850 xxx=files
4851 case $# in 1) xxx=file; esac
4852 echo "Extracting names from the following $xxx for later perusal:" >&4
4853 echo " "
4854 $sed 's/^/      /' libnames >&4
4855 echo " "
4856 $echo $n "This may take a while...$c" >&4
4857
4858 for file in $*; do
4859         case $file in
4860         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4861         *) $nm $nm_opt $file 2>/dev/null;;
4862         esac
4863 done >libc.tmp
4864
4865 $echo $n ".$c"
4866 $grep fprintf libc.tmp > libc.ptf
4867 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4868 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4869 xxx='[ADTSIW]'
4870 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4871         eval $xscan;\
4872         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873                 eval $xrun
4874 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4875         eval $xscan;\
4876         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877                 eval $xrun
4878 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4879         eval $xscan;\
4880         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4881                 eval $xrun
4882 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4883         eval $xscan;\
4884         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4885                 eval $xrun
4886 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4887         eval $xscan;\
4888         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4889                 eval $xrun
4890 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4891         eval $xscan;\
4892         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893                 eval $xrun
4894 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4895                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4896         eval $xscan;\
4897         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4898                 eval $xrun
4899 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4900         eval $xscan;\
4901         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4902                 eval $xrun
4903 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4904         eval $xscan;\
4905         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4906                 eval $xrun
4907 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4908         eval $xscan;\
4909         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4910                 eval $xrun
4911 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4912         eval $xscan;\
4913         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4914                 eval $xrun
4915 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4916         eval $xscan;\
4917         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4918                 eval $xrun
4919 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4920         eval $xscan;\
4921         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4922                 eval $xrun
4923 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4924         eval $xscan;\
4925         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4926                 eval $xrun
4927 else
4928         $nm -p $* 2>/dev/null >libc.tmp
4929         $grep fprintf libc.tmp > libc.ptf
4930         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4931                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4932         then
4933                 nm_opt='-p'
4934                 eval $xrun
4935         else
4936                 echo " "
4937                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4938                 com=''
4939                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4940                         for thisname in $libnames $libc; do
4941                                 $ar t $thisname >>libc.tmp
4942                         done
4943                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4944                         echo "Ok." >&4
4945                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4946                         # Repeat libc to extract forwarders to DLL entries too
4947                         for thisname in $libnames $libc; do
4948                                 $ar tv $thisname >>libc.tmp
4949                                 # Revision 50 of EMX has bug in $ar.
4950                                 # it will not extract forwarders to DLL entries
4951                                 # Use emximp which will extract exactly them.
4952                                 emximp -o tmp.imp $thisname \
4953                                     2>/dev/null && \
4954                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4955                                     < tmp.imp >>libc.tmp
4956                                 $rm tmp.imp
4957                         done
4958                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4959                         echo "Ok." >&4
4960                 else
4961                         echo "$ar didn't seem to work right." >&4
4962                         echo "Maybe this is a Cray...trying bld instead..." >&4
4963                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4964                         then
4965                                 for thisname in $libnames; do
4966                                         bld t $libnames | \
4967                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4968                                         $ar t $thisname >>libc.tmp
4969                                 done
4970                                 echo "Ok." >&4
4971                         else
4972                                 echo "That didn't work either.  Giving up." >&4
4973                                 exit 1
4974                         fi
4975                 fi
4976         fi
4977 fi
4978 nm_extract="$com"
4979 if $test -f /lib/syscalls.exp; then
4980         echo " "
4981         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4982         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4983 fi
4984 ;;
4985 esac
4986 $rm -f libnames libpath
4987
4988 : see if dld is available
4989 set dld.h i_dld
4990 eval $inhdr
4991
4992 : is a C symbol defined?
4993 csym='tlook=$1;
4994 case "$3" in
4995 -v) tf=libc.tmp; tc=""; tdc="";;
4996 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4997 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4998 esac;
4999 tx=yes;
5000 case "$reuseval-$4" in
5001 true-) ;;
5002 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5003 esac;
5004 case "$tx" in
5005 yes)
5006         case "$runnm" in
5007         true)
5008                 if $contains $tlook $tf >/dev/null 2>&1;
5009                 then tval=true;
5010                 else tval=false;
5011                 fi;;
5012         *)
5013                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5014                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5015                 then tval=true;
5016                 else tval=false;
5017                 fi;
5018                 $rm -f t t.c;;
5019         esac;;
5020 *)
5021         case "$tval" in
5022         $define) tval=true;;
5023         *) tval=false;;
5024         esac;;
5025 esac;
5026 eval "$2=$tval"'
5027
5028 : define an is-in-libc? function
5029 inlibc='echo " "; td=$define; tu=$undef;
5030 sym=$1; var=$2; eval "was=\$$2";
5031 tx=yes;
5032 case "$reuseval$was" in
5033 true) ;;
5034 true*) tx=no;;
5035 esac;
5036 case "$tx" in
5037 yes)
5038         set $sym tres -f;
5039         eval $csym;
5040         case "$tres" in
5041         true)
5042                 echo "$sym() found." >&4;
5043                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5044         *)
5045                 echo "$sym() NOT found." >&4;
5046                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5047         esac;;
5048 *)
5049         case "$was" in
5050         $define) echo "$sym() found." >&4;;
5051         *) echo "$sym() NOT found." >&4;;
5052         esac;;
5053 esac'
5054
5055 : see if dlopen exists
5056 xxx_runnm="$runnm"
5057 runnm=false
5058 set dlopen d_dlopen
5059 eval $inlibc
5060 runnm="$xxx_runnm"
5061
5062 : determine which dynamic loading, if any, to compile in
5063 echo " "
5064 dldir="ext/DynaLoader"
5065 case "$usedl" in
5066 $define|y|true)
5067         dflt='y'
5068         usedl="$define"
5069         ;;
5070 $undef|n|false)
5071         dflt='n'
5072         usedl="$undef"
5073         ;;
5074 *) 
5075         dflt='n'
5076         case "$d_dlopen" in
5077             $define) dflt='y' ;;
5078         esac
5079         case "$i_dld" in
5080             $define) dflt='y' ;;
5081         esac
5082         : Does a dl_xxx.xs file exist for this operating system
5083         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5084         ;;
5085 esac
5086 rp="Do you wish to use dynamic loading?"
5087 . ./myread
5088 usedl="$ans"
5089 case "$ans" in
5090 y*) usedl="$define"
5091         case "$dlsrc" in
5092         '')
5093                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5094                         dflt="$dldir/dl_${osname}.xs"
5095                 elif $test "$d_dlopen" = "$define" ; then
5096                         dflt="$dldir/dl_dlopen.xs"
5097                 elif $test "$i_dld" = "$define" ; then
5098                         dflt="$dldir/dl_dld.xs"
5099                 else
5100                         dflt=''
5101                 fi
5102                 ;;
5103         *)      dflt="$dldir/$dlsrc"
5104                 ;;
5105         esac
5106     echo "The following dynamic loading files are available:"
5107         : Can not go over to $dldir because getfile has path hard-coded in.
5108         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5109         rp="Source file to use for dynamic loading"
5110         fn="fne"
5111         # XXX This getfile call will fail the existence check if you try 
5112         # building away from $src (this is not supported yet).
5113         . ./getfile
5114         usedl="$define"
5115         : emulate basename
5116         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5117
5118         $cat << EOM
5119
5120 Some systems may require passing special flags to $cc -c to
5121 compile modules that will be used to create a shared library.
5122 To use no flags, say "none".
5123
5124 EOM
5125     case "$cccdlflags" in
5126     '') case "$gccversion" in
5127                 '') case "$osname" in
5128                         hpux)   dflt='+z' ;;
5129                         next)   dflt='none' ;;
5130                         irix*)  dflt='-KPIC' ;;
5131                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5132                         sunos)  dflt='-pic' ;;
5133                         *)      dflt='none' ;;
5134                     esac
5135                         ;;
5136                 *)  case "$osname" in
5137                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5138                         *)      dflt='-fpic' ;;
5139                     esac ;;
5140             esac ;;
5141         ' ') dflt='none' ;;
5142     *)  dflt="$cccdlflags" ;;
5143     esac
5144     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5145     . ./myread
5146     case "$ans" in
5147     none) cccdlflags=' ' ;;
5148     *) cccdlflags="$ans" ;;
5149     esac
5150
5151     cat << EOM
5152
5153 Some systems use ld to create libraries that can be dynamically loaded,
5154 while other systems (such as those using ELF) use $cc.
5155
5156 EOM
5157         case "$ld" in
5158         '')     $cat >try.c <<'EOM'
5159 /* Test for whether ELF binaries are produced */
5160 #include <fcntl.h>
5161 #include <stdlib.h>
5162 int main() {
5163         char b[4];
5164         int i = open("a.out",O_RDONLY);
5165         if(i == -1) 
5166                 exit(1); /* fail */
5167         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5168                 exit(0); /* succeed (yes, it's ELF) */
5169         else
5170                 exit(1); /* fail */
5171 }
5172 EOM
5173                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5174                         cat <<EOM
5175 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5176 EOM
5177                         dflt="$cc"
5178                 else
5179                         echo "I'll use ld to build dynamic libraries."
5180                         dflt='ld'
5181                 fi
5182                 rm -f try.c a.out
5183                 ;;
5184         *)      dflt="$ld"
5185                 ;;
5186         esac
5187
5188     rp="What command should be used to create dynamic libraries?"
5189     . ./myread
5190         ld="$ans"
5191
5192     cat << EOM
5193
5194 Some systems may require passing special flags to $ld to create a
5195 library that can be dynamically loaded.  If your ld flags include
5196 -L/other/path options to locate libraries outside your loader's normal
5197 search path, you may need to specify those -L options here as well.  To
5198 use no flags, say "none".
5199
5200 EOM
5201     case "$lddlflags" in
5202     '') case "$osname" in
5203                         beos) dflt='-nostart' ;;
5204                         hpux)  dflt='-b' ;;
5205                         linux|irix*)    dflt='-shared' ;;
5206                         next)  dflt='none' ;;
5207                         solaris) dflt='-G' ;;
5208                         sunos) dflt='-assert nodefinitions' ;;
5209                         svr4*|esix*) dflt="-G $ldflags" ;;
5210                 *)     dflt='none' ;;
5211                         esac
5212                         ;;
5213     *) dflt="$lddlflags" ;;
5214     esac
5215
5216         : Try to guess additional flags to pick up local libraries.
5217         : Be careful not to append to a plain 'none'
5218         case "$dflt" in
5219         none) dflt='' ;;
5220         esac
5221         for thisflag in $ldflags; do
5222                 case "$thisflag" in
5223                 -L*)
5224                         case " $dflt " in
5225                         *" $thisflag "*) ;;
5226                         *) dflt="$dflt $thisflag" ;;
5227                         esac
5228                         ;;
5229                 esac
5230         done
5231
5232         case "$dflt" in
5233         ''|' ') dflt='none' ;;
5234         esac
5235
5236     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5237     . ./myread
5238     case "$ans" in
5239     none) lddlflags=' ' ;;
5240     *) lddlflags="$ans" ;;
5241     esac
5242
5243         cat <<EOM
5244
5245 Some systems may require passing special flags to $cc to indicate that
5246 the resulting executable will use dynamic linking.  To use no flags,
5247 say "none".
5248
5249 EOM
5250     case "$ccdlflags" in
5251     '') case "$osname" in
5252                 hpux)   dflt='-Wl,-E' ;;
5253                 linux)  dflt='-rdynamic' ;;
5254                 next)   dflt='none' ;;
5255                 sunos)  dflt='none' ;;
5256                 *)      dflt='none' ;;
5257             esac ;;
5258     ' ')  dflt='none' ;;
5259     *)  dflt="$ccdlflags" ;;
5260     esac
5261     rp="Any special flags to pass to $cc to use dynamic loading?"
5262     . ./myread
5263     case "$ans" in
5264     none) ccdlflags=' ' ;;
5265     *) ccdlflags="$ans" ;;
5266     esac
5267     ;;
5268 *)  usedl="$undef"
5269         ld='ld'
5270     dlsrc='dl_none.xs'
5271     lddlflags=''
5272     ccdlflags=''
5273     ;;
5274 esac
5275
5276 also=''
5277 case "$usedl" in
5278 $undef)
5279         # No dynamic loading being used, so don't bother even to prompt.
5280         useshrplib='false'
5281         ;;
5282 *)      case "$useshrplib" in
5283         '')     case "$osname" in
5284                 svr4*|dgux|dynixptx|esix|powerux|beos)
5285                         dflt=y
5286                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5287                         ;;
5288                 next*)
5289                         case "$osvers" in
5290                         4*)     dflt=y
5291                                 also='Building a shared libperl is needed for MAB support.'
5292                                 ;;
5293                         *)      dflt=n
5294                                 ;;
5295                         esac
5296                         ;;
5297                 *)      dflt=n
5298                         ;;
5299                 esac
5300                 ;;
5301         $define|true|[Yy]*)
5302                 dflt=y
5303                 ;;
5304         *)      dflt=n
5305                 ;;
5306         esac
5307         $cat << EOM
5308
5309 The perl executable is normally obtained by linking perlmain.c with
5310 libperl${_a}, any static extensions (usually just DynaLoader), and
5311 any other libraries needed on this system (such as -lm, etc.).  Since
5312 your system supports dynamic loading, it is probably possible to build
5313 a shared libperl.$so.  If you will have more than one executable linked
5314 to libperl.$so, this will significantly reduce the size of each
5315 executable, but it may have a noticeable affect on performance.  The
5316 default is probably sensible for your system.
5317 $also
5318
5319 EOM
5320         rp="Build a shared libperl.$so (y/n)"
5321         . ./myread
5322         case "$ans" in
5323         true|$define|[Yy]*)
5324                 useshrplib='true'
5325                 # Why does next4 have to be so different?
5326                 case "${osname}${osvers}" in
5327                 next4*|rhapsody*)
5328                         xxx='DYLD_LIBRARY_PATH' ;;
5329                 os2*)   xxx='' ;; # Nothing special needed.
5330                 beos*)  xxx='' ;;
5331                 *)              xxx='LD_LIBRARY_PATH' ;;
5332                 esac
5333                 ;;
5334         *)      useshrplib='false' ;;
5335         esac
5336         ;;
5337 esac
5338
5339 case "$useshrplib" in
5340 true)
5341         case "$libperl" in
5342         '')
5343                 # Figure out a good name for libperl.so.  Since it gets stored in
5344                 # a version-specific architecture-dependent library, the version
5345                 # number isn't really that important, except for making cc/ld happy.
5346                 #
5347                 # A name such as libperl.so.3.1
5348                 majmin="libperl.$so.$patchlevel.$subversion"
5349                 # A name such as libperl.so.301
5350                 majonly=`echo $patchlevel $subversion |
5351                         $awk '{printf "%d%02d", $1, $2}'`
5352                 majonly=libperl.$so.$majonly
5353                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5354                 # rely on figuring it out from the naming of libc.
5355                 case "${osname}${osvers}" in
5356                 next4*)
5357                         dflt=libperl.5.$so
5358                         # XXX How handle the --version stuff for MAB?
5359                         ;;
5360                 linux*)  # ld won't link with a bare -lperl otherwise.
5361                         dflt=libperl.$so
5362                         ;;
5363                 *)      # Try to guess based on whether libc has major.minor.
5364                         case "$libc" in
5365                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5366                         *libc.$so.[0-9]*) dflt=$majonly ;;
5367                         *)      dflt=libperl.$so ;;
5368                         esac
5369                         ;;
5370                 esac
5371                 ;;
5372         *)      dflt=$libperl
5373                 ;;
5374         esac
5375         cat << EOM
5376
5377 I need to select a good name for the shared libperl.  If your system uses
5378 library names with major and minor numbers, then you might want something
5379 like $majmin.  Alternatively, if your system uses a single version
5380 number for shared libraries, then you might want to use $majonly.
5381 Or, your system might be quite happy with a simple libperl.$so.
5382
5383 Since the shared libperl will get installed into a version-specific
5384 architecture-dependent directory, the version number of the shared perl
5385 library probably isn't important, so the default should be o.k.
5386
5387 EOM
5388         rp='What name do you want to give to the shared libperl?'
5389         . ./myread
5390         libperl=$ans
5391         echo "Ok, I'll use $libperl"
5392         ;;
5393 *)
5394         libperl="libperl${_a}"
5395         ;;
5396 esac
5397
5398 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5399 case "$shrpdir" in
5400 '') ;;
5401 *)      $cat >&4 <<EOM
5402 WARNING:  Use of the shrpdir variable for the installation location of
5403 the shared $libperl is not supported.  It was never documented and
5404 will not work in this version.  Let me (perlbug@perl.com)
5405 know of any problems this may cause.
5406
5407 EOM
5408         case "$shrpdir" in
5409         "$archlibexp/CORE")
5410                 $cat >&4 <<EOM
5411 But your current setting of $shrpdir is
5412 the default anyway, so it's harmless.
5413 EOM
5414                 ;;
5415         *)
5416                 $cat >&4 <<EOM
5417 Further, your current attempted setting of $shrpdir
5418 conflicts with the value of $archlibexp/CORE
5419 that installperl will use.
5420 EOM
5421                 ;;
5422         esac
5423         ;;
5424 esac
5425
5426 # How will the perl executable find the installed shared $libperl?
5427 # Add $xxx to ccdlflags.
5428 # If we can't figure out a command-line option, use $shrpenv to
5429 # set env LD_RUN_PATH.  The main perl makefile uses this.
5430 shrpdir=$archlibexp/CORE
5431 xxx=''
5432 tmp_shrpenv=''
5433 if "$useshrplib"; then
5434     case "$osname" in 
5435         aix)
5436                 # We'll set it in Makefile.SH...
5437                 ;;
5438         solaris|netbsd)
5439                 xxx="-R $shrpdir"
5440                 ;;
5441         freebsd)
5442                 xxx="-Wl,-R$shrpdir"
5443                 ;;
5444         linux|irix*|dec_osf)
5445                 xxx="-Wl,-rpath,$shrpdir"
5446                 ;;
5447         next)
5448                 # next doesn't like the default...
5449                 ;;
5450         beos)
5451                 # beos doesn't like the default, either.
5452                 ;;
5453         hpux*)
5454                 # hpux doesn't like the default, either.
5455                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5456                 ;;
5457         *)
5458                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5459                 ;;
5460         esac
5461         case "$xxx" in
5462         '') ;;
5463         *)      
5464                 # Only add $xxx if it isn't already in ccdlflags.
5465                 case " $ccdlflags " in
5466                 *" $xxx "*)     ;;
5467                 *)      ccdlflags="$ccdlflags $xxx"
5468                         cat <<EOM >&4
5469
5470 Adding $xxx to the flags
5471 passed to $ld so that the perl executable will find the 
5472 installed shared $libperl.
5473
5474 EOM
5475                         ;;
5476                 esac
5477                 ;;
5478         esac
5479 fi
5480 # Respect a hint or command-line value.
5481 case "$shrpenv" in
5482 '') shrpenv="$tmp_shrpenv" ;;
5483 esac
5484
5485 : determine where manual pages go
5486 set man1dir man1dir none
5487 eval $prefixit
5488 $cat <<EOM
5489
5490 $spackage has manual pages available in source form.
5491 EOM
5492 case "$nroff" in
5493 nroff)
5494         echo "However, you don't have nroff, so they're probably useless to you."
5495         case "$man1dir" in
5496         '') man1dir="none";;
5497         esac;;
5498 esac
5499 echo "If you don't want the manual sources installed, answer 'none'."
5500 case "$man1dir" in
5501 ' ') dflt=none
5502         ;;
5503 '')
5504         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5505         lookpath="$lookpath $prefixexp/man/p_man/man1"
5506         lookpath="$lookpath $prefixexp/man/u_man/man1"
5507         lookpath="$lookpath $prefixexp/man/man.1"
5508         case "$sysman" in
5509         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5510         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5511         esac
5512         set dflt
5513         eval $prefixup
5514         ;;
5515 *)  dflt="$man1dir"
5516         ;;
5517 esac
5518 echo " "
5519 fn=dn+~
5520 rp="Where do the main $spackage manual pages (source) go?"
5521 . ./getfile
5522 if $test "X$man1direxp" != "X$ansexp"; then
5523         installman1dir=''
5524 fi
5525 man1dir="$ans"
5526 man1direxp="$ansexp"
5527 case "$man1dir" in
5528 '') man1dir=' '
5529         installman1dir='';;
5530 esac
5531 if $afs; then
5532         $cat <<EOM
5533
5534 Since you are running AFS, I need to distinguish the directory in which
5535 manual pages reside from the directory in which they are installed (and from
5536 which they are presumably copied to the former directory by occult means).
5537
5538 EOM
5539         case "$installman1dir" in
5540         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5541         *) dflt="$installman1dir";;
5542         esac
5543         fn=de~
5544         rp='Where will man pages be installed?'
5545         . ./getfile
5546         installman1dir="$ans"
5547 else
5548         installman1dir="$man1direxp"
5549 fi
5550
5551 : What suffix to use on installed man pages
5552
5553 case "$man1dir" in
5554 ' ')
5555         man1ext='0'
5556         ;;
5557 *)
5558         rp="What suffix should be used for the main $spackage man pages?"
5559         case "$man1ext" in
5560         '')     case "$man1dir" in
5561                 *1)  dflt=1 ;;
5562                 *1p) dflt=1p ;;
5563                 *1pm) dflt=1pm ;;
5564                 *l) dflt=l;;
5565                 *n) dflt=n;;
5566                 *o) dflt=o;;
5567                 *p) dflt=p;;
5568                 *C) dflt=C;;
5569                 *L) dflt=L;;
5570                 *L1) dflt=L1;;
5571                 *) dflt=1;;
5572                 esac
5573                 ;;
5574         *)      dflt="$man1ext";;
5575         esac
5576         . ./myread
5577         man1ext="$ans"
5578         ;;
5579 esac
5580
5581 : see if we can have long filenames
5582 echo " "
5583 rmlist="$rmlist /tmp/cf$$"
5584 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5585 first=123456789abcdef
5586 second=/tmp/cf$$/$first
5587 $rm -f $first $second
5588 if (echo hi >$first) 2>/dev/null; then
5589         if $test -f 123456789abcde; then
5590                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5591                 val="$undef"
5592         else
5593                 if (echo hi >$second) 2>/dev/null; then
5594                         if $test -f /tmp/cf$$/123456789abcde; then
5595                                 $cat <<'EOM'
5596 That's peculiar... You can have filenames longer than 14 characters, but only
5597 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5598 I shall consider your system cannot support long filenames at all.
5599 EOM
5600                                 val="$undef"
5601                         else
5602                                 echo 'You can have filenames longer than 14 characters.' >&4
5603                                 val="$define"
5604                         fi
5605                 else
5606                         $cat <<'EOM'
5607 How confusing! Some of your filesystems are sane enough to allow filenames
5608 longer than 14 characters but some others like /tmp can't even think about them.
5609 So, for now on, I shall assume your kernel does not allow them at all.
5610 EOM
5611                         val="$undef"
5612                 fi
5613         fi
5614 else
5615         $cat <<'EOM'
5616 You can't have filenames longer than 14 chars.  You can't even think about them!
5617 EOM
5618         val="$undef"
5619 fi 
5620 set d_flexfnam
5621 eval $setvar
5622 $rm -rf /tmp/cf$$ 123456789abcde*
5623
5624 : determine where library module manual pages go
5625 set man3dir man3dir none
5626 eval $prefixit
5627 $cat <<EOM
5628
5629 $spackage has manual pages for many of the library modules.
5630 EOM
5631
5632 case "$nroff" in
5633 nroff)
5634         $cat <<'EOM'
5635 However, you don't have nroff, so they're probably useless to you.
5636 EOM
5637         case "$man3dir" in
5638         '') man3dir="none";;
5639         esac;;
5640 esac
5641
5642 case "$d_flexfnam" in
5643 undef)
5644         $cat <<'EOM'
5645 However, your system can't handle the long file names like File::Basename.3. 
5646 EOM
5647         case "$man3dir" in
5648         '') man3dir="none";;
5649         esac;;
5650 esac
5651
5652 echo "If you don't want the manual sources installed, answer 'none'."
5653 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5654 case "$man3dir" in
5655 '')     case "$prefix" in 
5656         *$prog*) dflt=`echo $man1dir | 
5657                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5658         *)      dflt="$privlib/man/man3" ;;
5659         esac
5660         ;;
5661 ' ') dflt=none;;
5662 *)      dflt="$man3dir" ;;
5663 esac
5664 echo " "
5665
5666 fn=dn+~
5667 rp="Where do the $package library man pages (source) go?"
5668 . ./getfile
5669 if test "X$man3direxp" != "X$ansexp"; then
5670         installman3dir=''
5671 fi
5672
5673 man3dir="$ans"
5674 man3direxp="$ansexp"
5675 case "$man3dir" in
5676 '') man3dir=' '
5677         installman3dir='';;
5678 esac
5679 if $afs; then
5680         $cat <<EOM
5681
5682 Since you are running AFS, I need to distinguish the directory in which
5683 manual pages reside from the directory in which they are installed (and from
5684 which they are presumably copied to the former directory by occult means).
5685
5686 EOM
5687         case "$installman3dir" in
5688         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5689         *) dflt="$installman3dir";;
5690         esac
5691         fn=de~
5692         rp='Where will man pages be installed?'
5693         . ./getfile
5694         installman3dir="$ans"
5695 else
5696         installman3dir="$man3direxp"
5697 fi
5698
5699 : What suffix to use on installed man pages
5700
5701 case "$man3dir" in
5702 ' ')
5703         man3ext='0'
5704         ;;
5705 *)
5706         rp="What suffix should be used for the $package library man pages?"
5707         case "$man3ext" in
5708         '')     case "$man3dir" in
5709                 *3)  dflt=3 ;;
5710                 *3p) dflt=3p ;;
5711                 *3pm) dflt=3pm ;;
5712                 *l) dflt=l;;
5713                 *n) dflt=n;;
5714                 *o) dflt=o;;
5715                 *p) dflt=p;;
5716                 *C) dflt=C;;
5717                 *L) dflt=L;;
5718                 *L3) dflt=L3;;
5719                 *) dflt=3;;
5720                 esac
5721                 ;;
5722         *)      dflt="$man3ext";;
5723         esac
5724         . ./myread
5725         man3ext="$ans"
5726         ;;
5727 esac
5728
5729 : see if we have to deal with yellow pages, now NIS.
5730 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5731         if $test -f /usr/etc/nibindd; then
5732                 echo " "
5733                 echo "I'm fairly confident you're on a NeXT."
5734                 echo " "
5735                 rp='Do you get the hosts file via NetInfo?'
5736                 dflt=y
5737                 case "$hostcat" in
5738                 nidump*) ;;
5739                 '') ;;
5740                 *) dflt=n;;
5741                 esac
5742                 . ./myread
5743                 case "$ans" in
5744                 y*) hostcat='nidump hosts .';;
5745                 *)      case "$hostcat" in
5746                         nidump*) hostcat='';;
5747                         esac
5748                         ;;
5749                 esac
5750         fi
5751         case "$hostcat" in
5752         nidump*) ;;
5753         *)
5754                 case "$hostcat" in
5755                 *ypcat*) dflt=y;;
5756                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5757                                 dflt=y
5758                         else
5759                                 dflt=n
5760                         fi;;
5761                 *) dflt=n;;
5762                 esac
5763                 echo " "
5764                 rp='Are you getting the hosts file via yellow pages?'
5765                 . ./myread
5766                 case "$ans" in
5767                 y*) hostcat='ypcat hosts';;
5768                 *) hostcat='cat /etc/hosts';;
5769                 esac
5770                 ;;
5771         esac
5772 fi
5773 case "$hostcat" in
5774 '') hostcat='cat /etc/hosts';;
5775 esac
5776 case "$groupcat" in
5777 '') groupcat='cat /etc/group';;
5778 esac
5779 case "$passcat" in
5780 '') passcat='cat /etc/passwd';;
5781 esac
5782
5783 : now get the host name
5784 echo " "
5785 echo "Figuring out host name..." >&4
5786 case "$myhostname" in
5787 '') cont=true
5788         echo 'Maybe "hostname" will work...'
5789         if tans=`sh -c hostname 2>&1` ; then
5790                 myhostname=$tans
5791                 phostname=hostname
5792                 cont=''
5793         fi
5794         ;;
5795 *) cont='';;
5796 esac
5797 if $test "$cont"; then
5798         if ./xenix; then
5799                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5800                 if tans=`cat /etc/systemid 2>&1` ; then
5801                         myhostname=$tans
5802                         phostname='cat /etc/systemid'
5803                         echo "Whadyaknow.  Xenix always was a bit strange..."
5804                         cont=''
5805                 fi
5806         elif $test -r /etc/systemid; then
5807                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5808         fi
5809 fi
5810 if $test "$cont"; then
5811         echo 'No, maybe "uuname -l" will work...'
5812         if tans=`sh -c 'uuname -l' 2>&1` ; then
5813                 myhostname=$tans
5814                 phostname='uuname -l'
5815         else
5816                 echo 'Strange.  Maybe "uname -n" will work...'
5817                 if tans=`sh -c 'uname -n' 2>&1` ; then
5818                         myhostname=$tans
5819                         phostname='uname -n'
5820                 else
5821                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5822                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5823                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5824                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5825                         else
5826                                 case "$myhostname" in
5827                                 '') echo "Does this machine have an identity crisis or something?"
5828                                         phostname='';;
5829                                 *)
5830                                         echo "Well, you said $myhostname before..."
5831                                         phostname='echo $myhostname';;
5832                                 esac
5833                         fi
5834                 fi
5835         fi
5836 fi
5837 : you do not want to know about this
5838 set $myhostname
5839 myhostname=$1
5840
5841 : verify guess
5842 if $test "$myhostname" ; then
5843         dflt=y
5844         rp='Your host name appears to be "'$myhostname'".'" Right?"
5845         . ./myread
5846         case "$ans" in
5847         y*) ;;
5848         *) myhostname='';;
5849         esac
5850 fi
5851
5852 : bad guess or no guess
5853 while $test "X$myhostname" = X ; do
5854         dflt=''
5855         rp="Please type the (one word) name of your host:"
5856         . ./myread
5857         myhostname="$ans"
5858 done
5859
5860 : translate upper to lower if necessary
5861 case "$myhostname" in
5862 *[A-Z]*)
5863         echo "(Normalizing case in your host name)"
5864         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5865         ;;
5866 esac
5867
5868 case "$myhostname" in
5869 *.*)
5870         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5871         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5872         echo "(Trimming domain name from host name--host name is now $myhostname)"
5873         ;;
5874 *) case "$mydomain" in
5875         '')
5876                 {
5877                         test "X$hostcat" = "Xypcat hosts" &&
5878                         ypmatch "$myhostname" hosts 2>/dev/null |\
5879                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5880                         $test -s hosts
5881                 } || {
5882                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5883                                         /[       ]$myhostname[  . ]/p" > hosts
5884                 }
5885                 tmp_re="[       . ]"
5886                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5887                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5888                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5889                         hosts | $sort | $uniq | \
5890                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5891                 case `$echo X$dflt` in
5892                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5893                         dflt=.
5894                         ;;
5895                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5896                         ;;
5897                 esac
5898                 case "$dflt" in
5899                 .)
5900                         tans=`./loc resolv.conf X /etc /usr/etc`
5901                         if $test -f "$tans"; then
5902                                 echo "(Attempting domain name extraction from $tans)"
5903                                 dflt=.`$sed -n -e 's/   / /g' \
5904                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5905                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5906                                 case "$dflt" in
5907                                 .) dflt=.`$sed -n -e 's/        / /g' \
5908                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5909                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5910                                         ;;
5911                                 esac
5912                         fi
5913                         ;;
5914                 esac
5915                 case "$dflt" in
5916                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5917                         dflt=.`sh -c domainname 2>/dev/null`
5918                         case "$dflt" in
5919                         '') dflt='.';;
5920                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5921                         esac
5922                         ;;
5923                 esac
5924                 case "$dflt" in
5925                 .) echo "(Lost all hope -- silly guess then)"
5926                         dflt='.uucp'
5927                         ;;
5928                 esac
5929                 $rm -f hosts
5930                 ;;
5931         *) dflt="$mydomain";;
5932         esac;;
5933 esac
5934 echo " "
5935 rp="What is your domain name?"
5936 . ./myread
5937 tans="$ans"
5938 case "$ans" in
5939 '') ;;
5940 .*) ;;
5941 *) tans=".$tans";;
5942 esac
5943 mydomain="$tans"
5944
5945 : translate upper to lower if necessary
5946 case "$mydomain" in
5947 *[A-Z]*)
5948         echo "(Normalizing case in your domain name)"
5949         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5950         ;;
5951 esac
5952
5953 : a little sanity check here
5954 case "$phostname" in
5955 '') ;;
5956 *)
5957         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5958         $myhostname$mydomain|$myhostname) ;;
5959         *)
5960                 case "$phostname" in
5961                 sed*)
5962                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5963                         ;;
5964                 *)
5965                         echo "(That doesn't agree with your $phostname command, by the way.)"
5966                         ;;
5967                 esac
5968         ;;
5969         esac
5970         ;;
5971 esac
5972
5973 $cat <<EOM
5974
5975 I need to get your e-mail address in Internet format if possible, i.e.
5976 something like user@host.domain. Please answer accurately since I have
5977 no easy means to double check it. The default value provided below
5978 is most probably close to the reality but may not be valid from outside
5979 your organization...
5980
5981 EOM
5982 cont=x
5983 while test "$cont"; do
5984         case "$cf_email" in
5985         '') dflt="$cf_by@$myhostname$mydomain";;
5986         *) dflt="$cf_email";;
5987         esac
5988         rp='What is your e-mail address?'
5989         . ./myread
5990         cf_email="$ans"
5991         case "$cf_email" in
5992         *@*.*) cont='' ;;
5993         *)
5994                 rp='Address does not look like an Internet one.  Use it anyway?'
5995                 case "$fastread" in
5996                 yes) dflt=y ;;
5997                 *) dflt=n ;;
5998                 esac
5999                 . ./myread
6000                 case "$ans" in
6001                 y*) cont='' ;;
6002                 *) echo " " ;;
6003                 esac
6004                 ;;
6005         esac
6006 done
6007
6008 $cat <<EOM
6009
6010 If you or somebody else will be maintaining perl at your site, please
6011 fill in the correct e-mail address here so that they may be contacted
6012 if necessary. Currently, the "perlbug" program included with perl
6013 will send mail to this address in addition to perlbug@perl.com. You may
6014 enter "none" for no administrator.
6015
6016 EOM
6017 case "$perladmin" in
6018 '') dflt="$cf_email";;
6019 *) dflt="$perladmin";;
6020 esac
6021 rp='Perl administrator e-mail address'
6022 . ./myread
6023 perladmin="$ans"
6024
6025 : figure out how to guarantee perl startup
6026 case "$startperl" in
6027 '')
6028         case "$sharpbang" in
6029         *!)
6030                 $cat <<EOH
6031
6032 I can use the #! construct to start perl on your system. This will
6033 make startup of perl scripts faster, but may cause problems if you
6034 want to share those scripts and perl is not in a standard place
6035 ($binexp/perl) on all your platforms. The alternative is to force
6036 a shell by starting the script with a single ':' character.
6037
6038 EOH
6039                 dflt="$binexp/perl"
6040                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6041                 . ./myread
6042                 case "$ans" in
6043                 none)   startperl=": # use perl";;
6044                 *)      startperl="#!$ans"
6045                         if $test 30 -lt `echo "$ans" | wc -c`; then
6046                                 $cat >&4 <<EOM
6047
6048 WARNING:  Some systems limit the #! command to 32 characters.
6049 If you experience difficulty running Perl scripts with #!, try
6050 installing Perl in a directory with a shorter pathname.
6051
6052 EOM
6053                         fi ;;
6054                 esac
6055                 ;;
6056         *) startperl=": # use perl"
6057                 ;;
6058         esac
6059         ;;
6060 esac
6061 echo "I'll use $startperl to start perl scripts."
6062
6063 : figure best path for perl in scripts
6064 case "$perlpath" in
6065 '')
6066         perlpath="$binexp/perl"
6067         case "$startperl" in
6068         *!*) ;;
6069         *)
6070                 $cat <<EOH
6071
6072 I will use the "eval 'exec'" idiom to start Perl on your system.
6073 I can use the full path of your Perl binary for this purpose, but
6074 doing so may cause problems if you want to share those scripts and
6075 Perl is not always in a standard place ($binexp/perl).
6076
6077 EOH
6078                 dflt="$binexp/perl"
6079                 rp="What path shall I use in \"eval 'exec'\"?"
6080                 . ./myread
6081                 perlpath="$ans"
6082                 ;;
6083         esac
6084         ;;
6085 esac
6086 case "$startperl" in
6087 *!*)    ;;
6088 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6089 esac
6090
6091 : determine where public executable scripts go
6092 set scriptdir scriptdir
6093 eval $prefixit
6094 case "$scriptdir" in
6095 '')
6096         dflt="$bin"
6097         : guess some guesses
6098         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6099         $test -d /usr/share/bin && dflt=/usr/share/bin
6100         $test -d /usr/local/script && dflt=/usr/local/script
6101         $test -d $prefixexp/script && dflt=$prefixexp/script
6102         set dflt
6103         eval $prefixup
6104         ;;
6105 *)  dflt="$scriptdir"
6106         ;;
6107 esac
6108 $cat <<EOM
6109  
6110 Some installations have a separate directory just for executable scripts so
6111 that they can mount it across multiple architectures but keep the scripts in
6112 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6113 Or you might just lump your scripts in with all your other executables.
6114  
6115 EOM
6116 fn=d~
6117 rp='Where do you keep publicly executable scripts?'
6118 . ./getfile
6119 if $test "X$ansexp" != "X$scriptdirexp"; then
6120         installscript=''
6121 fi
6122 scriptdir="$ans"
6123 scriptdirexp="$ansexp"
6124 if $afs; then
6125         $cat <<EOM
6126
6127 Since you are running AFS, I need to distinguish the directory in which
6128 scripts reside from the directory in which they are installed (and from
6129 which they are presumably copied to the former directory by occult means).
6130
6131 EOM
6132         case "$installscript" in
6133         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6134         *) dflt="$installscript";;
6135         esac
6136         fn=de~
6137         rp='Where will public scripts be installed?'
6138         . ./getfile
6139         installscript="$ans"
6140 else
6141         installscript="$scriptdirexp"
6142 fi
6143
6144 : determine where site specific libraries go.
6145 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6146 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6147 case "$prefix" in
6148 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6149 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6150 esac
6151 eval $prefixit
6152 $cat <<EOM
6153
6154 The installation process will also create a directory for
6155 site-specific extensions and modules.  Some users find it convenient
6156 to place all site-specific files in this directory rather than in the
6157 main distribution directory.
6158
6159 EOM
6160 fn=d~+
6161 rp='Pathname for the site-specific library files?'
6162 . ./getfile
6163 if $test "X$sitelibexp" != "X$ansexp"; then
6164         installsitelib=''
6165 fi
6166 sitelib="$ans"
6167 sitelibexp="$ansexp"
6168 if $afs; then
6169         $cat <<EOM
6170
6171 Since you are running AFS, I need to distinguish the directory in
6172 which site-specific files reside from the directory in which they are
6173 installed (and from which they are presumably copied to the former
6174 directory by occult means).
6175
6176 EOM
6177         case "$installsitelib" in
6178         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6179         *) dflt="$installsitelib";;
6180         esac
6181         fn=de~
6182         rp='Where will site-specific files be installed?'
6183         . ./getfile
6184         installsitelib="$ans"
6185 else
6186         installsitelib="$sitelibexp"
6187 fi
6188
6189 : determine where site specific architecture-dependent libraries go.
6190 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6191 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6192 : sitelib may have an optional trailing /share.
6193 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6194 tdflt="$tdflt/$archname"
6195 set sitearch sitearch none
6196 eval $prefixit
6197 case "$sitearch" in
6198 '')     dflt="$tdflt" ;;
6199 *)      dflt="$sitearch" ;;
6200 esac
6201 $cat <<EOM
6202
6203 The installation process will also create a directory for
6204 architecture-dependent site-specific extensions and modules.
6205
6206 EOM
6207 fn=nd~+
6208 rp='Pathname for the site-specific architecture-dependent library files?'
6209 . ./getfile
6210 if $test "X$sitearchexp" != "X$ansexp"; then
6211         installsitearch=''
6212 fi
6213 sitearch="$ans"
6214 sitearchexp="$ansexp"
6215 if $afs; then
6216         $cat <<EOM
6217
6218 Since you are running AFS, I need to distinguish the directory in
6219 which site-specific architecture-dependent library files reside from
6220 the directory in which they are installed (and from which they are
6221 presumably copied to the former directory by occult means).
6222
6223 EOM
6224         case "$installsitearch" in
6225         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6226         *) dflt="$installsitearch";;
6227         esac
6228         fn=de~
6229         rp='Where will site-specific architecture-dependent files be installed?'
6230         . ./getfile
6231         installsitearch="$ans"
6232 else
6233         installsitearch="$sitearchexp"
6234 fi
6235
6236 cat <<EOM
6237
6238 Previous version of $package used the standard IO mechanisms as defined
6239 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6240 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6241 the default.  This abstraction layer can use AT&T's sfio (if you already
6242 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6243 problems with some extension modules.  Using PerlIO with stdio is safe,
6244 but it is slower than plain stdio and therefore is not the default.
6245
6246 If this doesn't make any sense to you, just accept the default 'n'.
6247 EOM
6248 case "$useperlio" in
6249 $define|true|[yY]*)     dflt='y';;
6250 *) dflt='n';;
6251 esac
6252 rp='Use the experimental PerlIO abstraction layer?'
6253 . ./myread
6254 case "$ans" in
6255 y|Y) 
6256         val="$define"
6257         ;;     
6258 *)      
6259         echo "Ok, doing things the stdio way"
6260         val="$undef"
6261         ;;
6262 esac
6263 set useperlio
6264 eval $setvar 
6265
6266 : Check how to convert floats to strings.
6267 if test "X$d_Gconvert" = X; then
6268         echo " "
6269         echo "Checking for an efficient way to convert floats to strings."
6270         $cat >try.c <<'EOP'
6271 #ifdef TRY_gconvert
6272 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6273 char *myname = "gconvert";
6274 #endif
6275 #ifdef TRY_gcvt
6276 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6277 char *myname = "gcvt";
6278 #endif
6279 #ifdef TRY_sprintf
6280 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6281 char *myname = "sprintf";
6282 #endif
6283
6284 #include <stdio.h>
6285
6286 int
6287 checkit(expect, got)
6288 char *expect;
6289 char *got;
6290 {
6291     if (strcmp(expect, got)) {
6292                 printf("%s oddity:  Expected %s, got %s\n",
6293                         myname, expect, got);
6294                 exit(1);
6295         }
6296 }
6297
6298 int main()
6299
6300         char buf[64]; 
6301         buf[63] = '\0';
6302
6303         /* This must be 1st test on (which?) platform */
6304         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6305         Gconvert(0.1, 8, 0, buf);
6306         checkit("0.1", buf);
6307
6308         Gconvert(1.0, 8, 0, buf); 
6309         checkit("1", buf);
6310
6311         Gconvert(0.0, 8, 0, buf); 
6312         checkit("0", buf);
6313
6314         Gconvert(-1.0, 8, 0, buf); 
6315         checkit("-1", buf);
6316
6317         /* Some Linux gcvt's give 1.e+5 here. */
6318         Gconvert(100000.0, 8, 0, buf); 
6319         checkit("100000", buf);
6320         
6321         /* Some Linux gcvt's give -1.e+5 here. */
6322         Gconvert(-100000.0, 8, 0, buf); 
6323         checkit("-100000", buf);
6324
6325         exit(0);
6326 }
6327 EOP
6328         case "$d_Gconvert" in
6329         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6330         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6331         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6332         *) xxx_list='gconvert gcvt sprintf' ;;
6333         esac
6334
6335         for xxx_convert in $xxx_list; do
6336                 echo "Trying $xxx_convert"
6337                 $rm -f try try$_o
6338                 set try -DTRY_$xxx_convert
6339                 if eval $compile; then
6340                         echo "$xxx_convert" found. >&4
6341                         if ./try; then
6342                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6343                                 break;
6344                         else
6345                                 echo "...But $xxx_convert didn't work as I expected."
6346                         fi
6347                 else
6348                         echo "$xxx_convert NOT found." >&4
6349                 fi
6350         done
6351                 
6352         case "$xxx_convert" in
6353         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6354         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6355         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6356         esac
6357 fi
6358
6359 : Initialize h_fcntl
6360 h_fcntl=false
6361
6362 : Initialize h_sysfile
6363 h_sysfile=false
6364
6365 : access call always available on UNIX
6366 set access d_access
6367 eval $inlibc
6368
6369 : locate the flags for 'access()'
6370 case "$d_access" in
6371 "$define")
6372         echo " "
6373         $cat >access.c <<'EOCP'
6374 #include <sys/types.h>
6375 #ifdef I_FCNTL
6376 #include <fcntl.h>
6377 #endif
6378 #ifdef I_SYS_FILE
6379 #include <sys/file.h>
6380 #endif
6381 #ifdef I_UNISTD
6382 #include <unistd.h>
6383 #endif
6384 int main() {
6385         exit(R_OK);
6386 }
6387 EOCP
6388         : check sys/file.h first, no particular reason here
6389         if $test `./findhdr sys/file.h` && \
6390                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6391                 h_sysfile=true;
6392                 echo "<sys/file.h> defines the *_OK access constants." >&4
6393         elif $test `./findhdr fcntl.h` && \
6394                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6395                 h_fcntl=true;
6396                 echo "<fcntl.h> defines the *_OK access constants." >&4
6397         elif $test `./findhdr unistd.h` && \
6398                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6399                 echo "<unistd.h> defines the *_OK access constants." >&4
6400         else
6401                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6402         fi
6403         ;;
6404 esac
6405 $rm -f access*
6406
6407 : see if accessx exists
6408 set accessx d_accessx
6409 eval $inlibc
6410
6411 : see if alarm exists
6412 set alarm d_alarm
6413 eval $inlibc
6414
6415 : Look for GNU-cc style attribute checking
6416 echo " "
6417 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6418 $cat >attrib.c <<'EOCP'
6419 #include <stdio.h>
6420 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6421 EOCP
6422 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6423         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6424                 echo "Your C compiler doesn't fully support __attribute__."
6425                 val="$undef"
6426         else
6427                 echo "Your C compiler supports __attribute__."
6428                 val="$define"
6429         fi
6430 else
6431         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6432         val="$undef"
6433 fi
6434 set d_attribut
6435 eval $setvar
6436 $rm -f attrib*
6437
6438 : see if bcmp exists
6439 set bcmp d_bcmp
6440 eval $inlibc
6441
6442 : see if bcopy exists
6443 set bcopy d_bcopy
6444 eval $inlibc
6445
6446 : see if this is a unistd.h system
6447 set unistd.h i_unistd
6448 eval $inhdr
6449
6450 : see if getpgrp exists
6451 set getpgrp d_getpgrp
6452 eval $inlibc
6453
6454 case "$d_getpgrp" in
6455 "$define")
6456         echo " "
6457         echo "Checking to see which flavor of getpgrp is in use..."
6458         $cat >set.c <<EOP
6459 #$i_unistd I_UNISTD
6460 #include <sys/types.h>
6461 #ifdef I_UNISTD
6462 #  include <unistd.h>
6463 #endif
6464 int main()
6465 {
6466         if (getuid() == 0) {
6467                 printf("(I see you are running Configure as super-user...)\n");
6468                 setuid(1);
6469         }
6470 #ifdef TRY_BSD_PGRP
6471         if (getpgrp(1) == 0)
6472                 exit(0);
6473 #else
6474         if (getpgrp() > 0)
6475                 exit(0);
6476 #endif
6477         exit(1);
6478 }
6479 EOP
6480         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6481                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6482                 val="$define"
6483         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6484                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6485                 val="$undef"
6486         else
6487                 echo "I can't seem to compile and run the test program."
6488                 if ./usg; then
6489                         xxx="a USG one, i.e. you use getpgrp()."
6490                 else
6491                         # SVR4 systems can appear rather BSD-ish.
6492                         case "$i_unistd" in
6493                         $undef)
6494                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6495                                 val="$define"
6496                                 ;;
6497                         $define)
6498                                 xxx="probably a USG one, i.e. you use getpgrp()."
6499                                 val="$undef"
6500                                 ;;
6501                         esac
6502                 fi
6503                 echo "Assuming your getpgrp is $xxx" >&4
6504         fi
6505         ;;
6506 *) val="$undef";;
6507 esac
6508 set d_bsdgetpgrp
6509 eval $setvar
6510 $rm -f set set.c
6511
6512 : see if setpgrp exists
6513 set setpgrp d_setpgrp
6514 eval $inlibc
6515
6516 case "$d_setpgrp" in
6517 "$define")
6518         echo " "
6519         echo "Checking to see which flavor of setpgrp is in use..."
6520         $cat >set.c <<EOP
6521 #$i_unistd I_UNISTD
6522 #include <sys/types.h>
6523 #ifdef I_UNISTD
6524 #  include <unistd.h>
6525 #endif
6526 int main()
6527 {
6528         if (getuid() == 0) {
6529                 printf("(I see you are running Configure as super-user...)\n");
6530                 setuid(1);
6531         }
6532 #ifdef TRY_BSD_PGRP
6533         if (-1 == setpgrp(1, 1))
6534                 exit(0);
6535 #else
6536         if (setpgrp() != -1)
6537                 exit(0);
6538 #endif
6539         exit(1);
6540 }
6541 EOP
6542         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6543                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6544                 val="$define"
6545         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6546                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6547                 val="$undef"
6548         else
6549                 echo "(I can't seem to compile and run the test program.)"
6550                 if ./usg; then
6551                         xxx="a USG one, i.e. you use setpgrp()."
6552                 else
6553                         # SVR4 systems can appear rather BSD-ish.
6554                         case "$i_unistd" in
6555                         $undef)
6556                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6557                                 val="$define"
6558                                 ;;
6559                         $define)
6560                                 xxx="probably a USG one, i.e. you use setpgrp()."
6561                                 val="$undef"
6562                                 ;;
6563                         esac
6564                 fi
6565                 echo "Assuming your setpgrp is $xxx" >&4
6566         fi
6567         ;;
6568 *) val="$undef";;
6569 esac
6570 set d_bsdsetpgrp
6571 eval $setvar
6572 $rm -f set set.c
6573 : see if bzero exists
6574 set bzero d_bzero
6575 eval $inlibc
6576
6577 : check for lengths of integral types
6578 echo " "
6579 case "$intsize" in
6580 '')
6581         echo "Checking to see how big your integers are..." >&4
6582         $cat >intsize.c <<'EOCP'
6583 #include <stdio.h>
6584 int main()
6585 {
6586         printf("intsize=%d;\n", sizeof(int));
6587         printf("longsize=%d;\n", sizeof(long));
6588         printf("shortsize=%d;\n", sizeof(short));
6589         exit(0);
6590 }
6591 EOCP
6592         set intsize
6593         if eval $compile_ok && ./intsize > /dev/null; then
6594                 eval `./intsize`
6595                 echo "Your integers are $intsize bytes long."
6596                 echo "Your long integers are $longsize bytes long."
6597                 echo "Your short integers are $shortsize bytes long."
6598         else
6599                 $cat >&4 <<EOM
6600 !
6601 Help! I can't compile and run the intsize test program: please enlighten me!
6602 (This is probably a misconfiguration in your system or libraries, and
6603 you really ought to fix it.  Still, I'll try anyway.)
6604 !
6605 EOM
6606                 dflt=4
6607                 rp="What is the size of an integer (in bytes)?"
6608                 . ./myread
6609                 intsize="$ans"
6610                 dflt=$intsize
6611                 rp="What is the size of a long integer (in bytes)?"
6612                 . ./myread
6613                 longsize="$ans"
6614                 dflt=2
6615                 rp="What is the size of a short integer (in bytes)?"
6616                 . ./myread
6617                 shortsize="$ans"
6618         fi
6619         ;;
6620 esac
6621 $rm -f intsize intsize.*
6622
6623 : see if signal is declared as pointer to function returning int or void
6624 echo " "
6625 xxx=`./findhdr signal.h`
6626 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6627 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6628         echo "You have int (*signal())() instead of void." >&4
6629         val="$undef"
6630 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6631         echo "You have void (*signal())()." >&4
6632         val="$define"
6633 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6634         echo "You have int (*signal())() instead of void." >&4
6635         val="$undef"
6636 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6637         echo "You have void (*signal())()." >&4
6638         val="$define"
6639 else
6640         case "$d_voidsig" in
6641         '')
6642         echo "I can't determine whether signal handler returns void or int..." >&4
6643                 dflt=void
6644                 rp="What type does your signal handler return?"
6645                 . ./myread
6646                 case "$ans" in
6647                 v*) val="$define";;
6648                 *) val="$undef";;
6649                 esac;;
6650         "$define")
6651                 echo "As you already told me, signal handler returns void." >&4
6652                 val="$define"
6653                 ;;
6654         *)      echo "As you already told me, signal handler returns int." >&4
6655                 val="$undef"
6656                 ;;
6657         esac
6658 fi
6659 set d_voidsig
6660 eval $setvar
6661 case "$d_voidsig" in
6662 "$define") signal_t="void";;
6663 *) signal_t="int";;
6664 esac
6665 $rm -f $$.tmp
6666
6667 : check for ability to cast large floats to 32-bit ints.
6668 echo " "
6669 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6670 if $test "$intsize" -ge 4; then
6671         xxx=int
6672 else
6673         xxx=long
6674 fi
6675 $cat >try.c <<EOCP
6676 #include <stdio.h>
6677 #include <sys/types.h>
6678 #include <signal.h>
6679 $signal_t blech(s) int s; { exit(3); }
6680 int main()
6681 {
6682         $xxx i32;
6683         double f, g;
6684         int result = 0;
6685         char str[16];
6686         signal(SIGFPE, blech);
6687
6688         /* Don't let compiler optimize the test away.  Store the number 
6689            in a writable string for gcc to pass to sscanf under HP/UX.
6690         */
6691         sprintf(str, "2147483647");
6692         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6693         g = 10 * f;
6694         i32  = ($xxx) g;
6695
6696         /* x86 processors will probably give 0x8000 0000, which is a
6697        sign change.  We don't want that.  We want to mimic SPARC
6698            behavior here, which is to preserve the sign and give
6699            back 0x7fff ffff.
6700         */
6701         if (i32 != ($xxx) f)
6702                 result |= 1;
6703         exit(result);
6704 }
6705 EOCP
6706 set try
6707 if eval $compile_ok; then
6708         ./try
6709         yyy=$?
6710 else
6711         echo "(I can't seem to compile the test program--assuming it can't)"
6712         yyy=1
6713 fi
6714 case "$yyy" in
6715 0)      val="$define"
6716         echo "Yup, it can."
6717         ;;
6718 *)      val="$undef"
6719         echo "Nope, it can't."
6720         ;;
6721 esac
6722 set d_casti32
6723 eval $setvar
6724 $rm -f try try.*
6725
6726 : check for ability to cast negative floats to unsigned
6727 echo " "
6728 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6729 $cat >try.c <<EOCP
6730 #include <stdio.h>
6731 #include <sys/types.h>
6732 #include <signal.h>
6733 $signal_t blech(s) int s; { exit(7); }
6734 $signal_t blech_in_list(s) int s; { exit(4); }
6735 unsigned long dummy_long(p) unsigned long p; { return p; }
6736 unsigned int dummy_int(p) unsigned int p; { return p; }
6737 unsigned short dummy_short(p) unsigned short p; { return p; }
6738 int main()
6739 {
6740         double f;
6741         unsigned long along;
6742         unsigned int aint;
6743         unsigned short ashort;
6744         int result = 0;
6745         char str[16];
6746         
6747         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6748            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6749            optimized the whole file away
6750         */
6751         /* Store the number in a writable string for gcc to pass to 
6752            sscanf under HP/UX.
6753         */
6754         sprintf(str, "-123");
6755         sscanf(str, "%lf", &f);  /* f = -123.; */
6756
6757         signal(SIGFPE, blech);
6758         along = (unsigned long)f;
6759         aint = (unsigned int)f;
6760         ashort = (unsigned short)f;
6761         if (along != (unsigned long)-123)
6762                 result |= 1;
6763         if (aint != (unsigned int)-123)
6764                 result |= 1;
6765         if (ashort != (unsigned short)-123)
6766                 result |= 1;
6767         sprintf(str, "1073741824.");
6768         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6769         f = f + f;
6770         along = 0;
6771         along = (unsigned long)f;
6772         if (along != 0x80000000)
6773                 result |= 2;
6774         f -= 1.;
6775         along = 0;
6776         along = (unsigned long)f;
6777         if (along != 0x7fffffff)
6778                 result |= 1;
6779         f += 2.;
6780         along = 0;
6781         along = (unsigned long)f;
6782         if (along != 0x80000001)
6783                 result |= 2;
6784         if (result)
6785                 exit(result);
6786         signal(SIGFPE, blech_in_list);
6787         sprintf(str, "123.");
6788         sscanf(str, "%lf", &f);  /* f = 123.; */
6789         along = dummy_long((unsigned long)f);
6790         aint = dummy_int((unsigned int)f);
6791         ashort = dummy_short((unsigned short)f);
6792         if (along != (unsigned long)123)
6793                 result |= 4;
6794         if (aint != (unsigned int)123)
6795                 result |= 4;
6796         if (ashort != (unsigned short)123)
6797                 result |= 4;
6798         exit(result);
6799
6800 }
6801 EOCP
6802 set try
6803 if eval $compile_ok; then
6804         ./try
6805         castflags=$?
6806 else
6807         echo "(I can't seem to compile the test program--assuming it can't)"
6808         castflags=7
6809 fi
6810 case "$castflags" in
6811 0)      val="$define"
6812         echo "Yup, it can."
6813         ;;
6814 *)      val="$undef"
6815         echo "Nope, it can't."
6816         ;;
6817 esac
6818 set d_castneg
6819 eval $setvar
6820 $rm -f try.*
6821
6822 : see if vprintf exists
6823 echo " "
6824 if set vprintf val -f d_vprintf; eval $csym; $val; then
6825         echo 'vprintf() found.' >&4
6826         val="$define"
6827         $cat >vprintf.c <<'EOF'
6828 #include <varargs.h>
6829
6830 int main() { xxx("foo"); }
6831
6832 xxx(va_alist)
6833 va_dcl
6834 {
6835         va_list args;
6836         char buf[10];
6837
6838         va_start(args);
6839         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6840 }
6841 EOF
6842         set vprintf
6843         if eval $compile && ./vprintf; then
6844                 echo "Your vsprintf() returns (int)." >&4
6845                 val2="$undef"
6846         else
6847                 echo "Your vsprintf() returns (char*)." >&4
6848                 val2="$define"
6849         fi
6850 else
6851         echo 'vprintf() NOT found.' >&4
6852                 val="$undef"
6853                 val2="$undef"
6854 fi
6855 set d_vprintf
6856 eval $setvar
6857 val=$val2
6858 set d_charvspr
6859 eval $setvar
6860
6861 : see if chown exists
6862 set chown d_chown
6863 eval $inlibc
6864
6865 : see if chroot exists
6866 set chroot d_chroot
6867 eval $inlibc
6868
6869 : see if chsize exists
6870 set chsize d_chsize
6871 eval $inlibc
6872
6873 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6874 while $test $# -ge 2; do
6875         case "$1" in
6876         $define) echo "#include <$2>";;
6877         esac ;
6878     shift 2;
6879 done > try.c;
6880 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6881 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6882         val="$define";
6883 else
6884         val="$undef";
6885 fi;
6886 set $varname;
6887 eval $setvar;
6888 $rm -f try.c try.o'
6889
6890 : see if this is a sys/uio.h system
6891 set sys/uio.h i_sysuio
6892 eval $inhdr
6893
6894 echo "Checking to see if your system supports struct iovec..." >&4
6895 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6896 eval $hasfield
6897 case "$d_iovec_s" in
6898 "$define")      echo "Yup, it does." >&4
6899                 ;;
6900 *)              echo "Nope, it doesn't." >&4
6901                 ;;
6902 esac
6903
6904 socketlib=''
6905 sockethdr=''
6906 : see whether socket exists
6907 echo " "
6908 $echo $n "Hmm... $c" >&4
6909 if set socket val -f d_socket; eval $csym; $val; then
6910         echo "Looks like you have Berkeley networking support." >&4
6911         d_socket="$define"
6912         if set setsockopt val -f; eval $csym; $val; then
6913                 d_oldsock="$undef"
6914         else
6915                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6916                 d_oldsock="$define"
6917         fi
6918 else
6919         if $contains socklib libc.list >/dev/null 2>&1; then
6920                 echo "Looks like you have Berkeley networking support." >&4
6921                 d_socket="$define"
6922                 : we will have to assume that it supports the 4.2 BSD interface
6923                 d_oldsock="$undef"
6924         else
6925                 echo "You don't have Berkeley networking in libc$_a..." >&4
6926                 if test "X$d_socket" = "X$define"; then
6927                    echo "...but you seem to believe that you have sockets." >&4
6928                 else
6929                         for net in net socket
6930                         do
6931                                 if test -f /usr/lib/lib$net$_a; then
6932                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6933                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6934                                         if $contains socket libc.list >/dev/null 2>&1; then
6935                                                 d_socket="$define"
6936                                                 socketlib="-l$net"
6937                                                 case "$net" in
6938                                                 net)
6939                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6940                                                         sockethdr="-I/usr/netinclude"
6941                                                         ;;
6942                                                 esac
6943                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6944                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6945                                                         d_oldsock="$undef"
6946                                                 else
6947                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6948                                                         d_oldsock="$define"
6949                                                 fi
6950                                                 break
6951                                         fi
6952                                 fi
6953                         done
6954                         if test "X$d_socket" != "X$define"; then
6955                            echo "or anywhere else I see." >&4
6956                            d_socket="$undef"
6957                            d_oldsock="$undef"
6958                         fi
6959                 fi
6960         fi
6961 fi
6962
6963 : see if socketpair exists
6964 set socketpair d_sockpair
6965 eval $inlibc
6966
6967
6968 echo " "
6969 echo "Checking the availability of certain socket constants..." >& 4
6970 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6971         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6972         $cat >try.c <<EOF
6973 #include <sys/types.h>
6974 #include <sys/socket.h>
6975 int main() {
6976     int i = $ENUM;
6977 }
6978 EOF
6979         val="$undef"
6980         set try; if eval $compile; then
6981                 val="$define"
6982         fi
6983         set d_${enum}; eval $setvar
6984         $rm -f try.c try
6985 done
6986
6987 set sendmsg d_sendmsg
6988 eval $inlibc
6989
6990 set recvmsg d_recvmsg
6991 eval $inlibc
6992
6993 echo " "
6994 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6995 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6996 eval $hasfield
6997 case "$d_msghdr_s" in
6998 "$define")      echo "Yup, it does." >&4
6999                 ;;
7000 *)              echo "Nope, it doesn't." >&4
7001                 ;;
7002 esac
7003
7004 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7005 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7006 eval $hasfield
7007 case "$d_cmsghdr_s" in
7008 "$define")      echo "Yup, it does." >&4
7009                 ;;
7010 *)              echo "Nope, it doesn't." >&4
7011                 ;;
7012 esac
7013
7014 : check for const keyword
7015 echo " "
7016 echo 'Checking to see if your C compiler knows about "const"...' >&4
7017 $cat >const.c <<'EOCP'
7018 typedef struct spug { int drokk; } spug;
7019 int main()
7020 {
7021         const char *foo;
7022         const spug y;
7023 }
7024 EOCP
7025 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7026         val="$define"
7027         echo "Yup, it does."
7028 else
7029         val="$undef"
7030         echo "Nope, it doesn't."
7031 fi
7032 set d_const
7033 eval $setvar
7034
7035 : see if crypt exists
7036 echo " "
7037 if set crypt val -f d_crypt; eval $csym; $val; then
7038         echo 'crypt() found.' >&4
7039         val="$define"
7040         cryptlib=''
7041 else
7042         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7043         if $test -z "$cryptlib"; then
7044                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7045         else
7046                 cryptlib=-lcrypt
7047         fi
7048         if $test -z "$cryptlib"; then
7049                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7050         else
7051                 cryptlib=-lcrypt
7052         fi
7053         if $test -z "$cryptlib"; then
7054                 cryptlib=`./loc libcrypt$_a "" $libpth`
7055         else
7056                 cryptlib=-lcrypt
7057         fi
7058         if $test -z "$cryptlib"; then
7059                 echo 'crypt() NOT found.' >&4
7060                 val="$undef"
7061         else
7062                 val="$define"
7063         fi
7064 fi
7065 set d_crypt
7066 eval $setvar
7067
7068 : get csh whereabouts
7069 case "$csh" in
7070 'csh') val="$undef" ;;
7071 *) val="$define" ;;
7072 esac
7073 set d_csh
7074 eval $setvar
7075 : Respect a hint or command line value for full_csh.
7076 case "$full_csh" in
7077 '') full_csh=$csh ;;
7078 esac
7079
7080 : see if cuserid exists
7081 set cuserid d_cuserid
7082 eval $inlibc
7083
7084 : see if this is a limits.h system
7085 set limits.h i_limits
7086 eval $inhdr
7087
7088 : see if this is a float.h system
7089 set float.h i_float
7090 eval $inhdr
7091
7092 : See if number of significant digits in a double precision number is known
7093 echo " "
7094 $cat >dbl_dig.c <<EOM
7095 #$i_limits I_LIMITS
7096 #$i_float I_FLOAT
7097 #ifdef I_LIMITS
7098 #include <limits.h>
7099 #endif
7100 #ifdef I_FLOAT
7101 #include <float.h>
7102 #endif
7103 #ifdef DBL_DIG
7104 printf("Contains DBL_DIG");
7105 #endif
7106 EOM
7107 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7108 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7109         echo "DBL_DIG found." >&4
7110         val="$define"
7111 else
7112         echo "DBL_DIG NOT found." >&4
7113         val="$undef"
7114 fi
7115 $rm -f dbl_dig.?
7116 set d_dbl_dig
7117 eval $setvar
7118
7119
7120 if $test X"$use64bits" = X"$define"; then
7121         : see if dbminit64 exists
7122         set dbminit64 d_dbminit64
7123         eval $inlibc
7124
7125         : see if dbmclose64 exists
7126         set dbmclose64 d_dbmclose64
7127         eval $inlibc
7128
7129         : see if fetch64 exists
7130         set fetch64 d_fetch64
7131         eval $inlibc
7132
7133         : see if store64 exists
7134         set store64 d_store64
7135         eval $inlibc
7136
7137         : see if delete64 exists
7138         set delete64 d_delete64
7139         eval $inlibc
7140
7141         : see if firstkey64 exists
7142         set firstkey64 d_firstkey64
7143         eval $inlibc
7144
7145         : see if nextkey64 exists
7146         set nextkey64 d_nextkey64
7147         eval $inlibc
7148 else
7149         val="$undef"
7150         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7151         do
7152                 set $xxx
7153                 eval $setvar
7154         done
7155 fi
7156
7157 : see if difftime exists
7158 set difftime d_difftime
7159 eval $inlibc
7160
7161 : see if sys/stat.h is available
7162 set sys/stat.h i_sysstat
7163 eval $inhdr
7164
7165 : see if this is a dirent system
7166 echo " "
7167 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7168         val="$define"
7169         echo "<dirent.h> found." >&4
7170 else
7171         val="$undef"
7172         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7173                 echo "<sys/dir.h> found." >&4
7174                 echo " "
7175         else
7176                 xinc=`./findhdr sys/ndir.h`
7177         fi
7178         echo "<dirent.h> NOT found." >&4
7179 fi
7180 set i_dirent
7181 eval $setvar
7182
7183 : Look for type of directory structure.
7184 echo " "
7185 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7186
7187 case "$direntrytype" in
7188 ''|' ')
7189         case "$i_dirent" in
7190         $define) guess1='struct dirent' ;;
7191         *) guess1='struct direct'  ;;
7192         esac
7193         ;;
7194 *)      guess1="$direntrytype"
7195         ;;
7196 esac
7197
7198 case "$guess1" in
7199 'struct dirent') guess2='struct direct' ;;
7200 *) guess2='struct dirent' ;;
7201 esac
7202                 
7203 if $contains "$guess1" try.c >/dev/null 2>&1; then
7204         direntrytype="$guess1"
7205         echo "Your directory entries are $direntrytype." >&4
7206 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7207         direntrytype="$guess2"
7208         echo "Your directory entries seem to be $direntrytype." >&4
7209 else
7210         echo "I don't recognize your system's directory entries." >&4
7211         rp="What type is used for directory entries on this system?"
7212         dflt="$guess1"
7213         . ./myread
7214         direntrytype="$ans"
7215 fi
7216 $rm -f try.c
7217
7218
7219 : see if the directory entry stores field length
7220 echo " "
7221 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7222 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7223         echo "Good, your directory entry keeps length information in d_namlen." >&4
7224         val="$define"
7225 else
7226         echo "Your directory entry does not know about the d_namlen field." >&4
7227         val="$undef"
7228 fi
7229 set d_dirnamlen
7230 eval $setvar
7231 $rm -f try.c
7232
7233
7234 if $test X"$use64bits" = X"$define"; then
7235         : see if fstat64 exists
7236         set fstat64 d_fstat64
7237         eval $inlibc
7238
7239         : see if ftruncate64 exists
7240         set ftruncate64 d_ftruncate64
7241         eval $inlibc
7242
7243         : see if lockf64 exists
7244         set lockf64 d_lockf64
7245         eval $inlibc
7246
7247         : see if llseek exists
7248         set llseek d_llseek
7249         eval $inlibc
7250
7251         : see if lseek64 exists
7252         set lseek64 d_lseek64
7253         eval $inlibc
7254
7255         : see if lstat64 exists
7256         set lstat64 d_lstat64
7257         eval $inlibc
7258
7259         : see if open64 exists
7260         set open64 d_open64
7261         eval $inlibc
7262
7263         : see if opendir64 exists
7264         set opendir64 d_opendir64
7265         eval $inlibc
7266
7267         : see if readdir64 exists
7268         set readdir64 d_readdir64
7269         eval $inlibc
7270
7271         : see if seekdir64 exists
7272         set seekdir64 d_seekdir64
7273         eval $inlibc
7274
7275         : see if stat64 exists
7276         set stat64 d_stat64
7277         eval $inlibc
7278
7279         : see if telldir64 exists
7280         set telldir64 d_telldir64
7281         eval $inlibc
7282
7283         : see if truncate64 exists
7284         set truncate64 d_truncate64
7285         eval $inlibc
7286
7287         : check for off64_t
7288         echo " "
7289         echo $n "Checking to see if your system supports off64_t...$c" >&4
7290         $cat >try.c <<EOCP
7291 #include <sys/types.h>
7292 #include <unistd.h>
7293 off64_t foo() { off64_t x; x = 7; return x; }'
7294 EOCP
7295         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7296                 val="$define"
7297                 echo " Yup, it does." >&4
7298         else
7299                 val="$undef"
7300                 echo " Nope, it doesn't." >&4
7301         fi
7302         $rm -f try.*
7303         set d_off64_t
7304         eval $setvar
7305
7306         : check for offset_t
7307         echo " "
7308         echo $n "Checking to see if your system supports offset_t...$c" >&4
7309         $cat >try.c <<EOCP
7310 #include <sys/types.h>
7311 #include <unistd.h>
7312 offset_t foo() { offset_t x; x = 7; return x; }'
7313 EOCP
7314         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7315                 val="$define"
7316                 echo " Yup, it does." >&4
7317         else
7318                 val="$undef"
7319                 echo " Nope, it doesn't." >&4
7320         fi
7321         $rm -f try.*
7322         set d_offset_t
7323         eval $setvar
7324
7325         : check for ino64_t
7326         echo " "
7327         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7328         val="$undef"
7329         case "$i_sysstat" in
7330         "$define" )
7331                 $cat >try.c <<EOCP
7332 #include <sys/types.h>
7333 #include <sys/stat.h>
7334 ino64_t foo() { ino64_t x; x = 7; return x; }'
7335 EOCP
7336                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7337                         val="$define"
7338                 fi
7339                 $rm -f try.*
7340                 ;;
7341         esac
7342         if $test "X$val" = X"$define"; then
7343                 echo " Yup, it does." >&4
7344         else
7345                 echo " Nope, it doesn't." >&4
7346         fi
7347         set d_ino64_t
7348         eval $setvar
7349
7350         : check for struct flock64
7351         echo " "
7352         echo "Checking to see if your system supports struct flock64..." >&4
7353         if $h_fcntl; then
7354                 set d_flock64_s flock64 l_len define fcntl.h
7355                 eval $hasfield
7356         else
7357                 val="$undef"
7358                 set d_flock64_s
7359                 eval $setvar
7360         fi
7361         case "$d_flock64_s" in
7362         "$define")      echo "Yup, it does." >&4
7363                         ;;
7364         *)              echo "Nope, it doesn't." >&4
7365                         ;;
7366         esac
7367
7368         : check for struct dirent64
7369         echo " "
7370         echo "Checking to see if your system supports struct dirent64..." >&4
7371         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7372         eval $hasfield
7373         case "$d_dirent64_s" in
7374         "$define")      echo "Yup, it does." >&4
7375                         ;;
7376         *)              echo "Nope, it doesn't." >&4
7377                         ;;
7378         esac
7379
7380 else
7381         val="$undef"
7382         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_off64_t d_offset_t d_ino64_t d_flock64_s d_dirent64_s
7383         do
7384                 set $xxx
7385                 eval $setvar
7386         done
7387 fi
7388
7389 : see if dlerror exists
7390 xxx_runnm="$runnm"
7391 runnm=false
7392 set dlerror d_dlerror
7393 eval $inlibc
7394 runnm="$xxx_runnm"
7395
7396 : see if dlfcn is available
7397 set dlfcn.h i_dlfcn
7398 eval $inhdr
7399
7400 case "$usedl" in
7401 $define|y|true)
7402         $cat << EOM
7403
7404 On a few systems, the dynamically loaded modules that perl generates and uses
7405 will need a different extension than shared libs. The default will probably
7406 be appropriate.
7407
7408 EOM
7409         case "$dlext" in
7410         '')     dflt="$so" ;;
7411         *)      dflt="$dlext" ;;
7412         esac
7413         rp='What is the extension of dynamically loaded modules'
7414         . ./myread
7415         dlext="$ans"
7416         ;;
7417 *)
7418         dlext="none"
7419         ;;
7420 esac
7421
7422 : Check if dlsym need a leading underscore
7423 echo " "
7424 val="$undef"
7425
7426 case "$dlsrc" in
7427 dl_dlopen.xs)
7428         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7429         $cat >dyna.c <<'EOM'
7430 fred () { }
7431 EOM
7432
7433 $cat >fred.c<<EOM
7434
7435 #include <stdio.h>
7436 #$i_dlfcn I_DLFCN
7437 #ifdef I_DLFCN
7438 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7439 #else
7440 #include <sys/types.h>
7441 #include <nlist.h>
7442 #include <link.h>
7443 #endif
7444
7445 extern int fred() ;
7446
7447 int main()
7448 {
7449     void * handle ;
7450     void * symbol ;
7451 #ifndef RTLD_LAZY
7452     int mode = 1 ;
7453 #else
7454     int mode = RTLD_LAZY ;
7455 #endif
7456     handle = dlopen("./dyna.$dlext", mode) ;
7457     if (handle == NULL) {
7458         printf ("1\n") ;
7459         fflush (stdout) ;
7460         exit(0);
7461     }
7462     symbol = dlsym(handle, "fred") ;
7463     if (symbol == NULL) {
7464         /* try putting a leading underscore */
7465         symbol = dlsym(handle, "_fred") ;
7466         if (symbol == NULL) {
7467             printf ("2\n") ;
7468             fflush (stdout) ;
7469             exit(0);
7470         }
7471         printf ("3\n") ;
7472     }
7473     else
7474         printf ("4\n") ;
7475     fflush (stdout) ;
7476     exit(0);
7477 }
7478 EOM
7479         : Call the object file tmp-dyna.o in case dlext=o.
7480         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7481                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7482                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7483                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7484                 xxx=`./fred`
7485                 case $xxx in
7486                 1)      echo "Test program failed using dlopen." >&4
7487                         echo "Perhaps you should not use dynamic loading." >&4;;
7488                 2)      echo "Test program failed using dlsym." >&4
7489                         echo "Perhaps you should not use dynamic loading." >&4;;
7490                 3)      echo "dlsym needs a leading underscore" >&4
7491                         val="$define" ;;
7492                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7493                 esac
7494         else
7495                 echo "I can't compile and run the test program." >&4
7496         fi
7497         ;;
7498 esac
7499                 
7500 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7501
7502 set d_dlsymun
7503 eval $setvar
7504
7505 hasproto='varname=$1; func=$2; shift; shift;
7506 while $test $# -ge 2; do
7507         case "$1" in
7508         $define) echo "#include <$2>";;
7509         esac ;
7510     shift 2;
7511 done > try.c;
7512 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7513 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7514         echo "$func() prototype found.";
7515         val="$define";
7516 else
7517         echo "$func() prototype NOT found.";
7518         val="$undef";
7519 fi;
7520 set $varname;
7521 eval $setvar;
7522 $rm -f try.c tryout.c'
7523
7524 : see if prototype for drand48 is available
7525 echo " "
7526 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7527 eval $hasproto
7528
7529 : see if dup2 exists
7530 set dup2 d_dup2
7531 eval $inlibc
7532
7533 : see if eaccess exists
7534 set eaccess d_eaccess
7535 eval $inlibc
7536
7537 : see if endgrent exists
7538 set endgrent d_endgrent
7539 eval $inlibc
7540
7541 : see if endhostent exists
7542 set endhostent d_endhent
7543 eval $inlibc
7544
7545 : see if endnetent exists
7546 set endnetent d_endnent
7547 eval $inlibc
7548
7549 : see if endprotoent exists
7550 set endprotoent d_endpent
7551 eval $inlibc
7552
7553 : see if endpwent exists
7554 set endpwent d_endpwent
7555 eval $inlibc
7556
7557 : see if endservent exists
7558 set endservent d_endsent
7559 eval $inlibc
7560
7561 : Locate the flags for 'open()'
7562 echo " "
7563 $cat >open3.c <<'EOCP'
7564 #include <sys/types.h>
7565 #ifdef I_FCNTL
7566 #include <fcntl.h>
7567 #endif
7568 #ifdef I_SYS_FILE
7569 #include <sys/file.h>
7570 #endif
7571 int main() {
7572         if(O_RDONLY);
7573 #ifdef O_TRUNC
7574         exit(0);
7575 #else
7576         exit(1);
7577 #endif
7578 }
7579 EOCP
7580 : check sys/file.h first to get FREAD on Sun
7581 if $test `./findhdr sys/file.h` && \
7582                 set open3 -DI_SYS_FILE && eval $compile; then
7583         h_sysfile=true;
7584         echo "<sys/file.h> defines the O_* constants..." >&4
7585         if ./open3; then
7586                 echo "and you have the 3 argument form of open()." >&4
7587                 val="$define"
7588         else
7589                 echo "but not the 3 argument form of open().  Oh, well." >&4
7590                 val="$undef"
7591         fi
7592 elif $test `./findhdr fcntl.h` && \
7593                 set open3 -DI_FCNTL && eval $compile; then
7594         h_fcntl=true;
7595         echo "<fcntl.h> defines the O_* constants..." >&4
7596         if ./open3; then
7597                 echo "and you have the 3 argument form of open()." >&4
7598                 val="$define"
7599         else
7600                 echo "but not the 3 argument form of open().  Oh, well." >&4
7601                 val="$undef"
7602         fi
7603 else
7604         val="$undef"
7605         echo "I can't find the O_* constant definitions!  You got problems." >&4
7606 fi
7607 set d_open3
7608 eval $setvar
7609 $rm -f open3*
7610
7611 : check for non-blocking I/O stuff
7612 case "$h_sysfile" in
7613 true) echo "#include <sys/file.h>" > head.c;;
7614 *)
7615         case "$h_fcntl" in
7616         true) echo "#include <fcntl.h>" > head.c;;
7617         *) echo "#include <sys/fcntl.h>" > head.c;;
7618         esac
7619         ;;
7620 esac
7621 echo " "
7622 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7623 case "$o_nonblock" in
7624 '')
7625         $cat head.c > try.c
7626         $cat >>try.c <<'EOCP'
7627 int main() {
7628 #ifdef O_NONBLOCK
7629         printf("O_NONBLOCK\n");
7630         exit(0);
7631 #endif
7632 #ifdef O_NDELAY
7633         printf("O_NDELAY\n");
7634         exit(0);
7635 #endif
7636 #ifdef FNDELAY
7637         printf("FNDELAY\n");
7638         exit(0);
7639 #endif
7640         exit(0);
7641 }
7642 EOCP
7643         set try
7644         if eval $compile_ok; then
7645                 o_nonblock=`./try`
7646                 case "$o_nonblock" in
7647                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7648                 *) echo "Seems like we can use $o_nonblock.";;
7649                 esac
7650         else
7651                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7652         fi
7653         ;;
7654 *) echo "Using $hint value $o_nonblock.";;
7655 esac
7656 $rm -f try try.* .out core
7657
7658 echo " "
7659 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7660 case "$eagain" in
7661 '')
7662         $cat head.c > try.c
7663         $cat >>try.c <<EOCP
7664 #include <errno.h>
7665 #include <sys/types.h>
7666 #include <signal.h>
7667 #define MY_O_NONBLOCK $o_nonblock
7668 #ifndef errno  /* XXX need better Configure test */
7669 extern int errno;
7670 #endif
7671 $signal_t blech(x) int x; { exit(3); }
7672 EOCP
7673         $cat >> try.c <<'EOCP'
7674 int main()
7675 {
7676         int pd[2];
7677         int pu[2];
7678         char buf[1];
7679         char string[100];
7680
7681         pipe(pd);       /* Down: child -> parent */
7682         pipe(pu);       /* Up: parent -> child */
7683         if (0 != fork()) {
7684                 int ret;
7685                 close(pd[1]);   /* Parent reads from pd[0] */
7686                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7687                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7688                         exit(1);
7689                 signal(SIGALRM, blech);
7690                 alarm(5);
7691                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7692                         exit(2);
7693                 sprintf(string, "%d\n", ret);
7694                 write(2, string, strlen(string));
7695                 alarm(0);
7696 #ifdef EAGAIN
7697                 if (errno == EAGAIN) {
7698                         printf("EAGAIN\n");
7699                         goto ok;
7700                 }
7701 #endif
7702 #ifdef EWOULDBLOCK
7703                 if (errno == EWOULDBLOCK)
7704                         printf("EWOULDBLOCK\n");
7705 #endif
7706         ok:
7707                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7708                 sleep(2);                               /* Give it time to close our pipe */
7709                 alarm(5);
7710                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7711                 alarm(0);
7712                 sprintf(string, "%d\n", ret);
7713                 write(3, string, strlen(string));
7714                 exit(0);
7715         }
7716
7717         close(pd[0]);                   /* We write to pd[1] */
7718         close(pu[1]);                   /* We read from pu[0] */
7719         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7720         close(pd[1]);                   /* Pipe pd is now fully closed! */
7721         exit(0);                                /* Bye bye, thank you for playing! */
7722 }
7723 EOCP
7724         set try
7725         if eval $compile_ok; then
7726                 echo "$startsh" >mtry
7727                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7728                 chmod +x mtry
7729                 ./mtry >/dev/null 2>&1
7730                 case $? in
7731                 0) eagain=`$cat try.out`;;
7732                 1) echo "Could not perform non-blocking setting!";;
7733                 2) echo "I did a successful read() for something that was not there!";;
7734                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7735                 *) echo "Something terribly wrong happened during testing.";;
7736                 esac
7737                 rd_nodata=`$cat try.ret`
7738                 echo "A read() system call with no data present returns $rd_nodata."
7739                 case "$rd_nodata" in
7740                 0|-1) ;;
7741                 *)
7742                         echo "(That's peculiar, fixing that to be -1.)"
7743                         rd_nodata=-1
7744                         ;;
7745                 esac
7746                 case "$eagain" in
7747                 '')
7748                         echo "Forcing errno EAGAIN on read() with no data available."
7749                         eagain=EAGAIN
7750                         ;;
7751                 *)
7752                         echo "Your read() sets errno to $eagain when no data is available."
7753                         ;;
7754                 esac
7755                 status=`$cat try.err`
7756                 case "$status" in
7757                 0) echo "And it correctly returns 0 to signal EOF.";;
7758                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7759                 *) echo "However, your read() returns '$status' on EOF??";;
7760                 esac
7761                 val="$define"
7762                 if test "$status" = "$rd_nodata"; then
7763                         echo "WARNING: you can't distinguish between EOF and no data!"
7764                         val="$undef"
7765                 fi
7766         else
7767                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7768                 eagain=EAGAIN
7769         fi
7770         set d_eofnblk
7771         eval $setvar
7772         ;;
7773 *)
7774         echo "Using $hint value $eagain."
7775         echo "Your read() returns $rd_nodata when no data is present."
7776         case "$d_eofnblk" in
7777         "$define") echo "And you can see EOF because read() returns 0.";;
7778         "$undef") echo "But you can't see EOF status from read() returned value.";;
7779         *)
7780                 echo "(Assuming you can't see EOF status from read anyway.)"
7781                 d_eofnblk=$undef
7782                 ;;
7783         esac
7784         ;;
7785 esac
7786 $rm -f try try.* .out core head.c mtry
7787
7788 : see if fchmod exists
7789 set fchmod d_fchmod
7790 eval $inlibc
7791
7792 : see if fchown exists
7793 set fchown d_fchown
7794 eval $inlibc
7795
7796 : see if this is an fcntl system
7797 set fcntl d_fcntl
7798 eval $inlibc
7799
7800 : see if sys/select.h has to be included
7801 set sys/select.h i_sysselct
7802 eval $inhdr
7803
7804 : see if we should include time.h, sys/time.h, or both
7805 echo " "
7806 if test "X$timeincl" = X; then
7807         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7808         $echo $n "I'm now running the test program...$c"
7809         $cat >try.c <<'EOCP'
7810 #include <sys/types.h>
7811 #ifdef I_TIME
7812 #include <time.h>
7813 #endif
7814 #ifdef I_SYSTIME
7815 #ifdef SYSTIMEKERNEL
7816 #define KERNEL
7817 #endif
7818 #include <sys/time.h>
7819 #endif
7820 #ifdef I_SYSSELECT
7821 #include <sys/select.h>
7822 #endif
7823 int main()
7824 {
7825         struct tm foo;
7826 #ifdef S_TIMEVAL
7827         struct timeval bar;
7828 #endif
7829 #ifdef S_TIMEZONE
7830         struct timezone tzp;
7831 #endif
7832         if (foo.tm_sec == foo.tm_sec)
7833                 exit(0);
7834 #ifdef S_TIMEVAL
7835         if (bar.tv_sec == bar.tv_sec)
7836                 exit(0);
7837 #endif
7838         exit(1);
7839 }
7840 EOCP
7841         flags=''
7842         for s_timezone in '-DS_TIMEZONE' ''; do
7843         sysselect=''
7844         for s_timeval in '-DS_TIMEVAL' ''; do
7845         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7846         for i_time in '' '-DI_TIME'; do
7847         for i_systime in '-DI_SYSTIME' ''; do
7848                 case "$flags" in
7849                 '') $echo $n ".$c"
7850                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7851                         if eval $compile; then
7852                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7853                                 shift
7854                                 flags="$*"
7855                                 echo " "
7856                                 $echo $n "Succeeded with $flags$c"
7857                         fi
7858                         ;;
7859                 esac
7860         done
7861         done
7862         done
7863         done
7864         done
7865         timeincl=''
7866         echo " "
7867         case "$flags" in
7868         *SYSTIMEKERNEL*) i_systimek="$define"
7869                 timeincl=`./findhdr sys/time.h`
7870                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7871         *) i_systimek="$undef";;
7872         esac
7873         case "$flags" in
7874         *I_TIME*) i_time="$define"
7875                 timeincl=`./findhdr time.h`" $timeincl"
7876                 echo "We'll include <time.h>." >&4;;
7877         *) i_time="$undef";;
7878         esac
7879         case "$flags" in
7880         *I_SYSTIME*) i_systime="$define"
7881                 timeincl=`./findhdr sys/time.h`" $timeincl"
7882                 echo "We'll include <sys/time.h>." >&4;;
7883         *) i_systime="$undef";;
7884         esac
7885         $rm -f try.c try
7886 fi
7887
7888 : check for fd_set items
7889 $cat <<EOM
7890
7891 Checking to see how well your C compiler handles fd_set and friends ...
7892 EOM
7893 $cat >fd_set.c <<EOCP
7894 #$i_systime I_SYS_TIME
7895 #$i_sysselct I_SYS_SELECT
7896 #$d_socket HAS_SOCKET
7897 #include <sys/types.h>
7898 #ifdef HAS_SOCKET
7899 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7900 #endif
7901 #ifdef I_SYS_TIME
7902 #include <sys/time.h>
7903 #endif
7904 #ifdef I_SYS_SELECT
7905 #include <sys/select.h>
7906 #endif
7907 int main() {
7908         fd_set fds;
7909
7910 #ifdef TRYBITS
7911         if(fds.fds_bits);
7912 #endif
7913
7914 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7915         exit(0);
7916 #else
7917         exit(1);
7918 #endif
7919 }
7920 EOCP
7921 set fd_set -DTRYBITS
7922 if eval $compile; then
7923         d_fds_bits="$define"
7924         d_fd_set="$define"
7925         echo "Well, your system knows about the normal fd_set typedef..." >&4
7926         if ./fd_set; then
7927                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7928                 d_fd_macros="$define"
7929         else
7930                 $cat >&4 <<'EOM'
7931 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7932 EOM
7933                 d_fd_macros="$undef"
7934         fi
7935 else
7936         $cat <<'EOM'
7937 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7938 EOM
7939         set fd_set
7940         if eval $compile; then
7941                 d_fds_bits="$undef"
7942                 d_fd_set="$define"
7943                 echo "Well, your system has some sort of fd_set available..." >&4
7944                 if ./fd_set; then
7945                         echo "and you have the normal fd_set macros." >&4
7946                         d_fd_macros="$define"
7947                 else
7948                         $cat <<'EOM'
7949 but not the normal fd_set macros!  Gross!  More work for me...
7950 EOM
7951                         d_fd_macros="$undef"
7952                 fi
7953         else
7954         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7955                 d_fd_set="$undef"
7956                 d_fds_bits="$undef"
7957                 d_fd_macros="$undef"
7958         fi
7959 fi
7960 $rm -f fd_set*
7961
7962 : see if fgetpos exists
7963 set fgetpos d_fgetpos
7964 eval $inlibc
7965
7966
7967 if $test X"$use64bits" = X"$define"; then
7968         : see if fgetpos64 exists
7969         set fgetpos64 d_fgetpos64
7970         eval $inlibc
7971
7972         : see if fopen64 exists
7973         set freopen64 d_fopen64
7974         eval $inlibc
7975
7976         : see if freopen64 exists
7977         set freopen64 d_freopen64
7978         eval $inlibc
7979
7980         : see if fseek64 exists
7981         set fseek64 d_fseek64
7982         eval $inlibc
7983
7984         : see if fseeko64 exists
7985         set fseeko64 d_fseeko64
7986         eval $inlibc
7987
7988         : see if fsetpos64 exists
7989         set fsetpos64 d_fsetpos64
7990         eval $inlibc
7991
7992         : see if ftell64 exists
7993         set ftell64 d_ftell64
7994         eval $inlibc
7995
7996         : see if ftello64 exists
7997         set ftello64 d_ftello64
7998         eval $inlibc
7999
8000         : see if tmpfile64 exists
8001         set tmpfile64 d_tmpfile64
8002         eval $inlibc
8003 else
8004         val="$undef"
8005         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
8006         do
8007                 set $xxx
8008                 eval $setvar
8009         done
8010 fi
8011 : see if flock exists
8012 set flock d_flock
8013 eval $inlibc
8014
8015 : see if fork exists
8016 set fork d_fork
8017 eval $inlibc
8018
8019 : see if pathconf exists
8020 set pathconf d_pathconf
8021 eval $inlibc
8022
8023 : see if fpathconf exists
8024 set fpathconf d_fpathconf
8025 eval $inlibc
8026
8027 : see if fseeko exists
8028 set fseeko d_fseeko
8029 eval $inlibc
8030
8031 : see if fsetpos exists
8032 set fsetpos d_fsetpos
8033 eval $inlibc
8034
8035 : see if this is a sys/param system
8036 set sys/param.h i_sysparam
8037 eval $inhdr
8038
8039 : see if this is a sys/mount.h system
8040 set sys/mount.h i_sysmount
8041 eval $inhdr
8042
8043
8044 : see if statfs exists
8045 set statfs d_statfs
8046 eval $inlibc
8047
8048 : see if fstatfs exists
8049 set fstatfs d_fstatfs
8050 eval $inlibc
8051
8052 : see if statfs knows about mount flags
8053 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8054 eval $hasfield
8055
8056
8057 : see if statvfs exists
8058 set statvfs d_statvfs
8059 eval $inlibc
8060
8061 : see if fstatvfs exists
8062 set fstatvfs d_fstatvfs
8063 eval $inlibc
8064
8065
8066 : see if ftello exists
8067 set ftello d_ftello
8068 eval $inlibc
8069
8070 : see if getgrent exists
8071 set getgrent d_getgrent
8072 eval $inlibc
8073
8074 : see if gethostbyaddr exists
8075 set gethostbyaddr d_gethbyaddr
8076 eval $inlibc
8077
8078 : see if gethostbyname exists
8079 set gethostbyname d_gethbyname
8080 eval $inlibc
8081
8082 : see if gethostent exists
8083 set gethostent d_gethent
8084 eval $inlibc
8085
8086 : see how we will look up host name
8087 echo " "
8088 call=''
8089 if set gethostname val -f d_gethname; eval $csym; $val; then
8090         echo 'gethostname() found.' >&4
8091         d_gethname="$define"
8092         call=gethostname
8093 fi
8094 if set uname val -f d_uname; eval $csym; $val; then
8095         if ./xenix; then
8096                 $cat <<'EOM'
8097 uname() was found, but you're running xenix, and older versions of xenix
8098 have a broken uname(). If you don't really know whether your xenix is old
8099 enough to have a broken system call, use the default answer.
8100
8101 EOM
8102                 dflt=y
8103                 case "$d_uname" in
8104                 "$define") dflt=n;;
8105                 esac
8106                 rp='Is your uname() broken?'
8107                 . ./myread
8108                 case "$ans" in
8109                 n*) d_uname="$define"; call=uname;;
8110                 esac
8111         else
8112                 echo 'uname() found.' >&4
8113                 d_uname="$define"
8114                 case "$call" in
8115                 '') call=uname ;;
8116                 esac
8117         fi
8118 fi
8119 case "$d_gethname" in
8120 '') d_gethname="$undef";;
8121 esac
8122 case "$d_uname" in
8123 '') d_uname="$undef";;
8124 esac
8125 case "$d_uname$d_gethname" in
8126 *define*)
8127         dflt=n
8128         cat <<EOM
8129  
8130 Every now and then someone has a $call() that lies about the hostname
8131 but can't be fixed for political or economic reasons.  If you wish, I can
8132 pretend $call() isn't there and maybe compute hostname at run-time
8133 thanks to the '$phostname' command.
8134
8135 EOM
8136         rp="Shall I ignore $call() from now on?"
8137         . ./myread
8138         case "$ans" in
8139         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8140         esac;;
8141 esac
8142 case "$phostname" in
8143 '') aphostname='';;
8144 *) case "$aphostname" in
8145         /*) ;;
8146         *) set X $phostname
8147                 shift
8148                 file=$1
8149                 shift
8150                 file=`./loc $file $file $pth`
8151                 aphostname=`echo $file $*`
8152                 ;;
8153         esac
8154         ;;
8155 esac
8156 case "$d_uname$d_gethname" in
8157 *define*) ;;
8158 *)
8159         case "$phostname" in
8160         '')
8161                 echo "There will be no way for $package to get your hostname." >&4;;
8162         *)
8163         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8164                 ;;
8165         esac;;
8166 esac
8167 case "$d_phostname" in
8168 '') d_phostname="$undef";;
8169 esac
8170
8171 : see if this is a netdb.h system
8172 set netdb.h i_netdb
8173 eval $inhdr
8174
8175 : see if prototypes for various gethostxxx netdb.h functions are available
8176 echo " "
8177 set d_gethostprotos gethostent $i_netdb netdb.h
8178 eval $hasproto
8179
8180 : see if getlogin exists
8181 set getlogin d_getlogin
8182 eval $inlibc
8183
8184 : see if getmntent exists
8185 set getmntent d_getmntent
8186 eval $inlibc
8187
8188 : see if getnetbyaddr exists
8189 set getnetbyaddr d_getnbyaddr
8190 eval $inlibc
8191
8192 : see if getnetbyname exists
8193 set getnetbyname d_getnbyname
8194 eval $inlibc
8195
8196 : see if getnetent exists
8197 set getnetent d_getnent
8198 eval $inlibc
8199
8200 : see if prototypes for various getnetxxx netdb.h functions are available
8201 echo " "
8202 set d_getnetprotos getnetent $i_netdb netdb.h
8203 eval $hasproto
8204
8205
8206 : see if getprotobyname exists
8207 set getprotobyname d_getpbyname
8208 eval $inlibc
8209
8210 : see if getprotobynumber exists
8211 set getprotobynumber d_getpbynumber
8212 eval $inlibc
8213
8214 : see if getprotoent exists
8215 set getprotoent d_getpent
8216 eval $inlibc
8217
8218 : see if getpgid exists
8219 set getpgid d_getpgid
8220 eval $inlibc
8221
8222 : see if getpgrp2 exists
8223 set getpgrp2 d_getpgrp2
8224 eval $inlibc
8225
8226 : see if getppid exists
8227 set getppid d_getppid
8228 eval $inlibc
8229
8230 : see if getpriority exists
8231 set getpriority d_getprior
8232 eval $inlibc
8233
8234 : see if prototypes for various getprotoxxx netdb.h functions are available
8235 echo " "
8236 set d_getprotoprotos getprotoent $i_netdb netdb.h
8237 eval $hasproto
8238
8239 : see if getpwent exists
8240 set getpwent d_getpwent
8241 eval $inlibc
8242
8243
8244 : see if getservbyname exists
8245 set getservbyname d_getsbyname
8246 eval $inlibc
8247
8248 : see if getservbyport exists
8249 set getservbyport d_getsbyport
8250 eval $inlibc
8251
8252 : see if getservent exists
8253 set getservent d_getsent
8254 eval $inlibc
8255
8256 : see if prototypes for various getservxxx netdb.h functions are available
8257 echo " "
8258 set d_getservprotos getservent $i_netdb netdb.h
8259 eval $hasproto
8260
8261 : see if gettimeofday or ftime exists
8262 set gettimeofday d_gettimeod
8263 eval $inlibc
8264 case "$d_gettimeod" in
8265 "$undef")
8266         set ftime d_ftime 
8267         eval $inlibc
8268         ;;
8269 *)
8270         val="$undef"; set d_ftime; eval $setvar
8271         ;;
8272 esac
8273 case "$d_gettimeod$d_ftime" in
8274 "$undef$undef")
8275         echo " "
8276         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8277         ;;
8278 esac
8279
8280 : see if this is an grp system
8281 set grp.h i_grp
8282 eval $inhdr
8283
8284 case "$i_grp" in
8285 $define)
8286         xxx=`./findhdr grp.h`
8287         $cppstdin $cppflags $cppminus < $xxx >$$.h
8288
8289         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8290                 val="$define"
8291         else
8292                 val="$undef"
8293         fi
8294         set d_grpasswd
8295         eval $setvar
8296
8297         $rm -f $$.h
8298         ;;
8299 *)
8300         val="$undef";
8301         set d_grpasswd; eval $setvar
8302         ;;
8303 esac
8304
8305 : see if hasmntopt exists
8306 set hasmntopt d_hasmntopt
8307 eval $inlibc
8308
8309 : see if this is a netinet/in.h or sys/in.h system
8310 set netinet/in.h i_niin sys/in.h i_sysin
8311 eval $inhdr
8312
8313 : see if arpa/inet.h has to be included
8314 set arpa/inet.h i_arpainet
8315 eval $inhdr
8316
8317 : see if htonl --and friends-- exists
8318 val=''
8319 set htonl val
8320 eval $inlibc
8321
8322 : Maybe they are macros.
8323 case "$val" in
8324 $undef)
8325         $cat >htonl.c <<EOM
8326 #include <stdio.h>
8327 #include <sys/types.h>
8328 #$i_niin I_NETINET_IN
8329 #$i_sysin I_SYS_IN
8330 #$i_arpainet I_ARPA_INET
8331 #ifdef I_NETINET_IN
8332 #include <netinet/in.h>
8333 #endif
8334 #ifdef I_SYS_IN
8335 #include <sys/in.h>
8336 #endif
8337 #ifdef I_ARPA_INET
8338 #include <arpa/inet.h>
8339 #endif
8340 #ifdef htonl
8341 printf("Defined as a macro.");
8342 #endif
8343 EOM
8344         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8345         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8346                 val="$define"
8347                 echo "But it seems to be defined as a macro." >&4
8348         fi
8349         $rm -f htonl.?
8350         ;;
8351 esac
8352 set d_htonl
8353 eval $setvar
8354
8355 : see which of string.h or strings.h is needed
8356 echo " "
8357 strings=`./findhdr string.h`
8358 if $test "$strings" && $test -r "$strings"; then
8359         echo "Using <string.h> instead of <strings.h>." >&4
8360         val="$define"
8361 else
8362         val="$undef"
8363         strings=`./findhdr strings.h`
8364         if $test "$strings" && $test -r "$strings"; then
8365                 echo "Using <strings.h> instead of <string.h>." >&4
8366         else
8367                 echo "No string header found -- You'll surely have problems." >&4
8368         fi
8369 fi
8370 set i_string
8371 eval $setvar
8372 case "$i_string" in
8373 "$undef") strings=`./findhdr strings.h`;;
8374 *)        strings=`./findhdr string.h`;;
8375 esac
8376
8377 : index or strchr
8378 echo " "
8379 if set index val -f; eval $csym; $val; then
8380         if set strchr val -f d_strchr; eval $csym; $val; then
8381                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8382                         val="$define"
8383                         vali="$undef"
8384                         echo "strchr() found." >&4
8385                 else
8386                         val="$undef"
8387                         vali="$define"
8388                         echo "index() found." >&4
8389                 fi
8390         else
8391                 val="$undef"
8392                 vali="$define"
8393                 echo "index() found." >&4
8394         fi
8395 else
8396         if set strchr val -f d_strchr; eval $csym; $val; then
8397                 val="$define"
8398                 vali="$undef"
8399                 echo "strchr() found." >&4
8400         else
8401                 echo "No index() or strchr() found!" >&4
8402                 val="$undef"
8403                 vali="$undef"
8404         fi
8405 fi
8406 set d_strchr; eval $setvar
8407 val="$vali"
8408 set d_index; eval $setvar
8409
8410 : check whether inet_aton exists
8411 set inet_aton d_inetaton
8412 eval $inlibc
8413
8414 : see if inttypes.h is available
8415 : we want a real compile instead of Inhdr because some systems
8416 : have an inttypes.h which includes non-existent headers
8417 echo " "
8418 $cat >try.c <<EOCP
8419 #include <inttypes.h>
8420 int main() {
8421         static int32_t foo32 = 0x12345678;
8422 }
8423 EOCP
8424 set try
8425 if eval $compile; then
8426         echo "<inttypes.h> found." >&4
8427         val="$define"
8428 else
8429         echo "<inttypes.h> NOT found." >&4
8430         val="$undef"
8431 fi
8432 $rm -f try.c try
8433 set i_inttypes
8434 eval $setvar
8435
8436 : check for int64_t
8437 case "$use64bits" in
8438 "$define" )
8439         echo " "
8440         echo $n "Checking to see if your system supports int64_t...$c" >&4
8441         $cat >try.c <<EOCP
8442 #include <sys/types.h>
8443 #$i_inttypes I_INTTYPES
8444 #ifdef I_INTTYPES
8445 #include <inttypes.h>
8446 #endif
8447 int64_t foo() { int64_t x; x = 7; return x; }
8448 EOCP
8449         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8450                 val="$define"
8451                 echo " Yup, it does." >&4
8452         else
8453                 val="$undef"
8454                 echo " Nope, it doesn't." >&4
8455         fi
8456         $rm -f try.*
8457         ;;
8458 *)      val="$undef"
8459         ;;
8460 esac
8461 set d_int64t
8462 eval $setvar
8463
8464
8465 : Look for isascii
8466 echo " "
8467 $cat >isascii.c <<'EOCP'
8468 #include <stdio.h>
8469 #include <ctype.h>
8470 int main() {
8471         int c = 'A';
8472         if (isascii(c))
8473                 exit(0);
8474         else
8475                 exit(1);
8476 }
8477 EOCP
8478 set isascii
8479 if eval $compile; then
8480         echo "isascii() found." >&4
8481         val="$define"
8482 else
8483         echo "isascii() NOT found." >&4
8484         val="$undef"
8485 fi
8486 set d_isascii
8487 eval $setvar
8488 $rm -f isascii*
8489
8490 : see if killpg exists
8491 set killpg d_killpg
8492 eval $inlibc
8493
8494 : see if lchown exists
8495 echo " "
8496 $cat > try.c <<'EOCP'
8497 /* System header to define __stub macros and hopefully few prototypes,
8498     which can conflict with char lchown(); below.  */
8499 #include <assert.h>
8500 /* Override any gcc2 internal prototype to avoid an error.  */
8501 /* We use char because int might match the return type of a gcc2
8502    builtin and then its argument prototype would still apply.  */
8503 char lchown();
8504 int main() {
8505     /*  The GNU C library defines this for functions which it implements
8506         to always fail with ENOSYS.  Some functions are actually named
8507         something starting with __ and the normal name is an alias.  */
8508 #if defined (__stub_lchown) || defined (__stub___lchown)
8509 choke me
8510 #else
8511 lchown();
8512 #endif
8513 ; return 0; }
8514 EOCP
8515 set try
8516 if eval $compile; then
8517     $echo "lchown() found." >&4
8518     val="$define"
8519 else
8520     $echo "lchown() NOT found." >&4
8521     val="$undef"
8522 fi
8523 set d_lchown
8524 eval $setvar
8525
8526 : see if link exists
8527 set link d_link
8528 eval $inlibc
8529
8530 : see if localeconv exists
8531 set localeconv d_locconv
8532 eval $inlibc
8533
8534 : see if lockf exists
8535 set lockf d_lockf
8536 eval $inlibc
8537
8538 : check for length of double
8539 echo " "
8540 case "$doublesize" in
8541 '')
8542         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8543         $cat >try.c <<'EOCP'
8544 #include <stdio.h>
8545 int main()
8546 {
8547         printf("%d\n", sizeof(double));
8548 }
8549 EOCP
8550         set try
8551         if eval $compile_ok; then
8552                 doublesize=`./try`
8553                 $echo " $doublesize bytes." >&4
8554         else
8555                 dflt='8'
8556                 echo "(I can't seem to compile the test program.  Guessing...)"
8557                 rp="What is the size of a double precision number (in bytes)?"
8558                 . ./myread
8559                 doublesize="$ans"
8560         fi
8561         ;;
8562 esac
8563 $rm -f try.c try
8564
8565 : check for long doubles
8566 echo " "
8567 echo $n "Checking to see if your system supports long doubles...$c" >&4
8568 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8569 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8570         val="$define"
8571         echo " Yup, it does." >&4
8572 else
8573         val="$undef"
8574         echo " Nope, it doesn't." >&4
8575 fi
8576 $rm try.*
8577 set d_longdbl
8578 eval $setvar
8579
8580 : check for length of long double
8581 case "${d_longdbl}${longdblsize}" in
8582 $define)
8583         echo " "
8584         $echo $n "Checking to see how big your long doubles are...$c" >&4
8585         $cat >try.c <<'EOCP'
8586 #include <stdio.h>
8587 int main()
8588 {
8589         printf("%d\n", sizeof(long double));
8590 }
8591 EOCP
8592         set try
8593         if eval $compile; then
8594                 longdblsize=`./try`
8595                 $echo " $longdblsize bytes." >&4
8596         else
8597                 dflt='8'
8598                 echo " "
8599                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8600                 rp="What is the size of a long double (in bytes)?"
8601                 . ./myread
8602                 longdblsize="$ans"
8603         fi
8604         if $test "X$doublesize" = "X$longdblsize"; then
8605                 echo "(That isn't any different from an ordinary double.)"
8606         fi      
8607         ;;
8608 esac
8609 $rm -f try.c try
8610
8611 : check for long long
8612 echo " "
8613 echo $n "Checking to see if your system supports long long...$c" >&4
8614 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8615 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8616         val="$define"
8617         echo " Yup, it does." >&4
8618 else
8619         val="$undef"
8620         echo " Nope, it doesn't." >&4
8621 fi
8622 $rm try.*
8623 set d_longlong
8624 eval $setvar
8625
8626 : check for length of long long
8627 case "${d_longlong}${longlongsize}" in
8628 $define)
8629         echo " "
8630         $echo $n "Checking to see how big your long longs are...$c" >&4
8631         $cat >try.c <<'EOCP'
8632 #include <stdio.h>
8633 int main()
8634 {
8635         printf("%d\n", sizeof(long long));
8636 }
8637 EOCP
8638         set try
8639         if eval $compile_ok; then
8640                 longlongsize=`./try`
8641                 $echo " $longlongsize bytes." >&4
8642         else
8643                 dflt='8'
8644                 echo " "
8645                 echo "(I can't seem to compile the test program.  Guessing...)"
8646                 rp="What is the size of a long long (in bytes)?"
8647                 . ./myread
8648                 longlongsize="$ans"
8649         fi
8650         if $test "X$longsize" = "X$longlongsize"; then
8651                 echo "(That isn't any different from an ordinary long.)"
8652         fi      
8653         ;;
8654 esac
8655 $rm -f try.c try
8656
8657 : see if lstat exists
8658 set lstat d_lstat
8659 eval $inlibc
8660
8661 : see if madvise exists
8662 set madvise d_madvise
8663 eval $inlibc
8664
8665 : see if mblen exists
8666 set mblen d_mblen
8667 eval $inlibc
8668
8669 : see if mbstowcs exists
8670 set mbstowcs d_mbstowcs
8671 eval $inlibc
8672
8673 : see if mbtowc exists
8674 set mbtowc d_mbtowc
8675 eval $inlibc
8676
8677 : see if memcmp exists
8678 set memcmp d_memcmp
8679 eval $inlibc
8680
8681 : see if memcpy exists
8682 set memcpy d_memcpy
8683 eval $inlibc
8684
8685 : see if memmove exists
8686 set memmove d_memmove
8687 eval $inlibc
8688
8689 : see if memset exists
8690 set memset d_memset
8691 eval $inlibc
8692
8693 : see if mkdir exists
8694 set mkdir d_mkdir
8695 eval $inlibc
8696
8697 : see if mkfifo exists
8698 set mkfifo d_mkfifo
8699 eval $inlibc
8700
8701 : see if mktime exists
8702 set mktime d_mktime
8703 eval $inlibc
8704
8705 : see if this is a sys/mman.h system
8706 set sys/mman.h i_sysmman
8707 eval $inhdr
8708
8709 : see if mmap exists
8710 set mmap d_mmap
8711 eval $inlibc
8712 : see what shmat returns
8713 : default to something harmless
8714 mmaptype='void *'
8715 case "$i_sysmman$d_mmap" in
8716 "$define$define")
8717         $cat >mmap.c <<'END'
8718 #include <sys/mman.h>
8719 void *mmap();
8720 END
8721         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8722                 mmaptype='void *'
8723         else
8724                 mmaptype='caddr_t'
8725         fi
8726         echo "and it returns ($mmaptype)." >&4
8727         ;;
8728 esac
8729
8730
8731
8732 : see if mprotect exists
8733 set mprotect d_mprotect
8734 eval $inlibc
8735
8736 : see if msgctl exists
8737 set msgctl d_msgctl
8738 eval $inlibc
8739
8740 : see if msgget exists
8741 set msgget d_msgget
8742 eval $inlibc
8743
8744 : see if msgsnd exists
8745 set msgsnd d_msgsnd
8746 eval $inlibc
8747
8748 : see if msgrcv exists
8749 set msgrcv d_msgrcv
8750 eval $inlibc
8751
8752 : see how much of the 'msg*(2)' library is present.
8753 h_msg=true
8754 echo " "
8755 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8756 *"$undef"*) h_msg=false;;
8757 esac
8758 case "$osname" in
8759 freebsd)
8760     case "`ipcs 2>&1`" in
8761     "SVID messages"*"not configured"*)
8762         echo "Your $osname does not have the msg*(2) configured." >&4
8763         h_msg=false
8764         val="$undef"
8765         set msgctl d_msgctl
8766         eval $setvar
8767         set msgget d_msgget
8768         eval $setvar
8769         set msgsnd d_msgsnd
8770         eval $setvar
8771         set msgrcv d_msgrcv
8772         eval $setvar
8773         ;;
8774     esac
8775     ;;
8776 esac
8777 : we could also check for sys/ipc.h ...
8778 if $h_msg && $test `./findhdr sys/msg.h`; then
8779         echo "You have the full msg*(2) library." >&4
8780         val="$define"
8781 else
8782         echo "You don't have the full msg*(2) library." >&4
8783         val="$undef"
8784 fi
8785 set d_msg
8786 eval $setvar
8787
8788 : see if msync exists
8789 set msync d_msync
8790 eval $inlibc
8791
8792 : see if munmap exists
8793 set munmap d_munmap
8794 eval $inlibc
8795
8796 : see if nice exists
8797 set nice d_nice
8798 eval $inlibc
8799
8800 : see if POSIX threads are available
8801 if test "X$usethreads" = "X$define"; then
8802         set pthread.h i_pthread
8803         eval $inhdr
8804 else
8805         i_pthread="$undef"
8806 fi
8807
8808
8809
8810 : how to create joinable pthreads
8811 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
8812         echo " "
8813         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8814         $cat >try.c <<'EOCP'
8815 #include <pthread.h>
8816 int main() {
8817     int detachstate = JOINABLE;
8818 }
8819 EOCP
8820         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8821         if eval $compile; then
8822                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
8823                 val="$undef" # Yes, undef.
8824                 set d_old_pthread_create_joinable
8825                 eval $setvar
8826                 val=""
8827                 set old_pthread_create_joinable
8828                 eval $setvar
8829         else
8830                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8831                 if eval $compile; then
8832                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
8833                         val="$define"
8834                         set d_old_pthread_create_joinable
8835                         eval $setvar
8836                         val=PTHREAD_CREATE_UNDETACHED
8837                         set old_pthread_create_joinable
8838                         eval $setvar
8839                 else            
8840                         set try -DJOINABLE=__UNDETACHED
8841                         if eval $compile; then
8842                                 echo "You seem to use __UNDETACHED." >&4
8843                                 val="$define"
8844                                 set d_old_pthread_create_joinable
8845                                 eval $setvar
8846                                 val=__UNDETACHED
8847                                 set old_pthread_create_joinable
8848                                 eval $setvar
8849                         else
8850                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
8851                                 val="$define"
8852                                 set d_old_pthread_create_joinable
8853                                 eval $setvar
8854                                 val=0
8855                                 set old_pthread_create_joinable
8856                                 eval $setvar
8857                         fi
8858                 fi
8859         fi
8860         $rm -f try try.*
8861 else
8862     d_old_pthread_create_joinable="$undef"
8863     old_pthread_create_joinable=""
8864 fi
8865
8866 : see if pause exists
8867 set pause d_pause
8868 eval $inlibc
8869
8870 : see if pipe exists
8871 set pipe d_pipe
8872 eval $inlibc
8873
8874 : see if poll exists
8875 set poll d_poll
8876 eval $inlibc
8877
8878
8879 : see whether the various POSIXish _yields exist
8880 $cat >try.c <<EOP
8881 #include <pthread.h>
8882 #include <stdio.h>
8883 int main() {
8884 #ifdef SCHED_YIELD
8885         sched_yield();
8886 #else
8887 #ifdef PTHREAD_YIELD
8888         pthread_yield();
8889 #else
8890 #ifdef PTHREAD_YIELD_NULL
8891         pthread_yield(NULL);
8892 #endif
8893 #endif
8894 #endif
8895 }
8896 EOP
8897 : see if sched_yield exists
8898 set try -DSCHED_YIELD
8899 if eval $compile; then
8900     val="$define"
8901     sched_yield='sched_yield()'
8902 else
8903     val="$undef"
8904 fi
8905 case "$usethreads" in
8906 $define)
8907         case "$val" in
8908         $define) echo 'sched_yield() found.' >&4        ;;
8909         *)       echo 'sched_yield() NOT found.' >&4    ;;
8910         esac
8911 esac
8912 set d_sched_yield
8913 eval $setvar
8914
8915 : see if pthread_yield exists
8916 set try -DPTHREAD_YIELD
8917 if eval $compile; then
8918     val="$define"
8919     case "$sched_yield" in
8920     '') sched_yield='pthread_yield()' ;;
8921     esac
8922 else
8923     set try -DPTHREAD_YIELD_NULL
8924     if eval $compile; then
8925         val="$define"
8926         case "$sched_yield" in
8927         '') sched_yield='pthread_yield(NULL)' ;;
8928         esac
8929     else
8930         val="$undef"
8931     fi
8932 fi
8933 case "$usethreads" in
8934 $define)
8935         case "$val" in
8936         $define) echo 'pthread_yield() found.' >&4      ;;
8937         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8938         esac
8939         ;;
8940 esac
8941 set d_pthread_yield
8942 eval $setvar
8943
8944 case "$sched_yield" in
8945 '') sched_yield=undef ;;
8946 esac
8947
8948 $rm -f try try.*
8949
8950 : see if this is a pwd.h system
8951 set pwd.h i_pwd
8952 eval $inhdr
8953
8954 case "$i_pwd" in
8955 $define)
8956         xxx=`./findhdr pwd.h`
8957         $cppstdin $cppflags $cppminus < $xxx >$$.h
8958
8959         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8960                 val="$define"
8961         else
8962                 val="$undef"
8963         fi
8964         set d_pwquota
8965         eval $setvar
8966
8967         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8968                 val="$define"
8969         else
8970                 val="$undef"
8971         fi
8972         set d_pwage
8973         eval $setvar
8974
8975         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8976                 val="$define"
8977         else
8978                 val="$undef"
8979         fi
8980         set d_pwchange
8981         eval $setvar
8982
8983         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8984                 val="$define"
8985         else
8986                 val="$undef"
8987         fi
8988         set d_pwclass
8989         eval $setvar
8990
8991         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8992                 val="$define"
8993         else
8994                 val="$undef"
8995         fi
8996         set d_pwexpire
8997         eval $setvar
8998
8999         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9000                 val="$define"
9001         else
9002                 val="$undef"
9003         fi
9004         set d_pwcomment
9005         eval $setvar
9006
9007         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9008                 val="$define"
9009         else
9010                 val="$undef"
9011         fi
9012         set d_pwgecos
9013         eval $setvar
9014
9015         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9016                 val="$define"
9017         else
9018                 val="$undef"
9019         fi
9020         set d_pwpasswd
9021         eval $setvar
9022
9023         $rm -f $$.h
9024         ;;
9025 *)
9026         val="$undef"; 
9027         set d_pwquota; eval $setvar
9028         set d_pwage; eval $setvar
9029         set d_pwchange; eval $setvar
9030         set d_pwclass; eval $setvar
9031         set d_pwexpire; eval $setvar
9032         set d_pwcomment; eval $setvar
9033         set d_pwgecos; eval $setvar
9034         set d_pwpasswd; eval $setvar
9035         ;;
9036 esac
9037
9038 : see if readdir and friends exist
9039 set readdir d_readdir
9040 eval $inlibc
9041 set seekdir d_seekdir
9042 eval $inlibc
9043 set telldir d_telldir
9044 eval $inlibc
9045 set rewinddir d_rewinddir
9046 eval $inlibc
9047
9048 : see if readlink exists
9049 set readlink d_readlink
9050 eval $inlibc
9051
9052 : see if readv exists
9053 set readv d_readv
9054 eval $inlibc
9055
9056 : see if rename exists
9057 set rename d_rename
9058 eval $inlibc
9059
9060 : see if rmdir exists
9061 set rmdir d_rmdir
9062 eval $inlibc
9063
9064 : see if memory.h is available.
9065 val=''
9066 set memory.h val
9067 eval $inhdr
9068
9069 : See if it conflicts with string.h
9070 case "$val" in
9071 $define)
9072         case "$strings" in
9073         '') ;;
9074         *)
9075                 $cppstdin $cppflags $cppminus < $strings > mem.h
9076                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9077                         echo " "
9078                         echo "We won't be including <memory.h>."
9079                         val="$undef"
9080                 fi
9081                 $rm -f mem.h
9082                 ;;
9083         esac
9084 esac
9085 set i_memory
9086 eval $setvar
9087
9088 : can bcopy handle overlapping blocks?
9089 val="$undef"
9090 case "$d_bcopy" in
9091 "$define")
9092         echo " "
9093         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9094         $cat >try.c <<EOCP
9095 #$i_memory I_MEMORY
9096 #$i_stdlib I_STDLIB
9097 #$i_string I_STRING
9098 #$i_unistd I_UNISTD
9099 EOCP
9100         $cat >>try.c <<'EOCP'
9101 #include <stdio.h>
9102 #ifdef I_MEMORY
9103 #  include <memory.h>
9104 #endif
9105 #ifdef I_STDLIB
9106 #  include <stdlib.h>
9107 #endif
9108 #ifdef I_STRING
9109 #  include <string.h>
9110 #else
9111 #  include <strings.h>
9112 #endif
9113 #ifdef I_UNISTD
9114 #  include <unistd.h>  /* Needed for NetBSD */
9115 #endif
9116 int main()
9117 {
9118 char buf[128], abc[128];
9119 char *b;
9120 int len;
9121 int off;
9122 int align;
9123
9124 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9125
9126 for (align = 7; align >= 0; align--) {
9127         for (len = 36; len; len--) {
9128                 b = buf+align;
9129                 bcopy(abc, b, len);
9130                 for (off = 1; off <= len; off++) {
9131                         bcopy(b, b+off, len);
9132                         bcopy(b+off, b, len);
9133                         if (bcmp(b, abc, len))
9134                                 exit(1);
9135                 }
9136         }
9137 }
9138 exit(0);
9139 }
9140 EOCP
9141         set try
9142         if eval $compile_ok; then
9143                 if ./try 2>/dev/null; then
9144                         echo "Yes, it can."
9145                         val="$define"
9146                 else
9147                         echo "It can't, sorry."
9148                         case "$d_memmove" in
9149                         "$define") echo "But that's Ok since you have memmove()." ;;
9150                         esac
9151                 fi
9152         else
9153                 echo "(I can't compile the test program, so we'll assume not...)"
9154                 case "$d_memmove" in
9155                 "$define") echo "But that's Ok since you have memmove()." ;;
9156                 esac
9157         fi
9158         ;;
9159 esac
9160 $rm -f try.* try core
9161 set d_safebcpy
9162 eval $setvar
9163
9164 : can memcpy handle overlapping blocks?
9165 val="$undef"
9166 case "$d_memcpy" in
9167 "$define")
9168         echo " "
9169         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9170         $cat >try.c <<EOCP
9171 #$i_memory I_MEMORY
9172 #$i_stdlib I_STDLIB
9173 #$i_string I_STRING
9174 #$i_unistd I_UNISTD
9175 EOCP
9176         $cat >>try.c <<'EOCP'
9177 #include <stdio.h>
9178 #ifdef I_MEMORY
9179 #  include <memory.h>
9180 #endif
9181 #ifdef I_STDLIB
9182 #  include <stdlib.h>
9183 #endif
9184 #ifdef I_STRING
9185 #  include <string.h>
9186 #else
9187 #  include <strings.h>
9188 #endif
9189 #ifdef I_UNISTD
9190 #  include <unistd.h>  /* Needed for NetBSD */
9191 #endif
9192 int main()
9193 {
9194 char buf[128], abc[128];
9195 char *b;
9196 int len;
9197 int off;
9198 int align;
9199
9200 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9201    try to store the string in read-only memory. */
9202 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9203
9204 for (align = 7; align >= 0; align--) {
9205         for (len = 36; len; len--) {
9206                 b = buf+align;
9207                 memcpy(b, abc, len);
9208                 for (off = 1; off <= len; off++) {
9209                         memcpy(b+off, b, len);
9210                         memcpy(b, b+off, len);
9211                         if (memcmp(b, abc, len))
9212                                 exit(1);
9213                 }
9214         }
9215 }
9216 exit(0);
9217 }
9218 EOCP
9219         set try
9220         if eval $compile_ok; then
9221                 if ./try 2>/dev/null; then
9222                         echo "Yes, it can."
9223                         val="$define"
9224                 else
9225                         echo "It can't, sorry."
9226                         case "$d_memmove" in
9227                         "$define") echo "But that's Ok since you have memmove()." ;;
9228                         esac
9229                 fi
9230         else
9231                 echo "(I can't compile the test program, so we'll assume not...)"
9232                 case "$d_memmove" in
9233                 "$define") echo "But that's Ok since you have memmove()." ;;
9234                 esac
9235         fi
9236         ;;
9237 esac
9238 $rm -f try.* try core
9239 set d_safemcpy
9240 eval $setvar
9241
9242 : can memcmp be trusted to compare relative magnitude?
9243 val="$undef"
9244 case "$d_memcmp" in
9245 "$define")
9246         echo " "
9247         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9248         $cat >try.c <<EOCP
9249 #$i_memory I_MEMORY
9250 #$i_stdlib I_STDLIB
9251 #$i_string I_STRING
9252 #$i_unistd I_UNISTD
9253 EOCP
9254         $cat >>try.c <<'EOCP'
9255 #include <stdio.h>
9256 #ifdef I_MEMORY
9257 #  include <memory.h>
9258 #endif
9259 #ifdef I_STDLIB
9260 #  include <stdlib.h>
9261 #endif
9262 #ifdef I_STRING
9263 #  include <string.h>
9264 #else
9265 #  include <strings.h>
9266 #endif
9267 #ifdef I_UNISTD
9268 #  include <unistd.h>  /* Needed for NetBSD */
9269 #endif
9270 int main()
9271 {
9272 char a = -1;
9273 char b = 0;
9274 if ((a < b) && memcmp(&a, &b, 1) < 0)
9275         exit(1);
9276 exit(0);
9277 }
9278 EOCP
9279         set try
9280         if eval $compile_ok; then
9281                 if ./try 2>/dev/null; then
9282                         echo "Yes, it can."
9283                         val="$define"
9284                 else
9285                         echo "No, it can't (it uses signed chars)."
9286                 fi
9287         else
9288                 echo "(I can't compile the test program, so we'll assume not...)"
9289         fi
9290         ;;
9291 esac
9292 $rm -f try.* try core
9293 set d_sanemcmp
9294 eval $setvar
9295
9296 : see if select exists
9297 set select d_select
9298 eval $inlibc
9299
9300 : see if semctl exists
9301 set semctl d_semctl
9302 eval $inlibc
9303
9304 : see if semget exists
9305 set semget d_semget
9306 eval $inlibc
9307
9308 : see if semop exists
9309 set semop d_semop
9310 eval $inlibc
9311
9312 : see how much of the 'sem*(2)' library is present.
9313 h_sem=true
9314 echo " "
9315 case "$d_semctl$d_semget$d_semop" in
9316 *"$undef"*) h_sem=false;;
9317 esac
9318 case "$osname" in
9319 freebsd)
9320     case "`ipcs 2>&1`" in
9321     "SVID messages"*"not configured"*)
9322         echo "Your $osname does not have the sem*(2) configured." >&4
9323         h_sem=false
9324         val="$undef"
9325         set semctl d_semctl
9326         eval $setvar
9327         set semget d_semget
9328         eval $setvar
9329         set semop d_semop
9330         eval $setvar
9331         ;;
9332     esac
9333     ;;
9334 esac
9335 : we could also check for sys/ipc.h ...
9336 if $h_sem && $test `./findhdr sys/sem.h`; then
9337         echo "You have the full sem*(2) library." >&4
9338         val="$define"
9339 else
9340         echo "You don't have the full sem*(2) library." >&4
9341         val="$undef"
9342 fi
9343 set d_sem
9344 eval $setvar
9345
9346 : see whether sys/sem.h defines union semun
9347 echo " "
9348 $cat > try.c <<'END'
9349 #include <sys/types.h>
9350 #include <sys/ipc.h>
9351 #include <sys/sem.h>
9352 int main () { union semun semun; semun.buf = 0; }
9353 END
9354 set try
9355 if eval $compile; then
9356     echo "You have union semun in <sys/sem.h>." >&4
9357     val="$define"
9358 else
9359     echo "You do not have union semun in <sys/sem.h>." >&4
9360     val="$undef"
9361 fi
9362 $rm -f try try.c try.h
9363 set d_union_semun
9364 eval $setvar
9365
9366 : see how to do semctl IPC_STAT
9367 case "$d_sem" in
9368 $define)
9369     : see whether semctl IPC_STAT can use union semun
9370     echo " "
9371     $cat > try.h <<END
9372 #ifndef S_IRUSR
9373 #   ifdef S_IREAD
9374 #       define S_IRUSR S_IREAD
9375 #       define S_IWUSR S_IWRITE
9376 #       define S_IXUSR S_IEXEC
9377 #   else
9378 #       define S_IRUSR 0400
9379 #       define S_IWUSR 0200
9380 #       define S_IXUSR 0100
9381 #   endif
9382 #   define S_IRGRP (S_IRUSR>>3)
9383 #   define S_IWGRP (S_IWUSR>>3)
9384 #   define S_IXGRP (S_IXUSR>>3)
9385 #   define S_IROTH (S_IRUSR>>6)
9386 #   define S_IWOTH (S_IWUSR>>6)
9387 #   define S_IXOTH (S_IXUSR>>6)
9388 #endif
9389 #ifndef S_IRWXU
9390 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9391 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9392 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9393 #endif
9394 END
9395
9396     $cat > try.c <<END
9397 #include <sys/types.h>
9398 #include <sys/ipc.h>
9399 #include <sys/sem.h>
9400 #include <sys/stat.h>
9401 #include <stdio.h>
9402 #include <errno.h>
9403 #include "try.h"
9404 #ifndef errno
9405 extern int errno;
9406 #endif
9407 #$d_union_semun HAS_UNION_SEMUN
9408 int main() {
9409     union semun
9410 #ifndef HAS_UNION_SEMUN
9411     {
9412         int val;
9413         struct semid_ds *buf;
9414         unsigned short *array;
9415     }
9416 #endif
9417     arg;
9418     int sem, st;
9419
9420 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9421     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9422     if (sem > -1) {
9423         struct semid_ds argbuf;
9424         arg.buf = &argbuf;
9425 #       ifdef IPC_STAT
9426         st = semctl(sem, 0, IPC_STAT, arg);
9427         if (st == 0)
9428             printf("semun\n");
9429         else
9430 #       endif /* IPC_STAT */
9431             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9432 #       ifdef IPC_RMID
9433         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9434 #       endif /* IPC_RMID */
9435             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9436     } else
9437 #endif /* IPC_PRIVATE && ... */
9438         printf("semget failed: errno = %d\n", errno);
9439   return 0;
9440 }
9441 END
9442     val="$undef"
9443     set try
9444     if eval $compile; then
9445         xxx=`./try`
9446         case "$xxx" in
9447         semun) val="$define" ;;
9448         esac
9449     fi
9450     $rm -f try try.c
9451     set d_semctl_semun
9452     eval $setvar
9453     case "$d_semctl_semun" in
9454     $define)
9455         echo "You can use union semun for semctl IPC_STAT." >&4
9456         also='also'
9457         ;;
9458     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9459         also=''
9460         ;;
9461     esac
9462
9463     : see whether semctl IPC_STAT can use struct semid_ds pointer
9464     $cat > try.c <<'END'
9465 #include <sys/types.h>
9466 #include <sys/ipc.h>
9467 #include <sys/sem.h>
9468 #include <sys/stat.h>
9469 #include "try.h"
9470 #include <stdio.h>
9471 #include <errno.h>
9472 #ifndef errno
9473 extern int errno;
9474 #endif
9475 int main() {
9476     struct semid_ds arg;
9477     int sem, st;
9478
9479 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9480     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9481     if (sem > -1) {
9482 #       ifdef IPC_STAT
9483         st = semctl(sem, 0, IPC_STAT, &arg);
9484         if (st == 0)
9485             printf("semid_ds\n");
9486         else
9487 #       endif /* IPC_STAT */
9488             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9489 #       ifdef IPC_RMID
9490         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9491 #       endif /* IPC_RMID */
9492             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9493     } else
9494 #endif /* IPC_PRIVATE && ... */
9495         printf("semget failed: errno = %d\n", errno);
9496
9497     return 0;
9498 }
9499 END
9500     val="$undef"
9501     set try
9502     if eval $compile; then
9503         xxx=`./try`
9504         case "$xxx" in
9505         semid_ds) val="$define" ;;
9506         esac
9507     fi
9508     $rm -f try try.c
9509     set d_semctl_semid_ds
9510     eval $setvar
9511     case "$d_semctl_semid_ds" in
9512     $define)
9513         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9514         ;;
9515     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9516         ;;
9517     esac
9518     $rm -f try.h
9519     ;;
9520 *)  val="$undef"
9521
9522     # We do not have the full sem*(2) library, so assume we can not
9523     # use either.
9524
9525     set d_semctl_semun
9526     eval $setvar
9527
9528     set d_semctl_semid_ds
9529     eval $setvar
9530     ;;
9531 esac
9532
9533 : see if setegid exists
9534 set setegid d_setegid
9535 eval $inlibc
9536
9537 : see if seteuid exists
9538 set seteuid d_seteuid
9539 eval $inlibc
9540
9541 : see if setgrent exists
9542 set setgrent d_setgrent
9543 eval $inlibc
9544
9545 : see if sethostent exists
9546 set sethostent d_sethent
9547 eval $inlibc
9548
9549 : see if setlinebuf exists
9550 set setlinebuf d_setlinebuf
9551 eval $inlibc
9552
9553 : see if setlocale exists
9554 set setlocale d_setlocale
9555 eval $inlibc
9556
9557 : see if setnetent exists
9558 set setnetent d_setnent
9559 eval $inlibc
9560
9561 : see if setprotoent exists
9562 set setprotoent d_setpent
9563 eval $inlibc
9564
9565 : see if setpgid exists
9566 set setpgid d_setpgid
9567 eval $inlibc
9568
9569 : see if setpgrp2 exists
9570 set setpgrp2 d_setpgrp2
9571 eval $inlibc
9572
9573 : see if setpriority exists
9574 set setpriority d_setprior
9575 eval $inlibc
9576
9577 : see if setpwent exists
9578 set setpwent d_setpwent
9579 eval $inlibc
9580
9581 : see if setregid exists
9582 set setregid d_setregid
9583 eval $inlibc
9584 set setresgid d_setresgid
9585 eval $inlibc
9586
9587 : see if setreuid exists
9588 set setreuid d_setreuid
9589 eval $inlibc
9590 set setresuid d_setresuid
9591 eval $inlibc
9592
9593 : see if setrgid exists
9594 set setrgid d_setrgid
9595 eval $inlibc
9596
9597 : see if setruid exists
9598 set setruid d_setruid
9599 eval $inlibc
9600
9601 : see if setservent exists
9602 set setservent d_setsent
9603 eval $inlibc
9604
9605 : see if setsid exists
9606 set setsid d_setsid
9607 eval $inlibc
9608
9609 : see if setvbuf exists
9610 set setvbuf d_setvbuf
9611 eval $inlibc
9612
9613 : see if sfio.h is available
9614 set sfio.h i_sfio
9615 eval $inhdr
9616
9617
9618 : see if sfio library is available
9619 case "$i_sfio" in
9620 $define)
9621         val=''
9622         set sfreserve val
9623         eval $inlibc
9624         ;;
9625 *)
9626         val="$undef"
9627         ;;
9628 esac
9629 : Ok, but do we want to use it.
9630 case "$val" in
9631 $define)
9632         case "$usesfio" in
9633         true|$define|[yY]*) dflt='y';;
9634         *) dflt='n';;
9635         esac
9636         echo "$package can use the sfio library, but it is experimental."
9637         rp="You seem to have sfio available, do you want to try using it?"
9638         . ./myread
9639         case "$ans" in
9640         y|Y) ;;
9641         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9642                 val="$undef"
9643                 : Remove sfio from list of libraries to use
9644                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9645                 shift
9646                 libs="$*"
9647                 echo "libs = $libs" >&4
9648                 ;;
9649         esac
9650         ;;
9651 *)      case "$usesfio" in
9652         true|$define|[yY]*)
9653                 echo "Sorry, cannot find sfio on this machine" >&4
9654                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9655                 ;;
9656         esac
9657         ;;
9658 esac
9659 set d_sfio
9660 eval $setvar
9661 case "$d_sfio" in
9662 $define) usesfio='true';;
9663 *) usesfio='false';;
9664 esac
9665
9666 : see if shmctl exists
9667 set shmctl d_shmctl
9668 eval $inlibc
9669
9670 : see if shmget exists
9671 set shmget d_shmget
9672 eval $inlibc
9673
9674 : see if shmat exists
9675 set shmat d_shmat
9676 eval $inlibc
9677 : see what shmat returns
9678 case "$d_shmat" in
9679 "$define")
9680         $cat >shmat.c <<'END'
9681 #include <sys/shm.h>
9682 void *shmat();
9683 END
9684         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9685                 shmattype='void *'
9686         else
9687                 shmattype='char *'
9688         fi
9689         echo "and it returns ($shmattype)." >&4
9690         : see if a prototype for shmat is available
9691         xxx=`./findhdr sys/shm.h`
9692         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9693         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9694                 val="$define"
9695         else
9696                 val="$undef"
9697         fi
9698         $rm -f shmat.[co]
9699         ;;
9700 *)
9701         val="$undef"
9702         ;;
9703 esac
9704 set d_shmatprototype
9705 eval $setvar
9706
9707 : see if shmdt exists
9708 set shmdt d_shmdt
9709 eval $inlibc
9710
9711 : see how much of the 'shm*(2)' library is present.
9712 h_shm=true
9713 echo " "
9714 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9715 *"$undef"*) h_shm=false;;
9716 esac
9717 case "$osname" in
9718 freebsd)
9719     case "`ipcs 2>&1`" in
9720     "SVID shared memory"*"not configured"*)
9721         echo "Your $osname does not have the shm*(2) configured." >&4
9722         h_shm=false
9723         val="$undef"
9724         set shmctl d_shmctl
9725         evat $setvar
9726         set shmget d_shmget
9727         evat $setvar
9728         set shmat d_shmat
9729         evat $setvar
9730         set shmdt d_shmdt
9731         evat $setvar
9732         ;;
9733     esac
9734     ;;
9735 esac
9736 : we could also check for sys/ipc.h ...
9737 if $h_shm && $test `./findhdr sys/shm.h`; then
9738         echo "You have the full shm*(2) library." >&4
9739         val="$define"
9740 else
9741         echo "You don't have the full shm*(2) library." >&4
9742         val="$undef"
9743 fi
9744 set d_shm
9745 eval $setvar
9746
9747 echo " "
9748 : see if we have sigaction
9749 if set sigaction val -f d_sigaction; eval $csym; $val; then
9750         echo 'sigaction() found.' >&4
9751         $cat > try.c <<'EOP'
9752 #include <stdio.h>
9753 #include <sys/types.h>
9754 #include <signal.h>
9755 int main()
9756 {
9757     struct sigaction act, oact;
9758 }
9759 EOP
9760         set try
9761         if eval $compile_ok; then
9762                 val="$define"
9763         else
9764                 echo "But you don't seem to have a useable struct sigaction." >&4
9765                 val="$undef"
9766         fi
9767 else
9768         echo 'sigaction NOT found.' >&4
9769         val="$undef"
9770 fi
9771 set d_sigaction; eval $setvar
9772 $rm -f try try$_o try.c
9773
9774 : see if sigsetjmp exists
9775 echo " "
9776 case "$d_sigsetjmp" in
9777 '')
9778         $cat >try.c <<'EOP'
9779 #include <setjmp.h>
9780 sigjmp_buf env;
9781 int set = 1;
9782 int main()
9783 {
9784         if (sigsetjmp(env,1))
9785                 exit(set);
9786         set = 0;
9787         siglongjmp(env, 1);
9788         exit(1);
9789 }
9790 EOP
9791         set try
9792         if eval $compile; then
9793                 if ./try >/dev/null 2>&1; then
9794                         echo "POSIX sigsetjmp found." >&4
9795                         val="$define"
9796                 else
9797                         $cat >&4 <<EOM
9798 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9799 I'll ignore them.
9800 EOM
9801                         val="$undef"
9802                 fi
9803         else
9804                 echo "sigsetjmp not found." >&4
9805                 val="$undef"
9806         fi
9807         ;;
9808 *) val="$d_sigsetjmp"
9809         case "$d_sigsetjmp" in
9810         $define) echo "POSIX sigsetjmp found." >&4;;
9811         $undef) echo "sigsetjmp not found." >&4;;
9812         esac
9813         ;;
9814 esac
9815 set d_sigsetjmp
9816 eval $setvar
9817 $rm -f try.c try
9818
9819 : see if stat knows about block sizes
9820 echo " "
9821 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9822 eval $hasfield
9823
9824 : see if _ptr and _cnt from stdio act std
9825 echo " "
9826 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9827         echo "(Looks like you have stdio.h from Linux.)"
9828         case "$stdio_ptr" in
9829         '') stdio_ptr='((fp)->_IO_read_ptr)'
9830                 ptr_lval=$define
9831                 ;;
9832         *)      ptr_lval=$d_stdio_ptr_lval;;
9833         esac
9834         case "$stdio_cnt" in
9835         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9836                 cnt_lval=$undef
9837                 ;;
9838         *)      cnt_lval=$d_stdio_cnt_lval;;
9839         esac
9840         case "$stdio_base" in
9841         '') stdio_base='((fp)->_IO_read_base)';;
9842         esac
9843         case "$stdio_bufsiz" in
9844         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9845         esac
9846 else
9847         case "$stdio_ptr" in
9848         '') stdio_ptr='((fp)->_ptr)'
9849                 ptr_lval=$define
9850                 ;;
9851         *)      ptr_lval=$d_stdio_ptr_lval;;
9852         esac
9853         case "$stdio_cnt" in
9854         '') stdio_cnt='((fp)->_cnt)'
9855                 cnt_lval=$define
9856                 ;;
9857         *)      cnt_lval=$d_stdio_cnt_lval;;
9858         esac
9859         case "$stdio_base" in
9860         '') stdio_base='((fp)->_base)';;
9861         esac
9862         case "$stdio_bufsiz" in
9863         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9864         esac
9865 fi
9866 : test whether _ptr and _cnt really work
9867 echo "Checking how std your stdio is..." >&4
9868 $cat >try.c <<EOP
9869 #include <stdio.h>
9870 #define FILE_ptr(fp)    $stdio_ptr
9871 #define FILE_cnt(fp)    $stdio_cnt
9872 int main() {
9873         FILE *fp = fopen("try.c", "r");
9874         char c = getc(fp);
9875         if (
9876                 18 <= FILE_cnt(fp) &&
9877                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9878         )
9879                 exit(0);
9880         exit(1);
9881 }
9882 EOP
9883 val="$undef"
9884 set try
9885 if eval $compile; then
9886         if ./try; then
9887                 echo "Your stdio acts pretty std."
9888                 val="$define"
9889         else
9890                 echo "Your stdio isn't very std."
9891         fi
9892 else
9893         echo "Your stdio doesn't appear very std."
9894 fi
9895 $rm -f try.c try
9896 set d_stdstdio
9897 eval $setvar
9898
9899 : Can _ptr be used as an lvalue?
9900 case "$d_stdstdio$ptr_lval" in
9901 $define$define) val=$define ;;
9902 *) val=$undef ;;
9903 esac
9904 set d_stdio_ptr_lval
9905 eval $setvar
9906
9907 : Can _cnt be used as an lvalue?
9908 case "$d_stdstdio$cnt_lval" in
9909 $define$define) val=$define ;;
9910 *) val=$undef ;;
9911 esac
9912 set d_stdio_cnt_lval
9913 eval $setvar
9914
9915 : see if _base is also standard
9916 val="$undef"
9917 case "$d_stdstdio" in
9918 $define)
9919         $cat >try.c <<EOP
9920 #include <stdio.h>
9921 #define FILE_base(fp)   $stdio_base
9922 #define FILE_bufsiz(fp) $stdio_bufsiz
9923 int main() {
9924         FILE *fp = fopen("try.c", "r");
9925         char c = getc(fp);
9926         if (
9927                 19 <= FILE_bufsiz(fp) &&
9928                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9929         )
9930                 exit(0);
9931         exit(1);
9932 }
9933 EOP
9934         set try
9935         if eval $compile; then
9936                 if ./try; then
9937                         echo "And its _base field acts std."
9938                         val="$define"
9939                 else
9940                         echo "But its _base field isn't std."
9941                 fi
9942         else
9943                 echo "However, it seems to be lacking the _base field."
9944         fi
9945         $rm -f try.c try
9946         ;;
9947 esac
9948 set d_stdiobase
9949 eval $setvar
9950
9951 : see if strcoll exists
9952 set strcoll d_strcoll
9953 eval $inlibc
9954
9955 : check for structure copying
9956 echo " "
9957 echo "Checking to see if your C compiler can copy structs..." >&4
9958 $cat >try.c <<'EOCP'
9959 int main()
9960 {
9961         struct blurfl {
9962                 int dyick;
9963         } foo, bar;
9964
9965         foo = bar;
9966 }
9967 EOCP
9968 if $cc -c try.c >/dev/null 2>&1 ; then
9969         val="$define"
9970         echo "Yup, it can."
9971 else
9972         val="$undef"
9973         echo "Nope, it can't."
9974 fi
9975 set d_strctcpy
9976 eval $setvar
9977 $rm -f try.*
9978
9979 : see if strerror and/or sys_errlist[] exist
9980 echo " "
9981 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9982     if set strerror val -f d_strerror; eval $csym; $val; then
9983                 echo 'strerror() found.' >&4
9984                 d_strerror="$define"
9985                 d_strerrm='strerror(e)'
9986                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9987                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9988                         d_syserrlst="$define"
9989                 else
9990                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9991                         d_syserrlst="$undef"
9992                 fi
9993     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9994                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9995                 echo 'strerror() found in string header.' >&4
9996                 d_strerror="$define"
9997                 d_strerrm='strerror(e)'
9998                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9999                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10000                                 d_syserrlst="$define"
10001                 else
10002                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
10003                         d_syserrlst="$undef"
10004                 fi
10005     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10006                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10007                 d_strerror="$undef"
10008                 d_syserrlst="$define"
10009                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10010     else
10011                 echo 'strerror() and sys_errlist[] NOT found.' >&4
10012                 d_strerror="$undef"
10013                 d_syserrlst="$undef"
10014                 d_strerrm='"unknown"'
10015     fi
10016 fi
10017
10018 : see if strtod exists
10019 set strtod d_strtod
10020 eval $inlibc
10021
10022 : see if strtol exists
10023 set strtol d_strtol
10024 eval $inlibc
10025
10026 : see if strtoul exists
10027 set strtoul d_strtoul
10028 eval $inlibc
10029
10030 : see if strxfrm exists
10031 set strxfrm d_strxfrm
10032 eval $inlibc
10033
10034 : see if symlink exists
10035 set symlink d_symlink
10036 eval $inlibc
10037
10038 : see if syscall exists
10039 set syscall d_syscall
10040 eval $inlibc
10041
10042 : see if sysconf exists
10043 set sysconf d_sysconf
10044 eval $inlibc
10045
10046 : see if system exists
10047 set system d_system
10048 eval $inlibc
10049
10050 : see if tcgetpgrp exists
10051 set tcgetpgrp d_tcgetpgrp
10052 eval $inlibc
10053
10054 : see if tcsetpgrp exists
10055 set tcsetpgrp d_tcsetpgrp
10056 eval $inlibc
10057
10058 : see if sys/types.h has to be included
10059 set sys/types.h i_systypes
10060 eval $inhdr
10061
10062 : see if prototype for telldir is available
10063 echo " "
10064 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10065 eval $hasproto
10066
10067 : define an is-a-typedef? function
10068 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10069 case "$inclist" in
10070 "") inclist="sys/types.h";;
10071 esac;
10072 eval "varval=\$$var";
10073 case "$varval" in
10074 "")
10075         $rm -f temp.c;
10076         for inc in $inclist; do
10077                 echo "#include <$inc>" >>temp.c;
10078         done;
10079         echo "#ifdef $type" >> temp.c;
10080         echo "printf(\"We have $type\");" >> temp.c;
10081         echo "#endif" >> temp.c;
10082         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10083         if $contains $type temp.E >/dev/null 2>&1; then
10084                 eval "$var=\$type";
10085         else
10086                 eval "$var=\$def";
10087         fi;
10088         $rm -f temp.?;;
10089 *) eval "$var=\$varval";;
10090 esac'
10091
10092 : define an is-a-typedef? function that prompts if the type is not available.
10093 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10094 case "$inclist" in
10095 "") inclist="sys/types.h";;
10096 esac;
10097 eval "varval=\$$var";
10098 case "$varval" in
10099 "")
10100         $rm -f temp.c;
10101         for inc in $inclist; do
10102                 echo "#include <$inc>" >>temp.c;
10103         done;
10104         echo "#ifdef $type" >> temp.c;
10105         echo "printf(\"We have $type\");" >> temp.c;
10106         echo "#endif" >> temp.c;
10107         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10108         echo " " ;
10109         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10110         if $contains $type temp.E >/dev/null 2>&1; then
10111                 echo "$type found." >&4;
10112                 eval "$var=\$type";
10113         else
10114                 echo "$type NOT found." >&4;
10115                 dflt="$def";
10116                 . ./myread ;
10117                 eval "$var=\$ans";
10118         fi;
10119         $rm -f temp.?;;
10120 *) eval "$var=\$varval";;
10121 esac'
10122
10123 : see if this is a sys/times.h system
10124 set sys/times.h i_systimes
10125 eval $inhdr
10126
10127 : see if times exists
10128 echo " "
10129 if set times val -f d_times; eval $csym; $val; then
10130         echo 'times() found.' >&4
10131         d_times="$define"
10132         inc=''
10133         case "$i_systimes" in
10134         "$define") inc='sys/times.h';;
10135         esac
10136         rp="What is the type returned by times() on this system?"
10137         set clock_t clocktype long stdio.h sys/types.h $inc
10138         eval $typedef_ask
10139 else
10140         echo 'times() NOT found, hope that will do.' >&4
10141         d_times="$undef"
10142         clocktype='int'
10143 fi
10144
10145 : see if truncate exists
10146 set truncate d_truncate
10147 eval $inlibc
10148
10149 : see if tzname[] exists
10150 echo " "
10151 if set tzname val -a d_tzname; eval $csym; $val; then
10152         val="$define"
10153         echo 'tzname[] found.' >&4
10154 else
10155         val="$undef"
10156         echo 'tzname[] NOT found.' >&4
10157 fi
10158 set d_tzname
10159 eval $setvar
10160
10161 : see if umask exists
10162 set umask d_umask
10163 eval $inlibc
10164
10165 : backward compatibility for d_hvfork
10166 if test X$d_hvfork != X; then
10167         d_vfork="$d_hvfork"
10168         d_hvfork=''
10169 fi
10170 : see if there is a vfork
10171 val=''
10172 set vfork val
10173 eval $inlibc
10174
10175 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10176 : perl on Solaris 2.x, and probably elsewhere.
10177 case "$val" in
10178 $define)
10179         echo " "
10180         case "$usevfork" in
10181         false) dflt='n';;
10182         *) dflt='y';;
10183         esac
10184         cat <<'EOM'
10185  
10186 Perl can only use a vfork() that doesn't suffer from strict
10187 restrictions on calling functions or modifying global data in
10188 the child.  For example, glibc-2.1 contains such a vfork()
10189 that is unsuitable.  If your system provides a proper fork()
10190 call, chances are that you do NOT want perl to use vfork().
10191
10192 EOM
10193         rp="Do you still want to use vfork()?"
10194         . ./myread
10195         case "$ans" in
10196         y|Y) ;;
10197         *)
10198                 echo "Ok, we won't use vfork()."
10199                 val="$undef"
10200                 ;;
10201         esac
10202         ;;
10203 esac
10204 set d_vfork
10205 eval $setvar
10206 case "$d_vfork" in
10207 $define) usevfork='true';;
10208 *) usevfork='false';;
10209 esac
10210
10211 : see if this is an sysdir system
10212 set sys/dir.h i_sysdir
10213 eval $inhdr
10214
10215 : see if this is an sysndir system
10216 set sys/ndir.h i_sysndir
10217 eval $inhdr
10218
10219 : see if closedir exists
10220 set closedir d_closedir
10221 eval $inlibc
10222
10223 case "$d_closedir" in
10224 "$define")
10225         echo " "
10226         echo "Checking whether closedir() returns a status..." >&4
10227         cat > closedir.c <<EOM
10228 #$i_dirent I_DIRENT             /**/
10229 #$i_sysdir I_SYS_DIR            /**/
10230 #$i_sysndir I_SYS_NDIR          /**/
10231 #$i_systypes I_SYS_TYPES        /**/
10232
10233 #if defined(I_SYS_TYPES)
10234 #include <sys/types.h>
10235 #endif
10236 #if defined(I_DIRENT)
10237 #include <dirent.h>
10238 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10239 #include <sys/dir.h>
10240 #endif
10241 #else
10242 #ifdef I_SYS_NDIR
10243 #include <sys/ndir.h>
10244 #else
10245 #ifdef I_SYS_DIR
10246 #ifdef hp9000s500
10247 #include <ndir.h>       /* may be wrong in the future */
10248 #else
10249 #include <sys/dir.h>
10250 #endif
10251 #endif
10252 #endif
10253 #endif 
10254 int main() { return closedir(opendir(".")); }
10255 EOM
10256         set closedir
10257         if eval $compile_ok; then
10258                 if ./closedir > /dev/null 2>&1 ; then
10259                         echo "Yes, it does."
10260                         val="$undef"
10261                 else
10262                         echo "No, it doesn't."
10263                         val="$define"
10264                 fi
10265         else
10266                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10267                 val="$define"
10268         fi
10269         ;;
10270 *)
10271         val="$undef";
10272         ;;
10273 esac
10274 set d_void_closedir
10275 eval $setvar
10276 $rm -f closedir*
10277 : check for volatile keyword
10278 echo " "
10279 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10280 $cat >try.c <<'EOCP'
10281 int main()
10282 {
10283         typedef struct _goo_struct goo_struct;
10284         goo_struct * volatile goo = ((goo_struct *)0);
10285         struct _goo_struct {
10286                 long long_int;
10287                 int reg_int;
10288                 char char_var;
10289         };
10290         typedef unsigned short foo_t;
10291         char *volatile foo;
10292         volatile int bar;
10293         volatile foo_t blech;
10294         foo = foo;
10295 }
10296 EOCP
10297 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10298         val="$define"
10299         echo "Yup, it does."
10300 else
10301         val="$undef"
10302         echo "Nope, it doesn't."
10303 fi
10304 set d_volatile
10305 eval $setvar
10306 $rm -f try.*
10307
10308 : see if there is a wait4
10309 set wait4 d_wait4
10310 eval $inlibc
10311
10312 : see if waitpid exists
10313 set waitpid d_waitpid
10314 eval $inlibc
10315
10316 : see if wcstombs exists
10317 set wcstombs d_wcstombs
10318 eval $inlibc
10319
10320 : see if wctomb exists
10321 set wctomb d_wctomb
10322 eval $inlibc
10323
10324 : see if writev exists
10325 set writev d_writev
10326 eval $inlibc
10327
10328 : preserve RCS keywords in files with variable substitution, grrr
10329 Date='$Date'
10330 Id='$Id'
10331 Log='$Log'
10332 RCSfile='$RCSfile'
10333 Revision='$Revision'
10334
10335 case "$crosscompile" in
10336 ''|[nN]*) crosscompile="$undef" ;;
10337 esac
10338
10339 case "$osname" in
10340 next|rhapsody) multiarch="$define" ;;
10341 esac
10342 case "$multiarch" in
10343 ''|[nN]*) multiarch="$undef" ;;
10344 esac
10345
10346 : check for alignment requirements
10347 echo " "
10348 case "$crosscompile$multiarch" in
10349 *$define*)
10350         $cat <<EOM
10351 You seem to be either cross-compiling or doing a multiarchitecture build,
10352 skipping the memory alignment check.
10353
10354 EOM
10355         case "$alignbytes" in
10356         '') alignbytes=8 ;;
10357         esac
10358         ;;
10359 *)
10360         case "$alignbytes" in
10361         '') echo "Checking alignment constraints..." >&4
10362                 $cat >try.c <<'EOCP'
10363 struct foobar {
10364         char foo;
10365         double bar;
10366 } try_algn;
10367 int main()
10368 {
10369         printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10370 }
10371 EOCP
10372                 set try
10373                 if eval $compile_ok; then
10374                         dflt=`./try`
10375                 else
10376                         dflt='8'
10377                         echo "(I can't seem to compile the test program...)"
10378                 fi
10379                 ;;
10380         *) dflt="$alignbytes"
10381                 ;;
10382         esac
10383         rp="Doubles must be aligned on a how-many-byte boundary?"
10384         . ./myread
10385         alignbytes="$ans"
10386         $rm -f try.c try
10387         ;;
10388 esac
10389
10390
10391 : check for ordering of bytes in a long
10392 echo " "
10393 case "$crosscompile$multiarch" in
10394 *$define*)
10395         $cat <<EOM
10396 You seem to be either cross-compiling or doing a multiarchitecture build,
10397 skipping the byteorder check.
10398
10399 EOM
10400         byteorder=''
10401         ;;
10402 *)
10403         case "$byteorder" in
10404         '')
10405                 $cat <<'EOM'
10406 In the following, larger digits indicate more significance.  A big-endian
10407 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10408 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10409 machines may have weird orders like 3412.  A Cray will report 87654321. If
10410 the test program works the default is probably right.
10411 I'm now running the test program...
10412 EOM
10413                 $cat >try.c <<'EOCP'
10414 #include <stdio.h>
10415 int main()
10416 {
10417         int i;
10418         union {
10419                 unsigned long l;
10420                 char c[sizeof(long)];
10421         } u;
10422
10423         if (sizeof(long) > 4)
10424                 u.l = (0x08070605L << 32) | 0x04030201L;
10425         else
10426                 u.l = 0x04030201L;
10427         for (i = 0; i < sizeof(long); i++)
10428                 printf("%c", u.c[i]+'0');
10429         printf("\n");
10430         exit(0);
10431 }
10432 EOCP
10433                 xxx_prompt=y
10434                 set try
10435                 if eval $compile && ./try > /dev/null; then
10436                         dflt=`./try`
10437                         case "$dflt" in
10438                         [1-4][1-4][1-4][1-4]|12345678|87654321)
10439                                 echo "(The test program ran ok.)"
10440                                 echo "byteorder=$dflt"
10441                                 xxx_prompt=n
10442                         ;;
10443                         ????|????????) echo "(The test program ran ok.)" ;;
10444                         *) echo "(The test program didn't run right for some reason.)" ;;
10445                         esac
10446                 else
10447                         dflt='4321'
10448                         cat <<'EOM'
10449 (I can't seem to compile the test program.  Guessing big-endian...)
10450 EOM
10451                 fi
10452                 case "$xxx_prompt" in
10453                 y)
10454                         rp="What is the order of bytes in a long?"
10455                         . ./myread
10456                         byteorder="$ans"
10457                         ;;
10458                 *)      byteorder=$dflt
10459                         ;;
10460                 esac
10461                 ;;
10462         esac
10463         $rm -f try.c try
10464         ;;
10465 esac
10466
10467
10468 : how do we catenate cpp tokens here?
10469 echo " "
10470 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10471 $cat >cpp_stuff.c <<'EOCP'
10472 #define RCAT(a,b)a/**/b
10473 #define ACAT(a,b)a ## b
10474 RCAT(Rei,ser)
10475 ACAT(Cir,cus)
10476 EOCP
10477 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10478 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10479         echo "Oh!  Smells like ANSI's been here." >&4
10480         echo "We can catify or stringify, separately or together!"
10481         cpp_stuff=42
10482 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10483         echo "Ah, yes!  The good old days!" >&4
10484         echo "However, in the good old days we don't know how to stringify and"
10485         echo "catify at the same time."
10486         cpp_stuff=1
10487 else
10488         $cat >&4 <<EOM
10489 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10490 to have to edit the values of CAT[2-5] in config.h...
10491 EOM
10492         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10493 fi
10494 $rm -f cpp_stuff.*
10495
10496 : see if this is a db.h system
10497 set db.h i_db
10498 eval $inhdr
10499
10500 case "$i_db" in
10501 $define)
10502         : Check db version.
10503         echo " "
10504         echo "Checking Berkeley DB version ..." >&4
10505         $cat >try.c <<EOCP
10506 #$d_const HASCONST
10507 #ifndef HASCONST
10508 #define const
10509 #endif
10510 #include <sys/types.h>
10511 #include <stdio.h>
10512 #include <db.h>
10513 int main()
10514 {
10515 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10516     int Major, Minor, Patch ;
10517     unsigned long Version ;
10518     (void)db_version(&Major, &Minor, &Patch) ;
10519     printf("You have Berkeley DB Version 2 or greater\n");
10520
10521     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10522                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10523     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10524                 Major, Minor, Patch) ;
10525
10526     /* check that db.h & libdb are compatible */
10527     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10528         printf("db.h and libdb are incompatible\n") ;
10529         exit(3);        
10530     }
10531
10532     printf("db.h and libdb are compatible\n") ;
10533
10534     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10535                 + DB_VERSION_PATCH ;
10536
10537     /* needs to be >= 2.3.4 */
10538     if (Version < 2003004) {
10539     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10540         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10541         exit(2);        
10542     }
10543
10544     exit(0);
10545 #else
10546 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10547     printf("You have Berkeley DB Version 1\n");
10548     exit(0);    /* DB version < 2: the coast is clear. */
10549 #else
10550     exit(1);    /* <db.h> not Berkeley DB? */
10551 #endif
10552 #endif
10553 }
10554 EOCP
10555         set try
10556         if eval $compile && ./try; then
10557                 echo 'Looks OK.' >&4
10558         else
10559                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10560                 i_db=$undef
10561                 case " $libs " in
10562                 *"-ldb "*)
10563                         : Remove db from list of libraries to use
10564                         echo "Removing unusable -ldb from library list" >&4
10565                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10566                         shift
10567                         libs="$*"
10568                         echo "libs = $libs" >&4
10569                         ;;
10570                 esac
10571         fi
10572         $rm -f try.*
10573         ;;
10574 esac
10575
10576 case "$i_db" in
10577 define)
10578         : Check the return type needed for hash 
10579         echo " "
10580         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10581         $cat >try.c <<EOCP
10582 #$d_const HASCONST
10583 #ifndef HASCONST
10584 #define const
10585 #endif
10586 #include <sys/types.h>
10587 #include <db.h>
10588
10589 #ifndef DB_VERSION_MAJOR
10590 u_int32_t hash_cb (ptr, size)
10591 const void *ptr;
10592 size_t size;
10593 {
10594 }
10595 HASHINFO info;
10596 int main()
10597 {
10598         info.hash = hash_cb;
10599 }
10600 #endif
10601 EOCP
10602         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10603                 if $contains warning try.out >>/dev/null 2>&1 ; then
10604                         db_hashtype='int'
10605                 else
10606                         db_hashtype='u_int32_t'
10607                 fi
10608         else
10609                 : XXX Maybe we should just give up here.
10610                 db_hashtype=u_int32_t
10611                 $cat try.out >&4
10612                 echo "Help:  I can't seem to compile the db test program." >&4
10613                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10614         fi
10615         $rm -f try.*
10616         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10617         ;;
10618 *)      db_hashtype=u_int32_t
10619         ;;
10620 esac
10621 case "$i_db" in
10622 define)
10623         : Check the return type needed for prefix 
10624         echo " "
10625         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10626         cat >try.c <<EOCP
10627 #$d_const HASCONST
10628 #ifndef HASCONST
10629 #define const
10630 #endif
10631 #include <sys/types.h>
10632 #include <db.h>
10633
10634 #ifndef DB_VERSION_MAJOR
10635 size_t prefix_cb (key1, key2)
10636 const DBT *key1;
10637 const DBT *key2;
10638 {
10639 }
10640 BTREEINFO info;
10641 int main()
10642 {
10643         info.prefix = prefix_cb;
10644 }
10645 #endif
10646 EOCP
10647         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10648                 if $contains warning try.out >>/dev/null 2>&1 ; then
10649                         db_prefixtype='int'
10650                 else
10651                         db_prefixtype='size_t'
10652                 fi
10653         else
10654                 db_prefixtype='size_t'
10655                 : XXX Maybe we should just give up here.
10656                 $cat try.out >&4
10657                 echo "Help:  I can't seem to compile the db test program." >&4
10658                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10659         fi
10660         $rm -f try.*
10661         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10662         ;;
10663 *)      db_prefixtype='size_t'
10664         ;;
10665 esac
10666
10667 : check for void type
10668 echo " "
10669 echo "Checking to see how well your C compiler groks the void type..." >&4
10670 case "$voidflags" in
10671 '')
10672         $cat >try.c <<'EOCP'
10673 #if TRY & 1
10674 void sub() {
10675 #else
10676 sub() {
10677 #endif
10678         extern void moo();      /* function returning void */
10679         void (*goo)();          /* ptr to func returning void */
10680 #if TRY & 8
10681         void *hue;              /* generic ptr */
10682 #endif
10683 #if TRY & 2
10684         void (*foo[10])();
10685 #endif
10686
10687 #if TRY & 4
10688         if(goo == moo) {
10689                 exit(0);
10690         }
10691 #endif
10692         exit(0);
10693 }
10694 int main() { sub(); }
10695 EOCP
10696         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10697                 voidflags=$defvoidused
10698         echo "Good.  It appears to support void to the level $package wants.">&4
10699                 if $contains warning .out >/dev/null 2>&1; then
10700                         echo "However, you might get some warnings that look like this:"
10701                         $cat .out
10702                 fi
10703         else
10704 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10705                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10706                         echo "It supports 1..."
10707                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10708                                 echo "It also supports 2..."
10709                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10710                                         voidflags=7
10711                                         echo "And it supports 4 but not 8 definitely."
10712                                 else
10713                                         echo "It doesn't support 4..."
10714                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10715                                                 voidflags=11
10716                                                 echo "But it supports 8."
10717                                         else
10718                                                 voidflags=3
10719                                                 echo "Neither does it support 8."
10720                                         fi
10721                                 fi
10722                         else
10723                                 echo "It does not support 2..."
10724                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10725                                         voidflags=13
10726                                         echo "But it supports 4 and 8."
10727                                 else
10728                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10729                                                 voidflags=5
10730                                                 echo "And it supports 4 but has not heard about 8."
10731                                         else
10732                                                 echo "However it supports 8 but not 4."
10733                                         fi
10734                                 fi
10735                         fi
10736                 else
10737                         echo "There is no support at all for void."
10738                         voidflags=0
10739                 fi
10740         fi
10741 esac
10742 case "$voidflags" in
10743 "$defvoidused") ;;
10744 *)      $cat >&4 <<'EOM'
10745   Support flag bits are:
10746     1: basic void declarations.
10747     2: arrays of pointers to functions returning void.
10748     4: operations between pointers to and addresses of void functions.
10749     8: generic void pointers.
10750 EOM
10751         dflt="$voidflags";
10752         rp="Your void support flags add up to what?"
10753         . ./myread
10754         voidflags="$ans"
10755         ;;
10756 esac
10757 $rm -f try.* .out
10758
10759
10760 : How can we generate normalized random numbers ?
10761 echo " "
10762 echo "Looking for a random number function..." >&4
10763 case "$randfunc" in
10764 '')
10765         if set drand48 val -f; eval $csym; $val; then
10766                 dflt="drand48"
10767                 echo "Good, found drand48()." >&4
10768         elif set random val -f; eval $csym; $val; then
10769                 dflt="random"
10770                 echo "OK, found random()." >&4
10771         else
10772                 dflt="rand"
10773                 echo "Yick, looks like I have to use rand()." >&4
10774         fi
10775         echo " "
10776         ;;
10777 *)
10778         dflt="$randfunc"
10779         ;;
10780 esac
10781 cont=true
10782
10783 case "$ccflags" in
10784 *-Dmy_rand=*|*-Dmy_srand=*)
10785         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10786         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10787         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10788         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10789         ;;
10790 esac
10791
10792 while $test "$cont"; do
10793         rp="Use which function to generate random numbers?"
10794         . ./myread
10795         if $test "$ans" = "$dflt"; then
10796                 : null
10797         else
10798                 randbits=''
10799         fi
10800         randfunc="$ans"
10801         if set $ans val -f; eval $csym; $val; then
10802                 cont=''
10803         else
10804                 dflt=y
10805                 rp="I cannot find function $ans. Use that name anyway?"
10806                 . ./myread
10807                 dflt=rand
10808                 case "$ans" in
10809                         [yY]*) cont='';;
10810                 esac
10811         fi
10812         case "$cont" in
10813         '')
10814                 case "$randfunc" in
10815                 drand48)
10816                         drand01="drand48()"
10817                         seedfunc="srand48"
10818                         randbits=48
10819                         randseedtype=long
10820                         ;;
10821                 rand|random)
10822                         case "$randbits" in
10823                         '')
10824 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10825                                 $cat >try.c <<EOCP
10826 #$i_unistd I_UNISTD
10827 #$i_stdlib I_STDLIB
10828 #include <stdio.h>
10829 #ifdef I_UNISTD
10830 #  include <unistd.h>
10831 #endif
10832 #ifdef I_STDLIB
10833 #  include <stdlib.h>
10834 #endif
10835 int main()
10836 {
10837         register int i;
10838         register unsigned long tmp;
10839         register unsigned long max = 0L;
10840
10841         for (i = 1000; i; i--) {
10842                 tmp = (unsigned long) $randfunc();
10843                 if (tmp > max) max = tmp;
10844         }
10845         for (i = 0; max; i++)
10846                 max /= 2;
10847         printf("%d\n",i);
10848 }
10849 EOCP
10850                                 set try
10851                                 if eval $compile_ok; then
10852                                         dflt=`try`
10853                                 else
10854                                         dflt='?'
10855                                         echo "(I can't seem to compile the test program...)"
10856                                 fi
10857                                 ;;
10858                         *)
10859                                 dflt="$randbits"
10860                                 ;;
10861                         esac
10862                         rp="How many bits does your $randfunc() function produce?"
10863                         . ./myread
10864                         randbits="$ans"
10865                         $rm -f try.c try
10866                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10867                         seedfunc="s$randfunc"
10868                         randseedtype=unsigned
10869                         ;;
10870                 *)
10871                         dflt="31"
10872                         rp="How many bits does your $randfunc() function produce?"
10873                         . ./myread
10874                         randbits="$ans"
10875                         seedfunc="s$randfunc"
10876                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10877                         if set $seedfunc val -f; eval $csym; $val; then
10878                                 echo "(Using $seedfunc() to seed random generator)"
10879                         else
10880                                 echo "(Warning: no $seedfunc() to seed random generator)"
10881                                 seedfunc=rand
10882                         fi
10883                         randseedtype=unsigned
10884                         ;;
10885                 esac
10886                 ;;
10887         esac
10888 done
10889
10890 echo " "
10891 echo "Determining whether or not we are on an EBCDIC system..." >&4
10892 $cat >tebcdic.c <<'EOM'
10893 int main()
10894 {
10895   if ('M'==0xd4) return 0;
10896   return 1;
10897 }
10898 EOM
10899
10900 val=$undef
10901 set tebcdic
10902 if eval $compile_ok; then
10903         if ./tebcdic; then
10904                 echo "You have EBCDIC." >&4
10905                 val="$define"
10906         else
10907                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10908         fi
10909 else
10910         echo "I'm unable to compile the test program." >&4
10911         echo "I'll assume ASCII or some ISO Latin." >&4
10912 fi
10913 $rm -f tebcdic.c tebcdic
10914 set ebcdic
10915 eval $setvar
10916
10917 : see what type file positions are declared as in the library
10918 rp="What is the type for file position used by fsetpos()?"
10919 set fpos_t fpostype long stdio.h sys/types.h
10920 eval $typedef_ask
10921
10922 : Store the full pathname to the ar program for use in the C program
10923 : Respect a hint or command line value for full_ar.
10924 case "$full_ar" in
10925 '') full_ar=$ar ;;
10926 esac
10927
10928 : Store the full pathname to the sed program for use in the C program
10929 full_sed=$sed
10930
10931 : see what type gids are declared as in the kernel
10932 echo " "
10933 echo "Looking for the type for group ids returned by getgid()."
10934 set gid_t gidtype xxx stdio.h sys/types.h
10935 eval $typedef
10936 case "$gidtype" in
10937 xxx)
10938         xxx=`./findhdr sys/user.h`
10939         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10940         case $1 in
10941         unsigned) dflt="$1 $2" ;;
10942         *) dflt="$1" ;;
10943         esac
10944         ;;
10945 *) dflt="$gidtype";;
10946 esac
10947 case "$gidtype" in
10948 gid_t) echo "gid_t found." ;;
10949 *)      rp="What is the type for group ids returned by getgid()?"
10950         . ./myread
10951         gidtype="$ans"
10952         ;;
10953 esac
10954
10955 : see if getgroups exists
10956 set getgroups d_getgrps
10957 eval $inlibc
10958
10959 : see if setgroups exists
10960 set setgroups d_setgrps
10961 eval $inlibc
10962
10963
10964 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10965 echo " "
10966 case "$d_getgrps$d_setgrps" in
10967 *define*)
10968         case "$groupstype" in
10969         '') dflt="$gidtype" ;;
10970         *)  dflt="$groupstype" ;;
10971         esac
10972         $cat <<EOM
10973 What type of pointer is the second argument to getgroups() and setgroups()?
10974 Usually this is the same as group ids, $gidtype, but not always.
10975
10976 EOM
10977         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10978         . ./myread
10979         groupstype="$ans"
10980         ;;
10981 *)  groupstype="$gidtype";;
10982 esac
10983
10984 : see what type lseek is declared as in the kernel
10985 rp="What is the type used for lseek's offset on this system?"
10986 set off_t lseektype long stdio.h sys/types.h
10987 eval $typedef_ask
10988
10989 echo " "
10990 $echo $n "Checking to see how big your file offsets are...$c" >&4
10991 $cat >try.c <<EOCP
10992 #include <sys/types.h>
10993 #include <stdio.h>
10994 int main()
10995 {
10996         printf("%d\n", sizeof($lseektype));
10997 }
10998 EOCP
10999 set try
11000 if eval $compile_ok; then
11001         lseeksize=`./try`
11002         $echo " $lseeksize bytes." >&4
11003 else
11004         dflt='4'
11005         echo " "
11006         echo "(I can't seem to compile the test program.  Guessing...)"
11007         rp="What is the size of your file offsets (in bytes)?"
11008         . ./myread
11009         lseeksize="$ans"
11010 fi
11011 $rm -f try.c try
11012
11013 echo " "
11014 echo "Checking if your $make program sets \$(MAKE)..." >&4
11015 case "$make_set_make" in
11016 '')
11017         $sed 's/^X //' > testmake.mak << 'EOF'
11018 Xall:
11019 X       @echo 'maketemp="$(MAKE)"'
11020 EOF
11021         case "`$make -f testmake.mak 2>/dev/null`" in
11022         *maketemp=*) make_set_make='#' ;;
11023         *)      make_set_make="MAKE=$make" ;;
11024         esac
11025         $rm -f testmake.mak
11026         ;;
11027 esac
11028 case "$make_set_make" in
11029 '#') echo "Yup, it does.";;
11030 *) echo "Nope, it doesn't.";;
11031 esac
11032
11033 : see what type is used for mode_t
11034 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11035 set mode_t modetype int stdio.h sys/types.h
11036 eval $typedef_ask
11037
11038 : define a fucntion to check prototypes
11039 $cat > protochk <<EOSH
11040 $startsh
11041 cc="$cc"
11042 optimize="$optimize"
11043 ccflags="$ccflags"
11044 prototype="$prototype"
11045 define="$define"
11046 rm=$rm
11047 EOSH
11048
11049 $cat >> protochk <<'EOSH'
11050
11051 $rm -f try.c
11052 foo="$1"
11053 shift
11054 while test $# -ge 2; do
11055         case "$1" in
11056                 $define) echo "#include <$2>" >> try.c ;;
11057                 literal) echo "$2" >> try.c ;;
11058         esac
11059     shift 2
11060 done
11061 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
11062 cat >> try.c <<'EOCP'
11063 #ifdef CAN_PROTOTYPE
11064 #define _(args) args
11065 #else
11066 #define _(args) ()
11067 #endif
11068 EOCP
11069 echo "$foo" >> try.c
11070 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11071 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11072 status=$?
11073 $rm -f try.[co]
11074 exit $status
11075 EOSH
11076 chmod +x protochk
11077 $eunicefix protochk
11078
11079 : see what type is used for size_t
11080 rp="What is the type used for the length parameter for string functions?"
11081 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11082 eval $typedef_ask
11083
11084 : check for type of arguments to gethostbyaddr. 
11085 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11086         case "$d_gethbyaddr" in
11087         $define)
11088                 $cat <<EOM
11089
11090 Checking to see what type of arguments are accepted by gethostbyaddr().
11091 EOM
11092                 hdrs="$define sys/types.h
11093                         $d_socket sys/socket.h 
11094                         $i_niin netinet/in.h 
11095                         $i_netdb netdb.h
11096                         $i_unistd unistd.h"
11097                 : The first arg can 'char *' or 'void *'
11098                 : The second arg is some of integral type
11099                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11100                         for yyy in size_t long int; do
11101                                 case "$netdb_host_type" in
11102                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11103                                         if ./protochk "$try" $hdrs; then
11104                                                 echo "Your system accepts $xxx for the first arg."
11105                                                 echo "...and $yyy for the second arg."
11106                                                 netdb_host_type="$xxx"
11107                                                 netdb_hlen_type="$yyy"
11108                                         fi
11109                                         ;;
11110                                 esac
11111                         done
11112                 done
11113                 : In case none of those worked, prompt the user.
11114                 case "$netdb_host_type" in
11115                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
11116                         dflt='char *'
11117                         . ./myread
11118                         netdb_host_type=$ans
11119                         rp='What is the type for the 2nd argument to gethostbyaddr?'
11120                         dflt="$sizetype"
11121                         . ./myread
11122                         netdb_hlen_type=$ans
11123                         ;;
11124                 esac
11125                 ;;
11126         *)      : no gethostbyaddr, so pick harmless defaults
11127                 netdb_host_type='char *'
11128                 netdb_hlen_type="$sizetype"
11129                 ;;
11130         esac
11131         # Remove the "const" if needed. -- but then we'll have a 
11132         # prototype clash!
11133         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11134 fi
11135
11136 : check for type of argument to gethostbyname. 
11137 if test "X$netdb_name_type" = X ; then
11138         case "$d_gethbyname" in
11139         $define)
11140                 $cat <<EOM
11141
11142 Checking to see what type of argument is accepted by gethostbyname().
11143 EOM
11144                 hdrs="$define sys/types.h
11145                         $d_socket sys/socket.h 
11146                         $i_niin netinet/in.h 
11147                         $i_netdb netdb.h
11148                         $i_unistd unistd.h"
11149                 for xxx in "const char *" "char *"; do
11150                         case "$netdb_name_type" in
11151                         '')     try="extern struct hostent *gethostbyname($xxx);"
11152                                 if ./protochk "$try" $hdrs; then
11153                                         echo "Your system accepts $xxx."
11154                                         netdb_name_type="$xxx"
11155                                 fi
11156                                 ;;
11157                         esac
11158                 done
11159                 : In case none of those worked, prompt the user.
11160                 case "$netdb_name_type" in
11161                 '')     rp='What is the type for the 1st argument to gethostbyname?'
11162                         dflt='char *'
11163                         . ./myread
11164                         netdb_name_type=$ans
11165                         ;;
11166                 esac
11167                 ;;
11168         *)      : no gethostbyname, so pick harmless default
11169                 netdb_name_type='char *'
11170                 ;;
11171         esac
11172 fi
11173
11174 : check for type of 1st argument to getnetbyaddr. 
11175 if test "X$netdb_net_type" = X ; then
11176         case "$d_getnbyaddr" in
11177         $define)
11178                 $cat <<EOM
11179
11180 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11181 EOM
11182                 hdrs="$define sys/types.h
11183                         $d_socket sys/socket.h 
11184                         $i_niin netinet/in.h 
11185                         $i_netdb netdb.h
11186                         $i_unistd unistd.h"
11187                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11188                         case "$netdb_net_type" in
11189                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11190                                 if ./protochk "$try" $hdrs; then
11191                                         echo "Your system accepts $xxx."
11192                                         netdb_net_type="$xxx"
11193                                 fi
11194                                 ;;
11195                         esac
11196                 done
11197                 : In case none of those worked, prompt the user.
11198                 case "$netdb_net_type" in
11199                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11200                         dflt='long'
11201                         . ./myread
11202                         netdb_net_type=$ans
11203                         ;;
11204                 esac
11205                 ;;
11206         *)      : no getnetbyaddr, so pick harmless default
11207                 netdb_net_type='long'
11208                 ;;
11209         esac
11210 fi
11211 : locate the preferred pager for this system
11212 case "$pager" in
11213 '')
11214         dflt=''
11215         case "$pg" in
11216         /*) dflt=$pg;;
11217         esac
11218         case "$more" in
11219         /*) dflt=$more;;
11220         esac
11221         case "$less" in
11222         /*) dflt=$less;;
11223         esac
11224         case "$dflt" in
11225         '') dflt=/usr/ucb/more;;
11226         esac
11227         ;;
11228 *) dflt="$pager";;
11229 esac
11230 echo " "
11231 fn=f/
11232 rp='What pager is used on your system?'
11233 . ./getfile
11234 pager="$ans"
11235
11236 : see what type pids are declared as in the kernel
11237 rp="What is the type of process ids on this system?"
11238 set pid_t pidtype int stdio.h sys/types.h
11239 eval $typedef_ask
11240
11241 : check for length of pointer
11242 echo " "
11243 case "$ptrsize" in
11244 '')
11245         $echo $n "Checking to see how big your pointers are...$c" >&4
11246         if test "$voidflags" -gt 7; then
11247                 echo '#define VOID_PTR char *' > try.c
11248         else
11249                 echo '#define VOID_PTR void *' > try.c
11250         fi
11251         $cat >>try.c <<'EOCP'
11252 #include <stdio.h>
11253 int main()
11254 {
11255         printf("%d\n", sizeof(VOID_PTR));
11256         exit(0);
11257 }
11258 EOCP
11259         set try
11260         if eval $compile_ok; then
11261                 ptrsize=`./try`
11262                 $echo " $ptrsize bytes." >&4
11263         else
11264                 dflt='4'
11265                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11266                 rp="What is the size of a pointer (in bytes)?"
11267                 . ./myread
11268                 ptrsize="$ans"
11269         fi
11270         ;;
11271 esac
11272 $rm -f try.c try
11273
11274 : see if ar generates random libraries by itself
11275 echo " "
11276 echo "Checking how to generate random libraries on your machine..." >&4
11277 echo 'int bar1() { return bar2(); }' > bar1.c
11278 echo 'int bar2() { return 2; }' > bar2.c
11279 $cat > foo.c <<'EOP'
11280 int main() { printf("%d\n", bar1()); exit(0); }
11281 EOP
11282 $cc $ccflags -c bar1.c >/dev/null 2>&1
11283 $cc $ccflags -c bar2.c >/dev/null 2>&1
11284 $cc $ccflags -c foo.c >/dev/null 2>&1
11285 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11286 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11287         ./foobar >/dev/null 2>&1; then
11288         echo "$ar appears to generate random libraries itself."
11289         orderlib=false
11290         ranlib=":"
11291 elif $ar ts bar$_a >/dev/null 2>&1 &&
11292         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11293         ./foobar >/dev/null 2>&1; then
11294                 echo "a table of contents needs to be added with '$ar ts'."
11295                 orderlib=false
11296                 ranlib="$ar ts"
11297 else
11298         case "$ranlib" in
11299         :) ranlib='';;
11300         '')
11301                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11302                 $test -f $ranlib || ranlib=''
11303                 ;;
11304         esac
11305         if $test -n "$ranlib"; then
11306                 echo "your system has '$ranlib'; we'll use that."
11307                 orderlib=false
11308         else
11309                 echo "your system doesn't seem to support random libraries"
11310                 echo "so we'll use lorder and tsort to order the libraries."
11311                 orderlib=true
11312                 ranlib=":"
11313         fi
11314 fi
11315 $rm -f foo* bar* 
11316
11317 : check for type of arguments to select. 
11318 case "$selecttype" in
11319 '') case "$d_select" in
11320         $define)
11321                 $cat <<EOM
11322 Checking to see what type of arguments are accepted by select().
11323 EOM
11324                 hdrs="$define sys/types.h
11325                         $i_systime sys/time.h 
11326                         $i_sysselct sys/select.h
11327                         $d_socket sys/socket.h"
11328                 : The first arg can be int, unsigned, or size_t
11329                 : The last arg may or may not be 'const'
11330                 val=''
11331                 : void pointer has been seen but using that
11332                 : breaks the selectminbits test
11333                 for xxx in 'fd_set *' 'int *'; do
11334                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11335                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11336                                         case "$val" in
11337                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11338                                                 if ./protochk "$try" $hdrs; then
11339                                                         echo "Your system accepts $xxx."
11340                                                         val="$xxx"
11341                                                 fi
11342                                                 ;;
11343                                         esac
11344                                 done
11345                         done
11346                 done
11347                 case "$val" in
11348                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11349                         case "$d_fd_set" in
11350                                 $define) dflt="fd_set *" ;;
11351                                 *)              dflt="int *" ;;
11352                         esac
11353                         . ./myread
11354                         val=$ans
11355                         ;;
11356                 esac
11357                 selecttype="$val"
11358                 ;;
11359         *)      : no select, so pick a harmless default
11360                 selecttype='int *'
11361                 ;;
11362         esac
11363         ;;
11364 esac
11365
11366 : check for the select 'width'
11367 case "$selectminbits" in
11368 '') case "$d_select" in
11369         $define)
11370                 $cat <<EOM
11371
11372 Checking to see on how many bits at a time your select() operates...
11373 EOM
11374                 $cat >try.c <<EOCP
11375 #include <sys/types.h>
11376 #$i_time I_TIME
11377 #$i_systime I_SYS_TIME
11378 #$i_systimek I_SYS_TIME_KERNEL
11379 #ifdef I_TIME
11380 #   include <time.h>
11381 #endif
11382 #ifdef I_SYS_TIME
11383 #   ifdef I_SYS_TIME_KERNEL
11384 #       define KERNEL
11385 #   endif
11386 #   include <sys/time.h>
11387 #   ifdef I_SYS_TIME_KERNEL
11388 #       undef KERNEL
11389 #   endif
11390 #endif
11391 #$i_sysselct I_SYS_SELECT
11392 #ifdef I_SYS_SELECT
11393 #include <sys/select.h>
11394 #endif
11395 #include <stdio.h>
11396 $selecttype b;
11397 #define S sizeof(*(b))
11398 #define MINBITS 64
11399 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11400 #define NBITS  (NBYTES * 8)
11401 int main() {
11402     char s[NBYTES];
11403     struct timeval t;
11404     int i;
11405     FILE* fp;
11406     int fd;
11407
11408     fclose(stdin);
11409     fp = fopen("try.c", "r");
11410     if (fp == 0)
11411       exit(1);
11412     fd = fileno(fp);
11413     if (fd < 0)
11414       exit(2);
11415     b = ($selecttype)s;
11416     for (i = 0; i < NBITS; i++)
11417         FD_SET(i, b);
11418     t.tv_sec  = 0;
11419     t.tv_usec = 0;
11420     select(fd + 1, b, 0, 0, &t);
11421     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11422     printf("%d\n", i + 1);
11423     return 0;
11424 }
11425 EOCP
11426                 set try
11427                 if eval $compile_ok; then
11428                         selectminbits=`./try`
11429                         case "$selectminbits" in
11430                         '')     cat >&4 <<EOM
11431 Cannot figure out on how many bits at a time your select() operates.
11432 I'll play safe and guess it is 32 bits.
11433 EOM
11434                                 selectminbits=32
11435                                 bits="32 bits"
11436                                 ;;
11437                         1)      bits="1 bit" ;;
11438                         *)      bits="$selectminbits bits" ;;
11439                         esac
11440                         echo "Your select() operates on $bits at a time." >&4
11441                 else
11442                         rp='What is the minimum number of bits your select() operates on?'
11443                         case "$byteorder" in
11444                         1234|12345678)  dflt=32 ;;
11445                         *)              dflt=1  ;;
11446                         esac
11447                         . ./myread
11448                         val=$ans
11449                         selectminbits="$val"
11450                 fi
11451                 $rm -f try.* try
11452                 ;;
11453         *)      : no select, so pick a harmless default
11454                 selectminbits='32'
11455                 ;;
11456         esac
11457         ;;
11458 esac
11459
11460 : Trace out the files included by signal.h, then look for SIGxxx names.
11461 : Remove SIGARRAYSIZE used by HPUX.
11462 : Remove SIGSTKSIZE used by Linux.
11463 : Remove SIGSTKSZ used by Posix.
11464 : Remove SIGTYP void lines used by OS2.
11465 xxx=`echo '#include <signal.h>' |
11466         $cppstdin $cppminus $cppflags 2>/dev/null |
11467         $grep '^[       ]*#.*include' | 
11468         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11469 : Check this list of files to be sure we have parsed the cpp output ok.
11470 : This will also avoid potentially non-existent files, such 
11471 : as ../foo/bar.h
11472 xxxfiles=''
11473 for xx in $xxx /dev/null ; do
11474         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11475 done
11476 : If we have found no files, at least try signal.h
11477 case "$xxxfiles" in
11478 '')     xxxfiles=`./findhdr signal.h` ;;
11479 esac
11480 xxx=`awk '
11481 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
11482         print substr($2, 4, 20)
11483 }
11484 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11485         print substr($3, 4, 20)
11486 }' $xxxfiles`
11487 : Append some common names just in case the awk scan failed.
11488 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11489 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11490 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11491 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11492 : generate a few handy files for later
11493 $cat > signal.c <<'EOCP'
11494 #include <sys/types.h>
11495 #include <signal.h>
11496 #include <stdio.h>
11497 int main() {
11498
11499 /* Strange style to avoid deeply-nested #if/#else/#endif */
11500 #ifndef NSIG
11501 #  ifdef _NSIG
11502 #    define NSIG (_NSIG)
11503 #  endif
11504 #endif
11505
11506 #ifndef NSIG
11507 #  ifdef SIGMAX
11508 #    define NSIG (SIGMAX+1)
11509 #  endif
11510 #endif
11511
11512 #ifndef NSIG
11513 #  ifdef SIG_MAX
11514 #    define NSIG (SIG_MAX+1)
11515 #  endif
11516 #endif
11517
11518 #ifndef NSIG
11519 #  ifdef MAXSIG
11520 #    define NSIG (MAXSIG+1)
11521 #  endif
11522 #endif
11523
11524 #ifndef NSIG
11525 #  ifdef MAX_SIG
11526 #    define NSIG (MAX_SIG+1)
11527 #  endif
11528 #endif
11529
11530 #ifndef NSIG
11531 #  ifdef SIGARRAYSIZE
11532 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11533 #  endif
11534 #endif
11535
11536 #ifndef NSIG
11537 #  ifdef _sys_nsig
11538 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11539 #  endif
11540 #endif
11541
11542 /* Default to some arbitrary number that's big enough to get most
11543    of the common signals.
11544 */
11545 #ifndef NSIG
11546 #    define NSIG 50
11547 #endif
11548
11549 printf("NSIG %d\n", NSIG);
11550
11551 #ifndef JUST_NSIG
11552
11553 EOCP
11554
11555 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11556 {
11557         printf "#ifdef SIG"; printf $1; printf "\n"
11558         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11559         printf $1; printf ");\n"
11560         printf "#endif\n"
11561 }
11562 END {
11563         printf "#endif /* JUST_NSIG */\n";
11564         printf "}\n";
11565 }
11566 ' >>signal.c
11567 $cat >signal.awk <<'EOP'
11568 BEGIN { ndups = 0 }
11569 $1 ~ /^NSIG$/ { nsig = $2 }
11570 ($1 !~ /^NSIG$/) && (NF == 2) {
11571     if ($2 > maxsig) { maxsig = $2 }
11572     if (sig_name[$2]) {
11573         dup_name[ndups] = $1
11574         dup_num[ndups] = $2
11575         ndups++ 
11576     }
11577     else {
11578         sig_name[$2] = $1
11579         sig_num[$2] = $2
11580     }
11581 }
11582 END { 
11583     if (nsig == 0) {
11584         nsig = maxsig + 1
11585     }
11586     printf("NSIG %d\n", nsig);
11587     for (n = 1; n < nsig; n++) {
11588         if (sig_name[n]) {
11589             printf("%s %d\n", sig_name[n], sig_num[n])
11590         }
11591         else {
11592             printf("NUM%d %d\n", n, n) 
11593         }
11594     }
11595     for (n = 0; n < ndups; n++) {
11596         printf("%s %d\n", dup_name[n], dup_num[n])
11597     }
11598 }
11599 EOP
11600 $cat >signal_cmd <<EOS
11601 $startsh
11602 if $test -s signal.lst; then
11603     echo "Using your existing signal.lst file"
11604         exit 0
11605 fi
11606 xxx="$xxx"
11607 EOS
11608 $cat >>signal_cmd <<'EOS'
11609
11610 set signal
11611 if eval $compile_ok; then
11612         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11613 else
11614         echo "(I can't seem be able to compile the whole test program)" >&4
11615         echo "(I'll try it in little pieces.)" >&4
11616         set signal -DJUST_NSIG
11617         if eval $compile_ok; then
11618                 ./signal$_exe > signal.nsg
11619                 $cat signal.nsg
11620         else
11621                 echo "I can't seem to figure out how many signals you have." >&4
11622                 echo "Guessing 50." >&4
11623                 echo 'NSIG 50' > signal.nsg
11624         fi
11625         : Now look at all the signal names, one at a time.
11626         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11627                 $cat > signal.c <<EOCP
11628 #include <sys/types.h>
11629 #include <signal.h>
11630 #include <stdio.h>
11631 int main() {
11632 printf("$xx %d\n", SIG${xx});
11633 return 0;
11634 }
11635 EOCP
11636                 set signal
11637                 if eval $compile; then
11638                         echo "SIG${xx} found."
11639                         ./signal$_exe  >> signal.ls1
11640                 else
11641                         echo "SIG${xx} NOT found."
11642                 fi
11643         done
11644         if $test -s signal.ls1; then
11645                 $cat signal.nsg signal.ls1 |
11646                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11647         fi
11648
11649 fi
11650 if $test -s signal.lst; then
11651         :
11652 else
11653         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11654         echo 'kill -l' >signal
11655         set X `csh -f <signal`
11656         $rm -f signal
11657         shift
11658         case $# in
11659         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11660         esac
11661         echo $@ | $tr ' ' $trnl | \
11662             $awk '{ printf "%s %d\n", $1, ++s; }
11663                   END { printf "NSIG %d\n", ++s }' >signal.lst
11664 fi
11665 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11666 EOS
11667 chmod a+x signal_cmd
11668 $eunicefix signal_cmd
11669
11670 : generate list of signal names
11671 echo " "
11672 case "$sig_name_init" in
11673 '') doinit=yes ;;
11674 *)  case "$sig_num_init" in
11675     ''|*,*) doinit=yes ;;
11676     esac ;;
11677 esac
11678 case "$doinit" in
11679 yes)
11680         echo "Generating a list of signal names and numbers..." >&4
11681         . ./signal_cmd
11682         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
11683         sig_name=`$awk 'BEGIN { printf "ZERO " }
11684                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
11685         sig_num=`$awk  'BEGIN { printf "0 " }
11686                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
11687         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
11688                              !/^NSIG/   { printf "\"%s\", ", $1 }
11689                              END        { printf "0\n" }' signal.lst`
11690         sig_num_init=`$awk  'BEGIN      { printf "0, " }
11691                              !/^NSIG/   { printf "%d, ", $2}
11692                              END        { printf "0\n"}' signal.lst`
11693         ;;
11694 esac
11695 echo "The following $sig_count signals are available:"
11696 echo " "
11697 echo $sig_name | $awk \
11698 'BEGIN { linelen = 0 }
11699 {
11700         for (i = 1; i <= NF; i++) {
11701                 name = "SIG" $i " "
11702                 linelen = linelen + length(name)
11703                 if (linelen > 70) {
11704                         printf "\n"
11705                         linelen = length(name)
11706                 }
11707                 printf "%s", name
11708         }
11709         printf "\n"
11710 }'
11711 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11712
11713 : see what type is used for signed size_t
11714 set ssize_t ssizetype int stdio.h sys/types.h
11715 eval $typedef
11716 dflt="$ssizetype"
11717 $cat > ssize.c <<EOM
11718 #include <stdio.h>
11719 #include <sys/types.h>
11720 #define Size_t $sizetype
11721 #define SSize_t $dflt
11722 int main()
11723 {
11724         if (sizeof(Size_t) == sizeof(SSize_t))
11725                 printf("$dflt\n");
11726         else if (sizeof(Size_t) == sizeof(int))
11727                 printf("int\n");
11728         else 
11729                 printf("long\n");
11730         exit(0);
11731 }
11732 EOM
11733 echo " "
11734 set ssize
11735 if eval $compile_ok && ./ssize > /dev/null; then
11736         ssizetype=`./ssize`
11737         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11738 else
11739         $cat >&4 <<EOM
11740 Help! I can't compile and run the ssize_t test program: please enlighten me!
11741 (This is probably a misconfiguration in your system or libraries, and
11742 you really ought to fix it.  Still, I'll try anyway.)
11743
11744 I need a type that is the same size as $sizetype, but is guaranteed to
11745 be signed.  Common values are ssize_t, int and long.
11746
11747 EOM
11748         rp="What signed type is the same size as $sizetype?"
11749         . ./myread
11750         ssizetype="$ans"
11751 fi
11752 $rm -f ssize ssize.*
11753
11754 : see what type of char stdio uses.
11755 echo " "
11756 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11757         echo "Your stdio uses unsigned chars." >&4
11758         stdchar="unsigned char"
11759 else
11760         echo "Your stdio uses signed chars." >&4
11761         stdchar="char"
11762 fi
11763
11764 : see if time exists
11765 echo " "
11766 if test "X$d_time" = X -o X"$timetype" = X; then
11767     if set time val -f d_time; eval $csym; $val; then
11768                 echo 'time() found.' >&4
11769                 val="$define"
11770                 rp="What is the type returned by time() on this system?"
11771                 set time_t timetype long stdio.h sys/types.h
11772                 eval $typedef_ask
11773     else
11774                 echo 'time() not found, hope that will do.' >&4
11775                 val="$undef"
11776                 timetype='int';
11777     fi
11778     set d_time
11779     eval $setvar
11780 fi
11781
11782 : see what type uids are declared as in the kernel
11783 echo " "
11784 echo "Looking for the type for user ids returned by getuid()."
11785 set uid_t uidtype xxx stdio.h sys/types.h
11786 eval $typedef
11787 case "$uidtype" in
11788 xxx)
11789         xxx=`./findhdr sys/user.h`
11790         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11791         case $1 in
11792         unsigned) dflt="$1 $2" ;;
11793         *) dflt="$1" ;;
11794         esac
11795         ;;
11796 *) dflt="$uidtype";;
11797 esac
11798 case "$uidtype" in
11799 uid_t)  echo "uid_t found." ;;
11800 *)      rp="What is the type for user ids returned by getuid()?"
11801         . ./myread
11802         uidtype="$ans"
11803         ;;
11804 esac
11805
11806 : see if dbm.h is available
11807 : see if dbmclose exists
11808 set dbmclose d_dbmclose
11809 eval $inlibc
11810
11811 case "$d_dbmclose" in
11812 $define)
11813         set dbm.h i_dbm
11814         eval $inhdr
11815         case "$i_dbm" in
11816         $define)
11817                 val="$undef"
11818                 set i_rpcsvcdbm
11819                 eval $setvar
11820                 ;;
11821         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11822                 eval $inhdr
11823                 ;;
11824         esac
11825         ;;
11826 *)      echo "We won't be including <dbm.h>"
11827         val="$undef"
11828         set i_dbm
11829         eval $setvar
11830         val="$undef"
11831         set i_rpcsvcdbm
11832         eval $setvar
11833         ;;
11834 esac
11835
11836 : see if this is a sys/file.h system
11837 val=''
11838 set sys/file.h val
11839 eval $inhdr
11840
11841 : do we need to include sys/file.h ?
11842 case "$val" in
11843 "$define")
11844         echo " "
11845         if $h_sysfile; then
11846                 val="$define"
11847                 echo "We'll be including <sys/file.h>." >&4
11848         else
11849                 val="$undef"
11850                 echo "We won't be including <sys/file.h>." >&4
11851         fi
11852         ;;
11853 *)
11854         h_sysfile=false
11855         ;;
11856 esac
11857 set i_sysfile
11858 eval $setvar
11859
11860 : see if fcntl.h is there
11861 val=''
11862 set fcntl.h val
11863 eval $inhdr
11864
11865 : see if we can include fcntl.h
11866 case "$val" in
11867 "$define")
11868         echo " "
11869         if $h_fcntl; then
11870                 val="$define"
11871                 echo "We'll be including <fcntl.h>." >&4
11872         else
11873                 val="$undef"
11874                 if $h_sysfile; then
11875         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11876                 else
11877                         echo "We won't be including <fcntl.h>." >&4
11878                 fi
11879         fi
11880         ;;
11881 *)
11882         h_fcntl=false
11883         val="$undef"
11884         ;;
11885 esac
11886 set i_fcntl
11887 eval $setvar
11888
11889 : see if locale.h is available
11890 set locale.h i_locale
11891 eval $inhdr
11892
11893 : see if mach cthreads are available
11894 if test "X$usethreads" = "X$define"; then
11895         set mach/cthreads.h i_machcthr
11896         eval $inhdr
11897 else
11898         i_machcthr="$undef"
11899 fi
11900
11901
11902
11903 : see if this is a math.h system
11904 set math.h i_math
11905 eval $inhdr
11906
11907 : see if this is a mntent.h system
11908 set mntent.h i_mntent
11909 eval $inhdr
11910
11911 : see if ndbm.h is available
11912 set ndbm.h t_ndbm
11913 eval $inhdr
11914 case "$t_ndbm" in
11915 $define)
11916         : see if dbm_open exists
11917         set dbm_open d_dbm_open
11918         eval $inlibc
11919         case "$d_dbm_open" in
11920         $undef)
11921                 t_ndbm="$undef"
11922                 echo "We won't be including <ndbm.h>"
11923                 ;;
11924         esac
11925         ;;
11926 esac
11927 val="$t_ndbm"
11928 set i_ndbm
11929 eval $setvar
11930
11931 : see if net/errno.h is available
11932 val=''
11933 set net/errno.h val
11934 eval $inhdr
11935
11936 : Unfortunately, it causes problems on some systems.  Arrgh.
11937 case "$val" in
11938 $define)
11939         cat > try.c <<'EOM'
11940 #include <stdio.h>
11941 #include <errno.h>
11942 #include <net/errno.h>
11943 int func()
11944 {
11945         return ENOTSOCK;
11946 }
11947 EOM
11948         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11949                 echo "We'll be including <net/errno.h>." >&4
11950         else
11951                 echo "We won't be including <net/errno.h>." >&4
11952                 val="$undef"
11953         fi
11954         $rm -f try.* try
11955         ;;
11956 esac
11957 set i_neterrno
11958 eval $setvar
11959
11960 : see if this is a poll.h system
11961 set poll.h i_poll
11962 eval $inhdr
11963
11964 : get C preprocessor symbols handy
11965 echo " "
11966 $echo $n "Hmm... $c"
11967 echo $al | $tr ' ' $trnl >Cppsym.know
11968 $cat <<EOSS >Cppsym
11969 $startsh
11970 case "\$1" in
11971 -l) list=true
11972         shift
11973         ;;
11974 esac
11975 unknown=''
11976 case "\$list\$#" in
11977 1|2)
11978         for sym do
11979                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11980                         exit 0
11981                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11982                         :
11983                 else
11984                         unknown="\$unknown \$sym"
11985                 fi
11986         done
11987         set X \$unknown
11988         shift
11989         ;;
11990 esac
11991 case \$# in
11992 0) exit 1;;
11993 esac
11994 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11995 #ifdef \1\\
11996 exit 0; _ _ _ _\1\\      \1\\
11997 #endif\\
11998 /' >Cppsym\$\$
11999 echo "exit 1; _ _ _" >>Cppsym\$\$
12000 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
12001 case "\$list" in
12002 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12003 *)
12004         sh Cppsym2\$\$
12005         status=\$?
12006         ;;
12007 esac
12008 $rm -f Cppsym\$\$ Cppsym2\$\$
12009 exit \$status
12010 EOSS
12011 chmod +x Cppsym
12012 $eunicefix Cppsym
12013 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12014
12015 : now check the C compiler for additional symbols
12016 postprocess_cc_v=''
12017 case "$osname" in
12018 aix) postprocess_cc_v="|$tr , ' '" ;;
12019 esac
12020 $cat >ccsym <<EOS
12021 $startsh
12022 $cat >tmp.c <<EOF
12023 extern int foo;
12024 EOF
12025 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
12026 do
12027         case "\$i" in
12028         -D*) echo "\$i" | $sed 's/^-D//';;
12029         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12030         esac
12031 done
12032 $rm -f try.c
12033 EOS
12034 postprocess_cc_v=''
12035 chmod +x ccsym
12036 $eunicefix ccsym
12037 ./ccsym > ccsym1.raw
12038 if $test -s ccsym1.raw; then
12039        $sort ccsym1.raw | $uniq >ccsym.raw
12040 else
12041        mv ccsym1.raw ccsym.raw
12042 fi
12043
12044 $awk '/\=/ { print $0; next }
12045         { print $0"=1" }' ccsym.raw >ccsym.list
12046 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12047 $comm -13 ccsym.true ccsym.list >ccsym.own
12048 $comm -12 ccsym.true ccsym.list >ccsym.com
12049 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12050 also=''
12051 if $test -z ccsym.raw; then
12052         echo "Your C compiler doesn't seem to define any symbols!" >&4
12053         echo " "
12054         echo "However, your C preprocessor defines the following symbols:"
12055         $cat Cppsym.true
12056         ccsymbols=''
12057         cppsymbols=`$cat Cppsym.true`
12058         cppsymbols=`echo $cppsymbols`
12059         cppccsymbols="$cppsymbols"
12060 else
12061         if $test -s ccsym.com; then
12062                 echo "Your C compiler and pre-processor define these symbols:"
12063                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12064                 also='also '
12065                 symbols='ones'
12066                 cppccsymbols=`$cat ccsym.com`
12067                 cppccsymbols=`echo $cppccsymbols`
12068                 $test "$silent" || sleep 1
12069         fi
12070         if $test -s ccsym.cpp; then
12071                 $test "$also" && echo " "
12072                 echo "Your C pre-processor ${also}defines the following symbols:"
12073                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12074                 also='further '
12075                 cppsymbols=`$cat ccsym.cpp`
12076                 cppsymbols=`echo $cppsymbols`
12077                 $test "$silent" || sleep 1
12078         fi
12079         if $test -s ccsym.own; then
12080                 $test "$also" && echo " "
12081                 echo "Your C compiler ${also}defines the following cpp symbols:"
12082                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12083                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12084                 ccsymbols=`$cat ccsym.own`
12085                 ccsymbols=`echo $ccsymbols`
12086                 $test "$silent" || sleep 1
12087         fi
12088 fi
12089 $rm -f ccsym*
12090
12091 : see if this is a termio system
12092 val="$undef"
12093 val2="$undef"
12094 val3="$undef"
12095 if $test `./findhdr termios.h`; then
12096         set tcsetattr i_termios
12097         eval $inlibc
12098         val3="$i_termios"
12099 fi
12100 echo " "
12101 case "$val3" in
12102 "$define") echo "You have POSIX termios.h... good!" >&4;;
12103 *) if ./Cppsym pyr; then
12104                 case "`/bin/universe`" in
12105                 ucb) if $test `./findhdr sgtty.h`; then
12106                                 val2="$define"
12107                                 echo "<sgtty.h> found." >&4
12108                         else
12109                                 echo "System is pyramid with BSD universe."
12110                                 echo "<sgtty.h> not found--you could have problems." >&4
12111                         fi;;
12112                 *) if $test `./findhdr termio.h`; then
12113                                 val="$define"
12114                                 echo "<termio.h> found." >&4
12115                         else
12116                                 echo "System is pyramid with USG universe."
12117                                 echo "<termio.h> not found--you could have problems." >&4
12118                         fi;;
12119                 esac
12120         elif ./usg; then
12121                 if $test `./findhdr termio.h`; then
12122                         echo "<termio.h> found." >&4
12123                         val="$define"
12124                 elif $test `./findhdr sgtty.h`; then
12125                         echo "<sgtty.h> found." >&4
12126                         val2="$define"
12127                 else
12128 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12129                 fi
12130         else
12131                 if $test `./findhdr sgtty.h`; then
12132                         echo "<sgtty.h> found." >&4
12133                         val2="$define"
12134                 elif $test `./findhdr termio.h`; then
12135                         echo "<termio.h> found." >&4
12136                         val="$define"
12137                 else
12138 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12139                 fi
12140         fi;;
12141 esac
12142 set i_termio; eval $setvar
12143 val=$val2; set i_sgtty; eval $setvar
12144 val=$val3; set i_termios; eval $setvar
12145
12146 : see if stdarg is available
12147 echo " "
12148 if $test `./findhdr stdarg.h`; then
12149         echo "<stdarg.h> found." >&4
12150         valstd="$define"
12151 else
12152         echo "<stdarg.h> NOT found." >&4
12153         valstd="$undef"
12154 fi
12155
12156 : see if varags is available
12157 echo " "
12158 if $test `./findhdr varargs.h`; then
12159         echo "<varargs.h> found." >&4
12160 else
12161         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12162 fi
12163
12164 : set up the varargs testing programs
12165 $cat > varargs.c <<EOP
12166 #ifdef I_STDARG
12167 #include <stdarg.h>
12168 #endif
12169 #ifdef I_VARARGS
12170 #include <varargs.h>
12171 #endif
12172
12173 #ifdef I_STDARG
12174 int f(char *p, ...)
12175 #else
12176 int f(va_alist)
12177 va_dcl
12178 #endif
12179 {
12180         va_list ap;
12181 #ifndef I_STDARG
12182         char *p;
12183 #endif
12184 #ifdef I_STDARG
12185         va_start(ap,p);
12186 #else
12187         va_start(ap);
12188         p = va_arg(ap, char *);
12189 #endif
12190         va_end(ap);
12191 }
12192 EOP
12193 $cat > varargs <<EOP
12194 $startsh
12195 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12196         echo "true"
12197 else
12198         echo "false"
12199 fi
12200 $rm -f varargs$_o
12201 EOP
12202 chmod +x varargs
12203
12204 : now check which varargs header should be included
12205 echo " "
12206 i_varhdr=''
12207 case "$valstd" in
12208 "$define")
12209         if `./varargs I_STDARG`; then
12210                 val='stdarg.h'
12211         elif `./varargs I_VARARGS`; then
12212                 val='varargs.h'
12213         fi
12214         ;;
12215 *)
12216         if `./varargs I_VARARGS`; then
12217                 val='varargs.h'
12218         fi
12219         ;;
12220 esac
12221 case "$val" in
12222 '')
12223 echo "I could not find the definition for va_dcl... You have problems..." >&4
12224         val="$undef"; set i_stdarg; eval $setvar
12225         val="$undef"; set i_varargs; eval $setvar
12226         ;;
12227 *) 
12228         set i_varhdr
12229         eval $setvar
12230         case "$i_varhdr" in
12231         stdarg.h)
12232                 val="$define"; set i_stdarg; eval $setvar
12233                 val="$undef"; set i_varargs; eval $setvar
12234                 ;;
12235         varargs.h)
12236                 val="$undef"; set i_stdarg; eval $setvar
12237                 val="$define"; set i_varargs; eval $setvar
12238                 ;;
12239         esac
12240         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12241 esac
12242 $rm -f varargs*
12243
12244 : see if stddef is available
12245 set stddef.h i_stddef
12246 eval $inhdr
12247
12248 : see if sys/access.h is available
12249 set sys/access.h i_sysaccess
12250 eval $inhdr
12251
12252 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12253 set sys/filio.h i_sysfilio
12254 eval $inhdr
12255 echo " "
12256 if $test `./findhdr sys/ioctl.h`; then
12257         val="$define"
12258         echo '<sys/ioctl.h> found.' >&4
12259 else
12260         val="$undef"
12261         if $test $i_sysfilio = "$define"; then
12262             echo '<sys/ioctl.h> NOT found.' >&4
12263         else
12264                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12265                 $test $i_termio = "$define" && xxx="termio.h"
12266                 $test $i_termios = "$define" && xxx="termios.h"
12267 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12268         fi
12269 fi
12270 set i_sysioctl
12271 eval $setvar
12272
12273 : see if sys/resource.h has to be included
12274 set sys/resource.h i_sysresrc
12275 eval $inhdr
12276
12277 : see if sys/security.h is available
12278 set sys/security.h i_syssecrt
12279 eval $inhdr
12280
12281 : see if this is a sys/statvfs.h system
12282 set sys/statvfs.h i_sysstatvfs
12283 eval $inhdr
12284
12285 : see if this is a sys/un.h system
12286 set sys/un.h i_sysun
12287 eval $inhdr
12288
12289 : see if this is a syswait system
12290 set sys/wait.h i_syswait
12291 eval $inhdr
12292
12293 : see if this is an utime system
12294 set utime.h i_utime
12295 eval $inhdr
12296
12297 : see if this is a values.h system
12298 set values.h i_values
12299 eval $inhdr
12300
12301 : see if this is a vfork system
12302 case "$d_vfork" in
12303 "$define")
12304         set vfork.h i_vfork
12305         eval $inhdr
12306         ;;
12307 *)
12308         i_vfork="$undef"
12309         ;;
12310 esac
12311
12312 : see if gdbm.h is available
12313 set gdbm.h t_gdbm
12314 eval $inhdr
12315 case "$t_gdbm" in
12316 $define)
12317         : see if gdbm_open exists
12318         set gdbm_open d_gdbm_open
12319         eval $inlibc
12320         case "$d_gdbm_open" in
12321         $undef)
12322                 t_gdbm="$undef"
12323                 echo "We won't be including <gdbm.h>"
12324                 ;;
12325         esac
12326         ;;
12327 esac
12328 val="$t_gdbm"
12329 set i_gdbm
12330 eval $setvar
12331
12332 echo " "
12333 echo "Looking for extensions..." >&4
12334 tdir=`pwd`
12335 cd $rsrc/ext
12336 : If we are using the old config.sh, known_extensions may contain
12337 : old or inaccurate or duplicate values.
12338 known_extensions=''
12339 nonxs_extensions=''
12340 : We do not use find because it might not be available.
12341 : We do not just use MANIFEST because the user may have dropped
12342 : some additional extensions into the source tree and expect them
12343 : to be built.
12344 for xxx in * ; do
12345         case "$xxx" in
12346         DynaLoader|dynaload) ;;
12347         *)      if $test -f $xxx/$xxx.xs; then
12348                         known_extensions="$known_extensions $xxx"
12349                 elif $test -f $xxx/Makefile.PL; then
12350                         nonxs_extensions="$nonxs_extensions $xxx"
12351                 else
12352                         if $test -d $xxx; then
12353                                 # Look for nested extensions, eg. Devel/Dprof.
12354                                 cd $xxx
12355                                 for yyy in * ; do
12356                                 if $test -f $yyy/$yyy.xs; then
12357                                         known_extensions="$known_extensions $xxx/$yyy"
12358                                 elif $test -f $yyy/Makefile.PL; then
12359                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12360                                 fi
12361                                 done
12362                                 cd ..
12363                         fi
12364                 fi 
12365                 ;;
12366         esac
12367 done
12368 set X $nonxs_extensions
12369 shift
12370 nonxs_extensions="$*"
12371 set X $known_extensions
12372 shift
12373 known_extensions="$*"
12374 cd $tdir
12375
12376 : Now see which are supported on this system.
12377 avail_ext=''
12378 for xxx in $known_extensions ; do
12379         case "$xxx" in
12380         DB_File|db_file)
12381                 case "$i_db" in
12382                 $define) avail_ext="$avail_ext $xxx" ;;
12383                 esac
12384                 ;;
12385         GDBM_File|gdbm_fil)
12386                 case "$i_gdbm" in 
12387                 $define) avail_ext="$avail_ext $xxx" ;;
12388                 esac
12389                 ;;
12390         NDBM_File|ndbm_fil)
12391                 case "$i_ndbm" in
12392                 $define) avail_ext="$avail_ext $xxx" ;;
12393                 esac
12394                 ;;
12395         ODBM_File|odbm_fil) 
12396                 case "${i_dbm}${i_rpcsvcdbm}" in
12397                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12398                 esac
12399                 ;;
12400         POSIX|posix)
12401                 case "$useposix" in
12402                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12403                 esac
12404                 ;;
12405         Opcode|opcode)
12406                 case "$useopcode" in
12407                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12408                 esac
12409                 ;;
12410         Socket|socket)
12411                 case "$d_socket" in 
12412                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12413                 esac
12414                 ;;
12415         Thread|thread)
12416                 case "$usethreads" in 
12417                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12418                 esac
12419                 ;;
12420         IPC/SysV|ipc/sysv)
12421                 : XXX Do we need a useipcsysv variable here
12422                 case "${d_msg}${d_sem}${d_shm}" in 
12423                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12424                 esac
12425                 ;;
12426         *)      avail_ext="$avail_ext $xxx"
12427                 ;;
12428         esac
12429 done
12430
12431 set X $avail_ext
12432 shift
12433 avail_ext="$*"
12434
12435 : Now see which nonxs extensions are supported on this system.
12436 : For now assume all are.
12437 nonxs_ext=''
12438 for xxx in $nonxs_extensions ; do
12439         case "$xxx" in
12440         *)      nonxs_ext="$nonxs_ext $xxx"
12441                 ;;
12442         esac
12443 done
12444
12445 set X $nonxs_ext
12446 shift
12447 nonxs_ext="$*"
12448
12449 case $usedl in
12450 $define)
12451         $cat <<EOM
12452 A number of extensions are supplied with $package.  You may choose to
12453 compile these extensions for dynamic loading (the default), compile
12454 them into the $package executable (static loading), or not include
12455 them at all.  Answer "none" to include no extensions.
12456 Note that DynaLoader is always built and need not be mentioned here.
12457
12458 EOM
12459         case "$dynamic_ext" in
12460         '') dflt="$avail_ext" ;;
12461         *)      dflt="$dynamic_ext"
12462                 # Perhaps we are reusing an old out-of-date config.sh.
12463                 case "$hint" in
12464                 previous)
12465                         if test X"$dynamic_ext" != X"$avail_ext"; then
12466                                 $cat <<EOM
12467 NOTICE:  Your previous config.sh list may be incorrect. 
12468 The extensions now available to you are 
12469         ${avail_ext}
12470 but the default list from your previous config.sh is
12471         ${dynamic_ext} 
12472
12473 EOM
12474                         fi
12475                         ;;
12476                 esac
12477                 ;;
12478         esac
12479         case "$dflt" in
12480         '')     dflt=none;;
12481         esac
12482         rp="What extensions do you wish to load dynamically?"
12483         . ./myread
12484         case "$ans" in
12485         none) dynamic_ext=' ' ;;
12486         *) dynamic_ext="$ans" ;;
12487         esac
12488
12489         case "$static_ext" in
12490         '')
12491                 : Exclude those already listed in dynamic linking
12492                 dflt=''
12493                 for xxx in $avail_ext; do
12494                         case " $dynamic_ext " in
12495                         *" $xxx "*) ;;
12496                         *) dflt="$dflt $xxx" ;;
12497                         esac
12498                 done
12499                 set X $dflt
12500                 shift
12501                 dflt="$*"
12502                 ;;
12503         *)  dflt="$static_ext" 
12504                 ;;
12505         esac
12506
12507         case "$dflt" in
12508         '')     dflt=none;;
12509         esac
12510         rp="What extensions do you wish to load statically?"
12511         . ./myread
12512         case "$ans" in
12513         none) static_ext=' ' ;;
12514         *) static_ext="$ans" ;;
12515         esac
12516         ;;
12517 *)
12518         $cat <<EOM
12519 A number of extensions are supplied with $package.  Answer "none" 
12520 to include no extensions. 
12521 Note that DynaLoader is always built and need not be mentioned here.
12522
12523 EOM
12524         case "$static_ext" in
12525         '') dflt="$avail_ext" ;;
12526         *)      dflt="$static_ext"
12527                 # Perhaps we are reusing an old out-of-date config.sh.
12528                 case "$hint" in
12529                 previous)
12530                         if test X"$static_ext" != X"$avail_ext"; then
12531                                 $cat <<EOM
12532 NOTICE:  Your previous config.sh list may be incorrect. 
12533 The extensions now available to you are 
12534         ${avail_ext}
12535 but the default list from your previous config.sh is
12536         ${static_ext} 
12537
12538 EOM
12539                         fi
12540                         ;;
12541                 esac
12542                 ;;
12543         esac
12544         : Exclude those that are not xs extensions
12545         case "$dflt" in
12546         '')     dflt=none;;
12547         esac
12548         rp="What extensions do you wish to include?"
12549         . ./myread
12550         case "$ans" in
12551         none) static_ext=' ' ;;
12552         *) static_ext="$ans" ;;
12553         esac
12554         ;;
12555 esac
12556
12557 set X $dynamic_ext $static_ext $nonxs_ext
12558 shift
12559 extensions="$*"
12560
12561 : Remove build directory name from cppstdin so it can be used from
12562 : either the present location or the final installed location.
12563 echo " "
12564 : Get out of the UU directory to get correct path name.
12565 cd ..
12566 case "$cppstdin" in
12567 `pwd`/cppstdin)
12568         echo "Stripping down cppstdin path name"
12569         cppstdin=cppstdin
12570         ;;
12571 esac
12572 cd UU
12573
12574 : end of configuration questions
12575 echo " "
12576 echo "End of configuration questions."
12577 echo " "
12578
12579 : back to where it started
12580 if test -d ../UU; then
12581         cd ..
12582 fi
12583
12584 : configuration may be patched via a 'config.over' file
12585 if $test -f config.over; then
12586         echo " "
12587         dflt=y
12588         rp='I see a config.over file.  Do you wish to load it?'
12589         . UU/myread
12590         case "$ans" in
12591         n*) echo "OK, I'll ignore it.";;
12592         *)      . ./config.over
12593                 echo "Configuration override changes have been loaded."
12594                 ;;
12595         esac
12596 fi
12597
12598 : in case they want portability, strip down executable paths
12599 case "$d_portable" in
12600 "$define")
12601         echo " "
12602         echo "Stripping down executable paths..." >&4
12603         for file in $loclist $trylist; do
12604                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12605                         eval $file="\$file"
12606                 fi
12607         done
12608         ;;
12609 esac
12610
12611 : create config.sh file
12612 echo " "
12613 echo "Creating config.sh..." >&4
12614 $spitshell <<EOT >config.sh
12615 $startsh
12616 #
12617 # This file was produced by running the Configure script. It holds all the
12618 # definitions figured out by Configure. Should you modify one of these values,
12619 # do not forget to propagate your changes by running "Configure -der". You may
12620 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12621 #
12622
12623 # Package name      : $package
12624 # Source directory  : $src
12625 # Configuration time: $cf_time
12626 # Configured by     : $cf_by
12627 # Target system     : $myuname
12628
12629 Author='$Author'
12630 Date='$Date'
12631 Header='$Header'
12632 Id='$Id'
12633 Locker='$Locker'
12634 Log='$Log'
12635 Mcc='$Mcc'
12636 RCSfile='$RCSfile'
12637 Revision='$Revision'
12638 Source='$Source'
12639 State='$State'
12640 _a='$_a'
12641 _exe='$_exe'
12642 _o='$_o'
12643 afs='$afs'
12644 alignbytes='$alignbytes'
12645 ansi2knr='$ansi2knr'
12646 aphostname='$aphostname'
12647 apiversion='$apiversion'
12648 ar='$ar'
12649 archlib='$archlib'
12650 archlibexp='$archlibexp'
12651 archname64='$archname64'
12652 archname='$archname'
12653 archobjs='$archobjs'
12654 awk='$awk'
12655 baserev='$baserev'
12656 bash='$bash'
12657 bin='$bin'
12658 binexp='$binexp'
12659 bison='$bison'
12660 byacc='$byacc'
12661 byteorder='$byteorder'
12662 c='$c'
12663 castflags='$castflags'
12664 cat='$cat'
12665 cc='$cc'
12666 cccdlflags='$cccdlflags'
12667 ccdlflags='$ccdlflags'
12668 ccflags='$ccflags'
12669 ccsymbols='$ccsymbols'
12670 cf_by='$cf_by'
12671 cf_email='$cf_email'
12672 cf_time='$cf_time'
12673 chgrp='$chgrp'
12674 chmod='$chmod'
12675 chown='$chown'
12676 clocktype='$clocktype'
12677 comm='$comm'
12678 compress='$compress'
12679 contains='$contains'
12680 cp='$cp'
12681 cpio='$cpio'
12682 cpp='$cpp'
12683 cpp_stuff='$cpp_stuff'
12684 cppccsymbols='$cppccsymbols'
12685 cppflags='$cppflags'
12686 cpplast='$cpplast'
12687 cppminus='$cppminus'
12688 cpprun='$cpprun'
12689 cppstdin='$cppstdin'
12690 cppsymbols='$cppsymbols'
12691 crosscompile='$crosscompile'
12692 cryptlib='$cryptlib'
12693 csh='$csh'
12694 d_Gconvert='$d_Gconvert'
12695 d_access='$d_access'
12696 d_accessx='$d_accessx'
12697 d_alarm='$d_alarm'
12698 d_archlib='$d_archlib'
12699 d_attribut='$d_attribut'
12700 d_bcmp='$d_bcmp'
12701 d_bcopy='$d_bcopy'
12702 d_bsd='$d_bsd'
12703 d_bsdgetpgrp='$d_bsdgetpgrp'
12704 d_bsdsetpgrp='$d_bsdsetpgrp'
12705 d_bzero='$d_bzero'
12706 d_casti32='$d_casti32'
12707 d_castneg='$d_castneg'
12708 d_charvspr='$d_charvspr'
12709 d_chown='$d_chown'
12710 d_chroot='$d_chroot'
12711 d_chsize='$d_chsize'
12712 d_closedir='$d_closedir'
12713 d_cmsghdr_s='$d_cmsghdr_s'
12714 d_const='$d_const'
12715 d_crypt='$d_crypt'
12716 d_csh='$d_csh'
12717 d_cuserid='$d_cuserid'
12718 d_dbl_dig='$d_dbl_dig'
12719 d_dbmclose64='$d_dbmclose64'
12720 d_dbminit64='$d_dbminit64'
12721 d_delete64='$d_delete64'
12722 d_difftime='$d_difftime'
12723 d_dirent64_s='$d_dirent64_s'
12724 d_dirnamlen='$d_dirnamlen'
12725 d_dlerror='$d_dlerror'
12726 d_dlopen='$d_dlopen'
12727 d_dlsymun='$d_dlsymun'
12728 d_dosuid='$d_dosuid'
12729 d_drand48proto='$d_drand48proto'
12730 d_dup2='$d_dup2'
12731 d_eaccess='$d_eaccess'
12732 d_endgrent='$d_endgrent'
12733 d_endhent='$d_endhent'
12734 d_endnent='$d_endnent'
12735 d_endpent='$d_endpent'
12736 d_endpwent='$d_endpwent'
12737 d_endsent='$d_endsent'
12738 d_eofnblk='$d_eofnblk'
12739 d_eunice='$d_eunice'
12740 d_fchmod='$d_fchmod'
12741 d_fchown='$d_fchown'
12742 d_fcntl='$d_fcntl'
12743 d_fd_macros='$d_fd_macros'
12744 d_fd_set='$d_fd_set'
12745 d_fds_bits='$d_fds_bits'
12746 d_fetch64='$d_fetch64'
12747 d_fgetpos64='$d_fgetpos64'
12748 d_fgetpos='$d_fgetpos'
12749 d_firstkey64='$d_firstkey64'
12750 d_flexfnam='$d_flexfnam'
12751 d_flock64_s='$d_flock64_s'
12752 d_flock='$d_flock'
12753 d_fopen64='$d_fopen64'
12754 d_fork='$d_fork'
12755 d_fpathconf='$d_fpathconf'
12756 d_freopen64='$d_freopen64'
12757 d_fseek64='$d_fseek64'
12758 d_fseeko64='$d_fseeko64'
12759 d_fseeko='$d_fseeko'
12760 d_fsetpos64='$d_fsetpos64'
12761 d_fsetpos='$d_fsetpos'
12762 d_fstat64='$d_fstat64'
12763 d_fstatfs='$d_fstatfs'
12764 d_fstatvfs='$d_fstatvfs'
12765 d_ftell64='$d_ftell64'
12766 d_ftello64='$d_ftello64'
12767 d_ftello='$d_ftello'
12768 d_ftime='$d_ftime'
12769 d_ftruncate64='$d_ftruncate64'
12770 d_getgrent='$d_getgrent'
12771 d_getgrps='$d_getgrps'
12772 d_gethbyaddr='$d_gethbyaddr'
12773 d_gethbyname='$d_gethbyname'
12774 d_gethent='$d_gethent'
12775 d_gethname='$d_gethname'
12776 d_gethostprotos='$d_gethostprotos'
12777 d_getlogin='$d_getlogin'
12778 d_getmntent='$d_getmntent'
12779 d_getnbyaddr='$d_getnbyaddr'
12780 d_getnbyname='$d_getnbyname'
12781 d_getnent='$d_getnent'
12782 d_getnetprotos='$d_getnetprotos'
12783 d_getpbyname='$d_getpbyname'
12784 d_getpbynumber='$d_getpbynumber'
12785 d_getpent='$d_getpent'
12786 d_getpgid='$d_getpgid'
12787 d_getpgrp2='$d_getpgrp2'
12788 d_getpgrp='$d_getpgrp'
12789 d_getppid='$d_getppid'
12790 d_getprior='$d_getprior'
12791 d_getprotoprotos='$d_getprotoprotos'
12792 d_getpwent='$d_getpwent'
12793 d_getsbyname='$d_getsbyname'
12794 d_getsbyport='$d_getsbyport'
12795 d_getsent='$d_getsent'
12796 d_getservprotos='$d_getservprotos'
12797 d_gettimeod='$d_gettimeod'
12798 d_gnulibc='$d_gnulibc'
12799 d_grpasswd='$d_grpasswd'
12800 d_hasmntopt='$d_hasmntopt'
12801 d_htonl='$d_htonl'
12802 d_index='$d_index'
12803 d_inetaton='$d_inetaton'
12804 d_ino64_t='$d_ino64_t'
12805 d_int64t='$d_int64t'
12806 d_iovec_s='$d_iovec_s'
12807 d_isascii='$d_isascii'
12808 d_killpg='$d_killpg'
12809 d_lchown='$d_lchown'
12810 d_link='$d_link'
12811 d_llseek='$d_llseek'
12812 d_locconv='$d_locconv'
12813 d_lockf64='$d_lockf64'
12814 d_lockf='$d_lockf'
12815 d_longdbl='$d_longdbl'
12816 d_longlong='$d_longlong'
12817 d_lseek64='$d_lseek64'
12818 d_lstat64='$d_lstat64'
12819 d_lstat='$d_lstat'
12820 d_madvise='$d_madvise'
12821 d_mblen='$d_mblen'
12822 d_mbstowcs='$d_mbstowcs'
12823 d_mbtowc='$d_mbtowc'
12824 d_memcmp='$d_memcmp'
12825 d_memcpy='$d_memcpy'
12826 d_memmove='$d_memmove'
12827 d_memset='$d_memset'
12828 d_mkdir='$d_mkdir'
12829 d_mkfifo='$d_mkfifo'
12830 d_mktime='$d_mktime'
12831 d_mmap='$d_mmap'
12832 d_mprotect='$d_mprotect'
12833 d_msg='$d_msg'
12834 d_msg_ctrunc='$d_msg_ctrunc'
12835 d_msg_dontroute='$d_msg_dontroute'
12836 d_msg_oob='$d_msg_oob'
12837 d_msg_peek='$d_msg_peek'
12838 d_msg_proxy='$d_msg_proxy'
12839 d_msgctl='$d_msgctl'
12840 d_msgget='$d_msgget'
12841 d_msghdr_s='$d_msghdr_s'
12842 d_msgrcv='$d_msgrcv'
12843 d_msgsnd='$d_msgsnd'
12844 d_msync='$d_msync'
12845 d_munmap='$d_munmap'
12846 d_mymalloc='$d_mymalloc'
12847 d_nextkey64='$d_nextkey64'
12848 d_nice='$d_nice'
12849 d_off64_t='$d_off64_t'
12850 d_offset_t='$d_offset_t'
12851 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12852 d_oldpthreads='$d_oldpthreads'
12853 d_oldsock='$d_oldsock'
12854 d_open3='$d_open3'
12855 d_open64='$d_open64'
12856 d_opendir64='$d_opendir64'
12857 d_pathconf='$d_pathconf'
12858 d_pause='$d_pause'
12859 d_phostname='$d_phostname'
12860 d_pipe='$d_pipe'
12861 d_poll='$d_poll'
12862 d_portable='$d_portable'
12863 d_pthread_yield='$d_pthread_yield'
12864 d_pwage='$d_pwage'
12865 d_pwchange='$d_pwchange'
12866 d_pwclass='$d_pwclass'
12867 d_pwcomment='$d_pwcomment'
12868 d_pwexpire='$d_pwexpire'
12869 d_pwgecos='$d_pwgecos'
12870 d_pwpasswd='$d_pwpasswd'
12871 d_pwquota='$d_pwquota'
12872 d_readdir64='$d_readdir64'
12873 d_readdir='$d_readdir'
12874 d_readlink='$d_readlink'
12875 d_readv='$d_readv'
12876 d_recvmsg='$d_recvmsg'
12877 d_rename='$d_rename'
12878 d_rewinddir='$d_rewinddir'
12879 d_rmdir='$d_rmdir'
12880 d_safebcpy='$d_safebcpy'
12881 d_safemcpy='$d_safemcpy'
12882 d_sanemcmp='$d_sanemcmp'
12883 d_sched_yield='$d_sched_yield'
12884 d_scm_rights='$d_scm_rights'
12885 d_seekdir64='$d_seekdir64'
12886 d_seekdir='$d_seekdir'
12887 d_select='$d_select'
12888 d_sem='$d_sem'
12889 d_semctl='$d_semctl'
12890 d_semctl_semid_ds='$d_semctl_semid_ds'
12891 d_semctl_semun='$d_semctl_semun'
12892 d_semget='$d_semget'
12893 d_semop='$d_semop'
12894 d_sendmsg='$d_sendmsg'
12895 d_setegid='$d_setegid'
12896 d_seteuid='$d_seteuid'
12897 d_setgrent='$d_setgrent'
12898 d_setgrps='$d_setgrps'
12899 d_sethent='$d_sethent'
12900 d_setlinebuf='$d_setlinebuf'
12901 d_setlocale='$d_setlocale'
12902 d_setnent='$d_setnent'
12903 d_setpent='$d_setpent'
12904 d_setpgid='$d_setpgid'
12905 d_setpgrp2='$d_setpgrp2'
12906 d_setpgrp='$d_setpgrp'
12907 d_setprior='$d_setprior'
12908 d_setpwent='$d_setpwent'
12909 d_setregid='$d_setregid'
12910 d_setresgid='$d_setresgid'
12911 d_setresuid='$d_setresuid'
12912 d_setreuid='$d_setreuid'
12913 d_setrgid='$d_setrgid'
12914 d_setruid='$d_setruid'
12915 d_setsent='$d_setsent'
12916 d_setsid='$d_setsid'
12917 d_setvbuf='$d_setvbuf'
12918 d_sfio='$d_sfio'
12919 d_shm='$d_shm'
12920 d_shmat='$d_shmat'
12921 d_shmatprototype='$d_shmatprototype'
12922 d_shmctl='$d_shmctl'
12923 d_shmdt='$d_shmdt'
12924 d_shmget='$d_shmget'
12925 d_sigaction='$d_sigaction'
12926 d_sigsetjmp='$d_sigsetjmp'
12927 d_socket='$d_socket'
12928 d_sockpair='$d_sockpair'
12929 d_stat64='$d_stat64'
12930 d_statblks='$d_statblks'
12931 d_statfs='$d_statfs'
12932 d_statfsflags='$d_statfsflags'
12933 d_statvfs='$d_statvfs'
12934 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12935 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12936 d_stdiobase='$d_stdiobase'
12937 d_stdstdio='$d_stdstdio'
12938 d_store64='$d_store64'
12939 d_strchr='$d_strchr'
12940 d_strcoll='$d_strcoll'
12941 d_strctcpy='$d_strctcpy'
12942 d_strerrm='$d_strerrm'
12943 d_strerror='$d_strerror'
12944 d_strtod='$d_strtod'
12945 d_strtol='$d_strtol'
12946 d_strtoul='$d_strtoul'
12947 d_strxfrm='$d_strxfrm'
12948 d_suidsafe='$d_suidsafe'
12949 d_symlink='$d_symlink'
12950 d_syscall='$d_syscall'
12951 d_sysconf='$d_sysconf'
12952 d_sysernlst='$d_sysernlst'
12953 d_syserrlst='$d_syserrlst'
12954 d_system='$d_system'
12955 d_tcgetpgrp='$d_tcgetpgrp'
12956 d_tcsetpgrp='$d_tcsetpgrp'
12957 d_telldir64='$d_telldir64'
12958 d_telldir='$d_telldir'
12959 d_telldirproto='$d_telldirproto'
12960 d_time='$d_time'
12961 d_times='$d_times'
12962 d_tmpfile64='$d_tmpfile64'
12963 d_truncate64='$d_truncate64'
12964 d_truncate='$d_truncate'
12965 d_tzname='$d_tzname'
12966 d_umask='$d_umask'
12967 d_uname='$d_uname'
12968 d_union_semun='$d_union_semun'
12969 d_vfork='$d_vfork'
12970 d_void_closedir='$d_void_closedir'
12971 d_voidsig='$d_voidsig'
12972 d_voidtty='$d_voidtty'
12973 d_volatile='$d_volatile'
12974 d_vprintf='$d_vprintf'
12975 d_wait4='$d_wait4'
12976 d_waitpid='$d_waitpid'
12977 d_wcstombs='$d_wcstombs'
12978 d_wctomb='$d_wctomb'
12979 d_writev='$d_writev'
12980 d_xenix='$d_xenix'
12981 date='$date'
12982 db_hashtype='$db_hashtype'
12983 db_prefixtype='$db_prefixtype'
12984 defvoidused='$defvoidused'
12985 direntrytype='$direntrytype'
12986 dlext='$dlext'
12987 dlsrc='$dlsrc'
12988 doublesize='$doublesize'
12989 drand01='$drand01'
12990 dynamic_ext='$dynamic_ext'
12991 eagain='$eagain'
12992 ebcdic='$ebcdic'
12993 echo='$echo'
12994 egrep='$egrep'
12995 emacs='$emacs'
12996 eunicefix='$eunicefix'
12997 exe_ext='$exe_ext'
12998 expr='$expr'
12999 extensions='$extensions'
13000 find='$find'
13001 firstmakefile='$firstmakefile'
13002 flex='$flex'
13003 fpostype='$fpostype'
13004 freetype='$freetype'
13005 full_ar='$full_ar'
13006 full_csh='$full_csh'
13007 full_sed='$full_sed'
13008 gccversion='$gccversion'
13009 gidtype='$gidtype'
13010 glibpth='$glibpth'
13011 grep='$grep'
13012 groupcat='$groupcat'
13013 groupstype='$groupstype'
13014 gzip='$gzip'
13015 h_fcntl='$h_fcntl'
13016 h_sysfile='$h_sysfile'
13017 hint='$hint'
13018 hostcat='$hostcat'
13019 huge='$huge'
13020 i_arpainet='$i_arpainet'
13021 i_bsdioctl='$i_bsdioctl'
13022 i_db='$i_db'
13023 i_dbm='$i_dbm'
13024 i_dirent='$i_dirent'
13025 i_dld='$i_dld'
13026 i_dlfcn='$i_dlfcn'
13027 i_fcntl='$i_fcntl'
13028 i_float='$i_float'
13029 i_gdbm='$i_gdbm'
13030 i_grp='$i_grp'
13031 i_inttypes='$i_inttypes'
13032 i_limits='$i_limits'
13033 i_locale='$i_locale'
13034 i_machcthr='$i_machcthr'
13035 i_malloc='$i_malloc'
13036 i_math='$i_math'
13037 i_memory='$i_memory'
13038 i_mntent='$i_mntent'
13039 i_ndbm='$i_ndbm'
13040 i_netdb='$i_netdb'
13041 i_neterrno='$i_neterrno'
13042 i_niin='$i_niin'
13043 i_poll='$i_poll'
13044 i_pthread='$i_pthread'
13045 i_pwd='$i_pwd'
13046 i_rpcsvcdbm='$i_rpcsvcdbm'
13047 i_sfio='$i_sfio'
13048 i_sgtty='$i_sgtty'
13049 i_stdarg='$i_stdarg'
13050 i_stddef='$i_stddef'
13051 i_stdlib='$i_stdlib'
13052 i_string='$i_string'
13053 i_sysaccess='$i_sysaccess'
13054 i_sysdir='$i_sysdir'
13055 i_sysfile='$i_sysfile'
13056 i_sysfilio='$i_sysfilio'
13057 i_sysin='$i_sysin'
13058 i_sysioctl='$i_sysioctl'
13059 i_sysmman='$i_sysmman'
13060 i_sysmount='$i_sysmount'
13061 i_sysndir='$i_sysndir'
13062 i_sysparam='$i_sysparam'
13063 i_sysresrc='$i_sysresrc'
13064 i_syssecrt='$i_syssecrt'
13065 i_sysselct='$i_sysselct'
13066 i_syssockio='$i_syssockio'
13067 i_sysstat='$i_sysstat'
13068 i_sysstatvfs='$i_sysstatvfs'
13069 i_systime='$i_systime'
13070 i_systimek='$i_systimek'
13071 i_systimes='$i_systimes'
13072 i_systypes='$i_systypes'
13073 i_sysuio='$i_sysuio'
13074 i_sysun='$i_sysun'
13075 i_syswait='$i_syswait'
13076 i_termio='$i_termio'
13077 i_termios='$i_termios'
13078 i_time='$i_time'
13079 i_unistd='$i_unistd'
13080 i_utime='$i_utime'
13081 i_values='$i_values'
13082 i_varargs='$i_varargs'
13083 i_varhdr='$i_varhdr'
13084 i_vfork='$i_vfork'
13085 ignore_versioned_solibs='$ignore_versioned_solibs'
13086 incpath='$incpath'
13087 inews='$inews'
13088 installarchlib='$installarchlib'
13089 installbin='$installbin'
13090 installman1dir='$installman1dir'
13091 installman3dir='$installman3dir'
13092 installprivlib='$installprivlib'
13093 installscript='$installscript'
13094 installsitearch='$installsitearch'
13095 installsitelib='$installsitelib'
13096 installusrbinperl='$installusrbinperl'
13097 intsize='$intsize'
13098 known_extensions='$known_extensions'
13099 ksh='$ksh'
13100 large='$large'
13101 ld='$ld'
13102 lddlflags='$lddlflags'
13103 ldflags='$ldflags'
13104 less='$less'
13105 lib_ext='$lib_ext'
13106 libc='$libc'
13107 libperl='$libperl'
13108 libpth='$libpth'
13109 libs='$libs'
13110 libswanted='$libswanted'
13111 line='$line'
13112 lint='$lint'
13113 lkflags='$lkflags'
13114 ln='$ln'
13115 lns='$lns'
13116 locincpth='$locincpth'
13117 loclibpth='$loclibpth'
13118 longdblsize='$longdblsize'
13119 longlongsize='$longlongsize'
13120 longsize='$longsize'
13121 lp='$lp'
13122 lpr='$lpr'
13123 ls='$ls'
13124 lseeksize='$lseeksize'
13125 lseektype='$lseektype'
13126 mail='$mail'
13127 mailx='$mailx'
13128 make='$make'
13129 make_set_make='$make_set_make'
13130 mallocobj='$mallocobj'
13131 mallocsrc='$mallocsrc'
13132 malloctype='$malloctype'
13133 man1dir='$man1dir'
13134 man1direxp='$man1direxp'
13135 man1ext='$man1ext'
13136 man3dir='$man3dir'
13137 man3direxp='$man3direxp'
13138 man3ext='$man3ext'
13139 medium='$medium'
13140 mips='$mips'
13141 mips_type='$mips_type'
13142 mkdir='$mkdir'
13143 mmaptype='$mmaptype'
13144 models='$models'
13145 modetype='$modetype'
13146 more='$more'
13147 multiarch='$multiarch'
13148 mv='$mv'
13149 myarchname='$myarchname'
13150 mydomain='$mydomain'
13151 myhostname='$myhostname'
13152 myuname='$myuname'
13153 n='$n'
13154 netdb_hlen_type='$netdb_hlen_type'
13155 netdb_host_type='$netdb_host_type'
13156 netdb_name_type='$netdb_name_type'
13157 netdb_net_type='$netdb_net_type'
13158 nm='$nm'
13159 nm_opt='$nm_opt'
13160 nm_so_opt='$nm_so_opt'
13161 nonxs_ext='$nonxs_ext'
13162 nroff='$nroff'
13163 o_nonblock='$o_nonblock'
13164 obj_ext='$obj_ext'
13165 old_pthread_create_joinable='$old_pthread_create_joinable'
13166 optimize='$optimize'
13167 orderlib='$orderlib'
13168 osname='$osname'
13169 osvers='$osvers'
13170 package='$package'
13171 pager='$pager'
13172 passcat='$passcat'
13173 patchlevel='$patchlevel'
13174 path_sep='$path_sep'
13175 perl='$perl'
13176 perladmin='$perladmin'
13177 perlpath='$perlpath'
13178 pg='$pg'
13179 phostname='$phostname'
13180 pidtype='$pidtype'
13181 plibpth='$plibpth'
13182 pmake='$pmake'
13183 pr='$pr'
13184 prefix='$prefix'
13185 prefixexp='$prefixexp'
13186 privlib='$privlib'
13187 privlibexp='$privlibexp'
13188 prototype='$prototype'
13189 ptrsize='$ptrsize'
13190 randbits='$randbits'
13191 randfunc='$randfunc'
13192 randseedtype='$randseedtype'
13193 ranlib='$ranlib'
13194 rd_nodata='$rd_nodata'
13195 rm='$rm'
13196 rmail='$rmail'
13197 runnm='$runnm'
13198 sched_yield='$sched_yield'
13199 scriptdir='$scriptdir'
13200 scriptdirexp='$scriptdirexp'
13201 sed='$sed'
13202 seedfunc='$seedfunc'
13203 selectminbits='$selectminbits'
13204 selecttype='$selecttype'
13205 sendmail='$sendmail'
13206 sh='$sh'
13207 shar='$shar'
13208 sharpbang='$sharpbang'
13209 shmattype='$shmattype'
13210 shortsize='$shortsize'
13211 shrpenv='$shrpenv'
13212 shsharp='$shsharp'
13213 sig_count='$sig_count'
13214 sig_name='$sig_name'
13215 sig_name_init='$sig_name_init'
13216 sig_num='$sig_num'
13217 sig_num_init='$sig_num_init'
13218 signal_t='$signal_t'
13219 sitearch='$sitearch'
13220 sitearchexp='$sitearchexp'
13221 sitelib='$sitelib'
13222 sitelibexp='$sitelibexp'
13223 sizetype='$sizetype'
13224 sleep='$sleep'
13225 smail='$smail'
13226 small='$small'
13227 so='$so'
13228 sockethdr='$sockethdr'
13229 socketlib='$socketlib'
13230 sort='$sort'
13231 spackage='$spackage'
13232 spitshell='$spitshell'
13233 split='$split'
13234 src='$src'
13235 ssizetype='$ssizetype'
13236 startperl='$startperl'
13237 startsh='$startsh'
13238 static_ext='$static_ext'
13239 stdchar='$stdchar'
13240 stdio_base='$stdio_base'
13241 stdio_bufsiz='$stdio_bufsiz'
13242 stdio_cnt='$stdio_cnt'
13243 stdio_filbuf='$stdio_filbuf'
13244 stdio_ptr='$stdio_ptr'
13245 strings='$strings'
13246 submit='$submit'
13247 subversion='$subversion'
13248 sysman='$sysman'
13249 tail='$tail'
13250 tar='$tar'
13251 tbl='$tbl'
13252 tee='$tee'
13253 test='$test'
13254 timeincl='$timeincl'
13255 timetype='$timetype'
13256 touch='$touch'
13257 tr='$tr'
13258 trnl='$trnl'
13259 troff='$troff'
13260 uidtype='$uidtype'
13261 uname='$uname'
13262 uniq='$uniq'
13263 use64bits='$use64bits'
13264 usedl='$usedl'
13265 usemultiplicity='$usemultiplicity'
13266 usemymalloc='$usemymalloc'
13267 usenm='$usenm'
13268 useopcode='$useopcode'
13269 useperlio='$useperlio'
13270 useposix='$useposix'
13271 usesfio='$usesfio'
13272 useshrplib='$useshrplib'
13273 usethreads='$usethreads'
13274 usevfork='$usevfork'
13275 usrinc='$usrinc'
13276 uuname='$uuname'
13277 version='$version'
13278 vi='$vi'
13279 voidflags='$voidflags'
13280 xlibpth='$xlibpth'
13281 zcat='$zcat'
13282 zip='$zip'
13283 EOT
13284
13285 : Add in command line options if available
13286 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13287
13288 : add special variables
13289 $test -f $src/patchlevel.h && \
13290 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13291 echo "CONFIGDOTSH=true" >>config.sh
13292
13293 : propagate old symbols
13294 if $test -f UU/config.sh; then
13295         <UU/config.sh sort | uniq >UU/oldconfig.sh
13296         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13297         sort | uniq -u >UU/oldsyms
13298         set X `cat UU/oldsyms`
13299         shift
13300         case $# in
13301         0) ;;
13302         *)
13303                 cat <<EOM
13304 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13305 EOM
13306                 echo "# Variables propagated from previous config.sh file." >>config.sh
13307                 for sym in `cat UU/oldsyms`; do
13308                         echo "    Propagating $hint variable "'$'"$sym..."
13309                         eval 'tmp="$'"${sym}"'"'
13310                         echo "$tmp" | \
13311                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13312                 done
13313                 ;;
13314         esac
13315 fi
13316
13317 : Finish up by extracting the .SH files
13318 case "$alldone" in
13319 exit)
13320         $rm -rf UU
13321         echo "Done."
13322         exit 0
13323         ;;
13324 cont)
13325         ;;
13326 '')
13327         dflt=''
13328         nostick=true
13329         $cat <<EOM
13330
13331 If you'd like to make any changes to the config.sh file before I begin
13332 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13333
13334 EOM
13335         rp="Press return or use a shell escape to edit config.sh:"
13336         . UU/myread
13337         nostick=''
13338         case "$ans" in
13339         '') ;;
13340         *) : in case they cannot read
13341                 sh 1>&4 -c "$ans";;
13342         esac
13343         ;;
13344 esac
13345
13346 : if this fails, just run all the .SH files by hand
13347 . ./config.sh
13348
13349 echo " "
13350 exec 1>&4
13351 . ./UU/extract
13352
13353 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13354         dflt=y
13355         case "$silent" in
13356         true) ;;
13357         *)
13358                 $cat <<EOM
13359
13360 Now you need to generate make dependencies by running "$make depend".
13361 You might prefer to run it in background: "$make depend > makedepend.out &"
13362 It can take a while, so you might not want to run it right now.
13363
13364 EOM
13365                 ;;
13366         esac
13367         rp="Run $make depend now?"
13368         . UU/myread
13369         case "$ans" in
13370         y*)
13371                 $make depend && echo "Now you must run a $make."
13372                 ;;
13373         *)
13374                 echo "You must run '$make depend' then '$make'."
13375                 ;;
13376         esac
13377 elif test -f [Mm]akefile; then
13378         echo " "
13379         echo "Now you must run a $make."
13380 else
13381         echo "Done."
13382 fi
13383
13384 if $test -f Policy.sh; then
13385     $cat <<EOM
13386
13387 If you compile $package on a different machine or from a different object
13388 directory, copy the Policy.sh file from this object directory to the
13389 new one before you run Configure -- this will help you with most of
13390 the policy defaults.
13391
13392 EOM
13393 fi
13394 if $test -f config.msg; then
13395     echo "Hmm.  I also noted the following information while running:"
13396     echo " "
13397     $cat config.msg >&4
13398     $rm -f config.msg
13399 fi
13400 $rm -f kit*isdone ark*isdone
13401 $rm -rf UU
13402
13403 : End of Configure
13404