Integrate with Sarathy.
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon Apr 24 23:59:43 EET DST 2000 [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 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_fpos64_t=''
358 d_frexpl=''
359 d_fs_data_s=''
360 d_fseeko=''
361 d_fsetpos=''
362 d_fstatfs=''
363 d_ftello=''
364 d_ftime=''
365 d_gettimeod=''
366 d_Gconvert=''
367 d_getcwd=''
368 d_getfsstat=''
369 d_getgrent=''
370 d_getgrps=''
371 d_gethbyaddr=''
372 d_gethbyname=''
373 d_gethent=''
374 aphostname=''
375 d_gethname=''
376 d_phostname=''
377 d_uname=''
378 d_gethostprotos=''
379 d_getlogin=''
380 d_getmnt=''
381 d_getmntent=''
382 d_getnbyaddr=''
383 d_getnbyname=''
384 d_getnent=''
385 d_getnetprotos=''
386 d_getpent=''
387 d_getpgid=''
388 d_getpgrp2=''
389 d_bsdgetpgrp=''
390 d_getpgrp=''
391 d_getppid=''
392 d_getprior=''
393 d_getpbyname=''
394 d_getpbynumber=''
395 d_getprotoprotos=''
396 d_getpwent=''
397 d_getsent=''
398 d_getservprotos=''
399 d_getspent=''
400 d_getspnam=''
401 d_getsbyname=''
402 d_getsbyport=''
403 d_gnulibc=''
404 d_hasmntopt=''
405 d_htonl=''
406 d_iconv=''
407 d_inetaton=''
408 d_int64_t=''
409 d_isascii=''
410 d_isnan=''
411 d_isnanl=''
412 d_killpg=''
413 d_lchown=''
414 d_ldbl_dig=''
415 d_link=''
416 d_locconv=''
417 d_lockf=''
418 d_longdbl=''
419 longdblsize=''
420 d_longlong=''
421 longlongsize=''
422 d_lseekproto=''
423 d_lstat=''
424 d_madvise=''
425 d_mblen=''
426 d_mbstowcs=''
427 d_mbtowc=''
428 d_memchr=''
429 d_memcmp=''
430 d_memcpy=''
431 d_memmove=''
432 d_memset=''
433 d_mkdir=''
434 d_mkdtemp=''
435 d_mkfifo=''
436 d_mkstemp=''
437 d_mkstemps=''
438 d_mktime=''
439 d_mmap=''
440 mmaptype=''
441 d_modfl=''
442 d_mprotect=''
443 d_msg=''
444 d_msgctl=''
445 d_msgget=''
446 d_msgrcv=''
447 d_msgsnd=''
448 d_msync=''
449 d_munmap=''
450 d_nice=''
451 d_off64_t=''
452 d_open3=''
453 d_fpathconf=''
454 d_pathconf=''
455 d_pause=''
456 d_pipe=''
457 d_poll=''
458 d_portable=''
459 d_old_pthread_create_joinable=''
460 old_pthread_create_joinable=''
461 d_pthread_yield=''
462 d_sched_yield=''
463 sched_yield=''
464 d_qgcvt=''
465 d_readdir=''
466 d_rewinddir=''
467 d_seekdir=''
468 d_telldir=''
469 d_readlink=''
470 d_rename=''
471 d_rmdir=''
472 d_safebcpy=''
473 d_safemcpy=''
474 d_sanemcmp=''
475 d_select=''
476 d_sem=''
477 d_semctl=''
478 d_semget=''
479 d_semop=''
480 d_setegid=''
481 d_seteuid=''
482 d_setgrent=''
483 d_setgrps=''
484 d_sethent=''
485 d_setlinebuf=''
486 d_setlocale=''
487 d_setnent=''
488 d_setpent=''
489 d_setpgid=''
490 d_setpgrp2=''
491 d_bsdsetpgrp=''
492 d_setpgrp=''
493 d_setprior=''
494 d_setpwent=''
495 d_setregid=''
496 d_setresgid=''
497 d_setresuid=''
498 d_setreuid=''
499 d_setrgid=''
500 d_setruid=''
501 d_setsent=''
502 d_setsid=''
503 d_setspent=''
504 d_setvbuf=''
505 d_sfio=''
506 usesfio=''
507 d_shm=''
508 d_shmat=''
509 d_shmatprototype=''
510 shmattype=''
511 d_shmctl=''
512 d_shmdt=''
513 d_shmget=''
514 d_sigaction=''
515 d_sigsetjmp=''
516 d_msg_ctrunc=''
517 d_msg_dontroute=''
518 d_msg_oob=''
519 d_msg_peek=''
520 d_msg_proxy=''
521 d_oldsock=''
522 d_scm_rights=''
523 d_socket=''
524 d_sockpair=''
525 sockethdr=''
526 socketlib=''
527 d_socklen_t=''
528 d_sqrtl=''
529 d_statblks=''
530 d_statfs_f_flags=''
531 d_statfs_s=''
532 d_fstatvfs=''
533 d_statvfs=''
534 d_stdio_cnt_lval=''
535 d_stdio_ptr_lval=''
536 d_stdiobase=''
537 d_stdstdio=''
538 stdio_base=''
539 stdio_bufsiz=''
540 stdio_cnt=''
541 stdio_filbuf=''
542 stdio_ptr=''
543 d_index=''
544 d_strchr=''
545 d_strcoll=''
546 d_strctcpy=''
547 d_strerrm=''
548 d_strerror=''
549 d_sysernlst=''
550 d_syserrlst=''
551 d_strtod=''
552 d_strtol=''
553 d_strtold=''
554 d_strtoll=''
555 d_strtoul=''
556 d_strtoull=''
557 d_strtouq=''
558 d_strxfrm=''
559 d_symlink=''
560 d_syscall=''
561 d_sysconf=''
562 d_system=''
563 d_tcgetpgrp=''
564 d_tcsetpgrp=''
565 d_telldirproto=''
566 d_time=''
567 timetype=''
568 clocktype=''
569 d_times=''
570 d_truncate=''
571 d_tzname=''
572 d_umask=''
573 d_semctl_semid_ds=''
574 d_semctl_semun=''
575 d_union_semun=''
576 d_ustat=''
577 d_vfork=''
578 usevfork=''
579 d_voidsig=''
580 signal_t=''
581 d_volatile=''
582 d_charvspr=''
583 d_vprintf=''
584 d_wait4=''
585 d_waitpid=''
586 d_wcstombs=''
587 d_wctomb=''
588 dlext=''
589 cccdlflags=''
590 ccdlflags=''
591 dlsrc=''
592 ld=''
593 lddlflags=''
594 usedl=''
595 doublesize=''
596 ebcdic=''
597 fflushNULL=''
598 fflushall=''
599 fpossize=''
600 fpostype=''
601 gidformat=''
602 gidsign=''
603 gidsize=''
604 gidtype=''
605 groupstype=''
606 h_fcntl=''
607 h_sysfile=''
608 i_arpainet=''
609 db_hashtype=''
610 db_prefixtype=''
611 i_db=''
612 i_dbm=''
613 i_rpcsvcdbm=''
614 d_dirnamlen=''
615 direntrytype=''
616 i_dirent=''
617 i_dld=''
618 i_dlfcn=''
619 i_fcntl=''
620 i_float=''
621 i_gdbm=''
622 d_grpasswd=''
623 i_grp=''
624 i_iconv=''
625 i_ieeefp=''
626 i_inttypes=''
627 i_limits=''
628 i_locale=''
629 i_machcthr=''
630 i_malloc=''
631 i_math=''
632 i_memory=''
633 i_mntent=''
634 i_ndbm=''
635 i_netdb=''
636 i_neterrno=''
637 i_netinettcp=''
638 i_niin=''
639 i_sysin=''
640 i_poll=''
641 i_pthread=''
642 d_pwage=''
643 d_pwchange=''
644 d_pwclass=''
645 d_pwcomment=''
646 d_pwexpire=''
647 d_pwgecos=''
648 d_pwpasswd=''
649 d_pwquota=''
650 i_pwd=''
651 i_sfio=''
652 i_shadow=''
653 i_socks=''
654 i_stddef=''
655 i_stdlib=''
656 i_string=''
657 strings=''
658 i_sunmath=''
659 i_sysaccess=''
660 i_sysdir=''
661 i_sysfile=''
662 d_voidtty=''
663 i_bsdioctl=''
664 i_sysfilio=''
665 i_sysioctl=''
666 i_syssockio=''
667 i_syslog=''
668 i_sysmman=''
669 i_sysmode=''
670 i_sysmount=''
671 i_sysndir=''
672 i_sysparam=''
673 i_sysresrc=''
674 i_syssecrt=''
675 i_sysselct=''
676 i_sysstat=''
677 i_sysstatfs=''
678 i_sysstatvfs=''
679 i_systimes=''
680 i_systypes=''
681 i_sysuio=''
682 i_sysun=''
683 i_sysutsname=''
684 i_sysvfs=''
685 i_syswait=''
686 i_sgtty=''
687 i_termio=''
688 i_termios=''
689 i_systime=''
690 i_systimek=''
691 i_time=''
692 timeincl=''
693 i_unistd=''
694 i_ustat=''
695 i_utime=''
696 i_values=''
697 i_stdarg=''
698 i_varargs=''
699 i_varhdr=''
700 i_vfork=''
701 inc_version_list=''
702 inc_version_list_init=''
703 installprefix=''
704 installprefixexp=''
705 installstyle=''
706 installusrbinperl=''
707 intsize=''
708 longsize=''
709 shortsize=''
710 libc=''
711 ldlibpthname=''
712 libperl=''
713 shrpenv=''
714 useshrplib=''
715 glibpth=''
716 libpth=''
717 loclibpth=''
718 plibpth=''
719 xlibpth=''
720 ignore_versioned_solibs=''
721 libs=''
722 libsdirs=''
723 libsfiles=''
724 libsfound=''
725 libspath=''
726 lns=''
727 d_PRIEldbl=''
728 d_PRIFldbl=''
729 d_PRIGldbl=''
730 d_PRIeldbl=''
731 d_PRIfldbl=''
732 d_PRIgldbl=''
733 sPRIEldbl=''
734 sPRIFldbl=''
735 sPRIGldbl=''
736 sPRIeldbl=''
737 sPRIfldbl=''
738 sPRIgldbl=''
739 lseeksize=''
740 lseektype=''
741 make_set_make=''
742 d_mymalloc=''
743 freetype=''
744 mallocobj=''
745 mallocsrc=''
746 malloctype=''
747 usemymalloc=''
748 installman1dir=''
749 man1dir=''
750 man1direxp=''
751 man1ext=''
752 installman3dir=''
753 man3dir=''
754 man3direxp=''
755 man3ext=''
756 huge=''
757 large=''
758 medium=''
759 models=''
760 small=''
761 split=''
762 modetype=''
763 multiarch=''
764 mydomain=''
765 myhostname=''
766 phostname=''
767 c=''
768 n=''
769 d_eofnblk=''
770 eagain=''
771 o_nonblock=''
772 rd_nodata=''
773 netdb_hlen_type=''
774 netdb_host_type=''
775 netdb_name_type=''
776 netdb_net_type=''
777 groupcat=''
778 hostcat=''
779 passcat=''
780 orderlib=''
781 ranlib=''
782 package=''
783 spackage=''
784 pager=''
785 api_revision=''
786 api_subversion=''
787 api_version=''
788 api_versionstring=''
789 patchlevel=''
790 revision=''
791 subversion=''
792 version=''
793 perl5=''
794 perladmin=''
795 perlpath=''
796 d_nv_preserves_uv=''
797 i16size=''
798 i16type=''
799 i32size=''
800 i32type=''
801 i64size=''
802 i64type=''
803 i8size=''
804 i8type=''
805 ivsize=''
806 ivtype=''
807 nvsize=''
808 nvtype=''
809 u16size=''
810 u16type=''
811 u32size=''
812 u32type=''
813 u64size=''
814 u64type=''
815 u8size=''
816 u8type=''
817 uvsize=''
818 uvtype=''
819 ivdformat=''
820 uvoformat=''
821 uvuformat=''
822 uvxformat=''
823 pidtype=''
824 prefix=''
825 prefixexp=''
826 installprivlib=''
827 privlib=''
828 privlibexp=''
829 prototype=''
830 ptrsize=''
831 d_PRIX64=''
832 d_PRId64=''
833 d_PRIi64=''
834 d_PRIo64=''
835 d_PRIu64=''
836 d_PRIx64=''
837 sPRIX64=''
838 sPRId64=''
839 sPRIi64=''
840 sPRIo64=''
841 sPRIu64=''
842 sPRIx64=''
843 d_quad=''
844 quadkind=''
845 quadtype=''
846 uquadtype=''
847 drand01=''
848 randbits=''
849 randfunc=''
850 randseedtype=''
851 seedfunc=''
852 installscript=''
853 scriptdir=''
854 scriptdirexp=''
855 selectminbits=''
856 selecttype=''
857 sh=''
858 sig_count=''
859 sig_name=''
860 sig_name_init=''
861 sig_num=''
862 sig_num_init=''
863 installsitearch=''
864 sitearch=''
865 sitearchexp=''
866 installsitebin=''
867 sitebin=''
868 sitebinexp=''
869 installsitelib=''
870 sitelib=''
871 sitelib_stem=''
872 sitelibexp=''
873 siteprefix=''
874 siteprefixexp=''
875 sizesize=''
876 sizetype=''
877 so=''
878 socksizetype=''
879 sharpbang=''
880 shsharp=''
881 spitshell=''
882 src=''
883 ssizetype=''
884 startperl=''
885 startsh=''
886 stdchar=''
887 d_stdio_stream_array=''
888 stdio_stream_array=''
889 sysman=''
890 trnl=''
891 uidformat=''
892 uidsign=''
893 uidsize=''
894 uidtype=''
895 archname64=''
896 use64bitall=''
897 use64bitint=''
898 uselargefiles=''
899 uselongdouble=''
900 usemorebits=''
901 usemultiplicity=''
902 nm_opt=''
903 nm_so_opt=''
904 runnm=''
905 usenm=''
906 useperlio=''
907 usesocks=''
908 d_oldpthreads=''
909 use5005threads=''
910 useithreads=''
911 usethreads=''
912 incpath=''
913 mips_type=''
914 usrinc=''
915 d_vendorarch=''
916 installvendorarch=''
917 vendorarch=''
918 vendorarchexp=''
919 d_vendorbin=''
920 installvendorbin=''
921 vendorbin=''
922 vendorbinexp=''
923 d_vendorlib=''
924 installvendorlib=''
925 vendorlib=''
926 vendorlib_stem=''
927 vendorlibexp=''
928 usevendorprefix=''
929 vendorprefix=''
930 vendorprefixexp=''
931 defvoidused=''
932 voidflags=''
933 pm_apiversion=''
934 xs_apiversion=''
935 CONFIG=''
936
937 define='define'
938 undef='undef'
939 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
940 rmlist=''
941
942 : We must find out about Eunice early
943 eunicefix=':'
944 if test -f /etc/unixtovms; then
945         eunicefix=/etc/unixtovms
946 fi
947 if test -f /etc/unixtovms.exe; then
948         eunicefix=/etc/unixtovms.exe
949 fi
950
951 i_whoami=''
952 : set useposix=false in your hint file to disable the POSIX extension.
953 useposix=true
954 : set useopcode=false in your hint file to disable the Opcode extension.
955 useopcode=true
956 : Trailing extension.  Override this in a hint file, if needed.
957 _exe=''
958 : Extra object files, if any, needed on this platform.
959 archobjs=''
960 : Possible local include directories to search.
961 : Set locincpth to "" in a hint file to defeat local include searches.
962 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
963 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
964 :
965 : no include file wanted by default
966 inclwanted=''
967
968 groupstype=''
969 : change the next line if compiling for Xenix/286 on Xenix/386
970 xlibpth='/usr/lib/386 /lib/386'
971 : Possible local library directories to search.
972 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
973 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
974
975 : general looking path for locating libraries
976 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
977 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
978 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
979 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
980 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
981
982 : Private path used by Configure to find libraries.  Its value
983 : is prepended to libpth. This variable takes care of special
984 : machines, like the mips.  Usually, it should be empty.
985 plibpth=''
986
987 : default library list
988 libswanted=''
989 : some systems want to use only the non-versioned libso:s
990 ignore_versioned_solibs=''
991 : set usemultiplicity on the Configure command line to enable multiplicity.
992 : set usesocks on the Configure command line to enable socks.
993 : set usethreads on the Configure command line to enable threads.
994 : full support for void wanted by default
995 defvoidused=15
996
997 : List of libraries we want.
998 : If anyone needs -lnet, put it in a hint file.
999 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1000 libswanted="$libswanted dld ld sun m c cposix posix"
1001 libswanted="$libswanted ndir dir crypt sec"
1002 libswanted="$libswanted ucb bsd BSD PW x iconv"
1003 : We probably want to search /usr/shlib before most other libraries.
1004 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1005 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1006 glibpth="/usr/shlib $glibpth"
1007 : Do not use vfork unless overridden by a hint file.
1008 usevfork=false
1009
1010 : Find the basic shell for Bourne shell scripts
1011 case "$sh" in
1012 '')
1013         case "$SYSTYPE" in
1014         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1015         *) xxx='/bin/sh';;
1016         esac
1017         if test -f "$xxx"; then
1018                 sh="$xxx"
1019         else
1020                 : Build up a list and do a single loop so we can 'break' out.
1021                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1022                 for xxx in sh bash ksh pdksh ash; do
1023                         for p in $pth; do
1024                                 try="$try ${p}/${xxx}"
1025                         done
1026                 done
1027                 for xxx in $try; do
1028                         if test -f "$xxx"; then
1029                                 sh="$xxx";
1030                                 break
1031                         elif test -f "$xxx.exe"; then
1032                                 sh="$xxx";
1033                                 break
1034                         fi
1035                 done
1036         fi
1037         ;;
1038 esac
1039
1040 case "$sh" in
1041 '')     cat <<EOM >&2
1042 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1043
1044 Usually it's in /bin/sh.  How did you even get this far?
1045 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1046 we'll try to straighten this all out.
1047 EOM
1048         exit 1
1049         ;;
1050 esac
1051
1052 : see if sh knows # comments
1053 if `$sh -c '#' >/dev/null 2>&1`; then
1054         shsharp=true
1055         spitshell=cat
1056         xcat=/bin/cat
1057         test -f $xcat || xcat=/usr/bin/cat
1058         echo "#!$xcat" >try
1059         $eunicefix try
1060         chmod +x try
1061         ./try > today
1062         if test -s today; then
1063                 sharpbang='#!'
1064         else
1065                 echo "#! $xcat" > try
1066                 $eunicefix try
1067                 chmod +x try
1068                 ./try > today
1069                 if test -s today; then
1070                         sharpbang='#! '
1071                 else
1072                         sharpbang=': use '
1073                 fi
1074         fi
1075 else
1076         echo " "
1077         echo "Your $sh doesn't grok # comments--I will strip them later on."
1078         shsharp=false
1079         cd ..
1080         echo "exec grep -v '^[  ]*#'" >spitshell
1081         chmod +x spitshell
1082         $eunicefix spitshell
1083         spitshell=`pwd`/spitshell
1084         cd UU
1085         echo "I presume that if # doesn't work, #! won't work either!"
1086         sharpbang=': use '
1087 fi
1088 rm -f try today
1089
1090 : figure out how to guarantee sh startup
1091 case "$startsh" in
1092 '') startsh=${sharpbang}${sh} ;;
1093 *)
1094 esac
1095 cat >try <<EOSS
1096 $startsh
1097 set abc
1098 test "$?abc" != 1
1099 EOSS
1100
1101 chmod +x try
1102 $eunicefix try
1103 if ./try; then
1104         : echo "Yup, it does."
1105 else
1106         echo "Hmm... '$startsh' does not guarantee sh startup..."
1107         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1108 fi
1109 rm -f try
1110
1111
1112 : Save command line options in file UU/cmdline.opt for later use in
1113 : generating config.sh.
1114 cat > cmdline.opt <<EOSH
1115 # Configure command line arguments.
1116 config_arg0='$0'
1117 config_args='$*'
1118 config_argc=$#
1119 EOSH
1120 argn=1
1121 for arg in "$@"; do
1122         cat >>cmdline.opt <<EOSH
1123 config_arg$argn='$arg'
1124 EOSH
1125         argn=`expr $argn + 1`
1126 done
1127
1128 : produce awk script to parse command line options
1129 cat >options.awk <<'EOF'
1130 BEGIN {
1131         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1132
1133         len = length(optstr);
1134         for (i = 1; i <= len; i++) {
1135                 c = substr(optstr, i, 1);
1136                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1137                 if (a == ":") {
1138                         arg[c] = 1;
1139                         i++;
1140                 }
1141                 opt[c] = 1;
1142         }
1143 }
1144 {
1145         expect = 0;
1146         str = $0;
1147         if (substr(str, 1, 1) != "-") {
1148                 printf("'%s'\n", str);
1149                 next;
1150         }
1151         len = length($0);
1152         for (i = 2; i <= len; i++) {
1153                 c = substr(str, i, 1);
1154                 if (!opt[c]) {
1155                         printf("-%s\n", substr(str, i));
1156                         next;
1157                 }
1158                 printf("-%s\n", c);
1159                 if (arg[c]) {
1160                         if (i < len)
1161                                 printf("'%s'\n", substr(str, i + 1));
1162                         else
1163                                 expect = 1;
1164                         next;
1165                 }
1166         }
1167 }
1168 END {
1169         if (expect)
1170                 print "?";
1171 }
1172 EOF
1173
1174 : process the command line options
1175 set X `for arg in "$@"; do echo "X$arg"; done |
1176         sed -e s/X// | awk -f options.awk`
1177 eval "set $*"
1178 shift
1179 rm -f options.awk
1180
1181 : set up default values
1182 fastread=''
1183 reuseval=false
1184 config_sh=''
1185 alldone=''
1186 error=''
1187 silent=''
1188 extractsh=''
1189 override=''
1190 knowitall=''
1191 rm -f optdef.sh posthint.sh
1192 cat >optdef.sh <<EOS
1193 $startsh
1194 EOS
1195
1196
1197 : option parsing
1198 while test $# -gt 0; do
1199         case "$1" in
1200         -d) shift; fastread=yes;;
1201         -e) shift; alldone=cont;;
1202         -f)
1203                 shift
1204                 cd ..
1205                 if test -r "$1"; then
1206                         config_sh="$1"
1207                 else
1208                         echo "$me: cannot read config file $1." >&2
1209                         error=true
1210                 fi
1211                 cd UU
1212                 shift;;
1213         -h) shift; error=true;;
1214         -r) shift; reuseval=true;;
1215         -s) shift; silent=true; realsilent=true;;
1216         -E) shift; alldone=exit;;
1217         -K) shift; knowitall=true;;
1218         -O) shift; override=true;;
1219         -S) shift; silent=true; extractsh=true;;
1220         -D)
1221                 shift
1222                 case "$1" in
1223                 *=)
1224                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1225                         echo "$me: ignoring -D $1" >&2
1226                         ;;
1227                 *=*) echo "$1" | \
1228                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1229                 *) echo "$1='define'" >> optdef.sh;;
1230                 esac
1231                 shift
1232                 ;;
1233         -U)
1234                 shift
1235                 case "$1" in
1236                 *=) echo "$1" >> optdef.sh;;
1237                 *=*)
1238                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1239                         echo "$me: ignoring -U $1" >&2
1240                         ;;
1241                 *) echo "$1='undef'" >> optdef.sh;;
1242                 esac
1243                 shift
1244                 ;;
1245         -A)
1246             shift
1247             xxx=''
1248             yyy="$1"
1249             zzz=''
1250             uuu=undef
1251             case "$yyy" in
1252             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1253                  case "$zzz" in
1254                  *:*) zzz='' ;;
1255                  *)   xxx=append
1256                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1257                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1258                  esac
1259                  ;;
1260             esac
1261             case "$xxx" in
1262             '')  case "$yyy" in
1263                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1264                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1265                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1266                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1267                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1268                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1269                  esac
1270                  ;;       
1271             esac
1272             case "$xxx" in
1273             append)
1274                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1275             clear)
1276                 echo "$yyy=''"                  >> posthint.sh ;;
1277             define)
1278                 case "$zzz" in
1279                 '') zzz=define ;;
1280                 esac
1281                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1282             eval)
1283                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1284             prepend)
1285                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1286             undef)
1287                 case "$zzz" in
1288                 '') zzz="$uuu" ;;
1289                 esac
1290                 echo "$yyy=$zzz"                >> posthint.sh ;;
1291             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1292             esac
1293             shift
1294             ;;
1295         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1296             exit 0;;
1297         --) break;;
1298         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1299         *) break;;
1300         esac
1301 done
1302
1303 case "$error" in
1304 true)
1305         cat >&2 <<EOM
1306 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1307                  [-U symbol] [-U symbol=] [-A command:symbol...]
1308   -d : use defaults for all answers.
1309   -e : go on without questioning past the production of config.sh.
1310   -f : specify an alternate default configuration file.
1311   -h : print this help message and exit (with an error status).
1312   -r : reuse C symbols value if possible (skips costly nm extraction).
1313   -s : silent mode, only echoes questions and essential information.
1314   -D : define symbol to have some value:
1315          -D symbol         symbol gets the value 'define'
1316          -D symbol=value   symbol gets the value 'value'
1317   -E : stop at the end of questions, after having produced config.sh.
1318   -K : do not use unless you know what you are doing.
1319   -O : let -D and -U override definitions from loaded configuration file.
1320   -S : perform variable substitutions on all .SH files (can mix with -f)
1321   -U : undefine symbol:
1322          -U symbol    symbol gets the value 'undef'
1323          -U symbol=   symbol gets completely empty
1324   -A : manipulate symbol after the platform specific hints have been applied:
1325          -A symbol=value                append " "value to symbol
1326          -A append:symbol=value         append value to symbol
1327          -A define:symbol=value         define symbol to have value
1328          -A clear:symbol                define symbol to be ''
1329          -A define:symbol               define symbol to be 'define'
1330          -A eval:symbol=value           define symbol to be eval of value
1331          -A prepend:symbol=value        prepend value to symbol
1332          -A undef:symbol                define symbol to be 'undef'
1333          -A undef:symbol=               define symbol to be ''
1334   -V : print version number and exit (with a zero status).
1335 EOM
1336         exit 1
1337         ;;
1338 esac
1339
1340 : Sanity checks
1341 case "$fastread$alldone" in
1342 yescont|yesexit) ;;
1343 *)
1344         case "$extractsh" in
1345         true) ;;
1346         *)
1347                 if test ! -t 0; then
1348                         echo "Say 'sh Configure', not 'sh <Configure'"
1349                         exit 1
1350                 fi
1351                 ;;
1352         esac
1353         ;;
1354 esac
1355
1356 exec 4>&1
1357 case "$silent" in
1358 true) exec 1>/dev/null;;
1359 esac
1360
1361 : run the defines and the undefines, if any, but leave the file out there...
1362 touch optdef.sh
1363 . ./optdef.sh
1364 : create the posthint manipulation script and leave the file out there...
1365 touch posthint.sh
1366
1367 : set package name
1368 package=perl5
1369 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1370 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1371 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1372 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1373 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1374 esac
1375
1376 : Some greps do not return status, grrr.
1377 echo "grimblepritz" >grimble
1378 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1379         contains=contains
1380 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1381         contains=grep
1382 else
1383         contains=contains
1384 fi
1385 rm -f grimble
1386 : the following should work in any shell
1387 case "$contains" in
1388 contains*)
1389         echo " "
1390         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1391         cat >contains <<'EOSS'
1392 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1393 EOSS
1394 chmod +x contains
1395 esac
1396
1397 : Find the path to the source tree
1398 case "$src" in
1399 '') case "$0" in
1400     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1401          case "$src" in
1402          /*)    ;;
1403          *)     src=`cd ../$src && pwd` ;;
1404          esac
1405          ;;
1406     *)   src='.';;
1407     esac;;
1408 esac
1409 case "$src" in
1410 '')     src=/
1411         rsrc=/
1412         ;;
1413 /*) rsrc="$src";;
1414 *) rsrc="../$src";;
1415 esac
1416 if test -f $rsrc/Configure && \
1417         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1418 then
1419    : found it, so we are ok.
1420 else
1421         rsrc=''
1422         for src in . .. ../.. ../../.. ../../../..; do
1423                 if test -f ../$src/Configure && \
1424                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1425                 then
1426                         rsrc=../$src
1427                         break
1428                 fi
1429         done
1430 fi
1431 case "$rsrc" in
1432 '')
1433         cat <<EOM >&4
1434
1435 Sorry, I can't seem to locate the source dir for $package.  Please start
1436 Configure with an explicit path -- i.e. /some/path/Configure.
1437
1438 EOM
1439         exit 1
1440         ;;
1441 ../.)   rsrc='..';;
1442 *)
1443         echo " "
1444         echo "Sources for $package found in \"$src\"." >&4
1445         ;;
1446 esac
1447
1448 : script used to extract .SH files with variable substitutions
1449 cat >extract <<'EOS'
1450 CONFIGDOTSH=true
1451 echo "Doing variable substitutions on .SH files..."
1452 if test -f $src/MANIFEST; then
1453         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1454 else
1455         echo "(Looking for .SH files under the source directory.)"
1456         set x `(cd $src; find . -name "*.SH" -print)`
1457 fi
1458 shift
1459 case $# in
1460 0) set x `(cd $src; echo *.SH)`; shift;;
1461 esac
1462 if test ! -f $src/$1; then
1463         shift
1464 fi
1465 mkdir_p='
1466 name=$1;
1467 create="";
1468 while test $name; do
1469         if test ! -d "$name"; then
1470                 create="$name $create";
1471                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1472                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1473         else
1474                 name="";
1475         fi;
1476 done;
1477 for file in $create; do
1478         mkdir $file;
1479 done
1480 '
1481 for file in $*; do
1482         case "$src" in
1483         ".")
1484                 case "$file" in
1485                 */*)
1486                         dir=`expr X$file : 'X\(.*\)/'`
1487                         file=`expr X$file : 'X.*/\(.*\)'`
1488                         (cd $dir && . ./$file)
1489                         ;;
1490                 *)
1491                         . ./$file
1492                         ;;
1493                 esac
1494                 ;;
1495         *)
1496                 case "$file" in
1497                 */*)
1498                         dir=`expr X$file : 'X\(.*\)/'`
1499                         file=`expr X$file : 'X.*/\(.*\)'`
1500                         (set x $dir; shift; eval $mkdir_p)
1501                         sh <$src/$dir/$file
1502                         ;;
1503                 *)
1504                         sh <$src/$file
1505                         ;;
1506                 esac
1507                 ;;
1508         esac
1509 done
1510 if test -f $src/config_h.SH; then
1511         if test ! -f config.h; then
1512         : oops, they left it out of MANIFEST, probably, so do it anyway.
1513         . $src/config_h.SH
1514         fi
1515 fi
1516 EOS
1517
1518 : extract files and exit if asked to do so
1519 case "$extractsh" in
1520 true)
1521         case "$realsilent" in
1522         true) ;;
1523         *) exec 1>&4;;
1524         esac
1525         case "$config_sh" in
1526         '') config_sh='config.sh';;
1527         esac
1528         echo " "
1529         echo "Fetching answers from $config_sh..."
1530         cd ..
1531         . $config_sh
1532         test "$override" && . ./optdef.sh
1533         echo " "
1534         . UU/extract
1535         rm -rf UU
1536         echo "Done."
1537         exit 0
1538         ;;
1539 esac
1540
1541 : Eunice requires " " instead of "", can you believe it
1542 echo " "
1543 : Here we go...
1544 echo "Beginning of configuration questions for $package."
1545
1546 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1547
1548 : first determine how to suppress newline on echo command
1549 echo " "
1550 echo "Checking echo to see how to suppress newlines..."
1551 (echo "hi there\c" ; echo " ") >.echotmp
1552 if $contains c .echotmp >/dev/null 2>&1 ; then
1553         echo "...using -n."
1554         n='-n'
1555         c=''
1556 else
1557         cat <<'EOM'
1558 ...using \c
1559 EOM
1560         n=''
1561         c='\c'
1562 fi
1563 echo $n "The star should be here-->$c"
1564 echo '*'
1565 rm -f .echotmp
1566
1567 : Now test for existence of everything in MANIFEST
1568 echo " "
1569 if test -f $rsrc/MANIFEST; then
1570         echo "First let's make sure your kit is complete.  Checking..." >&4
1571         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1572         rm -f missing
1573         tmppwd=`pwd`
1574         for filelist in x??; do
1575                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1576         done
1577         if test -s missing; then
1578                 cat missing >&4
1579                 cat >&4 <<'EOM'
1580
1581 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1582
1583 You have the option of continuing the configuration process, despite the
1584 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1585 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1586 and contact the author (perlbug@perl.com).
1587
1588 EOM
1589                 echo $n "Continue? [n] $c" >&4
1590                 read ans
1591                 case "$ans" in
1592                 y*)
1593                         echo "Continuing..." >&4
1594                         rm -f missing
1595                         ;;
1596                 *)
1597                         echo "ABORTING..." >&4
1598                         kill $$
1599                         ;;
1600                 esac
1601         else
1602                 echo "Looks good..."
1603         fi
1604 else
1605         echo "There is no MANIFEST file.  I hope your kit is complete !"
1606 fi
1607 rm -f missing x??
1608
1609 echo " "
1610 : Find the appropriate value for a newline for tr
1611 if test -n "$DJGPP"; then
1612        trnl='\012'
1613 fi
1614 if test X"$trnl" = X; then
1615         case "`echo foo|tr '\n' x 2>/dev/null`" in
1616         foox) trnl='\n' ;;
1617         esac
1618 fi
1619 if test X"$trnl" = X; then
1620         case "`echo foo|tr '\012' x 2>/dev/null`" in
1621         foox) trnl='\012' ;;
1622         esac
1623 fi
1624 if test X"$trnl" = X; then
1625         cat <<EOM >&2
1626
1627 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1628
1629 EOM
1630         exit 1
1631 fi
1632
1633 : compute the number of columns on the terminal for proper question formatting
1634 case "$COLUMNS" in
1635 '') COLUMNS='80';;
1636 esac
1637
1638 : set up the echo used in my read
1639 myecho="case \"\$xxxm\" in
1640 '') echo $n \"\$rp $c\" >&4;;
1641 *) case \"\$rp\" in
1642         '') echo $n \"[\$xxxm] $c\";;
1643         *)
1644                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1645                         echo \"\$rp\" >&4
1646                         echo $n \"[\$xxxm] $c\" >&4
1647                 else
1648                         echo $n \"\$rp [\$xxxm] $c\" >&4
1649                 fi
1650                 ;;
1651         esac;;
1652 esac"
1653
1654 : now set up to do reads with possible shell escape and default assignment
1655 cat <<EOSC >myread
1656 $startsh
1657 xxxm=\$dflt
1658 $myecho
1659 ans='!'
1660 case "\$fastread" in
1661 yes) case "\$dflt" in
1662         '') ;;
1663         *) ans='';
1664                 case "\$silent-\$rp" in
1665                 true-) ;;
1666                 *) echo " " >&4;;
1667                 esac;;
1668         esac;;
1669 *) case "\$silent" in
1670         true) case "\$rp" in
1671                 '') ans='';;
1672                 esac;;
1673         esac;;
1674 esac
1675 while expr "X\$ans" : "X!" >/dev/null; do
1676         read answ
1677         set x \$xxxm
1678         shift
1679         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1680         case  "\$answ" in
1681         "!")
1682                 sh 1>&4
1683                 echo " "
1684                 $myecho
1685                 ;;
1686         !*)
1687                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1688                 shift
1689                 sh 1>&4 -c "\$*"
1690                 echo " "
1691                 $myecho
1692                 ;;
1693         "\$ans")
1694                 case "\$ans" in
1695                 \\&*)
1696                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1697                         shift
1698                         case "\$1" in
1699                         -d)
1700                                 fastread=yes
1701                                 echo "(OK, I'll run with -d after this question.)" >&4
1702                                 ;;
1703                         -*)
1704                                 echo "*** Sorry, \$1 not supported yet." >&4
1705                                 ;;
1706                         esac
1707                         $myecho
1708                         ans=!
1709                         ;;
1710                 esac;;
1711         *)
1712                 case "\$aok" in
1713                 y)
1714                         echo "*** Substitution done -- please confirm."
1715                         xxxm="\$ans"
1716                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1717                         xxxm="\$ans"
1718                         ans=!
1719                         ;;
1720                 *)
1721                         echo "*** Error -- try again."
1722                         ans=!
1723                         ;;
1724                 esac
1725                 $myecho
1726                 ;;
1727         esac
1728         case "\$ans\$xxxm\$nostick" in
1729         '')
1730                 ans=!
1731                 $myecho
1732                 ;;
1733         esac
1734 done
1735 case "\$ans" in
1736 '') ans="\$xxxm";;
1737 esac
1738 EOSC
1739
1740 : create .config dir to save info across Configure sessions
1741 test -d ../.config || mkdir ../.config
1742 cat >../.config/README <<EOF
1743 This directory created by Configure to save information that should
1744 persist across sessions for $package.
1745
1746 You may safely delete it if you wish.
1747 EOF
1748
1749 : general instructions
1750 needman=true
1751 firsttime=true
1752 user=`(logname) 2>/dev/null`
1753 case "$user" in
1754 '') user=`whoami 2>&1`;;
1755 esac
1756 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1757         firsttime=false
1758         echo " "
1759         rp='Would you like to see the instructions?'
1760         dflt=n
1761         . ./myread
1762         case "$ans" in
1763         [yY]*) ;;
1764         *) needman=false;;
1765         esac
1766 fi
1767 if $needman; then
1768         cat <<EOH
1769
1770 This installation shell script will examine your system and ask you questions
1771 to determine how the perl5 package should be installed. If you get
1772 stuck on a question, you may use a ! shell escape to start a subshell or
1773 execute a command.  Many of the questions will have default answers in square
1774 brackets; typing carriage return will give you the default.
1775
1776 On some of the questions which ask for file or directory names you are allowed
1777 to use the ~name construct to specify the login directory belonging to "name",
1778 even if you don't have a shell which knows about that.  Questions where this is
1779 allowed will be marked "(~name ok)".
1780
1781 EOH
1782         rp=''
1783         dflt='Type carriage return to continue'
1784         . ./myread
1785         cat <<'EOH'
1786
1787 The prompter used in this script allows you to use shell variables and
1788 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1789 in the default answer, as if the default line was a set of arguments given to a
1790 script shell.  This means you may also use $* to repeat the whole default line,
1791 so you do not have to re-type everything to add something to the default.
1792
1793 Everytime there is a substitution, you will have to confirm.  If there is an
1794 error (e.g. an unmatched backtick), the default answer will remain unchanged
1795 and you will be prompted again.
1796
1797 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1798 the questions and use the computed defaults (or the previous answers if there
1799 was already a config.sh file). Type 'Configure -h' for a list of options.
1800 You may also start interactively and then answer '& -d' at any prompt to turn
1801 on the non-interactive behaviour for the remainder of the execution.
1802
1803 EOH
1804         . ./myread
1805         cat <<EOH
1806
1807 Much effort has been expended to ensure that this shell script will run on any
1808 Unix system.  If despite that it blows up on yours, your best bet is to edit
1809 Configure and run it again.  If you can't run Configure for some reason,
1810 you'll have to generate a config.sh file by hand.  Whatever problems you
1811 have, let me (perlbug@perl.com) know how I blew it.
1812
1813 This installation script affects things in two ways:
1814
1815 1) it may do direct variable substitutions on some of the files included
1816    in this kit.
1817 2) it builds a config.h file for inclusion in C programs.  You may edit
1818    any of these files as the need arises after running this script.
1819
1820 If you make a mistake on a question, there is no easy way to back up to it
1821 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1822 files.  Configure will offer to let you do this before it runs the SH files.
1823
1824 EOH
1825         dflt='Type carriage return to continue'
1826         . ./myread
1827         case "$firsttime" in
1828         true) echo $user >>../.config/instruct;;
1829         esac
1830 fi
1831
1832 : find out where common programs are
1833 echo " "
1834 echo "Locating common programs..." >&4
1835 cat <<EOSC >loc
1836 $startsh
1837 case \$# in
1838 0) exit 1;;
1839 esac
1840 thing=\$1
1841 shift
1842 dflt=\$1
1843 shift
1844 for dir in \$*; do
1845         case "\$thing" in
1846         .)
1847         if test -d \$dir/\$thing; then
1848                 echo \$dir
1849                 exit 0
1850         fi
1851         ;;
1852         *)
1853         for thisthing in \$dir/\$thing; do
1854                 : just loop through to pick last item
1855         done
1856         if test -f \$thisthing; then
1857                 echo \$thisthing
1858                 exit 0
1859         elif test -f \$dir/\$thing.exe; then
1860                 if test -n "$DJGPP"; then
1861                         echo \$dir/\$thing.exe
1862                 else
1863                         : on Eunice apparently
1864                         echo \$dir/\$thing
1865                 fi
1866                 exit 0
1867         fi
1868         ;;
1869         esac
1870 done
1871 echo \$dflt
1872 exit 1
1873 EOSC
1874 chmod +x loc
1875 $eunicefix loc
1876 loclist="
1877 awk
1878 cat
1879 comm
1880 cp
1881 echo
1882 expr
1883 grep
1884 ls
1885 make
1886 mkdir
1887 rm
1888 sed
1889 sort
1890 touch
1891 tr
1892 uniq
1893 "
1894 trylist="
1895 Mcc
1896 ar
1897 byacc
1898 cpp
1899 csh
1900 date
1901 egrep
1902 gzip
1903 less
1904 ln
1905 more
1906 nm
1907 nroff
1908 pg
1909 test
1910 uname
1911 zip
1912 "
1913 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1914 pth="$pth /lib /usr/lib"
1915 for file in $loclist; do
1916         eval xxx=\$$file
1917         case "$xxx" in
1918         /*|?:[\\/]*)
1919                 if test -f "$xxx"; then
1920                         : ok
1921                 else
1922                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1923                         xxx=`./loc $file $file $pth`
1924                 fi
1925                 ;;
1926         '') xxx=`./loc $file $file $pth`;;
1927         *) xxx=`./loc $xxx $xxx $pth`;;
1928         esac
1929         eval $file=$xxx
1930         eval _$file=$xxx
1931         case "$xxx" in
1932         /*)
1933                 echo $file is in $xxx.
1934                 ;;
1935         ?:[\\/]*)
1936                 echo $file is in $xxx.
1937                 ;;
1938         *)
1939                 echo "I don't know where '$file' is, and my life depends on it." >&4
1940                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1941                 exit 1
1942                 ;;
1943         esac
1944 done
1945 echo " "
1946 echo "Don't worry if any of the following aren't found..."
1947 say=offhand
1948 for file in $trylist; do
1949         eval xxx=\$$file
1950         case "$xxx" in
1951         /*|?:[\\/]*)
1952                 if test -f "$xxx"; then
1953                         : ok
1954                 else
1955                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1956                         xxx=`./loc $file $file $pth`
1957                 fi
1958                 ;;
1959         '') xxx=`./loc $file $file $pth`;;
1960         *) xxx=`./loc $xxx $xxx $pth`;;
1961         esac
1962         eval $file=$xxx
1963         eval _$file=$xxx
1964         case "$xxx" in
1965         /*)
1966                 echo $file is in $xxx.
1967                 ;;
1968         ?:[\\/]*)
1969                 echo $file is in $xxx.
1970                 ;;
1971         *)
1972                 echo "I don't see $file out there, $say."
1973                 say=either
1974                 ;;
1975         esac
1976 done
1977 case "$egrep" in
1978 egrep)
1979         echo "Substituting grep for egrep."
1980         egrep=$grep
1981         ;;
1982 esac
1983 case "$ln" in
1984 ln)
1985         echo "Substituting cp for ln."
1986         ln=$cp
1987         ;;
1988 esac
1989 case "$test" in
1990 test)
1991         echo "Hopefully test is built into your sh."
1992         ;;
1993 *)
1994         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1995                 echo "Using the test built into your sh."
1996                 test=test
1997                 _test=test
1998         fi
1999         ;;
2000 esac
2001 case "$echo" in
2002 echo)
2003         echo "Hopefully echo is built into your sh."
2004         ;;
2005 '') ;;
2006 *)
2007         echo " "
2008 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2009         $echo $n "hi there$c" >foo1
2010         echo $n "hi there$c" >foo2
2011         if cmp foo1 foo2 >/dev/null 2>&1; then
2012                 echo "They are compatible.  In fact, they may be identical."
2013         else
2014                 case "$n" in
2015                 '-n') n='' c='\c';;
2016                 *) n='-n' c='';;
2017                 esac
2018                 cat <<FOO
2019 They are not compatible!  You are probably running ksh on a non-USG system.
2020 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2021 have echo built in and we may have to run some Bourne shell scripts.  That
2022 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2023
2024 FOO
2025                 $echo $n "The star should be here-->$c"
2026                 $echo "*"
2027         fi
2028         $rm -f foo1 foo2
2029         ;;
2030 esac
2031
2032 : determine whether symbolic links are supported
2033 echo " "
2034 $touch blurfl
2035 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2036         echo "Symbolic links are supported." >&4
2037         lns="$ln -s"
2038 else
2039         echo "Symbolic links are NOT supported." >&4
2040         lns="$ln"
2041 fi
2042 $rm -f blurfl sym
2043
2044 : see whether [:lower:] and [:upper:] are supported character classes
2045 echo " "
2046 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2047 ABYZ)
2048         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2049         up='[:upper:]'
2050         low='[:lower:]'
2051         ;;
2052 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2053         # (0xc9 and 0xd1), therefore that is a nice testing point.
2054         if test "X$up" = X -o "X$low" = X; then
2055             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2056             ij) up='[A-Z]'
2057                 low='[a-z]'
2058                 ;;
2059             esac
2060         fi
2061         if test "X$up" = X -o "X$low" = X; then
2062             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2063             ij) up='A-Z'
2064                 low='a-z'
2065                 ;;
2066             esac
2067         fi
2068         if test "X$up" = X -o "X$low" = X; then
2069             case "`echo IJ | od -x 2>/dev/null`" in
2070             *C9D1*|*c9d1*)
2071                 echo "Hey, this might be EBCDIC." >&4
2072                 if test "X$up" = X -o "X$low" = X; then
2073                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2074                     ij) up='[A-IJ-RS-Z]'
2075                         low='[a-ij-rs-z]'
2076                         ;;
2077                     esac
2078                 fi
2079                 if test "X$up" = X -o "X$low" = X; then
2080                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2081                     ij) up='A-IJ-RS-Z'
2082                         low='a-ij-rs-z'
2083                         ;;
2084                     esac
2085                 fi
2086                 ;;
2087             esac
2088         fi
2089 esac
2090 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2091 ij)
2092     echo "Using $up and $low to convert case." >&4
2093     ;;
2094 *)
2095     echo "I don't know how to translate letters from upper to lower case." >&4
2096     echo "Your tr is not acting any way I know of." >&4
2097     exit 1
2098     ;;
2099 esac
2100 : set up the translation script tr, must be called with ./tr of course
2101 cat >tr <<EOSC
2102 $startsh
2103 case "\$1\$2" in
2104 '[A-Z][a-z]') exec $tr '$up' '$low';;
2105 '[a-z][A-Z]') exec $tr '$low' '$up';;
2106 esac
2107 exec $tr "\$@"
2108 EOSC
2109 chmod +x tr
2110 $eunicefix tr
2111
2112 : Try to determine whether config.sh was made on this system
2113 case "$config_sh" in
2114 '')
2115 myuname=`$uname -a 2>/dev/null`
2116 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2117 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2118 # because the A-Z/a-z are not consecutive.
2119 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2120         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2121 newmyuname="$myuname"
2122 dflt=n
2123 case "$knowitall" in
2124 '')
2125         if test -f ../config.sh; then
2126                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2127                         eval "`grep myuname= ../config.sh`"
2128                 fi
2129                 if test "X$myuname" = "X$newmyuname"; then
2130                         dflt=y
2131                 fi
2132         fi
2133         ;;
2134 *) dflt=y;;
2135 esac
2136
2137 : Get old answers from old config file if Configure was run on the
2138 : same system, otherwise use the hints.
2139 hint=default
2140 cd ..
2141 if test -f config.sh; then
2142         echo " "
2143         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2144         . UU/myread
2145         case "$ans" in
2146         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2147         *)  echo "Fetching default answers from your old config.sh file..." >&4
2148                 tmp_n="$n"
2149                 tmp_c="$c"
2150                 tmp_sh="$sh"
2151                 . ./config.sh
2152                 cp config.sh UU
2153                 n="$tmp_n"
2154                 c="$tmp_c"
2155                 : Older versions did not always set $sh.  Catch re-use of such
2156                 : an old config.sh.
2157                 case "$sh" in
2158                 '') sh="$tmp_sh" ;;
2159                 esac
2160                 hint=previous
2161                 ;;
2162         esac
2163 fi
2164 if test ! -f config.sh; then
2165         $cat <<EOM
2166
2167 First time through, eh?  I have some defaults handy for some systems
2168 that need some extra help getting the Configure answers right:
2169
2170 EOM
2171         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2172         dflt=''
2173         : Half the following guesses are probably wrong... If you have better
2174         : tests or hints, please send them to perlbug@perl.com
2175         : The metaconfig authors would also appreciate a copy...
2176         $test -f /irix && osname=irix
2177         $test -f /xenix && osname=sco_xenix
2178         $test -f /dynix && osname=dynix
2179         $test -f /dnix && osname=dnix
2180         $test -f /lynx.os && osname=lynxos
2181         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2182         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2183         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2184         $test -f /bin/mips && /bin/mips && osname=mips
2185         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2186                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2187         $test -d /usr/apollo/bin && osname=apollo
2188         $test -f /etc/saf/_sactab && osname=svr4
2189         $test -d /usr/include/minix && osname=minix
2190         if $test -d /MachTen -o -d /MachTen_Folder; then
2191                 osname=machten
2192                 if $test -x /sbin/version; then
2193                         osvers=`/sbin/version | $awk '{print $2}' |
2194                         $sed -e 's/[A-Za-z]$//'`
2195                 elif $test -x /usr/etc/version; then
2196                         osvers=`/usr/etc/version | $awk '{print $2}' |
2197                         $sed -e 's/[A-Za-z]$//'`
2198                 else
2199                         osvers="$2.$3"
2200                 fi
2201         fi
2202
2203         $test -f /sys/posix.dll &&
2204                 $test -f /usr/bin/what &&
2205                 set X `/usr/bin/what /sys/posix.dll` &&
2206                 $test "$3" = UWIN &&
2207                 osname=uwin &&
2208                 osvers="$5"
2209
2210         if $test -f $uname; then
2211                 set X $myuname
2212                 shift
2213
2214                 case "$5" in
2215                 fps*) osname=fps ;;
2216                 mips*)
2217                         case "$4" in
2218                         umips) osname=umips ;;
2219                         *) osname=mips ;;
2220                         esac;;
2221                 [23]100) osname=mips ;;
2222                 next*) osname=next ;;
2223                 i386*)
2224                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2225                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2226                                 osname='sco'
2227                                 osvers=$tmp
2228                         elif $test -f /etc/kconfig; then
2229                                 osname=isc
2230                                 if test "$lns" = "$ln -s"; then
2231                                         osvers=4
2232                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2233                                         osvers=3
2234                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2235                                         osvers=2
2236                                 fi
2237                         fi
2238                         tmp=''
2239                         ;;
2240                 pc*)
2241                         if test -n "$DJGPP"; then
2242                                 osname=dos
2243                                 osvers=djgpp
2244                         fi
2245                         ;;
2246                 esac
2247
2248                 case "$1" in
2249                 aix) osname=aix
2250                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2251                         case "$tmp" in
2252                         'not found') osvers="$4"."$3" ;;
2253                         '<3240'|'<>3240') osvers=3.2.0 ;;
2254                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2255                         '=3250'|'>3250') osvers=3.2.5 ;;
2256                         *) osvers=$tmp;;
2257                         esac
2258                         ;;
2259                 bsd386) osname=bsd386
2260                         osvers=`$uname -r`
2261                         ;;
2262                 cygwin*) osname=cygwin
2263                         osvers="$3"
2264                         ;;
2265                 *dc.osx) osname=dcosx
2266                         osvers="$3"
2267                         ;;
2268                 dnix) osname=dnix
2269                         osvers="$3"
2270                         ;;
2271                 domainos) osname=apollo
2272                         osvers="$3"
2273                         ;;
2274                 dgux) osname=dgux 
2275                         osvers="$3"
2276                         ;;
2277                 dynixptx*) osname=dynixptx
2278                         osvers=`echo "$4"|sed 's/^v//'`
2279                         ;;
2280                 freebsd) osname=freebsd 
2281                         osvers="$3" ;;
2282                 genix) osname=genix ;;
2283                 hp*) osname=hpux 
2284                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2285                         ;;
2286                 irix*) osname=irix
2287                         case "$3" in
2288                         4*) osvers=4 ;;
2289                         5*) osvers=5 ;;
2290                         *)      osvers="$3" ;;
2291                         esac
2292                         ;;
2293                 linux) osname=linux
2294                         case "$3" in
2295                         *)      osvers="$3" ;;
2296                         esac
2297                         ;;
2298                 MiNT) osname=mint
2299                         ;;
2300                 netbsd*) osname=netbsd
2301                         osvers="$3"
2302                         ;;
2303                 news-os) osvers="$3"
2304                         case "$3" in
2305                         4*) osname=newsos4 ;;
2306                         *) osname=newsos ;;
2307                         esac
2308                         ;;
2309                 next*) osname=next ;;
2310                 POSIX-BC | posix-bc ) osname=posix-bc
2311                         osvers="$3"
2312                         ;;
2313                 powerux | power_ux | powermax_os | powermaxos | \
2314                 powerunix | power_unix) osname=powerux
2315                         osvers="$3"
2316                         ;;
2317                 qnx) osname=qnx
2318                         osvers="$4"
2319                         ;;
2320                 solaris) osname=solaris
2321                         case "$3" in
2322                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2323                         *)      osvers="$3" ;;
2324                         esac
2325                         ;;
2326                 sunos) osname=sunos
2327                         case "$3" in
2328                         5*) osname=solaris
2329                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2330                         *)      osvers="$3" ;;
2331                         esac
2332                         ;;
2333                 titanos) osname=titanos
2334                         case "$3" in
2335                         1*) osvers=1 ;;
2336                         2*) osvers=2 ;;
2337                         3*) osvers=3 ;;
2338                         4*) osvers=4 ;;
2339                         *)      osvers="$3" ;;
2340                         esac
2341                         ;;
2342                 ultrix) osname=ultrix
2343                         osvers="$3"
2344                         ;;
2345                 osf1|mls+)      case "$5" in
2346                                 alpha)
2347                                         osname=dec_osf
2348                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2349                                         ;;
2350                         hp*)    osname=hp_osf1  ;;
2351                         mips)   osname=mips_osf1 ;;
2352                         esac
2353                         ;;
2354                 unixware) osname=svr5
2355                         osvers="$4"
2356                         ;;
2357                 uts) osname=uts
2358                         osvers="$3"
2359                         ;;
2360                 $2) case "$osname" in
2361                         *isc*) ;;
2362                         *freebsd*) ;;
2363                         svr*)
2364                                 : svr4.x or possibly later
2365                                 case "svr$3" in 
2366                                 ${osname}*)
2367                                         osname=svr$3
2368                                         osvers=$4
2369                                         ;;
2370                                 esac
2371                                 case "$osname" in
2372                                 svr4.0)
2373                                         : Check for ESIX
2374                                         if test -f /stand/boot ; then
2375                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2376                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2377                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2378                                                         if test -n "$isesix"; then
2379                                                                 osname=esix4
2380                                                         fi
2381                                                 fi
2382                                         fi
2383                                         ;;
2384                                 esac
2385                                 ;;
2386                         *)      if test -f /etc/systemid; then
2387                                         osname=sco
2388                                         set `echo $3 | $sed 's/\./ /g'` $4
2389                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2390                                                 osvers=$1.$2.$3
2391                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2392                                                 osvers=$1.$2
2393                                         elif $test -f $src/hints/sco_$1.sh; then
2394                                                 osvers=$1
2395                                         fi
2396                                 else
2397                                         case "$osname" in
2398                                         '') : Still unknown.  Probably a generic Sys V.
2399                                                 osname="sysv"
2400                                                 osvers="$3"
2401                                                 ;;
2402                                         esac
2403                                 fi
2404                                 ;;
2405                         esac
2406                         ;;
2407                 *)      case "$osname" in
2408                         '') : Still unknown.  Probably a generic BSD.
2409                                 osname="$1"
2410                                 osvers="$3"
2411                                 ;;
2412                         esac
2413                         ;;
2414                 esac
2415         else
2416                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2417                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2418                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2419                                 osname=news_os
2420                         fi
2421                         $rm -f UU/kernel.what
2422                 elif test -d c:/.; then
2423                         set X $myuname
2424                         osname=os2
2425                         osvers="$5"
2426                 fi
2427         fi
2428         
2429         : Now look for a hint file osname_osvers, unless one has been
2430         : specified already.
2431         case "$hintfile" in
2432         ''|' ')
2433                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2434                 : Also try without trailing minor version numbers.
2435                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2436                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2437                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2438                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2439                 case "$file" in
2440                 '') dflt=none ;;
2441                 *)  case "$osvers" in
2442                         '') dflt=$file
2443                                 ;;
2444                         *)  if $test -f $src/hints/$file.sh ; then
2445                                         dflt=$file
2446                                 elif $test -f $src/hints/$xfile.sh ; then
2447                                         dflt=$xfile
2448                                 elif $test -f $src/hints/$xxfile.sh ; then
2449                                         dflt=$xxfile
2450                                 elif $test -f $src/hints/$xxxfile.sh ; then
2451                                         dflt=$xxxfile
2452                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2453                                         dflt=$xxxxfile
2454                                 elif $test -f "$src/hints/${osname}.sh" ; then
2455                                         dflt="${osname}"
2456                                 else
2457                                         dflt=none
2458                                 fi
2459                                 ;;
2460                         esac
2461                         ;;
2462                 esac
2463                 if $test -f Policy.sh ; then
2464                         case "$dflt" in
2465                         *Policy*) ;;
2466                         none) dflt="Policy" ;;
2467                         *) dflt="Policy $dflt" ;;
2468                         esac
2469                 fi
2470                 ;;
2471         *)
2472                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2473                 ;;
2474         esac
2475
2476         if $test -f Policy.sh ; then
2477                 $cat <<EOM
2478
2479 There's also a Policy hint file available, which should make the
2480 site-specific (policy) questions easier to answer.
2481 EOM
2482
2483         fi
2484
2485         $cat <<EOM
2486
2487 You may give one or more space-separated answers, or "none" if appropriate.
2488 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2489 is a good thing.  DO NOT give a wrong version or a wrong OS.
2490
2491 EOM
2492
2493         rp="Which of these apply, if any?"
2494         . UU/myread
2495         tans=$ans
2496         for file in $tans; do
2497                 if $test X$file = XPolicy -a -f Policy.sh; then
2498                         . Policy.sh
2499                         $cat Policy.sh >> UU/config.sh
2500                 elif $test -f $src/hints/$file.sh; then
2501                         . $src/hints/$file.sh
2502                         $cat $src/hints/$file.sh >> UU/config.sh
2503                 elif $test X$tans = X -o X$tans = Xnone ; then
2504                         : nothing
2505                 else
2506                         : Give one chance to correct a possible typo.
2507                         echo "$file.sh does not exist"
2508                         dflt=$file
2509                         rp="hint to use instead?"
2510                         . UU/myread
2511                         for file in $ans; do
2512                                 if $test -f "$src/hints/$file.sh"; then
2513                                         . $src/hints/$file.sh
2514                                         $cat $src/hints/$file.sh >> UU/config.sh
2515                                 elif $test X$ans = X -o X$ans = Xnone ; then
2516                                         : nothing
2517                                 else
2518                                         echo "$file.sh does not exist -- ignored."
2519                                 fi
2520                         done
2521                 fi
2522         done
2523
2524         hint=recommended
2525         : Remember our hint file for later.
2526         if $test -f "$src/hints/$file.sh" ; then
2527                 hintfile="$file"
2528         else
2529                 hintfile=''
2530         fi
2531 fi
2532 cd UU
2533 ;;
2534 *)
2535         echo " "
2536         echo "Fetching default answers from $config_sh..." >&4
2537         tmp_n="$n"
2538         tmp_c="$c"
2539         cd ..
2540         cp $config_sh config.sh 2>/dev/null
2541         chmod +w config.sh
2542         . ./config.sh
2543         cd UU
2544         cp ../config.sh .
2545         n="$tmp_n"
2546         c="$tmp_c"
2547         hint=previous
2548         ;;
2549 esac
2550 test "$override" && . ./optdef.sh
2551 myuname="$newmyuname"
2552
2553 : Restore computed paths
2554 for file in $loclist $trylist; do
2555         eval $file="\$_$file"
2556 done
2557
2558 cat << EOM
2559
2560 Configure uses the operating system name and version to set some defaults.
2561 The default value is probably right if the name rings a bell. Otherwise,
2562 since spelling matters for me, either accept the default or answer "none"
2563 to leave it blank.
2564
2565 EOM
2566 case "$osname" in
2567         ''|' ')
2568                 case "$hintfile" in
2569                 ''|' '|none) dflt=none ;;
2570                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2571                 esac
2572                 ;;
2573         *) dflt="$osname" ;;
2574 esac
2575 rp="Operating system name?"
2576 . ./myread
2577 case "$ans" in
2578 none)  osname='' ;;
2579 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2580 esac
2581 echo " "
2582 case "$osvers" in
2583         ''|' ')
2584                 case "$hintfile" in
2585                 ''|' '|none) dflt=none ;;
2586                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2587                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2588                         case "$dflt" in
2589                         ''|' ') dflt=none ;;
2590                         esac
2591                         ;;
2592                 esac
2593                 ;;
2594         *) dflt="$osvers" ;;
2595 esac
2596 rp="Operating system version?"
2597 . ./myread
2598 case "$ans" in
2599 none)  osvers='' ;;
2600 *) osvers="$ans" ;;
2601 esac
2602
2603
2604 . ./posthint.sh
2605
2606 : who configured the system
2607 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2608 cf_by=`(logname) 2>/dev/null`
2609 case "$cf_by" in
2610 "")
2611         cf_by=`(whoami) 2>/dev/null`
2612         case "$cf_by" in
2613         "") cf_by=unknown ;;
2614         esac ;;
2615 esac
2616
2617 : set up the script used to warn in case of inconsistency
2618 cat <<EOS >whoa
2619 $startsh
2620 EOS
2621 cat <<'EOSC' >>whoa
2622 dflt=y
2623 echo " "
2624 echo "*** WHOA THERE!!! ***" >&4
2625 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2626 rp="    Keep the $hint value?"
2627 . ./myread
2628 case "$ans" in
2629 y) td=$was; tu=$was;;
2630 esac
2631 EOSC
2632
2633 : function used to set $1 to $val
2634 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2635 case "$val$was" in
2636 $define$undef) . ./whoa; eval "$var=\$td";;
2637 $undef$define) . ./whoa; eval "$var=\$tu";;
2638 *) eval "$var=$val";;
2639 esac'
2640
2641 case "$usethreads" in
2642 $define|true|[yY]*)     dflt='y';;
2643 *) dflt='n';;
2644 esac
2645 cat <<EOM
2646
2647 Perl can be built to take advantage of threads on some systems.
2648 To do so, Configure can be run with -Dusethreads.
2649
2650 Note that threading is a highly experimental feature, and
2651 some known race conditions still remain.  If you choose to try
2652 it, be very sure to not actually deploy it for production
2653 purposes.  README.threads has more details, and is required
2654 reading if you enable threads.
2655
2656 If this doesn't make any sense to you, just accept the default '$dflt'.
2657 EOM
2658 rp='Build a threading Perl?'
2659 . ./myread
2660 case "$ans" in
2661 y|Y)    val="$define" ;;
2662 *)      val="$undef" ;;
2663 esac
2664 set usethreads
2665 eval $setvar
2666
2667 case "$usethreads" in
2668 $define)
2669         $cat <<EOM
2670
2671 As of 5.5.640, Perl has two different internal threading implementations,
2672 the 5.005 version (5005threads) and an interpreter-based version
2673 (ithreads) that has one interpreter per thread.  Both are very 
2674 experimental.  This arrangement exists to help developers work out
2675 which one is better.
2676
2677 If you're a casual user, you probably don't want interpreter-threads
2678 at this time.  There doesn't yet exist a way to create threads from
2679 within Perl in this model, i.e., "use Thread;" will NOT work.
2680 EOM
2681         : Default to ithreads unless overridden on command line or with
2682         : old config.sh
2683         dflt='y'
2684         case "$use5005threads" in
2685                 $define|true|[yY]*) dflt='n';;
2686         esac
2687         case "$useithreads" in
2688                 $undef|false|[nN]*) dflt='n';;
2689         esac
2690         rp='Use interpreter-based ithreads?'
2691         . ./myread
2692         case "$ans" in
2693         y|Y)    val="$define" ;;
2694         *)      val="$undef" ;;
2695         esac
2696         set useithreads
2697         eval $setvar
2698         : Now set use5005threads to the opposite value.
2699         case "$useithreads" in
2700         $define) val="$undef" ;;
2701         *) val="$define" ;;
2702         esac
2703         set use5005threads
2704         eval $setvar
2705         ;;
2706 *)
2707         useithreads="$undef"
2708         use5005threads="$undef"
2709         ;;
2710 esac
2711
2712 case "$d_oldpthreads" in
2713 '')     : Configure tests would be welcome here.  For now, assume undef.
2714         val="$undef" ;;
2715 *)      val="$d_oldpthreads" ;;
2716 esac
2717 set d_oldpthreads
2718 eval $setvar
2719
2720
2721 case "$usethreads" in
2722 "$define"|true|[yY]*)
2723 : Look for a hint-file generated 'call-back-unit'.  If the
2724 : user has specified that a threading perl is to be built,
2725 : we may need to set or change some other defaults.
2726         if $test -f usethreads.cbu; then
2727                 echo "Your platform has some specific hints for threaded builds, using them..."
2728                 . ./usethreads.cbu
2729         else
2730                 $cat <<EOM
2731 (Your platform doesn't have any specific hints for threaded builds.
2732  Assuming POSIX threads, then.)
2733 EOM
2734         fi
2735         ;;
2736 esac
2737
2738 cat <<EOM
2739
2740 Perl can be built so that multiple Perl interpreters can coexist
2741 within the same Perl executable.
2742 EOM
2743
2744 case "$useithreads" in
2745 $define)
2746         cat <<EOM
2747 This multiple interpreter support is required for interpreter-based threads.
2748 EOM
2749         val="$define"
2750         ;;
2751 *)      case "$usemultiplicity" in
2752         $define|true|[yY]*)     dflt='y';;
2753         *) dflt='n';;
2754         esac
2755         echo " "
2756         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2757         rp='Build Perl for multiplicity?'
2758         . ./myread
2759         case "$ans" in
2760         y|Y)    val="$define" ;;
2761         *)      val="$undef" ;;
2762         esac
2763         ;;
2764 esac
2765 set usemultiplicity
2766 eval $setvar
2767
2768 : determine where manual pages are on this system
2769 echo " "
2770 case "$sysman" in
2771 '') 
2772         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2773         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2774         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2775         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2776         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2777         sysman=`./loc . /usr/man/man1 $syspath`
2778         ;;
2779 esac
2780 if $test -d "$sysman"; then
2781         echo "System manual is in $sysman." >&4
2782 else
2783         echo "Could not find manual pages in source form." >&4
2784 fi
2785
2786 : see what memory models we can support
2787 case "$models" in
2788 '')
2789         $cat >pdp11.c <<'EOP'
2790 int main() {
2791 #ifdef pdp11
2792         exit(0);
2793 #else
2794         exit(1);
2795 #endif
2796 }
2797 EOP
2798         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2799         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2800                 dflt='unsplit split'
2801         else
2802                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2803                 case "$tans" in
2804                 X) dflt='none';;
2805                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2806                                 dflt='small'
2807                         else
2808                                 dflt=''
2809                         fi
2810                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2811                                 dflt="$dflt medium"
2812                         fi
2813                         if $test -d /lib/large || $test -d /usr/lib/large; then
2814                                 dflt="$dflt large"
2815                         fi
2816                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2817                                 dflt="$dflt huge"
2818                         fi
2819                 esac
2820         fi;;
2821 *) dflt="$models";;
2822 esac
2823 $cat <<EOM
2824  
2825 Some systems have different model sizes.  On most systems they are called
2826 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2827 split.  If your system doesn't support different memory models, say "none".
2828 If you wish to force everything to one memory model, say "none" here and
2829 put the appropriate flags later when it asks you for other cc and ld flags.
2830 Venix systems may wish to put "none" and let the compiler figure things out.
2831 (In the following question multiple model names should be space separated.)
2832
2833 The default for most systems is "none".
2834
2835 EOM
2836 rp="Which memory models are supported?"
2837 . ./myread
2838 models="$ans"
2839
2840 case "$models" in
2841 none)
2842         small=''
2843         medium=''
2844         large=''
2845         huge=''
2846         unsplit=''
2847         split=''
2848         ;;
2849 *split)
2850         case "$split" in
2851         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2852                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2853                         dflt='-i'
2854                 else
2855                         dflt='none'
2856                 fi;;
2857         *) dflt="$split";;
2858         esac
2859         rp="What flag indicates separate I and D space?"
2860         . ./myread
2861         tans="$ans"
2862         case "$tans" in
2863         none) tans='';;
2864         esac
2865         split="$tans"
2866         unsplit='';;
2867 *large*|*small*|*medium*|*huge*)
2868         case "$models" in
2869         *large*)
2870                 case "$large" in
2871                 '') dflt='-Ml';;
2872                 *) dflt="$large";;
2873                 esac
2874         rp="What flag indicates large model?"
2875         . ./myread
2876         tans="$ans"
2877         case "$tans" in
2878         none) tans='';
2879         esac
2880         large="$tans";;
2881         *) large='';;
2882         esac
2883         case "$models" in
2884         *huge*) case "$huge" in
2885                 '') dflt='-Mh';;
2886                 *) dflt="$huge";;
2887                 esac
2888                 rp="What flag indicates huge model?"
2889                 . ./myread
2890                 tans="$ans"
2891                 case "$tans" in
2892                 none) tans='';
2893                 esac
2894                 huge="$tans";;
2895         *) huge="$large";;
2896         esac
2897         case "$models" in
2898         *medium*) case "$medium" in
2899                 '') dflt='-Mm';;
2900                 *) dflt="$medium";;
2901                 esac
2902                 rp="What flag indicates medium model?"
2903                 . ./myread
2904                 tans="$ans"
2905                 case "$tans" in
2906                 none) tans='';
2907                 esac
2908                 medium="$tans";;
2909         *) medium="$large";;
2910         esac
2911         case "$models" in
2912         *small*) case "$small" in
2913                 '') dflt='none';;
2914                 *) dflt="$small";;
2915                 esac
2916                 rp="What flag indicates small model?"
2917                 . ./myread
2918                 tans="$ans"
2919                 case "$tans" in
2920                 none) tans='';
2921                 esac
2922                 small="$tans";;
2923         *) small='';;
2924         esac
2925         ;;
2926 *)
2927         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2928         ;;
2929 esac
2930 $rm -f pdp11.* pdp11
2931
2932 : make some quick guesses about what we are up against
2933 echo " "
2934 $echo $n "Hmm...  $c"
2935 echo exit 1 >bsd
2936 echo exit 1 >usg
2937 echo exit 1 >v7
2938 echo exit 1 >osf1
2939 echo exit 1 >eunice
2940 echo exit 1 >xenix
2941 echo exit 1 >venix
2942 echo exit 1 >os2
2943 d_bsd="$undef"
2944 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2945 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2946 then
2947         echo "Looks kind of like an OSF/1 system, but we'll see..."
2948         echo exit 0 >osf1
2949 elif test `echo abc | tr a-z A-Z` = Abc ; then
2950         xxx=`./loc addbib blurfl $pth`
2951         if $test -f $xxx; then
2952         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2953                 echo exit 0 >bsd
2954                 echo exit 0 >usg
2955         else
2956                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2957                         echo "Looks kind of like an extended USG system, but we'll see..."
2958                 else
2959                         echo "Looks kind of like a USG system, but we'll see..."
2960                 fi
2961                 echo exit 0 >usg
2962         fi
2963 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2964         echo "Looks kind of like a BSD system, but we'll see..."
2965         d_bsd="$define"
2966         echo exit 0 >bsd
2967 else
2968         echo "Looks kind of like a Version 7 system, but we'll see..."
2969         echo exit 0 >v7
2970 fi
2971 case "$eunicefix" in
2972 *unixtovms*)
2973         $cat <<'EOI'
2974 There is, however, a strange, musty smell in the air that reminds me of
2975 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2976 EOI
2977         echo exit 0 >eunice
2978         d_eunice="$define"
2979 : it so happens the Eunice I know will not run shell scripts in Unix format
2980         ;;
2981 *)
2982         echo " "
2983         echo "Congratulations.  You aren't running Eunice."
2984         d_eunice="$undef"
2985         ;;
2986 esac
2987 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2988 case "$p_" in
2989 :) ;;
2990 *)
2991         $cat <<'EOI'
2992 I have the feeling something is not exactly right, however...don't tell me...
2993 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2994 EOI
2995         echo exit 0 >os2
2996         ;;
2997 esac
2998 if test -f /xenix; then
2999         echo "Actually, this looks more like a XENIX system..."
3000         echo exit 0 >xenix
3001         d_xenix="$define"
3002 else
3003         echo " "
3004         echo "It's not Xenix..."
3005         d_xenix="$undef"
3006 fi
3007 chmod +x xenix
3008 $eunicefix xenix
3009 if test -f /venix; then
3010         echo "Actually, this looks more like a VENIX system..."
3011         echo exit 0 >venix
3012 else
3013         echo " "
3014         if ./xenix; then
3015                 : null
3016         else
3017                 echo "Nor is it Venix..."
3018         fi
3019 fi
3020 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3021 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3022 $rm -f foo
3023
3024 : see if we need a special compiler
3025 echo " "
3026 if ./usg; then
3027         case "$cc" in
3028         '') case "$Mcc" in
3029                 /*) dflt='Mcc';;
3030                 *) case "$large" in
3031                         -M*) dflt='cc';;
3032                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3033                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3034                                                 dflt='cc'
3035                                         else
3036                                                 dflt='cc -M'
3037                                         fi
3038                                 else
3039                                         dflt='cc'
3040                                 fi;;
3041                         esac;;
3042                 esac;;
3043         *)  dflt="$cc";;
3044         esac
3045         case "$dflt" in
3046         *M*)    $cat <<'EOM'
3047 On some older systems the default C compiler will not resolve multiple global
3048 references that happen to have the same name.  On some such systems the "Mcc"
3049 command may be used to force these to be resolved.  On other systems a "cc -M"
3050 command is required.  (Note that the -M flag on other systems indicates a
3051 memory model to use!) If you have the Gnu C compiler, you might wish to use
3052 that instead.
3053
3054 EOM
3055         ;;
3056         esac
3057         rp="Use which C compiler?"
3058         . ./myread
3059         cc="$ans"
3060 else
3061         case "$cc" in
3062         '') dflt=cc;;
3063         *) dflt="$cc";;
3064         esac
3065         rp="Use which C compiler?"
3066         . ./myread
3067         cc="$ans"
3068 fi
3069 : Look for a hint-file generated 'call-back-unit'.  Now that the
3070 : user has specified the compiler, we may need to set or change some
3071 : other defaults.
3072 if $test -f cc.cbu; then
3073     . ./cc.cbu
3074 fi
3075 echo " "
3076 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3077 $cat >gccvers.c <<EOM
3078 #include <stdio.h>
3079 int main() {
3080 #ifdef __GNUC__
3081 #ifdef __VERSION__
3082         printf("%s\n", __VERSION__);
3083 #else
3084         printf("%s\n", "1");
3085 #endif
3086 #endif
3087         exit(0);
3088 }
3089 EOM
3090 if $cc $ldflags -o gccvers gccvers.c; then
3091         gccversion=`./gccvers`
3092         case "$gccversion" in
3093         '') echo "You are not using GNU cc." ;;
3094         *)  echo "You are using GNU cc $gccversion."
3095             ;;
3096         esac
3097 else
3098         echo " "
3099         echo "*** WHOA THERE!!! ***" >&4
3100         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3101         case "$knowitall" in
3102         '')
3103         echo "    You'd better start hunting for one and let me know about it." >&4
3104                 exit 1
3105                 ;;
3106         esac
3107 fi
3108 $rm -f gccvers*
3109 case "$gccversion" in
3110 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3111 esac
3112
3113 : decide how portable to be.  Allow command line overrides.
3114 case "$d_portable" in
3115 "$undef") ;;
3116 *)      d_portable="$define" ;;
3117 esac
3118
3119 : set up shell script to do ~ expansion
3120 cat >filexp <<EOSS
3121 $startsh
3122 : expand filename
3123 case "\$1" in
3124  ~/*|~)
3125         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3126         ;;
3127  ~*)
3128         if $test -f /bin/csh; then
3129                 /bin/csh -f -c "glob \$1"
3130                 failed=\$?
3131                 echo ""
3132                 exit \$failed
3133         else
3134                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3135                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3136                 if $test ! -d "\$dir"; then
3137                         me=\`basename \$0\`
3138                         echo "\$me: can't locate home directory for: \$name" >&2
3139                         exit 1
3140                 fi
3141                 case "\$1" in
3142                 */*)
3143                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3144                         ;;
3145                 *)
3146                         echo \$dir
3147                         ;;
3148                 esac
3149         fi
3150         ;;
3151 *)
3152         echo \$1
3153         ;;
3154 esac
3155 EOSS
3156 chmod +x filexp
3157 $eunicefix filexp
3158
3159 : now set up to get a file name
3160 cat <<EOS >getfile
3161 $startsh
3162 EOS
3163 cat <<'EOSC' >>getfile
3164 tilde=''
3165 fullpath=''
3166 already=''
3167 skip=''
3168 none_ok=''
3169 exp_file=''
3170 nopath_ok=''
3171 orig_rp="$rp"
3172 orig_dflt="$dflt"
3173 case "$gfpth" in
3174 '') gfpth='.' ;;
3175 esac
3176
3177 case "$fn" in
3178 *\(*)
3179         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3180         fn=`echo $fn | sed 's/(.*)//'`
3181         ;;
3182 esac
3183
3184 case "$fn" in
3185 *:*)
3186         loc_file=`expr $fn : '.*:\(.*\)'`
3187         fn=`expr $fn : '\(.*\):.*'`
3188         ;;
3189 esac
3190
3191 case "$fn" in
3192 *~*) tilde=true;;
3193 esac
3194 case "$fn" in
3195 */*) fullpath=true;;
3196 esac
3197 case "$fn" in
3198 *+*) skip=true;;
3199 esac
3200 case "$fn" in
3201 *n*) none_ok=true;;
3202 esac
3203 case "$fn" in
3204 *e*) exp_file=true;;
3205 esac
3206 case "$fn" in
3207 *p*) nopath_ok=true;;
3208 esac
3209
3210 case "$fn" in
3211 *f*) type='File';;
3212 *d*) type='Directory';;
3213 *l*) type='Locate';;
3214 esac
3215
3216 what="$type"
3217 case "$what" in
3218 Locate) what='File';;
3219 esac
3220
3221 case "$exp_file" in
3222 '')
3223         case "$d_portable" in
3224         "$define") ;;
3225         *) exp_file=true;;
3226         esac
3227         ;;
3228 esac
3229
3230 cd ..
3231 while test "$type"; do
3232         redo=''
3233         rp="$orig_rp"
3234         dflt="$orig_dflt"
3235         case "$tilde" in
3236         true) rp="$rp (~name ok)";;
3237         esac
3238         . UU/myread
3239         if test -f UU/getfile.ok && \
3240                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3241         then
3242                 value="$ans"
3243                 ansexp="$ans"
3244                 break
3245         fi
3246         case "$ans" in
3247         none)
3248                 value=''
3249                 ansexp=''
3250                 case "$none_ok" in
3251                 true) type='';;
3252                 esac
3253                 ;;
3254         *)
3255                 case "$tilde" in
3256                 '') value="$ans"
3257                         ansexp="$ans";;
3258                 *)
3259                         value=`UU/filexp $ans`
3260                         case $? in
3261                         0)
3262                                 if test "$ans" != "$value"; then
3263                                         echo "(That expands to $value on this system.)"
3264                                 fi
3265                                 ;;
3266                         *) value="$ans";;
3267                         esac
3268                         ansexp="$value"
3269                         case "$exp_file" in
3270                         '') value="$ans";;
3271                         esac
3272                         ;;
3273                 esac
3274                 case "$fullpath" in
3275                 true)
3276                         case "$ansexp" in
3277                         /*) value="$ansexp" ;;
3278                         *)
3279                                 redo=true
3280                                 case "$already" in
3281                                 true)
3282                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3283                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3284                                         ;;
3285                                 *)
3286                                 echo "Please give a full path name, starting with slash." >&4
3287                                         case "$tilde" in
3288                                         true)
3289                                 echo "Note that using ~name is ok provided it expands well." >&4
3290                                                 already=true
3291                                                 ;;
3292                                         esac
3293                                 esac
3294                                 ;;
3295                         esac
3296                         ;;
3297                 esac
3298                 case "$redo" in
3299                 '')
3300                         case "$type" in
3301                         File)
3302                                 for fp in $gfpth; do
3303                                         if test "X$fp" = X.; then
3304                                             pf="$ansexp"
3305                                         else    
3306                                             pf="$fp/$ansexp"
3307                                         fi
3308                                         if test -f "$pf"; then
3309                                                 type=''
3310                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3311                                         then
3312                                                 echo "($value is not a plain file, but that's ok.)"
3313                                                 type=''
3314                                         fi
3315                                         if test X"$type" = X; then
3316                                             value="$pf"
3317                                             break
3318                                         fi
3319                                 done
3320                                 ;;
3321                         Directory)
3322                                 for fp in $gfpth; do
3323                                         if test "X$fp" = X.; then
3324                                             dir="$ans"
3325                                             direxp="$ansexp"
3326                                         else    
3327                                             dir="$fp/$ansexp"
3328                                             direxp="$fp/$ansexp"
3329                                         fi
3330                                         if test -d "$direxp"; then
3331                                                 type=''
3332                                                 value="$dir"
3333                                                 break
3334                                         fi
3335                                 done
3336                                 ;;
3337                         Locate)
3338                                 if test -d "$ansexp"; then
3339                                         echo "(Looking for $loc_file in directory $value.)"
3340                                         value="$value/$loc_file"
3341                                         ansexp="$ansexp/$loc_file"
3342                                 fi
3343                                 if test -f "$ansexp"; then
3344                                         type=''
3345                                 fi
3346                                 case "$nopath_ok" in
3347                                 true)   case "$value" in
3348                                         */*) ;;
3349                                         *)      echo "Assuming $value will be in people's path."
3350                                                 type=''
3351                                                 ;;
3352                                         esac
3353                                         ;;
3354                                 esac
3355                                 ;;
3356                         esac
3357
3358                         case "$skip" in
3359                         true) type='';
3360                         esac
3361
3362                         case "$type" in
3363                         '') ;;
3364                         *)
3365                                 if test "$fastread" = yes; then
3366                                         dflt=y
3367                                 else
3368                                         dflt=n
3369                                 fi
3370                                 rp="$what $value doesn't exist.  Use that name anyway?"
3371                                 . UU/myread
3372                                 dflt=''
3373                                 case "$ans" in
3374                                 y*) type='';;
3375                                 *) echo " ";;
3376                                 esac
3377                                 ;;
3378                         esac
3379                         ;;
3380                 esac
3381                 ;;
3382         esac
3383 done
3384 cd UU
3385 ans="$value"
3386 rp="$orig_rp"
3387 dflt="$orig_dflt"
3388 rm -f getfile.ok
3389 test "X$gfpthkeep" != Xy && gfpth=""
3390 EOSC
3391
3392 : What should the include directory be ?
3393 echo " "
3394 $echo $n "Hmm...  $c"
3395 dflt='/usr/include'
3396 incpath=''
3397 mips_type=''
3398 if $test -f /bin/mips && /bin/mips; then
3399         echo "Looks like a MIPS system..."
3400         $cat >usr.c <<'EOCP'
3401 #ifdef SYSTYPE_BSD43
3402 /bsd43
3403 #endif
3404 EOCP
3405         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3406                 dflt='/bsd43/usr/include'
3407                 incpath='/bsd43'
3408                 mips_type='BSD 4.3'
3409         else
3410                 mips_type='System V'
3411         fi
3412         $rm -f usr.c usr.out
3413         echo "and you're compiling with the $mips_type compiler and libraries."
3414         xxx_prompt=y
3415         echo "exit 0" >mips
3416 else
3417         echo "Doesn't look like a MIPS system."
3418         xxx_prompt=n
3419         echo "exit 1" >mips
3420 fi
3421 chmod +x mips
3422 $eunicefix mips
3423 case "$usrinc" in
3424 '') ;;
3425 *) dflt="$usrinc";;
3426 esac
3427 case "$xxx_prompt" in
3428 y)      fn=d/
3429         echo " "
3430         rp='Where are the include files you want to use?'
3431         . ./getfile
3432         usrinc="$ans"
3433         ;;
3434 *)      usrinc="$dflt"
3435         ;;
3436 esac
3437
3438 : see how we invoke the C preprocessor
3439 echo " "
3440 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3441 cat <<'EOT' >testcpp.c
3442 #define ABC abc
3443 #define XYZ xyz
3444 ABC.XYZ
3445 EOT
3446 cd ..
3447 if test ! -f cppstdin; then
3448         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3449                 # AIX cc -E doesn't show the absolute headerfile
3450                 # locations but we'll cheat by using the -M flag.
3451                 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
3452         else
3453                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3454         fi
3455 else
3456         echo "Keeping your $hint cppstdin wrapper."
3457 fi
3458 chmod 755 cppstdin
3459 wrapper=`pwd`/cppstdin
3460 ok='false'
3461 cd UU
3462
3463 if $test "X$cppstdin" != "X" && \
3464         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3465         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3466 then
3467         echo "You used to use $cppstdin $cppminus so we'll use that again."
3468         case "$cpprun" in
3469         '') echo "But let's see if we can live without a wrapper..." ;;
3470         *)
3471                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3472                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3473                 then
3474                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3475                         ok='true'
3476                 else
3477                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3478                 fi
3479                 ;;
3480         esac
3481 else
3482         case "$cppstdin" in
3483         '') ;;
3484         *)
3485                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3486                 ;;
3487         esac
3488 fi
3489
3490 if $ok; then
3491         : nothing
3492 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3493         $cc -E <testcpp.c >testcpp.out 2>&1; \
3494         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3495         echo "Yup, it does."
3496         x_cpp="$cc -E"
3497         x_minus='';
3498 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3499         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3500         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501         echo "Yup, it does."
3502         x_cpp="$cc -E"
3503         x_minus='-';
3504 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3505         $cc -P <testcpp.c >testcpp.out 2>&1; \
3506         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507         echo "Yipee, that works!"
3508         x_cpp="$cc -P"
3509         x_minus='';
3510 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3511         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3512         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513         echo "At long last!"
3514         x_cpp="$cc -P"
3515         x_minus='-';
3516 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3517         $cpp <testcpp.c >testcpp.out 2>&1; \
3518         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3519         echo "It works!"
3520         x_cpp="$cpp"
3521         x_minus='';
3522 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3523         $cpp - <testcpp.c >testcpp.out 2>&1; \
3524         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3525         echo "Hooray, it works!  I was beginning to wonder."
3526         x_cpp="$cpp"
3527         x_minus='-';
3528 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3529         $wrapper <testcpp.c >testcpp.out 2>&1; \
3530         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3531         x_cpp="$wrapper"
3532         x_minus=''
3533         echo "Eureka!"
3534 else
3535         dflt=''
3536         rp="No dice.  I can't find a C preprocessor.  Name one:"
3537         . ./myread
3538         x_cpp="$ans"
3539         x_minus=''
3540         $x_cpp <testcpp.c >testcpp.out 2>&1
3541         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3542                 echo "OK, that will do." >&4
3543         else
3544 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3545                 exit 1
3546         fi
3547 fi
3548
3549 case "$ok" in
3550 false)
3551         cppstdin="$x_cpp"
3552         cppminus="$x_minus"
3553         cpprun="$x_cpp"
3554         cpplast="$x_minus"
3555         set X $x_cpp
3556         shift
3557         case "$1" in
3558         "$cpp")
3559                 echo "Perhaps can we force $cc -E using a wrapper..."
3560                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3561                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3562                 then
3563                         echo "Yup, we can."
3564                         cppstdin="$wrapper"
3565                         cppminus='';
3566                 else
3567                         echo "Nope, we'll have to live without it..."
3568                 fi
3569                 ;;
3570         esac
3571         case "$cpprun" in
3572         "$wrapper")
3573                 cpprun=''
3574                 cpplast=''
3575                 ;;
3576         esac
3577         ;;
3578 esac
3579
3580 case "$cppstdin" in
3581 "$wrapper"|'cppstdin') ;;
3582 *) $rm -f $wrapper;;
3583 esac
3584 $rm -f testcpp.c testcpp.out
3585
3586 : Set private lib path
3587 case "$plibpth" in
3588 '') if ./mips; then
3589                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3590         fi;;
3591 esac
3592 case "$libpth" in
3593 ' ') dlist='';;
3594 '') dlist="$loclibpth $plibpth $glibpth";;
3595 *) dlist="$libpth";;
3596 esac
3597
3598 : Now check and see which directories actually exist, avoiding duplicates
3599 libpth=''
3600 for xxx in $dlist
3601 do
3602     if $test -d $xxx; then
3603                 case " $libpth " in
3604                 *" $xxx "*) ;;
3605                 *) libpth="$libpth $xxx";;
3606                 esac
3607     fi
3608 done
3609 $cat <<'EOM'
3610
3611 Some systems have incompatible or broken versions of libraries.  Among
3612 the directories listed in the question below, please remove any you
3613 know not to be holding relevant libraries, and add any that are needed.
3614 Say "none" for none.
3615
3616 EOM
3617 case "$libpth" in
3618 '') dflt='none';;
3619 *)
3620         set X $libpth
3621         shift
3622         dflt=${1+"$@"}
3623         ;;
3624 esac
3625 rp="Directories to use for library searches?"
3626 . ./myread
3627 case "$ans" in
3628 none) libpth=' ';;
3629 *) libpth="$ans";;
3630 esac
3631
3632 : compute shared library extension
3633 case "$so" in
3634 '')
3635         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3636                 dflt='sl'
3637         else
3638                 dflt='so'
3639         fi
3640         ;;
3641 *) dflt="$so";;
3642 esac
3643 $cat <<EOM
3644
3645 On some systems, shared libraries may be available.  Answer 'none' if
3646 you want to suppress searching of shared libraries for the remainder
3647 of this configuration.
3648
3649 EOM
3650 rp='What is the file extension used for shared libraries?'
3651 . ./myread
3652 so="$ans"
3653
3654 : Define several unixisms.
3655 : Hints files or command line option can be used to override them.
3656 : The convoluted testing is in case hints files set either the old
3657 : or the new name.
3658 case "$_exe" in
3659 '')     case "$exe_ext" in
3660     '') ;;
3661         *)      _exe="$exe_ext" ;;
3662         esac
3663         ;;
3664 esac
3665 case "$_a" in
3666 '')     case "$lib_ext" in
3667     '') _a='.a';;
3668         *)      _a="$lib_ext" ;;
3669         esac
3670         ;;
3671 esac
3672 case "$_o" in
3673 '') case "$obj_ext" in
3674         '')     _o='.o';;
3675         *)      _o="$obj_ext";;
3676         esac
3677         ;;
3678 esac
3679 case "$p_" in
3680 '') case "$path_sep" in
3681         '')     p_=':';;
3682         *)      p_="$path_sep";;
3683         esac
3684         ;;
3685 esac
3686 exe_ext=$_exe
3687 lib_ext=$_a
3688 obj_ext=$_o
3689 path_sep=$p_
3690
3691 : Which makefile gets called first.  This is used by make depend.
3692 case "$firstmakefile" in
3693 '') firstmakefile='makefile';;
3694 esac
3695
3696 case "$usesocks" in
3697 $define|true|[yY]*)     dflt='y';;
3698 *) dflt='n';;
3699 esac
3700 cat <<EOM
3701
3702 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3703 Configure must be run with -Dusesocks.
3704
3705 If this doesn't make any sense to you, just accept the default '$dflt'.
3706 EOM
3707 rp='Build Perl for SOCKS?'
3708 . ./myread
3709 case "$ans" in
3710 y|Y)    val="$define" ;;     
3711 *)      val="$undef" ;;
3712 esac
3713 set usesocks
3714 eval $setvar
3715
3716 : Looking for optional libraries
3717 echo " "
3718 echo "Checking for optional libraries..." >&4
3719 case "$libs" in
3720 ' '|'') dflt='';;
3721 *) dflt="$libs";;
3722 esac
3723 case "$libswanted" in
3724 '') libswanted='c_s';;
3725 esac
3726 case "$usesocks" in
3727 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3728 esac
3729 libsfound=''
3730 libsfiles=''
3731 libsdirs=''
3732 libspath=''
3733 for thisdir in $libpth $xlibpth; do
3734   test -d $thisdir && libspath="$libspath $thisdir"
3735 done
3736 for thislib in $libswanted; do
3737         for thisdir in $libspath; do
3738             xxx=''
3739             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3740                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3741                 $test -f "$xxx" && eval $libscheck
3742                 $test -f "$xxx" && libstyle=shared
3743             fi
3744             if test ! -f "$xxx"; then
3745                 xxx=$thisdir/lib$thislib.$so
3746                 $test -f "$xxx" && eval $libscheck
3747                 $test -f "$xxx" && libstyle=shared
3748             fi  
3749             if test ! -f "$xxx"; then
3750                 xxx=$thisdir/lib$thislib$_a
3751                 $test -f "$xxx" && eval $libscheck
3752                 $test -f "$xxx" && libstyle=static
3753             fi
3754             if test ! -f "$xxx"; then
3755                 xxx=$thisdir/$thislib$_a
3756                 $test -f "$xxx" && eval $libscheck
3757                 $test -f "$xxx" && libstyle=static
3758             fi
3759             if test ! -f "$xxx"; then
3760                 xxx=$thisdir/lib${thislib}_s$_a
3761                 $test -f "$xxx" && eval $libscheck
3762                 $test -f "$xxx" && libstyle=static
3763                 $test -f "$xxx" && thislib=${thislib}_s
3764             fi
3765             if test ! -f "$xxx"; then
3766                 xxx=$thisdir/Slib$thislib$_a
3767                 $test -f "$xxx" && eval $libscheck
3768                 $test -f "$xxx" && libstyle=static
3769             fi
3770             if $test -f "$xxx"; then
3771                 case "$libstyle" in
3772                 shared) echo "Found -l$thislib (shared)." ;;
3773                 static) echo "Found -l$thislib." ;;
3774                 *)      echo "Found -l$thislib ($libstyle)." ;;
3775                 esac
3776                 case " $dflt " in
3777                 *"-l$thislib "*);;
3778                 *) dflt="$dflt -l$thislib"
3779                    libsfound="$libsfound $xxx"
3780                    yyy=`basename $xxx`
3781                    libsfiles="$libsfiles $yyy"
3782                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3783                    case " $libsdirs " in
3784                    *" $yyy "*) ;;
3785                    *) libsdirs="$libsdirs $yyy" ;;
3786                    esac
3787                    ;;
3788                 esac
3789                 break
3790             fi  
3791         done
3792         if $test ! -f "$xxx"; then
3793             echo "No -l$thislib."
3794         fi
3795 done
3796 set X $dflt
3797 shift
3798 dflt="$*"
3799 case "$libs" in
3800 '') dflt="$dflt";;
3801 *) dflt="$libs";;
3802 esac
3803 case "$dflt" in
3804 ' '|'') dflt='none';;
3805 esac
3806
3807 $cat <<EOM
3808
3809 In order to compile $package on your machine, a number of libraries
3810 are usually needed.  Include any other special libraries here as well.
3811 Say "none" for none.  The default list is almost always right.
3812 EOM
3813
3814 echo " "
3815 rp="What libraries to use?"
3816 . ./myread
3817 case "$ans" in
3818 none) libs=' ';;
3819 *) libs="$ans";;
3820 esac
3821
3822 : determine optimization, if desired, or use for debug flag also
3823 case "$optimize" in
3824 ' '|$undef) dflt='none';;
3825 '') dflt='-O';;
3826 *) dflt="$optimize";;
3827 esac
3828 $cat <<EOH
3829
3830 By default, $package compiles with the -O flag to use the optimizer.
3831 Alternately, you might want to use the symbolic debugger, which uses
3832 the -g flag (on traditional Unix systems).  Either flag can be
3833 specified here.  To use neither flag, specify the word "none".
3834
3835 EOH
3836 rp="What optimizer/debugger flag should be used?"
3837 . ./myread
3838 optimize="$ans"
3839 case "$optimize" in
3840 'none') optimize=" ";;
3841 esac
3842
3843 dflt=''
3844 : We will not override a previous value, but we might want to
3845 : augment a hint file
3846 case "$hint" in
3847 default|recommended)
3848         case "$gccversion" in
3849         1*) dflt='-fpcc-struct-return' ;;
3850         esac
3851         case "$optimize" in
3852         *-g*) dflt="$dflt -DDEBUGGING";;
3853         esac
3854         case "$gccversion" in
3855         2*) if test -d /etc/conf/kconfig.d &&
3856                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3857                 then
3858                         dflt="$dflt -posix"
3859                 fi
3860                 ;;
3861         esac
3862         case "$gccversion" in
3863         1*) ;;
3864         2.[0-8]*) ;;
3865         ?*)     echo " "
3866                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3867                 echo 'int main(void) { return 0; }' > gcctest.c
3868                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3869                         echo "Yes, it does." 2>&1
3870                         case "$ccflags" in
3871                         *strict-aliasing*) 
3872                                 echo "Leaving current flags $ccflags alone." 2>&1
3873                                 ;;
3874                         *) dflt="$dflt -fno-strict-aliasing" ;;
3875                         esac
3876                 else
3877                         echo "Nope, it doesn't, but that's ok." 2>&1
3878                 fi
3879                 ;;
3880         esac
3881         ;;
3882 esac
3883
3884 case "$mips_type" in
3885 *BSD*|'') inclwanted="$locincpth $usrinc";;
3886 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3887 esac
3888 for thisincl in $inclwanted; do
3889         if $test -d $thisincl; then
3890                 if $test x$thisincl != x$usrinc; then
3891                         case "$dflt" in
3892                         *$thisincl*);;
3893                         *) dflt="$dflt -I$thisincl";;
3894                         esac
3895                 fi
3896         fi
3897 done
3898
3899 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3900         xxx=true;
3901 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3902         xxx=true;
3903 else
3904         xxx=false;
3905 fi;
3906 if $xxx; then
3907         case "$dflt" in
3908         *$2*);;
3909         *) dflt="$dflt -D$2";;
3910         esac;
3911 fi'
3912
3913 set signal.h LANGUAGE_C; eval $inctest
3914
3915 case "$usesocks" in
3916 $define)
3917         ccflags="$ccflags -DSOCKS"
3918         ;;
3919 esac
3920
3921 case "$hint" in
3922 default|recommended) dflt="$ccflags $dflt" ;;
3923 *) dflt="$ccflags";;
3924 esac
3925
3926 case "$dflt" in
3927 ''|' ') dflt=none;;
3928 esac
3929 $cat <<EOH
3930
3931 Your C compiler may want other flags.  For this question you should include
3932 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3933 but you should NOT include libraries or ld flags like -lwhatever.  If you
3934 want $package to honor its debug switch, you should include -DDEBUGGING here.
3935 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3936
3937 To use no flags, specify the word "none".
3938
3939 EOH
3940 set X $dflt
3941 shift
3942 dflt=${1+"$@"}
3943 rp="Any additional cc flags?"
3944 . ./myread
3945 case "$ans" in
3946 none) ccflags='';;
3947 *) ccflags="$ans";;
3948 esac
3949
3950 : the following weeds options from ccflags that are of no interest to cpp
3951 cppflags="$ccflags"
3952 case "$gccversion" in
3953 1*) cppflags="$cppflags -D__GNUC__"
3954 esac
3955 case "$mips_type" in
3956 '');;
3957 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3958 esac
3959 case "$cppflags" in
3960 '');;
3961 *)
3962         echo " "
3963         echo "Let me guess what the preprocessor flags are..." >&4
3964         set X $cppflags
3965         shift
3966         cppflags=''
3967         $cat >cpp.c <<'EOM'
3968 #define BLURFL foo
3969
3970 BLURFL xx LFRULB
3971 EOM
3972         previous=''
3973         for flag in $*
3974         do
3975                 case "$flag" in
3976                 -*) ftry="$flag";;
3977                 *) ftry="$previous $flag";;
3978                 esac
3979                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3980                         >cpp1.out 2>/dev/null && \
3981                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3982                         >cpp2.out 2>/dev/null && \
3983                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3984                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3985                 then
3986                         cppflags="$cppflags $ftry"
3987                         previous=''
3988                 else
3989                         previous="$flag"
3990                 fi
3991         done
3992         set X $cppflags
3993         shift
3994         cppflags=${1+"$@"}
3995         case "$cppflags" in
3996         *-*)  echo "They appear to be: $cppflags";;
3997         esac
3998         $rm -f cpp.c cpp?.out
3999         ;;
4000 esac
4001
4002 : flags used in final linking phase
4003 case "$ldflags" in
4004 '') if ./venix; then
4005                 dflt='-i -z'
4006         else
4007                 dflt=''
4008         fi
4009         case "$ccflags" in
4010         *-posix*) dflt="$dflt -posix" ;;
4011         esac
4012         ;;
4013 *) dflt="$ldflags";;
4014 esac
4015
4016 : Try to guess additional flags to pick up local libraries.
4017 for thislibdir in $libpth; do
4018         case " $loclibpth " in
4019         *" $thislibdir "*)
4020                 case "$dflt " in 
4021                 *"-L$thislibdir "*) ;;
4022                 *)  dflt="$dflt -L$thislibdir" ;;
4023                 esac
4024                 ;;
4025         esac
4026 done
4027
4028 case "$dflt" in
4029 '') dflt='none' ;;
4030 esac
4031
4032 $cat <<EOH
4033
4034 Your C linker may need flags.  For this question you should
4035 include -L/whatever and any other flags used by the C linker, but you
4036 should NOT include libraries like -lwhatever.
4037
4038 Make sure you include the appropriate -L/path flags if your C linker
4039 does not normally search all of the directories you specified above,
4040 namely
4041         $libpth
4042 To use no flags, specify the word "none".
4043
4044 EOH
4045
4046 rp="Any additional ld flags (NOT including libraries)?"
4047 . ./myread
4048 case "$ans" in
4049 none) ldflags='';;
4050 *) ldflags="$ans";;
4051 esac
4052 rmlist="$rmlist pdp11"
4053
4054 : coherency check
4055 echo " "
4056 echo "Checking your choice of C compiler and flags for coherency..." >&4
4057 $cat > try.c <<'EOF'
4058 #include <stdio.h>
4059 int main() { printf("Ok\n"); exit(0); }
4060 EOF
4061 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4062 shift
4063 $cat >try.msg <<'EOM'
4064 I've tried to compile and run the following simple program:
4065
4066 EOM
4067 $cat try.c >> try.msg
4068
4069 $cat >> try.msg <<EOM
4070
4071 I used the command:
4072
4073         $*
4074         ./try
4075
4076 and I got the following output:
4077
4078 EOM
4079 dflt=y
4080 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4081         if sh -c './try' >>try.msg 2>&1; then
4082                 xxx=`./try`
4083                 case "$xxx" in
4084                 "Ok") dflt=n ;;
4085                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4086                         case " $libs " in
4087                         *" -lsfio "*)
4088                                 cat >> try.msg <<'EOQS'
4089 If $libs contains -lsfio, and sfio is mis-configured, then it
4090 sometimes (apparently) runs and exits with a 0 status, but with no
4091 output!  It may have to do with sfio's use of _exit vs. exit.
4092
4093 EOQS
4094                                 rp="You have a big problem.  Shall I abort Configure"
4095                                 dflt=y
4096                                 ;;
4097                         esac
4098                         ;;
4099                 esac
4100         else
4101                 echo "The program compiled OK, but exited with status $?." >>try.msg
4102                 rp="You have a problem.  Shall I abort Configure"
4103                 dflt=y
4104         fi
4105 else
4106         echo "I can't compile the test program." >>try.msg
4107         rp="You have a BIG problem.  Shall I abort Configure"
4108         dflt=y
4109 fi
4110 case "$dflt" in
4111 y)
4112         $cat try.msg >&4
4113         case "$knowitall" in
4114         '')
4115                 echo "(The supplied flags or libraries might be incorrect.)"
4116                 ;;
4117         *) dflt=n;;
4118         esac
4119         echo " "
4120         . ./myread
4121         case "$ans" in
4122         n*|N*) ;;
4123         *)      echo "Ok.  Stopping Configure." >&4
4124                 exit 1
4125                 ;;
4126         esac
4127         ;;
4128 n) echo "OK, that should do.";;
4129 esac
4130 $rm -f try try.* core
4131
4132 : define an is-a-typedef? function
4133 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4134 case "$inclist" in
4135 "") inclist="sys/types.h";;
4136 esac;
4137 eval "varval=\$$var";
4138 case "$varval" in
4139 "")
4140         $rm -f temp.c;
4141         for inc in $inclist; do
4142                 echo "#include <$inc>" >>temp.c;
4143         done;
4144         echo "#ifdef $type" >> temp.c;
4145         echo "printf(\"We have $type\");" >> temp.c;
4146         echo "#endif" >> temp.c;
4147         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4148         if $contains $type temp.E >/dev/null 2>&1; then
4149                 eval "$var=\$type";
4150         else
4151                 eval "$var=\$def";
4152         fi;
4153         $rm -f temp.?;;
4154 *) eval "$var=\$varval";;
4155 esac'
4156
4157 : define an is-a-typedef? function that prompts if the type is not available.
4158 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4159 case "$inclist" in
4160 "") inclist="sys/types.h";;
4161 esac;
4162 eval "varval=\$$var";
4163 case "$varval" in
4164 "")
4165         $rm -f temp.c;
4166         for inc in $inclist; do
4167                 echo "#include <$inc>" >>temp.c;
4168         done;
4169         echo "#ifdef $type" >> temp.c;
4170         echo "printf(\"We have $type\");" >> temp.c;
4171         echo "#endif" >> temp.c;
4172         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4173         echo " " ;
4174         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4175         if $contains $type temp.E >/dev/null 2>&1; then
4176                 echo "$type found." >&4;
4177                 eval "$var=\$type";
4178         else
4179                 echo "$type NOT found." >&4;
4180                 dflt="$def";
4181                 . ./myread ;
4182                 eval "$var=\$ans";
4183         fi;
4184         $rm -f temp.?;;
4185 *) eval "$var=\$varval";;
4186 esac'
4187
4188 : define a shorthand compile call
4189 compile='
4190 mc_file=$1;
4191 shift;
4192 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4193 : define a shorthand compile call for compilations that should be ok.
4194 compile_ok='
4195 mc_file=$1;
4196 shift;
4197 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4198
4199 : check for lengths of integral types
4200 echo " "
4201 case "$intsize" in
4202 '')
4203         echo "Checking to see how big your integers are..." >&4
4204         $cat >intsize.c <<'EOCP'
4205 #include <stdio.h>
4206 int main()
4207 {
4208         printf("intsize=%d;\n", (int)sizeof(int));
4209         printf("longsize=%d;\n", (int)sizeof(long));
4210         printf("shortsize=%d;\n", (int)sizeof(short));
4211         exit(0);
4212 }
4213 EOCP
4214         set intsize
4215         if eval $compile_ok && ./intsize > /dev/null; then
4216                 eval `./intsize`
4217                 echo "Your integers are $intsize bytes long."
4218                 echo "Your long integers are $longsize bytes long."
4219                 echo "Your short integers are $shortsize bytes long."
4220         else
4221                 $cat >&4 <<EOM
4222 !
4223 Help! I can't compile and run the intsize test program: please enlighten me!
4224 (This is probably a misconfiguration in your system or libraries, and
4225 you really ought to fix it.  Still, I'll try anyway.)
4226 !
4227 EOM
4228                 dflt=4
4229                 rp="What is the size of an integer (in bytes)?"
4230                 . ./myread
4231                 intsize="$ans"
4232                 dflt=$intsize
4233                 rp="What is the size of a long integer (in bytes)?"
4234                 . ./myread
4235                 longsize="$ans"
4236                 dflt=2
4237                 rp="What is the size of a short integer (in bytes)?"
4238                 . ./myread
4239                 shortsize="$ans"
4240         fi
4241         ;;
4242 esac
4243 $rm -f intsize intsize.*
4244
4245 : see what type lseek is declared as in the kernel
4246 rp="What is the type used for lseek's offset on this system?"
4247 set off_t lseektype long stdio.h sys/types.h
4248 eval $typedef_ask
4249
4250 echo " "
4251 echo "Checking to see how big your file offsets are..." >&4
4252 $cat >try.c <<EOCP
4253 #include <sys/types.h>
4254 #include <stdio.h>
4255 int main()
4256 {
4257     printf("%d\n", (int)sizeof($lseektype));
4258     return(0); 
4259 }
4260 EOCP
4261 set try
4262 if eval $compile_ok; then
4263         lseeksize=`./try`
4264         echo "Your file offsets are $lseeksize bytes long."
4265 else
4266         dflt=$longsize
4267         echo " "
4268         echo "(I can't seem to compile the test program.  Guessing...)"
4269         rp="What is the size of your file offsets (in bytes)?"
4270         . ./myread
4271         lseeksize="$ans"
4272 fi
4273 $rm -f try.c try
4274
4275 : see what type file positions are declared as in the library
4276 rp="What is the type for file position used by fsetpos()?"
4277 set fpos_t fpostype long stdio.h sys/types.h
4278 eval $typedef_ask
4279
4280 echo " "
4281 case "$fpostype" in
4282 *_t) zzz="$fpostype"    ;;
4283 *)   zzz="fpos_t"       ;;
4284 esac
4285 echo "Checking the size of $zzz..." >&4 
4286 cat > try.c <<EOCP
4287 #include <sys/types.h>
4288 #include <stdio.h>
4289 int main() {
4290     printf("%d\n", (int)sizeof($fpostype));
4291     exit(0);
4292 }
4293 EOCP
4294 set try
4295 if eval $compile_ok; then
4296         yyy=`./try`
4297         case "$yyy" in
4298         '')     fpossize=4
4299                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4300                 ;;
4301         *)      fpossize=$yyy
4302                 echo "Your $zzz is $fpossize bytes long."
4303                 ;;
4304         esac
4305 else
4306         dflt="$longsize"
4307         echo " " >&4
4308         echo "(I can't compile the test program.  Guessing...)" >&4
4309         rp="What is the size of your file positions (in bytes)?"
4310         . ./myread
4311         fpossize="$ans"
4312 fi
4313
4314
4315
4316 # Backward compatibility (uselfs is deprecated).
4317 case "$uselfs" in
4318 "$define"|true|[yY]*)
4319         cat <<EOM >&4
4320
4321 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4322 EOM
4323         uselargefiles="$define"
4324         ;;
4325 esac                          
4326
4327 case "$lseeksize:$fpossize" in
4328 8:8) cat <<EOM
4329
4330 You can have files larger than 2 gigabytes.
4331 EOM
4332    val="$define" ;;
4333 *)    case "$uselargefiles" in
4334    "$undef"|false|[nN]*) dflt='n' ;;
4335    *)   dflt='y' ;;
4336    esac
4337    cat <<EOM
4338
4339 Perl can be built to understand large files (files larger than 2 gigabytes)
4340 on some systems.  To do so, Configure can be run with -Duselargefiles.
4341
4342 If this doesn't make any sense to you, just accept the default '$dflt'.
4343 EOM
4344    rp='Try to understand large files, if available?'
4345    . ./myread
4346    case "$ans" in
4347    y|Y)         val="$define" ;;
4348    *)           val="$undef"  ;;
4349    esac
4350    ;;
4351 esac
4352 set uselargefiles
4353 eval $setvar
4354 case "$uselargefiles" in
4355 "$define")
4356 : Look for a hint-file generated 'call-back-unit'.  If the
4357 : user has specified that a large files perl is to be built,
4358 : we may need to set or change some other defaults.
4359         if $test -f uselargefiles.cbu; then
4360                 echo "Your platform has some specific hints for large file builds, using them..."
4361                 . ./uselargefiles.cbu
4362                 echo " "
4363                 echo "Rechecking to see how big your file offsets are..." >&4
4364                 $cat >try.c <<EOCP
4365 #include <sys/types.h>
4366 #include <stdio.h>
4367 int main()
4368 {
4369     printf("%d\n", (int)sizeof($lseektype));
4370     return(0); 
4371 }
4372 EOCP
4373                 set try
4374                 if eval $compile_ok; then
4375                         lseeksize=`./try`
4376                         $echo "Your file offsets are now $lseeksize bytes long."
4377                 else
4378                         dflt="$lseeksize"
4379                         echo " "
4380                         echo "(I can't seem to compile the test program.  Guessing...)"
4381                         rp="What is the size of your file offsets (in bytes)?"
4382                         . ./myread
4383                         lseeksize="$ans"
4384                 fi
4385                 case "$fpostype" in
4386                 *_t) zzz="$fpostype"    ;;
4387                 *)   zzz="fpos_t"       ;;
4388                 esac
4389                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4390                 $cat > try.c <<EOCP
4391 #include <sys/types.h>
4392 #include <stdio.h>
4393 int main() {
4394     printf("%d\n", (int)sizeof($fpostype));
4395     exit(0);
4396 }
4397 EOCP
4398                 set try
4399                 if eval $compile_ok; then
4400                         yyy=`./try`
4401                         dflt="$lseeksize"
4402                         case "$yyy" in
4403                         '')     echo " "
4404                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4405                                 ;;
4406                         *)      fpossize=$yyy
4407                                 echo " $fpossize bytes." >&4
4408                                 ;;
4409                         esac
4410                 else
4411                         dflt="$fpossize"
4412                         echo " "
4413                         echo "(I can't compile the test program.  Guessing...)" >&4
4414                         rp="What is the size of your file positions (in bytes)?"
4415                         . ./myread
4416                         fpossize="$ans"
4417                 fi
4418                 $rm -f try.c try
4419         fi
4420         ;;
4421 esac
4422
4423
4424 case "$usemorebits" in
4425 "$define"|true|[yY]*)
4426         use64bitint="$define"
4427         uselongdouble="$define"
4428         usemorebits="$define"
4429         ;;
4430 *)      usemorebits="$undef"
4431         ;;
4432 esac
4433
4434
4435 case "$uselonglong" in
4436 "$define"|true|[yY]*)
4437         cat <<EOM >&4
4438
4439 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4440 EOM
4441         use64bitint="$define"
4442         ;;
4443 esac                          
4444 case "$use64bits" in
4445 "$define"|true|[yY]*)
4446         cat <<EOM >&4
4447
4448 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4449 EOM
4450         use64bitint="$define"
4451         ;;
4452 esac                          
4453 case "$use64bitints" in
4454 "$define"|true|[yY]*)
4455         cat <<EOM >&4
4456
4457 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4458 EOM
4459         use64bitint="$define"
4460         ;;
4461 esac                          
4462 case "$use64bitsint" in
4463 "$define"|true|[yY]*)
4464         cat <<EOM >&4
4465
4466 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4467 EOM
4468         use64bitint="$define"
4469         ;;
4470 esac                          
4471 case "$uselonglongs" in
4472 "$define"|true|[yY]*)
4473         cat <<EOM >&4
4474
4475 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4476 EOM
4477         use64bitint="$define"
4478         ;;
4479 esac                          
4480 case "$use64bitsall" in
4481 "$define"|true|[yY]*)
4482         cat <<EOM >&4
4483
4484 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4485 EOM
4486         use64bitall="$define"
4487         ;;
4488 esac                          
4489
4490 case "$ccflags" in
4491 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4492 esac
4493 case "$use64bitall" in
4494 "$define"|true|[yY]*) use64bitint="$define" ;;
4495 esac
4496
4497 case "$longsize" in
4498 8) cat <<EOM
4499
4500 You have natively 64-bit long integers.
4501 EOM
4502    val="$define"
4503    ;;
4504 *) case "$use64bitint" in
4505    "$define"|true|[yY]*) dflt='y';;
4506    *) dflt='n';;
4507    esac
4508    cat <<EOM
4509
4510 Perl can be built to take advantage of 64-bit integer types
4511 on some systems.  To do so, Configure can be run with -Duse64bitint.
4512 Choosing this option will most probably introduce binary incompatibilities.
4513
4514 If this doesn't make any sense to you, just accept the default '$dflt'.
4515 EOM
4516    rp='Try to use 64-bit integers, if available?'
4517    . ./myread
4518    case "$ans" in
4519    [yY]*) val="$define" ;;
4520    *)     val="$undef"  ;;
4521    esac
4522    ;;
4523 esac
4524 set use64bitint
4525 eval $setvar
4526
4527 case "$use64bitall" in
4528 "$define"|true|[yY]*) dflt='y' ;;
4529 *) case "$longsize" in
4530    8) dflt='y' ;;
4531    *) dflt='n' ;;
4532    esac
4533    ;;
4534 esac    
4535 cat <<EOM
4536
4537 You may also choose to try maximal 64-bitness.  It means using as much
4538 64-bitness as possible on the platform.  This in turn means even more
4539 binary incompatibilities.  On the other hand, your platform may not
4540 have any more 64-bitness available than what you already have chosen.
4541
4542 If this doesn't make any sense to you, just accept the default '$dflt'.
4543 EOM
4544 rp='Try to use maximal 64-bit support, if available?'
4545 . ./myread
4546 case "$ans" in
4547 [yY]*) val="$define" ;;
4548 *)     val="$undef"  ;;
4549 esac
4550 set use64bitall
4551 eval $setvar
4552 case "$use64bitall" in
4553 "$define")
4554         case "$use64bitint" in
4555         "$undef")
4556                 cat <<EOM
4557
4558 Since you have chosen a maximally 64-bit build, I'm also turning on
4559 the use of 64-bit integers.
4560 EOM
4561                 use64bitint="$define" ;;
4562         esac
4563         ;;
4564 esac
4565
4566 case "$use64bitint" in
4567 "$define"|true|[yY]*)
4568 : Look for a hint-file generated 'call-back-unit'.  If the
4569 : user has specified that a 64-bit perl is to be built,
4570 : we may need to set or change some other defaults.
4571         if $test -f use64bitint.cbu; then
4572                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4573                 . ./use64bitint.cbu
4574         fi
4575         case "$longsize" in
4576         4) case "$archname64" in
4577            '') archname64=64int ;;
4578            esac
4579            ;;
4580         esac
4581         ;;
4582 esac
4583
4584 case "$use64bitall" in
4585 "$define"|true|[yY]*)
4586 : Look for a hint-file generated 'call-back-unit'.  If the
4587 : user has specified that a maximally 64-bit perl is to be built,
4588 : we may need to set or change some other defaults.
4589         if $test -f use64bitall.cbu; then
4590                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4591                 . ./use64bitall.cbu
4592         fi
4593         case "$longsize" in
4594         4) case "$archname64" in
4595            ''|64int) archname64=64all ;;
4596            esac
4597            ;;
4598         esac
4599         ;;
4600 esac
4601
4602 : determine the architecture name
4603 echo " "
4604 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4605         tarch=`arch`"-$osname"
4606 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4607         if uname -m > tmparch 2>&1 ; then
4608                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4609                         -e 's/$/'"-$osname/" tmparch`
4610         else
4611                 tarch="$osname"
4612         fi
4613         $rm -f tmparch
4614 else
4615         tarch="$osname"
4616 fi
4617 case "$myarchname" in
4618 ''|"$tarch") ;;
4619 *)
4620         echo "(Your architecture name used to be $myarchname.)"
4621         archname=''
4622         ;;
4623 esac
4624 myarchname="$tarch"
4625 case "$archname" in
4626 '') dflt="$tarch";;
4627 *) dflt="$archname";;
4628 esac
4629 rp='What is your architecture name'
4630 . ./myread
4631 archname="$ans"
4632 case "$usethreads" in
4633 $define)
4634         echo "Threads selected." >&4
4635         case "$archname" in
4636         *-thread*) echo "...and architecture name already has -thread." >&4
4637                 ;;
4638         *)      archname="$archname-thread"
4639                 echo "...setting architecture name to $archname." >&4
4640                 ;;
4641         esac
4642         ;;
4643 esac
4644 case "$usemultiplicity" in
4645 $define)
4646         echo "Multiplicity selected." >&4
4647         case "$archname" in
4648         *-multi*) echo "...and architecture name already has -multi." >&4
4649                 ;;
4650         *)      archname="$archname-multi"
4651                 echo "...setting architecture name to $archname." >&4
4652                 ;;
4653         esac
4654         ;;
4655 esac
4656 case "$use64bitint" in
4657 $define)
4658         case "$archname64" in
4659         '')
4660                 ;;
4661         *)
4662                 case "$archname" in
4663                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4664                         ;;
4665                 *)      archname="$archname-$archname64"
4666                         echo "...setting architecture name to $archname." >&4
4667                         ;;
4668                 esac
4669                 ;;
4670         esac
4671 esac
4672
4673 : determine root of directory hierarchy where package will be installed.
4674 case "$prefix" in
4675 '')
4676         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4677         ;;
4678 *)
4679         dflt="$prefix"
4680         ;;
4681 esac
4682 $cat <<EOM
4683
4684 By default, $package will be installed in $dflt/bin, manual pages
4685 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4686 installation directories. Typically this is something like /usr/local.
4687 If you wish to have binaries under /usr/bin but other parts of the
4688 installation under /usr/local, that's ok: you will be prompted
4689 separately for each of the installation directories, the prefix being
4690 only used to set the defaults.
4691
4692 EOM
4693 fn=d~
4694 rp='Installation prefix to use?'
4695 . ./getfile
4696 oldprefix=''
4697 case "$prefix" in
4698 '') ;;
4699 *)
4700         case "$ans" in
4701         "$prefix") ;;
4702         *) oldprefix="$prefix";;
4703         esac
4704         ;;
4705 esac
4706 prefix="$ans"
4707 prefixexp="$ansexp"
4708
4709 : is AFS running?
4710 echo " "
4711 case "$afs" in
4712 $define|true)   afs=true ;;
4713 $undef|false)   afs=false ;;
4714 *)      if test -d /afs; then
4715                 afs=true
4716         else
4717                 afs=false
4718         fi
4719         ;;
4720 esac
4721 if $afs; then
4722         echo "AFS may be running... I'll be extra cautious then..." >&4
4723 else
4724         echo "AFS does not seem to be running..." >&4
4725 fi
4726
4727 : determine installation prefix for where package is to be installed.
4728 if $afs; then 
4729 $cat <<EOM
4730
4731 Since you are running AFS, I need to distinguish the directory in which
4732 files will reside from the directory in which they are installed (and from
4733 which they are presumably copied to the former directory by occult means).
4734
4735 EOM
4736         case "$installprefix" in
4737         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4738         *) dflt="$installprefix";;
4739         esac
4740 else
4741 $cat <<EOM
4742
4743 In some special cases, particularly when building $package for distribution,
4744 it is convenient to distinguish between the directory in which files should 
4745 be installed from the directory ($prefix) in which they 
4746 will eventually reside.  For most users, these two directories are the same.
4747
4748 EOM
4749         case "$installprefix" in
4750         '') dflt=$prefix ;;
4751         *) dflt=$installprefix;;
4752         esac
4753 fi
4754 fn=d~
4755 rp='What installation prefix should I use for installing files?'
4756 . ./getfile
4757 installprefix="$ans"
4758 installprefixexp="$ansexp"
4759
4760 : set the prefixit variable, to compute a suitable default value
4761 prefixit='case "$3" in
4762 ""|none)
4763         case "$oldprefix" in
4764         "") eval "$1=\"\$$2\"";;
4765         *)
4766                 case "$3" in
4767                 "") eval "$1=";;
4768                 none)
4769                         eval "tp=\"\$$2\"";
4770                         case "$tp" in
4771                         ""|" ") eval "$1=\"\$$2\"";;
4772                         *) eval "$1=";;
4773                         esac;;
4774                 esac;;
4775         esac;;
4776 *)
4777         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4778         case "$tp" in
4779         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4780         /*-$oldprefix/*|\~*-$oldprefix/*)
4781                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4782         *) eval "$1=\"\$$2\"";;
4783         esac;;
4784 esac'
4785
4786
4787 : get the patchlevel
4788 echo " "
4789 echo "Getting the current patchlevel..." >&4
4790 if $test -r $rsrc/patchlevel.h;then
4791         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4792         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4793         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4794         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4795         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4796         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4797 else
4798         revision=0
4799         patchlevel=0
4800         subversion=0
4801         api_revision=0
4802         api_version=0
4803         api_subversion=0
4804 fi
4805 $echo $n "(You have $package revision $revision" $c
4806 $echo $n " patchlevel $patchlevel" $c
4807 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4808 echo ".)"
4809 case "$osname" in
4810 dos|vms)
4811         : XXX Should be a Configure test for double-dots in filenames.
4812         version=`echo $revision $patchlevel $subversion | \
4813                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4814         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4815                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4816         ;;
4817 *)
4818         version=`echo $revision $patchlevel $subversion | \
4819                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4820         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4821                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4822         ;;
4823 esac
4824 : Special case the 5.005_xx maintenance series, which used 5.005
4825 : without any subversion label as a subdirectory in $sitelib
4826 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4827         api_versionstring='5.005'
4828 fi
4829
4830 : determine installation style
4831 : For now, try to deduce it from prefix unless it is already set.
4832 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4833 case "$installstyle" in
4834 '')     case "$prefix" in
4835                 *perl*) dflt='lib';;
4836                 *) dflt='lib/perl5' ;;
4837         esac
4838         ;;
4839 *)      dflt="$installstyle" ;;
4840 esac
4841 : Probably not worth prompting for this since we prompt for all
4842 : the directories individually, and the prompt would be too long and
4843 : confusing anyway.
4844 installstyle=$dflt
4845
4846 : determine where private library files go
4847 : Usual default is /usr/local/lib/perl5/$version.
4848 : Also allow things like /opt/perl/lib/$version, since 
4849 : /opt/perl/lib/perl5... would be redundant.
4850 : The default "style" setting is made in installstyle.U
4851 case "$installstyle" in
4852 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4853 *)       set dflt privlib lib/$version ;;
4854 esac
4855 eval $prefixit
4856 $cat <<EOM
4857
4858 There are some auxiliary files for $package that need to be put into a
4859 private library directory that is accessible by everyone.
4860
4861 EOM
4862 fn=d~+
4863 rp='Pathname where the private library files will reside?'
4864 . ./getfile
4865 privlib="$ans"
4866 privlibexp="$ansexp"
4867 : Change installation prefix, if necessary.
4868 if $test X"$prefix" != X"$installprefix"; then
4869         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4870 else
4871         installprivlib="$privlibexp"
4872 fi
4873
4874 : set the prefixup variable, to restore leading tilda escape
4875 prefixup='case "$prefixexp" in
4876 "$prefix") ;;
4877 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4878 esac'
4879
4880 : determine where public architecture dependent libraries go
4881 set archlib archlib
4882 eval $prefixit
4883 : privlib default is /usr/local/lib/$package/$version
4884 : archlib default is /usr/local/lib/$package/$version/$archname
4885 : privlib may have an optional trailing /share.
4886 tdflt=`echo $privlib | $sed 's,/share$,,'`
4887 tdflt=$tdflt/$archname
4888 case "$archlib" in
4889 '')     dflt=$tdflt
4890         ;;
4891 *)      dflt="$archlib"
4892     ;;
4893 esac
4894 $cat <<EOM
4895
4896 $spackage contains architecture-dependent library files.  If you are
4897 sharing libraries in a heterogeneous environment, you might store
4898 these files in a separate location.  Otherwise, you can just include
4899 them with the rest of the public library files.
4900
4901 EOM
4902 fn=d+~
4903 rp='Where do you want to put the public architecture-dependent libraries?'
4904 . ./getfile
4905 archlib="$ans"
4906 archlibexp="$ansexp"
4907 if $test X"$archlib" = X"$privlib"; then
4908         d_archlib="$undef"
4909 else
4910         d_archlib="$define"
4911 fi
4912 : Change installation prefix, if necessary.
4913 if $test X"$prefix" != X"$installprefix"; then
4914         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4915 else
4916         installarchlib="$archlibexp"
4917 fi
4918
4919
4920 : Binary compatibility with 5.005 is not possible for builds
4921 : with advanced features
4922 case "$usethreads$usemultiplicity" in
4923 *define*)
4924         bincompat5005="$undef"
4925         d_bincompat5005="$undef"
4926         ;;
4927 *)      $cat <<EOM
4928
4929 This version of Perl can be compiled for binary compatibility with 5.005.
4930 If you decide to do so, you will be able to continue using most of the
4931 extensions that were compiled for Perl 5.005.
4932
4933 EOM
4934         case "$bincompat5005$d_bincompat5005" in
4935         *"$undef"*) dflt=n ;;
4936         *) dflt=y ;;
4937         esac
4938         rp='Binary compatibility with Perl 5.005?'
4939         . ./myread
4940         case "$ans" in
4941         y*) val="$define" ;;
4942         *)  val="$undef" ;;
4943         esac
4944         set d_bincompat5005
4945         eval $setvar
4946         case "$d_bincompat5005" in
4947         "$define")
4948                 bincompat5005="$define"
4949                 ;;
4950         *)      bincompat5005="$undef"
4951                 d_bincompat5005="$undef"
4952                 ;;
4953         esac
4954         ;;
4955 esac
4956
4957
4958 : see if setuid scripts can be secure
4959 $cat <<EOM
4960
4961 Some kernels have a bug that prevents setuid #! scripts from being
4962 secure.  Some sites have disabled setuid #! scripts because of this.
4963
4964 First let's decide if your kernel supports secure setuid #! scripts.
4965 (If setuid #! scripts would be secure but have been disabled anyway,
4966 don't say that they are secure if asked.)
4967
4968 EOM
4969
4970 val="$undef"
4971 if $test -d /dev/fd; then
4972         echo "#!$ls" >reflect
4973         chmod +x,u+s reflect
4974         ./reflect >flect 2>&1
4975         if $contains "/dev/fd" flect >/dev/null; then
4976                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4977                 val="$define"
4978         else
4979                 $cat <<EOM
4980 If you are not sure if they are secure, I can check but I'll need a
4981 username and password different from the one you are using right now.
4982 If you don't have such a username or don't want me to test, simply
4983 enter 'none'.
4984
4985 EOM
4986                 rp='Other username to test security of setuid scripts with?'
4987                 dflt='none'
4988                 . ./myread
4989                 case "$ans" in
4990                 n|none)
4991                         case "$d_suidsafe" in
4992                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4993                                 dflt=n;;
4994                         "$undef")
4995                                 echo "Well, the $hint value is *not* secure." >&4
4996                                 dflt=n;;
4997                         *)      echo "Well, the $hint value *is* secure." >&4
4998                                 dflt=y;;
4999                         esac
5000                         ;;
5001                 *)
5002                         $rm -f reflect flect
5003                         echo "#!$ls" >reflect
5004                         chmod +x,u+s reflect
5005                         echo >flect
5006                         chmod a+w flect
5007                         echo '"su" will (probably) prompt you for '"$ans's password."
5008                         su $ans -c './reflect >flect'
5009                         if $contains "/dev/fd" flect >/dev/null; then
5010                                 echo "Okay, it looks like setuid scripts are secure." >&4
5011                                 dflt=y
5012                         else
5013                                 echo "I don't think setuid scripts are secure." >&4
5014                                 dflt=n
5015                         fi
5016                         ;;
5017                 esac
5018                 rp='Does your kernel have *secure* setuid scripts?'
5019                 . ./myread
5020                 case "$ans" in
5021                 [yY]*)  val="$define";;
5022                 *)      val="$undef";;
5023                 esac
5024         fi
5025 else
5026         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5027         echo "(That's for file descriptors, not floppy disks.)"
5028         val="$undef"
5029 fi
5030 set d_suidsafe
5031 eval $setvar
5032
5033 $rm -f reflect flect
5034
5035 : now see if they want to do setuid emulation
5036 echo " "
5037 val="$undef"
5038 case "$d_suidsafe" in
5039 "$define")
5040         val="$undef"
5041         echo "No need to emulate SUID scripts since they are secure here." >& 4
5042         ;;
5043 *)
5044         $cat <<EOM
5045 Some systems have disabled setuid scripts, especially systems where
5046 setuid scripts cannot be secure.  On systems where setuid scripts have
5047 been disabled, the setuid/setgid bits on scripts are currently
5048 useless.  It is possible for $package to detect those bits and emulate
5049 setuid/setgid in a secure fashion.  This emulation will only work if
5050 setuid scripts have been disabled in your kernel.
5051
5052 EOM
5053         case "$d_dosuid" in
5054         "$define") dflt=y ;;
5055         *) dflt=n ;;
5056         esac
5057         rp="Do you want to do setuid/setgid emulation?"
5058         . ./myread
5059         case "$ans" in
5060         [yY]*)  val="$define";;
5061         *)      val="$undef";;
5062         esac
5063         ;;
5064 esac
5065 set d_dosuid
5066 eval $setvar
5067
5068 : determine filename position in cpp output
5069 echo " "
5070 echo "Computing filename position in cpp output for #include directives..." >&4
5071 echo '#include <stdio.h>' > foo.c
5072 $cat >fieldn <<EOF
5073 $startsh
5074 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5075 $grep '^[       ]*#.*stdio\.h' | \
5076 while read cline; do
5077         pos=1
5078         set \$cline
5079         while $test \$# -gt 0; do
5080                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5081                         echo "\$pos"
5082                         exit 0
5083                 fi
5084                 shift
5085                 pos=\`expr \$pos + 1\`
5086         done
5087 done
5088 EOF
5089 chmod +x fieldn
5090 fieldn=`./fieldn`
5091 $rm -f foo.c fieldn
5092 case $fieldn in
5093 '') pos='???';;
5094 1) pos=first;;
5095 2) pos=second;;
5096 3) pos=third;;
5097 *) pos="${fieldn}th";;
5098 esac
5099 echo "Your cpp writes the filename in the $pos field of the line."
5100
5101 : locate header file
5102 $cat >findhdr <<EOF
5103 $startsh
5104 wanted=\$1
5105 name=''
5106 for usrincdir in $usrinc
5107 do
5108         if test -f \$usrincdir/\$wanted; then
5109                 echo "\$usrincdir/\$wanted"
5110                 exit 0
5111         fi
5112 done
5113 awkprg='{ print \$$fieldn }'
5114 echo "#include <\$wanted>" > foo\$\$.c
5115 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5116 $grep "^[       ]*#.*\$wanted" | \
5117 while read cline; do
5118         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5119         case "\$name" in
5120         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5121         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5122         *) exit 2;;
5123         esac;
5124 done;
5125 #
5126 # status = 0: grep returned 0 lines, case statement not executed
5127 # status = 1: headerfile found
5128 # status = 2: while loop executed, no headerfile found
5129 #
5130 status=\$?
5131 $rm -f foo\$\$.c;
5132 if test \$status -eq 1; then
5133         exit 0;
5134 fi
5135 exit 1
5136 EOF
5137 chmod +x findhdr
5138
5139 : define an alternate in-header-list? function
5140 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5141 cont=true; xxf="echo \"<\$1> found.\" >&4";
5142 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5143 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5144 esac;
5145 case $# in 4) instead=instead;; *) instead="at last";; esac;
5146 while $test "$cont"; do
5147         xxx=`./findhdr $1`
5148         var=$2; eval "was=\$$2";
5149         if $test "$xxx" && $test -r "$xxx";
5150         then eval $xxf;
5151         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5152                 cont="";
5153         else eval $xxnf;
5154         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5155         set $yyy; shift; shift; yyy=$@;
5156         case $# in 0) cont="";;
5157         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5158                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5159         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5160                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5161         esac;
5162 done;
5163 while $test "$yyy";
5164 do set $yyy; var=$2; eval "was=\$$2";
5165         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5166         set $yyy; shift; shift; yyy=$@;
5167 done'
5168
5169 : see if this is a malloc.h system
5170 set malloc.h i_malloc
5171 eval $inhdr
5172
5173 : see if stdlib is available
5174 set stdlib.h i_stdlib
5175 eval $inhdr
5176
5177 : determine which malloc to compile in
5178 echo " "
5179 case "$usemymalloc" in
5180 ''|[yY]*|true|$define)  dflt='y' ;;
5181 *)      dflt='n' ;;
5182 esac
5183 rp="Do you wish to attempt to use the malloc that comes with $package?"
5184 . ./myread
5185 usemymalloc="$ans"
5186 case "$ans" in
5187 y*|true)
5188         usemymalloc='y'
5189         mallocsrc='malloc.c'
5190         mallocobj="malloc$_o"
5191         d_mymalloc="$define"
5192         case "$libs" in
5193         *-lmalloc*)
5194                 : Remove malloc from list of libraries to use
5195                 echo "Removing unneeded -lmalloc from library list" >&4
5196                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5197                 shift
5198                 libs="$*"
5199                 echo "libs = $libs" >&4
5200                 ;;
5201         esac
5202         ;;
5203 *)
5204         usemymalloc='n'
5205         mallocsrc=''
5206         mallocobj=''
5207         d_mymalloc="$undef"
5208         ;;
5209 esac
5210
5211 : compute the return types of malloc and free
5212 echo " "
5213 $cat >malloc.c <<END
5214 #$i_malloc I_MALLOC
5215 #$i_stdlib I_STDLIB
5216 #include <stdio.h>
5217 #include <sys/types.h>
5218 #ifdef I_MALLOC
5219 #include <malloc.h>
5220 #endif
5221 #ifdef I_STDLIB
5222 #include <stdlib.h>
5223 #endif
5224 #ifdef TRY_MALLOC
5225 void *malloc();
5226 #endif
5227 #ifdef TRY_FREE
5228 void free();
5229 #endif
5230 END
5231 case "$malloctype" in
5232 '')
5233         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5234                 malloctype='void *'
5235         else
5236                 malloctype='char *'
5237         fi
5238         ;;
5239 esac
5240 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5241
5242 case "$freetype" in
5243 '')
5244         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5245                 freetype='void'
5246         else
5247                 freetype='int'
5248         fi
5249         ;;
5250 esac
5251 echo "Your system uses $freetype free(), it would seem." >&4
5252 $rm -f malloc.[co]
5253 $cat <<EOM
5254
5255 The installation process will also create a directory for
5256 vendor-supplied add-ons.  Vendors who supply perl with their system
5257 may find it convenient to place all vendor-supplied files in this
5258 directory rather than in the main distribution directory.  This will
5259 ease upgrades between binary-compatible maintenance versions of perl.
5260
5261 Of course you may also use these directories in whatever way you see
5262 fit.  For example, you might use them to access modules shared over a
5263 company-wide network.
5264
5265 The default answer should be fine for most people.
5266 This causes further questions about vendor add-ons to be skipped
5267 and no vendor-specific directories will be configured for perl.
5268
5269 EOM
5270 rp='Do you want to configure vendor-specific add-on directories?'
5271 case "$usevendorprefix" in
5272 define|true|[yY]*) dflt=y ;;
5273 *)      : User may have set vendorprefix directly on Configure command line.
5274         case "$vendorprefix" in
5275         ''|' ') dflt=n ;;
5276         *)      dflt=y ;;
5277         esac
5278         ;;
5279 esac
5280 . ./myread
5281 case "$ans" in
5282 [yY]*)  fn=d~+
5283         rp='Installation prefix to use for vendor-supplied add-ons?'
5284         case "$vendorprefix" in
5285         '') dflt='' ;;
5286         *)  dflt=$vendorprefix ;;
5287         esac
5288         . ./getfile
5289         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5290         oldvendorprefix=''
5291         case "$vendorprefix" in
5292         '') ;;
5293         *)      case "$ans" in
5294                 "$prefix") ;;
5295                 *) oldvendorprefix="$prefix";;
5296                 esac
5297                 ;;
5298         esac
5299         usevendorprefix="$define"
5300         vendorprefix="$ans"
5301         vendorprefixexp="$ansexp"
5302         ;;
5303 *)      usevendorprefix="$undef"
5304         vendorprefix=''
5305         vendorprefixexp=''
5306         ;;
5307 esac
5308
5309 case "$vendorprefix" in
5310 '')     d_vendorlib="$undef"
5311         vendorlib=''
5312         vendorlibexp=''
5313         ;;
5314 *)      d_vendorlib="$define"
5315         : determine where vendor-supplied modules go.
5316         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5317         case "$vendorlib" in
5318         '')
5319                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5320                 case "$installstyle" in
5321                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5322                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5323                 esac
5324                 ;;
5325         *)      dflt="$vendorlib"
5326                 ;;
5327         esac
5328         fn=d~+
5329         rp='Pathname for the vendor-supplied library files?'
5330         . ./getfile
5331         vendorlib="$ans"
5332         vendorlibexp="$ansexp"
5333         ;;
5334 esac
5335 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5336 : Change installation prefix, if necessary.
5337 if $test X"$prefix" != X"$installprefix"; then
5338         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5339 else
5340         installvendorlib="$vendorlibexp"
5341 fi
5342
5343 case "$vendorprefix" in
5344 '')     d_vendorarch="$undef"
5345         vendorarch=''
5346         vendorarchexp=''
5347         ;;
5348 *)      d_vendorarch="$define"
5349         : determine where vendor-supplied architecture-dependent libraries go.
5350         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5351         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5352         : vendorlib may have an optional trailing /share.
5353         case "$vendorarch" in
5354         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5355                 dflt="$dflt/$archname"
5356                 ;;
5357         *)      dflt="$vendorarch" ;;
5358         esac
5359         fn=d~+
5360         rp='Pathname for vendor-supplied architecture-dependent files?'
5361         . ./getfile
5362         vendorarch="$ans"
5363         vendorarchexp="$ansexp"
5364         ;;
5365 esac
5366 : Change installation prefix, if necessary.
5367 if $test X"$prefix" != X"$installprefix"; then
5368         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5369 else
5370         installvendorarch="$vendorarchexp"
5371 fi
5372
5373 : Cruising for prototypes
5374 echo " "
5375 echo "Checking out function prototypes..." >&4
5376 $cat >prototype.c <<'EOCP'
5377 int main(int argc, char *argv[]) {
5378         exit(0);}
5379 EOCP
5380 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5381         echo "Your C compiler appears to support function prototypes."
5382         val="$define"
5383 else
5384         echo "Your C compiler doesn't seem to understand function prototypes."
5385         val="$undef"
5386 fi
5387 set prototype
5388 eval $setvar
5389 $rm -f prototype*
5390
5391 case "$prototype" in
5392 "$define") ;;
5393 *)      ansi2knr='ansi2knr'
5394         echo " "
5395         cat <<EOM >&4
5396
5397 $me:  FATAL ERROR:
5398 This version of $package can only be compiled by a compiler that 
5399 understands function prototypes.  Unfortunately, your C compiler 
5400         $cc $ccflags
5401 doesn't seem to understand them.  Sorry about that.
5402
5403 If GNU cc is available for your system, perhaps you could try that instead.  
5404
5405 Eventually, we hope to support building Perl with pre-ANSI compilers.
5406 If you would like to help in that effort, please contact <perlbug@perl.org>.
5407
5408 Aborting Configure now.
5409 EOM
5410         exit 2
5411         ;;
5412 esac
5413
5414 : determine where public executables go
5415 echo " "
5416 set dflt bin bin
5417 eval $prefixit
5418 fn=d~
5419 rp='Pathname where the public executables will reside?'
5420 . ./getfile
5421 if $test "X$ansexp" != "X$binexp"; then
5422         installbin=''
5423 fi
5424 bin="$ans"
5425 binexp="$ansexp"
5426 : Change installation prefix, if necessary.
5427 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5428 if $test X"$prefix" != X"$installprefix"; then
5429         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5430 else
5431         installbin="$binexp"
5432 fi
5433
5434 : Find perl5.005 or later.
5435 echo "Looking for a previously installed perl5.005 or later... "
5436 case "$perl5" in
5437 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5438                 : Check if this perl is recent and can load a simple module
5439                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5440                         perl5=$tdir/perl
5441                         break;
5442                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5443                         perl5=$tdir/perl
5444                         break;
5445                 fi
5446         done
5447         ;;
5448 *)      perl5="$perl5"
5449         ;;
5450 esac
5451 case "$perl5" in
5452 '')     echo "None found.  That's ok.";;
5453 *)      echo "Using $perl5." ;;
5454 esac
5455
5456 $cat <<EOM
5457
5458 After $package is installed, you may wish to install various
5459 add-on modules and utilities.  Typically, these add-ons will
5460 be installed under $prefix with the rest
5461 of this package.  However, you may wish to install such add-ons
5462 elsewhere under a different prefix.
5463
5464 If you do not wish to put everything under a single prefix, that's
5465 ok.  You will be prompted for the individual locations; this siteprefix
5466 is only used to suggest the defaults.
5467
5468 The default should be fine for most people.
5469
5470 EOM
5471 fn=d~+
5472 rp='Installation prefix to use for add-on modules and utilities?'
5473 : XXX Here might be another good place for an installstyle setting.
5474 case "$siteprefix" in
5475 '') dflt=$prefix ;;
5476 *)  dflt=$siteprefix ;;
5477 esac
5478 . ./getfile
5479 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5480 oldsiteprefix=''
5481 case "$siteprefix" in
5482 '') ;;
5483 *)      case "$ans" in
5484         "$prefix") ;;
5485         *) oldsiteprefix="$prefix";;
5486         esac
5487         ;;
5488 esac
5489 siteprefix="$ans"
5490 siteprefixexp="$ansexp"
5491
5492 : determine where site specific libraries go.
5493 : Usual default is /usr/local/lib/perl5/site_perl/$version
5494 : The default "style" setting is made in installstyle.U
5495 : XXX No longer works with Prefixit stuff.
5496 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5497 case "$sitelib" in
5498 '') case "$installstyle" in
5499         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5500         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5501         esac
5502         ;;
5503 *)      dflt="$sitelib"
5504         ;;
5505 esac
5506 $cat <<EOM
5507
5508 The installation process will create a directory for
5509 site-specific extensions and modules.  Most users find it convenient
5510 to place all site-specific files in this directory rather than in the
5511 main distribution directory.
5512
5513 EOM
5514 fn=d~+
5515 rp='Pathname for the site-specific library files?'
5516 . ./getfile
5517 sitelib="$ans"
5518 sitelibexp="$ansexp"
5519 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5520 : Change installation prefix, if necessary.
5521 if $test X"$prefix" != X"$installprefix"; then
5522         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5523 else
5524         installsitelib="$sitelibexp"
5525 fi
5526
5527 : Determine list of previous versions to include in @INC
5528 $cat > getverlist <<EOPL
5529 #!$perl5 -w
5530 use File::Basename;
5531 \$api_versionstring = "$api_versionstring";
5532 \$version = "$version";
5533 \$stem = "$sitelib_stem";
5534 \$archname = "$archname";
5535 EOPL
5536         $cat >> getverlist <<'EOPL'
5537 # Can't have leading @ because metaconfig interprets it as a command!
5538 ;@inc_version_list=();
5539 # XXX Redo to do opendir/readdir? 
5540 if (-d $stem) {
5541     chdir($stem);
5542     ;@candidates = glob("5.*");
5543 }
5544 else {
5545     ;@candidates = ();
5546 }
5547
5548 # XXX ToDo:  These comparisons must be reworked when two-digit
5549 # subversions come along, so that 5.7.10 compares as greater than
5550 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5551 # widespread that we can use the built-in version vectors rather
5552 # than reinventing them here.  For 5.6.0, however, we must
5553 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5554 foreach $d (@candidates) {
5555     if ($d lt $version) {
5556         if ($d ge $api_versionstring) {
5557             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5558         }
5559         elsif ($d ge "5.005") {
5560             unshift(@inc_version_list, grep { -d } $d);
5561         }
5562     }
5563     else {
5564         # Skip newer version.  I.e. don't look in
5565         # 5.7.0 if we're installing 5.6.1.
5566     }
5567 }
5568
5569 if (@inc_version_list) {
5570     print join(' ', @inc_version_list);
5571 }
5572 else {
5573     # Blank space to preserve value for next Configure run.
5574     print " ";
5575 }
5576 EOPL
5577 chmod +x getverlist
5578 case "$inc_version_list" in
5579 '')     if test -x "$perl5"; then
5580                 dflt=`$perl5 getverlist`
5581         else
5582                 dflt='none'
5583         fi
5584         ;;
5585 $undef) dflt='none' ;;
5586 *)  dflt="$inc_version_list" ;;
5587 esac
5588 case "$dflt" in
5589 ''|' ') dflt=none ;;
5590 esac
5591 $cat <<'EOM'
5592
5593 In order to ease the process of upgrading, this version of perl 
5594 can be configured to use modules built and installed with earlier 
5595 versions of perl that were installed under $prefix.  Specify here
5596 the list of earlier versions that this version of perl should check.
5597 If Configure detected no earlier versions of perl installed under
5598 $prefix, then the list will be empty.  Answer 'none' to tell perl
5599 to not search earlier versions.
5600
5601 The default should almost always be sensible, so if you're not sure,
5602 just accept the default.
5603 EOM
5604
5605 rp='List of earlier versions to include in @INC?'
5606 . ./myread
5607 case "$ans" in
5608 [Nn]one|''|' ') inc_version_list=' ' ;;
5609 *) inc_version_list="$ans" ;;
5610 esac
5611 case "$inc_version_list" in
5612 ''|' ') 
5613         inc_version_list_init='0';;
5614 *)      inc_version_list_init=`echo $inc_version_list |
5615                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5616         ;;
5617 esac
5618 $rm -f getverlist
5619
5620 : determine whether to install perl also as /usr/bin/perl
5621
5622 echo " "
5623 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5624         $cat <<EOM
5625 Many scripts expect perl to be installed as /usr/bin/perl.
5626 I can install the perl you are about to compile also as /usr/bin/perl
5627 (in addition to $installbin/perl).
5628 EOM
5629         case "$installusrbinperl" in
5630         "$undef"|[nN]*) dflt='n';;
5631         *)              dflt='y';;
5632         esac
5633         rp="Do you want to install perl as /usr/bin/perl?"
5634         . ./myread
5635         case "$ans" in
5636         [yY]*)  val="$define";;
5637         *)      val="$undef" ;;
5638         esac
5639 else
5640         val="$undef"
5641 fi
5642 set installusrbinperl
5643 eval $setvar
5644
5645 echo " "
5646 echo "Checking for GNU C Library..." >&4
5647 cat >gnulibc.c <<EOM
5648 #include <stdio.h>
5649 int main()
5650 {
5651 #ifdef __GLIBC__
5652     exit(0);
5653 #else
5654     exit(1);
5655 #endif
5656 }
5657 EOM
5658 set gnulibc
5659 if eval $compile_ok && ./gnulibc; then
5660         val="$define"
5661         echo "You are using the GNU C Library"
5662 else
5663         val="$undef"
5664         echo "You are not using the GNU C Library"
5665 fi
5666 $rm -f gnulibc*
5667 set d_gnulibc
5668 eval $setvar
5669
5670 : see if nm is to be used to determine whether a symbol is defined or not
5671 case "$usenm" in
5672 '')
5673         dflt=''
5674         case "$d_gnulibc" in
5675         "$define")
5676                 echo " "
5677                 echo "nm probably won't work on the GNU C Library." >&4
5678                 dflt=n
5679                 ;;
5680         esac
5681         case "$dflt" in
5682         '') 
5683                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5684                         echo " "
5685                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5686                         echo "'nm' won't be sufficient on this sytem." >&4
5687                         dflt=n
5688                 fi
5689                 ;;
5690         esac
5691         case "$dflt" in
5692         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5693                 if $test $dflt -gt 20; then
5694                         dflt=y
5695                 else
5696                         dflt=n
5697                 fi
5698                 ;;
5699         esac
5700         ;;
5701 *)
5702         case "$usenm" in
5703         true|$define) dflt=y;;
5704         *) dflt=n;;
5705         esac
5706         ;;
5707 esac
5708 $cat <<EOM
5709
5710 I can use $nm to extract the symbols from your C libraries. This
5711 is a time consuming task which may generate huge output on the disk (up
5712 to 3 megabytes) but that should make the symbols extraction faster. The
5713 alternative is to skip the 'nm' extraction part and to compile a small
5714 test program instead to determine whether each symbol is present. If
5715 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5716 this may be the best solution.
5717
5718 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5719
5720 EOM
5721 rp="Shall I use $nm to extract C symbols from the libraries?"
5722 . ./myread
5723 case "$ans" in
5724 [Nn]*) usenm=false;;
5725 *) usenm=true;;
5726 esac
5727
5728 runnm=$usenm
5729 case "$reuseval" in
5730 true) runnm=false;;
5731 esac
5732
5733 : nm options which may be necessary
5734 case "$nm_opt" in
5735 '') if $test -f /mach_boot; then
5736                 nm_opt=''       # Mach
5737         elif $test -d /usr/ccs/lib; then
5738                 nm_opt='-p'     # Solaris (and SunOS?)
5739         elif $test -f /dgux; then
5740                 nm_opt='-p'     # DG-UX
5741         elif $test -f /lib64/rld; then
5742                 nm_opt='-p'     # 64-bit Irix
5743         else
5744                 nm_opt=''
5745         fi;;
5746 esac
5747
5748 : nm options which may be necessary for shared libraries but illegal
5749 : for archive libraries.  Thank you, Linux.
5750 case "$nm_so_opt" in
5751 '')     case "$myuname" in
5752         *linux*)
5753                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5754                         nm_so_opt='--dynamic'
5755                 fi
5756                 ;;
5757         esac
5758         ;;
5759 esac
5760
5761 case "$runnm" in
5762 true)
5763 : get list of predefined functions in a handy place
5764 echo " "
5765 case "$libc" in
5766 '') libc=unknown
5767         case "$libs" in
5768         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5769         esac
5770         ;;
5771 esac
5772 libnames='';
5773 case "$libs" in
5774 '') ;;
5775 *)  for thislib in $libs; do
5776         case "$thislib" in
5777         -lc|-lc_s)
5778                 : Handle C library specially below.
5779                 ;;
5780         -l*)
5781                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5782                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5783                         :
5784                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5785                         :
5786                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5787                         :
5788                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5789                         :
5790                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5791                         :
5792                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5793                         :
5794                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5795                         :
5796                 else
5797                         try=''
5798                 fi
5799                 libnames="$libnames $try"
5800                 ;;
5801         *) libnames="$libnames $thislib" ;;
5802         esac
5803         done
5804         ;;
5805 esac
5806 xxx=normal
5807 case "$libc" in
5808 unknown)
5809         set /lib/libc.$so
5810         for xxx in $libpth; do
5811                 $test -r $1 || set $xxx/libc.$so
5812                 : The messy sed command sorts on library version numbers.
5813                 $test -r $1 || \
5814                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5815                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5816                                 h
5817                                 s/[0-9][0-9]*/0000&/g
5818                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5819                                 G
5820                                 s/\n/ /' | \
5821                          sort | $sed -e 's/^.* //'`
5822                 eval set \$$#
5823         done
5824         $test -r $1 || set /usr/ccs/lib/libc.$so
5825         $test -r $1 || set /lib/libsys_s$_a
5826         ;;
5827 *)
5828         set blurfl
5829         ;;
5830 esac
5831 if $test -r "$1"; then
5832         echo "Your (shared) C library seems to be in $1."
5833         libc="$1"
5834 elif $test -r /lib/libc && $test -r /lib/clib; then
5835         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5836         xxx=apollo
5837         libc='/lib/clib /lib/libc'
5838         if $test -r /lib/syslib; then
5839                 echo "(Your math library is in /lib/syslib.)"
5840                 libc="$libc /lib/syslib"
5841         fi
5842 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5843         echo "Your C library seems to be in $libc, as you said before."
5844 elif $test -r $incpath/usr/lib/libc$_a; then
5845         libc=$incpath/usr/lib/libc$_a;
5846         echo "Your C library seems to be in $libc.  That's fine."
5847 elif $test -r /lib/libc$_a; then
5848         libc=/lib/libc$_a;
5849         echo "Your C library seems to be in $libc.  You're normal."
5850 else
5851         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5852                 :
5853         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5854                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5855         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5856                 :
5857         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5858                 :
5859         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5860                 :
5861         else
5862                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5863         fi
5864         if $test -r "$tans"; then
5865                 echo "Your C library seems to be in $tans, of all places."
5866                 libc=$tans
5867         else
5868                 libc='blurfl'
5869         fi
5870 fi
5871 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5872         dflt="$libc"
5873         cat <<EOM
5874
5875 If the guess above is wrong (which it might be if you're using a strange
5876 compiler, or your machine supports multiple models), you can override it here.
5877
5878 EOM
5879 else
5880         dflt=''
5881         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5882         cat >&4 <<EOM
5883 I can't seem to find your C library.  I've looked in the following places:
5884
5885 EOM
5886         $sed 's/^/      /' libpath
5887         cat <<EOM
5888
5889 None of these seems to contain your C library. I need to get its name...
5890
5891 EOM
5892 fi
5893 fn=f
5894 rp='Where is your C library?'
5895 . ./getfile
5896 libc="$ans"
5897
5898 echo " "
5899 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5900 set X `cat libnames`
5901 shift
5902 xxx=files
5903 case $# in 1) xxx=file; esac
5904 echo "Extracting names from the following $xxx for later perusal:" >&4
5905 echo " "
5906 $sed 's/^/      /' libnames >&4
5907 echo " "
5908 $echo $n "This may take a while...$c" >&4
5909
5910 for file in $*; do
5911         case $file in
5912         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5913         *) $nm $nm_opt $file 2>/dev/null;;
5914         esac
5915 done >libc.tmp
5916
5917 $echo $n ".$c"
5918 $grep fprintf libc.tmp > libc.ptf
5919 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5920 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5921 xxx='[ADTSIW]'
5922 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5923         eval $xscan;\
5924         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5925                 eval $xrun
5926 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5927         eval $xscan;\
5928         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5929                 eval $xrun
5930 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5931         eval $xscan;\
5932         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5933                 eval $xrun
5934 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5935         eval $xscan;\
5936         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5937                 eval $xrun
5938 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5939         eval $xscan;\
5940         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5941                 eval $xrun
5942 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5943         eval $xscan;\
5944         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5945                 eval $xrun
5946 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5947                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5948         eval $xscan;\
5949         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5950                 eval $xrun
5951 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5952         eval $xscan;\
5953         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5954                 eval $xrun
5955 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5956         eval $xscan;\
5957         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5958                 eval $xrun
5959 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5960         eval $xscan;\
5961         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5962                 eval $xrun
5963 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5964         eval $xscan;\
5965         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5966                 eval $xrun
5967 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5968         eval $xscan;\
5969         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5970                 eval $xrun
5971 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5972         eval $xscan;\
5973         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5974                 eval $xrun
5975 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5976         eval $xscan;\
5977         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5978                 eval $xrun
5979 else
5980         $nm -p $* 2>/dev/null >libc.tmp
5981         $grep fprintf libc.tmp > libc.ptf
5982         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5983                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5984         then
5985                 nm_opt='-p'
5986                 eval $xrun
5987         else
5988                 echo " "
5989                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5990                 com=''
5991                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5992                         for thisname in $libnames $libc; do
5993                                 $ar t $thisname >>libc.tmp
5994                         done
5995                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5996                         echo "Ok." >&4
5997                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5998                         # Repeat libc to extract forwarders to DLL entries too
5999                         for thisname in $libnames $libc; do
6000                                 $ar tv $thisname >>libc.tmp
6001                                 # Revision 50 of EMX has bug in $ar.
6002                                 # it will not extract forwarders to DLL entries
6003                                 # Use emximp which will extract exactly them.
6004                                 emximp -o tmp.imp $thisname \
6005                                     2>/dev/null && \
6006                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6007                                     < tmp.imp >>libc.tmp
6008                                 $rm tmp.imp
6009                         done
6010                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6011                         echo "Ok." >&4
6012                 else
6013                         echo "$ar didn't seem to work right." >&4
6014                         echo "Maybe this is a Cray...trying bld instead..." >&4
6015                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6016                         then
6017                                 for thisname in $libnames; do
6018                                         bld t $libnames | \
6019                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6020                                         $ar t $thisname >>libc.tmp
6021                                 done
6022                                 echo "Ok." >&4
6023                         else
6024                                 echo "That didn't work either.  Giving up." >&4
6025                                 exit 1
6026                         fi
6027                 fi
6028         fi
6029 fi
6030 nm_extract="$com"
6031 if $test -f /lib/syscalls.exp; then
6032         echo " "
6033         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6034         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6035 fi
6036 ;;
6037 esac
6038 $rm -f libnames libpath
6039
6040 : see if dld is available
6041 set dld.h i_dld
6042 eval $inhdr
6043
6044 : is a C symbol defined?
6045 csym='tlook=$1;
6046 case "$3" in
6047 -v) tf=libc.tmp; tc=""; tdc="";;
6048 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6049 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6050 esac;
6051 tx=yes;
6052 case "$reuseval-$4" in
6053 true-) ;;
6054 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6055 esac;
6056 case "$tx" in
6057 yes)
6058         case "$runnm" in
6059         true)
6060                 if $contains $tlook $tf >/dev/null 2>&1;
6061                 then tval=true;
6062                 else tval=false;
6063                 fi;;
6064         *)
6065                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6066                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6067                 then tval=true;
6068                 else tval=false;
6069                 fi;
6070                 $rm -f t t.c;;
6071         esac;;
6072 *)
6073         case "$tval" in
6074         $define) tval=true;;
6075         *) tval=false;;
6076         esac;;
6077 esac;
6078 eval "$2=$tval"'
6079
6080 : define an is-in-libc? function
6081 inlibc='echo " "; td=$define; tu=$undef;
6082 sym=$1; var=$2; eval "was=\$$2";
6083 tx=yes;
6084 case "$reuseval$was" in
6085 true) ;;
6086 true*) tx=no;;
6087 esac;
6088 case "$tx" in
6089 yes)
6090         set $sym tres -f;
6091         eval $csym;
6092         case "$tres" in
6093         true)
6094                 echo "$sym() found." >&4;
6095                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6096         *)
6097                 echo "$sym() NOT found." >&4;
6098                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6099         esac;;
6100 *)
6101         case "$was" in
6102         $define) echo "$sym() found." >&4;;
6103         *) echo "$sym() NOT found." >&4;;
6104         esac;;
6105 esac'
6106
6107 : see if dlopen exists
6108 xxx_runnm="$runnm"
6109 runnm=false
6110 set dlopen d_dlopen
6111 eval $inlibc
6112 runnm="$xxx_runnm"
6113
6114 : determine which dynamic loading, if any, to compile in
6115 echo " "
6116 dldir="ext/DynaLoader"
6117 case "$usedl" in
6118 $define|y|true)
6119         dflt='y'
6120         usedl="$define"
6121         ;;
6122 $undef|n|false)
6123         dflt='n'
6124         usedl="$undef"
6125         ;;
6126 *) 
6127         dflt='n'
6128         case "$d_dlopen" in
6129             $define) dflt='y' ;;
6130         esac
6131         case "$i_dld" in
6132             $define) dflt='y' ;;
6133         esac
6134         : Does a dl_xxx.xs file exist for this operating system
6135         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6136         ;;
6137 esac
6138 rp="Do you wish to use dynamic loading?"
6139 . ./myread
6140 usedl="$ans"
6141 case "$ans" in
6142 y*) usedl="$define"
6143         case "$dlsrc" in
6144         '')
6145                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6146                         dflt="$dldir/dl_${osname}.xs"
6147                 elif $test "$d_dlopen" = "$define" ; then
6148                         dflt="$dldir/dl_dlopen.xs"
6149                 elif $test "$i_dld" = "$define" ; then
6150                         dflt="$dldir/dl_dld.xs"
6151                 else
6152                         dflt=''
6153                 fi
6154                 ;;
6155         *)      dflt="$dldir/$dlsrc"
6156                 ;;
6157         esac
6158     echo "The following dynamic loading files are available:"
6159         : Can not go over to $dldir because getfile has path hard-coded in.
6160         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6161         rp="Source file to use for dynamic loading"
6162         fn="fne"
6163         gfpth="$src"
6164         . ./getfile
6165         usedl="$define"
6166         : emulate basename
6167         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6168
6169         $cat << EOM
6170
6171 Some systems may require passing special flags to $cc -c to
6172 compile modules that will be used to create a shared library.
6173 To use no flags, say "none".
6174
6175 EOM
6176     case "$cccdlflags" in
6177     '') case "$gccversion" in
6178                 '') case "$osname" in
6179                         hpux)   dflt='+z' ;;
6180                         next)   dflt='none' ;;
6181                         irix*)  dflt='-KPIC' ;;
6182                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6183                         sunos)  dflt='-pic' ;;
6184                         *)      dflt='none' ;;
6185                     esac
6186                         ;;
6187                 *)  case "$osname" in
6188                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6189                         *)      dflt='-fpic' ;;
6190                     esac ;;
6191             esac ;;
6192         ' ') dflt='none' ;;
6193     *)  dflt="$cccdlflags" ;;
6194     esac
6195     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6196     . ./myread
6197     case "$ans" in
6198     none) cccdlflags=' ' ;;
6199     *) cccdlflags="$ans" ;;
6200     esac
6201
6202     cat << EOM
6203
6204 Some systems use ld to create libraries that can be dynamically loaded,
6205 while other systems (such as those using ELF) use $cc.
6206
6207 EOM
6208         case "$ld" in
6209         '')     $cat >try.c <<'EOM'
6210 /* Test for whether ELF binaries are produced */
6211 #include <fcntl.h>
6212 #include <stdlib.h>
6213 int main() {
6214         char b[4];
6215         int i = open("a.out",O_RDONLY);
6216         if(i == -1) 
6217                 exit(1); /* fail */
6218         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6219                 exit(0); /* succeed (yes, it's ELF) */
6220         else
6221                 exit(1); /* fail */
6222 }
6223 EOM
6224                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6225                         cat <<EOM
6226 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6227 EOM
6228                         dflt="$cc"
6229                 else
6230                         echo "I'll use ld to build dynamic libraries."
6231                         dflt='ld'
6232                 fi
6233                 rm -f try.c a.out
6234                 ;;
6235         *)      dflt="$ld"
6236                 ;;
6237         esac
6238
6239     rp="What command should be used to create dynamic libraries?"
6240     . ./myread
6241         ld="$ans"
6242
6243     cat << EOM
6244
6245 Some systems may require passing special flags to $ld to create a
6246 library that can be dynamically loaded.  If your ld flags include
6247 -L/other/path options to locate libraries outside your loader's normal
6248 search path, you may need to specify those -L options here as well.  To
6249 use no flags, say "none".
6250
6251 EOM
6252     case "$lddlflags" in
6253     '') case "$osname" in
6254                         beos) dflt='-nostart' ;;
6255                         hpux) dflt='-b';
6256                               case "$gccversion" in
6257                               '') dflt="$dflt +vnocompatwarnings" ;;
6258                               esac
6259                               ;;        
6260                         linux|irix*)    dflt='-shared' ;;
6261                         next)  dflt='none' ;;
6262                         solaris) dflt='-G' ;;
6263                         sunos) dflt='-assert nodefinitions' ;;
6264                         svr4*|esix*) dflt="-G $ldflags" ;;
6265                 *)     dflt='none' ;;
6266                         esac
6267                         ;;
6268     *) dflt="$lddlflags" ;;
6269     esac
6270
6271         : Try to guess additional flags to pick up local libraries.
6272         : Be careful not to append to a plain 'none'
6273         case "$dflt" in
6274         none) dflt='' ;;
6275         esac
6276         for thisflag in $ldflags; do
6277                 case "$thisflag" in
6278                 -L*)
6279                         case " $dflt " in
6280                         *" $thisflag "*) ;;
6281                         *) dflt="$dflt $thisflag" ;;
6282                         esac
6283                         ;;
6284                 esac
6285         done
6286
6287         case "$dflt" in
6288         ''|' ') dflt='none' ;;
6289         esac
6290
6291     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6292     . ./myread
6293     case "$ans" in
6294     none) lddlflags=' ' ;;
6295     *) lddlflags="$ans" ;;
6296     esac
6297
6298         cat <<EOM
6299
6300 Some systems may require passing special flags to $cc to indicate that
6301 the resulting executable will use dynamic linking.  To use no flags,
6302 say "none".
6303
6304 EOM
6305     case "$ccdlflags" in
6306     '') case "$osname" in
6307                 hpux)   dflt='-Wl,-E' ;;
6308                 linux)  dflt='-rdynamic' ;;
6309                 next)   dflt='none' ;;
6310                 sunos)  dflt='none' ;;
6311                 *)      dflt='none' ;;
6312             esac ;;
6313     ' ')  dflt='none' ;;
6314     *)  dflt="$ccdlflags" ;;
6315     esac
6316     rp="Any special flags to pass to $cc to use dynamic linking?"
6317     . ./myread
6318     case "$ans" in
6319     none) ccdlflags=' ' ;;
6320     *) ccdlflags="$ans" ;;
6321     esac
6322     ;;
6323 *)  usedl="$undef"
6324         ld='ld'
6325     dlsrc='dl_none.xs'
6326     lddlflags=''
6327     ccdlflags=''
6328     ;;
6329 esac
6330
6331 also=''
6332 case "$usedl" in
6333 $undef)
6334         # No dynamic loading being used, so don't bother even to prompt.
6335         useshrplib='false'
6336         ;;
6337 *)      case "$useshrplib" in
6338         '')     case "$osname" in
6339                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6340                         dflt=y
6341                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6342                         ;;
6343                 next*)
6344                         case "$osvers" in
6345                         4*)     dflt=y
6346                                 also='Building a shared libperl is needed for MAB support.'
6347                                 ;;
6348                         *)      dflt=n
6349                                 ;;
6350                         esac
6351                         ;;
6352                 *)      dflt=n
6353                         ;;
6354                 esac
6355                 ;;
6356         $define|true|[Yy]*)
6357                 dflt=y
6358                 ;;
6359         *)      dflt=n
6360                 ;;
6361         esac
6362         $cat << EOM
6363
6364 The perl executable is normally obtained by linking perlmain.c with
6365 libperl${_a}, any static extensions (usually just DynaLoader), and
6366 any other libraries needed on this system (such as -lm, etc.).  Since
6367 your system supports dynamic loading, it is probably possible to build
6368 a shared libperl.$so.  If you will have more than one executable linked
6369 to libperl.$so, this will significantly reduce the size of each
6370 executable, but it may have a noticeable affect on performance.  The
6371 default is probably sensible for your system.
6372 $also
6373
6374 EOM
6375         rp="Build a shared libperl.$so (y/n)"
6376         . ./myread
6377         case "$ans" in
6378         true|$define|[Yy]*)
6379                 useshrplib='true'  ;;
6380         *)      useshrplib='false' ;;
6381         esac
6382         ;;
6383 esac
6384
6385 case "$useshrplib" in
6386 true)
6387         case "$libperl" in
6388         '')
6389                 # Figure out a good name for libperl.so.  Since it gets stored in
6390                 # a version-specific architecture-dependent library, the version
6391                 # number isn't really that important, except for making cc/ld happy.
6392                 #
6393                 # A name such as libperl.so.3.1
6394                 majmin="libperl.$so.$patchlevel.$subversion"
6395                 # A name such as libperl.so.301
6396                 majonly=`echo $patchlevel $subversion |
6397                         $awk '{printf "%d%02d", $1, $2}'`
6398                 majonly=libperl.$so.$majonly
6399                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6400                 # rely on figuring it out from the naming of libc.
6401                 case "${osname}${osvers}" in
6402                 next4*)
6403                         dflt=libperl.5.$so
6404                         # XXX How handle the --version stuff for MAB?
6405                         ;;
6406                 linux*)  # ld won't link with a bare -lperl otherwise.
6407                         dflt=libperl.$so
6408                         ;;
6409                 cygwin*) # include version
6410                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6411                         ;;
6412                 *)      # Try to guess based on whether libc has major.minor.
6413                         case "$libc" in
6414                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6415                         *libc.$so.[0-9]*) dflt=$majonly ;;
6416                         *)      dflt=libperl.$so ;;
6417                         esac
6418                         ;;
6419                 esac
6420                 ;;
6421         *)      dflt=$libperl
6422                 ;;
6423         esac
6424         cat << EOM
6425
6426 I need to select a good name for the shared libperl.  If your system uses
6427 library names with major and minor numbers, then you might want something
6428 like $majmin.  Alternatively, if your system uses a single version
6429 number for shared libraries, then you might want to use $majonly.
6430 Or, your system might be quite happy with a simple libperl.$so.
6431
6432 Since the shared libperl will get installed into a version-specific
6433 architecture-dependent directory, the version number of the shared perl
6434 library probably isn't important, so the default should be o.k.
6435
6436 EOM
6437         rp='What name do you want to give to the shared libperl?'
6438         . ./myread
6439         libperl=$ans
6440         echo "Ok, I'll use $libperl"
6441         ;;
6442 *)
6443         libperl="libperl${_a}"
6444         ;;
6445 esac
6446
6447 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6448 case "$shrpdir" in
6449 '') ;;
6450 *)      $cat >&4 <<EOM
6451 WARNING:  Use of the shrpdir variable for the installation location of
6452 the shared $libperl is not supported.  It was never documented and
6453 will not work in this version.  Let me (perlbug@perl.com)
6454 know of any problems this may cause.
6455
6456 EOM
6457         case "$shrpdir" in
6458         "$archlibexp/CORE")
6459                 $cat >&4 <<EOM
6460 But your current setting of $shrpdir is
6461 the default anyway, so it's harmless.
6462 EOM
6463                 ;;
6464         *)
6465                 $cat >&4 <<EOM
6466 Further, your current attempted setting of $shrpdir
6467 conflicts with the value of $archlibexp/CORE
6468 that installperl will use.
6469 EOM
6470                 ;;
6471         esac
6472         ;;
6473 esac
6474
6475 # How will the perl executable find the installed shared $libperl?
6476 # Add $xxx to ccdlflags.
6477 # If we can't figure out a command-line option, use $shrpenv to
6478 # set env LD_RUN_PATH.  The main perl makefile uses this.
6479 shrpdir=$archlibexp/CORE
6480 xxx=''
6481 tmp_shrpenv=''
6482 if "$useshrplib"; then
6483     case "$osname" in 
6484         aix)
6485                 # We'll set it in Makefile.SH...
6486                 ;;
6487         solaris|netbsd)
6488                 xxx="-R $shrpdir"
6489                 ;;
6490         freebsd)
6491                 xxx="-Wl,-R$shrpdir"
6492                 ;;
6493         linux|irix*|dec_osf)
6494                 xxx="-Wl,-rpath,$shrpdir"
6495                 ;;
6496         next)
6497                 # next doesn't like the default...
6498                 ;;
6499         beos)
6500                 # beos doesn't like the default, either.
6501                 ;;
6502         hpux*)
6503                 # hpux doesn't like the default, either.
6504                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6505                 ;;
6506         *)
6507                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6508                 ;;
6509         esac
6510         case "$xxx" in
6511         '') ;;
6512         *)      
6513                 # Only add $xxx if it isn't already in ccdlflags.
6514                 case " $ccdlflags " in
6515                 *" $xxx "*)     ;;
6516                 *)      ccdlflags="$ccdlflags $xxx"
6517                         cat <<EOM >&4
6518
6519 Adding $xxx to the flags
6520 passed to $ld so that the perl executable will find the 
6521 installed shared $libperl.
6522
6523 EOM
6524                         ;;
6525                 esac
6526                 ;;
6527         esac
6528 fi
6529 # Fix ccdlflags in AIX for building external extensions.
6530 # (For building Perl itself bare -bE:perl.exp is needed,
6531 #  Makefile.SH takes care of this.)
6532 case "$osname" in
6533 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6534 esac
6535 # Respect a hint or command-line value.
6536 case "$shrpenv" in
6537 '') shrpenv="$tmp_shrpenv" ;;
6538 esac
6539 case "$ldlibpthname" in
6540 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6541 none)   ldlibpthname='' ;;
6542 esac
6543
6544 : determine where manual pages go
6545 set man1dir man1dir none
6546 eval $prefixit
6547 $cat <<EOM
6548
6549 $spackage has manual pages available in source form.
6550 EOM
6551 case "$nroff" in
6552 nroff)
6553         echo "However, you don't have nroff, so they're probably useless to you."
6554         case "$man1dir" in
6555         '') man1dir="none";;
6556         esac;;
6557 esac
6558 echo "If you don't want the manual sources installed, answer 'none'."
6559 case "$man1dir" in
6560 ' ') dflt=none
6561         ;;
6562 '')
6563         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6564         lookpath="$lookpath $prefixexp/man/p_man/man1"
6565         lookpath="$lookpath $prefixexp/man/u_man/man1"
6566         lookpath="$lookpath $prefixexp/man/man.1"
6567         case "$sysman" in
6568         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6569         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6570         esac
6571         set dflt
6572         eval $prefixup
6573         ;;
6574 *)  dflt="$man1dir"
6575         ;;
6576 esac
6577 echo " "
6578 fn=dn+~
6579 rp="Where do the main $spackage manual pages (source) go?"
6580 . ./getfile
6581 if $test "X$man1direxp" != "X$ansexp"; then
6582         installman1dir=''
6583 fi
6584 man1dir="$ans"
6585 man1direxp="$ansexp"
6586 case "$man1dir" in
6587 '')     man1dir=' '
6588         installman1dir='';;
6589 esac
6590
6591 : Change installation prefix, if necessary.
6592 if $test X"$prefix" != X"$installprefix"; then
6593         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6594 else
6595         installman1dir="$man1direxp"
6596 fi
6597
6598 : What suffix to use on installed man pages
6599
6600 case "$man1dir" in
6601 ' ')
6602         man1ext='0'
6603         ;;
6604 *)
6605         rp="What suffix should be used for the main $spackage man pages?"
6606         case "$man1ext" in
6607         '')     case "$man1dir" in
6608                 *1)  dflt=1 ;;
6609                 *1p) dflt=1p ;;
6610                 *1pm) dflt=1pm ;;
6611                 *l) dflt=l;;
6612                 *n) dflt=n;;
6613                 *o) dflt=o;;
6614                 *p) dflt=p;;
6615                 *C) dflt=C;;
6616                 *L) dflt=L;;
6617                 *L1) dflt=L1;;
6618                 *) dflt=1;;
6619                 esac
6620                 ;;
6621         *)      dflt="$man1ext";;
6622         esac
6623         . ./myread
6624         man1ext="$ans"
6625         ;;
6626 esac
6627
6628 : see if we can have long filenames
6629 echo " "
6630 first=123456789abcdef
6631 $rm -f $first
6632 if (echo hi >$first) 2>/dev/null; then
6633         if $test -f 123456789abcde; then
6634                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6635                 val="$undef"
6636         else
6637                 echo 'You can have filenames longer than 14 characters.'>&4
6638                 val="$define"
6639         fi
6640 else
6641         $cat <<'EOM'
6642 You can't have filenames longer than 14 chars.
6643 You can't even think about them!
6644 EOM
6645         val="$undef"
6646 fi 
6647 set d_flexfnam
6648 eval $setvar
6649 $rm -rf 123456789abcde*
6650
6651 : determine where library module manual pages go
6652 set man3dir man3dir none
6653 eval $prefixit
6654 $cat <<EOM
6655
6656 $spackage has manual pages for many of the library modules.
6657 EOM
6658
6659 case "$nroff" in
6660 nroff)
6661         $cat <<'EOM'
6662 However, you don't have nroff, so they're probably useless to you.
6663 EOM
6664         case "$man3dir" in
6665         '') man3dir="none";;
6666         esac;;
6667 esac
6668
6669 case "$d_flexfnam" in
6670 undef)
6671         $cat <<'EOM'
6672 However, your system can't handle the long file names like File::Basename.3. 
6673 EOM
6674         case "$man3dir" in
6675         '') man3dir="none";;
6676         esac;;
6677 esac
6678
6679 echo "If you don't want the manual sources installed, answer 'none'."
6680 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6681 case "$man3dir" in
6682 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6683         if $test -d "$privlib/man/man3"; then
6684                 cat <<EOM >&4
6685
6686 WARNING:  Previous versions of perl installed man3 pages into
6687 $privlib/man/man3.  This version will suggest a 
6688 new default of $dflt.  
6689 EOM
6690                 tdflt=$dflt
6691                 dflt='n'
6692                 rp='Do you wish to preserve the old behavior?(y/n)'
6693                 . ./myread
6694                 case "$ans" in
6695                 y*) dflt="$privlib/man/man3" ;;
6696                 *)  dflt=$tdflt ;;
6697                 esac
6698     fi
6699         ;;
6700 *)      dflt="$man3dir" ;;
6701 esac
6702 case "$dflt" in
6703 ' ') dflt=none ;;
6704 esac
6705 echo " "
6706 fn=dn+~
6707 rp="Where do the $package library man pages (source) go?"
6708 . ./getfile
6709 man3dir="$ans"
6710 man3direxp="$ansexp"
6711 case "$man3dir" in
6712 '')     man3dir=' '
6713         installman3dir='';;
6714 esac
6715
6716 : Change installation prefix, if necessary.
6717 if $test X"$prefix" != X"$installprefix"; then
6718         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6719 else
6720         installman3dir="$man3direxp"
6721 fi
6722
6723 : What suffix to use on installed man pages
6724 case "$man3dir" in
6725 ' ')
6726         man3ext='0'
6727         ;;
6728 *)
6729         rp="What suffix should be used for the $package library man pages?"
6730         case "$man3ext" in
6731         '')     case "$man3dir" in
6732                 *3)  dflt=3 ;;
6733                 *3p) dflt=3p ;;
6734                 *3pm) dflt=3pm ;;
6735                 *l) dflt=l;;
6736                 *n) dflt=n;;
6737                 *o) dflt=o;;
6738                 *p) dflt=p;;
6739                 *C) dflt=C;;
6740                 *L) dflt=L;;
6741                 *L3) dflt=L3;;
6742                 *) dflt=3;;
6743                 esac
6744                 ;;
6745         *)      dflt="$man3ext";;
6746         esac
6747         . ./myread
6748         man3ext="$ans"
6749         ;;
6750 esac
6751
6752 : see if we have to deal with yellow pages, now NIS.
6753 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6754         if $test -f /usr/etc/nibindd; then
6755                 echo " "
6756                 echo "I'm fairly confident you're on a NeXT."
6757                 echo " "
6758                 rp='Do you get the hosts file via NetInfo?'
6759                 dflt=y
6760                 case "$hostcat" in
6761                 nidump*) ;;
6762                 '') ;;
6763                 *) dflt=n;;
6764                 esac
6765                 . ./myread
6766                 case "$ans" in
6767                 y*) hostcat='nidump hosts .';;
6768                 *)      case "$hostcat" in
6769                         nidump*) hostcat='';;
6770                         esac
6771                         ;;
6772                 esac
6773         fi
6774         case "$hostcat" in
6775         nidump*) ;;
6776         *)
6777                 case "$hostcat" in
6778                 *ypcat*) dflt=y;;
6779                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6780                                 dflt=y
6781                         else
6782                                 dflt=n
6783                         fi;;
6784                 *) dflt=n;;
6785                 esac
6786                 echo " "
6787                 rp='Are you getting the hosts file via yellow pages?'
6788                 . ./myread
6789                 case "$ans" in
6790                 y*) hostcat='ypcat hosts';;
6791                 *) hostcat='cat /etc/hosts';;
6792                 esac
6793                 ;;
6794         esac
6795 fi
6796 case "$hostcat" in
6797 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6798 esac
6799 case "$groupcat" in
6800 '') test -f /etc/group && groupcat='cat /etc/group';;
6801 esac
6802 case "$passcat" in
6803 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6804 esac
6805
6806 : now get the host name
6807 echo " "
6808 echo "Figuring out host name..." >&4
6809 case "$myhostname" in
6810 '') cont=true
6811         echo 'Maybe "hostname" will work...'
6812         if tans=`sh -c hostname 2>&1` ; then
6813                 myhostname=$tans
6814                 phostname=hostname
6815                 cont=''
6816         fi
6817         ;;
6818 *) cont='';;
6819 esac
6820 if $test "$cont"; then
6821         if ./xenix; then
6822                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6823                 if tans=`cat /etc/systemid 2>&1` ; then
6824                         myhostname=$tans
6825                         phostname='cat /etc/systemid'
6826                         echo "Whadyaknow.  Xenix always was a bit strange..."
6827                         cont=''
6828                 fi
6829         elif $test -r /etc/systemid; then
6830                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6831         fi
6832 fi
6833 if $test "$cont"; then
6834         echo 'No, maybe "uuname -l" will work...'
6835         if tans=`sh -c 'uuname -l' 2>&1` ; then
6836                 myhostname=$tans
6837                 phostname='uuname -l'
6838         else
6839                 echo 'Strange.  Maybe "uname -n" will work...'
6840                 if tans=`sh -c 'uname -n' 2>&1` ; then
6841                         myhostname=$tans
6842                         phostname='uname -n'
6843                 else
6844                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6845                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6846                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6847                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6848                         else
6849                                 case "$myhostname" in
6850                                 '') echo "Does this machine have an identity crisis or something?"
6851                                         phostname='';;
6852                                 *)
6853                                         echo "Well, you said $myhostname before..."
6854                                         phostname='echo $myhostname';;
6855                                 esac
6856                         fi
6857                 fi
6858         fi
6859 fi
6860 : you do not want to know about this
6861 set $myhostname
6862 myhostname=$1
6863
6864 : verify guess
6865 if $test "$myhostname" ; then
6866         dflt=y
6867         rp='Your host name appears to be "'$myhostname'".'" Right?"
6868         . ./myread
6869         case "$ans" in
6870         y*) ;;
6871         *) myhostname='';;
6872         esac
6873 fi
6874
6875 : bad guess or no guess
6876 while $test "X$myhostname" = X ; do
6877         dflt=''
6878         rp="Please type the (one word) name of your host:"
6879         . ./myread
6880         myhostname="$ans"
6881 done
6882
6883 : translate upper to lower if necessary
6884 case "$myhostname" in
6885 *[A-Z]*)
6886         echo "(Normalizing case in your host name)"
6887         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6888         ;;
6889 esac
6890
6891 case "$myhostname" in
6892 *.*)
6893         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6894         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6895         echo "(Trimming domain name from host name--host name is now $myhostname)"
6896         ;;
6897 *) case "$mydomain" in
6898         '')
6899                 {
6900                         test "X$hostcat" = "Xypcat hosts" &&
6901                         ypmatch "$myhostname" hosts 2>/dev/null |\
6902                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6903                         $test -s hosts
6904                 } || {
6905                         test "X$hostcat" != "X" &&
6906                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6907                                         /[       ]$myhostname[  . ]/p" > hosts
6908                 }
6909                 tmp_re="[       . ]"
6910                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6911                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6912                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6913                         hosts | $sort | $uniq | \
6914                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6915                 case `$echo X$dflt` in
6916                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6917                         dflt=.
6918                         ;;
6919                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6920                         ;;
6921                 esac
6922                 case "$dflt" in
6923                 .)
6924                         tans=`./loc resolv.conf X /etc /usr/etc`
6925                         if $test -f "$tans"; then
6926                                 echo "(Attempting domain name extraction from $tans)"
6927                                 dflt=.`$sed -n -e 's/   / /g' \
6928                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6929                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6930                                 case "$dflt" in
6931                                 .) dflt=.`$sed -n -e 's/        / /g' \
6932                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6933                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6934                                         ;;
6935                                 esac
6936                         fi
6937                         ;;
6938                 esac
6939                 case "$dflt" in
6940                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6941                         dflt=.`sh -c domainname 2>/dev/null`
6942                         case "$dflt" in
6943                         '') dflt='.';;
6944                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6945                         esac
6946                         ;;
6947                 esac
6948                 case "$dflt" in
6949                 .) echo "(Lost all hope -- silly guess then)"
6950                         dflt='.uucp'
6951                         ;;
6952                 esac
6953                 $rm -f hosts
6954                 ;;
6955         *) dflt="$mydomain";;
6956         esac;;
6957 esac
6958 echo " "
6959 rp="What is your domain name?"
6960 . ./myread
6961 tans="$ans"
6962 case "$ans" in
6963 '') ;;
6964 .*) ;;
6965 *) tans=".$tans";;
6966 esac
6967 mydomain="$tans"
6968
6969 : translate upper to lower if necessary
6970 case "$mydomain" in
6971 *[A-Z]*)
6972         echo "(Normalizing case in your domain name)"
6973         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6974         ;;
6975 esac
6976
6977 : a little sanity check here
6978 case "$phostname" in
6979 '') ;;
6980 *)
6981         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6982         $myhostname$mydomain|$myhostname) ;;
6983         *)
6984                 case "$phostname" in
6985                 sed*)
6986                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6987                         ;;
6988                 *)
6989                         echo "(That doesn't agree with your $phostname command, by the way.)"
6990                         ;;
6991                 esac
6992         ;;
6993         esac
6994         ;;
6995 esac
6996
6997 $cat <<EOM
6998
6999 I need to get your e-mail address in Internet format if possible, i.e.
7000 something like user@host.domain. Please answer accurately since I have
7001 no easy means to double check it. The default value provided below
7002 is most probably close to reality but may not be valid from outside
7003 your organization...
7004
7005 EOM
7006 cont=x
7007 while test "$cont"; do
7008         case "$cf_email" in
7009         '') dflt="$cf_by@$myhostname$mydomain";;
7010         *) dflt="$cf_email";;
7011         esac
7012         rp='What is your e-mail address?'
7013         . ./myread
7014         cf_email="$ans"
7015         case "$cf_email" in
7016         *@*.*) cont='' ;;
7017         *)
7018                 rp='Address does not look like an Internet one.  Use it anyway?'
7019                 case "$fastread" in
7020                 yes) dflt=y ;;
7021                 *) dflt=n ;;
7022                 esac
7023                 . ./myread
7024                 case "$ans" in
7025                 y*) cont='' ;;
7026                 *) echo " " ;;
7027                 esac
7028                 ;;
7029         esac
7030 done
7031
7032 $cat <<EOM
7033
7034 If you or somebody else will be maintaining perl at your site, please
7035 fill in the correct e-mail address here so that they may be contacted
7036 if necessary. Currently, the "perlbug" program included with perl
7037 will send mail to this address in addition to perlbug@perl.com. You may
7038 enter "none" for no administrator.
7039
7040 EOM
7041 case "$perladmin" in
7042 '') dflt="$cf_email";;
7043 *) dflt="$perladmin";;
7044 esac
7045 rp='Perl administrator e-mail address'
7046 . ./myread
7047 perladmin="$ans"
7048
7049 : figure out how to guarantee perl startup
7050 case "$startperl" in
7051 '')
7052         case "$sharpbang" in
7053         *!)
7054                 $cat <<EOH
7055
7056 I can use the #! construct to start perl on your system. This will
7057 make startup of perl scripts faster, but may cause problems if you
7058 want to share those scripts and perl is not in a standard place
7059 ($binexp/perl) on all your platforms. The alternative is to force
7060 a shell by starting the script with a single ':' character.
7061
7062 EOH
7063                 dflt="$binexp/perl"
7064                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7065                 . ./myread
7066                 case "$ans" in
7067                 none)   startperl=": # use perl";;
7068                 *)      startperl="#!$ans"
7069                         if $test 30 -lt `echo "$ans" | wc -c`; then
7070                                 $cat >&4 <<EOM
7071
7072 WARNING:  Some systems limit the #! command to 32 characters.
7073 If you experience difficulty running Perl scripts with #!, try
7074 installing Perl in a directory with a shorter pathname.
7075
7076 EOM
7077                         fi ;;
7078                 esac
7079                 ;;
7080         *) startperl=": # use perl"
7081                 ;;
7082         esac
7083         ;;
7084 esac
7085 echo "I'll use $startperl to start perl scripts."
7086
7087 : figure best path for perl in scripts
7088 case "$perlpath" in
7089 '')
7090         perlpath="$binexp/perl"
7091         case "$startperl" in
7092         *!*) ;;
7093         *)
7094                 $cat <<EOH
7095
7096 I will use the "eval 'exec'" idiom to start Perl on your system.
7097 I can use the full path of your Perl binary for this purpose, but
7098 doing so may cause problems if you want to share those scripts and
7099 Perl is not always in a standard place ($binexp/perl).
7100
7101 EOH
7102                 dflt="$binexp/perl"
7103                 rp="What path shall I use in \"eval 'exec'\"?"
7104                 . ./myread
7105                 perlpath="$ans"
7106                 ;;
7107         esac
7108         ;;
7109 esac
7110 case "$startperl" in
7111 *!*)    ;;
7112 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7113 esac
7114
7115 : determine where public executable scripts go
7116 set scriptdir scriptdir
7117 eval $prefixit
7118 case "$scriptdir" in
7119 '')
7120         dflt="$bin"
7121         : guess some guesses
7122         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7123         $test -d /usr/share/bin     && dflt=/usr/share/bin
7124         $test -d /usr/local/script  && dflt=/usr/local/script
7125         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7126         $test -d $prefixexp/script  && dflt=$prefixexp/script
7127         set dflt
7128         eval $prefixup
7129         ;;
7130 *)  dflt="$scriptdir"
7131         ;;
7132 esac
7133 $cat <<EOM
7134  
7135 Some installations have a separate directory just for executable scripts so
7136 that they can mount it across multiple architectures but keep the scripts in
7137 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7138 Or you might just lump your scripts in with all your other executables.
7139  
7140 EOM
7141 fn=d~
7142 rp='Where do you keep publicly executable scripts?'
7143 . ./getfile
7144 if $test "X$ansexp" != "X$scriptdirexp"; then
7145         installscript=''
7146 fi
7147 scriptdir="$ans"
7148 scriptdirexp="$ansexp"
7149 : Change installation prefix, if necessary.
7150 if $test X"$prefix" != X"$installprefix"; then
7151         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7152 else
7153         installscript="$scriptdirexp"
7154 fi
7155
7156 : determine where site specific architecture-dependent libraries go.
7157 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7158 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7159 : sitelib may have an optional trailing /share.
7160 case "$sitearch" in
7161 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7162         dflt="$dflt/$archname"
7163         ;;
7164 *)      dflt="$sitearch"
7165         ;;
7166 esac
7167 set sitearch sitearch none
7168 eval $prefixit
7169 $cat <<EOM
7170
7171 The installation process will also create a directory for
7172 architecture-dependent site-specific extensions and modules.
7173
7174 EOM
7175 fn=d~+
7176 rp='Pathname for the site-specific architecture-dependent library files?'
7177 . ./getfile
7178 sitearch="$ans"
7179 sitearchexp="$ansexp"
7180 : Change installation prefix, if necessary.
7181 if $test X"$prefix" != X"$installprefix"; then
7182         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7183 else
7184         installsitearch="$sitearchexp"
7185 fi
7186
7187 : determine where add-on public executables go
7188 case "$sitebin" in
7189 '')     dflt=$siteprefix/bin ;;
7190 *)      dflt=$sitebin ;;
7191 esac
7192 fn=d~
7193 rp='Pathname where the add-on public executables should be installed?'
7194 . ./getfile
7195 sitebin="$ans"
7196 sitebinexp="$ansexp"
7197 : Change installation prefix, if necessary.
7198 if $test X"$prefix" != X"$installprefix"; then
7199         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7200 else
7201         installsitebin="$sitebinexp"
7202 fi
7203
7204 : see if sqrtl exists
7205 set sqrtl d_sqrtl
7206 eval $inlibc
7207
7208 case "$ccflags" in
7209 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7210 esac
7211
7212 case "$uselongdouble" in
7213 $define|true|[yY]*)     dflt='y';;
7214 *) dflt='n';;
7215 esac
7216 cat <<EOM
7217
7218 Perl can be built to take advantage of long doubles which
7219 (if available) may give more accuracy and range for floating point numbers.
7220
7221 If this doesn't make any sense to you, just accept the default '$dflt'.
7222 EOM
7223 rp='Try to use long doubles if available?'
7224 . ./myread
7225 case "$ans" in
7226 y|Y)    val="$define"   ;;
7227 *)      val="$undef"    ;;
7228 esac
7229 set uselongdouble
7230 eval $setvar
7231
7232 case "$uselongdouble" in
7233 true|[yY]*) uselongdouble="$define" ;;
7234 esac
7235
7236 case "$uselongdouble" in
7237 $define)
7238 : Look for a hint-file generated 'call-back-unit'.  If the
7239 : user has specified that long doubles should be used,
7240 : we may need to set or change some other defaults.
7241         if $test -f uselongdouble.cbu; then
7242                 echo "Your platform has some specific hints for long doubles, using them..."
7243                 . ./uselongdouble.cbu
7244         else
7245                 $cat <<EOM
7246 (Your platform doesn't have any specific hints for long doubles.)
7247 EOM
7248         fi
7249         ;;
7250 esac
7251
7252 case "$uselongdouble:$d_sqrtl" in
7253 $define:$undef)
7254                 $cat <<EOM >&4
7255
7256 *** You requested the use of long doubles but you do not seem to have
7257 *** the mathematic functions for long doubles.  I'm disabling the use
7258 *** of long doubles.
7259
7260 EOM
7261         uselongdouble=$undef
7262         ;;
7263 esac
7264
7265 case "$useperlio" in
7266 $define|true|[yY]*)     dflt='y';;
7267 *) dflt='n';;
7268 esac
7269 cat <<EOM
7270
7271 Previous version of $package used the standard IO mechanisms as defined
7272 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7273 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7274 the default.  This abstraction layer can use AT&T's sfio (if you already
7275 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7276 problems with some extension modules.  Using PerlIO with stdio is safe,
7277 but it is slower than plain stdio and therefore is not the default.
7278
7279 If this doesn't make any sense to you, just accept the default '$dflt'.
7280 EOM
7281 rp='Use the experimental PerlIO abstraction layer?'
7282 . ./myread
7283 case "$ans" in
7284 y|Y) 
7285         val="$define"
7286         ;;     
7287 *)      
7288         echo "Ok, doing things the stdio way"
7289         val="$undef"
7290         ;;
7291 esac
7292 set useperlio
7293 eval $setvar 
7294
7295 case "$vendorprefix" in
7296 '')     d_vendorbin="$undef"
7297         vendorbin=''
7298         vendorbinexp=''
7299         ;;
7300 *)      d_vendorbin="$define"
7301         : determine where vendor-supplied executables go.
7302         case "$vendorbin" in
7303         '') dflt=$vendorprefix/bin ;;
7304         *)      dflt="$vendorbin" ;;
7305         esac
7306         fn=d~+
7307         rp='Pathname for the vendor-supplied executables directory?'
7308         . ./getfile
7309         vendorbin="$ans"
7310         vendorbinexp="$ansexp"
7311         ;;
7312 esac
7313 : Change installation prefix, if necessary.
7314 if $test X"$prefix" != X"$installprefix"; then
7315         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7316 else
7317         installvendorbin="$vendorbinexp"
7318 fi
7319
7320 : see if qgcvt exists
7321 set qgcvt d_qgcvt
7322 eval $inlibc
7323
7324 : check for length of double
7325 echo " "
7326 case "$doublesize" in
7327 '')
7328         echo "Checking to see how big your double precision numbers are..." >&4
7329         $cat >try.c <<'EOCP'
7330 #include <stdio.h>
7331 int main()
7332 {
7333     printf("%d\n", (int)sizeof(double));
7334     exit(0);
7335 }
7336 EOCP
7337         set try
7338         if eval $compile_ok; then
7339                 doublesize=`./try`
7340                 echo "Your double is $doublesize bytes long."
7341         else
7342                 dflt='8'
7343                 echo "(I can't seem to compile the test program.  Guessing...)"
7344                 rp="What is the size of a double precision number (in bytes)?"
7345                 . ./myread
7346                 doublesize="$ans"
7347         fi
7348         ;;
7349 esac
7350 $rm -f try.c try
7351
7352 : check for long doubles
7353 echo " "
7354 echo "Checking to see if you have long double..." >&4
7355 echo 'int main() { long double x = 7.0; }' > try.c
7356 set try
7357 if eval $compile; then
7358         val="$define"
7359         echo "You have long double."
7360 else
7361         val="$undef"
7362         echo "You do not have long double."
7363 fi
7364 $rm try.*
7365 set d_longdbl
7366 eval $setvar
7367
7368 : check for length of long double
7369 case "${d_longdbl}${longdblsize}" in
7370 $define)
7371         echo " "
7372         echo "Checking to see how big your long doubles are..." >&4
7373         $cat >try.c <<'EOCP'
7374 #include <stdio.h>
7375 int main()
7376 {
7377         printf("%d\n", sizeof(long double));
7378 }
7379 EOCP
7380         set try
7381         set try
7382         if eval $compile; then
7383                 longdblsize=`./try$exe_ext`
7384                 echo "Your long doubles are $longdblsize bytes long."
7385         else
7386                 dflt='8'
7387                 echo " "
7388                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7389                 rp="What is the size of a long double (in bytes)?"
7390                 . ./myread
7391                 longdblsize="$ans"
7392         fi
7393         if $test "X$doublesize" = "X$longdblsize"; then
7394                 echo "(That isn't any different from an ordinary double.)"
7395         fi      
7396         ;;
7397 esac
7398 $rm -f try.* try
7399
7400 echo " "
7401
7402 if $test X"$d_longdbl" = X"$define"; then
7403
7404 echo "Checking how to print long doubles..." >&4
7405
7406 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7407         $cat >try.c <<'EOCP'
7408 #include <sys/types.h>
7409 #include <stdio.h>
7410 int main() {
7411   double d = 123.456;
7412   printf("%.3f\n", d);
7413 }
7414 EOCP
7415         set try
7416         if eval $compile; then
7417                 yyy=`./try$exe_ext`
7418                 case "$yyy" in
7419                 123.456)
7420                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7421                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7422                         echo "We will use %f."
7423                         ;;
7424                 esac
7425         fi
7426 fi
7427
7428 if $test X"$sPRIfldbl" = X; then
7429         $cat >try.c <<'EOCP'
7430 #include <sys/types.h>
7431 #include <stdio.h>
7432 int main() {
7433   long double d = 123.456;
7434   printf("%.3llf\n", d);
7435 }
7436 EOCP
7437         set try
7438         if eval $compile; then
7439                 yyy=`./try$exe_ext`
7440                 case "$yyy" in
7441                 123.456)
7442                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7443                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7444                         echo "We will use %llf."
7445                         ;;
7446                 esac
7447         fi
7448 fi
7449
7450 if $test X"$sPRIfldbl" = X; then
7451         $cat >try.c <<'EOCP'
7452 #include <sys/types.h>
7453 #include <stdio.h>
7454 int main() {
7455   long double d = 123.456;
7456   printf("%.3Lf\n", d);
7457 }
7458 EOCP
7459         set try
7460         if eval $compile; then
7461                 yyy=`./try$exe_ext`
7462                 case "$yyy" in
7463                 123.456)
7464                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7465                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7466                         echo "We will use %Lf."
7467                         ;;
7468                 esac
7469         fi
7470 fi
7471
7472 if $test X"$sPRIfldbl" = X; then
7473         $cat >try.c <<'EOCP'
7474 #include <sys/types.h>
7475 #include <stdio.h>
7476 int main() {
7477   long double d = 123.456;
7478   printf("%.3lf\n", d);
7479 }
7480 EOCP
7481         set try
7482         if eval $compile; then
7483                 yyy=`./try$exe_ext`
7484                 case "$yyy" in
7485                 123.456)
7486                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7487                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7488                         echo "We will use %lf."
7489                         ;;
7490                 esac
7491         fi
7492 fi
7493
7494 if $test X"$sPRIfldbl" = X; then
7495         echo "Cannot figure out how to print long doubles." >&4
7496 fi
7497
7498 $rm -f try try.*
7499
7500 fi # d_longdbl
7501
7502 case "$sPRIfldbl" in
7503 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7504         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7505         ;;
7506 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7507         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7508         ;;
7509 esac
7510
7511 : Check how to convert floats to strings.
7512 if test "X$d_Gconvert" = X; then
7513         echo " "
7514         echo "Checking for an efficient way to convert floats to strings."
7515         echo " " > try.c
7516         case "$uselongdouble" in
7517         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7518         esac
7519         case "$d_longdbl" in
7520         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7521         esac
7522         case "$d_PRIgldbl" in
7523         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7524         esac
7525         $cat >>try.c <<EOP
7526 #ifdef TRY_gconvert
7527 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7528 char *myname = "gconvert";
7529 #endif
7530 #ifdef TRY_gcvt
7531 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7532 char *myname = "gcvt";
7533 #endif
7534 #ifdef TRY_qgcvt
7535 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7536 char *myname = "qgcvt";
7537 #define DOUBLETYPE long double
7538 #endif
7539 #ifdef TRY_sprintf
7540 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7541 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7542 #else
7543 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7544 #endif
7545 char *myname = "sprintf";
7546 #endif
7547
7548 #ifndef DOUBLETYPE
7549 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7550 #define DOUBLETYPE long double
7551 #else
7552 #define DOUBLETYPE double
7553 #endif
7554 #endif
7555
7556 #include <stdio.h>
7557
7558 #define I_STDLIB $i_stdlib
7559 #ifdef I_STDLIB
7560 #include <stdlib.h>
7561 #endif
7562
7563 int
7564 checkit(expect, got)
7565 char *expect;
7566 char *got;
7567 {
7568     if (strcmp(expect, got)) {
7569                 printf("%s oddity:  Expected %s, got %s\n",
7570                         myname, expect, got);
7571                 exit(1);
7572         }
7573 }
7574
7575 int main()
7576
7577         char buf[64]; 
7578         buf[63] = '\0';
7579
7580         /* This must be 1st test on (which?) platform */
7581         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7582         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7583         checkit("0.1", buf);
7584
7585         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7586         checkit("1", buf);
7587
7588         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7589         checkit("1.1", buf);
7590
7591         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7592         checkit("1.01", buf);
7593
7594         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7595         checkit("1.001", buf);
7596
7597         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7598         checkit("1.0001", buf);
7599
7600         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7601         checkit("1.00001", buf);
7602
7603         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7604         checkit("1.000001", buf);
7605
7606         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7607         checkit("0", buf);
7608
7609         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7610         checkit("-1", buf);
7611
7612         /* Some Linux gcvt's give 1.e+5 here. */
7613         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7614         checkit("100000", buf);
7615         
7616         /* Some Linux gcvt's give -1.e+5 here. */
7617         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7618         checkit("-100000", buf);
7619
7620         exit(0);
7621 }
7622 EOP
7623         case "$d_Gconvert" in
7624         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7625         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7626         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7627         *) xxx_list='gconvert gcvt sprintf' ;;
7628         esac
7629
7630         case "$d_longdbl$uselongdouble$d_qgcvt" in
7631         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7632         esac
7633
7634         for xxx_convert in $xxx_list; do
7635                 echo "Trying $xxx_convert..."
7636                 $rm -f try try$_o
7637                 set try -DTRY_$xxx_convert
7638                 if eval $compile; then
7639                         echo "$xxx_convert() found." >&4
7640                         if ./try; then
7641                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7642                                 break;
7643                         else
7644                                 echo "...But $xxx_convert didn't work as I expected."
7645                         fi
7646                 else
7647                         echo "$xxx_convert NOT found." >&4
7648                 fi
7649         done
7650                 
7651         case "$xxx_convert" in
7652         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7653         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7654         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7655         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7656            "$define$define$define")
7657               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7658            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7659            esac
7660            ;;  
7661         esac
7662 fi
7663
7664 : Initialize h_fcntl
7665 h_fcntl=false
7666
7667 : Initialize h_sysfile
7668 h_sysfile=false
7669
7670 : access call always available on UNIX
7671 set access d_access
7672 eval $inlibc
7673
7674 : locate the flags for 'access()'
7675 case "$d_access" in
7676 "$define")
7677         echo " "
7678         $cat >access.c <<'EOCP'
7679 #include <sys/types.h>
7680 #ifdef I_FCNTL
7681 #include <fcntl.h>
7682 #endif
7683 #ifdef I_SYS_FILE
7684 #include <sys/file.h>
7685 #endif
7686 #ifdef I_UNISTD
7687 #include <unistd.h>
7688 #endif
7689 int main() {
7690         exit(R_OK);
7691 }
7692 EOCP
7693         : check sys/file.h first, no particular reason here
7694         if $test `./findhdr sys/file.h` && \
7695                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7696                 h_sysfile=true;
7697                 echo "<sys/file.h> defines the *_OK access constants." >&4
7698         elif $test `./findhdr fcntl.h` && \
7699                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7700                 h_fcntl=true;
7701                 echo "<fcntl.h> defines the *_OK access constants." >&4
7702         elif $test `./findhdr unistd.h` && \
7703                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7704                 echo "<unistd.h> defines the *_OK access constants." >&4
7705         else
7706                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7707         fi
7708         ;;
7709 esac
7710 $rm -f access*
7711
7712 : see if accessx exists
7713 set accessx d_accessx
7714 eval $inlibc
7715
7716 : see if alarm exists
7717 set alarm d_alarm
7718 eval $inlibc
7719
7720 : see if atolf exists
7721 set atolf d_atolf
7722 eval $inlibc
7723
7724 : see if atoll exists
7725 set atoll d_atoll
7726 eval $inlibc
7727
7728 : Look for GNU-cc style attribute checking
7729 echo " "
7730 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7731 $cat >attrib.c <<'EOCP'
7732 #include <stdio.h>
7733 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7734 EOCP
7735 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7736         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7737                 echo "Your C compiler doesn't fully support __attribute__."
7738                 val="$undef"
7739         else
7740                 echo "Your C compiler supports __attribute__."
7741                 val="$define"
7742         fi
7743 else
7744         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7745         val="$undef"
7746 fi
7747 set d_attribut
7748 eval $setvar
7749 $rm -f attrib*
7750
7751 : see if bcmp exists
7752 set bcmp d_bcmp
7753 eval $inlibc
7754
7755 : see if bcopy exists
7756 set bcopy d_bcopy
7757 eval $inlibc
7758
7759 : see if this is a unistd.h system
7760 set unistd.h i_unistd
7761 eval $inhdr
7762
7763 : see if getpgrp exists
7764 set getpgrp d_getpgrp
7765 eval $inlibc
7766
7767 case "$d_getpgrp" in
7768 "$define")
7769         echo " "
7770         echo "Checking to see which flavor of getpgrp is in use..."
7771         $cat >set.c <<EOP
7772 #$i_unistd I_UNISTD
7773 #include <sys/types.h>
7774 #ifdef I_UNISTD
7775 #  include <unistd.h>
7776 #endif
7777 int main()
7778 {
7779         if (getuid() == 0) {
7780                 printf("(I see you are running Configure as super-user...)\n");
7781                 setuid(1);
7782         }
7783 #ifdef TRY_BSD_PGRP
7784         if (getpgrp(1) == 0)
7785                 exit(0);
7786 #else
7787         if (getpgrp() > 0)
7788                 exit(0);
7789 #endif
7790         exit(1);
7791 }
7792 EOP
7793         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7794                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7795                 val="$define"
7796         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7797                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7798                 val="$undef"
7799         else
7800                 echo "I can't seem to compile and run the test program."
7801                 if ./usg; then
7802                         xxx="a USG one, i.e. you use getpgrp()."
7803                 else
7804                         # SVR4 systems can appear rather BSD-ish.
7805                         case "$i_unistd" in
7806                         $undef)
7807                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7808                                 val="$define"
7809                                 ;;
7810                         $define)
7811                                 xxx="probably a USG one, i.e. you use getpgrp()."
7812                                 val="$undef"
7813                                 ;;
7814                         esac
7815                 fi
7816                 echo "Assuming your getpgrp is $xxx" >&4
7817         fi
7818         ;;
7819 *) val="$undef";;
7820 esac
7821 set d_bsdgetpgrp
7822 eval $setvar
7823 $rm -f set set.c
7824
7825 : see if setpgrp exists
7826 set setpgrp d_setpgrp
7827 eval $inlibc
7828
7829 case "$d_setpgrp" in
7830 "$define")
7831         echo " "
7832         echo "Checking to see which flavor of setpgrp is in use..."
7833         $cat >set.c <<EOP
7834 #$i_unistd I_UNISTD
7835 #include <sys/types.h>
7836 #ifdef I_UNISTD
7837 #  include <unistd.h>
7838 #endif
7839 int main()
7840 {
7841         if (getuid() == 0) {
7842                 printf("(I see you are running Configure as super-user...)\n");
7843                 setuid(1);
7844         }
7845 #ifdef TRY_BSD_PGRP
7846         if (-1 == setpgrp(1, 1))
7847                 exit(0);
7848 #else
7849         if (setpgrp() != -1)
7850                 exit(0);
7851 #endif
7852         exit(1);
7853 }
7854 EOP
7855         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7856                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7857                 val="$define"
7858         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7859                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7860                 val="$undef"
7861         else
7862                 echo "(I can't seem to compile and run the test program.)"
7863                 if ./usg; then
7864                         xxx="a USG one, i.e. you use setpgrp()."
7865                 else
7866                         # SVR4 systems can appear rather BSD-ish.
7867                         case "$i_unistd" in
7868                         $undef)
7869                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7870                                 val="$define"
7871                                 ;;
7872                         $define)
7873                                 xxx="probably a USG one, i.e. you use setpgrp()."
7874                                 val="$undef"
7875                                 ;;
7876                         esac
7877                 fi
7878                 echo "Assuming your setpgrp is $xxx" >&4
7879         fi
7880         ;;
7881 *) val="$undef";;
7882 esac
7883 set d_bsdsetpgrp
7884 eval $setvar
7885 $rm -f set set.c
7886 : see if bzero exists
7887 set bzero d_bzero
7888 eval $inlibc
7889
7890 : see if signal is declared as pointer to function returning int or void
7891 echo " "
7892 xxx=`./findhdr signal.h`
7893 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7894 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7895         echo "You have int (*signal())() instead of void." >&4
7896         val="$undef"
7897 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7898         echo "You have void (*signal())()." >&4
7899         val="$define"
7900 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7901         echo "You have int (*signal())() instead of void." >&4
7902         val="$undef"
7903 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7904         echo "You have void (*signal())()." >&4
7905         val="$define"
7906 else
7907         case "$d_voidsig" in
7908         '')
7909         echo "I can't determine whether signal handler returns void or int..." >&4
7910                 dflt=void
7911                 rp="What type does your signal handler return?"
7912                 . ./myread
7913                 case "$ans" in
7914                 v*) val="$define";;
7915                 *) val="$undef";;
7916                 esac;;
7917         "$define")
7918                 echo "As you already told me, signal handler returns void." >&4
7919                 val="$define"
7920                 ;;
7921         *)      echo "As you already told me, signal handler returns int." >&4
7922                 val="$undef"
7923                 ;;
7924         esac
7925 fi
7926 set d_voidsig
7927 eval $setvar
7928 case "$d_voidsig" in
7929 "$define") signal_t="void";;
7930 *) signal_t="int";;
7931 esac
7932 $rm -f $$.tmp
7933
7934 : check for ability to cast large floats to 32-bit ints.
7935 echo " "
7936 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7937 if $test "$intsize" -ge 4; then
7938         xxx=int
7939 else
7940         xxx=long
7941 fi
7942 $cat >try.c <<EOCP
7943 #include <stdio.h>
7944 #include <sys/types.h>
7945 #include <signal.h>
7946 $signal_t blech(s) int s; { exit(3); }
7947 int main()
7948 {
7949         $xxx i32;
7950         double f, g;
7951         int result = 0;
7952         char str[16];
7953         signal(SIGFPE, blech);
7954
7955         /* Don't let compiler optimize the test away.  Store the number 
7956            in a writable string for gcc to pass to sscanf under HP/UX.
7957         */
7958         sprintf(str, "2147483647");
7959         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7960         g = 10 * f;
7961         i32  = ($xxx) g;
7962
7963         /* x86 processors will probably give 0x8000 0000, which is a
7964        sign change.  We don't want that.  We want to mimic SPARC
7965            behavior here, which is to preserve the sign and give
7966            back 0x7fff ffff.
7967         */
7968         if (i32 != ($xxx) f)
7969                 result |= 1;
7970         exit(result);
7971 }
7972 EOCP
7973 set try
7974 if eval $compile_ok; then
7975         ./try
7976         yyy=$?
7977 else
7978         echo "(I can't seem to compile the test program--assuming it can't)"
7979         yyy=1
7980 fi
7981 case "$yyy" in
7982 0)      val="$define"
7983         echo "Yup, it can."
7984         ;;
7985 *)      val="$undef"
7986         echo "Nope, it can't."
7987         ;;
7988 esac
7989 set d_casti32
7990 eval $setvar
7991 $rm -f try try.*
7992
7993 : check for ability to cast negative floats to unsigned
7994 echo " "
7995 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7996 $cat >try.c <<EOCP
7997 #include <stdio.h>
7998 #include <sys/types.h>
7999 #include <signal.h>
8000 $signal_t blech(s) int s; { exit(7); }
8001 $signal_t blech_in_list(s) int s; { exit(4); }
8002 unsigned long dummy_long(p) unsigned long p; { return p; }
8003 unsigned int dummy_int(p) unsigned int p; { return p; }
8004 unsigned short dummy_short(p) unsigned short p; { return p; }
8005 int main()
8006 {
8007         double f;
8008         unsigned long along;
8009         unsigned int aint;
8010         unsigned short ashort;
8011         int result = 0;
8012         char str[16];
8013         
8014         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8015            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8016            optimized the whole file away
8017         */
8018         /* Store the number in a writable string for gcc to pass to 
8019            sscanf under HP/UX.
8020         */
8021         sprintf(str, "-123");
8022         sscanf(str, "%lf", &f);  /* f = -123.; */
8023
8024         signal(SIGFPE, blech);
8025         along = (unsigned long)f;
8026         aint = (unsigned int)f;
8027         ashort = (unsigned short)f;
8028         if (along != (unsigned long)-123)
8029                 result |= 1;
8030         if (aint != (unsigned int)-123)
8031                 result |= 1;
8032         if (ashort != (unsigned short)-123)
8033                 result |= 1;
8034         sprintf(str, "1073741824.");
8035         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8036         f = f + f;
8037         along = 0;
8038         along = (unsigned long)f;
8039         if (along != 0x80000000)
8040                 result |= 2;
8041         f -= 1.;
8042         along = 0;
8043         along = (unsigned long)f;
8044         if (along != 0x7fffffff)
8045                 result |= 1;
8046         f += 2.;
8047         along = 0;
8048         along = (unsigned long)f;
8049         if (along != 0x80000001)
8050                 result |= 2;
8051         if (result)
8052                 exit(result);
8053         signal(SIGFPE, blech_in_list);
8054         sprintf(str, "123.");
8055         sscanf(str, "%lf", &f);  /* f = 123.; */
8056         along = dummy_long((unsigned long)f);
8057         aint = dummy_int((unsigned int)f);
8058         ashort = dummy_short((unsigned short)f);
8059         if (along != (unsigned long)123)
8060                 result |= 4;
8061         if (aint != (unsigned int)123)
8062                 result |= 4;
8063         if (ashort != (unsigned short)123)
8064                 result |= 4;
8065         exit(result);
8066
8067 }
8068 EOCP
8069 set try
8070 if eval $compile_ok; then
8071         ./try
8072         castflags=$?
8073 else
8074         echo "(I can't seem to compile the test program--assuming it can't)"
8075         castflags=7
8076 fi
8077 case "$castflags" in
8078 0)      val="$define"
8079         echo "Yup, it can."
8080         ;;
8081 *)      val="$undef"
8082         echo "Nope, it can't."
8083         ;;
8084 esac
8085 set d_castneg
8086 eval $setvar
8087 $rm -f try.*
8088
8089 : see if vprintf exists
8090 echo " "
8091 if set vprintf val -f d_vprintf; eval $csym; $val; then
8092         echo 'vprintf() found.' >&4
8093         val="$define"
8094         $cat >vprintf.c <<'EOF'
8095 #include <varargs.h>
8096
8097 int main() { xxx("foo"); }
8098
8099 xxx(va_alist)
8100 va_dcl
8101 {
8102         va_list args;
8103         char buf[10];
8104
8105         va_start(args);
8106         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8107 }
8108 EOF
8109         set vprintf
8110         if eval $compile && ./vprintf; then
8111                 echo "Your vsprintf() returns (int)." >&4
8112                 val2="$undef"
8113         else
8114                 echo "Your vsprintf() returns (char*)." >&4
8115                 val2="$define"
8116         fi
8117 else
8118         echo 'vprintf() NOT found.' >&4
8119                 val="$undef"
8120                 val2="$undef"
8121 fi
8122 set d_vprintf
8123 eval $setvar
8124 val=$val2
8125 set d_charvspr
8126 eval $setvar
8127
8128 : see if chown exists
8129 set chown d_chown
8130 eval $inlibc
8131
8132 : see if chroot exists
8133 set chroot d_chroot
8134 eval $inlibc
8135
8136 : see if chsize exists
8137 set chsize d_chsize
8138 eval $inlibc
8139
8140 : check for const keyword
8141 echo " "
8142 echo 'Checking to see if your C compiler knows about "const"...' >&4
8143 $cat >const.c <<'EOCP'
8144 typedef struct spug { int drokk; } spug;
8145 int main()
8146 {
8147         const char *foo;
8148         const spug y;
8149 }
8150 EOCP
8151 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8152         val="$define"
8153         echo "Yup, it does."
8154 else
8155         val="$undef"
8156         echo "Nope, it doesn't."
8157 fi
8158 set d_const
8159 eval $setvar
8160
8161 : see if crypt exists
8162 echo " "
8163 if set crypt val -f d_crypt; eval $csym; $val; then
8164         echo 'crypt() found.' >&4
8165         val="$define"
8166         cryptlib=''
8167 else
8168         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8169         if $test -z "$cryptlib"; then
8170                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8171         else
8172                 cryptlib=-lcrypt
8173         fi
8174         if $test -z "$cryptlib"; then
8175                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8176         else
8177                 cryptlib=-lcrypt
8178         fi
8179         if $test -z "$cryptlib"; then
8180                 cryptlib=`./loc libcrypt$_a "" $libpth`
8181         else
8182                 cryptlib=-lcrypt
8183         fi
8184         if $test -z "$cryptlib"; then
8185                 echo 'crypt() NOT found.' >&4
8186                 val="$undef"
8187         else
8188                 val="$define"
8189         fi
8190 fi
8191 set d_crypt
8192 eval $setvar
8193
8194 : get csh whereabouts
8195 case "$csh" in
8196 'csh') val="$undef" ;;
8197 *) val="$define" ;;
8198 esac
8199 set d_csh
8200 eval $setvar
8201 : Respect a hint or command line value for full_csh.
8202 case "$full_csh" in
8203 '') full_csh=$csh ;;
8204 esac
8205
8206 : see if cuserid exists
8207 set cuserid d_cuserid
8208 eval $inlibc
8209
8210 : see if this is a limits.h system
8211 set limits.h i_limits
8212 eval $inhdr
8213
8214 : see if this is a float.h system
8215 set float.h i_float
8216 eval $inhdr
8217
8218 : See if number of significant digits in a double precision number is known
8219 echo " "
8220 $cat >dbl_dig.c <<EOM
8221 #$i_limits I_LIMITS
8222 #$i_float I_FLOAT
8223 #ifdef I_LIMITS
8224 #include <limits.h>
8225 #endif
8226 #ifdef I_FLOAT
8227 #include <float.h>
8228 #endif
8229 #ifdef DBL_DIG
8230 printf("Contains DBL_DIG");
8231 #endif
8232 EOM
8233 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8234 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8235         echo "DBL_DIG found." >&4
8236         val="$define"
8237 else
8238         echo "DBL_DIG NOT found." >&4
8239         val="$undef"
8240 fi
8241 $rm -f dbl_dig.?
8242 set d_dbl_dig
8243 eval $setvar
8244
8245 : see if difftime exists
8246 set difftime d_difftime
8247 eval $inlibc
8248
8249 : see if this is a dirent system
8250 echo " "
8251 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8252         val="$define"
8253         echo "<dirent.h> found." >&4
8254 else
8255         val="$undef"
8256         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8257                 echo "<sys/dir.h> found." >&4
8258                 echo " "
8259         else
8260                 xinc=`./findhdr sys/ndir.h`
8261         fi
8262         echo "<dirent.h> NOT found." >&4
8263 fi
8264 set i_dirent
8265 eval $setvar
8266
8267 : Look for type of directory structure.
8268 echo " "
8269 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8270
8271 case "$direntrytype" in
8272 ''|' ')
8273         case "$i_dirent" in
8274         $define) guess1='struct dirent' ;;
8275         *) guess1='struct direct'  ;;
8276         esac
8277         ;;
8278 *)      guess1="$direntrytype"
8279         ;;
8280 esac
8281
8282 case "$guess1" in
8283 'struct dirent') guess2='struct direct' ;;
8284 *) guess2='struct dirent' ;;
8285 esac
8286                 
8287 if $contains "$guess1" try.c >/dev/null 2>&1; then
8288         direntrytype="$guess1"
8289         echo "Your directory entries are $direntrytype." >&4
8290 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8291         direntrytype="$guess2"
8292         echo "Your directory entries seem to be $direntrytype." >&4
8293 else
8294         echo "I don't recognize your system's directory entries." >&4
8295         rp="What type is used for directory entries on this system?"
8296         dflt="$guess1"
8297         . ./myread
8298         direntrytype="$ans"
8299 fi
8300 $rm -f try.c
8301
8302
8303 : see if the directory entry stores field length
8304 echo " "
8305 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8306 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8307         echo "Good, your directory entry keeps length information in d_namlen." >&4
8308         val="$define"
8309 else
8310         echo "Your directory entry does not know about the d_namlen field." >&4
8311         val="$undef"
8312 fi
8313 set d_dirnamlen
8314 eval $setvar
8315 $rm -f try.c
8316
8317 : see if dlerror exists
8318 xxx_runnm="$runnm"
8319 runnm=false
8320 set dlerror d_dlerror
8321 eval $inlibc
8322 runnm="$xxx_runnm"
8323
8324 : see if dlfcn is available
8325 set dlfcn.h i_dlfcn
8326 eval $inhdr
8327
8328 case "$usedl" in
8329 $define|y|true)
8330         $cat << EOM
8331
8332 On a few systems, the dynamically loaded modules that perl generates and uses
8333 will need a different extension than shared libs. The default will probably
8334 be appropriate.
8335
8336 EOM
8337         case "$dlext" in
8338         '')     dflt="$so" ;;
8339         *)      dflt="$dlext" ;;
8340         esac
8341         rp='What is the extension of dynamically loaded modules'
8342         . ./myread
8343         dlext="$ans"
8344         ;;
8345 *)
8346         dlext="none"
8347         ;;
8348 esac
8349
8350 : Check if dlsym need a leading underscore
8351 echo " "
8352 val="$undef"
8353
8354 case "$dlsrc" in
8355 dl_dlopen.xs)
8356         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8357         $cat >dyna.c <<'EOM'
8358 fred () { }
8359 EOM
8360
8361 $cat >fred.c<<EOM
8362
8363 #include <stdio.h>
8364 #$i_dlfcn I_DLFCN
8365 #ifdef I_DLFCN
8366 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8367 #else
8368 #include <sys/types.h>
8369 #include <nlist.h>
8370 #include <link.h>
8371 #endif
8372
8373 extern int fred() ;
8374
8375 int main()
8376 {
8377     void * handle ;
8378     void * symbol ;
8379 #ifndef RTLD_LAZY
8380     int mode = 1 ;
8381 #else
8382     int mode = RTLD_LAZY ;
8383 #endif
8384     handle = dlopen("./dyna.$dlext", mode) ;
8385     if (handle == NULL) {
8386         printf ("1\n") ;
8387         fflush (stdout) ;
8388         exit(0);
8389     }
8390     symbol = dlsym(handle, "fred") ;
8391     if (symbol == NULL) {
8392         /* try putting a leading underscore */
8393         symbol = dlsym(handle, "_fred") ;
8394         if (symbol == NULL) {
8395             printf ("2\n") ;
8396             fflush (stdout) ;
8397             exit(0);
8398         }
8399         printf ("3\n") ;
8400     }
8401     else
8402         printf ("4\n") ;
8403     fflush (stdout) ;
8404     exit(0);
8405 }
8406 EOM
8407         : Call the object file tmp-dyna.o in case dlext=o.
8408         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8409                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8410                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8411                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8412                 xxx=`./fred`
8413                 case $xxx in
8414                 1)      echo "Test program failed using dlopen." >&4
8415                         echo "Perhaps you should not use dynamic loading." >&4;;
8416                 2)      echo "Test program failed using dlsym." >&4
8417                         echo "Perhaps you should not use dynamic loading." >&4;;
8418                 3)      echo "dlsym needs a leading underscore" >&4
8419                         val="$define" ;;
8420                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8421                 esac
8422         else
8423                 echo "I can't compile and run the test program." >&4
8424                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8425         fi
8426         ;;
8427 esac
8428                 
8429 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8430
8431 set d_dlsymun
8432 eval $setvar
8433
8434 hasproto='varname=$1; func=$2; shift; shift;
8435 while $test $# -ge 2; do
8436         case "$1" in
8437         $define) echo "#include <$2>";;
8438         esac ;
8439     shift 2;
8440 done > try.c;
8441 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8442 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8443         echo "$func() prototype found.";
8444         val="$define";
8445 else
8446         echo "$func() prototype NOT found.";
8447         val="$undef";
8448 fi;
8449 set $varname;
8450 eval $setvar;
8451 $rm -f try.c tryout.c'
8452
8453 : see if prototype for drand48 is available
8454 echo " "
8455 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8456 eval $hasproto
8457
8458 : see if dup2 exists
8459 set dup2 d_dup2
8460 eval $inlibc
8461
8462 : see if eaccess exists
8463 set eaccess d_eaccess
8464 eval $inlibc
8465
8466 : see if endgrent exists
8467 set endgrent d_endgrent
8468 eval $inlibc
8469
8470 : see if endhostent exists
8471 set endhostent d_endhent
8472 eval $inlibc
8473
8474 : see if endnetent exists
8475 set endnetent d_endnent
8476 eval $inlibc
8477
8478 : see if endprotoent exists
8479 set endprotoent d_endpent
8480 eval $inlibc
8481
8482 : see if endpwent exists
8483 set endpwent d_endpwent
8484 eval $inlibc
8485
8486 : see if endservent exists
8487 set endservent d_endsent
8488 eval $inlibc
8489
8490 : see if endspent exists
8491 set endspent d_endspent
8492 eval $inlibc
8493
8494 : Locate the flags for 'open()'
8495 echo " "
8496 $cat >open3.c <<'EOCP'
8497 #include <sys/types.h>
8498 #ifdef I_FCNTL
8499 #include <fcntl.h>
8500 #endif
8501 #ifdef I_SYS_FILE
8502 #include <sys/file.h>
8503 #endif
8504 int main() {
8505         if(O_RDONLY);
8506 #ifdef O_TRUNC
8507         exit(0);
8508 #else
8509         exit(1);
8510 #endif
8511 }
8512 EOCP
8513 : check sys/file.h first to get FREAD on Sun
8514 if $test `./findhdr sys/file.h` && \
8515                 set open3 -DI_SYS_FILE && eval $compile; then
8516         h_sysfile=true;
8517         echo "<sys/file.h> defines the O_* constants..." >&4
8518         if ./open3; then
8519                 echo "and you have the 3 argument form of open()." >&4
8520                 val="$define"
8521         else
8522                 echo "but not the 3 argument form of open().  Oh, well." >&4
8523                 val="$undef"
8524         fi
8525 elif $test `./findhdr fcntl.h` && \
8526                 set open3 -DI_FCNTL && eval $compile; then
8527         h_fcntl=true;
8528         echo "<fcntl.h> defines the O_* constants..." >&4
8529         if ./open3; then
8530                 echo "and you have the 3 argument form of open()." >&4
8531                 val="$define"
8532         else
8533                 echo "but not the 3 argument form of open().  Oh, well." >&4
8534                 val="$undef"
8535         fi
8536 else
8537         val="$undef"
8538         echo "I can't find the O_* constant definitions!  You got problems." >&4
8539 fi
8540 set d_open3
8541 eval $setvar
8542 $rm -f open3*
8543
8544 : see which of string.h or strings.h is needed
8545 echo " "
8546 strings=`./findhdr string.h`
8547 if $test "$strings" && $test -r "$strings"; then
8548         echo "Using <string.h> instead of <strings.h>." >&4
8549         val="$define"
8550 else
8551         val="$undef"
8552         strings=`./findhdr strings.h`
8553         if $test "$strings" && $test -r "$strings"; then
8554                 echo "Using <strings.h> instead of <string.h>." >&4
8555         else
8556                 echo "No string header found -- You'll surely have problems." >&4
8557         fi
8558 fi
8559 set i_string
8560 eval $setvar
8561 case "$i_string" in
8562 "$undef") strings=`./findhdr strings.h`;;
8563 *)        strings=`./findhdr string.h`;;
8564 esac
8565
8566 : check for non-blocking I/O stuff
8567 case "$h_sysfile" in
8568 true) echo "#include <sys/file.h>" > head.c;;
8569 *)
8570         case "$h_fcntl" in
8571         true) echo "#include <fcntl.h>" > head.c;;
8572         *) echo "#include <sys/fcntl.h>" > head.c;;
8573         esac
8574         ;;
8575 esac
8576 echo " "
8577 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8578 case "$o_nonblock" in
8579 '')
8580         $cat head.c > try.c
8581         $cat >>try.c <<'EOCP'
8582 #include <stdio.h>
8583 int main() {
8584 #ifdef O_NONBLOCK
8585         printf("O_NONBLOCK\n");
8586         exit(0);
8587 #endif
8588 #ifdef O_NDELAY
8589         printf("O_NDELAY\n");
8590         exit(0);
8591 #endif
8592 #ifdef FNDELAY
8593         printf("FNDELAY\n");
8594         exit(0);
8595 #endif
8596         exit(0);
8597 }
8598 EOCP
8599         set try
8600         if eval $compile_ok; then
8601                 o_nonblock=`./try`
8602                 case "$o_nonblock" in
8603                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8604                 *) echo "Seems like we can use $o_nonblock.";;
8605                 esac
8606         else
8607                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8608         fi
8609         ;;
8610 *) echo "Using $hint value $o_nonblock.";;
8611 esac
8612 $rm -f try try.* .out core
8613
8614 echo " "
8615 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8616 case "$eagain" in
8617 '')
8618         $cat head.c > try.c
8619         $cat >>try.c <<EOCP
8620 #include <errno.h>
8621 #include <sys/types.h>
8622 #include <signal.h>
8623 #include <stdio.h> 
8624 #define MY_O_NONBLOCK $o_nonblock
8625 #ifndef errno  /* XXX need better Configure test */
8626 extern int errno;
8627 #endif
8628 #$i_unistd I_UNISTD
8629 #ifdef I_UNISTD
8630 #include <unistd.h>
8631 #endif
8632 #$i_string I_STRING
8633 #ifdef I_STRING
8634 #include <string.h>
8635 #else
8636 #include <strings.h>
8637 #endif
8638 $signal_t blech(x) int x; { exit(3); }
8639 EOCP
8640         $cat >> try.c <<'EOCP'
8641 int main()
8642 {
8643         int pd[2];
8644         int pu[2];
8645         char buf[1];
8646         char string[100];
8647
8648         pipe(pd);       /* Down: child -> parent */
8649         pipe(pu);       /* Up: parent -> child */
8650         if (0 != fork()) {
8651                 int ret;
8652                 close(pd[1]);   /* Parent reads from pd[0] */
8653                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8654                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8655                         exit(1);
8656                 signal(SIGALRM, blech);
8657                 alarm(5);
8658                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8659                         exit(2);
8660                 sprintf(string, "%d\n", ret);
8661                 write(2, string, strlen(string));
8662                 alarm(0);
8663 #ifdef EAGAIN
8664                 if (errno == EAGAIN) {
8665                         printf("EAGAIN\n");
8666                         goto ok;
8667                 }
8668 #endif
8669 #ifdef EWOULDBLOCK
8670                 if (errno == EWOULDBLOCK)
8671                         printf("EWOULDBLOCK\n");
8672 #endif
8673         ok:
8674                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8675                 sleep(2);                               /* Give it time to close our pipe */
8676                 alarm(5);
8677                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8678                 alarm(0);
8679                 sprintf(string, "%d\n", ret);
8680                 write(3, string, strlen(string));
8681                 exit(0);
8682         }
8683
8684         close(pd[0]);                   /* We write to pd[1] */
8685         close(pu[1]);                   /* We read from pu[0] */
8686         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8687         close(pd[1]);                   /* Pipe pd is now fully closed! */
8688         exit(0);                                /* Bye bye, thank you for playing! */
8689 }
8690 EOCP
8691         set try
8692         if eval $compile_ok; then
8693                 echo "$startsh" >mtry
8694                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8695                 chmod +x mtry
8696                 ./mtry >/dev/null 2>&1
8697                 case $? in
8698                 0) eagain=`$cat try.out`;;
8699                 1) echo "Could not perform non-blocking setting!";;
8700                 2) echo "I did a successful read() for something that was not there!";;
8701                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8702                 *) echo "Something terribly wrong happened during testing.";;
8703                 esac
8704                 rd_nodata=`$cat try.ret`
8705                 echo "A read() system call with no data present returns $rd_nodata."
8706                 case "$rd_nodata" in
8707                 0|-1) ;;
8708                 *)
8709                         echo "(That's peculiar, fixing that to be -1.)"
8710                         rd_nodata=-1
8711                         ;;
8712                 esac
8713                 case "$eagain" in
8714                 '')
8715                         echo "Forcing errno EAGAIN on read() with no data available."
8716                         eagain=EAGAIN
8717                         ;;
8718                 *)
8719                         echo "Your read() sets errno to $eagain when no data is available."
8720                         ;;
8721                 esac
8722                 status=`$cat try.err`
8723                 case "$status" in
8724                 0) echo "And it correctly returns 0 to signal EOF.";;
8725                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8726                 *) echo "However, your read() returns '$status' on EOF??";;
8727                 esac
8728                 val="$define"
8729                 if test "$status" = "$rd_nodata"; then
8730                         echo "WARNING: you can't distinguish between EOF and no data!"
8731                         val="$undef"
8732                 fi
8733         else
8734                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8735                 eagain=EAGAIN
8736         fi
8737         set d_eofnblk
8738         eval $setvar
8739         ;;
8740 *)
8741         echo "Using $hint value $eagain."
8742         echo "Your read() returns $rd_nodata when no data is present."
8743         case "$d_eofnblk" in
8744         "$define") echo "And you can see EOF because read() returns 0.";;
8745         "$undef") echo "But you can't see EOF status from read() returned value.";;
8746         *)
8747                 echo "(Assuming you can't see EOF status from read anyway.)"
8748                 d_eofnblk=$undef
8749                 ;;
8750         esac
8751         ;;
8752 esac
8753 $rm -f try try.* .out core head.c mtry
8754
8755 : see if fchmod exists
8756 set fchmod d_fchmod
8757 eval $inlibc
8758
8759 : see if fchown exists
8760 set fchown d_fchown
8761 eval $inlibc
8762
8763 : see if this is an fcntl system
8764 set fcntl d_fcntl
8765 eval $inlibc
8766
8767 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8768 while $test $# -ge 2; do
8769         case "$1" in
8770         $define) echo "#include <$2>";;
8771         esac ;
8772     shift 2;
8773 done > try.c;
8774 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8775 set try;
8776 if eval $compile; then
8777         val="$define";
8778 else
8779         val="$undef";
8780 fi;
8781 set $varname;
8782 eval $setvar;
8783 $rm -f try.c try.o'
8784
8785 socketlib=''
8786 sockethdr=''
8787 : see whether socket exists
8788 echo " "
8789 $echo $n "Hmm... $c" >&4
8790 if set socket val -f d_socket; eval $csym; $val; then
8791         echo "Looks like you have Berkeley networking support." >&4
8792         d_socket="$define"
8793         if set setsockopt val -f; eval $csym; $val; then
8794                 d_oldsock="$undef"
8795         else
8796                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8797                 d_oldsock="$define"
8798         fi
8799 else
8800         if $contains socklib libc.list >/dev/null 2>&1; then
8801                 echo "Looks like you have Berkeley networking support." >&4
8802                 d_socket="$define"
8803                 : we will have to assume that it supports the 4.2 BSD interface
8804                 d_oldsock="$undef"
8805         else
8806                 echo "You don't have Berkeley networking in libc$_a..." >&4
8807                 if test "X$d_socket" = "X$define"; then
8808                    echo "...but you seem to believe that you have sockets." >&4
8809                 else
8810                         for net in net socket
8811                         do
8812                                 if test -f /usr/lib/lib$net$_a; then
8813                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8814                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8815                                         if $contains socket libc.list >/dev/null 2>&1; then
8816                                                 d_socket="$define"
8817                                                 socketlib="-l$net"
8818                                                 case "$net" in
8819                                                 net)
8820                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8821                                                         sockethdr="-I/usr/netinclude"
8822                                                         ;;
8823                                                 esac
8824                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8825                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8826                                                         d_oldsock="$undef"
8827                                                 else
8828                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8829                                                         d_oldsock="$define"
8830                                                 fi
8831                                                 break
8832                                         fi
8833                                 fi
8834                         done
8835                         if test "X$d_socket" != "X$define"; then
8836                            echo "or anywhere else I see." >&4
8837                            d_socket="$undef"
8838                            d_oldsock="$undef"
8839                         fi
8840                 fi
8841         fi
8842 fi
8843
8844 : see if socketpair exists
8845 set socketpair d_sockpair
8846 eval $inlibc
8847
8848
8849 echo " "
8850 echo "Checking the availability of certain socket constants..." >& 4
8851 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8852         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8853         $cat >try.c <<EOF
8854 #include <sys/types.h>
8855 #include <sys/socket.h>
8856 int main() {
8857     int i = $ENUM;
8858 }
8859 EOF
8860         val="$undef"
8861         set try; if eval $compile; then
8862                 val="$define"
8863         fi
8864         set d_${enum}; eval $setvar
8865         $rm -f try.c try
8866 done
8867
8868 : see if sys/select.h has to be included
8869 set sys/select.h i_sysselct
8870 eval $inhdr
8871
8872 : see if we should include time.h, sys/time.h, or both
8873 echo " "
8874 if test "X$timeincl" = X; then
8875         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8876         $echo $n "I'm now running the test program...$c"
8877         $cat >try.c <<'EOCP'
8878 #include <sys/types.h>
8879 #ifdef I_TIME
8880 #include <time.h>
8881 #endif
8882 #ifdef I_SYSTIME
8883 #ifdef SYSTIMEKERNEL
8884 #define KERNEL
8885 #endif
8886 #include <sys/time.h>
8887 #endif
8888 #ifdef I_SYSSELECT
8889 #include <sys/select.h>
8890 #endif
8891 int main()
8892 {
8893         struct tm foo;
8894 #ifdef S_TIMEVAL
8895         struct timeval bar;
8896 #endif
8897 #ifdef S_TIMEZONE
8898         struct timezone tzp;
8899 #endif
8900         if (foo.tm_sec == foo.tm_sec)
8901                 exit(0);
8902 #ifdef S_TIMEVAL
8903         if (bar.tv_sec == bar.tv_sec)
8904                 exit(0);
8905 #endif
8906         exit(1);
8907 }
8908 EOCP
8909         flags=''
8910         for s_timezone in '-DS_TIMEZONE' ''; do
8911         sysselect=''
8912         for s_timeval in '-DS_TIMEVAL' ''; do
8913         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8914         for i_time in '' '-DI_TIME'; do
8915         for i_systime in '-DI_SYSTIME' ''; do
8916                 case "$flags" in
8917                 '') $echo $n ".$c"
8918                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8919                         if eval $compile; then
8920                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8921                                 shift
8922                                 flags="$*"
8923                                 echo " "
8924                                 $echo $n "Succeeded with $flags$c"
8925                         fi
8926                         ;;
8927                 esac
8928         done
8929         done
8930         done
8931         done
8932         done
8933         timeincl=''
8934         echo " "
8935         case "$flags" in
8936         *SYSTIMEKERNEL*) i_systimek="$define"
8937                 timeincl=`./findhdr sys/time.h`
8938                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8939         *) i_systimek="$undef";;
8940         esac
8941         case "$flags" in
8942         *I_TIME*) i_time="$define"
8943                 timeincl=`./findhdr time.h`" $timeincl"
8944                 echo "We'll include <time.h>." >&4;;
8945         *) i_time="$undef";;
8946         esac
8947         case "$flags" in
8948         *I_SYSTIME*) i_systime="$define"
8949                 timeincl=`./findhdr sys/time.h`" $timeincl"
8950                 echo "We'll include <sys/time.h>." >&4;;
8951         *) i_systime="$undef";;
8952         esac
8953         $rm -f try.c try
8954 fi
8955
8956 : check for fd_set items
8957 $cat <<EOM
8958
8959 Checking to see how well your C compiler handles fd_set and friends ...
8960 EOM
8961 $cat >fd_set.c <<EOCP
8962 #$i_systime I_SYS_TIME
8963 #$i_sysselct I_SYS_SELECT
8964 #$d_socket HAS_SOCKET
8965 #include <sys/types.h>
8966 #ifdef HAS_SOCKET
8967 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8968 #endif
8969 #ifdef I_SYS_TIME
8970 #include <sys/time.h>
8971 #endif
8972 #ifdef I_SYS_SELECT
8973 #include <sys/select.h>
8974 #endif
8975 int main() {
8976         fd_set fds;
8977
8978 #ifdef TRYBITS
8979         if(fds.fds_bits);
8980 #endif
8981
8982 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8983         exit(0);
8984 #else
8985         exit(1);
8986 #endif
8987 }
8988 EOCP
8989 set fd_set -DTRYBITS
8990 if eval $compile; then
8991         d_fds_bits="$define"
8992         d_fd_set="$define"
8993         echo "Well, your system knows about the normal fd_set typedef..." >&4
8994         if ./fd_set; then
8995                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8996                 d_fd_macros="$define"
8997         else
8998                 $cat >&4 <<'EOM'
8999 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9000 EOM
9001                 d_fd_macros="$undef"
9002         fi
9003 else
9004         $cat <<'EOM'
9005 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9006 EOM
9007         set fd_set
9008         if eval $compile; then
9009                 d_fds_bits="$undef"
9010                 d_fd_set="$define"
9011                 echo "Well, your system has some sort of fd_set available..." >&4
9012                 if ./fd_set; then
9013                         echo "and you have the normal fd_set macros." >&4
9014                         d_fd_macros="$define"
9015                 else
9016                         $cat <<'EOM'
9017 but not the normal fd_set macros!  Gross!  More work for me...
9018 EOM
9019                         d_fd_macros="$undef"
9020                 fi
9021         else
9022         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9023                 d_fd_set="$undef"
9024                 d_fds_bits="$undef"
9025                 d_fd_macros="$undef"
9026         fi
9027 fi
9028 $rm -f fd_set*
9029
9030 : see if fgetpos exists
9031 set fgetpos d_fgetpos
9032 eval $inlibc
9033
9034 : see if flock exists
9035 set flock d_flock
9036 eval $inlibc
9037
9038 : see if fork exists
9039 set fork d_fork
9040 eval $inlibc
9041
9042 : see if pathconf exists
9043 set pathconf d_pathconf
9044 eval $inlibc
9045
9046 : see if fpathconf exists
9047 set fpathconf d_fpathconf
9048 eval $inlibc
9049
9050
9051 : check for fpos64_t
9052 echo " "
9053 echo "Checking to see if you have fpos64_t..." >&4
9054 $cat >try.c <<EOCP
9055 #include <stdio.h>
9056 int main() { fpos64_t x = 7; }
9057 EOCP
9058 set try
9059 if eval $compile; then
9060         val="$define"
9061         echo "You have fpos64_t."
9062 else
9063         val="$undef"
9064         echo "You do not have fpos64_t."
9065         case "$fpossize" in
9066         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9067         esac
9068 fi
9069 $rm -f try.* try
9070 set d_fpos64_t
9071 eval $setvar
9072
9073 : see if frexpl exists
9074 set frexpl d_frexpl
9075 eval $inlibc
9076
9077 hasstruct='varname=$1; struct=$2; shift; shift;
9078 while $test $# -ge 2; do
9079         case "$1" in
9080         $define) echo "#include <$2>";;
9081         esac ;
9082     shift 2;
9083 done > try.c;
9084 echo "int main () { struct $struct foo; }" >> try.c;
9085 set try;
9086 if eval $compile; then
9087         val="$define";
9088 else
9089         val="$undef";
9090 fi;
9091 set $varname;
9092 eval $setvar;
9093 $rm -f try.c try.o'
9094
9095 : see if this is a sys/param system
9096 set sys/param.h i_sysparam
9097 eval $inhdr
9098
9099 : see if this is a sys/mount.h system
9100 set sys/mount.h i_sysmount
9101 eval $inhdr
9102
9103 : see if sys/types.h has to be included
9104 set sys/types.h i_systypes
9105 eval $inhdr
9106
9107
9108 echo " "
9109 echo "Checking to see if your system supports struct fs_data..." >&4
9110 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9111 eval $hasstruct
9112 case "$d_fs_data_s" in
9113 "$define")      echo "Yes, it does."   ;;
9114 *)              echo "No, it doesn't." ;;
9115 esac
9116
9117 : see if fseeko exists
9118 set fseeko d_fseeko
9119 eval $inlibc
9120 case "$longsize" in
9121 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9122 esac
9123
9124 : see if fsetpos exists
9125 set fsetpos d_fsetpos
9126 eval $inlibc
9127
9128
9129 : see if fstatfs exists
9130 set fstatfs d_fstatfs
9131 eval $inlibc
9132
9133
9134 : see if statvfs exists
9135 set statvfs d_statvfs
9136 eval $inlibc
9137
9138 : see if fstatvfs exists
9139 set fstatvfs d_fstatvfs
9140 eval $inlibc
9141
9142
9143 : see if ftello exists
9144 set ftello d_ftello
9145 eval $inlibc
9146 case "$longsize" in
9147 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9148 esac
9149
9150 : see if getcwd exists
9151 set getcwd d_getcwd
9152 eval $inlibc
9153
9154
9155 : see if getfsstat exists
9156 set getfsstat d_getfsstat
9157 eval $inlibc
9158
9159 : see if getgrent exists
9160 set getgrent d_getgrent
9161 eval $inlibc
9162
9163 : see if gethostbyaddr exists
9164 set gethostbyaddr d_gethbyaddr
9165 eval $inlibc
9166
9167 : see if gethostbyname exists
9168 set gethostbyname d_gethbyname
9169 eval $inlibc
9170
9171 : see if gethostent exists
9172 set gethostent d_gethent
9173 eval $inlibc
9174
9175 : see how we will look up host name
9176 echo " "
9177 call=''
9178 if set gethostname val -f d_gethname; eval $csym; $val; then
9179         echo 'gethostname() found.' >&4
9180         d_gethname="$define"
9181         call=gethostname
9182 fi
9183 if set uname val -f d_uname; eval $csym; $val; then
9184         if ./xenix; then
9185                 $cat <<'EOM'
9186 uname() was found, but you're running xenix, and older versions of xenix
9187 have a broken uname(). If you don't really know whether your xenix is old
9188 enough to have a broken system call, use the default answer.
9189
9190 EOM
9191                 dflt=y
9192                 case "$d_uname" in
9193                 "$define") dflt=n;;
9194                 esac
9195                 rp='Is your uname() broken?'
9196                 . ./myread
9197                 case "$ans" in
9198                 n*) d_uname="$define"; call=uname;;
9199                 esac
9200         else
9201                 echo 'uname() found.' >&4
9202                 d_uname="$define"
9203                 case "$call" in
9204                 '') call=uname ;;
9205                 esac
9206         fi
9207 fi
9208 case "$d_gethname" in
9209 '') d_gethname="$undef";;
9210 esac
9211 case "$d_uname" in
9212 '') d_uname="$undef";;
9213 esac
9214 case "$d_uname$d_gethname" in
9215 *define*)
9216         dflt=n
9217         cat <<EOM
9218  
9219 Every now and then someone has a $call() that lies about the hostname
9220 but can't be fixed for political or economic reasons.  If you wish, I can
9221 pretend $call() isn't there and maybe compute hostname at run-time
9222 thanks to the '$phostname' command.
9223
9224 EOM
9225         rp="Shall I ignore $call() from now on?"
9226         . ./myread
9227         case "$ans" in
9228         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9229         esac;;
9230 esac
9231 case "$phostname" in
9232 '') aphostname='';;
9233 *) case "$aphostname" in
9234         /*) ;;
9235         *) set X $phostname
9236                 shift
9237                 file=$1
9238                 shift
9239                 file=`./loc $file $file $pth`
9240                 aphostname=`echo $file $*`
9241                 ;;
9242         esac
9243         ;;
9244 esac
9245 case "$d_uname$d_gethname" in
9246 *define*) ;;
9247 *)
9248         case "$phostname" in
9249         '')
9250                 echo "There will be no way for $package to get your hostname." >&4;;
9251         *)
9252         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9253                 ;;
9254         esac;;
9255 esac
9256 case "$d_phostname" in
9257 '') d_phostname="$undef";;
9258 esac
9259
9260 : see if this is a netdb.h system
9261 set netdb.h i_netdb
9262 eval $inhdr
9263
9264 : see if prototypes for various gethostxxx netdb.h functions are available
9265 echo " "
9266 set d_gethostprotos gethostent $i_netdb netdb.h
9267 eval $hasproto
9268
9269 : see if getlogin exists
9270 set getlogin d_getlogin
9271 eval $inlibc
9272
9273 : see if getmnt exists
9274 set getmnt d_getmnt
9275 eval $inlibc
9276
9277 : see if getmntent exists
9278 set getmntent d_getmntent
9279 eval $inlibc
9280
9281 : see if getnetbyaddr exists
9282 set getnetbyaddr d_getnbyaddr
9283 eval $inlibc
9284
9285 : see if getnetbyname exists
9286 set getnetbyname d_getnbyname
9287 eval $inlibc
9288
9289 : see if getnetent exists
9290 set getnetent d_getnent
9291 eval $inlibc
9292
9293 : see if prototypes for various getnetxxx netdb.h functions are available
9294 echo " "
9295 set d_getnetprotos getnetent $i_netdb netdb.h
9296 eval $hasproto
9297
9298
9299 : see if getprotobyname exists
9300 set getprotobyname d_getpbyname
9301 eval $inlibc
9302
9303 : see if getprotobynumber exists
9304 set getprotobynumber d_getpbynumber
9305 eval $inlibc
9306
9307 : see if getprotoent exists
9308 set getprotoent d_getpent
9309 eval $inlibc
9310
9311 : see if getpgid exists
9312 set getpgid d_getpgid
9313 eval $inlibc
9314
9315 : see if getpgrp2 exists
9316 set getpgrp2 d_getpgrp2
9317 eval $inlibc
9318
9319 : see if getppid exists
9320 set getppid d_getppid
9321 eval $inlibc
9322
9323 : see if getpriority exists
9324 set getpriority d_getprior
9325 eval $inlibc
9326
9327 : see if prototypes for various getprotoxxx netdb.h functions are available
9328 echo " "
9329 set d_getprotoprotos getprotoent $i_netdb netdb.h
9330 eval $hasproto
9331
9332 : see if getpwent exists
9333 set getpwent d_getpwent
9334 eval $inlibc
9335
9336
9337 : see if getservbyname exists
9338 set getservbyname d_getsbyname
9339 eval $inlibc
9340
9341 : see if getservbyport exists
9342 set getservbyport d_getsbyport
9343 eval $inlibc
9344
9345 : see if getservent exists
9346 set getservent d_getsent
9347 eval $inlibc
9348
9349 : see if prototypes for various getservxxx netdb.h functions are available
9350 echo " "
9351 set d_getservprotos getservent $i_netdb netdb.h
9352 eval $hasproto
9353
9354 : see if getspent exists
9355 set getspent d_getspent
9356 eval $inlibc
9357
9358 : see if getspnam exists
9359 set getspnam d_getspnam
9360 eval $inlibc
9361
9362 : see if gettimeofday or ftime exists
9363 set gettimeofday d_gettimeod
9364 eval $inlibc
9365 case "$d_gettimeod" in
9366 "$undef")
9367         set ftime d_ftime 
9368         eval $inlibc
9369         ;;
9370 *)
9371         val="$undef"; set d_ftime; eval $setvar
9372         ;;
9373 esac
9374 case "$d_gettimeod$d_ftime" in
9375 "$undef$undef")
9376         echo " "
9377         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9378         ;;
9379 esac
9380
9381 : see if this is an grp system
9382 set grp.h i_grp
9383 eval $inhdr
9384
9385 case "$i_grp" in
9386 $define)
9387         xxx=`./findhdr grp.h`
9388         $cppstdin $cppflags $cppminus < $xxx >$$.h
9389
9390         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9391                 val="$define"
9392         else
9393                 val="$undef"
9394         fi
9395         set d_grpasswd
9396         eval $setvar
9397
9398         $rm -f $$.h
9399         ;;
9400 *)
9401         val="$undef";
9402         set d_grpasswd; eval $setvar
9403         ;;
9404 esac
9405
9406 : see if hasmntopt exists
9407 set hasmntopt d_hasmntopt
9408 eval $inlibc
9409
9410 : see if this is a netinet/in.h or sys/in.h system
9411 set netinet/in.h i_niin sys/in.h i_sysin
9412 eval $inhdr
9413
9414 : see if arpa/inet.h has to be included
9415 set arpa/inet.h i_arpainet
9416 eval $inhdr
9417
9418 : see if htonl --and friends-- exists
9419 val=''
9420 set htonl val
9421 eval $inlibc
9422
9423 : Maybe they are macros.
9424 case "$val" in
9425 $undef)
9426         $cat >htonl.c <<EOM
9427 #include <stdio.h>
9428 #include <sys/types.h>
9429 #$i_niin I_NETINET_IN
9430 #$i_sysin I_SYS_IN
9431 #$i_arpainet I_ARPA_INET
9432 #ifdef I_NETINET_IN
9433 #include <netinet/in.h>
9434 #endif
9435 #ifdef I_SYS_IN
9436 #include <sys/in.h>
9437 #endif
9438 #ifdef I_ARPA_INET
9439 #include <arpa/inet.h>
9440 #endif
9441 #ifdef htonl
9442 printf("Defined as a macro.");
9443 #endif
9444 EOM
9445         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9446         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9447                 val="$define"
9448                 echo "But it seems to be defined as a macro." >&4
9449         fi
9450         $rm -f htonl.?
9451         ;;
9452 esac
9453 set d_htonl
9454 eval $setvar
9455
9456 : see if iconv exists
9457 set iconv d_iconv
9458 eval $inlibc
9459
9460 : index or strchr
9461 echo " "
9462 if set index val -f; eval $csym; $val; then
9463         if set strchr val -f d_strchr; eval $csym; $val; then
9464                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9465                         val="$define"
9466                         vali="$undef"
9467                         echo "strchr() found." >&4
9468                 else
9469                         val="$undef"
9470                         vali="$define"
9471                         echo "index() found." >&4
9472                 fi
9473         else
9474                 val="$undef"
9475                 vali="$define"
9476                 echo "index() found." >&4
9477         fi
9478 else
9479         if set strchr val -f d_strchr; eval $csym; $val; then
9480                 val="$define"
9481                 vali="$undef"
9482                 echo "strchr() found." >&4
9483         else
9484                 echo "No index() or strchr() found!" >&4
9485                 val="$undef"
9486                 vali="$undef"
9487         fi
9488 fi
9489 set d_strchr; eval $setvar
9490 val="$vali"
9491 set d_index; eval $setvar
9492
9493 : check whether inet_aton exists
9494 set inet_aton d_inetaton
9495 eval $inlibc
9496
9497 : see if inttypes.h is available
9498 : we want a real compile instead of Inhdr because some systems
9499 : have an inttypes.h which includes non-existent headers
9500 echo " "
9501 $cat >try.c <<EOCP
9502 #include <inttypes.h>
9503 int main() {
9504         static int32_t foo32 = 0x12345678;
9505 }
9506 EOCP
9507 set try
9508 if eval $compile; then
9509         echo "<inttypes.h> found." >&4
9510         val="$define"
9511 else
9512         echo "<inttypes.h> NOT found." >&4
9513         val="$undef"
9514 fi
9515 $rm -f try.c try
9516 set i_inttypes
9517 eval $setvar
9518
9519 : check for int64_t
9520 echo " "
9521 echo "Checking to see if you have int64_t..." >&4
9522 $cat >try.c <<EOCP
9523 #include <sys/types.h>
9524 #$i_inttypes I_INTTYPES
9525 #ifdef I_INTTYPES
9526 #include <inttypes.h>
9527 #endif
9528 int main() { int64_t x = 7; }
9529 EOCP
9530 set try
9531 if eval $compile; then
9532         val="$define"
9533         echo "You have int64_t."
9534 else
9535         val="$undef"
9536         echo "You do not have int64_t."
9537 fi
9538 $rm -f try try.*
9539 set d_int64_t
9540 eval $setvar
9541
9542 : Look for isascii
9543 echo " "
9544 $cat >isascii.c <<'EOCP'
9545 #include <stdio.h>
9546 #include <ctype.h>
9547 int main() {
9548         int c = 'A';
9549         if (isascii(c))
9550                 exit(0);
9551         else
9552                 exit(1);
9553 }
9554 EOCP
9555 set isascii
9556 if eval $compile; then
9557         echo "isascii() found." >&4
9558         val="$define"
9559 else
9560         echo "isascii() NOT found." >&4
9561         val="$undef"
9562 fi
9563 set d_isascii
9564 eval $setvar
9565 $rm -f isascii*
9566
9567 : see if isnan exists
9568 set isnan d_isnan
9569 eval $inlibc
9570
9571 : see if isnanl exists
9572 set isnanl d_isnanl
9573 eval $inlibc
9574
9575 : see if killpg exists
9576 set killpg d_killpg
9577 eval $inlibc
9578
9579 : see if lchown exists
9580 echo " "
9581 $cat > try.c <<'EOCP'
9582 /* System header to define __stub macros and hopefully few prototypes,
9583     which can conflict with char lchown(); below.  */
9584 #include <assert.h>
9585 /* Override any gcc2 internal prototype to avoid an error.  */
9586 /* We use char because int might match the return type of a gcc2
9587    builtin and then its argument prototype would still apply.  */
9588 char lchown();
9589 int main() {
9590     /*  The GNU C library defines this for functions which it implements
9591         to always fail with ENOSYS.  Some functions are actually named
9592         something starting with __ and the normal name is an alias.  */
9593 #if defined (__stub_lchown) || defined (__stub___lchown)
9594 choke me
9595 #else
9596 lchown();
9597 #endif
9598 ; return 0; }
9599 EOCP
9600 set try
9601 if eval $compile; then
9602     $echo "lchown() found." >&4
9603     val="$define"
9604 else
9605     $echo "lchown() NOT found." >&4
9606     val="$undef"
9607 fi
9608 set d_lchown
9609 eval $setvar
9610
9611 : See if number of significant digits in a double precision number is known
9612 echo " "
9613 $cat >ldbl_dig.c <<EOM
9614 #$i_limits I_LIMITS
9615 #$i_float I_FLOAT
9616 #ifdef I_LIMITS
9617 #include <limits.h>
9618 #endif
9619 #ifdef I_FLOAT
9620 #include <float.h>
9621 #endif
9622 #ifdef LDBL_DIG
9623 printf("Contains LDBL_DIG");
9624 #endif
9625 EOM
9626 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9627 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9628         echo "LDBL_DIG found." >&4
9629         val="$define"
9630 else
9631         echo "LDBL_DIG NOT found." >&4
9632         val="$undef"
9633 fi
9634 $rm -f ldbl_dig.?
9635 set d_ldbl_dig
9636 eval $setvar
9637
9638 : see if link exists
9639 set link d_link
9640 eval $inlibc
9641
9642 : see if localeconv exists
9643 set localeconv d_locconv
9644 eval $inlibc
9645
9646 : see if lockf exists
9647 set lockf d_lockf
9648 eval $inlibc
9649
9650 : check for long long
9651 echo " "
9652 echo "Checking to see if you have long long..." >&4
9653 echo 'int main() { long long x = 7; return 0; }' > try.c
9654 set try
9655 if eval $compile; then
9656         val="$define"
9657         echo "You have have long long."
9658 else
9659         val="$undef"
9660         echo "You do not have long long."
9661 fi
9662 $rm try.*
9663 set d_longlong
9664 eval $setvar
9665
9666 : check for length of long long
9667 case "${d_longlong}${longlongsize}" in
9668 $define)
9669         echo " "
9670         echo "Checking to see how big your long longs are..." >&4
9671         $cat >try.c <<'EOCP'
9672 #include <stdio.h>
9673 int main()
9674 {
9675     printf("%d\n", (int)sizeof(long long));
9676     return(0);
9677 }
9678 EOCP
9679         set try
9680         if eval $compile_ok; then
9681                 longlongsize=`./try$exe_ext`
9682                 echo "Your long longs are $longlongsize bytes long."
9683         else
9684                 dflt='8'
9685                 echo " "
9686                 echo "(I can't seem to compile the test program.  Guessing...)"
9687                 rp="What is the size of a long long (in bytes)?"
9688                 . ./myread
9689                 longlongsize="$ans"
9690         fi
9691         if $test "X$longsize" = "X$longlongsize"; then
9692                 echo "(That isn't any different from an ordinary long.)"
9693         fi      
9694         ;;
9695 esac
9696 $rm -f try.* try
9697
9698 : see if prototype for lseek is available
9699 echo " "
9700 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9701 eval $hasproto
9702
9703 : see if lstat exists
9704 set lstat d_lstat
9705 eval $inlibc
9706
9707 : see if madvise exists
9708 set madvise d_madvise
9709 eval $inlibc
9710
9711 : see if mblen exists
9712 set mblen d_mblen
9713 eval $inlibc
9714
9715 : see if mbstowcs exists
9716 set mbstowcs d_mbstowcs
9717 eval $inlibc
9718
9719 : see if mbtowc exists
9720 set mbtowc d_mbtowc
9721 eval $inlibc
9722
9723 : see if memchr exists
9724 set memchr d_memchr
9725 eval $inlibc
9726
9727 : see if memcmp exists
9728 set memcmp d_memcmp
9729 eval $inlibc
9730
9731 : see if memcpy exists
9732 set memcpy d_memcpy
9733 eval $inlibc
9734
9735 : see if memmove exists
9736 set memmove d_memmove
9737 eval $inlibc
9738
9739 : see if memset exists
9740 set memset d_memset
9741 eval $inlibc
9742
9743 : see if mkdir exists
9744 set mkdir d_mkdir
9745 eval $inlibc
9746
9747 : see if mkdtemp exists
9748 set mkdtemp d_mkdtemp
9749 eval $inlibc
9750
9751 : see if mkfifo exists
9752 set mkfifo d_mkfifo
9753 eval $inlibc
9754
9755 : see if mkstemp exists
9756 set mkstemp d_mkstemp
9757 eval $inlibc
9758
9759 : see if mkstemps exists
9760 set mkstemps d_mkstemps
9761 eval $inlibc
9762
9763 : see if mktime exists
9764 set mktime d_mktime
9765 eval $inlibc
9766
9767 : see if this is a sys/mman.h system
9768 set sys/mman.h i_sysmman
9769 eval $inhdr
9770
9771 : see if mmap exists
9772 set mmap d_mmap
9773 eval $inlibc
9774 : see what shmat returns
9775 : default to something harmless
9776 mmaptype='void *'
9777 case "$i_sysmman$d_mmap" in
9778 "$define$define")
9779         $cat >mmap.c <<'END'
9780 #include <sys/mman.h>
9781 void *mmap();
9782 END
9783         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9784                 mmaptype='void *'
9785         else
9786                 mmaptype='caddr_t'
9787         fi
9788         echo "and it returns ($mmaptype)." >&4
9789         ;;
9790 esac
9791
9792
9793
9794 : see if modfl exists
9795 set modfl d_modfl
9796 eval $inlibc
9797
9798 : see if mprotect exists
9799 set mprotect d_mprotect
9800 eval $inlibc
9801
9802 : see if msgctl exists
9803 set msgctl d_msgctl
9804 eval $inlibc
9805
9806 : see if msgget exists
9807 set msgget d_msgget
9808 eval $inlibc
9809
9810 : see if msgsnd exists
9811 set msgsnd d_msgsnd
9812 eval $inlibc
9813
9814 : see if msgrcv exists
9815 set msgrcv d_msgrcv
9816 eval $inlibc
9817
9818 : see how much of the 'msg*(2)' library is present.
9819 h_msg=true
9820 echo " "
9821 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9822 *"$undef"*) h_msg=false;;
9823 esac
9824 case "$osname" in
9825 freebsd)
9826     case "`ipcs 2>&1`" in
9827     "SVID messages"*"not configured"*)
9828         echo "Your $osname does not have the msg*(2) configured." >&4
9829         h_msg=false
9830         val="$undef"
9831         set msgctl d_msgctl
9832         eval $setvar
9833         set msgget d_msgget
9834         eval $setvar
9835         set msgsnd d_msgsnd
9836         eval $setvar
9837         set msgrcv d_msgrcv
9838         eval $setvar
9839         ;;
9840     esac
9841     ;;
9842 esac
9843 : we could also check for sys/ipc.h ...
9844 if $h_msg && $test `./findhdr sys/msg.h`; then
9845         echo "You have the full msg*(2) library." >&4
9846         val="$define"
9847 else
9848         echo "You don't have the full msg*(2) library." >&4
9849         val="$undef"
9850 fi
9851 set d_msg
9852 eval $setvar
9853
9854 : see if msync exists
9855 set msync d_msync
9856 eval $inlibc
9857
9858 : see if munmap exists
9859 set munmap d_munmap
9860 eval $inlibc
9861
9862 : see if nice exists
9863 set nice d_nice
9864 eval $inlibc
9865
9866
9867 echo " "
9868 echo "Checking which 64-bit integer type we could use..." >&4
9869
9870 case "$intsize" in
9871 8) val=int
9872    set quadtype
9873    eval $setvar
9874    val='"unsigned int"'
9875    set uquadtype
9876    eval $setvar
9877    quadkind=1
9878    ;;
9879 *) case "$longsize" in
9880    8) val=long
9881       set quadtype
9882       eval $setvar
9883       val='"unsigned long"'
9884       set uquadtype
9885       eval $setvar
9886       quadkind=2
9887       ;;
9888    *) case "$d_longlong:$longlongsize" in
9889       define:8)
9890         val='"long long"'
9891         set quadtype
9892         eval $setvar
9893         val='"unsigned long long"'
9894         set uquadtype
9895         eval $setvar
9896         quadkind=3
9897         ;;
9898       *) case "$d_int64_t" in
9899          define)
9900            val=int64_t
9901            set quadtype
9902            eval $setvar
9903            val=uint64_t
9904            set uquadtype
9905            eval $setvar
9906            quadkind=4
9907            ;;
9908          esac
9909          ;;
9910       esac
9911       ;;
9912    esac
9913    ;;
9914 esac
9915
9916 case "$quadtype" in
9917 '')     echo "Alas, no 64-bit integer types in sight." >&4
9918         d_quad="$undef"
9919         ;;
9920 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9921             verb="will"
9922         else
9923             verb="could"
9924         fi
9925         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9926         d_quad="$define"
9927         ;;
9928 esac
9929
9930 : check for length of character
9931 echo " "
9932 case "$charsize" in
9933 '')
9934         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9935         $cat >try.c <<'EOCP'
9936 #include <stdio.h>
9937 int main()
9938 {
9939     printf("%d\n", (int)sizeof(char));
9940     exit(0);
9941 }
9942 EOCP
9943         set try
9944         if eval $compile_ok; then
9945                 dflt=`./try`
9946         else
9947                 dflt='1'
9948                 echo "(I can't seem to compile the test program.  Guessing...)"
9949         fi
9950         ;;
9951 *)
9952         dflt="$charsize"
9953         ;;
9954 esac
9955 rp="What is the size of a character (in bytes)?"
9956 . ./myread
9957 charsize="$ans"
9958 $rm -f try.c try
9959
9960
9961 echo " "
9962 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9963
9964 case "$use64bitint:$d_quad:$quadtype" in
9965 define:define:?*)
9966         ivtype="$quadtype"
9967         uvtype="$uquadtype"
9968         ivsize=8
9969         uvsize=8
9970         ;;
9971 *)      ivtype="long"
9972         uvtype="unsigned long"
9973         ivsize=$longsize
9974         uvsize=$longsize
9975         ;;
9976 esac
9977
9978 case "$uselongdouble:$d_longdbl" in
9979 define:define)
9980         nvtype="long double"
9981         nvsize=$longdblsize
9982         ;;
9983 *)      nvtype=double
9984         nvsize=$doublesize
9985         ;;
9986 esac
9987
9988 $echo "(IV will be "$ivtype", $ivsize bytes)"
9989 $echo "(UV will be "$uvtype", $uvsize bytes)"
9990 $echo "(NV will be "$nvtype", $nvsize bytes)"
9991
9992 $cat >try.c <<EOCP
9993 #$i_inttypes I_INTTYPES
9994 #ifdef I_INTTYPES
9995 #include <inttypes.h>
9996 #endif
9997 #include <stdio.h>
9998 int main() {
9999 #ifdef INT8
10000    int8_t i =  INT8_MAX;
10001   uint8_t u = UINT8_MAX;
10002   printf("int8_t\n");
10003 #endif
10004 #ifdef INT16
10005    int16_t i =  INT16_MAX;
10006   uint16_t i = UINT16_MAX;
10007   printf("int16_t\n");
10008 #endif
10009 #ifdef INT32
10010    int32_t i =  INT32_MAX;
10011   uint32_t u = UINT32_MAX;
10012   printf("int32_t\n");
10013 #endif
10014 }
10015 EOCP
10016
10017 case "$i8type" in
10018 '')     case "$charsize" in
10019         1)      i8type=char
10020                 u8type="unsigned char"
10021                 i8size=$charsize
10022                 u8size=$charsize
10023                 ;;
10024         esac
10025         ;;
10026 esac
10027 case "$i8type" in
10028 '')     set try -DINT8
10029         if eval $compile; then
10030                 case "`./try$exe_ext`" in
10031                 int8_t) i8type=int8_t
10032                         u8type=uint8_t
10033                         i8size=1
10034                         u8size=1
10035                         ;;
10036                 esac
10037         fi
10038         ;;
10039 esac
10040 case "$i8type" in
10041 '')     if $test $charsize -ge 1; then
10042                 i8type=char
10043                 u8type="unsigned char"
10044                 i8size=$charsize
10045                 u8size=$charsize
10046         fi
10047         ;;
10048 esac
10049
10050 case "$i16type" in
10051 '')     case "$shortsize" in
10052         2)      i16type=short
10053                 u16type="unsigned short"
10054                 i16size=$shortsize
10055                 u16size=$shortsize
10056                 ;;
10057         esac
10058         ;;
10059 esac
10060 case "$i16type" in
10061 '')     set try -DINT16
10062         if eval $compile; then
10063                 case "`./try$exe_ext`" in
10064                 int16_t)
10065                         i16type=int16_t
10066                         u16type=uint16_t
10067                         i16size=2
10068                         u16size=2
10069                         ;;
10070                 esac
10071         fi
10072         ;;
10073 esac
10074 case "$i16type" in
10075 '')     if $test $shortsize -ge 2; then
10076                 i16type=short
10077                 u16type="unsigned short"
10078                 i16size=$shortsize
10079                 u16size=$shortsize
10080         fi
10081         ;;
10082 esac
10083
10084 case "$i32type" in
10085 '')     case "$longsize" in
10086         4)      i32type=long
10087                 u32type="unsigned long"
10088                 i32size=$longsize
10089                 u32size=$longsize
10090                 ;;
10091         *)      case "$intsize" in
10092                 4)      i32type=int
10093                         u32type="unsigned int"
10094                         i32size=$intsize
10095                         u32size=$intsize
10096                         ;;
10097                 esac
10098                 ;;
10099         esac
10100         ;;
10101 esac
10102 case "$i32type" in
10103 '')     set try -DINT32
10104         if eval $compile; then
10105                 case "`./try$exe_ext`" in
10106                 int32_t)
10107                         i32type=int32_t
10108                         u32type=uint32_t
10109                         i32size=4
10110                         u32size=4
10111                         ;;
10112                 esac
10113         fi
10114         ;;
10115 esac
10116 case "$i32type" in
10117 '')     if $test $intsize -ge 4; then
10118                 i32type=int
10119                 u32type="unsigned int"
10120                 i32size=$intsize
10121                 u32size=$intsize
10122         fi
10123         ;;
10124 esac
10125
10126 case "$i64type" in
10127 '')     case "$d_quad:$quadtype" in
10128         define:?*)
10129                 i64type="$quadtype"
10130                 u64type="$uquadtype"
10131                 i64size=8
10132                 u64size=8
10133                 ;;
10134         esac
10135         ;;
10136 esac
10137
10138 $echo "Checking whether your NVs can preserve your UVs..." >&4
10139 $cat <<EOP >try.c
10140 #include <stdio.h>
10141 int main() {
10142     $uvtype k = ($uvtype)~0, l;
10143     $nvtype d;
10144     l = k;
10145     d = ($nvtype)l;
10146     l = ($uvtype)d;
10147     if (l == k)
10148        printf("preserve\n");
10149     exit(0);
10150 }
10151 EOP
10152 set try
10153 if eval $compile; then
10154         case "`./try$exe_ext`" in
10155         preserve) d_nv_preserves_uv="$define" ;;
10156         esac
10157 fi      
10158 case "$d_nv_preserves_uv" in
10159 $define) $echo "Yes, they can."  2>&1 ;;
10160 *)       $echo "No, they can't." 2>&1
10161          d_nv_preserves_uv="$undef"
10162          ;;
10163 esac
10164
10165 $rm -f try.* try
10166
10167
10168 : check for off64_t
10169 echo " "
10170 echo "Checking to see if you have off64_t..." >&4
10171 $cat >try.c <<EOCP
10172 #include <sys/types.h>
10173 #include <unistd.h>
10174 int main() { off64_t x = 7; }
10175 EOCP
10176 set try
10177 if eval $compile; then
10178         val="$define"
10179         echo "You have off64_t."
10180 else
10181         val="$undef"
10182         echo "You do not have off64_t."
10183         case "$lseeksize" in
10184         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10185         esac
10186 fi
10187 $rm -f try.* try
10188 set d_off64_t
10189 eval $setvar
10190
10191 : see if POSIX threads are available
10192 set pthread.h i_pthread
10193 eval $inhdr
10194
10195
10196
10197
10198 : how to create joinable pthreads
10199 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10200         echo " "
10201         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10202         $cat >try.c <<'EOCP'
10203 #include <pthread.h>
10204 int main() {
10205     int detachstate = JOINABLE;
10206 }
10207 EOCP
10208         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10209         if eval $compile; then
10210                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10211                 val="$undef" # Yes, undef.
10212                 set d_old_pthread_create_joinable
10213                 eval $setvar
10214                 val=""
10215                 set old_pthread_create_joinable
10216                 eval $setvar
10217         else
10218                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10219                 if eval $compile; then
10220                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10221                         val="$define"
10222                         set d_old_pthread_create_joinable
10223                         eval $setvar
10224                         val=PTHREAD_CREATE_UNDETACHED
10225                         set old_pthread_create_joinable
10226                         eval $setvar
10227                 else            
10228                         set try -DJOINABLE=__UNDETACHED
10229                         if eval $compile; then
10230                                 echo "You seem to use __UNDETACHED." >&4
10231                                 val="$define"
10232                                 set d_old_pthread_create_joinable
10233                                 eval $setvar
10234                                 val=__UNDETACHED
10235                                 set old_pthread_create_joinable
10236                                 eval $setvar
10237                         else
10238                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10239                                 val="$define"
10240                                 set d_old_pthread_create_joinable
10241                                 eval $setvar
10242                                 val=0
10243                                 set old_pthread_create_joinable
10244                                 eval $setvar
10245                         fi
10246                 fi
10247         fi
10248         $rm -f try try.*
10249 else
10250     d_old_pthread_create_joinable="$undef"
10251     old_pthread_create_joinable=""
10252 fi
10253
10254 : see if pause exists
10255 set pause d_pause
10256 eval $inlibc
10257
10258 : see if pipe exists
10259 set pipe d_pipe
10260 eval $inlibc
10261
10262 : see if poll exists
10263 set poll d_poll
10264 eval $inlibc
10265
10266
10267 : see whether the various POSIXish _yields exist
10268 $cat >try.c <<EOP
10269 #include <pthread.h>
10270 #include <stdio.h>
10271 int main() {
10272 #ifdef SCHED_YIELD
10273         sched_yield();
10274 #else
10275 #ifdef PTHREAD_YIELD
10276         pthread_yield();
10277 #else
10278 #ifdef PTHREAD_YIELD_NULL
10279         pthread_yield(NULL);
10280 #endif
10281 #endif
10282 #endif
10283 }
10284 EOP
10285 : see if sched_yield exists
10286 set try -DSCHED_YIELD
10287 if eval $compile; then
10288     val="$define"
10289     sched_yield='sched_yield()'
10290 else
10291     val="$undef"
10292 fi
10293 case "$usethreads" in
10294 $define)
10295         case "$val" in
10296         $define) echo 'sched_yield() found.' >&4        ;;
10297         *)       echo 'sched_yield() NOT found.' >&4    ;;
10298         esac
10299 esac
10300 set d_sched_yield
10301 eval $setvar
10302
10303 : see if pthread_yield exists
10304 set try -DPTHREAD_YIELD
10305 if eval $compile; then
10306     val="$define"
10307     case "$sched_yield" in
10308     '') sched_yield='pthread_yield()' ;;
10309     esac
10310 else
10311     set try -DPTHREAD_YIELD_NULL
10312     if eval $compile; then
10313         val="$define"
10314         case "$sched_yield" in
10315         '') sched_yield='pthread_yield(NULL)' ;;
10316         esac
10317     else
10318         val="$undef"
10319     fi
10320 fi
10321 case "$usethreads" in
10322 $define)
10323         case "$val" in
10324         $define) echo 'pthread_yield() found.' >&4      ;;
10325         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10326         esac
10327         ;;
10328 esac
10329 set d_pthread_yield
10330 eval $setvar
10331
10332 case "$sched_yield" in
10333 '') sched_yield=undef ;;
10334 esac
10335
10336 $rm -f try try.*
10337
10338 : see if this is a pwd.h system
10339 set pwd.h i_pwd
10340 eval $inhdr
10341
10342 case "$i_pwd" in
10343 $define)
10344         xxx=`./findhdr pwd.h`
10345         $cppstdin $cppflags $cppminus < $xxx >$$.h
10346
10347         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10348                 val="$define"
10349         else
10350                 val="$undef"
10351         fi
10352         set d_pwquota
10353         eval $setvar
10354
10355         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10356                 val="$define"
10357         else
10358                 val="$undef"
10359         fi
10360         set d_pwage
10361         eval $setvar
10362
10363         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10364                 val="$define"
10365         else
10366                 val="$undef"
10367         fi
10368         set d_pwchange
10369         eval $setvar
10370
10371         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10372                 val="$define"
10373         else
10374                 val="$undef"
10375         fi
10376         set d_pwclass
10377         eval $setvar
10378
10379         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10380                 val="$define"
10381         else
10382                 val="$undef"
10383         fi
10384         set d_pwexpire
10385         eval $setvar
10386
10387         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10388                 val="$define"
10389         else
10390                 val="$undef"
10391         fi
10392         set d_pwcomment
10393         eval $setvar
10394
10395         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10396                 val="$define"
10397         else
10398                 val="$undef"
10399         fi
10400         set d_pwgecos
10401         eval $setvar
10402
10403         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10404                 val="$define"
10405         else
10406                 val="$undef"
10407         fi
10408         set d_pwpasswd
10409         eval $setvar
10410
10411         $rm -f $$.h
10412         ;;
10413 *)
10414         val="$undef"; 
10415         set d_pwquota; eval $setvar
10416         set d_pwage; eval $setvar
10417         set d_pwchange; eval $setvar
10418         set d_pwclass; eval $setvar
10419         set d_pwexpire; eval $setvar
10420         set d_pwcomment; eval $setvar
10421         set d_pwgecos; eval $setvar
10422         set d_pwpasswd; eval $setvar
10423         ;;
10424 esac
10425
10426 : see if readdir and friends exist
10427 set readdir d_readdir
10428 eval $inlibc
10429 set seekdir d_seekdir
10430 eval $inlibc
10431 set telldir d_telldir
10432 eval $inlibc
10433 set rewinddir d_rewinddir
10434 eval $inlibc
10435
10436 : see if readlink exists
10437 set readlink d_readlink
10438 eval $inlibc
10439
10440 : see if rename exists
10441 set rename d_rename
10442 eval $inlibc
10443
10444 : see if rmdir exists
10445 set rmdir d_rmdir
10446 eval $inlibc
10447
10448 : see if memory.h is available.
10449 val=''
10450 set memory.h val
10451 eval $inhdr
10452
10453 : See if it conflicts with string.h
10454 case "$val" in
10455 $define)
10456         case "$strings" in
10457         '') ;;
10458         *)
10459                 $cppstdin $cppflags $cppminus < $strings > mem.h
10460                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10461                         echo " "
10462                         echo "We won't be including <memory.h>."
10463                         val="$undef"
10464                 fi
10465                 $rm -f mem.h
10466                 ;;
10467         esac
10468 esac
10469 set i_memory
10470 eval $setvar
10471
10472 : can bcopy handle overlapping blocks?
10473 val="$undef"
10474 case "$d_bcopy" in
10475 "$define")
10476         echo " "
10477         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10478         $cat >try.c <<EOCP
10479 #$i_memory I_MEMORY
10480 #$i_stdlib I_STDLIB
10481 #$i_string I_STRING
10482 #$i_unistd I_UNISTD
10483 EOCP
10484         $cat >>try.c <<'EOCP'
10485 #include <stdio.h>
10486 #ifdef I_MEMORY
10487 #  include <memory.h>
10488 #endif
10489 #ifdef I_STDLIB
10490 #  include <stdlib.h>
10491 #endif
10492 #ifdef I_STRING
10493 #  include <string.h>
10494 #else
10495 #  include <strings.h>
10496 #endif
10497 #ifdef I_UNISTD
10498 #  include <unistd.h>  /* Needed for NetBSD */
10499 #endif
10500 int main()
10501 {
10502 char buf[128], abc[128];
10503 char *b;
10504 int len;
10505 int off;
10506 int align;
10507
10508 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10509
10510 for (align = 7; align >= 0; align--) {
10511         for (len = 36; len; len--) {
10512                 b = buf+align;
10513                 bcopy(abc, b, len);
10514                 for (off = 1; off <= len; off++) {
10515                         bcopy(b, b+off, len);
10516                         bcopy(b+off, b, len);
10517                         if (bcmp(b, abc, len))
10518                                 exit(1);
10519                 }
10520         }
10521 }
10522 exit(0);
10523 }
10524 EOCP
10525         set try
10526         if eval $compile_ok; then
10527                 if ./try 2>/dev/null; then
10528                         echo "Yes, it can."
10529                         val="$define"
10530                 else
10531                         echo "It can't, sorry."
10532                         case "$d_memmove" in
10533                         "$define") echo "But that's Ok since you have memmove()." ;;
10534                         esac
10535                 fi
10536         else
10537                 echo "(I can't compile the test program, so we'll assume not...)"
10538                 case "$d_memmove" in
10539                 "$define") echo "But that's Ok since you have memmove()." ;;
10540                 esac
10541         fi
10542         ;;
10543 esac
10544 $rm -f try.* try core
10545 set d_safebcpy
10546 eval $setvar
10547
10548 : can memcpy handle overlapping blocks?
10549 val="$undef"
10550 case "$d_memcpy" in
10551 "$define")
10552         echo " "
10553         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10554         $cat >try.c <<EOCP
10555 #$i_memory I_MEMORY
10556 #$i_stdlib I_STDLIB
10557 #$i_string I_STRING
10558 #$i_unistd I_UNISTD
10559 EOCP
10560         $cat >>try.c <<'EOCP'
10561 #include <stdio.h>
10562 #ifdef I_MEMORY
10563 #  include <memory.h>
10564 #endif
10565 #ifdef I_STDLIB
10566 #  include <stdlib.h>
10567 #endif
10568 #ifdef I_STRING
10569 #  include <string.h>
10570 #else
10571 #  include <strings.h>
10572 #endif
10573 #ifdef I_UNISTD
10574 #  include <unistd.h>  /* Needed for NetBSD */
10575 #endif
10576 int main()
10577 {
10578 char buf[128], abc[128];
10579 char *b;
10580 int len;
10581 int off;
10582 int align;
10583
10584 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10585    try to store the string in read-only memory. */
10586 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10587
10588 for (align = 7; align >= 0; align--) {
10589         for (len = 36; len; len--) {
10590                 b = buf+align;
10591                 memcpy(b, abc, len);
10592                 for (off = 1; off <= len; off++) {
10593                         memcpy(b+off, b, len);
10594                         memcpy(b, b+off, len);
10595                         if (memcmp(b, abc, len))
10596                                 exit(1);
10597                 }
10598         }
10599 }
10600 exit(0);
10601 }
10602 EOCP
10603         set try
10604         if eval $compile_ok; then
10605                 if ./try 2>/dev/null; then
10606                         echo "Yes, it can."
10607                         val="$define"
10608                 else
10609                         echo "It can't, sorry."
10610                         case "$d_memmove" in
10611                         "$define") echo "But that's Ok since you have memmove()." ;;
10612                         esac
10613                 fi
10614         else
10615                 echo "(I can't compile the test program, so we'll assume not...)"
10616                 case "$d_memmove" in
10617                 "$define") echo "But that's Ok since you have memmove()." ;;
10618                 esac
10619         fi
10620         ;;
10621 esac
10622 $rm -f try.* try core
10623 set d_safemcpy
10624 eval $setvar
10625
10626 : can memcmp be trusted to compare relative magnitude?
10627 val="$undef"
10628 case "$d_memcmp" in
10629 "$define")
10630         echo " "
10631         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10632         $cat >try.c <<EOCP
10633 #$i_memory I_MEMORY
10634 #$i_stdlib I_STDLIB
10635 #$i_string I_STRING
10636 #$i_unistd I_UNISTD
10637 EOCP
10638         $cat >>try.c <<'EOCP'
10639 #include <stdio.h>
10640 #ifdef I_MEMORY
10641 #  include <memory.h>
10642 #endif
10643 #ifdef I_STDLIB
10644 #  include <stdlib.h>
10645 #endif
10646 #ifdef I_STRING
10647 #  include <string.h>
10648 #else
10649 #  include <strings.h>
10650 #endif
10651 #ifdef I_UNISTD
10652 #  include <unistd.h>  /* Needed for NetBSD */
10653 #endif
10654 int main()
10655 {
10656 char a = -1;
10657 char b = 0;
10658 if ((a < b) && memcmp(&a, &b, 1) < 0)
10659         exit(1);
10660 exit(0);
10661 }
10662 EOCP
10663         set try
10664         if eval $compile_ok; then
10665                 if ./try 2>/dev/null; then
10666                         echo "Yes, it can."
10667                         val="$define"
10668                 else
10669                         echo "No, it can't (it uses signed chars)."
10670                 fi
10671         else
10672                 echo "(I can't compile the test program, so we'll assume not...)"
10673         fi
10674         ;;
10675 esac
10676 $rm -f try.* try core
10677 set d_sanemcmp
10678 eval $setvar
10679
10680 : see if select exists
10681 set select d_select
10682 eval $inlibc
10683
10684 : see if semctl exists
10685 set semctl d_semctl
10686 eval $inlibc
10687
10688 : see if semget exists
10689 set semget d_semget
10690 eval $inlibc
10691
10692 : see if semop exists
10693 set semop d_semop
10694 eval $inlibc
10695
10696 : see how much of the 'sem*(2)' library is present.
10697 h_sem=true
10698 echo " "
10699 case "$d_semctl$d_semget$d_semop" in
10700 *"$undef"*) h_sem=false;;
10701 esac
10702 case "$osname" in
10703 freebsd)
10704     case "`ipcs 2>&1`" in
10705     "SVID messages"*"not configured"*)
10706         echo "Your $osname does not have the sem*(2) configured." >&4
10707         h_sem=false
10708         val="$undef"
10709         set semctl d_semctl
10710         eval $setvar
10711         set semget d_semget
10712         eval $setvar
10713         set semop d_semop
10714         eval $setvar
10715         ;;
10716     esac
10717     ;;
10718 esac
10719 : we could also check for sys/ipc.h ...
10720 if $h_sem && $test `./findhdr sys/sem.h`; then
10721         echo "You have the full sem*(2) library." >&4
10722         val="$define"
10723 else
10724         echo "You don't have the full sem*(2) library." >&4
10725         val="$undef"
10726 fi
10727 set d_sem
10728 eval $setvar
10729
10730 : see whether sys/sem.h defines union semun
10731 echo " "
10732 $cat > try.c <<'END'
10733 #include <sys/types.h>
10734 #include <sys/ipc.h>
10735 #include <sys/sem.h>
10736 int main () { union semun semun; semun.buf = 0; }
10737 END
10738 set try
10739 if eval $compile; then
10740     echo "You have union semun in <sys/sem.h>." >&4
10741     val="$define"
10742 else
10743     echo "You do not have union semun in <sys/sem.h>." >&4
10744     val="$undef"
10745 fi
10746 $rm -f try try.c try.h
10747 set d_union_semun
10748 eval $setvar
10749
10750 : see how to do semctl IPC_STAT
10751 case "$d_sem" in
10752 $define)
10753     : see whether semctl IPC_STAT can use union semun
10754     echo " "
10755     $cat > try.h <<END
10756 #ifndef S_IRUSR
10757 #   ifdef S_IREAD
10758 #       define S_IRUSR S_IREAD
10759 #       define S_IWUSR S_IWRITE
10760 #       define S_IXUSR S_IEXEC
10761 #   else
10762 #       define S_IRUSR 0400
10763 #       define S_IWUSR 0200
10764 #       define S_IXUSR 0100
10765 #   endif
10766 #   define S_IRGRP (S_IRUSR>>3)
10767 #   define S_IWGRP (S_IWUSR>>3)
10768 #   define S_IXGRP (S_IXUSR>>3)
10769 #   define S_IROTH (S_IRUSR>>6)
10770 #   define S_IWOTH (S_IWUSR>>6)
10771 #   define S_IXOTH (S_IXUSR>>6)
10772 #endif
10773 #ifndef S_IRWXU
10774 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10775 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10776 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10777 #endif
10778 END
10779
10780     $cat > try.c <<END
10781 #include <sys/types.h>
10782 #include <sys/ipc.h>
10783 #include <sys/sem.h>
10784 #include <sys/stat.h>
10785 #include <stdio.h>
10786 #include <errno.h>
10787 #include "try.h"
10788 #ifndef errno
10789 extern int errno;
10790 #endif
10791 #$d_union_semun HAS_UNION_SEMUN
10792 int main() {
10793     union semun
10794 #ifndef HAS_UNION_SEMUN
10795     {
10796         int val;
10797         struct semid_ds *buf;
10798         unsigned short *array;
10799     }
10800 #endif
10801     arg;
10802     int sem, st;
10803
10804 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10805     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10806     if (sem > -1) {
10807         struct semid_ds argbuf;
10808         arg.buf = &argbuf;
10809 #       ifdef IPC_STAT
10810         st = semctl(sem, 0, IPC_STAT, arg);
10811         if (st == 0)
10812             printf("semun\n");
10813         else
10814 #       endif /* IPC_STAT */
10815             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10816 #       ifdef IPC_RMID
10817         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10818 #       endif /* IPC_RMID */
10819             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10820     } else
10821 #endif /* IPC_PRIVATE && ... */
10822         printf("semget failed: errno = %d\n", errno);
10823   return 0;
10824 }
10825 END
10826     val="$undef"
10827     set try
10828     if eval $compile; then
10829         xxx=`./try`
10830         case "$xxx" in
10831         semun) val="$define" ;;
10832         esac
10833     fi
10834     $rm -f try try.c
10835     set d_semctl_semun
10836     eval $setvar
10837     case "$d_semctl_semun" in
10838     $define)
10839         echo "You can use union semun for semctl IPC_STAT." >&4
10840         also='also'
10841         ;;
10842     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10843         also=''
10844         ;;
10845     esac
10846
10847     : see whether semctl IPC_STAT can use struct semid_ds pointer
10848     $cat > try.c <<'END'
10849 #include <sys/types.h>
10850 #include <sys/ipc.h>
10851 #include <sys/sem.h>
10852 #include <sys/stat.h>
10853 #include "try.h"
10854 #include <stdio.h>
10855 #include <errno.h>
10856 #ifndef errno
10857 extern int errno;
10858 #endif
10859 int main() {
10860     struct semid_ds arg;
10861     int sem, st;
10862
10863 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10864     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10865     if (sem > -1) {
10866 #       ifdef IPC_STAT
10867         st = semctl(sem, 0, IPC_STAT, &arg);
10868         if (st == 0)
10869             printf("semid_ds\n");
10870         else
10871 #       endif /* IPC_STAT */
10872             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10873 #       ifdef IPC_RMID
10874         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10875 #       endif /* IPC_RMID */
10876             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10877     } else
10878 #endif /* IPC_PRIVATE && ... */
10879         printf("semget failed: errno = %d\n", errno);
10880
10881     return 0;
10882 }
10883 END
10884     val="$undef"
10885     set try
10886     if eval $compile; then
10887         xxx=`./try`
10888         case "$xxx" in
10889         semid_ds) val="$define" ;;
10890         esac
10891     fi
10892     $rm -f try try.c
10893     set d_semctl_semid_ds
10894     eval $setvar
10895     case "$d_semctl_semid_ds" in
10896     $define)
10897         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10898         ;;
10899     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10900         ;;
10901     esac
10902     $rm -f try.h
10903     ;;
10904 *)  val="$undef"
10905
10906     # We do not have the full sem*(2) library, so assume we can not
10907     # use either.
10908
10909     set d_semctl_semun
10910     eval $setvar
10911
10912     set d_semctl_semid_ds
10913     eval $setvar
10914     ;;
10915 esac
10916
10917 : see if setegid exists
10918 set setegid d_setegid
10919 eval $inlibc
10920
10921 : see if seteuid exists
10922 set seteuid d_seteuid
10923 eval $inlibc
10924
10925 : see if setgrent exists
10926 set setgrent d_setgrent
10927 eval $inlibc
10928
10929 : see if sethostent exists
10930 set sethostent d_sethent
10931 eval $inlibc
10932
10933 : see if setlinebuf exists
10934 set setlinebuf d_setlinebuf
10935 eval $inlibc
10936
10937 : see if setlocale exists
10938 set setlocale d_setlocale
10939 eval $inlibc
10940
10941 : see if setnetent exists
10942 set setnetent d_setnent
10943 eval $inlibc
10944
10945 : see if setprotoent exists
10946 set setprotoent d_setpent
10947 eval $inlibc
10948
10949 : see if setpgid exists
10950 set setpgid d_setpgid
10951 eval $inlibc
10952
10953 : see if setpgrp2 exists
10954 set setpgrp2 d_setpgrp2
10955 eval $inlibc
10956
10957 : see if setpriority exists
10958 set setpriority d_setprior
10959 eval $inlibc
10960
10961 : see if setpwent exists
10962 set setpwent d_setpwent
10963 eval $inlibc
10964
10965 : see if setregid exists
10966 set setregid d_setregid
10967 eval $inlibc
10968 set setresgid d_setresgid
10969 eval $inlibc
10970
10971 : see if setreuid exists
10972 set setreuid d_setreuid
10973 eval $inlibc
10974 set setresuid d_setresuid
10975 eval $inlibc
10976
10977 : see if setrgid exists
10978 set setrgid d_setrgid
10979 eval $inlibc
10980
10981 : see if setruid exists
10982 set setruid d_setruid
10983 eval $inlibc
10984
10985 : see if setservent exists
10986 set setservent d_setsent
10987 eval $inlibc
10988
10989 : see if setsid exists
10990 set setsid d_setsid
10991 eval $inlibc
10992
10993 : see if setspent exists
10994 set setspent d_setspent
10995 eval $inlibc
10996
10997 : see if setvbuf exists
10998 set setvbuf d_setvbuf
10999 eval $inlibc
11000
11001 : see if sfio.h is available
11002 set sfio.h i_sfio
11003 eval $inhdr
11004
11005
11006 : see if sfio library is available
11007 case "$i_sfio" in
11008 $define)
11009         val=''
11010         set sfreserve val
11011         eval $inlibc
11012         ;;
11013 *)
11014         val="$undef"
11015         ;;
11016 esac
11017 : Ok, but do we want to use it.
11018 case "$val" in
11019 $define)
11020         case "$usesfio" in
11021         true|$define|[yY]*) dflt='y';;
11022         *) dflt='n';;
11023         esac
11024         echo "$package can use the sfio library, but it is experimental."
11025         rp="You seem to have sfio available, do you want to try using it?"
11026         . ./myread
11027         case "$ans" in
11028         y|Y) ;;
11029         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11030                 val="$undef"
11031                 : Remove sfio from list of libraries to use
11032                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11033                 shift
11034                 libs="$*"
11035                 echo "libs = $libs" >&4
11036                 ;;
11037         esac
11038         ;;
11039 *)      case "$usesfio" in
11040         true|$define|[yY]*)
11041                 echo "Sorry, cannot find sfio on this machine" >&4
11042                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11043                 ;;
11044         esac
11045         ;;
11046 esac
11047 set d_sfio
11048 eval $setvar
11049 case "$d_sfio" in
11050 $define) usesfio='true';;
11051 *) usesfio='false';;
11052 esac
11053
11054 : see if shmctl exists
11055 set shmctl d_shmctl
11056 eval $inlibc
11057
11058 : see if shmget exists
11059 set shmget d_shmget
11060 eval $inlibc
11061
11062 : see if shmat exists
11063 set shmat d_shmat
11064 eval $inlibc
11065 : see what shmat returns
11066 case "$d_shmat" in
11067 "$define")
11068         $cat >shmat.c <<'END'
11069 #include <sys/shm.h>
11070 void *shmat();
11071 END
11072         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11073                 shmattype='void *'
11074         else
11075                 shmattype='char *'
11076         fi
11077         echo "and it returns ($shmattype)." >&4
11078         : see if a prototype for shmat is available
11079         xxx=`./findhdr sys/shm.h`
11080         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11081         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11082                 val="$define"
11083         else
11084                 val="$undef"
11085         fi
11086         $rm -f shmat.[co]
11087         ;;
11088 *)
11089         val="$undef"
11090         ;;
11091 esac
11092 set d_shmatprototype
11093 eval $setvar
11094
11095 : see if shmdt exists
11096 set shmdt d_shmdt
11097 eval $inlibc
11098
11099 : see how much of the 'shm*(2)' library is present.
11100 h_shm=true
11101 echo " "
11102 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11103 *"$undef"*) h_shm=false;;
11104 esac
11105 case "$osname" in
11106 freebsd)
11107     case "`ipcs 2>&1`" in
11108     "SVID shared memory"*"not configured"*)
11109         echo "Your $osname does not have the shm*(2) configured." >&4
11110         h_shm=false
11111         val="$undef"
11112         set shmctl d_shmctl
11113         evat $setvar
11114         set shmget d_shmget
11115         evat $setvar
11116         set shmat d_shmat
11117         evat $setvar
11118         set shmdt d_shmdt
11119         evat $setvar
11120         ;;
11121     esac
11122     ;;
11123 esac
11124 : we could also check for sys/ipc.h ...
11125 if $h_shm && $test `./findhdr sys/shm.h`; then
11126         echo "You have the full shm*(2) library." >&4
11127         val="$define"
11128 else
11129         echo "You don't have the full shm*(2) library." >&4
11130         val="$undef"
11131 fi
11132 set d_shm
11133 eval $setvar
11134
11135 echo " "
11136 : see if we have sigaction
11137 if set sigaction val -f d_sigaction; eval $csym; $val; then
11138         echo 'sigaction() found.' >&4
11139         $cat > try.c <<'EOP'
11140 #include <stdio.h>
11141 #include <sys/types.h>
11142 #include <signal.h>
11143 int main()
11144 {
11145     struct sigaction act, oact;
11146     act.sa_flags = 0;
11147     oact.sa_handler = 0;
11148     /* so that act and oact are used */
11149     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11150 }
11151 EOP
11152         set try
11153         if eval $compile_ok; then
11154                 val="$define"
11155         else
11156                 echo "But you don't seem to have a useable struct sigaction." >&4
11157                 val="$undef"
11158         fi
11159 else
11160         echo 'sigaction NOT found.' >&4
11161         val="$undef"
11162 fi
11163 set d_sigaction; eval $setvar
11164 $rm -f try try$_o try.c
11165
11166 : see if sigsetjmp exists
11167 echo " "
11168 case "$d_sigsetjmp" in
11169 '')
11170         $cat >try.c <<'EOP'
11171 #include <setjmp.h>
11172 sigjmp_buf env;
11173 int set = 1;
11174 int main()
11175 {
11176         if (sigsetjmp(env,1))
11177                 exit(set);
11178         set = 0;
11179         siglongjmp(env, 1);
11180         exit(1);
11181 }
11182 EOP
11183         set try
11184         if eval $compile; then
11185                 if ./try >/dev/null 2>&1; then
11186                         echo "POSIX sigsetjmp found." >&4
11187                         val="$define"
11188                 else
11189                         $cat >&4 <<EOM
11190 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11191 I'll ignore them.
11192 EOM
11193                         val="$undef"
11194                 fi
11195         else
11196                 echo "sigsetjmp not found." >&4
11197                 val="$undef"
11198         fi
11199         ;;
11200 *) val="$d_sigsetjmp"
11201         case "$d_sigsetjmp" in
11202         $define) echo "POSIX sigsetjmp found." >&4;;
11203         $undef) echo "sigsetjmp not found." >&4;;
11204         esac
11205         ;;
11206 esac
11207 set d_sigsetjmp
11208 eval $setvar
11209 $rm -f try.c try
11210
11211 : see if sys/stat.h is available
11212 set sys/stat.h i_sysstat
11213 eval $inhdr
11214
11215
11216 : see if stat knows about block sizes
11217 echo " "
11218 echo "Checking to see if your struct stat has st_blocks field..." >&4
11219 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11220 eval $hasfield
11221
11222
11223 : see if this is a sys/vfs.h system
11224 set sys/vfs.h i_sysvfs
11225 eval $inhdr
11226
11227
11228 : see if this is a sys/statfs.h system
11229 set sys/statfs.h i_sysstatfs
11230 eval $inhdr
11231
11232
11233 echo " "
11234 echo "Checking to see if your system supports struct statfs..." >&4
11235 set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
11236 eval $hasstruct
11237 case "$d_statfs_s" in
11238 "$define")      echo "Yes, it does."   ;;
11239 *)              echo "No, it doesn't." ;;
11240 esac
11241
11242
11243
11244 : see if struct statfs knows about f_flags
11245 case "$d_statfs_s" in
11246 define) 
11247         echo " "
11248         echo "Checking to see if your struct statfs has f_flags field..." >&4
11249         set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
11250         eval $hasfield
11251         ;;
11252 *)      val="$undef"
11253         set d_statfs_f_flags
11254         eval $setvar
11255         ;;
11256 esac
11257 case "$d_statfs_f_flags" in
11258 "$define")      echo "Yes, it does."   ;;
11259 *)              echo "No, it doesn't." ;;
11260 esac
11261
11262 : see if _ptr and _cnt from stdio act std
11263 echo " "
11264 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11265         echo "(Looks like you have stdio.h from Linux.)"
11266         case "$stdio_ptr" in
11267         '') stdio_ptr='((fp)->_IO_read_ptr)'
11268                 ptr_lval=$define
11269                 ;;
11270         *)      ptr_lval=$d_stdio_ptr_lval;;
11271         esac
11272         case "$stdio_cnt" in
11273         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11274                 cnt_lval=$undef
11275                 ;;
11276         *)      cnt_lval=$d_stdio_cnt_lval;;
11277         esac
11278         case "$stdio_base" in
11279         '') stdio_base='((fp)->_IO_read_base)';;
11280         esac
11281         case "$stdio_bufsiz" in
11282         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11283         esac
11284 else
11285         case "$stdio_ptr" in
11286         '') stdio_ptr='((fp)->_ptr)'
11287                 ptr_lval=$define
11288                 ;;
11289         *)      ptr_lval=$d_stdio_ptr_lval;;
11290         esac
11291         case "$stdio_cnt" in
11292         '') stdio_cnt='((fp)->_cnt)'
11293                 cnt_lval=$define
11294                 ;;
11295         *)      cnt_lval=$d_stdio_cnt_lval;;
11296         esac
11297         case "$stdio_base" in
11298         '') stdio_base='((fp)->_base)';;
11299         esac
11300         case "$stdio_bufsiz" in
11301         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11302         esac
11303 fi
11304 : test whether _ptr and _cnt really work
11305 echo "Checking how std your stdio is..." >&4
11306 $cat >try.c <<EOP
11307 #include <stdio.h>
11308 #define FILE_ptr(fp)    $stdio_ptr
11309 #define FILE_cnt(fp)    $stdio_cnt
11310 int main() {
11311         FILE *fp = fopen("try.c", "r");
11312         char c = getc(fp);
11313         if (
11314                 18 <= FILE_cnt(fp) &&
11315                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11316         )
11317                 exit(0);
11318         exit(1);
11319 }
11320 EOP
11321 val="$undef"
11322 set try
11323 if eval $compile; then
11324         if ./try; then
11325                 echo "Your stdio acts pretty std."
11326                 val="$define"
11327         else
11328                 echo "Your stdio isn't very std."
11329         fi
11330 else
11331         echo "Your stdio doesn't appear very std."
11332 fi
11333 $rm -f try.c try
11334 set d_stdstdio
11335 eval $setvar
11336
11337 : Can _ptr be used as an lvalue?
11338 case "$d_stdstdio$ptr_lval" in
11339 $define$define) val=$define ;;
11340 *) val=$undef ;;
11341 esac
11342 set d_stdio_ptr_lval
11343 eval $setvar
11344
11345 : Can _cnt be used as an lvalue?
11346 case "$d_stdstdio$cnt_lval" in
11347 $define$define) val=$define ;;
11348 *) val=$undef ;;
11349 esac
11350 set d_stdio_cnt_lval
11351 eval $setvar
11352
11353 : see if _base is also standard
11354 val="$undef"
11355 case "$d_stdstdio" in
11356 $define)
11357         $cat >try.c <<EOP
11358 #include <stdio.h>
11359 #define FILE_base(fp)   $stdio_base
11360 #define FILE_bufsiz(fp) $stdio_bufsiz
11361 int main() {
11362         FILE *fp = fopen("try.c", "r");
11363         char c = getc(fp);
11364         if (
11365                 19 <= FILE_bufsiz(fp) &&
11366                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11367         )
11368                 exit(0);
11369         exit(1);
11370 }
11371 EOP
11372         set try
11373         if eval $compile; then
11374                 if ./try; then
11375                         echo "And its _base field acts std."
11376                         val="$define"
11377                 else
11378                         echo "But its _base field isn't std."
11379                 fi
11380         else
11381                 echo "However, it seems to be lacking the _base field."
11382         fi
11383         $rm -f try.c try
11384         ;;
11385 esac
11386 set d_stdiobase
11387 eval $setvar
11388
11389 $cat >&4 <<EOM
11390 Checking how to access stdio streams by file descriptor number...
11391 EOM
11392 case "$stdio_stream_array" in
11393 '')     $cat >try.c <<EOCP
11394 #include <stdio.h>
11395 int main() {
11396   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11397     printf("yes\n");
11398 }
11399 EOCP
11400         for s in _iob __iob __sF
11401         do
11402                 set try -DSTDIO_STREAM_ARRAY=$s
11403                 if eval $compile; then
11404                         case "`./try$exe_ext`" in
11405                         yes)    stdio_stream_array=$s; break ;;
11406                         esac
11407                 fi
11408         done
11409         $rm -f try.* try$exe_ext
11410 esac
11411 case "$stdio_stream_array" in
11412 '')     $cat >&4 <<EOM
11413 I can't figure out how to access stdio streams by file descriptor number.
11414 EOM
11415         d_stdio_stream_array="$undef"
11416         ;;
11417 *)      $cat >&4 <<EOM
11418 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11419 EOM
11420         d_stdio_stream_array="$define"
11421         ;;
11422 esac
11423
11424 : see if strcoll exists
11425 set strcoll d_strcoll
11426 eval $inlibc
11427
11428 : check for structure copying
11429 echo " "
11430 echo "Checking to see if your C compiler can copy structs..." >&4
11431 $cat >try.c <<'EOCP'
11432 int main()
11433 {
11434         struct blurfl {
11435                 int dyick;
11436         } foo, bar;
11437
11438         foo = bar;
11439 }
11440 EOCP
11441 if $cc -c try.c >/dev/null 2>&1 ; then
11442         val="$define"
11443         echo "Yup, it can."
11444 else
11445         val="$undef"
11446         echo "Nope, it can't."
11447 fi
11448 set d_strctcpy
11449 eval $setvar
11450 $rm -f try.*
11451
11452 : see if strerror and/or sys_errlist[] exist
11453 echo " "
11454 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11455     if set strerror val -f d_strerror; eval $csym; $val; then
11456                 echo 'strerror() found.' >&4
11457                 d_strerror="$define"
11458                 d_strerrm='strerror(e)'
11459                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11460                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11461                         d_syserrlst="$define"
11462                 else
11463                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11464                         d_syserrlst="$undef"
11465                 fi
11466     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11467                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11468                 echo 'strerror() found in string header.' >&4
11469                 d_strerror="$define"
11470                 d_strerrm='strerror(e)'
11471                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11472                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11473                                 d_syserrlst="$define"
11474                 else
11475                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11476                         d_syserrlst="$undef"
11477                 fi
11478     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11479                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11480                 d_strerror="$undef"
11481                 d_syserrlst="$define"
11482                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11483     else
11484                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11485                 d_strerror="$undef"
11486                 d_syserrlst="$undef"
11487                 d_strerrm='"unknown"'
11488     fi
11489 fi
11490
11491 : see if strtod exists
11492 set strtod d_strtod
11493 eval $inlibc
11494
11495 : see if strtol exists
11496 set strtol d_strtol
11497 eval $inlibc
11498
11499 : see if strtold exists
11500 set strtold d_strtold
11501 eval $inlibc
11502
11503 : see if strtoll exists
11504 set strtoll d_strtoll
11505 eval $inlibc
11506
11507 case "$d_longlong-$d_strtoll" in
11508 "$define-$define")
11509         $cat <<EOM
11510 Checking whether your strtoll() works okay...
11511 EOM
11512         $cat >try.c <<'EOCP'
11513 #include <errno.h>
11514 #ifdef __hpux
11515 #define strtoll __strtoll
11516 #endif
11517 #include <stdio.h>
11518 extern long long int strtoll(char *s, char **, int); 
11519 static int bad = 0;
11520 int check(char *s, long long ell, int een) {
11521         long long gll;
11522         errno = 0;
11523         gll = strtoll(s, 0, 10);
11524         if (!((gll == ell) && (errno == een)))
11525                 bad++;
11526 }
11527 int main() {
11528         check(" 1",                                      1LL, 0);
11529         check(" 0",                                      0LL, 0);
11530         check("-1",                                     -1LL, 0);
11531         check("-9223372036854775808", -9223372036854775808LL, 0);
11532         check("-9223372036854775808", -9223372036854775808LL, 0);
11533         check(" 9223372036854775807",  9223372036854775807LL, 0);
11534         check("-9223372036854775808", -9223372036854775808LL, 0);
11535         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11536         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11537         if (!bad)
11538                 printf("ok\n");
11539 }
11540 EOCP
11541         set try
11542         if eval $compile; then
11543                 case "`./try`" in
11544                 ok) echo "Your strtoll() seems to be working okay." ;;
11545                 *) cat <<EOM >&4
11546 Your strtoll() doesn't seem to be working okay.
11547 EOM
11548                    d_strtoll="$undef"
11549                    ;;
11550                 esac
11551         fi
11552         ;;
11553 esac
11554
11555 : see if strtoul exists
11556 set strtoul d_strtoul
11557 eval $inlibc
11558
11559 : see if strtoull exists
11560 set strtoull d_strtoull
11561 eval $inlibc
11562
11563 case "$d_longlong-$d_strtoull" in
11564 "$define-$define")
11565         $cat <<EOM
11566 Checking whether your strtoull() works okay...
11567 EOM
11568         $cat >try.c <<'EOCP'
11569 #include <errno.h>
11570 #ifdef __hpux
11571 #define strtoull __strtoull
11572 #endif
11573 #include <stdio.h>
11574 extern unsigned long long int strtoull(char *s, char **, int); 
11575 static int bad = 0;
11576 int check(char *s, long long eull, int een) {
11577         long long gull;
11578         errno = 0;
11579         gull = strtoull(s, 0, 10);
11580         if (!((gull == eull) && (errno == een)))
11581                 bad++;
11582 }
11583 int main() {
11584         check(" 1",                                       1LL, 0);
11585         check(" 0",                                       0LL, 0);
11586         check("18446744073709551615", 18446744073709551615ULL, 0);
11587         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11588         if (!bad)
11589                 printf("ok\n");
11590 }
11591 EOCP
11592         set try
11593         if eval $compile; then
11594                 case "`./try`" in
11595                 ok) echo "Your strtoull() seems to be working okay." ;;
11596                 *) cat <<EOM >&4
11597 Your strtoull() doesn't seem to be working okay.
11598 EOM
11599                    d_strtoull="$undef"
11600                    ;;
11601                 esac
11602         fi
11603         ;;
11604 esac
11605
11606 : see if strtouq exists
11607 set strtouq d_strtouq
11608 eval $inlibc
11609
11610 : see if strxfrm exists
11611 set strxfrm d_strxfrm
11612 eval $inlibc
11613
11614 : see if symlink exists
11615 set symlink d_symlink
11616 eval $inlibc
11617
11618 : see if syscall exists
11619 set syscall d_syscall
11620 eval $inlibc
11621
11622 : see if sysconf exists
11623 set sysconf d_sysconf
11624 eval $inlibc
11625
11626 : see if system exists
11627 set system d_system
11628 eval $inlibc
11629
11630 : see if tcgetpgrp exists
11631 set tcgetpgrp d_tcgetpgrp
11632 eval $inlibc
11633
11634 : see if tcsetpgrp exists
11635 set tcsetpgrp d_tcsetpgrp
11636 eval $inlibc
11637
11638 : see if prototype for telldir is available
11639 echo " "
11640 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11641 eval $hasproto
11642
11643 : see if this is a sys/times.h system
11644 set sys/times.h i_systimes
11645 eval $inhdr
11646
11647 : see if times exists
11648 echo " "
11649 if set times val -f d_times; eval $csym; $val; then
11650         echo 'times() found.' >&4
11651         d_times="$define"
11652         inc=''
11653         case "$i_systimes" in
11654         "$define") inc='sys/times.h';;
11655         esac
11656         rp="What is the type returned by times() on this system?"
11657         set clock_t clocktype long stdio.h sys/types.h $inc
11658         eval $typedef_ask
11659 else
11660         echo 'times() NOT found, hope that will do.' >&4
11661         d_times="$undef"
11662         clocktype='int'
11663 fi
11664
11665 : see if truncate exists
11666 set truncate d_truncate
11667 eval $inlibc
11668
11669 : see if tzname[] exists
11670 echo " "
11671 if set tzname val -a d_tzname; eval $csym; $val; then
11672         val="$define"
11673         echo 'tzname[] found.' >&4
11674 else
11675         val="$undef"
11676         echo 'tzname[] NOT found.' >&4
11677 fi
11678 set d_tzname
11679 eval $setvar
11680
11681 : see if umask exists
11682 set umask d_umask
11683 eval $inlibc
11684
11685 : see if ustat exists
11686 set ustat d_ustat
11687 eval $inlibc
11688
11689 : backward compatibility for d_hvfork
11690 if test X$d_hvfork != X; then
11691         d_vfork="$d_hvfork"
11692         d_hvfork=''
11693 fi
11694 : see if there is a vfork
11695 val=''
11696 set vfork val
11697 eval $inlibc
11698
11699 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11700 : perl on Solaris 2.x, and probably elsewhere.
11701 case "$val" in
11702 $define)
11703         echo " "
11704         case "$usevfork" in
11705         false) dflt='n';;
11706         *) dflt='y';;
11707         esac
11708         cat <<'EOM'
11709  
11710 Perl can only use a vfork() that doesn't suffer from strict
11711 restrictions on calling functions or modifying global data in
11712 the child.  For example, glibc-2.1 contains such a vfork()
11713 that is unsuitable.  If your system provides a proper fork()
11714 call, chances are that you do NOT want perl to use vfork().
11715
11716 EOM
11717         rp="Do you still want to use vfork()?"
11718         . ./myread
11719         case "$ans" in
11720         y|Y) ;;
11721         *)
11722                 echo "Ok, we won't use vfork()."
11723                 val="$undef"
11724                 ;;
11725         esac
11726         ;;
11727 esac
11728 set d_vfork
11729 eval $setvar
11730 case "$d_vfork" in
11731 $define) usevfork='true';;
11732 *) usevfork='false';;
11733 esac
11734
11735 : see if this is an sysdir system
11736 set sys/dir.h i_sysdir
11737 eval $inhdr
11738
11739 : see if this is an sysndir system
11740 set sys/ndir.h i_sysndir
11741 eval $inhdr
11742
11743 : see if closedir exists
11744 set closedir d_closedir
11745 eval $inlibc
11746
11747 case "$d_closedir" in
11748 "$define")
11749         echo " "
11750         echo "Checking whether closedir() returns a status..." >&4
11751         cat > closedir.c <<EOM
11752 #$i_dirent I_DIRENT             /**/
11753 #$i_sysdir I_SYS_DIR            /**/
11754 #$i_sysndir I_SYS_NDIR          /**/
11755 #$i_systypes I_SYS_TYPES        /**/
11756
11757 #if defined(I_SYS_TYPES)
11758 #include <sys/types.h>
11759 #endif
11760 #if defined(I_DIRENT)
11761 #include <dirent.h>
11762 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11763 #include <sys/dir.h>
11764 #endif
11765 #else
11766 #ifdef I_SYS_NDIR
11767 #include <sys/ndir.h>
11768 #else
11769 #ifdef I_SYS_DIR
11770 #ifdef hp9000s500
11771 #include <ndir.h>       /* may be wrong in the future */
11772 #else
11773 #include <sys/dir.h>
11774 #endif
11775 #endif
11776 #endif
11777 #endif 
11778 int main() { return closedir(opendir(".")); }
11779 EOM
11780         set closedir
11781         if eval $compile_ok; then
11782                 if ./closedir > /dev/null 2>&1 ; then
11783                         echo "Yes, it does."
11784                         val="$undef"
11785                 else
11786                         echo "No, it doesn't."
11787                         val="$define"
11788                 fi
11789         else
11790                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11791                 val="$define"
11792         fi
11793         ;;
11794 *)
11795         val="$undef";
11796         ;;
11797 esac
11798 set d_void_closedir
11799 eval $setvar
11800 $rm -f closedir*
11801 : check for volatile keyword
11802 echo " "
11803 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11804 $cat >try.c <<'EOCP'
11805 int main()
11806 {
11807         typedef struct _goo_struct goo_struct;
11808         goo_struct * volatile goo = ((goo_struct *)0);
11809         struct _goo_struct {
11810                 long long_int;
11811                 int reg_int;
11812                 char char_var;
11813         };
11814         typedef unsigned short foo_t;
11815         char *volatile foo;
11816         volatile int bar;
11817         volatile foo_t blech;
11818         foo = foo;
11819 }
11820 EOCP
11821 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11822         val="$define"
11823         echo "Yup, it does."
11824 else
11825         val="$undef"
11826         echo "Nope, it doesn't."
11827 fi
11828 set d_volatile
11829 eval $setvar
11830 $rm -f try.*
11831
11832 : see if there is a wait4
11833 set wait4 d_wait4
11834 eval $inlibc
11835
11836 : see if waitpid exists
11837 set waitpid d_waitpid
11838 eval $inlibc
11839
11840 : see if wcstombs exists
11841 set wcstombs d_wcstombs
11842 eval $inlibc
11843
11844 : see if wctomb exists
11845 set wctomb d_wctomb
11846 eval $inlibc
11847
11848 : preserve RCS keywords in files with variable substitution, grrr
11849 Date='$Date'
11850 Id='$Id'
11851 Log='$Log'
11852 RCSfile='$RCSfile'
11853 Revision='$Revision'
11854
11855 case "$crosscompile" in
11856 ''|[nN]*) crosscompile="$undef" ;;
11857 esac
11858
11859 case "$osname" in
11860 next|rhapsody|darwin) multiarch="$define" ;;
11861 esac
11862 case "$multiarch" in
11863 ''|[nN]*) multiarch="$undef" ;;
11864 esac
11865
11866 : check for alignment requirements
11867 echo " "
11868 case "$crosscompile$multiarch" in
11869 *$define*)
11870         $cat <<EOM
11871 You seem to be either cross-compiling or doing a multiarchitecture build,
11872 skipping the memory alignment check.
11873
11874 EOM
11875         case "$alignbytes" in
11876         '') alignbytes=8 ;;
11877         esac
11878         ;;
11879 *)
11880         case "$alignbytes" in
11881         '') echo "Checking alignment constraints..." >&4
11882                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11883                         $cat >try.c <<'EOCP'
11884 typedef long double NV;
11885 EOCP
11886                 else
11887                         $cat >try.c <<'EOCP'
11888 typedef double NV;
11889 EOCP
11890                 fi
11891                 $cat >>try.c <<'EOCP'
11892 #include <stdio.h>
11893 struct foobar {
11894         char foo;
11895         NV bar;
11896 } try_algn;
11897 int main()
11898 {
11899     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11900     return(0);
11901 }
11902 EOCP
11903                 set try
11904                 if eval $compile_ok; then
11905                         dflt=`./try`
11906                 else
11907                         dflt='8'
11908                         echo "(I can't seem to compile the test program...)"
11909                 fi
11910                 ;;
11911         *) dflt="$alignbytes"
11912                 ;;
11913         esac
11914         rp="Doubles must be aligned on a how-many-byte boundary?"
11915         . ./myread
11916         alignbytes="$ans"
11917         $rm -f try.c try
11918         ;;
11919 esac
11920
11921
11922 : set the base revision
11923 baserev=5.0
11924
11925 : check for ordering of bytes in a long
11926 echo " "
11927 case "$crosscompile$multiarch" in
11928 *$define*)
11929         $cat <<EOM
11930 You seem to be either cross-compiling or doing a multiarchitecture build,
11931 skipping the byteorder check.
11932
11933 EOM
11934         byteorder='0xffff'
11935         ;;
11936 *)
11937         case "$byteorder" in
11938         '')
11939                 $cat <<'EOM'
11940 In the following, larger digits indicate more significance.  A big-endian
11941 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11942 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11943 machines may have weird orders like 3412.  A Cray will report 87654321,
11944 an Alpha will report 12345678. If the test program works the default is
11945 probably right.
11946 I'm now running the test program...
11947 EOM
11948                 $cat >try.c <<'EOCP'
11949 #include <stdio.h>
11950 int main()
11951 {
11952         int i;
11953         union {
11954                 unsigned long l;
11955                 char c[sizeof(long)];
11956         } u;
11957
11958         if (sizeof(long) > 4)
11959                 u.l = (0x08070605L << 32) | 0x04030201L;
11960         else
11961                 u.l = 0x04030201L;
11962         for (i = 0; i < sizeof(long); i++)
11963                 printf("%c", u.c[i]+'0');
11964         printf("\n");
11965         exit(0);
11966 }
11967 EOCP
11968                 xxx_prompt=y
11969                 set try
11970                 if eval $compile && ./try > /dev/null; then
11971                         dflt=`./try`
11972                         case "$dflt" in
11973                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11974                                 echo "(The test program ran ok.)"
11975                                 echo "byteorder=$dflt"
11976                                 xxx_prompt=n
11977                         ;;
11978                         ????|????????) echo "(The test program ran ok.)" ;;
11979                         *) echo "(The test program didn't run right for some reason.)" ;;
11980                         esac
11981                 else
11982                         dflt='4321'
11983                         cat <<'EOM'
11984 (I can't seem to compile the test program.  Guessing big-endian...)
11985 EOM
11986                 fi
11987                 case "$xxx_prompt" in
11988                 y)
11989                         rp="What is the order of bytes in a long?"
11990                         . ./myread
11991                         byteorder="$ans"
11992                         ;;
11993                 *)      byteorder=$dflt
11994                         ;;
11995                 esac
11996                 ;;
11997         esac
11998         $rm -f try.c try
11999         ;;
12000 esac
12001
12002
12003 : how do we catenate cpp tokens here?
12004 echo " "
12005 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12006 $cat >cpp_stuff.c <<'EOCP'
12007 #define RCAT(a,b)a/**/b
12008 #define ACAT(a,b)a ## b
12009 RCAT(Rei,ser)
12010 ACAT(Cir,cus)
12011 EOCP
12012 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12013 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12014         echo "Oh!  Smells like ANSI's been here." >&4
12015         echo "We can catify or stringify, separately or together!"
12016         cpp_stuff=42
12017 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12018         echo "Ah, yes!  The good old days!" >&4
12019         echo "However, in the good old days we don't know how to stringify and"
12020         echo "catify at the same time."
12021         cpp_stuff=1
12022 else
12023         $cat >&4 <<EOM
12024 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12025 to have to edit the values of CAT[2-5] in config.h...
12026 EOM
12027         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12028 fi
12029 $rm -f cpp_stuff.*
12030
12031 : see if this is a db.h system
12032 set db.h i_db
12033 eval $inhdr
12034
12035 case "$i_db" in
12036 $define)
12037         : Check db version.
12038         echo " "
12039         echo "Checking Berkeley DB version ..." >&4
12040         $cat >try.c <<EOCP
12041 #$d_const HASCONST
12042 #ifndef HASCONST
12043 #define const
12044 #endif
12045 #include <sys/types.h>
12046 #include <stdio.h>
12047 #include <db.h>
12048 int main()
12049 {
12050 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12051     int Major, Minor, Patch ;
12052     unsigned long Version ;
12053     (void)db_version(&Major, &Minor, &Patch) ;
12054     printf("You have Berkeley DB Version 2 or greater\n");
12055
12056     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12057                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12058     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12059                 Major, Minor, Patch) ;
12060
12061     /* check that db.h & libdb are compatible */
12062     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12063         printf("db.h and libdb are incompatible\n") ;
12064         exit(3);        
12065     }
12066
12067     printf("db.h and libdb are compatible\n") ;
12068
12069     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12070                 + DB_VERSION_PATCH ;
12071
12072     /* needs to be >= 2.3.4 */
12073     if (Version < 2003004) {
12074     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12075         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12076         exit(2);        
12077     }
12078
12079     exit(0);
12080 #else
12081 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12082     printf("You have Berkeley DB Version 1\n");
12083     exit(0);    /* DB version < 2: the coast is clear. */
12084 #else
12085     exit(1);    /* <db.h> not Berkeley DB? */
12086 #endif
12087 #endif
12088 }
12089 EOCP
12090         set try
12091         if eval $compile_ok && ./try; then
12092                 echo 'Looks OK.' >&4
12093         else
12094                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12095                 i_db=$undef
12096                 case " $libs " in
12097                 *"-ldb "*)
12098                         : Remove db from list of libraries to use
12099                         echo "Removing unusable -ldb from library list" >&4
12100                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12101                         shift
12102                         libs="$*"
12103                         echo "libs = $libs" >&4
12104                         ;;
12105                 esac
12106         fi
12107         $rm -f try.*
12108         ;;
12109 esac
12110
12111 case "$i_db" in
12112 define)
12113         : Check the return type needed for hash 
12114         echo " "
12115         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12116         $cat >try.c <<EOCP
12117 #$d_const HASCONST
12118 #ifndef HASCONST
12119 #define const
12120 #endif
12121 #include <sys/types.h>
12122 #include <db.h>
12123
12124 #ifndef DB_VERSION_MAJOR
12125 u_int32_t hash_cb (ptr, size)
12126 const void *ptr;
12127 size_t size;
12128 {
12129 }
12130 HASHINFO info;
12131 int main()
12132 {
12133         info.hash = hash_cb;
12134 }
12135 #endif
12136 EOCP
12137         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12138                 if $contains warning try.out >>/dev/null 2>&1 ; then
12139                         db_hashtype='int'
12140                 else
12141                         db_hashtype='u_int32_t'
12142                 fi
12143         else
12144                 : XXX Maybe we should just give up here.
12145                 db_hashtype=u_int32_t
12146                 $cat try.out >&4
12147                 echo "Help:  I can't seem to compile the db test program." >&4
12148                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12149         fi
12150         $rm -f try.*
12151         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12152         ;;
12153 *)      db_hashtype=u_int32_t
12154         ;;
12155 esac
12156 case "$i_db" in
12157 define)
12158         : Check the return type needed for prefix 
12159         echo " "
12160         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12161         cat >try.c <<EOCP
12162 #$d_const HASCONST
12163 #ifndef HASCONST
12164 #define const
12165 #endif
12166 #include <sys/types.h>
12167 #include <db.h>
12168
12169 #ifndef DB_VERSION_MAJOR
12170 size_t prefix_cb (key1, key2)
12171 const DBT *key1;
12172 const DBT *key2;
12173 {
12174 }
12175 BTREEINFO info;
12176 int main()
12177 {
12178         info.prefix = prefix_cb;
12179 }
12180 #endif
12181 EOCP
12182         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12183                 if $contains warning try.out >>/dev/null 2>&1 ; then
12184                         db_prefixtype='int'
12185                 else
12186                         db_prefixtype='size_t'
12187                 fi
12188         else
12189                 db_prefixtype='size_t'
12190                 : XXX Maybe we should just give up here.
12191                 $cat try.out >&4
12192                 echo "Help:  I can't seem to compile the db test program." >&4
12193                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12194         fi
12195         $rm -f try.*
12196         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12197         ;;
12198 *)      db_prefixtype='size_t'
12199         ;;
12200 esac
12201
12202 : check for void type
12203 echo " "
12204 echo "Checking to see how well your C compiler groks the void type..." >&4
12205 case "$voidflags" in
12206 '')
12207         $cat >try.c <<'EOCP'
12208 #if TRY & 1
12209 void sub() {
12210 #else
12211 sub() {
12212 #endif
12213         extern void moo();      /* function returning void */
12214         void (*goo)();          /* ptr to func returning void */
12215 #if TRY & 8
12216         void *hue;              /* generic ptr */
12217 #endif
12218 #if TRY & 2
12219         void (*foo[10])();
12220 #endif
12221
12222 #if TRY & 4
12223         if(goo == moo) {
12224                 exit(0);
12225         }
12226 #endif
12227         exit(0);
12228 }
12229 int main() { sub(); }
12230 EOCP
12231         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12232                 voidflags=$defvoidused
12233         echo "Good.  It appears to support void to the level $package wants.">&4
12234                 if $contains warning .out >/dev/null 2>&1; then
12235                         echo "However, you might get some warnings that look like this:"
12236                         $cat .out
12237                 fi
12238         else
12239 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12240                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12241                         echo "It supports 1..."
12242                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12243                                 echo "It also supports 2..."
12244                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12245                                         voidflags=7
12246                                         echo "And it supports 4 but not 8 definitely."
12247                                 else
12248                                         echo "It doesn't support 4..."
12249                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12250                                                 voidflags=11
12251                                                 echo "But it supports 8."
12252                                         else
12253                                                 voidflags=3
12254                                                 echo "Neither does it support 8."
12255                                         fi
12256                                 fi
12257                         else
12258                                 echo "It does not support 2..."
12259                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12260                                         voidflags=13
12261                                         echo "But it supports 4 and 8."
12262                                 else
12263                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12264                                                 voidflags=5
12265                                                 echo "And it supports 4 but has not heard about 8."
12266                                         else
12267                                                 echo "However it supports 8 but not 4."
12268                                         fi
12269                                 fi
12270                         fi
12271                 else
12272                         echo "There is no support at all for void."
12273                         voidflags=0
12274                 fi
12275         fi
12276 esac
12277 case "$voidflags" in
12278 "$defvoidused") ;;
12279 *)      $cat >&4 <<'EOM'
12280   Support flag bits are:
12281     1: basic void declarations.
12282     2: arrays of pointers to functions returning void.
12283     4: operations between pointers to and addresses of void functions.
12284     8: generic void pointers.
12285 EOM
12286         dflt="$voidflags";
12287         rp="Your void support flags add up to what?"
12288         . ./myread
12289         voidflags="$ans"
12290         ;;
12291 esac
12292 $rm -f try.* .out
12293
12294
12295 : How can we generate normalized random numbers ?
12296 echo " "
12297 echo "Looking for a random number function..." >&4
12298 case "$randfunc" in
12299 '')
12300         if set drand48 val -f; eval $csym; $val; then
12301                 dflt="drand48"
12302                 echo "Good, found drand48()." >&4
12303         elif set random val -f; eval $csym; $val; then
12304                 dflt="random"
12305                 echo "OK, found random()." >&4
12306         else
12307                 dflt="rand"
12308                 echo "Yick, looks like I have to use rand()." >&4
12309         fi
12310         echo " "
12311         ;;
12312 *)
12313         dflt="$randfunc"
12314         ;;
12315 esac
12316 cont=true
12317
12318 case "$ccflags" in
12319 *-Dmy_rand=*|*-Dmy_srand=*)
12320         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12321         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12322         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12323         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12324         ;;
12325 esac
12326
12327 while $test "$cont"; do
12328         rp="Use which function to generate random numbers?"
12329         . ./myread
12330         if $test "$ans" = "$dflt"; then
12331                 : null
12332         else
12333                 randbits=''
12334         fi
12335         randfunc="$ans"
12336         if set $ans val -f; eval $csym; $val; then
12337                 cont=''
12338         else
12339                 dflt=y
12340                 rp="I cannot find function $ans. Use that name anyway?"
12341                 . ./myread
12342                 dflt=rand
12343                 case "$ans" in
12344                         [yY]*) cont='';;
12345                 esac
12346         fi
12347         case "$cont" in
12348         '')
12349                 case "$randfunc" in
12350                 drand48)
12351                         drand01="drand48()"
12352                         seedfunc="srand48"
12353                         randbits=48
12354                         randseedtype=long
12355                         ;;
12356                 rand|random)
12357                         case "$randbits" in
12358                         '')
12359 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12360                                 $cat >try.c <<EOCP
12361 #$i_unistd I_UNISTD
12362 #$i_stdlib I_STDLIB
12363 #include <stdio.h>
12364 #ifdef I_UNISTD
12365 #  include <unistd.h>
12366 #endif
12367 #ifdef I_STDLIB
12368 #  include <stdlib.h>
12369 #endif
12370 int main()
12371 {
12372         register int i;
12373         register unsigned long tmp;
12374         register unsigned long max = 0L;
12375
12376         for (i = 1000; i; i--) {
12377                 tmp = (unsigned long) $randfunc();
12378                 if (tmp > max) max = tmp;
12379         }
12380         for (i = 0; max; i++)
12381                 max /= 2;
12382         printf("%d\n",i);
12383 }
12384 EOCP
12385                                 set try
12386                                 if eval $compile_ok; then
12387                                         dflt=`try`
12388                                 else
12389                                         dflt='?'
12390                                         echo "(I can't seem to compile the test program...)"
12391                                 fi
12392                                 ;;
12393                         *)
12394                                 dflt="$randbits"
12395                                 ;;
12396                         esac
12397                         rp="How many bits does your $randfunc() function produce?"
12398                         . ./myread
12399                         randbits="$ans"
12400                         $rm -f try.c try
12401                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12402                         seedfunc="s$randfunc"
12403                         randseedtype=unsigned
12404                         ;;
12405                 *)
12406                         dflt="31"
12407                         rp="How many bits does your $randfunc() function produce?"
12408                         . ./myread
12409                         randbits="$ans"
12410                         seedfunc="s$randfunc"
12411                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12412                         if set $seedfunc val -f; eval $csym; $val; then
12413                                 echo "(Using $seedfunc() to seed random generator)"
12414                         else
12415                                 echo "(Warning: no $seedfunc() to seed random generator)"
12416                                 seedfunc=rand
12417                         fi
12418                         randseedtype=unsigned
12419                         ;;
12420                 esac
12421                 ;;
12422         esac
12423 done
12424
12425 echo " "
12426 echo "Determining whether or not we are on an EBCDIC system..." >&4
12427 $cat >tebcdic.c <<'EOM'
12428 int main()
12429 {
12430   if ('M'==0xd4) return 0;
12431   return 1;
12432 }
12433 EOM
12434
12435 val=$undef
12436 set tebcdic
12437 if eval $compile_ok; then
12438         if ./tebcdic; then
12439                 echo "You have EBCDIC." >&4
12440                 val="$define"
12441         else
12442                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12443         fi
12444 else
12445         echo "I'm unable to compile the test program." >&4
12446         echo "I'll assume ASCII or some ISO Latin." >&4
12447 fi
12448 $rm -f tebcdic.c tebcdic
12449 set ebcdic
12450 eval $setvar
12451
12452 echo " "
12453 $cat >&4 <<EOM
12454 Checking how to flush all pending stdio output...
12455 EOM
12456 # I only know how to find the first 32 possibly open files on SunOS.
12457 # See also hints/sunos_4_1.sh and util.c  --AD
12458 case "$osname" in
12459 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12460 esac
12461 $cat >>try.c <<EOCP
12462 #include <stdio.h>
12463 #$i_unistd I_UNISTD
12464 #ifdef I_UNISTD
12465 # include <unistd.h>
12466 #endif
12467 #$d_sysconf HAS_SYSCONF
12468 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12469 #ifdef HAS_STDIO_STREAM_ARRAY
12470 # define STDIO_STREAM_ARRAY $stdio_stream_array
12471 #endif
12472 int main() {
12473   FILE* p = fopen("try.out", "w");
12474 #ifdef TRY_FPUTC
12475   fputc('x', p);
12476 #else
12477 # ifdef TRY_FPRINTF
12478   fprintf(p, "x");
12479 # endif
12480 #endif
12481 #ifdef TRY_FFLUSH_NULL
12482   fflush(NULL);
12483 #endif
12484 #ifdef TRY_FFLUSH_ALL
12485   {
12486     long open_max = -1;
12487 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12488     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12489 # else
12490 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12491     open_max = sysconf(_SC_OPEN_MAX);
12492 #  else
12493 #   ifdef FOPEN_MAX
12494     open_max = FOPEN_MAX;
12495 #   else
12496 #    ifdef OPEN_MAX
12497     open_max = OPEN_MAX;
12498 #    else
12499 #     ifdef _NFILE
12500     open_max = _NFILE;
12501 #     endif
12502 #    endif
12503 #   endif
12504 #  endif
12505 # endif 
12506 # ifdef HAS_STDIO_STREAM_ARRAY
12507     if (open_max > 0) {
12508       long i;
12509       for (i = 0; i < open_max; i++)
12510             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12511                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12512                 STDIO_STREAM_ARRAY[i]._flag)
12513                 fflush(&STDIO_STREAM_ARRAY[i]);
12514     }   
12515   }
12516 # endif
12517 #endif
12518   _exit(42);
12519 }
12520 EOCP
12521 : first we have to find out how _not_ to flush
12522 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12523     output=''
12524     set try -DTRY_FPUTC
12525     if eval $compile; then
12526             $rm -f try.out
12527             ./try$exe_ext 2>/dev/null
12528             if $test ! -s try.out -a "X$?" = X42; then
12529                 output=-DTRY_FPUTC
12530             fi
12531     fi
12532     case "$output" in
12533     '')
12534             set try -DTRY_FPRINTF
12535             $rm -f try.out
12536             if eval $compile; then
12537                     $rm -f try.out
12538                     ./try$exe_ext 2>/dev/null
12539                     if $test ! -s try.out -a "X$?" = X42; then
12540                         output=-DTRY_FPRINTF
12541                     fi
12542             fi
12543         ;;
12544     esac
12545 fi
12546 : check for fflush NULL behaviour
12547 case "$fflushNULL" in
12548 '')     set try -DTRY_FFLUSH_NULL $output
12549         if eval $compile; then
12550                 $rm -f try.out
12551                 ./try$exe_ext 2>/dev/null
12552                 code="$?"
12553                 if $test -s try.out -a "X$code" = X42; then
12554                         fflushNULL="`$cat try.out`"
12555                 else
12556                         if $test "X$code" != X42; then
12557                                 $cat >&4 <<EOM
12558 (If this test failed, don't worry, we'll try another method shortly.)
12559 EOM
12560                         fi
12561                 fi
12562         fi
12563         $rm -f core try.core core.try.*
12564         case "$fflushNULL" in
12565         x)      $cat >&4 <<EOM
12566 Your fflush(NULL) works okay for output streams.
12567 Let's see if it clobbers input pipes...
12568 EOM
12569 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12570 # bug that improperly flushes the input end of pipes.  So we avoid the
12571 # autoflush on fork/system/exec support for now. :-(
12572 $cat >tryp.c <<EOCP
12573 #include <stdio.h>
12574 int
12575 main(int argc, char **argv)
12576 {
12577     char buf[1024];
12578     int i;
12579     char *bp = buf;
12580     while (1) {
12581         while ((i = getc(stdin)) != -1
12582                && (*bp++ = i) != '\n'
12583                && bp < &buf[1024])
12584         /* DO NOTHING */ ;
12585         *bp = '\0';
12586         fprintf(stdout, "%s", buf);
12587         fflush(NULL);
12588         if (i == -1)
12589             return 0;
12590         bp = buf;
12591     }
12592 }
12593 EOCP
12594                 fflushNULL="$define"
12595                 set tryp
12596                 if eval $compile; then
12597                     $rm -f tryp.out
12598                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12599                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12600                        $cat >&4 <<EOM
12601 fflush(NULL) seems to behave okay with input streams.
12602 EOM
12603                         fflushNULL="$define"
12604                     else
12605                         $cat >&4 <<EOM
12606 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12607 EOM
12608                         fflushNULL="$undef"
12609                     fi
12610                 fi
12611                 $rm -f core tryp.c tryp.core core.tryp.*
12612                 ;;
12613         '')     $cat >&4 <<EOM
12614 Your fflush(NULL) isn't working (contrary to ANSI C).
12615 EOM
12616                 fflushNULL="$undef"
12617                 ;;
12618         *)      $cat >&4 <<EOM
12619 Cannot figure out whether your fflush(NULL) works or not.
12620 I'm assuming it doesn't (contrary to ANSI C).
12621 EOM
12622                 fflushNULL="$undef"
12623                 ;;
12624         esac
12625         ;;
12626 $define|true|[yY]*)
12627         fflushNULL="$define"
12628         ;;
12629 *)
12630         fflushNULL="$undef"
12631         ;;
12632 esac
12633 : check explicit looping only if NULL did not work, and if the pipe
12634 : bug does not show up on an explicit flush too
12635 case "$fflushNULL" in
12636 "$undef")
12637         $cat >tryp.c <<EOCP
12638 #include <stdio.h>
12639 int
12640 main(int argc, char **argv)
12641 {
12642     char buf[1024];
12643     int i;
12644     char *bp = buf;
12645     while (1) {
12646         while ((i = getc(stdin)) != -1
12647                && (*bp++ = i) != '\n'
12648                && bp < &buf[1024])
12649         /* DO NOTHING */ ;
12650         *bp = '\0';
12651         fprintf(stdout, "%s", buf);
12652         fflush(stdin);
12653         if (i == -1)
12654             return 0;
12655         bp = buf;
12656     }
12657 }
12658 EOCP
12659         set tryp
12660         if eval $compile; then
12661             $rm -f tryp.out
12662             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12663             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12664                $cat >&4 <<EOM
12665 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12666 EOM
12667                 : now check for fflushall behaviour
12668                 case "$fflushall" in
12669                 '')     set try -DTRY_FFLUSH_ALL $output
12670                         if eval $compile; then
12671                                 $cat >&4 <<EOM
12672 (Now testing the other method--but note that this also may fail.)
12673 EOM
12674                                 $rm -f try.out
12675                                 ./try$exe_ext 2>/dev/null
12676                                 if $test -s try.out -a "X$?" = X42; then
12677                                         fflushall="`$cat try.out`"
12678                                 fi
12679                         fi
12680                         $rm -f core try.core core.try.*
12681                         case "$fflushall" in
12682                         x)      $cat >&4 <<EOM
12683 Whew. Flushing explicitly all the stdio streams works.
12684 EOM
12685                                 fflushall="$define"
12686                                 ;;
12687                         '')     $cat >&4 <<EOM
12688 Sigh. Flushing explicitly all the stdio streams doesn't work.
12689 EOM
12690                                 fflushall="$undef"
12691                                 ;;
12692                         *)      $cat >&4 <<EOM
12693 Cannot figure out whether flushing stdio streams explicitly works or not.
12694 I'm assuming it doesn't.
12695 EOM
12696                                 fflushall="$undef"
12697                                 ;;
12698                         esac
12699                         ;;
12700                 "$define"|true|[yY]*)
12701                         fflushall="$define"
12702                         ;;
12703                 *)
12704                         fflushall="$undef"
12705                         ;;
12706                 esac
12707             else
12708                 $cat >&4 <<EOM
12709 All is futile.  Even fflush(stdin) clobbers input pipes!
12710 EOM
12711                 fflushall="$undef"
12712             fi
12713         else
12714             fflushall="$undef"
12715         fi
12716         $rm -f core tryp.c tryp.core core.tryp.*
12717         ;;
12718 *)      fflushall="$undef"
12719         ;;
12720 esac
12721
12722 case "$fflushNULL$fflushall" in
12723 undefundef)
12724         $cat <<EOM
12725 OK, I give up.  I cannot figure out how to flush pending stdio output.
12726 We won't be flushing handles at all before fork/exec/popen.
12727 EOM
12728         ;;
12729 esac
12730 $rm -f try.* try$exe_ext
12731
12732 : Store the full pathname to the ar program for use in the C program
12733 : Respect a hint or command line value for full_ar.
12734 case "$full_ar" in
12735 '') full_ar=$ar ;;
12736 esac
12737
12738 : Store the full pathname to the sed program for use in the C program
12739 full_sed=$sed
12740
12741 : see what type gids are declared as in the kernel
12742 echo " "
12743 echo "Looking for the type for group ids returned by getgid()."
12744 set gid_t gidtype xxx stdio.h sys/types.h
12745 eval $typedef
12746 case "$gidtype" in
12747 xxx)
12748         xxx=`./findhdr sys/user.h`
12749         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12750         case $1 in
12751         unsigned) dflt="$1 $2" ;;
12752         *) dflt="$1" ;;
12753         esac
12754         ;;
12755 *) dflt="$gidtype";;
12756 esac
12757 case "$gidtype" in
12758 gid_t) echo "gid_t found." ;;
12759 *)      rp="What is the type for group ids returned by getgid()?"
12760         . ./myread
12761         gidtype="$ans"
12762         ;;
12763 esac
12764
12765 echo " "
12766 case "$gidtype" in
12767 *_t) zzz="$gidtype"     ;;
12768 *)   zzz="gid"          ;;
12769 esac
12770 echo "Checking the size of $zzz..." >&4 
12771 cat > try.c <<EOCP
12772 #include <sys/types.h>
12773 #include <stdio.h>
12774 int main() {
12775     printf("%d\n", (int)sizeof($gidtype));
12776     exit(0);
12777 }
12778 EOCP
12779 set try
12780 if eval $compile_ok; then
12781         yyy=`./try`
12782         case "$yyy" in
12783         '')     gidsize=4
12784                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12785                 ;;
12786         *)      gidsize=$yyy
12787                 echo "Your $zzz is $gidsize bytes long."
12788                 ;;
12789         esac
12790 else
12791         gidsize=4
12792         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12793 fi
12794
12795
12796 echo " "
12797 case "$gidtype" in
12798 *_t) zzz="$gidtype"     ;;
12799 *)   zzz="gid"          ;;
12800 esac
12801 echo "Checking the sign of $zzz..." >&4 
12802 cat > try.c <<EOCP
12803 #include <sys/types.h>
12804 #include <stdio.h>
12805 int main() {
12806         $gidtype foo = -1;
12807         if (foo < 0)
12808                 printf("-1\n");
12809         else
12810                 printf("1\n");
12811 }
12812 EOCP
12813 set try
12814 if eval $compile; then
12815         yyy=`./try`
12816         case "$yyy" in
12817         '')     gidsign=1
12818                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12819                 ;;
12820         *)      gidsign=$yyy
12821                 case "$gidsign" in
12822                  1) echo "Your $zzz is unsigned." ;;
12823                 -1) echo "Your $zzz is signed."   ;;
12824                 esac
12825                 ;;
12826         esac
12827 else
12828         gidsign=1
12829         echo "(I can't compile the test program--guessing unsigned.)" >&4
12830 fi
12831
12832
12833 echo " "
12834
12835 if $test X"$quadtype" != X; then
12836
12837 echo "Checking how to print 64-bit integers..." >&4
12838
12839 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12840         $cat >try.c <<'EOCP'
12841 #include <sys/types.h>
12842 #include <stdio.h>
12843 int main() {
12844   int q = 12345678901;
12845   printf("%ld\n", q);
12846 }
12847 EOCP
12848         set try
12849         if eval $compile; then
12850                 yyy=`./try$exe_ext`
12851                 case "$yyy" in
12852                 12345678901)
12853                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12854                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12855                         echo "We will use %d."
12856                         ;;
12857                 esac
12858         fi
12859 fi
12860
12861 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12862         $cat >try.c <<'EOCP'
12863 #include <sys/types.h>
12864 #include <stdio.h>
12865 int main() {
12866   long q = 12345678901;
12867   printf("%ld\n", q);
12868 }
12869 EOCP
12870         set try
12871         if eval $compile; then
12872                 yyy=`./try$exe_ext`
12873                 case "$yyy" in
12874                 12345678901)
12875                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12876                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12877                         echo "We will use %ld."
12878                         ;;
12879                 esac
12880         fi
12881 fi
12882
12883 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12884         $cat >try.c <<'EOCP'
12885 #include <sys/types.h>
12886 #include <inttypes.h>
12887 #include <stdio.h>
12888 int main() {
12889   int64_t q = 12345678901;
12890   printf("%" PRId64 "\n", q);
12891 }
12892 EOCP
12893         set try
12894         if eval $compile; then
12895                 yyy=`./try$exe_ext`
12896                 case "$yyy" in
12897                 12345678901)
12898                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12899                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12900                         echo "We will use the C9X style."
12901                         ;;
12902                 esac
12903         fi
12904 fi
12905
12906 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12907         $cat >try.c <<'EOCP'
12908 #include <sys/types.h>
12909 #include <stdio.h>
12910 int main() {
12911   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12912   printf("%lld\n", q);
12913 }
12914 EOCP
12915         set try
12916         if eval $compile; then
12917                 yyy=`./try$exe_ext`
12918                 case "$yyy" in
12919                 12345678901)
12920                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12921                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12922                         echo "We will use the %lld style."
12923                         ;;
12924                 esac
12925         fi
12926 fi
12927
12928 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12929         $cat >try.c <<EOCP
12930 #include <sys/types.h>
12931 #include <stdio.h>
12932 int main() {
12933   $quadtype q = 12345678901;
12934   printf("%Ld\n", q);
12935 }
12936 EOCP
12937         set try
12938         if eval $compile; then
12939                 yyy=`./try$exe_ext`
12940                 case "$yyy" in
12941                 12345678901)
12942                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12943                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12944                         echo "We will use %Ld."
12945                         ;;
12946                 esac
12947         fi
12948 fi
12949
12950 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12951         $cat >try.c <<EOCP
12952 #include <sys/types.h>
12953 #include <stdio.h>
12954 int main() {
12955   $quadtype q = 12345678901;
12956   printf("%qd\n", q);
12957 }
12958 EOCP
12959         set try
12960         if eval $compile; then
12961                 yyy=`./try$exe_ext`
12962                 case "$yyy" in
12963                 12345678901)
12964                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12965                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12966                         echo "We will use %qd."
12967                         ;;
12968                 esac
12969         fi
12970 fi
12971
12972 if $test X"$sPRId64" = X; then
12973         echo "Cannot figure out how to print 64-bit integers." >&4
12974 fi
12975
12976 $rm -f try try.*
12977
12978 fi
12979
12980 case "$sPRId64" in
12981 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12982         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12983         ;;
12984 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12985         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12986         ;;
12987 esac
12988
12989
12990 echo " "
12991 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12992
12993 if $test X"$ivsize" = X8; then
12994         ivdformat="$sPRId64"
12995         uvuformat="$sPRIu64"
12996         uvoformat="$sPRIo64"
12997         uvxformat="$sPRIx64"
12998 else
12999         if $test X"$ivsize" = X"$longsize"; then
13000                 ivdformat='"ld"'
13001                 uvuformat='"lu"'
13002                 uvoformat='"lo"'
13003                 uvxformat='"lx"'
13004         else
13005                 if $test X"$ivsize" = X"$intsize"; then
13006                         ivdformat='"d"'
13007                         uvuformat='"u"'
13008                         uvoformat='"o"'
13009                         uvxformat='"x"'
13010                 else
13011                         : far out
13012                         if $test X"$ivsize" = X"$shortsize"; then
13013                                 ivdformat='"hd"'
13014                                 uvuformat='"hu"'
13015                                 uvoformat='"ho"'
13016                                 uvxformat='"hx"'
13017                         fi
13018                 fi
13019         fi
13020 fi
13021
13022 case "$ivdformat" in
13023 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13024     exit 1
13025     ;;
13026 esac
13027
13028
13029 echo " "
13030 $echo "Checking the format string to be used for gids..." >&4
13031
13032 case "$gidsign" in
13033 -1)     if $test X"$gidsize" = X"$ivsize"; then
13034                 gidformat="$ivdformat"
13035         else
13036                 if $test X"$gidsize" = X"$longsize"; then
13037                         gidformat='"ld"'
13038                 else
13039                         if $test X"$gidsize" = X"$intsize"; then
13040                                 gidformat='"d"'
13041                         else
13042                                 if $test X"$gidsize" = X"$shortsize"; then
13043                                         gidformat='"hd"'
13044                                 fi
13045                         fi
13046                 fi
13047         fi
13048         ;;
13049 *)      if $test X"$gidsize" = X"$uvsize"; then
13050                 gidformat="$uvuformat"
13051         else
13052                 if $test X"$gidsize" = X"$longsize"; then
13053                         gidformat='"lu"'
13054                 else
13055                         if $test X"$gidsize" = X"$intsize"; then
13056                                 gidformat='"u"'
13057                         else
13058                                 if $test X"$gidsize" = X"$shortsize"; then
13059                                         gidformat='"hu"'
13060                                 fi
13061                         fi
13062                 fi
13063         fi
13064         ;;
13065 esac
13066
13067 : see if getgroups exists
13068 set getgroups d_getgrps
13069 eval $inlibc
13070
13071 : see if setgroups exists
13072 set setgroups d_setgrps
13073 eval $inlibc
13074
13075
13076 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13077 echo " "
13078 case "$d_getgrps$d_setgrps" in
13079 *define*)
13080         case "$groupstype" in
13081         '') dflt="$gidtype" ;;
13082         *)  dflt="$groupstype" ;;
13083         esac
13084         $cat <<EOM
13085 What type of pointer is the second argument to getgroups() and setgroups()?
13086 Usually this is the same as group ids, $gidtype, but not always.
13087
13088 EOM
13089         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13090         . ./myread
13091         groupstype="$ans"
13092         ;;
13093 *)  groupstype="$gidtype";;
13094 esac
13095
13096 echo " "
13097 echo "Checking if your $make program sets \$(MAKE)..." >&4
13098 case "$make_set_make" in
13099 '')
13100         $sed 's/^X //' > testmake.mak << 'EOF'
13101 Xall:
13102 X       @echo 'maketemp="$(MAKE)"'
13103 EOF
13104         case "`$make -f testmake.mak 2>/dev/null`" in
13105         *maketemp=*) make_set_make='#' ;;
13106         *)      make_set_make="MAKE=$make" ;;
13107         esac
13108         $rm -f testmake.mak
13109         ;;
13110 esac
13111 case "$make_set_make" in
13112 '#') echo "Yup, it does.";;
13113 *) echo "Nope, it doesn't.";;
13114 esac
13115
13116 : see what type is used for mode_t
13117 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13118 set mode_t modetype int stdio.h sys/types.h
13119 eval $typedef_ask
13120
13121 : define a fucntion to check prototypes
13122 $cat > protochk <<EOSH
13123 $startsh
13124 cc="$cc"
13125 optimize="$optimize"
13126 ccflags="$ccflags"
13127 prototype="$prototype"
13128 define="$define"
13129 rm=$rm
13130 EOSH
13131
13132 $cat >> protochk <<'EOSH'
13133
13134 $rm -f try.c
13135 foo="$1"
13136 shift
13137 while test $# -ge 2; do
13138         case "$1" in
13139                 $define) echo "#include <$2>" >> try.c ;;
13140                 literal) echo "$2" >> try.c ;;
13141         esac
13142     shift 2
13143 done
13144 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13145 cat >> try.c <<'EOCP'
13146 #ifdef CAN_PROTOTYPE
13147 #define _(args) args
13148 #else
13149 #define _(args) ()
13150 #endif
13151 EOCP
13152 echo "$foo" >> try.c
13153 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13154 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13155 status=$?
13156 $rm -f try.[co]
13157 exit $status
13158 EOSH
13159 chmod +x protochk
13160 $eunicefix protochk
13161
13162 : see what type is used for size_t
13163 rp="What is the type used for the length parameter for string functions?"
13164 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13165 eval $typedef_ask
13166
13167 : check for type of arguments to gethostbyaddr. 
13168 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13169         case "$d_gethbyaddr" in
13170         $define)
13171                 $cat <<EOM
13172
13173 Checking to see what type of arguments are accepted by gethostbyaddr().
13174 EOM
13175                 hdrs="$define sys/types.h
13176                         $d_socket sys/socket.h 
13177                         $i_niin netinet/in.h 
13178                         $i_netdb netdb.h
13179                         $i_unistd unistd.h"
13180                 : The first arg can 'char *' or 'void *'
13181                 : The second arg is some of integral type
13182                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13183                         for yyy in size_t long int; do
13184                                 case "$netdb_host_type" in
13185                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13186                                         if ./protochk "$try" $hdrs; then
13187                                                 echo "Your system accepts $xxx for the first arg."
13188                                                 echo "...and $yyy for the second arg."
13189                                                 netdb_host_type="$xxx"
13190                                                 netdb_hlen_type="$yyy"
13191                                         fi
13192                                         ;;
13193                                 esac
13194                         done
13195                 done
13196                 : In case none of those worked, prompt the user.
13197                 case "$netdb_host_type" in
13198                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13199                         dflt='char *'
13200                         . ./myread
13201                         netdb_host_type=$ans
13202                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13203                         dflt="$sizetype"
13204                         . ./myread
13205                         netdb_hlen_type=$ans
13206                         ;;
13207                 esac
13208                 ;;
13209         *)      : no gethostbyaddr, so pick harmless defaults
13210                 netdb_host_type='char *'
13211                 netdb_hlen_type="$sizetype"
13212                 ;;
13213         esac
13214         # Remove the "const" if needed. -- but then we'll have a 
13215         # prototype clash!
13216         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13217 fi
13218
13219 : check for type of argument to gethostbyname. 
13220 if test "X$netdb_name_type" = X ; then
13221         case "$d_gethbyname" in
13222         $define)
13223                 $cat <<EOM
13224
13225 Checking to see what type of argument is accepted by gethostbyname().
13226 EOM
13227                 hdrs="$define sys/types.h
13228                         $d_socket sys/socket.h 
13229                         $i_niin netinet/in.h 
13230                         $i_netdb netdb.h
13231                         $i_unistd unistd.h"
13232                 for xxx in "const char *" "char *"; do
13233                         case "$netdb_name_type" in
13234                         '')     try="extern struct hostent *gethostbyname($xxx);"
13235                                 if ./protochk "$try" $hdrs; then
13236                                         echo "Your system accepts $xxx."
13237                                         netdb_name_type="$xxx"
13238                                 fi
13239                                 ;;
13240                         esac
13241                 done
13242                 : In case none of those worked, prompt the user.
13243                 case "$netdb_name_type" in
13244                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13245                         dflt='char *'
13246                         . ./myread
13247                         netdb_name_type=$ans
13248                         ;;
13249                 esac
13250                 ;;
13251         *)      : no gethostbyname, so pick harmless default
13252                 netdb_name_type='char *'
13253                 ;;
13254         esac
13255 fi
13256
13257 : check for type of 1st argument to getnetbyaddr. 
13258 if test "X$netdb_net_type" = X ; then
13259         case "$d_getnbyaddr" in
13260         $define)
13261                 $cat <<EOM
13262
13263 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13264 EOM
13265                 hdrs="$define sys/types.h
13266                         $d_socket sys/socket.h 
13267                         $i_niin netinet/in.h 
13268                         $i_netdb netdb.h
13269                         $i_unistd unistd.h"
13270                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13271                         case "$netdb_net_type" in
13272                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13273                                 if ./protochk "$try" $hdrs; then
13274                                         echo "Your system accepts $xxx."
13275                                         netdb_net_type="$xxx"
13276                                 fi
13277                                 ;;
13278                         esac
13279                 done
13280                 : In case none of those worked, prompt the user.
13281                 case "$netdb_net_type" in
13282                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13283                         dflt='long'
13284                         . ./myread
13285                         netdb_net_type=$ans
13286                         ;;
13287                 esac
13288                 ;;
13289         *)      : no getnetbyaddr, so pick harmless default
13290                 netdb_net_type='long'
13291                 ;;
13292         esac
13293 fi
13294 : locate the preferred pager for this system
13295 case "$pager" in
13296 '')
13297         dflt=''
13298         case "$pg" in
13299         /*) dflt=$pg;;
13300         esac
13301         case "$more" in
13302         /*) dflt=$more;;
13303         esac
13304         case "$less" in
13305         /*) dflt=$less;;
13306         esac
13307         case "$dflt" in
13308         '') dflt=/usr/ucb/more;;
13309         esac
13310         ;;
13311 *) dflt="$pager";;
13312 esac
13313 echo " "
13314 fn=f/
13315 rp='What pager is used on your system?'
13316 . ./getfile
13317 pager="$ans"
13318
13319 : see what type pids are declared as in the kernel
13320 rp="What is the type of process ids on this system?"
13321 set pid_t pidtype int stdio.h sys/types.h
13322 eval $typedef_ask
13323
13324 : Find earliest binary compatible site_perl subdirectory perl can use.
13325 case "$bincompat5005" in
13326 "$define") xs_apiversion='5.005' ;;
13327 *) xs_apiversion=$version ;;   # The current site_perl version.
13328 esac
13329 : Find earliest pure perl site_perl subdirectory perl can use.
13330 : The versioned directories started at 5.005.
13331 pm_apiversion='5.005'
13332
13333 : check for length of pointer
13334 echo " "
13335 case "$ptrsize" in
13336 '')
13337         echo "Checking to see how big your pointers are..." >&4
13338         if test "$voidflags" -gt 7; then
13339                 echo '#define VOID_PTR char *' > try.c
13340         else
13341                 echo '#define VOID_PTR void *' > try.c
13342         fi
13343         $cat >>try.c <<'EOCP'
13344 #include <stdio.h>
13345 int main()
13346 {
13347     printf("%d\n", (int)sizeof(VOID_PTR));
13348     exit(0);
13349 }
13350 EOCP
13351         set try
13352         if eval $compile_ok; then
13353                 ptrsize=`./try`
13354                 echo "Your pointers are $ptrsize bytes long."
13355         else
13356                 dflt='4'
13357                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13358                 rp="What is the size of a pointer (in bytes)?"
13359                 . ./myread
13360                 ptrsize="$ans"
13361         fi
13362         ;;
13363 esac
13364 $rm -f try.c try
13365
13366 : see if ar generates random libraries by itself
13367 echo " "
13368 echo "Checking how to generate random libraries on your machine..." >&4
13369 echo 'int bar1() { return bar2(); }' > bar1.c
13370 echo 'int bar2() { return 2; }' > bar2.c
13371 $cat > foo.c <<'EOP'
13372 int main() { printf("%d\n", bar1()); exit(0); }
13373 EOP
13374 $cc $ccflags -c bar1.c >/dev/null 2>&1
13375 $cc $ccflags -c bar2.c >/dev/null 2>&1
13376 $cc $ccflags -c foo.c >/dev/null 2>&1
13377 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13378 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13379         ./foobar >/dev/null 2>&1; then
13380         echo "$ar appears to generate random libraries itself."
13381         orderlib=false
13382         ranlib=":"
13383 elif $ar ts bar$_a >/dev/null 2>&1 &&
13384         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13385         ./foobar >/dev/null 2>&1; then
13386                 echo "a table of contents needs to be added with '$ar ts'."
13387                 orderlib=false
13388                 ranlib="$ar ts"
13389 else
13390         case "$ranlib" in
13391         :) ranlib='';;
13392         '')
13393                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13394                 $test -f $ranlib || ranlib=''
13395                 ;;
13396         esac
13397         if $test -n "$ranlib"; then
13398                 echo "your system has '$ranlib'; we'll use that."
13399                 orderlib=false
13400         else
13401                 echo "your system doesn't seem to support random libraries"
13402                 echo "so we'll use lorder and tsort to order the libraries."
13403                 orderlib=true
13404                 ranlib=":"
13405         fi
13406 fi
13407 $rm -f foo* bar* 
13408
13409 : check for type of arguments to select. 
13410 case "$selecttype" in
13411 '') case "$d_select" in
13412         $define)
13413                 echo " "
13414                 $cat <<EOM
13415 Checking to see what type of arguments are accepted by select().
13416 EOM
13417                 hdrs="$define sys/types.h
13418                         $i_systime sys/time.h 
13419                         $i_sysselct sys/select.h
13420                         $d_socket sys/socket.h"
13421                 : The first arg can be int, unsigned, or size_t
13422                 : The last arg may or may not be 'const'
13423                 val=''
13424                 : void pointer has been seen but using that
13425                 : breaks the selectminbits test
13426                 for xxx in 'fd_set *' 'int *'; do
13427                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13428                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13429                                         case "$val" in
13430                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13431                                                 if ./protochk "$try" $hdrs; then
13432                                                         echo "Your system accepts $xxx."
13433                                                         val="$xxx"
13434                                                 fi
13435                                                 ;;
13436                                         esac
13437                                 done
13438                         done
13439                 done
13440                 case "$val" in
13441                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13442                         case "$d_fd_set" in
13443                                 $define) dflt="fd_set *" ;;
13444                                 *)              dflt="int *" ;;
13445                         esac
13446                         . ./myread
13447                         val=$ans
13448                         ;;
13449                 esac
13450                 selecttype="$val"
13451                 ;;
13452         *)      : no select, so pick a harmless default
13453                 selecttype='int *'
13454                 ;;
13455         esac
13456         ;;
13457 esac
13458
13459 : check for the select 'width'
13460 case "$selectminbits" in
13461 '') case "$d_select" in
13462         $define)
13463                 $cat <<EOM
13464
13465 Checking to see on how many bits at a time your select() operates...
13466 EOM
13467                 $cat >try.c <<EOCP
13468 #include <sys/types.h>
13469 #$i_time I_TIME
13470 #$i_systime I_SYS_TIME
13471 #$i_systimek I_SYS_TIME_KERNEL
13472 #ifdef I_TIME
13473 #   include <time.h>
13474 #endif
13475 #ifdef I_SYS_TIME
13476 #   ifdef I_SYS_TIME_KERNEL
13477 #       define KERNEL
13478 #   endif
13479 #   include <sys/time.h>
13480 #   ifdef I_SYS_TIME_KERNEL
13481 #       undef KERNEL
13482 #   endif
13483 #endif
13484 #$i_sysselct I_SYS_SELECT
13485 #ifdef I_SYS_SELECT
13486 #include <sys/select.h>
13487 #endif
13488 #$d_socket HAS_SOCKET
13489 #ifdef HAS_SOCKET
13490 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13491 #endif
13492 #include <stdio.h>
13493 $selecttype b;
13494 #define S sizeof(*(b))
13495 #define MINBITS 64
13496 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13497 #define NBITS  (NBYTES * 8)
13498 int main() {
13499     char s[NBYTES];
13500     struct timeval t;
13501     int i;
13502     FILE* fp;
13503     int fd;
13504
13505     fclose(stdin);
13506     fp = fopen("try.c", "r");
13507     if (fp == 0)
13508       exit(1);
13509     fd = fileno(fp);
13510     if (fd < 0)
13511       exit(2);
13512     b = ($selecttype)s;
13513     for (i = 0; i < NBITS; i++)
13514         FD_SET(i, b);
13515     t.tv_sec  = 0;
13516     t.tv_usec = 0;
13517     select(fd + 1, b, 0, 0, &t);
13518     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13519     printf("%d\n", i + 1);
13520     return 0;
13521 }
13522 EOCP
13523                 set try
13524                 if eval $compile_ok; then
13525                         selectminbits=`./try`
13526                         case "$selectminbits" in
13527                         '')     cat >&4 <<EOM
13528 Cannot figure out on how many bits at a time your select() operates.
13529 I'll play safe and guess it is 32 bits.
13530 EOM
13531                                 selectminbits=32
13532                                 bits="32 bits"
13533                                 ;;
13534                         1)      bits="1 bit" ;;
13535                         *)      bits="$selectminbits bits" ;;
13536                         esac
13537                         echo "Your select() operates on $bits at a time." >&4
13538                 else
13539                         rp='What is the minimum number of bits your select() operates on?'
13540                         case "$byteorder" in
13541                         1234|12345678)  dflt=32 ;;
13542                         *)              dflt=1  ;;
13543                         esac
13544                         . ./myread
13545                         val=$ans
13546                         selectminbits="$val"
13547                 fi
13548                 $rm -f try.* try
13549                 ;;
13550         *)      : no select, so pick a harmless default
13551                 selectminbits='32'
13552                 ;;
13553         esac
13554         ;;
13555 esac
13556
13557 : Trace out the files included by signal.h, then look for SIGxxx names.
13558 : Remove SIGARRAYSIZE used by HPUX.
13559 : Remove SIGSTKSIZE used by Linux.
13560 : Remove SIGSTKSZ used by Posix.
13561 : Remove SIGTYP void lines used by OS2.
13562 : Some cpps, like os390, dont give the file name anywhere
13563 if [ "X$fieldn" = X ]; then
13564         : Just make some guesses.  We check them later.
13565         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13566 else
13567         xxx=`echo '#include <signal.h>' |
13568         $cppstdin $cppminus $cppflags 2>/dev/null |
13569         $grep '^[       ]*#.*include' | 
13570         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13571 fi
13572 : Check this list of files to be sure we have parsed the cpp output ok.
13573 : This will also avoid potentially non-existent files, such 
13574 : as ../foo/bar.h
13575 xxxfiles=''
13576 for xx in $xxx /dev/null ; do
13577         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13578 done
13579 : If we have found no files, at least try signal.h
13580 case "$xxxfiles" in
13581 '')     xxxfiles=`./findhdr signal.h` ;;
13582 esac
13583 xxx=`awk '
13584 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13585         print substr($2, 4, 20)
13586 }
13587 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13588         print substr($3, 4, 20)
13589 }' $xxxfiles`
13590 : Append some common names just in case the awk scan failed.
13591 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13592 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13593 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13594 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13595 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13596
13597 : generate a few handy files for later
13598 $cat > signal.c <<'EOCP'
13599 #include <sys/types.h>
13600 #include <signal.h>
13601 #include <stdio.h>
13602 int main() {
13603
13604 /* Strange style to avoid deeply-nested #if/#else/#endif */
13605 #ifndef NSIG
13606 #  ifdef _NSIG
13607 #    define NSIG (_NSIG)
13608 #  endif
13609 #endif
13610
13611 #ifndef NSIG
13612 #  ifdef SIGMAX
13613 #    define NSIG (SIGMAX+1)
13614 #  endif
13615 #endif
13616
13617 #ifndef NSIG
13618 #  ifdef SIG_MAX
13619 #    define NSIG (SIG_MAX+1)
13620 #  endif
13621 #endif
13622
13623 #ifndef NSIG
13624 #  ifdef MAXSIG
13625 #    define NSIG (MAXSIG+1)
13626 #  endif
13627 #endif
13628
13629 #ifndef NSIG
13630 #  ifdef MAX_SIG
13631 #    define NSIG (MAX_SIG+1)
13632 #  endif
13633 #endif
13634
13635 #ifndef NSIG
13636 #  ifdef SIGARRAYSIZE
13637 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13638 #  endif
13639 #endif
13640
13641 #ifndef NSIG
13642 #  ifdef _sys_nsig
13643 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13644 #  endif
13645 #endif
13646
13647 /* Default to some arbitrary number that's big enough to get most
13648    of the common signals.
13649 */
13650 #ifndef NSIG
13651 #    define NSIG 50
13652 #endif
13653
13654 printf("NSIG %d\n", NSIG);
13655
13656 #ifndef JUST_NSIG
13657
13658 EOCP
13659
13660 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13661 {
13662         printf "#ifdef SIG"; printf $1; printf "\n"
13663         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13664         printf $1; printf ");\n"
13665         printf "#endif\n"
13666 }
13667 END {
13668         printf "#endif /* JUST_NSIG */\n";
13669         printf "exit(0);\n}\n";
13670 }
13671 ' >>signal.c
13672 $cat >signal.awk <<'EOP'
13673 BEGIN { ndups = 0 }
13674 $1 ~ /^NSIG$/ { nsig = $2 }
13675 ($1 !~ /^NSIG$/) && (NF == 2) {
13676     if ($2 > maxsig) { maxsig = $2 }
13677     if (sig_name[$2]) {
13678         dup_name[ndups] = $1
13679         dup_num[ndups] = $2
13680         ndups++ 
13681     }
13682     else {
13683         sig_name[$2] = $1
13684         sig_num[$2] = $2
13685     }
13686 }
13687 END { 
13688     if (nsig == 0) {
13689         nsig = maxsig + 1
13690     }
13691     printf("NSIG %d\n", nsig);
13692     for (n = 1; n < nsig; n++) {
13693         if (sig_name[n]) {
13694             printf("%s %d\n", sig_name[n], sig_num[n])
13695         }
13696         else {
13697             printf("NUM%d %d\n", n, n) 
13698         }
13699     }
13700     for (n = 0; n < ndups; n++) {
13701         printf("%s %d\n", dup_name[n], dup_num[n])
13702     }
13703 }
13704 EOP
13705 $cat >signal_cmd <<EOS
13706 $startsh
13707 if $test -s signal.lst; then
13708     echo "Using your existing signal.lst file"
13709         exit 0
13710 fi
13711 xxx="$xxx"
13712 EOS
13713 $cat >>signal_cmd <<'EOS'
13714
13715 set signal
13716 if eval $compile_ok; then
13717         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13718 else
13719         echo "(I can't seem be able to compile the whole test program)" >&4
13720         echo "(I'll try it in little pieces.)" >&4
13721         set signal -DJUST_NSIG
13722         if eval $compile_ok; then
13723                 ./signal$_exe > signal.nsg
13724                 $cat signal.nsg
13725         else
13726                 echo "I can't seem to figure out how many signals you have." >&4
13727                 echo "Guessing 50." >&4
13728                 echo 'NSIG 50' > signal.nsg
13729         fi
13730         : Now look at all the signal names, one at a time.
13731         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13732                 $cat > signal.c <<EOCP
13733 #include <sys/types.h>
13734 #include <signal.h>
13735 #include <stdio.h>
13736 int main() {
13737 printf("$xx %d\n", SIG${xx});
13738 return 0;
13739 }
13740 EOCP
13741                 set signal
13742                 if eval $compile; then
13743                         echo "SIG${xx} found."
13744                         ./signal$_exe  >> signal.ls1
13745                 else
13746                         echo "SIG${xx} NOT found."
13747                 fi
13748         done
13749         if $test -s signal.ls1; then
13750                 $cat signal.nsg signal.ls1 |
13751                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13752         fi
13753
13754 fi
13755 if $test -s signal.lst; then
13756         :
13757 else
13758         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13759         echo 'kill -l' >signal
13760         set X `csh -f <signal`
13761         $rm -f signal
13762         shift
13763         case $# in
13764         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13765         esac
13766         echo $@ | $tr ' ' $trnl | \
13767             $awk '{ printf "%s %d\n", $1, ++s; }
13768                   END { printf "NSIG %d\n", ++s }' >signal.lst
13769 fi
13770 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13771 EOS
13772 chmod a+x signal_cmd
13773 $eunicefix signal_cmd
13774
13775 : generate list of signal names
13776 echo " "
13777 case "$sig_name_init" in
13778 '') doinit=yes ;;
13779 *)  case "$sig_num_init" in
13780     ''|*,*) doinit=yes ;;
13781     esac ;;
13782 esac
13783 case "$doinit" in
13784 yes)
13785         echo "Generating a list of signal names and numbers..." >&4
13786         . ./signal_cmd
13787         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13788         sig_name=`$awk 'BEGIN { printf "ZERO " }
13789                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13790         sig_num=`$awk  'BEGIN { printf "0 " }
13791                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13792         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13793                              !/^NSIG/   { printf "\"%s\", ", $1 }
13794                              END        { printf "0\n" }' signal.lst`
13795         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13796                              !/^NSIG/   { printf "%d, ", $2}
13797                              END        { printf "0\n"}' signal.lst`
13798         ;;
13799 esac
13800 echo "The following $sig_count signals are available:"
13801 echo " "
13802 echo $sig_name | $awk \
13803 'BEGIN { linelen = 0 }
13804 {
13805         for (i = 1; i <= NF; i++) {
13806                 name = "SIG" $i " "
13807                 linelen = linelen + length(name)
13808                 if (linelen > 70) {
13809                         printf "\n"
13810                         linelen = length(name)
13811                 }
13812                 printf "%s", name
13813         }
13814         printf "\n"
13815 }'
13816 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13817
13818 echo " "
13819 case "$sizetype" in
13820 *_t) zzz="$sizetype"    ;;
13821 *)   zzz="filesize"     ;;
13822 esac
13823 echo "Checking the size of $zzz..." >&4 
13824 cat > try.c <<EOCP
13825 #include <sys/types.h>
13826 #include <stdio.h>
13827 int main() {
13828     printf("%d\n", (int)sizeof($sizetype));
13829     exit(0);
13830 }
13831 EOCP
13832 set try
13833 if eval $compile_ok; then
13834         yyy=`./try`
13835         case "$yyy" in
13836         '')     sizesize=4
13837                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13838                 ;;
13839         *)      sizesize=$yyy
13840                 echo "Your $zzz size is $sizesize bytes."
13841                 ;;
13842         esac
13843 else
13844         sizesize=4
13845         echo "(I can't compile the test program--guessing $sizesize.)" >&4
13846 fi
13847
13848
13849 : check for socklen_t
13850 echo " "
13851 echo "Checking to see if you have socklen_t..." >&4
13852 $cat >try.c <<EOCP
13853 #include <sys/types.h>
13854 #$d_socket HAS_SOCKET
13855 #ifdef HAS_SOCKET
13856 #include <sys/socket.h>
13857 #endif
13858 int main() { socklen_t x = 16; }
13859 EOCP
13860 set try
13861 if eval $compile; then
13862         val="$define"
13863         echo "You have socklen_t."
13864 else
13865         val="$undef"
13866         echo "You do not have socklen_t."
13867         case "$sizetype" in
13868         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
13869         esac
13870 fi
13871 $rm -f try try.*
13872 set d_socklen_t
13873 eval $setvar
13874
13875 : check for type of the size argument to socket calls
13876 case "$d_socket" in
13877 "$define")
13878         $cat <<EOM
13879
13880 Checking to see what type is the last argument of accept().
13881 EOM
13882         hdrs="$define sys/types.h $d_socket sys/socket.h" 
13883         yyy=''
13884         case "$d_socklen_t" in
13885         "$define") yyy="$yyy socklen_t"
13886         esac
13887         yyy="$yyy $sizetype int long unsigned"
13888         for xxx in $yyy; do
13889                 case "$socksizetype" in
13890                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
13891                         if ./protochk "$try" $hdrs; then
13892                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
13893                                 socksizetype="$xxx"
13894                         fi
13895                         ;;
13896                 esac
13897         done
13898 : In case none of those worked, prompt the user.
13899         case "$socksizetype" in
13900         '')     rp='What is the type for socket address structure sizes?'
13901                 dflt='int'
13902                 . ./myread
13903                 socksizetype=$ans
13904                 ;;
13905         esac
13906         ;;
13907 *)      : no sockets, so pick relatively harmless default
13908         socksizetype='int'
13909         ;;
13910 esac
13911
13912 : see what type is used for signed size_t
13913 set ssize_t ssizetype int stdio.h sys/types.h
13914 eval $typedef
13915 dflt="$ssizetype"
13916 $cat > ssize.c <<EOM
13917 #include <stdio.h>
13918 #include <sys/types.h>
13919 #define Size_t $sizetype
13920 #define SSize_t $dflt
13921 int main()
13922 {
13923         if (sizeof(Size_t) == sizeof(SSize_t))
13924                 printf("$dflt\n");
13925         else if (sizeof(Size_t) == sizeof(int))
13926                 printf("int\n");
13927         else 
13928                 printf("long\n");
13929         exit(0);
13930 }
13931 EOM
13932 echo " "
13933 set ssize
13934 if eval $compile_ok && ./ssize > /dev/null; then
13935         ssizetype=`./ssize`
13936         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13937 else
13938         $cat >&4 <<EOM
13939 Help! I can't compile and run the ssize_t test program: please enlighten me!
13940 (This is probably a misconfiguration in your system or libraries, and
13941 you really ought to fix it.  Still, I'll try anyway.)
13942
13943 I need a type that is the same size as $sizetype, but is guaranteed to
13944 be signed.  Common values are ssize_t, int and long.
13945
13946 EOM
13947         rp="What signed type is the same size as $sizetype?"
13948         . ./myread
13949         ssizetype="$ans"
13950 fi
13951 $rm -f ssize ssize.*
13952
13953 : see what type of char stdio uses.
13954 echo " "
13955 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13956         echo "Your stdio uses unsigned chars." >&4
13957         stdchar="unsigned char"
13958 else
13959         echo "Your stdio uses signed chars." >&4
13960         stdchar="char"
13961 fi
13962
13963 : see if time exists
13964 echo " "
13965 if test "X$d_time" = X -o X"$timetype" = X; then
13966     if set time val -f d_time; eval $csym; $val; then
13967                 echo 'time() found.' >&4
13968                 val="$define"
13969                 rp="What is the type returned by time() on this system?"
13970                 set time_t timetype long stdio.h sys/types.h
13971                 eval $typedef_ask
13972     else
13973                 echo 'time() not found, hope that will do.' >&4
13974                 val="$undef"
13975                 timetype='int';
13976     fi
13977     set d_time
13978     eval $setvar
13979 fi
13980
13981 : see what type uids are declared as in the kernel
13982 echo " "
13983 echo "Looking for the type for user ids returned by getuid()."
13984 set uid_t uidtype xxx stdio.h sys/types.h
13985 eval $typedef
13986 case "$uidtype" in
13987 xxx)
13988         xxx=`./findhdr sys/user.h`
13989         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13990         case $1 in
13991         unsigned) dflt="$1 $2" ;;
13992         *) dflt="$1" ;;
13993         esac
13994         ;;
13995 *) dflt="$uidtype";;
13996 esac
13997 case "$uidtype" in
13998 uid_t)  echo "uid_t found." ;;
13999 *)      rp="What is the type for user ids returned by getuid()?"
14000         . ./myread
14001         uidtype="$ans"
14002         ;;
14003 esac
14004
14005 echo " "
14006 case "$uidtype" in
14007 *_t) zzz="$uidtype"     ;;
14008 *)   zzz="uid"          ;;
14009 esac
14010 echo "Checking the size of $zzz..." >&4 
14011 cat > try.c <<EOCP
14012 #include <sys/types.h>
14013 #include <stdio.h>
14014 int main() {
14015     printf("%d\n", (int)sizeof($uidtype));
14016     exit(0);
14017 }
14018 EOCP
14019 set try
14020 if eval $compile_ok; then
14021         yyy=`./try`
14022         case "$yyy" in
14023         '')     uidsize=4
14024                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14025                 ;;
14026         *)      uidsize=$yyy
14027                 echo "Your $zzz is $uidsize bytes long."
14028                 ;;
14029         esac
14030 else
14031         uidsize=4
14032         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14033 fi
14034
14035 echo " "
14036 case "$uidtype" in
14037 *_t) zzz="$uidtype"     ;;
14038 *)   zzz="uid"          ;;
14039 esac
14040 echo "Checking the sign of $zzz..." >&4
14041 cat > try.c <<EOCP
14042 #include <sys/types.h>
14043 #include <stdio.h>
14044 int main() {
14045         $uidtype foo = -1;
14046         if (foo < 0)
14047                 printf("-1\n");
14048         else
14049                 printf("1\n");
14050 }
14051 EOCP
14052 set try
14053 if eval $compile; then
14054         yyy=`./try`
14055         case "$yyy" in
14056         '')     uidsign=1
14057                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14058                 ;;
14059         *)      uidsign=$yyy
14060                 case "$uidsign" in
14061                  1) echo "Your $zzz is unsigned." ;;
14062                 -1) echo "Your $zzz is signed."   ;;
14063                 esac
14064                 ;;
14065         esac
14066 else
14067         uidsign=1
14068         echo "(I can't compile the test program--guessing unsigned.)" >&4
14069 fi
14070
14071
14072
14073 echo " "
14074 $echo "Checking the format string to be used for uids..." >&4
14075
14076 case "$uidsign" in
14077 -1)     if $test X"$uidsize" = X"$ivsize"; then
14078                 uidformat="$ivdformat"
14079         else
14080                 if $test X"$uidsize" = X"$longsize"; then
14081                         uidformat='"ld"'
14082                 else
14083                         if $test X"$uidsize" = X"$intsize"; then
14084                                 uidformat='"d"'
14085                         else
14086                                 if $test X"$uidsize" = X"$shortsize"; then
14087                                         uidformat='"hd"'
14088                                 fi
14089                         fi
14090                 fi
14091         fi
14092         ;;
14093 *)      if $test X"$uidsize" = X"$uvsize"; then
14094                 uidformat="$uvuformat"
14095         else
14096                 if $test X"$uidsize" = X"$longsize"; then
14097                         uidformat='"lu"'
14098                 else
14099                         if $test X"$uidsize" = X"$intsize"; then
14100                                 uidformat='"u"'
14101                         else
14102                                 if $test X"$uidsize" = X"$shortsize"; then
14103                                         uidformat='"hu"'
14104                                 fi
14105                         fi
14106                 fi
14107         fi
14108         ;;
14109 esac
14110
14111 : see if dbm.h is available
14112 : see if dbmclose exists
14113 set dbmclose d_dbmclose
14114 eval $inlibc
14115
14116 case "$d_dbmclose" in
14117 $define)
14118         set dbm.h i_dbm
14119         eval $inhdr
14120         case "$i_dbm" in
14121         $define)
14122                 val="$undef"
14123                 set i_rpcsvcdbm
14124                 eval $setvar
14125                 ;;
14126         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14127                 eval $inhdr
14128                 ;;
14129         esac
14130         ;;
14131 *)      echo "We won't be including <dbm.h>"
14132         val="$undef"
14133         set i_dbm
14134         eval $setvar
14135         val="$undef"
14136         set i_rpcsvcdbm
14137         eval $setvar
14138         ;;
14139 esac
14140
14141 : see if this is a sys/file.h system
14142 val=''
14143 set sys/file.h val
14144 eval $inhdr
14145
14146 : do we need to include sys/file.h ?
14147 case "$val" in
14148 "$define")
14149         echo " "
14150         if $h_sysfile; then
14151                 val="$define"
14152                 echo "We'll be including <sys/file.h>." >&4
14153         else
14154                 val="$undef"
14155                 echo "We won't be including <sys/file.h>." >&4
14156         fi
14157         ;;
14158 *)
14159         h_sysfile=false
14160         ;;
14161 esac
14162 set i_sysfile
14163 eval $setvar
14164
14165 : see if fcntl.h is there
14166 val=''
14167 set fcntl.h val
14168 eval $inhdr
14169
14170 : see if we can include fcntl.h
14171 case "$val" in
14172 "$define")
14173         echo " "
14174         if $h_fcntl; then
14175                 val="$define"
14176                 echo "We'll be including <fcntl.h>." >&4
14177         else
14178                 val="$undef"
14179                 if $h_sysfile; then
14180         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14181                 else
14182                         echo "We won't be including <fcntl.h>." >&4
14183                 fi
14184         fi
14185         ;;
14186 *)
14187         h_fcntl=false
14188         val="$undef"
14189         ;;
14190 esac
14191 set i_fcntl
14192 eval $setvar
14193
14194 : see if this is a iconv.h system
14195 set iconv.h i_iconv
14196 eval $inhdr
14197
14198 : see if this is a ieeefp.h system
14199 set ieeefp.h i_ieeefp
14200 eval $inhdr
14201
14202 : see if locale.h is available
14203 set locale.h i_locale
14204 eval $inhdr
14205
14206 : see if mach cthreads are available
14207 if test "X$usethreads" = "X$define"; then
14208         set mach/cthreads.h i_machcthr
14209         eval $inhdr
14210 else
14211         i_machcthr="$undef"
14212 fi
14213
14214
14215
14216 : see if this is a math.h system
14217 set math.h i_math
14218 eval $inhdr
14219
14220 : see if this is a mntent.h system
14221 set mntent.h i_mntent
14222 eval $inhdr
14223
14224 : see if ndbm.h is available
14225 set ndbm.h t_ndbm
14226 eval $inhdr
14227 case "$t_ndbm" in
14228 $define)
14229         : see if dbm_open exists
14230         set dbm_open d_dbm_open
14231         eval $inlibc
14232         case "$d_dbm_open" in
14233         $undef)
14234                 t_ndbm="$undef"
14235                 echo "We won't be including <ndbm.h>"
14236                 ;;
14237         esac
14238         ;;
14239 esac
14240 val="$t_ndbm"
14241 set i_ndbm
14242 eval $setvar
14243
14244 : see if net/errno.h is available
14245 val=''
14246 set net/errno.h val
14247 eval $inhdr
14248
14249 : Unfortunately, it causes problems on some systems.  Arrgh.
14250 case "$val" in
14251 $define)
14252         cat > try.c <<'EOM'
14253 #include <stdio.h>
14254 #include <errno.h>
14255 #include <net/errno.h>
14256 int func()
14257 {
14258         return ENOTSOCK;
14259 }
14260 EOM
14261         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14262                 echo "We'll be including <net/errno.h>." >&4
14263         else
14264                 echo "We won't be including <net/errno.h>." >&4
14265                 val="$undef"
14266         fi
14267         $rm -f try.* try
14268         ;;
14269 esac
14270 set i_neterrno
14271 eval $setvar
14272
14273 : see if netinet/tcp.h is available
14274 set netinet/tcp.h i_netinettcp
14275 eval $inhdr
14276
14277 : see if this is a poll.h system
14278 set poll.h i_poll
14279 eval $inhdr
14280
14281 echo " "
14282 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14283 $cat <<'EOSH' > Cppsym.know
14284 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14285 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14286 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14287 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14288 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14289 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14290 bull c cadmus clipper CMU COFF COMPILER_VERSION
14291 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14292 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14293 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14294 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14295 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14296 H3050R H3050RX hbullx20 hcx host_mips
14297 hp200 hp300 hp700 HP700 hp800 hp9000
14298 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14299 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14300 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14301 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14302 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14303 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14304 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14305 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14306 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14307 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14308 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14309 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14310 MATH_HAS_NO_SIDE_EFFECTS
14311 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14312 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14313 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14314 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14315 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14316 NetBSD news1500 news1700 news1800 news1900 news3700
14317 news700 news800 news900 NeXT NLS ns16000 ns32000
14318 ns32016 ns32332 ns32k nsc32000
14319 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14320 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14321 pc532 pdp11 PGC PIC plexus PORTAR posix
14322 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14323 POSIX_C_SOURCE POSIX_SOURCE POWER
14324 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14325 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14326 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14327 sony sony_news sonyrisc sparc sparclite spectrum
14328 stardent stdc STDC_EXT stratos sun sun3 sun386
14329 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14330 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14331 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14332 sysV68 sysV88 Tek4132 Tek4300 titan
14333 tower tower32 tower32_200 tower32_600 tower32_700
14334 tower32_800 tower32_850 tss
14335 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14336 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14337 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14338 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14339 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14340 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14341 z8000
14342 EOSH
14343 # Maybe put other stuff here too.
14344 cat <<EOSH >>Cppsym.know
14345 $osname
14346 EOSH
14347 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14348 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14349 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14350 $rm -f Cppsym.a Cppsym.b
14351 cat <<EOSH > Cppsym
14352 $startsh
14353 if $test \$# -gt 0; then
14354     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14355     if $test -s Cppsym.got; then
14356         $rm -f Cppsym.got
14357         exit 0
14358     fi
14359     $rm -f Cppsym.got
14360     exit 1
14361 else
14362     $tr " " "$trnl" | ./Cppsym.try
14363     exit 0
14364 fi
14365 EOSH
14366 chmod +x Cppsym
14367 $eunicefix Cppsym
14368 cat <<EOSH > Cppsym.try
14369 $startsh
14370 cat <<'EOCP' > try.c
14371 #include <stdio.h>
14372 int main() {
14373 EOCP
14374 $awk \\
14375 EOSH
14376 cat <<'EOSH' >> Cppsym.try
14377 'length($1) > 0 {
14378     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14379     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14380     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14381     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14382 }'       >> try.c
14383 echo '}' >> try.c
14384 EOSH
14385 cat <<EOSH >> Cppsym.try
14386 ccflags="$ccflags"
14387 case "$osname-$gccversion" in
14388 irix-) ccflags="\$ccflags -woff 1178" ;;
14389 esac
14390 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14391 EOSH
14392 chmod +x Cppsym.try
14393 $eunicefix Cppsym.try
14394 ./Cppsym < Cppsym.know > Cppsym.true
14395 : now check the C compiler for additional symbols
14396 postprocess_cc_v=''
14397 case "$osname" in
14398 aix) postprocess_cc_v="|$tr , ' '" ;;
14399 esac
14400 $cat >ccsym <<EOS
14401 $startsh
14402 $cat >tmp.c <<EOF
14403 extern int foo;
14404 EOF
14405 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14406 do
14407         case "\$i" in
14408         -D*) echo "\$i" | $sed 's/^-D//';;
14409         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14410         esac
14411 done
14412 $rm -f try.c
14413 EOS
14414 postprocess_cc_v=''
14415 chmod +x ccsym
14416 $eunicefix ccsym
14417 ./ccsym > ccsym1.raw
14418 if $test -s ccsym1.raw; then
14419        $sort ccsym1.raw | $uniq >ccsym.raw
14420 else
14421        mv ccsym1.raw ccsym.raw
14422 fi
14423
14424 $awk '/\=/ { print $0; next }
14425         { print $0"=1" }' ccsym.raw >ccsym.list
14426 $awk '/\=/ { print $0; next }
14427         { print $0"=1" }' Cppsym.true >ccsym.true
14428 $comm -13 ccsym.true ccsym.list >ccsym.own
14429 $comm -12 ccsym.true ccsym.list >ccsym.com
14430 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14431 also=''
14432 if $test -z ccsym.raw; then
14433         echo "Your C compiler doesn't seem to define any symbols!" >&4
14434         echo " "
14435         echo "However, your C preprocessor defines the following symbols:"
14436         $cat Cppsym.true
14437         ccsymbols=''
14438         cppsymbols=`$cat Cppsym.true`
14439         cppsymbols=`echo $cppsymbols`
14440         cppccsymbols="$cppsymbols"
14441 else
14442         if $test -s ccsym.com; then
14443                 echo "Your C compiler and pre-processor define these symbols:"
14444                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14445                 also='also '
14446                 symbols='ones'
14447                 cppccsymbols=`$cat ccsym.com`
14448                 cppccsymbols=`echo $cppccsymbols`
14449                 $test "$silent" || sleep 1
14450         fi
14451         if $test -s ccsym.cpp; then
14452                 $test "$also" && echo " "
14453                 echo "Your C pre-processor ${also}defines the following symbols:"
14454                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14455                 also='further '
14456                 cppsymbols=`$cat ccsym.cpp`
14457                 cppsymbols=`echo $cppsymbols`
14458                 $test "$silent" || sleep 1
14459         fi
14460         if $test -s ccsym.own; then
14461                 $test "$also" && echo " "
14462                 echo "Your C compiler ${also}defines the following cpp symbols:"
14463                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14464                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14465                 ccsymbols=`$cat ccsym.own`
14466                 ccsymbols=`echo $ccsymbols`
14467                 $test "$silent" || sleep 1
14468         fi
14469 fi
14470 $rm -f ccsym*
14471
14472 : see if this is a termio system
14473 val="$undef"
14474 val2="$undef"
14475 val3="$undef"
14476 if $test `./findhdr termios.h`; then
14477         set tcsetattr i_termios
14478         eval $inlibc
14479         val3="$i_termios"
14480 fi
14481 echo " "
14482 case "$val3" in
14483 "$define") echo "You have POSIX termios.h... good!" >&4;;
14484 *) if ./Cppsym pyr; then
14485                 case "`/bin/universe`" in
14486                 ucb) if $test `./findhdr sgtty.h`; then
14487                                 val2="$define"
14488                                 echo "<sgtty.h> found." >&4
14489                         else
14490                                 echo "System is pyramid with BSD universe."
14491                                 echo "<sgtty.h> not found--you could have problems." >&4
14492                         fi;;
14493                 *) if $test `./findhdr termio.h`; then
14494                                 val="$define"
14495                                 echo "<termio.h> found." >&4
14496                         else
14497                                 echo "System is pyramid with USG universe."
14498                                 echo "<termio.h> not found--you could have problems." >&4
14499                         fi;;
14500                 esac
14501         elif ./usg; then
14502                 if $test `./findhdr termio.h`; then
14503                         echo "<termio.h> found." >&4
14504                         val="$define"
14505                 elif $test `./findhdr sgtty.h`; then
14506                         echo "<sgtty.h> found." >&4
14507                         val2="$define"
14508                 else
14509 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14510                 fi
14511         else
14512                 if $test `./findhdr sgtty.h`; then
14513                         echo "<sgtty.h> found." >&4
14514                         val2="$define"
14515                 elif $test `./findhdr termio.h`; then
14516                         echo "<termio.h> found." >&4
14517                         val="$define"
14518                 else
14519 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14520                 fi
14521         fi;;
14522 esac
14523 set i_termio; eval $setvar
14524 val=$val2; set i_sgtty; eval $setvar
14525 val=$val3; set i_termios; eval $setvar
14526
14527 : see if this is a shadow.h system
14528 set shadow.h i_shadow
14529 eval $inhdr
14530
14531 : see if this is a socks.h system
14532 set socks.h i_socks
14533 eval $inhdr
14534
14535 : see if stdarg is available
14536 echo " "
14537 if $test `./findhdr stdarg.h`; then
14538         echo "<stdarg.h> found." >&4
14539         valstd="$define"
14540 else
14541         echo "<stdarg.h> NOT found." >&4
14542         valstd="$undef"
14543 fi
14544
14545 : see if varags is available
14546 echo " "
14547 if $test `./findhdr varargs.h`; then
14548         echo "<varargs.h> found." >&4
14549 else
14550         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14551 fi
14552
14553 : set up the varargs testing programs
14554 $cat > varargs.c <<EOP
14555 #ifdef I_STDARG
14556 #include <stdarg.h>
14557 #endif
14558 #ifdef I_VARARGS
14559 #include <varargs.h>
14560 #endif
14561
14562 #ifdef I_STDARG
14563 int f(char *p, ...)
14564 #else
14565 int f(va_alist)
14566 va_dcl
14567 #endif
14568 {
14569         va_list ap;
14570 #ifndef I_STDARG
14571         char *p;
14572 #endif
14573 #ifdef I_STDARG
14574         va_start(ap,p);
14575 #else
14576         va_start(ap);
14577         p = va_arg(ap, char *);
14578 #endif
14579         va_end(ap);
14580 }
14581 EOP
14582 $cat > varargs <<EOP
14583 $startsh
14584 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14585         echo "true"
14586 else
14587         echo "false"
14588 fi
14589 $rm -f varargs$_o
14590 EOP
14591 chmod +x varargs
14592
14593 : now check which varargs header should be included
14594 echo " "
14595 i_varhdr=''
14596 case "$valstd" in
14597 "$define")
14598         if `./varargs I_STDARG`; then
14599                 val='stdarg.h'
14600         elif `./varargs I_VARARGS`; then
14601                 val='varargs.h'
14602         fi
14603         ;;
14604 *)
14605         if `./varargs I_VARARGS`; then
14606                 val='varargs.h'
14607         fi
14608         ;;
14609 esac
14610 case "$val" in
14611 '')
14612 echo "I could not find the definition for va_dcl... You have problems..." >&4
14613         val="$undef"; set i_stdarg; eval $setvar
14614         val="$undef"; set i_varargs; eval $setvar
14615         ;;
14616 *) 
14617         set i_varhdr
14618         eval $setvar
14619         case "$i_varhdr" in
14620         stdarg.h)
14621                 val="$define"; set i_stdarg; eval $setvar
14622                 val="$undef"; set i_varargs; eval $setvar
14623                 ;;
14624         varargs.h)
14625                 val="$undef"; set i_stdarg; eval $setvar
14626                 val="$define"; set i_varargs; eval $setvar
14627                 ;;
14628         esac
14629         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14630 esac
14631 $rm -f varargs*
14632
14633 : see if stddef is available
14634 set stddef.h i_stddef
14635 eval $inhdr
14636
14637 : see if this is a sunmath.h system
14638 set sunmath.h i_sunmath
14639 eval $inhdr
14640
14641 : see if sys/access.h is available
14642 set sys/access.h i_sysaccess
14643 eval $inhdr
14644
14645 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14646 set sys/filio.h i_sysfilio
14647 eval $inhdr
14648 echo " "
14649 if $test `./findhdr sys/ioctl.h`; then
14650         val="$define"
14651         echo '<sys/ioctl.h> found.' >&4
14652 else
14653         val="$undef"
14654         if $test $i_sysfilio = "$define"; then
14655             echo '<sys/ioctl.h> NOT found.' >&4
14656         else
14657                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14658                 $test $i_termio = "$define" && xxx="termio.h"
14659                 $test $i_termios = "$define" && xxx="termios.h"
14660 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14661         fi
14662 fi
14663 set i_sysioctl
14664 eval $setvar
14665
14666
14667 : see if this is a syslog.h system
14668 set syslog.h i_syslog
14669 eval $inhdr
14670
14671
14672 : see if this is a sys/mode.h system
14673 set sys/mode.h i_sysmode
14674 eval $inhdr
14675
14676 : see if sys/resource.h has to be included
14677 set sys/resource.h i_sysresrc
14678 eval $inhdr
14679
14680 : see if sys/security.h is available
14681 set sys/security.h i_syssecrt
14682 eval $inhdr
14683
14684 : see if this is a sys/statvfs.h system
14685 set sys/statvfs.h i_sysstatvfs
14686 eval $inhdr
14687
14688 : see if this is a sys/uio.h system
14689 set sys/uio.h i_sysuio
14690 eval $inhdr
14691
14692 : see if this is a sys/un.h system
14693 set sys/un.h i_sysun
14694 eval $inhdr
14695
14696
14697 : see if this is a sys/utsname.h system
14698 set sys/utsname.h i_sysutsname
14699 eval $inhdr
14700
14701 : see if this is a syswait system
14702 set sys/wait.h i_syswait
14703 eval $inhdr
14704
14705 : see if this is a ustat.h system
14706 set ustat.h i_ustat
14707 eval $inhdr
14708
14709 : see if this is an utime system
14710 set utime.h i_utime
14711 eval $inhdr
14712
14713 : see if this is a values.h system
14714 set values.h i_values
14715 eval $inhdr
14716
14717 : see if this is a vfork system
14718 case "$d_vfork" in
14719 "$define")
14720         set vfork.h i_vfork
14721         eval $inhdr
14722         ;;
14723 *)
14724         i_vfork="$undef"
14725         ;;
14726 esac
14727
14728 : see if gdbm.h is available
14729 set gdbm.h t_gdbm
14730 eval $inhdr
14731 case "$t_gdbm" in
14732 $define)
14733         : see if gdbm_open exists
14734         set gdbm_open d_gdbm_open
14735         eval $inlibc
14736         case "$d_gdbm_open" in
14737         $undef)
14738                 t_gdbm="$undef"
14739                 echo "We won't be including <gdbm.h>"
14740                 ;;
14741         esac
14742         ;;
14743 esac
14744 val="$t_gdbm"
14745 set i_gdbm
14746 eval $setvar
14747
14748 echo " "
14749 echo "Looking for extensions..." >&4
14750 : If we are using the old config.sh, known_extensions may contain
14751 : old or inaccurate or duplicate values.
14752 known_extensions=''
14753 nonxs_extensions=''
14754 : We do not use find because it might not be available.
14755 : We do not just use MANIFEST because the user may have dropped
14756 : some additional extensions into the source tree and expect them
14757 : to be built.
14758
14759 : Function to recursively find available extensions, ignoring DynaLoader
14760 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14761 find_extensions='
14762     for xxx in *; do
14763        case "$xxx" in
14764            DynaLoader|dynaload) ;;
14765            *)
14766            if $test -f $xxx/$xxx.xs; then
14767                known_extensions="$known_extensions $1$xxx";
14768            elif $test -f $xxx/Makefile.PL; then
14769                nonxs_extensions="$nonxs_extensions $1$xxx";
14770            else
14771                if $test -d $xxx -a $# -lt 10; then
14772                    set $1$xxx/ $*;
14773                    cd $xxx;
14774                    eval $find_extensions;
14775                    cd ..;
14776                    shift;
14777                fi;
14778            fi
14779            ;;
14780        esac;
14781     done'
14782 tdir=`pwd`
14783 cd $rsrc/ext
14784 set X
14785 shift
14786 eval $find_extensions
14787 set X $nonxs_extensions
14788 shift
14789 nonxs_extensions="$*"
14790 set X $known_extensions
14791 shift
14792 known_extensions="$*"
14793 cd $tdir
14794
14795 : Now see which are supported on this system.
14796 avail_ext=''
14797 for xxx in $known_extensions ; do
14798         case "$xxx" in
14799         DB_File|db_file)
14800                 case "$i_db" in
14801                 $define) avail_ext="$avail_ext $xxx" ;;
14802                 esac
14803                 ;;
14804         GDBM_File|gdbm_fil)
14805                 case "$i_gdbm" in 
14806                 $define) avail_ext="$avail_ext $xxx" ;;
14807                 esac
14808                 ;;
14809         NDBM_File|ndbm_fil)
14810                 case "$i_ndbm" in
14811                 $define)
14812                     case "$osname-$use64bitint" in
14813                     hpux-define)
14814                         case "$libs" in
14815                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14816                         esac
14817                         ;;
14818                     *) avail_ext="$avail_ext $xxx" ;;
14819                     esac
14820                     ;;
14821                 esac
14822                 ;;
14823         ODBM_File|odbm_fil) 
14824                 case "${i_dbm}${i_rpcsvcdbm}" in
14825                 *"${define}"*)
14826                     case "$osname-$use64bitint" in
14827                     hpux-define)
14828                         case "$libs" in
14829                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14830                         esac
14831                         ;;
14832                     *) avail_ext="$avail_ext $xxx" ;;
14833                     esac
14834                     ;;
14835                 esac
14836                 ;;
14837         POSIX|posix)
14838                 case "$useposix" in
14839                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14840                 esac
14841                 ;;
14842         Opcode|opcode)
14843                 case "$useopcode" in
14844                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14845                 esac
14846                 ;;
14847         Socket|socket)
14848                 case "$d_socket" in 
14849                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14850                 esac
14851                 ;;
14852         Thread|thread)
14853                 case "$usethreads" in 
14854                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14855                 esac
14856                 ;;
14857         IPC/SysV|ipc/sysv)
14858                 : XXX Do we need a useipcsysv variable here
14859                 case "${d_msg}${d_sem}${d_shm}" in 
14860                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14861                 esac
14862                 ;;
14863         *)      avail_ext="$avail_ext $xxx"
14864                 ;;
14865         esac
14866 done
14867
14868 set X $avail_ext
14869 shift
14870 avail_ext="$*"
14871
14872 : Now see which nonxs extensions are supported on this system.
14873 : For now assume all are.
14874 nonxs_ext=''
14875 for xxx in $nonxs_extensions ; do
14876         case "$xxx" in
14877         *)      nonxs_ext="$nonxs_ext $xxx"
14878                 ;;
14879         esac
14880 done
14881
14882 set X $nonxs_ext
14883 shift
14884 nonxs_ext="$*"
14885
14886 case $usedl in
14887 $define)
14888         $cat <<EOM
14889 A number of extensions are supplied with $package.  You may choose to
14890 compile these extensions for dynamic loading (the default), compile
14891 them into the $package executable (static loading), or not include
14892 them at all.  Answer "none" to include no extensions.
14893 Note that DynaLoader is always built and need not be mentioned here.
14894
14895 EOM
14896         case "$dynamic_ext" in
14897         '') dflt="$avail_ext" ;;
14898         *)      dflt="$dynamic_ext"
14899                 # Perhaps we are reusing an old out-of-date config.sh.
14900                 case "$hint" in
14901                 previous)
14902                         if test X"$dynamic_ext" != X"$avail_ext"; then
14903                                 $cat <<EOM
14904 NOTICE:  Your previous config.sh list may be incorrect. 
14905 The extensions now available to you are 
14906         ${avail_ext}
14907 but the default list from your previous config.sh is
14908         ${dynamic_ext} 
14909
14910 EOM
14911                         fi
14912                         ;;
14913                 esac
14914                 ;;
14915         esac
14916         case "$dflt" in
14917         '')     dflt=none;;
14918         esac
14919         rp="What extensions do you wish to load dynamically?"
14920         . ./myread
14921         case "$ans" in
14922         none) dynamic_ext=' ' ;;
14923         *) dynamic_ext="$ans" ;;
14924         esac
14925
14926         case "$static_ext" in
14927         '')
14928                 : Exclude those already listed in dynamic linking
14929                 dflt=''
14930                 for xxx in $avail_ext; do
14931                         case " $dynamic_ext " in
14932                         *" $xxx "*) ;;
14933                         *) dflt="$dflt $xxx" ;;
14934                         esac
14935                 done
14936                 set X $dflt
14937                 shift
14938                 dflt="$*"
14939                 ;;
14940         *)  dflt="$static_ext" 
14941                 ;;
14942         esac
14943
14944         case "$dflt" in
14945         '')     dflt=none;;
14946         esac
14947         rp="What extensions do you wish to load statically?"
14948         . ./myread
14949         case "$ans" in
14950         none) static_ext=' ' ;;
14951         *) static_ext="$ans" ;;
14952         esac
14953         ;;
14954 *)
14955         $cat <<EOM
14956 A number of extensions are supplied with $package.  Answer "none" 
14957 to include no extensions. 
14958 Note that DynaLoader is always built and need not be mentioned here.
14959
14960 EOM
14961         case "$static_ext" in
14962         '') dflt="$avail_ext" ;;
14963         *)      dflt="$static_ext"
14964                 # Perhaps we are reusing an old out-of-date config.sh.
14965                 case "$hint" in
14966                 previous)
14967                         if test X"$static_ext" != X"$avail_ext"; then
14968                                 $cat <<EOM
14969 NOTICE:  Your previous config.sh list may be incorrect. 
14970 The extensions now available to you are 
14971         ${avail_ext}
14972 but the default list from your previous config.sh is
14973         ${static_ext} 
14974
14975 EOM
14976                         fi
14977                         ;;
14978                 esac
14979                 ;;
14980         esac
14981         : Exclude those that are not xs extensions
14982         case "$dflt" in
14983         '')     dflt=none;;
14984         esac
14985         rp="What extensions do you wish to include?"
14986         . ./myread
14987         case "$ans" in
14988         none) static_ext=' ' ;;
14989         *) static_ext="$ans" ;;
14990         esac
14991         ;;
14992 esac
14993
14994 set X $dynamic_ext $static_ext $nonxs_ext
14995 shift
14996 extensions="$*"
14997
14998 : Remove build directory name from cppstdin so it can be used from
14999 : either the present location or the final installed location.
15000 echo " "
15001 : Get out of the UU directory to get correct path name.
15002 cd ..
15003 case "$cppstdin" in
15004 `pwd`/cppstdin)
15005         echo "Stripping down cppstdin path name"
15006         cppstdin=cppstdin
15007         ;;
15008 esac
15009 cd UU
15010
15011 : end of configuration questions
15012 echo " "
15013 echo "End of configuration questions."
15014 echo " "
15015
15016 : back to where it started
15017 if test -d ../UU; then
15018         cd ..
15019 fi
15020
15021 : configuration may be patched via a 'config.over' file
15022 if $test -f config.over; then
15023         echo " "
15024         dflt=y
15025         rp='I see a config.over file.  Do you wish to load it?'
15026         . UU/myread
15027         case "$ans" in
15028         n*) echo "OK, I'll ignore it.";;
15029         *)      . ./config.over
15030                 echo "Configuration override changes have been loaded."
15031                 ;;
15032         esac
15033 fi
15034
15035 : in case they want portability, strip down executable paths
15036 case "$d_portable" in
15037 "$define")
15038         echo " "
15039         echo "Stripping down executable paths..." >&4
15040         for file in $loclist $trylist; do
15041                 eval temp=\$$file
15042                 eval $file=`basename $temp`
15043         done
15044         ;;
15045 esac
15046
15047 : create config.sh file
15048 echo " "
15049 echo "Creating config.sh..." >&4
15050 $spitshell <<EOT >config.sh
15051 $startsh
15052 #
15053 # This file was produced by running the Configure script. It holds all the
15054 # definitions figured out by Configure. Should you modify one of these values,
15055 # do not forget to propagate your changes by running "Configure -der". You may
15056 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15057 #
15058
15059 # Package name      : $package
15060 # Source directory  : $src
15061 # Configuration time: $cf_time
15062 # Configured by     : $cf_by
15063 # Target system     : $myuname
15064
15065 Author='$Author'
15066 Date='$Date'
15067 Header='$Header'
15068 Id='$Id'
15069 Locker='$Locker'
15070 Log='$Log'
15071 Mcc='$Mcc'
15072 RCSfile='$RCSfile'
15073 Revision='$Revision'
15074 Source='$Source'
15075 State='$State'
15076 _a='$_a'
15077 _exe='$_exe'
15078 _o='$_o'
15079 afs='$afs'
15080 alignbytes='$alignbytes'
15081 ansi2knr='$ansi2knr'
15082 aphostname='$aphostname'
15083 api_revision='$api_revision'
15084 api_subversion='$api_subversion'
15085 api_version='$api_version'
15086 api_versionstring='$api_versionstring'
15087 ar='$ar'
15088 archlib='$archlib'
15089 archlibexp='$archlibexp'
15090 archname64='$archname64'
15091 archname='$archname'
15092 archobjs='$archobjs'
15093 awk='$awk'
15094 baserev='$baserev'
15095 bash='$bash'
15096 bin='$bin'
15097 bincompat5005='$bincompat5005'
15098 binexp='$binexp'
15099 bison='$bison'
15100 byacc='$byacc'
15101 byteorder='$byteorder'
15102 c='$c'
15103 castflags='$castflags'
15104 cat='$cat'
15105 cc='$cc'
15106 cccdlflags='$cccdlflags'
15107 ccdlflags='$ccdlflags'
15108 ccflags='$ccflags'
15109 ccsymbols='$ccsymbols'
15110 cf_by='$cf_by'
15111 cf_email='$cf_email'
15112 cf_time='$cf_time'
15113 charsize='$charsize'
15114 chgrp='$chgrp'
15115 chmod='$chmod'
15116 chown='$chown'
15117 clocktype='$clocktype'
15118 comm='$comm'
15119 compress='$compress'
15120 contains='$contains'
15121 cp='$cp'
15122 cpio='$cpio'
15123 cpp='$cpp'
15124 cpp_stuff='$cpp_stuff'
15125 cppccsymbols='$cppccsymbols'
15126 cppflags='$cppflags'
15127 cpplast='$cpplast'
15128 cppminus='$cppminus'
15129 cpprun='$cpprun'
15130 cppstdin='$cppstdin'
15131 cppsymbols='$cppsymbols'
15132 crosscompile='$crosscompile'
15133 cryptlib='$cryptlib'
15134 csh='$csh'
15135 d_Gconvert='$d_Gconvert'
15136 d_PRIEldbl='$d_PRIEldbl'
15137 d_PRIFldbl='$d_PRIFldbl'
15138 d_PRIGldbl='$d_PRIGldbl'
15139 d_PRIX64='$d_PRIX64'
15140 d_PRId64='$d_PRId64'
15141 d_PRIeldbl='$d_PRIeldbl'
15142 d_PRIfldbl='$d_PRIfldbl'
15143 d_PRIgldbl='$d_PRIgldbl'
15144 d_PRIi64='$d_PRIi64'
15145 d_PRIo64='$d_PRIo64'
15146 d_PRIu64='$d_PRIu64'
15147 d_PRIx64='$d_PRIx64'
15148 d_access='$d_access'
15149 d_accessx='$d_accessx'
15150 d_alarm='$d_alarm'
15151 d_archlib='$d_archlib'
15152 d_atolf='$d_atolf'
15153 d_atoll='$d_atoll'
15154 d_attribut='$d_attribut'
15155 d_bcmp='$d_bcmp'
15156 d_bcopy='$d_bcopy'
15157 d_bincompat5005='$d_bincompat5005'
15158 d_bsd='$d_bsd'
15159 d_bsdgetpgrp='$d_bsdgetpgrp'
15160 d_bsdsetpgrp='$d_bsdsetpgrp'
15161 d_bzero='$d_bzero'
15162 d_casti32='$d_casti32'
15163 d_castneg='$d_castneg'
15164 d_charvspr='$d_charvspr'
15165 d_chown='$d_chown'
15166 d_chroot='$d_chroot'
15167 d_chsize='$d_chsize'
15168 d_closedir='$d_closedir'
15169 d_const='$d_const'
15170 d_crypt='$d_crypt'
15171 d_csh='$d_csh'
15172 d_cuserid='$d_cuserid'
15173 d_dbl_dig='$d_dbl_dig'
15174 d_difftime='$d_difftime'
15175 d_dirnamlen='$d_dirnamlen'
15176 d_dlerror='$d_dlerror'
15177 d_dlopen='$d_dlopen'
15178 d_dlsymun='$d_dlsymun'
15179 d_dosuid='$d_dosuid'
15180 d_drand48proto='$d_drand48proto'
15181 d_dup2='$d_dup2'
15182 d_eaccess='$d_eaccess'
15183 d_endgrent='$d_endgrent'
15184 d_endhent='$d_endhent'
15185 d_endnent='$d_endnent'
15186 d_endpent='$d_endpent'
15187 d_endpwent='$d_endpwent'
15188 d_endsent='$d_endsent'
15189 d_endspent='$d_endspent'
15190 d_eofnblk='$d_eofnblk'
15191 d_eunice='$d_eunice'
15192 d_fchmod='$d_fchmod'
15193 d_fchown='$d_fchown'
15194 d_fcntl='$d_fcntl'
15195 d_fd_macros='$d_fd_macros'
15196 d_fd_set='$d_fd_set'
15197 d_fds_bits='$d_fds_bits'
15198 d_fgetpos='$d_fgetpos'
15199 d_flexfnam='$d_flexfnam'
15200 d_flock='$d_flock'
15201 d_fork='$d_fork'
15202 d_fpathconf='$d_fpathconf'
15203 d_fpos64_t='$d_fpos64_t'
15204 d_frexpl='$d_frexpl'
15205 d_fs_data_s='$d_fs_data_s'
15206 d_fseeko='$d_fseeko'
15207 d_fsetpos='$d_fsetpos'
15208 d_fstatfs='$d_fstatfs'
15209 d_fstatvfs='$d_fstatvfs'
15210 d_ftello='$d_ftello'
15211 d_ftime='$d_ftime'
15212 d_getcwd='$d_getcwd'
15213 d_getfsstat='$d_getfsstat'
15214 d_getgrent='$d_getgrent'
15215 d_getgrps='$d_getgrps'
15216 d_gethbyaddr='$d_gethbyaddr'
15217 d_gethbyname='$d_gethbyname'
15218 d_gethent='$d_gethent'
15219 d_gethname='$d_gethname'
15220 d_gethostprotos='$d_gethostprotos'
15221 d_getlogin='$d_getlogin'
15222 d_getmnt='$d_getmnt'
15223 d_getmntent='$d_getmntent'
15224 d_getnbyaddr='$d_getnbyaddr'
15225 d_getnbyname='$d_getnbyname'
15226 d_getnent='$d_getnent'
15227 d_getnetprotos='$d_getnetprotos'
15228 d_getpbyname='$d_getpbyname'
15229 d_getpbynumber='$d_getpbynumber'
15230 d_getpent='$d_getpent'
15231 d_getpgid='$d_getpgid'
15232 d_getpgrp2='$d_getpgrp2'
15233 d_getpgrp='$d_getpgrp'
15234 d_getppid='$d_getppid'
15235 d_getprior='$d_getprior'
15236 d_getprotoprotos='$d_getprotoprotos'
15237 d_getpwent='$d_getpwent'
15238 d_getsbyname='$d_getsbyname'
15239 d_getsbyport='$d_getsbyport'
15240 d_getsent='$d_getsent'
15241 d_getservprotos='$d_getservprotos'
15242 d_getspent='$d_getspent'
15243 d_getspnam='$d_getspnam'
15244 d_gettimeod='$d_gettimeod'
15245 d_gnulibc='$d_gnulibc'
15246 d_grpasswd='$d_grpasswd'
15247 d_hasmntopt='$d_hasmntopt'
15248 d_htonl='$d_htonl'
15249 d_iconv='$d_iconv'
15250 d_index='$d_index'
15251 d_inetaton='$d_inetaton'
15252 d_int64_t='$d_int64_t'
15253 d_isascii='$d_isascii'
15254 d_isnan='$d_isnan'
15255 d_isnanl='$d_isnanl'
15256 d_killpg='$d_killpg'
15257 d_lchown='$d_lchown'
15258 d_ldbl_dig='$d_ldbl_dig'
15259 d_link='$d_link'
15260 d_locconv='$d_locconv'
15261 d_lockf='$d_lockf'
15262 d_longdbl='$d_longdbl'
15263 d_longlong='$d_longlong'
15264 d_lseekproto='$d_lseekproto'
15265 d_lstat='$d_lstat'
15266 d_madvise='$d_madvise'
15267 d_mblen='$d_mblen'
15268 d_mbstowcs='$d_mbstowcs'
15269 d_mbtowc='$d_mbtowc'
15270 d_memchr='$d_memchr'
15271 d_memcmp='$d_memcmp'
15272 d_memcpy='$d_memcpy'
15273 d_memmove='$d_memmove'
15274 d_memset='$d_memset'
15275 d_mkdir='$d_mkdir'
15276 d_mkdtemp='$d_mkdtemp'
15277 d_mkfifo='$d_mkfifo'
15278 d_mkstemp='$d_mkstemp'
15279 d_mkstemps='$d_mkstemps'
15280 d_mktime='$d_mktime'
15281 d_mmap='$d_mmap'
15282 d_modfl='$d_modfl'
15283 d_mprotect='$d_mprotect'
15284 d_msg='$d_msg'
15285 d_msg_ctrunc='$d_msg_ctrunc'
15286 d_msg_dontroute='$d_msg_dontroute'
15287 d_msg_oob='$d_msg_oob'
15288 d_msg_peek='$d_msg_peek'
15289 d_msg_proxy='$d_msg_proxy'
15290 d_msgctl='$d_msgctl'
15291 d_msgget='$d_msgget'
15292 d_msgrcv='$d_msgrcv'
15293 d_msgsnd='$d_msgsnd'
15294 d_msync='$d_msync'
15295 d_munmap='$d_munmap'
15296 d_mymalloc='$d_mymalloc'
15297 d_nice='$d_nice'
15298 d_nv_preserves_uv='$d_nv_preserves_uv'
15299 d_off64_t='$d_off64_t'
15300 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15301 d_oldpthreads='$d_oldpthreads'
15302 d_oldsock='$d_oldsock'
15303 d_open3='$d_open3'
15304 d_pathconf='$d_pathconf'
15305 d_pause='$d_pause'
15306 d_phostname='$d_phostname'
15307 d_pipe='$d_pipe'
15308 d_poll='$d_poll'
15309 d_portable='$d_portable'
15310 d_pthread_yield='$d_pthread_yield'
15311 d_pwage='$d_pwage'
15312 d_pwchange='$d_pwchange'
15313 d_pwclass='$d_pwclass'
15314 d_pwcomment='$d_pwcomment'
15315 d_pwexpire='$d_pwexpire'
15316 d_pwgecos='$d_pwgecos'
15317 d_pwpasswd='$d_pwpasswd'
15318 d_pwquota='$d_pwquota'
15319 d_qgcvt='$d_qgcvt'
15320 d_quad='$d_quad'
15321 d_readdir='$d_readdir'
15322 d_readlink='$d_readlink'
15323 d_rename='$d_rename'
15324 d_rewinddir='$d_rewinddir'
15325 d_rmdir='$d_rmdir'
15326 d_safebcpy='$d_safebcpy'
15327 d_safemcpy='$d_safemcpy'
15328 d_sanemcmp='$d_sanemcmp'
15329 d_sched_yield='$d_sched_yield'
15330 d_scm_rights='$d_scm_rights'
15331 d_seekdir='$d_seekdir'
15332 d_select='$d_select'
15333 d_sem='$d_sem'
15334 d_semctl='$d_semctl'
15335 d_semctl_semid_ds='$d_semctl_semid_ds'
15336 d_semctl_semun='$d_semctl_semun'
15337 d_semget='$d_semget'
15338 d_semop='$d_semop'
15339 d_setegid='$d_setegid'
15340 d_seteuid='$d_seteuid'
15341 d_setgrent='$d_setgrent'
15342 d_setgrps='$d_setgrps'
15343 d_sethent='$d_sethent'
15344 d_setlinebuf='$d_setlinebuf'
15345 d_setlocale='$d_setlocale'
15346 d_setnent='$d_setnent'
15347 d_setpent='$d_setpent'
15348 d_setpgid='$d_setpgid'
15349 d_setpgrp2='$d_setpgrp2'
15350 d_setpgrp='$d_setpgrp'
15351 d_setprior='$d_setprior'
15352 d_setpwent='$d_setpwent'
15353 d_setregid='$d_setregid'
15354 d_setresgid='$d_setresgid'
15355 d_setresuid='$d_setresuid'
15356 d_setreuid='$d_setreuid'
15357 d_setrgid='$d_setrgid'
15358 d_setruid='$d_setruid'
15359 d_setsent='$d_setsent'
15360 d_setsid='$d_setsid'
15361 d_setspent='$d_setspent'
15362 d_setvbuf='$d_setvbuf'
15363 d_sfio='$d_sfio'
15364 d_shm='$d_shm'
15365 d_shmat='$d_shmat'
15366 d_shmatprototype='$d_shmatprototype'
15367 d_shmctl='$d_shmctl'
15368 d_shmdt='$d_shmdt'
15369 d_shmget='$d_shmget'
15370 d_sigaction='$d_sigaction'
15371 d_sigsetjmp='$d_sigsetjmp'
15372 d_socket='$d_socket'
15373 d_socklen_t='$d_socklen_t'
15374 d_sockpair='$d_sockpair'
15375 d_sqrtl='$d_sqrtl'
15376 d_statblks='$d_statblks'
15377 d_statfs_f_flags='$d_statfs_f_flags'
15378 d_statfs_s='$d_statfs_s'
15379 d_statvfs='$d_statvfs'
15380 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15381 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15382 d_stdio_stream_array='$d_stdio_stream_array'
15383 d_stdiobase='$d_stdiobase'
15384 d_stdstdio='$d_stdstdio'
15385 d_strchr='$d_strchr'
15386 d_strcoll='$d_strcoll'
15387 d_strctcpy='$d_strctcpy'
15388 d_strerrm='$d_strerrm'
15389 d_strerror='$d_strerror'
15390 d_strtod='$d_strtod'
15391 d_strtol='$d_strtol'
15392 d_strtold='$d_strtold'
15393 d_strtoll='$d_strtoll'
15394 d_strtoul='$d_strtoul'
15395 d_strtoull='$d_strtoull'
15396 d_strtouq='$d_strtouq'
15397 d_strxfrm='$d_strxfrm'
15398 d_suidsafe='$d_suidsafe'
15399 d_symlink='$d_symlink'
15400 d_syscall='$d_syscall'
15401 d_sysconf='$d_sysconf'
15402 d_sysernlst='$d_sysernlst'
15403 d_syserrlst='$d_syserrlst'
15404 d_system='$d_system'
15405 d_tcgetpgrp='$d_tcgetpgrp'
15406 d_tcsetpgrp='$d_tcsetpgrp'
15407 d_telldir='$d_telldir'
15408 d_telldirproto='$d_telldirproto'
15409 d_time='$d_time'
15410 d_times='$d_times'
15411 d_truncate='$d_truncate'
15412 d_tzname='$d_tzname'
15413 d_umask='$d_umask'
15414 d_uname='$d_uname'
15415 d_union_semun='$d_union_semun'
15416 d_ustat='$d_ustat'
15417 d_vendorarch='$d_vendorarch'
15418 d_vendorbin='$d_vendorbin'
15419 d_vendorlib='$d_vendorlib'
15420 d_vfork='$d_vfork'
15421 d_void_closedir='$d_void_closedir'
15422 d_voidsig='$d_voidsig'
15423 d_voidtty='$d_voidtty'
15424 d_volatile='$d_volatile'
15425 d_vprintf='$d_vprintf'
15426 d_wait4='$d_wait4'
15427 d_waitpid='$d_waitpid'
15428 d_wcstombs='$d_wcstombs'
15429 d_wctomb='$d_wctomb'
15430 d_xenix='$d_xenix'
15431 date='$date'
15432 db_hashtype='$db_hashtype'
15433 db_prefixtype='$db_prefixtype'
15434 defvoidused='$defvoidused'
15435 direntrytype='$direntrytype'
15436 dlext='$dlext'
15437 dlsrc='$dlsrc'
15438 doublesize='$doublesize'
15439 drand01='$drand01'
15440 dynamic_ext='$dynamic_ext'
15441 eagain='$eagain'
15442 ebcdic='$ebcdic'
15443 echo='$echo'
15444 egrep='$egrep'
15445 emacs='$emacs'
15446 eunicefix='$eunicefix'
15447 exe_ext='$exe_ext'
15448 expr='$expr'
15449 extensions='$extensions'
15450 fflushNULL='$fflushNULL'
15451 fflushall='$fflushall'
15452 find='$find'
15453 firstmakefile='$firstmakefile'
15454 flex='$flex'
15455 fpossize='$fpossize'
15456 fpostype='$fpostype'
15457 freetype='$freetype'
15458 full_ar='$full_ar'
15459 full_csh='$full_csh'
15460 full_sed='$full_sed'
15461 gccversion='$gccversion'
15462 gidformat='$gidformat'
15463 gidsign='$gidsign'
15464 gidsize='$gidsize'
15465 gidtype='$gidtype'
15466 glibpth='$glibpth'
15467 grep='$grep'
15468 groupcat='$groupcat'
15469 groupstype='$groupstype'
15470 gzip='$gzip'
15471 h_fcntl='$h_fcntl'
15472 h_sysfile='$h_sysfile'
15473 hint='$hint'
15474 hostcat='$hostcat'
15475 huge='$huge'
15476 i16size='$i16size'
15477 i16type='$i16type'
15478 i32size='$i32size'
15479 i32type='$i32type'
15480 i64size='$i64size'
15481 i64type='$i64type'
15482 i8size='$i8size'
15483 i8type='$i8type'
15484 i_arpainet='$i_arpainet'
15485 i_bsdioctl='$i_bsdioctl'
15486 i_db='$i_db'
15487 i_dbm='$i_dbm'
15488 i_dirent='$i_dirent'
15489 i_dld='$i_dld'
15490 i_dlfcn='$i_dlfcn'
15491 i_fcntl='$i_fcntl'
15492 i_float='$i_float'
15493 i_gdbm='$i_gdbm'
15494 i_grp='$i_grp'
15495 i_iconv='$i_iconv'
15496 i_ieeefp='$i_ieeefp'
15497 i_inttypes='$i_inttypes'
15498 i_limits='$i_limits'
15499 i_locale='$i_locale'
15500 i_machcthr='$i_machcthr'
15501 i_malloc='$i_malloc'
15502 i_math='$i_math'
15503 i_memory='$i_memory'
15504 i_mntent='$i_mntent'
15505 i_ndbm='$i_ndbm'
15506 i_netdb='$i_netdb'
15507 i_neterrno='$i_neterrno'
15508 i_netinettcp='$i_netinettcp'
15509 i_niin='$i_niin'
15510 i_poll='$i_poll'
15511 i_pthread='$i_pthread'
15512 i_pwd='$i_pwd'
15513 i_rpcsvcdbm='$i_rpcsvcdbm'
15514 i_sfio='$i_sfio'
15515 i_sgtty='$i_sgtty'
15516 i_shadow='$i_shadow'
15517 i_socks='$i_socks'
15518 i_stdarg='$i_stdarg'
15519 i_stddef='$i_stddef'
15520 i_stdlib='$i_stdlib'
15521 i_string='$i_string'
15522 i_sunmath='$i_sunmath'
15523 i_sysaccess='$i_sysaccess'
15524 i_sysdir='$i_sysdir'
15525 i_sysfile='$i_sysfile'
15526 i_sysfilio='$i_sysfilio'
15527 i_sysin='$i_sysin'
15528 i_sysioctl='$i_sysioctl'
15529 i_syslog='$i_syslog'
15530 i_sysmman='$i_sysmman'
15531 i_sysmode='$i_sysmode'
15532 i_sysmount='$i_sysmount'
15533 i_sysndir='$i_sysndir'
15534 i_sysparam='$i_sysparam'
15535 i_sysresrc='$i_sysresrc'
15536 i_syssecrt='$i_syssecrt'
15537 i_sysselct='$i_sysselct'
15538 i_syssockio='$i_syssockio'
15539 i_sysstat='$i_sysstat'
15540 i_sysstatfs='$i_sysstatfs'
15541 i_sysstatvfs='$i_sysstatvfs'
15542 i_systime='$i_systime'
15543 i_systimek='$i_systimek'
15544 i_systimes='$i_systimes'
15545 i_systypes='$i_systypes'
15546 i_sysuio='$i_sysuio'
15547 i_sysun='$i_sysun'
15548 i_sysutsname='$i_sysutsname'
15549 i_sysvfs='$i_sysvfs'
15550 i_syswait='$i_syswait'
15551 i_termio='$i_termio'
15552 i_termios='$i_termios'
15553 i_time='$i_time'
15554 i_unistd='$i_unistd'
15555 i_ustat='$i_ustat'
15556 i_utime='$i_utime'
15557 i_values='$i_values'
15558 i_varargs='$i_varargs'
15559 i_varhdr='$i_varhdr'
15560 i_vfork='$i_vfork'
15561 ignore_versioned_solibs='$ignore_versioned_solibs'
15562 inc_version_list='$inc_version_list'
15563 inc_version_list_init='$inc_version_list_init'
15564 incpath='$incpath'
15565 inews='$inews'
15566 installarchlib='$installarchlib'
15567 installbin='$installbin'
15568 installman1dir='$installman1dir'
15569 installman3dir='$installman3dir'
15570 installprefix='$installprefix'
15571 installprefixexp='$installprefixexp'
15572 installprivlib='$installprivlib'
15573 installscript='$installscript'
15574 installsitearch='$installsitearch'
15575 installsitebin='$installsitebin'
15576 installsitelib='$installsitelib'
15577 installstyle='$installstyle'
15578 installusrbinperl='$installusrbinperl'
15579 installvendorarch='$installvendorarch'
15580 installvendorbin='$installvendorbin'
15581 installvendorlib='$installvendorlib'
15582 intsize='$intsize'
15583 ivdformat='$ivdformat'
15584 ivsize='$ivsize'
15585 ivtype='$ivtype'
15586 known_extensions='$known_extensions'
15587 ksh='$ksh'
15588 large='$large'
15589 ld='$ld'
15590 lddlflags='$lddlflags'
15591 ldflags='$ldflags'
15592 ldlibpthname='$ldlibpthname'
15593 less='$less'
15594 lib_ext='$lib_ext'
15595 libc='$libc'
15596 libperl='$libperl'
15597 libpth='$libpth'
15598 libs='$libs'
15599 libsdirs='$libsdirs'
15600 libsfiles='$libsfiles'
15601 libsfound='$libsfound'
15602 libspath='$libspath'
15603 libswanted='$libswanted'
15604 line='$line'
15605 lint='$lint'
15606 lkflags='$lkflags'
15607 ln='$ln'
15608 lns='$lns'
15609 locincpth='$locincpth'
15610 loclibpth='$loclibpth'
15611 longdblsize='$longdblsize'
15612 longlongsize='$longlongsize'
15613 longsize='$longsize'
15614 lp='$lp'
15615 lpr='$lpr'
15616 ls='$ls'
15617 lseeksize='$lseeksize'
15618 lseektype='$lseektype'
15619 mail='$mail'
15620 mailx='$mailx'
15621 make='$make'
15622 make_set_make='$make_set_make'
15623 mallocobj='$mallocobj'
15624 mallocsrc='$mallocsrc'
15625 malloctype='$malloctype'
15626 man1dir='$man1dir'
15627 man1direxp='$man1direxp'
15628 man1ext='$man1ext'
15629 man3dir='$man3dir'
15630 man3direxp='$man3direxp'
15631 man3ext='$man3ext'
15632 medium='$medium'
15633 mips_type='$mips_type'
15634 mkdir='$mkdir'
15635 mmaptype='$mmaptype'
15636 models='$models'
15637 modetype='$modetype'
15638 more='$more'
15639 multiarch='$multiarch'
15640 mv='$mv'
15641 myarchname='$myarchname'
15642 mydomain='$mydomain'
15643 myhostname='$myhostname'
15644 myuname='$myuname'
15645 n='$n'
15646 netdb_hlen_type='$netdb_hlen_type'
15647 netdb_host_type='$netdb_host_type'
15648 netdb_name_type='$netdb_name_type'
15649 netdb_net_type='$netdb_net_type'
15650 nm='$nm'
15651 nm_opt='$nm_opt'
15652 nm_so_opt='$nm_so_opt'
15653 nonxs_ext='$nonxs_ext'
15654 nroff='$nroff'
15655 nvsize='$nvsize'
15656 nvtype='$nvtype'
15657 o_nonblock='$o_nonblock'
15658 obj_ext='$obj_ext'
15659 old_pthread_create_joinable='$old_pthread_create_joinable'
15660 optimize='$optimize'
15661 orderlib='$orderlib'
15662 osname='$osname'
15663 osvers='$osvers'
15664 package='$package'
15665 pager='$pager'
15666 passcat='$passcat'
15667 patchlevel='$patchlevel'
15668 path_sep='$path_sep'
15669 perl5='$perl5'
15670 perl='$perl'
15671 perladmin='$perladmin'
15672 perlpath='$perlpath'
15673 pg='$pg'
15674 phostname='$phostname'
15675 pidtype='$pidtype'
15676 plibpth='$plibpth'
15677 pm_apiversion='$pm_apiversion'
15678 pmake='$pmake'
15679 pr='$pr'
15680 prefix='$prefix'
15681 prefixexp='$prefixexp'
15682 privlib='$privlib'
15683 privlibexp='$privlibexp'
15684 prototype='$prototype'
15685 ptrsize='$ptrsize'
15686 quadkind='$quadkind'
15687 quadtype='$quadtype'
15688 randbits='$randbits'
15689 randfunc='$randfunc'
15690 randseedtype='$randseedtype'
15691 ranlib='$ranlib'
15692 rd_nodata='$rd_nodata'
15693 revision='$revision'
15694 rm='$rm'
15695 rmail='$rmail'
15696 runnm='$runnm'
15697 sPRIEldbl='$sPRIEldbl'
15698 sPRIFldbl='$sPRIFldbl'
15699 sPRIGldbl='$sPRIGldbl'
15700 sPRIX64='$sPRIX64'
15701 sPRId64='$sPRId64'
15702 sPRIeldbl='$sPRIeldbl'
15703 sPRIfldbl='$sPRIfldbl'
15704 sPRIgldbl='$sPRIgldbl'
15705 sPRIi64='$sPRIi64'
15706 sPRIo64='$sPRIo64'
15707 sPRIu64='$sPRIu64'
15708 sPRIx64='$sPRIx64'
15709 sched_yield='$sched_yield'
15710 scriptdir='$scriptdir'
15711 scriptdirexp='$scriptdirexp'
15712 sed='$sed'
15713 seedfunc='$seedfunc'
15714 selectminbits='$selectminbits'
15715 selecttype='$selecttype'
15716 sendmail='$sendmail'
15717 sh='$sh'
15718 shar='$shar'
15719 sharpbang='$sharpbang'
15720 shmattype='$shmattype'
15721 shortsize='$shortsize'
15722 shrpenv='$shrpenv'
15723 shsharp='$shsharp'
15724 sig_count='$sig_count'
15725 sig_name='$sig_name'
15726 sig_name_init='$sig_name_init'
15727 sig_num='$sig_num'
15728 sig_num_init='$sig_num_init'
15729 signal_t='$signal_t'
15730 sitearch='$sitearch'
15731 sitearchexp='$sitearchexp'
15732 sitebin='$sitebin'
15733 sitebinexp='$sitebinexp'
15734 sitelib='$sitelib'
15735 sitelib_stem='$sitelib_stem'
15736 sitelibexp='$sitelibexp'
15737 siteprefix='$siteprefix'
15738 siteprefixexp='$siteprefixexp'
15739 sizesize='$sizesize'
15740 sizetype='$sizetype'
15741 sleep='$sleep'
15742 smail='$smail'
15743 small='$small'
15744 so='$so'
15745 sockethdr='$sockethdr'
15746 socketlib='$socketlib'
15747 socksizetype='$socksizetype'
15748 sort='$sort'
15749 spackage='$spackage'
15750 spitshell='$spitshell'
15751 split='$split'
15752 src='$src'
15753 ssizetype='$ssizetype'
15754 startperl='$startperl'
15755 startsh='$startsh'
15756 static_ext='$static_ext'
15757 stdchar='$stdchar'
15758 stdio_base='$stdio_base'
15759 stdio_bufsiz='$stdio_bufsiz'
15760 stdio_cnt='$stdio_cnt'
15761 stdio_filbuf='$stdio_filbuf'
15762 stdio_ptr='$stdio_ptr'
15763 stdio_stream_array='$stdio_stream_array'
15764 strings='$strings'
15765 submit='$submit'
15766 subversion='$subversion'
15767 sysman='$sysman'
15768 tail='$tail'
15769 tar='$tar'
15770 tbl='$tbl'
15771 tee='$tee'
15772 test='$test'
15773 timeincl='$timeincl'
15774 timetype='$timetype'
15775 touch='$touch'
15776 tr='$tr'
15777 trnl='$trnl'
15778 troff='$troff'
15779 u16size='$u16size'
15780 u16type='$u16type'
15781 u32size='$u32size'
15782 u32type='$u32type'
15783 u64size='$u64size'
15784 u64type='$u64type'
15785 u8size='$u8size'
15786 u8type='$u8type'
15787 uidformat='$uidformat'
15788 uidsign='$uidsign'
15789 uidsize='$uidsize'
15790 uidtype='$uidtype'
15791 uname='$uname'
15792 uniq='$uniq'
15793 uquadtype='$uquadtype'
15794 use5005threads='$use5005threads'
15795 use64bitall='$use64bitall'
15796 use64bitint='$use64bitint'
15797 usedl='$usedl'
15798 useithreads='$useithreads'
15799 uselargefiles='$uselargefiles'
15800 uselongdouble='$uselongdouble'
15801 usemorebits='$usemorebits'
15802 usemultiplicity='$usemultiplicity'
15803 usemymalloc='$usemymalloc'
15804 usenm='$usenm'
15805 useopcode='$useopcode'
15806 useperlio='$useperlio'
15807 useposix='$useposix'
15808 usesfio='$usesfio'
15809 useshrplib='$useshrplib'
15810 usesocks='$usesocks'
15811 usethreads='$usethreads'
15812 usevendorprefix='$usevendorprefix'
15813 usevfork='$usevfork'
15814 usrinc='$usrinc'
15815 uuname='$uuname'
15816 uvoformat='$uvoformat'
15817 uvsize='$uvsize'
15818 uvtype='$uvtype'
15819 uvuformat='$uvuformat'
15820 uvxformat='$uvxformat'
15821 vendorarch='$vendorarch'
15822 vendorarchexp='$vendorarchexp'
15823 vendorbin='$vendorbin'
15824 vendorbinexp='$vendorbinexp'
15825 vendorlib='$vendorlib'
15826 vendorlib_stem='$vendorlib_stem'
15827 vendorlibexp='$vendorlibexp'
15828 vendorprefix='$vendorprefix'
15829 vendorprefixexp='$vendorprefixexp'
15830 version='$version'
15831 vi='$vi'
15832 voidflags='$voidflags'
15833 xlibpth='$xlibpth'
15834 xs_apiversion='$xs_apiversion'
15835 zcat='$zcat'
15836 zip='$zip'
15837 EOT
15838
15839 : Add in command line options if available
15840 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15841
15842 : add special variables
15843 $test -f $src/patchlevel.h && \
15844 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15845 echo "CONFIGDOTSH=true" >>config.sh
15846
15847 : propagate old symbols
15848 if $test -f UU/config.sh; then
15849         <UU/config.sh sort | uniq >UU/oldconfig.sh
15850         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15851         sort | uniq -u >UU/oldsyms
15852         set X `cat UU/oldsyms`
15853         shift
15854         case $# in
15855         0) ;;
15856         *)
15857                 cat <<EOM
15858 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15859 EOM
15860                 echo "# Variables propagated from previous config.sh file." >>config.sh
15861                 for sym in `cat UU/oldsyms`; do
15862                         echo "    Propagating $hint variable "'$'"$sym..."
15863                         eval 'tmp="$'"${sym}"'"'
15864                         echo "$tmp" | \
15865                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15866                 done
15867                 ;;
15868         esac
15869 fi
15870
15871 : Finish up by extracting the .SH files
15872 case "$alldone" in
15873 exit)
15874         $rm -rf UU
15875         echo "Done."
15876         exit 0
15877         ;;
15878 cont)
15879         ;;
15880 '')
15881         dflt=''
15882         nostick=true
15883         $cat <<EOM
15884
15885 If you'd like to make any changes to the config.sh file before I begin
15886 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15887
15888 EOM
15889         rp="Press return or use a shell escape to edit config.sh:"
15890         . UU/myread
15891         nostick=''
15892         case "$ans" in
15893         '') ;;
15894         *) : in case they cannot read
15895                 sh 1>&4 -c "$ans";;
15896         esac
15897         ;;
15898 esac
15899
15900 : if this fails, just run all the .SH files by hand
15901 . ./config.sh
15902
15903 echo " "
15904 exec 1>&4
15905 . ./UU/extract
15906
15907 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15908         dflt=y
15909         case "$silent" in
15910         true) ;;
15911         *)
15912                 $cat <<EOM
15913
15914 Now you need to generate make dependencies by running "$make depend".
15915 You might prefer to run it in background: "$make depend > makedepend.out &"
15916 It can take a while, so you might not want to run it right now.
15917
15918 EOM
15919                 ;;
15920         esac
15921         rp="Run $make depend now?"
15922         . UU/myread
15923         case "$ans" in
15924         y*)
15925                 $make depend && echo "Now you must run a $make."
15926                 ;;
15927         *)
15928                 echo "You must run '$make depend' then '$make'."
15929                 ;;
15930         esac
15931 elif test -f [Mm]akefile; then
15932         echo " "
15933         echo "Now you must run a $make."
15934 else
15935         echo "Done."
15936 fi
15937
15938 if $test -f Policy.sh; then
15939     $cat <<EOM
15940
15941 If you compile $package on a different machine or from a different object
15942 directory, copy the Policy.sh file from this object directory to the
15943 new one before you run Configure -- this will help you with most of
15944 the policy defaults.
15945
15946 EOM
15947 fi
15948 if $test -f config.msg; then
15949     echo "Hmm.  I also noted the following information while running:"
15950     echo " "
15951     $cat config.msg >&4
15952     $rm -f config.msg
15953 fi
15954 $rm -f kit*isdone ark*isdone
15955 $rm -rf UU
15956
15957 : End of Configure
15958