This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
allow final period in a file (not followed by a newline) to
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Sun Nov 22 19:12:18 EET 1998 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by jhi@iki.fi)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 case "$inksh/$needksh" in
112 /[a-z]*)
113                 ENV=''
114                 changesh=true
115                 reason="$needksh"
116         ;;
117 esac
118 case "$inksh/$avoidksh" in
119 true/[a-z]*)
120         changesh=true
121         reason="$avoidksh"
122         ;;
123 esac
124 case "$inksh/$needksh-$avoidksh-" in
125 true/--)
126                 cat <<EOM
127 (I see you are using the Korn shell.  Some ksh's blow up on $me,
128 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
129 EOM
130         ;;
131 esac
132 case "$changesh" in
133 true)
134         echo "(Feeding myself to $newsh $reason.)"
135         case "$0" in
136         Configure|*/Configure) exec $newsh $0 "$@";;
137         *) exec $newsh Configure "$@";;
138         esac
139         ;;
140 esac
141
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
144 case "$CDPATH" in
145 '')     ;;
146 *)      case "$SHELL" in
147         *bash*) CDPATH='.' ;;
148         *)              CDPATH='' ;;
149         esac
150         ;;
151 esac
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
154 cd UU && rm -f ./*
155
156 dynamic_ext=''
157 extensions=''
158 known_extensions=''
159 nonxs_ext=''
160 static_ext=''
161 useopcode=''
162 useposix=''
163 d_bsd=''
164 d_eunice=''
165 d_xenix=''
166 eunicefix=''
167 Mcc=''
168 ar=''
169 awk=''
170 bash=''
171 bison=''
172 byacc=''
173 cat=''
174 chgrp=''
175 chmod=''
176 chown=''
177 comm=''
178 compress=''
179 cp=''
180 cpio=''
181 cpp=''
182 csh=''
183 date=''
184 echo=''
185 egrep=''
186 emacs=''
187 expr=''
188 find=''
189 flex=''
190 grep=''
191 gzip=''
192 inews=''
193 ksh=''
194 less=''
195 line=''
196 lint=''
197 ln=''
198 lp=''
199 lpr=''
200 ls=''
201 mail=''
202 mailx=''
203 make=''
204 mkdir=''
205 more=''
206 mv=''
207 nm=''
208 nroff=''
209 perl=''
210 pg=''
211 pmake=''
212 pr=''
213 rm=''
214 rmail=''
215 sed=''
216 sendmail=''
217 shar=''
218 sleep=''
219 smail=''
220 sort=''
221 submit=''
222 tail=''
223 tar=''
224 tbl=''
225 tee=''
226 test=''
227 touch=''
228 tr=''
229 troff=''
230 uname=''
231 uniq=''
232 uuname=''
233 vi=''
234 zcat=''
235 zip=''
236 full_sed=''
237 libswanted=''
238 hint=''
239 myuname=''
240 osname=''
241 osvers=''
242 Author=''
243 Date=''
244 Header=''
245 Id=''
246 Locker=''
247 Log=''
248 RCSfile=''
249 Revision=''
250 Source=''
251 State=''
252 _a=''
253 _exe=''
254 _o=''
255 archobjs=''
256 exe_ext=''
257 firstmakefile=''
258 lib_ext=''
259 obj_ext=''
260 path_sep=''
261 afs=''
262 alignbytes=''
263 ansi2knr=''
264 archlib=''
265 archlibexp=''
266 d_archlib=''
267 installarchlib=''
268 archname=''
269 myarchname=''
270 baserev=''
271 bin=''
272 binexp=''
273 installbin=''
274 byteorder=''
275 cc=''
276 gccversion=''
277 ccflags=''
278 cppflags=''
279 ldflags=''
280 lkflags=''
281 locincpth=''
282 optimize=''
283 cf_email=''
284 cf_by=''
285 cf_time=''
286 contains=''
287 cpp_stuff=''
288 cpplast=''
289 cppminus=''
290 cpprun=''
291 cppstdin=''
292 d_access=''
293 d_accessx=''
294 d_alarm=''
295 d_attribut=''
296 d_bcmp=''
297 d_bcopy=''
298 d_bzero=''
299 d_casti32=''
300 castflags=''
301 d_castneg=''
302 d_chown=''
303 d_chroot=''
304 d_chsize=''
305 d_closedir=''
306 d_void_closedir=''
307 d_const=''
308 cryptlib=''
309 d_crypt=''
310 d_csh=''
311 full_csh=''
312 d_cuserid=''
313 d_dbl_dig=''
314 d_difftime=''
315 d_dlerror=''
316 d_dlopen=''
317 d_dlsymun=''
318 d_dosuid=''
319 d_suidsafe=''
320 d_drand48proto=''
321 d_dup2=''
322 d_eaccess=''
323 d_endgrent=''
324 d_endhent=''
325 d_endnent=''
326 d_endpent=''
327 d_endpwent=''
328 d_endsent=''
329 d_fchmod=''
330 d_fchown=''
331 d_fcntl=''
332 d_fd_macros=''
333 d_fd_set=''
334 d_fds_bits=''
335 d_fgetpos=''
336 d_flexfnam=''
337 d_flock=''
338 d_fork=''
339 d_fseeko=''
340 d_fsetpos=''
341 d_ftello=''
342 d_ftime=''
343 d_gettimeod=''
344 d_Gconvert=''
345 d_getgrent=''
346 d_getgrps=''
347 d_gethbyaddr=''
348 d_gethbyname=''
349 d_gethent=''
350 aphostname=''
351 d_gethname=''
352 d_phostname=''
353 d_uname=''
354 d_gethostprotos=''
355 d_getlogin=''
356 d_getnbyaddr=''
357 d_getnbyname=''
358 d_getnent=''
359 d_getnetprotos=''
360 d_getpent=''
361 d_getpgid=''
362 d_getpgrp2=''
363 d_bsdgetpgrp=''
364 d_getpgrp=''
365 d_getppid=''
366 d_getprior=''
367 d_getpbyname=''
368 d_getpbynumber=''
369 d_getprotoprotos=''
370 d_getpwent=''
371 d_getsent=''
372 d_getservprotos=''
373 d_getsbyname=''
374 d_getsbyport=''
375 d_gnulibc=''
376 d_htonl=''
377 d_inetaton=''
378 d_isascii=''
379 d_killpg=''
380 d_lchown=''
381 d_link=''
382 d_locconv=''
383 d_lockf=''
384 d_longdbl=''
385 longdblsize=''
386 d_longlong=''
387 longlongsize=''
388 d_lstat=''
389 d_mblen=''
390 d_mbstowcs=''
391 d_mbtowc=''
392 d_memcmp=''
393 d_memcpy=''
394 d_memmove=''
395 d_memset=''
396 d_mkdir=''
397 d_mkfifo=''
398 d_mktime=''
399 d_msg=''
400 d_msgctl=''
401 d_msgget=''
402 d_msgrcv=''
403 d_msgsnd=''
404 d_nice=''
405 d_open3=''
406 d_fpathconf=''
407 d_pathconf=''
408 d_pause=''
409 d_pipe=''
410 d_poll=''
411 d_portable=''
412 d_pthread_create_joinable=''
413 pthread_create_joinable=''
414 d_pthread_yield=''
415 d_sched_yield=''
416 sched_yield=''
417 d_readdir=''
418 d_rewinddir=''
419 d_seekdir=''
420 d_telldir=''
421 d_readlink=''
422 d_readv=''
423 d_rename=''
424 d_rmdir=''
425 d_safebcpy=''
426 d_safemcpy=''
427 d_sanemcmp=''
428 d_select=''
429 d_sem=''
430 d_semctl=''
431 d_semget=''
432 d_semop=''
433 d_setegid=''
434 d_seteuid=''
435 d_setgrent=''
436 d_setgrps=''
437 d_sethent=''
438 d_setlinebuf=''
439 d_setlocale=''
440 d_setnent=''
441 d_setpent=''
442 d_setpgid=''
443 d_setpgrp2=''
444 d_bsdsetpgrp=''
445 d_setpgrp=''
446 d_setprior=''
447 d_setpwent=''
448 d_setregid=''
449 d_setresgid=''
450 d_setresuid=''
451 d_setreuid=''
452 d_setrgid=''
453 d_setruid=''
454 d_setsent=''
455 d_setsid=''
456 d_setvbuf=''
457 d_sfio=''
458 usesfio=''
459 d_shm=''
460 d_shmat=''
461 d_shmatprototype=''
462 shmattype=''
463 d_shmctl=''
464 d_shmdt=''
465 d_shmget=''
466 d_sigaction=''
467 d_sigsetjmp=''
468 d_cmsghdr_s=''
469 d_msg_ctrunc=''
470 d_msg_dontroute=''
471 d_msg_oob=''
472 d_msg_peek=''
473 d_msg_proxy=''
474 d_msghdr_s=''
475 d_oldsock=''
476 d_recvmsg=''
477 d_scm_rights=''
478 d_sendmsg=''
479 d_socket=''
480 d_sockpair=''
481 sockethdr=''
482 socketlib=''
483 d_statblks=''
484 d_stdio_cnt_lval=''
485 d_stdio_ptr_lval=''
486 d_stdiobase=''
487 d_stdstdio=''
488 stdio_base=''
489 stdio_bufsiz=''
490 stdio_cnt=''
491 stdio_filbuf=''
492 stdio_ptr=''
493 d_index=''
494 d_strchr=''
495 d_strcoll=''
496 d_strctcpy=''
497 d_strerrm=''
498 d_strerror=''
499 d_sysernlst=''
500 d_syserrlst=''
501 d_strtod=''
502 d_strtol=''
503 d_strtoul=''
504 d_strxfrm=''
505 d_symlink=''
506 d_syscall=''
507 d_sysconf=''
508 d_system=''
509 d_tcgetpgrp=''
510 d_tcsetpgrp=''
511 d_time=''
512 timetype=''
513 clocktype=''
514 d_times=''
515 d_truncate=''
516 d_tzname=''
517 d_umask=''
518 d_semctl_semid_ds=''
519 d_semctl_semun=''
520 d_union_semun=''
521 d_vfork=''
522 usevfork=''
523 d_voidsig=''
524 signal_t=''
525 d_volatile=''
526 d_charvspr=''
527 d_vprintf=''
528 d_wait4=''
529 d_waitpid=''
530 d_wcstombs=''
531 d_wctomb=''
532 d_writev=''
533 d_dbmclose64=''
534 d_dbminit64=''
535 d_delete64=''
536 d_fetch64=''
537 d_firstkey64=''
538 d_nextkey64=''
539 d_store64=''
540 dlext=''
541 cccdlflags=''
542 ccdlflags=''
543 dlsrc=''
544 ld=''
545 lddlflags=''
546 usedl=''
547 doublesize=''
548 ebcdic=''
549 fpostype=''
550 gidtype=''
551 groupstype=''
552 h_fcntl=''
553 h_sysfile=''
554 i_arpainet=''
555 db_hashtype=''
556 db_prefixtype=''
557 i_db=''
558 i_dbm=''
559 i_rpcsvcdbm=''
560 d_dirnamlen=''
561 direntrytype=''
562 i_dirent=''
563 i_dld=''
564 i_dlfcn=''
565 i_fcntl=''
566 i_float=''
567 i_gdbm=''
568 d_grpasswd=''
569 i_grp=''
570 d_int64t=''
571 i_inttypes=''
572 i_limits=''
573 i_locale=''
574 i_machcthr=''
575 i_malloc=''
576 i_math=''
577 i_memory=''
578 i_ndbm=''
579 i_netdb=''
580 i_neterrno=''
581 i_niin=''
582 i_sysin=''
583 d_pwage=''
584 d_pwchange=''
585 d_pwclass=''
586 d_pwcomment=''
587 d_pwexpire=''
588 d_pwgecos=''
589 d_pwpasswd=''
590 d_pwquota=''
591 i_pwd=''
592 i_sfio=''
593 i_stddef=''
594 i_stdlib=''
595 i_string=''
596 strings=''
597 i_sysaccess=''
598 i_sysdir=''
599 i_sysfile=''
600 d_voidtty=''
601 i_bsdioctl=''
602 i_sysfilio=''
603 i_sysioctl=''
604 i_syssockio=''
605 i_sysndir=''
606 i_sysparam=''
607 i_sysresrc=''
608 i_syssecrt=''
609 i_sysselct=''
610 i_sysstat=''
611 i_systimes=''
612 i_systypes=''
613 d_iovec_s=''
614 i_sysuio=''
615 i_sysun=''
616 i_syswait=''
617 i_sgtty=''
618 i_termio=''
619 i_termios=''
620 i_systime=''
621 i_systimek=''
622 i_time=''
623 timeincl=''
624 i_unistd=''
625 i_utime=''
626 i_values=''
627 i_stdarg=''
628 i_varargs=''
629 i_varhdr=''
630 i_vfork=''
631 intsize=''
632 longsize=''
633 shortsize=''
634 d_dirent64_s=''
635 d_flock64_s=''
636 d_fstat64=''
637 d_ftruncate64=''
638 d_ino64t=''
639 d_lockf64=''
640 d_lseek64=''
641 d_lstat64=''
642 d_off64t=''
643 d_open64=''
644 d_opendir64=''
645 d_readdir64=''
646 d_seekdir64=''
647 d_stat64=''
648 d_telldir64=''
649 d_truncate64=''
650 libc=''
651 libperl=''
652 shrpenv=''
653 useshrplib=''
654 glibpth=''
655 libpth=''
656 loclibpth=''
657 plibpth=''
658 xlibpth=''
659 ignore_versioned_solibs=''
660 libs=''
661 lns=''
662 lseeksize=''
663 lseektype=''
664 make_set_make=''
665 d_mymalloc=''
666 freetype=''
667 mallocobj=''
668 mallocsrc=''
669 malloctype=''
670 usemymalloc=''
671 installman1dir=''
672 man1dir=''
673 man1direxp=''
674 man1ext=''
675 installman3dir=''
676 man3dir=''
677 man3direxp=''
678 man3ext=''
679 huge=''
680 large=''
681 medium=''
682 models=''
683 small=''
684 split=''
685 modetype=''
686 mydomain=''
687 myhostname=''
688 phostname=''
689 c=''
690 n=''
691 d_eofnblk=''
692 eagain=''
693 o_nonblock=''
694 rd_nodata=''
695 netdb_hlen_type=''
696 netdb_host_type=''
697 netdb_name_type=''
698 netdb_net_type=''
699 groupcat=''
700 hostcat=''
701 passcat=''
702 orderlib=''
703 ranlib=''
704 package=''
705 spackage=''
706 pager=''
707 apiversion=''
708 patchlevel=''
709 subversion=''
710 version=''
711 perladmin=''
712 perlpath=''
713 pidtype=''
714 prefix=''
715 prefixexp=''
716 installprivlib=''
717 privlib=''
718 privlibexp=''
719 prototype=''
720 ptrsize=''
721 drand01=''
722 randbits=''
723 randfunc=''
724 randseedtype=''
725 seedfunc=''
726 installscript=''
727 scriptdir=''
728 scriptdirexp=''
729 selectminbits=''
730 selecttype=''
731 sh=''
732 sig_name=''
733 sig_name_init=''
734 sig_num=''
735 sig_num_init=''
736 installsitearch=''
737 sitearch=''
738 sitearchexp=''
739 installsitelib=''
740 sitelib=''
741 sitelibexp=''
742 sizetype=''
743 so=''
744 sharpbang=''
745 shsharp=''
746 spitshell=''
747 src=''
748 ssizetype=''
749 startperl=''
750 startsh=''
751 stdchar=''
752 d_fgetpos64=''
753 d_fopen64=''
754 d_freopen64=''
755 d_fseek64=''
756 d_fseeko64=''
757 d_fsetpos64=''
758 d_ftell64=''
759 d_ftello64=''
760 d_tmpfile64=''
761 sysman=''
762 trnl=''
763 uidtype=''
764 archname64=''
765 use64bits=''
766 usemultiplicity=''
767 nm_opt=''
768 nm_so_opt=''
769 runnm=''
770 usenm=''
771 useperlio=''
772 d_oldpthreads=''
773 usethreads=''
774 incpath=''
775 mips=''
776 mips_type=''
777 usrinc=''
778 defvoidused=''
779 voidflags=''
780 CONFIG=''
781
782 define='define'
783 undef='undef'
784 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
785 rmlist=''
786
787 : We must find out about Eunice early
788 eunicefix=':'
789 if test -f /etc/unixtovms; then
790         eunicefix=/etc/unixtovms
791 fi
792 if test -f /etc/unixtovms.exe; then
793         eunicefix=/etc/unixtovms.exe
794 fi
795
796 i_whoami=''
797 : change the next line if compiling for Xenix/286 on Xenix/386
798 xlibpth='/usr/lib/386 /lib/386'
799
800 : Possible local library directories to search.
801 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
802 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
803
804 : general looking path for locating libraries
805 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
806 glibpth="$glibpth /lib /usr/lib $xlibpth"
807 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
808 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
809
810 : Private path used by Configure to find libraries.  Its value
811 : is prepended to libpth. This variable takes care of special
812 : machines, like the mips.  Usually, it should be empty.
813 plibpth=''
814
815 : Possible local include directories to search.
816 : Set locincpth to "" in a hint file to defeat local include searches.
817 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
818 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
819 :
820 : no include file wanted by default
821 inclwanted=''
822
823 : list of known cpp symbols, sorted alphabetically
824 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
825 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
826 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
827 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
828 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
829 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
830 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
831 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
832 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
833 al="$al VMS Xenix286"
834 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
835 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
836 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
837 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
838 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
839 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
840 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
841 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
842 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
843 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
844 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
845 al="$al __SVR4_2__ __UMAXV__"
846 al="$al ____386BSD____ __alpha __alpha__ __amiga"
847 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
848 al="$al __host_mips__"
849 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
850 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
851 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
852 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
853 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
854 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
855 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
856 al="$al __mc88100 __mc88100__ __mips __mips__"
857 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
858 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
859 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
860 al="$al _host_mips _mips _unix"
861 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
862 al="$al apollo ardent att386 att3b"
863 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
864 al="$al cadmus clipper concurrent convex cray ctix"
865 al="$al dmert encore gcos gcx gimpel gould"
866 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
867 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
868 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
869 al="$al i186 i286 i386 i486 i8086"
870 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
871 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
872 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
873 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
874 al="$al mc88000 mc88100 merlin mert mips mvs n16"
875 al="$al ncl_el ncl_mr"
876 al="$al news1500 news1700 news1800 news1900 news3700"
877 al="$al news700 news800 news900 ns16000 ns32000"
878 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
879 al="$al parisc pc532 pdp11 plexus posix pyr"
880 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
881 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
882 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
883 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
884 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
885 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
886 al="$al xenix z8000"
887
888 : Trailing extension.  Override this in a hint file, if needed.
889 _exe=''
890 : Extra object files, if any, needed on this platform.
891 archobjs=''
892 groupstype=''
893 : default library list
894 libswanted=''
895 : some systems want to use only the non-versioned libso:s
896 ignore_versioned_solibs=''
897 : full support for void wanted by default
898 defvoidused=15
899
900 : set useposix=false in your hint file to disable the POSIX extension.
901 useposix=true
902 : set useopcode=false in your hint file to disable the Opcode extension.
903 useopcode=true
904 : set usemultiplicity on the Configure command line to enable multiplicity.
905 : set usethreads on the Configure command line to enable threads.
906 : List of libraries we want.
907 : If anyone needs -lnet, put it in a hint file.
908 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
909 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
910 libswanted="$libswanted ucb bsd BSD PW x"
911 : We probably want to search /usr/shlib before most other libraries.
912 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
913 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
914 glibpth="/usr/shlib $glibpth"
915 : Do not use vfork unless overridden by a hint file.
916 usevfork=false
917
918 : Find the basic shell for Bourne shell scripts
919 case "$sh" in
920 '')
921         case "$SYSTYPE" in
922         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
923         *) xxx='/bin/sh';;
924         esac
925         if test -f "$xxx"; then
926                 sh="$xxx"
927         else
928                 : Build up a list and do a single loop so we can 'break' out.
929                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
930                 for xxx in sh bash ksh pdksh ash; do
931                         for p in $pth; do
932                                 try="$try ${p}/${xxx}"
933                         done
934                 done
935                 for xxx in $try; do
936                         if test -f "$xxx"; then
937                                 sh="$xxx";
938                                 break
939                         elif test -f "$xxx.exe"; then
940                                 sh="$xxx";
941                                 break
942                         fi
943                 done
944         fi
945         ;;
946 esac
947
948 case "$sh" in
949 '')     cat <<EOM >&2
950 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
951
952 Usually it's in /bin/sh.  How did you even get this far?
953 Please contact me (Jarkko Hietaniemi) at jhi@iki.fi and 
954 we'll try to straighten this all out.
955 EOM
956         exit 1
957         ;;
958 esac
959
960 : see if sh knows # comments
961 if `$sh -c '#' >/dev/null 2>&1`; then
962         shsharp=true
963         spitshell=cat
964         xcat=/bin/cat
965         test -f $xcat || xcat=/usr/bin/cat
966         echo "#!$xcat" >try
967         $eunicefix try
968         chmod +x try
969         ./try > today
970         if test -s today; then
971                 sharpbang='#!'
972         else
973                 echo "#! $xcat" > try
974                 $eunicefix try
975                 chmod +x try
976                 ./try > today
977                 if test -s today; then
978                         sharpbang='#! '
979                 else
980                         sharpbang=': use '
981                 fi
982         fi
983 else
984         echo " "
985         echo "Your $sh doesn't grok # comments--I will strip them later on."
986         shsharp=false
987         cd ..
988         echo "exec grep -v '^[  ]*#'" >spitshell
989         chmod +x spitshell
990         $eunicefix spitshell
991         spitshell=`pwd`/spitshell
992         cd UU
993         echo "I presume that if # doesn't work, #! won't work either!"
994         sharpbang=': use '
995 fi
996 rm -f try today
997
998 : figure out how to guarantee sh startup
999 case "$startsh" in
1000 '') startsh=${sharpbang}${sh} ;;
1001 *)
1002 esac
1003 cat >try <<EOSS
1004 $startsh
1005 set abc
1006 test "$?abc" != 1
1007 EOSS
1008
1009 chmod +x try
1010 $eunicefix try
1011 if ./try; then
1012         : echo "Yup, it does."
1013 else
1014         echo "Hmm... '$startsh' does not guarantee sh startup..."
1015         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1016 fi
1017 rm -f try
1018
1019
1020 : Save command line options in file UU/cmdline.opt for later use in
1021 : generating config.sh.
1022 cat > cmdline.opt <<EOSH
1023 # Configure command line arguments.
1024 config_arg0='$0'
1025 config_args='$*'
1026 config_argc=$#
1027 EOSH
1028 argn=1
1029 for arg in "$@"; do
1030         cat >>cmdline.opt <<EOSH
1031 config_arg$argn='$arg'
1032 EOSH
1033         argn=`expr $argn + 1`
1034 done
1035
1036 : produce awk script to parse command line options
1037 cat >options.awk <<'EOF'
1038 BEGIN {
1039         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1040
1041         len = length(optstr);
1042         for (i = 1; i <= len; i++) {
1043                 c = substr(optstr, i, 1);
1044                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1045                 if (a == ":") {
1046                         arg[c] = 1;
1047                         i++;
1048                 }
1049                 opt[c] = 1;
1050         }
1051 }
1052 {
1053         expect = 0;
1054         str = $0;
1055         if (substr(str, 1, 1) != "-") {
1056                 printf("'%s'\n", str);
1057                 next;
1058         }
1059         len = length($0);
1060         for (i = 2; i <= len; i++) {
1061                 c = substr(str, i, 1);
1062                 if (!opt[c]) {
1063                         printf("-%s\n", substr(str, i));
1064                         next;
1065                 }
1066                 printf("-%s\n", c);
1067                 if (arg[c]) {
1068                         if (i < len)
1069                                 printf("'%s'\n", substr(str, i + 1));
1070                         else
1071                                 expect = 1;
1072                         next;
1073                 }
1074         }
1075 }
1076 END {
1077         if (expect)
1078                 print "?";
1079 }
1080 EOF
1081
1082 : process the command line options
1083 set X `for arg in "$@"; do echo "X$arg"; done |
1084         sed -e s/X// | awk -f options.awk`
1085 eval "set $*"
1086 shift
1087 rm -f options.awk
1088
1089 : set up default values
1090 fastread=''
1091 reuseval=false
1092 config_sh=''
1093 alldone=''
1094 error=''
1095 silent=''
1096 extractsh=''
1097 override=''
1098 knowitall=''
1099 rm -f optdef.sh
1100 cat >optdef.sh <<EOS
1101 $startsh
1102 EOS
1103
1104
1105 : option parsing
1106 while test $# -gt 0; do
1107         case "$1" in
1108         -d) shift; fastread=yes;;
1109         -e) shift; alldone=cont;;
1110         -f)
1111                 shift
1112                 cd ..
1113                 if test -r "$1"; then
1114                         config_sh="$1"
1115                 else
1116                         echo "$me: cannot read config file $1." >&2
1117                         error=true
1118                 fi
1119                 cd UU
1120                 shift;;
1121         -h) shift; error=true;;
1122         -r) shift; reuseval=true;;
1123         -s) shift; silent=true; realsilent=true;;
1124         -E) shift; alldone=exit;;
1125         -K) shift; knowitall=true;;
1126         -O) shift; override=true;;
1127         -S) shift; silent=true; extractsh=true;;
1128         -D)
1129                 shift
1130                 case "$1" in
1131                 *=)
1132                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1133                         echo "$me: ignoring -D $1" >&2
1134                         ;;
1135                 *=*) echo "$1" | \
1136                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1137                 *) echo "$1='define'" >> optdef.sh;;
1138                 esac
1139                 shift
1140                 ;;
1141         -U)
1142                 shift
1143                 case "$1" in
1144                 *=) echo "$1" >> optdef.sh;;
1145                 *=*)
1146                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1147                         echo "$me: ignoring -U $1" >&2
1148                         ;;
1149                 *) echo "$1='undef'" >> optdef.sh;;
1150                 esac
1151                 shift
1152                 ;;
1153         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1154                 exit 0;;
1155         --) break;;
1156         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1157         *) break;;
1158         esac
1159 done
1160
1161 case "$error" in
1162 true)
1163         cat >&2 <<EOM
1164 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1165                  [-U symbol] [-U symbol=]
1166   -d : use defaults for all answers.
1167   -e : go on without questioning past the production of config.sh.
1168   -f : specify an alternate default configuration file.
1169   -h : print this help message and exit (with an error status).
1170   -r : reuse C symbols value if possible (skips costly nm extraction).
1171   -s : silent mode, only echoes questions and essential information.
1172   -D : define symbol to have some value:
1173          -D symbol         symbol gets the value 'define'
1174          -D symbol=value   symbol gets the value 'value'
1175   -E : stop at the end of questions, after having produced config.sh.
1176   -K : do not use unless you know what you are doing.
1177   -O : let -D and -U override definitions from loaded configuration file.
1178   -S : perform variable substitutions on all .SH files (can mix with -f)
1179   -U : undefine symbol:
1180          -U symbol    symbol gets the value 'undef'
1181          -U symbol=   symbol gets completely empty
1182   -V : print version number and exit (with a zero status).
1183 EOM
1184         exit 1
1185         ;;
1186 esac
1187
1188 : Sanity checks
1189 case "$fastread$alldone" in
1190 yescont|yesexit) ;;
1191 *)
1192         if test ! -t 0; then
1193                 echo "Say 'sh Configure', not 'sh <Configure'"
1194                 exit 1
1195         fi
1196         ;;
1197 esac
1198
1199 exec 4>&1
1200 case "$silent" in
1201 true) exec 1>/dev/null;;
1202 esac
1203
1204 : run the defines and the undefines, if any, but leave the file out there...
1205 touch optdef.sh
1206 . ./optdef.sh
1207
1208 : set package name
1209 package=perl5
1210 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1211 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1212 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1213 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1214 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1215 esac
1216
1217 : Some greps do not return status, grrr.
1218 echo "grimblepritz" >grimble
1219 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1220         contains=contains
1221 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1222         contains=grep
1223 else
1224         contains=contains
1225 fi
1226 rm -f grimble
1227 : the following should work in any shell
1228 case "$contains" in
1229 contains*)
1230         echo " "
1231         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1232         cat >contains <<'EOSS'
1233 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1234 EOSS
1235 chmod +x contains
1236 esac
1237
1238 : Find the path to the source tree
1239 case "$src" in
1240 '') case "$0" in
1241     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1242     *)   src='.';;
1243     esac;;
1244 esac
1245 case "$src" in
1246 '')     src=/
1247         rsrc=/
1248         ;;
1249 /*) rsrc="$src";;
1250 *) rsrc="../$src";;
1251 esac
1252 if test -f $rsrc/Configure && \
1253         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1254 then
1255    : found it, so we are ok.
1256 else
1257         rsrc=''
1258         for src in . .. ../.. ../../.. ../../../..; do
1259                 if test -f ../$src/Configure && \
1260                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1261                 then
1262                         rsrc=../$src
1263                         break
1264                 fi
1265         done
1266 fi
1267 case "$rsrc" in
1268 '')
1269         cat <<EOM >&4
1270
1271 Sorry, I can't seem to locate the source dir for $package.  Please start
1272 Configure with an explicit path -- i.e. /some/path/Configure.
1273
1274 EOM
1275         exit 1
1276         ;;
1277 ../.)   rsrc='..';;
1278 *)
1279         echo " "
1280         echo "Sources for $package found in \"$src\"." >&4
1281         ;;
1282 esac
1283
1284 : script used to extract .SH files with variable substitutions
1285 cat >extract <<'EOS'
1286 CONFIG=true
1287 echo "Doing variable substitutions on .SH files..."
1288 if test -f $src/MANIFEST; then
1289         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1290 else
1291         echo "(Looking for .SH files under the source directory.)"
1292         set x `(cd $src; find . -name "*.SH" -print)`
1293 fi
1294 shift
1295 case $# in
1296 0) set x `(cd $src; echo *.SH)`; shift;;
1297 esac
1298 if test ! -f $src/$1; then
1299         shift
1300 fi
1301 mkdir_p='
1302 name=$1;
1303 create="";
1304 while test $name; do
1305         if test ! -d "$name"; then
1306                 create="$name $create";
1307                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1308                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1309         else
1310                 name="";
1311         fi;
1312 done;
1313 for file in $create; do
1314         mkdir $file;
1315 done
1316 '
1317 for file in $*; do
1318         case "$src" in
1319         ".")
1320                 case "$file" in
1321                 */*)
1322                         dir=`expr X$file : 'X\(.*\)/'`
1323                         file=`expr X$file : 'X.*/\(.*\)'`
1324                         (cd $dir && . ./$file)
1325                         ;;
1326                 *)
1327                         . ./$file
1328                         ;;
1329                 esac
1330                 ;;
1331         *)
1332                 case "$file" in
1333                 */*)
1334                         dir=`expr X$file : 'X\(.*\)/'`
1335                         file=`expr X$file : 'X.*/\(.*\)'`
1336                         (set x $dir; shift; eval $mkdir_p)
1337                         sh <$src/$dir/$file
1338                         ;;
1339                 *)
1340                         sh <$src/$file
1341                         ;;
1342                 esac
1343                 ;;
1344         esac
1345 done
1346 if test -f $src/config_h.SH; then
1347         if test ! -f config.h; then
1348         : oops, they left it out of MANIFEST, probably, so do it anyway.
1349         . $src/config_h.SH
1350         fi
1351 fi
1352 EOS
1353
1354 : extract files and exit if asked to do so
1355 case "$extractsh" in
1356 true)
1357         case "$realsilent" in
1358         true) ;;
1359         *) exec 1>&4;;
1360         esac
1361         case "$config_sh" in
1362         '') config_sh='config.sh';;
1363         esac
1364         echo " "
1365         echo "Fetching answers from $config_sh..."
1366         cd ..
1367         . $config_sh
1368         test "$override" && . ./optdef.sh
1369         echo " "
1370         . UU/extract
1371         rm -rf UU
1372         echo "Done."
1373         exit 0
1374         ;;
1375 esac
1376
1377 : Eunice requires " " instead of "", can you believe it
1378 echo " "
1379 : Here we go...
1380 echo "Beginning of configuration questions for $package."
1381
1382 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1383
1384 : first determine how to suppress newline on echo command
1385 echo " "
1386 echo "Checking echo to see how to suppress newlines..."
1387 (echo "hi there\c" ; echo " ") >.echotmp
1388 if $contains c .echotmp >/dev/null 2>&1 ; then
1389         echo "...using -n."
1390         n='-n'
1391         c=''
1392 else
1393         cat <<'EOM'
1394 ...using \c
1395 EOM
1396         n=''
1397         c='\c'
1398 fi
1399 echo $n "The star should be here-->$c"
1400 echo '*'
1401 rm -f .echotmp
1402
1403 : Now test for existence of everything in MANIFEST
1404 echo " "
1405 if test -f $rsrc/MANIFEST; then
1406         echo "First let's make sure your kit is complete.  Checking..." >&4
1407         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1408         rm -f missing
1409         tmppwd=`pwd`
1410         for filelist in x??; do
1411                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1412         done
1413         if test -s missing; then
1414                 cat missing >&4
1415                 cat >&4 <<'EOM'
1416
1417 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1418
1419 You have the option of continuing the configuration process, despite the
1420 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1421 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1422 and contact the author (jhi@iki.fi).
1423
1424 EOM
1425                 echo $n "Continue? [n] $c" >&4
1426                 read ans
1427                 case "$ans" in
1428                 y*)
1429                         echo "Continuing..." >&4
1430                         rm -f missing
1431                         ;;
1432                 *)
1433                         echo "ABORTING..." >&4
1434                         kill $$
1435                         ;;
1436                 esac
1437         else
1438                 echo "Looks good..."
1439         fi
1440 else
1441         echo "There is no MANIFEST file.  I hope your kit is complete !"
1442 fi
1443 rm -f missing x??
1444
1445 echo " "
1446 : Find the appropriate value for a newline for tr
1447 if test -n "$DJGPP"; then
1448        trnl='\012'
1449 fi
1450 if test X"$trnl" = X; then
1451         case "`echo foo|tr '\n' x 2>/dev/null`" in
1452         foox) trnl='\n' ;;
1453         esac
1454 fi
1455 if test X"$trnl" = X; then
1456         case "`echo foo|tr '\012' x 2>/dev/null`" in
1457         foox) trnl='\012' ;;
1458         esac
1459 fi
1460 if test X"$trnl" = X; then
1461         cat <<EOM >&2
1462
1463 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1464
1465 EOM
1466         exit 1
1467 fi
1468
1469 : compute the number of columns on the terminal for proper question formatting
1470 case "$COLUMNS" in
1471 '') COLUMNS='80';;
1472 esac
1473
1474 : set up the echo used in my read
1475 myecho="case \"\$xxxm\" in
1476 '') echo $n \"\$rp $c\" >&4;;
1477 *) case \"\$rp\" in
1478         '') echo $n \"[\$xxxm] $c\";;
1479         *)
1480                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1481                         echo \"\$rp\" >&4
1482                         echo $n \"[\$xxxm] $c\" >&4
1483                 else
1484                         echo $n \"\$rp [\$xxxm] $c\" >&4
1485                 fi
1486                 ;;
1487         esac;;
1488 esac"
1489
1490 : now set up to do reads with possible shell escape and default assignment
1491 cat <<EOSC >myread
1492 $startsh
1493 xxxm=\$dflt
1494 $myecho
1495 ans='!'
1496 case "\$fastread" in
1497 yes) case "\$dflt" in
1498         '') ;;
1499         *) ans='';
1500                 case "\$silent-\$rp" in
1501                 true-) ;;
1502                 *) echo " " >&4;;
1503                 esac;;
1504         esac;;
1505 *) case "\$silent" in
1506         true) case "\$rp" in
1507                 '') ans='';;
1508                 esac;;
1509         esac;;
1510 esac
1511 while expr "X\$ans" : "X!" >/dev/null; do
1512         read answ
1513         set x \$xxxm
1514         shift
1515         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1516         case  "\$answ" in
1517         "!")
1518                 sh 1>&4
1519                 echo " "
1520                 $myecho
1521                 ;;
1522         !*)
1523                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1524                 shift
1525                 sh 1>&4 -c "\$*"
1526                 echo " "
1527                 $myecho
1528                 ;;
1529         "\$ans")
1530                 case "\$ans" in
1531                 \\&*)
1532                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1533                         shift
1534                         case "\$1" in
1535                         -d)
1536                                 fastread=yes
1537                                 echo "(OK, I'll run with -d after this question.)" >&4
1538                                 ;;
1539                         -*)
1540                                 echo "*** Sorry, \$1 not supported yet." >&4
1541                                 ;;
1542                         esac
1543                         $myecho
1544                         ans=!
1545                         ;;
1546                 esac;;
1547         *)
1548                 case "\$aok" in
1549                 y)
1550                         echo "*** Substitution done -- please confirm."
1551                         xxxm="\$ans"
1552                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1553                         xxxm="\$ans"
1554                         ans=!
1555                         ;;
1556                 *)
1557                         echo "*** Error -- try again."
1558                         ans=!
1559                         ;;
1560                 esac
1561                 $myecho
1562                 ;;
1563         esac
1564         case "\$ans\$xxxm\$nostick" in
1565         '')
1566                 ans=!
1567                 $myecho
1568                 ;;
1569         esac
1570 done
1571 case "\$ans" in
1572 '') ans="\$xxxm";;
1573 esac
1574 EOSC
1575
1576 : create .config dir to save info across Configure sessions
1577 test -d ../.config || mkdir ../.config
1578 cat >../.config/README <<EOF
1579 This directory created by Configure to save information that should
1580 persist across sessions for $package.
1581
1582 You may safely delete it if you wish.
1583 EOF
1584
1585 : general instructions
1586 needman=true
1587 firsttime=true
1588 user=`(logname) 2>/dev/null`
1589 case "$user" in
1590 '') user=`whoami 2>&1`;;
1591 esac
1592 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1593         firsttime=false
1594         echo " "
1595         rp='Would you like to see the instructions?'
1596         dflt=n
1597         . ./myread
1598         case "$ans" in
1599         [yY]*) ;;
1600         *) needman=false;;
1601         esac
1602 fi
1603 if $needman; then
1604         cat <<EOH
1605
1606 This installation shell script will examine your system and ask you questions
1607 to determine how the perl5 package should be installed. If you get
1608 stuck on a question, you may use a ! shell escape to start a subshell or
1609 execute a command.  Many of the questions will have default answers in square
1610 brackets; typing carriage return will give you the default.
1611
1612 On some of the questions which ask for file or directory names you are allowed
1613 to use the ~name construct to specify the login directory belonging to "name",
1614 even if you don't have a shell which knows about that.  Questions where this is
1615 allowed will be marked "(~name ok)".
1616
1617 EOH
1618         rp=''
1619         dflt='Type carriage return to continue'
1620         . ./myread
1621         cat <<'EOH'
1622
1623 The prompter used in this script allows you to use shell variables and
1624 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1625 in the default answer, as if the default line was a set of arguments given to a
1626 script shell.  This means you may also use $* to repeat the whole default line,
1627 so you do not have to re-type everything to add something to the default.
1628
1629 Everytime there is a substitution, you will have to confirm.  If there is an
1630 error (e.g. an unmatched backtick), the default answer will remain unchanged
1631 and you will be prompted again.
1632
1633 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1634 the questions and use the computed defaults (or the previous answers if there
1635 was already a config.sh file). Type 'Configure -h' for a list of options.
1636 You may also start interactively and then answer '& -d' at any prompt to turn
1637 on the non-interactive behaviour for the remainder of the execution.
1638
1639 EOH
1640         . ./myread
1641         cat <<EOH
1642
1643 Much effort has been expended to ensure that this shell script will run on any
1644 Unix system.  If despite that it blows up on yours, your best bet is to edit
1645 Configure and run it again.  If you can't run Configure for some reason,
1646 you'll have to generate a config.sh file by hand.  Whatever problems you
1647 have, let me (jhi@iki.fi) know how I blew it.
1648
1649 This installation script affects things in two ways:
1650
1651 1) it may do direct variable substitutions on some of the files included
1652    in this kit.
1653 2) it builds a config.h file for inclusion in C programs.  You may edit
1654    any of these files as the need arises after running this script.
1655
1656 If you make a mistake on a question, there is no easy way to back up to it
1657 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1658 files.  Configure will offer to let you do this before it runs the SH files.
1659
1660 EOH
1661         dflt='Type carriage return to continue'
1662         . ./myread
1663         case "$firsttime" in
1664         true) echo $user >>../.config/instruct;;
1665         esac
1666 fi
1667
1668 : find out where common programs are
1669 echo " "
1670 echo "Locating common programs..." >&4
1671 cat <<EOSC >loc
1672 $startsh
1673 case \$# in
1674 0) exit 1;;
1675 esac
1676 thing=\$1
1677 shift
1678 dflt=\$1
1679 shift
1680 for dir in \$*; do
1681         case "\$thing" in
1682         .)
1683         if test -d \$dir/\$thing; then
1684                 echo \$dir
1685                 exit 0
1686         fi
1687         ;;
1688         *)
1689         for thisthing in \$dir/\$thing; do
1690                 : just loop through to pick last item
1691         done
1692         if test -f \$thisthing; then
1693                 echo \$thisthing
1694                 exit 0
1695         elif test -f \$dir/\$thing.exe; then
1696                 if test -n "$DJGPP"; then
1697                         echo \$dir/\$thing.exe
1698                 else
1699                         : on Eunice apparently
1700                         echo \$dir/\$thing
1701                 fi
1702                 exit 0
1703         fi
1704         ;;
1705         esac
1706 done
1707 echo \$dflt
1708 exit 1
1709 EOSC
1710 chmod +x loc
1711 $eunicefix loc
1712 loclist="
1713 awk
1714 cat
1715 comm
1716 cp
1717 echo
1718 expr
1719 grep
1720 ls
1721 make
1722 mkdir
1723 rm
1724 sed
1725 sort
1726 touch
1727 tr
1728 uniq
1729 "
1730 trylist="
1731 Mcc
1732 ar
1733 byacc
1734 cpp
1735 csh
1736 date
1737 egrep
1738 gzip
1739 less
1740 ln
1741 more
1742 nm
1743 nroff
1744 pg
1745 tee
1746 test
1747 uname
1748 zip
1749 "
1750 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1751 pth="$pth /lib /usr/lib"
1752 for file in $loclist; do
1753         eval xxx=\$$file
1754         case "$xxx" in
1755         /*|?:[\\/]*)
1756                 if test -f "$xxx"; then
1757                         : ok
1758                 else
1759                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1760                         xxx=`./loc $file $file $pth`
1761                 fi
1762                 ;;
1763         '') xxx=`./loc $file $file $pth`;;
1764         *) xxx=`./loc $xxx $xxx $pth`;;
1765         esac
1766         eval $file=$xxx
1767         eval _$file=$xxx
1768         case "$xxx" in
1769         /*)
1770                 echo $file is in $xxx.
1771                 ;;
1772         ?:[\\/]*)
1773                 echo $file is in $xxx.
1774                 ;;
1775         *)
1776                 echo "I don't know where '$file' is, and my life depends on it." >&4
1777                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1778                 exit 1
1779                 ;;
1780         esac
1781 done
1782 echo " "
1783 echo "Don't worry if any of the following aren't found..."
1784 say=offhand
1785 for file in $trylist; do
1786         eval xxx=\$$file
1787         case "$xxx" in
1788         /*|?:[\\/]*)
1789                 if test -f "$xxx"; then
1790                         : ok
1791                 else
1792                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1793                         xxx=`./loc $file $file $pth`
1794                 fi
1795                 ;;
1796         '') xxx=`./loc $file $file $pth`;;
1797         *) xxx=`./loc $xxx $xxx $pth`;;
1798         esac
1799         eval $file=$xxx
1800         eval _$file=$xxx
1801         case "$xxx" in
1802         /*)
1803                 echo $file is in $xxx.
1804                 ;;
1805         ?:[\\/]*)
1806                 echo $file is in $xxx.
1807                 ;;
1808         *)
1809                 echo "I don't see $file out there, $say."
1810                 say=either
1811                 ;;
1812         esac
1813 done
1814 case "$egrep" in
1815 egrep)
1816         echo "Substituting grep for egrep."
1817         egrep=$grep
1818         ;;
1819 esac
1820 case "$ln" in
1821 ln)
1822         echo "Substituting cp for ln."
1823         ln=$cp
1824         ;;
1825 esac
1826 case "$test" in
1827 test)
1828         echo "Hopefully test is built into your sh."
1829         ;;
1830 *)
1831         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1832                 echo "Using the test built into your sh."
1833                 test=test
1834                 _test=test
1835         fi
1836         ;;
1837 esac
1838 case "$echo" in
1839 echo)
1840         echo "Hopefully echo is built into your sh."
1841         ;;
1842 '') ;;
1843 *)
1844         echo " "
1845 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1846         $echo $n "hi there$c" >foo1
1847         echo $n "hi there$c" >foo2
1848         if cmp foo1 foo2 >/dev/null 2>&1; then
1849                 echo "They are compatible.  In fact, they may be identical."
1850         else
1851                 case "$n" in
1852                 '-n') n='' c='\c';;
1853                 *) n='-n' c='';;
1854                 esac
1855                 cat <<FOO
1856 They are not compatible!  You are probably running ksh on a non-USG system.
1857 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1858 have echo built in and we may have to run some Bourne shell scripts.  That
1859 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1860
1861 FOO
1862                 $echo $n "The star should be here-->$c"
1863                 $echo "*"
1864         fi
1865         $rm -f foo1 foo2
1866         ;;
1867 esac
1868
1869 : determine whether symbolic links are supported
1870 echo " "
1871 $touch blurfl
1872 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1873         echo "Symbolic links are supported." >&4
1874         lns="$ln -s"
1875 else
1876         echo "Symbolic links are NOT supported." >&4
1877         lns="$ln"
1878 fi
1879 $rm -f blurfl sym
1880
1881 : see whether [:lower:] and [:upper:] are supported character classes
1882 echo " "
1883 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1884 ABYZ)
1885         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1886         up='[:upper:]'
1887         low='[:lower:]'
1888         ;;
1889 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1890         # (0xc9 and 0xd1), therefore that is a nice testing point.
1891         if test "X$up" = X -o "X$low" = X; then
1892             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1893             ij) up='[A-Z]'
1894                 low='[a-z]'
1895                 ;;
1896             esac
1897         fi
1898         if test "X$up" = X -o "X$low" = X; then
1899             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1900             ij) up='A-Z'
1901                 low='a-z'
1902                 ;;
1903             esac
1904         fi
1905         if test "X$up" = X -o "X$low" = X; then
1906             case "`echo IJ | od -x 2>/dev/null`" in
1907             *C9D1*|*c9d1*)
1908                 echo "Hey, this might be EBCDIC." >&4
1909                 if test "X$up" = X -o "X$low" = X; then
1910                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1911                     ij) up='[A-IJ-RS-Z]'
1912                         low='[a-ij-rs-z]'
1913                         ;;
1914                     esac
1915                 fi
1916                 if test "X$up" = X -o "X$low" = X; then
1917                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1918                     ij) up='A-IJ-RS-Z'
1919                         low='a-ij-rs-z'
1920                         ;;
1921                     esac
1922                 fi
1923                 ;;
1924             esac
1925         fi
1926 esac
1927 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1928 ij)
1929     echo "Using $up and $low to convert case." >&4
1930     ;;
1931 *)
1932     echo "I don't know how to translate letters from upper to lower case." >&4
1933     echo "Your tr is not acting any way I know of." >&4
1934     exit 1
1935     ;;
1936 esac
1937 : set up the translation script tr, must be called with ./tr of course
1938 cat >tr <<EOSC
1939 $startsh
1940 case "\$1\$2" in
1941 '[A-Z][a-z]') exec $tr '$up' '$low';;
1942 '[a-z][A-Z]') exec $tr '$low' '$up';;
1943 esac
1944 exec $tr "\$@"
1945 EOSC
1946 chmod +x tr
1947 $eunicefix tr
1948
1949 : Try to determine whether config.sh was made on this system
1950 case "$config_sh" in
1951 '')
1952 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1953 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1954 # because the A-Z/a-z are not consecutive.
1955 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1956         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1957 newmyuname="$myuname"
1958 dflt=n
1959 case "$knowitall" in
1960 '')
1961         if test -f ../config.sh; then
1962                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1963                         eval "`grep myuname= ../config.sh`"
1964                 fi
1965                 if test "X$myuname" = "X$newmyuname"; then
1966                         dflt=y
1967                 fi
1968         fi
1969         ;;
1970 *) dflt=y;;
1971 esac
1972
1973 : Get old answers from old config file if Configure was run on the
1974 : same system, otherwise use the hints.
1975 hint=default
1976 cd ..
1977 if test -f config.sh; then
1978         echo " "
1979         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1980         . UU/myread
1981         case "$ans" in
1982         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1983         *)  echo "Fetching default answers from your old config.sh file..." >&4
1984                 tmp_n="$n"
1985                 tmp_c="$c"
1986                 tmp_sh="$sh"
1987                 . ./config.sh
1988                 cp config.sh UU
1989                 n="$tmp_n"
1990                 c="$tmp_c"
1991                 : Older versions did not always set $sh.  Catch re-use of such
1992                 : an old config.sh.
1993                 case "$sh" in
1994                 '') sh="$tmp_sh" ;;
1995                 esac
1996                 hint=previous
1997                 ;;
1998         esac
1999 fi
2000 if test ! -f config.sh; then
2001         $cat <<EOM
2002
2003 First time through, eh?  I have some defaults handy for some systems
2004 that need some extra help getting the Configure answers right:
2005
2006 EOM
2007         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2008         dflt=''
2009         : Half the following guesses are probably wrong... If you have better
2010         : tests or hints, please send them to jhi@iki.fi
2011         : The metaconfig authors would also appreciate a copy...
2012         $test -f /irix && osname=irix
2013         $test -f /xenix && osname=sco_xenix
2014         $test -f /dynix && osname=dynix
2015         $test -f /dnix && osname=dnix
2016         $test -f /lynx.os && osname=lynxos
2017         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2018         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2019         $test -f /bin/mips && /bin/mips && osname=mips
2020         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2021                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2022         $test -d /usr/apollo/bin && osname=apollo
2023         $test -f /etc/saf/_sactab && osname=svr4
2024         $test -d /usr/include/minix && osname=minix
2025         if $test -d /MachTen -o -d /MachTen_Folder; then
2026                 osname=machten
2027                 if $test -x /sbin/version; then
2028                         osvers=`/sbin/version | $awk '{print $2}' |
2029                         $sed -e 's/[A-Za-z]$//'`
2030                 elif $test -x /usr/etc/version; then
2031                         osvers=`/usr/etc/version | $awk '{print $2}' |
2032                         $sed -e 's/[A-Za-z]$//'`
2033                 else
2034                         osvers="$2.$3"
2035                 fi
2036         fi
2037        $test -f /sys/posix.dll &&
2038                $test -f /usr/bin/what &&
2039                set X `/usr/bin/what /sys/posix.dll` &&
2040                $test "$3" = UWIN &&
2041                osname=uwin &&
2042                osvers="$5"
2043         if $test -f $uname; then
2044                 set X $myuname
2045                 shift
2046
2047                 case "$5" in
2048                 fps*) osname=fps ;;
2049                 mips*)
2050                         case "$4" in
2051                         umips) osname=umips ;;
2052                         *) osname=mips ;;
2053                         esac;;
2054                 [23]100) osname=mips ;;
2055                 next*) osname=next ;;
2056                 i386*)
2057                         if $test -f /etc/kconfig; then
2058                                 osname=isc
2059                                 if test "$lns" = "ln -s"; then
2060                                         osvers=4
2061                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2062                                         osvers=3
2063                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2064                                         osvers=2
2065                                 fi
2066                         fi
2067                         ;;
2068                 pc*)
2069                         if test -n "$DJGPP"; then
2070                                 osname=dos
2071                                 osvers=djgpp
2072                         fi
2073                         ;;
2074                 esac
2075
2076                 case "$1" in
2077                 aix) osname=aix
2078                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2079                         case "$tmp" in
2080                         'not found') osvers="$4"."$3" ;;
2081                         '<3240'|'<>3240') osvers=3.2.0 ;;
2082                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2083                         '=3250'|'>3250') osvers=3.2.5 ;;
2084                         *) osvers=$tmp;;
2085                         esac
2086                         ;;
2087                 *dc.osx) osname=dcosx
2088                         osvers="$3"
2089                         ;;
2090                 dnix) osname=dnix
2091                         osvers="$3"
2092                         ;;
2093                 domainos) osname=apollo
2094                         osvers="$3"
2095                         ;;
2096                 dgux) osname=dgux 
2097                         osvers="$3"
2098                         ;;
2099                 dynixptx*) osname=dynixptx
2100                         osvers=`echo "$4"|sed 's/^v//'`
2101                         ;;
2102                 freebsd) osname=freebsd 
2103                         osvers="$3" ;;
2104                 genix) osname=genix ;;
2105                 hp*) osname=hpux 
2106                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2107                         ;;
2108                 irix*) osname=irix
2109                         case "$3" in
2110                         4*) osvers=4 ;;
2111                         5*) osvers=5 ;;
2112                         *)      osvers="$3" ;;
2113                         esac
2114                         ;;
2115                 linux) osname=linux
2116                         case "$3" in
2117                         *)      osvers="$3" ;;
2118                         esac
2119                         ;;
2120                 MiNT) osname=mint
2121                         ;;
2122                 netbsd*) osname=netbsd
2123                         osvers="$3"
2124                         ;;
2125                 news-os) osvers="$3"
2126                         case "$3" in
2127                         4*) osname=newsos4 ;;
2128                         *) osname=newsos ;;
2129                         esac
2130                         ;;
2131                 bsd386) osname=bsd386
2132                         osvers=`$uname -r`
2133                         ;;
2134                 POSIX-BC | posix-bc ) osname=posix-bc
2135                         osvers="$3"
2136                         ;;
2137                 powerux | power_ux | powermax_os | powermaxos | \
2138                 powerunix | power_unix) osname=powerux
2139                         osvers="$3"
2140                         ;;
2141                 next*) osname=next ;;
2142                 solaris) osname=solaris
2143                         case "$3" in
2144                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2145                         *)      osvers="$3" ;;
2146                         esac
2147                         ;;
2148                 sunos) osname=sunos
2149                         case "$3" in
2150                         5*) osname=solaris
2151                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2152                         *)      osvers="$3" ;;
2153                         esac
2154                         ;;
2155                 titanos) osname=titanos
2156                         case "$3" in
2157                         1*) osvers=1 ;;
2158                         2*) osvers=2 ;;
2159                         3*) osvers=3 ;;
2160                         4*) osvers=4 ;;
2161                         *)      osvers="$3" ;;
2162                         esac
2163                         ;;
2164                 ultrix) osname=ultrix
2165                         osvers="$3"
2166                         ;;
2167                 osf1|mls+)      case "$5" in
2168                                 alpha)
2169                                         osname=dec_osf
2170                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2171                                         ;;
2172                         hp*)    osname=hp_osf1  ;;
2173                         mips)   osname=mips_osf1 ;;
2174                         esac
2175                         ;;
2176                 uts) osname=uts 
2177                         osvers="$3"
2178                         ;;
2179                 qnx) osname=qnx
2180                         osvers="$4"
2181                         ;;
2182                 $2) case "$osname" in
2183                         *isc*) ;;
2184                         *freebsd*) ;;
2185                         svr*)
2186                                 : svr4.x or possibly later
2187                                 case "svr$3" in 
2188                                 ${osname}*)
2189                                         osname=svr$3
2190                                         osvers=$4
2191                                         ;;
2192                                 esac
2193                                 case "$osname" in
2194                                 svr4.0)
2195                                         : Check for ESIX
2196                                         if test -f /stand/boot ; then
2197                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2198                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2199                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2200                                                         if test -n "$isesix"; then
2201                                                                 osname=esix4
2202                                                         fi
2203                                                 fi
2204                                         fi
2205                                         ;;
2206                                 esac
2207                                 ;;
2208                         *)      if test -f /etc/systemid; then
2209                                         osname=sco
2210                                         set `echo $3 | $sed 's/\./ /g'` $4
2211                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2212                                                 osvers=$1.$2.$3
2213                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2214                                                 osvers=$1.$2
2215                                         elif $test -f $src/hints/sco_$1.sh; then
2216                                                 osvers=$1
2217                                         fi
2218                                 else
2219                                         case "$osname" in
2220                                         '') : Still unknown.  Probably a generic Sys V.
2221                                                 osname="sysv"
2222                                                 osvers="$3"
2223                                                 ;;
2224                                         esac
2225                                 fi
2226                                 ;;
2227                         esac
2228                         ;;
2229                 *)      case "$osname" in
2230                         '') : Still unknown.  Probably a generic BSD.
2231                                 osname="$1"
2232                                 osvers="$3"
2233                                 ;;
2234                         esac
2235                         ;;
2236                 esac
2237         else
2238                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2239                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2240                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2241                                 osname=news_os
2242                         fi
2243                         $rm -f UU/kernel.what
2244                 elif test -d c:/.; then
2245                         set X $myuname
2246                         osname=os2
2247                         osvers="$5"
2248                 fi
2249         fi
2250         
2251         : Now look for a hint file osname_osvers, unless one has been
2252         : specified already.
2253         case "$hintfile" in
2254         ''|' ')
2255                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2256                 : Also try without trailing minor version numbers.
2257                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2258                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2259                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2260                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2261                 case "$file" in
2262                 '') dflt=none ;;
2263                 *)  case "$osvers" in
2264                         '') dflt=$file
2265                                 ;;
2266                         *)  if $test -f $src/hints/$file.sh ; then
2267                                         dflt=$file
2268                                 elif $test -f $src/hints/$xfile.sh ; then
2269                                         dflt=$xfile
2270                                 elif $test -f $src/hints/$xxfile.sh ; then
2271                                         dflt=$xxfile
2272                                 elif $test -f $src/hints/$xxxfile.sh ; then
2273                                         dflt=$xxxfile
2274                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2275                                         dflt=$xxxxfile
2276                                 elif $test -f "$src/hints/${osname}.sh" ; then
2277                                         dflt="${osname}"
2278                                 else
2279                                         dflt=none
2280                                 fi
2281                                 ;;
2282                         esac
2283                         ;;
2284                 esac
2285                 if $test -f Policy.sh ; then
2286                         case "$dflt" in
2287                         *Policy*) ;;
2288                         none) dflt="Policy" ;;
2289                         *) dflt="Policy $dflt" ;;
2290                         esac
2291                 fi
2292                 ;;
2293         *)
2294                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2295                 ;;
2296         esac
2297
2298         if $test -f Policy.sh ; then
2299                 $cat <<EOM
2300
2301 There's also a Policy hint file available, which should make the
2302 site-specific (policy) questions easier to answer.
2303 EOM
2304
2305         fi
2306
2307         $cat <<EOM
2308
2309 You may give one or more space-separated answers, or "none" if appropriate.
2310 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2311 is a good thing.  DO NOT give a wrong version.
2312
2313 EOM
2314
2315         rp="Which of these apply, if any?"
2316         . UU/myread
2317         tans=$ans
2318         for file in $tans; do
2319                 if $test X$file = XPolicy -a -f Policy.sh; then
2320                         . Policy.sh
2321                         $cat Policy.sh >> UU/config.sh
2322                 elif $test -f $src/hints/$file.sh; then
2323                         . $src/hints/$file.sh
2324                         $cat $src/hints/$file.sh >> UU/config.sh
2325                 elif $test X$tans = X -o X$tans = Xnone ; then
2326                         : nothing
2327                 else
2328                         : Give one chance to correct a possible typo.
2329                         echo "$file.sh does not exist"
2330                         dflt=$file
2331                         rp="hint to use instead?"
2332                         . UU/myread
2333                         for file in $ans; do
2334                                 if $test -f "$src/hints/$file.sh"; then
2335                                         . $src/hints/$file.sh
2336                                         $cat $src/hints/$file.sh >> UU/config.sh
2337                                 elif $test X$ans = X -o X$ans = Xnone ; then
2338                                         : nothing
2339                                 else
2340                                         echo "$file.sh does not exist -- ignored."
2341                                 fi
2342                         done
2343                 fi
2344         done
2345
2346         hint=recommended
2347         : Remember our hint file for later.
2348         if $test -f "$src/hints/$file.sh" ; then
2349                 hintfile="$file"
2350         else
2351                 hintfile=''
2352         fi
2353 fi
2354 cd UU
2355 ;;
2356 *)
2357         echo " "
2358         echo "Fetching default answers from $config_sh..." >&4
2359         tmp_n="$n"
2360         tmp_c="$c"
2361         cd ..
2362         cp $config_sh config.sh 2>/dev/null
2363         chmod +w config.sh
2364         . ./config.sh
2365         cd UU
2366         cp ../config.sh .
2367         n="$tmp_n"
2368         c="$tmp_c"
2369         hint=previous
2370         ;;
2371 esac
2372 test "$override" && . ./optdef.sh
2373 myuname="$newmyuname"
2374
2375 : Restore computed paths
2376 for file in $loclist $trylist; do
2377         eval $file="\$_$file"
2378 done
2379
2380 cat << EOM
2381
2382 Configure uses the operating system name and version to set some defaults.
2383 The default value is probably right if the name rings a bell. Otherwise,
2384 since spelling matters for me, either accept the default or answer "none"
2385 to leave it blank.
2386
2387 EOM
2388 case "$osname" in
2389         ''|' ')
2390                 case "$hintfile" in
2391                 ''|' '|none) dflt=none ;;
2392                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2393                 esac
2394                 ;;
2395         *) dflt="$osname" ;;
2396 esac
2397 rp="Operating system name?"
2398 . ./myread
2399 case "$ans" in
2400 none)  osname='' ;;
2401 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2402 esac
2403 echo " "
2404 case "$osvers" in
2405         ''|' ')
2406                 case "$hintfile" in
2407                 ''|' '|none) dflt=none ;;
2408                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2409                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2410                         case "$dflt" in
2411                         ''|' ') dflt=none ;;
2412                         esac
2413                         ;;
2414                 esac
2415                 ;;
2416         *) dflt="$osvers" ;;
2417 esac
2418 rp="Operating system version?"
2419 . ./myread
2420 case "$ans" in
2421 none)  osvers='' ;;
2422 *) osvers="$ans" ;;
2423 esac
2424
2425 : who configured the system
2426 cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1`
2427 cf_by=`(logname) 2>/dev/null`
2428 case "$cf_by" in
2429 "")
2430         cf_by=`(whoami) 2>/dev/null`
2431         case "$cf_by" in
2432         "") cf_by=unknown ;;
2433         esac ;;
2434 esac
2435
2436 : set up the script used to warn in case of inconsistency
2437 cat <<EOS >whoa
2438 $startsh
2439 EOS
2440 cat <<'EOSC' >>whoa
2441 dflt=y
2442 echo " "
2443 echo "*** WHOA THERE!!! ***" >&4
2444 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2445 rp="    Keep the $hint value?"
2446 . ./myread
2447 case "$ans" in
2448 y) td=$was; tu=$was;;
2449 esac
2450 EOSC
2451
2452 : function used to set $1 to $val
2453 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2454 case "$val$was" in
2455 $define$undef) . ./whoa; eval "$var=\$td";;
2456 $undef$define) . ./whoa; eval "$var=\$tu";;
2457 *) eval "$var=$val";;
2458 esac'
2459
2460 cat <<EOM
2461
2462 Perl can be built to take advantage of threads, on some systems.
2463 To do so, Configure must be run with -Dusethreads.
2464 (See README.threads for details.)
2465 EOM
2466 case "$usethreads" in
2467 $define|true|[yY]*)     dflt='y';;
2468 *) dflt='n';;
2469 esac
2470 rp='Build a threading Perl?'
2471 . ./myread
2472 case "$ans" in
2473 y|Y)    val="$define" ;;     
2474 *)      val="$undef" ;;
2475 esac
2476 set usethreads
2477 eval $setvar 
2478 : Look for a hint-file generated 'call-back-unit'.  Now that the
2479 : user has specified if a threading perl is to be built, we may need 
2480 : to set or change some other defaults.
2481 if $test -f usethreads.cbu; then
2482     . ./usethreads.cbu
2483 fi
2484 case "$d_oldpthreads" in
2485 '')     : Configure tests would be welcome here.  For now, assume undef.
2486         val="$undef" ;;
2487 *)      val="$d_oldpthreads" ;;
2488 esac
2489 set d_oldpthreads
2490 eval $setvar
2491
2492 cat <<EOM
2493
2494 Perl can be built so that multiple Perl interpreters can coexist
2495 within the same Perl executable.  To do so, Configure must be run with
2496 -Dusemultiplicity.
2497
2498 Normally you do not need this and you should answer no.
2499
2500 EOM
2501 case "$usemultiplicity" in
2502 $define|true|[yY]*)     dflt='y';;
2503 *) dflt='n';;
2504 esac
2505 rp='Build Perl for multiplicity?'
2506 . ./myread
2507 case "$ans" in
2508 y|Y)    val="$define" ;;     
2509 *)      val="$undef" ;;
2510 esac
2511 set usemultiplicity
2512 eval $setvar 
2513
2514 cat <<EOM
2515
2516 Perl can be built to take advantage of explicit 64-bit interfaces,
2517 on some systems.  To do so, Configure must be run with -Duse64bits.
2518
2519 If this doesn't make any sense to you, just accept the default 'n'.
2520 EOM
2521 case "$use64bits" in
2522 $define|true|[yY]*)     dflt='y';;
2523 *) dflt='n';;
2524 esac
2525 rp='Try to use explicit 64-bit interfaces, if available?'
2526 . ./myread
2527 case "$ans" in
2528 y|Y) 
2529         val="$define"
2530         ;;     
2531 *)      
2532         val="$undef"
2533         ;;
2534 esac
2535 set use64bits
2536 eval $setvar
2537
2538 archname64=''
2539
2540 : determine the architecture name
2541 echo " "
2542 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2543         tarch=`arch`"-$osname"
2544 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2545         if uname -m > tmparch 2>&1 ; then
2546                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2547                         -e 's/$/'"-$osname/" tmparch`
2548         else
2549                 tarch="$osname"
2550         fi
2551         $rm -f tmparch
2552 else
2553         tarch="$osname"
2554 fi
2555 case "$myarchname" in
2556 ''|"$tarch") ;;
2557 *)
2558         echo "(Your architecture name used to be $myarchname.)"
2559         archname=''
2560         ;;
2561 esac
2562 myarchname="$tarch"
2563 case "$archname" in
2564 '') dflt="$tarch";;
2565 *) dflt="$archname";;
2566 esac
2567 rp='What is your architecture name'
2568 . ./myread
2569 archname="$ans"
2570 case "$usethreads" in
2571 $define)
2572         echo "Threads selected." >&4
2573         case "$archname" in
2574         *-thread*) echo "...and architecture name already has -thread." >&4
2575                 ;;
2576         *)      archname="$archname-thread"
2577                 echo "...setting architecture name to $archname." >&4
2578                 ;;
2579         esac
2580         ;;
2581 esac
2582 case "$usemultiplicity" in
2583 $define)
2584         echo "Multiplicity selected." >&4
2585         case "$archname" in
2586         *-multi*) echo "...and architecture name already has -multi." >&4
2587                 ;;
2588         *)      archname="$archname-multi"
2589                 echo "...setting architecture name to $archname." >&4
2590                 ;;
2591         esac
2592         ;;
2593 esac
2594 case "$use64bits" in
2595 $define)
2596         echo "Explicit 64-bitness selected." >&4
2597         case "$archname64" in
2598         '')
2599                 ;;
2600         *)
2601                 case "$archname" in
2602                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2603                         ;;
2604                 *)      archname="$archname-$archname64"
2605                         echo "...setting architecture name to $archname." >&4
2606                         ;;
2607                 esac
2608                 ;;
2609         esac
2610 esac
2611
2612 : is AFS running?
2613 echo " "
2614 case "$afs" in
2615 $define|true)   afs=true ;;
2616 $undef|false)   afs=false ;;
2617 *)      if test -d /afs; then
2618                 afs=true
2619         else
2620                 afs=false
2621         fi
2622         ;;
2623 esac
2624 if $afs; then
2625         echo "AFS may be running... I'll be extra cautious then..." >&4
2626 else
2627         echo "AFS does not seem to be running..." >&4
2628 fi
2629
2630 : decide how portable to be.  Allow command line overrides.
2631 case "$d_portable" in
2632 "$undef") ;;
2633 *)      d_portable="$define" ;;
2634 esac
2635
2636 : set up shell script to do ~ expansion
2637 cat >filexp <<EOSS
2638 $startsh
2639 : expand filename
2640 case "\$1" in
2641  ~/*|~)
2642         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2643         ;;
2644  ~*)
2645         if $test -f /bin/csh; then
2646                 /bin/csh -f -c "glob \$1"
2647                 failed=\$?
2648                 echo ""
2649                 exit \$failed
2650         else
2651                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2652                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2653                 if $test ! -d "\$dir"; then
2654                         me=\`basename \$0\`
2655                         echo "\$me: can't locate home directory for: \$name" >&2
2656                         exit 1
2657                 fi
2658                 case "\$1" in
2659                 */*)
2660                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2661                         ;;
2662                 *)
2663                         echo \$dir
2664                         ;;
2665                 esac
2666         fi
2667         ;;
2668 *)
2669         echo \$1
2670         ;;
2671 esac
2672 EOSS
2673 chmod +x filexp
2674 $eunicefix filexp
2675
2676 : now set up to get a file name
2677 cat <<EOS >getfile
2678 $startsh
2679 EOS
2680 cat <<'EOSC' >>getfile
2681 tilde=''
2682 fullpath=''
2683 already=''
2684 skip=''
2685 none_ok=''
2686 exp_file=''
2687 nopath_ok=''
2688 orig_rp="$rp"
2689 orig_dflt="$dflt"
2690
2691 case "$fn" in
2692 *\(*)
2693         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2694         fn=`echo $fn | sed 's/(.*)//'`
2695         ;;
2696 esac
2697
2698 case "$fn" in
2699 *:*)
2700         loc_file=`expr $fn : '.*:\(.*\)'`
2701         fn=`expr $fn : '\(.*\):.*'`
2702         ;;
2703 esac
2704
2705 case "$fn" in
2706 *~*) tilde=true;;
2707 esac
2708 case "$fn" in
2709 */*) fullpath=true;;
2710 esac
2711 case "$fn" in
2712 *+*) skip=true;;
2713 esac
2714 case "$fn" in
2715 *n*) none_ok=true;;
2716 esac
2717 case "$fn" in
2718 *e*) exp_file=true;;
2719 esac
2720 case "$fn" in
2721 *p*) nopath_ok=true;;
2722 esac
2723
2724 case "$fn" in
2725 *f*) type='File';;
2726 *d*) type='Directory';;
2727 *l*) type='Locate';;
2728 esac
2729
2730 what="$type"
2731 case "$what" in
2732 Locate) what='File';;
2733 esac
2734
2735 case "$exp_file" in
2736 '')
2737         case "$d_portable" in
2738         "$define") ;;
2739         *) exp_file=true;;
2740         esac
2741         ;;
2742 esac
2743
2744 cd ..
2745 while test "$type"; do
2746         redo=''
2747         rp="$orig_rp"
2748         dflt="$orig_dflt"
2749         case "$tilde" in
2750         true) rp="$rp (~name ok)";;
2751         esac
2752         . UU/myread
2753         if test -f UU/getfile.ok && \
2754                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2755         then
2756                 value="$ans"
2757                 ansexp="$ans"
2758                 break
2759         fi
2760         case "$ans" in
2761         none)
2762                 value=''
2763                 ansexp=''
2764                 case "$none_ok" in
2765                 true) type='';;
2766                 esac
2767                 ;;
2768         *)
2769                 case "$tilde" in
2770                 '') value="$ans"
2771                         ansexp="$ans";;
2772                 *)
2773                         value=`UU/filexp $ans`
2774                         case $? in
2775                         0)
2776                                 if test "$ans" != "$value"; then
2777                                         echo "(That expands to $value on this system.)"
2778                                 fi
2779                                 ;;
2780                         *) value="$ans";;
2781                         esac
2782                         ansexp="$value"
2783                         case "$exp_file" in
2784                         '') value="$ans";;
2785                         esac
2786                         ;;
2787                 esac
2788                 case "$fullpath" in
2789                 true)
2790                         case "$ansexp" in
2791                         /*) value="$ansexp" ;;
2792                         *)
2793                                 redo=true
2794                                 case "$already" in
2795                                 true)
2796                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2797                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2798                                         ;;
2799                                 *)
2800                                 echo "Please give a full path name, starting with slash." >&4
2801                                         case "$tilde" in
2802                                         true)
2803                                 echo "Note that using ~name is ok provided it expands well." >&4
2804                                                 already=true
2805                                                 ;;
2806                                         esac
2807                                 esac
2808                                 ;;
2809                         esac
2810                         ;;
2811                 esac
2812                 case "$redo" in
2813                 '')
2814                         case "$type" in
2815                         File)
2816                                 if test -f "$ansexp"; then
2817                                         type=''
2818                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2819                                 then
2820                                         echo "($value is not a plain file, but that's ok.)"
2821                                         type=''
2822                                 fi
2823                                 ;;
2824                         Directory)
2825                                 if test -d "$ansexp"; then
2826                                         type=''
2827                                 fi
2828                                 ;;
2829                         Locate)
2830                                 if test -d "$ansexp"; then
2831                                         echo "(Looking for $loc_file in directory $value.)"
2832                                         value="$value/$loc_file"
2833                                         ansexp="$ansexp/$loc_file"
2834                                 fi
2835                                 if test -f "$ansexp"; then
2836                                         type=''
2837                                 fi
2838                                 case "$nopath_ok" in
2839                                 true)   case "$value" in
2840                                         */*) ;;
2841                                         *)      echo "Assuming $value will be in people's path."
2842                                                 type=''
2843                                                 ;;
2844                                         esac
2845                                         ;;
2846                                 esac
2847                                 ;;
2848                         esac
2849
2850                         case "$skip" in
2851                         true) type='';
2852                         esac
2853
2854                         case "$type" in
2855                         '') ;;
2856                         *)
2857                                 if test "$fastread" = yes; then
2858                                         dflt=y
2859                                 else
2860                                         dflt=n
2861                                 fi
2862                                 rp="$what $value doesn't exist.  Use that name anyway?"
2863                                 . UU/myread
2864                                 dflt=''
2865                                 case "$ans" in
2866                                 y*) type='';;
2867                                 *) echo " ";;
2868                                 esac
2869                                 ;;
2870                         esac
2871                         ;;
2872                 esac
2873                 ;;
2874         esac
2875 done
2876 cd UU
2877 ans="$value"
2878 rp="$orig_rp"
2879 dflt="$orig_dflt"
2880 rm -f getfile.ok
2881 EOSC
2882
2883 : determine root of directory hierarchy where package will be installed.
2884 case "$prefix" in
2885 '')
2886         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2887         ;;
2888 *)
2889         dflt="$prefix"
2890         ;;
2891 esac
2892 $cat <<EOM
2893
2894 By default, $package will be installed in $dflt/bin, manual
2895 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2896 all installation directories. Typically set to /usr/local, but you
2897 may choose /usr if you wish to install $package among your system
2898 binaries. If you wish to have binaries under /bin but manual pages
2899 under /usr/local/man, that's ok: you will be prompted separately
2900 for each of the installation directories, the prefix being only used
2901 to set the defaults.
2902
2903 EOM
2904 fn=d~
2905 rp='Installation prefix to use?'
2906 . ./getfile
2907 oldprefix=''
2908 case "$prefix" in
2909 '') ;;
2910 *)
2911         case "$ans" in
2912         "$prefix") ;;
2913         *) oldprefix="$prefix";;
2914         esac
2915         ;;
2916 esac
2917 prefix="$ans"
2918 prefixexp="$ansexp"
2919
2920 : set the prefixit variable, to compute a suitable default value
2921 prefixit='case "$3" in
2922 ""|none)
2923         case "$oldprefix" in
2924         "") eval "$1=\"\$$2\"";;
2925         *)
2926                 case "$3" in
2927                 "") eval "$1=";;
2928                 none)
2929                         eval "tp=\"\$$2\"";
2930                         case "$tp" in
2931                         ""|" ") eval "$1=\"\$$2\"";;
2932                         *) eval "$1=";;
2933                         esac;;
2934                 esac;;
2935         esac;;
2936 *)
2937         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2938         case "$tp" in
2939         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2940         /*-$oldprefix/*|\~*-$oldprefix/*)
2941                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2942         *) eval "$1=\"\$$2\"";;
2943         esac;;
2944 esac'
2945
2946 : set the base revision
2947 baserev=5.0
2948
2949 : get the patchlevel
2950 echo " "
2951 echo "Getting the current patchlevel..." >&4
2952 if $test -r $rsrc/patchlevel.h;then
2953         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
2954         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
2955 else
2956         patchlevel=0
2957         subversion=0
2958 fi
2959 $echo $n "(You have $package" $c
2960 case "$package" in
2961 "*$baserev")    ;;
2962 *)              $echo $n " $baserev" $c ;;
2963 esac
2964 $echo $n " patchlevel $patchlevel" $c
2965 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2966 echo ".)"
2967
2968 if test 0 -eq "$subversion"; then
2969         version=`LC_ALL=C; export LC_ALL; \
2970                  echo $baserev $patchlevel | \
2971                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2972 else
2973         version=`LC_ALL=C; export LC_ALL; \
2974                  echo $baserev $patchlevel $subversion | \
2975                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2976 fi
2977 : Figure out perl API version.  Perhaps this should be in patchlevel.h
2978 if test "$subversion" -lt 50; then
2979         apiversion=`LC_ALL=C; export LC_ALL; \
2980                  echo $baserev $patchlevel | \
2981                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2982 else
2983         apiversion="$version"
2984 fi
2985
2986 : determine where private library files go
2987 : Usual default is /usr/local/lib/perl5/$version.
2988 : Also allow things like /opt/perl/lib/$version, since 
2989 : /opt/perl/lib/perl5... would be redundant.
2990 case "$prefix" in
2991 *perl*) set dflt privlib lib/$version ;;
2992 *)       set dflt privlib lib/$package/$version ;;
2993 esac
2994 eval $prefixit
2995 $cat <<EOM
2996
2997 There are some auxiliary files for $package that need to be put into a
2998 private library directory that is accessible by everyone.
2999
3000 EOM
3001 fn=d~+
3002 rp='Pathname where the private library files will reside?'
3003 . ./getfile
3004 if $test "X$privlibexp" != "X$ansexp"; then
3005         installprivlib=''
3006 fi
3007 privlib="$ans"
3008 privlibexp="$ansexp"
3009 if $afs; then
3010         $cat <<EOM
3011
3012 Since you are running AFS, I need to distinguish the directory in which
3013 private files reside from the directory in which they are installed (and from
3014 which they are presumably copied to the former directory by occult means).
3015
3016 EOM
3017         case "$installprivlib" in
3018         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3019         *) dflt="$installprivlib";;
3020         esac
3021         fn=de~
3022         rp='Where will private files be installed?'
3023         . ./getfile
3024         installprivlib="$ans"
3025 else
3026         installprivlib="$privlibexp"
3027 fi
3028
3029 : set the prefixup variable, to restore leading tilda escape
3030 prefixup='case "$prefixexp" in
3031 "$prefix") ;;
3032 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3033 esac'
3034
3035 : determine where public architecture dependent libraries go
3036 set archlib archlib
3037 eval $prefixit
3038 : privlib default is /usr/local/lib/$package/$version
3039 : archlib default is /usr/local/lib/$package/$version/$archname
3040 : privlib may have an optional trailing /share.
3041 tdflt=`echo $privlib | $sed 's,/share$,,'`
3042 tdflt=$tdflt/$archname
3043 case "$archlib" in
3044 '')     dflt=$tdflt
3045         ;;
3046 *)      dflt="$archlib"
3047     ;;
3048 esac
3049 cat <<EOM
3050
3051 $spackage contains architecture-dependent library files.  If you are
3052 sharing libraries in a heterogeneous environment, you might store
3053 these files in a separate location.  Otherwise, you can just include
3054 them with the rest of the public library files.
3055
3056 EOM
3057 fn=d+~
3058 rp='Where do you want to put the public architecture-dependent libraries?'
3059 . ./getfile
3060 archlib="$ans"
3061 archlibexp="$ansexp"
3062
3063 if $afs; then
3064         $cat <<EOM
3065
3066 Since you are running AFS, I need to distinguish the directory in
3067 which architecture-dependent library files reside from the directory
3068 in which they are installed (and from which they are presumably copied
3069 to the former directory by occult means).
3070
3071 EOM
3072         case "$installarchlib" in
3073         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3074         *) dflt="$installarchlib";;
3075         esac
3076         fn=de~
3077         rp='Where will architecture-dependent library files be installed?'
3078         . ./getfile
3079         installarchlib="$ans"
3080 else
3081         installarchlib="$archlibexp"
3082 fi
3083 if $test X"$archlib" = X"$privlib"; then
3084         d_archlib="$undef"
3085 else
3086         d_archlib="$define"
3087 fi
3088
3089 : make some quick guesses about what we are up against
3090 echo " "
3091 $echo $n "Hmm...  $c"
3092 echo exit 1 >bsd
3093 echo exit 1 >usg
3094 echo exit 1 >v7
3095 echo exit 1 >osf1
3096 echo exit 1 >eunice
3097 echo exit 1 >xenix
3098 echo exit 1 >venix
3099 echo exit 1 >os2
3100 d_bsd="$undef"
3101 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3102 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3103 then
3104         echo "Looks kind of like an OSF/1 system, but we'll see..."
3105         echo exit 0 >osf1
3106 elif test `echo abc | tr a-z A-Z` = Abc ; then
3107         xxx=`./loc addbib blurfl $pth`
3108         if $test -f $xxx; then
3109         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3110                 echo exit 0 >bsd
3111                 echo exit 0 >usg
3112         else
3113                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3114                         echo "Looks kind of like an extended USG system, but we'll see..."
3115                 else
3116                         echo "Looks kind of like a USG system, but we'll see..."
3117                 fi
3118                 echo exit 0 >usg
3119         fi
3120 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3121         echo "Looks kind of like a BSD system, but we'll see..."
3122         d_bsd="$define"
3123         echo exit 0 >bsd
3124 else
3125         echo "Looks kind of like a Version 7 system, but we'll see..."
3126         echo exit 0 >v7
3127 fi
3128 case "$eunicefix" in
3129 *unixtovms*)
3130         $cat <<'EOI'
3131 There is, however, a strange, musty smell in the air that reminds me of
3132 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3133 EOI
3134         echo exit 0 >eunice
3135         d_eunice="$define"
3136 : it so happens the Eunice I know will not run shell scripts in Unix format
3137         ;;
3138 *)
3139         echo " "
3140         echo "Congratulations.  You aren't running Eunice."
3141         d_eunice="$undef"
3142         ;;
3143 esac
3144 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3145 case "$p_" in
3146 :) ;;
3147 *)
3148         $cat <<'EOI'
3149 I have the feeling something is not exactly right, however...don't tell me...
3150 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3151 EOI
3152         echo exit 0 >os2
3153         ;;
3154 esac
3155 if test -f /xenix; then
3156         echo "Actually, this looks more like a XENIX system..."
3157         echo exit 0 >xenix
3158         d_xenix="$define"
3159 else
3160         echo " "
3161         echo "It's not Xenix..."
3162         d_xenix="$undef"
3163 fi
3164 chmod +x xenix
3165 $eunicefix xenix
3166 if test -f /venix; then
3167         echo "Actually, this looks more like a VENIX system..."
3168         echo exit 0 >venix
3169 else
3170         echo " "
3171         if ./xenix; then
3172                 : null
3173         else
3174                 echo "Nor is it Venix..."
3175         fi
3176 fi
3177 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3178 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3179 $rm -f foo
3180
3181 : see if setuid scripts can be secure
3182 $cat <<EOM
3183
3184 Some kernels have a bug that prevents setuid #! scripts from being
3185 secure.  Some sites have disabled setuid #! scripts because of this.
3186
3187 First let's decide if your kernel supports secure setuid #! scripts.
3188 (If setuid #! scripts would be secure but have been disabled anyway,
3189 don't say that they are secure if asked.)
3190
3191 EOM
3192
3193 val="$undef"
3194 if $test -d /dev/fd; then
3195         echo "#!$ls" >reflect
3196         chmod +x,u+s reflect
3197         ./reflect >flect 2>&1
3198         if $contains "/dev/fd" flect >/dev/null; then
3199                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3200                 val="$define"
3201         else
3202                 $cat <<EOM
3203 If you are not sure if they are secure, I can check but I'll need a
3204 username and password different from the one you are using right now.
3205 If you don't have such a username or don't want me to test, simply
3206 enter 'none'.
3207
3208 EOM
3209                 rp='Other username to test security of setuid scripts with?'
3210                 dflt='none'
3211                 . ./myread
3212                 case "$ans" in
3213                 n|none)
3214                         case "$d_suidsafe" in
3215                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3216                                 dflt=n;;
3217                         "$undef")
3218                                 echo "Well, the $hint value is *not* secure." >&4
3219                                 dflt=n;;
3220                         *)      echo "Well, the $hint value *is* secure." >&4
3221                                 dflt=y;;
3222                         esac
3223                         ;;
3224                 *)
3225                         $rm -f reflect flect
3226                         echo "#!$ls" >reflect
3227                         chmod +x,u+s reflect
3228                         echo >flect
3229                         chmod a+w flect
3230                         echo '"su" will (probably) prompt you for '"$ans's password."
3231                         su $ans -c './reflect >flect'
3232                         if $contains "/dev/fd" flect >/dev/null; then
3233                                 echo "Okay, it looks like setuid scripts are secure." >&4
3234                                 dflt=y
3235                         else
3236                                 echo "I don't think setuid scripts are secure." >&4
3237                                 dflt=n
3238                         fi
3239                         ;;
3240                 esac
3241                 rp='Does your kernel have *secure* setuid scripts?'
3242                 . ./myread
3243                 case "$ans" in
3244                 [yY]*)  val="$define";;
3245                 *)      val="$undef";;
3246                 esac
3247         fi
3248 else
3249         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3250         echo "(That's for file descriptors, not floppy disks.)"
3251         val="$undef"
3252 fi
3253 set d_suidsafe
3254 eval $setvar
3255
3256 $rm -f reflect flect
3257
3258 : now see if they want to do setuid emulation
3259 echo " "
3260 val="$undef"
3261 case "$d_suidsafe" in
3262 "$define")
3263         val="$undef"
3264         echo "No need to emulate SUID scripts since they are secure here." >& 4
3265         ;;
3266 *)
3267         $cat <<EOM
3268 Some systems have disabled setuid scripts, especially systems where
3269 setuid scripts cannot be secure.  On systems where setuid scripts have
3270 been disabled, the setuid/setgid bits on scripts are currently
3271 useless.  It is possible for $package to detect those bits and emulate
3272 setuid/setgid in a secure fashion.  This emulation will only work if
3273 setuid scripts have been disabled in your kernel.
3274
3275 EOM
3276         case "$d_dosuid" in
3277         "$define") dflt=y ;;
3278         *) dflt=n ;;
3279         esac
3280         rp="Do you want to do setuid/setgid emulation?"
3281         . ./myread
3282         case "$ans" in
3283         [yY]*)  val="$define";;
3284         *)      val="$undef";;
3285         esac
3286         ;;
3287 esac
3288 set d_dosuid
3289 eval $setvar
3290
3291 : determine where manual pages are on this system
3292 echo " "
3293 case "$sysman" in
3294 '') 
3295         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3296         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3297         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3298         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3299         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3300         sysman=`./loc . /usr/man/man1 $syspath`
3301         ;;
3302 esac
3303 if $test -d "$sysman"; then
3304         echo "System manual is in $sysman." >&4
3305 else
3306         echo "Could not find manual pages in source form." >&4
3307 fi
3308
3309 : see what memory models we can support
3310 case "$models" in
3311 '')
3312         $cat >pdp11.c <<'EOP'
3313 main() {
3314 #ifdef pdp11
3315         exit(0);
3316 #else
3317         exit(1);
3318 #endif
3319 }
3320 EOP
3321         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3322         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3323                 dflt='unsplit split'
3324         else
3325                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3326                 case "$tans" in
3327                 X) dflt='none';;
3328                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3329                                 dflt='small'
3330                         else
3331                                 dflt=''
3332                         fi
3333                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3334                                 dflt="$dflt medium"
3335                         fi
3336                         if $test -d /lib/large || $test -d /usr/lib/large; then
3337                                 dflt="$dflt large"
3338                         fi
3339                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3340                                 dflt="$dflt huge"
3341                         fi
3342                 esac
3343         fi;;
3344 *) dflt="$models";;
3345 esac
3346 $cat <<EOM
3347  
3348 Some systems have different model sizes.  On most systems they are called
3349 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3350 split.  If your system doesn't support different memory models, say "none".
3351 If you wish to force everything to one memory model, say "none" here and
3352 put the appropriate flags later when it asks you for other cc and ld flags.
3353 Venix systems may wish to put "none" and let the compiler figure things out.
3354 (In the following question multiple model names should be space separated.)
3355
3356 The default for most systems is "none".
3357
3358 EOM
3359 rp="Which memory models are supported?"
3360 . ./myread
3361 models="$ans"
3362
3363 case "$models" in
3364 none)
3365         small=''
3366         medium=''
3367         large=''
3368         huge=''
3369         unsplit=''
3370         split=''
3371         ;;
3372 *split)
3373         case "$split" in
3374         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3375                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3376                         dflt='-i'
3377                 else
3378                         dflt='none'
3379                 fi;;
3380         *) dflt="$split";;
3381         esac
3382         rp="What flag indicates separate I and D space?"
3383         . ./myread
3384         tans="$ans"
3385         case "$tans" in
3386         none) tans='';;
3387         esac
3388         split="$tans"
3389         unsplit='';;
3390 *large*|*small*|*medium*|*huge*)
3391         case "$models" in
3392         *large*)
3393                 case "$large" in
3394                 '') dflt='-Ml';;
3395                 *) dflt="$large";;
3396                 esac
3397         rp="What flag indicates large model?"
3398         . ./myread
3399         tans="$ans"
3400         case "$tans" in
3401         none) tans='';
3402         esac
3403         large="$tans";;
3404         *) large='';;
3405         esac
3406         case "$models" in
3407         *huge*) case "$huge" in
3408                 '') dflt='-Mh';;
3409                 *) dflt="$huge";;
3410                 esac
3411                 rp="What flag indicates huge model?"
3412                 . ./myread
3413                 tans="$ans"
3414                 case "$tans" in
3415                 none) tans='';
3416                 esac
3417                 huge="$tans";;
3418         *) huge="$large";;
3419         esac
3420         case "$models" in
3421         *medium*) case "$medium" in
3422                 '') dflt='-Mm';;
3423                 *) dflt="$medium";;
3424                 esac
3425                 rp="What flag indicates medium model?"
3426                 . ./myread
3427                 tans="$ans"
3428                 case "$tans" in
3429                 none) tans='';
3430                 esac
3431                 medium="$tans";;
3432         *) medium="$large";;
3433         esac
3434         case "$models" in
3435         *small*) case "$small" in
3436                 '') dflt='none';;
3437                 *) dflt="$small";;
3438                 esac
3439                 rp="What flag indicates small model?"
3440                 . ./myread
3441                 tans="$ans"
3442                 case "$tans" in
3443                 none) tans='';
3444                 esac
3445                 small="$tans";;
3446         *) small='';;
3447         esac
3448         ;;
3449 *)
3450         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3451         ;;
3452 esac
3453 $rm -f pdp11.* pdp11
3454
3455 : see if we need a special compiler
3456 echo " "
3457 if ./usg; then
3458         case "$cc" in
3459         '') case "$Mcc" in
3460                 /*) dflt='Mcc';;
3461                 *) case "$large" in
3462                         -M*) dflt='cc';;
3463                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3464                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3465                                                 dflt='cc'
3466                                         else
3467                                                 dflt='cc -M'
3468                                         fi
3469                                 else
3470                                         dflt='cc'
3471                                 fi;;
3472                         esac;;
3473                 esac;;
3474         *)  dflt="$cc";;
3475         esac
3476         case "$dflt" in
3477         *M*)    $cat <<'EOM'
3478 On some older systems the default C compiler will not resolve multiple global
3479 references that happen to have the same name.  On some such systems the "Mcc"
3480 command may be used to force these to be resolved.  On other systems a "cc -M"
3481 command is required.  (Note that the -M flag on other systems indicates a
3482 memory model to use!) If you have the Gnu C compiler, you might wish to use
3483 that instead.
3484
3485 EOM
3486         ;;
3487         esac
3488         rp="Use which C compiler?"
3489         . ./myread
3490         cc="$ans"
3491 else
3492         case "$cc" in
3493         '') dflt=cc;;
3494         *) dflt="$cc";;
3495         esac
3496         rp="Use which C compiler?"
3497         . ./myread
3498         cc="$ans"
3499 fi
3500 : Look for a hint-file generated 'call-back-unit'.  Now that the
3501 : user has specified the compiler, we may need to set or change some
3502 : other defaults.
3503 if $test -f cc.cbu; then
3504     . ./cc.cbu
3505 fi
3506 echo " "
3507 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3508 $cat >gccvers.c <<EOM
3509 #include <stdio.h>
3510 int main() {
3511 #ifdef __GNUC__
3512 #ifdef __VERSION__
3513         printf("%s\n", __VERSION__);
3514 #else
3515         printf("%s\n", "1");
3516 #endif
3517 #endif
3518         exit(0);
3519 }
3520 EOM
3521 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3522         gccversion=`./gccvers`
3523         case "$gccversion" in
3524         '') echo "You are not using GNU cc." ;;
3525         *)  echo "You are using GNU cc $gccversion." ;;
3526         esac
3527 else
3528         echo " "
3529         echo "*** WHOA THERE!!! ***" >&4
3530         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3531         case "$knowitall" in
3532         '')
3533         echo "    You'd better start hunting for one and let me know about it." >&4
3534                 exit 1
3535                 ;;
3536         esac
3537 fi
3538 $rm -f gccvers*
3539 case "$gccversion" in
3540 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3541 esac
3542
3543 : What should the include directory be ?
3544 echo " "
3545 $echo $n "Hmm...  $c"
3546 dflt='/usr/include'
3547 incpath=''
3548 mips_type=''
3549 if $test -f /bin/mips && /bin/mips; then
3550         echo "Looks like a MIPS system..."
3551         $cat >usr.c <<'EOCP'
3552 #ifdef SYSTYPE_BSD43
3553 /bsd43
3554 #endif
3555 EOCP
3556         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3557                 dflt='/bsd43/usr/include'
3558                 incpath='/bsd43'
3559                 mips_type='BSD 4.3'
3560         else
3561                 mips_type='System V'
3562         fi
3563         $rm -f usr.c usr.out
3564         echo "and you're compiling with the $mips_type compiler and libraries."
3565         xxx_prompt=y
3566         echo "exit 0" >mips
3567 else
3568         echo "Doesn't look like a MIPS system."
3569         xxx_prompt=n
3570         echo "exit 1" >mips
3571 fi
3572 chmod +x mips
3573 $eunicefix mips
3574 case "$usrinc" in
3575 '') ;;
3576 *) dflt="$usrinc";;
3577 esac
3578 case "$xxx_prompt" in
3579 y)      fn=d/
3580         echo " "
3581         rp='Where are the include files you want to use?'
3582         . ./getfile
3583         usrinc="$ans"
3584         ;;
3585 *)      usrinc="$dflt"
3586         ;;
3587 esac
3588
3589 : see how we invoke the C preprocessor
3590 echo " "
3591 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3592 cat <<'EOT' >testcpp.c
3593 #define ABC abc
3594 #define XYZ xyz
3595 ABC.XYZ
3596 EOT
3597 cd ..
3598 if test ! -f cppstdin; then
3599         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3600 else
3601         echo "Keeping your $hint cppstdin wrapper."
3602 fi
3603 chmod 755 cppstdin
3604 wrapper=`pwd`/cppstdin
3605 ok='false'
3606 cd UU
3607
3608 if $test "X$cppstdin" != "X" && \
3609         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3610         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3611 then
3612         echo "You used to use $cppstdin $cppminus so we'll use that again."
3613         case "$cpprun" in
3614         '') echo "But let's see if we can live without a wrapper..." ;;
3615         *)
3616                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3617                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3618                 then
3619                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3620                         ok='true'
3621                 else
3622                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3623                 fi
3624                 ;;
3625         esac
3626 else
3627         case "$cppstdin" in
3628         '') ;;
3629         *)
3630                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3631                 ;;
3632         esac
3633 fi
3634
3635 if $ok; then
3636         : nothing
3637 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3638         $cc -E <testcpp.c >testcpp.out 2>&1; \
3639         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3640         echo "Yup, it does."
3641         x_cpp="$cc -E"
3642         x_minus='';
3643 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3644         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3645         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3646         echo "Yup, it does."
3647         x_cpp="$cc -E"
3648         x_minus='-';
3649 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3650         $cc -P <testcpp.c >testcpp.out 2>&1; \
3651         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3652         echo "Yipee, that works!"
3653         x_cpp="$cc -P"
3654         x_minus='';
3655 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3656         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3657         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3658         echo "At long last!"
3659         x_cpp="$cc -P"
3660         x_minus='-';
3661 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3662         $cpp <testcpp.c >testcpp.out 2>&1; \
3663         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3664         echo "It works!"
3665         x_cpp="$cpp"
3666         x_minus='';
3667 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3668         $cpp - <testcpp.c >testcpp.out 2>&1; \
3669         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3670         echo "Hooray, it works!  I was beginning to wonder."
3671         x_cpp="$cpp"
3672         x_minus='-';
3673 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3674         $wrapper <testcpp.c >testcpp.out 2>&1; \
3675         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3676         x_cpp="$wrapper"
3677         x_minus=''
3678         echo "Eureka!"
3679 else
3680         dflt=''
3681         rp="No dice.  I can't find a C preprocessor.  Name one:"
3682         . ./myread
3683         x_cpp="$ans"
3684         x_minus=''
3685         $x_cpp <testcpp.c >testcpp.out 2>&1
3686         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3687                 echo "OK, that will do." >&4
3688         else
3689 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3690                 exit 1
3691         fi
3692 fi
3693
3694 case "$ok" in
3695 false)
3696         cppstdin="$x_cpp"
3697         cppminus="$x_minus"
3698         cpprun="$x_cpp"
3699         cpplast="$x_minus"
3700         set X $x_cpp
3701         shift
3702         case "$1" in
3703         "$cpp")
3704                 echo "Perhaps can we force $cc -E using a wrapper..."
3705                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3706                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3707                 then
3708                         echo "Yup, we can."
3709                         cppstdin="$wrapper"
3710                         cppminus='';
3711                 else
3712                         echo "Nope, we'll have to live without it..."
3713                 fi
3714                 ;;
3715         esac
3716         case "$cpprun" in
3717         "$wrapper")
3718                 cpprun=''
3719                 cpplast=''
3720                 ;;
3721         esac
3722         ;;
3723 esac
3724
3725 case "$cppstdin" in
3726 "$wrapper") ;;
3727 *) $rm -f $wrapper;;
3728 esac
3729 $rm -f testcpp.c testcpp.out
3730
3731 : Set private lib path
3732 case "$plibpth" in
3733 '') if ./mips; then
3734                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3735         fi;;
3736 esac
3737 case "$libpth" in
3738 ' ') dlist='';;
3739 '') dlist="$loclibpth $plibpth $glibpth";;
3740 *) dlist="$libpth";;
3741 esac
3742
3743 : Now check and see which directories actually exist, avoiding duplicates
3744 libpth=''
3745 for xxx in $dlist
3746 do
3747     if $test -d $xxx; then
3748                 case " $libpth " in
3749                 *" $xxx "*) ;;
3750                 *) libpth="$libpth $xxx";;
3751                 esac
3752     fi
3753 done
3754 $cat <<'EOM'
3755
3756 Some systems have incompatible or broken versions of libraries.  Among
3757 the directories listed in the question below, please remove any you
3758 know not to be holding relevant libraries, and add any that are needed.
3759 Say "none" for none.
3760
3761 EOM
3762 case "$libpth" in
3763 '') dflt='none';;
3764 *)
3765         set X $libpth
3766         shift
3767         dflt=${1+"$@"}
3768         ;;
3769 esac
3770 rp="Directories to use for library searches?"
3771 . ./myread
3772 case "$ans" in
3773 none) libpth=' ';;
3774 *) libpth="$ans";;
3775 esac
3776
3777 : compute shared library extension
3778 case "$so" in
3779 '')
3780         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3781                 dflt='sl'
3782         else
3783                 dflt='so'
3784         fi
3785         ;;
3786 *) dflt="$so";;
3787 esac
3788 $cat <<EOM
3789
3790 On some systems, shared libraries may be available.  Answer 'none' if
3791 you want to suppress searching of shared libraries for the remaining
3792 of this configuration.
3793
3794 EOM
3795 rp='What is the file extension used for shared libraries?'
3796 . ./myread
3797 so="$ans"
3798
3799 : Define several unixisms.
3800 : Hints files or command line option can be used to override them.
3801 : The convoluted testing is in case hints files set either the old
3802 : or the new name.
3803 case "$_exe" in
3804 '')     case "$exe_ext" in
3805     '') ;;
3806         *)      _exe="$exe_ext" ;;
3807         esac
3808         ;;
3809 esac
3810 case "$_a" in
3811 '')     case "$lib_ext" in
3812     '') _a='.a';;
3813         *)      _a="$lib_ext" ;;
3814         esac
3815         ;;
3816 esac
3817 case "$_o" in
3818 '') case "$obj_ext" in
3819         '')     _o='.o';;
3820         *)      _o="$obj_ext";;
3821         esac
3822         ;;
3823 esac
3824 case "$p_" in
3825 '') case "$path_sep" in
3826         '')     p_=':';;
3827         *)      p_="$path_sep";;
3828         esac
3829         ;;
3830 esac
3831 exe_ext=$_exe
3832 lib_ext=$_a
3833 obj_ext=$_o
3834 path_sep=$p_
3835
3836 : Which makefile gets called first.  This is used by make depend.
3837 case "$firstmakefile" in
3838 '') firstmakefile='makefile';;
3839 esac
3840
3841 : Looking for optional libraries
3842 echo " "
3843 echo "Checking for optional libraries..." >&4
3844 case "$libs" in
3845 ' '|'') dflt='';;
3846 *) dflt="$libs";;
3847 esac
3848 case "$libswanted" in
3849 '') libswanted='c_s';;
3850 esac
3851 for thislib in $libswanted; do
3852         
3853         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3854                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3855                 echo "Found -l$thislib (shared)."
3856                 case " $dflt " in
3857                 *"-l$thislib "*);;
3858                 *) dflt="$dflt -l$thislib";;
3859                 esac
3860         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3861                 echo "Found -l$thislib (shared)."
3862                 case " $dflt " in
3863                 *"-l$thislib "*);;
3864                 *) dflt="$dflt -l$thislib";;
3865                 esac
3866         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3867                 echo "Found -l$thislib."
3868                 case " $dflt " in
3869                 *"-l$thislib "*);;
3870                 *) dflt="$dflt -l$thislib";;
3871                 esac
3872         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3873                 echo "Found -l$thislib."
3874                 case " $dflt " in
3875                 *"-l$thislib "*);;
3876                 *) dflt="$dflt -l$thislib";;
3877                 esac
3878         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3879                 echo "Found -l${thislib}_s."
3880                 case " $dflt " in
3881                 *"-l$thislib "*);;
3882                 *) dflt="$dflt -l${thislib}_s";;
3883                 esac
3884         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3885                 echo "Found -l$thislib."
3886                 case " $dflt " in
3887                 *"-l$thislib "*);;
3888                 *) dflt="$dflt -l$thislib";;
3889                 esac
3890         else
3891                 echo "No -l$thislib."
3892         fi
3893 done
3894 set X $dflt
3895 shift
3896 dflt="$*"
3897 case "$libs" in
3898 '') dflt="$dflt";;
3899 *) dflt="$libs";;
3900 esac
3901 case "$dflt" in
3902 ' '|'') dflt='none';;
3903 esac
3904
3905 $cat <<EOM
3906  
3907 Some versions of Unix support shared libraries, which make executables smaller
3908 but make load time slightly longer.
3909
3910 On some systems, mostly System V Release 3's, the shared library is included
3911 by putting the option "-lc_s" as the last thing on the cc command line when
3912 linking.  Other systems use shared libraries by default.  There may be other
3913 libraries needed to compile $package on your machine as well.  If your system
3914 needs the "-lc_s" option, include it here.  Include any other special libraries
3915 here as well.  Say "none" for none.
3916 EOM
3917
3918 echo " "
3919 rp="Any additional libraries?"
3920 . ./myread
3921 case "$ans" in
3922 none) libs=' ';;
3923 *) libs="$ans";;
3924 esac
3925
3926 : determine optimize, if desired, or use for debug flag also
3927 case "$optimize" in
3928 ' '|$undef) dflt='none';;
3929 '') dflt='-O';;
3930 *) dflt="$optimize";;
3931 esac
3932 $cat <<EOH
3933
3934 Some C compilers have problems with their optimizers.  By default, $package
3935 compiles with the -O flag to use the optimizer.  Alternately, you might want
3936 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3937 systems).  Either flag can be specified here.  To use neither flag, specify
3938 the word "none".
3939
3940 EOH
3941 rp="What optimizer/debugger flag should be used?"
3942 . ./myread
3943 optimize="$ans"
3944 case "$optimize" in
3945 'none') optimize=" ";;
3946 esac
3947
3948 dflt=''
3949 : We will not override a previous value, but we might want to
3950 : augment a hint file
3951 case "$hint" in
3952 none|recommended)
3953         case "$gccversion" in
3954         1*) dflt='-fpcc-struct-return' ;;
3955         esac
3956         case "$optimize" in
3957         *-g*) dflt="$dflt -DDEBUGGING";;
3958         esac
3959         case "$gccversion" in
3960         2*) if test -d /etc/conf/kconfig.d &&
3961                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3962                 then
3963                         dflt="$dflt -posix"
3964                 fi
3965                 ;;
3966         esac
3967         ;;
3968 esac
3969
3970 case "$mips_type" in
3971 *BSD*|'') inclwanted="$locincpth $usrinc";;
3972 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3973 esac
3974 for thisincl in $inclwanted; do
3975         if $test -d $thisincl; then
3976                 if $test x$thisincl != x$usrinc; then
3977                         case "$dflt" in
3978                         *$thisincl*);;
3979                         *) dflt="$dflt -I$thisincl";;
3980                         esac
3981                 fi
3982         fi
3983 done
3984
3985 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3986         xxx=true;
3987 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3988         xxx=true;
3989 else
3990         xxx=false;
3991 fi;
3992 if $xxx; then
3993         case "$dflt" in
3994         *$2*);;
3995         *) dflt="$dflt -D$2";;
3996         esac;
3997 fi'
3998
3999 if ./osf1; then
4000         set signal.h __LANGUAGE_C__; eval $inctest
4001 else
4002         set signal.h LANGUAGE_C; eval $inctest
4003 fi
4004
4005 case "$hint" in
4006 none|recommended) dflt="$ccflags $dflt" ;;
4007 *) dflt="$ccflags";;
4008 esac
4009
4010 case "$dflt" in
4011 ''|' ') dflt=none;;
4012 esac
4013 $cat <<EOH
4014
4015 Your C compiler may want other flags.  For this question you should include
4016 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4017 but you should NOT include libraries or ld flags like -lwhatever.  If you
4018 want $package to honor its debug switch, you should include -DDEBUGGING here.
4019 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4020
4021 To use no flags, specify the word "none".
4022
4023 EOH
4024 set X $dflt
4025 shift
4026 dflt=${1+"$@"}
4027 rp="Any additional cc flags?"
4028 . ./myread
4029 case "$ans" in
4030 none) ccflags='';;
4031 *) ccflags="$ans";;
4032 esac
4033
4034 : the following weeds options from ccflags that are of no interest to cpp
4035 cppflags="$ccflags"
4036 case "$gccversion" in
4037 1*) cppflags="$cppflags -D__GNUC__"
4038 esac
4039 case "$mips_type" in
4040 '');;
4041 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4042 esac
4043 case "$cppflags" in
4044 '');;
4045 *)
4046         echo " "
4047         echo "Let me guess what the preprocessor flags are..." >&4
4048         set X $cppflags
4049         shift
4050         cppflags=''
4051         $cat >cpp.c <<'EOM'
4052 #define BLURFL foo
4053
4054 BLURFL xx LFRULB
4055 EOM
4056         previous=''
4057         for flag in $*
4058         do
4059                 case "$flag" in
4060                 -*) ftry="$flag";;
4061                 *) ftry="$previous $flag";;
4062                 esac
4063                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4064                         >cpp1.out 2>/dev/null && \
4065                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4066                         >cpp2.out 2>/dev/null && \
4067                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4068                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4069                 then
4070                         cppflags="$cppflags $ftry"
4071                         previous=''
4072                 else
4073                         previous="$flag"
4074                 fi
4075         done
4076         set X $cppflags
4077         shift
4078         cppflags=${1+"$@"}
4079         case "$cppflags" in
4080         *-*)  echo "They appear to be: $cppflags";;
4081         esac
4082         $rm -f cpp.c cpp?.out
4083         ;;
4084 esac
4085
4086 : flags used in final linking phase
4087 case "$ldflags" in
4088 '') if ./venix; then
4089                 dflt='-i -z'
4090         else
4091                 dflt=''
4092         fi
4093         case "$ccflags" in
4094         *-posix*) dflt="$dflt -posix" ;;
4095         esac
4096         ;;
4097 *) dflt="$ldflags";;
4098 esac
4099
4100 : Try to guess additional flags to pick up local libraries.
4101 for thislibdir in $libpth; do
4102         case " $loclibpth " in
4103         *" $thislibdir "*)
4104                 case "$dflt " in 
4105                 *"-L$thislibdir "*) ;;
4106                 *)  dflt="$dflt -L$thislibdir" ;;
4107                 esac
4108                 ;;
4109         esac
4110 done
4111
4112 case "$dflt" in
4113 '') dflt='none' ;;
4114 esac
4115
4116 $cat <<EOH
4117
4118 Your C linker may need flags.  For this question you should
4119 include -L/whatever and any other flags used by the C linker, but you
4120 should NOT include libraries like -lwhatever.
4121
4122 Make sure you include the appropriate -L/path flags if your C linker
4123 does not normally search all of the directories you specified above,
4124 namely
4125         $libpth
4126 To use no flags, specify the word "none".
4127
4128 EOH
4129
4130 rp="Any additional ld flags (NOT including libraries)?"
4131 . ./myread
4132 case "$ans" in
4133 none) ldflags='';;
4134 *) ldflags="$ans";;
4135 esac
4136 rmlist="$rmlist pdp11"
4137
4138 : coherency check
4139 echo " "
4140 echo "Checking your choice of C compiler and flags for coherency..." >&4
4141 $cat > try.c <<'EOF'
4142 #include <stdio.h>
4143 main() { printf("Ok\n"); exit(0); }
4144 EOF
4145 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4146 shift
4147 $cat >try.msg <<'EOM'
4148 I've tried to compile and run the following simple program:
4149
4150 EOM
4151 $cat try.c
4152
4153 $cat >> try.msg <<EOM
4154
4155 I used the command:
4156
4157         $*
4158         ./try
4159
4160 and I got the following output:
4161
4162 EOM
4163 dflt=y
4164 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4165         if sh -c './try' >>try.msg 2>&1; then
4166                 xxx=`./try`
4167                 case "$xxx" in
4168                 "Ok") dflt=n ;;
4169                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4170                         case " $libs " in
4171                         *" -lsfio "*)
4172                                 cat >> try.msg <<'EOQS'
4173 If $libs contains -lsfio, and sfio is mis-configured, then it
4174 sometimes (apparently) runs and exits with a 0 status, but with no
4175 output!  It may have to do with sfio's use of _exit vs. exit.
4176
4177 EOQS
4178                                 rp="You have a big problem.  Shall I abort Configure"
4179                                 dflt=y
4180                                 ;;
4181                         esac
4182                         ;;
4183                 esac
4184         else
4185                 echo "The program compiled OK, but exited with status $?." >>try.msg
4186                 rp="You have a problem.  Shall I abort Configure"
4187                 dflt=y
4188         fi
4189 else
4190         echo "I can't compile the test program." >>try.msg
4191         rp="You have a BIG problem.  Shall I abort Configure"
4192         dflt=y
4193 fi
4194 case "$dflt" in
4195 y)
4196         $cat try.msg >&4
4197         case "$knowitall" in
4198         '')
4199                 echo "(The supplied flags or libraries might be incorrect.)"
4200                 ;;
4201         *) dflt=n;;
4202         esac
4203         echo " "
4204         . ./myread
4205         case "$ans" in
4206         n*|N*) ;;
4207         *)      echo "Ok.  Stopping Configure." >&4
4208                 exit 1
4209                 ;;
4210         esac
4211         ;;
4212 n) echo "OK, that should do.";;
4213 esac
4214 $rm -f try try.* core
4215
4216 : determine filename position in cpp output
4217 echo " "
4218 echo "Computing filename position in cpp output for #include directives..." >&4
4219 echo '#include <stdio.h>' > foo.c
4220 $cat >fieldn <<EOF
4221 $startsh
4222 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4223 $grep '^[       ]*#.*stdio\.h' | \
4224 while read cline; do
4225         pos=1
4226         set \$cline
4227         while $test \$# -gt 0; do
4228                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4229                         echo "\$pos"
4230                         exit 0
4231                 fi
4232                 shift
4233                 pos=\`expr \$pos + 1\`
4234         done
4235 done
4236 EOF
4237 chmod +x fieldn
4238 fieldn=`./fieldn`
4239 $rm -f foo.c fieldn
4240 case $fieldn in
4241 '') pos='???';;
4242 1) pos=first;;
4243 2) pos=second;;
4244 3) pos=third;;
4245 *) pos="${fieldn}th";;
4246 esac
4247 echo "Your cpp writes the filename in the $pos field of the line."
4248
4249 : locate header file
4250 $cat >findhdr <<EOF
4251 $startsh
4252 wanted=\$1
4253 name=''
4254 if test -f $usrinc/\$wanted; then
4255         echo "$usrinc/\$wanted"
4256         exit 0
4257 fi
4258 awkprg='{ print \$$fieldn }'
4259 echo "#include <\$wanted>" > foo\$\$.c
4260 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4261 $grep "^[       ]*#.*\$wanted" | \
4262 while read cline; do
4263         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4264         case "\$name" in
4265         */\$wanted) echo "\$name"; exit 0;;
4266         *) name='';;
4267         esac;
4268 done;
4269 $rm -f foo\$\$.c;
4270 case "\$name" in
4271 '') exit 1;;
4272 esac
4273 EOF
4274 chmod +x findhdr
4275
4276 : define an alternate in-header-list? function
4277 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4278 cont=true; xxf="echo \"<\$1> found.\" >&4";
4279 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4280 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4281 esac;
4282 case $# in 4) instead=instead;; *) instead="at last";; esac;
4283 while $test "$cont"; do
4284         xxx=`./findhdr $1`
4285         var=$2; eval "was=\$$2";
4286         if $test "$xxx" && $test -r "$xxx";
4287         then eval $xxf;
4288         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4289                 cont="";
4290         else eval $xxnf;
4291         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4292         set $yyy; shift; shift; yyy=$@;
4293         case $# in 0) cont="";;
4294         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4295                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4296         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4297                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4298         esac;
4299 done;
4300 while $test "$yyy";
4301 do set $yyy; var=$2; eval "was=\$$2";
4302         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4303         set $yyy; shift; shift; yyy=$@;
4304 done'
4305
4306 : see if this is a malloc.h system
4307 set malloc.h i_malloc
4308 eval $inhdr
4309
4310 : see if stdlib is available
4311 set stdlib.h i_stdlib
4312 eval $inhdr
4313
4314 : determine which malloc to compile in
4315 echo " "
4316 case "$usemymalloc" in
4317 ''|[yY]*|true|$define)  dflt='y' ;;
4318 *)      dflt='n' ;;
4319 esac
4320 rp="Do you wish to attempt to use the malloc that comes with $package?"
4321 . ./myread
4322 usemymalloc="$ans"
4323 case "$ans" in
4324 y*|true)
4325         usemymalloc='y'
4326         mallocsrc='malloc.c'
4327         mallocobj="malloc$_o"
4328         d_mymalloc="$define"
4329         case "$libs" in
4330         *-lmalloc*)
4331                 : Remove malloc from list of libraries to use
4332                 echo "Removing unneeded -lmalloc from library list" >&4
4333                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4334                 shift
4335                 libs="$*"
4336                 echo "libs = $libs" >&4
4337                 ;;
4338         esac
4339         ;;
4340 *)
4341         usemymalloc='n'
4342         mallocsrc=''
4343         mallocobj=''
4344         d_mymalloc="$undef"
4345         ;;
4346 esac
4347
4348 : compute the return types of malloc and free
4349 echo " "
4350 $cat >malloc.c <<END
4351 #$i_malloc I_MALLOC
4352 #$i_stdlib I_STDLIB
4353 #include <stdio.h>
4354 #include <sys/types.h>
4355 #ifdef I_MALLOC
4356 #include <malloc.h>
4357 #endif
4358 #ifdef I_STDLIB
4359 #include <stdlib.h>
4360 #endif
4361 #ifdef TRY_MALLOC
4362 void *malloc();
4363 #endif
4364 #ifdef TRY_FREE
4365 void free();
4366 #endif
4367 END
4368 case "$malloctype" in
4369 '')
4370         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4371                 malloctype='void *'
4372         else
4373                 malloctype='char *'
4374         fi
4375         ;;
4376 esac
4377 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4378
4379 case "$freetype" in
4380 '')
4381         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4382                 freetype='void'
4383         else
4384                 freetype='int'
4385         fi
4386         ;;
4387 esac
4388 echo "Your system uses $freetype free(), it would seem." >&4
4389 $rm -f malloc.[co]
4390 : Cruising for prototypes
4391 echo " "
4392 echo "Checking out function prototypes..." >&4
4393 $cat >prototype.c <<'EOCP'
4394 main(int argc, char *argv[]) {
4395         exit(0);}
4396 EOCP
4397 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4398         echo "Your C compiler appears to support function prototypes."
4399         val="$define"
4400 else
4401         echo "Your C compiler doesn't seem to understand function prototypes."
4402         val="$undef"
4403 fi
4404 set prototype
4405 eval $setvar
4406 $rm -f prototype*
4407
4408 case "$prototype" in
4409 "$define") ;;
4410 *)      ansi2knr='ansi2knr'
4411         echo " "
4412         cat <<EOM >&4
4413
4414 $me:  FATAL ERROR:
4415 This version of $package can only be compiled by a compiler that 
4416 understands function prototypes.  Unfortunately, your C compiler 
4417         $cc $ccflags
4418 doesn't seem to understand them.  Sorry about that.
4419
4420 If GNU cc is available for your system, perhaps you could try that instead.  
4421
4422 Eventually, we hope to support building Perl with pre-ANSI compilers.
4423 If you would like to help in that effort, please contact <perlbug@perl.org>.
4424
4425 Aborting Configure now.
4426 EOM
4427         exit 2
4428         ;;
4429 esac
4430
4431 : determine where public executables go
4432 echo " "
4433 set dflt bin bin
4434 eval $prefixit
4435 fn=d~
4436 rp='Pathname where the public executables will reside?'
4437 . ./getfile
4438 if $test "X$ansexp" != "X$binexp"; then
4439         installbin=''
4440 fi
4441 bin="$ans"
4442 binexp="$ansexp"
4443 if $afs; then
4444         $cat <<EOM
4445
4446 Since you are running AFS, I need to distinguish the directory in which
4447 executables reside from the directory in which they are installed (and from
4448 which they are presumably copied to the former directory by occult means).
4449
4450 EOM
4451         case "$installbin" in
4452         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4453         *) dflt="$installbin";;
4454         esac
4455         fn=de~
4456         rp='Where will public executables be installed?'
4457         . ./getfile
4458         installbin="$ans"
4459 else
4460         installbin="$binexp"
4461 fi
4462
4463 : define a shorthand compile call
4464 compile='
4465 mc_file=$1;
4466 shift;
4467 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4468 : define a shorthand compile call for compilations that should be ok.
4469 compile_ok='
4470 mc_file=$1;
4471 shift;
4472 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4473
4474 echo " "
4475 echo "Checking for GNU C Library..." >&4
4476 cat >gnulibc.c <<EOM
4477 #include <stdio.h>
4478 int
4479 main()
4480 {
4481 #ifdef __GLIBC__
4482     exit(0);
4483 #else
4484     exit(1);
4485 #endif
4486 }
4487 EOM
4488 set gnulibc
4489 if eval $compile_ok && ./gnulibc; then
4490         val="$define"
4491         echo "You are using the GNU C Library"
4492 else
4493         val="$undef"
4494         echo "You are not using the GNU C Library"
4495 fi
4496 $rm -f gnulibc*
4497 set d_gnulibc
4498 eval $setvar
4499
4500 : see if nm is to be used to determine whether a symbol is defined or not
4501 case "$usenm" in
4502 '')
4503         dflt=''
4504         case "$d_gnulibc" in
4505         "$define")
4506                 echo " "
4507                 echo "nm probably won't work on the GNU C Library." >&4
4508                 dflt=n
4509                 ;;
4510         esac
4511         case "$dflt" in
4512         '') 
4513                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4514                         echo " "
4515                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4516                         echo "'nm' won't be sufficient on this sytem." >&4
4517                         dflt=n
4518                 fi
4519                 ;;
4520         esac
4521         case "$dflt" in
4522         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4523                 if $test $dflt -gt 20; then
4524                         dflt=y
4525                 else
4526                         dflt=n
4527                 fi
4528                 ;;
4529         esac
4530         ;;
4531 *)
4532         case "$usenm" in
4533         true|$define) dflt=y;;
4534         *) dflt=n;;
4535         esac
4536         ;;
4537 esac
4538 $cat <<EOM
4539
4540 I can use $nm to extract the symbols from your C libraries. This
4541 is a time consuming task which may generate huge output on the disk (up
4542 to 3 megabytes) but that should make the symbols extraction faster. The
4543 alternative is to skip the 'nm' extraction part and to compile a small
4544 test program instead to determine whether each symbol is present. If
4545 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4546 this may be the best solution.
4547
4548 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4549
4550 EOM
4551 rp="Shall I use $nm to extract C symbols from the libraries?"
4552 . ./myread
4553 case "$ans" in
4554 [Nn]*) usenm=false;;
4555 *) usenm=true;;
4556 esac
4557
4558 runnm=$usenm
4559 case "$reuseval" in
4560 true) runnm=false;;
4561 esac
4562
4563 : nm options which may be necessary
4564 case "$nm_opt" in
4565 '') if $test -f /mach_boot; then
4566                 nm_opt=''       # Mach
4567         elif $test -d /usr/ccs/lib; then
4568                 nm_opt='-p'     # Solaris (and SunOS?)
4569         elif $test -f /dgux; then
4570                 nm_opt='-p'     # DG-UX
4571         elif $test -f /lib64/rld; then
4572                 nm_opt='-p'     # 64-bit Irix
4573         else
4574                 nm_opt=''
4575         fi;;
4576 esac
4577
4578 : nm options which may be necessary for shared libraries but illegal
4579 : for archive libraries.  Thank you, Linux.
4580 case "$nm_so_opt" in
4581 '')     case "$myuname" in
4582         *linux*)
4583                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4584                         nm_so_opt='--dynamic'
4585                 fi
4586                 ;;
4587         esac
4588         ;;
4589 esac
4590
4591 case "$runnm" in
4592 true)
4593 : get list of predefined functions in a handy place
4594 echo " "
4595 case "$libc" in
4596 '') libc=unknown
4597         case "$libs" in
4598         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4599         esac
4600         ;;
4601 esac
4602 libnames='';
4603 case "$libs" in
4604 '') ;;
4605 *)  for thislib in $libs; do
4606         case "$thislib" in
4607         -lc|-lc_s)
4608                 : Handle C library specially below.
4609                 ;;
4610         -l*)
4611                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4612                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4613                         :
4614                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4615                         :
4616                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4617                         :
4618                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4619                         :
4620                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4621                         :
4622                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4623                         :
4624                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4625                         :
4626                 else
4627                         try=''
4628                 fi
4629                 libnames="$libnames $try"
4630                 ;;
4631         *) libnames="$libnames $thislib" ;;
4632         esac
4633         done
4634         ;;
4635 esac
4636 xxx=normal
4637 case "$libc" in
4638 unknown)
4639         set /lib/libc.$so
4640         for xxx in $libpth; do
4641                 $test -r $1 || set $xxx/libc.$so
4642                 : The messy sed command sorts on library version numbers.
4643                 $test -r $1 || \
4644                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4645                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4646                                 h
4647                                 s/[0-9][0-9]*/0000&/g
4648                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4649                                 G
4650                                 s/\n/ /' | \
4651                          sort | $sed -e 's/^.* //'`
4652                 eval set \$$#
4653         done
4654         $test -r $1 || set /usr/ccs/lib/libc.$so
4655         $test -r $1 || set /lib/libsys_s$_a
4656         ;;
4657 *)
4658         set blurfl
4659         ;;
4660 esac
4661 if $test -r "$1"; then
4662         echo "Your (shared) C library seems to be in $1."
4663         libc="$1"
4664 elif $test -r /lib/libc && $test -r /lib/clib; then
4665         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4666         xxx=apollo
4667         libc='/lib/clib /lib/libc'
4668         if $test -r /lib/syslib; then
4669                 echo "(Your math library is in /lib/syslib.)"
4670                 libc="$libc /lib/syslib"
4671         fi
4672 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4673         echo "Your C library seems to be in $libc, as you said before."
4674 elif $test -r $incpath/usr/lib/libc$_a; then
4675         libc=$incpath/usr/lib/libc$_a;
4676         echo "Your C library seems to be in $libc.  That's fine."
4677 elif $test -r /lib/libc$_a; then
4678         libc=/lib/libc$_a;
4679         echo "Your C library seems to be in $libc.  You're normal."
4680 else
4681         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4682                 :
4683         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4684                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4685         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4686                 :
4687         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4688                 :
4689         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4690                 :
4691         else
4692                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4693         fi
4694         if $test -r "$tans"; then
4695                 echo "Your C library seems to be in $tans, of all places."
4696                 libc=$tans
4697         else
4698                 libc='blurfl'
4699         fi
4700 fi
4701 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4702         dflt="$libc"
4703         cat <<EOM
4704
4705 If the guess above is wrong (which it might be if you're using a strange
4706 compiler, or your machine supports multiple models), you can override it here.
4707
4708 EOM
4709 else
4710         dflt=''
4711         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4712         cat >&4 <<EOM
4713 I can't seem to find your C library.  I've looked in the following places:
4714
4715 EOM
4716         $sed 's/^/      /' libpath
4717         cat <<EOM
4718
4719 None of these seems to contain your C library. I need to get its name...
4720
4721 EOM
4722 fi
4723 fn=f
4724 rp='Where is your C library?'
4725 . ./getfile
4726 libc="$ans"
4727
4728 echo " "
4729 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4730 set X `cat libnames`
4731 shift
4732 xxx=files
4733 case $# in 1) xxx=file; esac
4734 echo "Extracting names from the following $xxx for later perusal:" >&4
4735 echo " "
4736 $sed 's/^/      /' libnames >&4
4737 echo " "
4738 $echo $n "This may take a while...$c" >&4
4739
4740 for file in $*; do
4741         case $file in
4742         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4743         *) $nm $nm_opt $file 2>/dev/null;;
4744         esac
4745 done >libc.tmp
4746
4747 $echo $n ".$c"
4748 $grep fprintf libc.tmp > libc.ptf
4749 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4750 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4751 xxx='[ADTSIW]'
4752 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4753         eval $xscan;\
4754         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4755                 eval $xrun
4756 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4757         eval $xscan;\
4758         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4759                 eval $xrun
4760 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4761         eval $xscan;\
4762         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4763                 eval $xrun
4764 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4765         eval $xscan;\
4766         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4767                 eval $xrun
4768 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4769         eval $xscan;\
4770         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4771                 eval $xrun
4772 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4773         eval $xscan;\
4774         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4775                 eval $xrun
4776 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4777                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4778         eval $xscan;\
4779         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4780                 eval $xrun
4781 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4782         eval $xscan;\
4783         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4784                 eval $xrun
4785 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4786         eval $xscan;\
4787         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4788                 eval $xrun
4789 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4790         eval $xscan;\
4791         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4792                 eval $xrun
4793 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4794         eval $xscan;\
4795         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4796                 eval $xrun
4797 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4798         eval $xscan;\
4799         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4800                 eval $xrun
4801 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4802         eval $xscan;\
4803         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4804                 eval $xrun
4805 else
4806         $nm -p $* 2>/dev/null >libc.tmp
4807         $grep fprintf libc.tmp > libc.ptf
4808         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4809                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4810         then
4811                 nm_opt='-p'
4812                 eval $xrun
4813         else
4814                 echo " "
4815                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4816                 com=''
4817                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4818                         for thisname in $libnames $libc; do
4819                                 $ar t $thisname >>libc.tmp
4820                         done
4821                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4822                         echo "Ok." >&4
4823                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4824                         # Repeat libc to extract forwarders to DLL entries too
4825                         for thisname in $libnames $libc; do
4826                                 $ar tv $thisname >>libc.tmp
4827                                 # Revision 50 of EMX has bug in $ar.
4828                                 # it will not extract forwarders to DLL entries
4829                                 # Use emximp which will extract exactly them.
4830                                 emximp -o tmp.imp $thisname \
4831                                     2>/dev/null && \
4832                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4833                                     < tmp.imp >>libc.tmp
4834                                 $rm tmp.imp
4835                         done
4836                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4837                         echo "Ok." >&4
4838                 else
4839                         echo "$ar didn't seem to work right." >&4
4840                         echo "Maybe this is a Cray...trying bld instead..." >&4
4841                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4842                         then
4843                                 for thisname in $libnames; do
4844                                         bld t $libnames | \
4845                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4846                                         $ar t $thisname >>libc.tmp
4847                                 done
4848                                 echo "Ok." >&4
4849                         else
4850                                 echo "That didn't work either.  Giving up." >&4
4851                                 exit 1
4852                         fi
4853                 fi
4854         fi
4855 fi
4856 nm_extract="$com"
4857 if $test -f /lib/syscalls.exp; then
4858         echo " "
4859         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4860         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4861 fi
4862 ;;
4863 esac
4864 $rm -f libnames libpath
4865
4866 : see if dld is available
4867 set dld.h i_dld
4868 eval $inhdr
4869
4870 : is a C symbol defined?
4871 csym='tlook=$1;
4872 case "$3" in
4873 -v) tf=libc.tmp; tc=""; tdc="";;
4874 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4875 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4876 esac;
4877 tx=yes;
4878 case "$reuseval-$4" in
4879 true-) ;;
4880 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4881 esac;
4882 case "$tx" in
4883 yes)
4884         case "$runnm" in
4885         true)
4886                 if $contains $tlook $tf >/dev/null 2>&1;
4887                 then tval=true;
4888                 else tval=false;
4889                 fi;;
4890         *)
4891                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4892                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4893                 then tval=true;
4894                 else tval=false;
4895                 fi;
4896                 $rm -f t t.c;;
4897         esac;;
4898 *)
4899         case "$tval" in
4900         $define) tval=true;;
4901         *) tval=false;;
4902         esac;;
4903 esac;
4904 eval "$2=$tval"'
4905
4906 : define an is-in-libc? function
4907 inlibc='echo " "; td=$define; tu=$undef;
4908 sym=$1; var=$2; eval "was=\$$2";
4909 tx=yes;
4910 case "$reuseval$was" in
4911 true) ;;
4912 true*) tx=no;;
4913 esac;
4914 case "$tx" in
4915 yes)
4916         set $sym tres -f;
4917         eval $csym;
4918         case "$tres" in
4919         true)
4920                 echo "$sym() found." >&4;
4921                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4922         *)
4923                 echo "$sym() NOT found." >&4;
4924                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4925         esac;;
4926 *)
4927         case "$was" in
4928         $define) echo "$sym() found." >&4;;
4929         *) echo "$sym() NOT found." >&4;;
4930         esac;;
4931 esac'
4932
4933 : see if dlopen exists
4934 xxx_runnm="$runnm"
4935 runnm=false
4936 set dlopen d_dlopen
4937 eval $inlibc
4938 runnm="$xxx_runnm"
4939
4940 : determine which dynamic loading, if any, to compile in
4941 echo " "
4942 dldir="ext/DynaLoader"
4943 case "$usedl" in
4944 $define|y|true)
4945         dflt='y'
4946         usedl="$define"
4947         ;;
4948 $undef|n|false)
4949         dflt='n'
4950         usedl="$undef"
4951         ;;
4952 *) 
4953         dflt='n'
4954         case "$d_dlopen" in
4955             $define) dflt='y' ;;
4956         esac
4957         case "$i_dld" in
4958             $define) dflt='y' ;;
4959         esac
4960         : Does a dl_xxx.xs file exist for this operating system
4961         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
4962         ;;
4963 esac
4964 rp="Do you wish to use dynamic loading?"
4965 . ./myread
4966 usedl="$ans"
4967 case "$ans" in
4968 y*) usedl="$define"
4969         case "$dlsrc" in
4970         '')
4971                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
4972                         dflt="$dldir/dl_${osname}.xs"
4973                 elif $test "$d_dlopen" = "$define" ; then
4974                         dflt="$dldir/dl_dlopen.xs"
4975                 elif $test "$i_dld" = "$define" ; then
4976                         dflt="$dldir/dl_dld.xs"
4977                 else
4978                         dflt=''
4979                 fi
4980                 ;;
4981         *)      dflt="$dldir/$dlsrc"
4982                 ;;
4983         esac
4984     echo "The following dynamic loading files are available:"
4985         : Can not go over to $dldir because getfile has path hard-coded in.
4986         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
4987         rp="Source file to use for dynamic loading"
4988         fn="fne"
4989         # XXX This getfile call will fail the existence check if you try 
4990         # building away from $src (this is not supported yet).
4991         . ./getfile
4992         usedl="$define"
4993         : emulate basename
4994         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4995
4996         $cat << EOM
4997
4998 Some systems may require passing special flags to $cc -c to
4999 compile modules that will be used to create a shared library.
5000 To use no flags, say "none".
5001
5002 EOM
5003     case "$cccdlflags" in
5004     '') case "$gccversion" in
5005                 '') case "$osname" in
5006                         hpux)   dflt='+z' ;;
5007                         next)   dflt='none' ;;
5008                         irix*)  dflt='-KPIC' ;;
5009                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5010                         sunos)  dflt='-pic' ;;
5011                         *)      dflt='none' ;;
5012                     esac
5013                         ;;
5014                 *)  case "$osname" in
5015                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5016                         *)      dflt='-fpic' ;;
5017                     esac ;;
5018             esac ;;
5019         ' ') dflt='none' ;;
5020     *)  dflt="$cccdlflags" ;;
5021     esac
5022     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5023     . ./myread
5024     case "$ans" in
5025     none) cccdlflags=' ' ;;
5026     *) cccdlflags="$ans" ;;
5027     esac
5028
5029     cat << EOM
5030
5031 Some systems use ld to create libraries that can be dynamically loaded,
5032 while other systems (such as those using ELF) use $cc.
5033
5034 EOM
5035         case "$ld" in
5036         '')     $cat >try.c <<'EOM'
5037 /* Test for whether ELF binaries are produced */
5038 #include <fcntl.h>
5039 #include <stdlib.h>
5040 main() {
5041         char b[4];
5042         int i = open("a.out",O_RDONLY);
5043         if(i == -1) 
5044                 exit(1); /* fail */
5045         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5046                 exit(0); /* succeed (yes, it's ELF) */
5047         else
5048                 exit(1); /* fail */
5049 }
5050 EOM
5051                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5052                         cat <<EOM
5053 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5054 EOM
5055                         dflt="$cc"
5056                 else
5057                         echo "I'll use ld to build dynamic libraries."
5058                         dflt='ld'
5059                 fi
5060                 rm -f try.c a.out
5061                 ;;
5062         *)      dflt="$ld"
5063                 ;;
5064         esac
5065
5066     rp="What command should be used to create dynamic libraries?"
5067     . ./myread
5068         ld="$ans"
5069
5070     cat << EOM
5071
5072 Some systems may require passing special flags to $ld to create a
5073 library that can be dynamically loaded.  If your ld flags include
5074 -L/other/path options to locate libraries outside your loader's normal
5075 search path, you may need to specify those -L options here as well.  To
5076 use no flags, say "none".
5077
5078 EOM
5079     case "$lddlflags" in
5080     '') case "$osname" in
5081                         hpux)  dflt='-b' ;;
5082                         linux|irix*)    dflt='-shared' ;;
5083                         next)  dflt='none' ;;
5084                         solaris) dflt='-G' ;;
5085                         sunos) dflt='-assert nodefinitions' ;;
5086                         svr4*|esix*) dflt="-G $ldflags" ;;
5087                 *)     dflt='none' ;;
5088                         esac
5089                         ;;
5090     *) dflt="$lddlflags" ;;
5091     esac
5092
5093         : Try to guess additional flags to pick up local libraries.
5094         for thisflag in $ldflags; do
5095                 case "$thisflag" in
5096                 -L*)
5097                         case " $dflt " in
5098                         *" $thisflag "*) ;;
5099                         *) dflt="$dflt $thisflag" ;;
5100                         esac
5101                         ;;
5102                 esac
5103         done
5104
5105         case "$dflt" in
5106         ''|' ') dflt='none' ;;
5107         esac
5108
5109     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5110     . ./myread
5111     case "$ans" in
5112     none) lddlflags=' ' ;;
5113     *) lddlflags="$ans" ;;
5114     esac
5115
5116         cat <<EOM
5117
5118 Some systems may require passing special flags to $cc to indicate that
5119 the resulting executable will use dynamic linking.  To use no flags,
5120 say "none".
5121
5122 EOM
5123     case "$ccdlflags" in
5124     '') case "$osname" in
5125                 hpux)   dflt='-Wl,-E' ;;
5126                 linux)  dflt='-rdynamic' ;;
5127                 next)   dflt='none' ;;
5128                 sunos)  dflt='none' ;;
5129                 *)      dflt='none' ;;
5130             esac ;;
5131     ' ')  dflt='none' ;;
5132     *)  dflt="$ccdlflags" ;;
5133     esac
5134     rp="Any special flags to pass to $cc to use dynamic loading?"
5135     . ./myread
5136     case "$ans" in
5137     none) ccdlflags=' ' ;;
5138     *) ccdlflags="$ans" ;;
5139     esac
5140     ;;
5141 *)  usedl="$undef"
5142         ld='ld'
5143     dlsrc='dl_none.xs'
5144     lddlflags=''
5145     ccdlflags=''
5146     ;;
5147 esac
5148
5149 also=''
5150 case "$usedl" in
5151 $undef)
5152         # No dynamic loading being used, so don't bother even to prompt.
5153         useshrplib='false'
5154         ;;
5155 *)      case "$useshrplib" in
5156         '')     case "$osname" in
5157                 svr4*|dgux|dynixptx|esix|powerux)
5158                         dflt=y
5159                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5160                         ;;
5161                 next*)
5162                         case "$osvers" in
5163                         4*)     dflt=y
5164                                 also='Building a shared libperl is needed for MAB support.'
5165                                 ;;
5166                         *)      dflt=n
5167                                 ;;
5168                         esac
5169                         ;;
5170                 *)      dflt=n
5171                         ;;
5172                 esac
5173                 ;;
5174         $define|true|[Yy]*)
5175                 dflt=y
5176                 ;;
5177         *)      dflt=n
5178                 ;;
5179         esac
5180         $cat << EOM
5181
5182 The perl executable is normally obtained by linking perlmain.c with
5183 libperl${_a}, any static extensions (usually just DynaLoader), and
5184 any other libraries needed on this system (such as -lm, etc.).  Since
5185 your system supports dynamic loading, it is probably possible to build
5186 a shared libperl.$so.  If you will have more than one executable linked
5187 to libperl.$so, this will significantly reduce the size of each
5188 executable, but it may have a noticeable affect on performance.  The
5189 default is probably sensible for your system.
5190 $also
5191
5192 EOM
5193         rp="Build a shared libperl.$so (y/n)"
5194         . ./myread
5195         case "$ans" in
5196         true|$define|[Yy]*)
5197                 useshrplib='true'
5198                 # Why does next4 have to be so different?
5199                 case "${osname}${osvers}" in
5200                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5201                 os2*)   xxx='' ;; # Nothing special needed.
5202                 *)              xxx='LD_LIBRARY_PATH' ;;
5203                 esac
5204                 if test X"$xxx" != "X"; then
5205                         $cat <<EOM  | $tee -a ../config.msg >&4
5206
5207 To build perl, you must add the current working directory to your
5208 $xxx environment variable before running make.  You can do
5209 this with
5210    $xxx=\`pwd\`; export $xxx
5211 for Bourne-style shells, or
5212    setenv $xxx \`pwd\`
5213 for Csh-style shells.  You *MUST* do this before running make.
5214
5215 EOM
5216                 fi
5217                 ;;
5218         *)      useshrplib='false' ;;
5219         esac
5220         ;;
5221 esac
5222
5223 case "$useshrplib" in
5224 true)
5225         case "$libperl" in
5226         '')
5227                 # Figure out a good name for libperl.so.  Since it gets stored in
5228                 # a version-specific architecture-dependent library, the version
5229                 # number isn't really that important, except for making cc/ld happy.
5230                 #
5231                 # A name such as libperl.so.3.1
5232                 majmin="libperl.$so.$patchlevel.$subversion"
5233                 # A name such as libperl.so.301
5234                 majonly=`echo $patchlevel $subversion |
5235                         $awk '{printf "%d%02d", $1, $2}'`
5236                 majonly=libperl.$so.$majonly
5237                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5238                 # rely on figuring it out from the naming of libc.
5239                 case "${osname}${osvers}" in
5240                 next4*)
5241                         dflt=libperl.5.$so
5242                         # XXX How handle the --version stuff for MAB?
5243                         ;;
5244                 linux*)  # ld won't link with a bare -lperl otherwise.
5245                         dflt=libperl.$so
5246                         ;;
5247                 *)      # Try to guess based on whether libc has major.minor.
5248                         case "$libc" in
5249                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5250                         *libc.$so.[0-9]*) dflt=$majonly ;;
5251                         *)      dflt=libperl.$so ;;
5252                         esac
5253                         ;;
5254                 esac
5255                 ;;
5256         *)      dflt=$libperl
5257                 ;;
5258         esac
5259         cat << EOM
5260
5261 I need to select a good name for the shared libperl.  If your system uses
5262 library names with major and minor numbers, then you might want something
5263 like $majmin.  Alternatively, if your system uses a single version
5264 number for shared libraries, then you might want to use $majonly.
5265 Or, your system might be quite happy with a simple libperl.$so.
5266
5267 Since the shared libperl will get installed into a version-specific
5268 architecture-dependent directory, the version number of the shared perl
5269 library probably isn't important, so the default should be o.k.
5270
5271 EOM
5272         rp='What name do you want to give to the shared libperl?'
5273         . ./myread
5274         libperl=$ans
5275         echo "Ok, I'll use $libperl"
5276         ;;
5277 *)
5278         libperl="libperl${_a}"
5279         ;;
5280 esac
5281
5282 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5283 case "$shrpdir" in
5284 '') ;;
5285 *)      $cat >&4 <<EOM
5286 WARNING:  Use of the shrpdir variable for the installation location of
5287 the shared $libperl is not supported.  It was never documented and
5288 will not work in this version.  Let me (jhi@iki.fi)
5289 know of any problems this may cause.
5290
5291 EOM
5292         case "$shrpdir" in
5293         "$archlibexp/CORE")
5294                 $cat >&4 <<EOM
5295 But your current setting of $shrpdir is
5296 the default anyway, so it's harmless.
5297 EOM
5298                 ;;
5299         *)
5300                 $cat >&4 <<EOM
5301 Further, your current attempted setting of $shrpdir
5302 conflicts with the value of $archlibexp/CORE
5303 that installperl will use.
5304 EOM
5305                 ;;
5306         esac
5307         ;;
5308 esac
5309
5310 # How will the perl executable find the installed shared $libperl?
5311 # Add $xxx to ccdlflags.
5312 # If we can't figure out a command-line option, use $shrpenv to
5313 # set env LD_RUN_PATH.  The main perl makefile uses this.
5314 shrpdir=$archlibexp/CORE
5315 xxx=''
5316 tmp_shrpenv=''
5317 if "$useshrplib"; then
5318     case "$osname" in 
5319         aix)
5320                 # We'll set it in Makefile.SH...
5321                 ;;
5322         solaris|netbsd)
5323                 xxx="-R $shrpdir"
5324                 ;;
5325         freebsd)
5326                 xxx="-Wl,-R$shrpdir"
5327                 ;;
5328         linux|irix*|dec_osf)
5329                 xxx="-Wl,-rpath,$shrpdir"
5330                 ;;
5331         next)
5332                 # next doesn't like the default...
5333                 ;;
5334         *)
5335                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5336                 ;;
5337         esac
5338         case "$xxx" in
5339         '') ;;
5340         *)      
5341                 # Only add $xxx if it isn't already in ccdlflags.
5342                 case " $ccdlflags " in
5343                 *" $xxx "*)     ;;
5344                 *)      ccdlflags="$ccdlflags $xxx"
5345                         cat <<EOM >&4
5346
5347 Adding $xxx to the flags
5348 passed to $ld so that the perl executable will find the 
5349 installed shared $libperl.
5350
5351 EOM
5352                         ;;
5353                 esac
5354                 ;;
5355         esac
5356 fi
5357 # Respect a hint or command-line value.
5358 case "$shrpenv" in
5359 '') shrpenv="$tmp_shrpenv" ;;
5360 esac
5361
5362 : determine where manual pages go
5363 set man1dir man1dir none
5364 eval $prefixit
5365 $cat <<EOM
5366
5367 $spackage has manual pages available in source form.
5368 EOM
5369 case "$nroff" in
5370 nroff)
5371         echo "However, you don't have nroff, so they're probably useless to you."
5372         case "$man1dir" in
5373         '') man1dir="none";;
5374         esac;;
5375 esac
5376 echo "If you don't want the manual sources installed, answer 'none'."
5377 case "$man1dir" in
5378 ' ') dflt=none
5379         ;;
5380 '')
5381         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5382         lookpath="$lookpath $prefixexp/man/p_man/man1"
5383         lookpath="$lookpath $prefixexp/man/u_man/man1"
5384         lookpath="$lookpath $prefixexp/man/man.1"
5385         case "$sysman" in
5386         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5387         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5388         esac
5389         set dflt
5390         eval $prefixup
5391         ;;
5392 *)  dflt="$man1dir"
5393         ;;
5394 esac
5395 echo " "
5396 fn=dn+~
5397 rp="Where do the main $spackage manual pages (source) go?"
5398 . ./getfile
5399 if $test "X$man1direxp" != "X$ansexp"; then
5400         installman1dir=''
5401 fi
5402 man1dir="$ans"
5403 man1direxp="$ansexp"
5404 case "$man1dir" in
5405 '') man1dir=' '
5406         installman1dir='';;
5407 esac
5408 if $afs; then
5409         $cat <<EOM
5410
5411 Since you are running AFS, I need to distinguish the directory in which
5412 manual pages reside from the directory in which they are installed (and from
5413 which they are presumably copied to the former directory by occult means).
5414
5415 EOM
5416         case "$installman1dir" in
5417         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5418         *) dflt="$installman1dir";;
5419         esac
5420         fn=de~
5421         rp='Where will man pages be installed?'
5422         . ./getfile
5423         installman1dir="$ans"
5424 else
5425         installman1dir="$man1direxp"
5426 fi
5427
5428 : What suffix to use on installed man pages
5429
5430 case "$man1dir" in
5431 ' ')
5432         man1ext='0'
5433         ;;
5434 *)
5435         rp="What suffix should be used for the main $spackage man pages?"
5436         case "$man1ext" in
5437         '')     case "$man1dir" in
5438                 *1)  dflt=1 ;;
5439                 *1p) dflt=1p ;;
5440                 *1pm) dflt=1pm ;;
5441                 *l) dflt=l;;
5442                 *n) dflt=n;;
5443                 *o) dflt=o;;
5444                 *p) dflt=p;;
5445                 *C) dflt=C;;
5446                 *L) dflt=L;;
5447                 *L1) dflt=L1;;
5448                 *) dflt=1;;
5449                 esac
5450                 ;;
5451         *)      dflt="$man1ext";;
5452         esac
5453         . ./myread
5454         man1ext="$ans"
5455         ;;
5456 esac
5457
5458 : see if we can have long filenames
5459 echo " "
5460 rmlist="$rmlist /tmp/cf$$"
5461 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5462 first=123456789abcdef
5463 second=/tmp/cf$$/$first
5464 $rm -f $first $second
5465 if (echo hi >$first) 2>/dev/null; then
5466         if $test -f 123456789abcde; then
5467                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5468                 val="$undef"
5469         else
5470                 if (echo hi >$second) 2>/dev/null; then
5471                         if $test -f /tmp/cf$$/123456789abcde; then
5472                                 $cat <<'EOM'
5473 That's peculiar... You can have filenames longer than 14 characters, but only
5474 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5475 I shall consider your system cannot support long filenames at all.
5476 EOM
5477                                 val="$undef"
5478                         else
5479                                 echo 'You can have filenames longer than 14 characters.' >&4
5480                                 val="$define"
5481                         fi
5482                 else
5483                         $cat <<'EOM'
5484 How confusing! Some of your filesystems are sane enough to allow filenames
5485 longer than 14 characters but some others like /tmp can't even think about them.
5486 So, for now on, I shall assume your kernel does not allow them at all.
5487 EOM
5488                         val="$undef"
5489                 fi
5490         fi
5491 else
5492         $cat <<'EOM'
5493 You can't have filenames longer than 14 chars.  You can't even think about them!
5494 EOM
5495         val="$undef"
5496 fi 
5497 set d_flexfnam
5498 eval $setvar
5499 $rm -rf /tmp/cf$$ 123456789abcde*
5500
5501 : determine where library module manual pages go
5502 set man3dir man3dir none
5503 eval $prefixit
5504 $cat <<EOM
5505
5506 $spackage has manual pages for many of the library modules.
5507 EOM
5508
5509 case "$nroff" in
5510 nroff)
5511         $cat <<'EOM'
5512 However, you don't have nroff, so they're probably useless to you.
5513 EOM
5514         case "$man3dir" in
5515         '') man3dir="none";;
5516         esac;;
5517 esac
5518
5519 case "$d_flexfnam" in
5520 undef)
5521         $cat <<'EOM'
5522 However, your system can't handle the long file names like File::Basename.3. 
5523 EOM
5524         case "$man3dir" in
5525         '') man3dir="none";;
5526         esac;;
5527 esac
5528
5529 echo "If you don't want the manual sources installed, answer 'none'."
5530 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5531 case "$man3dir" in
5532 '')     case "$prefix" in 
5533         *$prog*) dflt=`echo $man1dir | 
5534                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5535         *)      dflt="$privlib/man/man3" ;;
5536         esac
5537         ;;
5538 ' ') dflt=none;;
5539 *)      dflt="$man3dir" ;;
5540 esac
5541 echo " "
5542
5543 fn=dn+~
5544 rp="Where do the $package library man pages (source) go?"
5545 . ./getfile
5546 if test "X$man3direxp" != "X$ansexp"; then
5547         installman3dir=''
5548 fi
5549
5550 man3dir="$ans"
5551 man3direxp="$ansexp"
5552 case "$man3dir" in
5553 '') man3dir=' '
5554         installman3dir='';;
5555 esac
5556 if $afs; then
5557         $cat <<EOM
5558
5559 Since you are running AFS, I need to distinguish the directory in which
5560 manual pages reside from the directory in which they are installed (and from
5561 which they are presumably copied to the former directory by occult means).
5562
5563 EOM
5564         case "$installman3dir" in
5565         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5566         *) dflt="$installman3dir";;
5567         esac
5568         fn=de~
5569         rp='Where will man pages be installed?'
5570         . ./getfile
5571         installman3dir="$ans"
5572 else
5573         installman3dir="$man3direxp"
5574 fi
5575
5576 : What suffix to use on installed man pages
5577
5578 case "$man3dir" in
5579 ' ')
5580         man3ext='0'
5581         ;;
5582 *)
5583         rp="What suffix should be used for the $package library man pages?"
5584         case "$man3ext" in
5585         '')     case "$man3dir" in
5586                 *3)  dflt=3 ;;
5587                 *3p) dflt=3p ;;
5588                 *3pm) dflt=3pm ;;
5589                 *l) dflt=l;;
5590                 *n) dflt=n;;
5591                 *o) dflt=o;;
5592                 *p) dflt=p;;
5593                 *C) dflt=C;;
5594                 *L) dflt=L;;
5595                 *L3) dflt=L3;;
5596                 *) dflt=3;;
5597                 esac
5598                 ;;
5599         *)      dflt="$man3ext";;
5600         esac
5601         . ./myread
5602         man3ext="$ans"
5603         ;;
5604 esac
5605
5606 : see if we have to deal with yellow pages, now NIS.
5607 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5608         if $test -f /usr/etc/nibindd; then
5609                 echo " "
5610                 echo "I'm fairly confident you're on a NeXT."
5611                 echo " "
5612                 rp='Do you get the hosts file via NetInfo?'
5613                 dflt=y
5614                 case "$hostcat" in
5615                 nidump*) ;;
5616                 '') ;;
5617                 *) dflt=n;;
5618                 esac
5619                 . ./myread
5620                 case "$ans" in
5621                 y*) hostcat='nidump hosts .';;
5622                 *)      case "$hostcat" in
5623                         nidump*) hostcat='';;
5624                         esac
5625                         ;;
5626                 esac
5627         fi
5628         case "$hostcat" in
5629         nidump*) ;;
5630         *)
5631                 case "$hostcat" in
5632                 *ypcat*) dflt=y;;
5633                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5634                                 dflt=y
5635                         else
5636                                 dflt=n
5637                         fi;;
5638                 *) dflt=n;;
5639                 esac
5640                 echo " "
5641                 rp='Are you getting the hosts file via yellow pages?'
5642                 . ./myread
5643                 case "$ans" in
5644                 y*) hostcat='ypcat hosts';;
5645                 *) hostcat='cat /etc/hosts';;
5646                 esac
5647                 ;;
5648         esac
5649 fi
5650 case "$hostcat" in
5651 '') hostcat='cat /etc/hosts';;
5652 esac
5653 case "$groupcat" in
5654 '') groupcat='cat /etc/group';;
5655 esac
5656 case "$passcat" in
5657 '') passcat='cat /etc/passwd';;
5658 esac
5659
5660 : now get the host name
5661 echo " "
5662 echo "Figuring out host name..." >&4
5663 case "$myhostname" in
5664 '') cont=true
5665         echo 'Maybe "hostname" will work...'
5666         if tans=`sh -c hostname 2>&1` ; then
5667                 myhostname=$tans
5668                 phostname=hostname
5669                 cont=''
5670         fi
5671         ;;
5672 *) cont='';;
5673 esac
5674 if $test "$cont"; then
5675         if ./xenix; then
5676                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5677                 if tans=`cat /etc/systemid 2>&1` ; then
5678                         myhostname=$tans
5679                         phostname='cat /etc/systemid'
5680                         echo "Whadyaknow.  Xenix always was a bit strange..."
5681                         cont=''
5682                 fi
5683         elif $test -r /etc/systemid; then
5684                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5685         fi
5686 fi
5687 if $test "$cont"; then
5688         echo 'No, maybe "uuname -l" will work...'
5689         if tans=`sh -c 'uuname -l' 2>&1` ; then
5690                 myhostname=$tans
5691                 phostname='uuname -l'
5692         else
5693                 echo 'Strange.  Maybe "uname -n" will work...'
5694                 if tans=`sh -c 'uname -n' 2>&1` ; then
5695                         myhostname=$tans
5696                         phostname='uname -n'
5697                 else
5698                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5699                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5700                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5701                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5702                         else
5703                                 case "$myhostname" in
5704                                 '') echo "Does this machine have an identity crisis or something?"
5705                                         phostname='';;
5706                                 *)
5707                                         echo "Well, you said $myhostname before..."
5708                                         phostname='echo $myhostname';;
5709                                 esac
5710                         fi
5711                 fi
5712         fi
5713 fi
5714 : you do not want to know about this
5715 set $myhostname
5716 myhostname=$1
5717
5718 : verify guess
5719 if $test "$myhostname" ; then
5720         dflt=y
5721         rp='Your host name appears to be "'$myhostname'".'" Right?"
5722         . ./myread
5723         case "$ans" in
5724         y*) ;;
5725         *) myhostname='';;
5726         esac
5727 fi
5728
5729 : bad guess or no guess
5730 while $test "X$myhostname" = X ; do
5731         dflt=''
5732         rp="Please type the (one word) name of your host:"
5733         . ./myread
5734         myhostname="$ans"
5735 done
5736
5737 : translate upper to lower if necessary
5738 case "$myhostname" in
5739 *[A-Z]*)
5740         echo "(Normalizing case in your host name)"
5741         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5742         ;;
5743 esac
5744
5745 case "$myhostname" in
5746 *.*)
5747         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5748         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5749         echo "(Trimming domain name from host name--host name is now $myhostname)"
5750         ;;
5751 *) case "$mydomain" in
5752         '')
5753                 {
5754                         test "X$hostcat" = "Xypcat hosts" &&
5755                         ypmatch "$myhostname" hosts 2>/dev/null |\
5756                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5757                         $test -s hosts
5758                 } || {
5759                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5760                                         /[       ]$myhostname[  . ]/p" > hosts
5761                 }
5762                 tmp_re="[       . ]"
5763                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5764                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5765                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5766                         hosts | $sort | $uniq | \
5767                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5768                 case `$echo X$dflt` in
5769                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5770                         dflt=.
5771                         ;;
5772                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5773                         ;;
5774                 esac
5775                 case "$dflt" in
5776                 .)
5777                         tans=`./loc resolv.conf X /etc /usr/etc`
5778                         if $test -f "$tans"; then
5779                                 echo "(Attempting domain name extraction from $tans)"
5780                                 dflt=.`$sed -n -e 's/   / /g' \
5781                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
5782                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5783                                 case "$dflt" in
5784                                 .) dflt=.`$sed -n -e 's/        / /g' \
5785                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
5786                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5787                                         ;;
5788                                 esac
5789                         fi
5790                         ;;
5791                 esac
5792                 case "$dflt" in
5793                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5794                         dflt=.`sh -c domainname 2>/dev/null`
5795                         case "$dflt" in
5796                         '') dflt='.';;
5797                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5798                         esac
5799                         ;;
5800                 esac
5801                 case "$dflt" in
5802                 .) echo "(Lost all hope -- silly guess then)"
5803                         dflt='.uucp'
5804                         ;;
5805                 esac
5806                 $rm -f hosts
5807                 ;;
5808         *) dflt="$mydomain";;
5809         esac;;
5810 esac
5811 echo " "
5812 rp="What is your domain name?"
5813 . ./myread
5814 tans="$ans"
5815 case "$ans" in
5816 '') ;;
5817 .*) ;;
5818 *) tans=".$tans";;
5819 esac
5820 mydomain="$tans"
5821
5822 : translate upper to lower if necessary
5823 case "$mydomain" in
5824 *[A-Z]*)
5825         echo "(Normalizing case in your domain name)"
5826         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5827         ;;
5828 esac
5829
5830 : a little sanity check here
5831 case "$phostname" in
5832 '') ;;
5833 *)
5834         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5835         $myhostname$mydomain|$myhostname) ;;
5836         *)
5837                 case "$phostname" in
5838                 sed*)
5839                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5840                         ;;
5841                 *)
5842                         echo "(That doesn't agree with your $phostname command, by the way.)"
5843                         ;;
5844                 esac
5845         ;;
5846         esac
5847         ;;
5848 esac
5849
5850 $cat <<EOM
5851
5852 I need to get your e-mail address in Internet format if possible, i.e.
5853 something like user@host.domain. Please answer accurately since I have
5854 no easy means to double check it. The default value provided below
5855 is most probably close to the reality but may not be valid from outside
5856 your organization...
5857
5858 EOM
5859 cont=x
5860 while test "$cont"; do
5861         case "$cf_email" in
5862         '') dflt="$cf_by@$myhostname$mydomain";;
5863         *) dflt="$cf_email";;
5864         esac
5865         rp='What is your e-mail address?'
5866         . ./myread
5867         cf_email="$ans"
5868         case "$cf_email" in
5869         *@*.*) cont='' ;;
5870         *)
5871                 rp='Address does not look like an Internet one.  Use it anyway?'
5872                 case "$fastread" in
5873                 yes) dflt=y ;;
5874                 *) dflt=n ;;
5875                 esac
5876                 . ./myread
5877                 case "$ans" in
5878                 y*) cont='' ;;
5879                 *) echo " " ;;
5880                 esac
5881                 ;;
5882         esac
5883 done
5884
5885 $cat <<EOM
5886
5887 If you or somebody else will be maintaining perl at your site, please
5888 fill in the correct e-mail address here so that they may be contacted
5889 if necessary. Currently, the "perlbug" program included with perl
5890 will send mail to this address in addition to perlbug@perl.com. You may
5891 enter "none" for no administrator.
5892
5893 EOM
5894 case "$perladmin" in
5895 '') dflt="$cf_email";;
5896 *) dflt="$perladmin";;
5897 esac
5898 rp='Perl administrator e-mail address'
5899 . ./myread
5900 perladmin="$ans"
5901
5902 : figure out how to guarantee perl startup
5903 case "$startperl" in
5904 '')
5905         case "$sharpbang" in
5906         *!)
5907                 $cat <<EOH
5908
5909 I can use the #! construct to start perl on your system. This will
5910 make startup of perl scripts faster, but may cause problems if you
5911 want to share those scripts and perl is not in a standard place
5912 ($binexp/perl) on all your platforms. The alternative is to force
5913 a shell by starting the script with a single ':' character.
5914
5915 EOH
5916                 dflt="$binexp/perl"
5917                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5918                 . ./myread
5919                 case "$ans" in
5920                 none)   startperl=": # use perl";;
5921                 *)      startperl="#!$ans"
5922                         if $test 30 -lt `echo "$ans" | wc -c`; then
5923                                 $cat >&4 <<EOM
5924
5925 WARNING:  Some systems limit the #! command to 32 characters.
5926 If you experience difficulty running Perl scripts with #!, try
5927 installing Perl in a directory with a shorter pathname.
5928
5929 EOM
5930                         fi ;;
5931                 esac
5932                 ;;
5933         *) startperl=": # use perl"
5934                 ;;
5935         esac
5936         ;;
5937 esac
5938 echo "I'll use $startperl to start perl scripts."
5939
5940 : figure best path for perl in scripts
5941 case "$perlpath" in
5942 '')
5943         perlpath="$binexp/perl"
5944         case "$startperl" in
5945         *!*) ;;
5946         *)
5947                 $cat <<EOH
5948
5949 I will use the "eval 'exec'" idiom to start Perl on your system.
5950 I can use the full path of your Perl binary for this purpose, but
5951 doing so may cause problems if you want to share those scripts and
5952 Perl is not always in a standard place ($binexp/perl).
5953
5954 EOH
5955                 dflt="$binexp/perl"
5956                 rp="What path shall I use in \"eval 'exec'\"?"
5957                 . ./myread
5958                 perlpath="$ans"
5959                 ;;
5960         esac
5961         ;;
5962 esac
5963 case "$startperl" in
5964 *!*)    ;;
5965 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
5966 esac
5967
5968 : determine where public executable scripts go
5969 set scriptdir scriptdir
5970 eval $prefixit
5971 case "$scriptdir" in
5972 '')
5973         dflt="$bin"
5974         : guess some guesses
5975         $test -d /usr/share/scripts && dflt=/usr/share/scripts
5976         $test -d /usr/share/bin && dflt=/usr/share/bin
5977         $test -d /usr/local/script && dflt=/usr/local/script
5978         $test -d $prefixexp/script && dflt=$prefixexp/script
5979         set dflt
5980         eval $prefixup
5981         ;;
5982 *)  dflt="$scriptdir"
5983         ;;
5984 esac
5985 $cat <<EOM
5986  
5987 Some installations have a separate directory just for executable scripts so
5988 that they can mount it across multiple architectures but keep the scripts in
5989 one spot.  You might, for example, have a subdirectory of /usr/share for this.
5990 Or you might just lump your scripts in with all your other executables.
5991  
5992 EOM
5993 fn=d~
5994 rp='Where do you keep publicly executable scripts?'
5995 . ./getfile
5996 if $test "X$ansexp" != "X$scriptdirexp"; then
5997         installscript=''
5998 fi
5999 scriptdir="$ans"
6000 scriptdirexp="$ansexp"
6001 if $afs; then
6002         $cat <<EOM
6003
6004 Since you are running AFS, I need to distinguish the directory in which
6005 scripts reside from the directory in which they are installed (and from
6006 which they are presumably copied to the former directory by occult means).
6007
6008 EOM
6009         case "$installscript" in
6010         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6011         *) dflt="$installscript";;
6012         esac
6013         fn=de~
6014         rp='Where will public scripts be installed?'
6015         . ./getfile
6016         installscript="$ans"
6017 else
6018         installscript="$scriptdirexp"
6019 fi
6020
6021 : determine where site specific libraries go.
6022 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6023 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6024 case "$prefix" in
6025 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6026 *)       set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6027 esac
6028 eval $prefixit
6029 $cat <<EOM
6030
6031 The installation process will also create a directory for
6032 site-specific extensions and modules.  Some users find it convenient
6033 to place all local files in this directory rather than in the main
6034 distribution directory.
6035
6036 EOM
6037 fn=d~+
6038 rp='Pathname for the site-specific library files?'
6039 . ./getfile
6040 if $test "X$sitelibexp" != "X$ansexp"; then
6041         installsitelib=''
6042 fi
6043 sitelib="$ans"
6044 sitelibexp="$ansexp"
6045 if $afs; then
6046         $cat <<EOM
6047
6048 Since you are running AFS, I need to distinguish the directory in
6049 which site-specific files reside from the directory in which they are
6050 installed (and from which they are presumably copied to the former
6051 directory by occult means).
6052
6053 EOM
6054         case "$installsitelib" in
6055         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6056         *) dflt="$installsitelib";;
6057         esac
6058         fn=de~
6059         rp='Where will site-specific files be installed?'
6060         . ./getfile
6061         installsitelib="$ans"
6062 else
6063         installsitelib="$sitelibexp"
6064 fi
6065
6066 : determine where site specific architecture-dependent libraries go.
6067 : sitelib  default is /usr/local/lib/perl5/site_perl/$apiversion
6068 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6069 : sitelib may have an optional trailing /share.
6070 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6071 tdflt="$tdflt/$archname"
6072 set sitearch sitearch none
6073 eval $prefixit
6074 case "$sitearch" in
6075 '')     dflt="$tdflt" ;;
6076 *)      dflt="$sitearch" ;;
6077 esac
6078 $cat <<EOM
6079
6080 The installation process will also create a directory for
6081 architecture-dependent site-specific extensions and modules.
6082
6083 EOM
6084 fn=nd~+
6085 rp='Pathname for the site-specific architecture-dependent library files?'
6086 . ./getfile
6087 if $test "X$sitearchexp" != "X$ansexp"; then
6088         installsitearch=''
6089 fi
6090 sitearch="$ans"
6091 sitearchexp="$ansexp"
6092 if $afs; then
6093         $cat <<EOM
6094
6095 Since you are running AFS, I need to distinguish the directory in
6096 which site-specific architecture-dependent library files reside from
6097 the directory in which they are installed (and from which they are
6098 presumably copied to the former directory by occult means).
6099
6100 EOM
6101         case "$installsitearch" in
6102         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6103         *) dflt="$installsitearch";;
6104         esac
6105         fn=de~
6106         rp='Where will site-specific architecture-dependent files be installed?'
6107         . ./getfile
6108         installsitearch="$ans"
6109 else
6110         installsitearch="$sitearchexp"
6111 fi
6112
6113 cat <<EOM
6114
6115 Previous version of $package used the standard IO mechanisms as defined
6116 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6117 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6118 the default.  This abstraction layer can use AT&T's sfio (if you already
6119 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6120 problems with some extension modules.  Using PerlIO with stdio is safe,
6121 but it is slower than plain stdio and therefore is not the default.
6122
6123 If this doesn't make any sense to you, just accept the default 'n'.
6124 EOM
6125 case "$useperlio" in
6126 $define|true|[yY]*)     dflt='y';;
6127 *) dflt='n';;
6128 esac
6129 rp='Use the experimental PerlIO abstraction layer?'
6130 . ./myread
6131 case "$ans" in
6132 y|Y) 
6133         val="$define"
6134         ;;     
6135 *)      
6136         echo "Ok, doing things the stdio way"
6137         val="$undef"
6138         ;;
6139 esac
6140 set useperlio
6141 eval $setvar 
6142
6143 : Check how to convert floats to strings.
6144 if test "X$d_Gconvert" = X; then
6145         echo " "
6146         echo "Checking for an efficient way to convert floats to strings."
6147         $cat >try.c <<'EOP'
6148 #ifdef TRY_gconvert
6149 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6150 char *myname = "gconvert";
6151 #endif
6152 #ifdef TRY_gcvt
6153 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6154 char *myname = "gcvt";
6155 #endif
6156 #ifdef TRY_sprintf
6157 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6158 char *myname = "sprintf";
6159 #endif
6160
6161 #include <stdio.h>
6162
6163 int
6164 checkit(expect, got)
6165 char *expect;
6166 char *got;
6167 {
6168     if (strcmp(expect, got)) {
6169                 printf("%s oddity:  Expected %s, got %s\n",
6170                         myname, expect, got);
6171                 exit(1);
6172         }
6173 }
6174
6175 int
6176 main()
6177
6178         char buf[64]; 
6179         buf[63] = '\0';
6180
6181         /* This must be 1st test on (which?) platform */
6182         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6183         Gconvert(0.1, 8, 0, buf);
6184         checkit("0.1", buf);
6185
6186         Gconvert(1.0, 8, 0, buf); 
6187         checkit("1", buf);
6188
6189         Gconvert(0.0, 8, 0, buf); 
6190         checkit("0", buf);
6191
6192         Gconvert(-1.0, 8, 0, buf); 
6193         checkit("-1", buf);
6194
6195         /* Some Linux gcvt's give 1.e+5 here. */
6196         Gconvert(100000.0, 8, 0, buf); 
6197         checkit("100000", buf);
6198         
6199         /* Some Linux gcvt's give -1.e+5 here. */
6200         Gconvert(-100000.0, 8, 0, buf); 
6201         checkit("-100000", buf);
6202
6203         exit(0);
6204 }
6205 EOP
6206         case "$d_Gconvert" in
6207         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6208         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6209         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6210         *) xxx_list='gconvert gcvt sprintf' ;;
6211         esac
6212
6213         for xxx_convert in $xxx_list; do
6214                 echo "Trying $xxx_convert"
6215                 $rm -f try try$_o
6216                 set try -DTRY_$xxx_convert
6217                 if eval $compile; then
6218                         echo "$xxx_convert" found. >&4
6219                         if ./try; then
6220                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6221                                 break;
6222                         else
6223                                 echo "...But $xxx_convert didn't work as I expected."
6224                         fi
6225                 else
6226                         echo "$xxx_convert NOT found." >&4
6227                 fi
6228         done
6229                 
6230         case "$xxx_convert" in
6231         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6232         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6233         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6234         esac
6235 fi
6236
6237 : Initialize h_fcntl
6238 h_fcntl=false
6239
6240 : Initialize h_sysfile
6241 h_sysfile=false
6242
6243 : access call always available on UNIX
6244 set access d_access
6245 eval $inlibc
6246
6247 : locate the flags for 'access()'
6248 case "$d_access" in
6249 "$define")
6250         echo " "
6251         $cat >access.c <<'EOCP'
6252 #include <sys/types.h>
6253 #ifdef I_FCNTL
6254 #include <fcntl.h>
6255 #endif
6256 #ifdef I_SYS_FILE
6257 #include <sys/file.h>
6258 #endif
6259 #ifdef I_UNISTD
6260 #include <unistd.h>
6261 #endif
6262 main() {
6263         exit(R_OK);
6264 }
6265 EOCP
6266         : check sys/file.h first, no particular reason here
6267         if $test `./findhdr sys/file.h` && \
6268                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6269                 h_sysfile=true;
6270                 echo "<sys/file.h> defines the *_OK access constants." >&4
6271         elif $test `./findhdr fcntl.h` && \
6272                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6273                 h_fcntl=true;
6274                 echo "<fcntl.h> defines the *_OK access constants." >&4
6275         elif $test `./findhdr unistd.h` && \
6276                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6277                 echo "<unistd.h> defines the *_OK access constants." >&4
6278         else
6279                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6280         fi
6281         ;;
6282 esac
6283 $rm -f access*
6284
6285 : see if accessx exists
6286 set accessx d_accessx
6287 eval $inlibc
6288
6289 : see if alarm exists
6290 set alarm d_alarm
6291 eval $inlibc
6292
6293 : Look for GNU-cc style attribute checking
6294 echo " "
6295 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6296 $cat >attrib.c <<'EOCP'
6297 #include <stdio.h>
6298 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6299 EOCP
6300 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6301         if $contains 'warning' attrib.out >/dev/null 2>&1; then
6302                 echo "Your C compiler doesn't fully support __attribute__."
6303                 val="$undef"
6304         else
6305                 echo "Your C compiler supports __attribute__."
6306                 val="$define"
6307         fi
6308 else
6309         echo "Your C compiler doesn't seem to understand __attribute__ at all."
6310         val="$undef"
6311 fi
6312 set d_attribut
6313 eval $setvar
6314 $rm -f attrib*
6315
6316 : see if bcmp exists
6317 set bcmp d_bcmp
6318 eval $inlibc
6319
6320 : see if bcopy exists
6321 set bcopy d_bcopy
6322 eval $inlibc
6323
6324 : see if this is a unistd.h system
6325 set unistd.h i_unistd
6326 eval $inhdr
6327
6328 : see if getpgrp exists
6329 set getpgrp d_getpgrp
6330 eval $inlibc
6331
6332 case "$d_getpgrp" in
6333 "$define")
6334         echo " "
6335         echo "Checking to see which flavor of getpgrp is in use..."
6336         $cat >set.c <<EOP
6337 #$i_unistd I_UNISTD
6338 #include <sys/types.h>
6339 #ifdef I_UNISTD
6340 #  include <unistd.h>
6341 #endif
6342 main()
6343 {
6344         if (getuid() == 0) {
6345                 printf("(I see you are running Configure as super-user...)\n");
6346                 setuid(1);
6347         }
6348 #ifdef TRY_BSD_PGRP
6349         if (getpgrp(1) == 0)
6350                 exit(0);
6351 #else
6352         if (getpgrp() > 0)
6353                 exit(0);
6354 #endif
6355         exit(1);
6356 }
6357 EOP
6358         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6359                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6360                 val="$define"
6361         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6362                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6363                 val="$undef"
6364         else
6365                 echo "I can't seem to compile and run the test program."
6366                 if ./usg; then
6367                         xxx="a USG one, i.e. you use getpgrp()."
6368                 else
6369                         # SVR4 systems can appear rather BSD-ish.
6370                         case "$i_unistd" in
6371                         $undef)
6372                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
6373                                 val="$define"
6374                                 ;;
6375                         $define)
6376                                 xxx="probably a USG one, i.e. you use getpgrp()."
6377                                 val="$undef"
6378                                 ;;
6379                         esac
6380                 fi
6381                 echo "Assuming your getpgrp is $xxx" >&4
6382         fi
6383         ;;
6384 *) val="$undef";;
6385 esac
6386 set d_bsdgetpgrp
6387 eval $setvar
6388 $rm -f set set.c
6389
6390 : see if setpgrp exists
6391 set setpgrp d_setpgrp
6392 eval $inlibc
6393
6394 case "$d_setpgrp" in
6395 "$define")
6396         echo " "
6397         echo "Checking to see which flavor of setpgrp is in use..."
6398         $cat >set.c <<EOP
6399 #$i_unistd I_UNISTD
6400 #include <sys/types.h>
6401 #ifdef I_UNISTD
6402 #  include <unistd.h>
6403 #endif
6404 main()
6405 {
6406         if (getuid() == 0) {
6407                 printf("(I see you are running Configure as super-user...)\n");
6408                 setuid(1);
6409         }
6410 #ifdef TRY_BSD_PGRP
6411         if (-1 == setpgrp(1, 1))
6412                 exit(0);
6413 #else
6414         if (setpgrp() != -1)
6415                 exit(0);
6416 #endif
6417         exit(1);
6418 }
6419 EOP
6420         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6421                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6422                 val="$define"
6423         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6424                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6425                 val="$undef"
6426         else
6427                 echo "(I can't seem to compile and run the test program.)"
6428                 if ./usg; then
6429                         xxx="a USG one, i.e. you use setpgrp()."
6430                 else
6431                         # SVR4 systems can appear rather BSD-ish.
6432                         case "$i_unistd" in
6433                         $undef)
6434                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6435                                 val="$define"
6436                                 ;;
6437                         $define)
6438                                 xxx="probably a USG one, i.e. you use setpgrp()."
6439                                 val="$undef"
6440                                 ;;
6441                         esac
6442                 fi
6443                 echo "Assuming your setpgrp is $xxx" >&4
6444         fi
6445         ;;
6446 *) val="$undef";;
6447 esac
6448 set d_bsdsetpgrp
6449 eval $setvar
6450 $rm -f set set.c
6451 : see if bzero exists
6452 set bzero d_bzero
6453 eval $inlibc
6454
6455 : check for lengths of integral types
6456 echo " "
6457 case "$intsize" in
6458 '')
6459         echo "Checking to see how big your integers are..." >&4
6460         $cat >intsize.c <<'EOCP'
6461 #include <stdio.h>
6462 main()
6463 {
6464         printf("intsize=%d;\n", sizeof(int));
6465         printf("longsize=%d;\n", sizeof(long));
6466         printf("shortsize=%d;\n", sizeof(short));
6467         exit(0);
6468 }
6469 EOCP
6470         set intsize
6471         if eval $compile_ok && ./intsize > /dev/null; then
6472                 eval `./intsize`
6473                 echo "Your integers are $intsize bytes long."
6474                 echo "Your long integers are $longsize bytes long."
6475                 echo "Your short integers are $shortsize bytes long."
6476         else
6477                 $cat >&4 <<EOM
6478 !
6479 Help! I can't compile and run the intsize test program: please enlighten me!
6480 (This is probably a misconfiguration in your system or libraries, and
6481 you really ought to fix it.  Still, I'll try anyway.)
6482 !
6483 EOM
6484                 dflt=4
6485                 rp="What is the size of an integer (in bytes)?"
6486                 . ./myread
6487                 intsize="$ans"
6488                 dflt=$intsize
6489                 rp="What is the size of a long integer (in bytes)?"
6490                 . ./myread
6491                 longsize="$ans"
6492                 dflt=2
6493                 rp="What is the size of a short integer (in bytes)?"
6494                 . ./myread
6495                 shortsize="$ans"
6496         fi
6497         ;;
6498 esac
6499 $rm -f intsize intsize.*
6500
6501 : see if signal is declared as pointer to function returning int or void
6502 echo " "
6503 xxx=`./findhdr signal.h`
6504 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6505 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
6506         echo "You have int (*signal())() instead of void." >&4
6507         val="$undef"
6508 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
6509         echo "You have void (*signal())()." >&4
6510         val="$define"
6511 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6512         echo "You have int (*signal())() instead of void." >&4
6513         val="$undef"
6514 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6515         echo "You have void (*signal())()." >&4
6516         val="$define"
6517 else
6518         case "$d_voidsig" in
6519         '')
6520         echo "I can't determine whether signal handler returns void or int..." >&4
6521                 dflt=void
6522                 rp="What type does your signal handler return?"
6523                 . ./myread
6524                 case "$ans" in
6525                 v*) val="$define";;
6526                 *) val="$undef";;
6527                 esac;;
6528         "$define")
6529                 echo "As you already told me, signal handler returns void." >&4
6530                 val="$define"
6531                 ;;
6532         *)      echo "As you already told me, signal handler returns int." >&4
6533                 val="$undef"
6534                 ;;
6535         esac
6536 fi
6537 set d_voidsig
6538 eval $setvar
6539 case "$d_voidsig" in
6540 "$define") signal_t="void";;
6541 *) signal_t="int";;
6542 esac
6543 $rm -f $$.tmp
6544
6545 : check for ability to cast large floats to 32-bit ints.
6546 echo " "
6547 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6548 if $test "$intsize" -ge 4; then
6549         xxx=int
6550 else
6551         xxx=long
6552 fi
6553 $cat >try.c <<EOCP
6554 #include <stdio.h>
6555 #include <sys/types.h>
6556 #include <signal.h>
6557 $signal_t blech(s) int s; { exit(3); }
6558 main()
6559 {
6560         $xxx i32;
6561         double f, g;
6562         int result = 0;
6563         char str[16];
6564         signal(SIGFPE, blech);
6565
6566         /* Don't let compiler optimize the test away.  Store the number 
6567            in a writable string for gcc to pass to sscanf under HP/UX.
6568         */
6569         sprintf(str, "2147483647");
6570         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6571         g = 10 * f;
6572         i32  = ($xxx) g;
6573
6574         /* x86 processors will probably give 0x8000 0000, which is a
6575        sign change.  We don't want that.  We want to mimic SPARC
6576            behavior here, which is to preserve the sign and give
6577            back 0x7fff ffff.
6578         */
6579         if (i32 != ($xxx) f)
6580                 result |= 1;
6581         exit(result);
6582 }
6583 EOCP
6584 set try
6585 if eval $compile_ok; then
6586         ./try
6587         yyy=$?
6588 else
6589         echo "(I can't seem to compile the test program--assuming it can't)"
6590         yyy=1
6591 fi
6592 case "$yyy" in
6593 0)      val="$define"
6594         echo "Yup, it can."
6595         ;;
6596 *)      val="$undef"
6597         echo "Nope, it can't."
6598         ;;
6599 esac
6600 set d_casti32
6601 eval $setvar
6602 $rm -f try try.*
6603
6604 : check for ability to cast negative floats to unsigned
6605 echo " "
6606 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6607 $cat >try.c <<EOCP
6608 #include <stdio.h>
6609 #include <sys/types.h>
6610 #include <signal.h>
6611 $signal_t blech(s) int s; { exit(7); }
6612 $signal_t blech_in_list(s) int s; { exit(4); }
6613 unsigned long dummy_long(p) unsigned long p; { return p; }
6614 unsigned int dummy_int(p) unsigned int p; { return p; }
6615 unsigned short dummy_short(p) unsigned short p; { return p; }
6616 main()
6617 {
6618         double f;
6619         unsigned long along;
6620         unsigned int aint;
6621         unsigned short ashort;
6622         int result = 0;
6623         char str[16];
6624         
6625         /* Frustrate gcc-2.7.2's optimizer which failed this test with
6626            a direct f = -123. assignment.  gcc-2.8.0 reportedly
6627            optimized the whole file away
6628         */
6629         /* Store the number in a writable string for gcc to pass to 
6630            sscanf under HP/UX.
6631         */
6632         sprintf(str, "-123");
6633         sscanf(str, "%lf", &f);  /* f = -123.; */
6634
6635         signal(SIGFPE, blech);
6636         along = (unsigned long)f;
6637         aint = (unsigned int)f;
6638         ashort = (unsigned short)f;
6639         if (along != (unsigned long)-123)
6640                 result |= 1;
6641         if (aint != (unsigned int)-123)
6642                 result |= 1;
6643         if (ashort != (unsigned short)-123)
6644                 result |= 1;
6645         sprintf(str, "1073741824.");
6646         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6647         f = f + f;
6648         along = 0;
6649         along = (unsigned long)f;
6650         if (along != 0x80000000)
6651                 result |= 2;
6652         f -= 1.;
6653         along = 0;
6654         along = (unsigned long)f;
6655         if (along != 0x7fffffff)
6656                 result |= 1;
6657         f += 2.;
6658         along = 0;
6659         along = (unsigned long)f;
6660         if (along != 0x80000001)
6661                 result |= 2;
6662         if (result)
6663                 exit(result);
6664         signal(SIGFPE, blech_in_list);
6665         sprintf(str, "123.");
6666         sscanf(str, "%lf", &f);  /* f = 123.; */
6667         along = dummy_long((unsigned long)f);
6668         aint = dummy_int((unsigned int)f);
6669         ashort = dummy_short((unsigned short)f);
6670         if (along != (unsigned long)123)
6671                 result |= 4;
6672         if (aint != (unsigned int)123)
6673                 result |= 4;
6674         if (ashort != (unsigned short)123)
6675                 result |= 4;
6676         exit(result);
6677
6678 }
6679 EOCP
6680 set try
6681 if eval $compile_ok; then
6682         ./try
6683         castflags=$?
6684 else
6685         echo "(I can't seem to compile the test program--assuming it can't)"
6686         castflags=7
6687 fi
6688 case "$castflags" in
6689 0)      val="$define"
6690         echo "Yup, it can."
6691         ;;
6692 *)      val="$undef"
6693         echo "Nope, it can't."
6694         ;;
6695 esac
6696 set d_castneg
6697 eval $setvar
6698 $rm -f try.*
6699
6700 : see if vprintf exists
6701 echo " "
6702 if set vprintf val -f d_vprintf; eval $csym; $val; then
6703         echo 'vprintf() found.' >&4
6704         val="$define"
6705         $cat >vprintf.c <<'EOF'
6706 #include <varargs.h>
6707
6708 main() { xxx("foo"); }
6709
6710 xxx(va_alist)
6711 va_dcl
6712 {
6713         va_list args;
6714         char buf[10];
6715
6716         va_start(args);
6717         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6718 }
6719 EOF
6720         set vprintf
6721         if eval $compile && ./vprintf; then
6722                 echo "Your vsprintf() returns (int)." >&4
6723                 val2="$undef"
6724         else
6725                 echo "Your vsprintf() returns (char*)." >&4
6726                 val2="$define"
6727         fi
6728 else
6729         echo 'vprintf() NOT found.' >&4
6730                 val="$undef"
6731                 val2="$undef"
6732 fi
6733 set d_vprintf
6734 eval $setvar
6735 val=$val2
6736 set d_charvspr
6737 eval $setvar
6738
6739 : see if chown exists
6740 set chown d_chown
6741 eval $inlibc
6742
6743 : see if chroot exists
6744 set chroot d_chroot
6745 eval $inlibc
6746
6747 : see if chsize exists
6748 set chsize d_chsize
6749 eval $inlibc
6750
6751 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6752 while $test $# -ge 2; do
6753         case "$1" in
6754         $define) echo "#include <$2>";;
6755         esac ;
6756     shift 2;
6757 done > try.c;
6758 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6759 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6760         val="$define";
6761 else
6762         val="$undef";
6763 fi;
6764 set $varname;
6765 eval $setvar;
6766 $rm -f try.c try.o'
6767
6768 : see if this is a sys/uio.h system
6769 set sys/uio.h i_sysuio
6770 eval $inhdr
6771
6772 echo "Checking to see if your system supports struct iovec..." >&4
6773 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6774 eval $hasfield
6775 case "$d_iovec_s" in
6776 "$define")      echo "Yup, it does." >&4
6777                 ;;
6778 *)              echo "Nope, it doesn't." >&4
6779                 ;;
6780 esac
6781
6782 socketlib=''
6783 sockethdr=''
6784 : see whether socket exists
6785 echo " "
6786 $echo $n "Hmm... $c" >&4
6787 if set socket val -f d_socket; eval $csym; $val; then
6788         echo "Looks like you have Berkeley networking support." >&4
6789         d_socket="$define"
6790         if set setsockopt val -f; eval $csym; $val; then
6791                 d_oldsock="$undef"
6792         else
6793                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6794                 d_oldsock="$define"
6795         fi
6796 else
6797         if $contains socklib libc.list >/dev/null 2>&1; then
6798                 echo "Looks like you have Berkeley networking support." >&4
6799                 d_socket="$define"
6800                 : we will have to assume that it supports the 4.2 BSD interface
6801                 d_oldsock="$undef"
6802         else
6803                 echo "You don't have Berkeley networking in libc$_a..." >&4
6804                 if test "X$d_socket" = "X$define"; then
6805                    echo "...but you seem to believe that you have sockets." >&4
6806                 else
6807                         for net in net socket
6808                         do
6809                                 if test -f /usr/lib/lib$net$_a; then
6810                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
6811                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6812                                         if $contains socket libc.list >/dev/null 2>&1; then
6813                                                 d_socket="$define"
6814                                                 socketlib="-l$net"
6815                                                 case "$net" in
6816                                                 net)
6817                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
6818                                                         sockethdr="-I/usr/netinclude"
6819                                                         ;;
6820                                                 esac
6821                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
6822                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
6823                                                         d_oldsock="$undef"
6824                                                 else
6825                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6826                                                         d_oldsock="$define"
6827                                                 fi
6828                                                 break
6829                                         fi
6830                                 fi
6831                         done
6832                         if test "X$d_socket" != "X$define"; then
6833                            echo "or anywhere else I see." >&4
6834                            d_socket="$undef"
6835                            d_oldsock="$undef"
6836                         fi
6837                 fi
6838         fi
6839 fi
6840
6841 : see if socketpair exists
6842 set socketpair d_sockpair
6843 eval $inlibc
6844
6845
6846 echo "Checking the availability of certain socket constants..." >& 4
6847 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6848         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6849         $cat >try.c <<EOF
6850 #include <sys/types.h>
6851 #include <sys/socket.h>
6852 int main() {
6853     int i = $ENUM;
6854 }
6855 EOF
6856         val="$undef"
6857         set try; if eval $compile; then
6858                 val="$define"
6859         fi
6860         set d_${enum}; eval $setvar
6861         $rm -f try.c try
6862 done
6863
6864 set sendmsg d_sendmsg
6865 eval $inlibc
6866
6867 set recvmsg d_recvmsg
6868 eval $inlibc
6869
6870 echo " "
6871 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6872 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6873 eval $hasfield
6874 case "$d_msghdr_s" in
6875 "$define")      echo "Yup, it does." >&4
6876                 ;;
6877 *)              echo "Nope, it doesn't." >&4
6878                 ;;
6879 esac
6880
6881 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6882 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6883 eval $hasfield
6884 case "$d_cmsghdr_s" in
6885 "$define")      echo "Yup, it does." >&4
6886                 ;;
6887 *)              echo "Nope, it doesn't." >&4
6888                 ;;
6889 esac
6890
6891 : check for const keyword
6892 echo " "
6893 echo 'Checking to see if your C compiler knows about "const"...' >&4
6894 $cat >const.c <<'EOCP'
6895 typedef struct spug { int drokk; } spug;
6896 main()
6897 {
6898         const char *foo;
6899         const spug y;
6900 }
6901 EOCP
6902 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6903         val="$define"
6904         echo "Yup, it does."
6905 else
6906         val="$undef"
6907         echo "Nope, it doesn't."
6908 fi
6909 set d_const
6910 eval $setvar
6911
6912 : see if crypt exists
6913 echo " "
6914 if set crypt val -f d_crypt; eval $csym; $val; then
6915         echo 'crypt() found.' >&4
6916         val="$define"
6917         cryptlib=''
6918 else
6919         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
6920         if $test -z "$cryptlib"; then
6921                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
6922         else
6923                 cryptlib=-lcrypt
6924         fi
6925         if $test -z "$cryptlib"; then
6926                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
6927         else
6928                 cryptlib=-lcrypt
6929         fi
6930         if $test -z "$cryptlib"; then
6931                 cryptlib=`./loc libcrypt$_a "" $libpth`
6932         else
6933                 cryptlib=-lcrypt
6934         fi
6935         if $test -z "$cryptlib"; then
6936                 echo 'crypt() NOT found.' >&4
6937                 val="$undef"
6938         else
6939                 val="$define"
6940         fi
6941 fi
6942 set d_crypt
6943 eval $setvar
6944
6945 : get csh whereabouts
6946 case "$csh" in
6947 'csh') val="$undef" ;;
6948 *) val="$define" ;;
6949 esac
6950 set d_csh
6951 eval $setvar
6952 : Respect a hint or command line value for full_csh.
6953 case "$full_csh" in
6954 '') full_csh=$csh ;;
6955 esac
6956
6957 : see if cuserid exists
6958 set cuserid d_cuserid
6959 eval $inlibc
6960
6961 : see if this is a limits.h system
6962 set limits.h i_limits
6963 eval $inhdr
6964
6965 : see if this is a float.h system
6966 set float.h i_float
6967 eval $inhdr
6968
6969 : See if number of significant digits in a double precision number is known
6970 echo " "
6971 $cat >dbl_dig.c <<EOM
6972 #$i_limits I_LIMITS
6973 #$i_float I_FLOAT
6974 #ifdef I_LIMITS
6975 #include <limits.h>
6976 #endif
6977 #ifdef I_FLOAT
6978 #include <float.h>
6979 #endif
6980 #ifdef DBL_DIG
6981 printf("Contains DBL_DIG");
6982 #endif
6983 EOM
6984 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
6985 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
6986         echo "DBL_DIG found." >&4
6987         val="$define"
6988 else
6989         echo "DBL_DIG NOT found." >&4
6990         val="$undef"
6991 fi
6992 $rm -f dbl_dig.?
6993 set d_dbl_dig
6994 eval $setvar
6995
6996
6997 if $test X"$use64bits" = X"$define"; then
6998         : see if dbminit64 exists
6999         set dbminit64 d_dbminit64
7000         eval $inlibc
7001
7002         : see if dbmclose64 exists
7003         set dbmclose64 d_dbmclose64
7004         eval $inlibc
7005
7006         : see if fetch64 exists
7007         set fetch64 d_fetch64
7008         eval $inlibc
7009
7010         : see if store64 exists
7011         set store64 d_store64
7012         eval $inlibc
7013
7014         : see if delete64 exists
7015         set delete64 d_delete64
7016         eval $inlibc
7017
7018         : see if firstkey64 exists
7019         set firstkey64 d_firstkey64
7020         eval $inlibc
7021
7022         : see if nextkey64 exists
7023         set nextkey64 d_nextkey64
7024         eval $inlibc
7025 else
7026         val="$undef"
7027         for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7028         do
7029                 set $xxx
7030                 eval $setvar
7031         done
7032 fi
7033
7034 : see if difftime exists
7035 set difftime d_difftime
7036 eval $inlibc
7037
7038 : see if sys/stat.h is available
7039 set sys/stat.h i_sysstat
7040 eval $inhdr
7041
7042 : see if this is a dirent system
7043 echo " "
7044 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7045         val="$define"
7046         echo "<dirent.h> found." >&4
7047 else
7048         val="$undef"
7049         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7050                 echo "<sys/dir.h> found." >&4
7051                 echo " "
7052         else
7053                 xinc=`./findhdr sys/ndir.h`
7054         fi
7055         echo "<dirent.h> NOT found." >&4
7056 fi
7057 set i_dirent
7058 eval $setvar
7059
7060 : Look for type of directory structure.
7061 echo " "
7062 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7063
7064 case "$direntrytype" in
7065 ''|' ')
7066         case "$i_dirent" in
7067         $define) guess1='struct dirent' ;;
7068         *) guess1='struct direct'  ;;
7069         esac
7070         ;;
7071 *)      guess1="$direntrytype"
7072         ;;
7073 esac
7074
7075 case "$guess1" in
7076 'struct dirent') guess2='struct direct' ;;
7077 *) guess2='struct dirent' ;;
7078 esac
7079                 
7080 if $contains "$guess1" try.c >/dev/null 2>&1; then
7081         direntrytype="$guess1"
7082         echo "Your directory entries are $direntrytype." >&4
7083 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7084         direntrytype="$guess2"
7085         echo "Your directory entries seem to be $direntrytype." >&4
7086 else
7087         echo "I don't recognize your system's directory entries." >&4
7088         rp="What type is used for directory entries on this system?"
7089         dflt="$guess1"
7090         . ./myread
7091         direntrytype="$ans"
7092 fi
7093 $rm -f try.c
7094
7095
7096 : see if the directory entry stores field length
7097 echo " "
7098 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7099 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7100         echo "Good, your directory entry keeps length information in d_namlen." >&4
7101         val="$define"
7102 else
7103         echo "Your directory entry does not know about the d_namlen field." >&4
7104         val="$undef"
7105 fi
7106 set d_dirnamlen
7107 eval $setvar
7108 $rm -f try.c
7109
7110
7111 if $test X"$use64bits" = X"$define"; then
7112         : see if fstat64 exists
7113         set fstat64 d_fstat64
7114         eval $inlibc
7115
7116         : see if ftruncate64 exists
7117         set ftruncate64 d_ftruncate64
7118         eval $inlibc
7119
7120         : see if lockf64 exists
7121         set lockf64 d_lockf64
7122         eval $inlibc
7123
7124         : see if lseek64 exists
7125         set lseek64 d_lseek64
7126         eval $inlibc
7127
7128         : see if lstat64 exists
7129         set lstat64 d_lstat64
7130         eval $inlibc
7131
7132         : see if open64 exists
7133         set open64 d_open64
7134         eval $inlibc
7135
7136         : see if opendir64 exists
7137         set opendir64 d_opendir64
7138         eval $inlibc
7139
7140         : see if readdir64 exists
7141         set readdir64 d_readdir64
7142         eval $inlibc
7143
7144         : see if seekdir64 exists
7145         set seekdir64 d_seekdir64
7146         eval $inlibc
7147
7148         : see if stat64 exists
7149         set stat64 d_stat64
7150         eval $inlibc
7151
7152         : see if telldir64 exists
7153         set telldir64 d_telldir64
7154         eval $inlibc
7155
7156         : see if truncate64 exists
7157         set truncate64 d_truncate64
7158         eval $inlibc
7159
7160         : check for off64_t
7161         echo " "
7162         echo $n "Checking to see if your system supports off64_t...$c" >&4
7163         $cat >try.c <<EOCP
7164 #include <sys/types.h>
7165 off64_t foo() { off64_t x; x = 7; return x; }'
7166 EOCP
7167         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7168                 val="$define"
7169                 echo " Yup, it does." >&4
7170         else
7171                 val="$undef"
7172                 echo " Nope, it doesn't." >&4
7173         fi
7174         $rm -f try.*
7175         set d_off64t
7176         eval $setvar
7177
7178         : check for ino64_t
7179         echo " "
7180         echo $n "Checking to see if your system supports ino64_t...$c" >&4
7181         val="$undef"
7182         case "$i_sysstat" in
7183         "$define" )
7184                 $cat >try.c <<EOCP
7185 #include <sys/types.h>
7186 #include <sys/stat.h>
7187 ino64_t foo() { ino64_t x; x = 7; return x; }'
7188 EOCP
7189                 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7190                         val="$define"
7191                 fi
7192                 $rm -f try.*
7193                 ;;
7194         esac
7195         if $test "X$val" = X"$define"; then
7196                 echo " Yup, it does." >&4
7197         else
7198                 echo " Nope, it doesn't." >&4
7199         fi
7200         set d_ino64t
7201         eval $setvar
7202
7203         : check for struct flock64
7204         echo " "
7205         echo "Checking to see if your system supports struct flock64..." >&4
7206         if $h_fcntl; then
7207                 set d_flock64_s flock64 l_len define fcntl.h
7208                 eval $hasfield
7209         else
7210                 val="$undef"
7211                 set d_flock64_s
7212                 eval $setvar
7213         fi
7214         case "$d_flock64_s" in
7215         "$define")      echo "Yup, it does." >&4
7216                         ;;
7217         *)              echo "Nope, it doesn't." >&4
7218                         ;;
7219         esac
7220
7221         : check for struct dirent64
7222         echo " "
7223         echo "Checking to see if your system supports struct dirent64..." >&4
7224         set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7225         eval $hasfield
7226         case "$d_dirent64_s" in
7227         "$define")      echo "Yup, it does." >&4
7228                         ;;
7229         *)              echo "Nope, it doesn't." >&4
7230                         ;;
7231         esac
7232
7233 else
7234         val="$undef"
7235         for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64t d_ino64t d_flock64_s d_dirent64_s
7236         do
7237                 set $xxx
7238                 eval $setvar
7239         done
7240 fi
7241
7242 : see if dlerror exists
7243 xxx_runnm="$runnm"
7244 runnm=false
7245 set dlerror d_dlerror
7246 eval $inlibc
7247 runnm="$xxx_runnm"
7248
7249 : see if dlfcn is available
7250 set dlfcn.h i_dlfcn
7251 eval $inhdr
7252
7253 case "$usedl" in
7254 $define|y|true)
7255         $cat << EOM
7256
7257 On a few systems, the dynamically loaded modules that perl generates and uses
7258 will need a different extension than shared libs. The default will probably
7259 be appropriate.
7260
7261 EOM
7262         case "$dlext" in
7263         '')     dflt="$so" ;;
7264         *)      dflt="$dlext" ;;
7265         esac
7266         rp='What is the extension of dynamically loaded modules'
7267         . ./myread
7268         dlext="$ans"
7269         ;;
7270 *)
7271         dlext="none"
7272         ;;
7273 esac
7274
7275 : Check if dlsym need a leading underscore
7276 echo " "
7277 val="$undef"
7278
7279 case "$dlsrc" in
7280 dl_dlopen.xs)
7281         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7282         $cat >dyna.c <<'EOM'
7283 fred () { }
7284 EOM
7285
7286 $cat >fred.c<<EOM
7287
7288 #include <stdio.h>
7289 #$i_dlfcn I_DLFCN
7290 #ifdef I_DLFCN
7291 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
7292 #else
7293 #include <sys/types.h>
7294 #include <nlist.h>
7295 #include <link.h>
7296 #endif
7297
7298 extern int fred() ;
7299
7300 main()
7301 {
7302     void * handle ;
7303     void * symbol ;
7304 #ifndef RTLD_LAZY
7305     int mode = 1 ;
7306 #else
7307     int mode = RTLD_LAZY ;
7308 #endif
7309     handle = dlopen("./dyna.$dlext", mode) ;
7310     if (handle == NULL) {
7311         printf ("1\n") ;
7312         fflush (stdout) ;
7313         exit(0);
7314     }
7315     symbol = dlsym(handle, "fred") ;
7316     if (symbol == NULL) {
7317         /* try putting a leading underscore */
7318         symbol = dlsym(handle, "_fred") ;
7319         if (symbol == NULL) {
7320             printf ("2\n") ;
7321             fflush (stdout) ;
7322             exit(0);
7323         }
7324         printf ("3\n") ;
7325     }
7326     else
7327         printf ("4\n") ;
7328     fflush (stdout) ;
7329     exit(0);
7330 }
7331 EOM
7332         : Call the object file tmp-dyna.o in case dlext=o.
7333         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
7334                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
7335                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
7336                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7337                 xxx=`./fred`
7338                 case $xxx in
7339                 1)      echo "Test program failed using dlopen." >&4
7340                         echo "Perhaps you should not use dynamic loading." >&4;;
7341                 2)      echo "Test program failed using dlsym." >&4
7342                         echo "Perhaps you should not use dynamic loading." >&4;;
7343                 3)      echo "dlsym needs a leading underscore" >&4
7344                         val="$define" ;;
7345                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
7346                 esac
7347         else
7348                 echo "I can't compile and run the test program." >&4
7349         fi
7350         ;;
7351 esac
7352                 
7353 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7354
7355 set d_dlsymun
7356 eval $setvar
7357
7358 hasproto='varname=$1; func=$2; shift; shift;
7359 while $test $# -ge 2; do
7360         case "$1" in
7361         $define) echo "#include <$2>";;
7362         esac ;
7363     shift 2;
7364 done > try.c;
7365 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7366 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7367         echo "$func() prototype found.";
7368         val="$define";
7369 else
7370         echo "$func() prototype NOT found.";
7371         val="$undef";
7372 fi;
7373 set $varname;
7374 eval $setvar;
7375 $rm -f try.c tryout.c'
7376
7377 : see if prototype for drand48 is available
7378 echo " "
7379 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7380 eval $hasproto
7381
7382 : see if dup2 exists
7383 set dup2 d_dup2
7384 eval $inlibc
7385
7386 : see if eaccess exists
7387 set eaccess d_eaccess
7388 eval $inlibc
7389
7390 : see if endgrent exists
7391 set endgrent d_endgrent
7392 eval $inlibc
7393
7394 : see if endhostent exists
7395 set endhostent d_endhent
7396 eval $inlibc
7397
7398 : see if endnetent exists
7399 set endnetent d_endnent
7400 eval $inlibc
7401
7402 : see if endprotoent exists
7403 set endprotoent d_endpent
7404 eval $inlibc
7405
7406 : see if endpwent exists
7407 set endpwent d_endpwent
7408 eval $inlibc
7409
7410 : see if endservent exists
7411 set endservent d_endsent
7412 eval $inlibc
7413
7414 : Locate the flags for 'open()'
7415 echo " "
7416 $cat >open3.c <<'EOCP'
7417 #include <sys/types.h>
7418 #ifdef I_FCNTL
7419 #include <fcntl.h>
7420 #endif
7421 #ifdef I_SYS_FILE
7422 #include <sys/file.h>
7423 #endif
7424 main() {
7425         if(O_RDONLY);
7426 #ifdef O_TRUNC
7427         exit(0);
7428 #else
7429         exit(1);
7430 #endif
7431 }
7432 EOCP
7433 : check sys/file.h first to get FREAD on Sun
7434 if $test `./findhdr sys/file.h` && \
7435                 set open3 -DI_SYS_FILE && eval $compile; then
7436         h_sysfile=true;
7437         echo "<sys/file.h> defines the O_* constants..." >&4
7438         if ./open3; then
7439                 echo "and you have the 3 argument form of open()." >&4
7440                 val="$define"
7441         else
7442                 echo "but not the 3 argument form of open().  Oh, well." >&4
7443                 val="$undef"
7444         fi
7445 elif $test `./findhdr fcntl.h` && \
7446                 set open3 -DI_FCNTL && eval $compile; then
7447         h_fcntl=true;
7448         echo "<fcntl.h> defines the O_* constants..." >&4
7449         if ./open3; then
7450                 echo "and you have the 3 argument form of open()." >&4
7451                 val="$define"
7452         else
7453                 echo "but not the 3 argument form of open().  Oh, well." >&4
7454                 val="$undef"
7455         fi
7456 else
7457         val="$undef"
7458         echo "I can't find the O_* constant definitions!  You got problems." >&4
7459 fi
7460 set d_open3
7461 eval $setvar
7462 $rm -f open3*
7463
7464 : check for non-blocking I/O stuff
7465 case "$h_sysfile" in
7466 true) echo "#include <sys/file.h>" > head.c;;
7467 *)
7468         case "$h_fcntl" in
7469         true) echo "#include <fcntl.h>" > head.c;;
7470         *) echo "#include <sys/fcntl.h>" > head.c;;
7471         esac
7472         ;;
7473 esac
7474 echo " "
7475 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7476 case "$o_nonblock" in
7477 '')
7478         $cat head.c > try.c
7479         $cat >>try.c <<'EOCP'
7480 main() {
7481 #ifdef O_NONBLOCK
7482         printf("O_NONBLOCK\n");
7483         exit(0);
7484 #endif
7485 #ifdef O_NDELAY
7486         printf("O_NDELAY\n");
7487         exit(0);
7488 #endif
7489 #ifdef FNDELAY
7490         printf("FNDELAY\n");
7491         exit(0);
7492 #endif
7493         exit(0);
7494 }
7495 EOCP
7496         set try
7497         if eval $compile_ok; then
7498                 o_nonblock=`./try`
7499                 case "$o_nonblock" in
7500                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7501                 *) echo "Seems like we can use $o_nonblock.";;
7502                 esac
7503         else
7504                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7505         fi
7506         ;;
7507 *) echo "Using $hint value $o_nonblock.";;
7508 esac
7509 $rm -f try try.* .out core
7510
7511 echo " "
7512 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7513 case "$eagain" in
7514 '')
7515         $cat head.c > try.c
7516         $cat >>try.c <<EOCP
7517 #include <errno.h>
7518 #include <sys/types.h>
7519 #include <signal.h>
7520 #define MY_O_NONBLOCK $o_nonblock
7521 #ifndef errno  /* XXX need better Configure test */
7522 extern int errno;
7523 #endif
7524 $signal_t blech(x) int x; { exit(3); }
7525 EOCP
7526         $cat >> try.c <<'EOCP'
7527 main()
7528 {
7529         int pd[2];
7530         int pu[2];
7531         char buf[1];
7532         char string[100];
7533
7534         pipe(pd);       /* Down: child -> parent */
7535         pipe(pu);       /* Up: parent -> child */
7536         if (0 != fork()) {
7537                 int ret;
7538                 close(pd[1]);   /* Parent reads from pd[0] */
7539                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
7540                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7541                         exit(1);
7542                 signal(SIGALRM, blech);
7543                 alarm(5);
7544                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
7545                         exit(2);
7546                 sprintf(string, "%d\n", ret);
7547                 write(2, string, strlen(string));
7548                 alarm(0);
7549 #ifdef EAGAIN
7550                 if (errno == EAGAIN) {
7551                         printf("EAGAIN\n");
7552                         goto ok;
7553                 }
7554 #endif
7555 #ifdef EWOULDBLOCK
7556                 if (errno == EWOULDBLOCK)
7557                         printf("EWOULDBLOCK\n");
7558 #endif
7559         ok:
7560                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
7561                 sleep(2);                               /* Give it time to close our pipe */
7562                 alarm(5);
7563                 ret = read(pd[0], buf, 1);      /* Should read EOF */
7564                 alarm(0);
7565                 sprintf(string, "%d\n", ret);
7566                 write(3, string, strlen(string));
7567                 exit(0);
7568         }
7569
7570         close(pd[0]);                   /* We write to pd[1] */
7571         close(pu[1]);                   /* We read from pu[0] */
7572         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
7573         close(pd[1]);                   /* Pipe pd is now fully closed! */
7574         exit(0);                                /* Bye bye, thank you for playing! */
7575 }
7576 EOCP
7577         set try
7578         if eval $compile_ok; then
7579                 echo "$startsh" >mtry
7580                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7581                 chmod +x mtry
7582                 ./mtry >/dev/null 2>&1
7583                 case $? in
7584                 0) eagain=`$cat try.out`;;
7585                 1) echo "Could not perform non-blocking setting!";;
7586                 2) echo "I did a successful read() for something that was not there!";;
7587                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7588                 *) echo "Something terribly wrong happened during testing.";;
7589                 esac
7590                 rd_nodata=`$cat try.ret`
7591                 echo "A read() system call with no data present returns $rd_nodata."
7592                 case "$rd_nodata" in
7593                 0|-1) ;;
7594                 *)
7595                         echo "(That's peculiar, fixing that to be -1.)"
7596                         rd_nodata=-1
7597                         ;;
7598                 esac
7599                 case "$eagain" in
7600                 '')
7601                         echo "Forcing errno EAGAIN on read() with no data available."
7602                         eagain=EAGAIN
7603                         ;;
7604                 *)
7605                         echo "Your read() sets errno to $eagain when no data is available."
7606                         ;;
7607                 esac
7608                 status=`$cat try.err`
7609                 case "$status" in
7610                 0) echo "And it correctly returns 0 to signal EOF.";;
7611                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7612                 *) echo "However, your read() returns '$status' on EOF??";;
7613                 esac
7614                 val="$define"
7615                 if test "$status" = "$rd_nodata"; then
7616                         echo "WARNING: you can't distinguish between EOF and no data!"
7617                         val="$undef"
7618                 fi
7619         else
7620                 echo "I can't compile the test program--assuming errno EAGAIN will do."
7621                 eagain=EAGAIN
7622         fi
7623         set d_eofnblk
7624         eval $setvar
7625         ;;
7626 *)
7627         echo "Using $hint value $eagain."
7628         echo "Your read() returns $rd_nodata when no data is present."
7629         case "$d_eofnblk" in
7630         "$define") echo "And you can see EOF because read() returns 0.";;
7631         "$undef") echo "But you can't see EOF status from read() returned value.";;
7632         *)
7633                 echo "(Assuming you can't see EOF status from read anyway.)"
7634                 d_eofnblk=$undef
7635                 ;;
7636         esac
7637         ;;
7638 esac
7639 $rm -f try try.* .out core head.c mtry
7640
7641 : see if fchmod exists
7642 set fchmod d_fchmod
7643 eval $inlibc
7644
7645 : see if fchown exists
7646 set fchown d_fchown
7647 eval $inlibc
7648
7649 : see if this is an fcntl system
7650 set fcntl d_fcntl
7651 eval $inlibc
7652
7653 : see if sys/select.h has to be included
7654 set sys/select.h i_sysselct
7655 eval $inhdr
7656
7657 : see if we should include time.h, sys/time.h, or both
7658 echo " "
7659 if test "X$timeincl" = X; then
7660         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7661         $echo $n "I'm now running the test program...$c"
7662         $cat >try.c <<'EOCP'
7663 #include <sys/types.h>
7664 #ifdef I_TIME
7665 #include <time.h>
7666 #endif
7667 #ifdef I_SYSTIME
7668 #ifdef SYSTIMEKERNEL
7669 #define KERNEL
7670 #endif
7671 #include <sys/time.h>
7672 #endif
7673 #ifdef I_SYSSELECT
7674 #include <sys/select.h>
7675 #endif
7676 main()
7677 {
7678         struct tm foo;
7679 #ifdef S_TIMEVAL
7680         struct timeval bar;
7681 #endif
7682 #ifdef S_TIMEZONE
7683         struct timezone tzp;
7684 #endif
7685         if (foo.tm_sec == foo.tm_sec)
7686                 exit(0);
7687 #ifdef S_TIMEVAL
7688         if (bar.tv_sec == bar.tv_sec)
7689                 exit(0);
7690 #endif
7691         exit(1);
7692 }
7693 EOCP
7694         flags=''
7695         for s_timezone in '-DS_TIMEZONE' ''; do
7696         sysselect=''
7697         for s_timeval in '-DS_TIMEVAL' ''; do
7698         for i_systimek in '' '-DSYSTIMEKERNEL'; do
7699         for i_time in '' '-DI_TIME'; do
7700         for i_systime in '-DI_SYSTIME' ''; do
7701                 case "$flags" in
7702                 '') $echo $n ".$c"
7703                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7704                         if eval $compile; then
7705                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7706                                 shift
7707                                 flags="$*"
7708                                 echo " "
7709                                 $echo $n "Succeeded with $flags$c"
7710                         fi
7711                         ;;
7712                 esac
7713         done
7714         done
7715         done
7716         done
7717         done
7718         timeincl=''
7719         echo " "
7720         case "$flags" in
7721         *SYSTIMEKERNEL*) i_systimek="$define"
7722                 timeincl=`./findhdr sys/time.h`
7723                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7724         *) i_systimek="$undef";;
7725         esac
7726         case "$flags" in
7727         *I_TIME*) i_time="$define"
7728                 timeincl=`./findhdr time.h`" $timeincl"
7729                 echo "We'll include <time.h>." >&4;;
7730         *) i_time="$undef";;
7731         esac
7732         case "$flags" in
7733         *I_SYSTIME*) i_systime="$define"
7734                 timeincl=`./findhdr sys/time.h`" $timeincl"
7735                 echo "We'll include <sys/time.h>." >&4;;
7736         *) i_systime="$undef";;
7737         esac
7738         $rm -f try.c try
7739 fi
7740
7741 : check for fd_set items
7742 $cat <<EOM
7743
7744 Checking to see how well your C compiler handles fd_set and friends ...
7745 EOM
7746 $cat >fd_set.c <<EOCP
7747 #$i_systime I_SYS_TIME
7748 #$i_sysselct I_SYS_SELECT
7749 #$d_socket HAS_SOCKET
7750 #include <sys/types.h>
7751 #ifdef HAS_SOCKET
7752 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7753 #endif
7754 #ifdef I_SYS_TIME
7755 #include <sys/time.h>
7756 #endif
7757 #ifdef I_SYS_SELECT
7758 #include <sys/select.h>
7759 #endif
7760 main() {
7761         fd_set fds;
7762
7763 #ifdef TRYBITS
7764         if(fds.fds_bits);
7765 #endif
7766
7767 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7768         exit(0);
7769 #else
7770         exit(1);
7771 #endif
7772 }
7773 EOCP
7774 set fd_set -DTRYBITS
7775 if eval $compile; then
7776         d_fds_bits="$define"
7777         d_fd_set="$define"
7778         echo "Well, your system knows about the normal fd_set typedef..." >&4
7779         if ./fd_set; then
7780                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7781                 d_fd_macros="$define"
7782         else
7783                 $cat >&4 <<'EOM'
7784 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
7785 EOM
7786                 d_fd_macros="$undef"
7787         fi
7788 else
7789         $cat <<'EOM'
7790 Hmm, your compiler has some difficulty with fd_set.  Checking further...
7791 EOM
7792         set fd_set
7793         if eval $compile; then
7794                 d_fds_bits="$undef"
7795                 d_fd_set="$define"
7796                 echo "Well, your system has some sort of fd_set available..." >&4
7797                 if ./fd_set; then
7798                         echo "and you have the normal fd_set macros." >&4
7799                         d_fd_macros="$define"
7800                 else
7801                         $cat <<'EOM'
7802 but not the normal fd_set macros!  Gross!  More work for me...
7803 EOM
7804                         d_fd_macros="$undef"
7805                 fi
7806         else
7807         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
7808                 d_fd_set="$undef"
7809                 d_fds_bits="$undef"
7810                 d_fd_macros="$undef"
7811         fi
7812 fi
7813 $rm -f fd_set*
7814
7815 : see if fgetpos exists
7816 set fgetpos d_fgetpos
7817 eval $inlibc
7818
7819
7820 if $test X"$use64bits" = X"$define"; then
7821         : see if fgetpos64 exists
7822         set fgetpos64 d_fgetpos64
7823         eval $inlibc
7824
7825         : see if fopen64 exists
7826         set freopen64 d_fopen64
7827         eval $inlibc
7828
7829         : see if freopen64 exists
7830         set freopen64 d_freopen64
7831         eval $inlibc
7832
7833         : see if fseek64 exists
7834         set fseek64 d_fseek64
7835         eval $inlibc
7836
7837         : see if fseeko64 exists
7838         set fseeko64 d_fseeko64
7839         eval $inlibc
7840
7841         : see if fsetpos64 exists
7842         set fsetpos64 d_fsetpos64
7843         eval $inlibc
7844
7845         : see if ftell64 exists
7846         set ftell64 d_ftell64
7847         eval $inlibc
7848
7849         : see if ftello64 exists
7850         set ftello64 d_ftello64
7851         eval $inlibc
7852
7853         : see if tmpfile64 exists
7854         set tmpfile64 d_tmpfile64
7855         eval $inlibc
7856 else
7857         val="$undef"
7858         for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7859         do
7860                 set $xxx
7861                 eval $setvar
7862         done
7863 fi
7864
7865 : see if flock exists
7866 set flock d_flock
7867 eval $inlibc
7868
7869 : see if fork exists
7870 set fork d_fork
7871 eval $inlibc
7872
7873 : see if pathconf exists
7874 set pathconf d_pathconf
7875 eval $inlibc
7876
7877 : see if fpathconf exists
7878 set fpathconf d_fpathconf
7879 eval $inlibc
7880
7881 : see if fseeko exists
7882 set fseeko d_fseeko
7883 eval $inlibc
7884
7885 : see if fsetpos exists
7886 set fsetpos d_fsetpos
7887 eval $inlibc
7888
7889 : see if ftello exists
7890 set ftello d_ftello
7891 eval $inlibc
7892
7893 : see if getgrent exists
7894 set getgrent d_getgrent
7895 eval $inlibc
7896
7897 : see if gethostbyaddr exists
7898 set gethostbyaddr d_gethbyaddr
7899 eval $inlibc
7900
7901 : see if gethostbyname exists
7902 set gethostbyname d_gethbyname
7903 eval $inlibc
7904
7905 : see if gethostent exists
7906 set gethostent d_gethent
7907 eval $inlibc
7908
7909 : see how we will look up host name
7910 echo " "
7911 if false; then
7912         : dummy stub to allow use of elif
7913 elif set gethostname val -f d_gethname; eval $csym; $val; then
7914         echo 'gethostname() found.' >&4
7915         d_gethname="$define"
7916         call=gethostname
7917 elif set uname val -f d_uname; eval $csym; $val; then
7918         if ./xenix; then
7919                 $cat <<'EOM'
7920 uname() was found, but you're running xenix, and older versions of xenix
7921 have a broken uname(). If you don't really know whether your xenix is old
7922 enough to have a broken system call, use the default answer.
7923
7924 EOM
7925                 dflt=y
7926                 case "$d_uname" in
7927                 "$define") dflt=n;;
7928                 esac
7929                 rp='Is your uname() broken?'
7930                 . ./myread
7931                 case "$ans" in
7932                 n*) d_uname="$define"; call=uname;;
7933                 esac
7934         else
7935                 echo 'uname() found.' >&4
7936                 d_uname="$define"
7937                 call=uname
7938         fi
7939 fi
7940 case "$d_gethname" in
7941 '') d_gethname="$undef";;
7942 esac
7943 case "$d_uname" in
7944 '') d_uname="$undef";;
7945 esac
7946 case "$d_uname$d_gethname" in
7947 *define*)
7948         dflt=n
7949         cat <<EOM
7950  
7951 Every now and then someone has a $call() that lies about the hostname
7952 but can't be fixed for political or economic reasons.  If you wish, I can
7953 pretend $call() isn't there and maybe compute hostname at run-time
7954 thanks to the '$phostname' command.
7955
7956 EOM
7957         rp="Shall I ignore $call() from now on?"
7958         . ./myread
7959         case "$ans" in
7960         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
7961         esac;;
7962 esac
7963 case "$phostname" in
7964 '') aphostname='';;
7965 *) case "$aphostname" in
7966         /*) ;;
7967         *) set X $phostname
7968                 shift
7969                 file=$1
7970                 shift
7971                 file=`./loc $file $file $pth`
7972                 aphostname=`echo $file $*`
7973                 ;;
7974         esac
7975         ;;
7976 esac
7977 case "$d_uname$d_gethname" in
7978 *define*) ;;
7979 *)
7980         case "$phostname" in
7981         '')
7982                 echo "There will be no way for $package to get your hostname." >&4;;
7983         *)
7984         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
7985                 ;;
7986         esac;;
7987 esac
7988 case "$d_phostname" in
7989 '') d_phostname="$undef";;
7990 esac
7991
7992 : see if this is a netdb.h system
7993 set netdb.h i_netdb
7994 eval $inhdr
7995
7996 : see if prototypes for various gethostxxx netdb.h functions are available
7997 echo " "
7998 set d_gethostprotos gethostent $i_netdb netdb.h
7999 eval $hasproto
8000
8001 : see if getlogin exists
8002 set getlogin d_getlogin
8003 eval $inlibc
8004
8005 : see if getnetbyaddr exists
8006 set getnetbyaddr d_getnbyaddr
8007 eval $inlibc
8008
8009 : see if getnetbyname exists
8010 set getnetbyname d_getnbyname
8011 eval $inlibc
8012
8013 : see if getnetent exists
8014 set getnetent d_getnent
8015 eval $inlibc
8016
8017 : see if prototypes for various getnetxxx netdb.h functions are available
8018 echo " "
8019 set d_getnetprotos getnetent $i_netdb netdb.h
8020 eval $hasproto
8021
8022
8023 : see if getprotobyname exists
8024 set getprotobyname d_getpbyname
8025 eval $inlibc
8026
8027 : see if getprotobynumber exists
8028 set getprotobynumber d_getpbynumber
8029 eval $inlibc
8030
8031 : see if getprotoent exists
8032 set getprotoent d_getpent
8033 eval $inlibc
8034
8035 : see if getpgid exists
8036 set getpgid d_getpgid
8037 eval $inlibc
8038
8039 : see if getpgrp2 exists
8040 set getpgrp2 d_getpgrp2
8041 eval $inlibc
8042
8043 : see if getppid exists
8044 set getppid d_getppid
8045 eval $inlibc
8046
8047 : see if getpriority exists
8048 set getpriority d_getprior
8049 eval $inlibc
8050
8051 : see if prototypes for various getprotoxxx netdb.h functions are available
8052 echo " "
8053 set d_getprotoprotos getprotoent $i_netdb netdb.h
8054 eval $hasproto
8055
8056 : see if getpwent exists
8057 set getpwent d_getpwent
8058 eval $inlibc
8059
8060
8061 : see if getservbyname exists
8062 set getservbyname d_getsbyname
8063 eval $inlibc
8064
8065 : see if getservbyport exists
8066 set getservbyport d_getsbyport
8067 eval $inlibc
8068
8069 : see if getservent exists
8070 set getservent d_getsent
8071 eval $inlibc
8072
8073 : see if prototypes for various getservxxx netdb.h functions are available
8074 echo " "
8075 set d_getservprotos getservent $i_netdb netdb.h
8076 eval $hasproto
8077
8078 : see if gettimeofday or ftime exists
8079 set gettimeofday d_gettimeod
8080 eval $inlibc
8081 case "$d_gettimeod" in
8082 "$undef")
8083         set ftime d_ftime 
8084         eval $inlibc
8085         ;;
8086 *)
8087         val="$undef"; set d_ftime; eval $setvar
8088         ;;
8089 esac
8090 case "$d_gettimeod$d_ftime" in
8091 "$undef$undef")
8092         echo " "
8093         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8094         ;;
8095 esac
8096
8097 : see if this is an grp system
8098 set grp.h i_grp
8099 eval $inhdr
8100
8101 case "$i_grp" in
8102 $define)
8103         xxx=`./findhdr grp.h`
8104         $cppstdin $cppflags $cppminus < $xxx >$$.h
8105
8106         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8107                 val="$define"
8108         else
8109                 val="$undef"
8110         fi
8111         set d_grpasswd
8112         eval $setvar
8113
8114         $rm -f $$.h
8115         ;;
8116 *)
8117         val="$undef";
8118         set d_grpasswd; eval $setvar
8119         ;;
8120 esac
8121
8122 : see if this is a netinet/in.h or sys/in.h system
8123 set netinet/in.h i_niin sys/in.h i_sysin
8124 eval $inhdr
8125
8126 : see if arpa/inet.h has to be included
8127 set arpa/inet.h i_arpainet
8128 eval $inhdr
8129
8130 : see if htonl --and friends-- exists
8131 val=''
8132 set htonl val
8133 eval $inlibc
8134
8135 : Maybe they are macros.
8136 case "$val" in
8137 $undef)
8138         $cat >htonl.c <<EOM
8139 #include <stdio.h>
8140 #include <sys/types.h>
8141 #$i_niin I_NETINET_IN
8142 #$i_sysin I_SYS_IN
8143 #$i_arpainet I_ARPA_INET
8144 #ifdef I_NETINET_IN
8145 #include <netinet/in.h>
8146 #endif
8147 #ifdef I_SYS_IN
8148 #include <sys/in.h>
8149 #endif
8150 #ifdef I_ARPA_INET
8151 #include <arpa/inet.h>
8152 #endif
8153 #ifdef htonl
8154 printf("Defined as a macro.");
8155 #endif
8156 EOM
8157         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8158         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8159                 val="$define"
8160                 echo "But it seems to be defined as a macro." >&4
8161         fi
8162         $rm -f htonl.?
8163         ;;
8164 esac
8165 set d_htonl
8166 eval $setvar
8167
8168 : see which of string.h or strings.h is needed
8169 echo " "
8170 strings=`./findhdr string.h`
8171 if $test "$strings" && $test -r "$strings"; then
8172         echo "Using <string.h> instead of <strings.h>." >&4
8173         val="$define"
8174 else
8175         val="$undef"
8176         strings=`./findhdr strings.h`
8177         if $test "$strings" && $test -r "$strings"; then
8178                 echo "Using <strings.h> instead of <string.h>." >&4
8179         else
8180                 echo "No string header found -- You'll surely have problems." >&4
8181         fi
8182 fi
8183 set i_string
8184 eval $setvar
8185 case "$i_string" in
8186 "$undef") strings=`./findhdr strings.h`;;
8187 *)        strings=`./findhdr string.h`;;
8188 esac
8189
8190 : index or strchr
8191 echo " "
8192 if set index val -f; eval $csym; $val; then
8193         if set strchr val -f d_strchr; eval $csym; $val; then
8194                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8195                         val="$define"
8196                         vali="$undef"
8197                         echo "strchr() found." >&4
8198                 else
8199                         val="$undef"
8200                         vali="$define"
8201                         echo "index() found." >&4
8202                 fi
8203         else
8204                 val="$undef"
8205                 vali="$define"
8206                 echo "index() found." >&4
8207         fi
8208 else
8209         if set strchr val -f d_strchr; eval $csym; $val; then
8210                 val="$define"
8211                 vali="$undef"
8212                 echo "strchr() found." >&4
8213         else
8214                 echo "No index() or strchr() found!" >&4
8215                 val="$undef"
8216                 vali="$undef"
8217         fi
8218 fi
8219 set d_strchr; eval $setvar
8220 val="$vali"
8221 set d_index; eval $setvar
8222
8223 : check whether inet_aton exists
8224 set inet_aton d_inetaton
8225 eval $inlibc
8226
8227 : see if inttypes.h is available
8228 : we want a real compile instead of Inhdr because some systems
8229 : have an inttypes.h which includes non-existent headers
8230 echo " "
8231 $cat >try.c <<EOCP
8232 #include <inttypes.h>
8233 main() {
8234         static int32_t foo32 = 0x12345678;
8235 }
8236 EOCP
8237 set try
8238 if eval $compile; then
8239         echo "<inttypes.h> found." >&4
8240         val="$define"
8241 else
8242         echo "<inttypes.h> NOT found." >&4
8243         val="$undef"
8244 fi
8245 $rm -f try.c try
8246 set i_inttypes
8247 eval $setvar
8248
8249 : check for int64_t
8250 case "$use64bits" in
8251 "$define" )
8252         echo " "
8253         echo $n "Checking to see if your system supports int64_t...$c" >&4
8254         $cat >try.c <<EOCP
8255 #include <sys/types.h>
8256 #$i_inttypes I_INTTYPES
8257 #ifdef I_INTTYPES
8258 #include <inttypes.h>
8259 #endif
8260 int64_t foo() { int64_t x; x = 7; return x; }
8261 EOCP
8262         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8263                 val="$define"
8264                 echo " Yup, it does." >&4
8265         else
8266                 val="$undef"
8267                 echo " Nope, it doesn't." >&4
8268         fi
8269         $rm -f try.*
8270         ;;
8271 *)      val="$undef"
8272         ;;
8273 esac
8274 set d_int64t
8275 eval $setvar
8276
8277
8278 : Look for isascii
8279 echo " "
8280 $cat >isascii.c <<'EOCP'
8281 #include <stdio.h>
8282 #include <ctype.h>
8283 main() {
8284         int c = 'A';
8285         if (isascii(c))
8286                 exit(0);
8287         else
8288                 exit(1);
8289 }
8290 EOCP
8291 set isascii
8292 if eval $compile; then
8293         echo "isascii() found." >&4
8294         val="$define"
8295 else
8296         echo "isascii() NOT found." >&4
8297         val="$undef"
8298 fi
8299 set d_isascii
8300 eval $setvar
8301 $rm -f isascii*
8302
8303 : see if killpg exists
8304 set killpg d_killpg
8305 eval $inlibc
8306
8307 : see if lchown exists
8308 echo " "
8309 $cat > try.c <<'EOCP'
8310 /* System header to define __stub macros and hopefully few prototypes,
8311     which can conflict with char lchown(); below.  */
8312 #include <assert.h>
8313 /* Override any gcc2 internal prototype to avoid an error.  */
8314 /* We use char because int might match the return type of a gcc2
8315    builtin and then its argument prototype would still apply.  */
8316 char lchown();
8317 int main() {
8318     /*  The GNU C library defines this for functions which it implements
8319         to always fail with ENOSYS.  Some functions are actually named
8320         something starting with __ and the normal name is an alias.  */
8321 #if defined (__stub_lchown) || defined (__stub___lchown)
8322 choke me
8323 #else
8324 lchown();
8325 #endif
8326 ; return 0; }
8327 EOCP
8328 set try
8329 if eval $compile; then
8330     $echo "lchown() found." >&4
8331     val="$define"
8332 else
8333     $echo "lchown() NOT found." >&4
8334     val="$undef"
8335 fi
8336 set d_lchown
8337 eval $setvar
8338
8339 : see if link exists
8340 set link d_link
8341 eval $inlibc
8342
8343 : see if localeconv exists
8344 set localeconv d_locconv
8345 eval $inlibc
8346
8347 : see if lockf exists
8348 set lockf d_lockf
8349 eval $inlibc
8350
8351 : check for length of double
8352 echo " "
8353 case "$doublesize" in
8354 '')
8355         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8356         $cat >try.c <<'EOCP'
8357 #include <stdio.h>
8358 main()
8359 {
8360         printf("%d\n", sizeof(double));
8361 }
8362 EOCP
8363         set try
8364         if eval $compile_ok; then
8365                 doublesize=`./try`
8366                 $echo " $doublesize bytes." >&4
8367         else
8368                 dflt='8'
8369                 echo "(I can't seem to compile the test program.  Guessing...)"
8370                 rp="What is the size of a double precision number (in bytes)?"
8371                 . ./myread
8372                 doublesize="$ans"
8373         fi
8374         ;;
8375 esac
8376 $rm -f try.c try
8377
8378 : check for long doubles
8379 echo " "
8380 echo $n "Checking to see if your system supports long doubles...$c" >&4
8381 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8382 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8383         val="$define"
8384         echo " Yup, it does." >&4
8385 else
8386         val="$undef"
8387         echo " Nope, it doesn't." >&4
8388 fi
8389 $rm try.*
8390 set d_longdbl
8391 eval $setvar
8392
8393 : check for length of long double
8394 case "${d_longdbl}${longdblsize}" in
8395 $define)
8396         echo " "
8397         $echo $n "Checking to see how big your long doubles are...$c" >&4
8398         $cat >try.c <<'EOCP'
8399 #include <stdio.h>
8400 main()
8401 {
8402         printf("%d\n", sizeof(long double));
8403 }
8404 EOCP
8405         set try
8406         if eval $compile; then
8407                 longdblsize=`./try`
8408                 $echo " $longdblsize bytes." >&4
8409         else
8410                 dflt='8'
8411                 echo " "
8412                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
8413                 rp="What is the size of a long double (in bytes)?"
8414                 . ./myread
8415                 longdblsize="$ans"
8416         fi
8417         if $test "X$doublesize" = "X$longdblsize"; then
8418                 echo "(That isn't any different from an ordinary double.)"
8419         fi      
8420         ;;
8421 esac
8422 $rm -f try.c try
8423
8424 : check for long long
8425 echo " "
8426 echo $n "Checking to see if your system supports long long...$c" >&4
8427 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8428 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8429         val="$define"
8430         echo " Yup, it does." >&4
8431 else
8432         val="$undef"
8433         echo " Nope, it doesn't." >&4
8434 fi
8435 $rm try.*
8436 set d_longlong
8437 eval $setvar
8438
8439 : check for length of long long
8440 case "${d_longlong}${longlongsize}" in
8441 $define)
8442         echo " "
8443         $echo $n "Checking to see how big your long longs are...$c" >&4
8444         $cat >try.c <<'EOCP'
8445 #include <stdio.h>
8446 main()
8447 {
8448         printf("%d\n", sizeof(long long));
8449 }
8450 EOCP
8451         set try
8452         if eval $compile_ok; then
8453                 longlongsize=`./try`
8454                 $echo " $longlongsize bytes." >&4
8455         else
8456                 dflt='8'
8457                 echo " "
8458                 echo "(I can't seem to compile the test program.  Guessing...)"
8459                 rp="What is the size of a long long (in bytes)?"
8460                 . ./myread
8461                 longlongsize="$ans"
8462         fi
8463         if $test "X$longsize" = "X$longlongsize"; then
8464                 echo "(That isn't any different from an ordinary long.)"
8465         fi      
8466         ;;
8467 esac
8468 $rm -f try.c try
8469
8470 : see if lstat exists
8471 set lstat d_lstat
8472 eval $inlibc
8473
8474 : see if mblen exists
8475 set mblen d_mblen
8476 eval $inlibc
8477
8478 : see if mbstowcs exists
8479 set mbstowcs d_mbstowcs
8480 eval $inlibc
8481
8482 : see if mbtowc exists
8483 set mbtowc d_mbtowc
8484 eval $inlibc
8485
8486 : see if memcmp exists
8487 set memcmp d_memcmp
8488 eval $inlibc
8489
8490 : see if memcpy exists
8491 set memcpy d_memcpy
8492 eval $inlibc
8493
8494 : see if memmove exists
8495 set memmove d_memmove
8496 eval $inlibc
8497
8498 : see if memset exists
8499 set memset d_memset
8500 eval $inlibc
8501
8502 : see if mkdir exists
8503 set mkdir d_mkdir
8504 eval $inlibc
8505
8506 : see if mkfifo exists
8507 set mkfifo d_mkfifo
8508 eval $inlibc
8509
8510 : see if mktime exists
8511 set mktime d_mktime
8512 eval $inlibc
8513
8514 : see if msgctl exists
8515 set msgctl d_msgctl
8516 eval $inlibc
8517
8518 : see if msgget exists
8519 set msgget d_msgget
8520 eval $inlibc
8521
8522 : see if msgsnd exists
8523 set msgsnd d_msgsnd
8524 eval $inlibc
8525
8526 : see if msgrcv exists
8527 set msgrcv d_msgrcv
8528 eval $inlibc
8529
8530 : see how much of the 'msg*(2)' library is present.
8531 h_msg=true
8532 echo " "
8533 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8534 *"$undef"*) h_msg=false;;
8535 esac
8536 case "$osname" in
8537 freebsd)
8538     case "`ipcs 2>&1`" in
8539     "SVID messages"*"not configured"*)
8540         echo "Your $osname does not have the msg*(2) configured." >&4
8541         h_msg=false
8542         val="$undef"
8543         set msgctl d_msgctl
8544         eval $setvar
8545         set msgget d_msgget
8546         eval $setvar
8547         set msgsnd d_msgsnd
8548         eval $setvar
8549         set msgrcv d_msgrcv
8550         eval $setvar
8551         ;;
8552     esac
8553     ;;
8554 esac
8555 : we could also check for sys/ipc.h ...
8556 if $h_msg && $test `./findhdr sys/msg.h`; then
8557         echo "You have the full msg*(2) library." >&4
8558         val="$define"
8559 else
8560         echo "You don't have the full msg*(2) library." >&4
8561         val="$undef"
8562 fi
8563 set d_msg
8564 eval $setvar
8565
8566 : see if nice exists
8567 set nice d_nice
8568 eval $inlibc
8569
8570 : see if pause exists
8571 set pause d_pause
8572 eval $inlibc
8573
8574 : see if pipe exists
8575 set pipe d_pipe
8576 eval $inlibc
8577
8578 : see if poll exists
8579 set poll d_poll
8580 eval $inlibc
8581
8582 : how to create joinable pthreads
8583 if test "X$usethreads" = "X$define"; then
8584         echo " "
8585         echo "Checking what constant to use for creating joinable pthreads..." >&4 
8586         $cat >try.c <<'EOCP'
8587 #include <pthread.h>
8588 int main() {
8589     int detachstate = JOINABLE;
8590 }
8591 EOCP
8592         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8593         if eval $compile; then
8594                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8595                 val="$undef"
8596                 set d_pthread_create_joinable
8597                 eval $setvar
8598                 val=0
8599                 set pthread_create_joinable
8600                 eval $setvar
8601         else
8602                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8603                 if eval $compile; then
8604                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8605                         val="$define"
8606                         set d_pthread_create_joinable
8607                         eval $setvar
8608                         val=PTHREAD_CREATE_UNDETACHED
8609                         set pthread_create_joinable
8610                         eval $setvar
8611                 else            
8612                         set try -DJOINABLE=__UNDETACHED
8613                         if eval $compile; then
8614                                 echo "You seem to use __UNDETACHED." >&2
8615                                 val="$define"
8616                                 set d_pthread_create_joinable
8617                                 eval $setvar
8618                                 val=__UNDETACHED
8619                                 set pthread_create_joinable
8620                                 eval $setvar
8621                         else
8622                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
8623                                 val="$define"
8624                                 set d_pthread_create_joinable
8625                                 eval $setvar
8626                                 val=0
8627                                 set pthread_create_joinable
8628                                 eval $setvar
8629                         fi
8630                 fi
8631         fi
8632         $rm -f try try.*
8633 else
8634     d_pthread_create_joinable="$undef"
8635     pthread_create_joinable=0
8636 fi
8637
8638
8639 : see whether the various POSIXish _yields exist
8640 $cat >try.c <<EOP
8641 #include <pthread.h>
8642 #include <stdio.h>
8643 main() {
8644 #ifdef SCHED_YIELD
8645         sched_yield();
8646 #else
8647 #ifdef PTHREAD_YIELD
8648         pthread_yield();
8649 #else
8650 #ifdef PTHREAD_YIELD_NULL
8651         pthread_yield(NULL);
8652 #endif
8653 #endif
8654 #endif
8655 }
8656 EOP
8657 : see if sched_yield exists
8658 set try -DSCHED_YIELD
8659 if eval $compile; then
8660     val="$define"
8661     sched_yield='sched_yield()'
8662 else
8663     val="$undef"
8664 fi
8665 case "$usethreads" in
8666 $define)
8667         case "$val" in
8668         $define) echo 'sched_yield() found.' >&4        ;;
8669         *)       echo 'sched_yield() NOT found.' >&4    ;;
8670         esac
8671 esac
8672 set d_sched_yield
8673 eval $setvar
8674
8675 : see if pthread_yield exists
8676 set try -DPTHREAD_YIELD
8677 if eval $compile; then
8678     val="$define"
8679     case "$sched_yield" in
8680     '') sched_yield='pthread_yield()' ;;
8681     esac
8682 else
8683     set try -DPTHREAD_YIELD_NULL
8684     if eval $compile; then
8685         val="$define"
8686         case "$sched_yield" in
8687         '') sched_yield='pthread_yield(NULL)' ;;
8688         esac
8689     else
8690         val="$undef"
8691     fi
8692 fi
8693 case "$usethreads" in
8694 $define)
8695         case "$val" in
8696         $define) echo 'pthread_yield() found.' >&4      ;;
8697         *)       echo 'pthread_yield() NOT found.' >&4  ;;
8698         esac
8699         ;;
8700 esac
8701 set d_pthread_yield
8702 eval $setvar
8703
8704 case "$sched_yield" in
8705 '') sched_yield=undef ;;
8706 esac
8707
8708 $rm -f try try.*
8709
8710 : see if this is a pwd.h system
8711 set pwd.h i_pwd
8712 eval $inhdr
8713
8714 case "$i_pwd" in
8715 $define)
8716         xxx=`./findhdr pwd.h`
8717         $cppstdin $cppflags $cppminus < $xxx >$$.h
8718
8719         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8720                 val="$define"
8721         else
8722                 val="$undef"
8723         fi
8724         set d_pwquota
8725         eval $setvar
8726
8727         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8728                 val="$define"
8729         else
8730                 val="$undef"
8731         fi
8732         set d_pwage
8733         eval $setvar
8734
8735         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8736                 val="$define"
8737         else
8738                 val="$undef"
8739         fi
8740         set d_pwchange
8741         eval $setvar
8742
8743         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8744                 val="$define"
8745         else
8746                 val="$undef"
8747         fi
8748         set d_pwclass
8749         eval $setvar
8750
8751         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8752                 val="$define"
8753         else
8754                 val="$undef"
8755         fi
8756         set d_pwexpire
8757         eval $setvar
8758
8759         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8760                 val="$define"
8761         else
8762                 val="$undef"
8763         fi
8764         set d_pwcomment
8765         eval $setvar
8766
8767         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8768                 val="$define"
8769         else
8770                 val="$undef"
8771         fi
8772         set d_pwgecos
8773         eval $setvar
8774
8775         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8776                 val="$define"
8777         else
8778                 val="$undef"
8779         fi
8780         set d_pwpasswd
8781         eval $setvar
8782
8783         $rm -f $$.h
8784         ;;
8785 *)
8786         val="$undef"; 
8787         set d_pwquota; eval $setvar
8788         set d_pwage; eval $setvar
8789         set d_pwchange; eval $setvar
8790         set d_pwclass; eval $setvar
8791         set d_pwexpire; eval $setvar
8792         set d_pwcomment; eval $setvar
8793         set d_pwgecos; eval $setvar
8794         set d_pwpasswd; eval $setvar
8795         ;;
8796 esac
8797
8798 : see if readdir and friends exist
8799 set readdir d_readdir
8800 eval $inlibc
8801 set seekdir d_seekdir
8802 eval $inlibc
8803 set telldir d_telldir
8804 eval $inlibc
8805 set rewinddir d_rewinddir
8806 eval $inlibc
8807
8808 : see if readlink exists
8809 set readlink d_readlink
8810 eval $inlibc
8811
8812 : see if readv exists
8813 set readv d_readv
8814 eval $inlibc
8815
8816 : see if rename exists
8817 set rename d_rename
8818 eval $inlibc
8819
8820 : see if rmdir exists
8821 set rmdir d_rmdir
8822 eval $inlibc
8823
8824 : see if memory.h is available.
8825 val=''
8826 set memory.h val
8827 eval $inhdr
8828
8829 : See if it conflicts with string.h
8830 case "$val" in
8831 $define)
8832         case "$strings" in
8833         '') ;;
8834         *)
8835                 $cppstdin $cppflags $cppminus < $strings > mem.h
8836                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8837                         echo " "
8838                         echo "We won't be including <memory.h>."
8839                         val="$undef"
8840                 fi
8841                 $rm -f mem.h
8842                 ;;
8843         esac
8844 esac
8845 set i_memory
8846 eval $setvar
8847
8848 : can bcopy handle overlapping blocks?
8849 val="$undef"
8850 case "$d_bcopy" in
8851 "$define")
8852         echo " "
8853         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8854         $cat >try.c <<EOCP
8855 #$i_memory I_MEMORY
8856 #$i_stdlib I_STDLIB
8857 #$i_string I_STRING
8858 #$i_unistd I_UNISTD
8859 EOCP
8860         $cat >>try.c <<'EOCP'
8861 #include <stdio.h>
8862 #ifdef I_MEMORY
8863 #  include <memory.h>
8864 #endif
8865 #ifdef I_STDLIB
8866 #  include <stdlib.h>
8867 #endif
8868 #ifdef I_STRING
8869 #  include <string.h>
8870 #else
8871 #  include <strings.h>
8872 #endif
8873 #ifdef I_UNISTD
8874 #  include <unistd.h>  /* Needed for NetBSD */
8875 #endif
8876 main()
8877 {
8878 char buf[128], abc[128];
8879 char *b;
8880 int len;
8881 int off;
8882 int align;
8883
8884 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
8885
8886 for (align = 7; align >= 0; align--) {
8887         for (len = 36; len; len--) {
8888                 b = buf+align;
8889                 bcopy(abc, b, len);
8890                 for (off = 1; off <= len; off++) {
8891                         bcopy(b, b+off, len);
8892                         bcopy(b+off, b, len);
8893                         if (bcmp(b, abc, len))
8894                                 exit(1);
8895                 }
8896         }
8897 }
8898 exit(0);
8899 }
8900 EOCP
8901         set try
8902         if eval $compile_ok; then
8903                 if ./try 2>/dev/null; then
8904                         echo "Yes, it can."
8905                         val="$define"
8906                 else
8907                         echo "It can't, sorry."
8908                         case "$d_memmove" in
8909                         "$define") echo "But that's Ok since you have memmove()." ;;
8910                         esac
8911                 fi
8912         else
8913                 echo "(I can't compile the test program, so we'll assume not...)"
8914                 case "$d_memmove" in
8915                 "$define") echo "But that's Ok since you have memmove()." ;;
8916                 esac
8917         fi
8918         ;;
8919 esac
8920 $rm -f try.* try core
8921 set d_safebcpy
8922 eval $setvar
8923
8924 : can memcpy handle overlapping blocks?
8925 val="$undef"
8926 case "$d_memcpy" in
8927 "$define")
8928         echo " "
8929         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
8930         $cat >try.c <<EOCP
8931 #$i_memory I_MEMORY
8932 #$i_stdlib I_STDLIB
8933 #$i_string I_STRING
8934 #$i_unistd I_UNISTD
8935 EOCP
8936         $cat >>try.c <<'EOCP'
8937 #include <stdio.h>
8938 #ifdef I_MEMORY
8939 #  include <memory.h>
8940 #endif
8941 #ifdef I_STDLIB
8942 #  include <stdlib.h>
8943 #endif
8944 #ifdef I_STRING
8945 #  include <string.h>
8946 #else
8947 #  include <strings.h>
8948 #endif
8949 #ifdef I_UNISTD
8950 #  include <unistd.h>  /* Needed for NetBSD */
8951 #endif
8952 main()
8953 {
8954 char buf[128], abc[128];
8955 char *b;
8956 int len;
8957 int off;
8958 int align;
8959
8960 /* Copy "abcde..." string to char abc[] so that gcc doesn't
8961    try to store the string in read-only memory. */
8962 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
8963
8964 for (align = 7; align >= 0; align--) {
8965         for (len = 36; len; len--) {
8966                 b = buf+align;
8967                 memcpy(b, abc, len);
8968                 for (off = 1; off <= len; off++) {
8969                         memcpy(b+off, b, len);
8970                         memcpy(b, b+off, len);
8971                         if (memcmp(b, abc, len))
8972                                 exit(1);
8973                 }
8974         }
8975 }
8976 exit(0);
8977 }
8978 EOCP
8979         set try
8980         if eval $compile_ok; then
8981                 if ./try 2>/dev/null; then
8982                         echo "Yes, it can."
8983                         val="$define"
8984                 else
8985                         echo "It can't, sorry."
8986                         case "$d_memmove" in
8987                         "$define") echo "But that's Ok since you have memmove()." ;;
8988                         esac
8989                 fi
8990         else
8991                 echo "(I can't compile the test program, so we'll assume not...)"
8992                 case "$d_memmove" in
8993                 "$define") echo "But that's Ok since you have memmove()." ;;
8994                 esac
8995         fi
8996         ;;
8997 esac
8998 $rm -f try.* try core
8999 set d_safemcpy
9000 eval $setvar
9001
9002 : can memcmp be trusted to compare relative magnitude?
9003 val="$undef"
9004 case "$d_memcmp" in
9005 "$define")
9006         echo " "
9007         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9008         $cat >try.c <<EOCP
9009 #$i_memory I_MEMORY
9010 #$i_stdlib I_STDLIB
9011 #$i_string I_STRING
9012 #$i_unistd I_UNISTD
9013 EOCP
9014         $cat >>try.c <<'EOCP'
9015 #include <stdio.h>
9016 #ifdef I_MEMORY
9017 #  include <memory.h>
9018 #endif
9019 #ifdef I_STDLIB
9020 #  include <stdlib.h>
9021 #endif
9022 #ifdef I_STRING
9023 #  include <string.h>
9024 #else
9025 #  include <strings.h>
9026 #endif
9027 #ifdef I_UNISTD
9028 #  include <unistd.h>  /* Needed for NetBSD */
9029 #endif
9030 main()
9031 {
9032 char a = -1;
9033 char b = 0;
9034 if ((a < b) && memcmp(&a, &b, 1) < 0)
9035         exit(1);
9036 exit(0);
9037 }
9038 EOCP
9039         set try
9040         if eval $compile_ok; then
9041                 if ./try 2>/dev/null; then
9042                         echo "Yes, it can."
9043                         val="$define"
9044                 else
9045                         echo "No, it can't (it uses signed chars)."
9046                 fi
9047         else
9048                 echo "(I can't compile the test program, so we'll assume not...)"
9049         fi
9050         ;;
9051 esac
9052 $rm -f try.* try core
9053 set d_sanemcmp
9054 eval $setvar
9055
9056 : see if select exists
9057 set select d_select
9058 eval $inlibc
9059
9060 : see if semctl exists
9061 set semctl d_semctl
9062 eval $inlibc
9063
9064 : see if semget exists
9065 set semget d_semget
9066 eval $inlibc
9067
9068 : see if semop exists
9069 set semop d_semop
9070 eval $inlibc
9071
9072 : see how much of the 'sem*(2)' library is present.
9073 h_sem=true
9074 echo " "
9075 case "$d_semctl$d_semget$d_semop" in
9076 *"$undef"*) h_sem=false;;
9077 esac
9078 case "$osname" in
9079 freebsd)
9080     case "`ipcs 2>&1`" in
9081     "SVID messages"*"not configured"*)
9082         echo "Your $osname does not have the sem*(2) configured." >&4
9083         h_sem=false
9084         val="$undef"
9085         set semctl d_semctl
9086         eval $setvar
9087         set semget d_semget
9088         eval $setvar
9089         set semop d_semop
9090         eval $setvar
9091         ;;
9092     esac
9093     ;;
9094 esac
9095 : we could also check for sys/ipc.h ...
9096 if $h_sem && $test `./findhdr sys/sem.h`; then
9097         echo "You have the full sem*(2) library." >&4
9098         val="$define"
9099 else
9100         echo "You don't have the full sem*(2) library." >&4
9101         val="$undef"
9102 fi
9103 set d_sem
9104 eval $setvar
9105
9106 : see whether sys/sem.h defines union semun
9107 echo " "
9108 $cat > try.c <<'END'
9109 #include <sys/types.h>
9110 #include <sys/ipc.h>
9111 #include <sys/sem.h>
9112 int main () { union semun semun; semun.buf = 0; }
9113 END
9114 set try
9115 if eval $compile; then
9116     echo "You have union semun in <sys/sem.h>." >&4
9117     val="$define"
9118 else
9119     echo "You do not have union semun in <sys/sem.h>." >&4
9120     val="$undef"
9121 fi
9122 $rm -f try try.c try.h
9123 set d_union_semun
9124 eval $setvar
9125
9126 : see how to do semctl IPC_STAT
9127 case "$d_sem" in
9128 $define)
9129     : see whether semctl IPC_STAT can use union semun
9130     echo " "
9131     $cat > try.h <<END
9132 #ifndef S_IRUSR
9133 #   ifdef S_IREAD
9134 #       define S_IRUSR S_IREAD
9135 #       define S_IWUSR S_IWRITE
9136 #       define S_IXUSR S_IEXEC
9137 #   else
9138 #       define S_IRUSR 0400
9139 #       define S_IWUSR 0200
9140 #       define S_IXUSR 0100
9141 #   endif
9142 #   define S_IRGRP (S_IRUSR>>3)
9143 #   define S_IWGRP (S_IWUSR>>3)
9144 #   define S_IXGRP (S_IXUSR>>3)
9145 #   define S_IROTH (S_IRUSR>>6)
9146 #   define S_IWOTH (S_IWUSR>>6)
9147 #   define S_IXOTH (S_IXUSR>>6)
9148 #endif
9149 #ifndef S_IRWXU
9150 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9151 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9152 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9153 #endif
9154 END
9155
9156     $cat > try.c <<END
9157 #include <sys/types.h>
9158 #include <sys/ipc.h>
9159 #include <sys/sem.h>
9160 #include <sys/stat.h>
9161 #include <stdio.h>
9162 #include <errno.h>
9163 #include "try.h"
9164 #ifndef errno
9165 extern int errno;
9166 #endif
9167 #$d_union_semun HAS_UNION_SEMUN
9168 int main() {
9169     union semun
9170 #ifndef HAS_UNION_SEMUN
9171     {
9172         int val;
9173         struct semid_ds *buf;
9174         unsigned short *array;
9175     }
9176 #endif
9177     arg;
9178     int sem, st;
9179
9180 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9181     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9182     if (sem > -1) {
9183         struct semid_ds argbuf;
9184         arg.buf = &argbuf;
9185 #       ifdef IPC_STAT
9186         st = semctl(sem, 0, IPC_STAT, arg);
9187         if (st == 0)
9188             printf("semun\n");
9189         else
9190 #       endif /* IPC_STAT */
9191             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9192 #       ifdef IPC_RMID
9193         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9194 #       endif /* IPC_RMID */
9195             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9196     } else
9197 #endif /* IPC_PRIVATE && ... */
9198         printf("semget failed: errno = %d\n", errno);
9199   return 0;
9200 }
9201 END
9202     val="$undef"
9203     set try
9204     if eval $compile; then
9205         xxx=`./try`
9206         case "$xxx" in
9207         semun) val="$define" ;;
9208         esac
9209     fi
9210     $rm -f try try.c
9211     set d_semctl_semun
9212     eval $setvar
9213     case "$d_semctl_semun" in
9214     $define)
9215         echo "You can use union semun for semctl IPC_STAT." >&4
9216         also='also'
9217         ;;
9218     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9219         also=''
9220         ;;
9221     esac
9222
9223     : see whether semctl IPC_STAT can use struct semid_ds pointer
9224     $cat > try.c <<'END'
9225 #include <sys/types.h>
9226 #include <sys/ipc.h>
9227 #include <sys/sem.h>
9228 #include <sys/stat.h>
9229 #include "try.h"
9230 #include <stdio.h>
9231 #include <errno.h>
9232 #ifndef errno
9233 extern int errno;
9234 #endif
9235 int main() {
9236     struct semid_ds arg;
9237     int sem, st;
9238
9239 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9240     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9241     if (sem > -1) {
9242 #       ifdef IPC_STAT
9243         st = semctl(sem, 0, IPC_STAT, &arg);
9244         if (st == 0)
9245             printf("semid_ds\n");
9246         else
9247 #       endif /* IPC_STAT */
9248             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9249 #       ifdef IPC_RMID
9250         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9251 #       endif /* IPC_RMID */
9252             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9253     } else
9254 #endif /* IPC_PRIVATE && ... */
9255         printf("semget failed: errno = %d\n", errno);
9256
9257     return 0;
9258 }
9259 END
9260     val="$undef"
9261     set try
9262     if eval $compile; then
9263         xxx=`./try`
9264         case "$xxx" in
9265         semid_ds) val="$define" ;;
9266         esac
9267     fi
9268     $rm -f try try.c
9269     set d_semctl_semid_ds
9270     eval $setvar
9271     case "$d_semctl_semid_ds" in
9272     $define)
9273         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9274         ;;
9275     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9276         ;;
9277     esac
9278     $rm -f try.h
9279     ;;
9280 *)  val="$undef"
9281
9282     # We do not have the full sem*(2) library, so assume we can not
9283     # use either.
9284
9285     set d_semctl_semun
9286     eval $setvar
9287
9288     set d_semctl_semid_ds
9289     eval $setvar
9290     ;;
9291 esac
9292
9293 : see if setegid exists
9294 set setegid d_setegid
9295 eval $inlibc
9296
9297 : see if seteuid exists
9298 set seteuid d_seteuid
9299 eval $inlibc
9300
9301 : see if setgrent exists
9302 set setgrent d_setgrent
9303 eval $inlibc
9304
9305 : see if sethostent exists
9306 set sethostent d_sethent
9307 eval $inlibc
9308
9309 : see if setlinebuf exists
9310 set setlinebuf d_setlinebuf
9311 eval $inlibc
9312
9313 : see if setlocale exists
9314 set setlocale d_setlocale
9315 eval $inlibc
9316
9317 : see if setnetent exists
9318 set setnetent d_setnent
9319 eval $inlibc
9320
9321 : see if setprotoent exists
9322 set setprotoent d_setpent
9323 eval $inlibc
9324
9325 : see if setpgid exists
9326 set setpgid d_setpgid
9327 eval $inlibc
9328
9329 : see if setpgrp2 exists
9330 set setpgrp2 d_setpgrp2
9331 eval $inlibc
9332
9333 : see if setpriority exists
9334 set setpriority d_setprior
9335 eval $inlibc
9336
9337 : see if setpwent exists
9338 set setpwent d_setpwent
9339 eval $inlibc
9340
9341 : see if setregid exists
9342 set setregid d_setregid
9343 eval $inlibc
9344 set setresgid d_setresgid
9345 eval $inlibc
9346
9347 : see if setreuid exists
9348 set setreuid d_setreuid
9349 eval $inlibc
9350 set setresuid d_setresuid
9351 eval $inlibc
9352
9353 : see if setrgid exists
9354 set setrgid d_setrgid
9355 eval $inlibc
9356
9357 : see if setruid exists
9358 set setruid d_setruid
9359 eval $inlibc
9360
9361 : see if setservent exists
9362 set setservent d_setsent
9363 eval $inlibc
9364
9365 : see if setsid exists
9366 set setsid d_setsid
9367 eval $inlibc
9368
9369 : see if setvbuf exists
9370 set setvbuf d_setvbuf
9371 eval $inlibc
9372
9373 : see if sfio.h is available
9374 set sfio.h i_sfio
9375 eval $inhdr
9376
9377
9378 : see if sfio library is available
9379 case "$i_sfio" in
9380 $define)
9381         val=''
9382         set sfreserve val
9383         eval $inlibc
9384         ;;
9385 *)
9386         val="$undef"
9387         ;;
9388 esac
9389 : Ok, but do we want to use it.
9390 case "$val" in
9391 $define)
9392         case "$usesfio" in
9393         true|$define|[yY]*) dflt='y';;
9394         *) dflt='n';;
9395         esac
9396         echo "$package can use the sfio library, but it is experimental."
9397         rp="You seem to have sfio available, do you want to try using it?"
9398         . ./myread
9399         case "$ans" in
9400         y|Y) ;;
9401         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
9402                 val="$undef"
9403                 : Remove sfio from list of libraries to use
9404                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9405                 shift
9406                 libs="$*"
9407                 echo "libs = $libs" >&4
9408                 ;;
9409         esac
9410         ;;
9411 *)      case "$usesfio" in
9412         true|$define|[yY]*)
9413                 echo "Sorry, cannot find sfio on this machine" >&4
9414                 echo "Ignoring your setting of usesfio=$usesfio" >&4
9415                 ;;
9416         esac
9417         ;;
9418 esac
9419 set d_sfio
9420 eval $setvar
9421 case "$d_sfio" in
9422 $define) usesfio='true';;
9423 *) usesfio='false';;
9424 esac
9425
9426 : see if shmctl exists
9427 set shmctl d_shmctl
9428 eval $inlibc
9429
9430 : see if shmget exists
9431 set shmget d_shmget
9432 eval $inlibc
9433
9434 : see if shmat exists
9435 set shmat d_shmat
9436 eval $inlibc
9437 : see what shmat returns
9438 case "$d_shmat" in
9439 "$define")
9440         $cat >shmat.c <<'END'
9441 #include <sys/shm.h>
9442 void *shmat();
9443 END
9444         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9445                 shmattype='void *'
9446         else
9447                 shmattype='char *'
9448         fi
9449         echo "and it returns ($shmattype)." >&4
9450         : see if a prototype for shmat is available
9451         xxx=`./findhdr sys/shm.h`
9452         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9453         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9454                 val="$define"
9455         else
9456                 val="$undef"
9457         fi
9458         $rm -f shmat.[co]
9459         ;;
9460 *)
9461         val="$undef"
9462         ;;
9463 esac
9464 set d_shmatprototype
9465 eval $setvar
9466
9467 : see if shmdt exists
9468 set shmdt d_shmdt
9469 eval $inlibc
9470
9471 : see how much of the 'shm*(2)' library is present.
9472 h_shm=true
9473 echo " "
9474 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9475 *"$undef"*) h_shm=false;;
9476 esac
9477 case "$osname" in
9478 freebsd)
9479     case "`ipcs 2>&1`" in
9480     "SVID shared memory"*"not configured"*)
9481         echo "Your $osname does not have the shm*(2) configured." >&4
9482         h_shm=false
9483         val="$undef"
9484         set shmctl d_shmctl
9485         evat $setvar
9486         set shmget d_shmget
9487         evat $setvar
9488         set shmat d_shmat
9489         evat $setvar
9490         set shmdt d_shmdt
9491         evat $setvar
9492         ;;
9493     esac
9494     ;;
9495 esac
9496 : we could also check for sys/ipc.h ...
9497 if $h_shm && $test `./findhdr sys/shm.h`; then
9498         echo "You have the full shm*(2) library." >&4
9499         val="$define"
9500 else
9501         echo "You don't have the full shm*(2) library." >&4
9502         val="$undef"
9503 fi
9504 set d_shm
9505 eval $setvar
9506
9507 echo " "
9508 : see if we have sigaction
9509 if set sigaction val -f d_sigaction; eval $csym; $val; then
9510         echo 'sigaction() found.' >&4
9511         $cat > try.c <<'EOP'
9512 #include <stdio.h>
9513 #include <sys/types.h>
9514 #include <signal.h>
9515 main()
9516 {
9517     struct sigaction act, oact;
9518 }
9519 EOP
9520         set try
9521         if eval $compile_ok; then
9522                 val="$define"
9523         else
9524                 echo "But you don't seem to have a useable struct sigaction." >&4
9525                 val="$undef"
9526         fi
9527 else
9528         echo 'sigaction NOT found.' >&4
9529         val="$undef"
9530 fi
9531 set d_sigaction; eval $setvar
9532 $rm -f try try$_o try.c
9533
9534 : see if sigsetjmp exists
9535 echo " "
9536 case "$d_sigsetjmp" in
9537 '')
9538         $cat >try.c <<'EOP'
9539 #include <setjmp.h>
9540 sigjmp_buf env;
9541 int set = 1;
9542 main()
9543 {
9544         if (sigsetjmp(env,1))
9545                 exit(set);
9546         set = 0;
9547         siglongjmp(env, 1);
9548         exit(1);
9549 }
9550 EOP
9551         set try
9552         if eval $compile; then
9553                 if ./try >/dev/null 2>&1; then
9554                         echo "POSIX sigsetjmp found." >&4
9555                         val="$define"
9556                 else
9557                         $cat >&4 <<EOM
9558 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9559 I'll ignore them.
9560 EOM
9561                         val="$undef"
9562                 fi
9563         else
9564                 echo "sigsetjmp not found." >&4
9565                 val="$undef"
9566         fi
9567         ;;
9568 *) val="$d_sigsetjmp"
9569         case "$d_sigsetjmp" in
9570         $define) echo "POSIX sigsetjmp found." >&4;;
9571         $undef) echo "sigsetjmp not found." >&4;;
9572         esac
9573         ;;
9574 esac
9575 set d_sigsetjmp
9576 eval $setvar
9577 $rm -f try.c try
9578
9579 : see if stat knows about block sizes
9580 echo " "
9581 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9582 eval $hasfield
9583
9584 : see if _ptr and _cnt from stdio act std
9585 echo " "
9586 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9587         echo "(Looks like you have stdio.h from Linux.)"
9588         case "$stdio_ptr" in
9589         '') stdio_ptr='((fp)->_IO_read_ptr)'
9590                 ptr_lval=$define
9591                 ;;
9592         *)      ptr_lval=$d_stdio_ptr_lval;;
9593         esac
9594         case "$stdio_cnt" in
9595         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9596                 cnt_lval=$undef
9597                 ;;
9598         *)      cnt_lval=$d_stdio_cnt_lval;;
9599         esac
9600         case "$stdio_base" in
9601         '') stdio_base='((fp)->_IO_read_base)';;
9602         esac
9603         case "$stdio_bufsiz" in
9604         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9605         esac
9606 else
9607         case "$stdio_ptr" in
9608         '') stdio_ptr='((fp)->_ptr)'
9609                 ptr_lval=$define
9610                 ;;
9611         *)      ptr_lval=$d_stdio_ptr_lval;;
9612         esac
9613         case "$stdio_cnt" in
9614         '') stdio_cnt='((fp)->_cnt)'
9615                 cnt_lval=$define
9616                 ;;
9617         *)      cnt_lval=$d_stdio_cnt_lval;;
9618         esac
9619         case "$stdio_base" in
9620         '') stdio_base='((fp)->_base)';;
9621         esac
9622         case "$stdio_bufsiz" in
9623         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9624         esac
9625 fi
9626 : test whether _ptr and _cnt really work
9627 echo "Checking how std your stdio is..." >&4
9628 $cat >try.c <<EOP
9629 #include <stdio.h>
9630 #define FILE_ptr(fp)    $stdio_ptr
9631 #define FILE_cnt(fp)    $stdio_cnt
9632 main() {
9633         FILE *fp = fopen("try.c", "r");
9634         char c = getc(fp);
9635         if (
9636                 18 <= FILE_cnt(fp) &&
9637                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9638         )
9639                 exit(0);
9640         exit(1);
9641 }
9642 EOP
9643 val="$undef"
9644 set try
9645 if eval $compile; then
9646         if ./try; then
9647                 echo "Your stdio acts pretty std."
9648                 val="$define"
9649         else
9650                 echo "Your stdio isn't very std."
9651         fi
9652 else
9653         echo "Your stdio doesn't appear very std."
9654 fi
9655 $rm -f try.c try
9656 set d_stdstdio
9657 eval $setvar
9658
9659 : Can _ptr be used as an lvalue?
9660 case "$d_stdstdio$ptr_lval" in
9661 $define$define) val=$define ;;
9662 *) val=$undef ;;
9663 esac
9664 set d_stdio_ptr_lval
9665 eval $setvar
9666
9667 : Can _cnt be used as an lvalue?
9668 case "$d_stdstdio$cnt_lval" in
9669 $define$define) val=$define ;;
9670 *) val=$undef ;;
9671 esac
9672 set d_stdio_cnt_lval
9673 eval $setvar
9674
9675 : see if _base is also standard
9676 val="$undef"
9677 case "$d_stdstdio" in
9678 $define)
9679         $cat >try.c <<EOP
9680 #include <stdio.h>
9681 #define FILE_base(fp)   $stdio_base
9682 #define FILE_bufsiz(fp) $stdio_bufsiz
9683 main() {
9684         FILE *fp = fopen("try.c", "r");
9685         char c = getc(fp);
9686         if (
9687                 19 <= FILE_bufsiz(fp) &&
9688                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9689         )
9690                 exit(0);
9691         exit(1);
9692 }
9693 EOP
9694         set try
9695         if eval $compile; then
9696                 if ./try; then
9697                         echo "And its _base field acts std."
9698                         val="$define"
9699                 else
9700                         echo "But its _base field isn't std."
9701                 fi
9702         else
9703                 echo "However, it seems to be lacking the _base field."
9704         fi
9705         $rm -f try.c try
9706         ;;
9707 esac
9708 set d_stdiobase
9709 eval $setvar
9710
9711 : see if strcoll exists
9712 set strcoll d_strcoll
9713 eval $inlibc
9714
9715 : check for structure copying
9716 echo " "
9717 echo "Checking to see if your C compiler can copy structs..." >&4
9718 $cat >try.c <<'EOCP'
9719 main()
9720 {
9721         struct blurfl {
9722                 int dyick;
9723         } foo, bar;
9724
9725         foo = bar;
9726 }
9727 EOCP
9728 if $cc -c try.c >/dev/null 2>&1 ; then
9729         val="$define"
9730         echo "Yup, it can."
9731 else
9732         val="$undef"
9733         echo "Nope, it can't."
9734 fi
9735 set d_strctcpy
9736 eval $setvar
9737 $rm -f try.*
9738
9739 : see if strerror and/or sys_errlist[] exist
9740 echo " "
9741 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9742     if set strerror val -f d_strerror; eval $csym; $val; then
9743                 echo 'strerror() found.' >&4
9744                 d_strerror="$define"
9745                 d_strerrm='strerror(e)'
9746                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9747                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
9748                         d_syserrlst="$define"
9749                 else
9750                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9751                         d_syserrlst="$undef"
9752                 fi
9753     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9754                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9755                 echo 'strerror() found in string header.' >&4
9756                 d_strerror="$define"
9757                 d_strerrm='strerror(e)'
9758                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
9759                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9760                                 d_syserrlst="$define"
9761                 else
9762                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
9763                         d_syserrlst="$undef"
9764                 fi
9765     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9766                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9767                 d_strerror="$undef"
9768                 d_syserrlst="$define"
9769                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9770     else
9771                 echo 'strerror() and sys_errlist[] NOT found.' >&4
9772                 d_strerror="$undef"
9773                 d_syserrlst="$undef"
9774                 d_strerrm='"unknown"'
9775     fi
9776 fi
9777
9778 : see if strtod exists
9779 set strtod d_strtod
9780 eval $inlibc
9781
9782 : see if strtol exists
9783 set strtol d_strtol
9784 eval $inlibc
9785
9786 : see if strtoul exists
9787 set strtoul d_strtoul
9788 eval $inlibc
9789
9790 : see if strxfrm exists
9791 set strxfrm d_strxfrm
9792 eval $inlibc
9793
9794 : see if symlink exists
9795 set symlink d_symlink
9796 eval $inlibc
9797
9798 : see if syscall exists
9799 set syscall d_syscall
9800 eval $inlibc
9801
9802 : see if sysconf exists
9803 set sysconf d_sysconf
9804 eval $inlibc
9805
9806 : see if system exists
9807 set system d_system
9808 eval $inlibc
9809
9810 : see if tcgetpgrp exists
9811 set tcgetpgrp d_tcgetpgrp
9812 eval $inlibc
9813
9814 : see if tcsetpgrp exists
9815 set tcsetpgrp d_tcsetpgrp
9816 eval $inlibc
9817
9818 : define an is-a-typedef? function
9819 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9820 case "$inclist" in
9821 "") inclist="sys/types.h";;
9822 esac;
9823 eval "varval=\$$var";
9824 case "$varval" in
9825 "")
9826         $rm -f temp.c;
9827         for inc in $inclist; do
9828                 echo "#include <$inc>" >>temp.c;
9829         done;
9830         echo "#ifdef $type" >> temp.c;
9831         echo "printf(\"We have $type\");" >> temp.c;
9832         echo "#endif" >> temp.c;
9833         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9834         if $contains $type temp.E >/dev/null 2>&1; then
9835                 eval "$var=\$type";
9836         else
9837                 eval "$var=\$def";
9838         fi;
9839         $rm -f temp.?;;
9840 *) eval "$var=\$varval";;
9841 esac'
9842
9843 : define an is-a-typedef? function that prompts if the type is not available.
9844 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9845 case "$inclist" in
9846 "") inclist="sys/types.h";;
9847 esac;
9848 eval "varval=\$$var";
9849 case "$varval" in
9850 "")
9851         $rm -f temp.c;
9852         for inc in $inclist; do
9853                 echo "#include <$inc>" >>temp.c;
9854         done;
9855         echo "#ifdef $type" >> temp.c;
9856         echo "printf(\"We have $type\");" >> temp.c;
9857         echo "#endif" >> temp.c;
9858         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9859         echo " " ;
9860         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9861         if $contains $type temp.E >/dev/null 2>&1; then
9862                 echo "$type found." >&4;
9863                 eval "$var=\$type";
9864         else
9865                 echo "$type NOT found." >&4;
9866                 dflt="$def";
9867                 . ./myread ;
9868                 eval "$var=\$ans";
9869         fi;
9870         $rm -f temp.?;;
9871 *) eval "$var=\$varval";;
9872 esac'
9873
9874 : see if this is a sys/times.h system
9875 set sys/times.h i_systimes
9876 eval $inhdr
9877
9878 : see if times exists
9879 echo " "
9880 if set times val -f d_times; eval $csym; $val; then
9881         echo 'times() found.' >&4
9882         d_times="$define"
9883         inc=''
9884         case "$i_systimes" in
9885         "$define") inc='sys/times.h';;
9886         esac
9887         rp="What is the type returned by times() on this system?"
9888         set clock_t clocktype long stdio.h sys/types.h $inc
9889         eval $typedef_ask
9890 else
9891         echo 'times() NOT found, hope that will do.' >&4
9892         d_times="$undef"
9893         clocktype='int'
9894 fi
9895
9896 : see if truncate exists
9897 set truncate d_truncate
9898 eval $inlibc
9899
9900 : see if tzname[] exists
9901 echo " "
9902 if set tzname val -a d_tzname; eval $csym; $val; then
9903         val="$define"
9904         echo 'tzname[] found.' >&4
9905 else
9906         val="$undef"
9907         echo 'tzname[] NOT found.' >&4
9908 fi
9909 set d_tzname
9910 eval $setvar
9911
9912 : see if umask exists
9913 set umask d_umask
9914 eval $inlibc
9915
9916 : backward compatibility for d_hvfork
9917 if test X$d_hvfork != X; then
9918         d_vfork="$d_hvfork"
9919         d_hvfork=''
9920 fi
9921 : see if there is a vfork
9922 val=''
9923 set vfork val
9924 eval $inlibc
9925
9926 : Ok, but do we want to use it. vfork is reportedly unreliable in 
9927 : perl on Solaris 2.x, and probably elsewhere.
9928 case "$val" in
9929 $define)
9930         echo " "
9931         case "$usevfork" in
9932         false) dflt='n';;
9933         *) dflt='y';;
9934         esac
9935         rp="Some systems have problems with vfork().  Do you want to use it?"
9936         . ./myread
9937         case "$ans" in
9938         y|Y) ;;
9939         *)
9940                 echo "Ok, we won't use vfork()."
9941                 val="$undef"
9942                 ;;
9943         esac
9944         ;;
9945 esac
9946 set d_vfork
9947 eval $setvar
9948 case "$d_vfork" in
9949 $define) usevfork='true';;
9950 *) usevfork='false';;
9951 esac
9952
9953 : see if this is an sysdir system
9954 set sys/dir.h i_sysdir
9955 eval $inhdr
9956
9957 : see if this is an sysndir system
9958 set sys/ndir.h i_sysndir
9959 eval $inhdr
9960
9961 : see if sys/types.h has to be included
9962 set sys/types.h i_systypes
9963 eval $inhdr
9964
9965 : see if closedir exists
9966 set closedir d_closedir
9967 eval $inlibc
9968
9969 case "$d_closedir" in
9970 "$define")
9971         echo " "
9972         echo "Checking whether closedir() returns a status..." >&4
9973         cat > closedir.c <<EOM
9974 #$i_dirent I_DIRENT             /**/
9975 #$i_sysdir I_SYS_DIR            /**/
9976 #$i_sysndir I_SYS_NDIR          /**/
9977 #$i_systypes I_SYS_TYPES        /**/
9978
9979 #if defined(I_SYS_TYPES)
9980 #include <sys/types.h>
9981 #endif
9982 #if defined(I_DIRENT)
9983 #include <dirent.h>
9984 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9985 #include <sys/dir.h>
9986 #endif
9987 #else
9988 #ifdef I_SYS_NDIR
9989 #include <sys/ndir.h>
9990 #else
9991 #ifdef I_SYS_DIR
9992 #ifdef hp9000s500
9993 #include <ndir.h>       /* may be wrong in the future */
9994 #else
9995 #include <sys/dir.h>
9996 #endif
9997 #endif
9998 #endif
9999 #endif 
10000 int main() { return closedir(opendir(".")); }
10001 EOM
10002         set closedir
10003         if eval $compile_ok; then
10004                 if ./closedir > /dev/null 2>&1 ; then
10005                         echo "Yes, it does."
10006                         val="$undef"
10007                 else
10008                         echo "No, it doesn't."
10009                         val="$define"
10010                 fi
10011         else
10012                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10013                 val="$define"
10014         fi
10015         ;;
10016 *)
10017         val="$undef";
10018         ;;
10019 esac
10020 set d_void_closedir
10021 eval $setvar
10022 $rm -f closedir*
10023 : check for volatile keyword
10024 echo " "
10025 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10026 $cat >try.c <<'EOCP'
10027 main()
10028 {
10029         typedef struct _goo_struct goo_struct;
10030         goo_struct * volatile goo = ((goo_struct *)0);
10031         struct _goo_struct {
10032                 long long_int;
10033                 int reg_int;
10034                 char char_var;
10035         };
10036         typedef unsigned short foo_t;
10037         char *volatile foo;
10038         volatile int bar;
10039         volatile foo_t blech;
10040         foo = foo;
10041 }
10042 EOCP
10043 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10044         val="$define"
10045         echo "Yup, it does."
10046 else
10047         val="$undef"
10048         echo "Nope, it doesn't."
10049 fi
10050 set d_volatile
10051 eval $setvar
10052 $rm -f try.*
10053
10054 : see if there is a wait4
10055 set wait4 d_wait4
10056 eval $inlibc
10057
10058 : see if waitpid exists
10059 set waitpid d_waitpid
10060 eval $inlibc
10061
10062 : see if wcstombs exists
10063 set wcstombs d_wcstombs
10064 eval $inlibc
10065
10066 : see if wctomb exists
10067 set wctomb d_wctomb
10068 eval $inlibc
10069
10070 : see if writev exists
10071 set writev d_writev
10072 eval $inlibc
10073
10074 : preserve RCS keywords in files with variable substitution, grrr
10075 Date='$Date'
10076 Id='$Id'
10077 Log='$Log'
10078 RCSfile='$RCSfile'
10079 Revision='$Revision'
10080
10081 : check for alignment requirements
10082 echo " "
10083 case "$alignbytes" in
10084 '') echo "Checking alignment constraints..." >&4
10085         $cat >try.c <<'EOCP'
10086 struct foobar {
10087         char foo;
10088         double bar;
10089 } try;
10090 main()
10091 {
10092         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10093 }
10094 EOCP
10095         set try
10096         if eval $compile_ok; then
10097                 dflt=`./try`
10098         else
10099                 dflt='8'
10100                 echo "(I can't seem to compile the test program...)"
10101         fi
10102         ;;
10103 *) dflt="$alignbytes"
10104         ;;
10105 esac
10106 rp="Doubles must be aligned on a how-many-byte boundary?"
10107 . ./myread
10108 alignbytes="$ans"
10109 $rm -f try.c try
10110
10111 : check for ordering of bytes in a long
10112 case "$byteorder" in
10113 '')
10114         $cat <<'EOM'
10115   
10116 In the following, larger digits indicate more significance.  A big-endian
10117 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10118 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10119 machines may have weird orders like 3412.  A Cray will report 87654321. If
10120 the test program works the default is probably right.
10121 I'm now running the test program...
10122 EOM
10123         $cat >try.c <<'EOCP'
10124 #include <stdio.h>
10125 main()
10126 {
10127         int i;
10128         union {
10129                 unsigned long l;
10130                 char c[sizeof(long)];
10131         } u;
10132
10133         if (sizeof(long) > 4)
10134                 u.l = (0x08070605L << 32) | 0x04030201L;
10135         else
10136                 u.l = 0x04030201L;
10137         for (i = 0; i < sizeof(long); i++)
10138                 printf("%c", u.c[i]+'0');
10139         printf("\n");
10140         exit(0);
10141 }
10142 EOCP
10143         xxx_prompt=y
10144         set try
10145         if eval $compile && ./try > /dev/null; then
10146                 dflt=`./try`
10147                 case "$dflt" in
10148                 [1-4][1-4][1-4][1-4]|12345678|87654321)
10149                         echo "(The test program ran ok.)"
10150                         echo "byteorder=$dflt"
10151                         xxx_prompt=n
10152                         ;;
10153                 ????|????????) echo "(The test program ran ok.)" ;;
10154                 *) echo "(The test program didn't run right for some reason.)" ;;
10155                 esac
10156         else
10157                 dflt='4321'
10158                 cat <<'EOM'
10159 (I can't seem to compile the test program.  Guessing big-endian...)
10160 EOM
10161         fi
10162         case "$xxx_prompt" in
10163         y)
10164                 rp="What is the order of bytes in a long?"
10165                 . ./myread
10166                 byteorder="$ans"
10167                 ;;
10168         *)      byteorder=$dflt
10169                 ;;
10170         esac
10171         ;;
10172 esac
10173 $rm -f try.c try
10174
10175 : how do we catenate cpp tokens here?
10176 echo " "
10177 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10178 $cat >cpp_stuff.c <<'EOCP'
10179 #define RCAT(a,b)a/**/b
10180 #define ACAT(a,b)a ## b
10181 RCAT(Rei,ser)
10182 ACAT(Cir,cus)
10183 EOCP
10184 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10185 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10186         echo "Oh!  Smells like ANSI's been here." >&4
10187         echo "We can catify or stringify, separately or together!"
10188         cpp_stuff=42
10189 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10190         echo "Ah, yes!  The good old days!" >&4
10191         echo "However, in the good old days we don't know how to stringify and"
10192         echo "catify at the same time."
10193         cpp_stuff=1
10194 else
10195         $cat >&4 <<EOM
10196 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
10197 to have to edit the values of CAT[2-5] in config.h...
10198 EOM
10199         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10200 fi
10201 $rm -f cpp_stuff.*
10202
10203 : see if this is a db.h system
10204 set db.h i_db
10205 eval $inhdr
10206
10207 case "$i_db" in
10208 $define)
10209         : Check db version.
10210         echo " "
10211         echo "Checking Berkeley DB version ..." >&4
10212         $cat >try.c <<EOCP
10213 #$d_const HASCONST
10214 #ifndef HASCONST
10215 #define const
10216 #endif
10217 #include <sys/types.h>
10218 #include <stdio.h>
10219 #include <db.h>
10220 main()
10221 {
10222 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10223     int Major, Minor, Patch ;
10224     unsigned long Version ;
10225     (void)db_version(&Major, &Minor, &Patch) ;
10226     printf("You have Berkeley DB Version 2 or greater\n");
10227
10228     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10229                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10230     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10231                 Major, Minor, Patch) ;
10232
10233     /* check that db.h & libdb are compatible */
10234     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10235         printf("db.h and libdb are incompatible\n") ;
10236         exit(3);        
10237     }
10238
10239     printf("db.h and libdb are compatible\n") ;
10240
10241     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10242                 + DB_VERSION_PATCH ;
10243
10244     /* needs to be >= 2.3.4 */
10245     if (Version < 2003004) {
10246     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10247         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10248         exit(2);        
10249     }
10250
10251     exit(0);
10252 #else
10253 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10254     printf("You have Berkeley DB Version 1\n");
10255     exit(0);    /* DB version < 2: the coast is clear. */
10256 #else
10257     exit(1);    /* <db.h> not Berkeley DB? */
10258 #endif
10259 #endif
10260 }
10261 EOCP
10262         set try
10263         if eval $compile && ./try; then
10264                 echo 'Looks OK.' >&4
10265         else
10266                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
10267                 i_db=$undef
10268                 case " $libs " in
10269                 *"-ldb "*)
10270                         : Remove db from list of libraries to use
10271                         echo "Removing unusable -ldb from library list" >&4
10272                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10273                         shift
10274                         libs="$*"
10275                         echo "libs = $libs" >&4
10276                         ;;
10277                 esac
10278         fi
10279         $rm -f try.*
10280         ;;
10281 esac
10282
10283 case "$i_db" in
10284 define)
10285         : Check the return type needed for hash 
10286         echo " "
10287         echo "Checking return type needed for hash for Berkeley DB ..." >&4
10288         $cat >try.c <<EOCP
10289 #$d_const HASCONST
10290 #ifndef HASCONST
10291 #define const
10292 #endif
10293 #include <sys/types.h>
10294 #include <db.h>
10295
10296 #ifndef DB_VERSION_MAJOR
10297 u_int32_t hash_cb (ptr, size)
10298 const void *ptr;
10299 size_t size;
10300 {
10301 }
10302 HASHINFO info;
10303 main()
10304 {
10305         info.hash = hash_cb;
10306 }
10307 #endif
10308 EOCP
10309         if $cc $ccflags -c try.c >try.out 2>&1 ; then
10310                 if $contains warning try.out >>/dev/null 2>&1 ; then
10311                         db_hashtype='int'
10312                 else
10313                         db_hashtype='u_int32_t'
10314                 fi
10315         else
10316                 : XXX Maybe we should just give up here.
10317                 db_hashtype=u_int32_t
10318                 $cat try.out >&4
10319                 echo "Help:  I can't seem to compile the db test program." >&4
10320                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10321         fi
10322         $rm -f try.*
10323         echo "Your version of Berkeley DB uses $db_hashtype for hash."
10324         ;;
10325 *)      db_hashtype=u_int32_t
10326         ;;
10327 esac
10328 case "$i_db" in
10329 define)
10330         : Check the return type needed for prefix 
10331         echo " "
10332         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10333         cat >try.c <<EOCP
10334 #$d_const HASCONST
10335 #ifndef HASCONST
10336 #define const
10337 #endif
10338 #include <sys/types.h>
10339 #include <db.h>
10340
10341 #ifndef DB_VERSION_MAJOR
10342 size_t prefix_cb (key1, key2)
10343 const DBT *key1;
10344 const DBT *key2;
10345 {
10346 }
10347 BTREEINFO info;
10348 main()
10349 {
10350         info.prefix = prefix_cb;
10351 }
10352 #endif
10353 EOCP
10354         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
10355                 if $contains warning try.out >>/dev/null 2>&1 ; then
10356                         db_prefixtype='int'
10357                 else
10358                         db_prefixtype='size_t'
10359                 fi
10360         else
10361                 db_prefixtype='size_t'
10362                 : XXX Maybe we should just give up here.
10363                 $cat try.out >&4
10364                 echo "Help:  I can't seem to compile the db test program." >&4
10365                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10366         fi
10367         $rm -f try.*
10368         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10369         ;;
10370 *)      db_prefixtype='size_t'
10371         ;;
10372 esac
10373
10374 : check for void type
10375 echo " "
10376 echo "Checking to see how well your C compiler groks the void type..." >&4
10377 case "$voidflags" in
10378 '')
10379         $cat >try.c <<'EOCP'
10380 #if TRY & 1
10381 void sub() {
10382 #else
10383 sub() {
10384 #endif
10385         extern void moo();      /* function returning void */
10386         void (*goo)();          /* ptr to func returning void */
10387 #if TRY & 8
10388         void *hue;              /* generic ptr */
10389 #endif
10390 #if TRY & 2
10391         void (*foo[10])();
10392 #endif
10393
10394 #if TRY & 4
10395         if(goo == moo) {
10396                 exit(0);
10397         }
10398 #endif
10399         exit(0);
10400 }
10401 main() { sub(); }
10402 EOCP
10403         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10404                 voidflags=$defvoidused
10405         echo "Good.  It appears to support void to the level $package wants.">&4
10406                 if $contains warning .out >/dev/null 2>&1; then
10407                         echo "However, you might get some warnings that look like this:"
10408                         $cat .out
10409                 fi
10410         else
10411 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10412                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10413                         echo "It supports 1..."
10414                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10415                                 echo "It also supports 2..."
10416                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10417                                         voidflags=7
10418                                         echo "And it supports 4 but not 8 definitely."
10419                                 else
10420                                         echo "It doesn't support 4..."
10421                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10422                                                 voidflags=11
10423                                                 echo "But it supports 8."
10424                                         else
10425                                                 voidflags=3
10426                                                 echo "Neither does it support 8."
10427                                         fi
10428                                 fi
10429                         else
10430                                 echo "It does not support 2..."
10431                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10432                                         voidflags=13
10433                                         echo "But it supports 4 and 8."
10434                                 else
10435                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10436                                                 voidflags=5
10437                                                 echo "And it supports 4 but has not heard about 8."
10438                                         else
10439                                                 echo "However it supports 8 but not 4."
10440                                         fi
10441                                 fi
10442                         fi
10443                 else
10444                         echo "There is no support at all for void."
10445                         voidflags=0
10446                 fi
10447         fi
10448 esac
10449 case "$voidflags" in
10450 "$defvoidused") ;;
10451 *)      $cat >&4 <<'EOM'
10452   Support flag bits are:
10453     1: basic void declarations.
10454     2: arrays of pointers to functions returning void.
10455     4: operations between pointers to and addresses of void functions.
10456     8: generic void pointers.
10457 EOM
10458         dflt="$voidflags";
10459         rp="Your void support flags add up to what?"
10460         . ./myread
10461         voidflags="$ans"
10462         ;;
10463 esac
10464 $rm -f try.* .out
10465
10466
10467 : How can we generate normalized random numbers ?
10468 echo " "
10469 echo "Looking for a random number function..." >&4
10470 case "$randfunc" in
10471 '')
10472         if set drand48 val -f; eval $csym; $val; then
10473                 dflt="drand48"
10474                 echo "Good, found drand48()." >&4
10475         elif set random val -f; eval $csym; $val; then
10476                 dflt="random"
10477                 echo "OK, found random()." >&4
10478         else
10479                 dflt="rand"
10480                 echo "Yick, looks like I have to use rand()." >&4
10481         fi
10482         echo " "
10483         ;;
10484 *)
10485         dflt="$randfunc"
10486         ;;
10487 esac
10488 cont=true
10489
10490 case "$ccflags" in
10491 *-Dmy_rand=*|*-Dmy_srand=*)
10492         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10493         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10494         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10495         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10496         ;;
10497 esac
10498
10499 while $test "$cont"; do
10500         rp="Use which function to generate random numbers?"
10501         . ./myread
10502         if $test "$ans" = "$dflt"; then
10503                 : null
10504         else
10505                 randbits=''
10506         fi
10507         randfunc="$ans"
10508         if set $ans val -f; eval $csym; $val; then
10509                 cont=''
10510         else
10511                 dflt=n
10512                 rp="Function $ans does not exist. Use that name anyway?"
10513                 . ./myread
10514                 dflt=rand
10515                 case "$ans" in
10516                         [yY]*) cont='';;
10517                 esac
10518         fi
10519         case "$cont" in
10520         '')
10521                 case "$randfunc" in
10522                 drand48)
10523                         drand01="drand48()"
10524                         seedfunc="srand48"
10525                         randbits=48
10526                         randseedtype=long
10527                         ;;
10528                 rand|random)
10529                         case "$randbits" in
10530                         '')
10531 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10532                                 $cat >try.c <<EOCP
10533 #$i_unistd I_UNISTD
10534 #$i_stdlib I_STDLIB
10535 #include <stdio.h>
10536 #ifdef I_UNISTD
10537 #  include <unistd.h>
10538 #endif
10539 #ifdef I_STDLIB
10540 #  include <stdlib.h>
10541 #endif
10542 main()
10543 {
10544         register int i;
10545         register unsigned long tmp;
10546         register unsigned long max = 0L;
10547
10548         for (i = 1000; i; i--) {
10549                 tmp = (unsigned long) $randfunc();
10550                 if (tmp > max) max = tmp;
10551         }
10552         for (i = 0; max; i++)
10553                 max /= 2;
10554         printf("%d\n",i);
10555 }
10556 EOCP
10557                                 set try
10558                                 if eval $compile_ok; then
10559                                         dflt=`try`
10560                                 else
10561                                         dflt='?'
10562                                         echo "(I can't seem to compile the test program...)"
10563                                 fi
10564                                 ;;
10565                         *)
10566                                 dflt="$randbits"
10567                                 ;;
10568                         esac
10569                         rp="How many bits does your $randfunc() function produce?"
10570                         . ./myread
10571                         randbits="$ans"
10572                         $rm -f try.c try
10573                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10574                         seedfunc="s$randfunc"
10575                         randseedtype=unsigned
10576                         ;;
10577                 *)
10578                         dflt="31"
10579                         rp="How many bits does your $randfunc() function produce?"
10580                         . ./myread
10581                         randbits="$ans"
10582                         seedfunc="s$randfunc"
10583                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10584                         if set $seedfunc val -f; eval $csym; $val; then
10585                                 echo "(Using $seedfunc() to seed random generator)"
10586                         else
10587                                 echo "(Warning: no $seedfunc() to seed random generator)"
10588                                 seedfunc=rand
10589                         fi
10590                         randseedtype=unsigned
10591                         ;;
10592                 esac
10593                 ;;
10594         esac
10595 done
10596
10597 echo " "
10598 echo "Determining whether or not we are on an EBCDIC system..." >&4
10599 $cat >tebcdic.c <<'EOM'
10600 int main()
10601 {
10602   if ('M'==0xd4) return 0;
10603   return 1;
10604 }
10605 EOM
10606
10607 val=$undef
10608 set tebcdic
10609 if eval $compile_ok; then
10610         if ./tebcdic; then
10611                 echo "You have EBCDIC." >&4
10612                 val="$define"
10613         else
10614                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
10615         fi
10616 else
10617         echo "I'm unable to compile the test program." >&4
10618         echo "I'll assume ASCII or some ISO Latin." >&4
10619 fi
10620 $rm -f tebcdic.c tebcdic
10621 set ebcdic
10622 eval $setvar
10623
10624 : see what type file positions are declared as in the library
10625 rp="What is the type for file position used by fsetpos()?"
10626 set fpos_t fpostype long stdio.h sys/types.h
10627 eval $typedef_ask
10628
10629 : Store the full pathname to the sed program for use in the C program
10630 full_sed=$sed
10631
10632 : see what type gids are declared as in the kernel
10633 echo " "
10634 echo "Looking for the type for group ids returned by getgid()."
10635 set gid_t gidtype xxx stdio.h sys/types.h
10636 eval $typedef
10637 case "$gidtype" in
10638 xxx)
10639         xxx=`./findhdr sys/user.h`
10640         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10641         case $1 in
10642         unsigned) dflt="$1 $2" ;;
10643         *) dflt="$1" ;;
10644         esac
10645         ;;
10646 *) dflt="$gidtype";;
10647 esac
10648 case "$gidtype" in
10649 gid_t) echo "gid_t found." ;;
10650 *)      rp="What is the type for group ids returned by getgid()?"
10651         . ./myread
10652         gidtype="$ans"
10653         ;;
10654 esac
10655
10656 : see if getgroups exists
10657 set getgroups d_getgrps
10658 eval $inlibc
10659
10660 : see if setgroups exists
10661 set setgroups d_setgrps
10662 eval $inlibc
10663
10664
10665 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10666 echo " "
10667 case "$d_getgrps$d_setgrps" in
10668 *define*)
10669         case "$groupstype" in
10670         '') dflt="$gidtype" ;;
10671         *)  dflt="$groupstype" ;;
10672         esac
10673         $cat <<EOM
10674 What type of pointer is the second argument to getgroups() and setgroups()?
10675 Usually this is the same as group ids, $gidtype, but not always.
10676
10677 EOM
10678         rp='What type pointer is the second argument to getgroups() and setgroups()?'
10679         . ./myread
10680         groupstype="$ans"
10681         ;;
10682 *)  groupstype="$gidtype";;
10683 esac
10684
10685 : see what type lseek is declared as in the kernel
10686 rp="What is the type used for lseek's offset on this system?"
10687 set off_t lseektype long stdio.h sys/types.h
10688 eval $typedef_ask
10689
10690 echo " "
10691 $echo $n "Checking to see how big your file offsets are...$c" >&4
10692 $cat >try.c <<EOCP
10693 #include <sys/types.h>
10694 #include <stdio.h>
10695 main()
10696 {
10697         printf("%d\n", sizeof($lseektype));
10698 }
10699 EOCP
10700 set try
10701 if eval $compile_ok; then
10702         lseeksize=`./try`
10703         $echo " $lseeksize bytes." >&4
10704 else
10705         dflt='4'
10706         echo " "
10707         echo "(I can't seem to compile the test program.  Guessing...)"
10708         rp="What is the size of your file offsets (in bytes)?"
10709         . ./myread
10710         lseeksize="$ans"
10711 fi
10712 $rm -f try.c try
10713
10714 echo " "
10715 echo "Checking if your $make program sets \$(MAKE)..." >&4
10716 case "$make_set_make" in
10717 '')
10718         $sed 's/^X //' > testmake.mak << 'EOF'
10719 Xall:
10720 X       @echo 'maketemp="$(MAKE)"'
10721 EOF
10722         case "`$make -f testmake.mak 2>/dev/null`" in
10723         *maketemp=*) make_set_make='#' ;;
10724         *)      make_set_make="MAKE=$make" ;;
10725         esac
10726         $rm -f testmake.mak
10727         ;;
10728 esac
10729 case "$make_set_make" in
10730 '#') echo "Yup, it does.";;
10731 *) echo "Nope, it doesn't.";;
10732 esac
10733
10734 : see what type is used for mode_t
10735 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10736 set mode_t modetype int stdio.h sys/types.h
10737 eval $typedef_ask
10738
10739 : define a fucntion to check prototypes
10740 $cat > protochk <<EOSH
10741 $startsh
10742 cc="$cc"
10743 optimize="$optimize"
10744 ccflags="$ccflags"
10745 prototype="$prototype"
10746 define="$define"
10747 rm=$rm
10748 EOSH
10749
10750 $cat >> protochk <<'EOSH'
10751
10752 $rm -f try.c
10753 foo="$1"
10754 shift
10755 while test $# -ge 2; do
10756         case "$1" in
10757                 $define) echo "#include <$2>" >> try.c ;;
10758                 literal) echo "$2" >> try.c ;;
10759         esac
10760     shift 2
10761 done
10762 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
10763 cat >> try.c <<'EOCP'
10764 #ifdef CAN_PROTOTYPE
10765 #define _(args) args
10766 #else
10767 #define _(args) ()
10768 #endif
10769 EOCP
10770 echo "$foo" >> try.c
10771 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10772 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10773 status=$?
10774 $rm -f try.[co]
10775 exit $status
10776 EOSH
10777 chmod +x protochk
10778 $eunicefix protochk
10779
10780 : see what type is used for size_t
10781 rp="What is the type used for the length parameter for string functions?"
10782 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10783 eval $typedef_ask
10784
10785 : check for type of arguments to gethostbyaddr. 
10786 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10787         case "$d_gethbyaddr" in
10788         $define)
10789                 $cat <<EOM
10790
10791 Checking to see what type of arguments are accepted by gethostbyaddr().
10792 EOM
10793                 hdrs="$define sys/types.h
10794                         $d_socket sys/socket.h 
10795                         $i_niin netinet/in.h 
10796                         $i_netdb netdb.h
10797                         $i_unistd unistd.h"
10798                 : The first arg can 'char *' or 'void *'
10799                 : The second arg is some of integral type
10800                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10801                         for yyy in size_t long int; do
10802                                 case "$netdb_host_type" in
10803                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10804                                         if ./protochk "$try" $hdrs; then
10805                                                 echo "Your system accepts $xxx for the first arg."
10806                                                 echo "...and $yyy for the second arg."
10807                                                 netdb_host_type="$xxx"
10808                                                 netdb_hlen_type="$yyy"
10809                                         fi
10810                                         ;;
10811                                 esac
10812                         done
10813                 done
10814                 : In case none of those worked, prompt the user.
10815                 case "$netdb_host_type" in
10816                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
10817                         dflt='char *'
10818                         . ./myread
10819                         netdb_host_type=$ans
10820                         rp='What is the type for the 2nd argument to gethostbyaddr?'
10821                         dflt="$sizetype"
10822                         . ./myread
10823                         netdb_hlen_type=$ans
10824                         ;;
10825                 esac
10826                 ;;
10827         *)      : no gethostbyaddr, so pick harmless defaults
10828                 netdb_host_type='char *'
10829                 netdb_hlen_type="$sizetype"
10830                 ;;
10831         esac
10832         # Remove the "const" if needed. -- but then we'll have a 
10833         # prototype clash!
10834         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10835 fi
10836
10837 : check for type of argument to gethostbyname. 
10838 if test "X$netdb_name_type" = X ; then
10839         case "$d_gethbyname" in
10840         $define)
10841                 $cat <<EOM
10842
10843 Checking to see what type of argument is accepted by gethostbyname().
10844 EOM
10845                 hdrs="$define sys/types.h
10846                         $d_socket sys/socket.h 
10847                         $i_niin netinet/in.h 
10848                         $i_netdb netdb.h
10849                         $i_unistd unistd.h"
10850                 for xxx in "const char *" "char *"; do
10851                         case "$netdb_name_type" in
10852                         '')     try="extern struct hostent *gethostbyname($xxx);"
10853                                 if ./protochk "$try" $hdrs; then
10854                                         echo "Your system accepts $xxx."
10855                                         netdb_name_type="$xxx"
10856                                 fi
10857                                 ;;
10858                         esac
10859                 done
10860                 : In case none of those worked, prompt the user.
10861                 case "$netdb_name_type" in
10862                 '')     rp='What is the type for the 1st argument to gethostbyname?'
10863                         dflt='char *'
10864                         . ./myread
10865                         netdb_name_type=$ans
10866                         ;;
10867                 esac
10868                 ;;
10869         *)      : no gethostbyname, so pick harmless default
10870                 netdb_name_type='char *'
10871                 ;;
10872         esac
10873 fi
10874
10875 : check for type of 1st argument to getnetbyaddr. 
10876 if test "X$netdb_net_type" = X ; then
10877         case "$d_getnbyaddr" in
10878         $define)
10879                 $cat <<EOM
10880
10881 Checking to see what type of 1st argument is accepted by getnetbyaddr().
10882 EOM
10883                 hdrs="$define sys/types.h
10884                         $d_socket sys/socket.h 
10885                         $i_niin netinet/in.h 
10886                         $i_netdb netdb.h
10887                         $i_unistd unistd.h"
10888                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
10889                         case "$netdb_net_type" in
10890                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
10891                                 if ./protochk "$try" $hdrs; then
10892                                         echo "Your system accepts $xxx."
10893                                         netdb_net_type="$xxx"
10894                                 fi
10895                                 ;;
10896                         esac
10897                 done
10898                 : In case none of those worked, prompt the user.
10899                 case "$netdb_net_type" in
10900                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
10901                         dflt='long'
10902                         . ./myread
10903                         netdb_net_type=$ans
10904                         ;;
10905                 esac
10906                 ;;
10907         *)      : no getnetbyaddr, so pick harmless default
10908                 netdb_net_type='long'
10909                 ;;
10910         esac
10911 fi
10912 : locate the preferred pager for this system
10913 case "$pager" in
10914 '')
10915         dflt=''
10916         case "$pg" in
10917         /*) dflt=$pg;;
10918         esac
10919         case "$more" in
10920         /*) dflt=$more;;
10921         esac
10922         case "$less" in
10923         /*) dflt=$less;;
10924         esac
10925         case "$dflt" in
10926         '') dflt=/usr/ucb/more;;
10927         esac
10928         ;;
10929 *) dflt="$pager";;
10930 esac
10931 echo " "
10932 fn=f/
10933 rp='What pager is used on your system?'
10934 . ./getfile
10935 pager="$ans"
10936
10937 : see what type pids are declared as in the kernel
10938 rp="What is the type of process ids on this system?"
10939 set pid_t pidtype int stdio.h sys/types.h
10940 eval $typedef_ask
10941
10942 : check for length of pointer
10943 echo " "
10944 case "$ptrsize" in
10945 '')
10946         $echo $n "Checking to see how big your pointers are...$c" >&4
10947         if test "$voidflags" -gt 7; then
10948                 echo '#define VOID_PTR char *' > try.c
10949         else
10950                 echo '#define VOID_PTR void *' > try.c
10951         fi
10952         $cat >>try.c <<'EOCP'
10953 #include <stdio.h>
10954 main()
10955 {
10956         printf("%d\n", sizeof(VOID_PTR));
10957         exit(0);
10958 }
10959 EOCP
10960         set try
10961         if eval $compile_ok; then
10962                 ptrsize=`./try`
10963                 $echo " $ptrsize bytes." >&4
10964         else
10965                 dflt='4'
10966                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
10967                 rp="What is the size of a pointer (in bytes)?"
10968                 . ./myread
10969                 ptrsize="$ans"
10970         fi
10971         ;;
10972 esac
10973 $rm -f try.c try
10974
10975 : see if ar generates random libraries by itself
10976 echo " "
10977 echo "Checking how to generate random libraries on your machine..." >&4
10978 echo 'int bar1() { return bar2(); }' > bar1.c
10979 echo 'int bar2() { return 2; }' > bar2.c
10980 $cat > foo.c <<'EOP'
10981 main() { printf("%d\n", bar1()); exit(0); }
10982 EOP
10983 $cc $ccflags -c bar1.c >/dev/null 2>&1
10984 $cc $ccflags -c bar2.c >/dev/null 2>&1
10985 $cc $ccflags -c foo.c >/dev/null 2>&1
10986 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
10987 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
10988         ./foobar >/dev/null 2>&1; then
10989         echo "$ar appears to generate random libraries itself."
10990         orderlib=false
10991         ranlib=":"
10992 elif $ar ts bar$_a >/dev/null 2>&1 &&
10993         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
10994         ./foobar >/dev/null 2>&1; then
10995                 echo "a table of contents needs to be added with '$ar ts'."
10996                 orderlib=false
10997                 ranlib="$ar ts"
10998 else
10999         case "$ranlib" in
11000         :) ranlib='';;
11001         '')
11002                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11003                 $test -f $ranlib || ranlib=''
11004                 ;;
11005         esac
11006         if $test -n "$ranlib"; then
11007                 echo "your system has '$ranlib'; we'll use that."
11008                 orderlib=false
11009         else
11010                 echo "your system doesn't seem to support random libraries"
11011                 echo "so we'll use lorder and tsort to order the libraries."
11012                 orderlib=true
11013                 ranlib=":"
11014         fi
11015 fi
11016 $rm -f foo* bar* 
11017
11018 : check for type of arguments to select. 
11019 case "$selecttype" in
11020 '') case "$d_select" in
11021         $define)
11022                 $cat <<EOM
11023 Checking to see what type of arguments are accepted by select().
11024 EOM
11025                 hdrs="$define sys/types.h
11026                         $i_systime sys/time.h 
11027                         $i_sysselct sys/select.h
11028                         $d_socket sys/socket.h"
11029                 : The first arg can be int, unsigned, or size_t
11030                 : The last arg may or may not be 'const'
11031                 val=''
11032                 : void pointer has been seen but using that
11033                 : breaks the selectminbits test
11034                 for xxx in 'fd_set *' 'int *'; do
11035                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11036                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
11037                                         case "$val" in
11038                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11039                                                 if ./protochk "$try" $hdrs; then
11040                                                         echo "Your system accepts $xxx."
11041                                                         val="$xxx"
11042                                                 fi
11043                                                 ;;
11044                                         esac
11045                                 done
11046                         done
11047                 done
11048                 case "$val" in
11049                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11050                         case "$d_fd_set" in
11051                                 $define) dflt="fd_set *" ;;
11052                                 *)              dflt="int *" ;;
11053                         esac
11054                         . ./myread
11055                         val=$ans
11056                         ;;
11057                 esac
11058                 selecttype="$val"
11059                 ;;
11060         *)      : no select, so pick a harmless default
11061                 selecttype='int *'
11062                 ;;
11063         esac
11064         ;;
11065 esac
11066
11067 : check for the select 'width'
11068 case "$selectminbits" in
11069 '') case "$d_select" in
11070         $define)
11071                 $cat <<EOM
11072
11073 Checking to see on how many bits at a time your select() operates...
11074 EOM
11075                 $cat >try.c <<EOCP
11076 #include <sys/types.h>
11077 #$i_time I_TIME
11078 #$i_systime I_SYS_TIME
11079 #$i_systimek I_SYS_TIME_KERNEL
11080 #ifdef I_TIME
11081 #   include <time.h>
11082 #endif
11083 #ifdef I_SYS_TIME
11084 #   ifdef I_SYS_TIME_KERNEL
11085 #       define KERNEL
11086 #   endif
11087 #   include <sys/time.h>
11088 #   ifdef I_SYS_TIME_KERNEL
11089 #       undef KERNEL
11090 #   endif
11091 #endif
11092 #$i_sysselct I_SYS_SELECT
11093 #ifdef I_SYS_SELECT
11094 #include <sys/select.h>
11095 #endif
11096 #include <stdio.h>
11097 $selecttype b;
11098 #define S sizeof(*(b))
11099 #define MINBITS 64
11100 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11101 #define NBITS  (NBYTES * 8)
11102 int main() {
11103     char s[NBYTES];
11104     struct timeval t;
11105     int i;
11106     FILE* fp;
11107     int fd;
11108
11109     fclose(stdin);
11110     fp = fopen("try.c", "r");
11111     if (fp == 0)
11112       exit(1);
11113     fd = fileno(fp);
11114     if (fd < 0)
11115       exit(2);
11116     b = ($selecttype)s;
11117     for (i = 0; i < NBITS; i++)
11118         FD_SET(i, b);
11119     t.tv_sec  = 0;
11120     t.tv_usec = 0;
11121     select(fd + 1, b, 0, 0, &t);
11122     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11123     printf("%d\n", i + 1);
11124     return 0;
11125 }
11126 EOCP
11127                 set try
11128                 if eval $compile_ok; then
11129                         selectminbits=`./try`
11130                         case "$selectminbits" in
11131                         '')     cat >&4 <<EOM
11132 Cannot figure out on how many bits at a time your select() operates.
11133 I'll play safe and guess it is 32 bits.
11134 EOM
11135                                 selectminbits=32
11136                                 bits="32 bits"
11137                                 ;;
11138                         1)      bits="1 bit" ;;
11139                         *)      bits="$selectminbits bits" ;;
11140                         esac
11141                         echo "Your select() operates on $bits at a time." >&4
11142                 else
11143                         rp='What is the minimum number of bits your select() operates on?'
11144                         case "$byteorder" in
11145                         1234|12345678)  dflt=32 ;;
11146                         *)              dflt=1  ;;
11147                         esac
11148                         . ./myread
11149                         val=$ans
11150                         selectminbits="$val"
11151                 fi
11152                 $rm -f try.* try
11153                 ;;
11154         *)      : no select, so pick a harmless default
11155                 selectminbits='32'
11156                 ;;
11157         esac
11158         ;;
11159 esac
11160
11161 : Trace out the files included by signal.h, then look for SIGxxx names.
11162 : Remove SIGARRAYSIZE used by HPUX.
11163 : Remove SIGTYP void lines used by OS2.
11164 xxx=`echo '#include <signal.h>' |
11165         $cppstdin $cppminus $cppflags 2>/dev/null |
11166         $grep '^[       ]*#.*include' | 
11167         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11168 : Check this list of files to be sure we have parsed the cpp output ok.
11169 : This will also avoid potentially non-existent files, such 
11170 : as ../foo/bar.h
11171 xxxfiles=''
11172 for xx in $xxx /dev/null ; do
11173         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11174 done
11175 : If we have found no files, at least try signal.h
11176 case "$xxxfiles" in
11177 '')     xxxfiles=`./findhdr signal.h` ;;
11178 esac
11179 xxx=`awk '
11180 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11181         print substr($2, 4, 20)
11182 }
11183 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11184         print substr($3, 4, 20)
11185 }' $xxxfiles`
11186 : Append some common names just in case the awk scan failed.
11187 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11188 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11189 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11190 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11191 : generate a few handy files for later
11192 $cat > signal.c <<'EOCP'
11193 #include <sys/types.h>
11194 #include <signal.h>
11195 #include <stdio.h>
11196 int main() {
11197
11198 /* Strange style to avoid deeply-nested #if/#else/#endif */
11199 #ifndef NSIG
11200 #  ifdef _NSIG
11201 #    define NSIG (_NSIG)
11202 #  endif
11203 #endif
11204
11205 #ifndef NSIG
11206 #  ifdef SIGMAX
11207 #    define NSIG (SIGMAX+1)
11208 #  endif
11209 #endif
11210
11211 #ifndef NSIG
11212 #  ifdef SIG_MAX
11213 #    define NSIG (SIG_MAX+1)
11214 #  endif
11215 #endif
11216
11217 #ifndef NSIG
11218 #  ifdef MAXSIG
11219 #    define NSIG (MAXSIG+1)
11220 #  endif
11221 #endif
11222
11223 #ifndef NSIG
11224 #  ifdef MAX_SIG
11225 #    define NSIG (MAX_SIG+1)
11226 #  endif
11227 #endif
11228
11229 #ifndef NSIG
11230 #  ifdef SIGARRAYSIZE
11231 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11232 #  endif
11233 #endif
11234
11235 #ifndef NSIG
11236 #  ifdef _sys_nsig
11237 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
11238 #  endif
11239 #endif
11240
11241 /* Default to some arbitrary number that's big enough to get most
11242    of the common signals.
11243 */
11244 #ifndef NSIG
11245 #    define NSIG 50
11246 #endif
11247
11248 printf("NSIG %d\n", NSIG);
11249
11250 #ifndef JUST_NSIG
11251
11252 EOCP
11253
11254 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11255 {
11256         printf "#ifdef SIG"; printf $1; printf "\n"
11257         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11258         printf $1; printf ");\n"
11259         printf "#endif\n"
11260 }
11261 END {
11262         printf "#endif /* JUST_NSIG */\n";
11263         printf "}\n";
11264 }
11265 ' >>signal.c
11266 $cat >signal.awk <<'EOP'
11267 BEGIN { ndups = 0 }
11268 $1 ~ /^NSIG$/ { nsig = $2 }
11269 ($1 !~ /^NSIG$/) && (NF == 2) {
11270     if ($2 > maxsig) { maxsig = $2 }
11271     if (sig_name[$2]) {
11272         dup_name[ndups] = $1
11273         dup_num[ndups] = $2
11274         ndups++ 
11275     }
11276     else {
11277         sig_name[$2] = $1
11278         sig_num[$2] = $2
11279     }
11280
11281 }
11282 END { 
11283     if (nsig == 0) { nsig = maxsig + 1 }
11284         for (n = 1; n < nsig; n++) {
11285                 if (sig_name[n]) {
11286                         printf("%s %d\n", sig_name[n], sig_num[n])
11287                 }
11288                 else {
11289                         printf("NUM%d %d\n", n, n) 
11290                 }
11291         }
11292     for (n = 0; n < ndups; n++) {
11293                 printf("%s %d\n", dup_name[n], dup_num[n])
11294     }
11295 }
11296 EOP
11297 $cat >signal_cmd <<EOS
11298 $startsh
11299 if $test -s signal.lst; then
11300     echo "Using your existing signal.lst file"
11301         exit 0
11302 fi
11303 xxx="$xxx"
11304 EOS
11305 $cat >>signal_cmd <<'EOS'
11306
11307 set signal
11308 if eval $compile_ok; then
11309         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11310 else
11311         echo "(I can't seem be able to compile the whole test program)" >&4
11312         echo "(I'll try it in little pieces.)" >&4
11313         set signal -DJUST_NSIG
11314         if eval $compile_ok; then
11315                 ./signal$_exe > signal.nsg
11316                 $cat signal.nsg
11317         else
11318                 echo "I can't seem to figure out how many signals you have." >&4
11319                 echo "Guessing 50." >&4
11320                 echo 'NSIG 50' > signal.nsg
11321         fi
11322         : Now look at all the signal names, one at a time.
11323         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11324                 $cat > signal.c <<EOCP
11325 #include <sys/types.h>
11326 #include <signal.h>
11327 #include <stdio.h>
11328 int main() {
11329 printf("$xx %d\n", SIG${xx});
11330 return 0;
11331 }
11332 EOCP
11333                 set signal
11334                 if eval $compile; then
11335                         echo "SIG${xx} found."
11336                         ./signal$_exe  >> signal.ls1
11337                 else
11338                         echo "SIG${xx} NOT found."
11339                 fi
11340         done
11341         if $test -s signal.ls1; then
11342                 $cat signal.nsg signal.ls1 |
11343                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11344         fi
11345
11346 fi
11347 if $test -s signal.lst; then
11348         :
11349 else
11350         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11351         echo 'kill -l' >signal
11352         set X `csh -f <signal`
11353         $rm -f signal
11354         shift
11355         case $# in
11356         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11357         esac
11358         echo $@ | $tr ' ' $trnl | \
11359                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11360 fi
11361 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11362 EOS
11363 chmod a+x signal_cmd
11364 $eunicefix signal_cmd
11365
11366 : generate list of signal names
11367 echo " "
11368 case "$sig_name_init" in
11369 '') doinit=yes ;;
11370 *)  case "$sig_num_init" in
11371     ''|*,*) doinit=yes ;;
11372     esac ;;
11373 esac
11374 case "$doinit" in
11375 yes)
11376         echo "Generating a list of signal names and numbers..." >&4
11377         . ./signal_cmd
11378         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11379         sig_name="ZERO $sig_name"
11380         sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11381                                                 { printf "\"%s\", ", $1 }
11382                                                 END { printf "0\n" }' signal.lst`
11383         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11384         sig_num="0 $sig_num"
11385         sig_num_init=`$awk 'BEGIN { printf "0, " }
11386                                         { printf "%d, ", $2}
11387                                         END { printf "0\n"}' signal.lst`
11388         ;;
11389 esac
11390 echo "The following signals are available:"
11391 echo " "
11392 echo $sig_name | $awk \
11393 'BEGIN { linelen = 0 }
11394 {
11395         for (i = 1; i <= NF; i++) {
11396                 name = "SIG" $i " "
11397                 linelen = linelen + length(name)
11398                 if (linelen > 70) {
11399                         printf "\n"
11400                         linelen = length(name)
11401                 }
11402                 printf "%s", name
11403         }
11404         printf "\n"
11405 }'
11406 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
11407
11408 : see what type is used for signed size_t
11409 set ssize_t ssizetype int stdio.h sys/types.h
11410 eval $typedef
11411 dflt="$ssizetype"
11412 $cat > ssize.c <<EOM
11413 #include <stdio.h>
11414 #include <sys/types.h>
11415 #define Size_t $sizetype
11416 #define SSize_t $dflt
11417 main()
11418 {
11419         if (sizeof(Size_t) == sizeof(SSize_t))
11420                 printf("$dflt\n");
11421         else if (sizeof(Size_t) == sizeof(int))
11422                 printf("int\n");
11423         else 
11424                 printf("long\n");
11425         exit(0);
11426 }
11427 EOM
11428 echo " "
11429 set ssize
11430 if eval $compile_ok && ./ssize > /dev/null; then
11431         ssizetype=`./ssize`
11432         echo "I'll be using $ssizetype for functions returning a byte count." >&4
11433 else
11434         $cat >&4 <<EOM
11435 Help! I can't compile and run the ssize_t test program: please enlighten me!
11436 (This is probably a misconfiguration in your system or libraries, and
11437 you really ought to fix it.  Still, I'll try anyway.)
11438
11439 I need a type that is the same size as $sizetype, but is guaranteed to
11440 be signed.  Common values are ssize_t, int and long.
11441
11442 EOM
11443         rp="What signed type is the same size as $sizetype?"
11444         . ./myread
11445         ssizetype="$ans"
11446 fi
11447 $rm -f ssize ssize.*
11448
11449 : see what type of char stdio uses.
11450 echo " "
11451 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11452         echo "Your stdio uses unsigned chars." >&4
11453         stdchar="unsigned char"
11454 else
11455         echo "Your stdio uses signed chars." >&4
11456         stdchar="char"
11457 fi
11458
11459 : see if time exists
11460 echo " "
11461 if test "X$d_time" = X -o X"$timetype" = X; then
11462     if set time val -f d_time; eval $csym; $val; then
11463                 echo 'time() found.' >&4
11464                 val="$define"
11465                 rp="What is the type returned by time() on this system?"
11466                 set time_t timetype long stdio.h sys/types.h
11467                 eval $typedef_ask
11468     else
11469                 echo 'time() not found, hope that will do.' >&4
11470                 val="$undef"
11471                 timetype='int';
11472     fi
11473     set d_time
11474     eval $setvar
11475 fi
11476
11477 : see what type uids are declared as in the kernel
11478 echo " "
11479 echo "Looking for the type for user ids returned by getuid()."
11480 set uid_t uidtype xxx stdio.h sys/types.h
11481 eval $typedef
11482 case "$uidtype" in
11483 xxx)
11484         xxx=`./findhdr sys/user.h`
11485         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11486         case $1 in
11487         unsigned) dflt="$1 $2" ;;
11488         *) dflt="$1" ;;
11489         esac
11490         ;;
11491 *) dflt="$uidtype";;
11492 esac
11493 case "$uidtype" in
11494 uid_t)  echo "uid_t found." ;;
11495 *)      rp="What is the type for user ids returned by getuid()?"
11496         . ./myread
11497         uidtype="$ans"
11498         ;;
11499 esac
11500
11501 : see if dbm.h is available
11502 : see if dbmclose exists
11503 set dbmclose d_dbmclose
11504 eval $inlibc
11505
11506 case "$d_dbmclose" in
11507 $define)
11508         set dbm.h i_dbm
11509         eval $inhdr
11510         case "$i_dbm" in
11511         $define)
11512                 val="$undef"
11513                 set i_rpcsvcdbm
11514                 eval $setvar
11515                 ;;
11516         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11517                 eval $inhdr
11518                 ;;
11519         esac
11520         ;;
11521 *)      echo "We won't be including <dbm.h>"
11522         val="$undef"
11523         set i_dbm
11524         eval $setvar
11525         val="$undef"
11526         set i_rpcsvcdbm
11527         eval $setvar
11528         ;;
11529 esac
11530
11531 : see if this is a sys/file.h system
11532 val=''
11533 set sys/file.h val
11534 eval $inhdr
11535
11536 : do we need to include sys/file.h ?
11537 case "$val" in
11538 "$define")
11539         echo " "
11540         if $h_sysfile; then
11541                 val="$define"
11542                 echo "We'll be including <sys/file.h>." >&4
11543         else
11544                 val="$undef"
11545                 echo "We won't be including <sys/file.h>." >&4
11546         fi
11547         ;;
11548 *)
11549         h_sysfile=false
11550         ;;
11551 esac
11552 set i_sysfile
11553 eval $setvar
11554
11555 : see if fcntl.h is there
11556 val=''
11557 set fcntl.h val
11558 eval $inhdr
11559
11560 : see if we can include fcntl.h
11561 case "$val" in
11562 "$define")
11563         echo " "
11564         if $h_fcntl; then
11565                 val="$define"
11566                 echo "We'll be including <fcntl.h>." >&4
11567         else
11568                 val="$undef"
11569                 if $h_sysfile; then
11570         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11571                 else
11572                         echo "We won't be including <fcntl.h>." >&4
11573                 fi
11574         fi
11575         ;;
11576 *)
11577         h_fcntl=false
11578         val="$undef"
11579         ;;
11580 esac
11581 set i_fcntl
11582 eval $setvar
11583
11584 : see if locale.h is available
11585 set locale.h i_locale
11586 eval $inhdr
11587
11588 : see if mach cthreads are available
11589 if test "X$usethreads" = "X$define"; then
11590         set mach/cthreads.h i_machcthr
11591         eval $inhdr
11592 else
11593         i_machcthr="$undef"
11594 fi
11595
11596
11597
11598 : see if this is a math.h system
11599 set math.h i_math
11600 eval $inhdr
11601
11602 : see if ndbm.h is available
11603 set ndbm.h t_ndbm
11604 eval $inhdr
11605 case "$t_ndbm" in
11606 $define)
11607         : see if dbm_open exists
11608         set dbm_open d_dbm_open
11609         eval $inlibc
11610         case "$d_dbm_open" in
11611         $undef)
11612                 t_ndbm="$undef"
11613                 echo "We won't be including <ndbm.h>"
11614                 ;;
11615         esac
11616         ;;
11617 esac
11618 val="$t_ndbm"
11619 set i_ndbm
11620 eval $setvar
11621
11622 : see if net/errno.h is available
11623 val=''
11624 set net/errno.h val
11625 eval $inhdr
11626
11627 : Unfortunately, it causes problems on some systems.  Arrgh.
11628 case "$val" in
11629 $define)
11630         cat > try.c <<'EOM'
11631 #include <stdio.h>
11632 #include <errno.h>
11633 #include <net/errno.h>
11634 int func()
11635 {
11636         return ENOTSOCK;
11637 }
11638 EOM
11639         if $cc $ccflags -c try.c >/dev/null 2>&1; then
11640                 echo "We'll be including <net/errno.h>." >&4
11641         else
11642                 echo "We won't be including <net/errno.h>." >&4
11643                 val="$undef"
11644         fi
11645         $rm -f try.* try
11646         ;;
11647 esac
11648 set i_neterrno
11649 eval $setvar
11650
11651 : get C preprocessor symbols handy
11652 echo " "
11653 $echo $n "Hmm... $c"
11654 echo $al | $tr ' ' $trnl >Cppsym.know
11655 $cat <<EOSS >Cppsym
11656 $startsh
11657 case "\$1" in
11658 -l) list=true
11659         shift
11660         ;;
11661 esac
11662 unknown=''
11663 case "\$list\$#" in
11664 1|2)
11665         for sym do
11666                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11667                         exit 0
11668                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11669                         :
11670                 else
11671                         unknown="\$unknown \$sym"
11672                 fi
11673         done
11674         set X \$unknown
11675         shift
11676         ;;
11677 esac
11678 case \$# in
11679 0) exit 1;;
11680 esac
11681 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11682 #ifdef \1\\
11683 exit 0; _ _ _ _\1\\      \1\\
11684 #endif\\
11685 /' >Cppsym\$\$
11686 echo "exit 1; _ _ _" >>Cppsym\$\$
11687 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
11688 case "\$list" in
11689 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11690 *)
11691         sh Cppsym2\$\$
11692         status=\$?
11693         ;;
11694 esac
11695 $rm -f Cppsym\$\$ Cppsym2\$\$
11696 exit \$status
11697 EOSS
11698 chmod +x Cppsym
11699 $eunicefix Cppsym
11700 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11701
11702 : now check the C compiler for additional symbols
11703 $cat >ccsym <<EOS
11704 $startsh
11705 $cat >tmp.c <<EOF
11706 extern int foo;
11707 EOF
11708 for i in \`$cc -v -c tmp.c 2>&1\`
11709 do
11710         case "\$i" in
11711         -D*) echo "\$i" | $sed 's/^-D//';;
11712         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11713         esac
11714 done
11715 $rm -f try.c
11716 EOS
11717 chmod +x ccsym
11718 $eunicefix ccsym
11719 ./ccsym > ccsym1.raw
11720 if $test -s ccsym1.raw; then
11721        $sort ccsym1.raw | $uniq >ccsym.raw
11722 else
11723        mv ccsym1.raw ccsym.raw
11724 fi
11725
11726 $awk '/\=/ { print $0; next }
11727         { print $0"=1" }' ccsym.raw >ccsym.list
11728 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11729 $comm -13 ccsym.true ccsym.list >ccsym.own
11730 $comm -12 ccsym.true ccsym.list >ccsym.com
11731 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11732 also=''
11733 symbols='symbols'
11734 if $test -z ccsym.raw; then
11735         echo "Your C compiler doesn't seem to define any symbol!" >&4
11736         echo " "
11737         echo "However, your C preprocessor defines the following ones:"
11738         $cat Cppsym.true
11739 else
11740         if $test -s ccsym.com; then
11741                 echo "Your C compiler and pre-processor define these symbols:"
11742                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11743                 also='also '
11744                 symbols='ones'
11745                 $test "$silent" || sleep 1
11746         fi
11747         if $test -s ccsym.cpp; then
11748                 $test "$also" && echo " "
11749                 echo "Your C pre-processor ${also}defines the following $symbols:"
11750                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11751                 also='further '
11752                 $test "$silent" || sleep 1
11753         fi
11754         if $test -s ccsym.own; then
11755                 $test "$also" && echo " "
11756                 echo "Your C compiler ${also}defines the following cpp variables:"
11757                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11758                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11759                 $test "$silent" || sleep 1
11760         fi
11761 fi
11762 $rm -f ccsym*
11763
11764 : see if this is a termio system
11765 val="$undef"
11766 val2="$undef"
11767 val3="$undef"
11768 if $test `./findhdr termios.h`; then
11769         set tcsetattr i_termios
11770         eval $inlibc
11771         val3="$i_termios"
11772 fi
11773 echo " "
11774 case "$val3" in
11775 "$define") echo "You have POSIX termios.h... good!" >&4;;
11776 *) if ./Cppsym pyr; then
11777                 case "`/bin/universe`" in
11778                 ucb) if $test `./findhdr sgtty.h`; then
11779                                 val2="$define"
11780                                 echo "<sgtty.h> found." >&4
11781                         else
11782                                 echo "System is pyramid with BSD universe."
11783                                 echo "<sgtty.h> not found--you could have problems." >&4
11784                         fi;;
11785                 *) if $test `./findhdr termio.h`; then
11786                                 val="$define"
11787                                 echo "<termio.h> found." >&4
11788                         else
11789                                 echo "System is pyramid with USG universe."
11790                                 echo "<termio.h> not found--you could have problems." >&4
11791                         fi;;
11792                 esac
11793         elif ./usg; then
11794                 if $test `./findhdr termio.h`; then
11795                         echo "<termio.h> found." >&4
11796                         val="$define"
11797                 elif $test `./findhdr sgtty.h`; then
11798                         echo "<sgtty.h> found." >&4
11799                         val2="$define"
11800                 else
11801 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11802                 fi
11803         else
11804                 if $test `./findhdr sgtty.h`; then
11805                         echo "<sgtty.h> found." >&4
11806                         val2="$define"
11807                 elif $test `./findhdr termio.h`; then
11808                         echo "<termio.h> found." >&4
11809                         val="$define"
11810                 else
11811 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11812                 fi
11813         fi;;
11814 esac
11815 set i_termio; eval $setvar
11816 val=$val2; set i_sgtty; eval $setvar
11817 val=$val3; set i_termios; eval $setvar
11818
11819 : see if stdarg is available
11820 echo " "
11821 if $test `./findhdr stdarg.h`; then
11822         echo "<stdarg.h> found." >&4
11823         valstd="$define"
11824 else
11825         echo "<stdarg.h> NOT found." >&4
11826         valstd="$undef"
11827 fi
11828
11829 : see if varags is available
11830 echo " "
11831 if $test `./findhdr varargs.h`; then
11832         echo "<varargs.h> found." >&4
11833 else
11834         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11835 fi
11836
11837 : set up the varargs testing programs
11838 $cat > varargs.c <<EOP
11839 #ifdef I_STDARG
11840 #include <stdarg.h>
11841 #endif
11842 #ifdef I_VARARGS
11843 #include <varargs.h>
11844 #endif
11845
11846 #ifdef I_STDARG
11847 int f(char *p, ...)
11848 #else
11849 int f(va_alist)
11850 va_dcl
11851 #endif
11852 {
11853         va_list ap;
11854 #ifndef I_STDARG
11855         char *p;
11856 #endif
11857 #ifdef I_STDARG
11858         va_start(ap,p);
11859 #else
11860         va_start(ap);
11861         p = va_arg(ap, char *);
11862 #endif
11863         va_end(ap);
11864 }
11865 EOP
11866 $cat > varargs <<EOP
11867 $startsh
11868 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
11869         echo "true"
11870 else
11871         echo "false"
11872 fi
11873 $rm -f varargs$_o
11874 EOP
11875 chmod +x varargs
11876
11877 : now check which varargs header should be included
11878 echo " "
11879 i_varhdr=''
11880 case "$valstd" in
11881 "$define")
11882         if `./varargs I_STDARG`; then
11883                 val='stdarg.h'
11884         elif `./varargs I_VARARGS`; then
11885                 val='varargs.h'
11886         fi
11887         ;;
11888 *)
11889         if `./varargs I_VARARGS`; then
11890                 val='varargs.h'
11891         fi
11892         ;;
11893 esac
11894 case "$val" in
11895 '')
11896 echo "I could not find the definition for va_dcl... You have problems..." >&4
11897         val="$undef"; set i_stdarg; eval $setvar
11898         val="$undef"; set i_varargs; eval $setvar
11899         ;;
11900 *) 
11901         set i_varhdr
11902         eval $setvar
11903         case "$i_varhdr" in
11904         stdarg.h)
11905                 val="$define"; set i_stdarg; eval $setvar
11906                 val="$undef"; set i_varargs; eval $setvar
11907                 ;;
11908         varargs.h)
11909                 val="$undef"; set i_stdarg; eval $setvar
11910                 val="$define"; set i_varargs; eval $setvar
11911                 ;;
11912         esac
11913         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
11914 esac
11915 $rm -f varargs*
11916
11917 : see if stddef is available
11918 set stddef.h i_stddef
11919 eval $inhdr
11920
11921 : see if sys/access.h is available
11922 set sys/access.h i_sysaccess
11923 eval $inhdr
11924
11925 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
11926 set sys/filio.h i_sysfilio
11927 eval $inhdr
11928 echo " "
11929 if $test `./findhdr sys/ioctl.h`; then
11930         val="$define"
11931         echo '<sys/ioctl.h> found.' >&4
11932 else
11933         val="$undef"
11934         if $test $i_sysfilio = "$define"; then
11935             echo '<sys/ioctl.h> NOT found.' >&4
11936         else
11937                 $test $i_sgtty = "$define" && xxx="sgtty.h"
11938                 $test $i_termio = "$define" && xxx="termio.h"
11939                 $test $i_termios = "$define" && xxx="termios.h"
11940 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
11941         fi
11942 fi
11943 set i_sysioctl
11944 eval $setvar
11945
11946 : see if this is a sys/param system
11947 set sys/param.h i_sysparam
11948 eval $inhdr
11949
11950 : see if sys/resource.h has to be included
11951 set sys/resource.h i_sysresrc
11952 eval $inhdr
11953
11954 : see if sys/security.h is available
11955 set sys/security.h i_syssecrt
11956 eval $inhdr
11957
11958 : see if this is a sys/un.h system
11959 set sys/un.h i_sysun
11960 eval $inhdr
11961
11962 : see if this is a syswait system
11963 set sys/wait.h i_syswait
11964 eval $inhdr
11965
11966 : see if this is an utime system
11967 set utime.h i_utime
11968 eval $inhdr
11969
11970 : see if this is a values.h system
11971 set values.h i_values
11972 eval $inhdr
11973
11974 : see if this is a vfork system
11975 case "$d_vfork" in
11976 "$define")
11977         set vfork.h i_vfork
11978         eval $inhdr
11979         ;;
11980 *)
11981         i_vfork="$undef"
11982         ;;
11983 esac
11984
11985 : see if gdbm.h is available
11986 set gdbm.h t_gdbm
11987 eval $inhdr
11988 case "$t_gdbm" in
11989 $define)
11990         : see if gdbm_open exists
11991         set gdbm_open d_gdbm_open
11992         eval $inlibc
11993         case "$d_gdbm_open" in
11994         $undef)
11995                 t_gdbm="$undef"
11996                 echo "We won't be including <gdbm.h>"
11997                 ;;
11998         esac
11999         ;;
12000 esac
12001 val="$t_gdbm"
12002 set i_gdbm
12003 eval $setvar
12004
12005 echo " "
12006 echo "Looking for extensions..." >&4
12007 tdir=`pwd`
12008 cd $rsrc/ext
12009 : If we are using the old config.sh, known_extensions may contain
12010 : old or inaccurate or duplicate values.
12011 known_extensions=''
12012 nonxs_extensions=''
12013 : We do not use find because it might not be available.
12014 : We do not just use MANIFEST because the user may have dropped
12015 : some additional extensions into the source tree and expect them
12016 : to be built.
12017 for xxx in * ; do
12018         case "$xxx" in
12019         DynaLoader|dynaload) ;;
12020         *)      if $test -f $xxx/$xxx.xs; then
12021                         known_extensions="$known_extensions $xxx"
12022                 elif $test -f $xxx/Makefile.PL; then
12023                         nonxs_extensions="$nonxs_extensions $xxx"
12024                 else
12025                         if $test -d $xxx; then
12026                                 # Look for nested extensions, eg. Devel/Dprof.
12027                                 cd $xxx
12028                                 for yyy in * ; do
12029                                 if $test -f $yyy/$yyy.xs; then
12030                                         known_extensions="$known_extensions $xxx/$yyy"
12031                                 elif $test -f $yyy/Makefile.PL; then
12032                                         nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12033                                 fi
12034                                 done
12035                                 cd ..
12036                         fi
12037                 fi 
12038                 ;;
12039         esac
12040 done
12041 set X $nonxs_extensions
12042 shift
12043 nonxs_extensions="$*"
12044 set X $known_extensions
12045 shift
12046 known_extensions="$*"
12047 cd $tdir
12048
12049 : Now see which are supported on this system.
12050 avail_ext=''
12051 for xxx in $known_extensions ; do
12052         case "$xxx" in
12053         DB_File|db_file)
12054                 case "$i_db" in
12055                 $define) avail_ext="$avail_ext $xxx" ;;
12056                 esac
12057                 ;;
12058         GDBM_File|gdbm_fil)
12059                 case "$i_gdbm" in 
12060                 $define) avail_ext="$avail_ext $xxx" ;;
12061                 esac
12062                 ;;
12063         NDBM_File|ndbm_fil)
12064                 case "$i_ndbm" in
12065                 $define) avail_ext="$avail_ext $xxx" ;;
12066                 esac
12067                 ;;
12068         ODBM_File|odbm_fil) 
12069                 case "${i_dbm}${i_rpcsvcdbm}" in
12070                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12071                 esac
12072                 ;;
12073         POSIX|posix)
12074                 case "$useposix" in
12075                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12076                 esac
12077                 ;;
12078         Opcode|opcode)
12079                 case "$useopcode" in
12080                 true|define|y) avail_ext="$avail_ext $xxx" ;;
12081                 esac
12082                 ;;
12083         Socket|socket)
12084                 case "$d_socket" in 
12085                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12086                 esac
12087                 ;;
12088         Thread|thread)
12089                 case "$usethreads" in 
12090                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12091                 esac
12092                 ;;
12093         IPC/SysV|ipc/sysv)
12094                 : XXX Do we need a useipcsysv variable here
12095                 case "${d_msg}${d_sem}${d_shm}" in 
12096                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12097                 esac
12098                 ;;
12099         *)      avail_ext="$avail_ext $xxx"
12100                 ;;
12101         esac
12102 done
12103
12104 set X $avail_ext
12105 shift
12106 avail_ext="$*"
12107
12108 : Now see which nonxs extensions are supported on this system.
12109 : For now assume all are.
12110 nonxs_ext=''
12111 for xxx in $nonxs_extensions ; do
12112         case "$xxx" in
12113         *)      nonxs_ext="$nonxs_ext $xxx"
12114                 ;;
12115         esac
12116 done
12117
12118 set X $nonxs_ext
12119 shift
12120 nonxs_ext="$*"
12121
12122 case $usedl in
12123 $define)
12124         $cat <<EOM
12125 A number of extensions are supplied with $package.  You may choose to
12126 compile these extensions for dynamic loading (the default), compile
12127 them into the $package executable (static loading), or not include
12128 them at all.  Answer "none" to include no extensions.
12129 Note that DynaLoader is always built and need not be mentioned here.
12130
12131 EOM
12132         case "$dynamic_ext" in
12133         '') dflt="$avail_ext" ;;
12134         *)      dflt="$dynamic_ext"
12135                 # Perhaps we are reusing an old out-of-date config.sh.
12136                 case "$hint" in
12137                 previous)
12138                         if test X"$dynamic_ext" != X"$avail_ext"; then
12139                                 $cat <<EOM
12140 NOTICE:  Your previous config.sh list may be incorrect. 
12141 The extensions now available to you are 
12142         ${avail_ext}
12143 but the default list from your previous config.sh is
12144         ${dynamic_ext} 
12145
12146 EOM
12147                         fi
12148                         ;;
12149                 esac
12150                 ;;
12151         esac
12152         case "$dflt" in
12153         '')     dflt=none;;
12154         esac
12155         rp="What extensions do you wish to load dynamically?"
12156         . ./myread
12157         case "$ans" in
12158         none) dynamic_ext=' ' ;;
12159         *) dynamic_ext="$ans" ;;
12160         esac
12161
12162         case "$static_ext" in
12163         '')
12164                 : Exclude those already listed in dynamic linking
12165                 dflt=''
12166                 for xxx in $avail_ext; do
12167                         case " $dynamic_ext " in
12168                         *" $xxx "*) ;;
12169                         *) dflt="$dflt $xxx" ;;
12170                         esac
12171                 done
12172                 set X $dflt
12173                 shift
12174                 dflt="$*"
12175                 ;;
12176         *)  dflt="$static_ext" 
12177                 ;;
12178         esac
12179
12180         case "$dflt" in
12181         '')     dflt=none;;
12182         esac
12183         rp="What extensions do you wish to load statically?"
12184         . ./myread
12185         case "$ans" in
12186         none) static_ext=' ' ;;
12187         *) static_ext="$ans" ;;
12188         esac
12189         ;;
12190 *)
12191         $cat <<EOM
12192 A number of extensions are supplied with $package.  Answer "none" 
12193 to include no extensions. 
12194 Note that DynaLoader is always built and need not be mentioned here.
12195
12196 EOM
12197         case "$static_ext" in
12198         '') dflt="$avail_ext" ;;
12199         *)      dflt="$static_ext"
12200                 # Perhaps we are reusing an old out-of-date config.sh.
12201                 case "$hint" in
12202                 previous)
12203                         if test X"$static_ext" != X"$avail_ext"; then
12204                                 $cat <<EOM
12205 NOTICE:  Your previous config.sh list may be incorrect. 
12206 The extensions now available to you are 
12207         ${avail_ext}
12208 but the default list from your previous config.sh is
12209         ${static_ext} 
12210
12211 EOM
12212                         fi
12213                         ;;
12214                 esac
12215                 ;;
12216         esac
12217         : Exclude those that are not xs extensions
12218         case "$dflt" in
12219         '')     dflt=none;;
12220         esac
12221         rp="What extensions do you wish to include?"
12222         . ./myread
12223         case "$ans" in
12224         none) static_ext=' ' ;;
12225         *) static_ext="$ans" ;;
12226         esac
12227         ;;
12228 esac
12229
12230 set X $dynamic_ext $static_ext $nonxs_ext
12231 shift
12232 extensions="$*"
12233
12234 : Remove build directory name from cppstdin so it can be used from
12235 : either the present location or the final installed location.
12236 echo " "
12237 : Get out of the UU directory to get correct path name.
12238 cd ..
12239 case "$cppstdin" in
12240 `pwd`/cppstdin)
12241         echo "Stripping down cppstdin path name"
12242         cppstdin=cppstdin
12243         ;;
12244 esac
12245 cd UU
12246
12247 : end of configuration questions
12248 echo " "
12249 echo "End of configuration questions."
12250 echo " "
12251
12252 : back to where it started
12253 if test -d ../UU; then
12254         cd ..
12255 fi
12256
12257 : configuration may be patched via a 'config.over' file
12258 if $test -f config.over; then
12259         echo " "
12260         dflt=y
12261         rp='I see a config.over file.  Do you wish to load it?'
12262         . UU/myread
12263         case "$ans" in
12264         n*) echo "OK, I'll ignore it.";;
12265         *)      . ./config.over
12266                 echo "Configuration override changes have been loaded."
12267                 ;;
12268         esac
12269 fi
12270
12271 : in case they want portability, strip down executable paths
12272 case "$d_portable" in
12273 "$define")
12274         echo " "
12275         echo "Stripping down executable paths..." >&4
12276         for file in $loclist $trylist; do
12277                 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12278                         eval $file="\$file"
12279                 fi
12280         done
12281         ;;
12282 esac
12283
12284 : create config.sh file
12285 echo " "
12286 echo "Creating config.sh..." >&4
12287 $spitshell <<EOT >config.sh
12288 $startsh
12289 #
12290 # This file was produced by running the Configure script. It holds all the
12291 # definitions figured out by Configure. Should you modify one of these values,
12292 # do not forget to propagate your changes by running "Configure -der". You may
12293 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12294 #
12295
12296 # Package name      : $package
12297 # Source directory  : $src
12298 # Configuration time: $cf_time
12299 # Configured by     : $cf_by
12300 # Target system     : $myuname
12301
12302 Author='$Author'
12303 Date='$Date'
12304 Header='$Header'
12305 Id='$Id'
12306 Locker='$Locker'
12307 Log='$Log'
12308 Mcc='$Mcc'
12309 RCSfile='$RCSfile'
12310 Revision='$Revision'
12311 Source='$Source'
12312 State='$State'
12313 _a='$_a'
12314 _exe='$_exe'
12315 _o='$_o'
12316 afs='$afs'
12317 alignbytes='$alignbytes'
12318 ansi2knr='$ansi2knr'
12319 aphostname='$aphostname'
12320 apiversion='$apiversion'
12321 ar='$ar'
12322 archlib='$archlib'
12323 archlibexp='$archlibexp'
12324 archname64='$archname64'
12325 archname='$archname'
12326 archobjs='$archobjs'
12327 awk='$awk'
12328 baserev='$baserev'
12329 bash='$bash'
12330 bin='$bin'
12331 binexp='$binexp'
12332 bison='$bison'
12333 byacc='$byacc'
12334 byteorder='$byteorder'
12335 c='$c'
12336 castflags='$castflags'
12337 cat='$cat'
12338 cc='$cc'
12339 cccdlflags='$cccdlflags'
12340 ccdlflags='$ccdlflags'
12341 ccflags='$ccflags'
12342 cf_by='$cf_by'
12343 cf_email='$cf_email'
12344 cf_time='$cf_time'
12345 chgrp='$chgrp'
12346 chmod='$chmod'
12347 chown='$chown'
12348 clocktype='$clocktype'
12349 comm='$comm'
12350 compress='$compress'
12351 contains='$contains'
12352 cp='$cp'
12353 cpio='$cpio'
12354 cpp='$cpp'
12355 cpp_stuff='$cpp_stuff'
12356 cppflags='$cppflags'
12357 cpplast='$cpplast'
12358 cppminus='$cppminus'
12359 cpprun='$cpprun'
12360 cppstdin='$cppstdin'
12361 cryptlib='$cryptlib'
12362 csh='$csh'
12363 d_Gconvert='$d_Gconvert'
12364 d_access='$d_access'
12365 d_accessx='$d_accessx'
12366 d_alarm='$d_alarm'
12367 d_archlib='$d_archlib'
12368 d_attribut='$d_attribut'
12369 d_bcmp='$d_bcmp'
12370 d_bcopy='$d_bcopy'
12371 d_bsd='$d_bsd'
12372 d_bsdgetpgrp='$d_bsdgetpgrp'
12373 d_bsdsetpgrp='$d_bsdsetpgrp'
12374 d_bzero='$d_bzero'
12375 d_casti32='$d_casti32'
12376 d_castneg='$d_castneg'
12377 d_charvspr='$d_charvspr'
12378 d_chown='$d_chown'
12379 d_chroot='$d_chroot'
12380 d_chsize='$d_chsize'
12381 d_closedir='$d_closedir'
12382 d_cmsghdr_s='$d_cmsghdr_s'
12383 d_const='$d_const'
12384 d_crypt='$d_crypt'
12385 d_csh='$d_csh'
12386 d_cuserid='$d_cuserid'
12387 d_dbl_dig='$d_dbl_dig'
12388 d_dbmclose64='$d_dbmclose64'
12389 d_dbminit64='$d_dbminit64'
12390 d_delete64='$d_delete64'
12391 d_difftime='$d_difftime'
12392 d_dirent64_s='$d_dirent64_s'
12393 d_dirnamlen='$d_dirnamlen'
12394 d_dlerror='$d_dlerror'
12395 d_dlopen='$d_dlopen'
12396 d_dlsymun='$d_dlsymun'
12397 d_dosuid='$d_dosuid'
12398 d_drand48proto='$d_drand48proto'
12399 d_dup2='$d_dup2'
12400 d_eaccess='$d_eaccess'
12401 d_endgrent='$d_endgrent'
12402 d_endhent='$d_endhent'
12403 d_endnent='$d_endnent'
12404 d_endpent='$d_endpent'
12405 d_endpwent='$d_endpwent'
12406 d_endsent='$d_endsent'
12407 d_eofnblk='$d_eofnblk'
12408 d_eunice='$d_eunice'
12409 d_fchmod='$d_fchmod'
12410 d_fchown='$d_fchown'
12411 d_fcntl='$d_fcntl'
12412 d_fd_macros='$d_fd_macros'
12413 d_fd_set='$d_fd_set'
12414 d_fds_bits='$d_fds_bits'
12415 d_fetch64='$d_fetch64'
12416 d_fgetpos64='$d_fgetpos64'
12417 d_fgetpos='$d_fgetpos'
12418 d_firstkey64='$d_firstkey64'
12419 d_flexfnam='$d_flexfnam'
12420 d_flock64_s='$d_flock64_s'
12421 d_flock='$d_flock'
12422 d_fopen64='$d_fopen64'
12423 d_fork='$d_fork'
12424 d_fpathconf='$d_fpathconf'
12425 d_freopen64='$d_freopen64'
12426 d_fseek64='$d_fseek64'
12427 d_fseeko64='$d_fseeko64'
12428 d_fseeko='$d_fseeko'
12429 d_fsetpos64='$d_fsetpos64'
12430 d_fsetpos='$d_fsetpos'
12431 d_fstat64='$d_fstat64'
12432 d_ftell64='$d_ftell64'
12433 d_ftello64='$d_ftello64'
12434 d_ftello='$d_ftello'
12435 d_ftime='$d_ftime'
12436 d_ftruncate64='$d_ftruncate64'
12437 d_getgrent='$d_getgrent'
12438 d_getgrps='$d_getgrps'
12439 d_gethbyaddr='$d_gethbyaddr'
12440 d_gethbyname='$d_gethbyname'
12441 d_gethent='$d_gethent'
12442 d_gethname='$d_gethname'
12443 d_gethostprotos='$d_gethostprotos'
12444 d_getlogin='$d_getlogin'
12445 d_getnbyaddr='$d_getnbyaddr'
12446 d_getnbyname='$d_getnbyname'
12447 d_getnent='$d_getnent'
12448 d_getnetprotos='$d_getnetprotos'
12449 d_getpbyname='$d_getpbyname'
12450 d_getpbynumber='$d_getpbynumber'
12451 d_getpent='$d_getpent'
12452 d_getpgid='$d_getpgid'
12453 d_getpgrp2='$d_getpgrp2'
12454 d_getpgrp='$d_getpgrp'
12455 d_getppid='$d_getppid'
12456 d_getprior='$d_getprior'
12457 d_getprotoprotos='$d_getprotoprotos'
12458 d_getpwent='$d_getpwent'
12459 d_getsbyname='$d_getsbyname'
12460 d_getsbyport='$d_getsbyport'
12461 d_getsent='$d_getsent'
12462 d_getservprotos='$d_getservprotos'
12463 d_gettimeod='$d_gettimeod'
12464 d_gnulibc='$d_gnulibc'
12465 d_grpasswd='$d_grpasswd'
12466 d_htonl='$d_htonl'
12467 d_index='$d_index'
12468 d_inetaton='$d_inetaton'
12469 d_ino64t='$d_ino64t'
12470 d_int64t='$d_int64t'
12471 d_iovec_s='$d_iovec_s'
12472 d_isascii='$d_isascii'
12473 d_killpg='$d_killpg'
12474 d_lchown='$d_lchown'
12475 d_link='$d_link'
12476 d_locconv='$d_locconv'
12477 d_lockf64='$d_lockf64'
12478 d_lockf='$d_lockf'
12479 d_longdbl='$d_longdbl'
12480 d_longlong='$d_longlong'
12481 d_lseek64='$d_lseek64'
12482 d_lstat64='$d_lstat64'
12483 d_lstat='$d_lstat'
12484 d_mblen='$d_mblen'
12485 d_mbstowcs='$d_mbstowcs'
12486 d_mbtowc='$d_mbtowc'
12487 d_memcmp='$d_memcmp'
12488 d_memcpy='$d_memcpy'
12489 d_memmove='$d_memmove'
12490 d_memset='$d_memset'
12491 d_mkdir='$d_mkdir'
12492 d_mkfifo='$d_mkfifo'
12493 d_mktime='$d_mktime'
12494 d_msg='$d_msg'
12495 d_msg_ctrunc='$d_msg_ctrunc'
12496 d_msg_dontroute='$d_msg_dontroute'
12497 d_msg_oob='$d_msg_oob'
12498 d_msg_peek='$d_msg_peek'
12499 d_msg_proxy='$d_msg_proxy'
12500 d_msgctl='$d_msgctl'
12501 d_msgget='$d_msgget'
12502 d_msghdr_s='$d_msghdr_s'
12503 d_msgrcv='$d_msgrcv'
12504 d_msgsnd='$d_msgsnd'
12505 d_mymalloc='$d_mymalloc'
12506 d_nextkey64='$d_nextkey64'
12507 d_nice='$d_nice'
12508 d_off64t='$d_off64t'
12509 d_oldpthreads='$d_oldpthreads'
12510 d_oldsock='$d_oldsock'
12511 d_open3='$d_open3'
12512 d_open64='$d_open64'
12513 d_opendir64='$d_opendir64'
12514 d_pathconf='$d_pathconf'
12515 d_pause='$d_pause'
12516 d_phostname='$d_phostname'
12517 d_pipe='$d_pipe'
12518 d_poll='$d_poll'
12519 d_portable='$d_portable'
12520 d_pthread_create_joinable='$d_pthread_create_joinable'
12521 d_pthread_yield='$d_pthread_yield'
12522 d_pwage='$d_pwage'
12523 d_pwchange='$d_pwchange'
12524 d_pwclass='$d_pwclass'
12525 d_pwcomment='$d_pwcomment'
12526 d_pwexpire='$d_pwexpire'
12527 d_pwgecos='$d_pwgecos'
12528 d_pwpasswd='$d_pwpasswd'
12529 d_pwquota='$d_pwquota'
12530 d_readdir64='$d_readdir64'
12531 d_readdir='$d_readdir'
12532 d_readlink='$d_readlink'
12533 d_readv='$d_readv'
12534 d_recvmsg='$d_recvmsg'
12535 d_rename='$d_rename'
12536 d_rewinddir='$d_rewinddir'
12537 d_rmdir='$d_rmdir'
12538 d_safebcpy='$d_safebcpy'
12539 d_safemcpy='$d_safemcpy'
12540 d_sanemcmp='$d_sanemcmp'
12541 d_sched_yield='$d_sched_yield'
12542 d_scm_rights='$d_scm_rights'
12543 d_seekdir64='$d_seekdir64'
12544 d_seekdir='$d_seekdir'
12545 d_select='$d_select'
12546 d_sem='$d_sem'
12547 d_semctl='$d_semctl'
12548 d_semctl_semid_ds='$d_semctl_semid_ds'
12549 d_semctl_semun='$d_semctl_semun'
12550 d_semget='$d_semget'
12551 d_semop='$d_semop'
12552 d_sendmsg='$d_sendmsg'
12553 d_setegid='$d_setegid'
12554 d_seteuid='$d_seteuid'
12555 d_setgrent='$d_setgrent'
12556 d_setgrps='$d_setgrps'
12557 d_sethent='$d_sethent'
12558 d_setlinebuf='$d_setlinebuf'
12559 d_setlocale='$d_setlocale'
12560 d_setnent='$d_setnent'
12561 d_setpent='$d_setpent'
12562 d_setpgid='$d_setpgid'
12563 d_setpgrp2='$d_setpgrp2'
12564 d_setpgrp='$d_setpgrp'
12565 d_setprior='$d_setprior'
12566 d_setpwent='$d_setpwent'
12567 d_setregid='$d_setregid'
12568 d_setresgid='$d_setresgid'
12569 d_setresuid='$d_setresuid'
12570 d_setreuid='$d_setreuid'
12571 d_setrgid='$d_setrgid'
12572 d_setruid='$d_setruid'
12573 d_setsent='$d_setsent'
12574 d_setsid='$d_setsid'
12575 d_setvbuf='$d_setvbuf'
12576 d_sfio='$d_sfio'
12577 d_shm='$d_shm'
12578 d_shmat='$d_shmat'
12579 d_shmatprototype='$d_shmatprototype'
12580 d_shmctl='$d_shmctl'
12581 d_shmdt='$d_shmdt'
12582 d_shmget='$d_shmget'
12583 d_sigaction='$d_sigaction'
12584 d_sigsetjmp='$d_sigsetjmp'
12585 d_socket='$d_socket'
12586 d_sockpair='$d_sockpair'
12587 d_stat64='$d_stat64'
12588 d_statblks='$d_statblks'
12589 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12590 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12591 d_stdiobase='$d_stdiobase'
12592 d_stdstdio='$d_stdstdio'
12593 d_store64='$d_store64'
12594 d_strchr='$d_strchr'
12595 d_strcoll='$d_strcoll'
12596 d_strctcpy='$d_strctcpy'
12597 d_strerrm='$d_strerrm'
12598 d_strerror='$d_strerror'
12599 d_strtod='$d_strtod'
12600 d_strtol='$d_strtol'
12601 d_strtoul='$d_strtoul'
12602 d_strxfrm='$d_strxfrm'
12603 d_suidsafe='$d_suidsafe'
12604 d_symlink='$d_symlink'
12605 d_syscall='$d_syscall'
12606 d_sysconf='$d_sysconf'
12607 d_sysernlst='$d_sysernlst'
12608 d_syserrlst='$d_syserrlst'
12609 d_system='$d_system'
12610 d_tcgetpgrp='$d_tcgetpgrp'
12611 d_tcsetpgrp='$d_tcsetpgrp'
12612 d_telldir64='$d_telldir64'
12613 d_telldir='$d_telldir'
12614 d_time='$d_time'
12615 d_times='$d_times'
12616 d_tmpfile64='$d_tmpfile64'
12617 d_truncate64='$d_truncate64'
12618 d_truncate='$d_truncate'
12619 d_tzname='$d_tzname'
12620 d_umask='$d_umask'
12621 d_uname='$d_uname'
12622 d_union_semun='$d_union_semun'
12623 d_vfork='$d_vfork'
12624 d_void_closedir='$d_void_closedir'
12625 d_voidsig='$d_voidsig'
12626 d_voidtty='$d_voidtty'
12627 d_volatile='$d_volatile'
12628 d_vprintf='$d_vprintf'
12629 d_wait4='$d_wait4'
12630 d_waitpid='$d_waitpid'
12631 d_wcstombs='$d_wcstombs'
12632 d_wctomb='$d_wctomb'
12633 d_writev='$d_writev'
12634 d_xenix='$d_xenix'
12635 date='$date'
12636 db_hashtype='$db_hashtype'
12637 db_prefixtype='$db_prefixtype'
12638 defvoidused='$defvoidused'
12639 direntrytype='$direntrytype'
12640 dlext='$dlext'
12641 dlsrc='$dlsrc'
12642 doublesize='$doublesize'
12643 drand01='$drand01'
12644 dynamic_ext='$dynamic_ext'
12645 eagain='$eagain'
12646 ebcdic='$ebcdic'
12647 echo='$echo'
12648 egrep='$egrep'
12649 emacs='$emacs'
12650 eunicefix='$eunicefix'
12651 exe_ext='$exe_ext'
12652 expr='$expr'
12653 extensions='$extensions'
12654 find='$find'
12655 firstmakefile='$firstmakefile'
12656 flex='$flex'
12657 fpostype='$fpostype'
12658 freetype='$freetype'
12659 full_csh='$full_csh'
12660 full_sed='$full_sed'
12661 gccversion='$gccversion'
12662 gidtype='$gidtype'
12663 glibpth='$glibpth'
12664 grep='$grep'
12665 groupcat='$groupcat'
12666 groupstype='$groupstype'
12667 gzip='$gzip'
12668 h_fcntl='$h_fcntl'
12669 h_sysfile='$h_sysfile'
12670 hint='$hint'
12671 hostcat='$hostcat'
12672 huge='$huge'
12673 i_arpainet='$i_arpainet'
12674 i_bsdioctl='$i_bsdioctl'
12675 i_db='$i_db'
12676 i_dbm='$i_dbm'
12677 i_dirent='$i_dirent'
12678 i_dld='$i_dld'
12679 i_dlfcn='$i_dlfcn'
12680 i_fcntl='$i_fcntl'
12681 i_float='$i_float'
12682 i_gdbm='$i_gdbm'
12683 i_grp='$i_grp'
12684 i_inttypes='$i_inttypes'
12685 i_limits='$i_limits'
12686 i_locale='$i_locale'
12687 i_machcthr='$i_machcthr'
12688 i_malloc='$i_malloc'
12689 i_math='$i_math'
12690 i_memory='$i_memory'
12691 i_ndbm='$i_ndbm'
12692 i_netdb='$i_netdb'
12693 i_neterrno='$i_neterrno'
12694 i_niin='$i_niin'
12695 i_pwd='$i_pwd'
12696 i_rpcsvcdbm='$i_rpcsvcdbm'
12697 i_sfio='$i_sfio'
12698 i_sgtty='$i_sgtty'
12699 i_stdarg='$i_stdarg'
12700 i_stddef='$i_stddef'
12701 i_stdlib='$i_stdlib'
12702 i_string='$i_string'
12703 i_sysaccess='$i_sysaccess'
12704 i_sysdir='$i_sysdir'
12705 i_sysfile='$i_sysfile'
12706 i_sysfilio='$i_sysfilio'
12707 i_sysin='$i_sysin'
12708 i_sysioctl='$i_sysioctl'
12709 i_sysndir='$i_sysndir'
12710 i_sysparam='$i_sysparam'
12711 i_sysresrc='$i_sysresrc'
12712 i_syssecrt='$i_syssecrt'
12713 i_sysselct='$i_sysselct'
12714 i_syssockio='$i_syssockio'
12715 i_sysstat='$i_sysstat'
12716 i_systime='$i_systime'
12717 i_systimek='$i_systimek'
12718 i_systimes='$i_systimes'
12719 i_systypes='$i_systypes'
12720 i_sysuio='$i_sysuio'
12721 i_sysun='$i_sysun'
12722 i_syswait='$i_syswait'
12723 i_termio='$i_termio'
12724 i_termios='$i_termios'
12725 i_time='$i_time'
12726 i_unistd='$i_unistd'
12727 i_utime='$i_utime'
12728 i_values='$i_values'
12729 i_varargs='$i_varargs'
12730 i_varhdr='$i_varhdr'
12731 i_vfork='$i_vfork'
12732 ignore_versioned_solibs='$ignore_versioned_solibs'
12733 incpath='$incpath'
12734 inews='$inews'
12735 installarchlib='$installarchlib'
12736 installbin='$installbin'
12737 installman1dir='$installman1dir'
12738 installman3dir='$installman3dir'
12739 installprivlib='$installprivlib'
12740 installscript='$installscript'
12741 installsitearch='$installsitearch'
12742 installsitelib='$installsitelib'
12743 intsize='$intsize'
12744 known_extensions='$known_extensions'
12745 ksh='$ksh'
12746 large='$large'
12747 ld='$ld'
12748 lddlflags='$lddlflags'
12749 ldflags='$ldflags'
12750 less='$less'
12751 lib_ext='$lib_ext'
12752 libc='$libc'
12753 libperl='$libperl'
12754 libpth='$libpth'
12755 libs='$libs'
12756 libswanted='$libswanted'
12757 line='$line'
12758 lint='$lint'
12759 lkflags='$lkflags'
12760 ln='$ln'
12761 lns='$lns'
12762 locincpth='$locincpth'
12763 loclibpth='$loclibpth'
12764 longdblsize='$longdblsize'
12765 longlongsize='$longlongsize'
12766 longsize='$longsize'
12767 lp='$lp'
12768 lpr='$lpr'
12769 ls='$ls'
12770 lseeksize='$lseeksize'
12771 lseektype='$lseektype'
12772 mail='$mail'
12773 mailx='$mailx'
12774 make='$make'
12775 make_set_make='$make_set_make'
12776 mallocobj='$mallocobj'
12777 mallocsrc='$mallocsrc'
12778 malloctype='$malloctype'
12779 man1dir='$man1dir'
12780 man1direxp='$man1direxp'
12781 man1ext='$man1ext'
12782 man3dir='$man3dir'
12783 man3direxp='$man3direxp'
12784 man3ext='$man3ext'
12785 medium='$medium'
12786 mips='$mips'
12787 mips_type='$mips_type'
12788 mkdir='$mkdir'
12789 models='$models'
12790 modetype='$modetype'
12791 more='$more'
12792 mv='$mv'
12793 myarchname='$myarchname'
12794 mydomain='$mydomain'
12795 myhostname='$myhostname'
12796 myuname='$myuname'
12797 n='$n'
12798 netdb_hlen_type='$netdb_hlen_type'
12799 netdb_host_type='$netdb_host_type'
12800 netdb_name_type='$netdb_name_type'
12801 netdb_net_type='$netdb_net_type'
12802 nm='$nm'
12803 nm_opt='$nm_opt'
12804 nm_so_opt='$nm_so_opt'
12805 nonxs_ext='$nonxs_ext'
12806 nroff='$nroff'
12807 o_nonblock='$o_nonblock'
12808 obj_ext='$obj_ext'
12809 optimize='$optimize'
12810 orderlib='$orderlib'
12811 osname='$osname'
12812 osvers='$osvers'
12813 package='$package'
12814 pager='$pager'
12815 passcat='$passcat'
12816 patchlevel='$patchlevel'
12817 path_sep='$path_sep'
12818 perl='$perl'
12819 perladmin='$perladmin'
12820 perlpath='$perlpath'
12821 pg='$pg'
12822 phostname='$phostname'
12823 pidtype='$pidtype'
12824 plibpth='$plibpth'
12825 pmake='$pmake'
12826 pr='$pr'
12827 prefix='$prefix'
12828 prefixexp='$prefixexp'
12829 privlib='$privlib'
12830 privlibexp='$privlibexp'
12831 prototype='$prototype'
12832 pthread_create_joinable='$pthread_create_joinable'
12833 ptrsize='$ptrsize'
12834 randbits='$randbits'
12835 randfunc='$randfunc'
12836 randseedtype='$randseedtype'
12837 ranlib='$ranlib'
12838 rd_nodata='$rd_nodata'
12839 rm='$rm'
12840 rmail='$rmail'
12841 runnm='$runnm'
12842 sched_yield='$sched_yield'
12843 scriptdir='$scriptdir'
12844 scriptdirexp='$scriptdirexp'
12845 sed='$sed'
12846 seedfunc='$seedfunc'
12847 selectminbits='$selectminbits'
12848 selecttype='$selecttype'
12849 sendmail='$sendmail'
12850 sh='$sh'
12851 shar='$shar'
12852 sharpbang='$sharpbang'
12853 shmattype='$shmattype'
12854 shortsize='$shortsize'
12855 shrpenv='$shrpenv'
12856 shsharp='$shsharp'
12857 sig_name='$sig_name'
12858 sig_name_init='$sig_name_init'
12859 sig_num='$sig_num'
12860 sig_num_init='$sig_num_init'
12861 signal_t='$signal_t'
12862 sitearch='$sitearch'
12863 sitearchexp='$sitearchexp'
12864 sitelib='$sitelib'
12865 sitelibexp='$sitelibexp'
12866 sizetype='$sizetype'
12867 sleep='$sleep'
12868 smail='$smail'
12869 small='$small'
12870 so='$so'
12871 sockethdr='$sockethdr'
12872 socketlib='$socketlib'
12873 sort='$sort'
12874 spackage='$spackage'
12875 spitshell='$spitshell'
12876 split='$split'
12877 src='$src'
12878 ssizetype='$ssizetype'
12879 startperl='$startperl'
12880 startsh='$startsh'
12881 static_ext='$static_ext'
12882 stdchar='$stdchar'
12883 stdio_base='$stdio_base'
12884 stdio_bufsiz='$stdio_bufsiz'
12885 stdio_cnt='$stdio_cnt'
12886 stdio_filbuf='$stdio_filbuf'
12887 stdio_ptr='$stdio_ptr'
12888 strings='$strings'
12889 submit='$submit'
12890 subversion='$subversion'
12891 sysman='$sysman'
12892 tail='$tail'
12893 tar='$tar'
12894 tbl='$tbl'
12895 tee='$tee'
12896 test='$test'
12897 timeincl='$timeincl'
12898 timetype='$timetype'
12899 touch='$touch'
12900 tr='$tr'
12901 trnl='$trnl'
12902 troff='$troff'
12903 uidtype='$uidtype'
12904 uname='$uname'
12905 uniq='$uniq'
12906 use64bits='$use64bits'
12907 usedl='$usedl'
12908 usemultiplicity='$usemultiplicity'
12909 usemymalloc='$usemymalloc'
12910 usenm='$usenm'
12911 useopcode='$useopcode'
12912 useperlio='$useperlio'
12913 useposix='$useposix'
12914 usesfio='$usesfio'
12915 useshrplib='$useshrplib'
12916 usethreads='$usethreads'
12917 usevfork='$usevfork'
12918 usrinc='$usrinc'
12919 uuname='$uuname'
12920 version='$version'
12921 vi='$vi'
12922 voidflags='$voidflags'
12923 xlibpth='$xlibpth'
12924 zcat='$zcat'
12925 zip='$zip'
12926 EOT
12927
12928 : Add in command line options if available
12929 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
12930
12931 : add special variables
12932 $test -f $src/patchlevel.h && \
12933 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
12934 echo "CONFIG=true" >>config.sh
12935
12936 : propagate old symbols
12937 if $test -f UU/config.sh; then
12938         <UU/config.sh sort | uniq >UU/oldconfig.sh
12939         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
12940         sort | uniq -u >UU/oldsyms
12941         set X `cat UU/oldsyms`
12942         shift
12943         case $# in
12944         0) ;;
12945         *)
12946                 cat <<EOM
12947 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
12948 EOM
12949                 echo "# Variables propagated from previous config.sh file." >>config.sh
12950                 for sym in `cat UU/oldsyms`; do
12951                         echo "    Propagating $hint variable "'$'"$sym..."
12952                         eval 'tmp="$'"${sym}"'"'
12953                         echo "$tmp" | \
12954                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
12955                 done
12956                 ;;
12957         esac
12958 fi
12959
12960 : Finish up by extracting the .SH files
12961 case "$alldone" in
12962 exit)
12963         $rm -rf UU
12964         echo "Done."
12965         exit 0
12966         ;;
12967 cont)
12968         ;;
12969 '')
12970         dflt=''
12971         nostick=true
12972         $cat <<EOM
12973
12974 If you'd like to make any changes to the config.sh file before I begin
12975 to configure things, do it as a shell escape now (e.g. !vi config.sh).
12976
12977 EOM
12978         rp="Press return or use a shell escape to edit config.sh:"
12979         . UU/myread
12980         nostick=''
12981         case "$ans" in
12982         '') ;;
12983         *) : in case they cannot read
12984                 sh 1>&4 -c "$ans";;
12985         esac
12986         ;;
12987 esac
12988
12989 : if this fails, just run all the .SH files by hand
12990 . ./config.sh
12991
12992 echo " "
12993 exec 1>&4
12994 . ./UU/extract
12995
12996 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
12997         dflt=y
12998         case "$silent" in
12999         true) ;;
13000         *)
13001                 $cat <<EOM
13002
13003 Now you need to generate make dependencies by running "$make depend".
13004 You might prefer to run it in background: "$make depend > makedepend.out &"
13005 It can take a while, so you might not want to run it right now.
13006
13007 EOM
13008                 ;;
13009         esac
13010         rp="Run $make depend now?"
13011         . UU/myread
13012         case "$ans" in
13013         y*)
13014                 $make depend && echo "Now you must run a $make."
13015                 ;;
13016         *)
13017                 echo "You must run '$make depend' then '$make'."
13018                 ;;
13019         esac
13020 elif test -f [Mm]akefile; then
13021         echo " "
13022         echo "Now you must run a $make."
13023 else
13024         echo "Done."
13025 fi
13026
13027 if $test -f Policy.sh; then
13028     $cat <<EOM
13029
13030 If you compile $package on a different machine or from a different object
13031 directory, copy the Policy.sh file from this object directory to the
13032 new one before you run Configure -- this will help you with most of
13033 the policy defaults.
13034
13035 EOM
13036 fi
13037 if $test -f config.msg; then
13038     echo "Hmm.  I also noted the following information while running:"
13039     echo " "
13040     $cat config.msg >&4
13041     $rm -f config.msg
13042 fi
13043 $rm -f kit*isdone ark*isdone
13044 $rm -rf UU
13045
13046 : End of Configure
13047