Configure -A change: -Afoo=bar is equal to -Aappend:foo=" bar".
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon Sep 20 22:45:40 EET DST 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 contains=''
302 cpp_stuff=''
303 cpplast=''
304 cppminus=''
305 cpprun=''
306 cppstdin=''
307 crosscompile=''
308 d_access=''
309 d_accessx=''
310 d_alarm=''
311 d_attribut=''
312 d_bcmp=''
313 d_bcopy=''
314 d_bzero=''
315 d_casti32=''
316 castflags=''
317 d_castneg=''
318 d_chown=''
319 d_chroot=''
320 d_chsize=''
321 d_closedir=''
322 d_void_closedir=''
323 d_const=''
324 cryptlib=''
325 d_crypt=''
326 d_csh=''
327 full_csh=''
328 d_cuserid=''
329 d_dbl_dig=''
330 d_difftime=''
331 d_dlerror=''
332 d_dlopen=''
333 d_dlsymun=''
334 d_dosuid=''
335 d_suidsafe=''
336 d_drand48proto=''
337 d_dup2=''
338 d_eaccess=''
339 d_endgrent=''
340 d_endhent=''
341 d_endnent=''
342 d_endpent=''
343 d_endpwent=''
344 d_endsent=''
345 d_endspent=''
346 d_fchmod=''
347 d_fchown=''
348 d_fcntl=''
349 d_fd_macros=''
350 d_fd_set=''
351 d_fds_bits=''
352 d_fgetpos=''
353 d_flexfnam=''
354 d_flock=''
355 d_fork=''
356 d_fseeko=''
357 d_fsetpos=''
358 d_ftello=''
359 d_ftime=''
360 d_gettimeod=''
361 d_Gconvert=''
362 d_getgrent=''
363 d_getgrps=''
364 d_gethbyaddr=''
365 d_gethbyname=''
366 d_gethent=''
367 aphostname=''
368 d_gethname=''
369 d_phostname=''
370 d_uname=''
371 d_gethostprotos=''
372 d_getlogin=''
373 d_getmntent=''
374 d_getnbyaddr=''
375 d_getnbyname=''
376 d_getnent=''
377 d_getnetprotos=''
378 d_getpent=''
379 d_getpgid=''
380 d_getpgrp2=''
381 d_bsdgetpgrp=''
382 d_getpgrp=''
383 d_getppid=''
384 d_getprior=''
385 d_getpbyname=''
386 d_getpbynumber=''
387 d_getprotoprotos=''
388 d_getpwent=''
389 d_getsent=''
390 d_getservprotos=''
391 d_getspent=''
392 d_getspnam=''
393 d_getsbyname=''
394 d_getsbyport=''
395 d_gnulibc=''
396 d_hasmntopt=''
397 d_htonl=''
398 d_inetaton=''
399 d_isascii=''
400 d_killpg=''
401 d_lchown=''
402 d_ldbl_dig=''
403 d_link=''
404 d_locconv=''
405 d_lockf=''
406 d_longdbl=''
407 longdblsize=''
408 d_longlong=''
409 longlongsize=''
410 d_lstat=''
411 d_madvise=''
412 d_mblen=''
413 d_mbstowcs=''
414 d_mbtowc=''
415 d_memchr=''
416 d_memcmp=''
417 d_memcpy=''
418 d_memmove=''
419 d_memset=''
420 d_mkdir=''
421 d_mkfifo=''
422 d_mktime=''
423 d_mmap=''
424 mmaptype=''
425 d_mprotect=''
426 d_msg=''
427 d_msgctl=''
428 d_msgget=''
429 d_msgrcv=''
430 d_msgsnd=''
431 d_msync=''
432 d_munmap=''
433 d_nice=''
434 d_open3=''
435 d_fpathconf=''
436 d_pathconf=''
437 d_pause=''
438 d_pipe=''
439 d_poll=''
440 d_portable=''
441 d_old_pthread_create_joinable=''
442 old_pthread_create_joinable=''
443 d_pthread_yield=''
444 d_sched_yield=''
445 sched_yield=''
446 d_readdir=''
447 d_rewinddir=''
448 d_seekdir=''
449 d_telldir=''
450 d_readlink=''
451 d_readv=''
452 d_rename=''
453 d_rmdir=''
454 d_safebcpy=''
455 d_safemcpy=''
456 d_sanemcmp=''
457 d_select=''
458 d_sem=''
459 d_semctl=''
460 d_semget=''
461 d_semop=''
462 d_setegid=''
463 d_seteuid=''
464 d_setgrent=''
465 d_setgrps=''
466 d_sethent=''
467 d_setlinebuf=''
468 d_setlocale=''
469 d_setnent=''
470 d_setpent=''
471 d_setpgid=''
472 d_setpgrp2=''
473 d_bsdsetpgrp=''
474 d_setpgrp=''
475 d_setprior=''
476 d_setpwent=''
477 d_setregid=''
478 d_setresgid=''
479 d_setresuid=''
480 d_setreuid=''
481 d_setrgid=''
482 d_setruid=''
483 d_setsent=''
484 d_setsid=''
485 d_setspent=''
486 d_setvbuf=''
487 d_sfio=''
488 usesfio=''
489 d_shm=''
490 d_shmat=''
491 d_shmatprototype=''
492 shmattype=''
493 d_shmctl=''
494 d_shmdt=''
495 d_shmget=''
496 d_sigaction=''
497 d_sigsetjmp=''
498 d_cmsghdr_s=''
499 d_msg_ctrunc=''
500 d_msg_dontroute=''
501 d_msg_oob=''
502 d_msg_peek=''
503 d_msg_proxy=''
504 d_msghdr_s=''
505 d_oldsock=''
506 d_recvmsg=''
507 d_scm_rights=''
508 d_sendmsg=''
509 d_socket=''
510 d_sockpair=''
511 sockethdr=''
512 socketlib=''
513 d_statblks=''
514 d_fstatfs=''
515 d_statfs=''
516 d_statfsflags=''
517 d_fstatvfs=''
518 d_statvfs=''
519 d_stdio_cnt_lval=''
520 d_stdio_ptr_lval=''
521 d_stdiobase=''
522 d_stdstdio=''
523 stdio_base=''
524 stdio_bufsiz=''
525 stdio_cnt=''
526 stdio_filbuf=''
527 stdio_ptr=''
528 d_index=''
529 d_strchr=''
530 d_strcoll=''
531 d_strctcpy=''
532 d_strerrm=''
533 d_strerror=''
534 d_sysernlst=''
535 d_syserrlst=''
536 d_strtod=''
537 d_strtol=''
538 d_strtoul=''
539 d_strxfrm=''
540 d_symlink=''
541 d_syscall=''
542 d_sysconf=''
543 d_system=''
544 d_tcgetpgrp=''
545 d_tcsetpgrp=''
546 d_telldirproto=''
547 d_time=''
548 timetype=''
549 clocktype=''
550 d_times=''
551 d_truncate=''
552 d_tzname=''
553 d_umask=''
554 d_semctl_semid_ds=''
555 d_semctl_semun=''
556 d_union_semun=''
557 d_vfork=''
558 usevfork=''
559 d_voidsig=''
560 signal_t=''
561 d_volatile=''
562 d_charvspr=''
563 d_vprintf=''
564 d_wait4=''
565 d_waitpid=''
566 d_wcstombs=''
567 d_wctomb=''
568 d_writev=''
569 dlext=''
570 cccdlflags=''
571 ccdlflags=''
572 dlsrc=''
573 ld=''
574 lddlflags=''
575 usedl=''
576 doublesize=''
577 ebcdic=''
578 fflushNULL=''
579 fflushall=''
580 fpostype=''
581 gidtype=''
582 groupstype=''
583 h_fcntl=''
584 h_sysfile=''
585 i_arpainet=''
586 db_hashtype=''
587 db_prefixtype=''
588 i_db=''
589 i_dbm=''
590 i_rpcsvcdbm=''
591 d_dirnamlen=''
592 direntrytype=''
593 i_dirent=''
594 i_dld=''
595 i_dlfcn=''
596 i_fcntl=''
597 i_float=''
598 i_gdbm=''
599 d_grpasswd=''
600 i_grp=''
601 d_int64t=''
602 i_inttypes=''
603 i_limits=''
604 i_locale=''
605 i_machcthr=''
606 i_malloc=''
607 i_math=''
608 i_memory=''
609 i_mntent=''
610 i_ndbm=''
611 i_netdb=''
612 i_neterrno=''
613 i_netinettcp=''
614 i_niin=''
615 i_sysin=''
616 i_poll=''
617 i_pthread=''
618 d_pwage=''
619 d_pwchange=''
620 d_pwclass=''
621 d_pwcomment=''
622 d_pwexpire=''
623 d_pwgecos=''
624 d_pwpasswd=''
625 d_pwquota=''
626 i_pwd=''
627 i_sfio=''
628 i_shadow=''
629 i_socks=''
630 i_stddef=''
631 i_stdlib=''
632 i_string=''
633 strings=''
634 i_sysaccess=''
635 i_sysdir=''
636 i_sysfile=''
637 d_voidtty=''
638 i_bsdioctl=''
639 i_sysfilio=''
640 i_sysioctl=''
641 i_syssockio=''
642 i_sysmman=''
643 i_sysmount=''
644 i_sysndir=''
645 i_sysparam=''
646 i_sysresrc=''
647 i_syssecrt=''
648 i_sysselct=''
649 i_sysstat=''
650 i_sysstatvfs=''
651 i_systimes=''
652 i_systypes=''
653 d_iovec_s=''
654 i_sysuio=''
655 i_sysun=''
656 i_syswait=''
657 i_sgtty=''
658 i_termio=''
659 i_termios=''
660 i_systime=''
661 i_systimek=''
662 i_time=''
663 timeincl=''
664 i_unistd=''
665 i_utime=''
666 i_values=''
667 i_stdarg=''
668 i_varargs=''
669 i_varhdr=''
670 i_vfork=''
671 installprefix=''
672 installprefixexp=''
673 installstyle=''
674 installusrbinperl=''
675 intsize=''
676 longsize=''
677 shortsize=''
678 d_fpos64_t=''
679 d_llseek=''
680 d_off64_t=''
681 libc=''
682 ldlibpthname=''
683 libperl=''
684 shrpenv=''
685 useshrplib=''
686 glibpth=''
687 libpth=''
688 loclibpth=''
689 plibpth=''
690 xlibpth=''
691 ignore_versioned_solibs=''
692 libs=''
693 lns=''
694 d_PRIEldbl=''
695 d_PRIFldbl=''
696 d_PRIGldbl=''
697 d_PRIeldbl=''
698 d_PRIfldbl=''
699 d_PRIgldbl=''
700 sPRIEldbl=''
701 sPRIFldbl=''
702 sPRIGldbl=''
703 sPRIeldbl=''
704 sPRIfldbl=''
705 sPRIgldbl=''
706 lseeksize=''
707 lseektype=''
708 make_set_make=''
709 d_mymalloc=''
710 freetype=''
711 mallocobj=''
712 mallocsrc=''
713 malloctype=''
714 usemymalloc=''
715 installman1dir=''
716 man1dir=''
717 man1direxp=''
718 man1ext=''
719 installman3dir=''
720 man3dir=''
721 man3direxp=''
722 man3ext=''
723 huge=''
724 large=''
725 medium=''
726 models=''
727 small=''
728 split=''
729 modetype=''
730 multiarch=''
731 mydomain=''
732 myhostname=''
733 phostname=''
734 c=''
735 n=''
736 d_eofnblk=''
737 eagain=''
738 o_nonblock=''
739 rd_nodata=''
740 netdb_hlen_type=''
741 netdb_host_type=''
742 netdb_name_type=''
743 netdb_net_type=''
744 groupcat=''
745 hostcat=''
746 passcat=''
747 orderlib=''
748 ranlib=''
749 package=''
750 spackage=''
751 pager=''
752 apiversion=''
753 patchlevel=''
754 subversion=''
755 version=''
756 perladmin=''
757 perlpath=''
758 pidtype=''
759 prefix=''
760 prefixexp=''
761 installprivlib=''
762 privlib=''
763 privlibexp=''
764 prototype=''
765 ptrsize=''
766 d_PRIX64=''
767 d_PRId64=''
768 d_PRIi64=''
769 d_PRIo64=''
770 d_PRIu64=''
771 d_PRIx64=''
772 sPRIX64=''
773 sPRId64=''
774 sPRIi64=''
775 sPRIo64=''
776 sPRIu64=''
777 sPRIx64=''
778 drand01=''
779 randbits=''
780 randfunc=''
781 randseedtype=''
782 seedfunc=''
783 installscript=''
784 scriptdir=''
785 scriptdirexp=''
786 selectminbits=''
787 selecttype=''
788 sh=''
789 sig_count=''
790 sig_name=''
791 sig_name_init=''
792 sig_num=''
793 sig_num_init=''
794 installsitearch=''
795 sitearch=''
796 sitearchexp=''
797 installsitelib=''
798 sitelib=''
799 sitelibexp=''
800 siteprefix=''
801 siteprefixexp=''
802 sizetype=''
803 so=''
804 sharpbang=''
805 shsharp=''
806 spitshell=''
807 src=''
808 ssizetype=''
809 startperl=''
810 startsh=''
811 stdchar=''
812 d_stdio_stream_array=''
813 stdio_stream_array=''
814 d_strtoull=''
815 sysman=''
816 trnl=''
817 uidtype=''
818 archname64=''
819 use64bits=''
820 uselfs=''
821 uselongdouble=''
822 usemorebits=''
823 usemultiplicity=''
824 nm_opt=''
825 nm_so_opt=''
826 runnm=''
827 usenm=''
828 useperlio=''
829 usesocks=''
830 d_oldpthreads=''
831 usethreads=''
832 incpath=''
833 mips=''
834 mips_type=''
835 usrinc=''
836 d_vendorlib=''
837 installvendorlib=''
838 vendorlib=''
839 vendorlibexp=''
840 usevendorprefix=''
841 vendorprefix=''
842 vendorprefixexp=''
843 defvoidused=''
844 voidflags=''
845 CONFIG=''
846
847 define='define'
848 undef='undef'
849 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
850 rmlist=''
851
852 : We must find out about Eunice early
853 eunicefix=':'
854 if test -f /etc/unixtovms; then
855         eunicefix=/etc/unixtovms
856 fi
857 if test -f /etc/unixtovms.exe; then
858         eunicefix=/etc/unixtovms.exe
859 fi
860
861 i_whoami=''
862 : Possible local include directories to search.
863 : Set locincpth to "" in a hint file to defeat local include searches.
864 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
865 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
866 :
867 : no include file wanted by default
868 inclwanted=''
869
870 : list of known cpp symbols, sorted alphabetically
871 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
872 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
873 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
874 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
875 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
876 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
877 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
878 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
879 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
880 al="$al VMS Xenix286"
881 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
882 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
883 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
884 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
885 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
886 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
887 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
888 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
889 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
890 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
891 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
892 al="$al __SVR4_2__ __UMAXV__"
893 al="$al ____386BSD____ __alpha __alpha__ __amiga"
894 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
895 al="$al __host_mips__"
896 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
897 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
898 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
899 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
900 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
901 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
902 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
903 al="$al __mc88100 __mc88100__ __mips __mips__"
904 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
905 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
906 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
907 al="$al _host_mips _mips _unix"
908 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
909 al="$al apollo ardent att386 att3b"
910 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
911 al="$al cadmus clipper concurrent convex cray ctix"
912 al="$al dmert encore gcos gcx gimpel gould"
913 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
914 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
915 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
916 al="$al i186 i286 i386 i486 i8086"
917 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
918 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
919 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
920 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
921 al="$al mc88000 mc88100 merlin mert mips mvs n16"
922 al="$al ncl_el ncl_mr"
923 al="$al news1500 news1700 news1800 news1900 news3700"
924 al="$al news700 news800 news900 ns16000 ns32000"
925 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
926 al="$al parisc pc532 pdp11 plexus posix pyr"
927 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
928 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
929 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
930 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
931 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
932 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
933 al="$al xenix z8000"
934
935 : Trailing extension.  Override this in a hint file, if needed.
936 _exe=''
937 : Extra object files, if any, needed on this platform.
938 archobjs=''
939 groupstype=''
940 : change the next line if compiling for Xenix/286 on Xenix/386
941 xlibpth='/usr/lib/386 /lib/386'
942
943 : Possible local library directories to search.
944 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
945 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
946
947 : general looking path for locating libraries
948 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
949 glibpth="$glibpth /lib /usr/lib $xlibpth"
950 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
951 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
952
953 : Private path used by Configure to find libraries.  Its value
954 : is prepended to libpth. This variable takes care of special
955 : machines, like the mips.  Usually, it should be empty.
956 plibpth=''
957
958 : default library list
959 libswanted=''
960 : some systems want to use only the non-versioned libso:s
961 ignore_versioned_solibs=''
962 : full support for void wanted by default
963 defvoidused=15
964
965 : set useposix=false in your hint file to disable the POSIX extension.
966 useposix=true
967 : set useopcode=false in your hint file to disable the Opcode extension.
968 useopcode=true
969 : set usemultiplicity on the Configure command line to enable multiplicity.
970 : set usesocks on the Configure command line to enable socks.
971 : set usethreads on the Configure command line to enable threads.
972 : List of libraries we want.
973 : If anyone needs -lnet, put it in a hint file.
974 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
975 libswanted="$libswanted dld ld sun m c cposix posix"
976 libswanted="$libswanted ndir dir crypt sec"
977 libswanted="$libswanted ucb bsd BSD PW x"
978 : We probably want to search /usr/shlib before most other libraries.
979 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
980 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
981 glibpth="/usr/shlib $glibpth"
982 : Do not use vfork unless overridden by a hint file.
983 usevfork=false
984
985 : Find the basic shell for Bourne shell scripts
986 case "$sh" in
987 '')
988         case "$SYSTYPE" in
989         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
990         *) xxx='/bin/sh';;
991         esac
992         if test -f "$xxx"; then
993                 sh="$xxx"
994         else
995                 : Build up a list and do a single loop so we can 'break' out.
996                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
997                 for xxx in sh bash ksh pdksh ash; do
998                         for p in $pth; do
999                                 try="$try ${p}/${xxx}"
1000                         done
1001                 done
1002                 for xxx in $try; do
1003                         if test -f "$xxx"; then
1004                                 sh="$xxx";
1005                                 break
1006                         elif test -f "$xxx.exe"; then
1007                                 sh="$xxx";
1008                                 break
1009                         fi
1010                 done
1011         fi
1012         ;;
1013 esac
1014
1015 case "$sh" in
1016 '')     cat <<EOM >&2
1017 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1018
1019 Usually it's in /bin/sh.  How did you even get this far?
1020 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1021 we'll try to straighten this all out.
1022 EOM
1023         exit 1
1024         ;;
1025 esac
1026
1027 : see if sh knows # comments
1028 if `$sh -c '#' >/dev/null 2>&1`; then
1029         shsharp=true
1030         spitshell=cat
1031         xcat=/bin/cat
1032         test -f $xcat || xcat=/usr/bin/cat
1033         echo "#!$xcat" >try
1034         $eunicefix try
1035         chmod +x try
1036         ./try > today
1037         if test -s today; then
1038                 sharpbang='#!'
1039         else
1040                 echo "#! $xcat" > try
1041                 $eunicefix try
1042                 chmod +x try
1043                 ./try > today
1044                 if test -s today; then
1045                         sharpbang='#! '
1046                 else
1047                         sharpbang=': use '
1048                 fi
1049         fi
1050 else
1051         echo " "
1052         echo "Your $sh doesn't grok # comments--I will strip them later on."
1053         shsharp=false
1054         cd ..
1055         echo "exec grep -v '^[  ]*#'" >spitshell
1056         chmod +x spitshell
1057         $eunicefix spitshell
1058         spitshell=`pwd`/spitshell
1059         cd UU
1060         echo "I presume that if # doesn't work, #! won't work either!"
1061         sharpbang=': use '
1062 fi
1063 rm -f try today
1064
1065 : figure out how to guarantee sh startup
1066 case "$startsh" in
1067 '') startsh=${sharpbang}${sh} ;;
1068 *)
1069 esac
1070 cat >try <<EOSS
1071 $startsh
1072 set abc
1073 test "$?abc" != 1
1074 EOSS
1075
1076 chmod +x try
1077 $eunicefix try
1078 if ./try; then
1079         : echo "Yup, it does."
1080 else
1081         echo "Hmm... '$startsh' does not guarantee sh startup..."
1082         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1083 fi
1084 rm -f try
1085
1086
1087 : Save command line options in file UU/cmdline.opt for later use in
1088 : generating config.sh.
1089 cat > cmdline.opt <<EOSH
1090 # Configure command line arguments.
1091 config_arg0='$0'
1092 config_args='$*'
1093 config_argc=$#
1094 EOSH
1095 argn=1
1096 for arg in "$@"; do
1097         cat >>cmdline.opt <<EOSH
1098 config_arg$argn='$arg'
1099 EOSH
1100         argn=`expr $argn + 1`
1101 done
1102
1103 : produce awk script to parse command line options
1104 cat >options.awk <<'EOF'
1105 BEGIN {
1106         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1107
1108         len = length(optstr);
1109         for (i = 1; i <= len; i++) {
1110                 c = substr(optstr, i, 1);
1111                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1112                 if (a == ":") {
1113                         arg[c] = 1;
1114                         i++;
1115                 }
1116                 opt[c] = 1;
1117         }
1118 }
1119 {
1120         expect = 0;
1121         str = $0;
1122         if (substr(str, 1, 1) != "-") {
1123                 printf("'%s'\n", str);
1124                 next;
1125         }
1126         len = length($0);
1127         for (i = 2; i <= len; i++) {
1128                 c = substr(str, i, 1);
1129                 if (!opt[c]) {
1130                         printf("-%s\n", substr(str, i));
1131                         next;
1132                 }
1133                 printf("-%s\n", c);
1134                 if (arg[c]) {
1135                         if (i < len)
1136                                 printf("'%s'\n", substr(str, i + 1));
1137                         else
1138                                 expect = 1;
1139                         next;
1140                 }
1141         }
1142 }
1143 END {
1144         if (expect)
1145                 print "?";
1146 }
1147 EOF
1148
1149 : process the command line options
1150 set X `for arg in "$@"; do echo "X$arg"; done |
1151         sed -e s/X// | awk -f options.awk`
1152 eval "set $*"
1153 shift
1154 rm -f options.awk
1155
1156 : set up default values
1157 fastread=''
1158 reuseval=false
1159 config_sh=''
1160 alldone=''
1161 error=''
1162 silent=''
1163 extractsh=''
1164 override=''
1165 knowitall=''
1166 rm -f optdef.sh posthint.sh
1167 cat >optdef.sh <<EOS
1168 $startsh
1169 EOS
1170
1171
1172 : option parsing
1173 while test $# -gt 0; do
1174         case "$1" in
1175         -d) shift; fastread=yes;;
1176         -e) shift; alldone=cont;;
1177         -f)
1178                 shift
1179                 cd ..
1180                 if test -r "$1"; then
1181                         config_sh="$1"
1182                 else
1183                         echo "$me: cannot read config file $1." >&2
1184                         error=true
1185                 fi
1186                 cd UU
1187                 shift;;
1188         -h) shift; error=true;;
1189         -r) shift; reuseval=true;;
1190         -s) shift; silent=true; realsilent=true;;
1191         -E) shift; alldone=exit;;
1192         -K) shift; knowitall=true;;
1193         -O) shift; override=true;;
1194         -S) shift; silent=true; extractsh=true;;
1195         -D)
1196                 shift
1197                 case "$1" in
1198                 *=)
1199                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1200                         echo "$me: ignoring -D $1" >&2
1201                         ;;
1202                 *=*) echo "$1" | \
1203                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1204                 *) echo "$1='define'" >> optdef.sh;;
1205                 esac
1206                 shift
1207                 ;;
1208         -U)
1209                 shift
1210                 case "$1" in
1211                 *=) echo "$1" >> optdef.sh;;
1212                 *=*)
1213                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1214                         echo "$me: ignoring -U $1" >&2
1215                         ;;
1216                 *) echo "$1='undef'" >> optdef.sh;;
1217                 esac
1218                 shift
1219                 ;;
1220         -A)
1221             shift
1222             xxx=''
1223             yyy="$1"
1224             zzz=''
1225             uuu=undef
1226             case "$yyy" in
1227             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1228                  case "$zzz" in
1229                  *:*) zzz='' ;;
1230                  *)   xxx=append
1231                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1232                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1233                  esac
1234                  ;;
1235             esac
1236             case "$xxx" in
1237             '')  case "$yyy" in
1238                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1239                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1240                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1241                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1242                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1243                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1244                  esac
1245                  ;;       
1246             esac
1247             case "$xxx" in
1248             append)
1249                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1250             clear)
1251                 echo "$yyy=''"                  >> posthint.sh ;;
1252             define)
1253                 case "$zzz" in
1254                 '') zzz=define ;;
1255                 esac
1256                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1257             eval)
1258                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1259             prepend)
1260                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1261             undef)
1262                 case "$zzz" in
1263                 '') zzz="$uuu" ;;
1264                 esac
1265                 echo "$yyy=$zzz"                >> posthint.sh ;;
1266             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1267             esac
1268             ;;
1269         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1270             exit 0;;
1271         --) break;;
1272         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1273         *) break;;
1274         esac
1275 done
1276
1277 case "$error" in
1278 true)
1279         cat >&2 <<EOM
1280 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1281                  [-U symbol] [-U symbol=] [-A command:symbol...]
1282   -d : use defaults for all answers.
1283   -e : go on without questioning past the production of config.sh.
1284   -f : specify an alternate default configuration file.
1285   -h : print this help message and exit (with an error status).
1286   -r : reuse C symbols value if possible (skips costly nm extraction).
1287   -s : silent mode, only echoes questions and essential information.
1288   -D : define symbol to have some value:
1289          -D symbol         symbol gets the value 'define'
1290          -D symbol=value   symbol gets the value 'value'
1291   -E : stop at the end of questions, after having produced config.sh.
1292   -K : do not use unless you know what you are doing.
1293   -O : let -D and -U override definitions from loaded configuration file.
1294   -S : perform variable substitutions on all .SH files (can mix with -f)
1295   -U : undefine symbol:
1296          -U symbol    symbol gets the value 'undef'
1297          -U symbol=   symbol gets completely empty
1298   -A : manipulate symbol after the platform specific hints have been applied:
1299          -A symbol=value                append " "value to symbol
1300          -A append:symbol=value         append value to symbol
1301          -A define:symbol=value         define symbol to have value
1302          -A clear:symbol                define symbol to be ''
1303          -A define:symbol               define symbol to be 'define'
1304          -A eval:symbol=value           define symbol to be eval of value
1305          -A prepend:symbol=value        prepend value to symbol
1306          -A undef:symbol                define symbol to be 'undef'
1307          -A undef:symbol=               define symbol to be ''
1308   -V : print version number and exit (with a zero status).
1309 EOM
1310         exit 1
1311         ;;
1312 esac
1313
1314 : Sanity checks
1315 case "$fastread$alldone" in
1316 yescont|yesexit) ;;
1317 *)
1318         if test ! -t 0; then
1319                 echo "Say 'sh Configure', not 'sh <Configure'"
1320                 exit 1
1321         fi
1322         ;;
1323 esac
1324
1325 exec 4>&1
1326 case "$silent" in
1327 true) exec 1>/dev/null;;
1328 esac
1329
1330 : run the defines and the undefines, if any, but leave the file out there...
1331 touch optdef.sh
1332 . ./optdef.sh
1333 : create the posthint manipulation script and leave the file out there...
1334 touch posthint.sh
1335
1336 : set package name
1337 package=perl5
1338 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1339 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1340 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1341 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1342 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1343 esac
1344
1345 : Some greps do not return status, grrr.
1346 echo "grimblepritz" >grimble
1347 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1348         contains=contains
1349 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1350         contains=grep
1351 else
1352         contains=contains
1353 fi
1354 rm -f grimble
1355 : the following should work in any shell
1356 case "$contains" in
1357 contains*)
1358         echo " "
1359         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1360         cat >contains <<'EOSS'
1361 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1362 EOSS
1363 chmod +x contains
1364 esac
1365
1366 : Find the path to the source tree
1367 case "$src" in
1368 '') case "$0" in
1369     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1370          case "$src" in
1371          /*)    ;;
1372          *)     src=`cd ../$src && pwd` ;;
1373          esac
1374          ;;
1375     *)   src='.';;
1376     esac;;
1377 esac
1378 case "$src" in
1379 '')     src=/
1380         rsrc=/
1381         ;;
1382 /*) rsrc="$src";;
1383 *) rsrc="../$src";;
1384 esac
1385 if test -f $rsrc/Configure && \
1386         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1387 then
1388    : found it, so we are ok.
1389 else
1390         rsrc=''
1391         for src in . .. ../.. ../../.. ../../../..; do
1392                 if test -f ../$src/Configure && \
1393                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1394                 then
1395                         rsrc=../$src
1396                         break
1397                 fi
1398         done
1399 fi
1400 case "$rsrc" in
1401 '')
1402         cat <<EOM >&4
1403
1404 Sorry, I can't seem to locate the source dir for $package.  Please start
1405 Configure with an explicit path -- i.e. /some/path/Configure.
1406
1407 EOM
1408         exit 1
1409         ;;
1410 ../.)   rsrc='..';;
1411 *)
1412         echo " "
1413         echo "Sources for $package found in \"$src\"." >&4
1414         ;;
1415 esac
1416
1417 : script used to extract .SH files with variable substitutions
1418 cat >extract <<'EOS'
1419 CONFIGDOTSH=true
1420 echo "Doing variable substitutions on .SH files..."
1421 if test -f $src/MANIFEST; then
1422         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1423 else
1424         echo "(Looking for .SH files under the source directory.)"
1425         set x `(cd $src; find . -name "*.SH" -print)`
1426 fi
1427 shift
1428 case $# in
1429 0) set x `(cd $src; echo *.SH)`; shift;;
1430 esac
1431 if test ! -f $src/$1; then
1432         shift
1433 fi
1434 mkdir_p='
1435 name=$1;
1436 create="";
1437 while test $name; do
1438         if test ! -d "$name"; then
1439                 create="$name $create";
1440                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1441                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1442         else
1443                 name="";
1444         fi;
1445 done;
1446 for file in $create; do
1447         mkdir $file;
1448 done
1449 '
1450 for file in $*; do
1451         case "$src" in
1452         ".")
1453                 case "$file" in
1454                 */*)
1455                         dir=`expr X$file : 'X\(.*\)/'`
1456                         file=`expr X$file : 'X.*/\(.*\)'`
1457                         (cd $dir && . ./$file)
1458                         ;;
1459                 *)
1460                         . ./$file
1461                         ;;
1462                 esac
1463                 ;;
1464         *)
1465                 case "$file" in
1466                 */*)
1467                         dir=`expr X$file : 'X\(.*\)/'`
1468                         file=`expr X$file : 'X.*/\(.*\)'`
1469                         (set x $dir; shift; eval $mkdir_p)
1470                         sh <$src/$dir/$file
1471                         ;;
1472                 *)
1473                         sh <$src/$file
1474                         ;;
1475                 esac
1476                 ;;
1477         esac
1478 done
1479 if test -f $src/config_h.SH; then
1480         if test ! -f config.h; then
1481         : oops, they left it out of MANIFEST, probably, so do it anyway.
1482         . $src/config_h.SH
1483         fi
1484 fi
1485 EOS
1486
1487 : extract files and exit if asked to do so
1488 case "$extractsh" in
1489 true)
1490         case "$realsilent" in
1491         true) ;;
1492         *) exec 1>&4;;
1493         esac
1494         case "$config_sh" in
1495         '') config_sh='config.sh';;
1496         esac
1497         echo " "
1498         echo "Fetching answers from $config_sh..."
1499         cd ..
1500         . $config_sh
1501         test "$override" && . ./optdef.sh
1502         echo " "
1503         . UU/extract
1504         rm -rf UU
1505         echo "Done."
1506         exit 0
1507         ;;
1508 esac
1509
1510 : Eunice requires " " instead of "", can you believe it
1511 echo " "
1512 : Here we go...
1513 echo "Beginning of configuration questions for $package."
1514
1515 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1516
1517 : first determine how to suppress newline on echo command
1518 echo " "
1519 echo "Checking echo to see how to suppress newlines..."
1520 (echo "hi there\c" ; echo " ") >.echotmp
1521 if $contains c .echotmp >/dev/null 2>&1 ; then
1522         echo "...using -n."
1523         n='-n'
1524         c=''
1525 else
1526         cat <<'EOM'
1527 ...using \c
1528 EOM
1529         n=''
1530         c='\c'
1531 fi
1532 echo $n "The star should be here-->$c"
1533 echo '*'
1534 rm -f .echotmp
1535
1536 : Now test for existence of everything in MANIFEST
1537 echo " "
1538 if test -f $rsrc/MANIFEST; then
1539         echo "First let's make sure your kit is complete.  Checking..." >&4
1540         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1541         rm -f missing
1542         tmppwd=`pwd`
1543         for filelist in x??; do
1544                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1545         done
1546         if test -s missing; then
1547                 cat missing >&4
1548                 cat >&4 <<'EOM'
1549
1550 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1551
1552 You have the option of continuing the configuration process, despite the
1553 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1554 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1555 and contact the author (perlbug@perl.com).
1556
1557 EOM
1558                 echo $n "Continue? [n] $c" >&4
1559                 read ans
1560                 case "$ans" in
1561                 y*)
1562                         echo "Continuing..." >&4
1563                         rm -f missing
1564                         ;;
1565                 *)
1566                         echo "ABORTING..." >&4
1567                         kill $$
1568                         ;;
1569                 esac
1570         else
1571                 echo "Looks good..."
1572         fi
1573 else
1574         echo "There is no MANIFEST file.  I hope your kit is complete !"
1575 fi
1576 rm -f missing x??
1577
1578 echo " "
1579 : Find the appropriate value for a newline for tr
1580 if test -n "$DJGPP"; then
1581        trnl='\012'
1582 fi
1583 if test X"$trnl" = X; then
1584         case "`echo foo|tr '\n' x 2>/dev/null`" in
1585         foox) trnl='\n' ;;
1586         esac
1587 fi
1588 if test X"$trnl" = X; then
1589         case "`echo foo|tr '\012' x 2>/dev/null`" in
1590         foox) trnl='\012' ;;
1591         esac
1592 fi
1593 if test X"$trnl" = X; then
1594         cat <<EOM >&2
1595
1596 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1597
1598 EOM
1599         exit 1
1600 fi
1601
1602 : compute the number of columns on the terminal for proper question formatting
1603 case "$COLUMNS" in
1604 '') COLUMNS='80';;
1605 esac
1606
1607 : set up the echo used in my read
1608 myecho="case \"\$xxxm\" in
1609 '') echo $n \"\$rp $c\" >&4;;
1610 *) case \"\$rp\" in
1611         '') echo $n \"[\$xxxm] $c\";;
1612         *)
1613                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1614                         echo \"\$rp\" >&4
1615                         echo $n \"[\$xxxm] $c\" >&4
1616                 else
1617                         echo $n \"\$rp [\$xxxm] $c\" >&4
1618                 fi
1619                 ;;
1620         esac;;
1621 esac"
1622
1623 : now set up to do reads with possible shell escape and default assignment
1624 cat <<EOSC >myread
1625 $startsh
1626 xxxm=\$dflt
1627 $myecho
1628 ans='!'
1629 case "\$fastread" in
1630 yes) case "\$dflt" in
1631         '') ;;
1632         *) ans='';
1633                 case "\$silent-\$rp" in
1634                 true-) ;;
1635                 *) echo " " >&4;;
1636                 esac;;
1637         esac;;
1638 *) case "\$silent" in
1639         true) case "\$rp" in
1640                 '') ans='';;
1641                 esac;;
1642         esac;;
1643 esac
1644 while expr "X\$ans" : "X!" >/dev/null; do
1645         read answ
1646         set x \$xxxm
1647         shift
1648         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1649         case  "\$answ" in
1650         "!")
1651                 sh 1>&4
1652                 echo " "
1653                 $myecho
1654                 ;;
1655         !*)
1656                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1657                 shift
1658                 sh 1>&4 -c "\$*"
1659                 echo " "
1660                 $myecho
1661                 ;;
1662         "\$ans")
1663                 case "\$ans" in
1664                 \\&*)
1665                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1666                         shift
1667                         case "\$1" in
1668                         -d)
1669                                 fastread=yes
1670                                 echo "(OK, I'll run with -d after this question.)" >&4
1671                                 ;;
1672                         -*)
1673                                 echo "*** Sorry, \$1 not supported yet." >&4
1674                                 ;;
1675                         esac
1676                         $myecho
1677                         ans=!
1678                         ;;
1679                 esac;;
1680         *)
1681                 case "\$aok" in
1682                 y)
1683                         echo "*** Substitution done -- please confirm."
1684                         xxxm="\$ans"
1685                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1686                         xxxm="\$ans"
1687                         ans=!
1688                         ;;
1689                 *)
1690                         echo "*** Error -- try again."
1691                         ans=!
1692                         ;;
1693                 esac
1694                 $myecho
1695                 ;;
1696         esac
1697         case "\$ans\$xxxm\$nostick" in
1698         '')
1699                 ans=!
1700                 $myecho
1701                 ;;
1702         esac
1703 done
1704 case "\$ans" in
1705 '') ans="\$xxxm";;
1706 esac
1707 EOSC
1708
1709 : create .config dir to save info across Configure sessions
1710 test -d ../.config || mkdir ../.config
1711 cat >../.config/README <<EOF
1712 This directory created by Configure to save information that should
1713 persist across sessions for $package.
1714
1715 You may safely delete it if you wish.
1716 EOF
1717
1718 : general instructions
1719 needman=true
1720 firsttime=true
1721 user=`(logname) 2>/dev/null`
1722 case "$user" in
1723 '') user=`whoami 2>&1`;;
1724 esac
1725 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1726         firsttime=false
1727         echo " "
1728         rp='Would you like to see the instructions?'
1729         dflt=n
1730         . ./myread
1731         case "$ans" in
1732         [yY]*) ;;
1733         *) needman=false;;
1734         esac
1735 fi
1736 if $needman; then
1737         cat <<EOH
1738
1739 This installation shell script will examine your system and ask you questions
1740 to determine how the perl5 package should be installed. If you get
1741 stuck on a question, you may use a ! shell escape to start a subshell or
1742 execute a command.  Many of the questions will have default answers in square
1743 brackets; typing carriage return will give you the default.
1744
1745 On some of the questions which ask for file or directory names you are allowed
1746 to use the ~name construct to specify the login directory belonging to "name",
1747 even if you don't have a shell which knows about that.  Questions where this is
1748 allowed will be marked "(~name ok)".
1749
1750 EOH
1751         rp=''
1752         dflt='Type carriage return to continue'
1753         . ./myread
1754         cat <<'EOH'
1755
1756 The prompter used in this script allows you to use shell variables and
1757 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1758 in the default answer, as if the default line was a set of arguments given to a
1759 script shell.  This means you may also use $* to repeat the whole default line,
1760 so you do not have to re-type everything to add something to the default.
1761
1762 Everytime there is a substitution, you will have to confirm.  If there is an
1763 error (e.g. an unmatched backtick), the default answer will remain unchanged
1764 and you will be prompted again.
1765
1766 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1767 the questions and use the computed defaults (or the previous answers if there
1768 was already a config.sh file). Type 'Configure -h' for a list of options.
1769 You may also start interactively and then answer '& -d' at any prompt to turn
1770 on the non-interactive behaviour for the remainder of the execution.
1771
1772 EOH
1773         . ./myread
1774         cat <<EOH
1775
1776 Much effort has been expended to ensure that this shell script will run on any
1777 Unix system.  If despite that it blows up on yours, your best bet is to edit
1778 Configure and run it again.  If you can't run Configure for some reason,
1779 you'll have to generate a config.sh file by hand.  Whatever problems you
1780 have, let me (perlbug@perl.com) know how I blew it.
1781
1782 This installation script affects things in two ways:
1783
1784 1) it may do direct variable substitutions on some of the files included
1785    in this kit.
1786 2) it builds a config.h file for inclusion in C programs.  You may edit
1787    any of these files as the need arises after running this script.
1788
1789 If you make a mistake on a question, there is no easy way to back up to it
1790 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1791 files.  Configure will offer to let you do this before it runs the SH files.
1792
1793 EOH
1794         dflt='Type carriage return to continue'
1795         . ./myread
1796         case "$firsttime" in
1797         true) echo $user >>../.config/instruct;;
1798         esac
1799 fi
1800
1801 : find out where common programs are
1802 echo " "
1803 echo "Locating common programs..." >&4
1804 cat <<EOSC >loc
1805 $startsh
1806 case \$# in
1807 0) exit 1;;
1808 esac
1809 thing=\$1
1810 shift
1811 dflt=\$1
1812 shift
1813 for dir in \$*; do
1814         case "\$thing" in
1815         .)
1816         if test -d \$dir/\$thing; then
1817                 echo \$dir
1818                 exit 0
1819         fi
1820         ;;
1821         *)
1822         for thisthing in \$dir/\$thing; do
1823                 : just loop through to pick last item
1824         done
1825         if test -f \$thisthing; then
1826                 echo \$thisthing
1827                 exit 0
1828         elif test -f \$dir/\$thing.exe; then
1829                 if test -n "$DJGPP"; then
1830                         echo \$dir/\$thing.exe
1831                 else
1832                         : on Eunice apparently
1833                         echo \$dir/\$thing
1834                 fi
1835                 exit 0
1836         fi
1837         ;;
1838         esac
1839 done
1840 echo \$dflt
1841 exit 1
1842 EOSC
1843 chmod +x loc
1844 $eunicefix loc
1845 loclist="
1846 awk
1847 cat
1848 comm
1849 cp
1850 echo
1851 expr
1852 grep
1853 ls
1854 make
1855 mkdir
1856 rm
1857 sed
1858 sort
1859 touch
1860 tr
1861 uniq
1862 "
1863 trylist="
1864 Mcc
1865 ar
1866 byacc
1867 cpp
1868 csh
1869 date
1870 egrep
1871 gzip
1872 less
1873 ln
1874 more
1875 nm
1876 nroff
1877 pg
1878 test
1879 uname
1880 zip
1881 "
1882 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1883 pth="$pth /lib /usr/lib"
1884 for file in $loclist; do
1885         eval xxx=\$$file
1886         case "$xxx" in
1887         /*|?:[\\/]*)
1888                 if test -f "$xxx"; then
1889                         : ok
1890                 else
1891                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1892                         xxx=`./loc $file $file $pth`
1893                 fi
1894                 ;;
1895         '') xxx=`./loc $file $file $pth`;;
1896         *) xxx=`./loc $xxx $xxx $pth`;;
1897         esac
1898         eval $file=$xxx
1899         eval _$file=$xxx
1900         case "$xxx" in
1901         /*)
1902                 echo $file is in $xxx.
1903                 ;;
1904         ?:[\\/]*)
1905                 echo $file is in $xxx.
1906                 ;;
1907         *)
1908                 echo "I don't know where '$file' is, and my life depends on it." >&4
1909                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1910                 exit 1
1911                 ;;
1912         esac
1913 done
1914 echo " "
1915 echo "Don't worry if any of the following aren't found..."
1916 say=offhand
1917 for file in $trylist; do
1918         eval xxx=\$$file
1919         case "$xxx" in
1920         /*|?:[\\/]*)
1921                 if test -f "$xxx"; then
1922                         : ok
1923                 else
1924                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1925                         xxx=`./loc $file $file $pth`
1926                 fi
1927                 ;;
1928         '') xxx=`./loc $file $file $pth`;;
1929         *) xxx=`./loc $xxx $xxx $pth`;;
1930         esac
1931         eval $file=$xxx
1932         eval _$file=$xxx
1933         case "$xxx" in
1934         /*)
1935                 echo $file is in $xxx.
1936                 ;;
1937         ?:[\\/]*)
1938                 echo $file is in $xxx.
1939                 ;;
1940         *)
1941                 echo "I don't see $file out there, $say."
1942                 say=either
1943                 ;;
1944         esac
1945 done
1946 case "$egrep" in
1947 egrep)
1948         echo "Substituting grep for egrep."
1949         egrep=$grep
1950         ;;
1951 esac
1952 case "$ln" in
1953 ln)
1954         echo "Substituting cp for ln."
1955         ln=$cp
1956         ;;
1957 esac
1958 case "$test" in
1959 test)
1960         echo "Hopefully test is built into your sh."
1961         ;;
1962 *)
1963         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1964                 echo "Using the test built into your sh."
1965                 test=test
1966                 _test=test
1967         fi
1968         ;;
1969 esac
1970 case "$echo" in
1971 echo)
1972         echo "Hopefully echo is built into your sh."
1973         ;;
1974 '') ;;
1975 *)
1976         echo " "
1977 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1978         $echo $n "hi there$c" >foo1
1979         echo $n "hi there$c" >foo2
1980         if cmp foo1 foo2 >/dev/null 2>&1; then
1981                 echo "They are compatible.  In fact, they may be identical."
1982         else
1983                 case "$n" in
1984                 '-n') n='' c='\c';;
1985                 *) n='-n' c='';;
1986                 esac
1987                 cat <<FOO
1988 They are not compatible!  You are probably running ksh on a non-USG system.
1989 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1990 have echo built in and we may have to run some Bourne shell scripts.  That
1991 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1992
1993 FOO
1994                 $echo $n "The star should be here-->$c"
1995                 $echo "*"
1996         fi
1997         $rm -f foo1 foo2
1998         ;;
1999 esac
2000
2001 : determine whether symbolic links are supported
2002 echo " "
2003 $touch blurfl
2004 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2005         echo "Symbolic links are supported." >&4
2006         lns="$ln -s"
2007 else
2008         echo "Symbolic links are NOT supported." >&4
2009         lns="$ln"
2010 fi
2011 $rm -f blurfl sym
2012
2013 : see whether [:lower:] and [:upper:] are supported character classes
2014 echo " "
2015 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2016 ABYZ)
2017         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2018         up='[:upper:]'
2019         low='[:lower:]'
2020         ;;
2021 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2022         # (0xc9 and 0xd1), therefore that is a nice testing point.
2023         if test "X$up" = X -o "X$low" = X; then
2024             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2025             ij) up='[A-Z]'
2026                 low='[a-z]'
2027                 ;;
2028             esac
2029         fi
2030         if test "X$up" = X -o "X$low" = X; then
2031             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2032             ij) up='A-Z'
2033                 low='a-z'
2034                 ;;
2035             esac
2036         fi
2037         if test "X$up" = X -o "X$low" = X; then
2038             case "`echo IJ | od -x 2>/dev/null`" in
2039             *C9D1*|*c9d1*)
2040                 echo "Hey, this might be EBCDIC." >&4
2041                 if test "X$up" = X -o "X$low" = X; then
2042                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2043                     ij) up='[A-IJ-RS-Z]'
2044                         low='[a-ij-rs-z]'
2045                         ;;
2046                     esac
2047                 fi
2048                 if test "X$up" = X -o "X$low" = X; then
2049                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2050                     ij) up='A-IJ-RS-Z'
2051                         low='a-ij-rs-z'
2052                         ;;
2053                     esac
2054                 fi
2055                 ;;
2056             esac
2057         fi
2058 esac
2059 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2060 ij)
2061     echo "Using $up and $low to convert case." >&4
2062     ;;
2063 *)
2064     echo "I don't know how to translate letters from upper to lower case." >&4
2065     echo "Your tr is not acting any way I know of." >&4
2066     exit 1
2067     ;;
2068 esac
2069 : set up the translation script tr, must be called with ./tr of course
2070 cat >tr <<EOSC
2071 $startsh
2072 case "\$1\$2" in
2073 '[A-Z][a-z]') exec $tr '$up' '$low';;
2074 '[a-z][A-Z]') exec $tr '$low' '$up';;
2075 esac
2076 exec $tr "\$@"
2077 EOSC
2078 chmod +x tr
2079 $eunicefix tr
2080
2081 : Try to determine whether config.sh was made on this system
2082 case "$config_sh" in
2083 '')
2084 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2085 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2086 # because the A-Z/a-z are not consecutive.
2087 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2088         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2089 newmyuname="$myuname"
2090 dflt=n
2091 case "$knowitall" in
2092 '')
2093         if test -f ../config.sh; then
2094                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2095                         eval "`grep myuname= ../config.sh`"
2096                 fi
2097                 if test "X$myuname" = "X$newmyuname"; then
2098                         dflt=y
2099                 fi
2100         fi
2101         ;;
2102 *) dflt=y;;
2103 esac
2104
2105 : Get old answers from old config file if Configure was run on the
2106 : same system, otherwise use the hints.
2107 hint=default
2108 cd ..
2109 if test -f config.sh; then
2110         echo " "
2111         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2112         . UU/myread
2113         case "$ans" in
2114         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2115         *)  echo "Fetching default answers from your old config.sh file..." >&4
2116                 tmp_n="$n"
2117                 tmp_c="$c"
2118                 tmp_sh="$sh"
2119                 . ./config.sh
2120                 cp config.sh UU
2121                 n="$tmp_n"
2122                 c="$tmp_c"
2123                 : Older versions did not always set $sh.  Catch re-use of such
2124                 : an old config.sh.
2125                 case "$sh" in
2126                 '') sh="$tmp_sh" ;;
2127                 esac
2128                 hint=previous
2129                 ;;
2130         esac
2131 fi
2132 if test ! -f config.sh; then
2133         $cat <<EOM
2134
2135 First time through, eh?  I have some defaults handy for some systems
2136 that need some extra help getting the Configure answers right:
2137
2138 EOM
2139         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2140         dflt=''
2141         : Half the following guesses are probably wrong... If you have better
2142         : tests or hints, please send them to perlbug@perl.com
2143         : The metaconfig authors would also appreciate a copy...
2144         $test -f /irix && osname=irix
2145         $test -f /xenix && osname=sco_xenix
2146         $test -f /dynix && osname=dynix
2147         $test -f /dnix && osname=dnix
2148         $test -f /lynx.os && osname=lynxos
2149         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2150         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2151         $test -f /bin/mips && /bin/mips && osname=mips
2152         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2153                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2154         $test -d /usr/apollo/bin && osname=apollo
2155         $test -f /etc/saf/_sactab && osname=svr4
2156         $test -d /usr/include/minix && osname=minix
2157         if $test -d /MachTen -o -d /MachTen_Folder; then
2158                 osname=machten
2159                 if $test -x /sbin/version; then
2160                         osvers=`/sbin/version | $awk '{print $2}' |
2161                         $sed -e 's/[A-Za-z]$//'`
2162                 elif $test -x /usr/etc/version; then
2163                         osvers=`/usr/etc/version | $awk '{print $2}' |
2164                         $sed -e 's/[A-Za-z]$//'`
2165                 else
2166                         osvers="$2.$3"
2167                 fi
2168         fi
2169        $test -f /sys/posix.dll &&
2170                $test -f /usr/bin/what &&
2171                set X `/usr/bin/what /sys/posix.dll` &&
2172                $test "$3" = UWIN &&
2173                osname=uwin &&
2174                osvers="$5"
2175         if $test -f $uname; then
2176                 set X $myuname
2177                 shift
2178
2179                 case "$5" in
2180                 fps*) osname=fps ;;
2181                 mips*)
2182                         case "$4" in
2183                         umips) osname=umips ;;
2184                         *) osname=mips ;;
2185                         esac;;
2186                 [23]100) osname=mips ;;
2187                 next*) osname=next ;;
2188                 i386*)
2189                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2190                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2191                                 osname='sco'
2192                                 osvers=$tmp
2193                         elif $test -f /etc/kconfig; then
2194                                 osname=isc
2195                                 if test "$lns" = "$ln -s"; then
2196                                         osvers=4
2197                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2198                                         osvers=3
2199                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2200                                         osvers=2
2201                                 fi
2202                         fi
2203                         tmp=''
2204                         ;;
2205                 pc*)
2206                         if test -n "$DJGPP"; then
2207                                 osname=dos
2208                                 osvers=djgpp
2209                         fi
2210                         ;;
2211                 esac
2212
2213                 case "$1" in
2214                 aix) osname=aix
2215                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2216                         case "$tmp" in
2217                         'not found') osvers="$4"."$3" ;;
2218                         '<3240'|'<>3240') osvers=3.2.0 ;;
2219                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2220                         '=3250'|'>3250') osvers=3.2.5 ;;
2221                         *) osvers=$tmp;;
2222                         esac
2223                         ;;
2224                 *dc.osx) osname=dcosx
2225                         osvers="$3"
2226                         ;;
2227                 dnix) osname=dnix
2228                         osvers="$3"
2229                         ;;
2230                 domainos) osname=apollo
2231                         osvers="$3"
2232                         ;;
2233                 dgux) osname=dgux 
2234                         osvers="$3"
2235                         ;;
2236                 dynixptx*) osname=dynixptx
2237                         osvers=`echo "$4"|sed 's/^v//'`
2238                         ;;
2239                 freebsd) osname=freebsd 
2240                         osvers="$3" ;;
2241                 genix) osname=genix ;;
2242                 hp*) osname=hpux 
2243                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2244                         ;;
2245                 irix*) osname=irix
2246                         case "$3" in
2247                         4*) osvers=4 ;;
2248                         5*) osvers=5 ;;
2249                         *)      osvers="$3" ;;
2250                         esac
2251                         ;;
2252                 linux) osname=linux
2253                         case "$3" in
2254                         *)      osvers="$3" ;;
2255                         esac
2256                         ;;
2257                 MiNT) osname=mint
2258                         ;;
2259                 netbsd*) osname=netbsd
2260                         osvers="$3"
2261                         ;;
2262                 news-os) osvers="$3"
2263                         case "$3" in
2264                         4*) osname=newsos4 ;;
2265                         *) osname=newsos ;;
2266                         esac
2267                         ;;
2268                 bsd386) osname=bsd386
2269                         osvers=`$uname -r`
2270                         ;;
2271                 POSIX-BC | posix-bc ) osname=posix-bc
2272                         osvers="$3"
2273                         ;;
2274                 powerux | power_ux | powermax_os | powermaxos | \
2275                 powerunix | power_unix) osname=powerux
2276                         osvers="$3"
2277                         ;;
2278                 next*) osname=next ;;
2279                 solaris) osname=solaris
2280                         case "$3" in
2281                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2282                         *)      osvers="$3" ;;
2283                         esac
2284                         ;;
2285                 sunos) osname=sunos
2286                         case "$3" in
2287                         5*) osname=solaris
2288                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2289                         *)      osvers="$3" ;;
2290                         esac
2291                         ;;
2292                 titanos) osname=titanos
2293                         case "$3" in
2294                         1*) osvers=1 ;;
2295                         2*) osvers=2 ;;
2296                         3*) osvers=3 ;;
2297                         4*) osvers=4 ;;
2298                         *)      osvers="$3" ;;
2299                         esac
2300                         ;;
2301                 ultrix) osname=ultrix
2302                         osvers="$3"
2303                         ;;
2304                 osf1|mls+)      case "$5" in
2305                                 alpha)
2306                                         osname=dec_osf
2307                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2308                                         ;;
2309                         hp*)    osname=hp_osf1  ;;
2310                         mips)   osname=mips_osf1 ;;
2311                         esac
2312                         ;;
2313                 uts) osname=uts 
2314                         osvers="$3"
2315                         ;;
2316                 qnx) osname=qnx
2317                         osvers="$4"
2318                         ;;
2319                 $2) case "$osname" in
2320                         *isc*) ;;
2321                         *freebsd*) ;;
2322                         svr*)
2323                                 : svr4.x or possibly later
2324                                 case "svr$3" in 
2325                                 ${osname}*)
2326                                         osname=svr$3
2327                                         osvers=$4
2328                                         ;;
2329                                 esac
2330                                 case "$osname" in
2331                                 svr4.0)
2332                                         : Check for ESIX
2333                                         if test -f /stand/boot ; then
2334                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2335                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2336                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2337                                                         if test -n "$isesix"; then
2338                                                                 osname=esix4
2339                                                         fi
2340                                                 fi
2341                                         fi
2342                                         ;;
2343                                 esac
2344                                 ;;
2345                         *)      if test -f /etc/systemid; then
2346                                         osname=sco
2347                                         set `echo $3 | $sed 's/\./ /g'` $4
2348                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2349                                                 osvers=$1.$2.$3
2350                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2351                                                 osvers=$1.$2
2352                                         elif $test -f $src/hints/sco_$1.sh; then
2353                                                 osvers=$1
2354                                         fi
2355                                 else
2356                                         case "$osname" in
2357                                         '') : Still unknown.  Probably a generic Sys V.
2358                                                 osname="sysv"
2359                                                 osvers="$3"
2360                                                 ;;
2361                                         esac
2362                                 fi
2363                                 ;;
2364                         esac
2365                         ;;
2366                 *)      case "$osname" in
2367                         '') : Still unknown.  Probably a generic BSD.
2368                                 osname="$1"
2369                                 osvers="$3"
2370                                 ;;
2371                         esac
2372                         ;;
2373                 esac
2374         else
2375                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2376                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2377                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2378                                 osname=news_os
2379                         fi
2380                         $rm -f UU/kernel.what
2381                 elif test -d c:/.; then
2382                         set X $myuname
2383                         osname=os2
2384                         osvers="$5"
2385                 fi
2386         fi
2387         
2388         : Now look for a hint file osname_osvers, unless one has been
2389         : specified already.
2390         case "$hintfile" in
2391         ''|' ')
2392                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2393                 : Also try without trailing minor version numbers.
2394                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2395                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2396                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2397                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2398                 case "$file" in
2399                 '') dflt=none ;;
2400                 *)  case "$osvers" in
2401                         '') dflt=$file
2402                                 ;;
2403                         *)  if $test -f $src/hints/$file.sh ; then
2404                                         dflt=$file
2405                                 elif $test -f $src/hints/$xfile.sh ; then
2406                                         dflt=$xfile
2407                                 elif $test -f $src/hints/$xxfile.sh ; then
2408                                         dflt=$xxfile
2409                                 elif $test -f $src/hints/$xxxfile.sh ; then
2410                                         dflt=$xxxfile
2411                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2412                                         dflt=$xxxxfile
2413                                 elif $test -f "$src/hints/${osname}.sh" ; then
2414                                         dflt="${osname}"
2415                                 else
2416                                         dflt=none
2417                                 fi
2418                                 ;;
2419                         esac
2420                         ;;
2421                 esac
2422                 if $test -f Policy.sh ; then
2423                         case "$dflt" in
2424                         *Policy*) ;;
2425                         none) dflt="Policy" ;;
2426                         *) dflt="Policy $dflt" ;;
2427                         esac
2428                 fi
2429                 ;;
2430         *)
2431                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2432                 ;;
2433         esac
2434
2435         if $test -f Policy.sh ; then
2436                 $cat <<EOM
2437
2438 There's also a Policy hint file available, which should make the
2439 site-specific (policy) questions easier to answer.
2440 EOM
2441
2442         fi
2443
2444         $cat <<EOM
2445
2446 You may give one or more space-separated answers, or "none" if appropriate.
2447 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2448 is a good thing.  DO NOT give a wrong version or a wrong OS.
2449
2450 EOM
2451
2452         rp="Which of these apply, if any?"
2453         . UU/myread
2454         tans=$ans
2455         for file in $tans; do
2456                 if $test X$file = XPolicy -a -f Policy.sh; then
2457                         . Policy.sh
2458                         $cat Policy.sh >> UU/config.sh
2459                 elif $test -f $src/hints/$file.sh; then
2460                         . $src/hints/$file.sh
2461                         $cat $src/hints/$file.sh >> UU/config.sh
2462                 elif $test X$tans = X -o X$tans = Xnone ; then
2463                         : nothing
2464                 else
2465                         : Give one chance to correct a possible typo.
2466                         echo "$file.sh does not exist"
2467                         dflt=$file
2468                         rp="hint to use instead?"
2469                         . UU/myread
2470                         for file in $ans; do
2471                                 if $test -f "$src/hints/$file.sh"; then
2472                                         . $src/hints/$file.sh
2473                                         $cat $src/hints/$file.sh >> UU/config.sh
2474                                 elif $test X$ans = X -o X$ans = Xnone ; then
2475                                         : nothing
2476                                 else
2477                                         echo "$file.sh does not exist -- ignored."
2478                                 fi
2479                         done
2480                 fi
2481         done
2482
2483         hint=recommended
2484         : Remember our hint file for later.
2485         if $test -f "$src/hints/$file.sh" ; then
2486                 hintfile="$file"
2487         else
2488                 hintfile=''
2489         fi
2490 fi
2491 cd UU
2492 ;;
2493 *)
2494         echo " "
2495         echo "Fetching default answers from $config_sh..." >&4
2496         tmp_n="$n"
2497         tmp_c="$c"
2498         cd ..
2499         cp $config_sh config.sh 2>/dev/null
2500         chmod +w config.sh
2501         . ./config.sh
2502         cd UU
2503         cp ../config.sh .
2504         n="$tmp_n"
2505         c="$tmp_c"
2506         hint=previous
2507         ;;
2508 esac
2509 test "$override" && . ./optdef.sh
2510 myuname="$newmyuname"
2511
2512 : Restore computed paths
2513 for file in $loclist $trylist; do
2514         eval $file="\$_$file"
2515 done
2516
2517 cat << EOM
2518
2519 Configure uses the operating system name and version to set some defaults.
2520 The default value is probably right if the name rings a bell. Otherwise,
2521 since spelling matters for me, either accept the default or answer "none"
2522 to leave it blank.
2523
2524 EOM
2525 case "$osname" in
2526         ''|' ')
2527                 case "$hintfile" in
2528                 ''|' '|none) dflt=none ;;
2529                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2530                 esac
2531                 ;;
2532         *) dflt="$osname" ;;
2533 esac
2534 rp="Operating system name?"
2535 . ./myread
2536 case "$ans" in
2537 none)  osname='' ;;
2538 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2539 esac
2540 echo " "
2541 case "$osvers" in
2542         ''|' ')
2543                 case "$hintfile" in
2544                 ''|' '|none) dflt=none ;;
2545                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2546                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2547                         case "$dflt" in
2548                         ''|' ') dflt=none ;;
2549                         esac
2550                         ;;
2551                 esac
2552                 ;;
2553         *) dflt="$osvers" ;;
2554 esac
2555 rp="Operating system version?"
2556 . ./myread
2557 case "$ans" in
2558 none)  osvers='' ;;
2559 *) osvers="$ans" ;;
2560 esac
2561
2562
2563 . ./posthint.sh
2564
2565 : who configured the system
2566 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2567 cf_by=`(logname) 2>/dev/null`
2568 case "$cf_by" in
2569 "")
2570         cf_by=`(whoami) 2>/dev/null`
2571         case "$cf_by" in
2572         "") cf_by=unknown ;;
2573         esac ;;
2574 esac
2575
2576 : set up the script used to warn in case of inconsistency
2577 cat <<EOS >whoa
2578 $startsh
2579 EOS
2580 cat <<'EOSC' >>whoa
2581 dflt=y
2582 echo " "
2583 echo "*** WHOA THERE!!! ***" >&4
2584 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2585 rp="    Keep the $hint value?"
2586 . ./myread
2587 case "$ans" in
2588 y) td=$was; tu=$was;;
2589 esac
2590 EOSC
2591
2592 : function used to set $1 to $val
2593 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2594 case "$val$was" in
2595 $define$undef) . ./whoa; eval "$var=\$td";;
2596 $undef$define) . ./whoa; eval "$var=\$tu";;
2597 *) eval "$var=$val";;
2598 esac'
2599
2600 cat <<EOM
2601
2602 Perl can be built to take advantage of threads, on some systems.
2603 To do so, Configure must be run with -Dusethreads.
2604
2605 Note that threading is a highly experimental feature, and
2606 some known race conditions still remain.  If you choose to try
2607 it, be very sure to not actually deploy it for production
2608 purposes.  README.threads has more details, and is required
2609 reading if you enable threads.
2610 EOM
2611 case "$usethreads" in
2612 $define|true|[yY]*)     dflt='y';;
2613 *) dflt='n';;
2614 esac
2615 rp='Build a threading Perl?'
2616 . ./myread
2617 case "$ans" in
2618 y|Y)    val="$define" ;;     
2619 *)      val="$undef" ;;
2620 esac
2621 set usethreads
2622 eval $setvar 
2623
2624 case "$d_oldpthreads" in
2625 '')     : Configure tests would be welcome here.  For now, assume undef.
2626         val="$undef" ;;
2627 *)      val="$d_oldpthreads" ;;
2628 esac
2629 set d_oldpthreads
2630 eval $setvar
2631
2632
2633 case "$usethreads" in
2634 "$define"|true|[yY]*)
2635 : Look for a hint-file generated 'call-back-unit'.  If the
2636 : user has specified that a threading perl is to be built,
2637 : we may need to set or change some other defaults.
2638         if $test -f usethreads.cbu; then
2639                 echo "Your platform has some specific hints for threaded builds, using them..."
2640                 . ./usethreads.cbu
2641         else
2642                 $cat <<EOM
2643 (Your platform doesn't have any specific hints for threaded builds.
2644  Assuming POSIX threads, then.)
2645 EOM
2646         fi
2647     ;;
2648 esac
2649
2650 cat <<EOM
2651
2652 Perl can be built so that multiple Perl interpreters can coexist
2653 within the same Perl executable.  To do so, Configure must be run with
2654 -Dusemultiplicity.
2655
2656 Normally you do not need this and you should answer no.
2657
2658 EOM
2659 case "$usemultiplicity" in
2660 $define|true|[yY]*)     dflt='y';;
2661 *) dflt='n';;
2662 esac
2663 rp='Build Perl for multiplicity?'
2664 . ./myread
2665 case "$ans" in
2666 y|Y)    val="$define" ;;     
2667 *)      val="$undef" ;;
2668 esac
2669 set usemultiplicity
2670 eval $setvar 
2671
2672 : determine where manual pages are on this system
2673 echo " "
2674 case "$sysman" in
2675 '') 
2676         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2677         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2678         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2679         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2680         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2681         sysman=`./loc . /usr/man/man1 $syspath`
2682         ;;
2683 esac
2684 if $test -d "$sysman"; then
2685         echo "System manual is in $sysman." >&4
2686 else
2687         echo "Could not find manual pages in source form." >&4
2688 fi
2689
2690 : see what memory models we can support
2691 case "$models" in
2692 '')
2693         $cat >pdp11.c <<'EOP'
2694 int main() {
2695 #ifdef pdp11
2696         exit(0);
2697 #else
2698         exit(1);
2699 #endif
2700 }
2701 EOP
2702         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2703         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2704                 dflt='unsplit split'
2705         else
2706                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2707                 case "$tans" in
2708                 X) dflt='none';;
2709                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2710                                 dflt='small'
2711                         else
2712                                 dflt=''
2713                         fi
2714                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2715                                 dflt="$dflt medium"
2716                         fi
2717                         if $test -d /lib/large || $test -d /usr/lib/large; then
2718                                 dflt="$dflt large"
2719                         fi
2720                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2721                                 dflt="$dflt huge"
2722                         fi
2723                 esac
2724         fi;;
2725 *) dflt="$models";;
2726 esac
2727 $cat <<EOM
2728  
2729 Some systems have different model sizes.  On most systems they are called
2730 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2731 split.  If your system doesn't support different memory models, say "none".
2732 If you wish to force everything to one memory model, say "none" here and
2733 put the appropriate flags later when it asks you for other cc and ld flags.
2734 Venix systems may wish to put "none" and let the compiler figure things out.
2735 (In the following question multiple model names should be space separated.)
2736
2737 The default for most systems is "none".
2738
2739 EOM
2740 rp="Which memory models are supported?"
2741 . ./myread
2742 models="$ans"
2743
2744 case "$models" in
2745 none)
2746         small=''
2747         medium=''
2748         large=''
2749         huge=''
2750         unsplit=''
2751         split=''
2752         ;;
2753 *split)
2754         case "$split" in
2755         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2756                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2757                         dflt='-i'
2758                 else
2759                         dflt='none'
2760                 fi;;
2761         *) dflt="$split";;
2762         esac
2763         rp="What flag indicates separate I and D space?"
2764         . ./myread
2765         tans="$ans"
2766         case "$tans" in
2767         none) tans='';;
2768         esac
2769         split="$tans"
2770         unsplit='';;
2771 *large*|*small*|*medium*|*huge*)
2772         case "$models" in
2773         *large*)
2774                 case "$large" in
2775                 '') dflt='-Ml';;
2776                 *) dflt="$large";;
2777                 esac
2778         rp="What flag indicates large model?"
2779         . ./myread
2780         tans="$ans"
2781         case "$tans" in
2782         none) tans='';
2783         esac
2784         large="$tans";;
2785         *) large='';;
2786         esac
2787         case "$models" in
2788         *huge*) case "$huge" in
2789                 '') dflt='-Mh';;
2790                 *) dflt="$huge";;
2791                 esac
2792                 rp="What flag indicates huge model?"
2793                 . ./myread
2794                 tans="$ans"
2795                 case "$tans" in
2796                 none) tans='';
2797                 esac
2798                 huge="$tans";;
2799         *) huge="$large";;
2800         esac
2801         case "$models" in
2802         *medium*) case "$medium" in
2803                 '') dflt='-Mm';;
2804                 *) dflt="$medium";;
2805                 esac
2806                 rp="What flag indicates medium model?"
2807                 . ./myread
2808                 tans="$ans"
2809                 case "$tans" in
2810                 none) tans='';
2811                 esac
2812                 medium="$tans";;
2813         *) medium="$large";;
2814         esac
2815         case "$models" in
2816         *small*) case "$small" in
2817                 '') dflt='none';;
2818                 *) dflt="$small";;
2819                 esac
2820                 rp="What flag indicates small model?"
2821                 . ./myread
2822                 tans="$ans"
2823                 case "$tans" in
2824                 none) tans='';
2825                 esac
2826                 small="$tans";;
2827         *) small='';;
2828         esac
2829         ;;
2830 *)
2831         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2832         ;;
2833 esac
2834 $rm -f pdp11.* pdp11
2835
2836 : make some quick guesses about what we are up against
2837 echo " "
2838 $echo $n "Hmm...  $c"
2839 echo exit 1 >bsd
2840 echo exit 1 >usg
2841 echo exit 1 >v7
2842 echo exit 1 >osf1
2843 echo exit 1 >eunice
2844 echo exit 1 >xenix
2845 echo exit 1 >venix
2846 echo exit 1 >os2
2847 d_bsd="$undef"
2848 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2849 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2850 then
2851         echo "Looks kind of like an OSF/1 system, but we'll see..."
2852         echo exit 0 >osf1
2853 elif test `echo abc | tr a-z A-Z` = Abc ; then
2854         xxx=`./loc addbib blurfl $pth`
2855         if $test -f $xxx; then
2856         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2857                 echo exit 0 >bsd
2858                 echo exit 0 >usg
2859         else
2860                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2861                         echo "Looks kind of like an extended USG system, but we'll see..."
2862                 else
2863                         echo "Looks kind of like a USG system, but we'll see..."
2864                 fi
2865                 echo exit 0 >usg
2866         fi
2867 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2868         echo "Looks kind of like a BSD system, but we'll see..."
2869         d_bsd="$define"
2870         echo exit 0 >bsd
2871 else
2872         echo "Looks kind of like a Version 7 system, but we'll see..."
2873         echo exit 0 >v7
2874 fi
2875 case "$eunicefix" in
2876 *unixtovms*)
2877         $cat <<'EOI'
2878 There is, however, a strange, musty smell in the air that reminds me of
2879 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2880 EOI
2881         echo exit 0 >eunice
2882         d_eunice="$define"
2883 : it so happens the Eunice I know will not run shell scripts in Unix format
2884         ;;
2885 *)
2886         echo " "
2887         echo "Congratulations.  You aren't running Eunice."
2888         d_eunice="$undef"
2889         ;;
2890 esac
2891 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2892 case "$p_" in
2893 :) ;;
2894 *)
2895         $cat <<'EOI'
2896 I have the feeling something is not exactly right, however...don't tell me...
2897 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2898 EOI
2899         echo exit 0 >os2
2900         ;;
2901 esac
2902 if test -f /xenix; then
2903         echo "Actually, this looks more like a XENIX system..."
2904         echo exit 0 >xenix
2905         d_xenix="$define"
2906 else
2907         echo " "
2908         echo "It's not Xenix..."
2909         d_xenix="$undef"
2910 fi
2911 chmod +x xenix
2912 $eunicefix xenix
2913 if test -f /venix; then
2914         echo "Actually, this looks more like a VENIX system..."
2915         echo exit 0 >venix
2916 else
2917         echo " "
2918         if ./xenix; then
2919                 : null
2920         else
2921                 echo "Nor is it Venix..."
2922         fi
2923 fi
2924 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2925 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2926 $rm -f foo
2927
2928 : see if we need a special compiler
2929 echo " "
2930 if ./usg; then
2931         case "$cc" in
2932         '') case "$Mcc" in
2933                 /*) dflt='Mcc';;
2934                 *) case "$large" in
2935                         -M*) dflt='cc';;
2936                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2937                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2938                                                 dflt='cc'
2939                                         else
2940                                                 dflt='cc -M'
2941                                         fi
2942                                 else
2943                                         dflt='cc'
2944                                 fi;;
2945                         esac;;
2946                 esac;;
2947         *)  dflt="$cc";;
2948         esac
2949         case "$dflt" in
2950         *M*)    $cat <<'EOM'
2951 On some older systems the default C compiler will not resolve multiple global
2952 references that happen to have the same name.  On some such systems the "Mcc"
2953 command may be used to force these to be resolved.  On other systems a "cc -M"
2954 command is required.  (Note that the -M flag on other systems indicates a
2955 memory model to use!) If you have the Gnu C compiler, you might wish to use
2956 that instead.
2957
2958 EOM
2959         ;;
2960         esac
2961         rp="Use which C compiler?"
2962         . ./myread
2963         cc="$ans"
2964 else
2965         case "$cc" in
2966         '') dflt=cc;;
2967         *) dflt="$cc";;
2968         esac
2969         rp="Use which C compiler?"
2970         . ./myread
2971         cc="$ans"
2972 fi
2973 : Look for a hint-file generated 'call-back-unit'.  Now that the
2974 : user has specified the compiler, we may need to set or change some
2975 : other defaults.
2976 if $test -f cc.cbu; then
2977     . ./cc.cbu
2978 fi
2979 echo " "
2980 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2981 $cat >gccvers.c <<EOM
2982 #include <stdio.h>
2983 int main() {
2984 #ifdef __GNUC__
2985 #ifdef __VERSION__
2986         printf("%s\n", __VERSION__);
2987 #else
2988         printf("%s\n", "1");
2989 #endif
2990 #endif
2991         exit(0);
2992 }
2993 EOM
2994 if $cc -o gccvers gccvers.c; then
2995         gccversion=`./gccvers`
2996         case "$gccversion" in
2997         '') echo "You are not using GNU cc." ;;
2998         *)  echo "You are using GNU cc $gccversion." ;;
2999         esac
3000 else
3001         echo " "
3002         echo "*** WHOA THERE!!! ***" >&4
3003         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3004         case "$knowitall" in
3005         '')
3006         echo "    You'd better start hunting for one and let me know about it." >&4
3007                 exit 1
3008                 ;;
3009         esac
3010 fi
3011 $rm -f gccvers*
3012 case "$gccversion" in
3013 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3014 esac
3015
3016
3017 case "$usemorebits" in
3018 "$define"|true|[yY]*)
3019         use64bits="$define"
3020         uselongdouble="$define"
3021         usemorebits="$define"
3022         ;;
3023 *)      usemorebits="$undef"
3024         ;;
3025 esac
3026
3027
3028 cat <<EOM
3029
3030 Perl can be built to understand large files (files larger than 2 gigabytes)
3031 on some systems.  To do so, Configure must be run with -Duselfs.
3032
3033 If this doesn't make any sense to you, just accept the default.
3034 EOM
3035 case "$uselfs" in
3036 "$define"|true|[yY]*) dflt='y' ;;
3037 *)      dflt='n' ;;
3038 esac
3039 rp='Try to understand large files?'
3040 . ./myread
3041 case "$ans" in
3042 y|Y)    val="$define" ;;
3043 *)      val="$undef"  ;;
3044 esac
3045 set uselfs
3046 eval $setvar
3047 case "$uselfs" in
3048 "$define") use64bits="$define" ;;
3049 esac
3050
3051 cat <<EOM
3052
3053 Perl can be built to take advantage of explicit 64-bit interfaces,
3054 on some systems.  To do so, Configure must be run with -Duse64bits.
3055
3056 If this doesn't make any sense to you, just accept the default.
3057 EOM
3058 case "$use64bits" in
3059 $define|true|[yY]*)     dflt='y';;
3060 *) dflt='n';;
3061 esac
3062 rp='Try to use explicit 64-bit interfaces, if available?'
3063 . ./myread
3064 case "$ans" in
3065 y|Y) 
3066         val="$define"
3067         ;;     
3068 *)      
3069         val="$undef"
3070         ;;
3071 esac
3072 set use64bits
3073 eval $setvar
3074
3075 case "$archname64" in
3076 '') archname64='' ;;    # not a typo
3077 esac
3078
3079 case "$use64bits" in
3080 "$define"|true|[yY]*)
3081 : Look for a hint-file generated 'call-back-unit'.  If the
3082 : user has specified that a 64 bit perl is to be built,
3083 : we may need to set or change some other defaults.
3084         if $test -f use64bits.cbu; then
3085                 echo "Your platform has some specific hints for 64-bit builds, using them..."
3086                 . ./use64bits.cbu
3087         else
3088                 $cat <<EOM
3089 (Your platform doesn't have any specific hints for 64-bit builds.
3090  This is probably okay, especially if your system is a true 64-bit system.)
3091 EOM
3092                 case "$gccversion" in
3093                 '')     ;;
3094                 *)      $cat <<EOM
3095 But since you seem to be using gcc,
3096 I will now add -DUSE_LONG_LONG to the compilation flags.
3097 EOM
3098                         ccflags="$ccflags -DUSE_LONG_LONG"
3099                         ;;
3100                 esac
3101         fi
3102         ;;
3103 esac
3104
3105 : determine the architecture name
3106 echo " "
3107 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
3108         tarch=`arch`"-$osname"
3109 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
3110         if uname -m > tmparch 2>&1 ; then
3111                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
3112                         -e 's/$/'"-$osname/" tmparch`
3113         else
3114                 tarch="$osname"
3115         fi
3116         $rm -f tmparch
3117 else
3118         tarch="$osname"
3119 fi
3120 case "$myarchname" in
3121 ''|"$tarch") ;;
3122 *)
3123         echo "(Your architecture name used to be $myarchname.)"
3124         archname=''
3125         ;;
3126 esac
3127 myarchname="$tarch"
3128 case "$archname" in
3129 '') dflt="$tarch";;
3130 *) dflt="$archname";;
3131 esac
3132 rp='What is your architecture name'
3133 . ./myread
3134 archname="$ans"
3135 case "$usethreads" in
3136 $define)
3137         echo "Threads selected." >&4
3138         case "$archname" in
3139         *-thread*) echo "...and architecture name already has -thread." >&4
3140                 ;;
3141         *)      archname="$archname-thread"
3142                 echo "...setting architecture name to $archname." >&4
3143                 ;;
3144         esac
3145         ;;
3146 esac
3147 case "$usemultiplicity" in
3148 $define)
3149         echo "Multiplicity selected." >&4
3150         case "$archname" in
3151         *-multi*) echo "...and architecture name already has -multi." >&4
3152                 ;;
3153         *)      archname="$archname-multi"
3154                 echo "...setting architecture name to $archname." >&4
3155                 ;;
3156         esac
3157         ;;
3158 esac
3159 case "$use64bits" in
3160 $define)
3161         echo "Explicit 64-bitness selected." >&4
3162         case "$archname64" in
3163         '')
3164                 ;;
3165         *)
3166                 case "$archname" in
3167                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
3168                         ;;
3169                 *)      archname="$archname-$archname64"
3170                         echo "...setting architecture name to $archname." >&4
3171                         ;;
3172                 esac
3173                 ;;
3174         esac
3175 esac
3176
3177 : decide how portable to be.  Allow command line overrides.
3178 case "$d_portable" in
3179 "$undef") ;;
3180 *)      d_portable="$define" ;;
3181 esac
3182
3183 : set up shell script to do ~ expansion
3184 cat >filexp <<EOSS
3185 $startsh
3186 : expand filename
3187 case "\$1" in
3188  ~/*|~)
3189         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3190         ;;
3191  ~*)
3192         if $test -f /bin/csh; then
3193                 /bin/csh -f -c "glob \$1"
3194                 failed=\$?
3195                 echo ""
3196                 exit \$failed
3197         else
3198                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3199                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3200                 if $test ! -d "\$dir"; then
3201                         me=\`basename \$0\`
3202                         echo "\$me: can't locate home directory for: \$name" >&2
3203                         exit 1
3204                 fi
3205                 case "\$1" in
3206                 */*)
3207                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3208                         ;;
3209                 *)
3210                         echo \$dir
3211                         ;;
3212                 esac
3213         fi
3214         ;;
3215 *)
3216         echo \$1
3217         ;;
3218 esac
3219 EOSS
3220 chmod +x filexp
3221 $eunicefix filexp
3222
3223 : now set up to get a file name
3224 cat <<EOS >getfile
3225 $startsh
3226 EOS
3227 cat <<'EOSC' >>getfile
3228 tilde=''
3229 fullpath=''
3230 already=''
3231 skip=''
3232 none_ok=''
3233 exp_file=''
3234 nopath_ok=''
3235 orig_rp="$rp"
3236 orig_dflt="$dflt"
3237 case "$gfpth" in
3238 '') gfpth='.' ;;
3239 esac
3240
3241 case "$fn" in
3242 *\(*)
3243         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3244         fn=`echo $fn | sed 's/(.*)//'`
3245         ;;
3246 esac
3247
3248 case "$fn" in
3249 *:*)
3250         loc_file=`expr $fn : '.*:\(.*\)'`
3251         fn=`expr $fn : '\(.*\):.*'`
3252         ;;
3253 esac
3254
3255 case "$fn" in
3256 *~*) tilde=true;;
3257 esac
3258 case "$fn" in
3259 */*) fullpath=true;;
3260 esac
3261 case "$fn" in
3262 *+*) skip=true;;
3263 esac
3264 case "$fn" in
3265 *n*) none_ok=true;;
3266 esac
3267 case "$fn" in
3268 *e*) exp_file=true;;
3269 esac
3270 case "$fn" in
3271 *p*) nopath_ok=true;;
3272 esac
3273
3274 case "$fn" in
3275 *f*) type='File';;
3276 *d*) type='Directory';;
3277 *l*) type='Locate';;
3278 esac
3279
3280 what="$type"
3281 case "$what" in
3282 Locate) what='File';;
3283 esac
3284
3285 case "$exp_file" in
3286 '')
3287         case "$d_portable" in
3288         "$define") ;;
3289         *) exp_file=true;;
3290         esac
3291         ;;
3292 esac
3293
3294 cd ..
3295 while test "$type"; do
3296         redo=''
3297         rp="$orig_rp"
3298         dflt="$orig_dflt"
3299         case "$tilde" in
3300         true) rp="$rp (~name ok)";;
3301         esac
3302         . UU/myread
3303         if test -f UU/getfile.ok && \
3304                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3305         then
3306                 value="$ans"
3307                 ansexp="$ans"
3308                 break
3309         fi
3310         case "$ans" in
3311         none)
3312                 value=''
3313                 ansexp=''
3314                 case "$none_ok" in
3315                 true) type='';;
3316                 esac
3317                 ;;
3318         *)
3319                 case "$tilde" in
3320                 '') value="$ans"
3321                         ansexp="$ans";;
3322                 *)
3323                         value=`UU/filexp $ans`
3324                         case $? in
3325                         0)
3326                                 if test "$ans" != "$value"; then
3327                                         echo "(That expands to $value on this system.)"
3328                                 fi
3329                                 ;;
3330                         *) value="$ans";;
3331                         esac
3332                         ansexp="$value"
3333                         case "$exp_file" in
3334                         '') value="$ans";;
3335                         esac
3336                         ;;
3337                 esac
3338                 case "$fullpath" in
3339                 true)
3340                         case "$ansexp" in
3341                         /*) value="$ansexp" ;;
3342                         *)
3343                                 redo=true
3344                                 case "$already" in
3345                                 true)
3346                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3347                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3348                                         ;;
3349                                 *)
3350                                 echo "Please give a full path name, starting with slash." >&4
3351                                         case "$tilde" in
3352                                         true)
3353                                 echo "Note that using ~name is ok provided it expands well." >&4
3354                                                 already=true
3355                                                 ;;
3356                                         esac
3357                                 esac
3358                                 ;;
3359                         esac
3360                         ;;
3361                 esac
3362                 case "$redo" in
3363                 '')
3364                         case "$type" in
3365                         File)
3366                                 for fp in $gfpth; do
3367                                         if test "X$fp" = X.; then
3368                                             pf="$ansexp"
3369                                         else    
3370                                             pf="$fp/$ansexp"
3371                                         fi
3372                                         if test -f "$pf"; then
3373                                                 type=''
3374                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3375                                         then
3376                                                 echo "($value is not a plain file, but that's ok.)"
3377                                                 type=''
3378                                         fi
3379                                         if test X"$type" = X; then
3380                                             value="$pf"
3381                                             break
3382                                         fi
3383                                 done
3384                                 ;;
3385                         Directory)
3386                                 for fp in $gfpth; do
3387                                         if test "X$fp" = X.; then
3388                                             pf="$ansexp"
3389                                         else    
3390                                             pf="$fp/$ansexp"
3391                                         fi
3392                                         if test -d "$pf"; then
3393                                                 type=''
3394                                                 value="$pf"
3395                                                 break
3396                                         fi
3397                                 done
3398                                 ;;
3399                         Locate)
3400                                 if test -d "$ansexp"; then
3401                                         echo "(Looking for $loc_file in directory $value.)"
3402                                         value="$value/$loc_file"
3403                                         ansexp="$ansexp/$loc_file"
3404                                 fi
3405                                 if test -f "$ansexp"; then
3406                                         type=''
3407                                 fi
3408                                 case "$nopath_ok" in
3409                                 true)   case "$value" in
3410                                         */*) ;;
3411                                         *)      echo "Assuming $value will be in people's path."
3412                                                 type=''
3413                                                 ;;
3414                                         esac
3415                                         ;;
3416                                 esac
3417                                 ;;
3418                         esac
3419
3420                         case "$skip" in
3421                         true) type='';
3422                         esac
3423
3424                         case "$type" in
3425                         '') ;;
3426                         *)
3427                                 if test "$fastread" = yes; then
3428                                         dflt=y
3429                                 else
3430                                         dflt=n
3431                                 fi
3432                                 rp="$what $value doesn't exist.  Use that name anyway?"
3433                                 . UU/myread
3434                                 dflt=''
3435                                 case "$ans" in
3436                                 y*) type='';;
3437                                 *) echo " ";;
3438                                 esac
3439                                 ;;
3440                         esac
3441                         ;;
3442                 esac
3443                 ;;
3444         esac
3445 done
3446 cd UU
3447 ans="$value"
3448 rp="$orig_rp"
3449 dflt="$orig_dflt"
3450 rm -f getfile.ok
3451 test "X$gfpthkeep" != Xy && gfpth=""
3452 EOSC
3453
3454 : determine root of directory hierarchy where package will be installed.
3455 case "$prefix" in
3456 '')
3457         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3458         ;;
3459 *)
3460         dflt="$prefix"
3461         ;;
3462 esac
3463 $cat <<EOM
3464
3465 By default, $package will be installed in $dflt/bin, manual pages
3466 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3467 installation directories. Typically this is something like /usr/local.
3468 If you wish to have binaries under /usr/bin but other parts of the
3469 installation under /usr/local, that's ok: you will be prompted
3470 separately for each of the installation directories, the prefix being
3471 only used to set the defaults.
3472
3473 EOM
3474 fn=d~
3475 rp='Installation prefix to use?'
3476 . ./getfile
3477 oldprefix=''
3478 case "$prefix" in
3479 '') ;;
3480 *)
3481         case "$ans" in
3482         "$prefix") ;;
3483         *) oldprefix="$prefix";;
3484         esac
3485         ;;
3486 esac
3487 prefix="$ans"
3488 prefixexp="$ansexp"
3489
3490 : is AFS running?
3491 echo " "
3492 case "$afs" in
3493 $define|true)   afs=true ;;
3494 $undef|false)   afs=false ;;
3495 *)      if test -d /afs; then
3496                 afs=true
3497         else
3498                 afs=false
3499         fi
3500         ;;
3501 esac
3502 if $afs; then
3503         echo "AFS may be running... I'll be extra cautious then..." >&4
3504 else
3505         echo "AFS does not seem to be running..." >&4
3506 fi
3507
3508 : determine installation prefix for where package is to be installed.
3509 if $afs; then 
3510 $cat <<EOM
3511
3512 Since you are running AFS, I need to distinguish the directory in which
3513 files will reside from the directory in which they are installed (and from
3514 which they are presumably copied to the former directory by occult means).
3515
3516 EOM
3517         case "$installprefix" in
3518         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3519         *) dflt="$installprefix";;
3520         esac
3521 else
3522 $cat <<EOM
3523
3524 In some special cases, particularly when building $package for distribution,
3525 it is convenient to distinguish between the directory in which files should 
3526 be installed from the directory ($prefix) in which they 
3527 will eventually reside.  For most users, these two directories are the same.
3528
3529 EOM
3530         case "$installprefix" in
3531         '') dflt=$prefix ;;
3532         *) dflt=$installprefix;;
3533         esac
3534 fi
3535 fn=d~
3536 rp='What installation prefix should I use for installing files?'
3537 . ./getfile
3538 installprefix="$ans"
3539 installprefixexp="$ansexp"
3540
3541 : set the prefixit variable, to compute a suitable default value
3542 prefixit='case "$3" in
3543 ""|none)
3544         case "$oldprefix" in
3545         "") eval "$1=\"\$$2\"";;
3546         *)
3547                 case "$3" in
3548                 "") eval "$1=";;
3549                 none)
3550                         eval "tp=\"\$$2\"";
3551                         case "$tp" in
3552                         ""|" ") eval "$1=\"\$$2\"";;
3553                         *) eval "$1=";;
3554                         esac;;
3555                 esac;;
3556         esac;;
3557 *)
3558         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3559         case "$tp" in
3560         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3561         /*-$oldprefix/*|\~*-$oldprefix/*)
3562                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3563         *) eval "$1=\"\$$2\"";;
3564         esac;;
3565 esac'
3566
3567 : set the base revision
3568 baserev=5.0
3569
3570 : get the patchlevel
3571 echo " "
3572 echo "Getting the current patchlevel..." >&4
3573 if $test -r $rsrc/patchlevel.h;then
3574         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3575         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3576 else
3577         patchlevel=0
3578         subversion=0
3579 fi
3580 $echo $n "(You have $package" $c
3581 case "$package" in
3582 "*$baserev")    ;;
3583 *)              $echo $n " $baserev" $c ;;
3584 esac
3585 $echo $n " patchlevel $patchlevel" $c
3586 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3587 echo ".)"
3588
3589 if test 0 -eq "$subversion"; then
3590         version=`LC_ALL=C; export LC_ALL; \
3591                  echo $baserev $patchlevel | \
3592                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3593 else
3594         version=`LC_ALL=C; export LC_ALL; \
3595                  echo $baserev $patchlevel $subversion | \
3596                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3597 fi
3598 : Figure out perl API version.  Perhaps this should be in patchlevel.h
3599 if test "$subversion" -lt 50; then
3600         apiversion=`LC_ALL=C; export LC_ALL; \
3601                  LANGUAGE=C; export LANGUAGE; \
3602                  echo $baserev $patchlevel | \
3603                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3604 else
3605         apiversion="$version"
3606 fi
3607
3608 : determine installation style
3609 : For now, try to deduce it from prefix unless it is already set.
3610 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
3611 case "$installstyle" in
3612 '')     case "$prefix" in
3613                 *perl*) dflt='lib';;
3614                 *) dflt='lib/perl5' ;;
3615         esac
3616         ;;
3617 *)      dflt='lib/perl5' ;;
3618 esac
3619 : Probably not worth prompting for this since we prompt for all
3620 : the directories individually, and the prompt would be too long and
3621 : confusing anyway.
3622 installstyle=$dflt
3623
3624 : determine where private library files go
3625 : Usual default is /usr/local/lib/perl5/$version.
3626 : Also allow things like /opt/perl/lib/$version, since 
3627 : /opt/perl/lib/perl5... would be redundant.
3628 : The default "style" setting is made in installstyle.U
3629 case "$installstyle" in
3630 *lib/perl5*) set dflt privlib lib/$package/$version ;;
3631 *)       set dflt privlib lib/$version ;;
3632 esac
3633 eval $prefixit
3634 $cat <<EOM
3635
3636 There are some auxiliary files for $package that need to be put into a
3637 private library directory that is accessible by everyone.
3638
3639 EOM
3640 fn=d~+
3641 rp='Pathname where the private library files will reside?'
3642 . ./getfile
3643 privlib="$ans"
3644 privlibexp="$ansexp"
3645 : Change installation prefix, if necessary.
3646 if $test X"$prefix" != X"$installprefix"; then
3647         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
3648 else
3649         installprivlib="$privlibexp"
3650 fi
3651
3652 : set the prefixup variable, to restore leading tilda escape
3653 prefixup='case "$prefixexp" in
3654 "$prefix") ;;
3655 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3656 esac'
3657
3658 : determine where public architecture dependent libraries go
3659 set archlib archlib
3660 eval $prefixit
3661 : privlib default is /usr/local/lib/$package/$version
3662 : archlib default is /usr/local/lib/$package/$version/$archname
3663 : privlib may have an optional trailing /share.
3664 tdflt=`echo $privlib | $sed 's,/share$,,'`
3665 tdflt=$tdflt/$archname
3666 case "$archlib" in
3667 '')     dflt=$tdflt
3668         ;;
3669 *)      dflt="$archlib"
3670     ;;
3671 esac
3672 $cat <<EOM
3673
3674 $spackage contains architecture-dependent library files.  If you are
3675 sharing libraries in a heterogeneous environment, you might store
3676 these files in a separate location.  Otherwise, you can just include
3677 them with the rest of the public library files.
3678
3679 EOM
3680 fn=d+~
3681 rp='Where do you want to put the public architecture-dependent libraries?'
3682 . ./getfile
3683 archlib="$ans"
3684 archlibexp="$ansexp"
3685 if $test X"$archlib" = X"$privlib"; then
3686         d_archlib="$undef"
3687 else
3688         d_archlib="$define"
3689 fi
3690 : Change installation prefix, if necessary.
3691 if $test X"$prefix" != X"$installprefix"; then
3692         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
3693 else
3694         installarchlib="$archlibexp"
3695 fi
3696
3697
3698 : Binary compatibility with 5.005 is not possible for builds
3699 : with advanced features
3700 case "$usethreads$usemultiplicity" in
3701 *define*)
3702         bincompat5005="$undef"
3703         d_bincompat5005="$undef"
3704         ;;
3705 *)      $cat <<EOM
3706
3707 Perl 5.006 can be compiled for binary compatibility with 5.005.
3708 If you decide to do so, you will be able to continue using most
3709 of the extensions that were compiled for Perl 5.005.
3710
3711 EOM
3712         case "$bincompat5005$d_bincompat5005" in
3713         *"$undef"*) dflt=n ;;
3714         *) dflt=y ;;
3715         esac
3716         rp='Binary compatibility with Perl 5.005?'
3717         . ./myread
3718         case "$ans" in
3719         y*) val="$define" ;;
3720         *)  val="$undef" ;;
3721         esac
3722         set d_bincompat5005
3723         eval $setvar
3724         case "$d_bincompat5005" in
3725         "$define")
3726                 bincompat5005="$define"
3727                 ;;
3728         *)      bincompat5005="$undef"
3729                 d_bincompat5005="$undef"
3730                 ;;
3731         esac
3732         ;;
3733 esac
3734
3735
3736 : see if setuid scripts can be secure
3737 $cat <<EOM
3738
3739 Some kernels have a bug that prevents setuid #! scripts from being
3740 secure.  Some sites have disabled setuid #! scripts because of this.
3741
3742 First let's decide if your kernel supports secure setuid #! scripts.
3743 (If setuid #! scripts would be secure but have been disabled anyway,
3744 don't say that they are secure if asked.)
3745
3746 EOM
3747
3748 val="$undef"
3749 if $test -d /dev/fd; then
3750         echo "#!$ls" >reflect
3751         chmod +x,u+s reflect
3752         ./reflect >flect 2>&1
3753         if $contains "/dev/fd" flect >/dev/null; then
3754                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3755                 val="$define"
3756         else
3757                 $cat <<EOM
3758 If you are not sure if they are secure, I can check but I'll need a
3759 username and password different from the one you are using right now.
3760 If you don't have such a username or don't want me to test, simply
3761 enter 'none'.
3762
3763 EOM
3764                 rp='Other username to test security of setuid scripts with?'
3765                 dflt='none'
3766                 . ./myread
3767                 case "$ans" in
3768                 n|none)
3769                         case "$d_suidsafe" in
3770                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3771                                 dflt=n;;
3772                         "$undef")
3773                                 echo "Well, the $hint value is *not* secure." >&4
3774                                 dflt=n;;
3775                         *)      echo "Well, the $hint value *is* secure." >&4
3776                                 dflt=y;;
3777                         esac
3778                         ;;
3779                 *)
3780                         $rm -f reflect flect
3781                         echo "#!$ls" >reflect
3782                         chmod +x,u+s reflect
3783                         echo >flect
3784                         chmod a+w flect
3785                         echo '"su" will (probably) prompt you for '"$ans's password."
3786                         su $ans -c './reflect >flect'
3787                         if $contains "/dev/fd" flect >/dev/null; then
3788                                 echo "Okay, it looks like setuid scripts are secure." >&4
3789                                 dflt=y
3790                         else
3791                                 echo "I don't think setuid scripts are secure." >&4
3792                                 dflt=n
3793                         fi
3794                         ;;
3795                 esac
3796                 rp='Does your kernel have *secure* setuid scripts?'
3797                 . ./myread
3798                 case "$ans" in
3799                 [yY]*)  val="$define";;
3800                 *)      val="$undef";;
3801                 esac
3802         fi
3803 else
3804         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3805         echo "(That's for file descriptors, not floppy disks.)"
3806         val="$undef"
3807 fi
3808 set d_suidsafe
3809 eval $setvar
3810
3811 $rm -f reflect flect
3812
3813 : now see if they want to do setuid emulation
3814 echo " "
3815 val="$undef"
3816 case "$d_suidsafe" in
3817 "$define")
3818         val="$undef"
3819         echo "No need to emulate SUID scripts since they are secure here." >& 4
3820         ;;
3821 *)
3822         $cat <<EOM
3823 Some systems have disabled setuid scripts, especially systems where
3824 setuid scripts cannot be secure.  On systems where setuid scripts have
3825 been disabled, the setuid/setgid bits on scripts are currently
3826 useless.  It is possible for $package to detect those bits and emulate
3827 setuid/setgid in a secure fashion.  This emulation will only work if
3828 setuid scripts have been disabled in your kernel.
3829
3830 EOM
3831         case "$d_dosuid" in
3832         "$define") dflt=y ;;
3833         *) dflt=n ;;
3834         esac
3835         rp="Do you want to do setuid/setgid emulation?"
3836         . ./myread
3837         case "$ans" in
3838         [yY]*)  val="$define";;
3839         *)      val="$undef";;
3840         esac
3841         ;;
3842 esac
3843 set d_dosuid
3844 eval $setvar
3845
3846 : What should the include directory be ?
3847 echo " "
3848 $echo $n "Hmm...  $c"
3849 dflt='/usr/include'
3850 incpath=''
3851 mips_type=''
3852 if $test -f /bin/mips && /bin/mips; then
3853         echo "Looks like a MIPS system..."
3854         $cat >usr.c <<'EOCP'
3855 #ifdef SYSTYPE_BSD43
3856 /bsd43
3857 #endif
3858 EOCP
3859         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3860                 dflt='/bsd43/usr/include'
3861                 incpath='/bsd43'
3862                 mips_type='BSD 4.3'
3863         else
3864                 mips_type='System V'
3865         fi
3866         $rm -f usr.c usr.out
3867         echo "and you're compiling with the $mips_type compiler and libraries."
3868         xxx_prompt=y
3869         echo "exit 0" >mips
3870 else
3871         echo "Doesn't look like a MIPS system."
3872         xxx_prompt=n
3873         echo "exit 1" >mips
3874 fi
3875 chmod +x mips
3876 $eunicefix mips
3877 case "$usrinc" in
3878 '') ;;
3879 *) dflt="$usrinc";;
3880 esac
3881 case "$xxx_prompt" in
3882 y)      fn=d/
3883         echo " "
3884         rp='Where are the include files you want to use?'
3885         . ./getfile
3886         usrinc="$ans"
3887         ;;
3888 *)      usrinc="$dflt"
3889         ;;
3890 esac
3891
3892 : see how we invoke the C preprocessor
3893 echo " "
3894 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3895 cat <<'EOT' >testcpp.c
3896 #define ABC abc
3897 #define XYZ xyz
3898 ABC.XYZ
3899 EOT
3900 cd ..
3901 if test ! -f cppstdin; then
3902         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3903                 # AIX cc -E doesn't show the absolute headerfile
3904                 # locations but we'll cheat by using the -M flag.
3905                 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
3906         else
3907                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3908         fi
3909 else
3910         echo "Keeping your $hint cppstdin wrapper."
3911 fi
3912 chmod 755 cppstdin
3913 wrapper=`pwd`/cppstdin
3914 ok='false'
3915 cd UU
3916
3917 if $test "X$cppstdin" != "X" && \
3918         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3919         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3920 then
3921         echo "You used to use $cppstdin $cppminus so we'll use that again."
3922         case "$cpprun" in
3923         '') echo "But let's see if we can live without a wrapper..." ;;
3924         *)
3925                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3926                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3927                 then
3928                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3929                         ok='true'
3930                 else
3931                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3932                 fi
3933                 ;;
3934         esac
3935 else
3936         case "$cppstdin" in
3937         '') ;;
3938         *)
3939                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3940                 ;;
3941         esac
3942 fi
3943
3944 if $ok; then
3945         : nothing
3946 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3947         $cc -E <testcpp.c >testcpp.out 2>&1; \
3948         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3949         echo "Yup, it does."
3950         x_cpp="$cc -E"
3951         x_minus='';
3952 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3953         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3954         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3955         echo "Yup, it does."
3956         x_cpp="$cc -E"
3957         x_minus='-';
3958 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3959         $cc -P <testcpp.c >testcpp.out 2>&1; \
3960         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3961         echo "Yipee, that works!"
3962         x_cpp="$cc -P"
3963         x_minus='';
3964 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3965         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3966         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3967         echo "At long last!"
3968         x_cpp="$cc -P"
3969         x_minus='-';
3970 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3971         $cpp <testcpp.c >testcpp.out 2>&1; \
3972         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3973         echo "It works!"
3974         x_cpp="$cpp"
3975         x_minus='';
3976 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3977         $cpp - <testcpp.c >testcpp.out 2>&1; \
3978         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3979         echo "Hooray, it works!  I was beginning to wonder."
3980         x_cpp="$cpp"
3981         x_minus='-';
3982 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3983         $wrapper <testcpp.c >testcpp.out 2>&1; \
3984         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3985         x_cpp="$wrapper"
3986         x_minus=''
3987         echo "Eureka!"
3988 else
3989         dflt=''
3990         rp="No dice.  I can't find a C preprocessor.  Name one:"
3991         . ./myread
3992         x_cpp="$ans"
3993         x_minus=''
3994         $x_cpp <testcpp.c >testcpp.out 2>&1
3995         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3996                 echo "OK, that will do." >&4
3997         else
3998 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3999                 exit 1
4000         fi
4001 fi
4002
4003 case "$ok" in
4004 false)
4005         cppstdin="$x_cpp"
4006         cppminus="$x_minus"
4007         cpprun="$x_cpp"
4008         cpplast="$x_minus"
4009         set X $x_cpp
4010         shift
4011         case "$1" in
4012         "$cpp")
4013                 echo "Perhaps can we force $cc -E using a wrapper..."
4014                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4015                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4016                 then
4017                         echo "Yup, we can."
4018                         cppstdin="$wrapper"
4019                         cppminus='';
4020                 else
4021                         echo "Nope, we'll have to live without it..."
4022                 fi
4023                 ;;
4024         esac
4025         case "$cpprun" in
4026         "$wrapper")
4027                 cpprun=''
4028                 cpplast=''
4029                 ;;
4030         esac
4031         ;;
4032 esac
4033
4034 case "$cppstdin" in
4035 "$wrapper"|'cppstdin') ;;
4036 *) $rm -f $wrapper;;
4037 esac
4038 $rm -f testcpp.c testcpp.out
4039
4040 : Set private lib path
4041 case "$plibpth" in
4042 '') if ./mips; then
4043                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4044         fi;;
4045 esac
4046 case "$libpth" in
4047 ' ') dlist='';;
4048 '') dlist="$loclibpth $plibpth $glibpth";;
4049 *) dlist="$libpth";;
4050 esac
4051
4052 : Now check and see which directories actually exist, avoiding duplicates
4053 libpth=''
4054 for xxx in $dlist
4055 do
4056     if $test -d $xxx; then
4057                 case " $libpth " in
4058                 *" $xxx "*) ;;
4059                 *) libpth="$libpth $xxx";;
4060                 esac
4061     fi
4062 done
4063 $cat <<'EOM'
4064
4065 Some systems have incompatible or broken versions of libraries.  Among
4066 the directories listed in the question below, please remove any you
4067 know not to be holding relevant libraries, and add any that are needed.
4068 Say "none" for none.
4069
4070 EOM
4071 case "$libpth" in
4072 '') dflt='none';;
4073 *)
4074         set X $libpth
4075         shift
4076         dflt=${1+"$@"}
4077         ;;
4078 esac
4079 rp="Directories to use for library searches?"
4080 . ./myread
4081 case "$ans" in
4082 none) libpth=' ';;
4083 *) libpth="$ans";;
4084 esac
4085
4086 : compute shared library extension
4087 case "$so" in
4088 '')
4089         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4090                 dflt='sl'
4091         else
4092                 dflt='so'
4093         fi
4094         ;;
4095 *) dflt="$so";;
4096 esac
4097 $cat <<EOM
4098
4099 On some systems, shared libraries may be available.  Answer 'none' if
4100 you want to suppress searching of shared libraries for the remaining
4101 of this configuration.
4102
4103 EOM
4104 rp='What is the file extension used for shared libraries?'
4105 . ./myread
4106 so="$ans"
4107
4108 : Define several unixisms.
4109 : Hints files or command line option can be used to override them.
4110 : The convoluted testing is in case hints files set either the old
4111 : or the new name.
4112 case "$_exe" in
4113 '')     case "$exe_ext" in
4114     '') ;;
4115         *)      _exe="$exe_ext" ;;
4116         esac
4117         ;;
4118 esac
4119 case "$_a" in
4120 '')     case "$lib_ext" in
4121     '') _a='.a';;
4122         *)      _a="$lib_ext" ;;
4123         esac
4124         ;;
4125 esac
4126 case "$_o" in
4127 '') case "$obj_ext" in
4128         '')     _o='.o';;
4129         *)      _o="$obj_ext";;
4130         esac
4131         ;;
4132 esac
4133 case "$p_" in
4134 '') case "$path_sep" in
4135         '')     p_=':';;
4136         *)      p_="$path_sep";;
4137         esac
4138         ;;
4139 esac
4140 exe_ext=$_exe
4141 lib_ext=$_a
4142 obj_ext=$_o
4143 path_sep=$p_
4144
4145 : Which makefile gets called first.  This is used by make depend.
4146 case "$firstmakefile" in
4147 '') firstmakefile='makefile';;
4148 esac
4149
4150 cat <<EOM
4151
4152 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4153 Configure must be run with -Dusesocks.
4154
4155 Normally you do not need this and you should answer no.
4156
4157 EOM
4158 case "$usesocks" in
4159 $define|true|[yY]*)     dflt='y';;
4160 *) dflt='n';;
4161 esac
4162 rp='Build Perl for SOCKS?'
4163 . ./myread
4164 case "$ans" in
4165 y|Y)    val="$define" ;;     
4166 *)      val="$undef" ;;
4167 esac
4168 set usesocks
4169 eval $setvar
4170
4171 : Looking for optional libraries
4172 echo " "
4173 echo "Checking for optional libraries..." >&4
4174 case "$libs" in
4175 ' '|'') dflt='';;
4176 *) dflt="$libs";;
4177 esac
4178 case "$libswanted" in
4179 '') libswanted='c_s';;
4180 esac
4181 case "$usesocks" in
4182 $define)
4183         libswanted="$libswanted socks5 socks5_sh"
4184         ;;
4185 esac
4186 for thislib in $libswanted; do
4187         
4188         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
4189                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4190                 echo "Found -l$thislib (shared)."
4191                 case " $dflt " in
4192                 *"-l$thislib "*);;
4193                 *) dflt="$dflt -l$thislib";;
4194                 esac
4195         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4196                 echo "Found -l$thislib (shared)."
4197                 case " $dflt " in
4198                 *"-l$thislib "*);;
4199                 *) dflt="$dflt -l$thislib";;
4200                 esac
4201         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
4202                 echo "Found -l$thislib."
4203                 case " $dflt " in
4204                 *"-l$thislib "*);;
4205                 *) dflt="$dflt -l$thislib";;
4206                 esac
4207         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
4208                 echo "Found -l$thislib."
4209                 case " $dflt " in
4210                 *"-l$thislib "*);;
4211                 *) dflt="$dflt -l$thislib";;
4212                 esac
4213         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
4214                 echo "Found -l${thislib}_s."
4215                 case " $dflt " in
4216                 *"-l$thislib "*);;
4217                 *) dflt="$dflt -l${thislib}_s";;
4218                 esac
4219         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
4220                 echo "Found -l$thislib."
4221                 case " $dflt " in
4222                 *"-l$thislib "*);;
4223                 *) dflt="$dflt -l$thislib";;
4224                 esac
4225         else
4226                 echo "No -l$thislib."
4227         fi
4228 done
4229 set X $dflt
4230 shift
4231 dflt="$*"
4232 case "$libs" in
4233 '') dflt="$dflt";;
4234 *) dflt="$libs";;
4235 esac
4236 case "$dflt" in
4237 ' '|'') dflt='none';;
4238 esac
4239
4240 $cat <<EOM
4241
4242 In order to compile $package on your machine, a number of libraries
4243 are usually needed.  Include any other special libraries here as well.
4244 Say "none" for none.  The default list is almost always right.
4245 EOM
4246
4247 echo " "
4248 rp="What libraries to use?"
4249 . ./myread
4250 case "$ans" in
4251 none) libs=' ';;
4252 *) libs="$ans";;
4253 esac
4254
4255 : determine optimization, if desired, or use for debug flag also
4256 case "$optimize" in
4257 ' '|$undef) dflt='none';;
4258 '') dflt='-O';;
4259 *) dflt="$optimize";;
4260 esac
4261 $cat <<EOH
4262
4263 By default, $package compiles with the -O flag to use the optimizer.
4264 Alternately, you might want to use the symbolic debugger, which uses
4265 the -g flag (on traditional Unix systems).  Either flag can be
4266 specified here.  To use neither flag, specify the word "none".
4267
4268 EOH
4269 rp="What optimizer/debugger flag should be used?"
4270 . ./myread
4271 optimize="$ans"
4272 case "$optimize" in
4273 'none') optimize=" ";;
4274 esac
4275
4276 dflt=''
4277 : We will not override a previous value, but we might want to
4278 : augment a hint file
4279 case "$hint" in
4280 default|recommended)
4281         case "$gccversion" in
4282         1*) dflt='-fpcc-struct-return' ;;
4283         esac
4284         case "$optimize" in
4285         *-g*) dflt="$dflt -DDEBUGGING";;
4286         esac
4287         case "$gccversion" in
4288         2*) if test -d /etc/conf/kconfig.d &&
4289                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4290                 then
4291                         dflt="$dflt -posix"
4292                 fi
4293                 ;;
4294         esac
4295         case "$gccversion" in
4296         1*) ;;
4297         2.[0-8]*) ;;
4298         ?*)     echo " "
4299                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4300                 echo 'int main(void) { return 0; }' > gcctest.c
4301                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4302                         echo "Yes, it does." 2>&1
4303                         case "$ccflags" in
4304                         *strict-aliasing*) 
4305                                 echo "Leaving current flags $ccflags alone." 2>&1
4306                                 ;;
4307                         *) dflt="$dflt -fno-strict-aliasing" ;;
4308                         esac
4309                 else
4310                         echo "Nope, it doesn't, but that's ok." 2>&1
4311                 fi
4312                 ;;
4313         esac
4314         ;;
4315 esac
4316
4317 case "$mips_type" in
4318 *BSD*|'') inclwanted="$locincpth $usrinc";;
4319 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4320 esac
4321 for thisincl in $inclwanted; do
4322         if $test -d $thisincl; then
4323                 if $test x$thisincl != x$usrinc; then
4324                         case "$dflt" in
4325                         *$thisincl*);;
4326                         *) dflt="$dflt -I$thisincl";;
4327                         esac
4328                 fi
4329         fi
4330 done
4331
4332 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4333         xxx=true;
4334 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4335         xxx=true;
4336 else
4337         xxx=false;
4338 fi;
4339 if $xxx; then
4340         case "$dflt" in
4341         *$2*);;
4342         *) dflt="$dflt -D$2";;
4343         esac;
4344 fi'
4345
4346 set signal.h LANGUAGE_C; eval $inctest
4347
4348 case "$usesocks" in
4349 $define)
4350         ccflags="$ccflags -DSOCKS"
4351         ;;
4352 esac
4353
4354 case "$hint" in
4355 default|recommended) dflt="$ccflags $dflt" ;;
4356 *) dflt="$ccflags";;
4357 esac
4358
4359 case "$dflt" in
4360 ''|' ') dflt=none;;
4361 esac
4362 $cat <<EOH
4363
4364 Your C compiler may want other flags.  For this question you should include
4365 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4366 but you should NOT include libraries or ld flags like -lwhatever.  If you
4367 want $package to honor its debug switch, you should include -DDEBUGGING here.
4368 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4369
4370 To use no flags, specify the word "none".
4371
4372 EOH
4373 set X $dflt
4374 shift
4375 dflt=${1+"$@"}
4376 rp="Any additional cc flags?"
4377 . ./myread
4378 case "$ans" in
4379 none) ccflags='';;
4380 *) ccflags="$ans";;
4381 esac
4382
4383 : the following weeds options from ccflags that are of no interest to cpp
4384 cppflags="$ccflags"
4385 case "$gccversion" in
4386 1*) cppflags="$cppflags -D__GNUC__"
4387 esac
4388 case "$mips_type" in
4389 '');;
4390 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4391 esac
4392 case "$cppflags" in
4393 '');;
4394 *)
4395         echo " "
4396         echo "Let me guess what the preprocessor flags are..." >&4
4397         set X $cppflags
4398         shift
4399         cppflags=''
4400         $cat >cpp.c <<'EOM'
4401 #define BLURFL foo
4402
4403 BLURFL xx LFRULB
4404 EOM
4405         previous=''
4406         for flag in $*
4407         do
4408                 case "$flag" in
4409                 -*) ftry="$flag";;
4410                 *) ftry="$previous $flag";;
4411                 esac
4412                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4413                         >cpp1.out 2>/dev/null && \
4414                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4415                         >cpp2.out 2>/dev/null && \
4416                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4417                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4418                 then
4419                         cppflags="$cppflags $ftry"
4420                         previous=''
4421                 else
4422                         previous="$flag"
4423                 fi
4424         done
4425         set X $cppflags
4426         shift
4427         cppflags=${1+"$@"}
4428         case "$cppflags" in
4429         *-*)  echo "They appear to be: $cppflags";;
4430         esac
4431         $rm -f cpp.c cpp?.out
4432         ;;
4433 esac
4434
4435 : flags used in final linking phase
4436 case "$ldflags" in
4437 '') if ./venix; then
4438                 dflt='-i -z'
4439         else
4440                 dflt=''
4441         fi
4442         case "$ccflags" in
4443         *-posix*) dflt="$dflt -posix" ;;
4444         esac
4445         ;;
4446 *) dflt="$ldflags";;
4447 esac
4448
4449 : Try to guess additional flags to pick up local libraries.
4450 for thislibdir in $libpth; do
4451         case " $loclibpth " in
4452         *" $thislibdir "*)
4453                 case "$dflt " in 
4454                 *"-L$thislibdir "*) ;;
4455                 *)  dflt="$dflt -L$thislibdir" ;;
4456                 esac
4457                 ;;
4458         esac
4459 done
4460
4461 case "$dflt" in
4462 '') dflt='none' ;;
4463 esac
4464
4465 $cat <<EOH
4466
4467 Your C linker may need flags.  For this question you should
4468 include -L/whatever and any other flags used by the C linker, but you
4469 should NOT include libraries like -lwhatever.
4470
4471 Make sure you include the appropriate -L/path flags if your C linker
4472 does not normally search all of the directories you specified above,
4473 namely
4474         $libpth
4475 To use no flags, specify the word "none".
4476
4477 EOH
4478
4479 rp="Any additional ld flags (NOT including libraries)?"
4480 . ./myread
4481 case "$ans" in
4482 none) ldflags='';;
4483 *) ldflags="$ans";;
4484 esac
4485 rmlist="$rmlist pdp11"
4486
4487 : coherency check
4488 echo " "
4489 echo "Checking your choice of C compiler and flags for coherency..." >&4
4490 $cat > try.c <<'EOF'
4491 #include <stdio.h>
4492 int main() { printf("Ok\n"); exit(0); }
4493 EOF
4494 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4495 shift
4496 $cat >try.msg <<'EOM'
4497 I've tried to compile and run the following simple program:
4498
4499 EOM
4500 $cat try.c >> try.msg
4501
4502 $cat >> try.msg <<EOM
4503
4504 I used the command:
4505
4506         $*
4507         ./try
4508
4509 and I got the following output:
4510
4511 EOM
4512 dflt=y
4513 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4514         if sh -c './try' >>try.msg 2>&1; then
4515                 xxx=`./try`
4516                 case "$xxx" in
4517                 "Ok") dflt=n ;;
4518                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4519                         case " $libs " in
4520                         *" -lsfio "*)
4521                                 cat >> try.msg <<'EOQS'
4522 If $libs contains -lsfio, and sfio is mis-configured, then it
4523 sometimes (apparently) runs and exits with a 0 status, but with no
4524 output!  It may have to do with sfio's use of _exit vs. exit.
4525
4526 EOQS
4527                                 rp="You have a big problem.  Shall I abort Configure"
4528                                 dflt=y
4529                                 ;;
4530                         esac
4531                         ;;
4532                 esac
4533         else
4534                 echo "The program compiled OK, but exited with status $?." >>try.msg
4535                 rp="You have a problem.  Shall I abort Configure"
4536                 dflt=y
4537         fi
4538 else
4539         echo "I can't compile the test program." >>try.msg
4540         rp="You have a BIG problem.  Shall I abort Configure"
4541         dflt=y
4542 fi
4543 case "$dflt" in
4544 y)
4545         $cat try.msg >&4
4546         case "$knowitall" in
4547         '')
4548                 echo "(The supplied flags or libraries might be incorrect.)"
4549                 ;;
4550         *) dflt=n;;
4551         esac
4552         echo " "
4553         . ./myread
4554         case "$ans" in
4555         n*|N*) ;;
4556         *)      echo "Ok.  Stopping Configure." >&4
4557                 exit 1
4558                 ;;
4559         esac
4560         ;;
4561 n) echo "OK, that should do.";;
4562 esac
4563 $rm -f try try.* core
4564
4565 : determine filename position in cpp output
4566 echo " "
4567 echo "Computing filename position in cpp output for #include directives..." >&4
4568 echo '#include <stdio.h>' > foo.c
4569 $cat >fieldn <<EOF
4570 $startsh
4571 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4572 $grep '^[       ]*#.*stdio\.h' | \
4573 while read cline; do
4574         pos=1
4575         set \$cline
4576         while $test \$# -gt 0; do
4577                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4578                         echo "\$pos"
4579                         exit 0
4580                 fi
4581                 shift
4582                 pos=\`expr \$pos + 1\`
4583         done
4584 done
4585 EOF
4586 chmod +x fieldn
4587 fieldn=`./fieldn`
4588 $rm -f foo.c fieldn
4589 case $fieldn in
4590 '') pos='???';;
4591 1) pos=first;;
4592 2) pos=second;;
4593 3) pos=third;;
4594 *) pos="${fieldn}th";;
4595 esac
4596 echo "Your cpp writes the filename in the $pos field of the line."
4597
4598 : locate header file
4599 $cat >findhdr <<EOF
4600 $startsh
4601 wanted=\$1
4602 name=''
4603 for usrincdir in $usrinc
4604 do
4605         if test -f \$usrincdir/\$wanted; then
4606                 echo "\$usrincdir/\$wanted"
4607                 exit 0
4608         fi
4609 done
4610 awkprg='{ print \$$fieldn }'
4611 echo "#include <\$wanted>" > foo\$\$.c
4612 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4613 $grep "^[       ]*#.*\$wanted" | \
4614 while read cline; do
4615         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4616         case "\$name" in
4617         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4618         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4619         *) exit 2;;
4620         esac;
4621 done;
4622 #
4623 # status = 0: grep returned 0 lines, case statement not executed
4624 # status = 1: headerfile found
4625 # status = 2: while loop executed, no headerfile found
4626 #
4627 status=\$?
4628 $rm -f foo\$\$.c;
4629 if test \$status -eq 1; then
4630         exit 0;
4631 fi
4632 exit 1
4633 EOF
4634 chmod +x findhdr
4635
4636 : define an alternate in-header-list? function
4637 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4638 cont=true; xxf="echo \"<\$1> found.\" >&4";
4639 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4640 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4641 esac;
4642 case $# in 4) instead=instead;; *) instead="at last";; esac;
4643 while $test "$cont"; do
4644         xxx=`./findhdr $1`
4645         var=$2; eval "was=\$$2";
4646         if $test "$xxx" && $test -r "$xxx";
4647         then eval $xxf;
4648         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4649                 cont="";
4650         else eval $xxnf;
4651         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4652         set $yyy; shift; shift; yyy=$@;
4653         case $# in 0) cont="";;
4654         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4655                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4656         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4657                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4658         esac;
4659 done;
4660 while $test "$yyy";
4661 do set $yyy; var=$2; eval "was=\$$2";
4662         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4663         set $yyy; shift; shift; yyy=$@;
4664 done'
4665
4666 : see if this is a malloc.h system
4667 set malloc.h i_malloc
4668 eval $inhdr
4669
4670 : see if stdlib is available
4671 set stdlib.h i_stdlib
4672 eval $inhdr
4673
4674 : determine which malloc to compile in
4675 echo " "
4676 case "$usemymalloc" in
4677 ''|[yY]*|true|$define)  dflt='y' ;;
4678 *)      dflt='n' ;;
4679 esac
4680 rp="Do you wish to attempt to use the malloc that comes with $package?"
4681 . ./myread
4682 usemymalloc="$ans"
4683 case "$ans" in
4684 y*|true)
4685         usemymalloc='y'
4686         mallocsrc='malloc.c'
4687         mallocobj="malloc$_o"
4688         d_mymalloc="$define"
4689         case "$libs" in
4690         *-lmalloc*)
4691                 : Remove malloc from list of libraries to use
4692                 echo "Removing unneeded -lmalloc from library list" >&4
4693                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4694                 shift
4695                 libs="$*"
4696                 echo "libs = $libs" >&4
4697                 ;;
4698         esac
4699         ;;
4700 *)
4701         usemymalloc='n'
4702         mallocsrc=''
4703         mallocobj=''
4704         d_mymalloc="$undef"
4705         ;;
4706 esac
4707
4708 : compute the return types of malloc and free
4709 echo " "
4710 $cat >malloc.c <<END
4711 #$i_malloc I_MALLOC
4712 #$i_stdlib I_STDLIB
4713 #include <stdio.h>
4714 #include <sys/types.h>
4715 #ifdef I_MALLOC
4716 #include <malloc.h>
4717 #endif
4718 #ifdef I_STDLIB
4719 #include <stdlib.h>
4720 #endif
4721 #ifdef TRY_MALLOC
4722 void *malloc();
4723 #endif
4724 #ifdef TRY_FREE
4725 void free();
4726 #endif
4727 END
4728 case "$malloctype" in
4729 '')
4730         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4731                 malloctype='void *'
4732         else
4733                 malloctype='char *'
4734         fi
4735         ;;
4736 esac
4737 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4738
4739 case "$freetype" in
4740 '')
4741         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4742                 freetype='void'
4743         else
4744                 freetype='int'
4745         fi
4746         ;;
4747 esac
4748 echo "Your system uses $freetype free(), it would seem." >&4
4749 $rm -f malloc.[co]
4750 $cat <<EOM
4751
4752 The installation process will also create a directory for
4753 vendor-supplied add-ons.  Vendors who supply perl with their system
4754 may find it convenient to place all vendor-supplied files in this
4755 directory rather than in the main distribution directory.  This will
4756 ease upgrades between binary-compatible maintenance versions of perl.
4757
4758 Of course you may also use these directories in whatever way you see
4759 fit.  For example, you might use them to access modules shared over a
4760 company-wide network.
4761
4762 The default answer should be fine for most people.
4763 This causes further questions about vendor add-ons to be skipped
4764 and no vendor-specific directories will be configured for perl.
4765
4766 EOM
4767 rp='Do you want to configure vendor-specific add-on directories?'
4768 case "$usevendorprefix" in
4769 define|true|[yY]*) dflt=y ;;
4770 *) dflt=n ;;
4771 esac
4772 . ./myread
4773 case "$ans" in
4774 [yY]*)  fn=d~+
4775         rp='Installation prefix to use for vendor-supplied add-ons?'
4776         case "$vendorprefix" in
4777         '') dflt='' ;;
4778         *)  dflt=$vendorprefix ;;
4779         esac
4780         . ./getfile
4781         oldvendorprefix=''
4782         case "$vendorprefix" in
4783         '') ;;
4784         *)      case "$ans" in
4785                 "$prefix") ;;
4786                 *) oldvendorprefix="$prefix";;
4787                 esac
4788                 ;;
4789         esac
4790         usevendorprefix="$define"
4791         vendorprefix="$ans"
4792         vendorprefixexp="$ansexp"
4793         ;;
4794 *)      usevendorprefix="$undef"
4795         vendorprefix=''
4796         vendorprefixexp=''
4797         ;;
4798 esac
4799
4800 case "$vendorprefix" in
4801 '')     d_vendorlib="$undef"
4802         vendorlib=''
4803         vendorlibexp=''
4804         ;;
4805 *)      d_vendorlib="$define"
4806         : determine where vendor-supplied modules go.
4807         : Usual default is /usr/local/lib/perl5/vendor_perl
4808         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
4809         case "$installstyle" in
4810         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog ;;
4811         *)           dflt=$vendorprefix/lib/vendor_$prog ;;
4812         esac
4813         fn=d~+
4814         rp='Pathname for the vendor-supplied library files?'
4815         . ./getfile
4816         vendorlib="$ans"
4817         vendorlibexp="$ansexp"
4818         : Change installation prefix, if necessary.
4819         if $test X"$prefix" != X"$installprefix"; then
4820                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
4821         else
4822                 installvendorlib="$vendorlibexp"
4823         fi
4824         ;;
4825 esac
4826
4827 : Cruising for prototypes
4828 echo " "
4829 echo "Checking out function prototypes..." >&4
4830 $cat >prototype.c <<'EOCP'
4831 int main(int argc, char *argv[]) {
4832         exit(0);}
4833 EOCP
4834 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4835         echo "Your C compiler appears to support function prototypes."
4836         val="$define"
4837 else
4838         echo "Your C compiler doesn't seem to understand function prototypes."
4839         val="$undef"
4840 fi
4841 set prototype
4842 eval $setvar
4843 $rm -f prototype*
4844
4845 case "$prototype" in
4846 "$define") ;;
4847 *)      ansi2knr='ansi2knr'
4848         echo " "
4849         cat <<EOM >&4
4850
4851 $me:  FATAL ERROR:
4852 This version of $package can only be compiled by a compiler that 
4853 understands function prototypes.  Unfortunately, your C compiler 
4854         $cc $ccflags
4855 doesn't seem to understand them.  Sorry about that.
4856
4857 If GNU cc is available for your system, perhaps you could try that instead.  
4858
4859 Eventually, we hope to support building Perl with pre-ANSI compilers.
4860 If you would like to help in that effort, please contact <perlbug@perl.org>.
4861
4862 Aborting Configure now.
4863 EOM
4864         exit 2
4865         ;;
4866 esac
4867
4868 : determine where public executables go
4869 echo " "
4870 set dflt bin bin
4871 eval $prefixit
4872 fn=d~
4873 rp='Pathname where the public executables will reside?'
4874 . ./getfile
4875 if $test "X$ansexp" != "X$binexp"; then
4876         installbin=''
4877 fi
4878 bin="$ans"
4879 binexp="$ansexp"
4880 : Change installation prefix, if necessary.
4881 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
4882 if $test X"$prefix" != X"$installprefix"; then
4883         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
4884 else
4885         installbin="$binexp"
4886 fi
4887
4888 : determine whether to install perl also as /usr/bin/perl
4889
4890 echo " "
4891 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4892         $cat <<EOM
4893 Many scripts expect to perl to be installed as /usr/bin/perl.
4894 I can install the perl you are about to compile also as /usr/bin/perl
4895 (in addition to $installbin/perl).
4896 EOM
4897         case "$installusrbinperl" in
4898         "$undef"|[nN]*) dflt='n';;
4899         *)              dflt='y';;
4900         esac
4901         rp="Do you want to install perl as /usr/bin/perl?"
4902         . ./myread
4903         case "$ans" in
4904         [yY]*)  val="$define";;
4905         *)      val="$undef" ;;
4906         esac
4907 else
4908         val="$undef"
4909 fi
4910 set installusrbinperl
4911 eval $setvar
4912
4913 : define a shorthand compile call
4914 compile='
4915 mc_file=$1;
4916 shift;
4917 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4918 : define a shorthand compile call for compilations that should be ok.
4919 compile_ok='
4920 mc_file=$1;
4921 shift;
4922 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4923
4924 echo " "
4925 echo "Checking for GNU C Library..." >&4
4926 cat >gnulibc.c <<EOM
4927 #include <stdio.h>
4928 int main()
4929 {
4930 #ifdef __GLIBC__
4931     exit(0);
4932 #else
4933     exit(1);
4934 #endif
4935 }
4936 EOM
4937 set gnulibc
4938 if eval $compile_ok && ./gnulibc; then
4939         val="$define"
4940         echo "You are using the GNU C Library"
4941 else
4942         val="$undef"
4943         echo "You are not using the GNU C Library"
4944 fi
4945 $rm -f gnulibc*
4946 set d_gnulibc
4947 eval $setvar
4948
4949 : see if nm is to be used to determine whether a symbol is defined or not
4950 case "$usenm" in
4951 '')
4952         dflt=''
4953         case "$d_gnulibc" in
4954         "$define")
4955                 echo " "
4956                 echo "nm probably won't work on the GNU C Library." >&4
4957                 dflt=n
4958                 ;;
4959         esac
4960         case "$dflt" in
4961         '') 
4962                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4963                         echo " "
4964                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4965                         echo "'nm' won't be sufficient on this sytem." >&4
4966                         dflt=n
4967                 fi
4968                 ;;
4969         esac
4970         case "$dflt" in
4971         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4972                 if $test $dflt -gt 20; then
4973                         dflt=y
4974                 else
4975                         dflt=n
4976                 fi
4977                 ;;
4978         esac
4979         ;;
4980 *)
4981         case "$usenm" in
4982         true|$define) dflt=y;;
4983         *) dflt=n;;
4984         esac
4985         ;;
4986 esac
4987 $cat <<EOM
4988
4989 I can use $nm to extract the symbols from your C libraries. This
4990 is a time consuming task which may generate huge output on the disk (up
4991 to 3 megabytes) but that should make the symbols extraction faster. The
4992 alternative is to skip the 'nm' extraction part and to compile a small
4993 test program instead to determine whether each symbol is present. If
4994 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4995 this may be the best solution.
4996
4997 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4998
4999 EOM
5000 rp="Shall I use $nm to extract C symbols from the libraries?"
5001 . ./myread
5002 case "$ans" in
5003 [Nn]*) usenm=false;;
5004 *) usenm=true;;
5005 esac
5006
5007 runnm=$usenm
5008 case "$reuseval" in
5009 true) runnm=false;;
5010 esac
5011
5012 : nm options which may be necessary
5013 case "$nm_opt" in
5014 '') if $test -f /mach_boot; then
5015                 nm_opt=''       # Mach
5016         elif $test -d /usr/ccs/lib; then
5017                 nm_opt='-p'     # Solaris (and SunOS?)
5018         elif $test -f /dgux; then
5019                 nm_opt='-p'     # DG-UX
5020         elif $test -f /lib64/rld; then
5021                 nm_opt='-p'     # 64-bit Irix
5022         else
5023                 nm_opt=''
5024         fi;;
5025 esac
5026
5027 : nm options which may be necessary for shared libraries but illegal
5028 : for archive libraries.  Thank you, Linux.
5029 case "$nm_so_opt" in
5030 '')     case "$myuname" in
5031         *linux*)
5032                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5033                         nm_so_opt='--dynamic'
5034                 fi
5035                 ;;
5036         esac
5037         ;;
5038 esac
5039
5040 case "$runnm" in
5041 true)
5042 : get list of predefined functions in a handy place
5043 echo " "
5044 case "$libc" in
5045 '') libc=unknown
5046         case "$libs" in
5047         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5048         esac
5049         ;;
5050 esac
5051 libnames='';
5052 case "$libs" in
5053 '') ;;
5054 *)  for thislib in $libs; do
5055         case "$thislib" in
5056         -lc|-lc_s)
5057                 : Handle C library specially below.
5058                 ;;
5059         -l*)
5060                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5061                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5062                         :
5063                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5064                         :
5065                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5066                         :
5067                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5068                         :
5069                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5070                         :
5071                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5072                         :
5073                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5074                         :
5075                 else
5076                         try=''
5077                 fi
5078                 libnames="$libnames $try"
5079                 ;;
5080         *) libnames="$libnames $thislib" ;;
5081         esac
5082         done
5083         ;;
5084 esac
5085 xxx=normal
5086 case "$libc" in
5087 unknown)
5088         set /lib/libc.$so
5089         for xxx in $libpth; do
5090                 $test -r $1 || set $xxx/libc.$so
5091                 : The messy sed command sorts on library version numbers.
5092                 $test -r $1 || \
5093                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5094                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5095                                 h
5096                                 s/[0-9][0-9]*/0000&/g
5097                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5098                                 G
5099                                 s/\n/ /' | \
5100                          sort | $sed -e 's/^.* //'`
5101                 eval set \$$#
5102         done
5103         $test -r $1 || set /usr/ccs/lib/libc.$so
5104         $test -r $1 || set /lib/libsys_s$_a
5105         ;;
5106 *)
5107         set blurfl
5108         ;;
5109 esac
5110 if $test -r "$1"; then
5111         echo "Your (shared) C library seems to be in $1."
5112         libc="$1"
5113 elif $test -r /lib/libc && $test -r /lib/clib; then
5114         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5115         xxx=apollo
5116         libc='/lib/clib /lib/libc'
5117         if $test -r /lib/syslib; then
5118                 echo "(Your math library is in /lib/syslib.)"
5119                 libc="$libc /lib/syslib"
5120         fi
5121 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5122         echo "Your C library seems to be in $libc, as you said before."
5123 elif $test -r $incpath/usr/lib/libc$_a; then
5124         libc=$incpath/usr/lib/libc$_a;
5125         echo "Your C library seems to be in $libc.  That's fine."
5126 elif $test -r /lib/libc$_a; then
5127         libc=/lib/libc$_a;
5128         echo "Your C library seems to be in $libc.  You're normal."
5129 else
5130         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5131                 :
5132         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5133                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5134         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5135                 :
5136         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5137                 :
5138         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5139                 :
5140         else
5141                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5142         fi
5143         if $test -r "$tans"; then
5144                 echo "Your C library seems to be in $tans, of all places."
5145                 libc=$tans
5146         else
5147                 libc='blurfl'
5148         fi
5149 fi
5150 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5151         dflt="$libc"
5152         cat <<EOM
5153
5154 If the guess above is wrong (which it might be if you're using a strange
5155 compiler, or your machine supports multiple models), you can override it here.
5156
5157 EOM
5158 else
5159         dflt=''
5160         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5161         cat >&4 <<EOM
5162 I can't seem to find your C library.  I've looked in the following places:
5163
5164 EOM
5165         $sed 's/^/      /' libpath
5166         cat <<EOM
5167
5168 None of these seems to contain your C library. I need to get its name...
5169
5170 EOM
5171 fi
5172 fn=f
5173 rp='Where is your C library?'
5174 . ./getfile
5175 libc="$ans"
5176
5177 echo " "
5178 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5179 set X `cat libnames`
5180 shift
5181 xxx=files
5182 case $# in 1) xxx=file; esac
5183 echo "Extracting names from the following $xxx for later perusal:" >&4
5184 echo " "
5185 $sed 's/^/      /' libnames >&4
5186 echo " "
5187 $echo $n "This may take a while...$c" >&4
5188
5189 for file in $*; do
5190         case $file in
5191         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5192         *) $nm $nm_opt $file 2>/dev/null;;
5193         esac
5194 done >libc.tmp
5195
5196 $echo $n ".$c"
5197 $grep fprintf libc.tmp > libc.ptf
5198 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5199 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5200 xxx='[ADTSIW]'
5201 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5202         eval $xscan;\
5203         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5204                 eval $xrun
5205 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5206         eval $xscan;\
5207         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5208                 eval $xrun
5209 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5210         eval $xscan;\
5211         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5212                 eval $xrun
5213 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5214         eval $xscan;\
5215         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5216                 eval $xrun
5217 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5218         eval $xscan;\
5219         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5220                 eval $xrun
5221 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5222         eval $xscan;\
5223         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5224                 eval $xrun
5225 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5226                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5227         eval $xscan;\
5228         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5229                 eval $xrun
5230 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5231         eval $xscan;\
5232         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5233                 eval $xrun
5234 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5235         eval $xscan;\
5236         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5237                 eval $xrun
5238 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5239         eval $xscan;\
5240         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5241                 eval $xrun
5242 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5243         eval $xscan;\
5244         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5245                 eval $xrun
5246 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5247         eval $xscan;\
5248         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5249                 eval $xrun
5250 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5251         eval $xscan;\
5252         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5253                 eval $xrun
5254 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5255         eval $xscan;\
5256         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5257                 eval $xrun
5258 else
5259         $nm -p $* 2>/dev/null >libc.tmp
5260         $grep fprintf libc.tmp > libc.ptf
5261         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5262                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5263         then
5264                 nm_opt='-p'
5265                 eval $xrun
5266         else
5267                 echo " "
5268                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5269                 com=''
5270                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5271                         for thisname in $libnames $libc; do
5272                                 $ar t $thisname >>libc.tmp
5273                         done
5274                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5275                         echo "Ok." >&4
5276                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5277                         # Repeat libc to extract forwarders to DLL entries too
5278                         for thisname in $libnames $libc; do
5279                                 $ar tv $thisname >>libc.tmp
5280                                 # Revision 50 of EMX has bug in $ar.
5281                                 # it will not extract forwarders to DLL entries
5282                                 # Use emximp which will extract exactly them.
5283                                 emximp -o tmp.imp $thisname \
5284                                     2>/dev/null && \
5285                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5286                                     < tmp.imp >>libc.tmp
5287                                 $rm tmp.imp
5288                         done
5289                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5290                         echo "Ok." >&4
5291                 else
5292                         echo "$ar didn't seem to work right." >&4
5293                         echo "Maybe this is a Cray...trying bld instead..." >&4
5294                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5295                         then
5296                                 for thisname in $libnames; do
5297                                         bld t $libnames | \
5298                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5299                                         $ar t $thisname >>libc.tmp
5300                                 done
5301                                 echo "Ok." >&4
5302                         else
5303                                 echo "That didn't work either.  Giving up." >&4
5304                                 exit 1
5305                         fi
5306                 fi
5307         fi
5308 fi
5309 nm_extract="$com"
5310 if $test -f /lib/syscalls.exp; then
5311         echo " "
5312         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5313         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5314 fi
5315 ;;
5316 esac
5317 $rm -f libnames libpath
5318
5319 : see if dld is available
5320 set dld.h i_dld
5321 eval $inhdr
5322
5323 : is a C symbol defined?
5324 csym='tlook=$1;
5325 case "$3" in
5326 -v) tf=libc.tmp; tc=""; tdc="";;
5327 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5328 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5329 esac;
5330 tx=yes;
5331 case "$reuseval-$4" in
5332 true-) ;;
5333 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5334 esac;
5335 case "$tx" in
5336 yes)
5337         case "$runnm" in
5338         true)
5339                 if $contains $tlook $tf >/dev/null 2>&1;
5340                 then tval=true;
5341                 else tval=false;
5342                 fi;;
5343         *)
5344                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5345                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5346                 then tval=true;
5347                 else tval=false;
5348                 fi;
5349                 $rm -f t t.c;;
5350         esac;;
5351 *)
5352         case "$tval" in
5353         $define) tval=true;;
5354         *) tval=false;;
5355         esac;;
5356 esac;
5357 eval "$2=$tval"'
5358
5359 : define an is-in-libc? function
5360 inlibc='echo " "; td=$define; tu=$undef;
5361 sym=$1; var=$2; eval "was=\$$2";
5362 tx=yes;
5363 case "$reuseval$was" in
5364 true) ;;
5365 true*) tx=no;;
5366 esac;
5367 case "$tx" in
5368 yes)
5369         set $sym tres -f;
5370         eval $csym;
5371         case "$tres" in
5372         true)
5373                 echo "$sym() found." >&4;
5374                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5375         *)
5376                 echo "$sym() NOT found." >&4;
5377                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5378         esac;;
5379 *)
5380         case "$was" in
5381         $define) echo "$sym() found." >&4;;
5382         *) echo "$sym() NOT found." >&4;;
5383         esac;;
5384 esac'
5385
5386 : see if dlopen exists
5387 xxx_runnm="$runnm"
5388 runnm=false
5389 set dlopen d_dlopen
5390 eval $inlibc
5391 runnm="$xxx_runnm"
5392
5393 : determine which dynamic loading, if any, to compile in
5394 echo " "
5395 dldir="ext/DynaLoader"
5396 case "$usedl" in
5397 $define|y|true)
5398         dflt='y'
5399         usedl="$define"
5400         ;;
5401 $undef|n|false)
5402         dflt='n'
5403         usedl="$undef"
5404         ;;
5405 *) 
5406         dflt='n'
5407         case "$d_dlopen" in
5408             $define) dflt='y' ;;
5409         esac
5410         case "$i_dld" in
5411             $define) dflt='y' ;;
5412         esac
5413         : Does a dl_xxx.xs file exist for this operating system
5414         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5415         ;;
5416 esac
5417 rp="Do you wish to use dynamic loading?"
5418 . ./myread
5419 usedl="$ans"
5420 case "$ans" in
5421 y*) usedl="$define"
5422         case "$dlsrc" in
5423         '')
5424                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5425                         dflt="$dldir/dl_${osname}.xs"
5426                 elif $test "$d_dlopen" = "$define" ; then
5427                         dflt="$dldir/dl_dlopen.xs"
5428                 elif $test "$i_dld" = "$define" ; then
5429                         dflt="$dldir/dl_dld.xs"
5430                 else
5431                         dflt=''
5432                 fi
5433                 ;;
5434         *)      dflt="$dldir/$dlsrc"
5435                 ;;
5436         esac
5437     echo "The following dynamic loading files are available:"
5438         : Can not go over to $dldir because getfile has path hard-coded in.
5439         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5440         rp="Source file to use for dynamic loading"
5441         fn="fne"
5442         gfpth="$src"
5443         . ./getfile
5444         usedl="$define"
5445         : emulate basename
5446         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5447
5448         $cat << EOM
5449
5450 Some systems may require passing special flags to $cc -c to
5451 compile modules that will be used to create a shared library.
5452 To use no flags, say "none".
5453
5454 EOM
5455     case "$cccdlflags" in
5456     '') case "$gccversion" in
5457                 '') case "$osname" in
5458                         hpux)   dflt='+z' ;;
5459                         next)   dflt='none' ;;
5460                         irix*)  dflt='-KPIC' ;;
5461                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5462                         sunos)  dflt='-pic' ;;
5463                         *)      dflt='none' ;;
5464                     esac
5465                         ;;
5466                 *)  case "$osname" in
5467                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5468                         *)      dflt='-fpic' ;;
5469                     esac ;;
5470             esac ;;
5471         ' ') dflt='none' ;;
5472     *)  dflt="$cccdlflags" ;;
5473     esac
5474     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5475     . ./myread
5476     case "$ans" in
5477     none) cccdlflags=' ' ;;
5478     *) cccdlflags="$ans" ;;
5479     esac
5480
5481     cat << EOM
5482
5483 Some systems use ld to create libraries that can be dynamically loaded,
5484 while other systems (such as those using ELF) use $cc.
5485
5486 EOM
5487         case "$ld" in
5488         '')     $cat >try.c <<'EOM'
5489 /* Test for whether ELF binaries are produced */
5490 #include <fcntl.h>
5491 #include <stdlib.h>
5492 int main() {
5493         char b[4];
5494         int i = open("a.out",O_RDONLY);
5495         if(i == -1) 
5496                 exit(1); /* fail */
5497         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5498                 exit(0); /* succeed (yes, it's ELF) */
5499         else
5500                 exit(1); /* fail */
5501 }
5502 EOM
5503                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5504                         cat <<EOM
5505 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5506 EOM
5507                         dflt="$cc"
5508                 else
5509                         echo "I'll use ld to build dynamic libraries."
5510                         dflt='ld'
5511                 fi
5512                 rm -f try.c a.out
5513                 ;;
5514         *)      dflt="$ld"
5515                 ;;
5516         esac
5517
5518     rp="What command should be used to create dynamic libraries?"
5519     . ./myread
5520         ld="$ans"
5521
5522     cat << EOM
5523
5524 Some systems may require passing special flags to $ld to create a
5525 library that can be dynamically loaded.  If your ld flags include
5526 -L/other/path options to locate libraries outside your loader's normal
5527 search path, you may need to specify those -L options here as well.  To
5528 use no flags, say "none".
5529
5530 EOM
5531     case "$lddlflags" in
5532     '') case "$osname" in
5533                         beos) dflt='-nostart' ;;
5534                         hpux)  dflt='-b' ;;
5535                         linux|irix*)    dflt='-shared' ;;
5536                         next)  dflt='none' ;;
5537                         solaris) dflt='-G' ;;
5538                         sunos) dflt='-assert nodefinitions' ;;
5539                         svr4*|esix*) dflt="-G $ldflags" ;;
5540                 *)     dflt='none' ;;
5541                         esac
5542                         ;;
5543     *) dflt="$lddlflags" ;;
5544     esac
5545
5546         : Try to guess additional flags to pick up local libraries.
5547         : Be careful not to append to a plain 'none'
5548         case "$dflt" in
5549         none) dflt='' ;;
5550         esac
5551         for thisflag in $ldflags; do
5552                 case "$thisflag" in
5553                 -L*)
5554                         case " $dflt " in
5555                         *" $thisflag "*) ;;
5556                         *) dflt="$dflt $thisflag" ;;
5557                         esac
5558                         ;;
5559                 esac
5560         done
5561
5562         case "$dflt" in
5563         ''|' ') dflt='none' ;;
5564         esac
5565
5566     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5567     . ./myread
5568     case "$ans" in
5569     none) lddlflags=' ' ;;
5570     *) lddlflags="$ans" ;;
5571     esac
5572
5573         cat <<EOM
5574
5575 Some systems may require passing special flags to $cc to indicate that
5576 the resulting executable will use dynamic linking.  To use no flags,
5577 say "none".
5578
5579 EOM
5580     case "$ccdlflags" in
5581     '') case "$osname" in
5582                 hpux)   dflt='-Wl,-E' ;;
5583                 linux)  dflt='-rdynamic' ;;
5584                 next)   dflt='none' ;;
5585                 sunos)  dflt='none' ;;
5586                 *)      dflt='none' ;;
5587             esac ;;
5588     ' ')  dflt='none' ;;
5589     *)  dflt="$ccdlflags" ;;
5590     esac
5591     rp="Any special flags to pass to $cc to use dynamic loading?"
5592     . ./myread
5593     case "$ans" in
5594     none) ccdlflags=' ' ;;
5595     *) ccdlflags="$ans" ;;
5596     esac
5597     ;;
5598 *)  usedl="$undef"
5599         ld='ld'
5600     dlsrc='dl_none.xs'
5601     lddlflags=''
5602     ccdlflags=''
5603     ;;
5604 esac
5605
5606 also=''
5607 case "$usedl" in
5608 $undef)
5609         # No dynamic loading being used, so don't bother even to prompt.
5610         useshrplib='false'
5611         ;;
5612 *)      case "$useshrplib" in
5613         '')     case "$osname" in
5614                 svr4*|dgux|dynixptx|esix|powerux|beos)
5615                         dflt=y
5616                         also='Building a shared libperl is required for dynamic loading to work on your system.'
5617                         ;;
5618                 next*)
5619                         case "$osvers" in
5620                         4*)     dflt=y
5621                                 also='Building a shared libperl is needed for MAB support.'
5622                                 ;;
5623                         *)      dflt=n
5624                                 ;;
5625                         esac
5626                         ;;
5627                 *)      dflt=n
5628                         ;;
5629                 esac
5630                 ;;
5631         $define|true|[Yy]*)
5632                 dflt=y
5633                 ;;
5634         *)      dflt=n
5635                 ;;
5636         esac
5637         $cat << EOM
5638
5639 The perl executable is normally obtained by linking perlmain.c with
5640 libperl${_a}, any static extensions (usually just DynaLoader), and
5641 any other libraries needed on this system (such as -lm, etc.).  Since
5642 your system supports dynamic loading, it is probably possible to build
5643 a shared libperl.$so.  If you will have more than one executable linked
5644 to libperl.$so, this will significantly reduce the size of each
5645 executable, but it may have a noticeable affect on performance.  The
5646 default is probably sensible for your system.
5647 $also
5648
5649 EOM
5650         rp="Build a shared libperl.$so (y/n)"
5651         . ./myread
5652         case "$ans" in
5653         true|$define|[Yy]*)
5654                 useshrplib='true'  ;;
5655         *)      useshrplib='false' ;;
5656         esac
5657         ;;
5658 esac
5659
5660 case "$useshrplib" in
5661 true)
5662         case "$libperl" in
5663         '')
5664                 # Figure out a good name for libperl.so.  Since it gets stored in
5665                 # a version-specific architecture-dependent library, the version
5666                 # number isn't really that important, except for making cc/ld happy.
5667                 #
5668                 # A name such as libperl.so.3.1
5669                 majmin="libperl.$so.$patchlevel.$subversion"
5670                 # A name such as libperl.so.301
5671                 majonly=`echo $patchlevel $subversion |
5672                         $awk '{printf "%d%02d", $1, $2}'`
5673                 majonly=libperl.$so.$majonly
5674                 # I'd prefer to keep the os-specific stuff here to a minimum, and
5675                 # rely on figuring it out from the naming of libc.
5676                 case "${osname}${osvers}" in
5677                 next4*)
5678                         dflt=libperl.5.$so
5679                         # XXX How handle the --version stuff for MAB?
5680                         ;;
5681                 linux*)  # ld won't link with a bare -lperl otherwise.
5682                         dflt=libperl.$so
5683                         ;;
5684                 *)      # Try to guess based on whether libc has major.minor.
5685                         case "$libc" in
5686                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5687                         *libc.$so.[0-9]*) dflt=$majonly ;;
5688                         *)      dflt=libperl.$so ;;
5689                         esac
5690                         ;;
5691                 esac
5692                 ;;
5693         *)      dflt=$libperl
5694                 ;;
5695         esac
5696         cat << EOM
5697
5698 I need to select a good name for the shared libperl.  If your system uses
5699 library names with major and minor numbers, then you might want something
5700 like $majmin.  Alternatively, if your system uses a single version
5701 number for shared libraries, then you might want to use $majonly.
5702 Or, your system might be quite happy with a simple libperl.$so.
5703
5704 Since the shared libperl will get installed into a version-specific
5705 architecture-dependent directory, the version number of the shared perl
5706 library probably isn't important, so the default should be o.k.
5707
5708 EOM
5709         rp='What name do you want to give to the shared libperl?'
5710         . ./myread
5711         libperl=$ans
5712         echo "Ok, I'll use $libperl"
5713         ;;
5714 *)
5715         libperl="libperl${_a}"
5716         ;;
5717 esac
5718
5719 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5720 case "$shrpdir" in
5721 '') ;;
5722 *)      $cat >&4 <<EOM
5723 WARNING:  Use of the shrpdir variable for the installation location of
5724 the shared $libperl is not supported.  It was never documented and
5725 will not work in this version.  Let me (perlbug@perl.com)
5726 know of any problems this may cause.
5727
5728 EOM
5729         case "$shrpdir" in
5730         "$archlibexp/CORE")
5731                 $cat >&4 <<EOM
5732 But your current setting of $shrpdir is
5733 the default anyway, so it's harmless.
5734 EOM
5735                 ;;
5736         *)
5737                 $cat >&4 <<EOM
5738 Further, your current attempted setting of $shrpdir
5739 conflicts with the value of $archlibexp/CORE
5740 that installperl will use.
5741 EOM
5742                 ;;
5743         esac
5744         ;;
5745 esac
5746
5747 # How will the perl executable find the installed shared $libperl?
5748 # Add $xxx to ccdlflags.
5749 # If we can't figure out a command-line option, use $shrpenv to
5750 # set env LD_RUN_PATH.  The main perl makefile uses this.
5751 shrpdir=$archlibexp/CORE
5752 xxx=''
5753 tmp_shrpenv=''
5754 if "$useshrplib"; then
5755     case "$osname" in 
5756         aix)
5757                 # We'll set it in Makefile.SH...
5758                 ;;
5759         solaris|netbsd)
5760                 xxx="-R $shrpdir"
5761                 ;;
5762         freebsd)
5763                 xxx="-Wl,-R$shrpdir"
5764                 ;;
5765         linux|irix*|dec_osf)
5766                 xxx="-Wl,-rpath,$shrpdir"
5767                 ;;
5768         next)
5769                 # next doesn't like the default...
5770                 ;;
5771         beos)
5772                 # beos doesn't like the default, either.
5773                 ;;
5774         hpux*)
5775                 # hpux doesn't like the default, either.
5776                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5777                 ;;
5778         *)
5779                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5780                 ;;
5781         esac
5782         case "$xxx" in
5783         '') ;;
5784         *)      
5785                 # Only add $xxx if it isn't already in ccdlflags.
5786                 case " $ccdlflags " in
5787                 *" $xxx "*)     ;;
5788                 *)      ccdlflags="$ccdlflags $xxx"
5789                         cat <<EOM >&4
5790
5791 Adding $xxx to the flags
5792 passed to $ld so that the perl executable will find the 
5793 installed shared $libperl.
5794
5795 EOM
5796                         ;;
5797                 esac
5798                 ;;
5799         esac
5800 fi
5801 # Fix ccdlflags in AIX for building external extensions.
5802 # (For building Perl itself bare -bE:perl.exp is needed,
5803 #  Makefile.SH takes care of this.)
5804 case "$osname" in
5805 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
5806 esac
5807 # Respect a hint or command-line value.
5808 case "$shrpenv" in
5809 '') shrpenv="$tmp_shrpenv" ;;
5810 esac
5811 case "$ldlibpthname" in
5812 '')     ldlibpthname=LD_LIBRARY_PATH ;;
5813 none)   ldlibpthname='' ;;
5814 esac
5815
5816 : determine where manual pages go
5817 set man1dir man1dir none
5818 eval $prefixit
5819 $cat <<EOM
5820
5821 $spackage has manual pages available in source form.
5822 EOM
5823 case "$nroff" in
5824 nroff)
5825         echo "However, you don't have nroff, so they're probably useless to you."
5826         case "$man1dir" in
5827         '') man1dir="none";;
5828         esac;;
5829 esac
5830 echo "If you don't want the manual sources installed, answer 'none'."
5831 case "$man1dir" in
5832 ' ') dflt=none
5833         ;;
5834 '')
5835         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5836         lookpath="$lookpath $prefixexp/man/p_man/man1"
5837         lookpath="$lookpath $prefixexp/man/u_man/man1"
5838         lookpath="$lookpath $prefixexp/man/man.1"
5839         case "$sysman" in
5840         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5841         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5842         esac
5843         set dflt
5844         eval $prefixup
5845         ;;
5846 *)  dflt="$man1dir"
5847         ;;
5848 esac
5849 echo " "
5850 fn=dn+~
5851 rp="Where do the main $spackage manual pages (source) go?"
5852 . ./getfile
5853 if $test "X$man1direxp" != "X$ansexp"; then
5854         installman1dir=''
5855 fi
5856 man1dir="$ans"
5857 man1direxp="$ansexp"
5858 case "$man1dir" in
5859 '')     man1dir=' '
5860         installman1dir='';;
5861 esac
5862
5863 : Change installation prefix, if necessary.
5864 if $test X"$prefix" != X"$installprefix"; then
5865         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
5866 else
5867         installman1dir="$man1direxp"
5868 fi
5869
5870 : What suffix to use on installed man pages
5871
5872 case "$man1dir" in
5873 ' ')
5874         man1ext='0'
5875         ;;
5876 *)
5877         rp="What suffix should be used for the main $spackage man pages?"
5878         case "$man1ext" in
5879         '')     case "$man1dir" in
5880                 *1)  dflt=1 ;;
5881                 *1p) dflt=1p ;;
5882                 *1pm) dflt=1pm ;;
5883                 *l) dflt=l;;
5884                 *n) dflt=n;;
5885                 *o) dflt=o;;
5886                 *p) dflt=p;;
5887                 *C) dflt=C;;
5888                 *L) dflt=L;;
5889                 *L1) dflt=L1;;
5890                 *) dflt=1;;
5891                 esac
5892                 ;;
5893         *)      dflt="$man1ext";;
5894         esac
5895         . ./myread
5896         man1ext="$ans"
5897         ;;
5898 esac
5899
5900 : see if we can have long filenames
5901 echo " "
5902 rmlist="$rmlist /tmp/cf$$"
5903 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5904 first=123456789abcdef
5905 second=/tmp/cf$$/$first
5906 $rm -f $first $second
5907 if (echo hi >$first) 2>/dev/null; then
5908         if $test -f 123456789abcde; then
5909                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
5910                 val="$undef"
5911         else
5912                 if (echo hi >$second) 2>/dev/null; then
5913                         if $test -f /tmp/cf$$/123456789abcde; then
5914                                 $cat <<'EOM'
5915 That's peculiar... You can have filenames longer than 14 characters, but only
5916 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
5917 I shall consider your system cannot support long filenames at all.
5918 EOM
5919                                 val="$undef"
5920                         else
5921                                 echo 'You can have filenames longer than 14 characters.' >&4
5922                                 val="$define"
5923                         fi
5924                 else
5925                         $cat <<'EOM'
5926 How confusing! Some of your filesystems are sane enough to allow filenames
5927 longer than 14 characters but some others like /tmp can't even think about them.
5928 So, for now on, I shall assume your kernel does not allow them at all.
5929 EOM
5930                         val="$undef"
5931                 fi
5932         fi
5933 else
5934         $cat <<'EOM'
5935 You can't have filenames longer than 14 chars.  You can't even think about them!
5936 EOM
5937         val="$undef"
5938 fi 
5939 set d_flexfnam
5940 eval $setvar
5941 $rm -rf /tmp/cf$$ 123456789abcde*
5942
5943 : determine where library module manual pages go
5944 set man3dir man3dir none
5945 eval $prefixit
5946 $cat <<EOM
5947
5948 $spackage has manual pages for many of the library modules.
5949 EOM
5950
5951 case "$nroff" in
5952 nroff)
5953         $cat <<'EOM'
5954 However, you don't have nroff, so they're probably useless to you.
5955 EOM
5956         case "$man3dir" in
5957         '') man3dir="none";;
5958         esac;;
5959 esac
5960
5961 case "$d_flexfnam" in
5962 undef)
5963         $cat <<'EOM'
5964 However, your system can't handle the long file names like File::Basename.3. 
5965 EOM
5966         case "$man3dir" in
5967         '') man3dir="none";;
5968         esac;;
5969 esac
5970
5971 echo "If you don't want the manual sources installed, answer 'none'."
5972 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5973 case "$man3dir" in
5974 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
5975         if $test -d "$privlib/man/man3"; then
5976                 cat <<EOM >&4
5977
5978 WARNING:  Previous versions of perl installed man3 pages into
5979 $privlib/man/man3.  This version will suggest a 
5980 new default of $dflt.  
5981 EOM
5982                 tdflt=$dflt
5983                 dflt='n'
5984                 rp='Do you wish to preserve the old behavior?(y/n)'
5985                 . ./myread
5986                 case "$ans" in
5987                 y*) dflt="$privlib/man/man3" ;;
5988                 *)  dflt=$tdflt ;;
5989                 esac
5990     fi
5991         ;;
5992 ' ') dflt=none;;
5993 *)      dflt="$man3dir" ;;
5994 esac
5995 echo " "
5996 fn=dn+~
5997 rp="Where do the $package library man pages (source) go?"
5998 . ./getfile
5999 man3dir="$ans"
6000 man3direxp="$ansexp"
6001 case "$man1dir" in
6002 '')     man3dir=' '
6003         installman3dir='';;
6004 esac
6005
6006 : Change installation prefix, if necessary.
6007 if $test X"$prefix" != X"$installprefix"; then
6008         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6009 else
6010         installman3dir="$man3direxp"
6011 fi
6012
6013 : What suffix to use on installed man pages
6014 case "$man3dir" in
6015 ' ')
6016         man3ext='0'
6017         ;;
6018 *)
6019         rp="What suffix should be used for the $package library man pages?"
6020         case "$man3ext" in
6021         '')     case "$man3dir" in
6022                 *3)  dflt=3 ;;
6023                 *3p) dflt=3p ;;
6024                 *3pm) dflt=3pm ;;
6025                 *l) dflt=l;;
6026                 *n) dflt=n;;
6027                 *o) dflt=o;;
6028                 *p) dflt=p;;
6029                 *C) dflt=C;;
6030                 *L) dflt=L;;
6031                 *L3) dflt=L3;;
6032                 *) dflt=3;;
6033                 esac
6034                 ;;
6035         *)      dflt="$man3ext";;
6036         esac
6037         . ./myread
6038         man3ext="$ans"
6039         ;;
6040 esac
6041
6042 : see if we have to deal with yellow pages, now NIS.
6043 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6044         if $test -f /usr/etc/nibindd; then
6045                 echo " "
6046                 echo "I'm fairly confident you're on a NeXT."
6047                 echo " "
6048                 rp='Do you get the hosts file via NetInfo?'
6049                 dflt=y
6050                 case "$hostcat" in
6051                 nidump*) ;;
6052                 '') ;;
6053                 *) dflt=n;;
6054                 esac
6055                 . ./myread
6056                 case "$ans" in
6057                 y*) hostcat='nidump hosts .';;
6058                 *)      case "$hostcat" in
6059                         nidump*) hostcat='';;
6060                         esac
6061                         ;;
6062                 esac
6063         fi
6064         case "$hostcat" in
6065         nidump*) ;;
6066         *)
6067                 case "$hostcat" in
6068                 *ypcat*) dflt=y;;
6069                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6070                                 dflt=y
6071                         else
6072                                 dflt=n
6073                         fi;;
6074                 *) dflt=n;;
6075                 esac
6076                 echo " "
6077                 rp='Are you getting the hosts file via yellow pages?'
6078                 . ./myread
6079                 case "$ans" in
6080                 y*) hostcat='ypcat hosts';;
6081                 *) hostcat='cat /etc/hosts';;
6082                 esac
6083                 ;;
6084         esac
6085 fi
6086 case "$hostcat" in
6087 '') hostcat='cat /etc/hosts';;
6088 esac
6089 case "$groupcat" in
6090 '') groupcat='cat /etc/group';;
6091 esac
6092 case "$passcat" in
6093 '') passcat='cat /etc/passwd';;
6094 esac
6095
6096 : now get the host name
6097 echo " "
6098 echo "Figuring out host name..." >&4
6099 case "$myhostname" in
6100 '') cont=true
6101         echo 'Maybe "hostname" will work...'
6102         if tans=`sh -c hostname 2>&1` ; then
6103                 myhostname=$tans
6104                 phostname=hostname
6105                 cont=''
6106         fi
6107         ;;
6108 *) cont='';;
6109 esac
6110 if $test "$cont"; then
6111         if ./xenix; then
6112                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6113                 if tans=`cat /etc/systemid 2>&1` ; then
6114                         myhostname=$tans
6115                         phostname='cat /etc/systemid'
6116                         echo "Whadyaknow.  Xenix always was a bit strange..."
6117                         cont=''
6118                 fi
6119         elif $test -r /etc/systemid; then
6120                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6121         fi
6122 fi
6123 if $test "$cont"; then
6124         echo 'No, maybe "uuname -l" will work...'
6125         if tans=`sh -c 'uuname -l' 2>&1` ; then
6126                 myhostname=$tans
6127                 phostname='uuname -l'
6128         else
6129                 echo 'Strange.  Maybe "uname -n" will work...'
6130                 if tans=`sh -c 'uname -n' 2>&1` ; then
6131                         myhostname=$tans
6132                         phostname='uname -n'
6133                 else
6134                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6135                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6136                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6137                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6138                         else
6139                                 case "$myhostname" in
6140                                 '') echo "Does this machine have an identity crisis or something?"
6141                                         phostname='';;
6142                                 *)
6143                                         echo "Well, you said $myhostname before..."
6144                                         phostname='echo $myhostname';;
6145                                 esac
6146                         fi
6147                 fi
6148         fi
6149 fi
6150 : you do not want to know about this
6151 set $myhostname
6152 myhostname=$1
6153
6154 : verify guess
6155 if $test "$myhostname" ; then
6156         dflt=y
6157         rp='Your host name appears to be "'$myhostname'".'" Right?"
6158         . ./myread
6159         case "$ans" in
6160         y*) ;;
6161         *) myhostname='';;
6162         esac
6163 fi
6164
6165 : bad guess or no guess
6166 while $test "X$myhostname" = X ; do
6167         dflt=''
6168         rp="Please type the (one word) name of your host:"
6169         . ./myread
6170         myhostname="$ans"
6171 done
6172
6173 : translate upper to lower if necessary
6174 case "$myhostname" in
6175 *[A-Z]*)
6176         echo "(Normalizing case in your host name)"
6177         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6178         ;;
6179 esac
6180
6181 case "$myhostname" in
6182 *.*)
6183         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6184         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6185         echo "(Trimming domain name from host name--host name is now $myhostname)"
6186         ;;
6187 *) case "$mydomain" in
6188         '')
6189                 {
6190                         test "X$hostcat" = "Xypcat hosts" &&
6191                         ypmatch "$myhostname" hosts 2>/dev/null |\
6192                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6193                         $test -s hosts
6194                 } || {
6195                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6196                                         /[       ]$myhostname[  . ]/p" > hosts
6197                 }
6198                 tmp_re="[       . ]"
6199                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6200                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6201                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6202                         hosts | $sort | $uniq | \
6203                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6204                 case `$echo X$dflt` in
6205                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6206                         dflt=.
6207                         ;;
6208                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6209                         ;;
6210                 esac
6211                 case "$dflt" in
6212                 .)
6213                         tans=`./loc resolv.conf X /etc /usr/etc`
6214                         if $test -f "$tans"; then
6215                                 echo "(Attempting domain name extraction from $tans)"
6216                                 dflt=.`$sed -n -e 's/   / /g' \
6217                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6218                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6219                                 case "$dflt" in
6220                                 .) dflt=.`$sed -n -e 's/        / /g' \
6221                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6222                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6223                                         ;;
6224                                 esac
6225                         fi
6226                         ;;
6227                 esac
6228                 case "$dflt" in
6229                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6230                         dflt=.`sh -c domainname 2>/dev/null`
6231                         case "$dflt" in
6232                         '') dflt='.';;
6233                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6234                         esac
6235                         ;;
6236                 esac
6237                 case "$dflt" in
6238                 .) echo "(Lost all hope -- silly guess then)"
6239                         dflt='.uucp'
6240                         ;;
6241                 esac
6242                 $rm -f hosts
6243                 ;;
6244         *) dflt="$mydomain";;
6245         esac;;
6246 esac
6247 echo " "
6248 rp="What is your domain name?"
6249 . ./myread
6250 tans="$ans"
6251 case "$ans" in
6252 '') ;;
6253 .*) ;;
6254 *) tans=".$tans";;
6255 esac
6256 mydomain="$tans"
6257
6258 : translate upper to lower if necessary
6259 case "$mydomain" in
6260 *[A-Z]*)
6261         echo "(Normalizing case in your domain name)"
6262         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6263         ;;
6264 esac
6265
6266 : a little sanity check here
6267 case "$phostname" in
6268 '') ;;
6269 *)
6270         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6271         $myhostname$mydomain|$myhostname) ;;
6272         *)
6273                 case "$phostname" in
6274                 sed*)
6275                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6276                         ;;
6277                 *)
6278                         echo "(That doesn't agree with your $phostname command, by the way.)"
6279                         ;;
6280                 esac
6281         ;;
6282         esac
6283         ;;
6284 esac
6285
6286 $cat <<EOM
6287
6288 I need to get your e-mail address in Internet format if possible, i.e.
6289 something like user@host.domain. Please answer accurately since I have
6290 no easy means to double check it. The default value provided below
6291 is most probably close to the reality but may not be valid from outside
6292 your organization...
6293
6294 EOM
6295 cont=x
6296 while test "$cont"; do
6297         case "$cf_email" in
6298         '') dflt="$cf_by@$myhostname$mydomain";;
6299         *) dflt="$cf_email";;
6300         esac
6301         rp='What is your e-mail address?'
6302         . ./myread
6303         cf_email="$ans"
6304         case "$cf_email" in
6305         *@*.*) cont='' ;;
6306         *)
6307                 rp='Address does not look like an Internet one.  Use it anyway?'
6308                 case "$fastread" in
6309                 yes) dflt=y ;;
6310                 *) dflt=n ;;
6311                 esac
6312                 . ./myread
6313                 case "$ans" in
6314                 y*) cont='' ;;
6315                 *) echo " " ;;
6316                 esac
6317                 ;;
6318         esac
6319 done
6320
6321 $cat <<EOM
6322
6323 If you or somebody else will be maintaining perl at your site, please
6324 fill in the correct e-mail address here so that they may be contacted
6325 if necessary. Currently, the "perlbug" program included with perl
6326 will send mail to this address in addition to perlbug@perl.com. You may
6327 enter "none" for no administrator.
6328
6329 EOM
6330 case "$perladmin" in
6331 '') dflt="$cf_email";;
6332 *) dflt="$perladmin";;
6333 esac
6334 rp='Perl administrator e-mail address'
6335 . ./myread
6336 perladmin="$ans"
6337
6338 : figure out how to guarantee perl startup
6339 case "$startperl" in
6340 '')
6341         case "$sharpbang" in
6342         *!)
6343                 $cat <<EOH
6344
6345 I can use the #! construct to start perl on your system. This will
6346 make startup of perl scripts faster, but may cause problems if you
6347 want to share those scripts and perl is not in a standard place
6348 ($binexp/perl) on all your platforms. The alternative is to force
6349 a shell by starting the script with a single ':' character.
6350
6351 EOH
6352                 dflt="$binexp/perl"
6353                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6354                 . ./myread
6355                 case "$ans" in
6356                 none)   startperl=": # use perl";;
6357                 *)      startperl="#!$ans"
6358                         if $test 30 -lt `echo "$ans" | wc -c`; then
6359                                 $cat >&4 <<EOM
6360
6361 WARNING:  Some systems limit the #! command to 32 characters.
6362 If you experience difficulty running Perl scripts with #!, try
6363 installing Perl in a directory with a shorter pathname.
6364
6365 EOM
6366                         fi ;;
6367                 esac
6368                 ;;
6369         *) startperl=": # use perl"
6370                 ;;
6371         esac
6372         ;;
6373 esac
6374 echo "I'll use $startperl to start perl scripts."
6375
6376 : figure best path for perl in scripts
6377 case "$perlpath" in
6378 '')
6379         perlpath="$binexp/perl"
6380         case "$startperl" in
6381         *!*) ;;
6382         *)
6383                 $cat <<EOH
6384
6385 I will use the "eval 'exec'" idiom to start Perl on your system.
6386 I can use the full path of your Perl binary for this purpose, but
6387 doing so may cause problems if you want to share those scripts and
6388 Perl is not always in a standard place ($binexp/perl).
6389
6390 EOH
6391                 dflt="$binexp/perl"
6392                 rp="What path shall I use in \"eval 'exec'\"?"
6393                 . ./myread
6394                 perlpath="$ans"
6395                 ;;
6396         esac
6397         ;;
6398 esac
6399 case "$startperl" in
6400 *!*)    ;;
6401 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6402 esac
6403
6404 : determine where public executable scripts go
6405 set scriptdir scriptdir
6406 eval $prefixit
6407 case "$scriptdir" in
6408 '')
6409         dflt="$bin"
6410         : guess some guesses
6411         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6412         $test -d /usr/share/bin     && dflt=/usr/share/bin
6413         $test -d /usr/local/script  && dflt=/usr/local/script
6414         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6415         $test -d $prefixexp/script  && dflt=$prefixexp/script
6416         set dflt
6417         eval $prefixup
6418         ;;
6419 *)  dflt="$scriptdir"
6420         ;;
6421 esac
6422 $cat <<EOM
6423  
6424 Some installations have a separate directory just for executable scripts so
6425 that they can mount it across multiple architectures but keep the scripts in
6426 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6427 Or you might just lump your scripts in with all your other executables.
6428  
6429 EOM
6430 fn=d~
6431 rp='Where do you keep publicly executable scripts?'
6432 . ./getfile
6433 if $test "X$ansexp" != "X$scriptdirexp"; then
6434         installscript=''
6435 fi
6436 scriptdir="$ans"
6437 scriptdirexp="$ansexp"
6438 : Change installation prefix, if necessary.
6439 if $test X"$prefix" != X"$installprefix"; then
6440         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6441 else
6442         installscript="$scriptdirexp"
6443 fi
6444
6445 $cat <<EOM
6446
6447 After $package is installed, you may wish to install various
6448 add-on modules and utilities.  Typically, these add-ons will
6449 be installed under $prefix with the rest
6450 of this package.  However, you may wish to install such add-ons
6451 elsewhere under a different prefix.
6452
6453 If you do not wish to put everything under a single prefix, that's
6454 ok.  You will be prompted for the individual locations; this siteprefix
6455 is only used to suggest the defaults.
6456
6457 The default should be fine for most people.
6458
6459 EOM
6460 fn=d~+
6461 rp='Installation prefix to use for add-on modules and utilities?'
6462 : XXX Here might be another good place for an installstyle setting.
6463 case "$siteprefix" in
6464 '') dflt=$prefix ;;
6465 *)  dflt=$siteprefix ;;
6466 esac
6467 . ./getfile
6468 oldsiteprefix=''
6469 case "$siteprefix" in
6470 '') ;;
6471 *)
6472         case "$ans" in
6473         "$prefix") ;;
6474         *) oldsiteprefix="$prefix";;
6475         esac
6476         ;;
6477 esac
6478 siteprefix="$ans"
6479 siteprefixexp="$ansexp"
6480
6481 : determine where site specific libraries go.
6482 : Usual default is /usr/local/lib/perl5/site_perl
6483 : The default "style" setting is made in installstyle.U
6484 : XXX No longer works with Prefixit stuff.
6485 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6486 case "$installstyle" in
6487 *lib/perl5*) dflt=$siteprefix/lib/site_$prog ;;
6488 *)       dflt=$siteprefix/lib/site_$prog ;;
6489 esac
6490 $cat <<EOM
6491
6492 The installation process will create a directory for
6493 site-specific extensions and modules.  Most users find it convenient
6494 to place all site-specific files in this directory rather than in the
6495 main distribution directory.
6496
6497 EOM
6498 fn=d~+
6499 rp='Pathname for the site-specific library files?'
6500 . ./getfile
6501 sitelib="$ans"
6502 sitelibexp="$ansexp"
6503 : Change installation prefix, if necessary.
6504 if $test X"$prefix" != X"$installprefix"; then
6505         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
6506 else
6507         installsitelib="$sitelibexp"
6508 fi
6509
6510 : determine where site specific architecture-dependent libraries go.
6511 : sitelib  default is /usr/local/lib/perl5/site_perl/
6512 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6513 : sitelib may have an optional trailing /share.
6514 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6515 tdflt="$tdflt/$apiversion/$archname"
6516 set sitearch sitearch none
6517 eval $prefixit
6518 case "$sitearch" in
6519 '')     dflt="$tdflt" ;;
6520 *)      dflt="$sitearch" ;;
6521 esac
6522 $cat <<EOM
6523
6524 The installation process will also create a directory for
6525 architecture-dependent site-specific extensions and modules.
6526
6527 EOM
6528 fn=nd~+
6529 rp='Pathname for the site-specific architecture-dependent library files?'
6530 . ./getfile
6531 sitearch="$ans"
6532 sitearchexp="$ansexp"
6533 : Change installation prefix, if necessary.
6534 if $test X"$prefix" != X"$installprefix"; then
6535         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6536 else
6537         installsitearch="$sitearchexp"
6538 fi
6539
6540 cat <<EOM
6541
6542 Perl can be built to take advantage of long doubles which
6543 (if available) may give more accuracy and range for floating point
6544 numbers.  To do so, Configure must be run with -Duselongdouble.
6545
6546 If this doesn't make any sense to you, just accept the default 'n'.
6547 EOM
6548 case "$uselongdouble" in
6549 $define|true|[yY]*)     dflt='y';;
6550 *) dflt='n';;
6551 esac
6552 rp='Try to use long doubles if available?'
6553 . ./myread
6554 case "$ans" in
6555 y|Y)    val="$define"   ;;
6556 *)      val="$undef"    ;;
6557 esac
6558 set uselongdouble
6559 eval $setvar
6560
6561 case "$uselongdouble" in
6562 "$define"|true|[yY]*)
6563 : Look for a hint-file generated 'call-back-unit'.  If the
6564 : user has specified that long doubles should be used,
6565 : we may need to set or change some other defaults.
6566         if $test -f uselongdouble.cbu; then
6567                 echo "Your platform has some specific hints for long doubles, using them..."
6568                 . ./uselongdouble.cbu
6569         else
6570                 $cat <<EOM
6571 (Your platform doesn't have any specific hints for long doubles.)
6572 EOM
6573         fi
6574         ;;
6575 esac
6576
6577 cat <<EOM
6578
6579 Previous version of $package used the standard IO mechanisms as defined
6580 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
6581 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6582 the default.  This abstraction layer can use AT&T's sfio (if you already
6583 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
6584 problems with some extension modules.  Using PerlIO with stdio is safe,
6585 but it is slower than plain stdio and therefore is not the default.
6586
6587 If this doesn't make any sense to you, just accept the default 'n'.
6588 EOM
6589 case "$useperlio" in
6590 $define|true|[yY]*)     dflt='y';;
6591 *) dflt='n';;
6592 esac
6593 rp='Use the experimental PerlIO abstraction layer?'
6594 . ./myread
6595 case "$ans" in
6596 y|Y) 
6597         val="$define"
6598         ;;     
6599 *)      
6600         echo "Ok, doing things the stdio way"
6601         val="$undef"
6602         ;;
6603 esac
6604 set useperlio
6605 eval $setvar 
6606
6607 : Check how to convert floats to strings.
6608 if test "X$d_Gconvert" = X; then
6609         echo " "
6610         echo "Checking for an efficient way to convert floats to strings."
6611         $cat >try.c <<'EOP'
6612 #ifdef TRY_gconvert
6613 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6614 char *myname = "gconvert";
6615 #endif
6616 #ifdef TRY_gcvt
6617 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6618 char *myname = "gcvt";
6619 #endif
6620 #ifdef TRY_sprintf
6621 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6622 char *myname = "sprintf";
6623 #endif
6624
6625 #include <stdio.h>
6626
6627 int
6628 checkit(expect, got)
6629 char *expect;
6630 char *got;
6631 {
6632     if (strcmp(expect, got)) {
6633                 printf("%s oddity:  Expected %s, got %s\n",
6634                         myname, expect, got);
6635                 exit(1);
6636         }
6637 }
6638
6639 int main()
6640
6641         char buf[64]; 
6642         buf[63] = '\0';
6643
6644         /* This must be 1st test on (which?) platform */
6645         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6646         Gconvert(0.1, 8, 0, buf);
6647         checkit("0.1", buf);
6648
6649         Gconvert(1.0, 8, 0, buf); 
6650         checkit("1", buf);
6651
6652         Gconvert(0.0, 8, 0, buf); 
6653         checkit("0", buf);
6654
6655         Gconvert(-1.0, 8, 0, buf); 
6656         checkit("-1", buf);
6657
6658         /* Some Linux gcvt's give 1.e+5 here. */
6659         Gconvert(100000.0, 8, 0, buf); 
6660         checkit("100000", buf);
6661         
6662         /* Some Linux gcvt's give -1.e+5 here. */
6663         Gconvert(-100000.0, 8, 0, buf); 
6664         checkit("-100000", buf);
6665
6666         exit(0);
6667 }
6668 EOP
6669         case "$d_Gconvert" in
6670         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6671         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6672         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6673         *) xxx_list='gconvert gcvt sprintf' ;;
6674         esac
6675
6676         for xxx_convert in $xxx_list; do
6677                 echo "Trying $xxx_convert"
6678                 $rm -f try try$_o
6679                 set try -DTRY_$xxx_convert
6680                 if eval $compile; then
6681                         echo "$xxx_convert" found. >&4
6682                         if ./try; then
6683                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
6684                                 break;
6685                         else
6686                                 echo "...But $xxx_convert didn't work as I expected."
6687                         fi
6688                 else
6689                         echo "$xxx_convert NOT found." >&4
6690                 fi
6691         done
6692                 
6693         case "$xxx_convert" in
6694         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6695         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6696         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6697         esac
6698 fi
6699
6700 : see if inttypes.h is available
6701 : we want a real compile instead of Inhdr because some systems
6702 : have an inttypes.h which includes non-existent headers
6703 echo " "
6704 $cat >try.c <<EOCP
6705 #include <inttypes.h>
6706 int main() {
6707         static int32_t foo32 = 0x12345678;
6708 }
6709 EOCP
6710 set try
6711 if eval $compile; then
6712         echo "<inttypes.h> found." >&4
6713         val="$define"
6714 else
6715         echo "<inttypes.h> NOT found." >&4
6716         val="$undef"
6717 fi
6718 $rm -f try.c try
6719 set i_inttypes
6720 eval $setvar
6721
6722 : check for int64_t
6723 case "$use64bits" in
6724 "$define" )
6725         echo " "
6726         echo $n "Checking to see if your system supports int64_t...$c" >&4
6727         $cat >try.c <<EOCP
6728 #include <sys/types.h>
6729 #$i_inttypes I_INTTYPES
6730 #ifdef I_INTTYPES
6731 #include <inttypes.h>
6732 #endif
6733 int64_t foo() { int64_t x; x = 7; return x; }
6734 EOCP
6735         if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6736                 val="$define"
6737                 echo " Yup, it does." >&4
6738         else
6739                 val="$undef"
6740                 echo " Nope, it doesn't." >&4
6741         fi
6742         $rm -f try.*
6743         ;;
6744 *)      val="$undef"
6745         ;;
6746 esac
6747 set d_int64t
6748 eval $setvar
6749
6750
6751 : check for lengths of integral types
6752 echo " "
6753 case "$intsize" in
6754 '')
6755         echo "Checking to see how big your integers are..." >&4
6756         $cat >intsize.c <<'EOCP'
6757 #include <stdio.h>
6758 int main()
6759 {
6760         printf("intsize=%d;\n", sizeof(int));
6761         printf("longsize=%d;\n", sizeof(long));
6762         printf("shortsize=%d;\n", sizeof(short));
6763         exit(0);
6764 }
6765 EOCP
6766         set intsize
6767         if eval $compile_ok && ./intsize > /dev/null; then
6768                 eval `./intsize`
6769                 echo "Your integers are $intsize bytes long."
6770                 echo "Your long integers are $longsize bytes long."
6771                 echo "Your short integers are $shortsize bytes long."
6772         else
6773                 $cat >&4 <<EOM
6774 !
6775 Help! I can't compile and run the intsize test program: please enlighten me!
6776 (This is probably a misconfiguration in your system or libraries, and
6777 you really ought to fix it.  Still, I'll try anyway.)
6778 !
6779 EOM
6780                 dflt=4
6781                 rp="What is the size of an integer (in bytes)?"
6782                 . ./myread
6783                 intsize="$ans"
6784                 dflt=$intsize
6785                 rp="What is the size of a long integer (in bytes)?"
6786                 . ./myread
6787                 longsize="$ans"
6788                 dflt=2
6789                 rp="What is the size of a short integer (in bytes)?"
6790                 . ./myread
6791                 shortsize="$ans"
6792         fi
6793         ;;
6794 esac
6795 $rm -f intsize intsize.*
6796
6797 : check for long long
6798 echo " "
6799 echo $n "Checking to see if your system supports long long...$c" >&4
6800 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
6801 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6802         val="$define"
6803         echo " Yup, it does." >&4
6804 else
6805         val="$undef"
6806         echo " Nope, it doesn't." >&4
6807 fi
6808 $rm try.*
6809 set d_longlong
6810 eval $setvar
6811
6812 : check for length of long long
6813 case "${d_longlong}${longlongsize}" in
6814 $define)
6815         echo " "
6816         $echo $n "Checking to see how big your long longs are...$c" >&4
6817         $cat >try.c <<'EOCP'
6818 #include <stdio.h>
6819 int main()
6820 {
6821         printf("%d\n", sizeof(long long));
6822 }
6823 EOCP
6824         set try
6825         if eval $compile_ok; then
6826                 longlongsize=`./try`
6827                 $echo " $longlongsize bytes." >&4
6828         else
6829                 dflt='8'
6830                 echo " "
6831                 echo "(I can't seem to compile the test program.  Guessing...)"
6832                 rp="What is the size of a long long (in bytes)?"
6833                 . ./myread
6834                 longlongsize="$ans"
6835         fi
6836         if $test "X$longsize" = "X$longlongsize"; then
6837                 echo "(That isn't any different from an ordinary long.)"
6838         fi      
6839         ;;
6840 esac
6841 $rm -f try.c try
6842
6843 echo " "
6844
6845 if $test X"$intsize" = X8 -o X"$longsize" = X8 -o X"$d_int64t" = X"$define" -o X"$d_longlong" = X"$define"; then
6846
6847 echo "Checking how to print 64-bit integers..." >&4
6848
6849 if $test X"$sPRId64" = X -a X"$intsize" = X8; then
6850         quad=int
6851         $cat >try.c <<'EOCP'
6852 #include <sys/types.h>
6853 #include <stdio.h>
6854 int main() {
6855   int q = 12345678901;
6856   printf("%ld\n", q);
6857 }
6858 EOCP
6859         set try
6860         if eval $compile; then
6861                 yyy=`./try$exe_ext`
6862                 case "$yyy" in
6863                 12345678901)
6864                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
6865                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
6866                         echo "We will use %d."
6867                         ;;
6868                 esac
6869         fi
6870 fi
6871
6872 if $test X"$sPRId64" = X -a X"$longsize" = X8; then
6873         quad=long
6874         $cat >try.c <<'EOCP'
6875 #include <sys/types.h>
6876 #include <stdio.h>
6877 int main() {
6878   long q = 12345678901;
6879   printf("%ld\n", q);
6880 }
6881 EOCP
6882         set try
6883         if eval $compile; then
6884                 yyy=`./try$exe_ext`
6885                 case "$yyy" in
6886                 12345678901)
6887                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
6888                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
6889                         echo "We will use %ld."
6890                         ;;
6891                 esac
6892         fi
6893 fi
6894
6895 if $test X"$sPRId64" = X -a X"$i_inttypes.h" = X"$define" -a X"$d_int64t" = X"$define"; then
6896         quad=int64_t
6897         $cat >try.c <<'EOCP'
6898 #include <sys/types.h>
6899 #include <inttypes.h>
6900 #include <stdio.h>
6901 int main() {
6902   int64_t q = 12345678901;
6903   printf("%" PRId64 "\n", q);
6904 }
6905 EOCP
6906         set try
6907         if eval $compile; then
6908                 yyy=`./try$exe_ext`
6909                 case "$yyy" in
6910                 12345678901)
6911                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
6912                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
6913                         echo "We will use the C9X style."
6914                         ;;
6915                 esac
6916         fi
6917 fi
6918
6919 if $test X"$sPRId64" = X -a X"$d_longlong" = X"$define" -a X"$longlongsize" = X8; then
6920         quad="long long"
6921         $cat >try.c <<'EOCP'
6922 #include <sys/types.h>
6923 #include <stdio.h>
6924 int main() {
6925   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
6926   printf("%lld\n", q);
6927 }
6928 EOCP
6929         set try
6930         if eval $compile; then
6931                 yyy=`./try$exe_ext`
6932                 case "$yyy" in
6933                 12345678901)
6934                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
6935                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
6936                         echo "We will use the %lld style."
6937                         ;;
6938                 esac
6939         fi
6940 fi
6941
6942 if $test X"$sPRId64" = X -a X"$quad" != X; then
6943         $cat >try.c <<EOCP
6944 #include <sys/types.h>
6945 #include <stdio.h>
6946 int main() {
6947   $quad q = 12345678901;
6948   printf("%Ld\n", q);
6949 }
6950 EOCP
6951         set try
6952         if eval $compile; then
6953                 yyy=`./try$exe_ext`
6954                 case "$yyy" in
6955                 12345678901)
6956                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
6957                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
6958                         echo "We will use %lld."
6959                         ;;
6960                 esac
6961         fi
6962 fi
6963
6964 if $test X"$sPRId64" = X -a X"$quad" != X; then
6965         $cat >try.c <<EOCP
6966 #include <sys/types.h>
6967 #include <stdio.h>
6968 int main() {
6969   $quad q = 12345678901;
6970   printf("%qd\n", q);
6971 }
6972 EOCP
6973         set try
6974         if eval $compile; then
6975                 yyy=`./try$exe_ext`
6976                 case "$yyy" in
6977                 12345678901)
6978                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
6979                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
6980                         echo "We will use %qd."
6981                         ;;
6982                 esac
6983         fi
6984 fi
6985
6986 if $test X"$sPRId64" = X; then
6987         echo "Cannot figure out how to print 64-bit integers." >&4
6988 fi
6989
6990 $rm -f try try.*
6991
6992 fi # intsize -o longsize -o d_int64t -o d_longlong
6993
6994 case "$sPRId64" in
6995 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
6996         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
6997         ;;
6998 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
6999         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
7000         ;;
7001 esac
7002
7003 : check for length of double
7004 echo " "
7005 case "$doublesize" in
7006 '')
7007         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7008         $cat >try.c <<'EOCP'
7009 #include <stdio.h>
7010 int main()
7011 {
7012         printf("%d\n", sizeof(double));
7013 }
7014 EOCP
7015         set try
7016         if eval $compile_ok; then
7017                 doublesize=`./try`
7018                 $echo " $doublesize bytes." >&4
7019         else
7020                 dflt='8'
7021                 echo "(I can't seem to compile the test program.  Guessing...)"
7022                 rp="What is the size of a double precision number (in bytes)?"
7023                 . ./myread
7024                 doublesize="$ans"
7025         fi
7026         ;;
7027 esac
7028 $rm -f try.c try
7029
7030 : check for long doubles
7031 echo " "
7032 echo $n "Checking to see if your system supports long double...$c" >&4
7033 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
7034 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7035         val="$define"
7036         echo " Yup, it does." >&4
7037 else
7038         val="$undef"
7039         echo " Nope, it doesn't." >&4
7040 fi
7041 $rm try.*
7042 set d_longdbl
7043 eval $setvar
7044
7045 : check for length of long double
7046 case "${d_longdbl}${longdblsize}" in
7047 $define)
7048         echo " "
7049         $echo $n "Checking to see how big your long doubles are...$c" >&4
7050         $cat >try.c <<'EOCP'
7051 #include <stdio.h>
7052 int main()
7053 {
7054         printf("%d\n", sizeof(long double));
7055 }
7056 EOCP
7057         set try
7058         if eval $compile; then
7059                 longdblsize=`./try`
7060                 $echo " $longdblsize bytes." >&4
7061         else
7062                 dflt='8'
7063                 echo " "
7064                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7065                 rp="What is the size of a long double (in bytes)?"
7066                 . ./myread
7067                 longdblsize="$ans"
7068         fi
7069         if $test "X$doublesize" = "X$longdblsize"; then
7070                 echo "(That isn't any different from an ordinary double.)"
7071         fi      
7072         ;;
7073 esac
7074 $rm -f try.c try
7075
7076 echo " "
7077
7078 if $test X"$d_longdbl" = X"$define"; then
7079
7080 echo "Checking how to print long doubles..." >&4
7081
7082 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7083         $cat >try.c <<'EOCP'
7084 #include <sys/types.h>
7085 #include <stdio.h>
7086 int main() {
7087   double d = 123.456;
7088   printf("%.3f\n", d);
7089 }
7090 EOCP
7091         set try
7092         if eval $compile; then
7093                 yyy=`./try$exe_ext`
7094                 case "$yyy" in
7095                 123.456)
7096                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7097                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7098                         echo "We will use %f."
7099                         ;;
7100                 esac
7101         fi
7102 fi
7103
7104 if $test X"$sPRIfldbl" = X; then
7105         $cat >try.c <<'EOCP'
7106 #include <sys/types.h>
7107 #include <stdio.h>
7108 int main() {
7109   long double d = 123.456;
7110   printf("%.3llf\n", d);
7111 }
7112 EOCP
7113         set try
7114         if eval $compile; then
7115                 yyy=`./try$exe_ext`
7116                 case "$yyy" in
7117                 123.456)
7118                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7119                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7120                         echo "We will use %llf."
7121                         ;;
7122                 esac
7123         fi
7124 fi
7125
7126 if $test X"$sPRIfldbl" = X; then
7127         $cat >try.c <<'EOCP'
7128 #include <sys/types.h>
7129 #include <stdio.h>
7130 int main() {
7131   long double d = 123.456;
7132   printf("%.3Lf\n", d);
7133 }
7134 EOCP
7135         set try
7136         if eval $compile; then
7137                 yyy=`./try$exe_ext`
7138                 case "$yyy" in
7139                 123.456)
7140                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7141                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7142                         echo "We will use %Lf."
7143                         ;;
7144                 esac
7145         fi
7146 fi
7147
7148 if $test X"$sPRIfldbl" = X; then
7149         $cat >try.c <<'EOCP'
7150 #include <sys/types.h>
7151 #include <stdio.h>
7152 int main() {
7153   long double d = 123.456;
7154   printf("%.3lf\n", d);
7155 }
7156 EOCP
7157         set try
7158         if eval $compile; then
7159                 yyy=`./try$exe_ext`
7160                 case "$yyy" in
7161                 123.456)
7162                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7163                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7164                         echo "We will use %lf."
7165                         ;;
7166                 esac
7167         fi
7168 fi
7169
7170 if $test X"$sPRIfldbl" = X; then
7171         echo "Cannot figure out how to print long doubles." >&4
7172 fi
7173
7174 $rm -f try try.*
7175
7176 fi # d_longdbl
7177
7178 case "$sPRIfldbl" in
7179 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7180         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7181         ;;
7182 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7183         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7184         ;;
7185 esac
7186
7187 : Initialize h_fcntl
7188 h_fcntl=false
7189
7190 : Initialize h_sysfile
7191 h_sysfile=false
7192
7193 : access call always available on UNIX
7194 set access d_access
7195 eval $inlibc
7196
7197 : locate the flags for 'access()'
7198 case "$d_access" in
7199 "$define")
7200         echo " "
7201         $cat >access.c <<'EOCP'
7202 #include <sys/types.h>
7203 #ifdef I_FCNTL
7204 #include <fcntl.h>
7205 #endif
7206 #ifdef I_SYS_FILE
7207 #include <sys/file.h>
7208 #endif
7209 #ifdef I_UNISTD
7210 #include <unistd.h>
7211 #endif
7212 int main() {
7213         exit(R_OK);
7214 }
7215 EOCP
7216         : check sys/file.h first, no particular reason here
7217         if $test `./findhdr sys/file.h` && \
7218                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7219                 h_sysfile=true;
7220                 echo "<sys/file.h> defines the *_OK access constants." >&4
7221         elif $test `./findhdr fcntl.h` && \
7222                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7223                 h_fcntl=true;
7224                 echo "<fcntl.h> defines the *_OK access constants." >&4
7225         elif $test `./findhdr unistd.h` && \
7226                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7227                 echo "<unistd.h> defines the *_OK access constants." >&4
7228         else
7229                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7230         fi
7231         ;;
7232 esac
7233 $rm -f access*
7234
7235 : see if accessx exists
7236 set accessx d_accessx
7237 eval $inlibc
7238
7239 : see if alarm exists
7240 set alarm d_alarm
7241 eval $inlibc
7242
7243 : see if atolf exists
7244 set atolf d_atolf
7245 eval $inlibc
7246
7247 : see if atoll exists
7248 set atoll d_atoll
7249 eval $inlibc
7250
7251 : Look for GNU-cc style attribute checking
7252 echo " "
7253 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7254 $cat >attrib.c <<'EOCP'
7255 #include <stdio.h>
7256 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7257 EOCP
7258 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7259         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7260                 echo "Your C compiler doesn't fully support __attribute__."
7261                 val="$undef"
7262         else
7263                 echo "Your C compiler supports __attribute__."
7264                 val="$define"
7265         fi
7266 else
7267         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7268         val="$undef"
7269 fi
7270 set d_attribut
7271 eval $setvar
7272 $rm -f attrib*
7273
7274 : see if bcmp exists
7275 set bcmp d_bcmp
7276 eval $inlibc
7277
7278 : see if bcopy exists
7279 set bcopy d_bcopy
7280 eval $inlibc
7281
7282 : see if this is a unistd.h system
7283 set unistd.h i_unistd
7284 eval $inhdr
7285
7286 : see if getpgrp exists
7287 set getpgrp d_getpgrp
7288 eval $inlibc
7289
7290 case "$d_getpgrp" in
7291 "$define")
7292         echo " "
7293         echo "Checking to see which flavor of getpgrp is in use..."
7294         $cat >set.c <<EOP
7295 #$i_unistd I_UNISTD
7296 #include <sys/types.h>
7297 #ifdef I_UNISTD
7298 #  include <unistd.h>
7299 #endif
7300 int main()
7301 {
7302         if (getuid() == 0) {
7303                 printf("(I see you are running Configure as super-user...)\n");
7304                 setuid(1);
7305         }
7306 #ifdef TRY_BSD_PGRP
7307         if (getpgrp(1) == 0)
7308                 exit(0);
7309 #else
7310         if (getpgrp() > 0)
7311                 exit(0);
7312 #endif
7313         exit(1);
7314 }
7315 EOP
7316         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7317                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7318                 val="$define"
7319         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7320                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7321                 val="$undef"
7322         else
7323                 echo "I can't seem to compile and run the test program."
7324                 if ./usg; then
7325                         xxx="a USG one, i.e. you use getpgrp()."
7326                 else
7327                         # SVR4 systems can appear rather BSD-ish.
7328                         case "$i_unistd" in
7329                         $undef)
7330                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7331                                 val="$define"
7332                                 ;;
7333                         $define)
7334                                 xxx="probably a USG one, i.e. you use getpgrp()."
7335                                 val="$undef"
7336                                 ;;
7337                         esac
7338                 fi
7339                 echo "Assuming your getpgrp is $xxx" >&4
7340         fi
7341         ;;
7342 *) val="$undef";;
7343 esac
7344 set d_bsdgetpgrp
7345 eval $setvar
7346 $rm -f set set.c
7347
7348 : see if setpgrp exists
7349 set setpgrp d_setpgrp
7350 eval $inlibc
7351
7352 case "$d_setpgrp" in
7353 "$define")
7354         echo " "
7355         echo "Checking to see which flavor of setpgrp is in use..."
7356         $cat >set.c <<EOP
7357 #$i_unistd I_UNISTD
7358 #include <sys/types.h>
7359 #ifdef I_UNISTD
7360 #  include <unistd.h>
7361 #endif
7362 int main()
7363 {
7364         if (getuid() == 0) {
7365                 printf("(I see you are running Configure as super-user...)\n");
7366                 setuid(1);
7367         }
7368 #ifdef TRY_BSD_PGRP
7369         if (-1 == setpgrp(1, 1))
7370                 exit(0);
7371 #else
7372         if (setpgrp() != -1)
7373                 exit(0);
7374 #endif
7375         exit(1);
7376 }
7377 EOP
7378         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7379                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7380                 val="$define"
7381         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7382                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7383                 val="$undef"
7384         else
7385                 echo "(I can't seem to compile and run the test program.)"
7386                 if ./usg; then
7387                         xxx="a USG one, i.e. you use setpgrp()."
7388                 else
7389                         # SVR4 systems can appear rather BSD-ish.
7390                         case "$i_unistd" in
7391                         $undef)
7392                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7393                                 val="$define"
7394                                 ;;
7395                         $define)
7396                                 xxx="probably a USG one, i.e. you use setpgrp()."
7397                                 val="$undef"
7398                                 ;;
7399                         esac
7400                 fi
7401                 echo "Assuming your setpgrp is $xxx" >&4
7402         fi
7403         ;;
7404 *) val="$undef";;
7405 esac
7406 set d_bsdsetpgrp
7407 eval $setvar
7408 $rm -f set set.c
7409 : see if bzero exists
7410 set bzero d_bzero
7411 eval $inlibc
7412
7413 : see if signal is declared as pointer to function returning int or void
7414 echo " "
7415 xxx=`./findhdr signal.h`
7416 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7417 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7418         echo "You have int (*signal())() instead of void." >&4
7419         val="$undef"
7420 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7421         echo "You have void (*signal())()." >&4
7422         val="$define"
7423 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7424         echo "You have int (*signal())() instead of void." >&4
7425         val="$undef"
7426 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7427         echo "You have void (*signal())()." >&4
7428         val="$define"
7429 else
7430         case "$d_voidsig" in
7431         '')
7432         echo "I can't determine whether signal handler returns void or int..." >&4
7433                 dflt=void
7434                 rp="What type does your signal handler return?"
7435                 . ./myread
7436                 case "$ans" in
7437                 v*) val="$define";;
7438                 *) val="$undef";;
7439                 esac;;
7440         "$define")
7441                 echo "As you already told me, signal handler returns void." >&4
7442                 val="$define"
7443                 ;;
7444         *)      echo "As you already told me, signal handler returns int." >&4
7445                 val="$undef"
7446                 ;;
7447         esac
7448 fi
7449 set d_voidsig
7450 eval $setvar
7451 case "$d_voidsig" in
7452 "$define") signal_t="void";;
7453 *) signal_t="int";;
7454 esac
7455 $rm -f $$.tmp
7456
7457 : check for ability to cast large floats to 32-bit ints.
7458 echo " "
7459 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7460 if $test "$intsize" -ge 4; then
7461         xxx=int
7462 else
7463         xxx=long
7464 fi
7465 $cat >try.c <<EOCP
7466 #include <stdio.h>
7467 #include <sys/types.h>
7468 #include <signal.h>
7469 $signal_t blech(s) int s; { exit(3); }
7470 int main()
7471 {
7472         $xxx i32;
7473         double f, g;
7474         int result = 0;
7475         char str[16];
7476         signal(SIGFPE, blech);
7477
7478         /* Don't let compiler optimize the test away.  Store the number 
7479            in a writable string for gcc to pass to sscanf under HP/UX.
7480         */
7481         sprintf(str, "2147483647");
7482         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7483         g = 10 * f;
7484         i32  = ($xxx) g;
7485
7486         /* x86 processors will probably give 0x8000 0000, which is a
7487        sign change.  We don't want that.  We want to mimic SPARC
7488            behavior here, which is to preserve the sign and give
7489            back 0x7fff ffff.
7490         */
7491         if (i32 != ($xxx) f)
7492                 result |= 1;
7493         exit(result);
7494 }
7495 EOCP
7496 set try
7497 if eval $compile_ok; then
7498         ./try
7499         yyy=$?
7500 else
7501         echo "(I can't seem to compile the test program--assuming it can't)"
7502         yyy=1
7503 fi
7504 case "$yyy" in
7505 0)      val="$define"
7506         echo "Yup, it can."
7507         ;;
7508 *)      val="$undef"
7509         echo "Nope, it can't."
7510         ;;
7511 esac
7512 set d_casti32
7513 eval $setvar
7514 $rm -f try try.*
7515
7516 : check for ability to cast negative floats to unsigned
7517 echo " "
7518 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7519 $cat >try.c <<EOCP
7520 #include <stdio.h>
7521 #include <sys/types.h>
7522 #include <signal.h>
7523 $signal_t blech(s) int s; { exit(7); }
7524 $signal_t blech_in_list(s) int s; { exit(4); }
7525 unsigned long dummy_long(p) unsigned long p; { return p; }
7526 unsigned int dummy_int(p) unsigned int p; { return p; }
7527 unsigned short dummy_short(p) unsigned short p; { return p; }
7528 int main()
7529 {
7530         double f;
7531         unsigned long along;
7532         unsigned int aint;
7533         unsigned short ashort;
7534         int result = 0;
7535         char str[16];
7536         
7537         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7538            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7539            optimized the whole file away
7540         */
7541         /* Store the number in a writable string for gcc to pass to 
7542            sscanf under HP/UX.
7543         */
7544         sprintf(str, "-123");
7545         sscanf(str, "%lf", &f);  /* f = -123.; */
7546
7547         signal(SIGFPE, blech);
7548         along = (unsigned long)f;
7549         aint = (unsigned int)f;
7550         ashort = (unsigned short)f;
7551         if (along != (unsigned long)-123)
7552                 result |= 1;
7553         if (aint != (unsigned int)-123)
7554                 result |= 1;
7555         if (ashort != (unsigned short)-123)
7556                 result |= 1;
7557         sprintf(str, "1073741824.");
7558         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7559         f = f + f;
7560         along = 0;
7561         along = (unsigned long)f;
7562         if (along != 0x80000000)
7563                 result |= 2;
7564         f -= 1.;
7565         along = 0;
7566         along = (unsigned long)f;
7567         if (along != 0x7fffffff)
7568                 result |= 1;
7569         f += 2.;
7570         along = 0;
7571         along = (unsigned long)f;
7572         if (along != 0x80000001)
7573                 result |= 2;
7574         if (result)
7575                 exit(result);
7576         signal(SIGFPE, blech_in_list);
7577         sprintf(str, "123.");
7578         sscanf(str, "%lf", &f);  /* f = 123.; */
7579         along = dummy_long((unsigned long)f);
7580         aint = dummy_int((unsigned int)f);
7581         ashort = dummy_short((unsigned short)f);
7582         if (along != (unsigned long)123)
7583                 result |= 4;
7584         if (aint != (unsigned int)123)
7585                 result |= 4;
7586         if (ashort != (unsigned short)123)
7587                 result |= 4;
7588         exit(result);
7589
7590 }
7591 EOCP
7592 set try
7593 if eval $compile_ok; then
7594         ./try
7595         castflags=$?
7596 else
7597         echo "(I can't seem to compile the test program--assuming it can't)"
7598         castflags=7
7599 fi
7600 case "$castflags" in
7601 0)      val="$define"
7602         echo "Yup, it can."
7603         ;;
7604 *)      val="$undef"
7605         echo "Nope, it can't."
7606         ;;
7607 esac
7608 set d_castneg
7609 eval $setvar
7610 $rm -f try.*
7611
7612 : see if vprintf exists
7613 echo " "
7614 if set vprintf val -f d_vprintf; eval $csym; $val; then
7615         echo 'vprintf() found.' >&4
7616         val="$define"
7617         $cat >vprintf.c <<'EOF'
7618 #include <varargs.h>
7619
7620 int main() { xxx("foo"); }
7621
7622 xxx(va_alist)
7623 va_dcl
7624 {
7625         va_list args;
7626         char buf[10];
7627
7628         va_start(args);
7629         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7630 }
7631 EOF
7632         set vprintf
7633         if eval $compile && ./vprintf; then
7634                 echo "Your vsprintf() returns (int)." >&4
7635                 val2="$undef"
7636         else
7637                 echo "Your vsprintf() returns (char*)." >&4
7638                 val2="$define"
7639         fi
7640 else
7641         echo 'vprintf() NOT found.' >&4
7642                 val="$undef"
7643                 val2="$undef"
7644 fi
7645 set d_vprintf
7646 eval $setvar
7647 val=$val2
7648 set d_charvspr
7649 eval $setvar
7650
7651 : see if chown exists
7652 set chown d_chown
7653 eval $inlibc
7654
7655 : see if chroot exists
7656 set chroot d_chroot
7657 eval $inlibc
7658
7659 : see if chsize exists
7660 set chsize d_chsize
7661 eval $inlibc
7662
7663 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
7664 while $test $# -ge 2; do
7665         case "$1" in
7666         $define) echo "#include <$2>";;
7667         esac ;
7668     shift 2;
7669 done > try.c;
7670 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
7671 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7672         val="$define";
7673 else
7674         val="$undef";
7675 fi;
7676 set $varname;
7677 eval $setvar;
7678 $rm -f try.c try.o'
7679
7680 : see if this is a sys/uio.h system
7681 set sys/uio.h i_sysuio
7682 eval $inhdr
7683
7684 echo "Checking to see if your system supports struct iovec..." >&4
7685 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
7686 eval $hasfield
7687 case "$d_iovec_s" in
7688 "$define")      echo "Yup, it does." >&4
7689                 ;;
7690 *)              echo "Nope, it doesn't." >&4
7691                 ;;
7692 esac
7693
7694 socketlib=''
7695 sockethdr=''
7696 : see whether socket exists
7697 echo " "
7698 $echo $n "Hmm... $c" >&4
7699 if set socket val -f d_socket; eval $csym; $val; then
7700         echo "Looks like you have Berkeley networking support." >&4
7701         d_socket="$define"
7702         if set setsockopt val -f; eval $csym; $val; then
7703                 d_oldsock="$undef"
7704         else
7705                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
7706                 d_oldsock="$define"
7707         fi
7708 else
7709         if $contains socklib libc.list >/dev/null 2>&1; then
7710                 echo "Looks like you have Berkeley networking support." >&4
7711                 d_socket="$define"
7712                 : we will have to assume that it supports the 4.2 BSD interface
7713                 d_oldsock="$undef"
7714         else
7715                 echo "You don't have Berkeley networking in libc$_a..." >&4
7716                 if test "X$d_socket" = "X$define"; then
7717                    echo "...but you seem to believe that you have sockets." >&4
7718                 else
7719                         for net in net socket
7720                         do
7721                                 if test -f /usr/lib/lib$net$_a; then
7722                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
7723                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
7724                                         if $contains socket libc.list >/dev/null 2>&1; then
7725                                                 d_socket="$define"
7726                                                 socketlib="-l$net"
7727                                                 case "$net" in
7728                                                 net)
7729                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
7730                                                         sockethdr="-I/usr/netinclude"
7731                                                         ;;
7732                                                 esac
7733                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
7734                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
7735                                                         d_oldsock="$undef"
7736                                                 else
7737                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
7738                                                         d_oldsock="$define"
7739                                                 fi
7740                                                 break
7741                                         fi
7742                                 fi
7743                         done
7744                         if test "X$d_socket" != "X$define"; then
7745                            echo "or anywhere else I see." >&4
7746                            d_socket="$undef"
7747                            d_oldsock="$undef"
7748                         fi
7749                 fi
7750         fi
7751 fi
7752
7753 : see if socketpair exists
7754 set socketpair d_sockpair
7755 eval $inlibc
7756
7757
7758 echo " "
7759 echo "Checking the availability of certain socket constants..." >& 4
7760 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
7761         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
7762         $cat >try.c <<EOF
7763 #include <sys/types.h>
7764 #include <sys/socket.h>
7765 int main() {
7766     int i = $ENUM;
7767 }
7768 EOF
7769         val="$undef"
7770         set try; if eval $compile; then
7771                 val="$define"
7772         fi
7773         set d_${enum}; eval $setvar
7774         $rm -f try.c try
7775 done
7776
7777 set sendmsg d_sendmsg
7778 eval $inlibc
7779
7780 set recvmsg d_recvmsg
7781 eval $inlibc
7782
7783 echo " "
7784 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
7785 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7786 eval $hasfield
7787 case "$d_msghdr_s" in
7788 "$define")      echo "Yup, it does." >&4
7789                 ;;
7790 *)              echo "Nope, it doesn't." >&4
7791                 ;;
7792 esac
7793
7794 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7795 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7796 eval $hasfield
7797 case "$d_cmsghdr_s" in
7798 "$define")      echo "Yup, it does." >&4
7799                 ;;
7800 *)              echo "Nope, it doesn't." >&4
7801                 ;;
7802 esac
7803
7804 : check for const keyword
7805 echo " "
7806 echo 'Checking to see if your C compiler knows about "const"...' >&4
7807 $cat >const.c <<'EOCP'
7808 typedef struct spug { int drokk; } spug;
7809 int main()
7810 {
7811         const char *foo;
7812         const spug y;
7813 }
7814 EOCP
7815 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7816         val="$define"
7817         echo "Yup, it does."
7818 else
7819         val="$undef"
7820         echo "Nope, it doesn't."
7821 fi
7822 set d_const
7823 eval $setvar
7824
7825 : see if crypt exists
7826 echo " "
7827 if set crypt val -f d_crypt; eval $csym; $val; then
7828         echo 'crypt() found.' >&4
7829         val="$define"
7830         cryptlib=''
7831 else
7832         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7833         if $test -z "$cryptlib"; then
7834                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7835         else
7836                 cryptlib=-lcrypt
7837         fi
7838         if $test -z "$cryptlib"; then
7839                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7840         else
7841                 cryptlib=-lcrypt
7842         fi
7843         if $test -z "$cryptlib"; then
7844                 cryptlib=`./loc libcrypt$_a "" $libpth`
7845         else
7846                 cryptlib=-lcrypt
7847         fi
7848         if $test -z "$cryptlib"; then
7849                 echo 'crypt() NOT found.' >&4
7850                 val="$undef"
7851         else
7852                 val="$define"
7853         fi
7854 fi
7855 set d_crypt
7856 eval $setvar
7857
7858 : get csh whereabouts
7859 case "$csh" in
7860 'csh') val="$undef" ;;
7861 *) val="$define" ;;
7862 esac
7863 set d_csh
7864 eval $setvar
7865 : Respect a hint or command line value for full_csh.
7866 case "$full_csh" in
7867 '') full_csh=$csh ;;
7868 esac
7869
7870 : see if cuserid exists
7871 set cuserid d_cuserid
7872 eval $inlibc
7873
7874 : see if this is a limits.h system
7875 set limits.h i_limits
7876 eval $inhdr
7877
7878 : see if this is a float.h system
7879 set float.h i_float
7880 eval $inhdr
7881
7882 : See if number of significant digits in a double precision number is known
7883 echo " "
7884 $cat >dbl_dig.c <<EOM
7885 #$i_limits I_LIMITS
7886 #$i_float I_FLOAT
7887 #ifdef I_LIMITS
7888 #include <limits.h>
7889 #endif
7890 #ifdef I_FLOAT
7891 #include <float.h>
7892 #endif
7893 #ifdef DBL_DIG
7894 printf("Contains DBL_DIG");
7895 #endif
7896 EOM
7897 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7898 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7899         echo "DBL_DIG found." >&4
7900         val="$define"
7901 else
7902         echo "DBL_DIG NOT found." >&4
7903         val="$undef"
7904 fi
7905 $rm -f dbl_dig.?
7906 set d_dbl_dig
7907 eval $setvar
7908
7909 : see if difftime exists
7910 set difftime d_difftime
7911 eval $inlibc
7912
7913 : see if this is a dirent system
7914 echo " "
7915 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7916         val="$define"
7917         echo "<dirent.h> found." >&4
7918 else
7919         val="$undef"
7920         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7921                 echo "<sys/dir.h> found." >&4
7922                 echo " "
7923         else
7924                 xinc=`./findhdr sys/ndir.h`
7925         fi
7926         echo "<dirent.h> NOT found." >&4
7927 fi
7928 set i_dirent
7929 eval $setvar
7930
7931 : Look for type of directory structure.
7932 echo " "
7933 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7934
7935 case "$direntrytype" in
7936 ''|' ')
7937         case "$i_dirent" in
7938         $define) guess1='struct dirent' ;;
7939         *) guess1='struct direct'  ;;
7940         esac
7941         ;;
7942 *)      guess1="$direntrytype"
7943         ;;
7944 esac
7945
7946 case "$guess1" in
7947 'struct dirent') guess2='struct direct' ;;
7948 *) guess2='struct dirent' ;;
7949 esac
7950                 
7951 if $contains "$guess1" try.c >/dev/null 2>&1; then
7952         direntrytype="$guess1"
7953         echo "Your directory entries are $direntrytype." >&4
7954 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7955         direntrytype="$guess2"
7956         echo "Your directory entries seem to be $direntrytype." >&4
7957 else
7958         echo "I don't recognize your system's directory entries." >&4
7959         rp="What type is used for directory entries on this system?"
7960         dflt="$guess1"
7961         . ./myread
7962         direntrytype="$ans"
7963 fi
7964 $rm -f try.c
7965
7966
7967 : see if the directory entry stores field length
7968 echo " "
7969 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7970 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7971         echo "Good, your directory entry keeps length information in d_namlen." >&4
7972         val="$define"
7973 else
7974         echo "Your directory entry does not know about the d_namlen field." >&4
7975         val="$undef"
7976 fi
7977 set d_dirnamlen
7978 eval $setvar
7979 $rm -f try.c
7980
7981 : see if dlerror exists
7982 xxx_runnm="$runnm"
7983 runnm=false
7984 set dlerror d_dlerror
7985 eval $inlibc
7986 runnm="$xxx_runnm"
7987
7988 : see if dlfcn is available
7989 set dlfcn.h i_dlfcn
7990 eval $inhdr
7991
7992 case "$usedl" in
7993 $define|y|true)
7994         $cat << EOM
7995
7996 On a few systems, the dynamically loaded modules that perl generates and uses
7997 will need a different extension than shared libs. The default will probably
7998 be appropriate.
7999
8000 EOM
8001         case "$dlext" in
8002         '')     dflt="$so" ;;
8003         *)      dflt="$dlext" ;;
8004         esac
8005         rp='What is the extension of dynamically loaded modules'
8006         . ./myread
8007         dlext="$ans"
8008         ;;
8009 *)
8010         dlext="none"
8011         ;;
8012 esac
8013
8014 : Check if dlsym need a leading underscore
8015 echo " "
8016 val="$undef"
8017
8018 case "$dlsrc" in
8019 dl_dlopen.xs)
8020         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8021         $cat >dyna.c <<'EOM'
8022 fred () { }
8023 EOM
8024
8025 $cat >fred.c<<EOM
8026
8027 #include <stdio.h>
8028 #$i_dlfcn I_DLFCN
8029 #ifdef I_DLFCN
8030 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8031 #else
8032 #include <sys/types.h>
8033 #include <nlist.h>
8034 #include <link.h>
8035 #endif
8036
8037 extern int fred() ;
8038
8039 int main()
8040 {
8041     void * handle ;
8042     void * symbol ;
8043 #ifndef RTLD_LAZY
8044     int mode = 1 ;
8045 #else
8046     int mode = RTLD_LAZY ;
8047 #endif
8048     handle = dlopen("./dyna.$dlext", mode) ;
8049     if (handle == NULL) {
8050         printf ("1\n") ;
8051         fflush (stdout) ;
8052         exit(0);
8053     }
8054     symbol = dlsym(handle, "fred") ;
8055     if (symbol == NULL) {
8056         /* try putting a leading underscore */
8057         symbol = dlsym(handle, "_fred") ;
8058         if (symbol == NULL) {
8059             printf ("2\n") ;
8060             fflush (stdout) ;
8061             exit(0);
8062         }
8063         printf ("3\n") ;
8064     }
8065     else
8066         printf ("4\n") ;
8067     fflush (stdout) ;
8068     exit(0);
8069 }
8070 EOM
8071         : Call the object file tmp-dyna.o in case dlext=o.
8072         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8073                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8074                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8075                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8076                 xxx=`./fred`
8077                 case $xxx in
8078                 1)      echo "Test program failed using dlopen." >&4
8079                         echo "Perhaps you should not use dynamic loading." >&4;;
8080                 2)      echo "Test program failed using dlsym." >&4
8081                         echo "Perhaps you should not use dynamic loading." >&4;;
8082                 3)      echo "dlsym needs a leading underscore" >&4
8083                         val="$define" ;;
8084                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8085                 esac
8086         else
8087                 echo "I can't compile and run the test program." >&4
8088                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8089         fi
8090         ;;
8091 esac
8092                 
8093 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8094
8095 set d_dlsymun
8096 eval $setvar
8097
8098 hasproto='varname=$1; func=$2; shift; shift;
8099 while $test $# -ge 2; do
8100         case "$1" in
8101         $define) echo "#include <$2>";;
8102         esac ;
8103     shift 2;
8104 done > try.c;
8105 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8106 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8107         echo "$func() prototype found.";
8108         val="$define";
8109 else
8110         echo "$func() prototype NOT found.";
8111         val="$undef";
8112 fi;
8113 set $varname;
8114 eval $setvar;
8115 $rm -f try.c tryout.c'
8116
8117 : see if prototype for drand48 is available
8118 echo " "
8119 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8120 eval $hasproto
8121
8122 : see if dup2 exists
8123 set dup2 d_dup2
8124 eval $inlibc
8125
8126 : see if eaccess exists
8127 set eaccess d_eaccess
8128 eval $inlibc
8129
8130 : see if endgrent exists
8131 set endgrent d_endgrent
8132 eval $inlibc
8133
8134 : see if endhostent exists
8135 set endhostent d_endhent
8136 eval $inlibc
8137
8138 : see if endnetent exists
8139 set endnetent d_endnent
8140 eval $inlibc
8141
8142 : see if endprotoent exists
8143 set endprotoent d_endpent
8144 eval $inlibc
8145
8146 : see if endpwent exists
8147 set endpwent d_endpwent
8148 eval $inlibc
8149
8150 : see if endservent exists
8151 set endservent d_endsent
8152 eval $inlibc
8153
8154 : see if endspent exists
8155 set endspent d_endspent
8156 eval $inlibc
8157
8158 : Locate the flags for 'open()'
8159 echo " "
8160 $cat >open3.c <<'EOCP'
8161 #include <sys/types.h>
8162 #ifdef I_FCNTL
8163 #include <fcntl.h>
8164 #endif
8165 #ifdef I_SYS_FILE
8166 #include <sys/file.h>
8167 #endif
8168 int main() {
8169         if(O_RDONLY);
8170 #ifdef O_TRUNC
8171         exit(0);
8172 #else
8173         exit(1);
8174 #endif
8175 }
8176 EOCP
8177 : check sys/file.h first to get FREAD on Sun
8178 if $test `./findhdr sys/file.h` && \
8179                 set open3 -DI_SYS_FILE && eval $compile; then
8180         h_sysfile=true;
8181         echo "<sys/file.h> defines the O_* constants..." >&4
8182         if ./open3; then
8183                 echo "and you have the 3 argument form of open()." >&4
8184                 val="$define"
8185         else
8186                 echo "but not the 3 argument form of open().  Oh, well." >&4
8187                 val="$undef"
8188         fi
8189 elif $test `./findhdr fcntl.h` && \
8190                 set open3 -DI_FCNTL && eval $compile; then
8191         h_fcntl=true;
8192         echo "<fcntl.h> defines the O_* constants..." >&4
8193         if ./open3; then
8194                 echo "and you have the 3 argument form of open()." >&4
8195                 val="$define"
8196         else
8197                 echo "but not the 3 argument form of open().  Oh, well." >&4
8198                 val="$undef"
8199         fi
8200 else
8201         val="$undef"
8202         echo "I can't find the O_* constant definitions!  You got problems." >&4
8203 fi
8204 set d_open3
8205 eval $setvar
8206 $rm -f open3*
8207
8208 : check for non-blocking I/O stuff
8209 case "$h_sysfile" in
8210 true) echo "#include <sys/file.h>" > head.c;;
8211 *)
8212         case "$h_fcntl" in
8213         true) echo "#include <fcntl.h>" > head.c;;
8214         *) echo "#include <sys/fcntl.h>" > head.c;;
8215         esac
8216         ;;
8217 esac
8218 echo " "
8219 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8220 case "$o_nonblock" in
8221 '')
8222         $cat head.c > try.c
8223         $cat >>try.c <<'EOCP'
8224 int main() {
8225 #ifdef O_NONBLOCK
8226         printf("O_NONBLOCK\n");
8227         exit(0);
8228 #endif
8229 #ifdef O_NDELAY
8230         printf("O_NDELAY\n");
8231         exit(0);
8232 #endif
8233 #ifdef FNDELAY
8234         printf("FNDELAY\n");
8235         exit(0);
8236 #endif
8237         exit(0);
8238 }
8239 EOCP
8240         set try
8241         if eval $compile_ok; then
8242                 o_nonblock=`./try`
8243                 case "$o_nonblock" in
8244                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8245                 *) echo "Seems like we can use $o_nonblock.";;
8246                 esac
8247         else
8248                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8249         fi
8250         ;;
8251 *) echo "Using $hint value $o_nonblock.";;
8252 esac
8253 $rm -f try try.* .out core
8254
8255 echo " "
8256 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8257 case "$eagain" in
8258 '')
8259         $cat head.c > try.c
8260         $cat >>try.c <<EOCP
8261 #include <errno.h>
8262 #include <sys/types.h>
8263 #include <signal.h>
8264 #define MY_O_NONBLOCK $o_nonblock
8265 #ifndef errno  /* XXX need better Configure test */
8266 extern int errno;
8267 #endif
8268 $signal_t blech(x) int x; { exit(3); }
8269 EOCP
8270         $cat >> try.c <<'EOCP'
8271 int main()
8272 {
8273         int pd[2];
8274         int pu[2];
8275         char buf[1];
8276         char string[100];
8277
8278         pipe(pd);       /* Down: child -> parent */
8279         pipe(pu);       /* Up: parent -> child */
8280         if (0 != fork()) {
8281                 int ret;
8282                 close(pd[1]);   /* Parent reads from pd[0] */
8283                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8284                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8285                         exit(1);
8286                 signal(SIGALRM, blech);
8287                 alarm(5);
8288                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8289                         exit(2);
8290                 sprintf(string, "%d\n", ret);
8291                 write(2, string, strlen(string));
8292                 alarm(0);
8293 #ifdef EAGAIN
8294                 if (errno == EAGAIN) {
8295                         printf("EAGAIN\n");
8296                         goto ok;
8297                 }
8298 #endif
8299 #ifdef EWOULDBLOCK
8300                 if (errno == EWOULDBLOCK)
8301                         printf("EWOULDBLOCK\n");
8302 #endif
8303         ok:
8304                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8305                 sleep(2);                               /* Give it time to close our pipe */
8306                 alarm(5);
8307                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8308                 alarm(0);
8309                 sprintf(string, "%d\n", ret);
8310                 write(3, string, strlen(string));
8311                 exit(0);
8312         }
8313
8314         close(pd[0]);                   /* We write to pd[1] */
8315         close(pu[1]);                   /* We read from pu[0] */
8316         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8317         close(pd[1]);                   /* Pipe pd is now fully closed! */
8318         exit(0);                                /* Bye bye, thank you for playing! */
8319 }
8320 EOCP
8321         set try
8322         if eval $compile_ok; then
8323                 echo "$startsh" >mtry
8324                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8325                 chmod +x mtry
8326                 ./mtry >/dev/null 2>&1
8327                 case $? in
8328                 0) eagain=`$cat try.out`;;
8329                 1) echo "Could not perform non-blocking setting!";;
8330                 2) echo "I did a successful read() for something that was not there!";;
8331                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8332                 *) echo "Something terribly wrong happened during testing.";;
8333                 esac
8334                 rd_nodata=`$cat try.ret`
8335                 echo "A read() system call with no data present returns $rd_nodata."
8336                 case "$rd_nodata" in
8337                 0|-1) ;;
8338                 *)
8339                         echo "(That's peculiar, fixing that to be -1.)"
8340                         rd_nodata=-1
8341                         ;;
8342                 esac
8343                 case "$eagain" in
8344                 '')
8345                         echo "Forcing errno EAGAIN on read() with no data available."
8346                         eagain=EAGAIN
8347                         ;;
8348                 *)
8349                         echo "Your read() sets errno to $eagain when no data is available."
8350                         ;;
8351                 esac
8352                 status=`$cat try.err`
8353                 case "$status" in
8354                 0) echo "And it correctly returns 0 to signal EOF.";;
8355                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8356                 *) echo "However, your read() returns '$status' on EOF??";;
8357                 esac
8358                 val="$define"
8359                 if test "$status" = "$rd_nodata"; then
8360                         echo "WARNING: you can't distinguish between EOF and no data!"
8361                         val="$undef"
8362                 fi
8363         else
8364                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8365                 eagain=EAGAIN
8366         fi
8367         set d_eofnblk
8368         eval $setvar
8369         ;;
8370 *)
8371         echo "Using $hint value $eagain."
8372         echo "Your read() returns $rd_nodata when no data is present."
8373         case "$d_eofnblk" in
8374         "$define") echo "And you can see EOF because read() returns 0.";;
8375         "$undef") echo "But you can't see EOF status from read() returned value.";;
8376         *)
8377                 echo "(Assuming you can't see EOF status from read anyway.)"
8378                 d_eofnblk=$undef
8379                 ;;
8380         esac
8381         ;;
8382 esac
8383 $rm -f try try.* .out core head.c mtry
8384
8385 : see if fchmod exists
8386 set fchmod d_fchmod
8387 eval $inlibc
8388
8389 : see if fchown exists
8390 set fchown d_fchown
8391 eval $inlibc
8392
8393 : see if this is an fcntl system
8394 set fcntl d_fcntl
8395 eval $inlibc
8396
8397 : see if sys/select.h has to be included
8398 set sys/select.h i_sysselct
8399 eval $inhdr
8400
8401 : see if we should include time.h, sys/time.h, or both
8402 echo " "
8403 if test "X$timeincl" = X; then
8404         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8405         $echo $n "I'm now running the test program...$c"
8406         $cat >try.c <<'EOCP'
8407 #include <sys/types.h>
8408 #ifdef I_TIME
8409 #include <time.h>
8410 #endif
8411 #ifdef I_SYSTIME
8412 #ifdef SYSTIMEKERNEL
8413 #define KERNEL
8414 #endif
8415 #include <sys/time.h>
8416 #endif
8417 #ifdef I_SYSSELECT
8418 #include <sys/select.h>
8419 #endif
8420 int main()
8421 {
8422         struct tm foo;
8423 #ifdef S_TIMEVAL
8424         struct timeval bar;
8425 #endif
8426 #ifdef S_TIMEZONE
8427         struct timezone tzp;
8428 #endif
8429         if (foo.tm_sec == foo.tm_sec)
8430                 exit(0);
8431 #ifdef S_TIMEVAL
8432         if (bar.tv_sec == bar.tv_sec)
8433                 exit(0);
8434 #endif
8435         exit(1);
8436 }
8437 EOCP
8438         flags=''
8439         for s_timezone in '-DS_TIMEZONE' ''; do
8440         sysselect=''
8441         for s_timeval in '-DS_TIMEVAL' ''; do
8442         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8443         for i_time in '' '-DI_TIME'; do
8444         for i_systime in '-DI_SYSTIME' ''; do
8445                 case "$flags" in
8446                 '') $echo $n ".$c"
8447                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8448                         if eval $compile; then
8449                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8450                                 shift
8451                                 flags="$*"
8452                                 echo " "
8453                                 $echo $n "Succeeded with $flags$c"
8454                         fi
8455                         ;;
8456                 esac
8457         done
8458         done
8459         done
8460         done
8461         done
8462         timeincl=''
8463         echo " "
8464         case "$flags" in
8465         *SYSTIMEKERNEL*) i_systimek="$define"
8466                 timeincl=`./findhdr sys/time.h`
8467                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8468         *) i_systimek="$undef";;
8469         esac
8470         case "$flags" in
8471         *I_TIME*) i_time="$define"
8472                 timeincl=`./findhdr time.h`" $timeincl"
8473                 echo "We'll include <time.h>." >&4;;
8474         *) i_time="$undef";;
8475         esac
8476         case "$flags" in
8477         *I_SYSTIME*) i_systime="$define"
8478                 timeincl=`./findhdr sys/time.h`" $timeincl"
8479                 echo "We'll include <sys/time.h>." >&4;;
8480         *) i_systime="$undef";;
8481         esac
8482         $rm -f try.c try
8483 fi
8484
8485 : check for fd_set items
8486 $cat <<EOM
8487
8488 Checking to see how well your C compiler handles fd_set and friends ...
8489 EOM
8490 $cat >fd_set.c <<EOCP
8491 #$i_systime I_SYS_TIME
8492 #$i_sysselct I_SYS_SELECT
8493 #$d_socket HAS_SOCKET
8494 #include <sys/types.h>
8495 #ifdef HAS_SOCKET
8496 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8497 #endif
8498 #ifdef I_SYS_TIME
8499 #include <sys/time.h>
8500 #endif
8501 #ifdef I_SYS_SELECT
8502 #include <sys/select.h>
8503 #endif
8504 int main() {
8505         fd_set fds;
8506
8507 #ifdef TRYBITS
8508         if(fds.fds_bits);
8509 #endif
8510
8511 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8512         exit(0);
8513 #else
8514         exit(1);
8515 #endif
8516 }
8517 EOCP
8518 set fd_set -DTRYBITS
8519 if eval $compile; then
8520         d_fds_bits="$define"
8521         d_fd_set="$define"
8522         echo "Well, your system knows about the normal fd_set typedef..." >&4
8523         if ./fd_set; then
8524                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8525                 d_fd_macros="$define"
8526         else
8527                 $cat >&4 <<'EOM'
8528 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8529 EOM
8530                 d_fd_macros="$undef"
8531         fi
8532 else
8533         $cat <<'EOM'
8534 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8535 EOM
8536         set fd_set
8537         if eval $compile; then
8538                 d_fds_bits="$undef"
8539                 d_fd_set="$define"
8540                 echo "Well, your system has some sort of fd_set available..." >&4
8541                 if ./fd_set; then
8542                         echo "and you have the normal fd_set macros." >&4
8543                         d_fd_macros="$define"
8544                 else
8545                         $cat <<'EOM'
8546 but not the normal fd_set macros!  Gross!  More work for me...
8547 EOM
8548                         d_fd_macros="$undef"
8549                 fi
8550         else
8551         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8552                 d_fd_set="$undef"
8553                 d_fds_bits="$undef"
8554                 d_fd_macros="$undef"
8555         fi
8556 fi
8557 $rm -f fd_set*
8558
8559 : see if fgetpos exists
8560 set fgetpos d_fgetpos
8561 eval $inlibc
8562
8563 : see if flock exists
8564 set flock d_flock
8565 eval $inlibc
8566
8567 : see if fork exists
8568 set fork d_fork
8569 eval $inlibc
8570
8571 : see if pathconf exists
8572 set pathconf d_pathconf
8573 eval $inlibc
8574
8575 : see if fpathconf exists
8576 set fpathconf d_fpathconf
8577 eval $inlibc
8578
8579
8580 : see if llseek exists
8581 set llseek d_llseek
8582 eval $inlibc
8583
8584 : check for off64_t
8585 echo " "
8586 echo $n "Checking to see if your system supports off64_t...$c" >&4
8587 $cat >try.c <<EOCP
8588 #include <sys/types.h>
8589 #include <unistd.h>
8590 off64_t foo() { off64_t x; x = 7; return x; }'
8591 EOCP
8592 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8593         val="$define"
8594         echo " Yup, it does." >&4
8595 else
8596         val="$undef"
8597         echo " Nope, it doesn't." >&4
8598 fi
8599 $rm -f try.*
8600 set d_off64_t
8601 eval $setvar
8602
8603 : check for fpos64_t
8604 echo " "
8605 echo $n "Checking to see if your system supports fpos64_t...$c" >&4
8606 $cat >try.c <<EOCP
8607 #include <sys/stdio.h>
8608 fpos64_t foo() { fpos64_t x; x = 7; return x; }'
8609 EOCP
8610 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8611         val="$define"
8612         echo " Yup, it does." >&4
8613 else
8614         val="$undef"
8615         echo " Nope, it doesn't." >&4
8616 fi
8617 $rm -f try.*
8618 set d_fpos64_t
8619 eval $setvar
8620
8621 : see if fseeko exists
8622 set fseeko d_fseeko
8623 eval $inlibc
8624
8625 : see if fsetpos exists
8626 set fsetpos d_fsetpos
8627 eval $inlibc
8628
8629 : see if this is a sys/param system
8630 set sys/param.h i_sysparam
8631 eval $inhdr
8632
8633 : see if this is a sys/mount.h system
8634 set sys/mount.h i_sysmount
8635 eval $inhdr
8636
8637
8638 : see if statfs exists
8639 set statfs d_statfs
8640 eval $inlibc
8641
8642 : see if fstatfs exists
8643 set fstatfs d_fstatfs
8644 eval $inlibc
8645
8646 : see if statfs knows about mount flags
8647 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8648 eval $hasfield
8649
8650
8651 : see if statvfs exists
8652 set statvfs d_statvfs
8653 eval $inlibc
8654
8655 : see if fstatvfs exists
8656 set fstatvfs d_fstatvfs
8657 eval $inlibc
8658
8659
8660 : see if ftello exists
8661 set ftello d_ftello
8662 eval $inlibc
8663
8664 : see if getgrent exists
8665 set getgrent d_getgrent
8666 eval $inlibc
8667
8668 : see if gethostbyaddr exists
8669 set gethostbyaddr d_gethbyaddr
8670 eval $inlibc
8671
8672 : see if gethostbyname exists
8673 set gethostbyname d_gethbyname
8674 eval $inlibc
8675
8676 : see if gethostent exists
8677 set gethostent d_gethent
8678 eval $inlibc
8679
8680 : see how we will look up host name
8681 echo " "
8682 call=''
8683 if set gethostname val -f d_gethname; eval $csym; $val; then
8684         echo 'gethostname() found.' >&4
8685         d_gethname="$define"
8686         call=gethostname
8687 fi
8688 if set uname val -f d_uname; eval $csym; $val; then
8689         if ./xenix; then
8690                 $cat <<'EOM'
8691 uname() was found, but you're running xenix, and older versions of xenix
8692 have a broken uname(). If you don't really know whether your xenix is old
8693 enough to have a broken system call, use the default answer.
8694
8695 EOM
8696                 dflt=y
8697                 case "$d_uname" in
8698                 "$define") dflt=n;;
8699                 esac
8700                 rp='Is your uname() broken?'
8701                 . ./myread
8702                 case "$ans" in
8703                 n*) d_uname="$define"; call=uname;;
8704                 esac
8705         else
8706                 echo 'uname() found.' >&4
8707                 d_uname="$define"
8708                 case "$call" in
8709                 '') call=uname ;;
8710                 esac
8711         fi
8712 fi
8713 case "$d_gethname" in
8714 '') d_gethname="$undef";;
8715 esac
8716 case "$d_uname" in
8717 '') d_uname="$undef";;
8718 esac
8719 case "$d_uname$d_gethname" in
8720 *define*)
8721         dflt=n
8722         cat <<EOM
8723  
8724 Every now and then someone has a $call() that lies about the hostname
8725 but can't be fixed for political or economic reasons.  If you wish, I can
8726 pretend $call() isn't there and maybe compute hostname at run-time
8727 thanks to the '$phostname' command.
8728
8729 EOM
8730         rp="Shall I ignore $call() from now on?"
8731         . ./myread
8732         case "$ans" in
8733         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8734         esac;;
8735 esac
8736 case "$phostname" in
8737 '') aphostname='';;
8738 *) case "$aphostname" in
8739         /*) ;;
8740         *) set X $phostname
8741                 shift
8742                 file=$1
8743                 shift
8744                 file=`./loc $file $file $pth`
8745                 aphostname=`echo $file $*`
8746                 ;;
8747         esac
8748         ;;
8749 esac
8750 case "$d_uname$d_gethname" in
8751 *define*) ;;
8752 *)
8753         case "$phostname" in
8754         '')
8755                 echo "There will be no way for $package to get your hostname." >&4;;
8756         *)
8757         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8758                 ;;
8759         esac;;
8760 esac
8761 case "$d_phostname" in
8762 '') d_phostname="$undef";;
8763 esac
8764
8765 : see if this is a netdb.h system
8766 set netdb.h i_netdb
8767 eval $inhdr
8768
8769 : see if prototypes for various gethostxxx netdb.h functions are available
8770 echo " "
8771 set d_gethostprotos gethostent $i_netdb netdb.h
8772 eval $hasproto
8773
8774 : see if getlogin exists
8775 set getlogin d_getlogin
8776 eval $inlibc
8777
8778 : see if getmntent exists
8779 set getmntent d_getmntent
8780 eval $inlibc
8781
8782 : see if getnetbyaddr exists
8783 set getnetbyaddr d_getnbyaddr
8784 eval $inlibc
8785
8786 : see if getnetbyname exists
8787 set getnetbyname d_getnbyname
8788 eval $inlibc
8789
8790 : see if getnetent exists
8791 set getnetent d_getnent
8792 eval $inlibc
8793
8794 : see if prototypes for various getnetxxx netdb.h functions are available
8795 echo " "
8796 set d_getnetprotos getnetent $i_netdb netdb.h
8797 eval $hasproto
8798
8799
8800 : see if getprotobyname exists
8801 set getprotobyname d_getpbyname
8802 eval $inlibc
8803
8804 : see if getprotobynumber exists
8805 set getprotobynumber d_getpbynumber
8806 eval $inlibc
8807
8808 : see if getprotoent exists
8809 set getprotoent d_getpent
8810 eval $inlibc
8811
8812 : see if getpgid exists
8813 set getpgid d_getpgid
8814 eval $inlibc
8815
8816 : see if getpgrp2 exists
8817 set getpgrp2 d_getpgrp2
8818 eval $inlibc
8819
8820 : see if getppid exists
8821 set getppid d_getppid
8822 eval $inlibc
8823
8824 : see if getpriority exists
8825 set getpriority d_getprior
8826 eval $inlibc
8827
8828 : see if prototypes for various getprotoxxx netdb.h functions are available
8829 echo " "
8830 set d_getprotoprotos getprotoent $i_netdb netdb.h
8831 eval $hasproto
8832
8833 : see if getpwent exists
8834 set getpwent d_getpwent
8835 eval $inlibc
8836
8837
8838 : see if getservbyname exists
8839 set getservbyname d_getsbyname
8840 eval $inlibc
8841
8842 : see if getservbyport exists
8843 set getservbyport d_getsbyport
8844 eval $inlibc
8845
8846 : see if getservent exists
8847 set getservent d_getsent
8848 eval $inlibc
8849
8850 : see if prototypes for various getservxxx netdb.h functions are available
8851 echo " "
8852 set d_getservprotos getservent $i_netdb netdb.h
8853 eval $hasproto
8854
8855 : see if getspent exists
8856 set getspent d_getspent
8857 eval $inlibc
8858
8859 : see if getspnam exists
8860 set getspnam d_getspnam
8861 eval $inlibc
8862
8863 : see if gettimeofday or ftime exists
8864 set gettimeofday d_gettimeod
8865 eval $inlibc
8866 case "$d_gettimeod" in
8867 "$undef")
8868         set ftime d_ftime 
8869         eval $inlibc
8870         ;;
8871 *)
8872         val="$undef"; set d_ftime; eval $setvar
8873         ;;
8874 esac
8875 case "$d_gettimeod$d_ftime" in
8876 "$undef$undef")
8877         echo " "
8878         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8879         ;;
8880 esac
8881
8882 : see if this is an grp system
8883 set grp.h i_grp
8884 eval $inhdr
8885
8886 case "$i_grp" in
8887 $define)
8888         xxx=`./findhdr grp.h`
8889         $cppstdin $cppflags $cppminus < $xxx >$$.h
8890
8891         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8892                 val="$define"
8893         else
8894                 val="$undef"
8895         fi
8896         set d_grpasswd
8897         eval $setvar
8898
8899         $rm -f $$.h
8900         ;;
8901 *)
8902         val="$undef";
8903         set d_grpasswd; eval $setvar
8904         ;;
8905 esac
8906
8907 : see if hasmntopt exists
8908 set hasmntopt d_hasmntopt
8909 eval $inlibc
8910
8911 : see if this is a netinet/in.h or sys/in.h system
8912 set netinet/in.h i_niin sys/in.h i_sysin
8913 eval $inhdr
8914
8915 : see if arpa/inet.h has to be included
8916 set arpa/inet.h i_arpainet
8917 eval $inhdr
8918
8919 : see if htonl --and friends-- exists
8920 val=''
8921 set htonl val
8922 eval $inlibc
8923
8924 : Maybe they are macros.
8925 case "$val" in
8926 $undef)
8927         $cat >htonl.c <<EOM
8928 #include <stdio.h>
8929 #include <sys/types.h>
8930 #$i_niin I_NETINET_IN
8931 #$i_sysin I_SYS_IN
8932 #$i_arpainet I_ARPA_INET
8933 #ifdef I_NETINET_IN
8934 #include <netinet/in.h>
8935 #endif
8936 #ifdef I_SYS_IN
8937 #include <sys/in.h>
8938 #endif
8939 #ifdef I_ARPA_INET
8940 #include <arpa/inet.h>
8941 #endif
8942 #ifdef htonl
8943 printf("Defined as a macro.");
8944 #endif
8945 EOM
8946         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8947         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8948                 val="$define"
8949                 echo "But it seems to be defined as a macro." >&4
8950         fi
8951         $rm -f htonl.?
8952         ;;
8953 esac
8954 set d_htonl
8955 eval $setvar
8956
8957 : see which of string.h or strings.h is needed
8958 echo " "
8959 strings=`./findhdr string.h`
8960 if $test "$strings" && $test -r "$strings"; then
8961         echo "Using <string.h> instead of <strings.h>." >&4
8962         val="$define"
8963 else
8964         val="$undef"
8965         strings=`./findhdr strings.h`
8966         if $test "$strings" && $test -r "$strings"; then
8967                 echo "Using <strings.h> instead of <string.h>." >&4
8968         else
8969                 echo "No string header found -- You'll surely have problems." >&4
8970         fi
8971 fi
8972 set i_string
8973 eval $setvar
8974 case "$i_string" in
8975 "$undef") strings=`./findhdr strings.h`;;
8976 *)        strings=`./findhdr string.h`;;
8977 esac
8978
8979 : index or strchr
8980 echo " "
8981 if set index val -f; eval $csym; $val; then
8982         if set strchr val -f d_strchr; eval $csym; $val; then
8983                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8984                         val="$define"
8985                         vali="$undef"
8986                         echo "strchr() found." >&4
8987                 else
8988                         val="$undef"
8989                         vali="$define"
8990                         echo "index() found." >&4
8991                 fi
8992         else
8993                 val="$undef"
8994                 vali="$define"
8995                 echo "index() found." >&4
8996         fi
8997 else
8998         if set strchr val -f d_strchr; eval $csym; $val; then
8999                 val="$define"
9000                 vali="$undef"
9001                 echo "strchr() found." >&4
9002         else
9003                 echo "No index() or strchr() found!" >&4
9004                 val="$undef"
9005                 vali="$undef"
9006         fi
9007 fi
9008 set d_strchr; eval $setvar
9009 val="$vali"
9010 set d_index; eval $setvar
9011
9012 : check whether inet_aton exists
9013 set inet_aton d_inetaton
9014 eval $inlibc
9015
9016 : Look for isascii
9017 echo " "
9018 $cat >isascii.c <<'EOCP'
9019 #include <stdio.h>
9020 #include <ctype.h>
9021 int main() {
9022         int c = 'A';
9023         if (isascii(c))
9024                 exit(0);
9025         else
9026                 exit(1);
9027 }
9028 EOCP
9029 set isascii
9030 if eval $compile; then
9031         echo "isascii() found." >&4
9032         val="$define"
9033 else
9034         echo "isascii() NOT found." >&4
9035         val="$undef"
9036 fi
9037 set d_isascii
9038 eval $setvar
9039 $rm -f isascii*
9040
9041 : see if killpg exists
9042 set killpg d_killpg
9043 eval $inlibc
9044
9045 : see if lchown exists
9046 echo " "
9047 $cat > try.c <<'EOCP'
9048 /* System header to define __stub macros and hopefully few prototypes,
9049     which can conflict with char lchown(); below.  */
9050 #include <assert.h>
9051 /* Override any gcc2 internal prototype to avoid an error.  */
9052 /* We use char because int might match the return type of a gcc2
9053    builtin and then its argument prototype would still apply.  */
9054 char lchown();
9055 int main() {
9056     /*  The GNU C library defines this for functions which it implements
9057         to always fail with ENOSYS.  Some functions are actually named
9058         something starting with __ and the normal name is an alias.  */
9059 #if defined (__stub_lchown) || defined (__stub___lchown)
9060 choke me
9061 #else
9062 lchown();
9063 #endif
9064 ; return 0; }
9065 EOCP
9066 set try
9067 if eval $compile; then
9068     $echo "lchown() found." >&4
9069     val="$define"
9070 else
9071     $echo "lchown() NOT found." >&4
9072     val="$undef"
9073 fi
9074 set d_lchown
9075 eval $setvar
9076
9077 : See if number of significant digits in a double precision number is known
9078 echo " "
9079 $cat >ldbl_dig.c <<EOM
9080 #$i_limits I_LIMITS
9081 #$i_float I_FLOAT
9082 #ifdef I_LIMITS
9083 #include <limits.h>
9084 #endif
9085 #ifdef I_FLOAT
9086 #include <float.h>
9087 #endif
9088 #ifdef LDBL_DIG
9089 printf("Contains LDBL_DIG");
9090 #endif
9091 EOM
9092 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9093 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9094         echo "LDBL_DIG found." >&4
9095         val="$define"
9096 else
9097         echo "LDBL_DIG NOT found." >&4
9098         val="$undef"
9099 fi
9100 $rm -f ldbl_dig.?
9101 set d_ldbl_dig
9102 eval $setvar
9103
9104 : see if link exists
9105 set link d_link
9106 eval $inlibc
9107
9108 : see if localeconv exists
9109 set localeconv d_locconv
9110 eval $inlibc
9111
9112 : see if lockf exists
9113 set lockf d_lockf
9114 eval $inlibc
9115
9116 : see if lstat exists
9117 set lstat d_lstat
9118 eval $inlibc
9119
9120 : see if madvise exists
9121 set madvise d_madvise
9122 eval $inlibc
9123
9124 : see if mblen exists
9125 set mblen d_mblen
9126 eval $inlibc
9127
9128 : see if mbstowcs exists
9129 set mbstowcs d_mbstowcs
9130 eval $inlibc
9131
9132 : see if mbtowc exists
9133 set mbtowc d_mbtowc
9134 eval $inlibc
9135
9136 : see if memchr exists
9137 set memchr d_memchr
9138 eval $inlibc
9139
9140 : see if memcmp exists
9141 set memcmp d_memcmp
9142 eval $inlibc
9143
9144 : see if memcpy exists
9145 set memcpy d_memcpy
9146 eval $inlibc
9147
9148 : see if memmove exists
9149 set memmove d_memmove
9150 eval $inlibc
9151
9152 : see if memset exists
9153 set memset d_memset
9154 eval $inlibc
9155
9156 : see if mkdir exists
9157 set mkdir d_mkdir
9158 eval $inlibc
9159
9160 : see if mkfifo exists
9161 set mkfifo d_mkfifo
9162 eval $inlibc
9163
9164 : see if mktime exists
9165 set mktime d_mktime
9166 eval $inlibc
9167
9168 : see if this is a sys/mman.h system
9169 set sys/mman.h i_sysmman
9170 eval $inhdr
9171
9172 : see if mmap exists
9173 set mmap d_mmap
9174 eval $inlibc
9175 : see what shmat returns
9176 : default to something harmless
9177 mmaptype='void *'
9178 case "$i_sysmman$d_mmap" in
9179 "$define$define")
9180         $cat >mmap.c <<'END'
9181 #include <sys/mman.h>
9182 void *mmap();
9183 END
9184         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9185                 mmaptype='void *'
9186         else
9187                 mmaptype='caddr_t'
9188         fi
9189         echo "and it returns ($mmaptype)." >&4
9190         ;;
9191 esac
9192
9193
9194
9195 : see if mprotect exists
9196 set mprotect d_mprotect
9197 eval $inlibc
9198
9199 : see if msgctl exists
9200 set msgctl d_msgctl
9201 eval $inlibc
9202
9203 : see if msgget exists
9204 set msgget d_msgget
9205 eval $inlibc
9206
9207 : see if msgsnd exists
9208 set msgsnd d_msgsnd
9209 eval $inlibc
9210
9211 : see if msgrcv exists
9212 set msgrcv d_msgrcv
9213 eval $inlibc
9214
9215 : see how much of the 'msg*(2)' library is present.
9216 h_msg=true
9217 echo " "
9218 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9219 *"$undef"*) h_msg=false;;
9220 esac
9221 case "$osname" in
9222 freebsd)
9223     case "`ipcs 2>&1`" in
9224     "SVID messages"*"not configured"*)
9225         echo "Your $osname does not have the msg*(2) configured." >&4
9226         h_msg=false
9227         val="$undef"
9228         set msgctl d_msgctl
9229         eval $setvar
9230         set msgget d_msgget
9231         eval $setvar
9232         set msgsnd d_msgsnd
9233         eval $setvar
9234         set msgrcv d_msgrcv
9235         eval $setvar
9236         ;;
9237     esac
9238     ;;
9239 esac
9240 : we could also check for sys/ipc.h ...
9241 if $h_msg && $test `./findhdr sys/msg.h`; then
9242         echo "You have the full msg*(2) library." >&4
9243         val="$define"
9244 else
9245         echo "You don't have the full msg*(2) library." >&4
9246         val="$undef"
9247 fi
9248 set d_msg
9249 eval $setvar
9250
9251 : see if msync exists
9252 set msync d_msync
9253 eval $inlibc
9254
9255 : see if munmap exists
9256 set munmap d_munmap
9257 eval $inlibc
9258
9259 : see if nice exists
9260 set nice d_nice
9261 eval $inlibc
9262
9263 : see if POSIX threads are available
9264 set pthread.h i_pthread
9265 eval $inhdr
9266
9267
9268
9269
9270 : how to create joinable pthreads
9271 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9272         echo " "
9273         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9274         $cat >try.c <<'EOCP'
9275 #include <pthread.h>
9276 int main() {
9277     int detachstate = JOINABLE;
9278 }
9279 EOCP
9280         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9281         if eval $compile; then
9282                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9283                 val="$undef" # Yes, undef.
9284                 set d_old_pthread_create_joinable
9285                 eval $setvar
9286                 val=""
9287                 set old_pthread_create_joinable
9288                 eval $setvar
9289         else
9290                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9291                 if eval $compile; then
9292                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9293                         val="$define"
9294                         set d_old_pthread_create_joinable
9295                         eval $setvar
9296                         val=PTHREAD_CREATE_UNDETACHED
9297                         set old_pthread_create_joinable
9298                         eval $setvar
9299                 else            
9300                         set try -DJOINABLE=__UNDETACHED
9301                         if eval $compile; then
9302                                 echo "You seem to use __UNDETACHED." >&4
9303                                 val="$define"
9304                                 set d_old_pthread_create_joinable
9305                                 eval $setvar
9306                                 val=__UNDETACHED
9307                                 set old_pthread_create_joinable
9308                                 eval $setvar
9309                         else
9310                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9311                                 val="$define"
9312                                 set d_old_pthread_create_joinable
9313                                 eval $setvar
9314                                 val=0
9315                                 set old_pthread_create_joinable
9316                                 eval $setvar
9317                         fi
9318                 fi
9319         fi
9320         $rm -f try try.*
9321 else
9322     d_old_pthread_create_joinable="$undef"
9323     old_pthread_create_joinable=""
9324 fi
9325
9326 : see if pause exists
9327 set pause d_pause
9328 eval $inlibc
9329
9330 : see if pipe exists
9331 set pipe d_pipe
9332 eval $inlibc
9333
9334 : see if poll exists
9335 set poll d_poll
9336 eval $inlibc
9337
9338
9339 : see whether the various POSIXish _yields exist
9340 $cat >try.c <<EOP
9341 #include <pthread.h>
9342 #include <stdio.h>
9343 int main() {
9344 #ifdef SCHED_YIELD
9345         sched_yield();
9346 #else
9347 #ifdef PTHREAD_YIELD
9348         pthread_yield();
9349 #else
9350 #ifdef PTHREAD_YIELD_NULL
9351         pthread_yield(NULL);
9352 #endif
9353 #endif
9354 #endif
9355 }
9356 EOP
9357 : see if sched_yield exists
9358 set try -DSCHED_YIELD
9359 if eval $compile; then
9360     val="$define"
9361     sched_yield='sched_yield()'
9362 else
9363     val="$undef"
9364 fi
9365 case "$usethreads" in
9366 $define)
9367         case "$val" in
9368         $define) echo 'sched_yield() found.' >&4        ;;
9369         *)       echo 'sched_yield() NOT found.' >&4    ;;
9370         esac
9371 esac
9372 set d_sched_yield
9373 eval $setvar
9374
9375 : see if pthread_yield exists
9376 set try -DPTHREAD_YIELD
9377 if eval $compile; then
9378     val="$define"
9379     case "$sched_yield" in
9380     '') sched_yield='pthread_yield()' ;;
9381     esac
9382 else
9383     set try -DPTHREAD_YIELD_NULL
9384     if eval $compile; then
9385         val="$define"
9386         case "$sched_yield" in
9387         '') sched_yield='pthread_yield(NULL)' ;;
9388         esac
9389     else
9390         val="$undef"
9391     fi
9392 fi
9393 case "$usethreads" in
9394 $define)
9395         case "$val" in
9396         $define) echo 'pthread_yield() found.' >&4      ;;
9397         *)       echo 'pthread_yield() NOT found.' >&4  ;;
9398         esac
9399         ;;
9400 esac
9401 set d_pthread_yield
9402 eval $setvar
9403
9404 case "$sched_yield" in
9405 '') sched_yield=undef ;;
9406 esac
9407
9408 $rm -f try try.*
9409
9410 : see if this is a pwd.h system
9411 set pwd.h i_pwd
9412 eval $inhdr
9413
9414 case "$i_pwd" in
9415 $define)
9416         xxx=`./findhdr pwd.h`
9417         $cppstdin $cppflags $cppminus < $xxx >$$.h
9418
9419         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9420                 val="$define"
9421         else
9422                 val="$undef"
9423         fi
9424         set d_pwquota
9425         eval $setvar
9426
9427         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
9428                 val="$define"
9429         else
9430                 val="$undef"
9431         fi
9432         set d_pwage
9433         eval $setvar
9434
9435         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
9436                 val="$define"
9437         else
9438                 val="$undef"
9439         fi
9440         set d_pwchange
9441         eval $setvar
9442
9443         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
9444                 val="$define"
9445         else
9446                 val="$undef"
9447         fi
9448         set d_pwclass
9449         eval $setvar
9450
9451         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
9452                 val="$define"
9453         else
9454                 val="$undef"
9455         fi
9456         set d_pwexpire
9457         eval $setvar
9458
9459         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9460                 val="$define"
9461         else
9462                 val="$undef"
9463         fi
9464         set d_pwcomment
9465         eval $setvar
9466
9467         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9468                 val="$define"
9469         else
9470                 val="$undef"
9471         fi
9472         set d_pwgecos
9473         eval $setvar
9474
9475         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9476                 val="$define"
9477         else
9478                 val="$undef"
9479         fi
9480         set d_pwpasswd
9481         eval $setvar
9482
9483         $rm -f $$.h
9484         ;;
9485 *)
9486         val="$undef"; 
9487         set d_pwquota; eval $setvar
9488         set d_pwage; eval $setvar
9489         set d_pwchange; eval $setvar
9490         set d_pwclass; eval $setvar
9491         set d_pwexpire; eval $setvar
9492         set d_pwcomment; eval $setvar
9493         set d_pwgecos; eval $setvar
9494         set d_pwpasswd; eval $setvar
9495         ;;
9496 esac
9497
9498 : see if readdir and friends exist
9499 set readdir d_readdir
9500 eval $inlibc
9501 set seekdir d_seekdir
9502 eval $inlibc
9503 set telldir d_telldir
9504 eval $inlibc
9505 set rewinddir d_rewinddir
9506 eval $inlibc
9507
9508 : see if readlink exists
9509 set readlink d_readlink
9510 eval $inlibc
9511
9512 : see if readv exists
9513 set readv d_readv
9514 eval $inlibc
9515
9516 : see if rename exists
9517 set rename d_rename
9518 eval $inlibc
9519
9520 : see if rmdir exists
9521 set rmdir d_rmdir
9522 eval $inlibc
9523
9524 : see if memory.h is available.
9525 val=''
9526 set memory.h val
9527 eval $inhdr
9528
9529 : See if it conflicts with string.h
9530 case "$val" in
9531 $define)
9532         case "$strings" in
9533         '') ;;
9534         *)
9535                 $cppstdin $cppflags $cppminus < $strings > mem.h
9536                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9537                         echo " "
9538                         echo "We won't be including <memory.h>."
9539                         val="$undef"
9540                 fi
9541                 $rm -f mem.h
9542                 ;;
9543         esac
9544 esac
9545 set i_memory
9546 eval $setvar
9547
9548 : can bcopy handle overlapping blocks?
9549 val="$undef"
9550 case "$d_bcopy" in
9551 "$define")
9552         echo " "
9553         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9554         $cat >try.c <<EOCP
9555 #$i_memory I_MEMORY
9556 #$i_stdlib I_STDLIB
9557 #$i_string I_STRING
9558 #$i_unistd I_UNISTD
9559 EOCP
9560         $cat >>try.c <<'EOCP'
9561 #include <stdio.h>
9562 #ifdef I_MEMORY
9563 #  include <memory.h>
9564 #endif
9565 #ifdef I_STDLIB
9566 #  include <stdlib.h>
9567 #endif
9568 #ifdef I_STRING
9569 #  include <string.h>
9570 #else
9571 #  include <strings.h>
9572 #endif
9573 #ifdef I_UNISTD
9574 #  include <unistd.h>  /* Needed for NetBSD */
9575 #endif
9576 int main()
9577 {
9578 char buf[128], abc[128];
9579 char *b;
9580 int len;
9581 int off;
9582 int align;
9583
9584 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9585
9586 for (align = 7; align >= 0; align--) {
9587         for (len = 36; len; len--) {
9588                 b = buf+align;
9589                 bcopy(abc, b, len);
9590                 for (off = 1; off <= len; off++) {
9591                         bcopy(b, b+off, len);
9592                         bcopy(b+off, b, len);
9593                         if (bcmp(b, abc, len))
9594                                 exit(1);
9595                 }
9596         }
9597 }
9598 exit(0);
9599 }
9600 EOCP
9601         set try
9602         if eval $compile_ok; then
9603                 if ./try 2>/dev/null; then
9604                         echo "Yes, it can."
9605                         val="$define"
9606                 else
9607                         echo "It can't, sorry."
9608                         case "$d_memmove" in
9609                         "$define") echo "But that's Ok since you have memmove()." ;;
9610                         esac
9611                 fi
9612         else
9613                 echo "(I can't compile the test program, so we'll assume not...)"
9614                 case "$d_memmove" in
9615                 "$define") echo "But that's Ok since you have memmove()." ;;
9616                 esac
9617         fi
9618         ;;
9619 esac
9620 $rm -f try.* try core
9621 set d_safebcpy
9622 eval $setvar
9623
9624 : can memcpy handle overlapping blocks?
9625 val="$undef"
9626 case "$d_memcpy" in
9627 "$define")
9628         echo " "
9629         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9630         $cat >try.c <<EOCP
9631 #$i_memory I_MEMORY
9632 #$i_stdlib I_STDLIB
9633 #$i_string I_STRING
9634 #$i_unistd I_UNISTD
9635 EOCP
9636         $cat >>try.c <<'EOCP'
9637 #include <stdio.h>
9638 #ifdef I_MEMORY
9639 #  include <memory.h>
9640 #endif
9641 #ifdef I_STDLIB
9642 #  include <stdlib.h>
9643 #endif
9644 #ifdef I_STRING
9645 #  include <string.h>
9646 #else
9647 #  include <strings.h>
9648 #endif
9649 #ifdef I_UNISTD
9650 #  include <unistd.h>  /* Needed for NetBSD */
9651 #endif
9652 int main()
9653 {
9654 char buf[128], abc[128];
9655 char *b;
9656 int len;
9657 int off;
9658 int align;
9659
9660 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9661    try to store the string in read-only memory. */
9662 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9663
9664 for (align = 7; align >= 0; align--) {
9665         for (len = 36; len; len--) {
9666                 b = buf+align;
9667                 memcpy(b, abc, len);
9668                 for (off = 1; off <= len; off++) {
9669                         memcpy(b+off, b, len);
9670                         memcpy(b, b+off, len);
9671                         if (memcmp(b, abc, len))
9672                                 exit(1);
9673                 }
9674         }
9675 }
9676 exit(0);
9677 }
9678 EOCP
9679         set try
9680         if eval $compile_ok; then
9681                 if ./try 2>/dev/null; then
9682                         echo "Yes, it can."
9683                         val="$define"
9684                 else
9685                         echo "It can't, sorry."
9686                         case "$d_memmove" in
9687                         "$define") echo "But that's Ok since you have memmove()." ;;
9688                         esac
9689                 fi
9690         else
9691                 echo "(I can't compile the test program, so we'll assume not...)"
9692                 case "$d_memmove" in
9693                 "$define") echo "But that's Ok since you have memmove()." ;;
9694                 esac
9695         fi
9696         ;;
9697 esac
9698 $rm -f try.* try core
9699 set d_safemcpy
9700 eval $setvar
9701
9702 : can memcmp be trusted to compare relative magnitude?
9703 val="$undef"
9704 case "$d_memcmp" in
9705 "$define")
9706         echo " "
9707         echo "Checking if your memcmp() can compare relative magnitude..." >&4
9708         $cat >try.c <<EOCP
9709 #$i_memory I_MEMORY
9710 #$i_stdlib I_STDLIB
9711 #$i_string I_STRING
9712 #$i_unistd I_UNISTD
9713 EOCP
9714         $cat >>try.c <<'EOCP'
9715 #include <stdio.h>
9716 #ifdef I_MEMORY
9717 #  include <memory.h>
9718 #endif
9719 #ifdef I_STDLIB
9720 #  include <stdlib.h>
9721 #endif
9722 #ifdef I_STRING
9723 #  include <string.h>
9724 #else
9725 #  include <strings.h>
9726 #endif
9727 #ifdef I_UNISTD
9728 #  include <unistd.h>  /* Needed for NetBSD */
9729 #endif
9730 int main()
9731 {
9732 char a = -1;
9733 char b = 0;
9734 if ((a < b) && memcmp(&a, &b, 1) < 0)
9735         exit(1);
9736 exit(0);
9737 }
9738 EOCP
9739         set try
9740         if eval $compile_ok; then
9741                 if ./try 2>/dev/null; then
9742                         echo "Yes, it can."
9743                         val="$define"
9744                 else
9745                         echo "No, it can't (it uses signed chars)."
9746                 fi
9747         else
9748                 echo "(I can't compile the test program, so we'll assume not...)"
9749         fi
9750         ;;
9751 esac
9752 $rm -f try.* try core
9753 set d_sanemcmp
9754 eval $setvar
9755
9756 : see if select exists
9757 set select d_select
9758 eval $inlibc
9759
9760 : see if semctl exists
9761 set semctl d_semctl
9762 eval $inlibc
9763
9764 : see if semget exists
9765 set semget d_semget
9766 eval $inlibc
9767
9768 : see if semop exists
9769 set semop d_semop
9770 eval $inlibc
9771
9772 : see how much of the 'sem*(2)' library is present.
9773 h_sem=true
9774 echo " "
9775 case "$d_semctl$d_semget$d_semop" in
9776 *"$undef"*) h_sem=false;;
9777 esac
9778 case "$osname" in
9779 freebsd)
9780     case "`ipcs 2>&1`" in
9781     "SVID messages"*"not configured"*)
9782         echo "Your $osname does not have the sem*(2) configured." >&4
9783         h_sem=false
9784         val="$undef"
9785         set semctl d_semctl
9786         eval $setvar
9787         set semget d_semget
9788         eval $setvar
9789         set semop d_semop
9790         eval $setvar
9791         ;;
9792     esac
9793     ;;
9794 esac
9795 : we could also check for sys/ipc.h ...
9796 if $h_sem && $test `./findhdr sys/sem.h`; then
9797         echo "You have the full sem*(2) library." >&4
9798         val="$define"
9799 else
9800         echo "You don't have the full sem*(2) library." >&4
9801         val="$undef"
9802 fi
9803 set d_sem
9804 eval $setvar
9805
9806 : see whether sys/sem.h defines union semun
9807 echo " "
9808 $cat > try.c <<'END'
9809 #include <sys/types.h>
9810 #include <sys/ipc.h>
9811 #include <sys/sem.h>
9812 int main () { union semun semun; semun.buf = 0; }
9813 END
9814 set try
9815 if eval $compile; then
9816     echo "You have union semun in <sys/sem.h>." >&4
9817     val="$define"
9818 else
9819     echo "You do not have union semun in <sys/sem.h>." >&4
9820     val="$undef"
9821 fi
9822 $rm -f try try.c try.h
9823 set d_union_semun
9824 eval $setvar
9825
9826 : see how to do semctl IPC_STAT
9827 case "$d_sem" in
9828 $define)
9829     : see whether semctl IPC_STAT can use union semun
9830     echo " "
9831     $cat > try.h <<END
9832 #ifndef S_IRUSR
9833 #   ifdef S_IREAD
9834 #       define S_IRUSR S_IREAD
9835 #       define S_IWUSR S_IWRITE
9836 #       define S_IXUSR S_IEXEC
9837 #   else
9838 #       define S_IRUSR 0400
9839 #       define S_IWUSR 0200
9840 #       define S_IXUSR 0100
9841 #   endif
9842 #   define S_IRGRP (S_IRUSR>>3)
9843 #   define S_IWGRP (S_IWUSR>>3)
9844 #   define S_IXGRP (S_IXUSR>>3)
9845 #   define S_IROTH (S_IRUSR>>6)
9846 #   define S_IWOTH (S_IWUSR>>6)
9847 #   define S_IXOTH (S_IXUSR>>6)
9848 #endif
9849 #ifndef S_IRWXU
9850 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9851 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9852 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9853 #endif
9854 END
9855
9856     $cat > try.c <<END
9857 #include <sys/types.h>
9858 #include <sys/ipc.h>
9859 #include <sys/sem.h>
9860 #include <sys/stat.h>
9861 #include <stdio.h>
9862 #include <errno.h>
9863 #include "try.h"
9864 #ifndef errno
9865 extern int errno;
9866 #endif
9867 #$d_union_semun HAS_UNION_SEMUN
9868 int main() {
9869     union semun
9870 #ifndef HAS_UNION_SEMUN
9871     {
9872         int val;
9873         struct semid_ds *buf;
9874         unsigned short *array;
9875     }
9876 #endif
9877     arg;
9878     int sem, st;
9879
9880 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9881     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9882     if (sem > -1) {
9883         struct semid_ds argbuf;
9884         arg.buf = &argbuf;
9885 #       ifdef IPC_STAT
9886         st = semctl(sem, 0, IPC_STAT, arg);
9887         if (st == 0)
9888             printf("semun\n");
9889         else
9890 #       endif /* IPC_STAT */
9891             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9892 #       ifdef IPC_RMID
9893         if (semctl(sem, 0, IPC_RMID, arg) != 0)
9894 #       endif /* IPC_RMID */
9895             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9896     } else
9897 #endif /* IPC_PRIVATE && ... */
9898         printf("semget failed: errno = %d\n", errno);
9899   return 0;
9900 }
9901 END
9902     val="$undef"
9903     set try
9904     if eval $compile; then
9905         xxx=`./try`
9906         case "$xxx" in
9907         semun) val="$define" ;;
9908         esac
9909     fi
9910     $rm -f try try.c
9911     set d_semctl_semun
9912     eval $setvar
9913     case "$d_semctl_semun" in
9914     $define)
9915         echo "You can use union semun for semctl IPC_STAT." >&4
9916         also='also'
9917         ;;
9918     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
9919         also=''
9920         ;;
9921     esac
9922
9923     : see whether semctl IPC_STAT can use struct semid_ds pointer
9924     $cat > try.c <<'END'
9925 #include <sys/types.h>
9926 #include <sys/ipc.h>
9927 #include <sys/sem.h>
9928 #include <sys/stat.h>
9929 #include "try.h"
9930 #include <stdio.h>
9931 #include <errno.h>
9932 #ifndef errno
9933 extern int errno;
9934 #endif
9935 int main() {
9936     struct semid_ds arg;
9937     int sem, st;
9938
9939 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
9940     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9941     if (sem > -1) {
9942 #       ifdef IPC_STAT
9943         st = semctl(sem, 0, IPC_STAT, &arg);
9944         if (st == 0)
9945             printf("semid_ds\n");
9946         else
9947 #       endif /* IPC_STAT */
9948             printf("semctl IPC_STAT failed: errno = %d\n", errno);
9949 #       ifdef IPC_RMID
9950         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9951 #       endif /* IPC_RMID */
9952             printf("semctl IPC_RMID failed: errno = %d\n", errno);
9953     } else
9954 #endif /* IPC_PRIVATE && ... */
9955         printf("semget failed: errno = %d\n", errno);
9956
9957     return 0;
9958 }
9959 END
9960     val="$undef"
9961     set try
9962     if eval $compile; then
9963         xxx=`./try`
9964         case "$xxx" in
9965         semid_ds) val="$define" ;;
9966         esac
9967     fi
9968     $rm -f try try.c
9969     set d_semctl_semid_ds
9970     eval $setvar
9971     case "$d_semctl_semid_ds" in
9972     $define)
9973         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9974         ;;
9975     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9976         ;;
9977     esac
9978     $rm -f try.h
9979     ;;
9980 *)  val="$undef"
9981
9982     # We do not have the full sem*(2) library, so assume we can not
9983     # use either.
9984
9985     set d_semctl_semun
9986     eval $setvar
9987
9988     set d_semctl_semid_ds
9989     eval $setvar
9990     ;;
9991 esac
9992
9993 : see if setegid exists
9994 set setegid d_setegid
9995 eval $inlibc
9996
9997 : see if seteuid exists
9998 set seteuid d_seteuid
9999 eval $inlibc
10000
10001 : see if setgrent exists
10002 set setgrent d_setgrent
10003 eval $inlibc
10004
10005 : see if sethostent exists
10006 set sethostent d_sethent
10007 eval $inlibc
10008
10009 : see if setlinebuf exists
10010 set setlinebuf d_setlinebuf
10011 eval $inlibc
10012
10013 : see if setlocale exists
10014 set setlocale d_setlocale
10015 eval $inlibc
10016
10017 : see if setnetent exists
10018 set setnetent d_setnent
10019 eval $inlibc
10020
10021 : see if setprotoent exists
10022 set setprotoent d_setpent
10023 eval $inlibc
10024
10025 : see if setpgid exists
10026 set setpgid d_setpgid
10027 eval $inlibc
10028
10029 : see if setpgrp2 exists
10030 set setpgrp2 d_setpgrp2
10031 eval $inlibc
10032
10033 : see if setpriority exists
10034 set setpriority d_setprior
10035 eval $inlibc
10036
10037 : see if setpwent exists
10038 set setpwent d_setpwent
10039 eval $inlibc
10040
10041 : see if setregid exists
10042 set setregid d_setregid
10043 eval $inlibc
10044 set setresgid d_setresgid
10045 eval $inlibc
10046
10047 : see if setreuid exists
10048 set setreuid d_setreuid
10049 eval $inlibc
10050 set setresuid d_setresuid
10051 eval $inlibc
10052
10053 : see if setrgid exists
10054 set setrgid d_setrgid
10055 eval $inlibc
10056
10057 : see if setruid exists
10058 set setruid d_setruid
10059 eval $inlibc
10060
10061 : see if setservent exists
10062 set setservent d_setsent
10063 eval $inlibc
10064
10065 : see if setsid exists
10066 set setsid d_setsid
10067 eval $inlibc
10068
10069 : see if setspent exists
10070 set setspent d_setspent
10071 eval $inlibc
10072
10073 : see if setvbuf exists
10074 set setvbuf d_setvbuf
10075 eval $inlibc
10076
10077 : see if sfio.h is available
10078 set sfio.h i_sfio
10079 eval $inhdr
10080
10081
10082 : see if sfio library is available
10083 case "$i_sfio" in
10084 $define)
10085         val=''
10086         set sfreserve val
10087         eval $inlibc
10088         ;;
10089 *)
10090         val="$undef"
10091         ;;
10092 esac
10093 : Ok, but do we want to use it.
10094 case "$val" in
10095 $define)
10096         case "$usesfio" in
10097         true|$define|[yY]*) dflt='y';;
10098         *) dflt='n';;
10099         esac
10100         echo "$package can use the sfio library, but it is experimental."
10101         rp="You seem to have sfio available, do you want to try using it?"
10102         . ./myread
10103         case "$ans" in
10104         y|Y) ;;
10105         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10106                 val="$undef"
10107                 : Remove sfio from list of libraries to use
10108                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10109                 shift
10110                 libs="$*"
10111                 echo "libs = $libs" >&4
10112                 ;;
10113         esac
10114         ;;
10115 *)      case "$usesfio" in
10116         true|$define|[yY]*)
10117                 echo "Sorry, cannot find sfio on this machine" >&4
10118                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10119                 ;;
10120         esac
10121         ;;
10122 esac
10123 set d_sfio
10124 eval $setvar
10125 case "$d_sfio" in
10126 $define) usesfio='true';;
10127 *) usesfio='false';;
10128 esac
10129
10130 : see if shmctl exists
10131 set shmctl d_shmctl
10132 eval $inlibc
10133
10134 : see if shmget exists
10135 set shmget d_shmget
10136 eval $inlibc
10137
10138 : see if shmat exists
10139 set shmat d_shmat
10140 eval $inlibc
10141 : see what shmat returns
10142 case "$d_shmat" in
10143 "$define")
10144         $cat >shmat.c <<'END'
10145 #include <sys/shm.h>
10146 void *shmat();
10147 END
10148         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10149                 shmattype='void *'
10150         else
10151                 shmattype='char *'
10152         fi
10153         echo "and it returns ($shmattype)." >&4
10154         : see if a prototype for shmat is available
10155         xxx=`./findhdr sys/shm.h`
10156         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10157         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10158                 val="$define"
10159         else
10160                 val="$undef"
10161         fi
10162         $rm -f shmat.[co]
10163         ;;
10164 *)
10165         val="$undef"
10166         ;;
10167 esac
10168 set d_shmatprototype
10169 eval $setvar
10170
10171 : see if shmdt exists
10172 set shmdt d_shmdt
10173 eval $inlibc
10174
10175 : see how much of the 'shm*(2)' library is present.
10176 h_shm=true
10177 echo " "
10178 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10179 *"$undef"*) h_shm=false;;
10180 esac
10181 case "$osname" in
10182 freebsd)
10183     case "`ipcs 2>&1`" in
10184     "SVID shared memory"*"not configured"*)
10185         echo "Your $osname does not have the shm*(2) configured." >&4
10186         h_shm=false
10187         val="$undef"
10188         set shmctl d_shmctl
10189         evat $setvar
10190         set shmget d_shmget
10191         evat $setvar
10192         set shmat d_shmat
10193         evat $setvar
10194         set shmdt d_shmdt
10195         evat $setvar
10196         ;;
10197     esac
10198     ;;
10199 esac
10200 : we could also check for sys/ipc.h ...
10201 if $h_shm && $test `./findhdr sys/shm.h`; then
10202         echo "You have the full shm*(2) library." >&4
10203         val="$define"
10204 else
10205         echo "You don't have the full shm*(2) library." >&4
10206         val="$undef"
10207 fi
10208 set d_shm
10209 eval $setvar
10210
10211 echo " "
10212 : see if we have sigaction
10213 if set sigaction val -f d_sigaction; eval $csym; $val; then
10214         echo 'sigaction() found.' >&4
10215         $cat > try.c <<'EOP'
10216 #include <stdio.h>
10217 #include <sys/types.h>
10218 #include <signal.h>
10219 int main()
10220 {
10221     struct sigaction act, oact;
10222     act.sa_flags = 0;
10223     oact.sa_handler = 0;
10224 }
10225 EOP
10226         set try
10227         if eval $compile_ok; then
10228                 val="$define"
10229         else
10230                 echo "But you don't seem to have a useable struct sigaction." >&4
10231                 val="$undef"
10232         fi
10233 else
10234         echo 'sigaction NOT found.' >&4
10235         val="$undef"
10236 fi
10237 set d_sigaction; eval $setvar
10238 $rm -f try try$_o try.c
10239
10240 : see if sigsetjmp exists
10241 echo " "
10242 case "$d_sigsetjmp" in
10243 '')
10244         $cat >try.c <<'EOP'
10245 #include <setjmp.h>
10246 sigjmp_buf env;
10247 int set = 1;
10248 int main()
10249 {
10250         if (sigsetjmp(env,1))
10251                 exit(set);
10252         set = 0;
10253         siglongjmp(env, 1);
10254         exit(1);
10255 }
10256 EOP
10257         set try
10258         if eval $compile; then
10259                 if ./try >/dev/null 2>&1; then
10260                         echo "POSIX sigsetjmp found." >&4
10261                         val="$define"
10262                 else
10263                         $cat >&4 <<EOM
10264 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10265 I'll ignore them.
10266 EOM
10267                         val="$undef"
10268                 fi
10269         else
10270                 echo "sigsetjmp not found." >&4
10271                 val="$undef"
10272         fi
10273         ;;
10274 *) val="$d_sigsetjmp"
10275         case "$d_sigsetjmp" in
10276         $define) echo "POSIX sigsetjmp found." >&4;;
10277         $undef) echo "sigsetjmp not found." >&4;;
10278         esac
10279         ;;
10280 esac
10281 set d_sigsetjmp
10282 eval $setvar
10283 $rm -f try.c try
10284
10285 : see if sys/stat.h is available
10286 set sys/stat.h i_sysstat
10287 eval $inhdr
10288
10289 : see if stat knows about block sizes
10290 echo " "
10291 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10292 eval $hasfield
10293
10294 : see if _ptr and _cnt from stdio act std
10295 echo " "
10296 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10297         echo "(Looks like you have stdio.h from Linux.)"
10298         case "$stdio_ptr" in
10299         '') stdio_ptr='((fp)->_IO_read_ptr)'
10300                 ptr_lval=$define
10301                 ;;
10302         *)      ptr_lval=$d_stdio_ptr_lval;;
10303         esac
10304         case "$stdio_cnt" in
10305         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10306                 cnt_lval=$undef
10307                 ;;
10308         *)      cnt_lval=$d_stdio_cnt_lval;;
10309         esac
10310         case "$stdio_base" in
10311         '') stdio_base='((fp)->_IO_read_base)';;
10312         esac
10313         case "$stdio_bufsiz" in
10314         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10315         esac
10316 else
10317         case "$stdio_ptr" in
10318         '') stdio_ptr='((fp)->_ptr)'
10319                 ptr_lval=$define
10320                 ;;
10321         *)      ptr_lval=$d_stdio_ptr_lval;;
10322         esac
10323         case "$stdio_cnt" in
10324         '') stdio_cnt='((fp)->_cnt)'
10325                 cnt_lval=$define
10326                 ;;
10327         *)      cnt_lval=$d_stdio_cnt_lval;;
10328         esac
10329         case "$stdio_base" in
10330         '') stdio_base='((fp)->_base)';;
10331         esac
10332         case "$stdio_bufsiz" in
10333         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10334         esac
10335 fi
10336 : test whether _ptr and _cnt really work
10337 echo "Checking how std your stdio is..." >&4
10338 $cat >try.c <<EOP
10339 #include <stdio.h>
10340 #define FILE_ptr(fp)    $stdio_ptr
10341 #define FILE_cnt(fp)    $stdio_cnt
10342 int main() {
10343         FILE *fp = fopen("try.c", "r");
10344         char c = getc(fp);
10345         if (
10346                 18 <= FILE_cnt(fp) &&
10347                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
10348         )
10349                 exit(0);
10350         exit(1);
10351 }
10352 EOP
10353 val="$undef"
10354 set try
10355 if eval $compile; then
10356         if ./try; then
10357                 echo "Your stdio acts pretty std."
10358                 val="$define"
10359         else
10360                 echo "Your stdio isn't very std."
10361         fi
10362 else
10363         echo "Your stdio doesn't appear very std."
10364 fi
10365 $rm -f try.c try
10366 set d_stdstdio
10367 eval $setvar
10368
10369 : Can _ptr be used as an lvalue?
10370 case "$d_stdstdio$ptr_lval" in
10371 $define$define) val=$define ;;
10372 *) val=$undef ;;
10373 esac
10374 set d_stdio_ptr_lval
10375 eval $setvar
10376
10377 : Can _cnt be used as an lvalue?
10378 case "$d_stdstdio$cnt_lval" in
10379 $define$define) val=$define ;;
10380 *) val=$undef ;;
10381 esac
10382 set d_stdio_cnt_lval
10383 eval $setvar
10384
10385 : see if _base is also standard
10386 val="$undef"
10387 case "$d_stdstdio" in
10388 $define)
10389         $cat >try.c <<EOP
10390 #include <stdio.h>
10391 #define FILE_base(fp)   $stdio_base
10392 #define FILE_bufsiz(fp) $stdio_bufsiz
10393 int main() {
10394         FILE *fp = fopen("try.c", "r");
10395         char c = getc(fp);
10396         if (
10397                 19 <= FILE_bufsiz(fp) &&
10398                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
10399         )
10400                 exit(0);
10401         exit(1);
10402 }
10403 EOP
10404         set try
10405         if eval $compile; then
10406                 if ./try; then
10407                         echo "And its _base field acts std."
10408                         val="$define"
10409                 else
10410                         echo "But its _base field isn't std."
10411                 fi
10412         else
10413                 echo "However, it seems to be lacking the _base field."
10414         fi
10415         $rm -f try.c try
10416         ;;
10417 esac
10418 set d_stdiobase
10419 eval $setvar
10420
10421 $cat >&4 <<EOM
10422 Checking how to access stdio streams by file descriptor number...
10423 EOM
10424 case "$stdio_stream_array" in
10425 '')     $cat >try.c <<EOCP
10426 #include <stdio.h>
10427 int main() {
10428   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10429     printf("yes\n");
10430 }
10431 EOCP
10432         for s in _iob __iob __sF
10433         do
10434                 set try -DSTDIO_STREAM_ARRAY=$s
10435                 if eval $compile; then
10436                         case "`./try$exe_ext`" in
10437                         yes)    stdio_stream_array=$s; break ;;
10438                         esac
10439                 fi
10440         done
10441         $rm -f try.* try$exe_ext
10442 esac
10443 case "$stdio_stream_array" in
10444 '')     $cat >&4 <<EOM
10445 I can't figure out how to access stdio streams by file descriptor number.
10446 EOM
10447         d_stdio_stream_array="$undef"
10448         ;;
10449 *)      $cat >&4 <<EOM
10450 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10451 EOM
10452         d_stdio_stream_array="$define"
10453         ;;
10454 esac
10455
10456 : see if strcoll exists
10457 set strcoll d_strcoll
10458 eval $inlibc
10459
10460 : check for structure copying
10461 echo " "
10462 echo "Checking to see if your C compiler can copy structs..." >&4
10463 $cat >try.c <<'EOCP'
10464 int main()
10465 {
10466         struct blurfl {
10467                 int dyick;
10468         } foo, bar;
10469
10470         foo = bar;
10471 }
10472 EOCP
10473 if $cc -c try.c >/dev/null 2>&1 ; then
10474         val="$define"
10475         echo "Yup, it can."
10476 else
10477         val="$undef"
10478         echo "Nope, it can't."
10479 fi
10480 set d_strctcpy
10481 eval $setvar
10482 $rm -f try.*
10483
10484 : see if strerror and/or sys_errlist[] exist
10485 echo " "
10486 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10487     if set strerror val -f d_strerror; eval $csym; $val; then
10488                 echo 'strerror() found.' >&4
10489                 d_strerror="$define"
10490                 d_strerrm='strerror(e)'
10491                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
10492                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
10493                         d_syserrlst="$define"
10494                 else
10495                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10496                         d_syserrlst="$undef"
10497                 fi
10498     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
10499                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10500                 echo 'strerror() found in string header.' >&4
10501                 d_strerror="$define"
10502                 d_strerrm='strerror(e)'
10503                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
10504                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10505                                 d_syserrlst="$define"
10506                 else
10507                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
10508                         d_syserrlst="$undef"
10509                 fi
10510     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10511                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10512                 d_strerror="$undef"
10513                 d_syserrlst="$define"
10514                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10515     else
10516                 echo 'strerror() and sys_errlist[] NOT found.' >&4
10517                 d_strerror="$undef"
10518                 d_syserrlst="$undef"
10519                 d_strerrm='"unknown"'
10520     fi
10521 fi
10522
10523 : see if strtod exists
10524 set strtod d_strtod
10525 eval $inlibc
10526
10527 : see if strtol exists
10528 set strtol d_strtol
10529 eval $inlibc
10530
10531 : see if strtoul exists
10532 set strtoul d_strtoul
10533 eval $inlibc
10534
10535 : see if strtoull exists
10536 set strtoull d_strtoull
10537 eval $inlibc
10538
10539 : see if strxfrm exists
10540 set strxfrm d_strxfrm
10541 eval $inlibc
10542
10543 : see if symlink exists
10544 set symlink d_symlink
10545 eval $inlibc
10546
10547 : see if syscall exists
10548 set syscall d_syscall
10549 eval $inlibc
10550
10551 : see if sysconf exists
10552 set sysconf d_sysconf
10553 eval $inlibc
10554
10555 : see if system exists
10556 set system d_system
10557 eval $inlibc
10558
10559 : see if tcgetpgrp exists
10560 set tcgetpgrp d_tcgetpgrp
10561 eval $inlibc
10562
10563 : see if tcsetpgrp exists
10564 set tcsetpgrp d_tcsetpgrp
10565 eval $inlibc
10566
10567 : see if sys/types.h has to be included
10568 set sys/types.h i_systypes
10569 eval $inhdr
10570
10571 : see if prototype for telldir is available
10572 echo " "
10573 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10574 eval $hasproto
10575
10576 : define an is-a-typedef? function
10577 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10578 case "$inclist" in
10579 "") inclist="sys/types.h";;
10580 esac;
10581 eval "varval=\$$var";
10582 case "$varval" in
10583 "")
10584         $rm -f temp.c;
10585         for inc in $inclist; do
10586                 echo "#include <$inc>" >>temp.c;
10587         done;
10588         echo "#ifdef $type" >> temp.c;
10589         echo "printf(\"We have $type\");" >> temp.c;
10590         echo "#endif" >> temp.c;
10591         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10592         if $contains $type temp.E >/dev/null 2>&1; then
10593                 eval "$var=\$type";
10594         else
10595                 eval "$var=\$def";
10596         fi;
10597         $rm -f temp.?;;
10598 *) eval "$var=\$varval";;
10599 esac'
10600
10601 : define an is-a-typedef? function that prompts if the type is not available.
10602 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10603 case "$inclist" in
10604 "") inclist="sys/types.h";;
10605 esac;
10606 eval "varval=\$$var";
10607 case "$varval" in
10608 "")
10609         $rm -f temp.c;
10610         for inc in $inclist; do
10611                 echo "#include <$inc>" >>temp.c;
10612         done;
10613         echo "#ifdef $type" >> temp.c;
10614         echo "printf(\"We have $type\");" >> temp.c;
10615         echo "#endif" >> temp.c;
10616         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10617         echo " " ;
10618         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10619         if $contains $type temp.E >/dev/null 2>&1; then
10620                 echo "$type found." >&4;
10621                 eval "$var=\$type";
10622         else
10623                 echo "$type NOT found." >&4;
10624                 dflt="$def";
10625                 . ./myread ;
10626                 eval "$var=\$ans";
10627         fi;
10628         $rm -f temp.?;;
10629 *) eval "$var=\$varval";;
10630 esac'
10631
10632 : see if this is a sys/times.h system
10633 set sys/times.h i_systimes
10634 eval $inhdr
10635
10636 : see if times exists
10637 echo " "
10638 if set times val -f d_times; eval $csym; $val; then
10639         echo 'times() found.' >&4
10640         d_times="$define"
10641         inc=''
10642         case "$i_systimes" in
10643         "$define") inc='sys/times.h';;
10644         esac
10645         rp="What is the type returned by times() on this system?"
10646         set clock_t clocktype long stdio.h sys/types.h $inc
10647         eval $typedef_ask
10648 else
10649         echo 'times() NOT found, hope that will do.' >&4
10650         d_times="$undef"
10651         clocktype='int'
10652 fi
10653
10654 : see if truncate exists
10655 set truncate d_truncate
10656 eval $inlibc
10657
10658 : see if tzname[] exists
10659 echo " "
10660 if set tzname val -a d_tzname; eval $csym; $val; then
10661         val="$define"
10662         echo 'tzname[] found.' >&4
10663 else
10664         val="$undef"
10665         echo 'tzname[] NOT found.' >&4
10666 fi
10667 set d_tzname
10668 eval $setvar
10669
10670 : see if umask exists
10671 set umask d_umask
10672 eval $inlibc
10673
10674 : backward compatibility for d_hvfork
10675 if test X$d_hvfork != X; then
10676         d_vfork="$d_hvfork"
10677         d_hvfork=''
10678 fi
10679 : see if there is a vfork
10680 val=''
10681 set vfork val
10682 eval $inlibc
10683
10684 : Ok, but do we want to use it. vfork is reportedly unreliable in 
10685 : perl on Solaris 2.x, and probably elsewhere.
10686 case "$val" in
10687 $define)
10688         echo " "
10689         case "$usevfork" in
10690         false) dflt='n';;
10691         *) dflt='y';;
10692         esac
10693         cat <<'EOM'
10694  
10695 Perl can only use a vfork() that doesn't suffer from strict
10696 restrictions on calling functions or modifying global data in
10697 the child.  For example, glibc-2.1 contains such a vfork()
10698 that is unsuitable.  If your system provides a proper fork()
10699 call, chances are that you do NOT want perl to use vfork().
10700
10701 EOM
10702         rp="Do you still want to use vfork()?"
10703         . ./myread
10704         case "$ans" in
10705         y|Y) ;;
10706         *)
10707                 echo "Ok, we won't use vfork()."
10708                 val="$undef"
10709                 ;;
10710         esac
10711         ;;
10712 esac
10713 set d_vfork
10714 eval $setvar
10715 case "$d_vfork" in
10716 $define) usevfork='true';;
10717 *) usevfork='false';;
10718 esac
10719
10720 : see if this is an sysdir system
10721 set sys/dir.h i_sysdir
10722 eval $inhdr
10723
10724 : see if this is an sysndir system
10725 set sys/ndir.h i_sysndir
10726 eval $inhdr
10727
10728 : see if closedir exists
10729 set closedir d_closedir
10730 eval $inlibc
10731
10732 case "$d_closedir" in
10733 "$define")
10734         echo " "
10735         echo "Checking whether closedir() returns a status..." >&4
10736         cat > closedir.c <<EOM
10737 #$i_dirent I_DIRENT             /**/
10738 #$i_sysdir I_SYS_DIR            /**/
10739 #$i_sysndir I_SYS_NDIR          /**/
10740 #$i_systypes I_SYS_TYPES        /**/
10741
10742 #if defined(I_SYS_TYPES)
10743 #include <sys/types.h>
10744 #endif
10745 #if defined(I_DIRENT)
10746 #include <dirent.h>
10747 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10748 #include <sys/dir.h>
10749 #endif
10750 #else
10751 #ifdef I_SYS_NDIR
10752 #include <sys/ndir.h>
10753 #else
10754 #ifdef I_SYS_DIR
10755 #ifdef hp9000s500
10756 #include <ndir.h>       /* may be wrong in the future */
10757 #else
10758 #include <sys/dir.h>
10759 #endif
10760 #endif
10761 #endif
10762 #endif 
10763 int main() { return closedir(opendir(".")); }
10764 EOM
10765         set closedir
10766         if eval $compile_ok; then
10767                 if ./closedir > /dev/null 2>&1 ; then
10768                         echo "Yes, it does."
10769                         val="$undef"
10770                 else
10771                         echo "No, it doesn't."
10772                         val="$define"
10773                 fi
10774         else
10775                 echo "(I can't seem to compile the test program--assuming it doesn't)"
10776                 val="$define"
10777         fi
10778         ;;
10779 *)
10780         val="$undef";
10781         ;;
10782 esac
10783 set d_void_closedir
10784 eval $setvar
10785 $rm -f closedir*
10786 : check for volatile keyword
10787 echo " "
10788 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10789 $cat >try.c <<'EOCP'
10790 int main()
10791 {
10792         typedef struct _goo_struct goo_struct;
10793         goo_struct * volatile goo = ((goo_struct *)0);
10794         struct _goo_struct {
10795                 long long_int;
10796                 int reg_int;
10797                 char char_var;
10798         };
10799         typedef unsigned short foo_t;
10800         char *volatile foo;
10801         volatile int bar;
10802         volatile foo_t blech;
10803         foo = foo;
10804 }
10805 EOCP
10806 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10807         val="$define"
10808         echo "Yup, it does."
10809 else
10810         val="$undef"
10811         echo "Nope, it doesn't."
10812 fi
10813 set d_volatile
10814 eval $setvar
10815 $rm -f try.*
10816
10817 : see if there is a wait4
10818 set wait4 d_wait4
10819 eval $inlibc
10820
10821 : see if waitpid exists
10822 set waitpid d_waitpid
10823 eval $inlibc
10824
10825 : see if wcstombs exists
10826 set wcstombs d_wcstombs
10827 eval $inlibc
10828
10829 : see if wctomb exists
10830 set wctomb d_wctomb
10831 eval $inlibc
10832
10833 : see if writev exists
10834 set writev d_writev
10835 eval $inlibc
10836
10837 : preserve RCS keywords in files with variable substitution, grrr
10838 Date='$Date'
10839 Id='$Id'
10840 Log='$Log'
10841 RCSfile='$RCSfile'
10842 Revision='$Revision'
10843
10844 case "$crosscompile" in
10845 ''|[nN]*) crosscompile="$undef" ;;
10846 esac
10847
10848 case "$osname" in
10849 next|rhapsody) multiarch="$define" ;;
10850 esac
10851 case "$multiarch" in
10852 ''|[nN]*) multiarch="$undef" ;;
10853 esac
10854
10855 : check for alignment requirements
10856 echo " "
10857 case "$crosscompile$multiarch" in
10858 *$define*)
10859         $cat <<EOM
10860 You seem to be either cross-compiling or doing a multiarchitecture build,
10861 skipping the memory alignment check.
10862
10863 EOM
10864         case "$alignbytes" in
10865         '') alignbytes=8 ;;
10866         esac
10867         ;;
10868 *)
10869         case "$alignbytes" in
10870         '') echo "Checking alignment constraints..." >&4
10871                 $cat >try.c <<'EOCP'
10872 struct foobar {
10873         char foo;
10874         double bar;
10875 } try_algn;
10876 int main()
10877 {
10878         printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10879 }
10880 EOCP
10881                 set try
10882                 if eval $compile_ok; then
10883                         dflt=`./try`
10884                 else
10885                         dflt='8'
10886                         echo "(I can't seem to compile the test program...)"
10887                 fi
10888                 ;;
10889         *) dflt="$alignbytes"
10890                 ;;
10891         esac
10892         rp="Doubles must be aligned on a how-many-byte boundary?"
10893         . ./myread
10894         alignbytes="$ans"
10895         $rm -f try.c try
10896         ;;
10897 esac
10898
10899
10900 : check for ordering of bytes in a long
10901 echo " "
10902 case "$crosscompile$multiarch" in
10903 *$define*)
10904         $cat <<EOM
10905 You seem to be either cross-compiling or doing a multiarchitecture build,
10906 skipping the byteorder check.
10907
10908 EOM
10909         byteorder='0xffff'
10910         ;;
10911 *)
10912         case "$byteorder" in
10913         '')
10914                 $cat <<'EOM'
10915 In the following, larger digits indicate more significance.  A big-endian
10916 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10917 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10918 machines may have weird orders like 3412.  A Cray will report 87654321,
10919 an Alpha will report 12345678. If the test program works the default is
10920 probably right.
10921 I'm now running the test program...
10922 EOM
10923                 $cat >try.c <<'EOCP'
10924 #include <stdio.h>
10925 int main()
10926 {
10927         int i;
10928         union {
10929                 unsigned long l;
10930                 char c[sizeof(long)];
10931         } u;
10932
10933         if (sizeof(long) > 4)
10934                 u.l = (0x08070605L << 32) | 0x04030201L;
10935         else
10936                 u.l = 0x04030201L;
10937         for (i = 0; i < sizeof(long); i++)
10938                 printf("%c", u.c[i]+'0');
10939         printf("\n");
10940         exit(0);
10941 }
10942 EOCP
10943                 xxx_prompt=y
10944                 set try
10945                 if eval $compile && ./try > /dev/null; then
10946                         dflt=`./try`
10947                         case "$dflt" in
10948                         [1-4][1-4][1-4][1-4]|12345678|87654321)
10949                                 echo "(The test program ran ok.)"
10950                                 echo "byteorder=$dflt"
10951                                 xxx_prompt=n
10952                         ;;
10953                         ????|????????) echo "(The test program ran ok.)" ;;
10954                         *) echo "(The test program didn't run right for some reason.)" ;;
10955                         esac
10956                 else
10957                         dflt='4321'
10958                         cat <<'EOM'
10959 (I can't seem to compile the test program.  Guessing big-endian...)
10960 EOM
10961                 fi
10962                 case "$xxx_prompt" in
10963                 y)
10964                         rp="What is the order of bytes in a long?"
10965                         . ./myread
10966                         byteorder="$ans"
10967                         ;;
10968                 *)      byteorder=$dflt
10969                         ;;
10970                 esac
10971                 ;;
10972         esac
10973         $rm -f try.c try
10974         ;;
10975 esac
10976
10977
10978 : how do we catenate cpp tokens here?
10979 echo " "
10980 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10981 $cat >cpp_stuff.c <<'EOCP'
10982 #define RCAT(a,b)a/**/b
10983 #define ACAT(a,b)a ## b
10984 RCAT(Rei,ser)
10985 ACAT(Cir,cus)
10986 EOCP
10987 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10988 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10989         echo "Oh!  Smells like ANSI's been here." >&4
10990         echo "We can catify or stringify, separately or together!"
10991         cpp_stuff=42
10992 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10993         echo "Ah, yes!  The good old days!" >&4
10994         echo "However, in the good old days we don't know how to stringify and"
10995         echo "catify at the same time."
10996         cpp_stuff=1
10997 else
10998         $cat >&4 <<EOM
10999 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11000 to have to edit the values of CAT[2-5] in config.h...
11001 EOM
11002         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11003 fi
11004 $rm -f cpp_stuff.*
11005
11006 : see if this is a db.h system
11007 set db.h i_db
11008 eval $inhdr
11009
11010 case "$i_db" in
11011 $define)
11012         : Check db version.
11013         echo " "
11014         echo "Checking Berkeley DB version ..." >&4
11015         $cat >try.c <<EOCP
11016 #$d_const HASCONST
11017 #ifndef HASCONST
11018 #define const
11019 #endif
11020 #include <sys/types.h>
11021 #include <stdio.h>
11022 #include <db.h>
11023 int main()
11024 {
11025 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11026     int Major, Minor, Patch ;
11027     unsigned long Version ;
11028     (void)db_version(&Major, &Minor, &Patch) ;
11029     printf("You have Berkeley DB Version 2 or greater\n");
11030
11031     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11032                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11033     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11034                 Major, Minor, Patch) ;
11035
11036     /* check that db.h & libdb are compatible */
11037     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11038         printf("db.h and libdb are incompatible\n") ;
11039         exit(3);        
11040     }
11041
11042     printf("db.h and libdb are compatible\n") ;
11043
11044     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11045                 + DB_VERSION_PATCH ;
11046
11047     /* needs to be >= 2.3.4 */
11048     if (Version < 2003004) {
11049     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11050         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11051         exit(2);        
11052     }
11053
11054     exit(0);
11055 #else
11056 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11057     printf("You have Berkeley DB Version 1\n");
11058     exit(0);    /* DB version < 2: the coast is clear. */
11059 #else
11060     exit(1);    /* <db.h> not Berkeley DB? */
11061 #endif
11062 #endif
11063 }
11064 EOCP
11065         set try
11066         if eval $compile && ./try; then
11067                 echo 'Looks OK.' >&4
11068         else
11069                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11070                 i_db=$undef
11071                 case " $libs " in
11072                 *"-ldb "*)
11073                         : Remove db from list of libraries to use
11074                         echo "Removing unusable -ldb from library list" >&4
11075                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11076                         shift
11077                         libs="$*"
11078                         echo "libs = $libs" >&4
11079                         ;;
11080                 esac
11081         fi
11082         $rm -f try.*
11083         ;;
11084 esac
11085
11086 case "$i_db" in
11087 define)
11088         : Check the return type needed for hash 
11089         echo " "
11090         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11091         $cat >try.c <<EOCP
11092 #$d_const HASCONST
11093 #ifndef HASCONST
11094 #define const
11095 #endif
11096 #include <sys/types.h>
11097 #include <db.h>
11098
11099 #ifndef DB_VERSION_MAJOR
11100 u_int32_t hash_cb (ptr, size)
11101 const void *ptr;
11102 size_t size;
11103 {
11104 }
11105 HASHINFO info;
11106 int main()
11107 {
11108         info.hash = hash_cb;
11109 }
11110 #endif
11111 EOCP
11112         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11113                 if $contains warning try.out >>/dev/null 2>&1 ; then
11114                         db_hashtype='int'
11115                 else
11116                         db_hashtype='u_int32_t'
11117                 fi
11118         else
11119                 : XXX Maybe we should just give up here.
11120                 db_hashtype=u_int32_t
11121                 $cat try.out >&4
11122                 echo "Help:  I can't seem to compile the db test program." >&4
11123                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11124         fi
11125         $rm -f try.*
11126         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11127         ;;
11128 *)      db_hashtype=u_int32_t
11129         ;;
11130 esac
11131 case "$i_db" in
11132 define)
11133         : Check the return type needed for prefix 
11134         echo " "
11135         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11136         cat >try.c <<EOCP
11137 #$d_const HASCONST
11138 #ifndef HASCONST
11139 #define const
11140 #endif
11141 #include <sys/types.h>
11142 #include <db.h>
11143
11144 #ifndef DB_VERSION_MAJOR
11145 size_t prefix_cb (key1, key2)
11146 const DBT *key1;
11147 const DBT *key2;
11148 {
11149 }
11150 BTREEINFO info;
11151 int main()
11152 {
11153         info.prefix = prefix_cb;
11154 }
11155 #endif
11156 EOCP
11157         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11158                 if $contains warning try.out >>/dev/null 2>&1 ; then
11159                         db_prefixtype='int'
11160                 else
11161                         db_prefixtype='size_t'
11162                 fi
11163         else
11164                 db_prefixtype='size_t'
11165                 : XXX Maybe we should just give up here.
11166                 $cat try.out >&4
11167                 echo "Help:  I can't seem to compile the db test program." >&4
11168                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11169         fi
11170         $rm -f try.*
11171         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11172         ;;
11173 *)      db_prefixtype='size_t'
11174         ;;
11175 esac
11176
11177 : check for void type
11178 echo " "
11179 echo "Checking to see how well your C compiler groks the void type..." >&4
11180 case "$voidflags" in
11181 '')
11182         $cat >try.c <<'EOCP'
11183 #if TRY & 1
11184 void sub() {
11185 #else
11186 sub() {
11187 #endif
11188         extern void moo();      /* function returning void */
11189         void (*goo)();          /* ptr to func returning void */
11190 #if TRY & 8
11191         void *hue;              /* generic ptr */
11192 #endif
11193 #if TRY & 2
11194         void (*foo[10])();
11195 #endif
11196
11197 #if TRY & 4
11198         if(goo == moo) {
11199                 exit(0);
11200         }
11201 #endif
11202         exit(0);
11203 }
11204 int main() { sub(); }
11205 EOCP
11206         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11207                 voidflags=$defvoidused
11208         echo "Good.  It appears to support void to the level $package wants.">&4
11209                 if $contains warning .out >/dev/null 2>&1; then
11210                         echo "However, you might get some warnings that look like this:"
11211                         $cat .out
11212                 fi
11213         else
11214 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11215                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11216                         echo "It supports 1..."
11217                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11218                                 echo "It also supports 2..."
11219                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11220                                         voidflags=7
11221                                         echo "And it supports 4 but not 8 definitely."
11222                                 else
11223                                         echo "It doesn't support 4..."
11224                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11225                                                 voidflags=11
11226                                                 echo "But it supports 8."
11227                                         else
11228                                                 voidflags=3
11229                                                 echo "Neither does it support 8."
11230                                         fi
11231                                 fi
11232                         else
11233                                 echo "It does not support 2..."
11234                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11235                                         voidflags=13
11236                                         echo "But it supports 4 and 8."
11237                                 else
11238                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11239                                                 voidflags=5
11240                                                 echo "And it supports 4 but has not heard about 8."
11241                                         else
11242                                                 echo "However it supports 8 but not 4."
11243                                         fi
11244                                 fi
11245                         fi
11246                 else
11247                         echo "There is no support at all for void."
11248                         voidflags=0
11249                 fi
11250         fi
11251 esac
11252 case "$voidflags" in
11253 "$defvoidused") ;;
11254 *)      $cat >&4 <<'EOM'
11255   Support flag bits are:
11256     1: basic void declarations.
11257     2: arrays of pointers to functions returning void.
11258     4: operations between pointers to and addresses of void functions.
11259     8: generic void pointers.
11260 EOM
11261         dflt="$voidflags";
11262         rp="Your void support flags add up to what?"
11263         . ./myread
11264         voidflags="$ans"
11265         ;;
11266 esac
11267 $rm -f try.* .out
11268
11269
11270 : How can we generate normalized random numbers ?
11271 echo " "
11272 echo "Looking for a random number function..." >&4
11273 case "$randfunc" in
11274 '')
11275         if set drand48 val -f; eval $csym; $val; then
11276                 dflt="drand48"
11277                 echo "Good, found drand48()." >&4
11278         elif set random val -f; eval $csym; $val; then
11279                 dflt="random"
11280                 echo "OK, found random()." >&4
11281         else
11282                 dflt="rand"
11283                 echo "Yick, looks like I have to use rand()." >&4
11284         fi
11285         echo " "
11286         ;;
11287 *)
11288         dflt="$randfunc"
11289         ;;
11290 esac
11291 cont=true
11292
11293 case "$ccflags" in
11294 *-Dmy_rand=*|*-Dmy_srand=*)
11295         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11296         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11297         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11298         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11299         ;;
11300 esac
11301
11302 while $test "$cont"; do
11303         rp="Use which function to generate random numbers?"
11304         . ./myread
11305         if $test "$ans" = "$dflt"; then
11306                 : null
11307         else
11308                 randbits=''
11309         fi
11310         randfunc="$ans"
11311         if set $ans val -f; eval $csym; $val; then
11312                 cont=''
11313         else
11314                 dflt=y
11315                 rp="I cannot find function $ans. Use that name anyway?"
11316                 . ./myread
11317                 dflt=rand
11318                 case "$ans" in
11319                         [yY]*) cont='';;
11320                 esac
11321         fi
11322         case "$cont" in
11323         '')
11324                 case "$randfunc" in
11325                 drand48)
11326                         drand01="drand48()"
11327                         seedfunc="srand48"
11328                         randbits=48
11329                         randseedtype=long
11330                         ;;
11331                 rand|random)
11332                         case "$randbits" in
11333                         '')
11334 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11335                                 $cat >try.c <<EOCP
11336 #$i_unistd I_UNISTD
11337 #$i_stdlib I_STDLIB
11338 #include <stdio.h>
11339 #ifdef I_UNISTD
11340 #  include <unistd.h>
11341 #endif
11342 #ifdef I_STDLIB
11343 #  include <stdlib.h>
11344 #endif
11345 int main()
11346 {
11347         register int i;
11348         register unsigned long tmp;
11349         register unsigned long max = 0L;
11350
11351         for (i = 1000; i; i--) {
11352                 tmp = (unsigned long) $randfunc();
11353                 if (tmp > max) max = tmp;
11354         }
11355         for (i = 0; max; i++)
11356                 max /= 2;
11357         printf("%d\n",i);
11358 }
11359 EOCP
11360                                 set try
11361                                 if eval $compile_ok; then
11362                                         dflt=`try`
11363                                 else
11364                                         dflt='?'
11365                                         echo "(I can't seem to compile the test program...)"
11366                                 fi
11367                                 ;;
11368                         *)
11369                                 dflt="$randbits"
11370                                 ;;
11371                         esac
11372                         rp="How many bits does your $randfunc() function produce?"
11373                         . ./myread
11374                         randbits="$ans"
11375                         $rm -f try.c try
11376                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11377                         seedfunc="s$randfunc"
11378                         randseedtype=unsigned
11379                         ;;
11380                 *)
11381                         dflt="31"
11382                         rp="How many bits does your $randfunc() function produce?"
11383                         . ./myread
11384                         randbits="$ans"
11385                         seedfunc="s$randfunc"
11386                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11387                         if set $seedfunc val -f; eval $csym; $val; then
11388                                 echo "(Using $seedfunc() to seed random generator)"
11389                         else
11390                                 echo "(Warning: no $seedfunc() to seed random generator)"
11391                                 seedfunc=rand
11392                         fi
11393                         randseedtype=unsigned
11394                         ;;
11395                 esac
11396                 ;;
11397         esac
11398 done
11399
11400 echo " "
11401 echo "Determining whether or not we are on an EBCDIC system..." >&4
11402 $cat >tebcdic.c <<'EOM'
11403 int main()
11404 {
11405   if ('M'==0xd4) return 0;
11406   return 1;
11407 }
11408 EOM
11409
11410 val=$undef
11411 set tebcdic
11412 if eval $compile_ok; then
11413         if ./tebcdic; then
11414                 echo "You have EBCDIC." >&4
11415                 val="$define"
11416         else
11417                 echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin, or UTF." >&4
11418         fi
11419 else
11420         echo "I'm unable to compile the test program." >&4
11421         echo "I'll assume ASCII or some ISO Latin." >&4
11422 fi
11423 $rm -f tebcdic.c tebcdic
11424 set ebcdic
11425 eval $setvar
11426
11427 echo " "
11428 $cat >&4 <<EOM
11429 Checking how to flush all pending stdio output...
11430 EOM
11431 # I only know how to find the first 32 possibly open files on SunOS.
11432 # See also hints/sunos_4_1.sh and util.c  --AD
11433 case "$osname" in
11434 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11435 esac
11436 $cat >>try.c <<EOCP
11437 #include <stdio.h>
11438 #$i_unistd I_UNISTD
11439 #ifdef I_UNISTD
11440 # include <unistd.h>
11441 #endif
11442 #$d_sysconf HAS_SYSCONF
11443 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11444 #ifdef HAS_STDIO_STREAM_ARRAY
11445 # define STDIO_STREAM_ARRAY $stdio_stream_array
11446 #endif
11447 int main() {
11448   FILE* p = fopen("try.out", "w");
11449 #ifdef TRY_FPUTC
11450   fputc('x', p);
11451 #else
11452 # ifdef TRY_FPRINTF
11453   fprintf(p, "x");
11454 # endif
11455 #endif
11456 #ifdef TRY_FFLUSH_NULL
11457   fflush(NULL);
11458 #endif
11459 #ifdef TRY_FFLUSH_ALL
11460   {
11461     long open_max = -1;
11462 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11463     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
11464 # else
11465 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11466     open_max = sysconf(_SC_OPEN_MAX);
11467 #  else
11468 #   ifdef FOPEN_MAX
11469     open_max = FOPEN_MAX;
11470 #   else
11471 #    ifdef OPEN_MAX
11472     open_max = OPEN_MAX;
11473 #    else
11474 #     ifdef _NFILE
11475     open_max = _NFILE;
11476 #     endif
11477 #    endif
11478 #   endif
11479 #  endif
11480 # endif 
11481 # ifdef HAS_STDIO_STREAM_ARRAY
11482     if (open_max > 0) {
11483       long i;
11484       for (i = 0; i < open_max; i++)
11485             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11486                 STDIO_STREAM_ARRAY[i]._file < open_max &&
11487                 STDIO_STREAM_ARRAY[i]._flag)
11488                 fflush(&STDIO_STREAM_ARRAY[i]);
11489     }   
11490   }
11491 # endif
11492 #endif
11493   _exit(42);
11494 }
11495 EOCP
11496 : first we have to find out how _not_ to flush
11497 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11498     output=''
11499     set try -DTRY_FPUTC
11500     if eval $compile; then
11501             $rm -f try.out
11502             ./try$exe_ext 2>/dev/null
11503             if $test ! -s try.out -a "X$?" = X42; then
11504                 output=-DTRY_FPUTC
11505             fi
11506     fi
11507     case "$output" in
11508     '')
11509             set try -DTRY_FPRINTF
11510             $rm -f try.out
11511             if eval $compile; then
11512                     $rm -f try.out
11513                     ./try$exe_ext 2>/dev/null
11514                     if $test ! -s try.out -a "X$?" = X42; then
11515                         output=-DTRY_FPRINTF
11516                     fi
11517             fi
11518         ;;
11519     esac
11520 fi
11521 : check for fflush NULL behaviour
11522 case "$fflushNULL" in
11523 '')     set try -DTRY_FFLUSH_NULL $output
11524         if eval $compile; then
11525                 $rm -f try.out
11526                 ./try$exe_ext 2>/dev/null
11527                 code="$?"
11528                 if $test -s try.out -a "X$code" = X42; then
11529                         fflushNULL="`$cat try.out`"
11530                 else
11531                         if $test "X$code" != X42; then
11532                                 $cat >&4 <<EOM
11533 (If this test failed, don't worry, we'll try another method shortly.)
11534 EOM
11535                         fi
11536                 fi
11537         fi
11538         $rm -f core try.core core.try.*
11539         case "$fflushNULL" in
11540         x)      $cat >&4 <<EOM
11541 Your fflush(NULL) works okay.
11542 EOM
11543                 fflushNULL="$define"
11544                 ;;
11545         '')     $cat >&4 <<EOM
11546 Your fflush(NULL) isn't working (contrary to ANSI C).
11547 EOM
11548                 fflushNULL="$undef"
11549                 ;;
11550         *)      $cat >&4 <<EOM
11551 Cannot figure out whether your fflush(NULL) works or not.
11552 I'm assuming it doesn't (contrary to ANSI C).
11553 EOM
11554                 fflushNULL="$undef"
11555                 ;;
11556         esac
11557         ;;
11558 $define|true|[yY]*)
11559         fflushNULL="$define"
11560         ;;
11561 *)
11562         fflushNULL="$undef"
11563         ;;
11564 esac
11565 : check explicit looping only if NULL did not work
11566 case "$fflushNULL" in
11567 "$undef")
11568         : check for fflush all behaviour
11569         case "$fflushall" in
11570         '')     set try -DTRY_FFLUSH_ALL $output
11571                 if eval $compile; then
11572                         $cat >&4 <<EOM
11573 (Now testing the other method--but note that also this may fail.)
11574 EOM
11575                         $rm -f try.out
11576                         ./try$exe_ext 2>/dev/null
11577                         if $test -s try.out -a "X$?" = X42; then
11578                                 fflushall="`$cat try.out`"
11579                         fi
11580                 fi
11581                 $rm -f core try.core core.try.*
11582                 case "$fflushall" in
11583                 x)      $cat >&4 <<EOM
11584 Whew. Flushing explicitly all the stdio streams works.
11585 EOM
11586                         fflushall="$define"
11587                         ;;
11588                 '')     $cat >&4 <<EOM
11589 Sigh. Flushing explicitly all the stdio streams doesn't work.
11590 EOM
11591                         fflushall="$undef"
11592                         ;;
11593                 *)      $cat >&4 <<EOM
11594 Cannot figure out whether flushing stdio streams explicitly works or not.
11595 I'm assuming it doesn't.
11596 EOM
11597                         fflushall="$undef"
11598                         ;;
11599                 esac
11600                 ;;
11601         "$define"|true|[yY]*)
11602                 fflushall="$define"
11603                 ;;
11604         *)
11605                 fflushall="$undef"
11606                 ;;
11607         esac
11608         ;;
11609 *)      fflushall="$undef"      
11610         ;;
11611 esac
11612 case "$fflushNULL$fflushall" in
11613 undefundef)
11614         $cat <<EOM
11615 I cannot figure out how to flush pending stdio output.
11616 EOM
11617         ;;
11618 esac
11619 $rm -f try.* try$exe_ext
11620
11621 : see what type file positions are declared as in the library
11622 rp="What is the type for file position used by fsetpos()?"
11623 set fpos_t fpostype long stdio.h sys/types.h
11624 eval $typedef_ask
11625
11626 : Store the full pathname to the ar program for use in the C program
11627 : Respect a hint or command line value for full_ar.
11628 case "$full_ar" in
11629 '') full_ar=$ar ;;
11630 esac
11631
11632 : Store the full pathname to the sed program for use in the C program
11633 full_sed=$sed
11634
11635 : see what type gids are declared as in the kernel
11636 echo " "
11637 echo "Looking for the type for group ids returned by getgid()."
11638 set gid_t gidtype xxx stdio.h sys/types.h
11639 eval $typedef
11640 case "$gidtype" in
11641 xxx)
11642         xxx=`./findhdr sys/user.h`
11643         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
11644         case $1 in
11645         unsigned) dflt="$1 $2" ;;
11646         *) dflt="$1" ;;
11647         esac
11648         ;;
11649 *) dflt="$gidtype";;
11650 esac
11651 case "$gidtype" in
11652 gid_t) echo "gid_t found." ;;
11653 *)      rp="What is the type for group ids returned by getgid()?"
11654         . ./myread
11655         gidtype="$ans"
11656         ;;
11657 esac
11658
11659 : see if getgroups exists
11660 set getgroups d_getgrps
11661 eval $inlibc
11662
11663 : see if setgroups exists
11664 set setgroups d_setgrps
11665 eval $inlibc
11666
11667
11668 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
11669 echo " "
11670 case "$d_getgrps$d_setgrps" in
11671 *define*)
11672         case "$groupstype" in
11673         '') dflt="$gidtype" ;;
11674         *)  dflt="$groupstype" ;;
11675         esac
11676         $cat <<EOM
11677 What type of pointer is the second argument to getgroups() and setgroups()?
11678 Usually this is the same as group ids, $gidtype, but not always.
11679
11680 EOM
11681         rp='What type pointer is the second argument to getgroups() and setgroups()?'
11682         . ./myread
11683         groupstype="$ans"
11684         ;;
11685 *)  groupstype="$gidtype";;
11686 esac
11687
11688 : see what type lseek is declared as in the kernel
11689 rp="What is the type used for lseek's offset on this system?"
11690 set off_t lseektype long stdio.h sys/types.h
11691 eval $typedef_ask
11692
11693 echo " "
11694 $echo $n "Checking to see how big your file offsets are...$c" >&4
11695 $cat >try.c <<EOCP
11696 #include <sys/types.h>
11697 #include <stdio.h>
11698 int main()
11699 {
11700         printf("%d\n", sizeof($lseektype));
11701 }
11702 EOCP
11703 set try
11704 if eval $compile_ok; then
11705         lseeksize=`./try`
11706         $echo " $lseeksize bytes." >&4
11707 else
11708         dflt='4'
11709         echo " "
11710         echo "(I can't seem to compile the test program.  Guessing...)"
11711         rp="What is the size of your file offsets (in bytes)?"
11712         . ./myread
11713         lseeksize="$ans"
11714 fi
11715 $rm -f try.c try
11716
11717 echo " "
11718 echo "Checking if your $make program sets \$(MAKE)..." >&4
11719 case "$make_set_make" in
11720 '')
11721         $sed 's/^X //' > testmake.mak << 'EOF'
11722 Xall:
11723 X       @echo 'maketemp="$(MAKE)"'
11724 EOF
11725         case "`$make -f testmake.mak 2>/dev/null`" in
11726         *maketemp=*) make_set_make='#' ;;
11727         *)      make_set_make="MAKE=$make" ;;
11728         esac
11729         $rm -f testmake.mak
11730         ;;
11731 esac
11732 case "$make_set_make" in
11733 '#') echo "Yup, it does.";;
11734 *) echo "Nope, it doesn't.";;
11735 esac
11736
11737 : see what type is used for mode_t
11738 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11739 set mode_t modetype int stdio.h sys/types.h
11740 eval $typedef_ask
11741
11742 : define a fucntion to check prototypes
11743 $cat > protochk <<EOSH
11744 $startsh
11745 cc="$cc"
11746 optimize="$optimize"
11747 ccflags="$ccflags"
11748 prototype="$prototype"
11749 define="$define"
11750 rm=$rm
11751 EOSH
11752
11753 $cat >> protochk <<'EOSH'
11754
11755 $rm -f try.c
11756 foo="$1"
11757 shift
11758 while test $# -ge 2; do
11759         case "$1" in
11760                 $define) echo "#include <$2>" >> try.c ;;
11761                 literal) echo "$2" >> try.c ;;
11762         esac
11763     shift 2
11764 done
11765 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
11766 cat >> try.c <<'EOCP'
11767 #ifdef CAN_PROTOTYPE
11768 #define _(args) args
11769 #else
11770 #define _(args) ()
11771 #endif
11772 EOCP
11773 echo "$foo" >> try.c
11774 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11775 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11776 status=$?
11777 $rm -f try.[co]
11778 exit $status
11779 EOSH
11780 chmod +x protochk
11781 $eunicefix protochk
11782
11783 : see what type is used for size_t
11784 rp="What is the type used for the length parameter for string functions?"
11785 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11786 eval $typedef_ask
11787
11788 : check for type of arguments to gethostbyaddr. 
11789 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11790         case "$d_gethbyaddr" in
11791         $define)
11792                 $cat <<EOM
11793
11794 Checking to see what type of arguments are accepted by gethostbyaddr().
11795 EOM
11796                 hdrs="$define sys/types.h
11797                         $d_socket sys/socket.h 
11798                         $i_niin netinet/in.h 
11799                         $i_netdb netdb.h
11800                         $i_unistd unistd.h"
11801                 : The first arg can 'char *' or 'void *'
11802                 : The second arg is some of integral type
11803                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11804                         for yyy in size_t long int; do
11805                                 case "$netdb_host_type" in
11806                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11807                                         if ./protochk "$try" $hdrs; then
11808                                                 echo "Your system accepts $xxx for the first arg."
11809                                                 echo "...and $yyy for the second arg."
11810                                                 netdb_host_type="$xxx"
11811                                                 netdb_hlen_type="$yyy"
11812                                         fi
11813                                         ;;
11814                                 esac
11815                         done
11816                 done
11817                 : In case none of those worked, prompt the user.
11818                 case "$netdb_host_type" in
11819                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
11820                         dflt='char *'
11821                         . ./myread
11822                         netdb_host_type=$ans
11823                         rp='What is the type for the 2nd argument to gethostbyaddr?'
11824                         dflt="$sizetype"
11825                         . ./myread
11826                         netdb_hlen_type=$ans
11827                         ;;
11828                 esac
11829                 ;;
11830         *)      : no gethostbyaddr, so pick harmless defaults
11831                 netdb_host_type='char *'
11832                 netdb_hlen_type="$sizetype"
11833                 ;;
11834         esac
11835         # Remove the "const" if needed. -- but then we'll have a 
11836         # prototype clash!
11837         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11838 fi
11839
11840 : check for type of argument to gethostbyname. 
11841 if test "X$netdb_name_type" = X ; then
11842         case "$d_gethbyname" in
11843         $define)
11844                 $cat <<EOM
11845
11846 Checking to see what type of argument is accepted by gethostbyname().
11847 EOM
11848                 hdrs="$define sys/types.h
11849                         $d_socket sys/socket.h 
11850                         $i_niin netinet/in.h 
11851                         $i_netdb netdb.h
11852                         $i_unistd unistd.h"
11853                 for xxx in "const char *" "char *"; do
11854                         case "$netdb_name_type" in
11855                         '')     try="extern struct hostent *gethostbyname($xxx);"
11856                                 if ./protochk "$try" $hdrs; then
11857                                         echo "Your system accepts $xxx."
11858                                         netdb_name_type="$xxx"
11859                                 fi
11860                                 ;;
11861                         esac
11862                 done
11863                 : In case none of those worked, prompt the user.
11864                 case "$netdb_name_type" in
11865                 '')     rp='What is the type for the 1st argument to gethostbyname?'
11866                         dflt='char *'
11867                         . ./myread
11868                         netdb_name_type=$ans
11869                         ;;
11870                 esac
11871                 ;;
11872         *)      : no gethostbyname, so pick harmless default
11873                 netdb_name_type='char *'
11874                 ;;
11875         esac
11876 fi
11877
11878 : check for type of 1st argument to getnetbyaddr. 
11879 if test "X$netdb_net_type" = X ; then
11880         case "$d_getnbyaddr" in
11881         $define)
11882                 $cat <<EOM
11883
11884 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11885 EOM
11886                 hdrs="$define sys/types.h
11887                         $d_socket sys/socket.h 
11888                         $i_niin netinet/in.h 
11889                         $i_netdb netdb.h
11890                         $i_unistd unistd.h"
11891                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11892                         case "$netdb_net_type" in
11893                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
11894                                 if ./protochk "$try" $hdrs; then
11895                                         echo "Your system accepts $xxx."
11896                                         netdb_net_type="$xxx"
11897                                 fi
11898                                 ;;
11899                         esac
11900                 done
11901                 : In case none of those worked, prompt the user.
11902                 case "$netdb_net_type" in
11903                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
11904                         dflt='long'
11905                         . ./myread
11906                         netdb_net_type=$ans
11907                         ;;
11908                 esac
11909                 ;;
11910         *)      : no getnetbyaddr, so pick harmless default
11911                 netdb_net_type='long'
11912                 ;;
11913         esac
11914 fi
11915 : locate the preferred pager for this system
11916 case "$pager" in
11917 '')
11918         dflt=''
11919         case "$pg" in
11920         /*) dflt=$pg;;
11921         esac
11922         case "$more" in
11923         /*) dflt=$more;;
11924         esac
11925         case "$less" in
11926         /*) dflt=$less;;
11927         esac
11928         case "$dflt" in
11929         '') dflt=/usr/ucb/more;;
11930         esac
11931         ;;
11932 *) dflt="$pager";;
11933 esac
11934 echo " "
11935 fn=f/
11936 rp='What pager is used on your system?'
11937 . ./getfile
11938 pager="$ans"
11939
11940 : see what type pids are declared as in the kernel
11941 rp="What is the type of process ids on this system?"
11942 set pid_t pidtype int stdio.h sys/types.h
11943 eval $typedef_ask
11944
11945 : check for length of pointer
11946 echo " "
11947 case "$ptrsize" in
11948 '')
11949         $echo $n "Checking to see how big your pointers are...$c" >&4
11950         if test "$voidflags" -gt 7; then
11951                 echo '#define VOID_PTR char *' > try.c
11952         else
11953                 echo '#define VOID_PTR void *' > try.c
11954         fi
11955         $cat >>try.c <<'EOCP'
11956 #include <stdio.h>
11957 int main()
11958 {
11959         printf("%d\n", sizeof(VOID_PTR));
11960         exit(0);
11961 }
11962 EOCP
11963         set try
11964         if eval $compile_ok; then
11965                 ptrsize=`./try`
11966                 $echo " $ptrsize bytes." >&4
11967         else
11968                 dflt='4'
11969                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
11970                 rp="What is the size of a pointer (in bytes)?"
11971                 . ./myread
11972                 ptrsize="$ans"
11973         fi
11974         ;;
11975 esac
11976 $rm -f try.c try
11977
11978 : see if ar generates random libraries by itself
11979 echo " "
11980 echo "Checking how to generate random libraries on your machine..." >&4
11981 echo 'int bar1() { return bar2(); }' > bar1.c
11982 echo 'int bar2() { return 2; }' > bar2.c
11983 $cat > foo.c <<'EOP'
11984 int main() { printf("%d\n", bar1()); exit(0); }
11985 EOP
11986 $cc $ccflags -c bar1.c >/dev/null 2>&1
11987 $cc $ccflags -c bar2.c >/dev/null 2>&1
11988 $cc $ccflags -c foo.c >/dev/null 2>&1
11989 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11990 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11991         ./foobar >/dev/null 2>&1; then
11992         echo "$ar appears to generate random libraries itself."
11993         orderlib=false
11994         ranlib=":"
11995 elif $ar ts bar$_a >/dev/null 2>&1 &&
11996         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11997         ./foobar >/dev/null 2>&1; then
11998                 echo "a table of contents needs to be added with '$ar ts'."
11999                 orderlib=false
12000                 ranlib="$ar ts"
12001 else
12002         case "$ranlib" in
12003         :) ranlib='';;
12004         '')
12005                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12006                 $test -f $ranlib || ranlib=''
12007                 ;;
12008         esac
12009         if $test -n "$ranlib"; then
12010                 echo "your system has '$ranlib'; we'll use that."
12011                 orderlib=false
12012         else
12013                 echo "your system doesn't seem to support random libraries"
12014                 echo "so we'll use lorder and tsort to order the libraries."
12015                 orderlib=true
12016                 ranlib=":"
12017         fi
12018 fi
12019 $rm -f foo* bar* 
12020
12021 : check for type of arguments to select. 
12022 case "$selecttype" in
12023 '') case "$d_select" in
12024         $define)
12025                 $cat <<EOM
12026 Checking to see what type of arguments are accepted by select().
12027 EOM
12028                 hdrs="$define sys/types.h
12029                         $i_systime sys/time.h 
12030                         $i_sysselct sys/select.h
12031                         $d_socket sys/socket.h"
12032                 : The first arg can be int, unsigned, or size_t
12033                 : The last arg may or may not be 'const'
12034                 val=''
12035                 : void pointer has been seen but using that
12036                 : breaks the selectminbits test
12037                 for xxx in 'fd_set *' 'int *'; do
12038                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12039                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12040                                         case "$val" in
12041                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12042                                                 if ./protochk "$try" $hdrs; then
12043                                                         echo "Your system accepts $xxx."
12044                                                         val="$xxx"
12045                                                 fi
12046                                                 ;;
12047                                         esac
12048                                 done
12049                         done
12050                 done
12051                 case "$val" in
12052                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12053                         case "$d_fd_set" in
12054                                 $define) dflt="fd_set *" ;;
12055                                 *)              dflt="int *" ;;
12056                         esac
12057                         . ./myread
12058                         val=$ans
12059                         ;;
12060                 esac
12061                 selecttype="$val"
12062                 ;;
12063         *)      : no select, so pick a harmless default
12064                 selecttype='int *'
12065                 ;;
12066         esac
12067         ;;
12068 esac
12069
12070 : check for the select 'width'
12071 case "$selectminbits" in
12072 '') case "$d_select" in
12073         $define)
12074                 $cat <<EOM
12075
12076 Checking to see on how many bits at a time your select() operates...
12077 EOM
12078                 $cat >try.c <<EOCP
12079 #include <sys/types.h>
12080 #$i_time I_TIME
12081 #$i_systime I_SYS_TIME
12082 #$i_systimek I_SYS_TIME_KERNEL
12083 #ifdef I_TIME
12084 #   include <time.h>
12085 #endif
12086 #ifdef I_SYS_TIME
12087 #   ifdef I_SYS_TIME_KERNEL
12088 #       define KERNEL
12089 #   endif
12090 #   include <sys/time.h>
12091 #   ifdef I_SYS_TIME_KERNEL
12092 #       undef KERNEL
12093 #   endif
12094 #endif
12095 #$i_sysselct I_SYS_SELECT
12096 #ifdef I_SYS_SELECT
12097 #include <sys/select.h>
12098 #endif
12099 #$d_socket HAS_SOCKET
12100 #ifdef HAS_SOCKET
12101 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12102 #endif
12103 #include <stdio.h>
12104 $selecttype b;
12105 #define S sizeof(*(b))
12106 #define MINBITS 64
12107 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12108 #define NBITS  (NBYTES * 8)
12109 int main() {
12110     char s[NBYTES];
12111     struct timeval t;
12112     int i;
12113     FILE* fp;
12114     int fd;
12115
12116     fclose(stdin);
12117     fp = fopen("try.c", "r");
12118     if (fp == 0)
12119       exit(1);
12120     fd = fileno(fp);
12121     if (fd < 0)
12122       exit(2);
12123     b = ($selecttype)s;
12124     for (i = 0; i < NBITS; i++)
12125         FD_SET(i, b);
12126     t.tv_sec  = 0;
12127     t.tv_usec = 0;
12128     select(fd + 1, b, 0, 0, &t);
12129     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
12130     printf("%d\n", i + 1);
12131     return 0;
12132 }
12133 EOCP
12134                 set try
12135                 if eval $compile_ok; then
12136                         selectminbits=`./try`
12137                         case "$selectminbits" in
12138                         '')     cat >&4 <<EOM
12139 Cannot figure out on how many bits at a time your select() operates.
12140 I'll play safe and guess it is 32 bits.
12141 EOM
12142                                 selectminbits=32
12143                                 bits="32 bits"
12144                                 ;;
12145                         1)      bits="1 bit" ;;
12146                         *)      bits="$selectminbits bits" ;;
12147                         esac
12148                         echo "Your select() operates on $bits at a time." >&4
12149                 else
12150                         rp='What is the minimum number of bits your select() operates on?'
12151                         case "$byteorder" in
12152                         1234|12345678)  dflt=32 ;;
12153                         *)              dflt=1  ;;
12154                         esac
12155                         . ./myread
12156                         val=$ans
12157                         selectminbits="$val"
12158                 fi
12159                 $rm -f try.* try
12160                 ;;
12161         *)      : no select, so pick a harmless default
12162                 selectminbits='32'
12163                 ;;
12164         esac
12165         ;;
12166 esac
12167
12168 : Trace out the files included by signal.h, then look for SIGxxx names.
12169 : Remove SIGARRAYSIZE used by HPUX.
12170 : Remove SIGSTKSIZE used by Linux.
12171 : Remove SIGSTKSZ used by Posix.
12172 : Remove SIGTYP void lines used by OS2.
12173 xxx=`echo '#include <signal.h>' |
12174         $cppstdin $cppminus $cppflags 2>/dev/null |
12175         $grep '^[       ]*#.*include' | 
12176         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
12177 : Check this list of files to be sure we have parsed the cpp output ok.
12178 : This will also avoid potentially non-existent files, such 
12179 : as ../foo/bar.h
12180 xxxfiles=''
12181 for xx in $xxx /dev/null ; do
12182         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
12183 done
12184 : If we have found no files, at least try signal.h
12185 case "$xxxfiles" in
12186 '')     xxxfiles=`./findhdr signal.h` ;;
12187 esac
12188 xxx=`awk '
12189 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
12190         print substr($2, 4, 20)
12191 }
12192 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
12193         print substr($3, 4, 20)
12194 }' $xxxfiles`
12195 : Append some common names just in case the awk scan failed.
12196 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
12197 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
12198 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
12199 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
12200 : generate a few handy files for later
12201 $cat > signal.c <<'EOCP'
12202 #include <sys/types.h>
12203 #include <signal.h>
12204 #include <stdio.h>
12205 int main() {
12206
12207 /* Strange style to avoid deeply-nested #if/#else/#endif */
12208 #ifndef NSIG
12209 #  ifdef _NSIG
12210 #    define NSIG (_NSIG)
12211 #  endif
12212 #endif
12213
12214 #ifndef NSIG
12215 #  ifdef SIGMAX
12216 #    define NSIG (SIGMAX+1)
12217 #  endif
12218 #endif
12219
12220 #ifndef NSIG
12221 #  ifdef SIG_MAX
12222 #    define NSIG (SIG_MAX+1)
12223 #  endif
12224 #endif
12225
12226 #ifndef NSIG
12227 #  ifdef MAXSIG
12228 #    define NSIG (MAXSIG+1)
12229 #  endif
12230 #endif
12231
12232 #ifndef NSIG
12233 #  ifdef MAX_SIG
12234 #    define NSIG (MAX_SIG+1)
12235 #  endif
12236 #endif
12237
12238 #ifndef NSIG
12239 #  ifdef SIGARRAYSIZE
12240 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
12241 #  endif
12242 #endif
12243
12244 #ifndef NSIG
12245 #  ifdef _sys_nsig
12246 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
12247 #  endif
12248 #endif
12249
12250 /* Default to some arbitrary number that's big enough to get most
12251    of the common signals.
12252 */
12253 #ifndef NSIG
12254 #    define NSIG 50
12255 #endif
12256
12257 printf("NSIG %d\n", NSIG);
12258
12259 #ifndef JUST_NSIG
12260
12261 EOCP
12262
12263 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
12264 {
12265         printf "#ifdef SIG"; printf $1; printf "\n"
12266         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
12267         printf $1; printf ");\n"
12268         printf "#endif\n"
12269 }
12270 END {
12271         printf "#endif /* JUST_NSIG */\n";
12272         printf "}\n";
12273 }
12274 ' >>signal.c
12275 $cat >signal.awk <<'EOP'
12276 BEGIN { ndups = 0 }
12277 $1 ~ /^NSIG$/ { nsig = $2 }
12278 ($1 !~ /^NSIG$/) && (NF == 2) {
12279     if ($2 > maxsig) { maxsig = $2 }
12280     if (sig_name[$2]) {
12281         dup_name[ndups] = $1
12282         dup_num[ndups] = $2
12283         ndups++ 
12284     }
12285     else {
12286         sig_name[$2] = $1
12287         sig_num[$2] = $2
12288     }
12289 }
12290 END { 
12291     if (nsig == 0) {
12292         nsig = maxsig + 1
12293     }
12294     printf("NSIG %d\n", nsig);
12295     for (n = 1; n < nsig; n++) {
12296         if (sig_name[n]) {
12297             printf("%s %d\n", sig_name[n], sig_num[n])
12298         }
12299         else {
12300             printf("NUM%d %d\n", n, n) 
12301         }
12302     }
12303     for (n = 0; n < ndups; n++) {
12304         printf("%s %d\n", dup_name[n], dup_num[n])
12305     }
12306 }
12307 EOP
12308 $cat >signal_cmd <<EOS
12309 $startsh
12310 if $test -s signal.lst; then
12311     echo "Using your existing signal.lst file"
12312         exit 0
12313 fi
12314 xxx="$xxx"
12315 EOS
12316 $cat >>signal_cmd <<'EOS'
12317
12318 set signal
12319 if eval $compile_ok; then
12320         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
12321 else
12322         echo "(I can't seem be able to compile the whole test program)" >&4
12323         echo "(I'll try it in little pieces.)" >&4
12324         set signal -DJUST_NSIG
12325         if eval $compile_ok; then
12326                 ./signal$_exe > signal.nsg
12327                 $cat signal.nsg
12328         else
12329                 echo "I can't seem to figure out how many signals you have." >&4
12330                 echo "Guessing 50." >&4
12331                 echo 'NSIG 50' > signal.nsg
12332         fi
12333         : Now look at all the signal names, one at a time.
12334         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
12335                 $cat > signal.c <<EOCP
12336 #include <sys/types.h>
12337 #include <signal.h>
12338 #include <stdio.h>
12339 int main() {
12340 printf("$xx %d\n", SIG${xx});
12341 return 0;
12342 }
12343 EOCP
12344                 set signal
12345                 if eval $compile; then
12346                         echo "SIG${xx} found."
12347                         ./signal$_exe  >> signal.ls1
12348                 else
12349                         echo "SIG${xx} NOT found."
12350                 fi
12351         done
12352         if $test -s signal.ls1; then
12353                 $cat signal.nsg signal.ls1 |
12354                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
12355         fi
12356
12357 fi
12358 if $test -s signal.lst; then
12359         :
12360 else
12361         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
12362         echo 'kill -l' >signal
12363         set X `csh -f <signal`
12364         $rm -f signal
12365         shift
12366         case $# in
12367         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
12368         esac
12369         echo $@ | $tr ' ' $trnl | \
12370             $awk '{ printf "%s %d\n", $1, ++s; }
12371                   END { printf "NSIG %d\n", ++s }' >signal.lst
12372 fi
12373 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
12374 EOS
12375 chmod a+x signal_cmd
12376 $eunicefix signal_cmd
12377
12378 : generate list of signal names
12379 echo " "
12380 case "$sig_name_init" in
12381 '') doinit=yes ;;
12382 *)  case "$sig_num_init" in
12383     ''|*,*) doinit=yes ;;
12384     esac ;;
12385 esac
12386 case "$doinit" in
12387 yes)
12388         echo "Generating a list of signal names and numbers..." >&4
12389         . ./signal_cmd
12390         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
12391         sig_name=`$awk 'BEGIN { printf "ZERO " }
12392                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
12393         sig_num=`$awk  'BEGIN { printf "0 " }
12394                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
12395         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
12396                              !/^NSIG/   { printf "\"%s\", ", $1 }
12397                              END        { printf "0\n" }' signal.lst`
12398         sig_num_init=`$awk  'BEGIN      { printf "0, " }
12399                              !/^NSIG/   { printf "%d, ", $2}
12400                              END        { printf "0\n"}' signal.lst`
12401         ;;
12402 esac
12403 echo "The following $sig_count signals are available:"
12404 echo " "
12405 echo $sig_name | $awk \
12406 'BEGIN { linelen = 0 }
12407 {
12408         for (i = 1; i <= NF; i++) {
12409                 name = "SIG" $i " "
12410                 linelen = linelen + length(name)
12411                 if (linelen > 70) {
12412                         printf "\n"
12413                         linelen = length(name)
12414                 }
12415                 printf "%s", name
12416         }
12417         printf "\n"
12418 }'
12419 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
12420
12421 : see what type is used for signed size_t
12422 set ssize_t ssizetype int stdio.h sys/types.h
12423 eval $typedef
12424 dflt="$ssizetype"
12425 $cat > ssize.c <<EOM
12426 #include <stdio.h>
12427 #include <sys/types.h>
12428 #define Size_t $sizetype
12429 #define SSize_t $dflt
12430 int main()
12431 {
12432         if (sizeof(Size_t) == sizeof(SSize_t))
12433                 printf("$dflt\n");
12434         else if (sizeof(Size_t) == sizeof(int))
12435                 printf("int\n");
12436         else 
12437                 printf("long\n");
12438         exit(0);
12439 }
12440 EOM
12441 echo " "
12442 set ssize
12443 if eval $compile_ok && ./ssize > /dev/null; then
12444         ssizetype=`./ssize`
12445         echo "I'll be using $ssizetype for functions returning a byte count." >&4
12446 else
12447         $cat >&4 <<EOM
12448 Help! I can't compile and run the ssize_t test program: please enlighten me!
12449 (This is probably a misconfiguration in your system or libraries, and
12450 you really ought to fix it.  Still, I'll try anyway.)
12451
12452 I need a type that is the same size as $sizetype, but is guaranteed to
12453 be signed.  Common values are ssize_t, int and long.
12454
12455 EOM
12456         rp="What signed type is the same size as $sizetype?"
12457         . ./myread
12458         ssizetype="$ans"
12459 fi
12460 $rm -f ssize ssize.*
12461
12462 : see what type of char stdio uses.
12463 echo " "
12464 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12465         echo "Your stdio uses unsigned chars." >&4
12466         stdchar="unsigned char"
12467 else
12468         echo "Your stdio uses signed chars." >&4
12469         stdchar="char"
12470 fi
12471
12472 : see if time exists
12473 echo " "
12474 if test "X$d_time" = X -o X"$timetype" = X; then
12475     if set time val -f d_time; eval $csym; $val; then
12476                 echo 'time() found.' >&4
12477                 val="$define"
12478                 rp="What is the type returned by time() on this system?"
12479                 set time_t timetype long stdio.h sys/types.h
12480                 eval $typedef_ask
12481     else
12482                 echo 'time() not found, hope that will do.' >&4
12483                 val="$undef"
12484                 timetype='int';
12485     fi
12486     set d_time
12487     eval $setvar
12488 fi
12489
12490 : see what type uids are declared as in the kernel
12491 echo " "
12492 echo "Looking for the type for user ids returned by getuid()."
12493 set uid_t uidtype xxx stdio.h sys/types.h
12494 eval $typedef
12495 case "$uidtype" in
12496 xxx)
12497         xxx=`./findhdr sys/user.h`
12498         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
12499         case $1 in
12500         unsigned) dflt="$1 $2" ;;
12501         *) dflt="$1" ;;
12502         esac
12503         ;;
12504 *) dflt="$uidtype";;
12505 esac
12506 case "$uidtype" in
12507 uid_t)  echo "uid_t found." ;;
12508 *)      rp="What is the type for user ids returned by getuid()?"
12509         . ./myread
12510         uidtype="$ans"
12511         ;;
12512 esac
12513
12514 : see if dbm.h is available
12515 : see if dbmclose exists
12516 set dbmclose d_dbmclose
12517 eval $inlibc
12518
12519 case "$d_dbmclose" in
12520 $define)
12521         set dbm.h i_dbm
12522         eval $inhdr
12523         case "$i_dbm" in
12524         $define)
12525                 val="$undef"
12526                 set i_rpcsvcdbm
12527                 eval $setvar
12528                 ;;
12529         *)      set rpcsvc/dbm.h i_rpcsvcdbm
12530                 eval $inhdr
12531                 ;;
12532         esac
12533         ;;
12534 *)      echo "We won't be including <dbm.h>"
12535         val="$undef"
12536         set i_dbm
12537         eval $setvar
12538         val="$undef"
12539         set i_rpcsvcdbm
12540         eval $setvar
12541         ;;
12542 esac
12543
12544 : see if this is a sys/file.h system
12545 val=''
12546 set sys/file.h val
12547 eval $inhdr
12548
12549 : do we need to include sys/file.h ?
12550 case "$val" in
12551 "$define")
12552         echo " "
12553         if $h_sysfile; then
12554                 val="$define"
12555                 echo "We'll be including <sys/file.h>." >&4
12556         else
12557                 val="$undef"
12558                 echo "We won't be including <sys/file.h>." >&4
12559         fi
12560         ;;
12561 *)
12562         h_sysfile=false
12563         ;;
12564 esac
12565 set i_sysfile
12566 eval $setvar
12567
12568 : see if fcntl.h is there
12569 val=''
12570 set fcntl.h val
12571 eval $inhdr
12572
12573 : see if we can include fcntl.h
12574 case "$val" in
12575 "$define")
12576         echo " "
12577         if $h_fcntl; then
12578                 val="$define"
12579                 echo "We'll be including <fcntl.h>." >&4
12580         else
12581                 val="$undef"
12582                 if $h_sysfile; then
12583         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12584                 else
12585                         echo "We won't be including <fcntl.h>." >&4
12586                 fi
12587         fi
12588         ;;
12589 *)
12590         h_fcntl=false
12591         val="$undef"
12592         ;;
12593 esac
12594 set i_fcntl
12595 eval $setvar
12596
12597 : see if locale.h is available
12598 set locale.h i_locale
12599 eval $inhdr
12600
12601 : see if mach cthreads are available
12602 if test "X$usethreads" = "X$define"; then
12603         set mach/cthreads.h i_machcthr
12604         eval $inhdr
12605 else
12606         i_machcthr="$undef"
12607 fi
12608
12609
12610
12611 : see if this is a math.h system
12612 set math.h i_math
12613 eval $inhdr
12614
12615 : see if this is a mntent.h system
12616 set mntent.h i_mntent
12617 eval $inhdr
12618
12619 : see if ndbm.h is available
12620 set ndbm.h t_ndbm
12621 eval $inhdr
12622 case "$t_ndbm" in
12623 $define)
12624         : see if dbm_open exists
12625         set dbm_open d_dbm_open
12626         eval $inlibc
12627         case "$d_dbm_open" in
12628         $undef)
12629                 t_ndbm="$undef"
12630                 echo "We won't be including <ndbm.h>"
12631                 ;;
12632         esac
12633         ;;
12634 esac
12635 val="$t_ndbm"
12636 set i_ndbm
12637 eval $setvar
12638
12639 : see if net/errno.h is available
12640 val=''
12641 set net/errno.h val
12642 eval $inhdr
12643
12644 : Unfortunately, it causes problems on some systems.  Arrgh.
12645 case "$val" in
12646 $define)
12647         cat > try.c <<'EOM'
12648 #include <stdio.h>
12649 #include <errno.h>
12650 #include <net/errno.h>
12651 int func()
12652 {
12653         return ENOTSOCK;
12654 }
12655 EOM
12656         if $cc $ccflags -c try.c >/dev/null 2>&1; then
12657                 echo "We'll be including <net/errno.h>." >&4
12658         else
12659                 echo "We won't be including <net/errno.h>." >&4
12660                 val="$undef"
12661         fi
12662         $rm -f try.* try
12663         ;;
12664 esac
12665 set i_neterrno
12666 eval $setvar
12667
12668 : see if netinet/tcp.h is available
12669 set netinet/tcp.h i_netinettcp
12670 eval $inhdr
12671
12672 : see if this is a poll.h system
12673 set poll.h i_poll
12674 eval $inhdr
12675
12676 : get C preprocessor symbols handy
12677 echo " "
12678 $echo $n "Hmm... $c"
12679 echo $al | $tr ' ' $trnl >Cppsym.know
12680 $cat <<EOSS >Cppsym
12681 $startsh
12682 case "\$1" in
12683 -l) list=true
12684         shift
12685         ;;
12686 esac
12687 unknown=''
12688 case "\$list\$#" in
12689 1|2)
12690         for sym do
12691                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
12692                         exit 0
12693                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
12694                         :
12695                 else
12696                         unknown="\$unknown \$sym"
12697                 fi
12698         done
12699         set X \$unknown
12700         shift
12701         ;;
12702 esac
12703 case \$# in
12704 0) exit 1;;
12705 esac
12706 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
12707 #ifdef \1\\
12708 exit 0; _ _ _ _\1\\      \1\\
12709 #endif\\
12710 /' >Cppsym\$\$
12711 echo "exit 1; _ _ _" >>Cppsym\$\$
12712 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
12713 case "\$list" in
12714 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12715 *)
12716         sh Cppsym2\$\$
12717         status=\$?
12718         ;;
12719 esac
12720 $rm -f Cppsym\$\$ Cppsym2\$\$
12721 exit \$status
12722 EOSS
12723 chmod +x Cppsym
12724 $eunicefix Cppsym
12725 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12726
12727 : now check the C compiler for additional symbols
12728 postprocess_cc_v=''
12729 case "$osname" in
12730 aix) postprocess_cc_v="|$tr , ' '" ;;
12731 esac
12732 $cat >ccsym <<EOS
12733 $startsh
12734 $cat >tmp.c <<EOF
12735 extern int foo;
12736 EOF
12737 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
12738 do
12739         case "\$i" in
12740         -D*) echo "\$i" | $sed 's/^-D//';;
12741         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12742         esac
12743 done
12744 $rm -f try.c
12745 EOS
12746 postprocess_cc_v=''
12747 chmod +x ccsym
12748 $eunicefix ccsym
12749 ./ccsym > ccsym1.raw
12750 if $test -s ccsym1.raw; then
12751        $sort ccsym1.raw | $uniq >ccsym.raw
12752 else
12753        mv ccsym1.raw ccsym.raw
12754 fi
12755
12756 $awk '/\=/ { print $0; next }
12757         { print $0"=1" }' ccsym.raw >ccsym.list
12758 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12759 $comm -13 ccsym.true ccsym.list >ccsym.own
12760 $comm -12 ccsym.true ccsym.list >ccsym.com
12761 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12762 also=''
12763 if $test -z ccsym.raw; then
12764         echo "Your C compiler doesn't seem to define any symbols!" >&4
12765         echo " "
12766         echo "However, your C preprocessor defines the following symbols:"
12767         $cat Cppsym.true
12768         ccsymbols=''
12769         cppsymbols=`$cat Cppsym.true`
12770         cppsymbols=`echo $cppsymbols`
12771         cppccsymbols="$cppsymbols"
12772 else
12773         if $test -s ccsym.com; then
12774                 echo "Your C compiler and pre-processor define these symbols:"
12775                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12776                 also='also '
12777                 symbols='ones'
12778                 cppccsymbols=`$cat ccsym.com`
12779                 cppccsymbols=`echo $cppccsymbols`
12780                 $test "$silent" || sleep 1
12781         fi
12782         if $test -s ccsym.cpp; then
12783                 $test "$also" && echo " "
12784                 echo "Your C pre-processor ${also}defines the following symbols:"
12785                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12786                 also='further '
12787                 cppsymbols=`$cat ccsym.cpp`
12788                 cppsymbols=`echo $cppsymbols`
12789                 $test "$silent" || sleep 1
12790         fi
12791         if $test -s ccsym.own; then
12792                 $test "$also" && echo " "
12793                 echo "Your C compiler ${also}defines the following cpp symbols:"
12794                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12795                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12796                 ccsymbols=`$cat ccsym.own`
12797                 ccsymbols=`echo $ccsymbols`
12798                 $test "$silent" || sleep 1
12799         fi
12800 fi
12801 $rm -f ccsym*
12802
12803 : see if this is a termio system
12804 val="$undef"
12805 val2="$undef"
12806 val3="$undef"
12807 if $test `./findhdr termios.h`; then
12808         set tcsetattr i_termios
12809         eval $inlibc
12810         val3="$i_termios"
12811 fi
12812 echo " "
12813 case "$val3" in
12814 "$define") echo "You have POSIX termios.h... good!" >&4;;
12815 *) if ./Cppsym pyr; then
12816                 case "`/bin/universe`" in
12817                 ucb) if $test `./findhdr sgtty.h`; then
12818                                 val2="$define"
12819                                 echo "<sgtty.h> found." >&4
12820                         else
12821                                 echo "System is pyramid with BSD universe."
12822                                 echo "<sgtty.h> not found--you could have problems." >&4
12823                         fi;;
12824                 *) if $test `./findhdr termio.h`; then
12825                                 val="$define"
12826                                 echo "<termio.h> found." >&4
12827                         else
12828                                 echo "System is pyramid with USG universe."
12829                                 echo "<termio.h> not found--you could have problems." >&4
12830                         fi;;
12831                 esac
12832         elif ./usg; then
12833                 if $test `./findhdr termio.h`; then
12834                         echo "<termio.h> found." >&4
12835                         val="$define"
12836                 elif $test `./findhdr sgtty.h`; then
12837                         echo "<sgtty.h> found." >&4
12838                         val2="$define"
12839                 else
12840 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12841                 fi
12842         else
12843                 if $test `./findhdr sgtty.h`; then
12844                         echo "<sgtty.h> found." >&4
12845                         val2="$define"
12846                 elif $test `./findhdr termio.h`; then
12847                         echo "<termio.h> found." >&4
12848                         val="$define"
12849                 else
12850 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12851                 fi
12852         fi;;
12853 esac
12854 set i_termio; eval $setvar
12855 val=$val2; set i_sgtty; eval $setvar
12856 val=$val3; set i_termios; eval $setvar
12857
12858 : see if this is a shadow.h system
12859 set shadow.h i_shadow
12860 eval $inhdr
12861
12862 : see if this is a socks.h system
12863 set socks.h i_socks
12864 eval $inhdr
12865
12866 : see if stdarg is available
12867 echo " "
12868 if $test `./findhdr stdarg.h`; then
12869         echo "<stdarg.h> found." >&4
12870         valstd="$define"
12871 else
12872         echo "<stdarg.h> NOT found." >&4
12873         valstd="$undef"
12874 fi
12875
12876 : see if varags is available
12877 echo " "
12878 if $test `./findhdr varargs.h`; then
12879         echo "<varargs.h> found." >&4
12880 else
12881         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12882 fi
12883
12884 : set up the varargs testing programs
12885 $cat > varargs.c <<EOP
12886 #ifdef I_STDARG
12887 #include <stdarg.h>
12888 #endif
12889 #ifdef I_VARARGS
12890 #include <varargs.h>
12891 #endif
12892
12893 #ifdef I_STDARG
12894 int f(char *p, ...)
12895 #else
12896 int f(va_alist)
12897 va_dcl
12898 #endif
12899 {
12900         va_list ap;
12901 #ifndef I_STDARG
12902         char *p;
12903 #endif
12904 #ifdef I_STDARG
12905         va_start(ap,p);
12906 #else
12907         va_start(ap);
12908         p = va_arg(ap, char *);
12909 #endif
12910         va_end(ap);
12911 }
12912 EOP
12913 $cat > varargs <<EOP
12914 $startsh
12915 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12916         echo "true"
12917 else
12918         echo "false"
12919 fi
12920 $rm -f varargs$_o
12921 EOP
12922 chmod +x varargs
12923
12924 : now check which varargs header should be included
12925 echo " "
12926 i_varhdr=''
12927 case "$valstd" in
12928 "$define")
12929         if `./varargs I_STDARG`; then
12930                 val='stdarg.h'
12931         elif `./varargs I_VARARGS`; then
12932                 val='varargs.h'
12933         fi
12934         ;;
12935 *)
12936         if `./varargs I_VARARGS`; then
12937                 val='varargs.h'
12938         fi
12939         ;;
12940 esac
12941 case "$val" in
12942 '')
12943 echo "I could not find the definition for va_dcl... You have problems..." >&4
12944         val="$undef"; set i_stdarg; eval $setvar
12945         val="$undef"; set i_varargs; eval $setvar
12946         ;;
12947 *) 
12948         set i_varhdr
12949         eval $setvar
12950         case "$i_varhdr" in
12951         stdarg.h)
12952                 val="$define"; set i_stdarg; eval $setvar
12953                 val="$undef"; set i_varargs; eval $setvar
12954                 ;;
12955         varargs.h)
12956                 val="$undef"; set i_stdarg; eval $setvar
12957                 val="$define"; set i_varargs; eval $setvar
12958                 ;;
12959         esac
12960         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12961 esac
12962 $rm -f varargs*
12963
12964 : see if stddef is available
12965 set stddef.h i_stddef
12966 eval $inhdr
12967
12968 : see if sys/access.h is available
12969 set sys/access.h i_sysaccess
12970 eval $inhdr
12971
12972 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12973 set sys/filio.h i_sysfilio
12974 eval $inhdr
12975 echo " "
12976 if $test `./findhdr sys/ioctl.h`; then
12977         val="$define"
12978         echo '<sys/ioctl.h> found.' >&4
12979 else
12980         val="$undef"
12981         if $test $i_sysfilio = "$define"; then
12982             echo '<sys/ioctl.h> NOT found.' >&4
12983         else
12984                 $test $i_sgtty = "$define" && xxx="sgtty.h"
12985                 $test $i_termio = "$define" && xxx="termio.h"
12986                 $test $i_termios = "$define" && xxx="termios.h"
12987 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12988         fi
12989 fi
12990 set i_sysioctl
12991 eval $setvar
12992
12993 : see if sys/resource.h has to be included
12994 set sys/resource.h i_sysresrc
12995 eval $inhdr
12996
12997 : see if sys/security.h is available
12998 set sys/security.h i_syssecrt
12999 eval $inhdr
13000
13001 : see if this is a sys/statvfs.h system
13002 set sys/statvfs.h i_sysstatvfs
13003 eval $inhdr
13004
13005 : see if this is a sys/un.h system
13006 set sys/un.h i_sysun
13007 eval $inhdr
13008
13009 : see if this is a syswait system
13010 set sys/wait.h i_syswait
13011 eval $inhdr
13012
13013 : see if this is an utime system
13014 set utime.h i_utime
13015 eval $inhdr
13016
13017 : see if this is a values.h system
13018 set values.h i_values
13019 eval $inhdr
13020
13021 : see if this is a vfork system
13022 case "$d_vfork" in
13023 "$define")
13024         set vfork.h i_vfork
13025         eval $inhdr
13026         ;;
13027 *)
13028         i_vfork="$undef"
13029         ;;
13030 esac
13031
13032 : see if gdbm.h is available
13033 set gdbm.h t_gdbm
13034 eval $inhdr
13035 case "$t_gdbm" in
13036 $define)
13037         : see if gdbm_open exists
13038         set gdbm_open d_gdbm_open
13039         eval $inlibc
13040         case "$d_gdbm_open" in
13041         $undef)
13042                 t_gdbm="$undef"
13043                 echo "We won't be including <gdbm.h>"
13044                 ;;
13045         esac
13046         ;;
13047 esac
13048 val="$t_gdbm"
13049 set i_gdbm
13050 eval $setvar
13051
13052 echo " "
13053 echo "Looking for extensions..." >&4
13054 : If we are using the old config.sh, known_extensions may contain
13055 : old or inaccurate or duplicate values.
13056 known_extensions=''
13057 nonxs_extensions=''
13058 : We do not use find because it might not be available.
13059 : We do not just use MANIFEST because the user may have dropped
13060 : some additional extensions into the source tree and expect them
13061 : to be built.
13062
13063 : Function to recursively find available extensions, ignoring DynaLoader
13064 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
13065 find_extensions='
13066     for xxx in *; do
13067        case "$xxx" in
13068            DynaLoader|dynaload) ;;
13069            *)
13070            if $test -f $xxx/$xxx.xs; then
13071                known_extensions="$known_extensions $1$xxx";
13072            elif $test -f $xxx/Makefile.PL; then
13073                nonxs_extensions="$nonxs_extensions $1$xxx";
13074            else
13075                if $test -d $xxx -a $# -lt 10; then
13076                    set $1$xxx/ $*;
13077                    cd $xxx;
13078                    eval $find_extensions;
13079                    cd ..;
13080                    shift;
13081                fi;
13082            fi
13083            ;;
13084        esac;
13085     done'
13086 tdir=`pwd`
13087 cd $rsrc/ext
13088 set X
13089 shift
13090 eval $find_extensions
13091 set X $nonxs_extensions
13092 shift
13093 nonxs_extensions="$*"
13094 set X $known_extensions
13095 shift
13096 known_extensions="$*"
13097 cd $tdir
13098
13099 : Now see which are supported on this system.
13100 avail_ext=''
13101 for xxx in $known_extensions ; do
13102         case "$xxx" in
13103         DB_File|db_file)
13104                 case "$i_db" in
13105                 $define) avail_ext="$avail_ext $xxx" ;;
13106                 esac
13107                 ;;
13108         GDBM_File|gdbm_fil)
13109                 case "$i_gdbm" in 
13110                 $define) avail_ext="$avail_ext $xxx" ;;
13111                 esac
13112                 ;;
13113         NDBM_File|ndbm_fil)
13114                 case "$i_ndbm" in
13115                 $define) avail_ext="$avail_ext $xxx" ;;
13116                 esac
13117                 ;;
13118         ODBM_File|odbm_fil) 
13119                 case "${i_dbm}${i_rpcsvcdbm}" in
13120                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
13121                 esac
13122                 ;;
13123         POSIX|posix)
13124                 case "$useposix" in
13125                 true|define|y) avail_ext="$avail_ext $xxx" ;;
13126                 esac
13127                 ;;
13128         Opcode|opcode)
13129                 case "$useopcode" in
13130                 true|define|y) avail_ext="$avail_ext $xxx" ;;
13131                 esac
13132                 ;;
13133         Socket|socket)
13134                 case "$d_socket" in 
13135                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
13136                 esac
13137                 ;;
13138         Thread|thread)
13139                 case "$usethreads" in 
13140                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
13141                 esac
13142                 ;;
13143         IPC/SysV|ipc/sysv)
13144                 : XXX Do we need a useipcsysv variable here
13145                 case "${d_msg}${d_sem}${d_shm}" in 
13146                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
13147                 esac
13148                 ;;
13149         *)      avail_ext="$avail_ext $xxx"
13150                 ;;
13151         esac
13152 done
13153
13154 set X $avail_ext
13155 shift
13156 avail_ext="$*"
13157
13158 : Now see which nonxs extensions are supported on this system.
13159 : For now assume all are.
13160 nonxs_ext=''
13161 for xxx in $nonxs_extensions ; do
13162         case "$xxx" in
13163         *)      nonxs_ext="$nonxs_ext $xxx"
13164                 ;;
13165         esac
13166 done
13167
13168 set X $nonxs_ext
13169 shift
13170 nonxs_ext="$*"
13171
13172 case $usedl in
13173 $define)
13174         $cat <<EOM
13175 A number of extensions are supplied with $package.  You may choose to
13176 compile these extensions for dynamic loading (the default), compile
13177 them into the $package executable (static loading), or not include
13178 them at all.  Answer "none" to include no extensions.
13179 Note that DynaLoader is always built and need not be mentioned here.
13180
13181 EOM
13182         case "$dynamic_ext" in
13183         '') dflt="$avail_ext" ;;
13184         *)      dflt="$dynamic_ext"
13185                 # Perhaps we are reusing an old out-of-date config.sh.
13186                 case "$hint" in
13187                 previous)
13188                         if test X"$dynamic_ext" != X"$avail_ext"; then
13189                                 $cat <<EOM
13190 NOTICE:  Your previous config.sh list may be incorrect. 
13191 The extensions now available to you are 
13192         ${avail_ext}
13193 but the default list from your previous config.sh is
13194         ${dynamic_ext} 
13195
13196 EOM
13197                         fi
13198                         ;;
13199                 esac
13200                 ;;
13201         esac
13202         case "$dflt" in
13203         '')     dflt=none;;
13204         esac
13205         rp="What extensions do you wish to load dynamically?"
13206         . ./myread
13207         case "$ans" in
13208         none) dynamic_ext=' ' ;;
13209         *) dynamic_ext="$ans" ;;
13210         esac
13211
13212         case "$static_ext" in
13213         '')
13214                 : Exclude those already listed in dynamic linking
13215                 dflt=''
13216                 for xxx in $avail_ext; do
13217                         case " $dynamic_ext " in
13218                         *" $xxx "*) ;;
13219                         *) dflt="$dflt $xxx" ;;
13220                         esac
13221                 done
13222                 set X $dflt
13223                 shift
13224                 dflt="$*"
13225                 ;;
13226         *)  dflt="$static_ext" 
13227                 ;;
13228         esac
13229
13230         case "$dflt" in
13231         '')     dflt=none;;
13232         esac
13233         rp="What extensions do you wish to load statically?"
13234         . ./myread
13235         case "$ans" in
13236         none) static_ext=' ' ;;
13237         *) static_ext="$ans" ;;
13238         esac
13239         ;;
13240 *)
13241         $cat <<EOM
13242 A number of extensions are supplied with $package.  Answer "none" 
13243 to include no extensions. 
13244 Note that DynaLoader is always built and need not be mentioned here.
13245
13246 EOM
13247         case "$static_ext" in
13248         '') dflt="$avail_ext" ;;
13249         *)      dflt="$static_ext"
13250                 # Perhaps we are reusing an old out-of-date config.sh.
13251                 case "$hint" in
13252                 previous)
13253                         if test X"$static_ext" != X"$avail_ext"; then
13254                                 $cat <<EOM
13255 NOTICE:  Your previous config.sh list may be incorrect. 
13256 The extensions now available to you are 
13257         ${avail_ext}
13258 but the default list from your previous config.sh is
13259         ${static_ext} 
13260
13261 EOM
13262                         fi
13263                         ;;
13264                 esac
13265                 ;;
13266         esac
13267         : Exclude those that are not xs extensions
13268         case "$dflt" in
13269         '')     dflt=none;;
13270         esac
13271         rp="What extensions do you wish to include?"
13272         . ./myread
13273         case "$ans" in
13274         none) static_ext=' ' ;;
13275         *) static_ext="$ans" ;;
13276         esac
13277         ;;
13278 esac
13279
13280 set X $dynamic_ext $static_ext $nonxs_ext
13281 shift
13282 extensions="$*"
13283
13284 : Remove build directory name from cppstdin so it can be used from
13285 : either the present location or the final installed location.
13286 echo " "
13287 : Get out of the UU directory to get correct path name.
13288 cd ..
13289 case "$cppstdin" in
13290 `pwd`/cppstdin)
13291         echo "Stripping down cppstdin path name"
13292         cppstdin=cppstdin
13293         ;;
13294 esac
13295 cd UU
13296
13297 : end of configuration questions
13298 echo " "
13299 echo "End of configuration questions."
13300 echo " "
13301
13302 : back to where it started
13303 if test -d ../UU; then
13304         cd ..
13305 fi
13306
13307 : configuration may be patched via a 'config.over' file
13308 if $test -f config.over; then
13309         echo " "
13310         dflt=y
13311         rp='I see a config.over file.  Do you wish to load it?'
13312         . UU/myread
13313         case "$ans" in
13314         n*) echo "OK, I'll ignore it.";;
13315         *)      . ./config.over
13316                 echo "Configuration override changes have been loaded."
13317                 ;;
13318         esac
13319 fi
13320
13321 : in case they want portability, strip down executable paths
13322 case "$d_portable" in
13323 "$define")
13324         echo " "
13325         echo "Stripping down executable paths..." >&4
13326         for file in $loclist $trylist; do
13327                 eval temp=\$$file
13328                 eval $file=`basename $temp`
13329         done
13330         ;;
13331 esac
13332
13333 : create config.sh file
13334 echo " "
13335 echo "Creating config.sh..." >&4
13336 $spitshell <<EOT >config.sh
13337 $startsh
13338 #
13339 # This file was produced by running the Configure script. It holds all the
13340 # definitions figured out by Configure. Should you modify one of these values,
13341 # do not forget to propagate your changes by running "Configure -der". You may
13342 # instead choose to run each of the .SH files by yourself, or "Configure -S".
13343 #
13344
13345 # Package name      : $package
13346 # Source directory  : $src
13347 # Configuration time: $cf_time
13348 # Configured by     : $cf_by
13349 # Target system     : $myuname
13350
13351 Author='$Author'
13352 Date='$Date'
13353 Header='$Header'
13354 Id='$Id'
13355 Locker='$Locker'
13356 Log='$Log'
13357 Mcc='$Mcc'
13358 RCSfile='$RCSfile'
13359 Revision='$Revision'
13360 Source='$Source'
13361 State='$State'
13362 _a='$_a'
13363 _exe='$_exe'
13364 _o='$_o'
13365 afs='$afs'
13366 alignbytes='$alignbytes'
13367 ansi2knr='$ansi2knr'
13368 aphostname='$aphostname'
13369 apiversion='$apiversion'
13370 ar='$ar'
13371 archlib='$archlib'
13372 archlibexp='$archlibexp'
13373 archname64='$archname64'
13374 archname='$archname'
13375 archobjs='$archobjs'
13376 awk='$awk'
13377 baserev='$baserev'
13378 bash='$bash'
13379 bin='$bin'
13380 bincompat5005='$bincompat5005'
13381 binexp='$binexp'
13382 bison='$bison'
13383 byacc='$byacc'
13384 byteorder='$byteorder'
13385 c='$c'
13386 castflags='$castflags'
13387 cat='$cat'
13388 cc='$cc'
13389 cccdlflags='$cccdlflags'
13390 ccdlflags='$ccdlflags'
13391 ccflags='$ccflags'
13392 ccsymbols='$ccsymbols'
13393 cf_by='$cf_by'
13394 cf_email='$cf_email'
13395 cf_time='$cf_time'
13396 chgrp='$chgrp'
13397 chmod='$chmod'
13398 chown='$chown'
13399 clocktype='$clocktype'
13400 comm='$comm'
13401 compress='$compress'
13402 contains='$contains'
13403 cp='$cp'
13404 cpio='$cpio'
13405 cpp='$cpp'
13406 cpp_stuff='$cpp_stuff'
13407 cppccsymbols='$cppccsymbols'
13408 cppflags='$cppflags'
13409 cpplast='$cpplast'
13410 cppminus='$cppminus'
13411 cpprun='$cpprun'
13412 cppstdin='$cppstdin'
13413 cppsymbols='$cppsymbols'
13414 crosscompile='$crosscompile'
13415 cryptlib='$cryptlib'
13416 csh='$csh'
13417 d_Gconvert='$d_Gconvert'
13418 d_PRIEldbl='$d_PRIEldbl'
13419 d_PRIFldbl='$d_PRIFldbl'
13420 d_PRIGldbl='$d_PRIGldbl'
13421 d_PRIX64='$d_PRIX64'
13422 d_PRId64='$d_PRId64'
13423 d_PRIeldbl='$d_PRIeldbl'
13424 d_PRIfldbl='$d_PRIfldbl'
13425 d_PRIgldbl='$d_PRIgldbl'
13426 d_PRIi64='$d_PRIi64'
13427 d_PRIo64='$d_PRIo64'
13428 d_PRIu64='$d_PRIu64'
13429 d_PRIx64='$d_PRIx64'
13430 d_access='$d_access'
13431 d_accessx='$d_accessx'
13432 d_alarm='$d_alarm'
13433 d_archlib='$d_archlib'
13434 d_atolf='$d_atolf'
13435 d_atoll='$d_atoll'
13436 d_attribut='$d_attribut'
13437 d_bcmp='$d_bcmp'
13438 d_bcopy='$d_bcopy'
13439 d_bincompat5005='$d_bincompat5005'
13440 d_bsd='$d_bsd'
13441 d_bsdgetpgrp='$d_bsdgetpgrp'
13442 d_bsdsetpgrp='$d_bsdsetpgrp'
13443 d_bzero='$d_bzero'
13444 d_casti32='$d_casti32'
13445 d_castneg='$d_castneg'
13446 d_charvspr='$d_charvspr'
13447 d_chown='$d_chown'
13448 d_chroot='$d_chroot'
13449 d_chsize='$d_chsize'
13450 d_closedir='$d_closedir'
13451 d_cmsghdr_s='$d_cmsghdr_s'
13452 d_const='$d_const'
13453 d_crypt='$d_crypt'
13454 d_csh='$d_csh'
13455 d_cuserid='$d_cuserid'
13456 d_dbl_dig='$d_dbl_dig'
13457 d_difftime='$d_difftime'
13458 d_dirnamlen='$d_dirnamlen'
13459 d_dlerror='$d_dlerror'
13460 d_dlopen='$d_dlopen'
13461 d_dlsymun='$d_dlsymun'
13462 d_dosuid='$d_dosuid'
13463 d_drand48proto='$d_drand48proto'
13464 d_dup2='$d_dup2'
13465 d_eaccess='$d_eaccess'
13466 d_endgrent='$d_endgrent'
13467 d_endhent='$d_endhent'
13468 d_endnent='$d_endnent'
13469 d_endpent='$d_endpent'
13470 d_endpwent='$d_endpwent'
13471 d_endsent='$d_endsent'
13472 d_endspent='$d_endspent'
13473 d_eofnblk='$d_eofnblk'
13474 d_eunice='$d_eunice'
13475 d_fchmod='$d_fchmod'
13476 d_fchown='$d_fchown'
13477 d_fcntl='$d_fcntl'
13478 d_fd_macros='$d_fd_macros'
13479 d_fd_set='$d_fd_set'
13480 d_fds_bits='$d_fds_bits'
13481 d_fgetpos='$d_fgetpos'
13482 d_flexfnam='$d_flexfnam'
13483 d_flock='$d_flock'
13484 d_fork='$d_fork'
13485 d_fpathconf='$d_fpathconf'
13486 d_fpos64_t='$d_fpos64_t'
13487 d_fseeko='$d_fseeko'
13488 d_fsetpos='$d_fsetpos'
13489 d_fstatfs='$d_fstatfs'
13490 d_fstatvfs='$d_fstatvfs'
13491 d_ftello='$d_ftello'
13492 d_ftime='$d_ftime'
13493 d_getgrent='$d_getgrent'
13494 d_getgrps='$d_getgrps'
13495 d_gethbyaddr='$d_gethbyaddr'
13496 d_gethbyname='$d_gethbyname'
13497 d_gethent='$d_gethent'
13498 d_gethname='$d_gethname'
13499 d_gethostprotos='$d_gethostprotos'
13500 d_getlogin='$d_getlogin'
13501 d_getmntent='$d_getmntent'
13502 d_getnbyaddr='$d_getnbyaddr'
13503 d_getnbyname='$d_getnbyname'
13504 d_getnent='$d_getnent'
13505 d_getnetprotos='$d_getnetprotos'
13506 d_getpbyname='$d_getpbyname'
13507 d_getpbynumber='$d_getpbynumber'
13508 d_getpent='$d_getpent'
13509 d_getpgid='$d_getpgid'
13510 d_getpgrp2='$d_getpgrp2'
13511 d_getpgrp='$d_getpgrp'
13512 d_getppid='$d_getppid'
13513 d_getprior='$d_getprior'
13514 d_getprotoprotos='$d_getprotoprotos'
13515 d_getpwent='$d_getpwent'
13516 d_getsbyname='$d_getsbyname'
13517 d_getsbyport='$d_getsbyport'
13518 d_getsent='$d_getsent'
13519 d_getservprotos='$d_getservprotos'
13520 d_getspent='$d_getspent'
13521 d_getspnam='$d_getspnam'
13522 d_gettimeod='$d_gettimeod'
13523 d_gnulibc='$d_gnulibc'
13524 d_grpasswd='$d_grpasswd'
13525 d_hasmntopt='$d_hasmntopt'
13526 d_htonl='$d_htonl'
13527 d_index='$d_index'
13528 d_inetaton='$d_inetaton'
13529 d_int64t='$d_int64t'
13530 d_iovec_s='$d_iovec_s'
13531 d_isascii='$d_isascii'
13532 d_killpg='$d_killpg'
13533 d_lchown='$d_lchown'
13534 d_ldbl_dig='$d_ldbl_dig'
13535 d_link='$d_link'
13536 d_llseek='$d_llseek'
13537 d_locconv='$d_locconv'
13538 d_lockf='$d_lockf'
13539 d_longdbl='$d_longdbl'
13540 d_longlong='$d_longlong'
13541 d_lstat='$d_lstat'
13542 d_madvise='$d_madvise'
13543 d_mblen='$d_mblen'
13544 d_mbstowcs='$d_mbstowcs'
13545 d_mbtowc='$d_mbtowc'
13546 d_memchr='$d_memchr'
13547 d_memcmp='$d_memcmp'
13548 d_memcpy='$d_memcpy'
13549 d_memmove='$d_memmove'
13550 d_memset='$d_memset'
13551 d_mkdir='$d_mkdir'
13552 d_mkfifo='$d_mkfifo'
13553 d_mktime='$d_mktime'
13554 d_mmap='$d_mmap'
13555 d_mprotect='$d_mprotect'
13556 d_msg='$d_msg'
13557 d_msg_ctrunc='$d_msg_ctrunc'
13558 d_msg_dontroute='$d_msg_dontroute'
13559 d_msg_oob='$d_msg_oob'
13560 d_msg_peek='$d_msg_peek'
13561 d_msg_proxy='$d_msg_proxy'
13562 d_msgctl='$d_msgctl'
13563 d_msgget='$d_msgget'
13564 d_msghdr_s='$d_msghdr_s'
13565 d_msgrcv='$d_msgrcv'
13566 d_msgsnd='$d_msgsnd'
13567 d_msync='$d_msync'
13568 d_munmap='$d_munmap'
13569 d_mymalloc='$d_mymalloc'
13570 d_nice='$d_nice'
13571 d_off64_t='$d_off64_t'
13572 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
13573 d_oldpthreads='$d_oldpthreads'
13574 d_oldsock='$d_oldsock'
13575 d_open3='$d_open3'
13576 d_pathconf='$d_pathconf'
13577 d_pause='$d_pause'
13578 d_phostname='$d_phostname'
13579 d_pipe='$d_pipe'
13580 d_poll='$d_poll'
13581 d_portable='$d_portable'
13582 d_pthread_yield='$d_pthread_yield'
13583 d_pwage='$d_pwage'
13584 d_pwchange='$d_pwchange'
13585 d_pwclass='$d_pwclass'
13586 d_pwcomment='$d_pwcomment'
13587 d_pwexpire='$d_pwexpire'
13588 d_pwgecos='$d_pwgecos'
13589 d_pwpasswd='$d_pwpasswd'
13590 d_pwquota='$d_pwquota'
13591 d_readdir='$d_readdir'
13592 d_readlink='$d_readlink'
13593 d_readv='$d_readv'
13594 d_recvmsg='$d_recvmsg'
13595 d_rename='$d_rename'
13596 d_rewinddir='$d_rewinddir'
13597 d_rmdir='$d_rmdir'
13598 d_safebcpy='$d_safebcpy'
13599 d_safemcpy='$d_safemcpy'
13600 d_sanemcmp='$d_sanemcmp'
13601 d_sched_yield='$d_sched_yield'
13602 d_scm_rights='$d_scm_rights'
13603 d_seekdir='$d_seekdir'
13604 d_select='$d_select'
13605 d_sem='$d_sem'
13606 d_semctl='$d_semctl'
13607 d_semctl_semid_ds='$d_semctl_semid_ds'
13608 d_semctl_semun='$d_semctl_semun'
13609 d_semget='$d_semget'
13610 d_semop='$d_semop'
13611 d_sendmsg='$d_sendmsg'
13612 d_setegid='$d_setegid'
13613 d_seteuid='$d_seteuid'
13614 d_setgrent='$d_setgrent'
13615 d_setgrps='$d_setgrps'
13616 d_sethent='$d_sethent'
13617 d_setlinebuf='$d_setlinebuf'
13618 d_setlocale='$d_setlocale'
13619 d_setnent='$d_setnent'
13620 d_setpent='$d_setpent'
13621 d_setpgid='$d_setpgid'
13622 d_setpgrp2='$d_setpgrp2'
13623 d_setpgrp='$d_setpgrp'
13624 d_setprior='$d_setprior'
13625 d_setpwent='$d_setpwent'
13626 d_setregid='$d_setregid'
13627 d_setresgid='$d_setresgid'
13628 d_setresuid='$d_setresuid'
13629 d_setreuid='$d_setreuid'
13630 d_setrgid='$d_setrgid'
13631 d_setruid='$d_setruid'
13632 d_setsent='$d_setsent'
13633 d_setsid='$d_setsid'
13634 d_setspent='$d_setspent'
13635 d_setvbuf='$d_setvbuf'
13636 d_sfio='$d_sfio'
13637 d_shm='$d_shm'
13638 d_shmat='$d_shmat'
13639 d_shmatprototype='$d_shmatprototype'
13640 d_shmctl='$d_shmctl'
13641 d_shmdt='$d_shmdt'
13642 d_shmget='$d_shmget'
13643 d_sigaction='$d_sigaction'
13644 d_sigsetjmp='$d_sigsetjmp'
13645 d_socket='$d_socket'
13646 d_sockpair='$d_sockpair'
13647 d_statblks='$d_statblks'
13648 d_statfs='$d_statfs'
13649 d_statfsflags='$d_statfsflags'
13650 d_statvfs='$d_statvfs'
13651 d_stdio_cnt_lval='$d_stdio_cnt_lval'
13652 d_stdio_ptr_lval='$d_stdio_ptr_lval'
13653 d_stdio_stream_array='$d_stdio_stream_array'
13654 d_stdiobase='$d_stdiobase'
13655 d_stdstdio='$d_stdstdio'
13656 d_strchr='$d_strchr'
13657 d_strcoll='$d_strcoll'
13658 d_strctcpy='$d_strctcpy'
13659 d_strerrm='$d_strerrm'
13660 d_strerror='$d_strerror'
13661 d_strtod='$d_strtod'
13662 d_strtol='$d_strtol'
13663 d_strtoul='$d_strtoul'
13664 d_strtoull='$d_strtoull'
13665 d_strxfrm='$d_strxfrm'
13666 d_suidsafe='$d_suidsafe'
13667 d_symlink='$d_symlink'
13668 d_syscall='$d_syscall'
13669 d_sysconf='$d_sysconf'
13670 d_sysernlst='$d_sysernlst'
13671 d_syserrlst='$d_syserrlst'
13672 d_system='$d_system'
13673 d_tcgetpgrp='$d_tcgetpgrp'
13674 d_tcsetpgrp='$d_tcsetpgrp'
13675 d_telldir='$d_telldir'
13676 d_telldirproto='$d_telldirproto'
13677 d_time='$d_time'
13678 d_times='$d_times'
13679 d_truncate='$d_truncate'
13680 d_tzname='$d_tzname'
13681 d_umask='$d_umask'
13682 d_uname='$d_uname'
13683 d_union_semun='$d_union_semun'
13684 d_vendorlib='$d_vendorlib'
13685 d_vfork='$d_vfork'
13686 d_void_closedir='$d_void_closedir'
13687 d_voidsig='$d_voidsig'
13688 d_voidtty='$d_voidtty'
13689 d_volatile='$d_volatile'
13690 d_vprintf='$d_vprintf'
13691 d_wait4='$d_wait4'
13692 d_waitpid='$d_waitpid'
13693 d_wcstombs='$d_wcstombs'
13694 d_wctomb='$d_wctomb'
13695 d_writev='$d_writev'
13696 d_xenix='$d_xenix'
13697 date='$date'
13698 db_hashtype='$db_hashtype'
13699 db_prefixtype='$db_prefixtype'
13700 defvoidused='$defvoidused'
13701 direntrytype='$direntrytype'
13702 dlext='$dlext'
13703 dlsrc='$dlsrc'
13704 doublesize='$doublesize'
13705 drand01='$drand01'
13706 dynamic_ext='$dynamic_ext'
13707 eagain='$eagain'
13708 ebcdic='$ebcdic'
13709 echo='$echo'
13710 egrep='$egrep'
13711 emacs='$emacs'
13712 eunicefix='$eunicefix'
13713 exe_ext='$exe_ext'
13714 expr='$expr'
13715 extensions='$extensions'
13716 fflushNULL='$fflushNULL'
13717 fflushall='$fflushall'
13718 find='$find'
13719 firstmakefile='$firstmakefile'
13720 flex='$flex'
13721 fpostype='$fpostype'
13722 freetype='$freetype'
13723 full_ar='$full_ar'
13724 full_csh='$full_csh'
13725 full_sed='$full_sed'
13726 gccversion='$gccversion'
13727 gidtype='$gidtype'
13728 glibpth='$glibpth'
13729 grep='$grep'
13730 groupcat='$groupcat'
13731 groupstype='$groupstype'
13732 gzip='$gzip'
13733 h_fcntl='$h_fcntl'
13734 h_sysfile='$h_sysfile'
13735 hint='$hint'
13736 hostcat='$hostcat'
13737 huge='$huge'
13738 i_arpainet='$i_arpainet'
13739 i_bsdioctl='$i_bsdioctl'
13740 i_db='$i_db'
13741 i_dbm='$i_dbm'
13742 i_dirent='$i_dirent'
13743 i_dld='$i_dld'
13744 i_dlfcn='$i_dlfcn'
13745 i_fcntl='$i_fcntl'
13746 i_float='$i_float'
13747 i_gdbm='$i_gdbm'
13748 i_grp='$i_grp'
13749 i_inttypes='$i_inttypes'
13750 i_limits='$i_limits'
13751 i_locale='$i_locale'
13752 i_machcthr='$i_machcthr'
13753 i_malloc='$i_malloc'
13754 i_math='$i_math'
13755 i_memory='$i_memory'
13756 i_mntent='$i_mntent'
13757 i_ndbm='$i_ndbm'
13758 i_netdb='$i_netdb'
13759 i_neterrno='$i_neterrno'
13760 i_netinettcp='$i_netinettcp'
13761 i_niin='$i_niin'
13762 i_poll='$i_poll'
13763 i_pthread='$i_pthread'
13764 i_pwd='$i_pwd'
13765 i_rpcsvcdbm='$i_rpcsvcdbm'
13766 i_sfio='$i_sfio'
13767 i_sgtty='$i_sgtty'
13768 i_shadow='$i_shadow'
13769 i_socks='$i_socks'
13770 i_stdarg='$i_stdarg'
13771 i_stddef='$i_stddef'
13772 i_stdlib='$i_stdlib'
13773 i_string='$i_string'
13774 i_sysaccess='$i_sysaccess'
13775 i_sysdir='$i_sysdir'
13776 i_sysfile='$i_sysfile'
13777 i_sysfilio='$i_sysfilio'
13778 i_sysin='$i_sysin'
13779 i_sysioctl='$i_sysioctl'
13780 i_sysmman='$i_sysmman'
13781 i_sysmount='$i_sysmount'
13782 i_sysndir='$i_sysndir'
13783 i_sysparam='$i_sysparam'
13784 i_sysresrc='$i_sysresrc'
13785 i_syssecrt='$i_syssecrt'
13786 i_sysselct='$i_sysselct'
13787 i_syssockio='$i_syssockio'
13788 i_sysstat='$i_sysstat'
13789 i_sysstatvfs='$i_sysstatvfs'
13790 i_systime='$i_systime'
13791 i_systimek='$i_systimek'
13792 i_systimes='$i_systimes'
13793 i_systypes='$i_systypes'
13794 i_sysuio='$i_sysuio'
13795 i_sysun='$i_sysun'
13796 i_syswait='$i_syswait'
13797 i_termio='$i_termio'
13798 i_termios='$i_termios'
13799 i_time='$i_time'
13800 i_unistd='$i_unistd'
13801 i_utime='$i_utime'
13802 i_values='$i_values'
13803 i_varargs='$i_varargs'
13804 i_varhdr='$i_varhdr'
13805 i_vfork='$i_vfork'
13806 ignore_versioned_solibs='$ignore_versioned_solibs'
13807 incpath='$incpath'
13808 inews='$inews'
13809 installarchlib='$installarchlib'
13810 installbin='$installbin'
13811 installman1dir='$installman1dir'
13812 installman3dir='$installman3dir'
13813 installprefix='$installprefix'
13814 installprefixexp='$installprefixexp'
13815 installprivlib='$installprivlib'
13816 installscript='$installscript'
13817 installsitearch='$installsitearch'
13818 installsitelib='$installsitelib'
13819 installstyle='$installstyle'
13820 installusrbinperl='$installusrbinperl'
13821 installvendorlib='$installvendorlib'
13822 intsize='$intsize'
13823 known_extensions='$known_extensions'
13824 ksh='$ksh'
13825 large='$large'
13826 ld='$ld'
13827 lddlflags='$lddlflags'
13828 ldflags='$ldflags'
13829 ldlibpthname='$ldlibpthname'
13830 less='$less'
13831 lib_ext='$lib_ext'
13832 libc='$libc'
13833 libperl='$libperl'
13834 libpth='$libpth'
13835 libs='$libs'
13836 libswanted='$libswanted'
13837 line='$line'
13838 lint='$lint'
13839 lkflags='$lkflags'
13840 ln='$ln'
13841 lns='$lns'
13842 locincpth='$locincpth'
13843 loclibpth='$loclibpth'
13844 longdblsize='$longdblsize'
13845 longlongsize='$longlongsize'
13846 longsize='$longsize'
13847 lp='$lp'
13848 lpr='$lpr'
13849 ls='$ls'
13850 lseeksize='$lseeksize'
13851 lseektype='$lseektype'
13852 mail='$mail'
13853 mailx='$mailx'
13854 make='$make'
13855 make_set_make='$make_set_make'
13856 mallocobj='$mallocobj'
13857 mallocsrc='$mallocsrc'
13858 malloctype='$malloctype'
13859 man1dir='$man1dir'
13860 man1direxp='$man1direxp'
13861 man1ext='$man1ext'
13862 man3dir='$man3dir'
13863 man3direxp='$man3direxp'
13864 man3ext='$man3ext'
13865 medium='$medium'
13866 mips='$mips'
13867 mips_type='$mips_type'
13868 mkdir='$mkdir'
13869 mmaptype='$mmaptype'
13870 models='$models'
13871 modetype='$modetype'
13872 more='$more'
13873 multiarch='$multiarch'
13874 mv='$mv'
13875 myarchname='$myarchname'
13876 mydomain='$mydomain'
13877 myhostname='$myhostname'
13878 myuname='$myuname'
13879 n='$n'
13880 netdb_hlen_type='$netdb_hlen_type'
13881 netdb_host_type='$netdb_host_type'
13882 netdb_name_type='$netdb_name_type'
13883 netdb_net_type='$netdb_net_type'
13884 nm='$nm'
13885 nm_opt='$nm_opt'
13886 nm_so_opt='$nm_so_opt'
13887 nonxs_ext='$nonxs_ext'
13888 nroff='$nroff'
13889 o_nonblock='$o_nonblock'
13890 obj_ext='$obj_ext'
13891 old_pthread_create_joinable='$old_pthread_create_joinable'
13892 optimize='$optimize'
13893 orderlib='$orderlib'
13894 osname='$osname'
13895 osvers='$osvers'
13896 package='$package'
13897 pager='$pager'
13898 passcat='$passcat'
13899 patchlevel='$patchlevel'
13900 path_sep='$path_sep'
13901 perl='$perl'
13902 perladmin='$perladmin'
13903 perlpath='$perlpath'
13904 pg='$pg'
13905 phostname='$phostname'
13906 pidtype='$pidtype'
13907 plibpth='$plibpth'
13908 pmake='$pmake'
13909 pr='$pr'
13910 prefix='$prefix'
13911 prefixexp='$prefixexp'
13912 privlib='$privlib'
13913 privlibexp='$privlibexp'
13914 prototype='$prototype'
13915 ptrsize='$ptrsize'
13916 randbits='$randbits'
13917 randfunc='$randfunc'
13918 randseedtype='$randseedtype'
13919 ranlib='$ranlib'
13920 rd_nodata='$rd_nodata'
13921 rm='$rm'
13922 rmail='$rmail'
13923 runnm='$runnm'
13924 sPRIEldbl='$sPRIEldbl'
13925 sPRIFldbl='$sPRIFldbl'
13926 sPRIGldbl='$sPRIGldbl'
13927 sPRIX64='$sPRIX64'
13928 sPRId64='$sPRId64'
13929 sPRIeldbl='$sPRIeldbl'
13930 sPRIfldbl='$sPRIfldbl'
13931 sPRIgldbl='$sPRIgldbl'
13932 sPRIi64='$sPRIi64'
13933 sPRIo64='$sPRIo64'
13934 sPRIu64='$sPRIu64'
13935 sPRIx64='$sPRIx64'
13936 sched_yield='$sched_yield'
13937 scriptdir='$scriptdir'
13938 scriptdirexp='$scriptdirexp'
13939 sed='$sed'
13940 seedfunc='$seedfunc'
13941 selectminbits='$selectminbits'
13942 selecttype='$selecttype'
13943 sendmail='$sendmail'
13944 sh='$sh'
13945 shar='$shar'
13946 sharpbang='$sharpbang'
13947 shmattype='$shmattype'
13948 shortsize='$shortsize'
13949 shrpenv='$shrpenv'
13950 shsharp='$shsharp'
13951 sig_count='$sig_count'
13952 sig_name='$sig_name'
13953 sig_name_init='$sig_name_init'
13954 sig_num='$sig_num'
13955 sig_num_init='$sig_num_init'
13956 signal_t='$signal_t'
13957 sitearch='$sitearch'
13958 sitearchexp='$sitearchexp'
13959 sitelib='$sitelib'
13960 sitelibexp='$sitelibexp'
13961 siteprefix='$siteprefix'
13962 siteprefixexp='$siteprefixexp'
13963 sizetype='$sizetype'
13964 sleep='$sleep'
13965 smail='$smail'
13966 small='$small'
13967 so='$so'
13968 sockethdr='$sockethdr'
13969 socketlib='$socketlib'
13970 sort='$sort'
13971 spackage='$spackage'
13972 spitshell='$spitshell'
13973 split='$split'
13974 src='$src'
13975 ssizetype='$ssizetype'
13976 startperl='$startperl'
13977 startsh='$startsh'
13978 static_ext='$static_ext'
13979 stdchar='$stdchar'
13980 stdio_base='$stdio_base'
13981 stdio_bufsiz='$stdio_bufsiz'
13982 stdio_cnt='$stdio_cnt'
13983 stdio_filbuf='$stdio_filbuf'
13984 stdio_ptr='$stdio_ptr'
13985 stdio_stream_array='$stdio_stream_array'
13986 strings='$strings'
13987 submit='$submit'
13988 subversion='$subversion'
13989 sysman='$sysman'
13990 tail='$tail'
13991 tar='$tar'
13992 tbl='$tbl'
13993 tee='$tee'
13994 test='$test'
13995 timeincl='$timeincl'
13996 timetype='$timetype'
13997 touch='$touch'
13998 tr='$tr'
13999 trnl='$trnl'
14000 troff='$troff'
14001 uidtype='$uidtype'
14002 uname='$uname'
14003 uniq='$uniq'
14004 use64bits='$use64bits'
14005 usedl='$usedl'
14006 uselfs='$uselfs'
14007 uselongdouble='$uselongdouble'
14008 usemorebits='$usemorebits'
14009 usemultiplicity='$usemultiplicity'
14010 usemymalloc='$usemymalloc'
14011 usenm='$usenm'
14012 useopcode='$useopcode'
14013 useperlio='$useperlio'
14014 useposix='$useposix'
14015 usesfio='$usesfio'
14016 useshrplib='$useshrplib'
14017 usesocks='$usesocks'
14018 usethreads='$usethreads'
14019 usevendorprefix='$usevendorprefix'
14020 usevfork='$usevfork'
14021 usrinc='$usrinc'
14022 uuname='$uuname'
14023 vendorlib='$vendorlib'
14024 vendorlibexp='$vendorlibexp'
14025 vendorprefix='$vendorprefix'
14026 vendorprefixexp='$vendorprefixexp'
14027 version='$version'
14028 vi='$vi'
14029 voidflags='$voidflags'
14030 xlibpth='$xlibpth'
14031 zcat='$zcat'
14032 zip='$zip'
14033 EOT
14034
14035 : Add in command line options if available
14036 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
14037
14038 : add special variables
14039 $test -f $src/patchlevel.h && \
14040 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
14041 echo "CONFIGDOTSH=true" >>config.sh
14042
14043 : propagate old symbols
14044 if $test -f UU/config.sh; then
14045         <UU/config.sh sort | uniq >UU/oldconfig.sh
14046         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
14047         sort | uniq -u >UU/oldsyms
14048         set X `cat UU/oldsyms`
14049         shift
14050         case $# in
14051         0) ;;
14052         *)
14053                 cat <<EOM
14054 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
14055 EOM
14056                 echo "# Variables propagated from previous config.sh file." >>config.sh
14057                 for sym in `cat UU/oldsyms`; do
14058                         echo "    Propagating $hint variable "'$'"$sym..."
14059                         eval 'tmp="$'"${sym}"'"'
14060                         echo "$tmp" | \
14061                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
14062                 done
14063                 ;;
14064         esac
14065 fi
14066
14067 : Finish up by extracting the .SH files
14068 case "$alldone" in
14069 exit)
14070         $rm -rf UU
14071         echo "Done."
14072         exit 0
14073         ;;
14074 cont)
14075         ;;
14076 '')
14077         dflt=''
14078         nostick=true
14079         $cat <<EOM
14080
14081 If you'd like to make any changes to the config.sh file before I begin
14082 to configure things, do it as a shell escape now (e.g. !vi config.sh).
14083
14084 EOM
14085         rp="Press return or use a shell escape to edit config.sh:"
14086         . UU/myread
14087         nostick=''
14088         case "$ans" in
14089         '') ;;
14090         *) : in case they cannot read
14091                 sh 1>&4 -c "$ans";;
14092         esac
14093         ;;
14094 esac
14095
14096 : if this fails, just run all the .SH files by hand
14097 . ./config.sh
14098
14099 echo " "
14100 exec 1>&4
14101 . ./UU/extract
14102
14103 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
14104         dflt=y
14105         case "$silent" in
14106         true) ;;
14107         *)
14108                 $cat <<EOM
14109
14110 Now you need to generate make dependencies by running "$make depend".
14111 You might prefer to run it in background: "$make depend > makedepend.out &"
14112 It can take a while, so you might not want to run it right now.
14113
14114 EOM
14115                 ;;
14116         esac
14117         rp="Run $make depend now?"
14118         . UU/myread
14119         case "$ans" in
14120         y*)
14121                 $make depend && echo "Now you must run a $make."
14122                 ;;
14123         *)
14124                 echo "You must run '$make depend' then '$make'."
14125                 ;;
14126         esac
14127 elif test -f [Mm]akefile; then
14128         echo " "
14129         echo "Now you must run a $make."
14130 else
14131         echo "Done."
14132 fi
14133
14134 if $test -f Policy.sh; then
14135     $cat <<EOM
14136
14137 If you compile $package on a different machine or from a different object
14138 directory, copy the Policy.sh file from this object directory to the
14139 new one before you run Configure -- this will help you with most of
14140 the policy defaults.
14141
14142 EOM
14143 fi
14144 if $test -f config.msg; then
14145     echo "Hmm.  I also noted the following information while running:"
14146     echo " "
14147     $cat config.msg >&4
14148     $rm -f config.msg
14149 fi
14150 $rm -f kit*isdone ark*isdone
14151 $rm -rf UU
14152
14153 : End of Configure
14154