move new variables to the end of the interpreter structure (for
[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 Wed Jul 12 07:59:35 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 ccflags=''
292 cppflags=''
293 ldflags=''
294 lkflags=''
295 locincpth=''
296 optimize=''
297 cf_email=''
298 cf_by=''
299 cf_time=''
300 charsize=''
301 contains=''
302 cpp_stuff=''
303 cpplast=''
304 cppminus=''
305 cpprun=''
306 cppstdin=''
307 crosscompile=''
308 d_access=''
309 d_accessx=''
310 d_alarm=''
311 d_attribut=''
312 d_bcmp=''
313 d_bcopy=''
314 d_bzero=''
315 d_casti32=''
316 castflags=''
317 d_castneg=''
318 d_chown=''
319 d_chroot=''
320 d_chsize=''
321 d_closedir=''
322 d_void_closedir=''
323 d_const=''
324 cryptlib=''
325 d_crypt=''
326 d_csh=''
327 full_csh=''
328 d_cuserid=''
329 d_dbl_dig=''
330 d_difftime=''
331 d_dlerror=''
332 d_dlopen=''
333 d_dlsymun=''
334 d_dosuid=''
335 d_suidsafe=''
336 d_drand48proto=''
337 d_dup2=''
338 d_eaccess=''
339 d_endgrent=''
340 d_endhent=''
341 d_endnent=''
342 d_endpent=''
343 d_endpwent=''
344 d_endsent=''
345 d_fchmod=''
346 d_fchown=''
347 d_fcntl=''
348 d_fd_macros=''
349 d_fd_set=''
350 d_fds_bits=''
351 d_fgetpos=''
352 d_flexfnam=''
353 d_flock=''
354 d_fork=''
355 d_fpos64_t=''
356 d_frexpl=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getcwd=''
366 d_getespwnam=''
367 d_getfsstat=''
368 d_getgrent=''
369 d_getgrps=''
370 d_gethbyaddr=''
371 d_gethbyname=''
372 d_gethent=''
373 aphostname=''
374 d_gethname=''
375 d_phostname=''
376 d_uname=''
377 d_gethostprotos=''
378 d_getlogin=''
379 d_getmnt=''
380 d_getmntent=''
381 d_getnbyaddr=''
382 d_getnbyname=''
383 d_getnent=''
384 d_getnetprotos=''
385 d_getpent=''
386 d_getpgid=''
387 d_getpgrp2=''
388 d_bsdgetpgrp=''
389 d_getpgrp=''
390 d_getppid=''
391 d_getprior=''
392 d_getpbyname=''
393 d_getpbynumber=''
394 d_getprotoprotos=''
395 d_getprpwnam=''
396 d_getpwent=''
397 d_getsent=''
398 d_getservprotos=''
399 d_getspnam=''
400 d_getsbyname=''
401 d_getsbyport=''
402 d_gnulibc=''
403 d_hasmntopt=''
404 d_htonl=''
405 d_iconv=''
406 d_inetaton=''
407 d_int64_t=''
408 d_isascii=''
409 d_isnan=''
410 d_isnanl=''
411 d_killpg=''
412 d_lchown=''
413 d_ldbl_dig=''
414 d_link=''
415 d_locconv=''
416 d_lockf=''
417 d_longdbl=''
418 longdblsize=''
419 d_longlong=''
420 longlongsize=''
421 d_lseekproto=''
422 d_lstat=''
423 d_madvise=''
424 d_mblen=''
425 d_mbstowcs=''
426 d_mbtowc=''
427 d_memchr=''
428 d_memcmp=''
429 d_memcpy=''
430 d_memmove=''
431 d_memset=''
432 d_mkdir=''
433 d_mkdtemp=''
434 d_mkfifo=''
435 d_mkstemp=''
436 d_mkstemps=''
437 d_mktime=''
438 d_mmap=''
439 mmaptype=''
440 d_modfl=''
441 d_mprotect=''
442 d_msg=''
443 d_msgctl=''
444 d_msgget=''
445 d_msgrcv=''
446 d_msgsnd=''
447 d_msync=''
448 d_munmap=''
449 d_nice=''
450 d_off64_t=''
451 d_open3=''
452 d_fpathconf=''
453 d_pathconf=''
454 d_pause=''
455 d_pipe=''
456 d_poll=''
457 d_portable=''
458 d_old_pthread_create_joinable=''
459 old_pthread_create_joinable=''
460 d_pthread_yield=''
461 d_sched_yield=''
462 sched_yield=''
463 d_qgcvt=''
464 d_readdir=''
465 d_rewinddir=''
466 d_seekdir=''
467 d_telldir=''
468 d_readlink=''
469 d_rename=''
470 d_rmdir=''
471 d_safebcpy=''
472 d_safemcpy=''
473 d_sanemcmp=''
474 d_select=''
475 d_sem=''
476 d_semctl=''
477 d_semget=''
478 d_semop=''
479 d_setegid=''
480 d_seteuid=''
481 d_setgrent=''
482 d_setgrps=''
483 d_sethent=''
484 d_setlinebuf=''
485 d_setlocale=''
486 d_setnent=''
487 d_setpent=''
488 d_setpgid=''
489 d_setpgrp2=''
490 d_bsdsetpgrp=''
491 d_setpgrp=''
492 d_setprior=''
493 d_setpwent=''
494 d_setregid=''
495 d_setresgid=''
496 d_setresuid=''
497 d_setreuid=''
498 d_setrgid=''
499 d_setruid=''
500 d_setsent=''
501 d_setsid=''
502 d_setvbuf=''
503 d_sfio=''
504 usesfio=''
505 d_shm=''
506 d_shmat=''
507 d_shmatprototype=''
508 shmattype=''
509 d_shmctl=''
510 d_shmdt=''
511 d_shmget=''
512 d_sigaction=''
513 d_sigsetjmp=''
514 d_msg_ctrunc=''
515 d_msg_dontroute=''
516 d_msg_oob=''
517 d_msg_peek=''
518 d_msg_proxy=''
519 d_oldsock=''
520 d_scm_rights=''
521 d_socket=''
522 d_sockpair=''
523 sockethdr=''
524 socketlib=''
525 d_socklen_t=''
526 d_sqrtl=''
527 d_statblks=''
528 d_statfs_f_flags=''
529 d_statfs_s=''
530 d_fstatvfs=''
531 d_statvfs=''
532 d_stdio_cnt_lval=''
533 d_stdio_ptr_lval=''
534 d_stdiobase=''
535 d_stdstdio=''
536 stdio_base=''
537 stdio_bufsiz=''
538 stdio_cnt=''
539 stdio_filbuf=''
540 stdio_ptr=''
541 d_index=''
542 d_strchr=''
543 d_strcoll=''
544 d_strctcpy=''
545 d_strerrm=''
546 d_strerror=''
547 d_sysernlst=''
548 d_syserrlst=''
549 d_strtod=''
550 d_strtol=''
551 d_strtold=''
552 d_strtoll=''
553 d_strtoul=''
554 d_strtoull=''
555 d_strtouq=''
556 d_strxfrm=''
557 d_symlink=''
558 d_syscall=''
559 d_sysconf=''
560 d_system=''
561 d_tcgetpgrp=''
562 d_tcsetpgrp=''
563 d_telldirproto=''
564 d_time=''
565 timetype=''
566 clocktype=''
567 d_times=''
568 d_truncate=''
569 d_tzname=''
570 d_umask=''
571 d_semctl_semid_ds=''
572 d_semctl_semun=''
573 d_union_semun=''
574 d_ustat=''
575 d_vfork=''
576 usevfork=''
577 d_voidsig=''
578 signal_t=''
579 d_volatile=''
580 d_charvspr=''
581 d_vprintf=''
582 d_wait4=''
583 d_waitpid=''
584 d_wcstombs=''
585 d_wctomb=''
586 dlext=''
587 cccdlflags=''
588 ccdlflags=''
589 dlsrc=''
590 ld=''
591 lddlflags=''
592 usedl=''
593 doublesize=''
594 ebcdic=''
595 fflushNULL=''
596 fflushall=''
597 fpossize=''
598 fpostype=''
599 gccversion=''
600 gidformat=''
601 gidsign=''
602 gidsize=''
603 gidtype=''
604 groupstype=''
605 h_fcntl=''
606 h_sysfile=''
607 i_arpainet=''
608 db_hashtype=''
609 db_prefixtype=''
610 i_db=''
611 i_dbm=''
612 i_rpcsvcdbm=''
613 d_dirnamlen=''
614 direntrytype=''
615 i_dirent=''
616 i_dld=''
617 i_dlfcn=''
618 i_fcntl=''
619 i_float=''
620 i_gdbm=''
621 d_grpasswd=''
622 i_grp=''
623 i_iconv=''
624 i_ieeefp=''
625 i_inttypes=''
626 i_limits=''
627 i_locale=''
628 i_machcthr=''
629 i_malloc=''
630 i_math=''
631 i_memory=''
632 i_mntent=''
633 i_ndbm=''
634 i_netdb=''
635 i_neterrno=''
636 i_netinettcp=''
637 i_niin=''
638 i_sysin=''
639 i_poll=''
640 i_prot=''
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 d_perl_otherlibdirs=''
783 otherlibdirs=''
784 package=''
785 spackage=''
786 pager=''
787 api_revision=''
788 api_subversion=''
789 api_version=''
790 api_versionstring=''
791 patchlevel=''
792 revision=''
793 subversion=''
794 version=''
795 perl5=''
796 perladmin=''
797 perlpath=''
798 d_nv_preserves_uv=''
799 d_nv_preserves_uv_bits=''
800 i16size=''
801 i16type=''
802 i32size=''
803 i32type=''
804 i64size=''
805 i64type=''
806 i8size=''
807 i8type=''
808 ivsize=''
809 ivtype=''
810 nvsize=''
811 nvtype=''
812 u16size=''
813 u16type=''
814 u32size=''
815 u32type=''
816 u64size=''
817 u64type=''
818 u8size=''
819 u8type=''
820 uvsize=''
821 uvtype=''
822 ivdformat=''
823 uvoformat=''
824 uvuformat=''
825 uvxformat=''
826 pidtype=''
827 prefix=''
828 prefixexp=''
829 installprivlib=''
830 privlib=''
831 privlibexp=''
832 prototype=''
833 ptrsize=''
834 d_PRIX64=''
835 d_PRId64=''
836 d_PRIi64=''
837 d_PRIo64=''
838 d_PRIu64=''
839 d_PRIx64=''
840 sPRIX64=''
841 sPRId64=''
842 sPRIi64=''
843 sPRIo64=''
844 sPRIu64=''
845 sPRIx64=''
846 d_quad=''
847 quadkind=''
848 quadtype=''
849 uquadtype=''
850 drand01=''
851 randbits=''
852 randfunc=''
853 randseedtype=''
854 seedfunc=''
855 installscript=''
856 scriptdir=''
857 scriptdirexp=''
858 selectminbits=''
859 selecttype=''
860 sh=''
861 sig_count=''
862 sig_name=''
863 sig_name_init=''
864 sig_num=''
865 sig_num_init=''
866 installsitearch=''
867 sitearch=''
868 sitearchexp=''
869 installsitebin=''
870 sitebin=''
871 sitebinexp=''
872 installsitelib=''
873 sitelib=''
874 sitelib_stem=''
875 sitelibexp=''
876 siteprefix=''
877 siteprefixexp=''
878 sizesize=''
879 sizetype=''
880 so=''
881 socksizetype=''
882 sharpbang=''
883 shsharp=''
884 spitshell=''
885 src=''
886 ssizetype=''
887 startperl=''
888 startsh=''
889 stdchar=''
890 d_stdio_stream_array=''
891 stdio_stream_array=''
892 sysman=''
893 trnl=''
894 uidformat=''
895 uidsign=''
896 uidsize=''
897 uidtype=''
898 archname64=''
899 use64bitall=''
900 use64bitint=''
901 uselargefiles=''
902 uselongdouble=''
903 usemorebits=''
904 usemultiplicity=''
905 nm_opt=''
906 nm_so_opt=''
907 runnm=''
908 usenm=''
909 useperlio=''
910 usesocks=''
911 d_oldpthreads=''
912 use5005threads=''
913 useithreads=''
914 usethreads=''
915 incpath=''
916 mips_type=''
917 usrinc=''
918 d_vendorarch=''
919 installvendorarch=''
920 vendorarch=''
921 vendorarchexp=''
922 d_vendorbin=''
923 installvendorbin=''
924 vendorbin=''
925 vendorbinexp=''
926 d_vendorlib=''
927 installvendorlib=''
928 vendorlib=''
929 vendorlib_stem=''
930 vendorlibexp=''
931 usevendorprefix=''
932 vendorprefix=''
933 vendorprefixexp=''
934 defvoidused=''
935 voidflags=''
936 pm_apiversion=''
937 xs_apiversion=''
938 CONFIG=''
939
940 define='define'
941 undef='undef'
942 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
943 rmlist=''
944
945 : We must find out about Eunice early
946 eunicefix=':'
947 if test -f /etc/unixtovms; then
948         eunicefix=/etc/unixtovms
949 fi
950 if test -f /etc/unixtovms.exe; then
951         eunicefix=/etc/unixtovms.exe
952 fi
953
954 i_whoami=''
955 : set useposix=false in your hint file to disable the POSIX extension.
956 useposix=true
957 : set useopcode=false in your hint file to disable the Opcode extension.
958 useopcode=true
959 : Trailing extension.  Override this in a hint file, if needed.
960 _exe=''
961 : Extra object files, if any, needed on this platform.
962 archobjs=''
963 : Possible local include directories to search.
964 : Set locincpth to "" in a hint file to defeat local include searches.
965 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
966 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
967 :
968 : no include file wanted by default
969 inclwanted=''
970
971 groupstype=''
972 : change the next line if compiling for Xenix/286 on Xenix/386
973 xlibpth='/usr/lib/386 /lib/386'
974 : Possible local library directories to search.
975 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
976 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
977
978 : general looking path for locating libraries
979 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
980 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
981 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
982 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
983 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
984
985 : Private path used by Configure to find libraries.  Its value
986 : is prepended to libpth. This variable takes care of special
987 : machines, like the mips.  Usually, it should be empty.
988 plibpth=''
989
990 : default library list
991 libswanted=''
992 : some systems want to use only the non-versioned libso:s
993 ignore_versioned_solibs=''
994 : set usemultiplicity on the Configure command line to enable multiplicity.
995 : set usesocks on the Configure command line to enable socks.
996 : set usethreads on the Configure command line to enable threads.
997 : full support for void wanted by default
998 defvoidused=15
999
1000 : List of libraries we want.
1001 : If anyone needs -lnet, put it in a hint file.
1002 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1003 libswanted="$libswanted dld ld sun m c cposix posix"
1004 libswanted="$libswanted ndir dir crypt sec"
1005 libswanted="$libswanted ucb bsd BSD PW x iconv"
1006 : We probably want to search /usr/shlib before most other libraries.
1007 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1008 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1009 glibpth="/usr/shlib $glibpth"
1010 : Do not use vfork unless overridden by a hint file.
1011 usevfork=false
1012
1013 : Find the basic shell for Bourne shell scripts
1014 case "$sh" in
1015 '')
1016         case "$SYSTYPE" in
1017         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1018         *) xxx='/bin/sh';;
1019         esac
1020         if test -f "$xxx"; then
1021                 sh="$xxx"
1022         else
1023                 : Build up a list and do a single loop so we can 'break' out.
1024                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1025                 for xxx in sh bash ksh pdksh ash; do
1026                         for p in $pth; do
1027                                 try="$try ${p}/${xxx}"
1028                         done
1029                 done
1030                 for xxx in $try; do
1031                         if test -f "$xxx"; then
1032                                 sh="$xxx";
1033                                 break
1034                         elif test -f "$xxx.exe"; then
1035                                 sh="$xxx";
1036                                 break
1037                         fi
1038                 done
1039         fi
1040         ;;
1041 esac
1042
1043 case "$sh" in
1044 '')     cat <<EOM >&2
1045 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1046
1047 Usually it's in /bin/sh.  How did you even get this far?
1048 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1049 we'll try to straighten this all out.
1050 EOM
1051         exit 1
1052         ;;
1053 esac
1054
1055 : see if sh knows # comments
1056 if `$sh -c '#' >/dev/null 2>&1`; then
1057         shsharp=true
1058         spitshell=cat
1059         xcat=/bin/cat
1060         test -f $xcat || xcat=/usr/bin/cat
1061         echo "#!$xcat" >try
1062         $eunicefix try
1063         chmod +x try
1064         ./try > today
1065         if test -s today; then
1066                 sharpbang='#!'
1067         else
1068                 echo "#! $xcat" > try
1069                 $eunicefix try
1070                 chmod +x try
1071                 ./try > today
1072                 if test -s today; then
1073                         sharpbang='#! '
1074                 else
1075                         sharpbang=': use '
1076                 fi
1077         fi
1078 else
1079         echo " "
1080         echo "Your $sh doesn't grok # comments--I will strip them later on."
1081         shsharp=false
1082         cd ..
1083         echo "exec grep -v '^[  ]*#'" >spitshell
1084         chmod +x spitshell
1085         $eunicefix spitshell
1086         spitshell=`pwd`/spitshell
1087         cd UU
1088         echo "I presume that if # doesn't work, #! won't work either!"
1089         sharpbang=': use '
1090 fi
1091 rm -f try today
1092
1093 : figure out how to guarantee sh startup
1094 case "$startsh" in
1095 '') startsh=${sharpbang}${sh} ;;
1096 *)
1097 esac
1098 cat >try <<EOSS
1099 $startsh
1100 set abc
1101 test "$?abc" != 1
1102 EOSS
1103
1104 chmod +x try
1105 $eunicefix try
1106 if ./try; then
1107         : echo "Yup, it does."
1108 else
1109         echo "Hmm... '$startsh' does not guarantee sh startup..."
1110         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1111 fi
1112 rm -f try
1113
1114
1115 : Save command line options in file UU/cmdline.opt for later use in
1116 : generating config.sh.
1117 cat > cmdline.opt <<EOSH
1118 # Configure command line arguments.
1119 config_arg0='$0'
1120 config_args='$*'
1121 config_argc=$#
1122 EOSH
1123 argn=1
1124 for arg in "$@"; do
1125         cat >>cmdline.opt <<EOSH
1126 config_arg$argn='$arg'
1127 EOSH
1128         argn=`expr $argn + 1`
1129 done
1130
1131 : produce awk script to parse command line options
1132 cat >options.awk <<'EOF'
1133 BEGIN {
1134         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1135
1136         len = length(optstr);
1137         for (i = 1; i <= len; i++) {
1138                 c = substr(optstr, i, 1);
1139                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1140                 if (a == ":") {
1141                         arg[c] = 1;
1142                         i++;
1143                 }
1144                 opt[c] = 1;
1145         }
1146 }
1147 {
1148         expect = 0;
1149         str = $0;
1150         if (substr(str, 1, 1) != "-") {
1151                 printf("'%s'\n", str);
1152                 next;
1153         }
1154         len = length($0);
1155         for (i = 2; i <= len; i++) {
1156                 c = substr(str, i, 1);
1157                 if (!opt[c]) {
1158                         printf("-%s\n", substr(str, i));
1159                         next;
1160                 }
1161                 printf("-%s\n", c);
1162                 if (arg[c]) {
1163                         if (i < len)
1164                                 printf("'%s'\n", substr(str, i + 1));
1165                         else
1166                                 expect = 1;
1167                         next;
1168                 }
1169         }
1170 }
1171 END {
1172         if (expect)
1173                 print "?";
1174 }
1175 EOF
1176
1177 : process the command line options
1178 set X `for arg in "$@"; do echo "X$arg"; done |
1179         sed -e s/X// | awk -f options.awk`
1180 eval "set $*"
1181 shift
1182 rm -f options.awk
1183
1184 : set up default values
1185 fastread=''
1186 reuseval=false
1187 config_sh=''
1188 alldone=''
1189 error=''
1190 silent=''
1191 extractsh=''
1192 override=''
1193 knowitall=''
1194 rm -f optdef.sh posthint.sh
1195 cat >optdef.sh <<EOS
1196 $startsh
1197 EOS
1198
1199
1200 : option parsing
1201 while test $# -gt 0; do
1202         case "$1" in
1203         -d) shift; fastread=yes;;
1204         -e) shift; alldone=cont;;
1205         -f)
1206                 shift
1207                 cd ..
1208                 if test -r "$1"; then
1209                         config_sh="$1"
1210                 else
1211                         echo "$me: cannot read config file $1." >&2
1212                         error=true
1213                 fi
1214                 cd UU
1215                 shift;;
1216         -h) shift; error=true;;
1217         -r) shift; reuseval=true;;
1218         -s) shift; silent=true; realsilent=true;;
1219         -E) shift; alldone=exit;;
1220         -K) shift; knowitall=true;;
1221         -O) shift; override=true;;
1222         -S) shift; silent=true; extractsh=true;;
1223         -D)
1224                 shift
1225                 case "$1" in
1226                 *=)
1227                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1228                         echo "$me: ignoring -D $1" >&2
1229                         ;;
1230                 *=*) echo "$1" | \
1231                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1232                 *) echo "$1='define'" >> optdef.sh;;
1233                 esac
1234                 shift
1235                 ;;
1236         -U)
1237                 shift
1238                 case "$1" in
1239                 *=) echo "$1" >> optdef.sh;;
1240                 *=*)
1241                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1242                         echo "$me: ignoring -U $1" >&2
1243                         ;;
1244                 *) echo "$1='undef'" >> optdef.sh;;
1245                 esac
1246                 shift
1247                 ;;
1248         -A)
1249             shift
1250             xxx=''
1251             yyy="$1"
1252             zzz=''
1253             uuu=undef
1254             case "$yyy" in
1255             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1256                  case "$zzz" in
1257                  *:*) zzz='' ;;
1258                  *)   xxx=append
1259                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1260                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1261                  esac
1262                  ;;
1263             esac
1264             case "$xxx" in
1265             '')  case "$yyy" in
1266                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1267                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1268                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1269                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1270                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1271                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1272                  esac
1273                  ;;       
1274             esac
1275             case "$xxx" in
1276             append)
1277                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1278             clear)
1279                 echo "$yyy=''"                  >> posthint.sh ;;
1280             define)
1281                 case "$zzz" in
1282                 '') zzz=define ;;
1283                 esac
1284                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1285             eval)
1286                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1287             prepend)
1288                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1289             undef)
1290                 case "$zzz" in
1291                 '') zzz="$uuu" ;;
1292                 esac
1293                 echo "$yyy=$zzz"                >> posthint.sh ;;
1294             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1295             esac
1296             shift
1297             ;;
1298         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1299             exit 0;;
1300         --) break;;
1301         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1302         *) break;;
1303         esac
1304 done
1305
1306 case "$error" in
1307 true)
1308         cat >&2 <<EOM
1309 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1310                  [-U symbol] [-U symbol=] [-A command:symbol...]
1311   -d : use defaults for all answers.
1312   -e : go on without questioning past the production of config.sh.
1313   -f : specify an alternate default configuration file.
1314   -h : print this help message and exit (with an error status).
1315   -r : reuse C symbols value if possible (skips costly nm extraction).
1316   -s : silent mode, only echoes questions and essential information.
1317   -D : define symbol to have some value:
1318          -D symbol         symbol gets the value 'define'
1319          -D symbol=value   symbol gets the value 'value'
1320   -E : stop at the end of questions, after having produced config.sh.
1321   -K : do not use unless you know what you are doing.
1322   -O : let -D and -U override definitions from loaded configuration file.
1323   -S : perform variable substitutions on all .SH files (can mix with -f)
1324   -U : undefine symbol:
1325          -U symbol    symbol gets the value 'undef'
1326          -U symbol=   symbol gets completely empty
1327   -A : manipulate symbol after the platform specific hints have been applied:
1328          -A symbol=value                append " "value to symbol
1329          -A append:symbol=value         append value to symbol
1330          -A define:symbol=value         define symbol to have value
1331          -A clear:symbol                define symbol to be ''
1332          -A define:symbol               define symbol to be 'define'
1333          -A eval:symbol=value           define symbol to be eval of value
1334          -A prepend:symbol=value        prepend value to symbol
1335          -A undef:symbol                define symbol to be 'undef'
1336          -A undef:symbol=               define symbol to be ''
1337   -V : print version number and exit (with a zero status).
1338 EOM
1339         exit 1
1340         ;;
1341 esac
1342
1343 : Sanity checks
1344 case "$fastread$alldone" in
1345 yescont|yesexit) ;;
1346 *)
1347         case "$extractsh" in
1348         true) ;;
1349         *)
1350                 if test ! -t 0; then
1351                         echo "Say 'sh Configure', not 'sh <Configure'"
1352                         exit 1
1353                 fi
1354                 ;;
1355         esac
1356         ;;
1357 esac
1358
1359 exec 4>&1
1360 case "$silent" in
1361 true) exec 1>/dev/null;;
1362 esac
1363
1364 : run the defines and the undefines, if any, but leave the file out there...
1365 touch optdef.sh
1366 . ./optdef.sh
1367 : create the posthint manipulation script and leave the file out there...
1368 touch posthint.sh
1369
1370 : set package name
1371 package=perl5
1372 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1373 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1374 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1375 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1376 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1377 esac
1378
1379 : Some greps do not return status, grrr.
1380 echo "grimblepritz" >grimble
1381 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1382         contains=contains
1383 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1384         contains=grep
1385 else
1386         contains=contains
1387 fi
1388 rm -f grimble
1389 : the following should work in any shell
1390 case "$contains" in
1391 contains*)
1392         echo " "
1393         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1394         cat >contains <<'EOSS'
1395 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1396 EOSS
1397 chmod +x contains
1398 esac
1399
1400 : Find the path to the source tree
1401 case "$src" in
1402 '') case "$0" in
1403     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1404          case "$src" in
1405          /*)    ;;
1406          *)     src=`cd ../$src && pwd` ;;
1407          esac
1408          ;;
1409     *)   src='.';;
1410     esac;;
1411 esac
1412 case "$src" in
1413 '')     src=/
1414         rsrc=/
1415         ;;
1416 /*) rsrc="$src";;
1417 *) rsrc="../$src";;
1418 esac
1419 if test -f $rsrc/Configure && \
1420         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1421 then
1422    : found it, so we are ok.
1423 else
1424         rsrc=''
1425         for src in . .. ../.. ../../.. ../../../..; do
1426                 if test -f ../$src/Configure && \
1427                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1428                 then
1429                         rsrc=../$src
1430                         break
1431                 fi
1432         done
1433 fi
1434 case "$rsrc" in
1435 '')
1436         cat <<EOM >&4
1437
1438 Sorry, I can't seem to locate the source dir for $package.  Please start
1439 Configure with an explicit path -- i.e. /some/path/Configure.
1440
1441 EOM
1442         exit 1
1443         ;;
1444 ../.)   rsrc='..';;
1445 *)
1446         echo " "
1447         echo "Sources for $package found in \"$src\"." >&4
1448         ;;
1449 esac
1450
1451 : script used to extract .SH files with variable substitutions
1452 cat >extract <<'EOS'
1453 CONFIGDOTSH=true
1454 echo "Doing variable substitutions on .SH files..."
1455 if test -f $src/MANIFEST; then
1456         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1457 else
1458         echo "(Looking for .SH files under the source directory.)"
1459         set x `(cd $src; find . -name "*.SH" -print)`
1460 fi
1461 shift
1462 case $# in
1463 0) set x `(cd $src; echo *.SH)`; shift;;
1464 esac
1465 if test ! -f $src/$1; then
1466         shift
1467 fi
1468 mkdir_p='
1469 name=$1;
1470 create="";
1471 while test $name; do
1472         if test ! -d "$name"; then
1473                 create="$name $create";
1474                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1475                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1476         else
1477                 name="";
1478         fi;
1479 done;
1480 for file in $create; do
1481         mkdir $file;
1482 done
1483 '
1484 for file in $*; do
1485         case "$src" in
1486         ".")
1487                 case "$file" in
1488                 */*)
1489                         dir=`expr X$file : 'X\(.*\)/'`
1490                         file=`expr X$file : 'X.*/\(.*\)'`
1491                         (cd $dir && . ./$file)
1492                         ;;
1493                 *)
1494                         . ./$file
1495                         ;;
1496                 esac
1497                 ;;
1498         *)
1499                 case "$file" in
1500                 */*)
1501                         dir=`expr X$file : 'X\(.*\)/'`
1502                         file=`expr X$file : 'X.*/\(.*\)'`
1503                         (set x $dir; shift; eval $mkdir_p)
1504                         sh <$src/$dir/$file
1505                         ;;
1506                 *)
1507                         sh <$src/$file
1508                         ;;
1509                 esac
1510                 ;;
1511         esac
1512 done
1513 if test -f $src/config_h.SH; then
1514         if test ! -f config.h; then
1515         : oops, they left it out of MANIFEST, probably, so do it anyway.
1516         . $src/config_h.SH
1517         fi
1518 fi
1519 EOS
1520
1521 : extract files and exit if asked to do so
1522 case "$extractsh" in
1523 true)
1524         case "$realsilent" in
1525         true) ;;
1526         *) exec 1>&4;;
1527         esac
1528         case "$config_sh" in
1529         '') config_sh='config.sh';;
1530         esac
1531         echo " "
1532         echo "Fetching answers from $config_sh..."
1533         cd ..
1534         . $config_sh
1535         test "$override" && . ./optdef.sh
1536         echo " "
1537         . UU/extract
1538         rm -rf UU
1539         echo "Done."
1540         exit 0
1541         ;;
1542 esac
1543
1544 : Eunice requires " " instead of "", can you believe it
1545 echo " "
1546 : Here we go...
1547 echo "Beginning of configuration questions for $package."
1548
1549 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1550
1551 : first determine how to suppress newline on echo command
1552 echo " "
1553 echo "Checking echo to see how to suppress newlines..."
1554 (echo "hi there\c" ; echo " ") >.echotmp
1555 if $contains c .echotmp >/dev/null 2>&1 ; then
1556         echo "...using -n."
1557         n='-n'
1558         c=''
1559 else
1560         cat <<'EOM'
1561 ...using \c
1562 EOM
1563         n=''
1564         c='\c'
1565 fi
1566 echo $n "The star should be here-->$c"
1567 echo '*'
1568 rm -f .echotmp
1569
1570 : Now test for existence of everything in MANIFEST
1571 echo " "
1572 if test -f $rsrc/MANIFEST; then
1573         echo "First let's make sure your kit is complete.  Checking..." >&4
1574         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1575         rm -f missing
1576         tmppwd=`pwd`
1577         for filelist in x??; do
1578                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1579         done
1580         if test -s missing; then
1581                 cat missing >&4
1582                 cat >&4 <<'EOM'
1583
1584 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1585
1586 You have the option of continuing the configuration process, despite the
1587 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1588 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1589 and contact the author (perlbug@perl.com).
1590
1591 EOM
1592                 echo $n "Continue? [n] $c" >&4
1593                 read ans
1594                 case "$ans" in
1595                 y*)
1596                         echo "Continuing..." >&4
1597                         rm -f missing
1598                         ;;
1599                 *)
1600                         echo "ABORTING..." >&4
1601                         kill $$
1602                         ;;
1603                 esac
1604         else
1605                 echo "Looks good..."
1606         fi
1607 else
1608         echo "There is no MANIFEST file.  I hope your kit is complete !"
1609 fi
1610 rm -f missing x??
1611
1612 echo " "
1613 : Find the appropriate value for a newline for tr
1614 if test -n "$DJGPP"; then
1615        trnl='\012'
1616 fi
1617 if test X"$trnl" = X; then
1618         case "`echo foo|tr '\n' x 2>/dev/null`" in
1619         foox) trnl='\n' ;;
1620         esac
1621 fi
1622 if test X"$trnl" = X; then
1623         case "`echo foo|tr '\012' x 2>/dev/null`" in
1624         foox) trnl='\012' ;;
1625         esac
1626 fi
1627 if test X"$trnl" = X; then
1628         cat <<EOM >&2
1629
1630 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1631
1632 EOM
1633         exit 1
1634 fi
1635
1636 : compute the number of columns on the terminal for proper question formatting
1637 case "$COLUMNS" in
1638 '') COLUMNS='80';;
1639 esac
1640
1641 : set up the echo used in my read
1642 myecho="case \"\$xxxm\" in
1643 '') echo $n \"\$rp $c\" >&4;;
1644 *) case \"\$rp\" in
1645         '') echo $n \"[\$xxxm] $c\";;
1646         *)
1647                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1648                         echo \"\$rp\" >&4
1649                         echo $n \"[\$xxxm] $c\" >&4
1650                 else
1651                         echo $n \"\$rp [\$xxxm] $c\" >&4
1652                 fi
1653                 ;;
1654         esac;;
1655 esac"
1656
1657 : now set up to do reads with possible shell escape and default assignment
1658 cat <<EOSC >myread
1659 $startsh
1660 xxxm=\$dflt
1661 $myecho
1662 ans='!'
1663 case "\$fastread" in
1664 yes) case "\$dflt" in
1665         '') ;;
1666         *) ans='';
1667                 case "\$silent-\$rp" in
1668                 true-) ;;
1669                 *) echo " " >&4;;
1670                 esac;;
1671         esac;;
1672 *) case "\$silent" in
1673         true) case "\$rp" in
1674                 '') ans='';;
1675                 esac;;
1676         esac;;
1677 esac
1678 while expr "X\$ans" : "X!" >/dev/null; do
1679         read answ
1680         set x \$xxxm
1681         shift
1682         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1683         case  "\$answ" in
1684         "!")
1685                 sh 1>&4
1686                 echo " "
1687                 $myecho
1688                 ;;
1689         !*)
1690                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1691                 shift
1692                 sh 1>&4 -c "\$*"
1693                 echo " "
1694                 $myecho
1695                 ;;
1696         "\$ans")
1697                 case "\$ans" in
1698                 \\&*)
1699                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1700                         shift
1701                         case "\$1" in
1702                         -d)
1703                                 fastread=yes
1704                                 echo "(OK, I'll run with -d after this question.)" >&4
1705                                 ;;
1706                         -*)
1707                                 echo "*** Sorry, \$1 not supported yet." >&4
1708                                 ;;
1709                         esac
1710                         $myecho
1711                         ans=!
1712                         ;;
1713                 esac;;
1714         *)
1715                 case "\$aok" in
1716                 y)
1717                         echo "*** Substitution done -- please confirm."
1718                         xxxm="\$ans"
1719                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1720                         xxxm="\$ans"
1721                         ans=!
1722                         ;;
1723                 *)
1724                         echo "*** Error -- try again."
1725                         ans=!
1726                         ;;
1727                 esac
1728                 $myecho
1729                 ;;
1730         esac
1731         case "\$ans\$xxxm\$nostick" in
1732         '')
1733                 ans=!
1734                 $myecho
1735                 ;;
1736         esac
1737 done
1738 case "\$ans" in
1739 '') ans="\$xxxm";;
1740 esac
1741 EOSC
1742
1743 : create .config dir to save info across Configure sessions
1744 test -d ../.config || mkdir ../.config
1745 cat >../.config/README <<EOF
1746 This directory created by Configure to save information that should
1747 persist across sessions for $package.
1748
1749 You may safely delete it if you wish.
1750 EOF
1751
1752 : general instructions
1753 needman=true
1754 firsttime=true
1755 user=`(logname) 2>/dev/null`
1756 case "$user" in
1757 '') user=`whoami 2>&1`;;
1758 esac
1759 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1760         firsttime=false
1761         echo " "
1762         rp='Would you like to see the instructions?'
1763         dflt=n
1764         . ./myread
1765         case "$ans" in
1766         [yY]*) ;;
1767         *) needman=false;;
1768         esac
1769 fi
1770 if $needman; then
1771         cat <<EOH
1772
1773 This installation shell script will examine your system and ask you questions
1774 to determine how the perl5 package should be installed. If you get
1775 stuck on a question, you may use a ! shell escape to start a subshell or
1776 execute a command.  Many of the questions will have default answers in square
1777 brackets; typing carriage return will give you the default.
1778
1779 On some of the questions which ask for file or directory names you are allowed
1780 to use the ~name construct to specify the login directory belonging to "name",
1781 even if you don't have a shell which knows about that.  Questions where this is
1782 allowed will be marked "(~name ok)".
1783
1784 EOH
1785         rp=''
1786         dflt='Type carriage return to continue'
1787         . ./myread
1788         cat <<'EOH'
1789
1790 The prompter used in this script allows you to use shell variables and
1791 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1792 in the default answer, as if the default line was a set of arguments given to a
1793 script shell.  This means you may also use $* to repeat the whole default line,
1794 so you do not have to re-type everything to add something to the default.
1795
1796 Everytime there is a substitution, you will have to confirm.  If there is an
1797 error (e.g. an unmatched backtick), the default answer will remain unchanged
1798 and you will be prompted again.
1799
1800 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1801 the questions and use the computed defaults (or the previous answers if there
1802 was already a config.sh file). Type 'Configure -h' for a list of options.
1803 You may also start interactively and then answer '& -d' at any prompt to turn
1804 on the non-interactive behaviour for the remainder of the execution.
1805
1806 EOH
1807         . ./myread
1808         cat <<EOH
1809
1810 Much effort has been expended to ensure that this shell script will run on any
1811 Unix system.  If despite that it blows up on yours, your best bet is to edit
1812 Configure and run it again.  If you can't run Configure for some reason,
1813 you'll have to generate a config.sh file by hand.  Whatever problems you
1814 have, let me (perlbug@perl.com) know how I blew it.
1815
1816 This installation script affects things in two ways:
1817
1818 1) it may do direct variable substitutions on some of the files included
1819    in this kit.
1820 2) it builds a config.h file for inclusion in C programs.  You may edit
1821    any of these files as the need arises after running this script.
1822
1823 If you make a mistake on a question, there is no easy way to back up to it
1824 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1825 files.  Configure will offer to let you do this before it runs the SH files.
1826
1827 EOH
1828         dflt='Type carriage return to continue'
1829         . ./myread
1830         case "$firsttime" in
1831         true) echo $user >>../.config/instruct;;
1832         esac
1833 fi
1834
1835 : find out where common programs are
1836 echo " "
1837 echo "Locating common programs..." >&4
1838 cat <<EOSC >loc
1839 $startsh
1840 case \$# in
1841 0) exit 1;;
1842 esac
1843 thing=\$1
1844 shift
1845 dflt=\$1
1846 shift
1847 for dir in \$*; do
1848         case "\$thing" in
1849         .)
1850         if test -d \$dir/\$thing; then
1851                 echo \$dir
1852                 exit 0
1853         fi
1854         ;;
1855         *)
1856         for thisthing in \$dir/\$thing; do
1857                 : just loop through to pick last item
1858         done
1859         if test -f \$thisthing; then
1860                 echo \$thisthing
1861                 exit 0
1862         elif test -f \$dir/\$thing.exe; then
1863                 if test -n "$DJGPP"; then
1864                         echo \$dir/\$thing.exe
1865                 else
1866                         : on Eunice apparently
1867                         echo \$dir/\$thing
1868                 fi
1869                 exit 0
1870         fi
1871         ;;
1872         esac
1873 done
1874 echo \$dflt
1875 exit 1
1876 EOSC
1877 chmod +x loc
1878 $eunicefix loc
1879 loclist="
1880 awk
1881 cat
1882 comm
1883 cp
1884 echo
1885 expr
1886 grep
1887 ls
1888 make
1889 mkdir
1890 rm
1891 sed
1892 sort
1893 touch
1894 tr
1895 uniq
1896 "
1897 trylist="
1898 Mcc
1899 ar
1900 byacc
1901 cpp
1902 csh
1903 date
1904 egrep
1905 gzip
1906 less
1907 ln
1908 more
1909 nm
1910 nroff
1911 pg
1912 test
1913 uname
1914 zip
1915 "
1916 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1917 pth="$pth /lib /usr/lib"
1918 for file in $loclist; do
1919         eval xxx=\$$file
1920         case "$xxx" in
1921         /*|?:[\\/]*)
1922                 if test -f "$xxx"; then
1923                         : ok
1924                 else
1925                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1926                         xxx=`./loc $file $file $pth`
1927                 fi
1928                 ;;
1929         '') xxx=`./loc $file $file $pth`;;
1930         *) xxx=`./loc $xxx $xxx $pth`;;
1931         esac
1932         eval $file=$xxx
1933         eval _$file=$xxx
1934         case "$xxx" in
1935         /*)
1936                 echo $file is in $xxx.
1937                 ;;
1938         ?:[\\/]*)
1939                 echo $file is in $xxx.
1940                 ;;
1941         *)
1942                 echo "I don't know where '$file' is, and my life depends on it." >&4
1943                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1944                 exit 1
1945                 ;;
1946         esac
1947 done
1948 echo " "
1949 echo "Don't worry if any of the following aren't found..."
1950 say=offhand
1951 for file in $trylist; do
1952         eval xxx=\$$file
1953         case "$xxx" in
1954         /*|?:[\\/]*)
1955                 if test -f "$xxx"; then
1956                         : ok
1957                 else
1958                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1959                         xxx=`./loc $file $file $pth`
1960                 fi
1961                 ;;
1962         '') xxx=`./loc $file $file $pth`;;
1963         *) xxx=`./loc $xxx $xxx $pth`;;
1964         esac
1965         eval $file=$xxx
1966         eval _$file=$xxx
1967         case "$xxx" in
1968         /*)
1969                 echo $file is in $xxx.
1970                 ;;
1971         ?:[\\/]*)
1972                 echo $file is in $xxx.
1973                 ;;
1974         *)
1975                 echo "I don't see $file out there, $say."
1976                 say=either
1977                 ;;
1978         esac
1979 done
1980 case "$egrep" in
1981 egrep)
1982         echo "Substituting grep for egrep."
1983         egrep=$grep
1984         ;;
1985 esac
1986 case "$ln" in
1987 ln)
1988         echo "Substituting cp for ln."
1989         ln=$cp
1990         ;;
1991 esac
1992 case "$test" in
1993 test)
1994         echo "Hopefully test is built into your sh."
1995         ;;
1996 *)
1997         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1998                 echo "Using the test built into your sh."
1999                 test=test
2000                 _test=test
2001         fi
2002         ;;
2003 esac
2004 case "$echo" in
2005 echo)
2006         echo "Hopefully echo is built into your sh."
2007         ;;
2008 '') ;;
2009 *)
2010         echo " "
2011 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2012         $echo $n "hi there$c" >foo1
2013         echo $n "hi there$c" >foo2
2014         if cmp foo1 foo2 >/dev/null 2>&1; then
2015                 echo "They are compatible.  In fact, they may be identical."
2016         else
2017                 case "$n" in
2018                 '-n') n='' c='\c';;
2019                 *) n='-n' c='';;
2020                 esac
2021                 cat <<FOO
2022 They are not compatible!  You are probably running ksh on a non-USG system.
2023 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2024 have echo built in and we may have to run some Bourne shell scripts.  That
2025 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2026
2027 FOO
2028                 $echo $n "The star should be here-->$c"
2029                 $echo "*"
2030         fi
2031         $rm -f foo1 foo2
2032         ;;
2033 esac
2034
2035 cat <<EOS >checkcc
2036 $startsh
2037 EOS
2038 cat <<'EOSC' >>checkcc
2039 case "$cc" in
2040 '') ;;
2041 *)  $rm -f try try.*
2042     $cat >try.c <<EOM
2043 int main(int argc, char *argv[]) {
2044   return 0;
2045 }
2046 EOM
2047     if $cc -o try try.c; then
2048        :
2049     else
2050         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2051         despair=yes
2052         trygcc=yes
2053         case "$cc" in
2054         *gcc*) trygcc=no ;;
2055         esac
2056         case "`$cc -v -c try.c 2>&1`" in
2057         *gcc*) trygcc=no ;;
2058         esac
2059         if $test X"$trygcc" = Xyes; then
2060             if gcc -o try -c try.c; then
2061                 echo " "
2062                 echo "You seem to have a working gcc, though." >&4
2063                 rp="Would you like to use it?"
2064                 dflt=y
2065                 if $test -f myread; then
2066                     . ./myread
2067                 else
2068                     if $test -f UU/myread; then
2069                         . ./UU/myread
2070                     else
2071                         echo "Cannot find myread, sorry.  Aborting." >&2
2072                         exit 1
2073                     fi
2074                 fi  
2075                 case "$ans" in
2076                 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2077                 esac
2078             fi
2079         fi
2080         if $test X"$despair" = Xyes; then
2081             echo "You need to find a working C compiler." >&4
2082             echo "I cannot continue any further, aborting." >&4
2083             exit 1
2084         fi
2085     fi
2086     $rm -f try try.*
2087     ;;
2088 esac
2089 EOSC
2090
2091 : determine whether symbolic links are supported
2092 echo " "
2093 $touch blurfl
2094 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2095         echo "Symbolic links are supported." >&4
2096         lns="$ln -s"
2097 else
2098         echo "Symbolic links are NOT supported." >&4
2099         lns="$ln"
2100 fi
2101 $rm -f blurfl sym
2102
2103 : see whether [:lower:] and [:upper:] are supported character classes
2104 echo " "
2105 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2106 ABYZ)
2107         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2108         up='[:upper:]'
2109         low='[:lower:]'
2110         ;;
2111 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2112         # (0xc9 and 0xd1), therefore that is a nice testing point.
2113         if test "X$up" = X -o "X$low" = X; then
2114             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2115             ij) up='[A-Z]'
2116                 low='[a-z]'
2117                 ;;
2118             esac
2119         fi
2120         if test "X$up" = X -o "X$low" = X; then
2121             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2122             ij) up='A-Z'
2123                 low='a-z'
2124                 ;;
2125             esac
2126         fi
2127         if test "X$up" = X -o "X$low" = X; then
2128             case "`echo IJ | od -x 2>/dev/null`" in
2129             *C9D1*|*c9d1*)
2130                 echo "Hey, this might be EBCDIC." >&4
2131                 if test "X$up" = X -o "X$low" = X; then
2132                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2133                     ij) up='[A-IJ-RS-Z]'
2134                         low='[a-ij-rs-z]'
2135                         ;;
2136                     esac
2137                 fi
2138                 if test "X$up" = X -o "X$low" = X; then
2139                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2140                     ij) up='A-IJ-RS-Z'
2141                         low='a-ij-rs-z'
2142                         ;;
2143                     esac
2144                 fi
2145                 ;;
2146             esac
2147         fi
2148 esac
2149 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2150 ij)
2151     echo "Using $up and $low to convert case." >&4
2152     ;;
2153 *)
2154     echo "I don't know how to translate letters from upper to lower case." >&4
2155     echo "Your tr is not acting any way I know of." >&4
2156     exit 1
2157     ;;
2158 esac
2159 : set up the translation script tr, must be called with ./tr of course
2160 cat >tr <<EOSC
2161 $startsh
2162 case "\$1\$2" in
2163 '[A-Z][a-z]') exec $tr '$up' '$low';;
2164 '[a-z][A-Z]') exec $tr '$low' '$up';;
2165 esac
2166 exec $tr "\$@"
2167 EOSC
2168 chmod +x tr
2169 $eunicefix tr
2170
2171 : Try to determine whether config.sh was made on this system
2172 case "$config_sh" in
2173 '')
2174 myuname=`$uname -a 2>/dev/null`
2175 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2176 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2177 # because the A-Z/a-z are not consecutive.
2178 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2179         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2180 newmyuname="$myuname"
2181 dflt=n
2182 case "$knowitall" in
2183 '')
2184         if test -f ../config.sh; then
2185                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2186                         eval "`grep myuname= ../config.sh`"
2187                 fi
2188                 if test "X$myuname" = "X$newmyuname"; then
2189                         dflt=y
2190                 fi
2191         fi
2192         ;;
2193 *) dflt=y;;
2194 esac
2195
2196 : Get old answers from old config file if Configure was run on the
2197 : same system, otherwise use the hints.
2198 hint=default
2199 cd ..
2200 if test -f config.sh; then
2201         echo " "
2202         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2203         . UU/myread
2204         case "$ans" in
2205         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2206         *)  echo "Fetching default answers from your old config.sh file..." >&4
2207                 tmp_n="$n"
2208                 tmp_c="$c"
2209                 tmp_sh="$sh"
2210                 . ./config.sh
2211                 cp config.sh UU
2212                 n="$tmp_n"
2213                 c="$tmp_c"
2214                 : Older versions did not always set $sh.  Catch re-use of such
2215                 : an old config.sh.
2216                 case "$sh" in
2217                 '') sh="$tmp_sh" ;;
2218                 esac
2219                 hint=previous
2220                 ;;
2221         esac
2222 fi
2223 . ./UU/checkcc
2224 if test ! -f config.sh; then
2225         $cat <<EOM
2226
2227 First time through, eh?  I have some defaults handy for some systems
2228 that need some extra help getting the Configure answers right:
2229
2230 EOM
2231         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2232         dflt=''
2233         : Half the following guesses are probably wrong... If you have better
2234         : tests or hints, please send them to perlbug@perl.com
2235         : The metaconfig authors would also appreciate a copy...
2236         $test -f /irix && osname=irix
2237         $test -f /xenix && osname=sco_xenix
2238         $test -f /dynix && osname=dynix
2239         $test -f /dnix && osname=dnix
2240         $test -f /lynx.os && osname=lynxos
2241         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2242         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2243         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2244         $test -f /bin/mips && /bin/mips && osname=mips
2245         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2246                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2247         $test -d /usr/apollo/bin && osname=apollo
2248         $test -f /etc/saf/_sactab && osname=svr4
2249         $test -d /usr/include/minix && osname=minix
2250         if $test -d /MachTen -o -d /MachTen_Folder; then
2251                 osname=machten
2252                 if $test -x /sbin/version; then
2253                         osvers=`/sbin/version | $awk '{print $2}' |
2254                         $sed -e 's/[A-Za-z]$//'`
2255                 elif $test -x /usr/etc/version; then
2256                         osvers=`/usr/etc/version | $awk '{print $2}' |
2257                         $sed -e 's/[A-Za-z]$//'`
2258                 else
2259                         osvers="$2.$3"
2260                 fi
2261         fi
2262
2263         $test -f /sys/posix.dll &&
2264                 $test -f /usr/bin/what &&
2265                 set X `/usr/bin/what /sys/posix.dll` &&
2266                 $test "$3" = UWIN &&
2267                 osname=uwin &&
2268                 osvers="$5"
2269
2270         if $test -f $uname; then
2271                 set X $myuname
2272                 shift
2273
2274                 case "$5" in
2275                 fps*) osname=fps ;;
2276                 mips*)
2277                         case "$4" in
2278                         umips) osname=umips ;;
2279                         *) osname=mips ;;
2280                         esac;;
2281                 [23]100) osname=mips ;;
2282                 next*) osname=next ;;
2283                 i386*)
2284                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2285                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2286                                 osname='sco'
2287                                 osvers=$tmp
2288                         elif $test -f /etc/kconfig; then
2289                                 osname=isc
2290                                 if test "$lns" = "$ln -s"; then
2291                                         osvers=4
2292                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2293                                         osvers=3
2294                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2295                                         osvers=2
2296                                 fi
2297                         fi
2298                         tmp=''
2299                         ;;
2300                 pc*)
2301                         if test -n "$DJGPP"; then
2302                                 osname=dos
2303                                 osvers=djgpp
2304                         fi
2305                         ;;
2306                 esac
2307
2308                 case "$1" in
2309                 aix) osname=aix
2310                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2311                         case "$tmp" in
2312                         'not found') osvers="$4"."$3" ;;
2313                         '<3240'|'<>3240') osvers=3.2.0 ;;
2314                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2315                         '=3250'|'>3250') osvers=3.2.5 ;;
2316                         *) osvers=$tmp;;
2317                         esac
2318                         ;;
2319                 bsd386) osname=bsd386
2320                         osvers=`$uname -r`
2321                         ;;
2322                 cygwin*) osname=cygwin
2323                         osvers="$3"
2324                         ;;
2325                 *dc.osx) osname=dcosx
2326                         osvers="$3"
2327                         ;;
2328                 dnix) osname=dnix
2329                         osvers="$3"
2330                         ;;
2331                 domainos) osname=apollo
2332                         osvers="$3"
2333                         ;;
2334                 dgux) osname=dgux 
2335                         osvers="$3"
2336                         ;;
2337                 dynixptx*) osname=dynixptx
2338                         osvers=`echo "$4"|sed 's/^v//'`
2339                         ;;
2340                 freebsd) osname=freebsd 
2341                         osvers="$3" ;;
2342                 genix) osname=genix ;;
2343                 hp*) osname=hpux 
2344                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2345                         ;;
2346                 irix*) osname=irix
2347                         case "$3" in
2348                         4*) osvers=4 ;;
2349                         5*) osvers=5 ;;
2350                         *)      osvers="$3" ;;
2351                         esac
2352                         ;;
2353                 linux) osname=linux
2354                         case "$3" in
2355                         *)      osvers="$3" ;;
2356                         esac
2357                         ;;
2358                 MiNT) osname=mint
2359                         ;;
2360                 netbsd*) osname=netbsd
2361                         osvers="$3"
2362                         ;;
2363                 news-os) osvers="$3"
2364                         case "$3" in
2365                         4*) osname=newsos4 ;;
2366                         *) osname=newsos ;;
2367                         esac
2368                         ;;
2369                 next*) osname=next ;;
2370                 POSIX-BC | posix-bc ) osname=posix-bc
2371                         osvers="$3"
2372                         ;;
2373                 powerux | power_ux | powermax_os | powermaxos | \
2374                 powerunix | power_unix) osname=powerux
2375                         osvers="$3"
2376                         ;;
2377                 qnx) osname=qnx
2378                         osvers="$4"
2379                         ;;
2380                 solaris) osname=solaris
2381                         case "$3" in
2382                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2383                         *)      osvers="$3" ;;
2384                         esac
2385                         ;;
2386                 sunos) osname=sunos
2387                         case "$3" in
2388                         5*) osname=solaris
2389                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2390                         *)      osvers="$3" ;;
2391                         esac
2392                         ;;
2393                 titanos) osname=titanos
2394                         case "$3" in
2395                         1*) osvers=1 ;;
2396                         2*) osvers=2 ;;
2397                         3*) osvers=3 ;;
2398                         4*) osvers=4 ;;
2399                         *)      osvers="$3" ;;
2400                         esac
2401                         ;;
2402                 ultrix) osname=ultrix
2403                         osvers="$3"
2404                         ;;
2405                 osf1|mls+)      case "$5" in
2406                                 alpha)
2407                                         osname=dec_osf
2408                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2409                                         ;;
2410                         hp*)    osname=hp_osf1  ;;
2411                         mips)   osname=mips_osf1 ;;
2412                         esac
2413                         ;;
2414                 unixware) osname=svr5
2415                         osvers="$4"
2416                         ;;
2417                 uts) osname=uts
2418                         osvers="$3"
2419                         ;;
2420                 $2) case "$osname" in
2421                         *isc*) ;;
2422                         *freebsd*) ;;
2423                         svr*)
2424                                 : svr4.x or possibly later
2425                                 case "svr$3" in 
2426                                 ${osname}*)
2427                                         osname=svr$3
2428                                         osvers=$4
2429                                         ;;
2430                                 esac
2431                                 case "$osname" in
2432                                 svr4.0)
2433                                         : Check for ESIX
2434                                         if test -f /stand/boot ; then
2435                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2436                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2437                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2438                                                         if test -n "$isesix"; then
2439                                                                 osname=esix4
2440                                                         fi
2441                                                 fi
2442                                         fi
2443                                         ;;
2444                                 esac
2445                                 ;;
2446                         *)      if test -f /etc/systemid; then
2447                                         osname=sco
2448                                         set `echo $3 | $sed 's/\./ /g'` $4
2449                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2450                                                 osvers=$1.$2.$3
2451                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2452                                                 osvers=$1.$2
2453                                         elif $test -f $src/hints/sco_$1.sh; then
2454                                                 osvers=$1
2455                                         fi
2456                                 else
2457                                         case "$osname" in
2458                                         '') : Still unknown.  Probably a generic Sys V.
2459                                                 osname="sysv"
2460                                                 osvers="$3"
2461                                                 ;;
2462                                         esac
2463                                 fi
2464                                 ;;
2465                         esac
2466                         ;;
2467                 *)      case "$osname" in
2468                         '') : Still unknown.  Probably a generic BSD.
2469                                 osname="$1"
2470                                 osvers="$3"
2471                                 ;;
2472                         esac
2473                         ;;
2474                 esac
2475         else
2476                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2477                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2478                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2479                                 osname=news_os
2480                         fi
2481                         $rm -f UU/kernel.what
2482                 elif test -d c:/.; then
2483                         set X $myuname
2484                         osname=os2
2485                         osvers="$5"
2486                 fi
2487         fi
2488         
2489         : Now look for a hint file osname_osvers, unless one has been
2490         : specified already.
2491         case "$hintfile" in
2492         ''|' ')
2493                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2494                 : Also try without trailing minor version numbers.
2495                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2496                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2497                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2498                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2499                 case "$file" in
2500                 '') dflt=none ;;
2501                 *)  case "$osvers" in
2502                         '') dflt=$file
2503                                 ;;
2504                         *)  if $test -f $src/hints/$file.sh ; then
2505                                         dflt=$file
2506                                 elif $test -f $src/hints/$xfile.sh ; then
2507                                         dflt=$xfile
2508                                 elif $test -f $src/hints/$xxfile.sh ; then
2509                                         dflt=$xxfile
2510                                 elif $test -f $src/hints/$xxxfile.sh ; then
2511                                         dflt=$xxxfile
2512                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2513                                         dflt=$xxxxfile
2514                                 elif $test -f "$src/hints/${osname}.sh" ; then
2515                                         dflt="${osname}"
2516                                 else
2517                                         dflt=none
2518                                 fi
2519                                 ;;
2520                         esac
2521                         ;;
2522                 esac
2523                 if $test -f Policy.sh ; then
2524                         case "$dflt" in
2525                         *Policy*) ;;
2526                         none) dflt="Policy" ;;
2527                         *) dflt="Policy $dflt" ;;
2528                         esac
2529                 fi
2530                 ;;
2531         *)
2532                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2533                 ;;
2534         esac
2535
2536         if $test -f Policy.sh ; then
2537                 $cat <<EOM
2538
2539 There's also a Policy hint file available, which should make the
2540 site-specific (policy) questions easier to answer.
2541 EOM
2542
2543         fi
2544
2545         $cat <<EOM
2546
2547 You may give one or more space-separated answers, or "none" if appropriate.
2548 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2549 is a good thing.  DO NOT give a wrong version or a wrong OS.
2550
2551 EOM
2552
2553         rp="Which of these apply, if any?"
2554         . UU/myread
2555         tans=$ans
2556         for file in $tans; do
2557                 if $test X$file = XPolicy -a -f Policy.sh; then
2558                         . Policy.sh
2559                         $cat Policy.sh >> UU/config.sh
2560                 elif $test -f $src/hints/$file.sh; then
2561                         . $src/hints/$file.sh
2562                         $cat $src/hints/$file.sh >> UU/config.sh
2563                 elif $test X$tans = X -o X$tans = Xnone ; then
2564                         : nothing
2565                 else
2566                         : Give one chance to correct a possible typo.
2567                         echo "$file.sh does not exist"
2568                         dflt=$file
2569                         rp="hint to use instead?"
2570                         . UU/myread
2571                         for file in $ans; do
2572                                 if $test -f "$src/hints/$file.sh"; then
2573                                         . $src/hints/$file.sh
2574                                         $cat $src/hints/$file.sh >> UU/config.sh
2575                                 elif $test X$ans = X -o X$ans = Xnone ; then
2576                                         : nothing
2577                                 else
2578                                         echo "$file.sh does not exist -- ignored."
2579                                 fi
2580                         done
2581                 fi
2582         done
2583
2584         hint=recommended
2585         : Remember our hint file for later.
2586         if $test -f "$src/hints/$file.sh" ; then
2587                 hintfile="$file"
2588         else
2589                 hintfile=''
2590         fi
2591 fi
2592 cd UU
2593 ;;
2594 *)
2595         echo " "
2596         echo "Fetching default answers from $config_sh..." >&4
2597         tmp_n="$n"
2598         tmp_c="$c"
2599         cd ..
2600         cp $config_sh config.sh 2>/dev/null
2601         chmod +w config.sh
2602         . ./config.sh
2603         cd UU
2604         cp ../config.sh .
2605         n="$tmp_n"
2606         c="$tmp_c"
2607         hint=previous
2608         ;;
2609 esac
2610 test "$override" && . ./optdef.sh
2611 myuname="$newmyuname"
2612
2613 : Restore computed paths
2614 for file in $loclist $trylist; do
2615         eval $file="\$_$file"
2616 done
2617
2618 cat << EOM
2619
2620 Configure uses the operating system name and version to set some defaults.
2621 The default value is probably right if the name rings a bell. Otherwise,
2622 since spelling matters for me, either accept the default or answer "none"
2623 to leave it blank.
2624
2625 EOM
2626 case "$osname" in
2627         ''|' ')
2628                 case "$hintfile" in
2629                 ''|' '|none) dflt=none ;;
2630                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2631                 esac
2632                 ;;
2633         *) dflt="$osname" ;;
2634 esac
2635 rp="Operating system name?"
2636 . ./myread
2637 case "$ans" in
2638 none)  osname='' ;;
2639 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2640 esac
2641 echo " "
2642 case "$osvers" in
2643         ''|' ')
2644                 case "$hintfile" in
2645                 ''|' '|none) dflt=none ;;
2646                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2647                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2648                         case "$dflt" in
2649                         ''|' ') dflt=none ;;
2650                         esac
2651                         ;;
2652                 esac
2653                 ;;
2654         *) dflt="$osvers" ;;
2655 esac
2656 rp="Operating system version?"
2657 . ./myread
2658 case "$ans" in
2659 none)  osvers='' ;;
2660 *) osvers="$ans" ;;
2661 esac
2662
2663
2664 . ./posthint.sh
2665
2666 : who configured the system
2667 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2668 cf_by=`(logname) 2>/dev/null`
2669 case "$cf_by" in
2670 "")
2671         cf_by=`(whoami) 2>/dev/null`
2672         case "$cf_by" in
2673         "") cf_by=unknown ;;
2674         esac ;;
2675 esac
2676
2677 : set up the script used to warn in case of inconsistency
2678 cat <<EOS >whoa
2679 $startsh
2680 EOS
2681 cat <<'EOSC' >>whoa
2682 dflt=y
2683 echo " "
2684 echo "*** WHOA THERE!!! ***" >&4
2685 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2686 rp="    Keep the $hint value?"
2687 . ./myread
2688 case "$ans" in
2689 y) td=$was; tu=$was;;
2690 esac
2691 EOSC
2692
2693 : function used to set $1 to $val
2694 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2695 case "$val$was" in
2696 $define$undef) . ./whoa; eval "$var=\$td";;
2697 $undef$define) . ./whoa; eval "$var=\$tu";;
2698 *) eval "$var=$val";;
2699 esac'
2700
2701 case "$usethreads" in
2702 $define|true|[yY]*)     dflt='y';;
2703 *) dflt='n';;
2704 esac
2705 cat <<EOM
2706
2707 Perl can be built to take advantage of threads on some systems.
2708 To do so, Configure can be run with -Dusethreads.
2709
2710 Note that threading is a highly experimental feature, and
2711 some known race conditions still remain.  If you choose to try
2712 it, be very sure to not actually deploy it for production
2713 purposes.  README.threads has more details, and is required
2714 reading if you enable threads.
2715
2716 If this doesn't make any sense to you, just accept the default '$dflt'.
2717 EOM
2718 rp='Build a threading Perl?'
2719 . ./myread
2720 case "$ans" in
2721 y|Y)    val="$define" ;;
2722 *)      val="$undef" ;;
2723 esac
2724 set usethreads
2725 eval $setvar
2726
2727 case "$usethreads" in
2728 $define)
2729         $cat <<EOM
2730
2731 As of 5.5.640, Perl has two different internal threading implementations,
2732 the 5.005 version (5005threads) and an interpreter-based version
2733 (ithreads) that has one interpreter per thread.  Both are very 
2734 experimental.  This arrangement exists to help developers work out
2735 which one is better.
2736
2737 If you're a casual user, you probably don't want interpreter-threads
2738 at this time.  There doesn't yet exist a way to create threads from
2739 within Perl in this model, i.e., "use Thread;" will NOT work.
2740 EOM
2741         : Default to ithreads unless overridden on command line or with
2742         : old config.sh
2743         dflt='y'
2744         case "$use5005threads" in
2745                 $define|true|[yY]*) dflt='n';;
2746         esac
2747         case "$useithreads" in
2748                 $undef|false|[nN]*) dflt='n';;
2749         esac
2750         rp='Use interpreter-based ithreads?'
2751         . ./myread
2752         case "$ans" in
2753         y|Y)    val="$define" ;;
2754         *)      val="$undef" ;;
2755         esac
2756         set useithreads
2757         eval $setvar
2758         : Now set use5005threads to the opposite value.
2759         case "$useithreads" in
2760         $define) val="$undef" ;;
2761         *) val="$define" ;;
2762         esac
2763         set use5005threads
2764         eval $setvar
2765         ;;
2766 *)
2767         useithreads="$undef"
2768         use5005threads="$undef"
2769         ;;
2770 esac
2771
2772 case "$d_oldpthreads" in
2773 '')     : Configure tests would be welcome here.  For now, assume undef.
2774         val="$undef" ;;
2775 *)      val="$d_oldpthreads" ;;
2776 esac
2777 set d_oldpthreads
2778 eval $setvar
2779
2780
2781 case "$usethreads" in
2782 "$define"|true|[yY]*)
2783 : Look for a hint-file generated 'call-back-unit'.  If the
2784 : user has specified that a threading perl is to be built,
2785 : we may need to set or change some other defaults.
2786         if $test -f usethreads.cbu; then
2787                 echo "Your platform has some specific hints for threaded builds, using them..."
2788                 . ./usethreads.cbu
2789         else
2790                 $cat <<EOM
2791 (Your platform doesn't have any specific hints for threaded builds.
2792  Assuming POSIX threads, then.)
2793 EOM
2794         fi
2795         ;;
2796 esac
2797
2798 cat <<EOM
2799
2800 Perl can be built so that multiple Perl interpreters can coexist
2801 within the same Perl executable.
2802 EOM
2803
2804 case "$useithreads" in
2805 $define)
2806         cat <<EOM
2807 This multiple interpreter support is required for interpreter-based threads.
2808 EOM
2809         val="$define"
2810         ;;
2811 *)      case "$usemultiplicity" in
2812         $define|true|[yY]*)     dflt='y';;
2813         *) dflt='n';;
2814         esac
2815         echo " "
2816         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2817         rp='Build Perl for multiplicity?'
2818         . ./myread
2819         case "$ans" in
2820         y|Y)    val="$define" ;;
2821         *)      val="$undef" ;;
2822         esac
2823         ;;
2824 esac
2825 set usemultiplicity
2826 eval $setvar
2827
2828 : determine where manual pages are on this system
2829 echo " "
2830 case "$sysman" in
2831 '') 
2832         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2833         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2834         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2835         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2836         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2837         sysman=`./loc . /usr/man/man1 $syspath`
2838         ;;
2839 esac
2840 if $test -d "$sysman"; then
2841         echo "System manual is in $sysman." >&4
2842 else
2843         echo "Could not find manual pages in source form." >&4
2844 fi
2845
2846 : see what memory models we can support
2847 case "$models" in
2848 '')
2849         $cat >pdp11.c <<'EOP'
2850 int main() {
2851 #ifdef pdp11
2852         exit(0);
2853 #else
2854         exit(1);
2855 #endif
2856 }
2857 EOP
2858         case "$cc" in
2859         '') modelcc="$cc" ;;
2860         *) modelcc="cc" ;;
2861         esac
2862         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2863         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2864                 dflt='unsplit split'
2865         else
2866                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2867                 case "$tans" in
2868                 X) dflt='none';;
2869                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2870                                 dflt='small'
2871                         else
2872                                 dflt=''
2873                         fi
2874                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2875                                 dflt="$dflt medium"
2876                         fi
2877                         if $test -d /lib/large || $test -d /usr/lib/large; then
2878                                 dflt="$dflt large"
2879                         fi
2880                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2881                                 dflt="$dflt huge"
2882                         fi
2883                 esac
2884         fi;;
2885 *) dflt="$models";;
2886 esac
2887 $cat <<EOM
2888  
2889 Some systems have different model sizes.  On most systems they are called
2890 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2891 split.  If your system doesn't support different memory models, say "none".
2892 If you wish to force everything to one memory model, say "none" here and
2893 put the appropriate flags later when it asks you for other cc and ld flags.
2894 Venix systems may wish to put "none" and let the compiler figure things out.
2895 (In the following question multiple model names should be space separated.)
2896
2897 The default for most systems is "none".
2898
2899 EOM
2900 rp="Which memory models are supported?"
2901 . ./myread
2902 models="$ans"
2903
2904 case "$models" in
2905 none)
2906         small=''
2907         medium=''
2908         large=''
2909         huge=''
2910         unsplit=''
2911         split=''
2912         ;;
2913 *split)
2914         case "$split" in
2915         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2916                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2917                         dflt='-i'
2918                 else
2919                         dflt='none'
2920                 fi;;
2921         *) dflt="$split";;
2922         esac
2923         rp="What flag indicates separate I and D space?"
2924         . ./myread
2925         tans="$ans"
2926         case "$tans" in
2927         none) tans='';;
2928         esac
2929         split="$tans"
2930         unsplit='';;
2931 *large*|*small*|*medium*|*huge*)
2932         case "$models" in
2933         *large*)
2934                 case "$large" in
2935                 '') dflt='-Ml';;
2936                 *) dflt="$large";;
2937                 esac
2938         rp="What flag indicates large model?"
2939         . ./myread
2940         tans="$ans"
2941         case "$tans" in
2942         none) tans='';
2943         esac
2944         large="$tans";;
2945         *) large='';;
2946         esac
2947         case "$models" in
2948         *huge*) case "$huge" in
2949                 '') dflt='-Mh';;
2950                 *) dflt="$huge";;
2951                 esac
2952                 rp="What flag indicates huge model?"
2953                 . ./myread
2954                 tans="$ans"
2955                 case "$tans" in
2956                 none) tans='';
2957                 esac
2958                 huge="$tans";;
2959         *) huge="$large";;
2960         esac
2961         case "$models" in
2962         *medium*) case "$medium" in
2963                 '') dflt='-Mm';;
2964                 *) dflt="$medium";;
2965                 esac
2966                 rp="What flag indicates medium model?"
2967                 . ./myread
2968                 tans="$ans"
2969                 case "$tans" in
2970                 none) tans='';
2971                 esac
2972                 medium="$tans";;
2973         *) medium="$large";;
2974         esac
2975         case "$models" in
2976         *small*) case "$small" in
2977                 '') dflt='none';;
2978                 *) dflt="$small";;
2979                 esac
2980                 rp="What flag indicates small model?"
2981                 . ./myread
2982                 tans="$ans"
2983                 case "$tans" in
2984                 none) tans='';
2985                 esac
2986                 small="$tans";;
2987         *) small='';;
2988         esac
2989         ;;
2990 *)
2991         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2992         ;;
2993 esac
2994 $rm -f pdp11.* pdp11
2995
2996 : make some quick guesses about what we are up against
2997 echo " "
2998 $echo $n "Hmm...  $c"
2999 echo exit 1 >bsd
3000 echo exit 1 >usg
3001 echo exit 1 >v7
3002 echo exit 1 >osf1
3003 echo exit 1 >eunice
3004 echo exit 1 >xenix
3005 echo exit 1 >venix
3006 echo exit 1 >os2
3007 d_bsd="$undef"
3008 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3009 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3010 then
3011         echo "Looks kind of like an OSF/1 system, but we'll see..."
3012         echo exit 0 >osf1
3013 elif test `echo abc | tr a-z A-Z` = Abc ; then
3014         xxx=`./loc addbib blurfl $pth`
3015         if $test -f $xxx; then
3016         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3017                 echo exit 0 >bsd
3018                 echo exit 0 >usg
3019         else
3020                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3021                         echo "Looks kind of like an extended USG system, but we'll see..."
3022                 else
3023                         echo "Looks kind of like a USG system, but we'll see..."
3024                 fi
3025                 echo exit 0 >usg
3026         fi
3027 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3028         echo "Looks kind of like a BSD system, but we'll see..."
3029         d_bsd="$define"
3030         echo exit 0 >bsd
3031 else
3032         echo "Looks kind of like a Version 7 system, but we'll see..."
3033         echo exit 0 >v7
3034 fi
3035 case "$eunicefix" in
3036 *unixtovms*)
3037         $cat <<'EOI'
3038 There is, however, a strange, musty smell in the air that reminds me of
3039 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3040 EOI
3041         echo exit 0 >eunice
3042         d_eunice="$define"
3043 : it so happens the Eunice I know will not run shell scripts in Unix format
3044         ;;
3045 *)
3046         echo " "
3047         echo "Congratulations.  You aren't running Eunice."
3048         d_eunice="$undef"
3049         ;;
3050 esac
3051 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3052 case "$p_" in
3053 :) ;;
3054 *)
3055         $cat <<'EOI'
3056 I have the feeling something is not exactly right, however...don't tell me...
3057 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3058 EOI
3059         echo exit 0 >os2
3060         ;;
3061 esac
3062 if test -f /xenix; then
3063         echo "Actually, this looks more like a XENIX system..."
3064         echo exit 0 >xenix
3065         d_xenix="$define"
3066 else
3067         echo " "
3068         echo "It's not Xenix..."
3069         d_xenix="$undef"
3070 fi
3071 chmod +x xenix
3072 $eunicefix xenix
3073 if test -f /venix; then
3074         echo "Actually, this looks more like a VENIX system..."
3075         echo exit 0 >venix
3076 else
3077         echo " "
3078         if ./xenix; then
3079                 : null
3080         else
3081                 echo "Nor is it Venix..."
3082         fi
3083 fi
3084 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3085 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3086 $rm -f foo
3087
3088 : see if we need a special compiler
3089 echo " "
3090 if ./usg; then
3091         case "$cc" in
3092         '') case "$Mcc" in
3093                 /*) dflt='Mcc';;
3094                 *) case "$large" in
3095                         -M*) dflt='cc';;
3096                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3097                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3098                                                 dflt='cc'
3099                                         else
3100                                                 dflt='cc -M'
3101                                         fi
3102                                 else
3103                                         dflt='cc'
3104                                 fi;;
3105                         esac;;
3106                 esac;;
3107         *)  dflt="$cc";;
3108         esac
3109         case "$dflt" in
3110         *M*)    $cat <<'EOM'
3111 On some older systems the default C compiler will not resolve multiple global
3112 references that happen to have the same name.  On some such systems the "Mcc"
3113 command may be used to force these to be resolved.  On other systems a "cc -M"
3114 command is required.  (Note that the -M flag on other systems indicates a
3115 memory model to use!) If you have the Gnu C compiler, you might wish to use
3116 that instead.
3117
3118 EOM
3119         ;;
3120         esac
3121         rp="Use which C compiler?"
3122         . ./myread
3123         cc="$ans"
3124 else
3125         case "$cc" in
3126         '') dflt=cc;;
3127         *) dflt="$cc";;
3128         esac
3129         rp="Use which C compiler?"
3130         . ./myread
3131         cc="$ans"
3132 fi
3133 : Look for a hint-file generated 'call-back-unit'.  Now that the
3134 : user has specified the compiler, we may need to set or change some
3135 : other defaults.
3136 if $test -f cc.cbu; then
3137     . ./cc.cbu
3138 fi
3139 . ./checkcc
3140
3141 echo " "
3142 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3143 $cat >gccvers.c <<EOM
3144 #include <stdio.h>
3145 int main() {
3146 #ifdef __GNUC__
3147 #ifdef __VERSION__
3148         printf("%s\n", __VERSION__);
3149 #else
3150         printf("%s\n", "1");
3151 #endif
3152 #endif
3153         exit(0);
3154 }
3155 EOM
3156 if $cc $ldflags -o gccvers gccvers.c; then
3157         gccversion=`./gccvers`
3158         case "$gccversion" in
3159         '') echo "You are not using GNU cc." ;;
3160         *)  echo "You are using GNU cc $gccversion."
3161             ;;
3162         esac
3163 else
3164         echo " "
3165         echo "*** WHOA THERE!!! ***" >&4
3166         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3167         case "$knowitall" in
3168         '')
3169         echo "    You'd better start hunting for one and let me know about it." >&4
3170                 exit 1
3171                 ;;
3172         esac
3173 fi
3174 $rm -f gccvers*
3175 case "$gccversion" in
3176 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3177 esac
3178
3179 : see how we invoke the C preprocessor
3180 echo " "
3181 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3182 cat <<'EOT' >testcpp.c
3183 #define ABC abc
3184 #define XYZ xyz
3185 ABC.XYZ
3186 EOT
3187 cd ..
3188 if test ! -f cppstdin; then
3189         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3190                 # AIX cc -E doesn't show the absolute headerfile
3191                 # locations but we'll cheat by using the -M flag.
3192                 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
3193         else
3194                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3195         fi
3196 else
3197         echo "Keeping your $hint cppstdin wrapper."
3198 fi
3199 chmod 755 cppstdin
3200 wrapper=`pwd`/cppstdin
3201 ok='false'
3202 cd UU
3203
3204 if $test "X$cppstdin" != "X" && \
3205         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3206         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3207 then
3208         echo "You used to use $cppstdin $cppminus so we'll use that again."
3209         case "$cpprun" in
3210         '') echo "But let's see if we can live without a wrapper..." ;;
3211         *)
3212                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3213                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3214                 then
3215                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3216                         ok='true'
3217                 else
3218                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3219                 fi
3220                 ;;
3221         esac
3222 else
3223         case "$cppstdin" in
3224         '') ;;
3225         *)
3226                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3227                 ;;
3228         esac
3229 fi
3230
3231 if $ok; then
3232         : nothing
3233 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3234         $cc -E <testcpp.c >testcpp.out 2>&1; \
3235         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3236         echo "Yup, it does."
3237         x_cpp="$cc -E"
3238         x_minus='';
3239 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3240         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3241         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3242         echo "Yup, it does."
3243         x_cpp="$cc -E"
3244         x_minus='-';
3245 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3246         $cc -P <testcpp.c >testcpp.out 2>&1; \
3247         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3248         echo "Yipee, that works!"
3249         x_cpp="$cc -P"
3250         x_minus='';
3251 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3252         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3253         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3254         echo "At long last!"
3255         x_cpp="$cc -P"
3256         x_minus='-';
3257 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3258         $cpp <testcpp.c >testcpp.out 2>&1; \
3259         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3260         echo "It works!"
3261         x_cpp="$cpp"
3262         x_minus='';
3263 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3264         $cpp - <testcpp.c >testcpp.out 2>&1; \
3265         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3266         echo "Hooray, it works!  I was beginning to wonder."
3267         x_cpp="$cpp"
3268         x_minus='-';
3269 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3270         $wrapper <testcpp.c >testcpp.out 2>&1; \
3271         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3272         x_cpp="$wrapper"
3273         x_minus=''
3274         echo "Eureka!"
3275 else
3276         dflt=''
3277         rp="No dice.  I can't find a C preprocessor.  Name one:"
3278         . ./myread
3279         x_cpp="$ans"
3280         x_minus=''
3281         $x_cpp <testcpp.c >testcpp.out 2>&1
3282         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3283                 echo "OK, that will do." >&4
3284         else
3285 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3286                 exit 1
3287         fi
3288 fi
3289
3290 case "$ok" in
3291 false)
3292         cppstdin="$x_cpp"
3293         cppminus="$x_minus"
3294         cpprun="$x_cpp"
3295         cpplast="$x_minus"
3296         set X $x_cpp
3297         shift
3298         case "$1" in
3299         "$cpp")
3300                 echo "Perhaps can we force $cc -E using a wrapper..."
3301                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3302                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3303                 then
3304                         echo "Yup, we can."
3305                         cppstdin="$wrapper"
3306                         cppminus='';
3307                 else
3308                         echo "Nope, we'll have to live without it..."
3309                 fi
3310                 ;;
3311         esac
3312         case "$cpprun" in
3313         "$wrapper")
3314                 cpprun=''
3315                 cpplast=''
3316                 ;;
3317         esac
3318         ;;
3319 esac
3320
3321 case "$cppstdin" in
3322 "$wrapper"|'cppstdin') ;;
3323 *) $rm -f $wrapper;;
3324 esac
3325 $rm -f testcpp.c testcpp.out
3326
3327 : decide how portable to be.  Allow command line overrides.
3328 case "$d_portable" in
3329 "$undef") ;;
3330 *)      d_portable="$define" ;;
3331 esac
3332
3333 : set up shell script to do ~ expansion
3334 cat >filexp <<EOSS
3335 $startsh
3336 : expand filename
3337 case "\$1" in
3338  ~/*|~)
3339         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3340         ;;
3341  ~*)
3342         if $test -f /bin/csh; then
3343                 /bin/csh -f -c "glob \$1"
3344                 failed=\$?
3345                 echo ""
3346                 exit \$failed
3347         else
3348                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3349                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3350                 if $test ! -d "\$dir"; then
3351                         me=\`basename \$0\`
3352                         echo "\$me: can't locate home directory for: \$name" >&2
3353                         exit 1
3354                 fi
3355                 case "\$1" in
3356                 */*)
3357                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3358                         ;;
3359                 *)
3360                         echo \$dir
3361                         ;;
3362                 esac
3363         fi
3364         ;;
3365 *)
3366         echo \$1
3367         ;;
3368 esac
3369 EOSS
3370 chmod +x filexp
3371 $eunicefix filexp
3372
3373 : now set up to get a file name
3374 cat <<EOS >getfile
3375 $startsh
3376 EOS
3377 cat <<'EOSC' >>getfile
3378 tilde=''
3379 fullpath=''
3380 already=''
3381 skip=''
3382 none_ok=''
3383 exp_file=''
3384 nopath_ok=''
3385 orig_rp="$rp"
3386 orig_dflt="$dflt"
3387 case "$gfpth" in
3388 '') gfpth='.' ;;
3389 esac
3390
3391 case "$fn" in
3392 *\(*)
3393         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3394         fn=`echo $fn | sed 's/(.*)//'`
3395         ;;
3396 esac
3397
3398 case "$fn" in
3399 *:*)
3400         loc_file=`expr $fn : '.*:\(.*\)'`
3401         fn=`expr $fn : '\(.*\):.*'`
3402         ;;
3403 esac
3404
3405 case "$fn" in
3406 *~*) tilde=true;;
3407 esac
3408 case "$fn" in
3409 */*) fullpath=true;;
3410 esac
3411 case "$fn" in
3412 *+*) skip=true;;
3413 esac
3414 case "$fn" in
3415 *n*) none_ok=true;;
3416 esac
3417 case "$fn" in
3418 *e*) exp_file=true;;
3419 esac
3420 case "$fn" in
3421 *p*) nopath_ok=true;;
3422 esac
3423
3424 case "$fn" in
3425 *f*) type='File';;
3426 *d*) type='Directory';;
3427 *l*) type='Locate';;
3428 esac
3429
3430 what="$type"
3431 case "$what" in
3432 Locate) what='File';;
3433 esac
3434
3435 case "$exp_file" in
3436 '')
3437         case "$d_portable" in
3438         "$define") ;;
3439         *) exp_file=true;;
3440         esac
3441         ;;
3442 esac
3443
3444 cd ..
3445 while test "$type"; do
3446         redo=''
3447         rp="$orig_rp"
3448         dflt="$orig_dflt"
3449         case "$tilde" in
3450         true) rp="$rp (~name ok)";;
3451         esac
3452         . UU/myread
3453         if test -f UU/getfile.ok && \
3454                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3455         then
3456                 value="$ans"
3457                 ansexp="$ans"
3458                 break
3459         fi
3460         case "$ans" in
3461         none)
3462                 value=''
3463                 ansexp=''
3464                 case "$none_ok" in
3465                 true) type='';;
3466                 esac
3467                 ;;
3468         *)
3469                 case "$tilde" in
3470                 '') value="$ans"
3471                         ansexp="$ans";;
3472                 *)
3473                         value=`UU/filexp $ans`
3474                         case $? in
3475                         0)
3476                                 if test "$ans" != "$value"; then
3477                                         echo "(That expands to $value on this system.)"
3478                                 fi
3479                                 ;;
3480                         *) value="$ans";;
3481                         esac
3482                         ansexp="$value"
3483                         case "$exp_file" in
3484                         '') value="$ans";;
3485                         esac
3486                         ;;
3487                 esac
3488                 case "$fullpath" in
3489                 true)
3490                         case "$ansexp" in
3491                         /*) value="$ansexp" ;;
3492                         [a-zA-Z]:/*) value="$ansexp" ;;
3493                         *)
3494                                 redo=true
3495                                 case "$already" in
3496                                 true)
3497                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3498                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3499                                         ;;
3500                                 *)
3501                                 echo "Please give a full path name, starting with slash." >&4
3502                                         case "$tilde" in
3503                                         true)
3504                                 echo "Note that using ~name is ok provided it expands well." >&4
3505                                                 already=true
3506                                                 ;;
3507                                         esac
3508                                 esac
3509                                 ;;
3510                         esac
3511                         ;;
3512                 esac
3513                 case "$redo" in
3514                 '')
3515                         case "$type" in
3516                         File)
3517                                 for fp in $gfpth; do
3518                                         if test "X$fp" = X.; then
3519                                             pf="$ansexp"
3520                                         else    
3521                                             pf="$fp/$ansexp"
3522                                         fi
3523                                         if test -f "$pf"; then
3524                                                 type=''
3525                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3526                                         then
3527                                                 echo "($value is not a plain file, but that's ok.)"
3528                                                 type=''
3529                                         fi
3530                                         if test X"$type" = X; then
3531                                             value="$pf"
3532                                             break
3533                                         fi
3534                                 done
3535                                 ;;
3536                         Directory)
3537                                 for fp in $gfpth; do
3538                                         if test "X$fp" = X.; then
3539                                             dir="$ans"
3540                                             direxp="$ansexp"
3541                                         else    
3542                                             dir="$fp/$ansexp"
3543                                             direxp="$fp/$ansexp"
3544                                         fi
3545                                         if test -d "$direxp"; then
3546                                                 type=''
3547                                                 value="$dir"
3548                                                 break
3549                                         fi
3550                                 done
3551                                 ;;
3552                         Locate)
3553                                 if test -d "$ansexp"; then
3554                                         echo "(Looking for $loc_file in directory $value.)"
3555                                         value="$value/$loc_file"
3556                                         ansexp="$ansexp/$loc_file"
3557                                 fi
3558                                 if test -f "$ansexp"; then
3559                                         type=''
3560                                 fi
3561                                 case "$nopath_ok" in
3562                                 true)   case "$value" in
3563                                         */*) ;;
3564                                         *)      echo "Assuming $value will be in people's path."
3565                                                 type=''
3566                                                 ;;
3567                                         esac
3568                                         ;;
3569                                 esac
3570                                 ;;
3571                         esac
3572
3573                         case "$skip" in
3574                         true) type='';
3575                         esac
3576
3577                         case "$type" in
3578                         '') ;;
3579                         *)
3580                                 if test "$fastread" = yes; then
3581                                         dflt=y
3582                                 else
3583                                         dflt=n
3584                                 fi
3585                                 rp="$what $value doesn't exist.  Use that name anyway?"
3586                                 . UU/myread
3587                                 dflt=''
3588                                 case "$ans" in
3589                                 y*) type='';;
3590                                 *) echo " ";;
3591                                 esac
3592                                 ;;
3593                         esac
3594                         ;;
3595                 esac
3596                 ;;
3597         esac
3598 done
3599 cd UU
3600 ans="$value"
3601 rp="$orig_rp"
3602 dflt="$orig_dflt"
3603 rm -f getfile.ok
3604 test "X$gfpthkeep" != Xy && gfpth=""
3605 EOSC
3606
3607 : What should the include directory be ?
3608 echo " "
3609 $echo $n "Hmm...  $c"
3610 dflt='/usr/include'
3611 incpath=''
3612 mips_type=''
3613 if $test -f /bin/mips && /bin/mips; then
3614         echo "Looks like a MIPS system..."
3615         $cat >usr.c <<'EOCP'
3616 #ifdef SYSTYPE_BSD43
3617 /bsd43
3618 #endif
3619 EOCP
3620         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3621                 dflt='/bsd43/usr/include'
3622                 incpath='/bsd43'
3623                 mips_type='BSD 4.3'
3624         else
3625                 mips_type='System V'
3626         fi
3627         $rm -f usr.c usr.out
3628         echo "and you're compiling with the $mips_type compiler and libraries."
3629         xxx_prompt=y
3630         echo "exit 0" >mips
3631 else
3632         echo "Doesn't look like a MIPS system."
3633         xxx_prompt=n
3634         echo "exit 1" >mips
3635 fi
3636 chmod +x mips
3637 $eunicefix mips
3638 case "$usrinc" in
3639 '') ;;
3640 *) dflt="$usrinc";;
3641 esac
3642 case "$xxx_prompt" in
3643 y)      fn=d/
3644         echo " "
3645         rp='Where are the include files you want to use?'
3646         . ./getfile
3647         usrinc="$ans"
3648         ;;
3649 *)      usrinc="$dflt"
3650         ;;
3651 esac
3652
3653 : Set private lib path
3654 case "$plibpth" in
3655 '') if ./mips; then
3656                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3657         fi;;
3658 esac
3659 case "$libpth" in
3660 ' ') dlist='';;
3661 '') dlist="$loclibpth $plibpth $glibpth";;
3662 *) dlist="$libpth";;
3663 esac
3664
3665 : Now check and see which directories actually exist, avoiding duplicates
3666 libpth=''
3667 for xxx in $dlist
3668 do
3669     if $test -d $xxx; then
3670                 case " $libpth " in
3671                 *" $xxx "*) ;;
3672                 *) libpth="$libpth $xxx";;
3673                 esac
3674     fi
3675 done
3676 $cat <<'EOM'
3677
3678 Some systems have incompatible or broken versions of libraries.  Among
3679 the directories listed in the question below, please remove any you
3680 know not to be holding relevant libraries, and add any that are needed.
3681 Say "none" for none.
3682
3683 EOM
3684 case "$libpth" in
3685 '') dflt='none';;
3686 *)
3687         set X $libpth
3688         shift
3689         dflt=${1+"$@"}
3690         ;;
3691 esac
3692 rp="Directories to use for library searches?"
3693 . ./myread
3694 case "$ans" in
3695 none) libpth=' ';;
3696 *) libpth="$ans";;
3697 esac
3698
3699 : compute shared library extension
3700 case "$so" in
3701 '')
3702         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3703                 dflt='sl'
3704         else
3705                 dflt='so'
3706         fi
3707         ;;
3708 *) dflt="$so";;
3709 esac
3710 $cat <<EOM
3711
3712 On some systems, shared libraries may be available.  Answer 'none' if
3713 you want to suppress searching of shared libraries for the remainder
3714 of this configuration.
3715
3716 EOM
3717 rp='What is the file extension used for shared libraries?'
3718 . ./myread
3719 so="$ans"
3720
3721 : Define several unixisms.
3722 : Hints files or command line option can be used to override them.
3723 : The convoluted testing is in case hints files set either the old
3724 : or the new name.
3725 case "$_exe" in
3726 '')     case "$exe_ext" in
3727     '') ;;
3728         *)      _exe="$exe_ext" ;;
3729         esac
3730         ;;
3731 esac
3732 case "$_a" in
3733 '')     case "$lib_ext" in
3734     '') _a='.a';;
3735         *)      _a="$lib_ext" ;;
3736         esac
3737         ;;
3738 esac
3739 case "$_o" in
3740 '') case "$obj_ext" in
3741         '')     _o='.o';;
3742         *)      _o="$obj_ext";;
3743         esac
3744         ;;
3745 esac
3746 case "$p_" in
3747 '') case "$path_sep" in
3748         '')     p_=':';;
3749         *)      p_="$path_sep";;
3750         esac
3751         ;;
3752 esac
3753 exe_ext=$_exe
3754 lib_ext=$_a
3755 obj_ext=$_o
3756 path_sep=$p_
3757
3758 : Which makefile gets called first.  This is used by make depend.
3759 case "$firstmakefile" in
3760 '') firstmakefile='makefile';;
3761 esac
3762
3763 case "$usesocks" in
3764 $define|true|[yY]*)     dflt='y';;
3765 *) dflt='n';;
3766 esac
3767 cat <<EOM
3768
3769 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3770 Configure must be run with -Dusesocks.
3771
3772 If this doesn't make any sense to you, just accept the default '$dflt'.
3773 EOM
3774 rp='Build Perl for SOCKS?'
3775 . ./myread
3776 case "$ans" in
3777 y|Y)    val="$define" ;;     
3778 *)      val="$undef" ;;
3779 esac
3780 set usesocks
3781 eval $setvar
3782
3783 : Looking for optional libraries
3784 echo " "
3785 echo "Checking for optional libraries..." >&4
3786 case "$libs" in
3787 ' '|'') dflt='';;
3788 *) dflt="$libs";;
3789 esac
3790 case "$libswanted" in
3791 '') libswanted='c_s';;
3792 esac
3793 case "$usesocks" in
3794 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3795 esac
3796 libsfound=''
3797 libsfiles=''
3798 libsdirs=''
3799 libspath=''
3800 for thisdir in $libpth $xlibpth; do
3801   test -d $thisdir && libspath="$libspath $thisdir"
3802 done
3803 for thislib in $libswanted; do
3804         for thisdir in $libspath; do
3805             xxx=''
3806             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3807                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3808                 $test -f "$xxx" && eval $libscheck
3809                 $test -f "$xxx" && libstyle=shared
3810             fi
3811             if test ! -f "$xxx"; then
3812                 xxx=$thisdir/lib$thislib.$so
3813                 $test -f "$xxx" && eval $libscheck
3814                 $test -f "$xxx" && libstyle=shared
3815             fi  
3816             if test ! -f "$xxx"; then
3817                 xxx=$thisdir/lib$thislib$_a
3818                 $test -f "$xxx" && eval $libscheck
3819                 $test -f "$xxx" && libstyle=static
3820             fi
3821             if test ! -f "$xxx"; then
3822                 xxx=$thisdir/$thislib$_a
3823                 $test -f "$xxx" && eval $libscheck
3824                 $test -f "$xxx" && libstyle=static
3825             fi
3826             if test ! -f "$xxx"; then
3827                 xxx=$thisdir/lib${thislib}_s$_a
3828                 $test -f "$xxx" && eval $libscheck
3829                 $test -f "$xxx" && libstyle=static
3830                 $test -f "$xxx" && thislib=${thislib}_s
3831             fi
3832             if test ! -f "$xxx"; then
3833                 xxx=$thisdir/Slib$thislib$_a
3834                 $test -f "$xxx" && eval $libscheck
3835                 $test -f "$xxx" && libstyle=static
3836             fi
3837             if $test -f "$xxx"; then
3838                 case "$libstyle" in
3839                 shared) echo "Found -l$thislib (shared)." ;;
3840                 static) echo "Found -l$thislib." ;;
3841                 *)      echo "Found -l$thislib ($libstyle)." ;;
3842                 esac
3843                 case " $dflt " in
3844                 *"-l$thislib "*);;
3845                 *) dflt="$dflt -l$thislib"
3846                    libsfound="$libsfound $xxx"
3847                    yyy=`basename $xxx`
3848                    libsfiles="$libsfiles $yyy"
3849                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3850                    case " $libsdirs " in
3851                    *" $yyy "*) ;;
3852                    *) libsdirs="$libsdirs $yyy" ;;
3853                    esac
3854                    ;;
3855                 esac
3856                 break
3857             fi  
3858         done
3859         if $test ! -f "$xxx"; then
3860             echo "No -l$thislib."
3861         fi
3862 done
3863 set X $dflt
3864 shift
3865 dflt="$*"
3866 case "$libs" in
3867 '') dflt="$dflt";;
3868 *) dflt="$libs";;
3869 esac
3870 case "$dflt" in
3871 ' '|'') dflt='none';;
3872 esac
3873
3874 $cat <<EOM
3875
3876 In order to compile $package on your machine, a number of libraries
3877 are usually needed.  Include any other special libraries here as well.
3878 Say "none" for none.  The default list is almost always right.
3879 EOM
3880
3881 echo " "
3882 rp="What libraries to use?"
3883 . ./myread
3884 case "$ans" in
3885 none) libs=' ';;
3886 *) libs="$ans";;
3887 esac
3888
3889 : determine optimization, if desired, or use for debug flag also
3890 case "$optimize" in
3891 ' '|$undef) dflt='none';;
3892 '') dflt='-O';;
3893 *) dflt="$optimize";;
3894 esac
3895 $cat <<EOH
3896
3897 By default, $package compiles with the -O flag to use the optimizer.
3898 Alternately, you might want to use the symbolic debugger, which uses
3899 the -g flag (on traditional Unix systems).  Either flag can be
3900 specified here.  To use neither flag, specify the word "none".
3901
3902 EOH
3903 rp="What optimizer/debugger flag should be used?"
3904 . ./myread
3905 optimize="$ans"
3906 case "$optimize" in
3907 'none') optimize=" ";;
3908 esac
3909
3910 dflt=''
3911 : We will not override a previous value, but we might want to
3912 : augment a hint file
3913 case "$hint" in
3914 default|recommended)
3915         case "$gccversion" in
3916         1*) dflt='-fpcc-struct-return' ;;
3917         esac
3918         case "$optimize" in
3919         *-g*) dflt="$dflt -DDEBUGGING";;
3920         esac
3921         case "$gccversion" in
3922         2*) if test -d /etc/conf/kconfig.d &&
3923                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3924                 then
3925                         dflt="$dflt -posix"
3926                 fi
3927                 ;;
3928         esac
3929         case "$gccversion" in
3930         1*) ;;
3931         2.[0-8]*) ;;
3932         ?*)     echo " "
3933                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3934                 echo 'int main(void) { return 0; }' > gcctest.c
3935                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3936                         echo "Yes, it does." 2>&1
3937                         case "$ccflags" in
3938                         *strict-aliasing*) 
3939                                 echo "Leaving current flags $ccflags alone." 2>&1
3940                                 ;;
3941                         *) dflt="$dflt -fno-strict-aliasing" ;;
3942                         esac
3943                 else
3944                         echo "Nope, it doesn't, but that's ok." 2>&1
3945                 fi
3946                 ;;
3947         esac
3948         ;;
3949 esac
3950
3951 case "$mips_type" in
3952 *BSD*|'') inclwanted="$locincpth $usrinc";;
3953 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3954 esac
3955 for thisincl in $inclwanted; do
3956         if $test -d $thisincl; then
3957                 if $test x$thisincl != x$usrinc; then
3958                         case "$dflt" in
3959                         *$thisincl*);;
3960                         *) dflt="$dflt -I$thisincl";;
3961                         esac
3962                 fi
3963         fi
3964 done
3965
3966 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3967         xxx=true;
3968 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3969         xxx=true;
3970 else
3971         xxx=false;
3972 fi;
3973 if $xxx; then
3974         case "$dflt" in
3975         *$2*);;
3976         *) dflt="$dflt -D$2";;
3977         esac;
3978 fi'
3979
3980 set signal.h LANGUAGE_C; eval $inctest
3981
3982 case "$usesocks" in
3983 $define)
3984         ccflags="$ccflags -DSOCKS"
3985         ;;
3986 esac
3987
3988 case "$hint" in
3989 default|recommended) dflt="$ccflags $dflt" ;;
3990 *) dflt="$ccflags";;
3991 esac
3992
3993 case "$dflt" in
3994 ''|' ') dflt=none;;
3995 esac
3996 $cat <<EOH
3997
3998 Your C compiler may want other flags.  For this question you should include
3999 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4000 but you should NOT include libraries or ld flags like -lwhatever.  If you
4001 want $package to honor its debug switch, you should include -DDEBUGGING here.
4002 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4003
4004 To use no flags, specify the word "none".
4005
4006 EOH
4007 set X $dflt
4008 shift
4009 dflt=${1+"$@"}
4010 rp="Any additional cc flags?"
4011 . ./myread
4012 case "$ans" in
4013 none) ccflags='';;
4014 *) ccflags="$ans";;
4015 esac
4016
4017 : the following weeds options from ccflags that are of no interest to cpp
4018 cppflags="$ccflags"
4019 case "$gccversion" in
4020 1*) cppflags="$cppflags -D__GNUC__"
4021 esac
4022 case "$mips_type" in
4023 '');;
4024 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4025 esac
4026 case "$cppflags" in
4027 '');;
4028 *)
4029         echo " "
4030         echo "Let me guess what the preprocessor flags are..." >&4
4031         set X $cppflags
4032         shift
4033         cppflags=''
4034         $cat >cpp.c <<'EOM'
4035 #define BLURFL foo
4036
4037 BLURFL xx LFRULB
4038 EOM
4039         previous=''
4040         for flag in $*
4041         do
4042                 case "$flag" in
4043                 -*) ftry="$flag";;
4044                 *) ftry="$previous $flag";;
4045                 esac
4046                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4047                         >cpp1.out 2>/dev/null && \
4048                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4049                         >cpp2.out 2>/dev/null && \
4050                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4051                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4052                 then
4053                         cppflags="$cppflags $ftry"
4054                         previous=''
4055                 else
4056                         previous="$flag"
4057                 fi
4058         done
4059         set X $cppflags
4060         shift
4061         cppflags=${1+"$@"}
4062         case "$cppflags" in
4063         *-*)  echo "They appear to be: $cppflags";;
4064         esac
4065         $rm -f cpp.c cpp?.out
4066         ;;
4067 esac
4068
4069 : flags used in final linking phase
4070 case "$ldflags" in
4071 '') if ./venix; then
4072                 dflt='-i -z'
4073         else
4074                 dflt=''
4075         fi
4076         case "$ccflags" in
4077         *-posix*) dflt="$dflt -posix" ;;
4078         esac
4079         ;;
4080 *) dflt="$ldflags";;
4081 esac
4082
4083 : Try to guess additional flags to pick up local libraries.
4084 for thislibdir in $libpth; do
4085         case " $loclibpth " in
4086         *" $thislibdir "*)
4087                 case "$dflt " in 
4088                 *"-L$thislibdir "*) ;;
4089                 *)  dflt="$dflt -L$thislibdir" ;;
4090                 esac
4091                 ;;
4092         esac
4093 done
4094
4095 case "$dflt" in
4096 '') dflt='none' ;;
4097 esac
4098
4099 $cat <<EOH
4100
4101 Your C linker may need flags.  For this question you should
4102 include -L/whatever and any other flags used by the C linker, but you
4103 should NOT include libraries like -lwhatever.
4104
4105 Make sure you include the appropriate -L/path flags if your C linker
4106 does not normally search all of the directories you specified above,
4107 namely
4108         $libpth
4109 To use no flags, specify the word "none".
4110
4111 EOH
4112
4113 rp="Any additional ld flags (NOT including libraries)?"
4114 . ./myread
4115 case "$ans" in
4116 none) ldflags='';;
4117 *) ldflags="$ans";;
4118 esac
4119 rmlist="$rmlist pdp11"
4120
4121 : coherency check
4122 echo " "
4123 echo "Checking your choice of C compiler and flags for coherency..." >&4
4124 $cat > try.c <<'EOF'
4125 #include <stdio.h>
4126 int main() { printf("Ok\n"); exit(0); }
4127 EOF
4128 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4129 shift
4130 $cat >try.msg <<'EOM'
4131 I've tried to compile and run the following simple program:
4132
4133 EOM
4134 $cat try.c >> try.msg
4135
4136 $cat >> try.msg <<EOM
4137
4138 I used the command:
4139
4140         $*
4141         ./try
4142
4143 and I got the following output:
4144
4145 EOM
4146 dflt=y
4147 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4148         if sh -c './try' >>try.msg 2>&1; then
4149                 xxx=`./try`
4150                 case "$xxx" in
4151                 "Ok") dflt=n ;;
4152                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4153                         case " $libs " in
4154                         *" -lsfio "*)
4155                                 cat >> try.msg <<'EOQS'
4156 If $libs contains -lsfio, and sfio is mis-configured, then it
4157 sometimes (apparently) runs and exits with a 0 status, but with no
4158 output!  It may have to do with sfio's use of _exit vs. exit.
4159
4160 EOQS
4161                                 rp="You have a big problem.  Shall I abort Configure"
4162                                 dflt=y
4163                                 ;;
4164                         esac
4165                         ;;
4166                 esac
4167         else
4168                 echo "The program compiled OK, but exited with status $?." >>try.msg
4169                 rp="You have a problem.  Shall I abort Configure"
4170                 dflt=y
4171         fi
4172 else
4173         echo "I can't compile the test program." >>try.msg
4174         rp="You have a BIG problem.  Shall I abort Configure"
4175         dflt=y
4176 fi
4177 case "$dflt" in
4178 y)
4179         $cat try.msg >&4
4180         case "$knowitall" in
4181         '')
4182                 echo "(The supplied flags or libraries might be incorrect.)"
4183                 ;;
4184         *) dflt=n;;
4185         esac
4186         echo " "
4187         . ./myread
4188         case "$ans" in
4189         n*|N*) ;;
4190         *)      echo "Ok.  Stopping Configure." >&4
4191                 exit 1
4192                 ;;
4193         esac
4194         ;;
4195 n) echo "OK, that should do.";;
4196 esac
4197 $rm -f try try.* core
4198
4199 : define an is-a-typedef? function
4200 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4201 case "$inclist" in
4202 "") inclist="sys/types.h";;
4203 esac;
4204 eval "varval=\$$var";
4205 case "$varval" in
4206 "")
4207         $rm -f temp.c;
4208         for inc in $inclist; do
4209                 echo "#include <$inc>" >>temp.c;
4210         done;
4211         echo "#ifdef $type" >> temp.c;
4212         echo "printf(\"We have $type\");" >> temp.c;
4213         echo "#endif" >> temp.c;
4214         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4215         if $contains $type temp.E >/dev/null 2>&1; then
4216                 eval "$var=\$type";
4217         else
4218                 eval "$var=\$def";
4219         fi;
4220         $rm -f temp.?;;
4221 *) eval "$var=\$varval";;
4222 esac'
4223
4224 : define an is-a-typedef? function that prompts if the type is not available.
4225 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4226 case "$inclist" in
4227 "") inclist="sys/types.h";;
4228 esac;
4229 eval "varval=\$$var";
4230 case "$varval" in
4231 "")
4232         $rm -f temp.c;
4233         for inc in $inclist; do
4234                 echo "#include <$inc>" >>temp.c;
4235         done;
4236         echo "#ifdef $type" >> temp.c;
4237         echo "printf(\"We have $type\");" >> temp.c;
4238         echo "#endif" >> temp.c;
4239         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4240         echo " " ;
4241         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4242         if $contains $type temp.E >/dev/null 2>&1; then
4243                 echo "$type found." >&4;
4244                 eval "$var=\$type";
4245         else
4246                 echo "$type NOT found." >&4;
4247                 dflt="$def";
4248                 . ./myread ;
4249                 eval "$var=\$ans";
4250         fi;
4251         $rm -f temp.?;;
4252 *) eval "$var=\$varval";;
4253 esac'
4254
4255 : define a shorthand compile call
4256 compile='
4257 mc_file=$1;
4258 shift;
4259 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4260 : define a shorthand compile call for compilations that should be ok.
4261 compile_ok='
4262 mc_file=$1;
4263 shift;
4264 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4265
4266 : check for lengths of integral types
4267 echo " "
4268 case "$intsize" in
4269 '')
4270         echo "Checking to see how big your integers are..." >&4
4271         $cat >intsize.c <<'EOCP'
4272 #include <stdio.h>
4273 int main()
4274 {
4275         printf("intsize=%d;\n", (int)sizeof(int));
4276         printf("longsize=%d;\n", (int)sizeof(long));
4277         printf("shortsize=%d;\n", (int)sizeof(short));
4278         exit(0);
4279 }
4280 EOCP
4281         set intsize
4282         if eval $compile_ok && ./intsize > /dev/null; then
4283                 eval `./intsize`
4284                 echo "Your integers are $intsize bytes long."
4285                 echo "Your long integers are $longsize bytes long."
4286                 echo "Your short integers are $shortsize bytes long."
4287         else
4288                 $cat >&4 <<EOM
4289 !
4290 Help! I can't compile and run the intsize test program: please enlighten me!
4291 (This is probably a misconfiguration in your system or libraries, and
4292 you really ought to fix it.  Still, I'll try anyway.)
4293 !
4294 EOM
4295                 dflt=4
4296                 rp="What is the size of an integer (in bytes)?"
4297                 . ./myread
4298                 intsize="$ans"
4299                 dflt=$intsize
4300                 rp="What is the size of a long integer (in bytes)?"
4301                 . ./myread
4302                 longsize="$ans"
4303                 dflt=2
4304                 rp="What is the size of a short integer (in bytes)?"
4305                 . ./myread
4306                 shortsize="$ans"
4307         fi
4308         ;;
4309 esac
4310 $rm -f intsize intsize.*
4311
4312 : see what type lseek is declared as in the kernel
4313 rp="What is the type used for lseek's offset on this system?"
4314 set off_t lseektype long stdio.h sys/types.h
4315 eval $typedef_ask
4316
4317 echo " "
4318 echo "Checking to see how big your file offsets are..." >&4
4319 $cat >try.c <<EOCP
4320 #include <sys/types.h>
4321 #include <stdio.h>
4322 int main()
4323 {
4324     printf("%d\n", (int)sizeof($lseektype));
4325     return(0); 
4326 }
4327 EOCP
4328 set try
4329 if eval $compile_ok; then
4330         lseeksize=`./try`
4331         echo "Your file offsets are $lseeksize bytes long."
4332 else
4333         dflt=$longsize
4334         echo " "
4335         echo "(I can't seem to compile the test program.  Guessing...)"
4336         rp="What is the size of your file offsets (in bytes)?"
4337         . ./myread
4338         lseeksize="$ans"
4339 fi
4340 $rm -f try.c try
4341
4342 : see what type file positions are declared as in the library
4343 rp="What is the type for file position used by fsetpos()?"
4344 set fpos_t fpostype long stdio.h sys/types.h
4345 eval $typedef_ask
4346
4347 echo " "
4348 case "$fpostype" in
4349 *_t) zzz="$fpostype"    ;;
4350 *)   zzz="fpos_t"       ;;
4351 esac
4352 echo "Checking the size of $zzz..." >&4 
4353 cat > try.c <<EOCP
4354 #include <sys/types.h>
4355 #include <stdio.h>
4356 int main() {
4357     printf("%d\n", (int)sizeof($fpostype));
4358     exit(0);
4359 }
4360 EOCP
4361 set try
4362 if eval $compile_ok; then
4363         yyy=`./try`
4364         case "$yyy" in
4365         '')     fpossize=4
4366                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4367                 ;;
4368         *)      fpossize=$yyy
4369                 echo "Your $zzz is $fpossize bytes long."
4370                 ;;
4371         esac
4372 else
4373         dflt="$longsize"
4374         echo " " >&4
4375         echo "(I can't compile the test program.  Guessing...)" >&4
4376         rp="What is the size of your file positions (in bytes)?"
4377         . ./myread
4378         fpossize="$ans"
4379 fi
4380
4381
4382
4383 # Backward compatibility (uselfs is deprecated).
4384 case "$uselfs" in
4385 "$define"|true|[yY]*)
4386         cat <<EOM >&4
4387
4388 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4389 EOM
4390         uselargefiles="$define"
4391         ;;
4392 esac                          
4393
4394 case "$lseeksize:$fpossize" in
4395 8:8) cat <<EOM
4396
4397 You can have files larger than 2 gigabytes.
4398 EOM
4399    val="$define" ;;
4400 *)    case "$uselargefiles" in
4401    "$undef"|false|[nN]*) dflt='n' ;;
4402    *)   dflt='y' ;;
4403    esac
4404    cat <<EOM
4405
4406 Perl can be built to understand large files (files larger than 2 gigabytes)
4407 on some systems.  To do so, Configure can be run with -Duselargefiles.
4408
4409 If this doesn't make any sense to you, just accept the default '$dflt'.
4410 EOM
4411    rp='Try to understand large files, if available?'
4412    . ./myread
4413    case "$ans" in
4414    y|Y)         val="$define" ;;
4415    *)           val="$undef"  ;;
4416    esac
4417    ;;
4418 esac
4419 set uselargefiles
4420 eval $setvar
4421 case "$uselargefiles" in
4422 "$define")
4423 : Look for a hint-file generated 'call-back-unit'.  If the
4424 : user has specified that a large files perl is to be built,
4425 : we may need to set or change some other defaults.
4426         if $test -f uselargefiles.cbu; then
4427                 echo "Your platform has some specific hints for large file builds, using them..."
4428                 . ./uselargefiles.cbu
4429                 echo " "
4430                 echo "Rechecking to see how big your file offsets are..." >&4
4431                 $cat >try.c <<EOCP
4432 #include <sys/types.h>
4433 #include <stdio.h>
4434 int main()
4435 {
4436     printf("%d\n", (int)sizeof($lseektype));
4437     return(0); 
4438 }
4439 EOCP
4440                 set try
4441                 if eval $compile_ok; then
4442                         lseeksize=`./try`
4443                         $echo "Your file offsets are now $lseeksize bytes long."
4444                 else
4445                         dflt="$lseeksize"
4446                         echo " "
4447                         echo "(I can't seem to compile the test program.  Guessing...)"
4448                         rp="What is the size of your file offsets (in bytes)?"
4449                         . ./myread
4450                         lseeksize="$ans"
4451                 fi
4452                 case "$fpostype" in
4453                 *_t) zzz="$fpostype"    ;;
4454                 *)   zzz="fpos_t"       ;;
4455                 esac
4456                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4457                 $cat > try.c <<EOCP
4458 #include <sys/types.h>
4459 #include <stdio.h>
4460 int main() {
4461     printf("%d\n", (int)sizeof($fpostype));
4462     exit(0);
4463 }
4464 EOCP
4465                 set try
4466                 if eval $compile_ok; then
4467                         yyy=`./try`
4468                         dflt="$lseeksize"
4469                         case "$yyy" in
4470                         '')     echo " "
4471                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4472                                 ;;
4473                         *)      fpossize=$yyy
4474                                 echo " $fpossize bytes." >&4
4475                                 ;;
4476                         esac
4477                 else
4478                         dflt="$fpossize"
4479                         echo " "
4480                         echo "(I can't compile the test program.  Guessing...)" >&4
4481                         rp="What is the size of your file positions (in bytes)?"
4482                         . ./myread
4483                         fpossize="$ans"
4484                 fi
4485                 $rm -f try.c try
4486         fi
4487         ;;
4488 esac
4489
4490
4491 case "$usemorebits" in
4492 "$define"|true|[yY]*)
4493         use64bitint="$define"
4494         uselongdouble="$define"
4495         usemorebits="$define"
4496         ;;
4497 *)      usemorebits="$undef"
4498         ;;
4499 esac
4500
4501
4502 case "$uselonglong" in
4503 "$define"|true|[yY]*)
4504         cat <<EOM >&4
4505
4506 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4507 EOM
4508         use64bitint="$define"
4509         ;;
4510 esac                          
4511 case "$use64bits" in
4512 "$define"|true|[yY]*)
4513         cat <<EOM >&4
4514
4515 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4516 EOM
4517         use64bitint="$define"
4518         ;;
4519 esac                          
4520 case "$use64bitints" in
4521 "$define"|true|[yY]*)
4522         cat <<EOM >&4
4523
4524 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4525 EOM
4526         use64bitint="$define"
4527         ;;
4528 esac                          
4529 case "$use64bitsint" in
4530 "$define"|true|[yY]*)
4531         cat <<EOM >&4
4532
4533 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4534 EOM
4535         use64bitint="$define"
4536         ;;
4537 esac                          
4538 case "$uselonglongs" in
4539 "$define"|true|[yY]*)
4540         cat <<EOM >&4
4541
4542 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4543 EOM
4544         use64bitint="$define"
4545         ;;
4546 esac                          
4547 case "$use64bitsall" in
4548 "$define"|true|[yY]*)
4549         cat <<EOM >&4
4550
4551 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4552 EOM
4553         use64bitall="$define"
4554         ;;
4555 esac                          
4556
4557 case "$ccflags" in
4558 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4559 esac
4560 case "$use64bitall" in
4561 "$define"|true|[yY]*) use64bitint="$define" ;;
4562 esac
4563
4564 case "$longsize" in
4565 8) cat <<EOM
4566
4567 You have natively 64-bit long integers.
4568 EOM
4569    val="$define"
4570    ;;
4571 *) case "$use64bitint" in
4572    "$define"|true|[yY]*) dflt='y';;
4573    *) dflt='n';;
4574    esac
4575    cat <<EOM
4576
4577 Perl can be built to take advantage of 64-bit integer types
4578 on some systems.  To do so, Configure can be run with -Duse64bitint.
4579 Choosing this option will most probably introduce binary incompatibilities.
4580
4581 If this doesn't make any sense to you, just accept the default '$dflt'.
4582 EOM
4583    rp='Try to use 64-bit integers, if available?'
4584    . ./myread
4585    case "$ans" in
4586    [yY]*) val="$define" ;;
4587    *)     val="$undef"  ;;
4588    esac
4589    ;;
4590 esac
4591 set use64bitint
4592 eval $setvar
4593
4594 case "$use64bitall" in
4595 "$define"|true|[yY]*) dflt='y' ;;
4596 *) case "$longsize" in
4597    8) dflt='y' ;;
4598    *) dflt='n' ;;
4599    esac
4600    ;;
4601 esac    
4602 cat <<EOM
4603
4604 You may also choose to try maximal 64-bitness.  It means using as much
4605 64-bitness as possible on the platform.  This in turn means even more
4606 binary incompatibilities.  On the other hand, your platform may not
4607 have any more 64-bitness available than what you already have chosen.
4608
4609 If this doesn't make any sense to you, just accept the default '$dflt'.
4610 EOM
4611 rp='Try to use maximal 64-bit support, if available?'
4612 . ./myread
4613 case "$ans" in
4614 [yY]*) val="$define" ;;
4615 *)     val="$undef"  ;;
4616 esac
4617 set use64bitall
4618 eval $setvar
4619 case "$use64bitall" in
4620 "$define")
4621         case "$use64bitint" in
4622         "$undef")
4623                 cat <<EOM
4624
4625 Since you have chosen a maximally 64-bit build, I'm also turning on
4626 the use of 64-bit integers.
4627 EOM
4628                 use64bitint="$define" ;;
4629         esac
4630         ;;
4631 esac
4632
4633 case "$use64bitint" in
4634 "$define"|true|[yY]*)
4635 : Look for a hint-file generated 'call-back-unit'.  If the
4636 : user has specified that a 64-bit perl is to be built,
4637 : we may need to set or change some other defaults.
4638         if $test -f use64bitint.cbu; then
4639                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4640                 . ./use64bitint.cbu
4641         fi
4642         case "$longsize" in
4643         4) case "$archname64" in
4644            '') archname64=64int ;;
4645            esac
4646            ;;
4647         esac
4648         ;;
4649 esac
4650
4651 case "$use64bitall" in
4652 "$define"|true|[yY]*)
4653 : Look for a hint-file generated 'call-back-unit'.  If the
4654 : user has specified that a maximally 64-bit perl is to be built,
4655 : we may need to set or change some other defaults.
4656         if $test -f use64bitall.cbu; then
4657                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4658                 . ./use64bitall.cbu
4659         fi
4660         case "$longsize" in
4661         4) case "$archname64" in
4662            ''|64int) archname64=64all ;;
4663            esac
4664            ;;
4665         esac
4666         ;;
4667 esac
4668
4669 : determine the architecture name
4670 echo " "
4671 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4672         tarch=`arch`"-$osname"
4673 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4674         if uname -m > tmparch 2>&1 ; then
4675                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4676                         -e 's/$/'"-$osname/" tmparch`
4677         else
4678                 tarch="$osname"
4679         fi
4680         $rm -f tmparch
4681 else
4682         tarch="$osname"
4683 fi
4684 case "$myarchname" in
4685 ''|"$tarch") ;;
4686 *)
4687         echo "(Your architecture name used to be $myarchname.)"
4688         archname=''
4689         ;;
4690 esac
4691 myarchname="$tarch"
4692 case "$archname" in
4693 '') dflt="$tarch";;
4694 *) dflt="$archname";;
4695 esac
4696 rp='What is your architecture name'
4697 . ./myread
4698 archname="$ans"
4699 case "$usethreads" in
4700 $define)
4701         echo "Threads selected." >&4
4702         case "$archname" in
4703         *-thread*) echo "...and architecture name already has -thread." >&4
4704                 ;;
4705         *)      archname="$archname-thread"
4706                 echo "...setting architecture name to $archname." >&4
4707                 ;;
4708         esac
4709         ;;
4710 esac
4711 case "$usemultiplicity" in
4712 $define)
4713         echo "Multiplicity selected." >&4
4714         case "$archname" in
4715         *-multi*) echo "...and architecture name already has -multi." >&4
4716                 ;;
4717         *)      archname="$archname-multi"
4718                 echo "...setting architecture name to $archname." >&4
4719                 ;;
4720         esac
4721         ;;
4722 esac
4723 case "$use64bitint" in
4724 $define)
4725         case "$archname64" in
4726         '')
4727                 ;;
4728         *)
4729                 case "$archname" in
4730                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4731                         ;;
4732                 *)      archname="$archname-$archname64"
4733                         echo "...setting architecture name to $archname." >&4
4734                         ;;
4735                 esac
4736                 ;;
4737         esac
4738 esac
4739
4740 : determine root of directory hierarchy where package will be installed.
4741 case "$prefix" in
4742 '')
4743         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4744         ;;
4745 *)
4746         dflt="$prefix"
4747         ;;
4748 esac
4749 $cat <<EOM
4750
4751 By default, $package will be installed in $dflt/bin, manual pages
4752 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4753 installation directories. Typically this is something like /usr/local.
4754 If you wish to have binaries under /usr/bin but other parts of the
4755 installation under /usr/local, that's ok: you will be prompted
4756 separately for each of the installation directories, the prefix being
4757 only used to set the defaults.
4758
4759 EOM
4760 fn=d~
4761 rp='Installation prefix to use?'
4762 . ./getfile
4763 oldprefix=''
4764 case "$prefix" in
4765 '') ;;
4766 *)
4767         case "$ans" in
4768         "$prefix") ;;
4769         *) oldprefix="$prefix";;
4770         esac
4771         ;;
4772 esac
4773 prefix="$ans"
4774 prefixexp="$ansexp"
4775
4776 : is AFS running?
4777 echo " "
4778 case "$afs" in
4779 $define|true)   afs=true ;;
4780 $undef|false)   afs=false ;;
4781 *)      if test -d /afs; then
4782                 afs=true
4783         else
4784                 afs=false
4785         fi
4786         ;;
4787 esac
4788 if $afs; then
4789         echo "AFS may be running... I'll be extra cautious then..." >&4
4790 else
4791         echo "AFS does not seem to be running..." >&4
4792 fi
4793
4794 : determine installation prefix for where package is to be installed.
4795 if $afs; then 
4796 $cat <<EOM
4797
4798 Since you are running AFS, I need to distinguish the directory in which
4799 files will reside from the directory in which they are installed (and from
4800 which they are presumably copied to the former directory by occult means).
4801
4802 EOM
4803         case "$installprefix" in
4804         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4805         *) dflt="$installprefix";;
4806         esac
4807 else
4808 $cat <<EOM
4809
4810 In some special cases, particularly when building $package for distribution,
4811 it is convenient to distinguish between the directory in which files should 
4812 be installed from the directory ($prefix) in which they 
4813 will eventually reside.  For most users, these two directories are the same.
4814
4815 EOM
4816         case "$installprefix" in
4817         '') dflt=$prefix ;;
4818         *) dflt=$installprefix;;
4819         esac
4820 fi
4821 fn=d~
4822 rp='What installation prefix should I use for installing files?'
4823 . ./getfile
4824 installprefix="$ans"
4825 installprefixexp="$ansexp"
4826
4827 : set the prefixit variable, to compute a suitable default value
4828 prefixit='case "$3" in
4829 ""|none)
4830         case "$oldprefix" in
4831         "") eval "$1=\"\$$2\"";;
4832         *)
4833                 case "$3" in
4834                 "") eval "$1=";;
4835                 none)
4836                         eval "tp=\"\$$2\"";
4837                         case "$tp" in
4838                         ""|" ") eval "$1=\"\$$2\"";;
4839                         *) eval "$1=";;
4840                         esac;;
4841                 esac;;
4842         esac;;
4843 *)
4844         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4845         case "$tp" in
4846         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4847         /*-$oldprefix/*|\~*-$oldprefix/*)
4848                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4849         *) eval "$1=\"\$$2\"";;
4850         esac;;
4851 esac'
4852
4853
4854 : get the patchlevel
4855 echo " "
4856 echo "Getting the current patchlevel..." >&4
4857 if $test -r $rsrc/patchlevel.h;then
4858         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4859         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4860         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4861         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4862         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4863         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4864 else
4865         revision=0
4866         patchlevel=0
4867         subversion=0
4868         api_revision=0
4869         api_version=0
4870         api_subversion=0
4871 fi
4872 $echo $n "(You have $package revision $revision" $c
4873 $echo $n " patchlevel $patchlevel" $c
4874 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4875 echo ".)"
4876 case "$osname" in
4877 dos|vms)
4878         : XXX Should be a Configure test for double-dots in filenames.
4879         version=`echo $revision $patchlevel $subversion | \
4880                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4881         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4882                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4883         ;;
4884 *)
4885         version=`echo $revision $patchlevel $subversion | \
4886                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4887         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4888                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4889         ;;
4890 esac
4891 : Special case the 5.005_xx maintenance series, which used 5.005
4892 : without any subversion label as a subdirectory in $sitelib
4893 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4894         api_versionstring='5.005'
4895 fi
4896
4897 : determine installation style
4898 : For now, try to deduce it from prefix unless it is already set.
4899 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4900 case "$installstyle" in
4901 '')     case "$prefix" in
4902                 *perl*) dflt='lib';;
4903                 *) dflt='lib/perl5' ;;
4904         esac
4905         ;;
4906 *)      dflt="$installstyle" ;;
4907 esac
4908 : Probably not worth prompting for this since we prompt for all
4909 : the directories individually, and the prompt would be too long and
4910 : confusing anyway.
4911 installstyle=$dflt
4912
4913 : determine where private library files go
4914 : Usual default is /usr/local/lib/perl5/$version.
4915 : Also allow things like /opt/perl/lib/$version, since 
4916 : /opt/perl/lib/perl5... would be redundant.
4917 : The default "style" setting is made in installstyle.U
4918 case "$installstyle" in
4919 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4920 *)       set dflt privlib lib/$version ;;
4921 esac
4922 eval $prefixit
4923 $cat <<EOM
4924
4925 There are some auxiliary files for $package that need to be put into a
4926 private library directory that is accessible by everyone.
4927
4928 EOM
4929 fn=d~+
4930 rp='Pathname where the private library files will reside?'
4931 . ./getfile
4932 privlib="$ans"
4933 privlibexp="$ansexp"
4934 : Change installation prefix, if necessary.
4935 if $test X"$prefix" != X"$installprefix"; then
4936         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4937 else
4938         installprivlib="$privlibexp"
4939 fi
4940
4941 : set the prefixup variable, to restore leading tilda escape
4942 prefixup='case "$prefixexp" in
4943 "$prefix") ;;
4944 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4945 esac'
4946
4947 : determine where public architecture dependent libraries go
4948 set archlib archlib
4949 eval $prefixit
4950 : privlib default is /usr/local/lib/$package/$version
4951 : archlib default is /usr/local/lib/$package/$version/$archname
4952 : privlib may have an optional trailing /share.
4953 tdflt=`echo $privlib | $sed 's,/share$,,'`
4954 tdflt=$tdflt/$archname
4955 case "$archlib" in
4956 '')     dflt=$tdflt
4957         ;;
4958 *)      dflt="$archlib"
4959     ;;
4960 esac
4961 $cat <<EOM
4962
4963 $spackage contains architecture-dependent library files.  If you are
4964 sharing libraries in a heterogeneous environment, you might store
4965 these files in a separate location.  Otherwise, you can just include
4966 them with the rest of the public library files.
4967
4968 EOM
4969 fn=d+~
4970 rp='Where do you want to put the public architecture-dependent libraries?'
4971 . ./getfile
4972 archlib="$ans"
4973 archlibexp="$ansexp"
4974 if $test X"$archlib" = X"$privlib"; then
4975         d_archlib="$undef"
4976 else
4977         d_archlib="$define"
4978 fi
4979 : Change installation prefix, if necessary.
4980 if $test X"$prefix" != X"$installprefix"; then
4981         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4982 else
4983         installarchlib="$archlibexp"
4984 fi
4985
4986
4987 : Binary compatibility with 5.005 is not possible for builds
4988 : with advanced features
4989 case "$usethreads$usemultiplicity" in
4990 *define*)
4991         bincompat5005="$undef"
4992         d_bincompat5005="$undef"
4993         ;;
4994 *)      $cat <<EOM
4995
4996 This version of Perl can be compiled for binary compatibility with 5.005.
4997 If you decide to do so, you will be able to continue using most of the
4998 extensions that were compiled for Perl 5.005.
4999
5000 EOM
5001         case "$bincompat5005$d_bincompat5005" in
5002         *"$undef"*) dflt=n ;;
5003         *) dflt=y ;;
5004         esac
5005         rp='Binary compatibility with Perl 5.005?'
5006         . ./myread
5007         case "$ans" in
5008         y*) val="$define" ;;
5009         *)  val="$undef" ;;
5010         esac
5011         set d_bincompat5005
5012         eval $setvar
5013         case "$d_bincompat5005" in
5014         "$define")
5015                 bincompat5005="$define"
5016                 ;;
5017         *)      bincompat5005="$undef"
5018                 d_bincompat5005="$undef"
5019                 ;;
5020         esac
5021         ;;
5022 esac
5023
5024
5025 : see if setuid scripts can be secure
5026 $cat <<EOM
5027
5028 Some kernels have a bug that prevents setuid #! scripts from being
5029 secure.  Some sites have disabled setuid #! scripts because of this.
5030
5031 First let's decide if your kernel supports secure setuid #! scripts.
5032 (If setuid #! scripts would be secure but have been disabled anyway,
5033 don't say that they are secure if asked.)
5034
5035 EOM
5036
5037 val="$undef"
5038 if $test -d /dev/fd; then
5039         echo "#!$ls" >reflect
5040         chmod +x,u+s reflect
5041         ./reflect >flect 2>&1
5042         if $contains "/dev/fd" flect >/dev/null; then
5043                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5044                 val="$define"
5045         else
5046                 $cat <<EOM
5047 If you are not sure if they are secure, I can check but I'll need a
5048 username and password different from the one you are using right now.
5049 If you don't have such a username or don't want me to test, simply
5050 enter 'none'.
5051
5052 EOM
5053                 rp='Other username to test security of setuid scripts with?'
5054                 dflt='none'
5055                 . ./myread
5056                 case "$ans" in
5057                 n|none)
5058                         case "$d_suidsafe" in
5059                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5060                                 dflt=n;;
5061                         "$undef")
5062                                 echo "Well, the $hint value is *not* secure." >&4
5063                                 dflt=n;;
5064                         *)      echo "Well, the $hint value *is* secure." >&4
5065                                 dflt=y;;
5066                         esac
5067                         ;;
5068                 *)
5069                         $rm -f reflect flect
5070                         echo "#!$ls" >reflect
5071                         chmod +x,u+s reflect
5072                         echo >flect
5073                         chmod a+w flect
5074                         echo '"su" will (probably) prompt you for '"$ans's password."
5075                         su $ans -c './reflect >flect'
5076                         if $contains "/dev/fd" flect >/dev/null; then
5077                                 echo "Okay, it looks like setuid scripts are secure." >&4
5078                                 dflt=y
5079                         else
5080                                 echo "I don't think setuid scripts are secure." >&4
5081                                 dflt=n
5082                         fi
5083                         ;;
5084                 esac
5085                 rp='Does your kernel have *secure* setuid scripts?'
5086                 . ./myread
5087                 case "$ans" in
5088                 [yY]*)  val="$define";;
5089                 *)      val="$undef";;
5090                 esac
5091         fi
5092 else
5093         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5094         echo "(That's for file descriptors, not floppy disks.)"
5095         val="$undef"
5096 fi
5097 set d_suidsafe
5098 eval $setvar
5099
5100 $rm -f reflect flect
5101
5102 : now see if they want to do setuid emulation
5103 echo " "
5104 val="$undef"
5105 case "$d_suidsafe" in
5106 "$define")
5107         val="$undef"
5108         echo "No need to emulate SUID scripts since they are secure here." >& 4
5109         ;;
5110 *)
5111         $cat <<EOM
5112 Some systems have disabled setuid scripts, especially systems where
5113 setuid scripts cannot be secure.  On systems where setuid scripts have
5114 been disabled, the setuid/setgid bits on scripts are currently
5115 useless.  It is possible for $package to detect those bits and emulate
5116 setuid/setgid in a secure fashion.  This emulation will only work if
5117 setuid scripts have been disabled in your kernel.
5118
5119 EOM
5120         case "$d_dosuid" in
5121         "$define") dflt=y ;;
5122         *) dflt=n ;;
5123         esac
5124         rp="Do you want to do setuid/setgid emulation?"
5125         . ./myread
5126         case "$ans" in
5127         [yY]*)  val="$define";;
5128         *)      val="$undef";;
5129         esac
5130         ;;
5131 esac
5132 set d_dosuid
5133 eval $setvar
5134
5135 : determine filename position in cpp output
5136 echo " "
5137 echo "Computing filename position in cpp output for #include directives..." >&4
5138 echo '#include <stdio.h>' > foo.c
5139 $cat >fieldn <<EOF
5140 $startsh
5141 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5142 $grep '^[       ]*#.*stdio\.h' | \
5143 while read cline; do
5144         pos=1
5145         set \$cline
5146         while $test \$# -gt 0; do
5147                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5148                         echo "\$pos"
5149                         exit 0
5150                 fi
5151                 shift
5152                 pos=\`expr \$pos + 1\`
5153         done
5154 done
5155 EOF
5156 chmod +x fieldn
5157 fieldn=`./fieldn`
5158 $rm -f foo.c fieldn
5159 case $fieldn in
5160 '') pos='???';;
5161 1) pos=first;;
5162 2) pos=second;;
5163 3) pos=third;;
5164 *) pos="${fieldn}th";;
5165 esac
5166 echo "Your cpp writes the filename in the $pos field of the line."
5167
5168 : locate header file
5169 $cat >findhdr <<EOF
5170 $startsh
5171 wanted=\$1
5172 name=''
5173 for usrincdir in $usrinc
5174 do
5175         if test -f \$usrincdir/\$wanted; then
5176                 echo "\$usrincdir/\$wanted"
5177                 exit 0
5178         fi
5179 done
5180 awkprg='{ print \$$fieldn }'
5181 echo "#include <\$wanted>" > foo\$\$.c
5182 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5183 $grep "^[       ]*#.*\$wanted" | \
5184 while read cline; do
5185         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5186         case "\$name" in
5187         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5188         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5189         *) exit 2;;
5190         esac;
5191 done;
5192 #
5193 # status = 0: grep returned 0 lines, case statement not executed
5194 # status = 1: headerfile found
5195 # status = 2: while loop executed, no headerfile found
5196 #
5197 status=\$?
5198 $rm -f foo\$\$.c;
5199 if test \$status -eq 1; then
5200         exit 0;
5201 fi
5202 exit 1
5203 EOF
5204 chmod +x findhdr
5205
5206 : define an alternate in-header-list? function
5207 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5208 cont=true; xxf="echo \"<\$1> found.\" >&4";
5209 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5210 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5211 esac;
5212 case $# in 4) instead=instead;; *) instead="at last";; esac;
5213 while $test "$cont"; do
5214         xxx=`./findhdr $1`
5215         var=$2; eval "was=\$$2";
5216         if $test "$xxx" && $test -r "$xxx";
5217         then eval $xxf;
5218         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5219                 cont="";
5220         else eval $xxnf;
5221         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5222         set $yyy; shift; shift; yyy=$@;
5223         case $# in 0) cont="";;
5224         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5225                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5226         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5227                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5228         esac;
5229 done;
5230 while $test "$yyy";
5231 do set $yyy; var=$2; eval "was=\$$2";
5232         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5233         set $yyy; shift; shift; yyy=$@;
5234 done'
5235
5236 : see if this is a malloc.h system
5237 set malloc.h i_malloc
5238 eval $inhdr
5239
5240 : see if stdlib is available
5241 set stdlib.h i_stdlib
5242 eval $inhdr
5243
5244 : determine which malloc to compile in
5245 echo " "
5246 case "$usemymalloc" in
5247 ''|[yY]*|true|$define)  dflt='y' ;;
5248 *)      dflt='n' ;;
5249 esac
5250 rp="Do you wish to attempt to use the malloc that comes with $package?"
5251 . ./myread
5252 usemymalloc="$ans"
5253 case "$ans" in
5254 y*|true)
5255         usemymalloc='y'
5256         mallocsrc='malloc.c'
5257         mallocobj="malloc$_o"
5258         d_mymalloc="$define"
5259         case "$libs" in
5260         *-lmalloc*)
5261                 : Remove malloc from list of libraries to use
5262                 echo "Removing unneeded -lmalloc from library list" >&4
5263                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5264                 shift
5265                 libs="$*"
5266                 echo "libs = $libs" >&4
5267                 ;;
5268         esac
5269         ;;
5270 *)
5271         usemymalloc='n'
5272         mallocsrc=''
5273         mallocobj=''
5274         d_mymalloc="$undef"
5275         ;;
5276 esac
5277
5278 : compute the return types of malloc and free
5279 echo " "
5280 $cat >malloc.c <<END
5281 #$i_malloc I_MALLOC
5282 #$i_stdlib I_STDLIB
5283 #include <stdio.h>
5284 #include <sys/types.h>
5285 #ifdef I_MALLOC
5286 #include <malloc.h>
5287 #endif
5288 #ifdef I_STDLIB
5289 #include <stdlib.h>
5290 #endif
5291 #ifdef TRY_MALLOC
5292 void *malloc();
5293 #endif
5294 #ifdef TRY_FREE
5295 void free();
5296 #endif
5297 END
5298 case "$malloctype" in
5299 '')
5300         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5301                 malloctype='void *'
5302         else
5303                 malloctype='char *'
5304         fi
5305         ;;
5306 esac
5307 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5308
5309 case "$freetype" in
5310 '')
5311         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5312                 freetype='void'
5313         else
5314                 freetype='int'
5315         fi
5316         ;;
5317 esac
5318 echo "Your system uses $freetype free(), it would seem." >&4
5319 $rm -f malloc.[co]
5320 $cat <<EOM
5321
5322 After $package is installed, you may wish to install various
5323 add-on modules and utilities.  Typically, these add-ons will
5324 be installed under $prefix with the rest
5325 of this package.  However, you may wish to install such add-ons
5326 elsewhere under a different prefix.
5327
5328 If you do not wish to put everything under a single prefix, that's
5329 ok.  You will be prompted for the individual locations; this siteprefix
5330 is only used to suggest the defaults.
5331
5332 The default should be fine for most people.
5333
5334 EOM
5335 fn=d~+
5336 rp='Installation prefix to use for add-on modules and utilities?'
5337 : XXX Here might be another good place for an installstyle setting.
5338 case "$siteprefix" in
5339 '') dflt=$prefix ;;
5340 *)  dflt=$siteprefix ;;
5341 esac
5342 . ./getfile
5343 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5344 oldsiteprefix=''
5345 case "$siteprefix" in
5346 '') ;;
5347 *)      case "$ans" in
5348         "$prefix") ;;
5349         *) oldsiteprefix="$prefix";;
5350         esac
5351         ;;
5352 esac
5353 siteprefix="$ans"
5354 siteprefixexp="$ansexp"
5355
5356 : determine where site specific libraries go.
5357 : Usual default is /usr/local/lib/perl5/site_perl/$version
5358 : The default "style" setting is made in installstyle.U
5359 : XXX No longer works with Prefixit stuff.
5360 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5361 case "$sitelib" in
5362 '') case "$installstyle" in
5363         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5364         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5365         esac
5366         ;;
5367 *)      dflt="$sitelib"
5368         ;;
5369 esac
5370 $cat <<EOM
5371
5372 The installation process will create a directory for
5373 site-specific extensions and modules.  Most users find it convenient
5374 to place all site-specific files in this directory rather than in the
5375 main distribution directory.
5376
5377 EOM
5378 fn=d~+
5379 rp='Pathname for the site-specific library files?'
5380 . ./getfile
5381 sitelib="$ans"
5382 sitelibexp="$ansexp"
5383 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5384 : Change installation prefix, if necessary.
5385 if $test X"$prefix" != X"$installprefix"; then
5386         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5387 else
5388         installsitelib="$sitelibexp"
5389 fi
5390
5391 : determine where site specific architecture-dependent libraries go.
5392 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5393 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5394 : sitelib may have an optional trailing /share.
5395 case "$sitearch" in
5396 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5397         dflt="$dflt/$archname"
5398         ;;
5399 *)      dflt="$sitearch"
5400         ;;
5401 esac
5402 set sitearch sitearch none
5403 eval $prefixit
5404 $cat <<EOM
5405
5406 The installation process will also create a directory for
5407 architecture-dependent site-specific extensions and modules.
5408
5409 EOM
5410 fn=d~+
5411 rp='Pathname for the site-specific architecture-dependent library files?'
5412 . ./getfile
5413 sitearch="$ans"
5414 sitearchexp="$ansexp"
5415 : Change installation prefix, if necessary.
5416 if $test X"$prefix" != X"$installprefix"; then
5417         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5418 else
5419         installsitearch="$sitearchexp"
5420 fi
5421
5422 $cat <<EOM
5423
5424 The installation process will also create a directory for
5425 vendor-supplied add-ons.  Vendors who supply perl with their system
5426 may find it convenient to place all vendor-supplied files in this
5427 directory rather than in the main distribution directory.  This will
5428 ease upgrades between binary-compatible maintenance versions of perl.
5429
5430 Of course you may also use these directories in whatever way you see
5431 fit.  For example, you might use them to access modules shared over a
5432 company-wide network.
5433
5434 The default answer should be fine for most people.
5435 This causes further questions about vendor add-ons to be skipped
5436 and no vendor-specific directories will be configured for perl.
5437
5438 EOM
5439 rp='Do you want to configure vendor-specific add-on directories?'
5440 case "$usevendorprefix" in
5441 define|true|[yY]*) dflt=y ;;
5442 *)      : User may have set vendorprefix directly on Configure command line.
5443         case "$vendorprefix" in
5444         ''|' ') dflt=n ;;
5445         *)      dflt=y ;;
5446         esac
5447         ;;
5448 esac
5449 . ./myread
5450 case "$ans" in
5451 [yY]*)  fn=d~+
5452         rp='Installation prefix to use for vendor-supplied add-ons?'
5453         case "$vendorprefix" in
5454         '') dflt='' ;;
5455         *)  dflt=$vendorprefix ;;
5456         esac
5457         . ./getfile
5458         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5459         oldvendorprefix=''
5460         case "$vendorprefix" in
5461         '') ;;
5462         *)      case "$ans" in
5463                 "$prefix") ;;
5464                 *) oldvendorprefix="$prefix";;
5465                 esac
5466                 ;;
5467         esac
5468         usevendorprefix="$define"
5469         vendorprefix="$ans"
5470         vendorprefixexp="$ansexp"
5471         ;;
5472 *)      usevendorprefix="$undef"
5473         vendorprefix=''
5474         vendorprefixexp=''
5475         ;;
5476 esac
5477
5478 case "$vendorprefix" in
5479 '')     d_vendorlib="$undef"
5480         vendorlib=''
5481         vendorlibexp=''
5482         ;;
5483 *)      d_vendorlib="$define"
5484         : determine where vendor-supplied modules go.
5485         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5486         case "$vendorlib" in
5487         '')
5488                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5489                 case "$installstyle" in
5490                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5491                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5492                 esac
5493                 ;;
5494         *)      dflt="$vendorlib"
5495                 ;;
5496         esac
5497         fn=d~+
5498         rp='Pathname for the vendor-supplied library files?'
5499         . ./getfile
5500         vendorlib="$ans"
5501         vendorlibexp="$ansexp"
5502         ;;
5503 esac
5504 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5505 : Change installation prefix, if necessary.
5506 if $test X"$prefix" != X"$installprefix"; then
5507         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5508 else
5509         installvendorlib="$vendorlibexp"
5510 fi
5511
5512 case "$vendorprefix" in
5513 '')     d_vendorarch="$undef"
5514         vendorarch=''
5515         vendorarchexp=''
5516         ;;
5517 *)      d_vendorarch="$define"
5518         : determine where vendor-supplied architecture-dependent libraries go.
5519         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5520         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5521         : vendorlib may have an optional trailing /share.
5522         case "$vendorarch" in
5523         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5524                 dflt="$dflt/$archname"
5525                 ;;
5526         *)      dflt="$vendorarch" ;;
5527         esac
5528         fn=d~+
5529         rp='Pathname for vendor-supplied architecture-dependent files?'
5530         . ./getfile
5531         vendorarch="$ans"
5532         vendorarchexp="$ansexp"
5533         ;;
5534 esac
5535 : Change installation prefix, if necessary.
5536 if $test X"$prefix" != X"$installprefix"; then
5537         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5538 else
5539         installvendorarch="$vendorarchexp"
5540 fi
5541
5542 : Final catch-all directories to search
5543 $cat <<EOM
5544
5545 Lastly, you can have perl look in other directories for extensions and
5546 modules in addition to those already specified.
5547 These directories will be searched after 
5548         $sitearch 
5549         $sitelib 
5550 EOM
5551 test X"$vendorlib" != "X" && echo '     ' $vendorlib
5552 test X"$vendorarch" != "X" && echo '    ' $vendorarch
5553 echo ' '
5554 case "$otherlibdirs" in
5555 ''|' ') dflt='none' ;;
5556 *)      dflt="$otherlibdirs" ;;
5557 esac
5558 $cat <<EOM
5559 Enter a colon-separated set of extra paths to include in perl's @INC
5560 search path, or enter 'none' for no extra paths.
5561
5562 EOM
5563
5564 rp='Colon-separated list of additional directories for perl to search?'
5565 . ./myread
5566 case "$ans" in
5567 ' '|''|none)    otherlibdirs=' ' ;;     
5568 *)      otherlibdirs="$ans" ;;
5569 esac
5570 case "$otherlibdirs" in
5571 ' ') val=$undef ;;
5572 *)      val=$define ;;
5573 esac
5574 set d_perl_otherlibdirs
5575 eval $setvar
5576
5577 : Cruising for prototypes
5578 echo " "
5579 echo "Checking out function prototypes..." >&4
5580 $cat >prototype.c <<'EOCP'
5581 int main(int argc, char *argv[]) {
5582         exit(0);}
5583 EOCP
5584 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5585         echo "Your C compiler appears to support function prototypes."
5586         val="$define"
5587 else
5588         echo "Your C compiler doesn't seem to understand function prototypes."
5589         val="$undef"
5590 fi
5591 set prototype
5592 eval $setvar
5593 $rm -f prototype*
5594
5595 case "$prototype" in
5596 "$define") ;;
5597 *)      ansi2knr='ansi2knr'
5598         echo " "
5599         cat <<EOM >&4
5600
5601 $me:  FATAL ERROR:
5602 This version of $package can only be compiled by a compiler that 
5603 understands function prototypes.  Unfortunately, your C compiler 
5604         $cc $ccflags
5605 doesn't seem to understand them.  Sorry about that.
5606
5607 If GNU cc is available for your system, perhaps you could try that instead.  
5608
5609 Eventually, we hope to support building Perl with pre-ANSI compilers.
5610 If you would like to help in that effort, please contact <perlbug@perl.org>.
5611
5612 Aborting Configure now.
5613 EOM
5614         exit 2
5615         ;;
5616 esac
5617
5618 : determine where public executables go
5619 echo " "
5620 set dflt bin bin
5621 eval $prefixit
5622 fn=d~
5623 rp='Pathname where the public executables will reside?'
5624 . ./getfile
5625 if $test "X$ansexp" != "X$binexp"; then
5626         installbin=''
5627 fi
5628 bin="$ans"
5629 binexp="$ansexp"
5630 : Change installation prefix, if necessary.
5631 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5632 if $test X"$prefix" != X"$installprefix"; then
5633         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5634 else
5635         installbin="$binexp"
5636 fi
5637
5638 : Find perl5.005 or later.
5639 echo "Looking for a previously installed perl5.005 or later... "
5640 case "$perl5" in
5641 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5642                 : Check if this perl is recent and can load a simple module
5643                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5644                         perl5=$tdir/perl
5645                         break;
5646                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5647                         perl5=$tdir/perl
5648                         break;
5649                 fi
5650         done
5651         ;;
5652 *)      perl5="$perl5"
5653         ;;
5654 esac
5655 case "$perl5" in
5656 '')     echo "None found.  That's ok.";;
5657 *)      echo "Using $perl5." ;;
5658 esac
5659
5660 : Determine list of previous versions to include in @INC
5661 $cat > getverlist <<EOPL
5662 #!$perl5 -w
5663 use File::Basename;
5664 \$api_versionstring = "$api_versionstring";
5665 \$version = "$version";
5666 \$stem = "$sitelib_stem";
5667 \$archname = "$archname";
5668 EOPL
5669         $cat >> getverlist <<'EOPL'
5670 # Can't have leading @ because metaconfig interprets it as a command!
5671 ;@inc_version_list=();
5672 # XXX Redo to do opendir/readdir? 
5673 if (-d $stem) {
5674     chdir($stem);
5675     ;@candidates = glob("5.*");
5676 }
5677 else {
5678     ;@candidates = ();
5679 }
5680
5681 # XXX ToDo:  These comparisons must be reworked when two-digit
5682 # subversions come along, so that 5.7.10 compares as greater than
5683 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5684 # widespread that we can use the built-in version vectors rather
5685 # than reinventing them here.  For 5.6.0, however, we must
5686 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5687 foreach $d (@candidates) {
5688     if ($d lt $version) {
5689         if ($d ge $api_versionstring) {
5690             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5691         }
5692         elsif ($d ge "5.005") {
5693             unshift(@inc_version_list, grep { -d } $d);
5694         }
5695     }
5696     else {
5697         # Skip newer version.  I.e. don't look in
5698         # 5.7.0 if we're installing 5.6.1.
5699     }
5700 }
5701
5702 if (@inc_version_list) {
5703     print join(' ', @inc_version_list);
5704 }
5705 else {
5706     # Blank space to preserve value for next Configure run.
5707     print " ";
5708 }
5709 EOPL
5710 chmod +x getverlist
5711 case "$inc_version_list" in
5712 '')     if test -x "$perl5"; then
5713                 dflt=`$perl5 getverlist`
5714         else
5715                 dflt='none'
5716         fi
5717         ;;
5718 $undef) dflt='none' ;;
5719 *)  dflt="$inc_version_list" ;;
5720 esac
5721 case "$dflt" in
5722 ''|' ') dflt=none ;;
5723 esac
5724 $cat <<'EOM'
5725
5726 In order to ease the process of upgrading, this version of perl 
5727 can be configured to use modules built and installed with earlier 
5728 versions of perl that were installed under $prefix.  Specify here
5729 the list of earlier versions that this version of perl should check.
5730 If Configure detected no earlier versions of perl installed under
5731 $prefix, then the list will be empty.  Answer 'none' to tell perl
5732 to not search earlier versions.
5733
5734 The default should almost always be sensible, so if you're not sure,
5735 just accept the default.
5736 EOM
5737
5738 rp='List of earlier versions to include in @INC?'
5739 . ./myread
5740 case "$ans" in
5741 [Nn]one|''|' ') inc_version_list=' ' ;;
5742 *) inc_version_list="$ans" ;;
5743 esac
5744 case "$inc_version_list" in
5745 ''|' ') 
5746         inc_version_list_init='0';;
5747 *)      inc_version_list_init=`echo $inc_version_list |
5748                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5749         ;;
5750 esac
5751 $rm -f getverlist
5752
5753 : determine whether to install perl also as /usr/bin/perl
5754
5755 echo " "
5756 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5757         $cat <<EOM
5758 Many scripts expect perl to be installed as /usr/bin/perl.
5759 I can install the perl you are about to compile also as /usr/bin/perl
5760 (in addition to $installbin/perl).
5761 EOM
5762         case "$installusrbinperl" in
5763         "$undef"|[nN]*) dflt='n';;
5764         *)              dflt='y';;
5765         esac
5766         rp="Do you want to install perl as /usr/bin/perl?"
5767         . ./myread
5768         case "$ans" in
5769         [yY]*)  val="$define";;
5770         *)      val="$undef" ;;
5771         esac
5772 else
5773         val="$undef"
5774 fi
5775 set installusrbinperl
5776 eval $setvar
5777
5778 echo " "
5779 echo "Checking for GNU C Library..." >&4
5780 cat >gnulibc.c <<EOM
5781 #include <stdio.h>
5782 int main()
5783 {
5784 #ifdef __GLIBC__
5785     exit(0);
5786 #else
5787     exit(1);
5788 #endif
5789 }
5790 EOM
5791 set gnulibc
5792 if eval $compile_ok && ./gnulibc; then
5793         val="$define"
5794         echo "You are using the GNU C Library"
5795 else
5796         val="$undef"
5797         echo "You are not using the GNU C Library"
5798 fi
5799 $rm -f gnulibc*
5800 set d_gnulibc
5801 eval $setvar
5802
5803 : see if nm is to be used to determine whether a symbol is defined or not
5804 case "$usenm" in
5805 '')
5806         dflt=''
5807         case "$d_gnulibc" in
5808         "$define")
5809                 echo " "
5810                 echo "nm probably won't work on the GNU C Library." >&4
5811                 dflt=n
5812                 ;;
5813         esac
5814         case "$dflt" in
5815         '') 
5816                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5817                         echo " "
5818                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5819                         echo "'nm' won't be sufficient on this sytem." >&4
5820                         dflt=n
5821                 fi
5822                 ;;
5823         esac
5824         case "$dflt" in
5825         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5826                 if $test $dflt -gt 20; then
5827                         dflt=y
5828                 else
5829                         dflt=n
5830                 fi
5831                 ;;
5832         esac
5833         ;;
5834 *)
5835         case "$usenm" in
5836         true|$define) dflt=y;;
5837         *) dflt=n;;
5838         esac
5839         ;;
5840 esac
5841 $cat <<EOM
5842
5843 I can use $nm to extract the symbols from your C libraries. This
5844 is a time consuming task which may generate huge output on the disk (up
5845 to 3 megabytes) but that should make the symbols extraction faster. The
5846 alternative is to skip the 'nm' extraction part and to compile a small
5847 test program instead to determine whether each symbol is present. If
5848 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5849 this may be the best solution.
5850
5851 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5852
5853 EOM
5854 rp="Shall I use $nm to extract C symbols from the libraries?"
5855 . ./myread
5856 case "$ans" in
5857 [Nn]*) usenm=false;;
5858 *) usenm=true;;
5859 esac
5860
5861 runnm=$usenm
5862 case "$reuseval" in
5863 true) runnm=false;;
5864 esac
5865
5866 : nm options which may be necessary
5867 case "$nm_opt" in
5868 '') if $test -f /mach_boot; then
5869                 nm_opt=''       # Mach
5870         elif $test -d /usr/ccs/lib; then
5871                 nm_opt='-p'     # Solaris (and SunOS?)
5872         elif $test -f /dgux; then
5873                 nm_opt='-p'     # DG-UX
5874         elif $test -f /lib64/rld; then
5875                 nm_opt='-p'     # 64-bit Irix
5876         else
5877                 nm_opt=''
5878         fi;;
5879 esac
5880
5881 : nm options which may be necessary for shared libraries but illegal
5882 : for archive libraries.  Thank you, Linux.
5883 case "$nm_so_opt" in
5884 '')     case "$myuname" in
5885         *linux*)
5886                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5887                         nm_so_opt='--dynamic'
5888                 fi
5889                 ;;
5890         esac
5891         ;;
5892 esac
5893
5894 case "$runnm" in
5895 true)
5896 : get list of predefined functions in a handy place
5897 echo " "
5898 case "$libc" in
5899 '') libc=unknown
5900         case "$libs" in
5901         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5902         esac
5903         ;;
5904 esac
5905 libnames='';
5906 case "$libs" in
5907 '') ;;
5908 *)  for thislib in $libs; do
5909         case "$thislib" in
5910         -lc|-lc_s)
5911                 : Handle C library specially below.
5912                 ;;
5913         -l*)
5914                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5915                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5916                         :
5917                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5918                         :
5919                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5920                         :
5921                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5922                         :
5923                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5924                         :
5925                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5926                         :
5927                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5928                         :
5929                 else
5930                         try=''
5931                 fi
5932                 libnames="$libnames $try"
5933                 ;;
5934         *) libnames="$libnames $thislib" ;;
5935         esac
5936         done
5937         ;;
5938 esac
5939 xxx=normal
5940 case "$libc" in
5941 unknown)
5942         set /lib/libc.$so
5943         for xxx in $libpth; do
5944                 $test -r $1 || set $xxx/libc.$so
5945                 : The messy sed command sorts on library version numbers.
5946                 $test -r $1 || \
5947                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5948                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5949                                 h
5950                                 s/[0-9][0-9]*/0000&/g
5951                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5952                                 G
5953                                 s/\n/ /' | \
5954                          sort | $sed -e 's/^.* //'`
5955                 eval set \$$#
5956         done
5957         $test -r $1 || set /usr/ccs/lib/libc.$so
5958         $test -r $1 || set /lib/libsys_s$_a
5959         ;;
5960 *)
5961         set blurfl
5962         ;;
5963 esac
5964 if $test -r "$1"; then
5965         echo "Your (shared) C library seems to be in $1."
5966         libc="$1"
5967 elif $test -r /lib/libc && $test -r /lib/clib; then
5968         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5969         xxx=apollo
5970         libc='/lib/clib /lib/libc'
5971         if $test -r /lib/syslib; then
5972                 echo "(Your math library is in /lib/syslib.)"
5973                 libc="$libc /lib/syslib"
5974         fi
5975 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5976         echo "Your C library seems to be in $libc, as you said before."
5977 elif $test -r $incpath/usr/lib/libc$_a; then
5978         libc=$incpath/usr/lib/libc$_a;
5979         echo "Your C library seems to be in $libc.  That's fine."
5980 elif $test -r /lib/libc$_a; then
5981         libc=/lib/libc$_a;
5982         echo "Your C library seems to be in $libc.  You're normal."
5983 else
5984         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5985                 :
5986         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5987                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5988         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5989                 :
5990         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5991                 :
5992         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5993                 :
5994         else
5995                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5996         fi
5997         if $test -r "$tans"; then
5998                 echo "Your C library seems to be in $tans, of all places."
5999                 libc=$tans
6000         else
6001                 libc='blurfl'
6002         fi
6003 fi
6004 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6005         dflt="$libc"
6006         cat <<EOM
6007
6008 If the guess above is wrong (which it might be if you're using a strange
6009 compiler, or your machine supports multiple models), you can override it here.
6010
6011 EOM
6012 else
6013         dflt=''
6014         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
6015         cat >&4 <<EOM
6016 I can't seem to find your C library.  I've looked in the following places:
6017
6018 EOM
6019         $sed 's/^/      /' libpath
6020         cat <<EOM
6021
6022 None of these seems to contain your C library. I need to get its name...
6023
6024 EOM
6025 fi
6026 fn=f
6027 rp='Where is your C library?'
6028 . ./getfile
6029 libc="$ans"
6030
6031 echo " "
6032 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
6033 set X `cat libnames`
6034 shift
6035 xxx=files
6036 case $# in 1) xxx=file; esac
6037 echo "Extracting names from the following $xxx for later perusal:" >&4
6038 echo " "
6039 $sed 's/^/      /' libnames >&4
6040 echo " "
6041 $echo $n "This may take a while...$c" >&4
6042
6043 for file in $*; do
6044         case $file in
6045         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6046         *) $nm $nm_opt $file 2>/dev/null;;
6047         esac
6048 done >libc.tmp
6049
6050 $echo $n ".$c"
6051 $grep fprintf libc.tmp > libc.ptf
6052 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6053 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6054 xxx='[ADTSIW]'
6055 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
6056         eval $xscan;\
6057         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6058                 eval $xrun
6059 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6060         eval $xscan;\
6061         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6062                 eval $xrun
6063 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6064         eval $xscan;\
6065         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6066                 eval $xrun
6067 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6068         eval $xscan;\
6069         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6070                 eval $xrun
6071 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6072         eval $xscan;\
6073         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6074                 eval $xrun
6075 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6076         eval $xscan;\
6077         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6078                 eval $xrun
6079 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6080                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6081         eval $xscan;\
6082         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6083                 eval $xrun
6084 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6085         eval $xscan;\
6086         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6087                 eval $xrun
6088 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6089         eval $xscan;\
6090         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6091                 eval $xrun
6092 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6093         eval $xscan;\
6094         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6095                 eval $xrun
6096 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6097         eval $xscan;\
6098         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6099                 eval $xrun
6100 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6101         eval $xscan;\
6102         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6103                 eval $xrun
6104 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6105         eval $xscan;\
6106         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6107                 eval $xrun
6108 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6109         eval $xscan;\
6110         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6111                 eval $xrun
6112 else
6113         $nm -p $* 2>/dev/null >libc.tmp
6114         $grep fprintf libc.tmp > libc.ptf
6115         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6116                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6117         then
6118                 nm_opt='-p'
6119                 eval $xrun
6120         else
6121                 echo " "
6122                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6123                 com=''
6124                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6125                         for thisname in $libnames $libc; do
6126                                 $ar t $thisname >>libc.tmp
6127                         done
6128                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6129                         echo "Ok." >&4
6130                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6131                         # Repeat libc to extract forwarders to DLL entries too
6132                         for thisname in $libnames $libc; do
6133                                 $ar tv $thisname >>libc.tmp
6134                                 # Revision 50 of EMX has bug in $ar.
6135                                 # it will not extract forwarders to DLL entries
6136                                 # Use emximp which will extract exactly them.
6137                                 emximp -o tmp.imp $thisname \
6138                                     2>/dev/null && \
6139                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6140                                     < tmp.imp >>libc.tmp
6141                                 $rm tmp.imp
6142                         done
6143                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6144                         echo "Ok." >&4
6145                 else
6146                         echo "$ar didn't seem to work right." >&4
6147                         echo "Maybe this is a Cray...trying bld instead..." >&4
6148                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6149                         then
6150                                 for thisname in $libnames; do
6151                                         bld t $libnames | \
6152                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6153                                         $ar t $thisname >>libc.tmp
6154                                 done
6155                                 echo "Ok." >&4
6156                         else
6157                                 echo "That didn't work either.  Giving up." >&4
6158                                 exit 1
6159                         fi
6160                 fi
6161         fi
6162 fi
6163 nm_extract="$com"
6164 if $test -f /lib/syscalls.exp; then
6165         echo " "
6166         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6167         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6168 fi
6169 ;;
6170 esac
6171 $rm -f libnames libpath
6172
6173 : see if dld is available
6174 set dld.h i_dld
6175 eval $inhdr
6176
6177 : is a C symbol defined?
6178 csym='tlook=$1;
6179 case "$3" in
6180 -v) tf=libc.tmp; tc=""; tdc="";;
6181 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6182 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6183 esac;
6184 tx=yes;
6185 case "$reuseval-$4" in
6186 true-) ;;
6187 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6188 esac;
6189 case "$tx" in
6190 yes)
6191         case "$runnm" in
6192         true)
6193                 if $contains $tlook $tf >/dev/null 2>&1;
6194                 then tval=true;
6195                 else tval=false;
6196                 fi;;
6197         *)
6198                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6199                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6200                 then tval=true;
6201                 else tval=false;
6202                 fi;
6203                 $rm -f t t.c;;
6204         esac;;
6205 *)
6206         case "$tval" in
6207         $define) tval=true;;
6208         *) tval=false;;
6209         esac;;
6210 esac;
6211 eval "$2=$tval"'
6212
6213 : define an is-in-libc? function
6214 inlibc='echo " "; td=$define; tu=$undef;
6215 sym=$1; var=$2; eval "was=\$$2";
6216 tx=yes;
6217 case "$reuseval$was" in
6218 true) ;;
6219 true*) tx=no;;
6220 esac;
6221 case "$tx" in
6222 yes)
6223         set $sym tres -f;
6224         eval $csym;
6225         case "$tres" in
6226         true)
6227                 echo "$sym() found." >&4;
6228                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6229         *)
6230                 echo "$sym() NOT found." >&4;
6231                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6232         esac;;
6233 *)
6234         case "$was" in
6235         $define) echo "$sym() found." >&4;;
6236         *) echo "$sym() NOT found." >&4;;
6237         esac;;
6238 esac'
6239
6240 : see if dlopen exists
6241 xxx_runnm="$runnm"
6242 runnm=false
6243 set dlopen d_dlopen
6244 eval $inlibc
6245 runnm="$xxx_runnm"
6246
6247 : determine which dynamic loading, if any, to compile in
6248 echo " "
6249 dldir="ext/DynaLoader"
6250 case "$usedl" in
6251 $define|y|true)
6252         dflt='y'
6253         usedl="$define"
6254         ;;
6255 $undef|n|false)
6256         dflt='n'
6257         usedl="$undef"
6258         ;;
6259 *) 
6260         dflt='n'
6261         case "$d_dlopen" in
6262             $define) dflt='y' ;;
6263         esac
6264         case "$i_dld" in
6265             $define) dflt='y' ;;
6266         esac
6267         : Does a dl_xxx.xs file exist for this operating system
6268         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6269         ;;
6270 esac
6271 rp="Do you wish to use dynamic loading?"
6272 . ./myread
6273 usedl="$ans"
6274 case "$ans" in
6275 y*) usedl="$define"
6276         case "$dlsrc" in
6277         '')
6278                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6279                         dflt="$dldir/dl_${osname}.xs"
6280                 elif $test "$d_dlopen" = "$define" ; then
6281                         dflt="$dldir/dl_dlopen.xs"
6282                 elif $test "$i_dld" = "$define" ; then
6283                         dflt="$dldir/dl_dld.xs"
6284                 else
6285                         dflt=''
6286                 fi
6287                 ;;
6288         *)      dflt="$dldir/$dlsrc"
6289                 ;;
6290         esac
6291     echo "The following dynamic loading files are available:"
6292         : Can not go over to $dldir because getfile has path hard-coded in.
6293         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6294         rp="Source file to use for dynamic loading"
6295         fn="fne"
6296         gfpth="$src"
6297         . ./getfile
6298         usedl="$define"
6299         : emulate basename
6300         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6301
6302         $cat << EOM
6303
6304 Some systems may require passing special flags to $cc -c to
6305 compile modules that will be used to create a shared library.
6306 To use no flags, say "none".
6307
6308 EOM
6309     case "$cccdlflags" in
6310     '') case "$gccversion" in
6311                 '') case "$osname" in
6312                         hpux)   dflt='+z' ;;
6313                         next)   dflt='none' ;;
6314                         irix*)  dflt='-KPIC' ;;
6315                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6316                         sunos)  dflt='-pic' ;;
6317                         *)      dflt='none' ;;
6318                     esac
6319                         ;;
6320                 *)  case "$osname" in
6321                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6322                         *)      dflt='-fpic' ;;
6323                     esac ;;
6324             esac ;;
6325         ' ') dflt='none' ;;
6326     *)  dflt="$cccdlflags" ;;
6327     esac
6328     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6329     . ./myread
6330     case "$ans" in
6331     none) cccdlflags=' ' ;;
6332     *) cccdlflags="$ans" ;;
6333     esac
6334
6335     cat << EOM
6336
6337 Some systems use ld to create libraries that can be dynamically loaded,
6338 while other systems (such as those using ELF) use $cc.
6339
6340 EOM
6341         case "$ld" in
6342         '')     $cat >try.c <<'EOM'
6343 /* Test for whether ELF binaries are produced */
6344 #include <fcntl.h>
6345 #include <stdlib.h>
6346 int main() {
6347         char b[4];
6348         int i = open("a.out",O_RDONLY);
6349         if(i == -1) 
6350                 exit(1); /* fail */
6351         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6352                 exit(0); /* succeed (yes, it's ELF) */
6353         else
6354                 exit(1); /* fail */
6355 }
6356 EOM
6357                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6358                         cat <<EOM
6359 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6360 EOM
6361                         dflt="$cc"
6362                 else
6363                         echo "I'll use ld to build dynamic libraries."
6364                         dflt='ld'
6365                 fi
6366                 rm -f try.c a.out
6367                 ;;
6368         *)      dflt="$ld"
6369                 ;;
6370         esac
6371
6372     rp="What command should be used to create dynamic libraries?"
6373     . ./myread
6374         ld="$ans"
6375
6376     cat << EOM
6377
6378 Some systems may require passing special flags to $ld to create a
6379 library that can be dynamically loaded.  If your ld flags include
6380 -L/other/path options to locate libraries outside your loader's normal
6381 search path, you may need to specify those -L options here as well.  To
6382 use no flags, say "none".
6383
6384 EOM
6385     case "$lddlflags" in
6386     '') case "$osname" in
6387                         beos) dflt='-nostart' ;;
6388                         hpux) dflt='-b';
6389                               case "$gccversion" in
6390                               '') dflt="$dflt +vnocompatwarnings" ;;
6391                               esac
6392                               ;;        
6393                         linux|irix*)    dflt='-shared' ;;
6394                         next)  dflt='none' ;;
6395                         solaris) dflt='-G' ;;
6396                         sunos) dflt='-assert nodefinitions' ;;
6397                         svr4*|esix*) dflt="-G $ldflags" ;;
6398                 *)     dflt='none' ;;
6399                         esac
6400                         ;;
6401     *) dflt="$lddlflags" ;;
6402     esac
6403
6404         : Try to guess additional flags to pick up local libraries.
6405         : Be careful not to append to a plain 'none'
6406         case "$dflt" in
6407         none) dflt='' ;;
6408         esac
6409         for thisflag in $ldflags; do
6410                 case "$thisflag" in
6411                 -L*)
6412                         case " $dflt " in
6413                         *" $thisflag "*) ;;
6414                         *) dflt="$dflt $thisflag" ;;
6415                         esac
6416                         ;;
6417                 esac
6418         done
6419
6420         case "$dflt" in
6421         ''|' ') dflt='none' ;;
6422         esac
6423
6424     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6425     . ./myread
6426     case "$ans" in
6427     none) lddlflags=' ' ;;
6428     *) lddlflags="$ans" ;;
6429     esac
6430
6431         cat <<EOM
6432
6433 Some systems may require passing special flags to $cc to indicate that
6434 the resulting executable will use dynamic linking.  To use no flags,
6435 say "none".
6436
6437 EOM
6438     case "$ccdlflags" in
6439     '') case "$osname" in
6440                 hpux)   dflt='-Wl,-E' ;;
6441                 linux)  dflt='-rdynamic' ;;
6442                 next)   dflt='none' ;;
6443                 sunos)  dflt='none' ;;
6444                 *)      dflt='none' ;;
6445             esac ;;
6446     ' ')  dflt='none' ;;
6447     *)  dflt="$ccdlflags" ;;
6448     esac
6449     rp="Any special flags to pass to $cc to use dynamic linking?"
6450     . ./myread
6451     case "$ans" in
6452     none) ccdlflags=' ' ;;
6453     *) ccdlflags="$ans" ;;
6454     esac
6455     ;;
6456 *)  usedl="$undef"
6457         ld='ld'
6458     dlsrc='dl_none.xs'
6459     lddlflags=''
6460     ccdlflags=''
6461     ;;
6462 esac
6463
6464 also=''
6465 case "$usedl" in
6466 $undef)
6467         # No dynamic loading being used, so don't bother even to prompt.
6468         useshrplib='false'
6469         ;;
6470 *)      case "$useshrplib" in
6471         '')     case "$osname" in
6472                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6473                         dflt=y
6474                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6475                         ;;
6476                 next*)
6477                         case "$osvers" in
6478                         4*)     dflt=y
6479                                 also='Building a shared libperl is needed for MAB support.'
6480                                 ;;
6481                         *)      dflt=n
6482                                 ;;
6483                         esac
6484                         ;;
6485                 *)      dflt=n
6486                         ;;
6487                 esac
6488                 ;;
6489         $define|true|[Yy]*)
6490                 dflt=y
6491                 ;;
6492         *)      dflt=n
6493                 ;;
6494         esac
6495         $cat << EOM
6496
6497 The perl executable is normally obtained by linking perlmain.c with
6498 libperl${_a}, any static extensions (usually just DynaLoader), and
6499 any other libraries needed on this system (such as -lm, etc.).  Since
6500 your system supports dynamic loading, it is probably possible to build
6501 a shared libperl.$so.  If you will have more than one executable linked
6502 to libperl.$so, this will significantly reduce the size of each
6503 executable, but it may have a noticeable affect on performance.  The
6504 default is probably sensible for your system.
6505 $also
6506
6507 EOM
6508         rp="Build a shared libperl.$so (y/n)"
6509         . ./myread
6510         case "$ans" in
6511         true|$define|[Yy]*)
6512                 useshrplib='true'  ;;
6513         *)      useshrplib='false' ;;
6514         esac
6515         ;;
6516 esac
6517
6518 case "$useshrplib" in
6519 true)
6520         case "$libperl" in
6521         '')
6522                 # Figure out a good name for libperl.so.  Since it gets stored in
6523                 # a version-specific architecture-dependent library, the version
6524                 # number isn't really that important, except for making cc/ld happy.
6525                 #
6526                 # A name such as libperl.so.3.1
6527                 majmin="libperl.$so.$patchlevel.$subversion"
6528                 # A name such as libperl.so.301
6529                 majonly=`echo $patchlevel $subversion |
6530                         $awk '{printf "%d%02d", $1, $2}'`
6531                 majonly=libperl.$so.$majonly
6532                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6533                 # rely on figuring it out from the naming of libc.
6534                 case "${osname}${osvers}" in
6535                 next4*)
6536                         dflt=libperl.5.$so
6537                         # XXX How handle the --version stuff for MAB?
6538                         ;;
6539                 linux*)  # ld won't link with a bare -lperl otherwise.
6540                         dflt=libperl.$so
6541                         ;;
6542                 cygwin*) # include version
6543                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6544                         ;;
6545                 *)      # Try to guess based on whether libc has major.minor.
6546                         case "$libc" in
6547                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6548                         *libc.$so.[0-9]*) dflt=$majonly ;;
6549                         *)      dflt=libperl.$so ;;
6550                         esac
6551                         ;;
6552                 esac
6553                 ;;
6554         *)      dflt=$libperl
6555                 ;;
6556         esac
6557         cat << EOM
6558
6559 I need to select a good name for the shared libperl.  If your system uses
6560 library names with major and minor numbers, then you might want something
6561 like $majmin.  Alternatively, if your system uses a single version
6562 number for shared libraries, then you might want to use $majonly.
6563 Or, your system might be quite happy with a simple libperl.$so.
6564
6565 Since the shared libperl will get installed into a version-specific
6566 architecture-dependent directory, the version number of the shared perl
6567 library probably isn't important, so the default should be o.k.
6568
6569 EOM
6570         rp='What name do you want to give to the shared libperl?'
6571         . ./myread
6572         libperl=$ans
6573         echo "Ok, I'll use $libperl"
6574         ;;
6575 *)
6576         libperl="libperl${_a}"
6577         ;;
6578 esac
6579
6580 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6581 case "$shrpdir" in
6582 '') ;;
6583 *)      $cat >&4 <<EOM
6584 WARNING:  Use of the shrpdir variable for the installation location of
6585 the shared $libperl is not supported.  It was never documented and
6586 will not work in this version.  Let me (perlbug@perl.com)
6587 know of any problems this may cause.
6588
6589 EOM
6590         case "$shrpdir" in
6591         "$archlibexp/CORE")
6592                 $cat >&4 <<EOM
6593 But your current setting of $shrpdir is
6594 the default anyway, so it's harmless.
6595 EOM
6596                 ;;
6597         *)
6598                 $cat >&4 <<EOM
6599 Further, your current attempted setting of $shrpdir
6600 conflicts with the value of $archlibexp/CORE
6601 that installperl will use.
6602 EOM
6603                 ;;
6604         esac
6605         ;;
6606 esac
6607
6608 # How will the perl executable find the installed shared $libperl?
6609 # Add $xxx to ccdlflags.
6610 # If we can't figure out a command-line option, use $shrpenv to
6611 # set env LD_RUN_PATH.  The main perl makefile uses this.
6612 shrpdir=$archlibexp/CORE
6613 xxx=''
6614 tmp_shrpenv=''
6615 if "$useshrplib"; then
6616     case "$osname" in 
6617         aix)
6618                 # We'll set it in Makefile.SH...
6619                 ;;
6620         solaris|netbsd)
6621                 xxx="-R $shrpdir"
6622                 ;;
6623         freebsd)
6624                 xxx="-Wl,-R$shrpdir"
6625                 ;;
6626         linux|irix*|dec_osf)
6627                 xxx="-Wl,-rpath,$shrpdir"
6628                 ;;
6629         next)
6630                 # next doesn't like the default...
6631                 ;;
6632         beos)
6633                 # beos doesn't like the default, either.
6634                 ;;
6635         hpux*)
6636                 # hpux doesn't like the default, either.
6637                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6638                 ;;
6639         *)
6640                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6641                 ;;
6642         esac
6643         case "$xxx" in
6644         '') ;;
6645         *)      
6646                 # Only add $xxx if it isn't already in ccdlflags.
6647                 case " $ccdlflags " in
6648                 *" $xxx "*)     ;;
6649                 *)      ccdlflags="$ccdlflags $xxx"
6650                         cat <<EOM >&4
6651
6652 Adding $xxx to the flags
6653 passed to $ld so that the perl executable will find the 
6654 installed shared $libperl.
6655
6656 EOM
6657                         ;;
6658                 esac
6659                 ;;
6660         esac
6661 fi
6662 # Fix ccdlflags in AIX for building external extensions.
6663 # (For building Perl itself bare -bE:perl.exp is needed,
6664 #  Makefile.SH takes care of this.)
6665 case "$osname" in
6666 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6667 esac
6668 # Respect a hint or command-line value.
6669 case "$shrpenv" in
6670 '') shrpenv="$tmp_shrpenv" ;;
6671 esac
6672 case "$ldlibpthname" in
6673 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6674 none)   ldlibpthname='' ;;
6675 esac
6676
6677 : determine where manual pages go
6678 set man1dir man1dir none
6679 eval $prefixit
6680 $cat <<EOM
6681
6682 $spackage has manual pages available in source form.
6683 EOM
6684 case "$nroff" in
6685 nroff)
6686         echo "However, you don't have nroff, so they're probably useless to you."
6687         case "$man1dir" in
6688         '') man1dir="none";;
6689         esac;;
6690 esac
6691 echo "If you don't want the manual sources installed, answer 'none'."
6692 case "$man1dir" in
6693 ' ') dflt=none
6694         ;;
6695 '')
6696         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6697         lookpath="$lookpath $prefixexp/man/p_man/man1"
6698         lookpath="$lookpath $prefixexp/man/u_man/man1"
6699         lookpath="$lookpath $prefixexp/man/man.1"
6700         case "$sysman" in
6701         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6702         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6703         esac
6704         set dflt
6705         eval $prefixup
6706         ;;
6707 *)  dflt="$man1dir"
6708         ;;
6709 esac
6710 echo " "
6711 fn=dn+~
6712 rp="Where do the main $spackage manual pages (source) go?"
6713 . ./getfile
6714 if $test "X$man1direxp" != "X$ansexp"; then
6715         installman1dir=''
6716 fi
6717 man1dir="$ans"
6718 man1direxp="$ansexp"
6719 case "$man1dir" in
6720 '')     man1dir=' '
6721         installman1dir='';;
6722 esac
6723
6724 : Change installation prefix, if necessary.
6725 if $test X"$prefix" != X"$installprefix"; then
6726         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6727 else
6728         installman1dir="$man1direxp"
6729 fi
6730
6731 : What suffix to use on installed man pages
6732
6733 case "$man1dir" in
6734 ' ')
6735         man1ext='0'
6736         ;;
6737 *)
6738         rp="What suffix should be used for the main $spackage man pages?"
6739         case "$man1ext" in
6740         '')     case "$man1dir" in
6741                 *1)  dflt=1 ;;
6742                 *1p) dflt=1p ;;
6743                 *1pm) dflt=1pm ;;
6744                 *l) dflt=l;;
6745                 *n) dflt=n;;
6746                 *o) dflt=o;;
6747                 *p) dflt=p;;
6748                 *C) dflt=C;;
6749                 *L) dflt=L;;
6750                 *L1) dflt=L1;;
6751                 *) dflt=1;;
6752                 esac
6753                 ;;
6754         *)      dflt="$man1ext";;
6755         esac
6756         . ./myread
6757         man1ext="$ans"
6758         ;;
6759 esac
6760
6761 : see if we can have long filenames
6762 echo " "
6763 first=123456789abcdef
6764 $rm -f $first
6765 if (echo hi >$first) 2>/dev/null; then
6766         if $test -f 123456789abcde; then
6767                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6768                 val="$undef"
6769         else
6770                 echo 'You can have filenames longer than 14 characters.'>&4
6771                 val="$define"
6772         fi
6773 else
6774         $cat <<'EOM'
6775 You can't have filenames longer than 14 chars.
6776 You can't even think about them!
6777 EOM
6778         val="$undef"
6779 fi 
6780 set d_flexfnam
6781 eval $setvar
6782 $rm -rf 123456789abcde*
6783
6784 : determine where library module manual pages go
6785 set man3dir man3dir none
6786 eval $prefixit
6787 $cat <<EOM
6788
6789 $spackage has manual pages for many of the library modules.
6790 EOM
6791
6792 case "$nroff" in
6793 nroff)
6794         $cat <<'EOM'
6795 However, you don't have nroff, so they're probably useless to you.
6796 EOM
6797         case "$man3dir" in
6798         '') man3dir="none";;
6799         esac;;
6800 esac
6801
6802 case "$d_flexfnam" in
6803 undef)
6804         $cat <<'EOM'
6805 However, your system can't handle the long file names like File::Basename.3. 
6806 EOM
6807         case "$man3dir" in
6808         '') man3dir="none";;
6809         esac;;
6810 esac
6811
6812 echo "If you don't want the manual sources installed, answer 'none'."
6813 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6814 case "$man3dir" in
6815 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6816         if $test -d "$privlib/man/man3"; then
6817                 cat <<EOM >&4
6818
6819 WARNING:  Previous versions of perl installed man3 pages into
6820 $privlib/man/man3.  This version will suggest a 
6821 new default of $dflt.  
6822 EOM
6823                 tdflt=$dflt
6824                 dflt='n'
6825                 rp='Do you wish to preserve the old behavior?(y/n)'
6826                 . ./myread
6827                 case "$ans" in
6828                 y*) dflt="$privlib/man/man3" ;;
6829                 *)  dflt=$tdflt ;;
6830                 esac
6831     fi
6832         ;;
6833 *)      dflt="$man3dir" ;;
6834 esac
6835 case "$dflt" in
6836 ' ') dflt=none ;;
6837 esac
6838 echo " "
6839 fn=dn+~
6840 rp="Where do the $package library man pages (source) go?"
6841 . ./getfile
6842 man3dir="$ans"
6843 man3direxp="$ansexp"
6844 case "$man3dir" in
6845 '')     man3dir=' '
6846         installman3dir='';;
6847 esac
6848
6849 : Change installation prefix, if necessary.
6850 if $test X"$prefix" != X"$installprefix"; then
6851         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6852 else
6853         installman3dir="$man3direxp"
6854 fi
6855
6856 : What suffix to use on installed man pages
6857 case "$man3dir" in
6858 ' ')
6859         man3ext='0'
6860         ;;
6861 *)
6862         rp="What suffix should be used for the $package library man pages?"
6863         case "$man3ext" in
6864         '')     case "$man3dir" in
6865                 *3)  dflt=3 ;;
6866                 *3p) dflt=3p ;;
6867                 *3pm) dflt=3pm ;;
6868                 *l) dflt=l;;
6869                 *n) dflt=n;;
6870                 *o) dflt=o;;
6871                 *p) dflt=p;;
6872                 *C) dflt=C;;
6873                 *L) dflt=L;;
6874                 *L3) dflt=L3;;
6875                 *) dflt=3;;
6876                 esac
6877                 ;;
6878         *)      dflt="$man3ext";;
6879         esac
6880         . ./myread
6881         man3ext="$ans"
6882         ;;
6883 esac
6884
6885 : see if we have to deal with yellow pages, now NIS.
6886 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6887         if $test -f /usr/etc/nibindd; then
6888                 echo " "
6889                 echo "I'm fairly confident you're on a NeXT."
6890                 echo " "
6891                 rp='Do you get the hosts file via NetInfo?'
6892                 dflt=y
6893                 case "$hostcat" in
6894                 nidump*) ;;
6895                 '') ;;
6896                 *) dflt=n;;
6897                 esac
6898                 . ./myread
6899                 case "$ans" in
6900                 y*) hostcat='nidump hosts .';;
6901                 *)      case "$hostcat" in
6902                         nidump*) hostcat='';;
6903                         esac
6904                         ;;
6905                 esac
6906         fi
6907         case "$hostcat" in
6908         nidump*) ;;
6909         *)
6910                 case "$hostcat" in
6911                 *ypcat*) dflt=y;;
6912                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6913                                 dflt=y
6914                         else
6915                                 dflt=n
6916                         fi;;
6917                 *) dflt=n;;
6918                 esac
6919                 echo " "
6920                 rp='Are you getting the hosts file via yellow pages?'
6921                 . ./myread
6922                 case "$ans" in
6923                 y*) hostcat='ypcat hosts';;
6924                 *) hostcat='cat /etc/hosts';;
6925                 esac
6926                 ;;
6927         esac
6928 fi
6929 case "$hostcat" in
6930 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6931 esac
6932 case "$groupcat" in
6933 '') test -f /etc/group && groupcat='cat /etc/group';;
6934 esac
6935 case "$passcat" in
6936 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6937 esac
6938
6939 : now get the host name
6940 echo " "
6941 echo "Figuring out host name..." >&4
6942 case "$myhostname" in
6943 '') cont=true
6944         echo 'Maybe "hostname" will work...'
6945         if tans=`sh -c hostname 2>&1` ; then
6946                 myhostname=$tans
6947                 phostname=hostname
6948                 cont=''
6949         fi
6950         ;;
6951 *) cont='';;
6952 esac
6953 if $test "$cont"; then
6954         if ./xenix; then
6955                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6956                 if tans=`cat /etc/systemid 2>&1` ; then
6957                         myhostname=$tans
6958                         phostname='cat /etc/systemid'
6959                         echo "Whadyaknow.  Xenix always was a bit strange..."
6960                         cont=''
6961                 fi
6962         elif $test -r /etc/systemid; then
6963                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6964         fi
6965 fi
6966 if $test "$cont"; then
6967         echo 'No, maybe "uuname -l" will work...'
6968         if tans=`sh -c 'uuname -l' 2>&1` ; then
6969                 myhostname=$tans
6970                 phostname='uuname -l'
6971         else
6972                 echo 'Strange.  Maybe "uname -n" will work...'
6973                 if tans=`sh -c 'uname -n' 2>&1` ; then
6974                         myhostname=$tans
6975                         phostname='uname -n'
6976                 else
6977                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6978                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6979                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6980                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6981                         else
6982                                 case "$myhostname" in
6983                                 '') echo "Does this machine have an identity crisis or something?"
6984                                         phostname='';;
6985                                 *)
6986                                         echo "Well, you said $myhostname before..."
6987                                         phostname='echo $myhostname';;
6988                                 esac
6989                         fi
6990                 fi
6991         fi
6992 fi
6993 : you do not want to know about this
6994 set $myhostname
6995 myhostname=$1
6996
6997 : verify guess
6998 if $test "$myhostname" ; then
6999         dflt=y
7000         rp='Your host name appears to be "'$myhostname'".'" Right?"
7001         . ./myread
7002         case "$ans" in
7003         y*) ;;
7004         *) myhostname='';;
7005         esac
7006 fi
7007
7008 : bad guess or no guess
7009 while $test "X$myhostname" = X ; do
7010         dflt=''
7011         rp="Please type the (one word) name of your host:"
7012         . ./myread
7013         myhostname="$ans"
7014 done
7015
7016 : translate upper to lower if necessary
7017 case "$myhostname" in
7018 *[A-Z]*)
7019         echo "(Normalizing case in your host name)"
7020         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7021         ;;
7022 esac
7023
7024 case "$myhostname" in
7025 *.*)
7026         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7027         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7028         echo "(Trimming domain name from host name--host name is now $myhostname)"
7029         ;;
7030 *) case "$mydomain" in
7031         '')
7032                 {
7033                         test "X$hostcat" = "Xypcat hosts" &&
7034                         ypmatch "$myhostname" hosts 2>/dev/null |\
7035                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7036                         $test -s hosts
7037                 } || {
7038                         test "X$hostcat" != "X" &&
7039                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7040                                         /[       ]$myhostname[  . ]/p" > hosts
7041                 }
7042                 tmp_re="[       . ]"
7043                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7044                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7045                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7046                         hosts | $sort | $uniq | \
7047                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7048                 case `$echo X$dflt` in
7049                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7050                         dflt=.
7051                         ;;
7052                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7053                         ;;
7054                 esac
7055                 case "$dflt" in
7056                 .)
7057                         tans=`./loc resolv.conf X /etc /usr/etc`
7058                         if $test -f "$tans"; then
7059                                 echo "(Attempting domain name extraction from $tans)"
7060                                 dflt=.`$sed -n -e 's/   / /g' \
7061                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7062                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7063                                 case "$dflt" in
7064                                 .) dflt=.`$sed -n -e 's/        / /g' \
7065                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7066                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7067                                         ;;
7068                                 esac
7069                         fi
7070                         ;;
7071                 esac
7072                 case "$dflt" in
7073                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7074                         dflt=.`sh -c domainname 2>/dev/null`
7075                         case "$dflt" in
7076                         '') dflt='.';;
7077                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7078                         esac
7079                         ;;
7080                 esac
7081                 case "$dflt" in
7082                 .) echo "(Lost all hope -- silly guess then)"
7083                         dflt='.uucp'
7084                         ;;
7085                 esac
7086                 $rm -f hosts
7087                 ;;
7088         *) dflt="$mydomain";;
7089         esac;;
7090 esac
7091 echo " "
7092 rp="What is your domain name?"
7093 . ./myread
7094 tans="$ans"
7095 case "$ans" in
7096 '') ;;
7097 .*) ;;
7098 *) tans=".$tans";;
7099 esac
7100 mydomain="$tans"
7101
7102 : translate upper to lower if necessary
7103 case "$mydomain" in
7104 *[A-Z]*)
7105         echo "(Normalizing case in your domain name)"
7106         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7107         ;;
7108 esac
7109
7110 : a little sanity check here
7111 case "$phostname" in
7112 '') ;;
7113 *)
7114         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7115         $myhostname$mydomain|$myhostname) ;;
7116         *)
7117                 case "$phostname" in
7118                 sed*)
7119                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7120                         ;;
7121                 *)
7122                         echo "(That doesn't agree with your $phostname command, by the way.)"
7123                         ;;
7124                 esac
7125         ;;
7126         esac
7127         ;;
7128 esac
7129
7130 $cat <<EOM
7131
7132 I need to get your e-mail address in Internet format if possible, i.e.
7133 something like user@host.domain. Please answer accurately since I have
7134 no easy means to double check it. The default value provided below
7135 is most probably close to reality but may not be valid from outside
7136 your organization...
7137
7138 EOM
7139 cont=x
7140 while test "$cont"; do
7141         case "$cf_email" in
7142         '') dflt="$cf_by@$myhostname$mydomain";;
7143         *) dflt="$cf_email";;
7144         esac
7145         rp='What is your e-mail address?'
7146         . ./myread
7147         cf_email="$ans"
7148         case "$cf_email" in
7149         *@*.*) cont='' ;;
7150         *)
7151                 rp='Address does not look like an Internet one.  Use it anyway?'
7152                 case "$fastread" in
7153                 yes) dflt=y ;;
7154                 *) dflt=n ;;
7155                 esac
7156                 . ./myread
7157                 case "$ans" in
7158                 y*) cont='' ;;
7159                 *) echo " " ;;
7160                 esac
7161                 ;;
7162         esac
7163 done
7164
7165 $cat <<EOM
7166
7167 If you or somebody else will be maintaining perl at your site, please
7168 fill in the correct e-mail address here so that they may be contacted
7169 if necessary. Currently, the "perlbug" program included with perl
7170 will send mail to this address in addition to perlbug@perl.com. You may
7171 enter "none" for no administrator.
7172
7173 EOM
7174 case "$perladmin" in
7175 '') dflt="$cf_email";;
7176 *) dflt="$perladmin";;
7177 esac
7178 rp='Perl administrator e-mail address'
7179 . ./myread
7180 perladmin="$ans"
7181
7182 : figure out how to guarantee perl startup
7183 case "$startperl" in
7184 '')
7185         case "$sharpbang" in
7186         *!)
7187                 $cat <<EOH
7188
7189 I can use the #! construct to start perl on your system. This will
7190 make startup of perl scripts faster, but may cause problems if you
7191 want to share those scripts and perl is not in a standard place
7192 ($binexp/perl) on all your platforms. The alternative is to force
7193 a shell by starting the script with a single ':' character.
7194
7195 EOH
7196                 dflt="$binexp/perl"
7197                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7198                 . ./myread
7199                 case "$ans" in
7200                 none)   startperl=": # use perl";;
7201                 *)      startperl="#!$ans"
7202                         if $test 30 -lt `echo "$ans" | wc -c`; then
7203                                 $cat >&4 <<EOM
7204
7205 WARNING:  Some systems limit the #! command to 32 characters.
7206 If you experience difficulty running Perl scripts with #!, try
7207 installing Perl in a directory with a shorter pathname.
7208
7209 EOM
7210                         fi ;;
7211                 esac
7212                 ;;
7213         *) startperl=": # use perl"
7214                 ;;
7215         esac
7216         ;;
7217 esac
7218 echo "I'll use $startperl to start perl scripts."
7219
7220 : figure best path for perl in scripts
7221 case "$perlpath" in
7222 '')
7223         perlpath="$binexp/perl"
7224         case "$startperl" in
7225         *!*) ;;
7226         *)
7227                 $cat <<EOH
7228
7229 I will use the "eval 'exec'" idiom to start Perl on your system.
7230 I can use the full path of your Perl binary for this purpose, but
7231 doing so may cause problems if you want to share those scripts and
7232 Perl is not always in a standard place ($binexp/perl).
7233
7234 EOH
7235                 dflt="$binexp/perl"
7236                 rp="What path shall I use in \"eval 'exec'\"?"
7237                 . ./myread
7238                 perlpath="$ans"
7239                 ;;
7240         esac
7241         ;;
7242 esac
7243 case "$startperl" in
7244 *!*)    ;;
7245 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7246 esac
7247
7248 : determine where public executable scripts go
7249 set scriptdir scriptdir
7250 eval $prefixit
7251 case "$scriptdir" in
7252 '')
7253         dflt="$bin"
7254         : guess some guesses
7255         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7256         $test -d /usr/share/bin     && dflt=/usr/share/bin
7257         $test -d /usr/local/script  && dflt=/usr/local/script
7258         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7259         $test -d $prefixexp/script  && dflt=$prefixexp/script
7260         set dflt
7261         eval $prefixup
7262         ;;
7263 *)  dflt="$scriptdir"
7264         ;;
7265 esac
7266 $cat <<EOM
7267  
7268 Some installations have a separate directory just for executable scripts so
7269 that they can mount it across multiple architectures but keep the scripts in
7270 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7271 Or you might just lump your scripts in with all your other executables.
7272  
7273 EOM
7274 fn=d~
7275 rp='Where do you keep publicly executable scripts?'
7276 . ./getfile
7277 if $test "X$ansexp" != "X$scriptdirexp"; then
7278         installscript=''
7279 fi
7280 scriptdir="$ans"
7281 scriptdirexp="$ansexp"
7282 : Change installation prefix, if necessary.
7283 if $test X"$prefix" != X"$installprefix"; then
7284         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7285 else
7286         installscript="$scriptdirexp"
7287 fi
7288
7289 : determine where add-on public executables go
7290 case "$sitebin" in
7291 '')     dflt=$siteprefix/bin ;;
7292 *)      dflt=$sitebin ;;
7293 esac
7294 fn=d~
7295 rp='Pathname where the add-on public executables should be installed?'
7296 . ./getfile
7297 sitebin="$ans"
7298 sitebinexp="$ansexp"
7299 : Change installation prefix, if necessary.
7300 if $test X"$prefix" != X"$installprefix"; then
7301         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7302 else
7303         installsitebin="$sitebinexp"
7304 fi
7305
7306 : see if sqrtl exists
7307 set sqrtl d_sqrtl
7308 eval $inlibc
7309
7310 case "$ccflags" in
7311 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7312 esac
7313
7314 case "$uselongdouble" in
7315 $define|true|[yY]*)     dflt='y';;
7316 *) dflt='n';;
7317 esac
7318 cat <<EOM
7319
7320 Perl can be built to take advantage of long doubles which
7321 (if available) may give more accuracy and range for floating point numbers.
7322
7323 If this doesn't make any sense to you, just accept the default '$dflt'.
7324 EOM
7325 rp='Try to use long doubles if available?'
7326 . ./myread
7327 case "$ans" in
7328 y|Y)    val="$define"   ;;
7329 *)      val="$undef"    ;;
7330 esac
7331 set uselongdouble
7332 eval $setvar
7333
7334 case "$uselongdouble" in
7335 true|[yY]*) uselongdouble="$define" ;;
7336 esac
7337
7338 case "$uselongdouble" in
7339 $define)
7340 : Look for a hint-file generated 'call-back-unit'.  If the
7341 : user has specified that long doubles should be used,
7342 : we may need to set or change some other defaults.
7343         if $test -f uselongdouble.cbu; then
7344                 echo "Your platform has some specific hints for long doubles, using them..."
7345                 . ./uselongdouble.cbu
7346         else
7347                 $cat <<EOM
7348 (Your platform doesn't have any specific hints for long doubles.)
7349 EOM
7350         fi
7351         ;;
7352 esac
7353
7354 case "$uselongdouble:$d_sqrtl" in
7355 $define:$undef)
7356                 $cat <<EOM >&4
7357
7358 *** You requested the use of long doubles but you do not seem to have
7359 *** the mathematic functions for long doubles.  I'm disabling the use
7360 *** of long doubles.
7361
7362 EOM
7363         uselongdouble=$undef
7364         ;;
7365 esac
7366
7367 case "$useperlio" in
7368 $define|true|[yY]*)     dflt='y';;
7369 *) dflt='n';;
7370 esac
7371 cat <<EOM
7372
7373 Previous version of $package used the standard IO mechanisms as defined
7374 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7375 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7376 the default.  This abstraction layer can use AT&T's sfio (if you already
7377 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7378 problems with some extension modules.  Using PerlIO with stdio is safe,
7379 but it is slower than plain stdio and therefore is not the default.
7380
7381 If this doesn't make any sense to you, just accept the default '$dflt'.
7382 EOM
7383 rp='Use the experimental PerlIO abstraction layer?'
7384 . ./myread
7385 case "$ans" in
7386 y|Y) 
7387         val="$define"
7388         ;;     
7389 *)      
7390         echo "Ok, doing things the stdio way"
7391         val="$undef"
7392         ;;
7393 esac
7394 set useperlio
7395 eval $setvar 
7396
7397 case "$vendorprefix" in
7398 '')     d_vendorbin="$undef"
7399         vendorbin=''
7400         vendorbinexp=''
7401         ;;
7402 *)      d_vendorbin="$define"
7403         : determine where vendor-supplied executables go.
7404         case "$vendorbin" in
7405         '') dflt=$vendorprefix/bin ;;
7406         *)      dflt="$vendorbin" ;;
7407         esac
7408         fn=d~+
7409         rp='Pathname for the vendor-supplied executables directory?'
7410         . ./getfile
7411         vendorbin="$ans"
7412         vendorbinexp="$ansexp"
7413         ;;
7414 esac
7415 : Change installation prefix, if necessary.
7416 if $test X"$prefix" != X"$installprefix"; then
7417         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7418 else
7419         installvendorbin="$vendorbinexp"
7420 fi
7421
7422 : see if qgcvt exists
7423 set qgcvt d_qgcvt
7424 eval $inlibc
7425
7426 : check for length of double
7427 echo " "
7428 case "$doublesize" in
7429 '')
7430         echo "Checking to see how big your double precision numbers are..." >&4
7431         $cat >try.c <<'EOCP'
7432 #include <stdio.h>
7433 int main()
7434 {
7435     printf("%d\n", (int)sizeof(double));
7436     exit(0);
7437 }
7438 EOCP
7439         set try
7440         if eval $compile_ok; then
7441                 doublesize=`./try`
7442                 echo "Your double is $doublesize bytes long."
7443         else
7444                 dflt='8'
7445                 echo "(I can't seem to compile the test program.  Guessing...)"
7446                 rp="What is the size of a double precision number (in bytes)?"
7447                 . ./myread
7448                 doublesize="$ans"
7449         fi
7450         ;;
7451 esac
7452 $rm -f try.c try
7453
7454 : check for long doubles
7455 echo " "
7456 echo "Checking to see if you have long double..." >&4
7457 echo 'int main() { long double x = 7.0; }' > try.c
7458 set try
7459 if eval $compile; then
7460         val="$define"
7461         echo "You have long double."
7462 else
7463         val="$undef"
7464         echo "You do not have long double."
7465 fi
7466 $rm try.*
7467 set d_longdbl
7468 eval $setvar
7469
7470 : check for length of long double
7471 case "${d_longdbl}${longdblsize}" in
7472 $define)
7473         echo " "
7474         echo "Checking to see how big your long doubles are..." >&4
7475         $cat >try.c <<'EOCP'
7476 #include <stdio.h>
7477 int main()
7478 {
7479         printf("%d\n", sizeof(long double));
7480 }
7481 EOCP
7482         set try
7483         set try
7484         if eval $compile; then
7485                 longdblsize=`./try$exe_ext`
7486                 echo "Your long doubles are $longdblsize bytes long."
7487         else
7488                 dflt='8'
7489                 echo " "
7490                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7491                 rp="What is the size of a long double (in bytes)?"
7492                 . ./myread
7493                 longdblsize="$ans"
7494         fi
7495         if $test "X$doublesize" = "X$longdblsize"; then
7496                 echo "(That isn't any different from an ordinary double.)"
7497         fi      
7498         ;;
7499 esac
7500 $rm -f try.* try
7501
7502 echo " "
7503
7504 if $test X"$d_longdbl" = X"$define"; then
7505
7506 echo "Checking how to print long doubles..." >&4
7507
7508 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7509         $cat >try.c <<'EOCP'
7510 #include <sys/types.h>
7511 #include <stdio.h>
7512 int main() {
7513   double d = 123.456;
7514   printf("%.3f\n", d);
7515 }
7516 EOCP
7517         set try
7518         if eval $compile; then
7519                 yyy=`./try$exe_ext`
7520                 case "$yyy" in
7521                 123.456)
7522                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7523                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7524                         echo "We will use %f."
7525                         ;;
7526                 esac
7527         fi
7528 fi
7529
7530 if $test X"$sPRIfldbl" = X; then
7531         $cat >try.c <<'EOCP'
7532 #include <sys/types.h>
7533 #include <stdio.h>
7534 int main() {
7535   long double d = 123.456;
7536   printf("%.3llf\n", d);
7537 }
7538 EOCP
7539         set try
7540         if eval $compile; then
7541                 yyy=`./try$exe_ext`
7542                 case "$yyy" in
7543                 123.456)
7544                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7545                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7546                         echo "We will use %llf."
7547                         ;;
7548                 esac
7549         fi
7550 fi
7551
7552 if $test X"$sPRIfldbl" = X; then
7553         $cat >try.c <<'EOCP'
7554 #include <sys/types.h>
7555 #include <stdio.h>
7556 int main() {
7557   long double d = 123.456;
7558   printf("%.3Lf\n", d);
7559 }
7560 EOCP
7561         set try
7562         if eval $compile; then
7563                 yyy=`./try$exe_ext`
7564                 case "$yyy" in
7565                 123.456)
7566                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7567                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7568                         echo "We will use %Lf."
7569                         ;;
7570                 esac
7571         fi
7572 fi
7573
7574 if $test X"$sPRIfldbl" = X; then
7575         $cat >try.c <<'EOCP'
7576 #include <sys/types.h>
7577 #include <stdio.h>
7578 int main() {
7579   long double d = 123.456;
7580   printf("%.3lf\n", d);
7581 }
7582 EOCP
7583         set try
7584         if eval $compile; then
7585                 yyy=`./try$exe_ext`
7586                 case "$yyy" in
7587                 123.456)
7588                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7589                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7590                         echo "We will use %lf."
7591                         ;;
7592                 esac
7593         fi
7594 fi
7595
7596 if $test X"$sPRIfldbl" = X; then
7597         echo "Cannot figure out how to print long doubles." >&4
7598 fi
7599
7600 $rm -f try try.*
7601
7602 fi # d_longdbl
7603
7604 case "$sPRIfldbl" in
7605 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7606         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7607         ;;
7608 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7609         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7610         ;;
7611 esac
7612
7613 : Check how to convert floats to strings.
7614 if test "X$d_Gconvert" = X; then
7615         echo " "
7616         echo "Checking for an efficient way to convert floats to strings."
7617         echo " " > try.c
7618         case "$uselongdouble" in
7619         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7620         esac
7621         case "$d_longdbl" in
7622         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7623         esac
7624         case "$d_PRIgldbl" in
7625         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7626         esac
7627         $cat >>try.c <<EOP
7628 #ifdef TRY_gconvert
7629 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7630 char *myname = "gconvert";
7631 #endif
7632 #ifdef TRY_gcvt
7633 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7634 char *myname = "gcvt";
7635 #endif
7636 #ifdef TRY_qgcvt
7637 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7638 char *myname = "qgcvt";
7639 #define DOUBLETYPE long double
7640 #endif
7641 #ifdef TRY_sprintf
7642 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7643 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7644 #else
7645 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7646 #endif
7647 char *myname = "sprintf";
7648 #endif
7649
7650 #ifndef DOUBLETYPE
7651 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7652 #define DOUBLETYPE long double
7653 #else
7654 #define DOUBLETYPE double
7655 #endif
7656 #endif
7657
7658 #include <stdio.h>
7659
7660 #define I_STDLIB $i_stdlib
7661 #ifdef I_STDLIB
7662 #include <stdlib.h>
7663 #endif
7664
7665 int
7666 checkit(expect, got)
7667 char *expect;
7668 char *got;
7669 {
7670     if (strcmp(expect, got)) {
7671                 printf("%s oddity:  Expected %s, got %s\n",
7672                         myname, expect, got);
7673                 exit(1);
7674         }
7675 }
7676
7677 int main()
7678
7679         char buf[64]; 
7680         buf[63] = '\0';
7681
7682         /* This must be 1st test on (which?) platform */
7683         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7684         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7685         checkit("0.1", buf);
7686
7687         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7688         checkit("1", buf);
7689
7690         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7691         checkit("1.1", buf);
7692
7693         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7694         checkit("1.01", buf);
7695
7696         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7697         checkit("1.001", buf);
7698
7699         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7700         checkit("1.0001", buf);
7701
7702         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7703         checkit("1.00001", buf);
7704
7705         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7706         checkit("1.000001", buf);
7707
7708         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7709         checkit("0", buf);
7710
7711         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7712         checkit("-1", buf);
7713
7714         /* Some Linux gcvt's give 1.e+5 here. */
7715         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7716         checkit("100000", buf);
7717         
7718         /* Some Linux gcvt's give -1.e+5 here. */
7719         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7720         checkit("-100000", buf);
7721
7722         exit(0);
7723 }
7724 EOP
7725         case "$d_Gconvert" in
7726         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7727         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7728         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7729         *) xxx_list='gconvert gcvt sprintf' ;;
7730         esac
7731
7732         case "$d_longdbl$uselongdouble$d_qgcvt" in
7733         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7734         esac
7735
7736         for xxx_convert in $xxx_list; do
7737                 echo "Trying $xxx_convert..."
7738                 $rm -f try try$_o
7739                 set try -DTRY_$xxx_convert
7740                 if eval $compile; then
7741                         echo "$xxx_convert() found." >&4
7742                         if ./try; then
7743                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7744                                 break;
7745                         else
7746                                 echo "...But $xxx_convert didn't work as I expected."
7747                         fi
7748                 else
7749                         echo "$xxx_convert NOT found." >&4
7750                 fi
7751         done
7752                 
7753         case "$xxx_convert" in
7754         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7755         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7756         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7757         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7758            "$define$define$define")
7759               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7760            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7761            esac
7762            ;;  
7763         esac
7764 fi
7765
7766 : Initialize h_fcntl
7767 h_fcntl=false
7768
7769 : Initialize h_sysfile
7770 h_sysfile=false
7771
7772 : access call always available on UNIX
7773 set access d_access
7774 eval $inlibc
7775
7776 : locate the flags for 'access()'
7777 case "$d_access" in
7778 "$define")
7779         echo " "
7780         $cat >access.c <<'EOCP'
7781 #include <sys/types.h>
7782 #ifdef I_FCNTL
7783 #include <fcntl.h>
7784 #endif
7785 #ifdef I_SYS_FILE
7786 #include <sys/file.h>
7787 #endif
7788 #ifdef I_UNISTD
7789 #include <unistd.h>
7790 #endif
7791 int main() {
7792         exit(R_OK);
7793 }
7794 EOCP
7795         : check sys/file.h first, no particular reason here
7796         if $test `./findhdr sys/file.h` && \
7797                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7798                 h_sysfile=true;
7799                 echo "<sys/file.h> defines the *_OK access constants." >&4
7800         elif $test `./findhdr fcntl.h` && \
7801                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7802                 h_fcntl=true;
7803                 echo "<fcntl.h> defines the *_OK access constants." >&4
7804         elif $test `./findhdr unistd.h` && \
7805                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7806                 echo "<unistd.h> defines the *_OK access constants." >&4
7807         else
7808                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7809         fi
7810         ;;
7811 esac
7812 $rm -f access*
7813
7814 : see if accessx exists
7815 set accessx d_accessx
7816 eval $inlibc
7817
7818 : see if alarm exists
7819 set alarm d_alarm
7820 eval $inlibc
7821
7822 : see if atolf exists
7823 set atolf d_atolf
7824 eval $inlibc
7825
7826 : see if atoll exists
7827 set atoll d_atoll
7828 eval $inlibc
7829
7830 : Look for GNU-cc style attribute checking
7831 echo " "
7832 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7833 $cat >attrib.c <<'EOCP'
7834 #include <stdio.h>
7835 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7836 EOCP
7837 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7838         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7839                 echo "Your C compiler doesn't fully support __attribute__."
7840                 val="$undef"
7841         else
7842                 echo "Your C compiler supports __attribute__."
7843                 val="$define"
7844         fi
7845 else
7846         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7847         val="$undef"
7848 fi
7849 set d_attribut
7850 eval $setvar
7851 $rm -f attrib*
7852
7853 : see if bcmp exists
7854 set bcmp d_bcmp
7855 eval $inlibc
7856
7857 : see if bcopy exists
7858 set bcopy d_bcopy
7859 eval $inlibc
7860
7861 : see if this is a unistd.h system
7862 set unistd.h i_unistd
7863 eval $inhdr
7864
7865 : see if getpgrp exists
7866 set getpgrp d_getpgrp
7867 eval $inlibc
7868
7869 case "$d_getpgrp" in
7870 "$define")
7871         echo " "
7872         echo "Checking to see which flavor of getpgrp is in use..."
7873         $cat >set.c <<EOP
7874 #$i_unistd I_UNISTD
7875 #include <sys/types.h>
7876 #ifdef I_UNISTD
7877 #  include <unistd.h>
7878 #endif
7879 int main()
7880 {
7881         if (getuid() == 0) {
7882                 printf("(I see you are running Configure as super-user...)\n");
7883                 setuid(1);
7884         }
7885 #ifdef TRY_BSD_PGRP
7886         if (getpgrp(1) == 0)
7887                 exit(0);
7888 #else
7889         if (getpgrp() > 0)
7890                 exit(0);
7891 #endif
7892         exit(1);
7893 }
7894 EOP
7895         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7896                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7897                 val="$define"
7898         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7899                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7900                 val="$undef"
7901         else
7902                 echo "I can't seem to compile and run the test program."
7903                 if ./usg; then
7904                         xxx="a USG one, i.e. you use getpgrp()."
7905                 else
7906                         # SVR4 systems can appear rather BSD-ish.
7907                         case "$i_unistd" in
7908                         $undef)
7909                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7910                                 val="$define"
7911                                 ;;
7912                         $define)
7913                                 xxx="probably a USG one, i.e. you use getpgrp()."
7914                                 val="$undef"
7915                                 ;;
7916                         esac
7917                 fi
7918                 echo "Assuming your getpgrp is $xxx" >&4
7919         fi
7920         ;;
7921 *) val="$undef";;
7922 esac
7923 set d_bsdgetpgrp
7924 eval $setvar
7925 $rm -f set set.c
7926
7927 : see if setpgrp exists
7928 set setpgrp d_setpgrp
7929 eval $inlibc
7930
7931 case "$d_setpgrp" in
7932 "$define")
7933         echo " "
7934         echo "Checking to see which flavor of setpgrp is in use..."
7935         $cat >set.c <<EOP
7936 #$i_unistd I_UNISTD
7937 #include <sys/types.h>
7938 #ifdef I_UNISTD
7939 #  include <unistd.h>
7940 #endif
7941 int main()
7942 {
7943         if (getuid() == 0) {
7944                 printf("(I see you are running Configure as super-user...)\n");
7945                 setuid(1);
7946         }
7947 #ifdef TRY_BSD_PGRP
7948         if (-1 == setpgrp(1, 1))
7949                 exit(0);
7950 #else
7951         if (setpgrp() != -1)
7952                 exit(0);
7953 #endif
7954         exit(1);
7955 }
7956 EOP
7957         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7958                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7959                 val="$define"
7960         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7961                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7962                 val="$undef"
7963         else
7964                 echo "(I can't seem to compile and run the test program.)"
7965                 if ./usg; then
7966                         xxx="a USG one, i.e. you use setpgrp()."
7967                 else
7968                         # SVR4 systems can appear rather BSD-ish.
7969                         case "$i_unistd" in
7970                         $undef)
7971                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7972                                 val="$define"
7973                                 ;;
7974                         $define)
7975                                 xxx="probably a USG one, i.e. you use setpgrp()."
7976                                 val="$undef"
7977                                 ;;
7978                         esac
7979                 fi
7980                 echo "Assuming your setpgrp is $xxx" >&4
7981         fi
7982         ;;
7983 *) val="$undef";;
7984 esac
7985 set d_bsdsetpgrp
7986 eval $setvar
7987 $rm -f set set.c
7988 : see if bzero exists
7989 set bzero d_bzero
7990 eval $inlibc
7991
7992 : see if signal is declared as pointer to function returning int or void
7993 echo " "
7994 xxx=`./findhdr signal.h`
7995 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7996 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7997         echo "You have int (*signal())() instead of void." >&4
7998         val="$undef"
7999 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8000         echo "You have void (*signal())()." >&4
8001         val="$define"
8002 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8003         echo "You have int (*signal())() instead of void." >&4
8004         val="$undef"
8005 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8006         echo "You have void (*signal())()." >&4
8007         val="$define"
8008 else
8009         case "$d_voidsig" in
8010         '')
8011         echo "I can't determine whether signal handler returns void or int..." >&4
8012                 dflt=void
8013                 rp="What type does your signal handler return?"
8014                 . ./myread
8015                 case "$ans" in
8016                 v*) val="$define";;
8017                 *) val="$undef";;
8018                 esac;;
8019         "$define")
8020                 echo "As you already told me, signal handler returns void." >&4
8021                 val="$define"
8022                 ;;
8023         *)      echo "As you already told me, signal handler returns int." >&4
8024                 val="$undef"
8025                 ;;
8026         esac
8027 fi
8028 set d_voidsig
8029 eval $setvar
8030 case "$d_voidsig" in
8031 "$define") signal_t="void";;
8032 *) signal_t="int";;
8033 esac
8034 $rm -f $$.tmp
8035
8036 : check for ability to cast large floats to 32-bit ints.
8037 echo " "
8038 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8039 if $test "$intsize" -ge 4; then
8040         xxx=int
8041 else
8042         xxx=long
8043 fi
8044 $cat >try.c <<EOCP
8045 #include <stdio.h>
8046 #include <sys/types.h>
8047 #include <signal.h>
8048 $signal_t blech(s) int s; { exit(3); }
8049 int main()
8050 {
8051         $xxx i32;
8052         double f, g;
8053         int result = 0;
8054         char str[16];
8055         signal(SIGFPE, blech);
8056
8057         /* Don't let compiler optimize the test away.  Store the number 
8058            in a writable string for gcc to pass to sscanf under HP/UX.
8059         */
8060         sprintf(str, "2147483647");
8061         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8062         g = 10 * f;
8063         i32  = ($xxx) g;
8064
8065         /* x86 processors will probably give 0x8000 0000, which is a
8066        sign change.  We don't want that.  We want to mimic SPARC
8067            behavior here, which is to preserve the sign and give
8068            back 0x7fff ffff.
8069         */
8070         if (i32 != ($xxx) f)
8071                 result |= 1;
8072         exit(result);
8073 }
8074 EOCP
8075 set try
8076 if eval $compile_ok; then
8077         ./try
8078         yyy=$?
8079 else
8080         echo "(I can't seem to compile the test program--assuming it can't)"
8081         yyy=1
8082 fi
8083 case "$yyy" in
8084 0)      val="$define"
8085         echo "Yup, it can."
8086         ;;
8087 *)      val="$undef"
8088         echo "Nope, it can't."
8089         ;;
8090 esac
8091 set d_casti32
8092 eval $setvar
8093 $rm -f try try.*
8094
8095 : check for ability to cast negative floats to unsigned
8096 echo " "
8097 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8098 $cat >try.c <<EOCP
8099 #include <stdio.h>
8100 #include <sys/types.h>
8101 #include <signal.h>
8102 $signal_t blech(s) int s; { exit(7); }
8103 $signal_t blech_in_list(s) int s; { exit(4); }
8104 unsigned long dummy_long(p) unsigned long p; { return p; }
8105 unsigned int dummy_int(p) unsigned int p; { return p; }
8106 unsigned short dummy_short(p) unsigned short p; { return p; }
8107 int main()
8108 {
8109         double f;
8110         unsigned long along;
8111         unsigned int aint;
8112         unsigned short ashort;
8113         int result = 0;
8114         char str[16];
8115         
8116         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8117            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8118            optimized the whole file away
8119         */
8120         /* Store the number in a writable string for gcc to pass to 
8121            sscanf under HP/UX.
8122         */
8123         sprintf(str, "-123");
8124         sscanf(str, "%lf", &f);  /* f = -123.; */
8125
8126         signal(SIGFPE, blech);
8127         along = (unsigned long)f;
8128         aint = (unsigned int)f;
8129         ashort = (unsigned short)f;
8130         if (along != (unsigned long)-123)
8131                 result |= 1;
8132         if (aint != (unsigned int)-123)
8133                 result |= 1;
8134         if (ashort != (unsigned short)-123)
8135                 result |= 1;
8136         sprintf(str, "1073741824.");
8137         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8138         f = f + f;
8139         along = 0;
8140         along = (unsigned long)f;
8141         if (along != 0x80000000)
8142                 result |= 2;
8143         f -= 1.;
8144         along = 0;
8145         along = (unsigned long)f;
8146         if (along != 0x7fffffff)
8147                 result |= 1;
8148         f += 2.;
8149         along = 0;
8150         along = (unsigned long)f;
8151         if (along != 0x80000001)
8152                 result |= 2;
8153         if (result)
8154                 exit(result);
8155         signal(SIGFPE, blech_in_list);
8156         sprintf(str, "123.");
8157         sscanf(str, "%lf", &f);  /* f = 123.; */
8158         along = dummy_long((unsigned long)f);
8159         aint = dummy_int((unsigned int)f);
8160         ashort = dummy_short((unsigned short)f);
8161         if (along != (unsigned long)123)
8162                 result |= 4;
8163         if (aint != (unsigned int)123)
8164                 result |= 4;
8165         if (ashort != (unsigned short)123)
8166                 result |= 4;
8167         exit(result);
8168
8169 }
8170 EOCP
8171 set try
8172 if eval $compile_ok; then
8173         ./try
8174         castflags=$?
8175 else
8176         echo "(I can't seem to compile the test program--assuming it can't)"
8177         castflags=7
8178 fi
8179 case "$castflags" in
8180 0)      val="$define"
8181         echo "Yup, it can."
8182         ;;
8183 *)      val="$undef"
8184         echo "Nope, it can't."
8185         ;;
8186 esac
8187 set d_castneg
8188 eval $setvar
8189 $rm -f try.*
8190
8191 : see if vprintf exists
8192 echo " "
8193 if set vprintf val -f d_vprintf; eval $csym; $val; then
8194         echo 'vprintf() found.' >&4
8195         val="$define"
8196         $cat >vprintf.c <<'EOF'
8197 #include <varargs.h>
8198
8199 int main() { xxx("foo"); }
8200
8201 xxx(va_alist)
8202 va_dcl
8203 {
8204         va_list args;
8205         char buf[10];
8206
8207         va_start(args);
8208         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8209 }
8210 EOF
8211         set vprintf
8212         if eval $compile && ./vprintf; then
8213                 echo "Your vsprintf() returns (int)." >&4
8214                 val2="$undef"
8215         else
8216                 echo "Your vsprintf() returns (char*)." >&4
8217                 val2="$define"
8218         fi
8219 else
8220         echo 'vprintf() NOT found.' >&4
8221                 val="$undef"
8222                 val2="$undef"
8223 fi
8224 set d_vprintf
8225 eval $setvar
8226 val=$val2
8227 set d_charvspr
8228 eval $setvar
8229
8230 : see if chown exists
8231 set chown d_chown
8232 eval $inlibc
8233
8234 : see if chroot exists
8235 set chroot d_chroot
8236 eval $inlibc
8237
8238 : see if chsize exists
8239 set chsize d_chsize
8240 eval $inlibc
8241
8242 : check for const keyword
8243 echo " "
8244 echo 'Checking to see if your C compiler knows about "const"...' >&4
8245 $cat >const.c <<'EOCP'
8246 typedef struct spug { int drokk; } spug;
8247 int main()
8248 {
8249         const char *foo;
8250         const spug y;
8251 }
8252 EOCP
8253 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8254         val="$define"
8255         echo "Yup, it does."
8256 else
8257         val="$undef"
8258         echo "Nope, it doesn't."
8259 fi
8260 set d_const
8261 eval $setvar
8262
8263 : see if crypt exists
8264 echo " "
8265 if set crypt val -f d_crypt; eval $csym; $val; then
8266         echo 'crypt() found.' >&4
8267         val="$define"
8268         cryptlib=''
8269 else
8270         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8271         if $test -z "$cryptlib"; then
8272                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8273         else
8274                 cryptlib=-lcrypt
8275         fi
8276         if $test -z "$cryptlib"; then
8277                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8278         else
8279                 cryptlib=-lcrypt
8280         fi
8281         if $test -z "$cryptlib"; then
8282                 cryptlib=`./loc libcrypt$_a "" $libpth`
8283         else
8284                 cryptlib=-lcrypt
8285         fi
8286         if $test -z "$cryptlib"; then
8287                 echo 'crypt() NOT found.' >&4
8288                 val="$undef"
8289         else
8290                 val="$define"
8291         fi
8292 fi
8293 set d_crypt
8294 eval $setvar
8295
8296 : get csh whereabouts
8297 case "$csh" in
8298 'csh') val="$undef" ;;
8299 *) val="$define" ;;
8300 esac
8301 set d_csh
8302 eval $setvar
8303 : Respect a hint or command line value for full_csh.
8304 case "$full_csh" in
8305 '') full_csh=$csh ;;
8306 esac
8307
8308 : see if cuserid exists
8309 set cuserid d_cuserid
8310 eval $inlibc
8311
8312 : see if this is a limits.h system
8313 set limits.h i_limits
8314 eval $inhdr
8315
8316 : see if this is a float.h system
8317 set float.h i_float
8318 eval $inhdr
8319
8320 : See if number of significant digits in a double precision number is known
8321 echo " "
8322 $cat >dbl_dig.c <<EOM
8323 #$i_limits I_LIMITS
8324 #$i_float I_FLOAT
8325 #ifdef I_LIMITS
8326 #include <limits.h>
8327 #endif
8328 #ifdef I_FLOAT
8329 #include <float.h>
8330 #endif
8331 #ifdef DBL_DIG
8332 printf("Contains DBL_DIG");
8333 #endif
8334 EOM
8335 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8336 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8337         echo "DBL_DIG found." >&4
8338         val="$define"
8339 else
8340         echo "DBL_DIG NOT found." >&4
8341         val="$undef"
8342 fi
8343 $rm -f dbl_dig.?
8344 set d_dbl_dig
8345 eval $setvar
8346
8347 : see if difftime exists
8348 set difftime d_difftime
8349 eval $inlibc
8350
8351 : see if this is a dirent system
8352 echo " "
8353 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8354         val="$define"
8355         echo "<dirent.h> found." >&4
8356 else
8357         val="$undef"
8358         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8359                 echo "<sys/dir.h> found." >&4
8360                 echo " "
8361         else
8362                 xinc=`./findhdr sys/ndir.h`
8363         fi
8364         echo "<dirent.h> NOT found." >&4
8365 fi
8366 set i_dirent
8367 eval $setvar
8368
8369 : Look for type of directory structure.
8370 echo " "
8371 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8372
8373 case "$direntrytype" in
8374 ''|' ')
8375         case "$i_dirent" in
8376         $define) guess1='struct dirent' ;;
8377         *) guess1='struct direct'  ;;
8378         esac
8379         ;;
8380 *)      guess1="$direntrytype"
8381         ;;
8382 esac
8383
8384 case "$guess1" in
8385 'struct dirent') guess2='struct direct' ;;
8386 *) guess2='struct dirent' ;;
8387 esac
8388                 
8389 if $contains "$guess1" try.c >/dev/null 2>&1; then
8390         direntrytype="$guess1"
8391         echo "Your directory entries are $direntrytype." >&4
8392 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8393         direntrytype="$guess2"
8394         echo "Your directory entries seem to be $direntrytype." >&4
8395 else
8396         echo "I don't recognize your system's directory entries." >&4
8397         rp="What type is used for directory entries on this system?"
8398         dflt="$guess1"
8399         . ./myread
8400         direntrytype="$ans"
8401 fi
8402 $rm -f try.c
8403
8404
8405 : see if the directory entry stores field length
8406 echo " "
8407 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8408 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8409         echo "Good, your directory entry keeps length information in d_namlen." >&4
8410         val="$define"
8411 else
8412         echo "Your directory entry does not know about the d_namlen field." >&4
8413         val="$undef"
8414 fi
8415 set d_dirnamlen
8416 eval $setvar
8417 $rm -f try.c
8418
8419 : see if dlerror exists
8420 xxx_runnm="$runnm"
8421 runnm=false
8422 set dlerror d_dlerror
8423 eval $inlibc
8424 runnm="$xxx_runnm"
8425
8426 : see if dlfcn is available
8427 set dlfcn.h i_dlfcn
8428 eval $inhdr
8429
8430 case "$usedl" in
8431 $define|y|true)
8432         $cat << EOM
8433
8434 On a few systems, the dynamically loaded modules that perl generates and uses
8435 will need a different extension than shared libs. The default will probably
8436 be appropriate.
8437
8438 EOM
8439         case "$dlext" in
8440         '')     dflt="$so" ;;
8441         *)      dflt="$dlext" ;;
8442         esac
8443         rp='What is the extension of dynamically loaded modules'
8444         . ./myread
8445         dlext="$ans"
8446         ;;
8447 *)
8448         dlext="none"
8449         ;;
8450 esac
8451
8452 : Check if dlsym need a leading underscore
8453 echo " "
8454 val="$undef"
8455
8456 case "$dlsrc" in
8457 dl_dlopen.xs)
8458         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8459         $cat >dyna.c <<'EOM'
8460 fred () { }
8461 EOM
8462
8463 $cat >fred.c<<EOM
8464
8465 #include <stdio.h>
8466 #$i_dlfcn I_DLFCN
8467 #ifdef I_DLFCN
8468 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8469 #else
8470 #include <sys/types.h>
8471 #include <nlist.h>
8472 #include <link.h>
8473 #endif
8474
8475 extern int fred() ;
8476
8477 int main()
8478 {
8479     void * handle ;
8480     void * symbol ;
8481 #ifndef RTLD_LAZY
8482     int mode = 1 ;
8483 #else
8484     int mode = RTLD_LAZY ;
8485 #endif
8486     handle = dlopen("./dyna.$dlext", mode) ;
8487     if (handle == NULL) {
8488         printf ("1\n") ;
8489         fflush (stdout) ;
8490         exit(0);
8491     }
8492     symbol = dlsym(handle, "fred") ;
8493     if (symbol == NULL) {
8494         /* try putting a leading underscore */
8495         symbol = dlsym(handle, "_fred") ;
8496         if (symbol == NULL) {
8497             printf ("2\n") ;
8498             fflush (stdout) ;
8499             exit(0);
8500         }
8501         printf ("3\n") ;
8502     }
8503     else
8504         printf ("4\n") ;
8505     fflush (stdout) ;
8506     exit(0);
8507 }
8508 EOM
8509         : Call the object file tmp-dyna.o in case dlext=o.
8510         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8511                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8512                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8513                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8514                 xxx=`./fred`
8515                 case $xxx in
8516                 1)      echo "Test program failed using dlopen." >&4
8517                         echo "Perhaps you should not use dynamic loading." >&4;;
8518                 2)      echo "Test program failed using dlsym." >&4
8519                         echo "Perhaps you should not use dynamic loading." >&4;;
8520                 3)      echo "dlsym needs a leading underscore" >&4
8521                         val="$define" ;;
8522                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8523                 esac
8524         else
8525                 echo "I can't compile and run the test program." >&4
8526                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8527         fi
8528         ;;
8529 esac
8530                 
8531 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8532
8533 set d_dlsymun
8534 eval $setvar
8535
8536 hasproto='varname=$1; func=$2; shift; shift;
8537 while $test $# -ge 2; do
8538         case "$1" in
8539         $define) echo "#include <$2>";;
8540         esac ;
8541     shift 2;
8542 done > try.c;
8543 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8544 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8545         echo "$func() prototype found.";
8546         val="$define";
8547 else
8548         echo "$func() prototype NOT found.";
8549         val="$undef";
8550 fi;
8551 set $varname;
8552 eval $setvar;
8553 $rm -f try.c tryout.c'
8554
8555 : see if prototype for drand48 is available
8556 echo " "
8557 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8558 eval $hasproto
8559
8560 : see if dup2 exists
8561 set dup2 d_dup2
8562 eval $inlibc
8563
8564 : see if eaccess exists
8565 set eaccess d_eaccess
8566 eval $inlibc
8567
8568 : see if endgrent exists
8569 set endgrent d_endgrent
8570 eval $inlibc
8571
8572 : see if endhostent exists
8573 set endhostent d_endhent
8574 eval $inlibc
8575
8576 : see if endnetent exists
8577 set endnetent d_endnent
8578 eval $inlibc
8579
8580 : see if endprotoent exists
8581 set endprotoent d_endpent
8582 eval $inlibc
8583
8584 : see if endpwent exists
8585 set endpwent d_endpwent
8586 eval $inlibc
8587
8588 : see if endservent exists
8589 set endservent d_endsent
8590 eval $inlibc
8591
8592 : Locate the flags for 'open()'
8593 echo " "
8594 $cat >open3.c <<'EOCP'
8595 #include <sys/types.h>
8596 #ifdef I_FCNTL
8597 #include <fcntl.h>
8598 #endif
8599 #ifdef I_SYS_FILE
8600 #include <sys/file.h>
8601 #endif
8602 int main() {
8603         if(O_RDONLY);
8604 #ifdef O_TRUNC
8605         exit(0);
8606 #else
8607         exit(1);
8608 #endif
8609 }
8610 EOCP
8611 : check sys/file.h first to get FREAD on Sun
8612 if $test `./findhdr sys/file.h` && \
8613                 set open3 -DI_SYS_FILE && eval $compile; then
8614         h_sysfile=true;
8615         echo "<sys/file.h> defines the O_* constants..." >&4
8616         if ./open3; then
8617                 echo "and you have the 3 argument form of open()." >&4
8618                 val="$define"
8619         else
8620                 echo "but not the 3 argument form of open().  Oh, well." >&4
8621                 val="$undef"
8622         fi
8623 elif $test `./findhdr fcntl.h` && \
8624                 set open3 -DI_FCNTL && eval $compile; then
8625         h_fcntl=true;
8626         echo "<fcntl.h> defines the O_* constants..." >&4
8627         if ./open3; then
8628                 echo "and you have the 3 argument form of open()." >&4
8629                 val="$define"
8630         else
8631                 echo "but not the 3 argument form of open().  Oh, well." >&4
8632                 val="$undef"
8633         fi
8634 else
8635         val="$undef"
8636         echo "I can't find the O_* constant definitions!  You got problems." >&4
8637 fi
8638 set d_open3
8639 eval $setvar
8640 $rm -f open3*
8641
8642 : see which of string.h or strings.h is needed
8643 echo " "
8644 strings=`./findhdr string.h`
8645 if $test "$strings" && $test -r "$strings"; then
8646         echo "Using <string.h> instead of <strings.h>." >&4
8647         val="$define"
8648 else
8649         val="$undef"
8650         strings=`./findhdr strings.h`
8651         if $test "$strings" && $test -r "$strings"; then
8652                 echo "Using <strings.h> instead of <string.h>." >&4
8653         else
8654                 echo "No string header found -- You'll surely have problems." >&4
8655         fi
8656 fi
8657 set i_string
8658 eval $setvar
8659 case "$i_string" in
8660 "$undef") strings=`./findhdr strings.h`;;
8661 *)        strings=`./findhdr string.h`;;
8662 esac
8663
8664 : check for non-blocking I/O stuff
8665 case "$h_sysfile" in
8666 true) echo "#include <sys/file.h>" > head.c;;
8667 *)
8668         case "$h_fcntl" in
8669         true) echo "#include <fcntl.h>" > head.c;;
8670         *) echo "#include <sys/fcntl.h>" > head.c;;
8671         esac
8672         ;;
8673 esac
8674 echo " "
8675 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8676 case "$o_nonblock" in
8677 '')
8678         $cat head.c > try.c
8679         $cat >>try.c <<'EOCP'
8680 #include <stdio.h>
8681 int main() {
8682 #ifdef O_NONBLOCK
8683         printf("O_NONBLOCK\n");
8684         exit(0);
8685 #endif
8686 #ifdef O_NDELAY
8687         printf("O_NDELAY\n");
8688         exit(0);
8689 #endif
8690 #ifdef FNDELAY
8691         printf("FNDELAY\n");
8692         exit(0);
8693 #endif
8694         exit(0);
8695 }
8696 EOCP
8697         set try
8698         if eval $compile_ok; then
8699                 o_nonblock=`./try`
8700                 case "$o_nonblock" in
8701                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8702                 *) echo "Seems like we can use $o_nonblock.";;
8703                 esac
8704         else
8705                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8706         fi
8707         ;;
8708 *) echo "Using $hint value $o_nonblock.";;
8709 esac
8710 $rm -f try try.* .out core
8711
8712 echo " "
8713 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8714 case "$eagain" in
8715 '')
8716         $cat head.c > try.c
8717         $cat >>try.c <<EOCP
8718 #include <errno.h>
8719 #include <sys/types.h>
8720 #include <signal.h>
8721 #include <stdio.h> 
8722 #define MY_O_NONBLOCK $o_nonblock
8723 #ifndef errno  /* XXX need better Configure test */
8724 extern int errno;
8725 #endif
8726 #$i_unistd I_UNISTD
8727 #ifdef I_UNISTD
8728 #include <unistd.h>
8729 #endif
8730 #$i_string I_STRING
8731 #ifdef I_STRING
8732 #include <string.h>
8733 #else
8734 #include <strings.h>
8735 #endif
8736 $signal_t blech(x) int x; { exit(3); }
8737 EOCP
8738         $cat >> try.c <<'EOCP'
8739 int main()
8740 {
8741         int pd[2];
8742         int pu[2];
8743         char buf[1];
8744         char string[100];
8745
8746         pipe(pd);       /* Down: child -> parent */
8747         pipe(pu);       /* Up: parent -> child */
8748         if (0 != fork()) {
8749                 int ret;
8750                 close(pd[1]);   /* Parent reads from pd[0] */
8751                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8752                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8753                         exit(1);
8754                 signal(SIGALRM, blech);
8755                 alarm(5);
8756                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8757                         exit(2);
8758                 sprintf(string, "%d\n", ret);
8759                 write(2, string, strlen(string));
8760                 alarm(0);
8761 #ifdef EAGAIN
8762                 if (errno == EAGAIN) {
8763                         printf("EAGAIN\n");
8764                         goto ok;
8765                 }
8766 #endif
8767 #ifdef EWOULDBLOCK
8768                 if (errno == EWOULDBLOCK)
8769                         printf("EWOULDBLOCK\n");
8770 #endif
8771         ok:
8772                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8773                 sleep(2);                               /* Give it time to close our pipe */
8774                 alarm(5);
8775                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8776                 alarm(0);
8777                 sprintf(string, "%d\n", ret);
8778                 write(3, string, strlen(string));
8779                 exit(0);
8780         }
8781
8782         close(pd[0]);                   /* We write to pd[1] */
8783         close(pu[1]);                   /* We read from pu[0] */
8784         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8785         close(pd[1]);                   /* Pipe pd is now fully closed! */
8786         exit(0);                                /* Bye bye, thank you for playing! */
8787 }
8788 EOCP
8789         set try
8790         if eval $compile_ok; then
8791                 echo "$startsh" >mtry
8792                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8793                 chmod +x mtry
8794                 ./mtry >/dev/null 2>&1
8795                 case $? in
8796                 0) eagain=`$cat try.out`;;
8797                 1) echo "Could not perform non-blocking setting!";;
8798                 2) echo "I did a successful read() for something that was not there!";;
8799                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8800                 *) echo "Something terribly wrong happened during testing.";;
8801                 esac
8802                 rd_nodata=`$cat try.ret`
8803                 echo "A read() system call with no data present returns $rd_nodata."
8804                 case "$rd_nodata" in
8805                 0|-1) ;;
8806                 *)
8807                         echo "(That's peculiar, fixing that to be -1.)"
8808                         rd_nodata=-1
8809                         ;;
8810                 esac
8811                 case "$eagain" in
8812                 '')
8813                         echo "Forcing errno EAGAIN on read() with no data available."
8814                         eagain=EAGAIN
8815                         ;;
8816                 *)
8817                         echo "Your read() sets errno to $eagain when no data is available."
8818                         ;;
8819                 esac
8820                 status=`$cat try.err`
8821                 case "$status" in
8822                 0) echo "And it correctly returns 0 to signal EOF.";;
8823                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8824                 *) echo "However, your read() returns '$status' on EOF??";;
8825                 esac
8826                 val="$define"
8827                 if test "$status" = "$rd_nodata"; then
8828                         echo "WARNING: you can't distinguish between EOF and no data!"
8829                         val="$undef"
8830                 fi
8831         else
8832                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8833                 eagain=EAGAIN
8834         fi
8835         set d_eofnblk
8836         eval $setvar
8837         ;;
8838 *)
8839         echo "Using $hint value $eagain."
8840         echo "Your read() returns $rd_nodata when no data is present."
8841         case "$d_eofnblk" in
8842         "$define") echo "And you can see EOF because read() returns 0.";;
8843         "$undef") echo "But you can't see EOF status from read() returned value.";;
8844         *)
8845                 echo "(Assuming you can't see EOF status from read anyway.)"
8846                 d_eofnblk=$undef
8847                 ;;
8848         esac
8849         ;;
8850 esac
8851 $rm -f try try.* .out core head.c mtry
8852
8853 : see if fchmod exists
8854 set fchmod d_fchmod
8855 eval $inlibc
8856
8857 : see if fchown exists
8858 set fchown d_fchown
8859 eval $inlibc
8860
8861 : see if this is an fcntl system
8862 set fcntl d_fcntl
8863 eval $inlibc
8864
8865 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8866 while $test $# -ge 2; do
8867         case "$1" in
8868         $define) echo "#include <$2>";;
8869         esac ;
8870     shift 2;
8871 done > try.c;
8872 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8873 set try;
8874 if eval $compile; then
8875         val="$define";
8876 else
8877         val="$undef";
8878 fi;
8879 set $varname;
8880 eval $setvar;
8881 $rm -f try.c try.o'
8882
8883 socketlib=''
8884 sockethdr=''
8885 : see whether socket exists
8886 echo " "
8887 $echo $n "Hmm... $c" >&4
8888 if set socket val -f d_socket; eval $csym; $val; then
8889         echo "Looks like you have Berkeley networking support." >&4
8890         d_socket="$define"
8891         if set setsockopt val -f; eval $csym; $val; then
8892                 d_oldsock="$undef"
8893         else
8894                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8895                 d_oldsock="$define"
8896         fi
8897 else
8898         if $contains socklib libc.list >/dev/null 2>&1; then
8899                 echo "Looks like you have Berkeley networking support." >&4
8900                 d_socket="$define"
8901                 : we will have to assume that it supports the 4.2 BSD interface
8902                 d_oldsock="$undef"
8903         else
8904                 echo "You don't have Berkeley networking in libc$_a..." >&4
8905                 if test "X$d_socket" = "X$define"; then
8906                    echo "...but you seem to believe that you have sockets." >&4
8907                 else
8908                         for net in net socket
8909                         do
8910                                 if test -f /usr/lib/lib$net$_a; then
8911                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8912                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8913                                         if $contains socket libc.list >/dev/null 2>&1; then
8914                                                 d_socket="$define"
8915                                                 socketlib="-l$net"
8916                                                 case "$net" in
8917                                                 net)
8918                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8919                                                         sockethdr="-I/usr/netinclude"
8920                                                         ;;
8921                                                 esac
8922                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8923                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8924                                                         d_oldsock="$undef"
8925                                                 else
8926                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8927                                                         d_oldsock="$define"
8928                                                 fi
8929                                                 break
8930                                         fi
8931                                 fi
8932                         done
8933                         if test "X$d_socket" != "X$define"; then
8934                            echo "or anywhere else I see." >&4
8935                            d_socket="$undef"
8936                            d_oldsock="$undef"
8937                         fi
8938                 fi
8939         fi
8940 fi
8941
8942 : see if socketpair exists
8943 set socketpair d_sockpair
8944 eval $inlibc
8945
8946
8947 echo " "
8948 echo "Checking the availability of certain socket constants..." >& 4
8949 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8950         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8951         $cat >try.c <<EOF
8952 #include <sys/types.h>
8953 #include <sys/socket.h>
8954 int main() {
8955     int i = $ENUM;
8956 }
8957 EOF
8958         val="$undef"
8959         set try; if eval $compile; then
8960                 val="$define"
8961         fi
8962         set d_${enum}; eval $setvar
8963         $rm -f try.c try
8964 done
8965
8966 : see if sys/select.h has to be included
8967 set sys/select.h i_sysselct
8968 eval $inhdr
8969
8970 : see if we should include time.h, sys/time.h, or both
8971 echo " "
8972 if test "X$timeincl" = X; then
8973         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8974         $echo $n "I'm now running the test program...$c"
8975         $cat >try.c <<'EOCP'
8976 #include <sys/types.h>
8977 #ifdef I_TIME
8978 #include <time.h>
8979 #endif
8980 #ifdef I_SYSTIME
8981 #ifdef SYSTIMEKERNEL
8982 #define KERNEL
8983 #endif
8984 #include <sys/time.h>
8985 #endif
8986 #ifdef I_SYSSELECT
8987 #include <sys/select.h>
8988 #endif
8989 int main()
8990 {
8991         struct tm foo;
8992 #ifdef S_TIMEVAL
8993         struct timeval bar;
8994 #endif
8995 #ifdef S_TIMEZONE
8996         struct timezone tzp;
8997 #endif
8998         if (foo.tm_sec == foo.tm_sec)
8999                 exit(0);
9000 #ifdef S_TIMEVAL
9001         if (bar.tv_sec == bar.tv_sec)
9002                 exit(0);
9003 #endif
9004         exit(1);
9005 }
9006 EOCP
9007         flags=''
9008         for s_timezone in '-DS_TIMEZONE' ''; do
9009         sysselect=''
9010         for s_timeval in '-DS_TIMEVAL' ''; do
9011         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9012         for i_time in '' '-DI_TIME'; do
9013         for i_systime in '-DI_SYSTIME' ''; do
9014                 case "$flags" in
9015                 '') $echo $n ".$c"
9016                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9017                         if eval $compile; then
9018                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9019                                 shift
9020                                 flags="$*"
9021                                 echo " "
9022                                 $echo $n "Succeeded with $flags$c"
9023                         fi
9024                         ;;
9025                 esac
9026         done
9027         done
9028         done
9029         done
9030         done
9031         timeincl=''
9032         echo " "
9033         case "$flags" in
9034         *SYSTIMEKERNEL*) i_systimek="$define"
9035                 timeincl=`./findhdr sys/time.h`
9036                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9037         *) i_systimek="$undef";;
9038         esac
9039         case "$flags" in
9040         *I_TIME*) i_time="$define"
9041                 timeincl=`./findhdr time.h`" $timeincl"
9042                 echo "We'll include <time.h>." >&4;;
9043         *) i_time="$undef";;
9044         esac
9045         case "$flags" in
9046         *I_SYSTIME*) i_systime="$define"
9047                 timeincl=`./findhdr sys/time.h`" $timeincl"
9048                 echo "We'll include <sys/time.h>." >&4;;
9049         *) i_systime="$undef";;
9050         esac
9051         $rm -f try.c try
9052 fi
9053
9054 : check for fd_set items
9055 $cat <<EOM
9056
9057 Checking to see how well your C compiler handles fd_set and friends ...
9058 EOM
9059 $cat >fd_set.c <<EOCP
9060 #$i_systime I_SYS_TIME
9061 #$i_sysselct I_SYS_SELECT
9062 #$d_socket HAS_SOCKET
9063 #include <sys/types.h>
9064 #ifdef HAS_SOCKET
9065 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9066 #endif
9067 #ifdef I_SYS_TIME
9068 #include <sys/time.h>
9069 #endif
9070 #ifdef I_SYS_SELECT
9071 #include <sys/select.h>
9072 #endif
9073 int main() {
9074         fd_set fds;
9075
9076 #ifdef TRYBITS
9077         if(fds.fds_bits);
9078 #endif
9079
9080 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9081         exit(0);
9082 #else
9083         exit(1);
9084 #endif
9085 }
9086 EOCP
9087 set fd_set -DTRYBITS
9088 if eval $compile; then
9089         d_fds_bits="$define"
9090         d_fd_set="$define"
9091         echo "Well, your system knows about the normal fd_set typedef..." >&4
9092         if ./fd_set; then
9093                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9094                 d_fd_macros="$define"
9095         else
9096                 $cat >&4 <<'EOM'
9097 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9098 EOM
9099                 d_fd_macros="$undef"
9100         fi
9101 else
9102         $cat <<'EOM'
9103 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9104 EOM
9105         set fd_set
9106         if eval $compile; then
9107                 d_fds_bits="$undef"
9108                 d_fd_set="$define"
9109                 echo "Well, your system has some sort of fd_set available..." >&4
9110                 if ./fd_set; then
9111                         echo "and you have the normal fd_set macros." >&4
9112                         d_fd_macros="$define"
9113                 else
9114                         $cat <<'EOM'
9115 but not the normal fd_set macros!  Gross!  More work for me...
9116 EOM
9117                         d_fd_macros="$undef"
9118                 fi
9119         else
9120         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9121                 d_fd_set="$undef"
9122                 d_fds_bits="$undef"
9123                 d_fd_macros="$undef"
9124         fi
9125 fi
9126 $rm -f fd_set*
9127
9128 : see if fgetpos exists
9129 set fgetpos d_fgetpos
9130 eval $inlibc
9131
9132 : see if flock exists
9133 set flock d_flock
9134 eval $inlibc
9135
9136 : see if fork exists
9137 set fork d_fork
9138 eval $inlibc
9139
9140 : see if pathconf exists
9141 set pathconf d_pathconf
9142 eval $inlibc
9143
9144 : see if fpathconf exists
9145 set fpathconf d_fpathconf
9146 eval $inlibc
9147
9148
9149 : check for fpos64_t
9150 echo " "
9151 echo "Checking to see if you have fpos64_t..." >&4
9152 $cat >try.c <<EOCP
9153 #include <stdio.h>
9154 int main() { fpos64_t x = 7; }
9155 EOCP
9156 set try
9157 if eval $compile; then
9158         val="$define"
9159         echo "You have fpos64_t."
9160 else
9161         val="$undef"
9162         echo "You do not have fpos64_t."
9163         case "$fpossize" in
9164         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9165         esac
9166 fi
9167 $rm -f try.* try
9168 set d_fpos64_t
9169 eval $setvar
9170
9171 : see if frexpl exists
9172 set frexpl d_frexpl
9173 eval $inlibc
9174
9175 hasstruct='varname=$1; struct=$2; shift; shift;
9176 while $test $# -ge 2; do
9177         case "$1" in
9178         $define) echo "#include <$2>";;
9179         esac ;
9180     shift 2;
9181 done > try.c;
9182 echo "int main () { struct $struct foo; }" >> try.c;
9183 set try;
9184 if eval $compile; then
9185         val="$define";
9186 else
9187         val="$undef";
9188 fi;
9189 set $varname;
9190 eval $setvar;
9191 $rm -f try.c try.o'
9192
9193 : see if this is a sys/param system
9194 set sys/param.h i_sysparam
9195 eval $inhdr
9196
9197 : see if this is a sys/mount.h system
9198 set sys/mount.h i_sysmount
9199 eval $inhdr
9200
9201 : see if sys/types.h has to be included
9202 set sys/types.h i_systypes
9203 eval $inhdr
9204
9205
9206 echo " "
9207 echo "Checking to see if your system supports struct fs_data..." >&4
9208 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9209 eval $hasstruct
9210 case "$d_fs_data_s" in
9211 "$define")      echo "Yes, it does."   ;;
9212 *)              echo "No, it doesn't." ;;
9213 esac
9214
9215 : see if fseeko exists
9216 set fseeko d_fseeko
9217 eval $inlibc
9218 case "$longsize" in
9219 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9220 esac
9221
9222 : see if fsetpos exists
9223 set fsetpos d_fsetpos
9224 eval $inlibc
9225
9226
9227 : see if fstatfs exists
9228 set fstatfs d_fstatfs
9229 eval $inlibc
9230
9231
9232 : see if statvfs exists
9233 set statvfs d_statvfs
9234 eval $inlibc
9235
9236 : see if fstatvfs exists
9237 set fstatvfs d_fstatvfs
9238 eval $inlibc
9239
9240
9241 : see if ftello exists
9242 set ftello d_ftello
9243 eval $inlibc
9244 case "$longsize" in
9245 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9246 esac
9247
9248 : see if getcwd exists
9249 set getcwd d_getcwd
9250 eval $inlibc
9251
9252 : see if getespwnam exists
9253 set getespwnam d_getespwnam
9254 eval $inlibc
9255
9256
9257 : see if getfsstat exists
9258 set getfsstat d_getfsstat
9259 eval $inlibc
9260
9261 : see if getgrent exists
9262 set getgrent d_getgrent
9263 eval $inlibc
9264
9265 : see if gethostbyaddr exists
9266 set gethostbyaddr d_gethbyaddr
9267 eval $inlibc
9268
9269 : see if gethostbyname exists
9270 set gethostbyname d_gethbyname
9271 eval $inlibc
9272
9273 : see if gethostent exists
9274 set gethostent d_gethent
9275 eval $inlibc
9276
9277 : see how we will look up host name
9278 echo " "
9279 call=''
9280 if set gethostname val -f d_gethname; eval $csym; $val; then
9281         echo 'gethostname() found.' >&4
9282         d_gethname="$define"
9283         call=gethostname
9284 fi
9285 if set uname val -f d_uname; eval $csym; $val; then
9286         if ./xenix; then
9287                 $cat <<'EOM'
9288 uname() was found, but you're running xenix, and older versions of xenix
9289 have a broken uname(). If you don't really know whether your xenix is old
9290 enough to have a broken system call, use the default answer.
9291
9292 EOM
9293                 dflt=y
9294                 case "$d_uname" in
9295                 "$define") dflt=n;;
9296                 esac
9297                 rp='Is your uname() broken?'
9298                 . ./myread
9299                 case "$ans" in
9300                 n*) d_uname="$define"; call=uname;;
9301                 esac
9302         else
9303                 echo 'uname() found.' >&4
9304                 d_uname="$define"
9305                 case "$call" in
9306                 '') call=uname ;;
9307                 esac
9308         fi
9309 fi
9310 case "$d_gethname" in
9311 '') d_gethname="$undef";;
9312 esac
9313 case "$d_uname" in
9314 '') d_uname="$undef";;
9315 esac
9316 case "$d_uname$d_gethname" in
9317 *define*)
9318         dflt=n
9319         cat <<EOM
9320  
9321 Every now and then someone has a $call() that lies about the hostname
9322 but can't be fixed for political or economic reasons.  If you wish, I can
9323 pretend $call() isn't there and maybe compute hostname at run-time
9324 thanks to the '$phostname' command.
9325
9326 EOM
9327         rp="Shall I ignore $call() from now on?"
9328         . ./myread
9329         case "$ans" in
9330         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9331         esac;;
9332 esac
9333 case "$phostname" in
9334 '') aphostname='';;
9335 *) case "$aphostname" in
9336         /*) ;;
9337         *) set X $phostname
9338                 shift
9339                 file=$1
9340                 shift
9341                 file=`./loc $file $file $pth`
9342                 aphostname=`echo $file $*`
9343                 ;;
9344         esac
9345         ;;
9346 esac
9347 case "$d_uname$d_gethname" in
9348 *define*) ;;
9349 *)
9350         case "$phostname" in
9351         '')
9352                 echo "There will be no way for $package to get your hostname." >&4;;
9353         *)
9354         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9355                 ;;
9356         esac;;
9357 esac
9358 case "$d_phostname" in
9359 '') d_phostname="$undef";;
9360 esac
9361
9362 : see if this is a netdb.h system
9363 set netdb.h i_netdb
9364 eval $inhdr
9365
9366 : see if prototypes for various gethostxxx netdb.h functions are available
9367 echo " "
9368 set d_gethostprotos gethostent $i_netdb netdb.h
9369 eval $hasproto
9370
9371 : see if getlogin exists
9372 set getlogin d_getlogin
9373 eval $inlibc
9374
9375 : see if getmnt exists
9376 set getmnt d_getmnt
9377 eval $inlibc
9378
9379 : see if getmntent exists
9380 set getmntent d_getmntent
9381 eval $inlibc
9382
9383 : see if getnetbyaddr exists
9384 set getnetbyaddr d_getnbyaddr
9385 eval $inlibc
9386
9387 : see if getnetbyname exists
9388 set getnetbyname d_getnbyname
9389 eval $inlibc
9390
9391 : see if getnetent exists
9392 set getnetent d_getnent
9393 eval $inlibc
9394
9395 : see if prototypes for various getnetxxx netdb.h functions are available
9396 echo " "
9397 set d_getnetprotos getnetent $i_netdb netdb.h
9398 eval $hasproto
9399
9400
9401 : see if getprotobyname exists
9402 set getprotobyname d_getpbyname
9403 eval $inlibc
9404
9405 : see if getprotobynumber exists
9406 set getprotobynumber d_getpbynumber
9407 eval $inlibc
9408
9409 : see if getprotoent exists
9410 set getprotoent d_getpent
9411 eval $inlibc
9412
9413 : see if getpgid exists
9414 set getpgid d_getpgid
9415 eval $inlibc
9416
9417 : see if getpgrp2 exists
9418 set getpgrp2 d_getpgrp2
9419 eval $inlibc
9420
9421 : see if getppid exists
9422 set getppid d_getppid
9423 eval $inlibc
9424
9425 : see if getpriority exists
9426 set getpriority d_getprior
9427 eval $inlibc
9428
9429 : see if prototypes for various getprotoxxx netdb.h functions are available
9430 echo " "
9431 set d_getprotoprotos getprotoent $i_netdb netdb.h
9432 eval $hasproto
9433
9434 : see if getprpwnam exists
9435 set getprpwnam d_getprpwnam
9436 eval $inlibc
9437
9438 : see if getpwent exists
9439 set getpwent d_getpwent
9440 eval $inlibc
9441
9442
9443 : see if getservbyname exists
9444 set getservbyname d_getsbyname
9445 eval $inlibc
9446
9447 : see if getservbyport exists
9448 set getservbyport d_getsbyport
9449 eval $inlibc
9450
9451 : see if getservent exists
9452 set getservent d_getsent
9453 eval $inlibc
9454
9455 : see if prototypes for various getservxxx netdb.h functions are available
9456 echo " "
9457 set d_getservprotos getservent $i_netdb netdb.h
9458 eval $hasproto
9459
9460 : see if getspnam exists
9461 set getspnam d_getspnam
9462 eval $inlibc
9463
9464 : see if gettimeofday or ftime exists
9465 set gettimeofday d_gettimeod
9466 eval $inlibc
9467 case "$d_gettimeod" in
9468 "$undef")
9469         set ftime d_ftime 
9470         eval $inlibc
9471         ;;
9472 *)
9473         val="$undef"; set d_ftime; eval $setvar
9474         ;;
9475 esac
9476 case "$d_gettimeod$d_ftime" in
9477 "$undef$undef")
9478         echo " "
9479         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9480         ;;
9481 esac
9482
9483 : see if this is an grp system
9484 set grp.h i_grp
9485 eval $inhdr
9486
9487 case "$i_grp" in
9488 $define)
9489         xxx=`./findhdr grp.h`
9490         $cppstdin $cppflags $cppminus < $xxx >$$.h
9491
9492         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9493                 val="$define"
9494         else
9495                 val="$undef"
9496         fi
9497         set d_grpasswd
9498         eval $setvar
9499
9500         $rm -f $$.h
9501         ;;
9502 *)
9503         val="$undef";
9504         set d_grpasswd; eval $setvar
9505         ;;
9506 esac
9507
9508 : see if hasmntopt exists
9509 set hasmntopt d_hasmntopt
9510 eval $inlibc
9511
9512 : see if this is a netinet/in.h or sys/in.h system
9513 set netinet/in.h i_niin sys/in.h i_sysin
9514 eval $inhdr
9515
9516 : see if arpa/inet.h has to be included
9517 set arpa/inet.h i_arpainet
9518 eval $inhdr
9519
9520 : see if htonl --and friends-- exists
9521 val=''
9522 set htonl val
9523 eval $inlibc
9524
9525 : Maybe they are macros.
9526 case "$val" in
9527 $undef)
9528         $cat >htonl.c <<EOM
9529 #include <stdio.h>
9530 #include <sys/types.h>
9531 #$i_niin I_NETINET_IN
9532 #$i_sysin I_SYS_IN
9533 #$i_arpainet I_ARPA_INET
9534 #ifdef I_NETINET_IN
9535 #include <netinet/in.h>
9536 #endif
9537 #ifdef I_SYS_IN
9538 #include <sys/in.h>
9539 #endif
9540 #ifdef I_ARPA_INET
9541 #include <arpa/inet.h>
9542 #endif
9543 #ifdef htonl
9544 printf("Defined as a macro.");
9545 #endif
9546 EOM
9547         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9548         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9549                 val="$define"
9550                 echo "But it seems to be defined as a macro." >&4
9551         fi
9552         $rm -f htonl.?
9553         ;;
9554 esac
9555 set d_htonl
9556 eval $setvar
9557
9558 : see if iconv exists
9559 set iconv d_iconv
9560 eval $inlibc
9561
9562 : index or strchr
9563 echo " "
9564 if set index val -f; eval $csym; $val; then
9565         if set strchr val -f d_strchr; eval $csym; $val; then
9566                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9567                         val="$define"
9568                         vali="$undef"
9569                         echo "strchr() found." >&4
9570                 else
9571                         val="$undef"
9572                         vali="$define"
9573                         echo "index() found." >&4
9574                 fi
9575         else
9576                 val="$undef"
9577                 vali="$define"
9578                 echo "index() found." >&4
9579         fi
9580 else
9581         if set strchr val -f d_strchr; eval $csym; $val; then
9582                 val="$define"
9583                 vali="$undef"
9584                 echo "strchr() found." >&4
9585         else
9586                 echo "No index() or strchr() found!" >&4
9587                 val="$undef"
9588                 vali="$undef"
9589         fi
9590 fi
9591 set d_strchr; eval $setvar
9592 val="$vali"
9593 set d_index; eval $setvar
9594
9595 : check whether inet_aton exists
9596 set inet_aton d_inetaton
9597 eval $inlibc
9598
9599 : see if inttypes.h is available
9600 : we want a real compile instead of Inhdr because some systems
9601 : have an inttypes.h which includes non-existent headers
9602 echo " "
9603 $cat >try.c <<EOCP
9604 #include <inttypes.h>
9605 int main() {
9606         static int32_t foo32 = 0x12345678;
9607 }
9608 EOCP
9609 set try
9610 if eval $compile; then
9611         echo "<inttypes.h> found." >&4
9612         val="$define"
9613 else
9614         echo "<inttypes.h> NOT found." >&4
9615         val="$undef"
9616 fi
9617 $rm -f try.c try
9618 set i_inttypes
9619 eval $setvar
9620
9621 : check for int64_t
9622 echo " "
9623 echo "Checking to see if you have int64_t..." >&4
9624 $cat >try.c <<EOCP
9625 #include <sys/types.h>
9626 #$i_inttypes I_INTTYPES
9627 #ifdef I_INTTYPES
9628 #include <inttypes.h>
9629 #endif
9630 int main() { int64_t x = 7; }
9631 EOCP
9632 set try
9633 if eval $compile; then
9634         val="$define"
9635         echo "You have int64_t."
9636 else
9637         val="$undef"
9638         echo "You do not have int64_t."
9639 fi
9640 $rm -f try try.*
9641 set d_int64_t
9642 eval $setvar
9643
9644 : Look for isascii
9645 echo " "
9646 $cat >isascii.c <<'EOCP'
9647 #include <stdio.h>
9648 #include <ctype.h>
9649 int main() {
9650         int c = 'A';
9651         if (isascii(c))
9652                 exit(0);
9653         else
9654                 exit(1);
9655 }
9656 EOCP
9657 set isascii
9658 if eval $compile; then
9659         echo "isascii() found." >&4
9660         val="$define"
9661 else
9662         echo "isascii() NOT found." >&4
9663         val="$undef"
9664 fi
9665 set d_isascii
9666 eval $setvar
9667 $rm -f isascii*
9668
9669 : see if isnan exists
9670 set isnan d_isnan
9671 eval $inlibc
9672
9673 : see if isnanl exists
9674 set isnanl d_isnanl
9675 eval $inlibc
9676
9677 : see if killpg exists
9678 set killpg d_killpg
9679 eval $inlibc
9680
9681 : see if lchown exists
9682 echo " "
9683 $cat > try.c <<'EOCP'
9684 /* System header to define __stub macros and hopefully few prototypes,
9685     which can conflict with char lchown(); below.  */
9686 #include <assert.h>
9687 /* Override any gcc2 internal prototype to avoid an error.  */
9688 /* We use char because int might match the return type of a gcc2
9689    builtin and then its argument prototype would still apply.  */
9690 char lchown();
9691 int main() {
9692     /*  The GNU C library defines this for functions which it implements
9693         to always fail with ENOSYS.  Some functions are actually named
9694         something starting with __ and the normal name is an alias.  */
9695 #if defined (__stub_lchown) || defined (__stub___lchown)
9696 choke me
9697 #else
9698 lchown();
9699 #endif
9700 ; return 0; }
9701 EOCP
9702 set try
9703 if eval $compile; then
9704     $echo "lchown() found." >&4
9705     val="$define"
9706 else
9707     $echo "lchown() NOT found." >&4
9708     val="$undef"
9709 fi
9710 set d_lchown
9711 eval $setvar
9712
9713 : See if number of significant digits in a double precision number is known
9714 echo " "
9715 $cat >ldbl_dig.c <<EOM
9716 #$i_limits I_LIMITS
9717 #$i_float I_FLOAT
9718 #ifdef I_LIMITS
9719 #include <limits.h>
9720 #endif
9721 #ifdef I_FLOAT
9722 #include <float.h>
9723 #endif
9724 #ifdef LDBL_DIG
9725 printf("Contains LDBL_DIG");
9726 #endif
9727 EOM
9728 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9729 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9730         echo "LDBL_DIG found." >&4
9731         val="$define"
9732 else
9733         echo "LDBL_DIG NOT found." >&4
9734         val="$undef"
9735 fi
9736 $rm -f ldbl_dig.?
9737 set d_ldbl_dig
9738 eval $setvar
9739
9740 : see if link exists
9741 set link d_link
9742 eval $inlibc
9743
9744 : see if localeconv exists
9745 set localeconv d_locconv
9746 eval $inlibc
9747
9748 : see if lockf exists
9749 set lockf d_lockf
9750 eval $inlibc
9751
9752 : check for long long
9753 echo " "
9754 echo "Checking to see if you have long long..." >&4
9755 echo 'int main() { long long x = 7; return 0; }' > try.c
9756 set try
9757 if eval $compile; then
9758         val="$define"
9759         echo "You have long long."
9760 else
9761         val="$undef"
9762         echo "You do not have long long."
9763 fi
9764 $rm try.*
9765 set d_longlong
9766 eval $setvar
9767
9768 : check for length of long long
9769 case "${d_longlong}${longlongsize}" in
9770 $define)
9771         echo " "
9772         echo "Checking to see how big your long longs are..." >&4
9773         $cat >try.c <<'EOCP'
9774 #include <stdio.h>
9775 int main()
9776 {
9777     printf("%d\n", (int)sizeof(long long));
9778     return(0);
9779 }
9780 EOCP
9781         set try
9782         if eval $compile_ok; then
9783                 longlongsize=`./try$exe_ext`
9784                 echo "Your long longs are $longlongsize bytes long."
9785         else
9786                 dflt='8'
9787                 echo " "
9788                 echo "(I can't seem to compile the test program.  Guessing...)"
9789                 rp="What is the size of a long long (in bytes)?"
9790                 . ./myread
9791                 longlongsize="$ans"
9792         fi
9793         if $test "X$longsize" = "X$longlongsize"; then
9794                 echo "(That isn't any different from an ordinary long.)"
9795         fi      
9796         ;;
9797 esac
9798 $rm -f try.* try
9799
9800 : see if prototype for lseek is available
9801 echo " "
9802 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9803 eval $hasproto
9804
9805 : see if lstat exists
9806 set lstat d_lstat
9807 eval $inlibc
9808
9809 : see if madvise exists
9810 set madvise d_madvise
9811 eval $inlibc
9812
9813 : see if mblen exists
9814 set mblen d_mblen
9815 eval $inlibc
9816
9817 : see if mbstowcs exists
9818 set mbstowcs d_mbstowcs
9819 eval $inlibc
9820
9821 : see if mbtowc exists
9822 set mbtowc d_mbtowc
9823 eval $inlibc
9824
9825 : see if memchr exists
9826 set memchr d_memchr
9827 eval $inlibc
9828
9829 : see if memcmp exists
9830 set memcmp d_memcmp
9831 eval $inlibc
9832
9833 : see if memcpy exists
9834 set memcpy d_memcpy
9835 eval $inlibc
9836
9837 : see if memmove exists
9838 set memmove d_memmove
9839 eval $inlibc
9840
9841 : see if memset exists
9842 set memset d_memset
9843 eval $inlibc
9844
9845 : see if mkdir exists
9846 set mkdir d_mkdir
9847 eval $inlibc
9848
9849 : see if mkdtemp exists
9850 set mkdtemp d_mkdtemp
9851 eval $inlibc
9852
9853 : see if mkfifo exists
9854 set mkfifo d_mkfifo
9855 eval $inlibc
9856
9857 : see if mkstemp exists
9858 set mkstemp d_mkstemp
9859 eval $inlibc
9860
9861 : see if mkstemps exists
9862 set mkstemps d_mkstemps
9863 eval $inlibc
9864
9865 : see if mktime exists
9866 set mktime d_mktime
9867 eval $inlibc
9868
9869 : see if this is a sys/mman.h system
9870 set sys/mman.h i_sysmman
9871 eval $inhdr
9872
9873 : see if mmap exists
9874 set mmap d_mmap
9875 eval $inlibc
9876 : see what shmat returns
9877 : default to something harmless
9878 mmaptype='void *'
9879 case "$i_sysmman$d_mmap" in
9880 "$define$define")
9881         $cat >mmap.c <<'END'
9882 #include <sys/mman.h>
9883 void *mmap();
9884 END
9885         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9886                 mmaptype='void *'
9887         else
9888                 mmaptype='caddr_t'
9889         fi
9890         echo "and it returns ($mmaptype)." >&4
9891         ;;
9892 esac
9893
9894
9895
9896 : see if modfl exists
9897 set modfl d_modfl
9898 eval $inlibc
9899
9900 : see if mprotect exists
9901 set mprotect d_mprotect
9902 eval $inlibc
9903
9904 : see if msgctl exists
9905 set msgctl d_msgctl
9906 eval $inlibc
9907
9908 : see if msgget exists
9909 set msgget d_msgget
9910 eval $inlibc
9911
9912 : see if msgsnd exists
9913 set msgsnd d_msgsnd
9914 eval $inlibc
9915
9916 : see if msgrcv exists
9917 set msgrcv d_msgrcv
9918 eval $inlibc
9919
9920 : see how much of the 'msg*(2)' library is present.
9921 h_msg=true
9922 echo " "
9923 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9924 *"$undef"*) h_msg=false;;
9925 esac
9926 case "$osname" in
9927 freebsd)
9928     case "`ipcs 2>&1`" in
9929     "SVID messages"*"not configured"*)
9930         echo "Your $osname does not have the msg*(2) configured." >&4
9931         h_msg=false
9932         val="$undef"
9933         set msgctl d_msgctl
9934         eval $setvar
9935         set msgget d_msgget
9936         eval $setvar
9937         set msgsnd d_msgsnd
9938         eval $setvar
9939         set msgrcv d_msgrcv
9940         eval $setvar
9941         ;;
9942     esac
9943     ;;
9944 esac
9945 : we could also check for sys/ipc.h ...
9946 if $h_msg && $test `./findhdr sys/msg.h`; then
9947         echo "You have the full msg*(2) library." >&4
9948         val="$define"
9949 else
9950         echo "You don't have the full msg*(2) library." >&4
9951         val="$undef"
9952 fi
9953 set d_msg
9954 eval $setvar
9955
9956 : see if msync exists
9957 set msync d_msync
9958 eval $inlibc
9959
9960 : see if munmap exists
9961 set munmap d_munmap
9962 eval $inlibc
9963
9964 : see if nice exists
9965 set nice d_nice
9966 eval $inlibc
9967
9968
9969 echo " "
9970 echo "Checking which 64-bit integer type we could use..." >&4
9971
9972 case "$intsize" in
9973 8) val=int
9974    set quadtype
9975    eval $setvar
9976    val='"unsigned int"'
9977    set uquadtype
9978    eval $setvar
9979    quadkind=1
9980    ;;
9981 *) case "$longsize" in
9982    8) val=long
9983       set quadtype
9984       eval $setvar
9985       val='"unsigned long"'
9986       set uquadtype
9987       eval $setvar
9988       quadkind=2
9989       ;;
9990    *) case "$d_longlong:$longlongsize" in
9991       define:8)
9992         val='"long long"'
9993         set quadtype
9994         eval $setvar
9995         val='"unsigned long long"'
9996         set uquadtype
9997         eval $setvar
9998         quadkind=3
9999         ;;
10000       *) case "$d_int64_t" in
10001          define)
10002            val=int64_t
10003            set quadtype
10004            eval $setvar
10005            val=uint64_t
10006            set uquadtype
10007            eval $setvar
10008            quadkind=4
10009            ;;
10010          esac
10011          ;;
10012       esac
10013       ;;
10014    esac
10015    ;;
10016 esac
10017
10018 case "$quadtype" in
10019 '')     echo "Alas, no 64-bit integer types in sight." >&4
10020         d_quad="$undef"
10021         ;;
10022 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10023             verb="will"
10024         else
10025             verb="could"
10026         fi
10027         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10028         d_quad="$define"
10029         ;;
10030 esac
10031
10032 : check for length of character
10033 echo " "
10034 case "$charsize" in
10035 '')
10036         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10037         $cat >try.c <<'EOCP'
10038 #include <stdio.h>
10039 int main()
10040 {
10041     printf("%d\n", (int)sizeof(char));
10042     exit(0);
10043 }
10044 EOCP
10045         set try
10046         if eval $compile_ok; then
10047                 dflt=`./try`
10048         else
10049                 dflt='1'
10050                 echo "(I can't seem to compile the test program.  Guessing...)"
10051         fi
10052         ;;
10053 *)
10054         dflt="$charsize"
10055         ;;
10056 esac
10057 rp="What is the size of a character (in bytes)?"
10058 . ./myread
10059 charsize="$ans"
10060 $rm -f try.c try
10061
10062
10063 echo " "
10064 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10065
10066 case "$use64bitint:$d_quad:$quadtype" in
10067 define:define:?*)
10068         ivtype="$quadtype"
10069         uvtype="$uquadtype"
10070         ivsize=8
10071         uvsize=8
10072         ;;
10073 *)      ivtype="long"
10074         uvtype="unsigned long"
10075         ivsize=$longsize
10076         uvsize=$longsize
10077         ;;
10078 esac
10079
10080 case "$uselongdouble:$d_longdbl" in
10081 define:define)
10082         nvtype="long double"
10083         nvsize=$longdblsize
10084         ;;
10085 *)      nvtype=double
10086         nvsize=$doublesize
10087         ;;
10088 esac
10089
10090 $echo "(IV will be "$ivtype", $ivsize bytes)"
10091 $echo "(UV will be "$uvtype", $uvsize bytes)"
10092 $echo "(NV will be "$nvtype", $nvsize bytes)"
10093
10094 $cat >try.c <<EOCP
10095 #$i_inttypes I_INTTYPES
10096 #ifdef I_INTTYPES
10097 #include <inttypes.h>
10098 #endif
10099 #include <stdio.h>
10100 int main() {
10101 #ifdef INT8
10102    int8_t i =  INT8_MAX;
10103   uint8_t u = UINT8_MAX;
10104   printf("int8_t\n");
10105 #endif
10106 #ifdef INT16
10107    int16_t i =  INT16_MAX;
10108   uint16_t i = UINT16_MAX;
10109   printf("int16_t\n");
10110 #endif
10111 #ifdef INT32
10112    int32_t i =  INT32_MAX;
10113   uint32_t u = UINT32_MAX;
10114   printf("int32_t\n");
10115 #endif
10116 }
10117 EOCP
10118
10119 case "$i8type" in
10120 '')     case "$charsize" in
10121         1)      i8type=char
10122                 u8type="unsigned char"
10123                 i8size=$charsize
10124                 u8size=$charsize
10125                 ;;
10126         esac
10127         ;;
10128 esac
10129 case "$i8type" in
10130 '')     set try -DINT8
10131         if eval $compile; then
10132                 case "`./try$exe_ext`" in
10133                 int8_t) i8type=int8_t
10134                         u8type=uint8_t
10135                         i8size=1
10136                         u8size=1
10137                         ;;
10138                 esac
10139         fi
10140         ;;
10141 esac
10142 case "$i8type" in
10143 '')     if $test $charsize -ge 1; then
10144                 i8type=char
10145                 u8type="unsigned char"
10146                 i8size=$charsize
10147                 u8size=$charsize
10148         fi
10149         ;;
10150 esac
10151
10152 case "$i16type" in
10153 '')     case "$shortsize" in
10154         2)      i16type=short
10155                 u16type="unsigned short"
10156                 i16size=$shortsize
10157                 u16size=$shortsize
10158                 ;;
10159         esac
10160         ;;
10161 esac
10162 case "$i16type" in
10163 '')     set try -DINT16
10164         if eval $compile; then
10165                 case "`./try$exe_ext`" in
10166                 int16_t)
10167                         i16type=int16_t
10168                         u16type=uint16_t
10169                         i16size=2
10170                         u16size=2
10171                         ;;
10172                 esac
10173         fi
10174         ;;
10175 esac
10176 case "$i16type" in
10177 '')     if $test $shortsize -ge 2; then
10178                 i16type=short
10179                 u16type="unsigned short"
10180                 i16size=$shortsize
10181                 u16size=$shortsize
10182         fi
10183         ;;
10184 esac
10185
10186 case "$i32type" in
10187 '')     case "$longsize" in
10188         4)      i32type=long
10189                 u32type="unsigned long"
10190                 i32size=$longsize
10191                 u32size=$longsize
10192                 ;;
10193         *)      case "$intsize" in
10194                 4)      i32type=int
10195                         u32type="unsigned int"
10196                         i32size=$intsize
10197                         u32size=$intsize
10198                         ;;
10199                 esac
10200                 ;;
10201         esac
10202         ;;
10203 esac
10204 case "$i32type" in
10205 '')     set try -DINT32
10206         if eval $compile; then
10207                 case "`./try$exe_ext`" in
10208                 int32_t)
10209                         i32type=int32_t
10210                         u32type=uint32_t
10211                         i32size=4
10212                         u32size=4
10213                         ;;
10214                 esac
10215         fi
10216         ;;
10217 esac
10218 case "$i32type" in
10219 '')     if $test $intsize -ge 4; then
10220                 i32type=int
10221                 u32type="unsigned int"
10222                 i32size=$intsize
10223                 u32size=$intsize
10224         fi
10225         ;;
10226 esac
10227
10228 case "$i64type" in
10229 '')     case "$d_quad:$quadtype" in
10230         define:?*)
10231                 i64type="$quadtype"
10232                 u64type="$uquadtype"
10233                 i64size=8
10234                 u64size=8
10235                 ;;
10236         esac
10237         ;;
10238 esac
10239
10240 $echo "Checking whether your NVs can preserve your UVs..." >&4
10241 $cat <<EOP >try.c
10242 #include <stdio.h>
10243 int main() {
10244     $uvtype k = ($uvtype)~0, l;
10245     $nvtype d;
10246     l = k;
10247     d = ($nvtype)l;
10248     l = ($uvtype)d;
10249     if (l == k)
10250        printf("preserve\n");
10251     exit(0);
10252 }
10253 EOP
10254 set try
10255 if eval $compile; then
10256         case "`./try$exe_ext`" in
10257         preserve) d_nv_preserves_uv="$define" ;;
10258         esac
10259 fi      
10260 case "$d_nv_preserves_uv" in
10261 $define) $echo "Yes, they can."  2>&1 ;;
10262 *)       $echo "No, they can't." 2>&1
10263          d_nv_preserves_uv="$undef"
10264          ;;
10265 esac
10266
10267 $rm -f try.* try
10268
10269 case "$d_nv_preserves_uv" in
10270 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10271 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10272         $cat <<EOP >try.c
10273 #include <stdio.h>
10274 int main() {
10275     $uvtype u = 0;
10276     int     n = 8 * $uvsize;
10277     int     i;
10278     for (i = 0; i < n; i++) {
10279       u = u << 1 | ($uvtype)1;
10280       if (($uvtype)($nvtype)u != u)
10281         break;
10282     }
10283     printf("%d\n", i);
10284     exit(0);
10285 }
10286 EOP
10287         set try
10288         if eval $compile; then
10289                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10290         fi
10291         case "$d_nv_preserves_uv_bits" in
10292         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10293         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10294                 d_nv_preserves_uv_bits="$undef"
10295                 ;;
10296         esac
10297         $rm -f try.* try
10298         ;;
10299 esac
10300
10301
10302
10303 : check for off64_t
10304 echo " "
10305 echo "Checking to see if you have off64_t..." >&4
10306 $cat >try.c <<EOCP
10307 #include <sys/types.h>
10308 #include <unistd.h>
10309 int main() { off64_t x = 7; }
10310 EOCP
10311 set try
10312 if eval $compile; then
10313         val="$define"
10314         echo "You have off64_t."
10315 else
10316         val="$undef"
10317         echo "You do not have off64_t."
10318         case "$lseeksize" in
10319         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10320         esac
10321 fi
10322 $rm -f try.* try
10323 set d_off64_t
10324 eval $setvar
10325
10326 : see if POSIX threads are available
10327 set pthread.h i_pthread
10328 eval $inhdr
10329
10330
10331
10332
10333 : how to create joinable pthreads
10334 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10335         echo " "
10336         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10337         $cat >try.c <<'EOCP'
10338 #include <pthread.h>
10339 int main() {
10340     int detachstate = JOINABLE;
10341 }
10342 EOCP
10343         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10344         if eval $compile; then
10345                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10346                 val="$undef" # Yes, undef.
10347                 set d_old_pthread_create_joinable
10348                 eval $setvar
10349                 val=""
10350                 set old_pthread_create_joinable
10351                 eval $setvar
10352         else
10353                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10354                 if eval $compile; then
10355                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10356                         val="$define"
10357                         set d_old_pthread_create_joinable
10358                         eval $setvar
10359                         val=PTHREAD_CREATE_UNDETACHED
10360                         set old_pthread_create_joinable
10361                         eval $setvar
10362                 else            
10363                         set try -DJOINABLE=__UNDETACHED
10364                         if eval $compile; then
10365                                 echo "You seem to use __UNDETACHED." >&4
10366                                 val="$define"
10367                                 set d_old_pthread_create_joinable
10368                                 eval $setvar
10369                                 val=__UNDETACHED
10370                                 set old_pthread_create_joinable
10371                                 eval $setvar
10372                         else
10373                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10374                                 val="$define"
10375                                 set d_old_pthread_create_joinable
10376                                 eval $setvar
10377                                 val=0
10378                                 set old_pthread_create_joinable
10379                                 eval $setvar
10380                         fi
10381                 fi
10382         fi
10383         $rm -f try try.*
10384 else
10385     d_old_pthread_create_joinable="$undef"
10386     old_pthread_create_joinable=""
10387 fi
10388
10389 : see if pause exists
10390 set pause d_pause
10391 eval $inlibc
10392
10393 : see if pipe exists
10394 set pipe d_pipe
10395 eval $inlibc
10396
10397 : see if poll exists
10398 set poll d_poll
10399 eval $inlibc
10400
10401
10402 : see whether the various POSIXish _yields exist
10403 $cat >try.c <<EOP
10404 #include <pthread.h>
10405 #include <stdio.h>
10406 int main() {
10407 #ifdef SCHED_YIELD
10408         sched_yield();
10409 #else
10410 #ifdef PTHREAD_YIELD
10411         pthread_yield();
10412 #else
10413 #ifdef PTHREAD_YIELD_NULL
10414         pthread_yield(NULL);
10415 #endif
10416 #endif
10417 #endif
10418 }
10419 EOP
10420 : see if sched_yield exists
10421 set try -DSCHED_YIELD
10422 if eval $compile; then
10423     val="$define"
10424     sched_yield='sched_yield()'
10425 else
10426     val="$undef"
10427 fi
10428 case "$usethreads" in
10429 $define)
10430         case "$val" in
10431         $define) echo 'sched_yield() found.' >&4        ;;
10432         *)       echo 'sched_yield() NOT found.' >&4    ;;
10433         esac
10434 esac
10435 set d_sched_yield
10436 eval $setvar
10437
10438 : see if pthread_yield exists
10439 set try -DPTHREAD_YIELD
10440 if eval $compile; then
10441     val="$define"
10442     case "$sched_yield" in
10443     '') sched_yield='pthread_yield()' ;;
10444     esac
10445 else
10446     set try -DPTHREAD_YIELD_NULL
10447     if eval $compile; then
10448         val="$define"
10449         case "$sched_yield" in
10450         '') sched_yield='pthread_yield(NULL)' ;;
10451         esac
10452     else
10453         val="$undef"
10454     fi
10455 fi
10456 case "$usethreads" in
10457 $define)
10458         case "$val" in
10459         $define) echo 'pthread_yield() found.' >&4      ;;
10460         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10461         esac
10462         ;;
10463 esac
10464 set d_pthread_yield
10465 eval $setvar
10466
10467 case "$sched_yield" in
10468 '') sched_yield=undef ;;
10469 esac
10470
10471 $rm -f try try.*
10472
10473 : see if this is a pwd.h system
10474 set pwd.h i_pwd
10475 eval $inhdr
10476
10477 case "$i_pwd" in
10478 $define)
10479         xxx=`./findhdr pwd.h`
10480         $cppstdin $cppflags $cppminus < $xxx >$$.h
10481
10482         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10483                 val="$define"
10484         else
10485                 val="$undef"
10486         fi
10487         set d_pwquota
10488         eval $setvar
10489
10490         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10491                 val="$define"
10492         else
10493                 val="$undef"
10494         fi
10495         set d_pwage
10496         eval $setvar
10497
10498         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10499                 val="$define"
10500         else
10501                 val="$undef"
10502         fi
10503         set d_pwchange
10504         eval $setvar
10505
10506         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10507                 val="$define"
10508         else
10509                 val="$undef"
10510         fi
10511         set d_pwclass
10512         eval $setvar
10513
10514         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10515                 val="$define"
10516         else
10517                 val="$undef"
10518         fi
10519         set d_pwexpire
10520         eval $setvar
10521
10522         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10523                 val="$define"
10524         else
10525                 val="$undef"
10526         fi
10527         set d_pwcomment
10528         eval $setvar
10529
10530         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10531                 val="$define"
10532         else
10533                 val="$undef"
10534         fi
10535         set d_pwgecos
10536         eval $setvar
10537
10538         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10539                 val="$define"
10540         else
10541                 val="$undef"
10542         fi
10543         set d_pwpasswd
10544         eval $setvar
10545
10546         $rm -f $$.h
10547         ;;
10548 *)
10549         val="$undef"; 
10550         set d_pwquota; eval $setvar
10551         set d_pwage; eval $setvar
10552         set d_pwchange; eval $setvar
10553         set d_pwclass; eval $setvar
10554         set d_pwexpire; eval $setvar
10555         set d_pwcomment; eval $setvar
10556         set d_pwgecos; eval $setvar
10557         set d_pwpasswd; eval $setvar
10558         ;;
10559 esac
10560
10561 : see if readdir and friends exist
10562 set readdir d_readdir
10563 eval $inlibc
10564 set seekdir d_seekdir
10565 eval $inlibc
10566 set telldir d_telldir
10567 eval $inlibc
10568 set rewinddir d_rewinddir
10569 eval $inlibc
10570
10571 : see if readlink exists
10572 set readlink d_readlink
10573 eval $inlibc
10574
10575 : see if rename exists
10576 set rename d_rename
10577 eval $inlibc
10578
10579 : see if rmdir exists
10580 set rmdir d_rmdir
10581 eval $inlibc
10582
10583 : see if memory.h is available.
10584 val=''
10585 set memory.h val
10586 eval $inhdr
10587
10588 : See if it conflicts with string.h
10589 case "$val" in
10590 $define)
10591         case "$strings" in
10592         '') ;;
10593         *)
10594                 $cppstdin $cppflags $cppminus < $strings > mem.h
10595                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10596                         echo " "
10597                         echo "We won't be including <memory.h>."
10598                         val="$undef"
10599                 fi
10600                 $rm -f mem.h
10601                 ;;
10602         esac
10603 esac
10604 set i_memory
10605 eval $setvar
10606
10607 : can bcopy handle overlapping blocks?
10608 val="$undef"
10609 case "$d_bcopy" in
10610 "$define")
10611         echo " "
10612         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10613         $cat >try.c <<EOCP
10614 #$i_memory I_MEMORY
10615 #$i_stdlib I_STDLIB
10616 #$i_string I_STRING
10617 #$i_unistd I_UNISTD
10618 EOCP
10619         $cat >>try.c <<'EOCP'
10620 #include <stdio.h>
10621 #ifdef I_MEMORY
10622 #  include <memory.h>
10623 #endif
10624 #ifdef I_STDLIB
10625 #  include <stdlib.h>
10626 #endif
10627 #ifdef I_STRING
10628 #  include <string.h>
10629 #else
10630 #  include <strings.h>
10631 #endif
10632 #ifdef I_UNISTD
10633 #  include <unistd.h>  /* Needed for NetBSD */
10634 #endif
10635 int main()
10636 {
10637 char buf[128], abc[128];
10638 char *b;
10639 int len;
10640 int off;
10641 int align;
10642
10643 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10644
10645 for (align = 7; align >= 0; align--) {
10646         for (len = 36; len; len--) {
10647                 b = buf+align;
10648                 bcopy(abc, b, len);
10649                 for (off = 1; off <= len; off++) {
10650                         bcopy(b, b+off, len);
10651                         bcopy(b+off, b, len);
10652                         if (bcmp(b, abc, len))
10653                                 exit(1);
10654                 }
10655         }
10656 }
10657 exit(0);
10658 }
10659 EOCP
10660         set try
10661         if eval $compile_ok; then
10662                 if ./try 2>/dev/null; then
10663                         echo "Yes, it can."
10664                         val="$define"
10665                 else
10666                         echo "It can't, sorry."
10667                         case "$d_memmove" in
10668                         "$define") echo "But that's Ok since you have memmove()." ;;
10669                         esac
10670                 fi
10671         else
10672                 echo "(I can't compile the test program, so we'll assume not...)"
10673                 case "$d_memmove" in
10674                 "$define") echo "But that's Ok since you have memmove()." ;;
10675                 esac
10676         fi
10677         ;;
10678 esac
10679 $rm -f try.* try core
10680 set d_safebcpy
10681 eval $setvar
10682
10683 : can memcpy handle overlapping blocks?
10684 val="$undef"
10685 case "$d_memcpy" in
10686 "$define")
10687         echo " "
10688         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10689         $cat >try.c <<EOCP
10690 #$i_memory I_MEMORY
10691 #$i_stdlib I_STDLIB
10692 #$i_string I_STRING
10693 #$i_unistd I_UNISTD
10694 EOCP
10695         $cat >>try.c <<'EOCP'
10696 #include <stdio.h>
10697 #ifdef I_MEMORY
10698 #  include <memory.h>
10699 #endif
10700 #ifdef I_STDLIB
10701 #  include <stdlib.h>
10702 #endif
10703 #ifdef I_STRING
10704 #  include <string.h>
10705 #else
10706 #  include <strings.h>
10707 #endif
10708 #ifdef I_UNISTD
10709 #  include <unistd.h>  /* Needed for NetBSD */
10710 #endif
10711 int main()
10712 {
10713 char buf[128], abc[128];
10714 char *b;
10715 int len;
10716 int off;
10717 int align;
10718
10719 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10720    try to store the string in read-only memory. */
10721 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10722
10723 for (align = 7; align >= 0; align--) {
10724         for (len = 36; len; len--) {
10725                 b = buf+align;
10726                 memcpy(b, abc, len);
10727                 for (off = 1; off <= len; off++) {
10728                         memcpy(b+off, b, len);
10729                         memcpy(b, b+off, len);
10730                         if (memcmp(b, abc, len))
10731                                 exit(1);
10732                 }
10733         }
10734 }
10735 exit(0);
10736 }
10737 EOCP
10738         set try
10739         if eval $compile_ok; then
10740                 if ./try 2>/dev/null; then
10741                         echo "Yes, it can."
10742                         val="$define"
10743                 else
10744                         echo "It can't, sorry."
10745                         case "$d_memmove" in
10746                         "$define") echo "But that's Ok since you have memmove()." ;;
10747                         esac
10748                 fi
10749         else
10750                 echo "(I can't compile the test program, so we'll assume not...)"
10751                 case "$d_memmove" in
10752                 "$define") echo "But that's Ok since you have memmove()." ;;
10753                 esac
10754         fi
10755         ;;
10756 esac
10757 $rm -f try.* try core
10758 set d_safemcpy
10759 eval $setvar
10760
10761 : can memcmp be trusted to compare relative magnitude?
10762 val="$undef"
10763 case "$d_memcmp" in
10764 "$define")
10765         echo " "
10766         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10767         $cat >try.c <<EOCP
10768 #$i_memory I_MEMORY
10769 #$i_stdlib I_STDLIB
10770 #$i_string I_STRING
10771 #$i_unistd I_UNISTD
10772 EOCP
10773         $cat >>try.c <<'EOCP'
10774 #include <stdio.h>
10775 #ifdef I_MEMORY
10776 #  include <memory.h>
10777 #endif
10778 #ifdef I_STDLIB
10779 #  include <stdlib.h>
10780 #endif
10781 #ifdef I_STRING
10782 #  include <string.h>
10783 #else
10784 #  include <strings.h>
10785 #endif
10786 #ifdef I_UNISTD
10787 #  include <unistd.h>  /* Needed for NetBSD */
10788 #endif
10789 int main()
10790 {
10791 char a = -1;
10792 char b = 0;
10793 if ((a < b) && memcmp(&a, &b, 1) < 0)
10794         exit(1);
10795 exit(0);
10796 }
10797 EOCP
10798         set try
10799         if eval $compile_ok; then
10800                 if ./try 2>/dev/null; then
10801                         echo "Yes, it can."
10802                         val="$define"
10803                 else
10804                         echo "No, it can't (it uses signed chars)."
10805                 fi
10806         else
10807                 echo "(I can't compile the test program, so we'll assume not...)"
10808         fi
10809         ;;
10810 esac
10811 $rm -f try.* try core
10812 set d_sanemcmp
10813 eval $setvar
10814
10815 : see if select exists
10816 set select d_select
10817 eval $inlibc
10818
10819 : see if semctl exists
10820 set semctl d_semctl
10821 eval $inlibc
10822
10823 : see if semget exists
10824 set semget d_semget
10825 eval $inlibc
10826
10827 : see if semop exists
10828 set semop d_semop
10829 eval $inlibc
10830
10831 : see how much of the 'sem*(2)' library is present.
10832 h_sem=true
10833 echo " "
10834 case "$d_semctl$d_semget$d_semop" in
10835 *"$undef"*) h_sem=false;;
10836 esac
10837 case "$osname" in
10838 freebsd)
10839     case "`ipcs 2>&1`" in
10840     "SVID messages"*"not configured"*)
10841         echo "Your $osname does not have the sem*(2) configured." >&4
10842         h_sem=false
10843         val="$undef"
10844         set semctl d_semctl
10845         eval $setvar
10846         set semget d_semget
10847         eval $setvar
10848         set semop d_semop
10849         eval $setvar
10850         ;;
10851     esac
10852     ;;
10853 esac
10854 : we could also check for sys/ipc.h ...
10855 if $h_sem && $test `./findhdr sys/sem.h`; then
10856         echo "You have the full sem*(2) library." >&4
10857         val="$define"
10858 else
10859         echo "You don't have the full sem*(2) library." >&4
10860         val="$undef"
10861 fi
10862 set d_sem
10863 eval $setvar
10864
10865 : see whether sys/sem.h defines union semun
10866 echo " "
10867 $cat > try.c <<'END'
10868 #include <sys/types.h>
10869 #include <sys/ipc.h>
10870 #include <sys/sem.h>
10871 int main () { union semun semun; semun.buf = 0; }
10872 END
10873 set try
10874 if eval $compile; then
10875     echo "You have union semun in <sys/sem.h>." >&4
10876     val="$define"
10877 else
10878     echo "You do not have union semun in <sys/sem.h>." >&4
10879     val="$undef"
10880 fi
10881 $rm -f try try.c try.h
10882 set d_union_semun
10883 eval $setvar
10884
10885 : see how to do semctl IPC_STAT
10886 case "$d_sem" in
10887 $define)
10888     : see whether semctl IPC_STAT can use union semun
10889     echo " "
10890     $cat > try.h <<END
10891 #ifndef S_IRUSR
10892 #   ifdef S_IREAD
10893 #       define S_IRUSR S_IREAD
10894 #       define S_IWUSR S_IWRITE
10895 #       define S_IXUSR S_IEXEC
10896 #   else
10897 #       define S_IRUSR 0400
10898 #       define S_IWUSR 0200
10899 #       define S_IXUSR 0100
10900 #   endif
10901 #   define S_IRGRP (S_IRUSR>>3)
10902 #   define S_IWGRP (S_IWUSR>>3)
10903 #   define S_IXGRP (S_IXUSR>>3)
10904 #   define S_IROTH (S_IRUSR>>6)
10905 #   define S_IWOTH (S_IWUSR>>6)
10906 #   define S_IXOTH (S_IXUSR>>6)
10907 #endif
10908 #ifndef S_IRWXU
10909 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10910 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10911 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10912 #endif
10913 END
10914
10915     $cat > try.c <<END
10916 #include <sys/types.h>
10917 #include <sys/ipc.h>
10918 #include <sys/sem.h>
10919 #include <sys/stat.h>
10920 #include <stdio.h>
10921 #include <errno.h>
10922 #include "try.h"
10923 #ifndef errno
10924 extern int errno;
10925 #endif
10926 #$d_union_semun HAS_UNION_SEMUN
10927 int main() {
10928     union semun
10929 #ifndef HAS_UNION_SEMUN
10930     {
10931         int val;
10932         struct semid_ds *buf;
10933         unsigned short *array;
10934     }
10935 #endif
10936     arg;
10937     int sem, st;
10938
10939 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10940     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10941     if (sem > -1) {
10942         struct semid_ds argbuf;
10943         arg.buf = &argbuf;
10944 #       ifdef IPC_STAT
10945         st = semctl(sem, 0, IPC_STAT, arg);
10946         if (st == 0)
10947             printf("semun\n");
10948         else
10949 #       endif /* IPC_STAT */
10950             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10951 #       ifdef IPC_RMID
10952         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10953 #       endif /* IPC_RMID */
10954             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10955     } else
10956 #endif /* IPC_PRIVATE && ... */
10957         printf("semget failed: errno = %d\n", errno);
10958   return 0;
10959 }
10960 END
10961     val="$undef"
10962     set try
10963     if eval $compile; then
10964         xxx=`./try`
10965         case "$xxx" in
10966         semun) val="$define" ;;
10967         esac
10968     fi
10969     $rm -f try try.c
10970     set d_semctl_semun
10971     eval $setvar
10972     case "$d_semctl_semun" in
10973     $define)
10974         echo "You can use union semun for semctl IPC_STAT." >&4
10975         also='also'
10976         ;;
10977     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10978         also=''
10979         ;;
10980     esac
10981
10982     : see whether semctl IPC_STAT can use struct semid_ds pointer
10983     $cat > try.c <<'END'
10984 #include <sys/types.h>
10985 #include <sys/ipc.h>
10986 #include <sys/sem.h>
10987 #include <sys/stat.h>
10988 #include "try.h"
10989 #include <stdio.h>
10990 #include <errno.h>
10991 #ifndef errno
10992 extern int errno;
10993 #endif
10994 int main() {
10995     struct semid_ds arg;
10996     int sem, st;
10997
10998 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10999     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11000     if (sem > -1) {
11001 #       ifdef IPC_STAT
11002         st = semctl(sem, 0, IPC_STAT, &arg);
11003         if (st == 0)
11004             printf("semid_ds\n");
11005         else
11006 #       endif /* IPC_STAT */
11007             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11008 #       ifdef IPC_RMID
11009         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11010 #       endif /* IPC_RMID */
11011             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11012     } else
11013 #endif /* IPC_PRIVATE && ... */
11014         printf("semget failed: errno = %d\n", errno);
11015
11016     return 0;
11017 }
11018 END
11019     val="$undef"
11020     set try
11021     if eval $compile; then
11022         xxx=`./try`
11023         case "$xxx" in
11024         semid_ds) val="$define" ;;
11025         esac
11026     fi
11027     $rm -f try try.c
11028     set d_semctl_semid_ds
11029     eval $setvar
11030     case "$d_semctl_semid_ds" in
11031     $define)
11032         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11033         ;;
11034     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11035         ;;
11036     esac
11037     $rm -f try.h
11038     ;;
11039 *)  val="$undef"
11040
11041     # We do not have the full sem*(2) library, so assume we can not
11042     # use either.
11043
11044     set d_semctl_semun
11045     eval $setvar
11046
11047     set d_semctl_semid_ds
11048     eval $setvar
11049     ;;
11050 esac
11051
11052 : see if setegid exists
11053 set setegid d_setegid
11054 eval $inlibc
11055
11056 : see if seteuid exists
11057 set seteuid d_seteuid
11058 eval $inlibc
11059
11060 : see if setgrent exists
11061 set setgrent d_setgrent
11062 eval $inlibc
11063
11064 : see if sethostent exists
11065 set sethostent d_sethent
11066 eval $inlibc
11067
11068 : see if setlinebuf exists
11069 set setlinebuf d_setlinebuf
11070 eval $inlibc
11071
11072 : see if setlocale exists
11073 set setlocale d_setlocale
11074 eval $inlibc
11075
11076 : see if setnetent exists
11077 set setnetent d_setnent
11078 eval $inlibc
11079
11080 : see if setprotoent exists
11081 set setprotoent d_setpent
11082 eval $inlibc
11083
11084 : see if setpgid exists
11085 set setpgid d_setpgid
11086 eval $inlibc
11087
11088 : see if setpgrp2 exists
11089 set setpgrp2 d_setpgrp2
11090 eval $inlibc
11091
11092 : see if setpriority exists
11093 set setpriority d_setprior
11094 eval $inlibc
11095
11096 : see if setpwent exists
11097 set setpwent d_setpwent
11098 eval $inlibc
11099
11100 : see if setregid exists
11101 set setregid d_setregid
11102 eval $inlibc
11103 set setresgid d_setresgid
11104 eval $inlibc
11105
11106 : see if setreuid exists
11107 set setreuid d_setreuid
11108 eval $inlibc
11109 set setresuid d_setresuid
11110 eval $inlibc
11111
11112 : see if setrgid exists
11113 set setrgid d_setrgid
11114 eval $inlibc
11115
11116 : see if setruid exists
11117 set setruid d_setruid
11118 eval $inlibc
11119
11120 : see if setservent exists
11121 set setservent d_setsent
11122 eval $inlibc
11123
11124 : see if setsid exists
11125 set setsid d_setsid
11126 eval $inlibc
11127
11128 : see if setvbuf exists
11129 set setvbuf d_setvbuf
11130 eval $inlibc
11131
11132 : see if sfio.h is available
11133 set sfio.h i_sfio
11134 eval $inhdr
11135
11136
11137 : see if sfio library is available
11138 case "$i_sfio" in
11139 $define)
11140         val=''
11141         set sfreserve val
11142         eval $inlibc
11143         ;;
11144 *)
11145         val="$undef"
11146         ;;
11147 esac
11148 : Ok, but do we want to use it.
11149 case "$val" in
11150 $define)
11151         case "$usesfio" in
11152         true|$define|[yY]*) dflt='y';;
11153         *) dflt='n';;
11154         esac
11155         echo "$package can use the sfio library, but it is experimental."
11156         rp="You seem to have sfio available, do you want to try using it?"
11157         . ./myread
11158         case "$ans" in
11159         y|Y) ;;
11160         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11161                 val="$undef"
11162                 : Remove sfio from list of libraries to use
11163                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11164                 shift
11165                 libs="$*"
11166                 echo "libs = $libs" >&4
11167                 ;;
11168         esac
11169         ;;
11170 *)      case "$usesfio" in
11171         true|$define|[yY]*)
11172                 echo "Sorry, cannot find sfio on this machine" >&4
11173                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11174                 ;;
11175         esac
11176         ;;
11177 esac
11178 set d_sfio
11179 eval $setvar
11180 case "$d_sfio" in
11181 $define) usesfio='true';;
11182 *) usesfio='false';;
11183 esac
11184
11185 : see if shmctl exists
11186 set shmctl d_shmctl
11187 eval $inlibc
11188
11189 : see if shmget exists
11190 set shmget d_shmget
11191 eval $inlibc
11192
11193 : see if shmat exists
11194 set shmat d_shmat
11195 eval $inlibc
11196 : see what shmat returns
11197 case "$d_shmat" in
11198 "$define")
11199         $cat >shmat.c <<'END'
11200 #include <sys/shm.h>
11201 void *shmat();
11202 END
11203         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11204                 shmattype='void *'
11205         else
11206                 shmattype='char *'
11207         fi
11208         echo "and it returns ($shmattype)." >&4
11209         : see if a prototype for shmat is available
11210         xxx=`./findhdr sys/shm.h`
11211         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11212         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11213                 val="$define"
11214         else
11215                 val="$undef"
11216         fi
11217         $rm -f shmat.[co]
11218         ;;
11219 *)
11220         val="$undef"
11221         ;;
11222 esac
11223 set d_shmatprototype
11224 eval $setvar
11225
11226 : see if shmdt exists
11227 set shmdt d_shmdt
11228 eval $inlibc
11229
11230 : see how much of the 'shm*(2)' library is present.
11231 h_shm=true
11232 echo " "
11233 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11234 *"$undef"*) h_shm=false;;
11235 esac
11236 case "$osname" in
11237 freebsd)
11238     case "`ipcs 2>&1`" in
11239     "SVID shared memory"*"not configured"*)
11240         echo "Your $osname does not have the shm*(2) configured." >&4
11241         h_shm=false
11242         val="$undef"
11243         set shmctl d_shmctl
11244         evat $setvar
11245         set shmget d_shmget
11246         evat $setvar
11247         set shmat d_shmat
11248         evat $setvar
11249         set shmdt d_shmdt
11250         evat $setvar
11251         ;;
11252     esac
11253     ;;
11254 esac
11255 : we could also check for sys/ipc.h ...
11256 if $h_shm && $test `./findhdr sys/shm.h`; then
11257         echo "You have the full shm*(2) library." >&4
11258         val="$define"
11259 else
11260         echo "You don't have the full shm*(2) library." >&4
11261         val="$undef"
11262 fi
11263 set d_shm
11264 eval $setvar
11265
11266 echo " "
11267 : see if we have sigaction
11268 if set sigaction val -f d_sigaction; eval $csym; $val; then
11269         echo 'sigaction() found.' >&4
11270         $cat > try.c <<'EOP'
11271 #include <stdio.h>
11272 #include <sys/types.h>
11273 #include <signal.h>
11274 int main()
11275 {
11276     struct sigaction act, oact;
11277     act.sa_flags = 0;
11278     oact.sa_handler = 0;
11279     /* so that act and oact are used */
11280     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11281 }
11282 EOP
11283         set try
11284         if eval $compile_ok; then
11285                 val="$define"
11286         else
11287                 echo "But you don't seem to have a useable struct sigaction." >&4
11288                 val="$undef"
11289         fi
11290 else
11291         echo 'sigaction NOT found.' >&4
11292         val="$undef"
11293 fi
11294 set d_sigaction; eval $setvar
11295 $rm -f try try$_o try.c
11296
11297 : see if sigsetjmp exists
11298 echo " "
11299 case "$d_sigsetjmp" in
11300 '')
11301         $cat >try.c <<'EOP'
11302 #include <setjmp.h>
11303 sigjmp_buf env;
11304 int set = 1;
11305 int main()
11306 {
11307         if (sigsetjmp(env,1))
11308                 exit(set);
11309         set = 0;
11310         siglongjmp(env, 1);
11311         exit(1);
11312 }
11313 EOP
11314         set try
11315         if eval $compile; then
11316                 if ./try >/dev/null 2>&1; then
11317                         echo "POSIX sigsetjmp found." >&4
11318                         val="$define"
11319                 else
11320                         $cat >&4 <<EOM
11321 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11322 I'll ignore them.
11323 EOM
11324                         val="$undef"
11325                 fi
11326         else
11327                 echo "sigsetjmp not found." >&4
11328                 val="$undef"
11329         fi
11330         ;;
11331 *) val="$d_sigsetjmp"
11332         case "$d_sigsetjmp" in
11333         $define) echo "POSIX sigsetjmp found." >&4;;
11334         $undef) echo "sigsetjmp not found." >&4;;
11335         esac
11336         ;;
11337 esac
11338 set d_sigsetjmp
11339 eval $setvar
11340 $rm -f try.c try
11341
11342 : see if sys/stat.h is available
11343 set sys/stat.h i_sysstat
11344 eval $inhdr
11345
11346
11347 : see if stat knows about block sizes
11348 echo " "
11349 echo "Checking to see if your struct stat has st_blocks field..." >&4
11350 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11351 eval $hasfield
11352
11353
11354 : see if this is a sys/vfs.h system
11355 set sys/vfs.h i_sysvfs
11356 eval $inhdr
11357
11358
11359 : see if this is a sys/statfs.h system
11360 set sys/statfs.h i_sysstatfs
11361 eval $inhdr
11362
11363
11364 echo " "
11365 echo "Checking to see if your system supports struct statfs..." >&4
11366 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
11367 eval $hasstruct
11368 case "$d_statfs_s" in
11369 "$define")      echo "Yes, it does."   ;;
11370 *)              echo "No, it doesn't." ;;
11371 esac
11372
11373
11374
11375 : see if struct statfs knows about f_flags
11376 case "$d_statfs_s" in
11377 define) 
11378         echo " "
11379         echo "Checking to see if your struct statfs has f_flags field..." >&4
11380         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
11381         eval $hasfield
11382         ;;
11383 *)      val="$undef"
11384         set d_statfs_f_flags
11385         eval $setvar
11386         ;;
11387 esac
11388 case "$d_statfs_f_flags" in
11389 "$define")      echo "Yes, it does."   ;;
11390 *)              echo "No, it doesn't." ;;
11391 esac
11392
11393 : see if _ptr and _cnt from stdio act std
11394 echo " "
11395 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11396         echo "(Looks like you have stdio.h from Linux.)"
11397         case "$stdio_ptr" in
11398         '') stdio_ptr='((fp)->_IO_read_ptr)'
11399                 ptr_lval=$define
11400                 ;;
11401         *)      ptr_lval=$d_stdio_ptr_lval;;
11402         esac
11403         case "$stdio_cnt" in
11404         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11405                 cnt_lval=$undef
11406                 ;;
11407         *)      cnt_lval=$d_stdio_cnt_lval;;
11408         esac
11409         case "$stdio_base" in
11410         '') stdio_base='((fp)->_IO_read_base)';;
11411         esac
11412         case "$stdio_bufsiz" in
11413         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11414         esac
11415 else
11416         case "$stdio_ptr" in
11417         '') stdio_ptr='((fp)->_ptr)'
11418                 ptr_lval=$define
11419                 ;;
11420         *)      ptr_lval=$d_stdio_ptr_lval;;
11421         esac
11422         case "$stdio_cnt" in
11423         '') stdio_cnt='((fp)->_cnt)'
11424                 cnt_lval=$define
11425                 ;;
11426         *)      cnt_lval=$d_stdio_cnt_lval;;
11427         esac
11428         case "$stdio_base" in
11429         '') stdio_base='((fp)->_base)';;
11430         esac
11431         case "$stdio_bufsiz" in
11432         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11433         esac
11434 fi
11435 : test whether _ptr and _cnt really work
11436 echo "Checking how std your stdio is..." >&4
11437 $cat >try.c <<EOP
11438 #include <stdio.h>
11439 #define FILE_ptr(fp)    $stdio_ptr
11440 #define FILE_cnt(fp)    $stdio_cnt
11441 int main() {
11442         FILE *fp = fopen("try.c", "r");
11443         char c = getc(fp);
11444         if (
11445                 18 <= FILE_cnt(fp) &&
11446                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11447         )
11448                 exit(0);
11449         exit(1);
11450 }
11451 EOP
11452 val="$undef"
11453 set try
11454 if eval $compile; then
11455         if ./try; then
11456                 echo "Your stdio acts pretty std."
11457                 val="$define"
11458         else
11459                 echo "Your stdio isn't very std."
11460         fi
11461 else
11462         echo "Your stdio doesn't appear very std."
11463 fi
11464 $rm -f try.c try
11465 set d_stdstdio
11466 eval $setvar
11467
11468 : Can _ptr be used as an lvalue?
11469 case "$d_stdstdio$ptr_lval" in
11470 $define$define) val=$define ;;
11471 *) val=$undef ;;
11472 esac
11473 set d_stdio_ptr_lval
11474 eval $setvar
11475
11476 : Can _cnt be used as an lvalue?
11477 case "$d_stdstdio$cnt_lval" in
11478 $define$define) val=$define ;;
11479 *) val=$undef ;;
11480 esac
11481 set d_stdio_cnt_lval
11482 eval $setvar
11483
11484 : see if _base is also standard
11485 val="$undef"
11486 case "$d_stdstdio" in
11487 $define)
11488         $cat >try.c <<EOP
11489 #include <stdio.h>
11490 #define FILE_base(fp)   $stdio_base
11491 #define FILE_bufsiz(fp) $stdio_bufsiz
11492 int main() {
11493         FILE *fp = fopen("try.c", "r");
11494         char c = getc(fp);
11495         if (
11496                 19 <= FILE_bufsiz(fp) &&
11497                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11498         )
11499                 exit(0);
11500         exit(1);
11501 }
11502 EOP
11503         set try
11504         if eval $compile; then
11505                 if ./try; then
11506                         echo "And its _base field acts std."
11507                         val="$define"
11508                 else
11509                         echo "But its _base field isn't std."
11510                 fi
11511         else
11512                 echo "However, it seems to be lacking the _base field."
11513         fi
11514         $rm -f try.c try
11515         ;;
11516 esac
11517 set d_stdiobase
11518 eval $setvar
11519
11520 $cat >&4 <<EOM
11521 Checking how to access stdio streams by file descriptor number...
11522 EOM
11523 case "$stdio_stream_array" in
11524 '')     $cat >try.c <<EOCP
11525 #include <stdio.h>
11526 int main() {
11527   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11528     printf("yes\n");
11529 }
11530 EOCP
11531         for s in _iob __iob __sF
11532         do
11533                 set try -DSTDIO_STREAM_ARRAY=$s
11534                 if eval $compile; then
11535                         case "`./try$exe_ext`" in
11536                         yes)    stdio_stream_array=$s; break ;;
11537                         esac
11538                 fi
11539         done
11540         $rm -f try.* try$exe_ext
11541 esac
11542 case "$stdio_stream_array" in
11543 '')     $cat >&4 <<EOM
11544 I can't figure out how to access stdio streams by file descriptor number.
11545 EOM
11546         d_stdio_stream_array="$undef"
11547         ;;
11548 *)      $cat >&4 <<EOM
11549 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11550 EOM
11551         d_stdio_stream_array="$define"
11552         ;;
11553 esac
11554
11555 : see if strcoll exists
11556 set strcoll d_strcoll
11557 eval $inlibc
11558
11559 : check for structure copying
11560 echo " "
11561 echo "Checking to see if your C compiler can copy structs..." >&4
11562 $cat >try.c <<'EOCP'
11563 int main()
11564 {
11565         struct blurfl {
11566                 int dyick;
11567         } foo, bar;
11568
11569         foo = bar;
11570 }
11571 EOCP
11572 if $cc -c try.c >/dev/null 2>&1 ; then
11573         val="$define"
11574         echo "Yup, it can."
11575 else
11576         val="$undef"
11577         echo "Nope, it can't."
11578 fi
11579 set d_strctcpy
11580 eval $setvar
11581 $rm -f try.*
11582
11583 : see if strerror and/or sys_errlist[] exist
11584 echo " "
11585 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11586     if set strerror val -f d_strerror; eval $csym; $val; then
11587                 echo 'strerror() found.' >&4
11588                 d_strerror="$define"
11589                 d_strerrm='strerror(e)'
11590                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11591                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11592                         d_syserrlst="$define"
11593                 else
11594                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11595                         d_syserrlst="$undef"
11596                 fi
11597     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11598                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11599                 echo 'strerror() found in string header.' >&4
11600                 d_strerror="$define"
11601                 d_strerrm='strerror(e)'
11602                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11603                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11604                                 d_syserrlst="$define"
11605                 else
11606                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11607                         d_syserrlst="$undef"
11608                 fi
11609     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11610                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11611                 d_strerror="$undef"
11612                 d_syserrlst="$define"
11613                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11614     else
11615                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11616                 d_strerror="$undef"
11617                 d_syserrlst="$undef"
11618                 d_strerrm='"unknown"'
11619     fi
11620 fi
11621
11622 : see if strtod exists
11623 set strtod d_strtod
11624 eval $inlibc
11625
11626 : see if strtol exists
11627 set strtol d_strtol
11628 eval $inlibc
11629
11630 : see if strtold exists
11631 set strtold d_strtold
11632 eval $inlibc
11633
11634 : see if strtoll exists
11635 set strtoll d_strtoll
11636 eval $inlibc
11637
11638 case "$d_longlong-$d_strtoll" in
11639 "$define-$define")
11640         $cat <<EOM
11641 Checking whether your strtoll() works okay...
11642 EOM
11643         $cat >try.c <<'EOCP'
11644 #include <errno.h>
11645 #ifdef __hpux
11646 #define strtoll __strtoll
11647 #endif
11648 #include <stdio.h>
11649 extern long long int strtoll(char *s, char **, int); 
11650 static int bad = 0;
11651 int check(char *s, long long ell, int een) {
11652         long long gll;
11653         errno = 0;
11654         gll = strtoll(s, 0, 10);
11655         if (!((gll == ell) && (errno == een)))
11656                 bad++;
11657 }
11658 int main() {
11659         check(" 1",                                      1LL, 0);
11660         check(" 0",                                      0LL, 0);
11661         check("-1",                                     -1LL, 0);
11662         check("-9223372036854775808", -9223372036854775808LL, 0);
11663         check("-9223372036854775808", -9223372036854775808LL, 0);
11664         check(" 9223372036854775807",  9223372036854775807LL, 0);
11665         check("-9223372036854775808", -9223372036854775808LL, 0);
11666         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11667         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11668         if (!bad)
11669                 printf("ok\n");
11670 }
11671 EOCP
11672         set try
11673         if eval $compile; then
11674                 case "`./try`" in
11675                 ok) echo "Your strtoll() seems to be working okay." ;;
11676                 *) cat <<EOM >&4
11677 Your strtoll() doesn't seem to be working okay.
11678 EOM
11679                    d_strtoll="$undef"
11680                    ;;
11681                 esac
11682         fi
11683         ;;
11684 esac
11685
11686 : see if strtoul exists
11687 set strtoul d_strtoul
11688 eval $inlibc
11689
11690 : see if strtoull exists
11691 set strtoull d_strtoull
11692 eval $inlibc
11693
11694 case "$d_longlong-$d_strtoull" in
11695 "$define-$define")
11696         $cat <<EOM
11697 Checking whether your strtoull() works okay...
11698 EOM
11699         $cat >try.c <<'EOCP'
11700 #include <errno.h>
11701 #ifdef __hpux
11702 #define strtoull __strtoull
11703 #endif
11704 #include <stdio.h>
11705 extern unsigned long long int strtoull(char *s, char **, int); 
11706 static int bad = 0;
11707 int check(char *s, long long eull, int een) {
11708         long long gull;
11709         errno = 0;
11710         gull = strtoull(s, 0, 10);
11711         if (!((gull == eull) && (errno == een)))
11712                 bad++;
11713 }
11714 int main() {
11715         check(" 1",                                       1LL, 0);
11716         check(" 0",                                       0LL, 0);
11717         check("18446744073709551615", 18446744073709551615ULL, 0);
11718         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11719         if (!bad)
11720                 printf("ok\n");
11721 }
11722 EOCP
11723         set try
11724         if eval $compile; then
11725                 case "`./try`" in
11726                 ok) echo "Your strtoull() seems to be working okay." ;;
11727                 *) cat <<EOM >&4
11728 Your strtoull() doesn't seem to be working okay.
11729 EOM
11730                    d_strtoull="$undef"
11731                    ;;
11732                 esac
11733         fi
11734         ;;
11735 esac
11736
11737 : see if strtouq exists
11738 set strtouq d_strtouq
11739 eval $inlibc
11740
11741 : see if strxfrm exists
11742 set strxfrm d_strxfrm
11743 eval $inlibc
11744
11745 : see if symlink exists
11746 set symlink d_symlink
11747 eval $inlibc
11748
11749 : see if syscall exists
11750 set syscall d_syscall
11751 eval $inlibc
11752
11753 : see if sysconf exists
11754 set sysconf d_sysconf
11755 eval $inlibc
11756
11757 : see if system exists
11758 set system d_system
11759 eval $inlibc
11760
11761 : see if tcgetpgrp exists
11762 set tcgetpgrp d_tcgetpgrp
11763 eval $inlibc
11764
11765 : see if tcsetpgrp exists
11766 set tcsetpgrp d_tcsetpgrp
11767 eval $inlibc
11768
11769 : see if prototype for telldir is available
11770 echo " "
11771 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11772 eval $hasproto
11773
11774 : see if this is a sys/times.h system
11775 set sys/times.h i_systimes
11776 eval $inhdr
11777
11778 : see if times exists
11779 echo " "
11780 if set times val -f d_times; eval $csym; $val; then
11781         echo 'times() found.' >&4
11782         d_times="$define"
11783         inc=''
11784         case "$i_systimes" in
11785         "$define") inc='sys/times.h';;
11786         esac
11787         rp="What is the type returned by times() on this system?"
11788         set clock_t clocktype long stdio.h sys/types.h $inc
11789         eval $typedef_ask
11790 else
11791         echo 'times() NOT found, hope that will do.' >&4
11792         d_times="$undef"
11793         clocktype='int'
11794 fi
11795
11796 : see if truncate exists
11797 set truncate d_truncate
11798 eval $inlibc
11799
11800 : see if tzname[] exists
11801 echo " "
11802 if set tzname val -a d_tzname; eval $csym; $val; then
11803         val="$define"
11804         echo 'tzname[] found.' >&4
11805 else
11806         val="$undef"
11807         echo 'tzname[] NOT found.' >&4
11808 fi
11809 set d_tzname
11810 eval $setvar
11811
11812 : see if umask exists
11813 set umask d_umask
11814 eval $inlibc
11815
11816 : see if ustat exists
11817 set ustat d_ustat
11818 eval $inlibc
11819
11820 : backward compatibility for d_hvfork
11821 if test X$d_hvfork != X; then
11822         d_vfork="$d_hvfork"
11823         d_hvfork=''
11824 fi
11825 : see if there is a vfork
11826 val=''
11827 set vfork val
11828 eval $inlibc
11829
11830 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11831 : perl on Solaris 2.x, and probably elsewhere.
11832 case "$val" in
11833 $define)
11834         echo " "
11835         case "$usevfork" in
11836         false) dflt='n';;
11837         *) dflt='y';;
11838         esac
11839         cat <<'EOM'
11840  
11841 Perl can only use a vfork() that doesn't suffer from strict
11842 restrictions on calling functions or modifying global data in
11843 the child.  For example, glibc-2.1 contains such a vfork()
11844 that is unsuitable.  If your system provides a proper fork()
11845 call, chances are that you do NOT want perl to use vfork().
11846
11847 EOM
11848         rp="Do you still want to use vfork()?"
11849         . ./myread
11850         case "$ans" in
11851         y|Y) ;;
11852         *)
11853                 echo "Ok, we won't use vfork()."
11854                 val="$undef"
11855                 ;;
11856         esac
11857         ;;
11858 esac
11859 set d_vfork
11860 eval $setvar
11861 case "$d_vfork" in
11862 $define) usevfork='true';;
11863 *) usevfork='false';;
11864 esac
11865
11866 : see if this is an sysdir system
11867 set sys/dir.h i_sysdir
11868 eval $inhdr
11869
11870 : see if this is an sysndir system
11871 set sys/ndir.h i_sysndir
11872 eval $inhdr
11873
11874 : see if closedir exists
11875 set closedir d_closedir
11876 eval $inlibc
11877
11878 case "$d_closedir" in
11879 "$define")
11880         echo " "
11881         echo "Checking whether closedir() returns a status..." >&4
11882         cat > closedir.c <<EOM
11883 #$i_dirent I_DIRENT             /**/
11884 #$i_sysdir I_SYS_DIR            /**/
11885 #$i_sysndir I_SYS_NDIR          /**/
11886 #$i_systypes I_SYS_TYPES        /**/
11887
11888 #if defined(I_SYS_TYPES)
11889 #include <sys/types.h>
11890 #endif
11891 #if defined(I_DIRENT)
11892 #include <dirent.h>
11893 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11894 #include <sys/dir.h>
11895 #endif
11896 #else
11897 #ifdef I_SYS_NDIR
11898 #include <sys/ndir.h>
11899 #else
11900 #ifdef I_SYS_DIR
11901 #ifdef hp9000s500
11902 #include <ndir.h>       /* may be wrong in the future */
11903 #else
11904 #include <sys/dir.h>
11905 #endif
11906 #endif
11907 #endif
11908 #endif 
11909 int main() { return closedir(opendir(".")); }
11910 EOM
11911         set closedir
11912         if eval $compile_ok; then
11913                 if ./closedir > /dev/null 2>&1 ; then
11914                         echo "Yes, it does."
11915                         val="$undef"
11916                 else
11917                         echo "No, it doesn't."
11918                         val="$define"
11919                 fi
11920         else
11921                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11922                 val="$define"
11923         fi
11924         ;;
11925 *)
11926         val="$undef";
11927         ;;
11928 esac
11929 set d_void_closedir
11930 eval $setvar
11931 $rm -f closedir*
11932 : check for volatile keyword
11933 echo " "
11934 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11935 $cat >try.c <<'EOCP'
11936 int main()
11937 {
11938         typedef struct _goo_struct goo_struct;
11939         goo_struct * volatile goo = ((goo_struct *)0);
11940         struct _goo_struct {
11941                 long long_int;
11942                 int reg_int;
11943                 char char_var;
11944         };
11945         typedef unsigned short foo_t;
11946         char *volatile foo;
11947         volatile int bar;
11948         volatile foo_t blech;
11949         foo = foo;
11950 }
11951 EOCP
11952 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11953         val="$define"
11954         echo "Yup, it does."
11955 else
11956         val="$undef"
11957         echo "Nope, it doesn't."
11958 fi
11959 set d_volatile
11960 eval $setvar
11961 $rm -f try.*
11962
11963 : see if there is a wait4
11964 set wait4 d_wait4
11965 eval $inlibc
11966
11967 : see if waitpid exists
11968 set waitpid d_waitpid
11969 eval $inlibc
11970
11971 : see if wcstombs exists
11972 set wcstombs d_wcstombs
11973 eval $inlibc
11974
11975 : see if wctomb exists
11976 set wctomb d_wctomb
11977 eval $inlibc
11978
11979 : preserve RCS keywords in files with variable substitution, grrr
11980 Date='$Date'
11981 Id='$Id'
11982 Log='$Log'
11983 RCSfile='$RCSfile'
11984 Revision='$Revision'
11985
11986 case "$crosscompile" in
11987 ''|[nN]*) crosscompile="$undef" ;;
11988 esac
11989
11990 case "$osname" in
11991 next|rhapsody|darwin) multiarch="$define" ;;
11992 esac
11993 case "$multiarch" in
11994 ''|[nN]*) multiarch="$undef" ;;
11995 esac
11996
11997 : check for alignment requirements
11998 echo " "
11999 case "$crosscompile$multiarch" in
12000 *$define*)
12001         $cat <<EOM
12002 You seem to be either cross-compiling or doing a multiarchitecture build,
12003 skipping the memory alignment check.
12004
12005 EOM
12006         case "$alignbytes" in
12007         '') alignbytes=8 ;;
12008         esac
12009         ;;
12010 *)
12011         case "$alignbytes" in
12012         '') echo "Checking alignment constraints..." >&4
12013                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12014                         $cat >try.c <<'EOCP'
12015 typedef long double NV;
12016 EOCP
12017                 else
12018                         $cat >try.c <<'EOCP'
12019 typedef double NV;
12020 EOCP
12021                 fi
12022                 $cat >>try.c <<'EOCP'
12023 #include <stdio.h>
12024 struct foobar {
12025         char foo;
12026         NV bar;
12027 } try_algn;
12028 int main()
12029 {
12030     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12031     return(0);
12032 }
12033 EOCP
12034                 set try
12035                 if eval $compile_ok; then
12036                         dflt=`./try`
12037                 else
12038                         dflt='8'
12039                         echo "(I can't seem to compile the test program...)"
12040                 fi
12041                 ;;
12042         *) dflt="$alignbytes"
12043                 ;;
12044         esac
12045         rp="Doubles must be aligned on a how-many-byte boundary?"
12046         . ./myread
12047         alignbytes="$ans"
12048         $rm -f try.c try
12049         ;;
12050 esac
12051
12052
12053 : set the base revision
12054 baserev=5.0
12055
12056 : check for ordering of bytes in a long
12057 echo " "
12058 case "$crosscompile$multiarch" in
12059 *$define*)
12060         $cat <<EOM
12061 You seem to be either cross-compiling or doing a multiarchitecture build,
12062 skipping the byteorder check.
12063
12064 EOM
12065         byteorder='0xffff'
12066         ;;
12067 *)
12068         case "$byteorder" in
12069         '')
12070                 $cat <<'EOM'
12071 In the following, larger digits indicate more significance.  A big-endian
12072 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12073 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12074 machines may have weird orders like 3412.  A Cray will report 87654321,
12075 an Alpha will report 12345678. If the test program works the default is
12076 probably right.
12077 I'm now running the test program...
12078 EOM
12079                 $cat >try.c <<'EOCP'
12080 #include <stdio.h>
12081 int main()
12082 {
12083         int i;
12084         union {
12085                 unsigned long l;
12086                 char c[sizeof(long)];
12087         } u;
12088
12089         if (sizeof(long) > 4)
12090                 u.l = (0x08070605L << 32) | 0x04030201L;
12091         else
12092                 u.l = 0x04030201L;
12093         for (i = 0; i < sizeof(long); i++)
12094                 printf("%c", u.c[i]+'0');
12095         printf("\n");
12096         exit(0);
12097 }
12098 EOCP
12099                 xxx_prompt=y
12100                 set try
12101                 if eval $compile && ./try > /dev/null; then
12102                         dflt=`./try`
12103                         case "$dflt" in
12104                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12105                                 echo "(The test program ran ok.)"
12106                                 echo "byteorder=$dflt"
12107                                 xxx_prompt=n
12108                         ;;
12109                         ????|????????) echo "(The test program ran ok.)" ;;
12110                         *) echo "(The test program didn't run right for some reason.)" ;;
12111                         esac
12112                 else
12113                         dflt='4321'
12114                         cat <<'EOM'
12115 (I can't seem to compile the test program.  Guessing big-endian...)
12116 EOM
12117                 fi
12118                 case "$xxx_prompt" in
12119                 y)
12120                         rp="What is the order of bytes in a long?"
12121                         . ./myread
12122                         byteorder="$ans"
12123                         ;;
12124                 *)      byteorder=$dflt
12125                         ;;
12126                 esac
12127                 ;;
12128         esac
12129         $rm -f try.c try
12130         ;;
12131 esac
12132
12133
12134 : how do we catenate cpp tokens here?
12135 echo " "
12136 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12137 $cat >cpp_stuff.c <<'EOCP'
12138 #define RCAT(a,b)a/**/b
12139 #define ACAT(a,b)a ## b
12140 RCAT(Rei,ser)
12141 ACAT(Cir,cus)
12142 EOCP
12143 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12144 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12145         echo "Oh!  Smells like ANSI's been here." >&4
12146         echo "We can catify or stringify, separately or together!"
12147         cpp_stuff=42
12148 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12149         echo "Ah, yes!  The good old days!" >&4
12150         echo "However, in the good old days we don't know how to stringify and"
12151         echo "catify at the same time."
12152         cpp_stuff=1
12153 else
12154         $cat >&4 <<EOM
12155 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12156 to have to edit the values of CAT[2-5] in config.h...
12157 EOM
12158         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12159 fi
12160 $rm -f cpp_stuff.*
12161
12162 : see if this is a db.h system
12163 set db.h i_db
12164 eval $inhdr
12165
12166 case "$i_db" in
12167 $define)
12168         : Check db version.
12169         echo " "
12170         echo "Checking Berkeley DB version ..." >&4
12171         $cat >try.c <<EOCP
12172 #$d_const HASCONST
12173 #ifndef HASCONST
12174 #define const
12175 #endif
12176 #include <sys/types.h>
12177 #include <stdio.h>
12178 #include <db.h>
12179 int main()
12180 {
12181 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12182     int Major, Minor, Patch ;
12183     unsigned long Version ;
12184     (void)db_version(&Major, &Minor, &Patch) ;
12185     printf("You have Berkeley DB Version 2 or greater\n");
12186
12187     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12188                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12189     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12190                 Major, Minor, Patch) ;
12191
12192     /* check that db.h & libdb are compatible */
12193     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12194         printf("db.h and libdb are incompatible\n") ;
12195         exit(3);        
12196     }
12197
12198     printf("db.h and libdb are compatible\n") ;
12199
12200     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12201                 + DB_VERSION_PATCH ;
12202
12203     /* needs to be >= 2.3.4 */
12204     if (Version < 2003004) {
12205     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12206         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12207         exit(2);        
12208     }
12209
12210     exit(0);
12211 #else
12212 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12213     printf("You have Berkeley DB Version 1\n");
12214     exit(0);    /* DB version < 2: the coast is clear. */
12215 #else
12216     exit(1);    /* <db.h> not Berkeley DB? */
12217 #endif
12218 #endif
12219 }
12220 EOCP
12221         set try
12222         if eval $compile_ok && ./try; then
12223                 echo 'Looks OK.' >&4
12224         else
12225                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12226                 i_db=$undef
12227                 case " $libs " in
12228                 *"-ldb "*)
12229                         : Remove db from list of libraries to use
12230                         echo "Removing unusable -ldb from library list" >&4
12231                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12232                         shift
12233                         libs="$*"
12234                         echo "libs = $libs" >&4
12235                         ;;
12236                 esac
12237         fi
12238         $rm -f try.*
12239         ;;
12240 esac
12241
12242 case "$i_db" in
12243 define)
12244         : Check the return type needed for hash 
12245         echo " "
12246         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12247         $cat >try.c <<EOCP
12248 #$d_const HASCONST
12249 #ifndef HASCONST
12250 #define const
12251 #endif
12252 #include <sys/types.h>
12253 #include <db.h>
12254
12255 #ifndef DB_VERSION_MAJOR
12256 u_int32_t hash_cb (ptr, size)
12257 const void *ptr;
12258 size_t size;
12259 {
12260 }
12261 HASHINFO info;
12262 int main()
12263 {
12264         info.hash = hash_cb;
12265 }
12266 #endif
12267 EOCP
12268         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12269                 if $contains warning try.out >>/dev/null 2>&1 ; then
12270                         db_hashtype='int'
12271                 else
12272                         db_hashtype='u_int32_t'
12273                 fi
12274         else
12275                 : XXX Maybe we should just give up here.
12276                 db_hashtype=u_int32_t
12277                 $cat try.out >&4
12278                 echo "Help:  I can't seem to compile the db test program." >&4
12279                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12280         fi
12281         $rm -f try.*
12282         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12283         ;;
12284 *)      db_hashtype=u_int32_t
12285         ;;
12286 esac
12287 case "$i_db" in
12288 define)
12289         : Check the return type needed for prefix 
12290         echo " "
12291         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12292         cat >try.c <<EOCP
12293 #$d_const HASCONST
12294 #ifndef HASCONST
12295 #define const
12296 #endif
12297 #include <sys/types.h>
12298 #include <db.h>
12299
12300 #ifndef DB_VERSION_MAJOR
12301 size_t prefix_cb (key1, key2)
12302 const DBT *key1;
12303 const DBT *key2;
12304 {
12305 }
12306 BTREEINFO info;
12307 int main()
12308 {
12309         info.prefix = prefix_cb;
12310 }
12311 #endif
12312 EOCP
12313         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12314                 if $contains warning try.out >>/dev/null 2>&1 ; then
12315                         db_prefixtype='int'
12316                 else
12317                         db_prefixtype='size_t'
12318                 fi
12319         else
12320                 db_prefixtype='size_t'
12321                 : XXX Maybe we should just give up here.
12322                 $cat try.out >&4
12323                 echo "Help:  I can't seem to compile the db test program." >&4
12324                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12325         fi
12326         $rm -f try.*
12327         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12328         ;;
12329 *)      db_prefixtype='size_t'
12330         ;;
12331 esac
12332
12333 : check for void type
12334 echo " "
12335 echo "Checking to see how well your C compiler groks the void type..." >&4
12336 case "$voidflags" in
12337 '')
12338         $cat >try.c <<'EOCP'
12339 #if TRY & 1
12340 void sub() {
12341 #else
12342 sub() {
12343 #endif
12344         extern void moo();      /* function returning void */
12345         void (*goo)();          /* ptr to func returning void */
12346 #if TRY & 8
12347         void *hue;              /* generic ptr */
12348 #endif
12349 #if TRY & 2
12350         void (*foo[10])();
12351 #endif
12352
12353 #if TRY & 4
12354         if(goo == moo) {
12355                 exit(0);
12356         }
12357 #endif
12358         exit(0);
12359 }
12360 int main() { sub(); }
12361 EOCP
12362         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12363                 voidflags=$defvoidused
12364         echo "Good.  It appears to support void to the level $package wants.">&4
12365                 if $contains warning .out >/dev/null 2>&1; then
12366                         echo "However, you might get some warnings that look like this:"
12367                         $cat .out
12368                 fi
12369         else
12370 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12371                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12372                         echo "It supports 1..."
12373                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12374                                 echo "It also supports 2..."
12375                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12376                                         voidflags=7
12377                                         echo "And it supports 4 but not 8 definitely."
12378                                 else
12379                                         echo "It doesn't support 4..."
12380                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12381                                                 voidflags=11
12382                                                 echo "But it supports 8."
12383                                         else
12384                                                 voidflags=3
12385                                                 echo "Neither does it support 8."
12386                                         fi
12387                                 fi
12388                         else
12389                                 echo "It does not support 2..."
12390                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12391                                         voidflags=13
12392                                         echo "But it supports 4 and 8."
12393                                 else
12394                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12395                                                 voidflags=5
12396                                                 echo "And it supports 4 but has not heard about 8."
12397                                         else
12398                                                 echo "However it supports 8 but not 4."
12399                                         fi
12400                                 fi
12401                         fi
12402                 else
12403                         echo "There is no support at all for void."
12404                         voidflags=0
12405                 fi
12406         fi
12407 esac
12408 case "$voidflags" in
12409 "$defvoidused") ;;
12410 *)      $cat >&4 <<'EOM'
12411   Support flag bits are:
12412     1: basic void declarations.
12413     2: arrays of pointers to functions returning void.
12414     4: operations between pointers to and addresses of void functions.
12415     8: generic void pointers.
12416 EOM
12417         dflt="$voidflags";
12418         rp="Your void support flags add up to what?"
12419         . ./myread
12420         voidflags="$ans"
12421         ;;
12422 esac
12423 $rm -f try.* .out
12424
12425
12426 : How can we generate normalized random numbers ?
12427 echo " "
12428 echo "Looking for a random number function..." >&4
12429 case "$randfunc" in
12430 '')
12431         if set drand48 val -f; eval $csym; $val; then
12432                 dflt="drand48"
12433                 echo "Good, found drand48()." >&4
12434         elif set random val -f; eval $csym; $val; then
12435                 dflt="random"
12436                 echo "OK, found random()." >&4
12437         else
12438                 dflt="rand"
12439                 echo "Yick, looks like I have to use rand()." >&4
12440         fi
12441         echo " "
12442         ;;
12443 *)
12444         dflt="$randfunc"
12445         ;;
12446 esac
12447 cont=true
12448
12449 case "$ccflags" in
12450 *-Dmy_rand=*|*-Dmy_srand=*)
12451         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12452         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12453         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12454         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12455         ;;
12456 esac
12457
12458 while $test "$cont"; do
12459         rp="Use which function to generate random numbers?"
12460         . ./myread
12461         if $test "$ans" = "$dflt"; then
12462                 : null
12463         else
12464                 randbits=''
12465         fi
12466         randfunc="$ans"
12467         if set $ans val -f; eval $csym; $val; then
12468                 cont=''
12469         else
12470                 dflt=y
12471                 rp="I cannot find function $ans. Use that name anyway?"
12472                 . ./myread
12473                 dflt=rand
12474                 case "$ans" in
12475                         [yY]*) cont='';;
12476                 esac
12477         fi
12478         case "$cont" in
12479         '')
12480                 case "$randfunc" in
12481                 drand48)
12482                         drand01="drand48()"
12483                         seedfunc="srand48"
12484                         randbits=48
12485                         randseedtype=long
12486                         ;;
12487                 rand|random)
12488                         case "$randbits" in
12489                         '')
12490 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12491                                 $cat >try.c <<EOCP
12492 #$i_unistd I_UNISTD
12493 #$i_stdlib I_STDLIB
12494 #include <stdio.h>
12495 #ifdef I_UNISTD
12496 #  include <unistd.h>
12497 #endif
12498 #ifdef I_STDLIB
12499 #  include <stdlib.h>
12500 #endif
12501 int main()
12502 {
12503         register int i;
12504         register unsigned long tmp;
12505         register unsigned long max = 0L;
12506
12507         for (i = 1000; i; i--) {
12508                 tmp = (unsigned long) $randfunc();
12509                 if (tmp > max) max = tmp;
12510         }
12511         for (i = 0; max; i++)
12512                 max /= 2;
12513         printf("%d\n",i);
12514 }
12515 EOCP
12516                                 set try
12517                                 if eval $compile_ok; then
12518                                         dflt=`try`
12519                                 else
12520                                         dflt='?'
12521                                         echo "(I can't seem to compile the test program...)"
12522                                 fi
12523                                 ;;
12524                         *)
12525                                 dflt="$randbits"
12526                                 ;;
12527                         esac
12528                         rp="How many bits does your $randfunc() function produce?"
12529                         . ./myread
12530                         randbits="$ans"
12531                         $rm -f try.c try
12532                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12533                         seedfunc="s$randfunc"
12534                         randseedtype=unsigned
12535                         ;;
12536                 *)
12537                         dflt="31"
12538                         rp="How many bits does your $randfunc() function produce?"
12539                         . ./myread
12540                         randbits="$ans"
12541                         seedfunc="s$randfunc"
12542                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12543                         if set $seedfunc val -f; eval $csym; $val; then
12544                                 echo "(Using $seedfunc() to seed random generator)"
12545                         else
12546                                 echo "(Warning: no $seedfunc() to seed random generator)"
12547                                 seedfunc=rand
12548                         fi
12549                         randseedtype=unsigned
12550                         ;;
12551                 esac
12552                 ;;
12553         esac
12554 done
12555
12556 echo " "
12557 echo "Determining whether or not we are on an EBCDIC system..." >&4
12558 $cat >tebcdic.c <<'EOM'
12559 int main()
12560 {
12561   if ('M'==0xd4) return 0;
12562   return 1;
12563 }
12564 EOM
12565
12566 val=$undef
12567 set tebcdic
12568 if eval $compile_ok; then
12569         if ./tebcdic; then
12570                 echo "You have EBCDIC." >&4
12571                 val="$define"
12572         else
12573                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12574         fi
12575 else
12576         echo "I'm unable to compile the test program." >&4
12577         echo "I'll assume ASCII or some ISO Latin." >&4
12578 fi
12579 $rm -f tebcdic.c tebcdic
12580 set ebcdic
12581 eval $setvar
12582
12583 echo " "
12584 $cat >&4 <<EOM
12585 Checking how to flush all pending stdio output...
12586 EOM
12587 # I only know how to find the first 32 possibly open files on SunOS.
12588 # See also hints/sunos_4_1.sh and util.c  --AD
12589 case "$osname" in
12590 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12591 esac
12592 $cat >>try.c <<EOCP
12593 #include <stdio.h>
12594 #$i_unistd I_UNISTD
12595 #ifdef I_UNISTD
12596 # include <unistd.h>
12597 #endif
12598 #$d_sysconf HAS_SYSCONF
12599 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12600 #ifdef HAS_STDIO_STREAM_ARRAY
12601 # define STDIO_STREAM_ARRAY $stdio_stream_array
12602 #endif
12603 int main() {
12604   FILE* p = fopen("try.out", "w");
12605 #ifdef TRY_FPUTC
12606   fputc('x', p);
12607 #else
12608 # ifdef TRY_FPRINTF
12609   fprintf(p, "x");
12610 # endif
12611 #endif
12612 #ifdef TRY_FFLUSH_NULL
12613   fflush(NULL);
12614 #endif
12615 #ifdef TRY_FFLUSH_ALL
12616   {
12617     long open_max = -1;
12618 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12619     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12620 # else
12621 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12622     open_max = sysconf(_SC_OPEN_MAX);
12623 #  else
12624 #   ifdef FOPEN_MAX
12625     open_max = FOPEN_MAX;
12626 #   else
12627 #    ifdef OPEN_MAX
12628     open_max = OPEN_MAX;
12629 #    else
12630 #     ifdef _NFILE
12631     open_max = _NFILE;
12632 #     endif
12633 #    endif
12634 #   endif
12635 #  endif
12636 # endif 
12637 # ifdef HAS_STDIO_STREAM_ARRAY
12638     if (open_max > 0) {
12639       long i;
12640       for (i = 0; i < open_max; i++)
12641             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12642                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12643                 STDIO_STREAM_ARRAY[i]._flag)
12644                 fflush(&STDIO_STREAM_ARRAY[i]);
12645     }   
12646   }
12647 # endif
12648 #endif
12649   _exit(42);
12650 }
12651 EOCP
12652 : first we have to find out how _not_ to flush
12653 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12654     output=''
12655     set try -DTRY_FPUTC
12656     if eval $compile; then
12657             $rm -f try.out
12658             ./try$exe_ext 2>/dev/null
12659             if $test ! -s try.out -a "X$?" = X42; then
12660                 output=-DTRY_FPUTC
12661             fi
12662     fi
12663     case "$output" in
12664     '')
12665             set try -DTRY_FPRINTF
12666             $rm -f try.out
12667             if eval $compile; then
12668                     $rm -f try.out
12669                     ./try$exe_ext 2>/dev/null
12670                     if $test ! -s try.out -a "X$?" = X42; then
12671                         output=-DTRY_FPRINTF
12672                     fi
12673             fi
12674         ;;
12675     esac
12676 fi
12677 : check for fflush NULL behaviour
12678 case "$fflushNULL" in
12679 '')     set try -DTRY_FFLUSH_NULL $output
12680         if eval $compile; then
12681                 $rm -f try.out
12682                 ./try$exe_ext 2>/dev/null
12683                 code="$?"
12684                 if $test -s try.out -a "X$code" = X42; then
12685                         fflushNULL="`$cat try.out`"
12686                 else
12687                         if $test "X$code" != X42; then
12688                                 $cat >&4 <<EOM
12689 (If this test failed, don't worry, we'll try another method shortly.)
12690 EOM
12691                         fi
12692                 fi
12693         fi
12694         $rm -f core try.core core.try.*
12695         case "$fflushNULL" in
12696         x)      $cat >&4 <<EOM
12697 Your fflush(NULL) works okay for output streams.
12698 Let's see if it clobbers input pipes...
12699 EOM
12700 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12701 # bug that improperly flushes the input end of pipes.  So we avoid the
12702 # autoflush on fork/system/exec support for now. :-(
12703 $cat >tryp.c <<EOCP
12704 #include <stdio.h>
12705 int
12706 main(int argc, char **argv)
12707 {
12708     char buf[1024];
12709     int i;
12710     char *bp = buf;
12711     while (1) {
12712         while ((i = getc(stdin)) != -1
12713                && (*bp++ = i) != '\n'
12714                && bp < &buf[1024])
12715         /* DO NOTHING */ ;
12716         *bp = '\0';
12717         fprintf(stdout, "%s", buf);
12718         fflush(NULL);
12719         if (i == -1)
12720             return 0;
12721         bp = buf;
12722     }
12723 }
12724 EOCP
12725                 fflushNULL="$define"
12726                 set tryp
12727                 if eval $compile; then
12728                     $rm -f tryp.out
12729                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12730                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12731                        $cat >&4 <<EOM
12732 fflush(NULL) seems to behave okay with input streams.
12733 EOM
12734                         fflushNULL="$define"
12735                     else
12736                         $cat >&4 <<EOM
12737 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12738 EOM
12739                         fflushNULL="$undef"
12740                     fi
12741                 fi
12742                 $rm -f core tryp.c tryp.core core.tryp.*
12743                 ;;
12744         '')     $cat >&4 <<EOM
12745 Your fflush(NULL) isn't working (contrary to ANSI C).
12746 EOM
12747                 fflushNULL="$undef"
12748                 ;;
12749         *)      $cat >&4 <<EOM
12750 Cannot figure out whether your fflush(NULL) works or not.
12751 I'm assuming it doesn't (contrary to ANSI C).
12752 EOM
12753                 fflushNULL="$undef"
12754                 ;;
12755         esac
12756         ;;
12757 $define|true|[yY]*)
12758         fflushNULL="$define"
12759         ;;
12760 *)
12761         fflushNULL="$undef"
12762         ;;
12763 esac
12764 : check explicit looping only if NULL did not work, and if the pipe
12765 : bug does not show up on an explicit flush too
12766 case "$fflushNULL" in
12767 "$undef")
12768         $cat >tryp.c <<EOCP
12769 #include <stdio.h>
12770 int
12771 main(int argc, char **argv)
12772 {
12773     char buf[1024];
12774     int i;
12775     char *bp = buf;
12776     while (1) {
12777         while ((i = getc(stdin)) != -1
12778                && (*bp++ = i) != '\n'
12779                && bp < &buf[1024])
12780         /* DO NOTHING */ ;
12781         *bp = '\0';
12782         fprintf(stdout, "%s", buf);
12783         fflush(stdin);
12784         if (i == -1)
12785             return 0;
12786         bp = buf;
12787     }
12788 }
12789 EOCP
12790         set tryp
12791         if eval $compile; then
12792             $rm -f tryp.out
12793             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12794             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12795                $cat >&4 <<EOM
12796 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12797 EOM
12798                 : now check for fflushall behaviour
12799                 case "$fflushall" in
12800                 '')     set try -DTRY_FFLUSH_ALL $output
12801                         if eval $compile; then
12802                                 $cat >&4 <<EOM
12803 (Now testing the other method--but note that this also may fail.)
12804 EOM
12805                                 $rm -f try.out
12806                                 ./try$exe_ext 2>/dev/null
12807                                 if $test -s try.out -a "X$?" = X42; then
12808                                         fflushall="`$cat try.out`"
12809                                 fi
12810                         fi
12811                         $rm -f core try.core core.try.*
12812                         case "$fflushall" in
12813                         x)      $cat >&4 <<EOM
12814 Whew. Flushing explicitly all the stdio streams works.
12815 EOM
12816                                 fflushall="$define"
12817                                 ;;
12818                         '')     $cat >&4 <<EOM
12819 Sigh. Flushing explicitly all the stdio streams doesn't work.
12820 EOM
12821                                 fflushall="$undef"
12822                                 ;;
12823                         *)      $cat >&4 <<EOM
12824 Cannot figure out whether flushing stdio streams explicitly works or not.
12825 I'm assuming it doesn't.
12826 EOM
12827                                 fflushall="$undef"
12828                                 ;;
12829                         esac
12830                         ;;
12831                 "$define"|true|[yY]*)
12832                         fflushall="$define"
12833                         ;;
12834                 *)
12835                         fflushall="$undef"
12836                         ;;
12837                 esac
12838             else
12839                 $cat >&4 <<EOM
12840 All is futile.  Even fflush(stdin) clobbers input pipes!
12841 EOM
12842                 fflushall="$undef"
12843             fi
12844         else
12845             fflushall="$undef"
12846         fi
12847         $rm -f core tryp.c tryp.core core.tryp.*
12848         ;;
12849 *)      fflushall="$undef"
12850         ;;
12851 esac
12852
12853 case "$fflushNULL$fflushall" in
12854 undefundef)
12855         $cat <<EOM
12856 OK, I give up.  I cannot figure out how to flush pending stdio output.
12857 We won't be flushing handles at all before fork/exec/popen.
12858 EOM
12859         ;;
12860 esac
12861 $rm -f try.* try$exe_ext
12862
12863 : Store the full pathname to the ar program for use in the C program
12864 : Respect a hint or command line value for full_ar.
12865 case "$full_ar" in
12866 '') full_ar=$ar ;;
12867 esac
12868
12869 : Store the full pathname to the sed program for use in the C program
12870 full_sed=$sed
12871
12872 : see what type gids are declared as in the kernel
12873 echo " "
12874 echo "Looking for the type for group ids returned by getgid()."
12875 set gid_t gidtype xxx stdio.h sys/types.h
12876 eval $typedef
12877 case "$gidtype" in
12878 xxx)
12879         xxx=`./findhdr sys/user.h`
12880         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12881         case $1 in
12882         unsigned) dflt="$1 $2" ;;
12883         *) dflt="$1" ;;
12884         esac
12885         ;;
12886 *) dflt="$gidtype";;
12887 esac
12888 case "$gidtype" in
12889 gid_t) echo "gid_t found." ;;
12890 *)      rp="What is the type for group ids returned by getgid()?"
12891         . ./myread
12892         gidtype="$ans"
12893         ;;
12894 esac
12895
12896 echo " "
12897 case "$gidtype" in
12898 *_t) zzz="$gidtype"     ;;
12899 *)   zzz="gid"          ;;
12900 esac
12901 echo "Checking the size of $zzz..." >&4 
12902 cat > try.c <<EOCP
12903 #include <sys/types.h>
12904 #include <stdio.h>
12905 int main() {
12906     printf("%d\n", (int)sizeof($gidtype));
12907     exit(0);
12908 }
12909 EOCP
12910 set try
12911 if eval $compile_ok; then
12912         yyy=`./try`
12913         case "$yyy" in
12914         '')     gidsize=4
12915                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12916                 ;;
12917         *)      gidsize=$yyy
12918                 echo "Your $zzz is $gidsize bytes long."
12919                 ;;
12920         esac
12921 else
12922         gidsize=4
12923         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12924 fi
12925
12926
12927 echo " "
12928 case "$gidtype" in
12929 *_t) zzz="$gidtype"     ;;
12930 *)   zzz="gid"          ;;
12931 esac
12932 echo "Checking the sign of $zzz..." >&4 
12933 cat > try.c <<EOCP
12934 #include <sys/types.h>
12935 #include <stdio.h>
12936 int main() {
12937         $gidtype foo = -1;
12938         if (foo < 0)
12939                 printf("-1\n");
12940         else
12941                 printf("1\n");
12942 }
12943 EOCP
12944 set try
12945 if eval $compile; then
12946         yyy=`./try`
12947         case "$yyy" in
12948         '')     gidsign=1
12949                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12950                 ;;
12951         *)      gidsign=$yyy
12952                 case "$gidsign" in
12953                  1) echo "Your $zzz is unsigned." ;;
12954                 -1) echo "Your $zzz is signed."   ;;
12955                 esac
12956                 ;;
12957         esac
12958 else
12959         gidsign=1
12960         echo "(I can't compile the test program--guessing unsigned.)" >&4
12961 fi
12962
12963
12964 echo " "
12965
12966 if $test X"$quadtype" != X; then
12967
12968 echo "Checking how to print 64-bit integers..." >&4
12969
12970 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12971         $cat >try.c <<'EOCP'
12972 #include <sys/types.h>
12973 #include <stdio.h>
12974 int main() {
12975   int q = 12345678901;
12976   printf("%ld\n", q);
12977 }
12978 EOCP
12979         set try
12980         if eval $compile; then
12981                 yyy=`./try$exe_ext`
12982                 case "$yyy" in
12983                 12345678901)
12984                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12985                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12986                         echo "We will use %d."
12987                         ;;
12988                 esac
12989         fi
12990 fi
12991
12992 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12993         $cat >try.c <<'EOCP'
12994 #include <sys/types.h>
12995 #include <stdio.h>
12996 int main() {
12997   long q = 12345678901;
12998   printf("%ld\n", q);
12999 }
13000 EOCP
13001         set try
13002         if eval $compile; then
13003                 yyy=`./try$exe_ext`
13004                 case "$yyy" in
13005                 12345678901)
13006                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13007                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13008                         echo "We will use %ld."
13009                         ;;
13010                 esac
13011         fi
13012 fi
13013
13014 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13015         $cat >try.c <<'EOCP'
13016 #include <sys/types.h>
13017 #include <inttypes.h>
13018 #include <stdio.h>
13019 int main() {
13020   int64_t q = 12345678901;
13021   printf("%" PRId64 "\n", q);
13022 }
13023 EOCP
13024         set try
13025         if eval $compile; then
13026                 yyy=`./try$exe_ext`
13027                 case "$yyy" in
13028                 12345678901)
13029                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13030                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13031                         echo "We will use the C9X style."
13032                         ;;
13033                 esac
13034         fi
13035 fi
13036
13037 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13038         $cat >try.c <<'EOCP'
13039 #include <sys/types.h>
13040 #include <stdio.h>
13041 int main() {
13042   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13043   printf("%lld\n", q);
13044 }
13045 EOCP
13046         set try
13047         if eval $compile; then
13048                 yyy=`./try$exe_ext`
13049                 case "$yyy" in
13050                 12345678901)
13051                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13052                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13053                         echo "We will use the %lld style."
13054                         ;;
13055                 esac
13056         fi
13057 fi
13058
13059 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13060         $cat >try.c <<EOCP
13061 #include <sys/types.h>
13062 #include <stdio.h>
13063 int main() {
13064   $quadtype q = 12345678901;
13065   printf("%Ld\n", q);
13066 }
13067 EOCP
13068         set try
13069         if eval $compile; then
13070                 yyy=`./try$exe_ext`
13071                 case "$yyy" in
13072                 12345678901)
13073                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13074                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13075                         echo "We will use %Ld."
13076                         ;;
13077                 esac
13078         fi
13079 fi
13080
13081 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13082         $cat >try.c <<EOCP
13083 #include <sys/types.h>
13084 #include <stdio.h>
13085 int main() {
13086   $quadtype q = 12345678901;
13087   printf("%qd\n", q);
13088 }
13089 EOCP
13090         set try
13091         if eval $compile; then
13092                 yyy=`./try$exe_ext`
13093                 case "$yyy" in
13094                 12345678901)
13095                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13096                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13097                         echo "We will use %qd."
13098                         ;;
13099                 esac
13100         fi
13101 fi
13102
13103 if $test X"$sPRId64" = X; then
13104         echo "Cannot figure out how to print 64-bit integers." >&4
13105 fi
13106
13107 $rm -f try try.*
13108
13109 fi
13110
13111 case "$sPRId64" in
13112 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13113         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13114         ;;
13115 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13116         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13117         ;;
13118 esac
13119
13120
13121 echo " "
13122 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13123
13124 if $test X"$ivsize" = X8; then
13125         ivdformat="$sPRId64"
13126         uvuformat="$sPRIu64"
13127         uvoformat="$sPRIo64"
13128         uvxformat="$sPRIx64"
13129 else
13130         if $test X"$ivsize" = X"$longsize"; then
13131                 ivdformat='"ld"'
13132                 uvuformat='"lu"'
13133                 uvoformat='"lo"'
13134                 uvxformat='"lx"'
13135         else
13136                 if $test X"$ivsize" = X"$intsize"; then
13137                         ivdformat='"d"'
13138                         uvuformat='"u"'
13139                         uvoformat='"o"'
13140                         uvxformat='"x"'
13141                 else
13142                         : far out
13143                         if $test X"$ivsize" = X"$shortsize"; then
13144                                 ivdformat='"hd"'
13145                                 uvuformat='"hu"'
13146                                 uvoformat='"ho"'
13147                                 uvxformat='"hx"'
13148                         fi
13149                 fi
13150         fi
13151 fi
13152
13153 case "$ivdformat" in
13154 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13155     exit 1
13156     ;;
13157 esac
13158
13159
13160 echo " "
13161 $echo "Checking the format string to be used for gids..." >&4
13162
13163 case "$gidsign" in
13164 -1)     if $test X"$gidsize" = X"$ivsize"; then
13165                 gidformat="$ivdformat"
13166         else
13167                 if $test X"$gidsize" = X"$longsize"; then
13168                         gidformat='"ld"'
13169                 else
13170                         if $test X"$gidsize" = X"$intsize"; then
13171                                 gidformat='"d"'
13172                         else
13173                                 if $test X"$gidsize" = X"$shortsize"; then
13174                                         gidformat='"hd"'
13175                                 fi
13176                         fi
13177                 fi
13178         fi
13179         ;;
13180 *)      if $test X"$gidsize" = X"$uvsize"; then
13181                 gidformat="$uvuformat"
13182         else
13183                 if $test X"$gidsize" = X"$longsize"; then
13184                         gidformat='"lu"'
13185                 else
13186                         if $test X"$gidsize" = X"$intsize"; then
13187                                 gidformat='"u"'
13188                         else
13189                                 if $test X"$gidsize" = X"$shortsize"; then
13190                                         gidformat='"hu"'
13191                                 fi
13192                         fi
13193                 fi
13194         fi
13195         ;;
13196 esac
13197
13198 : see if getgroups exists
13199 set getgroups d_getgrps
13200 eval $inlibc
13201
13202 : see if setgroups exists
13203 set setgroups d_setgrps
13204 eval $inlibc
13205
13206
13207 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13208 echo " "
13209 case "$d_getgrps$d_setgrps" in
13210 *define*)
13211         case "$groupstype" in
13212         '') dflt="$gidtype" ;;
13213         *)  dflt="$groupstype" ;;
13214         esac
13215         $cat <<EOM
13216 What type of pointer is the second argument to getgroups() and setgroups()?
13217 Usually this is the same as group ids, $gidtype, but not always.
13218
13219 EOM
13220         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13221         . ./myread
13222         groupstype="$ans"
13223         ;;
13224 *)  groupstype="$gidtype";;
13225 esac
13226
13227 echo " "
13228 echo "Checking if your $make program sets \$(MAKE)..." >&4
13229 case "$make_set_make" in
13230 '')
13231         $sed 's/^X //' > testmake.mak << 'EOF'
13232 Xall:
13233 X       @echo 'maketemp="$(MAKE)"'
13234 EOF
13235         case "`$make -f testmake.mak 2>/dev/null`" in
13236         *maketemp=*) make_set_make='#' ;;
13237         *)      make_set_make="MAKE=$make" ;;
13238         esac
13239         $rm -f testmake.mak
13240         ;;
13241 esac
13242 case "$make_set_make" in
13243 '#') echo "Yup, it does.";;
13244 *) echo "Nope, it doesn't.";;
13245 esac
13246
13247 : see what type is used for mode_t
13248 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13249 set mode_t modetype int stdio.h sys/types.h
13250 eval $typedef_ask
13251
13252 : define a fucntion to check prototypes
13253 $cat > protochk <<EOSH
13254 $startsh
13255 cc="$cc"
13256 optimize="$optimize"
13257 ccflags="$ccflags"
13258 prototype="$prototype"
13259 define="$define"
13260 rm=$rm
13261 EOSH
13262
13263 $cat >> protochk <<'EOSH'
13264
13265 $rm -f try.c
13266 foo="$1"
13267 shift
13268 while test $# -ge 2; do
13269         case "$1" in
13270                 $define) echo "#include <$2>" >> try.c ;;
13271                 literal) echo "$2" >> try.c ;;
13272         esac
13273     shift 2
13274 done
13275 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13276 cat >> try.c <<'EOCP'
13277 #ifdef CAN_PROTOTYPE
13278 #define _(args) args
13279 #else
13280 #define _(args) ()
13281 #endif
13282 EOCP
13283 echo "$foo" >> try.c
13284 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13285 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13286 status=$?
13287 $rm -f try.[co]
13288 exit $status
13289 EOSH
13290 chmod +x protochk
13291 $eunicefix protochk
13292
13293 : see what type is used for size_t
13294 rp="What is the type used for the length parameter for string functions?"
13295 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13296 eval $typedef_ask
13297
13298 : check for type of arguments to gethostbyaddr. 
13299 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13300         case "$d_gethbyaddr" in
13301         $define)
13302                 $cat <<EOM
13303
13304 Checking to see what type of arguments are accepted by gethostbyaddr().
13305 EOM
13306                 hdrs="$define sys/types.h
13307                         $d_socket sys/socket.h 
13308                         $i_niin netinet/in.h 
13309                         $i_netdb netdb.h
13310                         $i_unistd unistd.h"
13311                 : The first arg can 'char *' or 'void *'
13312                 : The second arg is some of integral type
13313                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13314                         for yyy in size_t long int; do
13315                                 case "$netdb_host_type" in
13316                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13317                                         if ./protochk "$try" $hdrs; then
13318                                                 echo "Your system accepts $xxx for the first arg."
13319                                                 echo "...and $yyy for the second arg."
13320                                                 netdb_host_type="$xxx"
13321                                                 netdb_hlen_type="$yyy"
13322                                         fi
13323                                         ;;
13324                                 esac
13325                         done
13326                 done
13327                 : In case none of those worked, prompt the user.
13328                 case "$netdb_host_type" in
13329                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13330                         dflt='char *'
13331                         . ./myread
13332                         netdb_host_type=$ans
13333                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13334                         dflt="$sizetype"
13335                         . ./myread
13336                         netdb_hlen_type=$ans
13337                         ;;
13338                 esac
13339                 ;;
13340         *)      : no gethostbyaddr, so pick harmless defaults
13341                 netdb_host_type='char *'
13342                 netdb_hlen_type="$sizetype"
13343                 ;;
13344         esac
13345         # Remove the "const" if needed. -- but then we'll have a 
13346         # prototype clash!
13347         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13348 fi
13349
13350 : check for type of argument to gethostbyname. 
13351 if test "X$netdb_name_type" = X ; then
13352         case "$d_gethbyname" in
13353         $define)
13354                 $cat <<EOM
13355
13356 Checking to see what type of argument is accepted by gethostbyname().
13357 EOM
13358                 hdrs="$define sys/types.h
13359                         $d_socket sys/socket.h 
13360                         $i_niin netinet/in.h 
13361                         $i_netdb netdb.h
13362                         $i_unistd unistd.h"
13363                 for xxx in "const char *" "char *"; do
13364                         case "$netdb_name_type" in
13365                         '')     try="extern struct hostent *gethostbyname($xxx);"
13366                                 if ./protochk "$try" $hdrs; then
13367                                         echo "Your system accepts $xxx."
13368                                         netdb_name_type="$xxx"
13369                                 fi
13370                                 ;;
13371                         esac
13372                 done
13373                 : In case none of those worked, prompt the user.
13374                 case "$netdb_name_type" in
13375                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13376                         dflt='char *'
13377                         . ./myread
13378                         netdb_name_type=$ans
13379                         ;;
13380                 esac
13381                 ;;
13382         *)      : no gethostbyname, so pick harmless default
13383                 netdb_name_type='char *'
13384                 ;;
13385         esac
13386 fi
13387
13388 : check for type of 1st argument to getnetbyaddr. 
13389 if test "X$netdb_net_type" = X ; then
13390         case "$d_getnbyaddr" in
13391         $define)
13392                 $cat <<EOM
13393
13394 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13395 EOM
13396                 hdrs="$define sys/types.h
13397                         $d_socket sys/socket.h 
13398                         $i_niin netinet/in.h 
13399                         $i_netdb netdb.h
13400                         $i_unistd unistd.h"
13401                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13402                         case "$netdb_net_type" in
13403                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13404                                 if ./protochk "$try" $hdrs; then
13405                                         echo "Your system accepts $xxx."
13406                                         netdb_net_type="$xxx"
13407                                 fi
13408                                 ;;
13409                         esac
13410                 done
13411                 : In case none of those worked, prompt the user.
13412                 case "$netdb_net_type" in
13413                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13414                         dflt='long'
13415                         . ./myread
13416                         netdb_net_type=$ans
13417                         ;;
13418                 esac
13419                 ;;
13420         *)      : no getnetbyaddr, so pick harmless default
13421                 netdb_net_type='long'
13422                 ;;
13423         esac
13424 fi
13425 : locate the preferred pager for this system
13426 case "$pager" in
13427 '')
13428         dflt=''
13429         case "$pg" in
13430         /*) dflt=$pg;;
13431         esac
13432         case "$more" in
13433         /*) dflt=$more;;
13434         esac
13435         case "$less" in
13436         /*) dflt=$less;;
13437         esac
13438         case "$dflt" in
13439         '') dflt=/usr/ucb/more;;
13440         esac
13441         ;;
13442 *) dflt="$pager";;
13443 esac
13444 echo " "
13445 fn=f/
13446 rp='What pager is used on your system?'
13447 . ./getfile
13448 pager="$ans"
13449
13450 : see what type pids are declared as in the kernel
13451 rp="What is the type of process ids on this system?"
13452 set pid_t pidtype int stdio.h sys/types.h
13453 eval $typedef_ask
13454
13455 : Find earliest binary compatible site_perl subdirectory perl can use.
13456 case "$bincompat5005" in
13457 "$define") xs_apiversion='5.005' ;;
13458 *) xs_apiversion=$version ;;   # The current site_perl version.
13459 esac
13460 : Find earliest pure perl site_perl subdirectory perl can use.
13461 : The versioned directories started at 5.005.
13462 pm_apiversion='5.005'
13463
13464 : check for length of pointer
13465 echo " "
13466 case "$ptrsize" in
13467 '')
13468         echo "Checking to see how big your pointers are..." >&4
13469         if test "$voidflags" -gt 7; then
13470                 echo '#define VOID_PTR char *' > try.c
13471         else
13472                 echo '#define VOID_PTR void *' > try.c
13473         fi
13474         $cat >>try.c <<'EOCP'
13475 #include <stdio.h>
13476 int main()
13477 {
13478     printf("%d\n", (int)sizeof(VOID_PTR));
13479     exit(0);
13480 }
13481 EOCP
13482         set try
13483         if eval $compile_ok; then
13484                 ptrsize=`./try`
13485                 echo "Your pointers are $ptrsize bytes long."
13486         else
13487                 dflt='4'
13488                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13489                 rp="What is the size of a pointer (in bytes)?"
13490                 . ./myread
13491                 ptrsize="$ans"
13492         fi
13493         ;;
13494 esac
13495 $rm -f try.c try
13496
13497 : see if ar generates random libraries by itself
13498 echo " "
13499 echo "Checking how to generate random libraries on your machine..." >&4
13500 echo 'int bar1() { return bar2(); }' > bar1.c
13501 echo 'int bar2() { return 2; }' > bar2.c
13502 $cat > foo.c <<'EOP'
13503 int main() { printf("%d\n", bar1()); exit(0); }
13504 EOP
13505 $cc $ccflags -c bar1.c >/dev/null 2>&1
13506 $cc $ccflags -c bar2.c >/dev/null 2>&1
13507 $cc $ccflags -c foo.c >/dev/null 2>&1
13508 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13509 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13510         ./foobar >/dev/null 2>&1; then
13511         echo "$ar appears to generate random libraries itself."
13512         orderlib=false
13513         ranlib=":"
13514 elif $ar ts bar$_a >/dev/null 2>&1 &&
13515         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13516         ./foobar >/dev/null 2>&1; then
13517                 echo "a table of contents needs to be added with '$ar ts'."
13518                 orderlib=false
13519                 ranlib="$ar ts"
13520 else
13521         case "$ranlib" in
13522         :) ranlib='';;
13523         '')
13524                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13525                 $test -f $ranlib || ranlib=''
13526                 ;;
13527         esac
13528         if $test -n "$ranlib"; then
13529                 echo "your system has '$ranlib'; we'll use that."
13530                 orderlib=false
13531         else
13532                 echo "your system doesn't seem to support random libraries"
13533                 echo "so we'll use lorder and tsort to order the libraries."
13534                 orderlib=true
13535                 ranlib=":"
13536         fi
13537 fi
13538 $rm -f foo* bar* 
13539
13540 : check for type of arguments to select. 
13541 case "$selecttype" in
13542 '') case "$d_select" in
13543         $define)
13544                 echo " "
13545                 $cat <<EOM
13546 Checking to see what type of arguments are accepted by select().
13547 EOM
13548                 hdrs="$define sys/types.h
13549                         $i_systime sys/time.h 
13550                         $i_sysselct sys/select.h
13551                         $d_socket sys/socket.h"
13552                 : The first arg can be int, unsigned, or size_t
13553                 : The last arg may or may not be 'const'
13554                 val=''
13555                 : void pointer has been seen but using that
13556                 : breaks the selectminbits test
13557                 for xxx in 'fd_set *' 'int *'; do
13558                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13559                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13560                                         case "$val" in
13561                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13562                                                 if ./protochk "$try" $hdrs; then
13563                                                         echo "Your system accepts $xxx."
13564                                                         val="$xxx"
13565                                                 fi
13566                                                 ;;
13567                                         esac
13568                                 done
13569                         done
13570                 done
13571                 case "$val" in
13572                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13573                         case "$d_fd_set" in
13574                                 $define) dflt="fd_set *" ;;
13575                                 *)              dflt="int *" ;;
13576                         esac
13577                         . ./myread
13578                         val=$ans
13579                         ;;
13580                 esac
13581                 selecttype="$val"
13582                 ;;
13583         *)      : no select, so pick a harmless default
13584                 selecttype='int *'
13585                 ;;
13586         esac
13587         ;;
13588 esac
13589
13590 : check for the select 'width'
13591 case "$selectminbits" in
13592 '') case "$d_select" in
13593         $define)
13594                 $cat <<EOM
13595
13596 Checking to see on how many bits at a time your select() operates...
13597 EOM
13598                 $cat >try.c <<EOCP
13599 #include <sys/types.h>
13600 #$i_time I_TIME
13601 #$i_systime I_SYS_TIME
13602 #$i_systimek I_SYS_TIME_KERNEL
13603 #ifdef I_TIME
13604 #   include <time.h>
13605 #endif
13606 #ifdef I_SYS_TIME
13607 #   ifdef I_SYS_TIME_KERNEL
13608 #       define KERNEL
13609 #   endif
13610 #   include <sys/time.h>
13611 #   ifdef I_SYS_TIME_KERNEL
13612 #       undef KERNEL
13613 #   endif
13614 #endif
13615 #$i_sysselct I_SYS_SELECT
13616 #ifdef I_SYS_SELECT
13617 #include <sys/select.h>
13618 #endif
13619 #$d_socket HAS_SOCKET
13620 #ifdef HAS_SOCKET
13621 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13622 #endif
13623 #include <stdio.h>
13624 $selecttype b;
13625 #define S sizeof(*(b))
13626 #define MINBITS 64
13627 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13628 #define NBITS  (NBYTES * 8)
13629 int main() {
13630     char s[NBYTES];
13631     struct timeval t;
13632     int i;
13633     FILE* fp;
13634     int fd;
13635
13636     fclose(stdin);
13637     fp = fopen("try.c", "r");
13638     if (fp == 0)
13639       exit(1);
13640     fd = fileno(fp);
13641     if (fd < 0)
13642       exit(2);
13643     b = ($selecttype)s;
13644     for (i = 0; i < NBITS; i++)
13645         FD_SET(i, b);
13646     t.tv_sec  = 0;
13647     t.tv_usec = 0;
13648     select(fd + 1, b, 0, 0, &t);
13649     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13650     printf("%d\n", i + 1);
13651     return 0;
13652 }
13653 EOCP
13654                 set try
13655                 if eval $compile_ok; then
13656                         selectminbits=`./try`
13657                         case "$selectminbits" in
13658                         '')     cat >&4 <<EOM
13659 Cannot figure out on how many bits at a time your select() operates.
13660 I'll play safe and guess it is 32 bits.
13661 EOM
13662                                 selectminbits=32
13663                                 bits="32 bits"
13664                                 ;;
13665                         1)      bits="1 bit" ;;
13666                         *)      bits="$selectminbits bits" ;;
13667                         esac
13668                         echo "Your select() operates on $bits at a time." >&4
13669                 else
13670                         rp='What is the minimum number of bits your select() operates on?'
13671                         case "$byteorder" in
13672                         1234|12345678)  dflt=32 ;;
13673                         *)              dflt=1  ;;
13674                         esac
13675                         . ./myread
13676                         val=$ans
13677                         selectminbits="$val"
13678                 fi
13679                 $rm -f try.* try
13680                 ;;
13681         *)      : no select, so pick a harmless default
13682                 selectminbits='32'
13683                 ;;
13684         esac
13685         ;;
13686 esac
13687
13688 : Trace out the files included by signal.h, then look for SIGxxx names.
13689 : Remove SIGARRAYSIZE used by HPUX.
13690 : Remove SIGSTKSIZE used by Linux.
13691 : Remove SIGSTKSZ used by Posix.
13692 : Remove SIGTYP void lines used by OS2.
13693 : Some cpps, like os390, dont give the file name anywhere
13694 if [ "X$fieldn" = X ]; then
13695         : Just make some guesses.  We check them later.
13696         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13697 else
13698         xxx=`echo '#include <signal.h>' |
13699         $cppstdin $cppminus $cppflags 2>/dev/null |
13700         $grep '^[       ]*#.*include' | 
13701         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13702 fi
13703 : Check this list of files to be sure we have parsed the cpp output ok.
13704 : This will also avoid potentially non-existent files, such 
13705 : as ../foo/bar.h
13706 xxxfiles=''
13707 for xx in $xxx /dev/null ; do
13708         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13709 done
13710 : If we have found no files, at least try signal.h
13711 case "$xxxfiles" in
13712 '')     xxxfiles=`./findhdr signal.h` ;;
13713 esac
13714 xxx=`awk '
13715 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13716         print substr($2, 4, 20)
13717 }
13718 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13719         print substr($3, 4, 20)
13720 }' $xxxfiles`
13721 : Append some common names just in case the awk scan failed.
13722 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13723 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13724 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13725 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13726 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13727
13728 : generate a few handy files for later
13729 $cat > signal.c <<'EOCP'
13730 #include <sys/types.h>
13731 #include <signal.h>
13732 #include <stdio.h>
13733 int main() {
13734
13735 /* Strange style to avoid deeply-nested #if/#else/#endif */
13736 #ifndef NSIG
13737 #  ifdef _NSIG
13738 #    define NSIG (_NSIG)
13739 #  endif
13740 #endif
13741
13742 #ifndef NSIG
13743 #  ifdef SIGMAX
13744 #    define NSIG (SIGMAX+1)
13745 #  endif
13746 #endif
13747
13748 #ifndef NSIG
13749 #  ifdef SIG_MAX
13750 #    define NSIG (SIG_MAX+1)
13751 #  endif
13752 #endif
13753
13754 #ifndef NSIG
13755 #  ifdef MAXSIG
13756 #    define NSIG (MAXSIG+1)
13757 #  endif
13758 #endif
13759
13760 #ifndef NSIG
13761 #  ifdef MAX_SIG
13762 #    define NSIG (MAX_SIG+1)
13763 #  endif
13764 #endif
13765
13766 #ifndef NSIG
13767 #  ifdef SIGARRAYSIZE
13768 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13769 #  endif
13770 #endif
13771
13772 #ifndef NSIG
13773 #  ifdef _sys_nsig
13774 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13775 #  endif
13776 #endif
13777
13778 /* Default to some arbitrary number that's big enough to get most
13779    of the common signals.
13780 */
13781 #ifndef NSIG
13782 #    define NSIG 50
13783 #endif
13784
13785 printf("NSIG %d\n", NSIG);
13786
13787 #ifndef JUST_NSIG
13788
13789 EOCP
13790
13791 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13792 {
13793         printf "#ifdef SIG"; printf $1; printf "\n"
13794         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13795         printf $1; printf ");\n"
13796         printf "#endif\n"
13797 }
13798 END {
13799         printf "#endif /* JUST_NSIG */\n";
13800         printf "exit(0);\n}\n";
13801 }
13802 ' >>signal.c
13803 $cat >signal.awk <<'EOP'
13804 BEGIN { ndups = 0 }
13805 $1 ~ /^NSIG$/ { nsig = $2 }
13806 ($1 !~ /^NSIG$/) && (NF == 2) {
13807     if ($2 > maxsig) { maxsig = $2 }
13808     if (sig_name[$2]) {
13809         dup_name[ndups] = $1
13810         dup_num[ndups] = $2
13811         ndups++ 
13812     }
13813     else {
13814         sig_name[$2] = $1
13815         sig_num[$2] = $2
13816     }
13817 }
13818 END { 
13819     if (nsig == 0) {
13820         nsig = maxsig + 1
13821     }
13822     printf("NSIG %d\n", nsig);
13823     for (n = 1; n < nsig; n++) {
13824         if (sig_name[n]) {
13825             printf("%s %d\n", sig_name[n], sig_num[n])
13826         }
13827         else {
13828             printf("NUM%d %d\n", n, n) 
13829         }
13830     }
13831     for (n = 0; n < ndups; n++) {
13832         printf("%s %d\n", dup_name[n], dup_num[n])
13833     }
13834 }
13835 EOP
13836 $cat >signal_cmd <<EOS
13837 $startsh
13838 if $test -s signal.lst; then
13839     echo "Using your existing signal.lst file"
13840         exit 0
13841 fi
13842 xxx="$xxx"
13843 EOS
13844 $cat >>signal_cmd <<'EOS'
13845
13846 set signal
13847 if eval $compile_ok; then
13848         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13849 else
13850         echo "(I can't seem be able to compile the whole test program)" >&4
13851         echo "(I'll try it in little pieces.)" >&4
13852         set signal -DJUST_NSIG
13853         if eval $compile_ok; then
13854                 ./signal$_exe > signal.nsg
13855                 $cat signal.nsg
13856         else
13857                 echo "I can't seem to figure out how many signals you have." >&4
13858                 echo "Guessing 50." >&4
13859                 echo 'NSIG 50' > signal.nsg
13860         fi
13861         : Now look at all the signal names, one at a time.
13862         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13863                 $cat > signal.c <<EOCP
13864 #include <sys/types.h>
13865 #include <signal.h>
13866 #include <stdio.h>
13867 int main() {
13868 printf("$xx %d\n", SIG${xx});
13869 return 0;
13870 }
13871 EOCP
13872                 set signal
13873                 if eval $compile; then
13874                         echo "SIG${xx} found."
13875                         ./signal$_exe  >> signal.ls1
13876                 else
13877                         echo "SIG${xx} NOT found."
13878                 fi
13879         done
13880         if $test -s signal.ls1; then
13881                 $cat signal.nsg signal.ls1 |
13882                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13883         fi
13884
13885 fi
13886 if $test -s signal.lst; then
13887         :
13888 else
13889         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13890         echo 'kill -l' >signal
13891         set X `csh -f <signal`
13892         $rm -f signal
13893         shift
13894         case $# in
13895         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13896         esac
13897         echo $@ | $tr ' ' $trnl | \
13898             $awk '{ printf "%s %d\n", $1, ++s; }
13899                   END { printf "NSIG %d\n", ++s }' >signal.lst
13900 fi
13901 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13902 EOS
13903 chmod a+x signal_cmd
13904 $eunicefix signal_cmd
13905
13906 : generate list of signal names
13907 echo " "
13908 case "$sig_name_init" in
13909 '') doinit=yes ;;
13910 *)  case "$sig_num_init" in
13911     ''|*,*) doinit=yes ;;
13912     esac ;;
13913 esac
13914 case "$doinit" in
13915 yes)
13916         echo "Generating a list of signal names and numbers..." >&4
13917         . ./signal_cmd
13918         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13919         sig_name=`$awk 'BEGIN { printf "ZERO " }
13920                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13921         sig_num=`$awk  'BEGIN { printf "0 " }
13922                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13923         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13924                              !/^NSIG/   { printf "\"%s\", ", $1 }
13925                              END        { printf "0\n" }' signal.lst`
13926         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13927                              !/^NSIG/   { printf "%d, ", $2}
13928                              END        { printf "0\n"}' signal.lst`
13929         ;;
13930 esac
13931 echo "The following $sig_count signals are available:"
13932 echo " "
13933 echo $sig_name | $awk \
13934 'BEGIN { linelen = 0 }
13935 {
13936         for (i = 1; i <= NF; i++) {
13937                 name = "SIG" $i " "
13938                 linelen = linelen + length(name)
13939                 if (linelen > 70) {
13940                         printf "\n"
13941                         linelen = length(name)
13942                 }
13943                 printf "%s", name
13944         }
13945         printf "\n"
13946 }'
13947 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13948
13949 echo " "
13950 case "$sizetype" in
13951 *_t) zzz="$sizetype"    ;;
13952 *)   zzz="filesize"     ;;
13953 esac
13954 echo "Checking the size of $zzz..." >&4 
13955 cat > try.c <<EOCP
13956 #include <sys/types.h>
13957 #include <stdio.h>
13958 int main() {
13959     printf("%d\n", (int)sizeof($sizetype));
13960     exit(0);
13961 }
13962 EOCP
13963 set try
13964 if eval $compile_ok; then
13965         yyy=`./try`
13966         case "$yyy" in
13967         '')     sizesize=4
13968                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13969                 ;;
13970         *)      sizesize=$yyy
13971                 echo "Your $zzz size is $sizesize bytes."
13972                 ;;
13973         esac
13974 else
13975         sizesize=4
13976         echo "(I can't compile the test program--guessing $sizesize.)" >&4
13977 fi
13978
13979
13980 : check for socklen_t
13981 echo " "
13982 echo "Checking to see if you have socklen_t..." >&4
13983 $cat >try.c <<EOCP
13984 #include <sys/types.h>
13985 #$d_socket HAS_SOCKET
13986 #ifdef HAS_SOCKET
13987 #include <sys/socket.h>
13988 #endif
13989 int main() { socklen_t x = 16; }
13990 EOCP
13991 set try
13992 if eval $compile; then
13993         val="$define"
13994         echo "You have socklen_t."
13995 else
13996         val="$undef"
13997         echo "You do not have socklen_t."
13998         case "$sizetype" in
13999         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14000         esac
14001 fi
14002 $rm -f try try.*
14003 set d_socklen_t
14004 eval $setvar
14005
14006 : check for type of the size argument to socket calls
14007 case "$d_socket" in
14008 "$define")
14009         $cat <<EOM
14010
14011 Checking to see what type is the last argument of accept().
14012 EOM
14013         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14014         yyy=''
14015         case "$d_socklen_t" in
14016         "$define") yyy="$yyy socklen_t"
14017         esac
14018         yyy="$yyy $sizetype int long unsigned"
14019         for xxx in $yyy; do
14020                 case "$socksizetype" in
14021                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14022                         if ./protochk "$try" $hdrs; then
14023                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14024                                 socksizetype="$xxx"
14025                         fi
14026                         ;;
14027                 esac
14028         done
14029 : In case none of those worked, prompt the user.
14030         case "$socksizetype" in
14031         '')     rp='What is the type for socket address structure sizes?'
14032                 dflt='int'
14033                 . ./myread
14034                 socksizetype=$ans
14035                 ;;
14036         esac
14037         ;;
14038 *)      : no sockets, so pick relatively harmless default
14039         socksizetype='int'
14040         ;;
14041 esac
14042
14043 : see what type is used for signed size_t
14044 set ssize_t ssizetype int stdio.h sys/types.h
14045 eval $typedef
14046 dflt="$ssizetype"
14047 $cat > ssize.c <<EOM
14048 #include <stdio.h>
14049 #include <sys/types.h>
14050 #define Size_t $sizetype
14051 #define SSize_t $dflt
14052 int main()
14053 {
14054         if (sizeof(Size_t) == sizeof(SSize_t))
14055                 printf("$dflt\n");
14056         else if (sizeof(Size_t) == sizeof(int))
14057                 printf("int\n");
14058         else 
14059                 printf("long\n");
14060         exit(0);
14061 }
14062 EOM
14063 echo " "
14064 set ssize
14065 if eval $compile_ok && ./ssize > /dev/null; then
14066         ssizetype=`./ssize`
14067         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14068 else
14069         $cat >&4 <<EOM
14070 Help! I can't compile and run the ssize_t test program: please enlighten me!
14071 (This is probably a misconfiguration in your system or libraries, and
14072 you really ought to fix it.  Still, I'll try anyway.)
14073
14074 I need a type that is the same size as $sizetype, but is guaranteed to
14075 be signed.  Common values are ssize_t, int and long.
14076
14077 EOM
14078         rp="What signed type is the same size as $sizetype?"
14079         . ./myread
14080         ssizetype="$ans"
14081 fi
14082 $rm -f ssize ssize.*
14083
14084 : see what type of char stdio uses.
14085 echo " "
14086 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14087         echo "Your stdio uses unsigned chars." >&4
14088         stdchar="unsigned char"
14089 else
14090         echo "Your stdio uses signed chars." >&4
14091         stdchar="char"
14092 fi
14093
14094 : see if time exists
14095 echo " "
14096 if test "X$d_time" = X -o X"$timetype" = X; then
14097     if set time val -f d_time; eval $csym; $val; then
14098                 echo 'time() found.' >&4
14099                 val="$define"
14100                 rp="What is the type returned by time() on this system?"
14101                 set time_t timetype long stdio.h sys/types.h
14102                 eval $typedef_ask
14103     else
14104                 echo 'time() not found, hope that will do.' >&4
14105                 val="$undef"
14106                 timetype='int';
14107     fi
14108     set d_time
14109     eval $setvar
14110 fi
14111
14112 : see what type uids are declared as in the kernel
14113 echo " "
14114 echo "Looking for the type for user ids returned by getuid()."
14115 set uid_t uidtype xxx stdio.h sys/types.h
14116 eval $typedef
14117 case "$uidtype" in
14118 xxx)
14119         xxx=`./findhdr sys/user.h`
14120         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14121         case $1 in
14122         unsigned) dflt="$1 $2" ;;
14123         *) dflt="$1" ;;
14124         esac
14125         ;;
14126 *) dflt="$uidtype";;
14127 esac
14128 case "$uidtype" in
14129 uid_t)  echo "uid_t found." ;;
14130 *)      rp="What is the type for user ids returned by getuid()?"
14131         . ./myread
14132         uidtype="$ans"
14133         ;;
14134 esac
14135
14136 echo " "
14137 case "$uidtype" in
14138 *_t) zzz="$uidtype"     ;;
14139 *)   zzz="uid"          ;;
14140 esac
14141 echo "Checking the size of $zzz..." >&4 
14142 cat > try.c <<EOCP
14143 #include <sys/types.h>
14144 #include <stdio.h>
14145 int main() {
14146     printf("%d\n", (int)sizeof($uidtype));
14147     exit(0);
14148 }
14149 EOCP
14150 set try
14151 if eval $compile_ok; then
14152         yyy=`./try`
14153         case "$yyy" in
14154         '')     uidsize=4
14155                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14156                 ;;
14157         *)      uidsize=$yyy
14158                 echo "Your $zzz is $uidsize bytes long."
14159                 ;;
14160         esac
14161 else
14162         uidsize=4
14163         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14164 fi
14165
14166 echo " "
14167 case "$uidtype" in
14168 *_t) zzz="$uidtype"     ;;
14169 *)   zzz="uid"          ;;
14170 esac
14171 echo "Checking the sign of $zzz..." >&4
14172 cat > try.c <<EOCP
14173 #include <sys/types.h>
14174 #include <stdio.h>
14175 int main() {
14176         $uidtype foo = -1;
14177         if (foo < 0)
14178                 printf("-1\n");
14179         else
14180                 printf("1\n");
14181 }
14182 EOCP
14183 set try
14184 if eval $compile; then
14185         yyy=`./try`
14186         case "$yyy" in
14187         '')     uidsign=1
14188                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14189                 ;;
14190         *)      uidsign=$yyy
14191                 case "$uidsign" in
14192                  1) echo "Your $zzz is unsigned." ;;
14193                 -1) echo "Your $zzz is signed."   ;;
14194                 esac
14195                 ;;
14196         esac
14197 else
14198         uidsign=1
14199         echo "(I can't compile the test program--guessing unsigned.)" >&4
14200 fi
14201
14202
14203
14204 echo " "
14205 $echo "Checking the format string to be used for uids..." >&4
14206
14207 case "$uidsign" in
14208 -1)     if $test X"$uidsize" = X"$ivsize"; then
14209                 uidformat="$ivdformat"
14210         else
14211                 if $test X"$uidsize" = X"$longsize"; then
14212                         uidformat='"ld"'
14213                 else
14214                         if $test X"$uidsize" = X"$intsize"; then
14215                                 uidformat='"d"'
14216                         else
14217                                 if $test X"$uidsize" = X"$shortsize"; then
14218                                         uidformat='"hd"'
14219                                 fi
14220                         fi
14221                 fi
14222         fi
14223         ;;
14224 *)      if $test X"$uidsize" = X"$uvsize"; then
14225                 uidformat="$uvuformat"
14226         else
14227                 if $test X"$uidsize" = X"$longsize"; then
14228                         uidformat='"lu"'
14229                 else
14230                         if $test X"$uidsize" = X"$intsize"; then
14231                                 uidformat='"u"'
14232                         else
14233                                 if $test X"$uidsize" = X"$shortsize"; then
14234                                         uidformat='"hu"'
14235                                 fi
14236                         fi
14237                 fi
14238         fi
14239         ;;
14240 esac
14241
14242 : see if dbm.h is available
14243 : see if dbmclose exists
14244 set dbmclose d_dbmclose
14245 eval $inlibc
14246
14247 case "$d_dbmclose" in
14248 $define)
14249         set dbm.h i_dbm
14250         eval $inhdr
14251         case "$i_dbm" in
14252         $define)
14253                 val="$undef"
14254                 set i_rpcsvcdbm
14255                 eval $setvar
14256                 ;;
14257         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14258                 eval $inhdr
14259                 ;;
14260         esac
14261         ;;
14262 *)      echo "We won't be including <dbm.h>"
14263         val="$undef"
14264         set i_dbm
14265         eval $setvar
14266         val="$undef"
14267         set i_rpcsvcdbm
14268         eval $setvar
14269         ;;
14270 esac
14271
14272 : see if this is a sys/file.h system
14273 val=''
14274 set sys/file.h val
14275 eval $inhdr
14276
14277 : do we need to include sys/file.h ?
14278 case "$val" in
14279 "$define")
14280         echo " "
14281         if $h_sysfile; then
14282                 val="$define"
14283                 echo "We'll be including <sys/file.h>." >&4
14284         else
14285                 val="$undef"
14286                 echo "We won't be including <sys/file.h>." >&4
14287         fi
14288         ;;
14289 *)
14290         h_sysfile=false
14291         ;;
14292 esac
14293 set i_sysfile
14294 eval $setvar
14295
14296 : see if fcntl.h is there
14297 val=''
14298 set fcntl.h val
14299 eval $inhdr
14300
14301 : see if we can include fcntl.h
14302 case "$val" in
14303 "$define")
14304         echo " "
14305         if $h_fcntl; then
14306                 val="$define"
14307                 echo "We'll be including <fcntl.h>." >&4
14308         else
14309                 val="$undef"
14310                 if $h_sysfile; then
14311         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14312                 else
14313                         echo "We won't be including <fcntl.h>." >&4
14314                 fi
14315         fi
14316         ;;
14317 *)
14318         h_fcntl=false
14319         val="$undef"
14320         ;;
14321 esac
14322 set i_fcntl
14323 eval $setvar
14324
14325 : see if this is a iconv.h system
14326 set iconv.h i_iconv
14327 eval $inhdr
14328
14329 : see if this is a ieeefp.h system
14330 set ieeefp.h i_ieeefp
14331 eval $inhdr
14332
14333 : see if locale.h is available
14334 set locale.h i_locale
14335 eval $inhdr
14336
14337 : see if mach cthreads are available
14338 if test "X$usethreads" = "X$define"; then
14339         set mach/cthreads.h i_machcthr
14340         eval $inhdr
14341 else
14342         i_machcthr="$undef"
14343 fi
14344
14345
14346
14347 : see if this is a math.h system
14348 set math.h i_math
14349 eval $inhdr
14350
14351 : see if this is a mntent.h system
14352 set mntent.h i_mntent
14353 eval $inhdr
14354
14355 : see if ndbm.h is available
14356 set ndbm.h t_ndbm
14357 eval $inhdr
14358 case "$t_ndbm" in
14359 $define)
14360         : see if dbm_open exists
14361         set dbm_open d_dbm_open
14362         eval $inlibc
14363         case "$d_dbm_open" in
14364         $undef)
14365                 t_ndbm="$undef"
14366                 echo "We won't be including <ndbm.h>"
14367                 ;;
14368         esac
14369         ;;
14370 esac
14371 val="$t_ndbm"
14372 set i_ndbm
14373 eval $setvar
14374
14375 : see if net/errno.h is available
14376 val=''
14377 set net/errno.h val
14378 eval $inhdr
14379
14380 : Unfortunately, it causes problems on some systems.  Arrgh.
14381 case "$val" in
14382 $define)
14383         cat > try.c <<'EOM'
14384 #include <stdio.h>
14385 #include <errno.h>
14386 #include <net/errno.h>
14387 int func()
14388 {
14389         return ENOTSOCK;
14390 }
14391 EOM
14392         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14393                 echo "We'll be including <net/errno.h>." >&4
14394         else
14395                 echo "We won't be including <net/errno.h>." >&4
14396                 val="$undef"
14397         fi
14398         $rm -f try.* try
14399         ;;
14400 esac
14401 set i_neterrno
14402 eval $setvar
14403
14404 : see if netinet/tcp.h is available
14405 set netinet/tcp.h i_netinettcp
14406 eval $inhdr
14407
14408 : see if this is a poll.h system
14409 set poll.h i_poll
14410 eval $inhdr
14411
14412 : see if this is a prot.h system
14413 set prot.h i_prot
14414 eval $inhdr
14415
14416 echo " "
14417 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14418 $cat <<'EOSH' > Cppsym.know
14419 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14420 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14421 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14422 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14423 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14424 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14425 bull c cadmus clipper CMU COFF COMPILER_VERSION
14426 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14427 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14428 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14429 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14430 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14431 H3050R H3050RX hbullx20 hcx host_mips
14432 hp200 hp300 hp700 HP700 hp800 hp9000
14433 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14434 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14435 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14436 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14437 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14438 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14439 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14440 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14441 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14442 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14443 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14444 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14445 MATH_HAS_NO_SIDE_EFFECTS
14446 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14447 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14448 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14449 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14450 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14451 NetBSD news1500 news1700 news1800 news1900 news3700
14452 news700 news800 news900 NeXT NLS ns16000 ns32000
14453 ns32016 ns32332 ns32k nsc32000
14454 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14455 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14456 pc532 pdp11 PGC PIC plexus PORTAR posix
14457 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14458 POSIX_C_SOURCE POSIX_SOURCE POWER
14459 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14460 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14461 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14462 sony sony_news sonyrisc sparc sparclite spectrum
14463 stardent stdc STDC_EXT stratos sun sun3 sun386
14464 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14465 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14466 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14467 sysV68 sysV88 Tek4132 Tek4300 titan
14468 tower tower32 tower32_200 tower32_600 tower32_700
14469 tower32_800 tower32_850 tss
14470 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14471 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14472 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14473 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14474 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14475 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14476 z8000
14477 EOSH
14478 # Maybe put other stuff here too.
14479 cat <<EOSH >>Cppsym.know
14480 $osname
14481 EOSH
14482 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14483 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14484 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14485 $rm -f Cppsym.a Cppsym.b
14486 cat <<EOSH > Cppsym
14487 $startsh
14488 if $test \$# -gt 0; then
14489     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14490     if $test -s Cppsym.got; then
14491         $rm -f Cppsym.got
14492         exit 0
14493     fi
14494     $rm -f Cppsym.got
14495     exit 1
14496 else
14497     $tr " " "$trnl" | ./Cppsym.try
14498     exit 0
14499 fi
14500 EOSH
14501 chmod +x Cppsym
14502 $eunicefix Cppsym
14503 cat <<EOSH > Cppsym.try
14504 $startsh
14505 cat <<'EOCP' > try.c
14506 #include <stdio.h>
14507 int main() {
14508 EOCP
14509 $awk \\
14510 EOSH
14511 cat <<'EOSH' >> Cppsym.try
14512 'length($1) > 0 {
14513     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
14514     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
14515     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
14516     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
14517 }'       >> try.c
14518 echo '}' >> try.c
14519 EOSH
14520 cat <<EOSH >> Cppsym.try
14521 ccflags="$ccflags"
14522 case "$osname-$gccversion" in
14523 irix-) ccflags="\$ccflags -woff 1178" ;;
14524 esac
14525 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14526 EOSH
14527 chmod +x Cppsym.try
14528 $eunicefix Cppsym.try
14529 ./Cppsym < Cppsym.know > Cppsym.true
14530 : now check the C compiler for additional symbols
14531 postprocess_cc_v=''
14532 case "$osname" in
14533 aix) postprocess_cc_v="|$tr , ' '" ;;
14534 esac
14535 $cat >ccsym <<EOS
14536 $startsh
14537 $cat >tmp.c <<EOF
14538 extern int foo;
14539 EOF
14540 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14541 do
14542         case "\$i" in
14543         -D*) echo "\$i" | $sed 's/^-D//';;
14544         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14545         esac
14546 done
14547 $rm -f try.c
14548 EOS
14549 postprocess_cc_v=''
14550 chmod +x ccsym
14551 $eunicefix ccsym
14552 ./ccsym > ccsym1.raw
14553 if $test -s ccsym1.raw; then
14554        $sort ccsym1.raw | $uniq >ccsym.raw
14555 else
14556        mv ccsym1.raw ccsym.raw
14557 fi
14558
14559 $awk '/\=/ { print $0; next }
14560         { print $0"=1" }' ccsym.raw >ccsym.list
14561 $awk '/\=/ { print $0; next }
14562         { print $0"=1" }' Cppsym.true >ccsym.true
14563 $comm -13 ccsym.true ccsym.list >ccsym.own
14564 $comm -12 ccsym.true ccsym.list >ccsym.com
14565 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14566 also=''
14567 if $test -z ccsym.raw; then
14568         echo "Your C compiler doesn't seem to define any symbols!" >&4
14569         echo " "
14570         echo "However, your C preprocessor defines the following symbols:"
14571         $cat Cppsym.true
14572         ccsymbols=''
14573         cppsymbols=`$cat Cppsym.true`
14574         cppsymbols=`echo $cppsymbols`
14575         cppccsymbols="$cppsymbols"
14576 else
14577         if $test -s ccsym.com; then
14578                 echo "Your C compiler and pre-processor define these symbols:"
14579                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14580                 also='also '
14581                 symbols='ones'
14582                 cppccsymbols=`$cat ccsym.com`
14583                 cppccsymbols=`echo $cppccsymbols`
14584                 $test "$silent" || sleep 1
14585         fi
14586         if $test -s ccsym.cpp; then
14587                 $test "$also" && echo " "
14588                 echo "Your C pre-processor ${also}defines the following symbols:"
14589                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14590                 also='further '
14591                 cppsymbols=`$cat ccsym.cpp`
14592                 cppsymbols=`echo $cppsymbols`
14593                 $test "$silent" || sleep 1
14594         fi
14595         if $test -s ccsym.own; then
14596                 $test "$also" && echo " "
14597                 echo "Your C compiler ${also}defines the following cpp symbols:"
14598                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14599                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14600                 ccsymbols=`$cat ccsym.own`
14601                 ccsymbols=`echo $ccsymbols`
14602                 $test "$silent" || sleep 1
14603         fi
14604 fi
14605 $rm -f ccsym*
14606
14607 : see if this is a termio system
14608 val="$undef"
14609 val2="$undef"
14610 val3="$undef"
14611 if $test `./findhdr termios.h`; then
14612         set tcsetattr i_termios
14613         eval $inlibc
14614         val3="$i_termios"
14615 fi
14616 echo " "
14617 case "$val3" in
14618 "$define") echo "You have POSIX termios.h... good!" >&4;;
14619 *) if ./Cppsym pyr; then
14620                 case "`/bin/universe`" in
14621                 ucb) if $test `./findhdr sgtty.h`; then
14622                                 val2="$define"
14623                                 echo "<sgtty.h> found." >&4
14624                         else
14625                                 echo "System is pyramid with BSD universe."
14626                                 echo "<sgtty.h> not found--you could have problems." >&4
14627                         fi;;
14628                 *) if $test `./findhdr termio.h`; then
14629                                 val="$define"
14630                                 echo "<termio.h> found." >&4
14631                         else
14632                                 echo "System is pyramid with USG universe."
14633                                 echo "<termio.h> not found--you could have problems." >&4
14634                         fi;;
14635                 esac
14636         elif ./usg; then
14637                 if $test `./findhdr termio.h`; then
14638                         echo "<termio.h> found." >&4
14639                         val="$define"
14640                 elif $test `./findhdr sgtty.h`; then
14641                         echo "<sgtty.h> found." >&4
14642                         val2="$define"
14643                 else
14644 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14645                 fi
14646         else
14647                 if $test `./findhdr sgtty.h`; then
14648                         echo "<sgtty.h> found." >&4
14649                         val2="$define"
14650                 elif $test `./findhdr termio.h`; then
14651                         echo "<termio.h> found." >&4
14652                         val="$define"
14653                 else
14654 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14655                 fi
14656         fi;;
14657 esac
14658 set i_termio; eval $setvar
14659 val=$val2; set i_sgtty; eval $setvar
14660 val=$val3; set i_termios; eval $setvar
14661
14662 : see if this is a shadow.h system
14663 set shadow.h i_shadow
14664 eval $inhdr
14665
14666 : see if this is a socks.h system
14667 set socks.h i_socks
14668 eval $inhdr
14669
14670 : see if stdarg is available
14671 echo " "
14672 if $test `./findhdr stdarg.h`; then
14673         echo "<stdarg.h> found." >&4
14674         valstd="$define"
14675 else
14676         echo "<stdarg.h> NOT found." >&4
14677         valstd="$undef"
14678 fi
14679
14680 : see if varags is available
14681 echo " "
14682 if $test `./findhdr varargs.h`; then
14683         echo "<varargs.h> found." >&4
14684 else
14685         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14686 fi
14687
14688 : set up the varargs testing programs
14689 $cat > varargs.c <<EOP
14690 #ifdef I_STDARG
14691 #include <stdarg.h>
14692 #endif
14693 #ifdef I_VARARGS
14694 #include <varargs.h>
14695 #endif
14696
14697 #ifdef I_STDARG
14698 int f(char *p, ...)
14699 #else
14700 int f(va_alist)
14701 va_dcl
14702 #endif
14703 {
14704         va_list ap;
14705 #ifndef I_STDARG
14706         char *p;
14707 #endif
14708 #ifdef I_STDARG
14709         va_start(ap,p);
14710 #else
14711         va_start(ap);
14712         p = va_arg(ap, char *);
14713 #endif
14714         va_end(ap);
14715 }
14716 EOP
14717 $cat > varargs <<EOP
14718 $startsh
14719 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14720         echo "true"
14721 else
14722         echo "false"
14723 fi
14724 $rm -f varargs$_o
14725 EOP
14726 chmod +x varargs
14727
14728 : now check which varargs header should be included
14729 echo " "
14730 i_varhdr=''
14731 case "$valstd" in
14732 "$define")
14733         if `./varargs I_STDARG`; then
14734                 val='stdarg.h'
14735         elif `./varargs I_VARARGS`; then
14736                 val='varargs.h'
14737         fi
14738         ;;
14739 *)
14740         if `./varargs I_VARARGS`; then
14741                 val='varargs.h'
14742         fi
14743         ;;
14744 esac
14745 case "$val" in
14746 '')
14747 echo "I could not find the definition for va_dcl... You have problems..." >&4
14748         val="$undef"; set i_stdarg; eval $setvar
14749         val="$undef"; set i_varargs; eval $setvar
14750         ;;
14751 *) 
14752         set i_varhdr
14753         eval $setvar
14754         case "$i_varhdr" in
14755         stdarg.h)
14756                 val="$define"; set i_stdarg; eval $setvar
14757                 val="$undef"; set i_varargs; eval $setvar
14758                 ;;
14759         varargs.h)
14760                 val="$undef"; set i_stdarg; eval $setvar
14761                 val="$define"; set i_varargs; eval $setvar
14762                 ;;
14763         esac
14764         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14765 esac
14766 $rm -f varargs*
14767
14768 : see if stddef is available
14769 set stddef.h i_stddef
14770 eval $inhdr
14771
14772 : see if this is a sunmath.h system
14773 set sunmath.h i_sunmath
14774 eval $inhdr
14775
14776 : see if sys/access.h is available
14777 set sys/access.h i_sysaccess
14778 eval $inhdr
14779
14780 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14781 set sys/filio.h i_sysfilio
14782 eval $inhdr
14783 echo " "
14784 if $test `./findhdr sys/ioctl.h`; then
14785         val="$define"
14786         echo '<sys/ioctl.h> found.' >&4
14787 else
14788         val="$undef"
14789         if $test $i_sysfilio = "$define"; then
14790             echo '<sys/ioctl.h> NOT found.' >&4
14791         else
14792                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14793                 $test $i_termio = "$define" && xxx="termio.h"
14794                 $test $i_termios = "$define" && xxx="termios.h"
14795 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14796         fi
14797 fi
14798 set i_sysioctl
14799 eval $setvar
14800
14801
14802 : see if this is a syslog.h system
14803 set syslog.h i_syslog
14804 eval $inhdr
14805
14806
14807 : see if this is a sys/mode.h system
14808 set sys/mode.h i_sysmode
14809 eval $inhdr
14810
14811 : see if sys/resource.h has to be included
14812 set sys/resource.h i_sysresrc
14813 eval $inhdr
14814
14815 : see if sys/security.h is available
14816 set sys/security.h i_syssecrt
14817 eval $inhdr
14818
14819 : see if this is a sys/statvfs.h system
14820 set sys/statvfs.h i_sysstatvfs
14821 eval $inhdr
14822
14823 : see if this is a sys/uio.h system
14824 set sys/uio.h i_sysuio
14825 eval $inhdr
14826
14827 : see if this is a sys/un.h system
14828 set sys/un.h i_sysun
14829 eval $inhdr
14830
14831
14832 : see if this is a sys/utsname.h system
14833 set sys/utsname.h i_sysutsname
14834 eval $inhdr
14835
14836 : see if this is a syswait system
14837 set sys/wait.h i_syswait
14838 eval $inhdr
14839
14840 : see if this is a ustat.h system
14841 set ustat.h i_ustat
14842 eval $inhdr
14843
14844 : see if this is an utime system
14845 set utime.h i_utime
14846 eval $inhdr
14847
14848 : see if this is a values.h system
14849 set values.h i_values
14850 eval $inhdr
14851
14852 : see if this is a vfork system
14853 case "$d_vfork" in
14854 "$define")
14855         set vfork.h i_vfork
14856         eval $inhdr
14857         ;;
14858 *)
14859         i_vfork="$undef"
14860         ;;
14861 esac
14862
14863 : see if gdbm.h is available
14864 set gdbm.h t_gdbm
14865 eval $inhdr
14866 case "$t_gdbm" in
14867 $define)
14868         : see if gdbm_open exists
14869         set gdbm_open d_gdbm_open
14870         eval $inlibc
14871         case "$d_gdbm_open" in
14872         $undef)
14873                 t_gdbm="$undef"
14874                 echo "We won't be including <gdbm.h>"
14875                 ;;
14876         esac
14877         ;;
14878 esac
14879 val="$t_gdbm"
14880 set i_gdbm
14881 eval $setvar
14882
14883 echo " "
14884 echo "Looking for extensions..." >&4
14885 : If we are using the old config.sh, known_extensions may contain
14886 : old or inaccurate or duplicate values.
14887 known_extensions=''
14888 nonxs_extensions=''
14889 : We do not use find because it might not be available.
14890 : We do not just use MANIFEST because the user may have dropped
14891 : some additional extensions into the source tree and expect them
14892 : to be built.
14893
14894 : Function to recursively find available extensions, ignoring DynaLoader
14895 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14896 find_extensions='
14897     for xxx in *; do
14898        case "$xxx" in
14899            DynaLoader|dynaload) ;;
14900            *)
14901            if $test -f $xxx/$xxx.xs; then
14902                known_extensions="$known_extensions $1$xxx";
14903            elif $test -f $xxx/Makefile.PL; then
14904                nonxs_extensions="$nonxs_extensions $1$xxx";
14905            else
14906                if $test -d $xxx -a $# -lt 10; then
14907                    set $1$xxx/ $*;
14908                    cd $xxx;
14909                    eval $find_extensions;
14910                    cd ..;
14911                    shift;
14912                fi;
14913            fi
14914            ;;
14915        esac;
14916     done'
14917 tdir=`pwd`
14918 cd $rsrc/ext
14919 set X
14920 shift
14921 eval $find_extensions
14922 set X $nonxs_extensions
14923 shift
14924 nonxs_extensions="$*"
14925 set X $known_extensions
14926 shift
14927 known_extensions="$*"
14928 cd $tdir
14929
14930 : Now see which are supported on this system.
14931 avail_ext=''
14932 for xxx in $known_extensions ; do
14933         case "$xxx" in
14934         DB_File|db_file)
14935                 case "$i_db" in
14936                 $define) avail_ext="$avail_ext $xxx" ;;
14937                 esac
14938                 ;;
14939         GDBM_File|gdbm_fil)
14940                 case "$i_gdbm" in 
14941                 $define) avail_ext="$avail_ext $xxx" ;;
14942                 esac
14943                 ;;
14944         NDBM_File|ndbm_fil)
14945                 case "$i_ndbm" in
14946                 $define)
14947                     case "$osname-$use64bitint" in
14948                     hpux-define)
14949                         case "$libs" in
14950                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14951                         esac
14952                         ;;
14953                     *) avail_ext="$avail_ext $xxx" ;;
14954                     esac
14955                     ;;
14956                 esac
14957                 ;;
14958         ODBM_File|odbm_fil) 
14959                 case "${i_dbm}${i_rpcsvcdbm}" in
14960                 *"${define}"*)
14961                     case "$osname-$use64bitint" in
14962                     hpux-define)
14963                         case "$libs" in
14964                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14965                         esac
14966                         ;;
14967                     *) avail_ext="$avail_ext $xxx" ;;
14968                     esac
14969                     ;;
14970                 esac
14971                 ;;
14972         POSIX|posix)
14973                 case "$useposix" in
14974                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14975                 esac
14976                 ;;
14977         Opcode|opcode)
14978                 case "$useopcode" in
14979                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14980                 esac
14981                 ;;
14982         Socket|socket)
14983                 case "$d_socket" in 
14984                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14985                 esac
14986                 ;;
14987         Thread|thread)
14988                 case "$usethreads" in 
14989                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14990                 esac
14991                 ;;
14992         IPC/SysV|ipc/sysv)
14993                 : XXX Do we need a useipcsysv variable here
14994                 case "${d_msg}${d_sem}${d_shm}" in 
14995                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14996                 esac
14997                 ;;
14998         *)      avail_ext="$avail_ext $xxx"
14999                 ;;
15000         esac
15001 done
15002
15003 set X $avail_ext
15004 shift
15005 avail_ext="$*"
15006
15007 : Now see which nonxs extensions are supported on this system.
15008 : For now assume all are.
15009 nonxs_ext=''
15010 for xxx in $nonxs_extensions ; do
15011         case "$xxx" in
15012         *)      nonxs_ext="$nonxs_ext $xxx"
15013                 ;;
15014         esac
15015 done
15016
15017 set X $nonxs_ext
15018 shift
15019 nonxs_ext="$*"
15020
15021 case $usedl in
15022 $define)
15023         $cat <<EOM
15024 A number of extensions are supplied with $package.  You may choose to
15025 compile these extensions for dynamic loading (the default), compile
15026 them into the $package executable (static loading), or not include
15027 them at all.  Answer "none" to include no extensions.
15028 Note that DynaLoader is always built and need not be mentioned here.
15029
15030 EOM
15031         case "$dynamic_ext" in
15032         '') dflt="$avail_ext" ;;
15033         *)      dflt="$dynamic_ext"
15034                 # Perhaps we are reusing an old out-of-date config.sh.
15035                 case "$hint" in
15036                 previous)
15037                         if test X"$dynamic_ext" != X"$avail_ext"; then
15038                                 $cat <<EOM
15039 NOTICE:  Your previous config.sh list may be incorrect. 
15040 The extensions now available to you are 
15041         ${avail_ext}
15042 but the default list from your previous config.sh is
15043         ${dynamic_ext} 
15044
15045 EOM
15046                         fi
15047                         ;;
15048                 esac
15049                 ;;
15050         esac
15051         case "$dflt" in
15052         '')     dflt=none;;
15053         esac
15054         rp="What extensions do you wish to load dynamically?"
15055         . ./myread
15056         case "$ans" in
15057         none) dynamic_ext=' ' ;;
15058         *) dynamic_ext="$ans" ;;
15059         esac
15060
15061         case "$static_ext" in
15062         '')
15063                 : Exclude those already listed in dynamic linking
15064                 dflt=''
15065                 for xxx in $avail_ext; do
15066                         case " $dynamic_ext " in
15067                         *" $xxx "*) ;;
15068                         *) dflt="$dflt $xxx" ;;
15069                         esac
15070                 done
15071                 set X $dflt
15072                 shift
15073                 dflt="$*"
15074                 ;;
15075         *)  dflt="$static_ext" 
15076                 ;;
15077         esac
15078
15079         case "$dflt" in
15080         '')     dflt=none;;
15081         esac
15082         rp="What extensions do you wish to load statically?"
15083         . ./myread
15084         case "$ans" in
15085         none) static_ext=' ' ;;
15086         *) static_ext="$ans" ;;
15087         esac
15088         ;;
15089 *)
15090         $cat <<EOM
15091 A number of extensions are supplied with $package.  Answer "none" 
15092 to include no extensions. 
15093 Note that DynaLoader is always built and need not be mentioned here.
15094
15095 EOM
15096         case "$static_ext" in
15097         '') dflt="$avail_ext" ;;
15098         *)      dflt="$static_ext"
15099                 # Perhaps we are reusing an old out-of-date config.sh.
15100                 case "$hint" in
15101                 previous)
15102                         if test X"$static_ext" != X"$avail_ext"; then
15103                                 $cat <<EOM
15104 NOTICE:  Your previous config.sh list may be incorrect. 
15105 The extensions now available to you are 
15106         ${avail_ext}
15107 but the default list from your previous config.sh is
15108         ${static_ext} 
15109
15110 EOM
15111                         fi
15112                         ;;
15113                 esac
15114                 ;;
15115         esac
15116         : Exclude those that are not xs extensions
15117         case "$dflt" in
15118         '')     dflt=none;;
15119         esac
15120         rp="What extensions do you wish to include?"
15121         . ./myread
15122         case "$ans" in
15123         none) static_ext=' ' ;;
15124         *) static_ext="$ans" ;;
15125         esac
15126         ;;
15127 esac
15128
15129 set X $dynamic_ext $static_ext $nonxs_ext
15130 shift
15131 extensions="$*"
15132
15133 : Remove build directory name from cppstdin so it can be used from
15134 : either the present location or the final installed location.
15135 echo " "
15136 : Get out of the UU directory to get correct path name.
15137 cd ..
15138 case "$cppstdin" in
15139 `pwd`/cppstdin)
15140         echo "Stripping down cppstdin path name"
15141         cppstdin=cppstdin
15142         ;;
15143 esac
15144 cd UU
15145
15146 : end of configuration questions
15147 echo " "
15148 echo "End of configuration questions."
15149 echo " "
15150
15151 : back to where it started
15152 if test -d ../UU; then
15153         cd ..
15154 fi
15155
15156 : configuration may be patched via a 'config.over' file
15157 if $test -f config.over; then
15158         echo " "
15159         dflt=y
15160         rp='I see a config.over file.  Do you wish to load it?'
15161         . UU/myread
15162         case "$ans" in
15163         n*) echo "OK, I'll ignore it.";;
15164         *)      . ./config.over
15165                 echo "Configuration override changes have been loaded."
15166                 ;;
15167         esac
15168 fi
15169
15170 : in case they want portability, strip down executable paths
15171 case "$d_portable" in
15172 "$define")
15173         echo " "
15174         echo "Stripping down executable paths..." >&4
15175         for file in $loclist $trylist; do
15176                 eval temp=\$$file
15177                 eval $file=`basename $temp`
15178         done
15179         ;;
15180 esac
15181
15182 : create config.sh file
15183 echo " "
15184 echo "Creating config.sh..." >&4
15185 $spitshell <<EOT >config.sh
15186 $startsh
15187 #
15188 # This file was produced by running the Configure script. It holds all the
15189 # definitions figured out by Configure. Should you modify one of these values,
15190 # do not forget to propagate your changes by running "Configure -der". You may
15191 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15192 #
15193
15194 # Package name      : $package
15195 # Source directory  : $src
15196 # Configuration time: $cf_time
15197 # Configured by     : $cf_by
15198 # Target system     : $myuname
15199
15200 Author='$Author'
15201 Date='$Date'
15202 Header='$Header'
15203 Id='$Id'
15204 Locker='$Locker'
15205 Log='$Log'
15206 Mcc='$Mcc'
15207 RCSfile='$RCSfile'
15208 Revision='$Revision'
15209 Source='$Source'
15210 State='$State'
15211 _a='$_a'
15212 _exe='$_exe'
15213 _o='$_o'
15214 afs='$afs'
15215 alignbytes='$alignbytes'
15216 ansi2knr='$ansi2knr'
15217 aphostname='$aphostname'
15218 api_revision='$api_revision'
15219 api_subversion='$api_subversion'
15220 api_version='$api_version'
15221 api_versionstring='$api_versionstring'
15222 ar='$ar'
15223 archlib='$archlib'
15224 archlibexp='$archlibexp'
15225 archname64='$archname64'
15226 archname='$archname'
15227 archobjs='$archobjs'
15228 awk='$awk'
15229 baserev='$baserev'
15230 bash='$bash'
15231 bin='$bin'
15232 bincompat5005='$bincompat5005'
15233 binexp='$binexp'
15234 bison='$bison'
15235 byacc='$byacc'
15236 byteorder='$byteorder'
15237 c='$c'
15238 castflags='$castflags'
15239 cat='$cat'
15240 cc='$cc'
15241 cccdlflags='$cccdlflags'
15242 ccdlflags='$ccdlflags'
15243 ccflags='$ccflags'
15244 ccsymbols='$ccsymbols'
15245 cf_by='$cf_by'
15246 cf_email='$cf_email'
15247 cf_time='$cf_time'
15248 charsize='$charsize'
15249 chgrp='$chgrp'
15250 chmod='$chmod'
15251 chown='$chown'
15252 clocktype='$clocktype'
15253 comm='$comm'
15254 compress='$compress'
15255 contains='$contains'
15256 cp='$cp'
15257 cpio='$cpio'
15258 cpp='$cpp'
15259 cpp_stuff='$cpp_stuff'
15260 cppccsymbols='$cppccsymbols'
15261 cppflags='$cppflags'
15262 cpplast='$cpplast'
15263 cppminus='$cppminus'
15264 cpprun='$cpprun'
15265 cppstdin='$cppstdin'
15266 cppsymbols='$cppsymbols'
15267 crosscompile='$crosscompile'
15268 cryptlib='$cryptlib'
15269 csh='$csh'
15270 d_Gconvert='$d_Gconvert'
15271 d_PRIEldbl='$d_PRIEldbl'
15272 d_PRIFldbl='$d_PRIFldbl'
15273 d_PRIGldbl='$d_PRIGldbl'
15274 d_PRIX64='$d_PRIX64'
15275 d_PRId64='$d_PRId64'
15276 d_PRIeldbl='$d_PRIeldbl'
15277 d_PRIfldbl='$d_PRIfldbl'
15278 d_PRIgldbl='$d_PRIgldbl'
15279 d_PRIi64='$d_PRIi64'
15280 d_PRIo64='$d_PRIo64'
15281 d_PRIu64='$d_PRIu64'
15282 d_PRIx64='$d_PRIx64'
15283 d_access='$d_access'
15284 d_accessx='$d_accessx'
15285 d_alarm='$d_alarm'
15286 d_archlib='$d_archlib'
15287 d_atolf='$d_atolf'
15288 d_atoll='$d_atoll'
15289 d_attribut='$d_attribut'
15290 d_bcmp='$d_bcmp'
15291 d_bcopy='$d_bcopy'
15292 d_bincompat5005='$d_bincompat5005'
15293 d_bsd='$d_bsd'
15294 d_bsdgetpgrp='$d_bsdgetpgrp'
15295 d_bsdsetpgrp='$d_bsdsetpgrp'
15296 d_bzero='$d_bzero'
15297 d_casti32='$d_casti32'
15298 d_castneg='$d_castneg'
15299 d_charvspr='$d_charvspr'
15300 d_chown='$d_chown'
15301 d_chroot='$d_chroot'
15302 d_chsize='$d_chsize'
15303 d_closedir='$d_closedir'
15304 d_const='$d_const'
15305 d_crypt='$d_crypt'
15306 d_csh='$d_csh'
15307 d_cuserid='$d_cuserid'
15308 d_dbl_dig='$d_dbl_dig'
15309 d_difftime='$d_difftime'
15310 d_dirnamlen='$d_dirnamlen'
15311 d_dlerror='$d_dlerror'
15312 d_dlopen='$d_dlopen'
15313 d_dlsymun='$d_dlsymun'
15314 d_dosuid='$d_dosuid'
15315 d_drand48proto='$d_drand48proto'
15316 d_dup2='$d_dup2'
15317 d_eaccess='$d_eaccess'
15318 d_endgrent='$d_endgrent'
15319 d_endhent='$d_endhent'
15320 d_endnent='$d_endnent'
15321 d_endpent='$d_endpent'
15322 d_endpwent='$d_endpwent'
15323 d_endsent='$d_endsent'
15324 d_eofnblk='$d_eofnblk'
15325 d_eunice='$d_eunice'
15326 d_fchmod='$d_fchmod'
15327 d_fchown='$d_fchown'
15328 d_fcntl='$d_fcntl'
15329 d_fd_macros='$d_fd_macros'
15330 d_fd_set='$d_fd_set'
15331 d_fds_bits='$d_fds_bits'
15332 d_fgetpos='$d_fgetpos'
15333 d_flexfnam='$d_flexfnam'
15334 d_flock='$d_flock'
15335 d_fork='$d_fork'
15336 d_fpathconf='$d_fpathconf'
15337 d_fpos64_t='$d_fpos64_t'
15338 d_frexpl='$d_frexpl'
15339 d_fs_data_s='$d_fs_data_s'
15340 d_fseeko='$d_fseeko'
15341 d_fsetpos='$d_fsetpos'
15342 d_fstatfs='$d_fstatfs'
15343 d_fstatvfs='$d_fstatvfs'
15344 d_ftello='$d_ftello'
15345 d_ftime='$d_ftime'
15346 d_getcwd='$d_getcwd'
15347 d_getespwnam='$d_getespwnam'
15348 d_getfsstat='$d_getfsstat'
15349 d_getgrent='$d_getgrent'
15350 d_getgrps='$d_getgrps'
15351 d_gethbyaddr='$d_gethbyaddr'
15352 d_gethbyname='$d_gethbyname'
15353 d_gethent='$d_gethent'
15354 d_gethname='$d_gethname'
15355 d_gethostprotos='$d_gethostprotos'
15356 d_getlogin='$d_getlogin'
15357 d_getmnt='$d_getmnt'
15358 d_getmntent='$d_getmntent'
15359 d_getnbyaddr='$d_getnbyaddr'
15360 d_getnbyname='$d_getnbyname'
15361 d_getnent='$d_getnent'
15362 d_getnetprotos='$d_getnetprotos'
15363 d_getpbyname='$d_getpbyname'
15364 d_getpbynumber='$d_getpbynumber'
15365 d_getpent='$d_getpent'
15366 d_getpgid='$d_getpgid'
15367 d_getpgrp2='$d_getpgrp2'
15368 d_getpgrp='$d_getpgrp'
15369 d_getppid='$d_getppid'
15370 d_getprior='$d_getprior'
15371 d_getprotoprotos='$d_getprotoprotos'
15372 d_getprpwnam='$d_getprpwnam'
15373 d_getpwent='$d_getpwent'
15374 d_getsbyname='$d_getsbyname'
15375 d_getsbyport='$d_getsbyport'
15376 d_getsent='$d_getsent'
15377 d_getservprotos='$d_getservprotos'
15378 d_getspnam='$d_getspnam'
15379 d_gettimeod='$d_gettimeod'
15380 d_gnulibc='$d_gnulibc'
15381 d_grpasswd='$d_grpasswd'
15382 d_hasmntopt='$d_hasmntopt'
15383 d_htonl='$d_htonl'
15384 d_iconv='$d_iconv'
15385 d_index='$d_index'
15386 d_inetaton='$d_inetaton'
15387 d_int64_t='$d_int64_t'
15388 d_isascii='$d_isascii'
15389 d_isnan='$d_isnan'
15390 d_isnanl='$d_isnanl'
15391 d_killpg='$d_killpg'
15392 d_lchown='$d_lchown'
15393 d_ldbl_dig='$d_ldbl_dig'
15394 d_link='$d_link'
15395 d_locconv='$d_locconv'
15396 d_lockf='$d_lockf'
15397 d_longdbl='$d_longdbl'
15398 d_longlong='$d_longlong'
15399 d_lseekproto='$d_lseekproto'
15400 d_lstat='$d_lstat'
15401 d_madvise='$d_madvise'
15402 d_mblen='$d_mblen'
15403 d_mbstowcs='$d_mbstowcs'
15404 d_mbtowc='$d_mbtowc'
15405 d_memchr='$d_memchr'
15406 d_memcmp='$d_memcmp'
15407 d_memcpy='$d_memcpy'
15408 d_memmove='$d_memmove'
15409 d_memset='$d_memset'
15410 d_mkdir='$d_mkdir'
15411 d_mkdtemp='$d_mkdtemp'
15412 d_mkfifo='$d_mkfifo'
15413 d_mkstemp='$d_mkstemp'
15414 d_mkstemps='$d_mkstemps'
15415 d_mktime='$d_mktime'
15416 d_mmap='$d_mmap'
15417 d_modfl='$d_modfl'
15418 d_mprotect='$d_mprotect'
15419 d_msg='$d_msg'
15420 d_msg_ctrunc='$d_msg_ctrunc'
15421 d_msg_dontroute='$d_msg_dontroute'
15422 d_msg_oob='$d_msg_oob'
15423 d_msg_peek='$d_msg_peek'
15424 d_msg_proxy='$d_msg_proxy'
15425 d_msgctl='$d_msgctl'
15426 d_msgget='$d_msgget'
15427 d_msgrcv='$d_msgrcv'
15428 d_msgsnd='$d_msgsnd'
15429 d_msync='$d_msync'
15430 d_munmap='$d_munmap'
15431 d_mymalloc='$d_mymalloc'
15432 d_nice='$d_nice'
15433 d_nv_preserves_uv='$d_nv_preserves_uv'
15434 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15435 d_off64_t='$d_off64_t'
15436 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15437 d_oldpthreads='$d_oldpthreads'
15438 d_oldsock='$d_oldsock'
15439 d_open3='$d_open3'
15440 d_pathconf='$d_pathconf'
15441 d_pause='$d_pause'
15442 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15443 d_phostname='$d_phostname'
15444 d_pipe='$d_pipe'
15445 d_poll='$d_poll'
15446 d_portable='$d_portable'
15447 d_pthread_yield='$d_pthread_yield'
15448 d_pwage='$d_pwage'
15449 d_pwchange='$d_pwchange'
15450 d_pwclass='$d_pwclass'
15451 d_pwcomment='$d_pwcomment'
15452 d_pwexpire='$d_pwexpire'
15453 d_pwgecos='$d_pwgecos'
15454 d_pwpasswd='$d_pwpasswd'
15455 d_pwquota='$d_pwquota'
15456 d_qgcvt='$d_qgcvt'
15457 d_quad='$d_quad'
15458 d_readdir='$d_readdir'
15459 d_readlink='$d_readlink'
15460 d_rename='$d_rename'
15461 d_rewinddir='$d_rewinddir'
15462 d_rmdir='$d_rmdir'
15463 d_safebcpy='$d_safebcpy'
15464 d_safemcpy='$d_safemcpy'
15465 d_sanemcmp='$d_sanemcmp'
15466 d_sched_yield='$d_sched_yield'
15467 d_scm_rights='$d_scm_rights'
15468 d_seekdir='$d_seekdir'
15469 d_select='$d_select'
15470 d_sem='$d_sem'
15471 d_semctl='$d_semctl'
15472 d_semctl_semid_ds='$d_semctl_semid_ds'
15473 d_semctl_semun='$d_semctl_semun'
15474 d_semget='$d_semget'
15475 d_semop='$d_semop'
15476 d_setegid='$d_setegid'
15477 d_seteuid='$d_seteuid'
15478 d_setgrent='$d_setgrent'
15479 d_setgrps='$d_setgrps'
15480 d_sethent='$d_sethent'
15481 d_setlinebuf='$d_setlinebuf'
15482 d_setlocale='$d_setlocale'
15483 d_setnent='$d_setnent'
15484 d_setpent='$d_setpent'
15485 d_setpgid='$d_setpgid'
15486 d_setpgrp2='$d_setpgrp2'
15487 d_setpgrp='$d_setpgrp'
15488 d_setprior='$d_setprior'
15489 d_setpwent='$d_setpwent'
15490 d_setregid='$d_setregid'
15491 d_setresgid='$d_setresgid'
15492 d_setresuid='$d_setresuid'
15493 d_setreuid='$d_setreuid'
15494 d_setrgid='$d_setrgid'
15495 d_setruid='$d_setruid'
15496 d_setsent='$d_setsent'
15497 d_setsid='$d_setsid'
15498 d_setvbuf='$d_setvbuf'
15499 d_sfio='$d_sfio'
15500 d_shm='$d_shm'
15501 d_shmat='$d_shmat'
15502 d_shmatprototype='$d_shmatprototype'
15503 d_shmctl='$d_shmctl'
15504 d_shmdt='$d_shmdt'
15505 d_shmget='$d_shmget'
15506 d_sigaction='$d_sigaction'
15507 d_sigsetjmp='$d_sigsetjmp'
15508 d_socket='$d_socket'
15509 d_socklen_t='$d_socklen_t'
15510 d_sockpair='$d_sockpair'
15511 d_sqrtl='$d_sqrtl'
15512 d_statblks='$d_statblks'
15513 d_statfs_f_flags='$d_statfs_f_flags'
15514 d_statfs_s='$d_statfs_s'
15515 d_statvfs='$d_statvfs'
15516 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15517 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15518 d_stdio_stream_array='$d_stdio_stream_array'
15519 d_stdiobase='$d_stdiobase'
15520 d_stdstdio='$d_stdstdio'
15521 d_strchr='$d_strchr'
15522 d_strcoll='$d_strcoll'
15523 d_strctcpy='$d_strctcpy'
15524 d_strerrm='$d_strerrm'
15525 d_strerror='$d_strerror'
15526 d_strtod='$d_strtod'
15527 d_strtol='$d_strtol'
15528 d_strtold='$d_strtold'
15529 d_strtoll='$d_strtoll'
15530 d_strtoul='$d_strtoul'
15531 d_strtoull='$d_strtoull'
15532 d_strtouq='$d_strtouq'
15533 d_strxfrm='$d_strxfrm'
15534 d_suidsafe='$d_suidsafe'
15535 d_symlink='$d_symlink'
15536 d_syscall='$d_syscall'
15537 d_sysconf='$d_sysconf'
15538 d_sysernlst='$d_sysernlst'
15539 d_syserrlst='$d_syserrlst'
15540 d_system='$d_system'
15541 d_tcgetpgrp='$d_tcgetpgrp'
15542 d_tcsetpgrp='$d_tcsetpgrp'
15543 d_telldir='$d_telldir'
15544 d_telldirproto='$d_telldirproto'
15545 d_time='$d_time'
15546 d_times='$d_times'
15547 d_truncate='$d_truncate'
15548 d_tzname='$d_tzname'
15549 d_umask='$d_umask'
15550 d_uname='$d_uname'
15551 d_union_semun='$d_union_semun'
15552 d_ustat='$d_ustat'
15553 d_vendorarch='$d_vendorarch'
15554 d_vendorbin='$d_vendorbin'
15555 d_vendorlib='$d_vendorlib'
15556 d_vfork='$d_vfork'
15557 d_void_closedir='$d_void_closedir'
15558 d_voidsig='$d_voidsig'
15559 d_voidtty='$d_voidtty'
15560 d_volatile='$d_volatile'
15561 d_vprintf='$d_vprintf'
15562 d_wait4='$d_wait4'
15563 d_waitpid='$d_waitpid'
15564 d_wcstombs='$d_wcstombs'
15565 d_wctomb='$d_wctomb'
15566 d_xenix='$d_xenix'
15567 date='$date'
15568 db_hashtype='$db_hashtype'
15569 db_prefixtype='$db_prefixtype'
15570 defvoidused='$defvoidused'
15571 direntrytype='$direntrytype'
15572 dlext='$dlext'
15573 dlsrc='$dlsrc'
15574 doublesize='$doublesize'
15575 drand01='$drand01'
15576 dynamic_ext='$dynamic_ext'
15577 eagain='$eagain'
15578 ebcdic='$ebcdic'
15579 echo='$echo'
15580 egrep='$egrep'
15581 emacs='$emacs'
15582 eunicefix='$eunicefix'
15583 exe_ext='$exe_ext'
15584 expr='$expr'
15585 extensions='$extensions'
15586 fflushNULL='$fflushNULL'
15587 fflushall='$fflushall'
15588 find='$find'
15589 firstmakefile='$firstmakefile'
15590 flex='$flex'
15591 fpossize='$fpossize'
15592 fpostype='$fpostype'
15593 freetype='$freetype'
15594 full_ar='$full_ar'
15595 full_csh='$full_csh'
15596 full_sed='$full_sed'
15597 gccversion='$gccversion'
15598 gidformat='$gidformat'
15599 gidsign='$gidsign'
15600 gidsize='$gidsize'
15601 gidtype='$gidtype'
15602 glibpth='$glibpth'
15603 grep='$grep'
15604 groupcat='$groupcat'
15605 groupstype='$groupstype'
15606 gzip='$gzip'
15607 h_fcntl='$h_fcntl'
15608 h_sysfile='$h_sysfile'
15609 hint='$hint'
15610 hostcat='$hostcat'
15611 huge='$huge'
15612 i16size='$i16size'
15613 i16type='$i16type'
15614 i32size='$i32size'
15615 i32type='$i32type'
15616 i64size='$i64size'
15617 i64type='$i64type'
15618 i8size='$i8size'
15619 i8type='$i8type'
15620 i_arpainet='$i_arpainet'
15621 i_bsdioctl='$i_bsdioctl'
15622 i_db='$i_db'
15623 i_dbm='$i_dbm'
15624 i_dirent='$i_dirent'
15625 i_dld='$i_dld'
15626 i_dlfcn='$i_dlfcn'
15627 i_fcntl='$i_fcntl'
15628 i_float='$i_float'
15629 i_gdbm='$i_gdbm'
15630 i_grp='$i_grp'
15631 i_iconv='$i_iconv'
15632 i_ieeefp='$i_ieeefp'
15633 i_inttypes='$i_inttypes'
15634 i_limits='$i_limits'
15635 i_locale='$i_locale'
15636 i_machcthr='$i_machcthr'
15637 i_malloc='$i_malloc'
15638 i_math='$i_math'
15639 i_memory='$i_memory'
15640 i_mntent='$i_mntent'
15641 i_ndbm='$i_ndbm'
15642 i_netdb='$i_netdb'
15643 i_neterrno='$i_neterrno'
15644 i_netinettcp='$i_netinettcp'
15645 i_niin='$i_niin'
15646 i_poll='$i_poll'
15647 i_prot='$i_prot'
15648 i_pthread='$i_pthread'
15649 i_pwd='$i_pwd'
15650 i_rpcsvcdbm='$i_rpcsvcdbm'
15651 i_sfio='$i_sfio'
15652 i_sgtty='$i_sgtty'
15653 i_shadow='$i_shadow'
15654 i_socks='$i_socks'
15655 i_stdarg='$i_stdarg'
15656 i_stddef='$i_stddef'
15657 i_stdlib='$i_stdlib'
15658 i_string='$i_string'
15659 i_sunmath='$i_sunmath'
15660 i_sysaccess='$i_sysaccess'
15661 i_sysdir='$i_sysdir'
15662 i_sysfile='$i_sysfile'
15663 i_sysfilio='$i_sysfilio'
15664 i_sysin='$i_sysin'
15665 i_sysioctl='$i_sysioctl'
15666 i_syslog='$i_syslog'
15667 i_sysmman='$i_sysmman'
15668 i_sysmode='$i_sysmode'
15669 i_sysmount='$i_sysmount'
15670 i_sysndir='$i_sysndir'
15671 i_sysparam='$i_sysparam'
15672 i_sysresrc='$i_sysresrc'
15673 i_syssecrt='$i_syssecrt'
15674 i_sysselct='$i_sysselct'
15675 i_syssockio='$i_syssockio'
15676 i_sysstat='$i_sysstat'
15677 i_sysstatfs='$i_sysstatfs'
15678 i_sysstatvfs='$i_sysstatvfs'
15679 i_systime='$i_systime'
15680 i_systimek='$i_systimek'
15681 i_systimes='$i_systimes'
15682 i_systypes='$i_systypes'
15683 i_sysuio='$i_sysuio'
15684 i_sysun='$i_sysun'
15685 i_sysutsname='$i_sysutsname'
15686 i_sysvfs='$i_sysvfs'
15687 i_syswait='$i_syswait'
15688 i_termio='$i_termio'
15689 i_termios='$i_termios'
15690 i_time='$i_time'
15691 i_unistd='$i_unistd'
15692 i_ustat='$i_ustat'
15693 i_utime='$i_utime'
15694 i_values='$i_values'
15695 i_varargs='$i_varargs'
15696 i_varhdr='$i_varhdr'
15697 i_vfork='$i_vfork'
15698 ignore_versioned_solibs='$ignore_versioned_solibs'
15699 inc_version_list='$inc_version_list'
15700 inc_version_list_init='$inc_version_list_init'
15701 incpath='$incpath'
15702 inews='$inews'
15703 installarchlib='$installarchlib'
15704 installbin='$installbin'
15705 installman1dir='$installman1dir'
15706 installman3dir='$installman3dir'
15707 installprefix='$installprefix'
15708 installprefixexp='$installprefixexp'
15709 installprivlib='$installprivlib'
15710 installscript='$installscript'
15711 installsitearch='$installsitearch'
15712 installsitebin='$installsitebin'
15713 installsitelib='$installsitelib'
15714 installstyle='$installstyle'
15715 installusrbinperl='$installusrbinperl'
15716 installvendorarch='$installvendorarch'
15717 installvendorbin='$installvendorbin'
15718 installvendorlib='$installvendorlib'
15719 intsize='$intsize'
15720 ivdformat='$ivdformat'
15721 ivsize='$ivsize'
15722 ivtype='$ivtype'
15723 known_extensions='$known_extensions'
15724 ksh='$ksh'
15725 large='$large'
15726 ld='$ld'
15727 lddlflags='$lddlflags'
15728 ldflags='$ldflags'
15729 ldlibpthname='$ldlibpthname'
15730 less='$less'
15731 lib_ext='$lib_ext'
15732 libc='$libc'
15733 libperl='$libperl'
15734 libpth='$libpth'
15735 libs='$libs'
15736 libsdirs='$libsdirs'
15737 libsfiles='$libsfiles'
15738 libsfound='$libsfound'
15739 libspath='$libspath'
15740 libswanted='$libswanted'
15741 line='$line'
15742 lint='$lint'
15743 lkflags='$lkflags'
15744 ln='$ln'
15745 lns='$lns'
15746 locincpth='$locincpth'
15747 loclibpth='$loclibpth'
15748 longdblsize='$longdblsize'
15749 longlongsize='$longlongsize'
15750 longsize='$longsize'
15751 lp='$lp'
15752 lpr='$lpr'
15753 ls='$ls'
15754 lseeksize='$lseeksize'
15755 lseektype='$lseektype'
15756 mail='$mail'
15757 mailx='$mailx'
15758 make='$make'
15759 make_set_make='$make_set_make'
15760 mallocobj='$mallocobj'
15761 mallocsrc='$mallocsrc'
15762 malloctype='$malloctype'
15763 man1dir='$man1dir'
15764 man1direxp='$man1direxp'
15765 man1ext='$man1ext'
15766 man3dir='$man3dir'
15767 man3direxp='$man3direxp'
15768 man3ext='$man3ext'
15769 medium='$medium'
15770 mips_type='$mips_type'
15771 mkdir='$mkdir'
15772 mmaptype='$mmaptype'
15773 models='$models'
15774 modetype='$modetype'
15775 more='$more'
15776 multiarch='$multiarch'
15777 mv='$mv'
15778 myarchname='$myarchname'
15779 mydomain='$mydomain'
15780 myhostname='$myhostname'
15781 myuname='$myuname'
15782 n='$n'
15783 netdb_hlen_type='$netdb_hlen_type'
15784 netdb_host_type='$netdb_host_type'
15785 netdb_name_type='$netdb_name_type'
15786 netdb_net_type='$netdb_net_type'
15787 nm='$nm'
15788 nm_opt='$nm_opt'
15789 nm_so_opt='$nm_so_opt'
15790 nonxs_ext='$nonxs_ext'
15791 nroff='$nroff'
15792 nvsize='$nvsize'
15793 nvtype='$nvtype'
15794 o_nonblock='$o_nonblock'
15795 obj_ext='$obj_ext'
15796 old_pthread_create_joinable='$old_pthread_create_joinable'
15797 optimize='$optimize'
15798 orderlib='$orderlib'
15799 osname='$osname'
15800 osvers='$osvers'
15801 otherlibdirs='$otherlibdirs'
15802 package='$package'
15803 pager='$pager'
15804 passcat='$passcat'
15805 patchlevel='$patchlevel'
15806 path_sep='$path_sep'
15807 perl5='$perl5'
15808 perl='$perl'
15809 perladmin='$perladmin'
15810 perlpath='$perlpath'
15811 pg='$pg'
15812 phostname='$phostname'
15813 pidtype='$pidtype'
15814 plibpth='$plibpth'
15815 pm_apiversion='$pm_apiversion'
15816 pmake='$pmake'
15817 pr='$pr'
15818 prefix='$prefix'
15819 prefixexp='$prefixexp'
15820 privlib='$privlib'
15821 privlibexp='$privlibexp'
15822 prototype='$prototype'
15823 ptrsize='$ptrsize'
15824 quadkind='$quadkind'
15825 quadtype='$quadtype'
15826 randbits='$randbits'
15827 randfunc='$randfunc'
15828 randseedtype='$randseedtype'
15829 ranlib='$ranlib'
15830 rd_nodata='$rd_nodata'
15831 revision='$revision'
15832 rm='$rm'
15833 rmail='$rmail'
15834 runnm='$runnm'
15835 sPRIEldbl='$sPRIEldbl'
15836 sPRIFldbl='$sPRIFldbl'
15837 sPRIGldbl='$sPRIGldbl'
15838 sPRIX64='$sPRIX64'
15839 sPRId64='$sPRId64'
15840 sPRIeldbl='$sPRIeldbl'
15841 sPRIfldbl='$sPRIfldbl'
15842 sPRIgldbl='$sPRIgldbl'
15843 sPRIi64='$sPRIi64'
15844 sPRIo64='$sPRIo64'
15845 sPRIu64='$sPRIu64'
15846 sPRIx64='$sPRIx64'
15847 sched_yield='$sched_yield'
15848 scriptdir='$scriptdir'
15849 scriptdirexp='$scriptdirexp'
15850 sed='$sed'
15851 seedfunc='$seedfunc'
15852 selectminbits='$selectminbits'
15853 selecttype='$selecttype'
15854 sendmail='$sendmail'
15855 sh='$sh'
15856 shar='$shar'
15857 sharpbang='$sharpbang'
15858 shmattype='$shmattype'
15859 shortsize='$shortsize'
15860 shrpenv='$shrpenv'
15861 shsharp='$shsharp'
15862 sig_count='$sig_count'
15863 sig_name='$sig_name'
15864 sig_name_init='$sig_name_init'
15865 sig_num='$sig_num'
15866 sig_num_init='$sig_num_init'
15867 signal_t='$signal_t'
15868 sitearch='$sitearch'
15869 sitearchexp='$sitearchexp'
15870 sitebin='$sitebin'
15871 sitebinexp='$sitebinexp'
15872 sitelib='$sitelib'
15873 sitelib_stem='$sitelib_stem'
15874 sitelibexp='$sitelibexp'
15875 siteprefix='$siteprefix'
15876 siteprefixexp='$siteprefixexp'
15877 sizesize='$sizesize'
15878 sizetype='$sizetype'
15879 sleep='$sleep'
15880 smail='$smail'
15881 small='$small'
15882 so='$so'
15883 sockethdr='$sockethdr'
15884 socketlib='$socketlib'
15885 socksizetype='$socksizetype'
15886 sort='$sort'
15887 spackage='$spackage'
15888 spitshell='$spitshell'
15889 split='$split'
15890 src='$src'
15891 ssizetype='$ssizetype'
15892 startperl='$startperl'
15893 startsh='$startsh'
15894 static_ext='$static_ext'
15895 stdchar='$stdchar'
15896 stdio_base='$stdio_base'
15897 stdio_bufsiz='$stdio_bufsiz'
15898 stdio_cnt='$stdio_cnt'
15899 stdio_filbuf='$stdio_filbuf'
15900 stdio_ptr='$stdio_ptr'
15901 stdio_stream_array='$stdio_stream_array'
15902 strings='$strings'
15903 submit='$submit'
15904 subversion='$subversion'
15905 sysman='$sysman'
15906 tail='$tail'
15907 tar='$tar'
15908 tbl='$tbl'
15909 tee='$tee'
15910 test='$test'
15911 timeincl='$timeincl'
15912 timetype='$timetype'
15913 touch='$touch'
15914 tr='$tr'
15915 trnl='$trnl'
15916 troff='$troff'
15917 u16size='$u16size'
15918 u16type='$u16type'
15919 u32size='$u32size'
15920 u32type='$u32type'
15921 u64size='$u64size'
15922 u64type='$u64type'
15923 u8size='$u8size'
15924 u8type='$u8type'
15925 uidformat='$uidformat'
15926 uidsign='$uidsign'
15927 uidsize='$uidsize'
15928 uidtype='$uidtype'
15929 uname='$uname'
15930 uniq='$uniq'
15931 uquadtype='$uquadtype'
15932 use5005threads='$use5005threads'
15933 use64bitall='$use64bitall'
15934 use64bitint='$use64bitint'
15935 usedl='$usedl'
15936 useithreads='$useithreads'
15937 uselargefiles='$uselargefiles'
15938 uselongdouble='$uselongdouble'
15939 usemorebits='$usemorebits'
15940 usemultiplicity='$usemultiplicity'
15941 usemymalloc='$usemymalloc'
15942 usenm='$usenm'
15943 useopcode='$useopcode'
15944 useperlio='$useperlio'
15945 useposix='$useposix'
15946 usesfio='$usesfio'
15947 useshrplib='$useshrplib'
15948 usesocks='$usesocks'
15949 usethreads='$usethreads'
15950 usevendorprefix='$usevendorprefix'
15951 usevfork='$usevfork'
15952 usrinc='$usrinc'
15953 uuname='$uuname'
15954 uvoformat='$uvoformat'
15955 uvsize='$uvsize'
15956 uvtype='$uvtype'
15957 uvuformat='$uvuformat'
15958 uvxformat='$uvxformat'
15959 vendorarch='$vendorarch'
15960 vendorarchexp='$vendorarchexp'
15961 vendorbin='$vendorbin'
15962 vendorbinexp='$vendorbinexp'
15963 vendorlib='$vendorlib'
15964 vendorlib_stem='$vendorlib_stem'
15965 vendorlibexp='$vendorlibexp'
15966 vendorprefix='$vendorprefix'
15967 vendorprefixexp='$vendorprefixexp'
15968 version='$version'
15969 vi='$vi'
15970 voidflags='$voidflags'
15971 xlibpth='$xlibpth'
15972 xs_apiversion='$xs_apiversion'
15973 zcat='$zcat'
15974 zip='$zip'
15975 EOT
15976
15977 : Add in command line options if available
15978 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15979
15980 : add special variables
15981 $test -f $src/patchlevel.h && \
15982 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15983 echo "CONFIGDOTSH=true" >>config.sh
15984
15985 : propagate old symbols
15986 if $test -f UU/config.sh; then
15987         <UU/config.sh sort | uniq >UU/oldconfig.sh
15988         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15989         sort | uniq -u >UU/oldsyms
15990         set X `cat UU/oldsyms`
15991         shift
15992         case $# in
15993         0) ;;
15994         *)
15995                 cat <<EOM
15996 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15997 EOM
15998                 echo "# Variables propagated from previous config.sh file." >>config.sh
15999                 for sym in `cat UU/oldsyms`; do
16000                         echo "    Propagating $hint variable "'$'"$sym..."
16001                         eval 'tmp="$'"${sym}"'"'
16002                         echo "$tmp" | \
16003                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16004                 done
16005                 ;;
16006         esac
16007 fi
16008
16009 : Finish up by extracting the .SH files
16010 case "$alldone" in
16011 exit)
16012         $rm -rf UU
16013         echo "Done."
16014         exit 0
16015         ;;
16016 cont)
16017         ;;
16018 '')
16019         dflt=''
16020         nostick=true
16021         $cat <<EOM
16022
16023 If you'd like to make any changes to the config.sh file before I begin
16024 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16025
16026 EOM
16027         rp="Press return or use a shell escape to edit config.sh:"
16028         . UU/myread
16029         nostick=''
16030         case "$ans" in
16031         '') ;;
16032         *) : in case they cannot read
16033                 sh 1>&4 -c "$ans";;
16034         esac
16035         ;;
16036 esac
16037
16038 : if this fails, just run all the .SH files by hand
16039 . ./config.sh
16040
16041 echo " "
16042 exec 1>&4
16043 . ./UU/extract
16044
16045 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16046         dflt=y
16047         case "$silent" in
16048         true) ;;
16049         *)
16050                 $cat <<EOM
16051
16052 Now you need to generate make dependencies by running "$make depend".
16053 You might prefer to run it in background: "$make depend > makedepend.out &"
16054 It can take a while, so you might not want to run it right now.
16055
16056 EOM
16057                 ;;
16058         esac
16059         rp="Run $make depend now?"
16060         . UU/myread
16061         case "$ans" in
16062         y*)
16063                 $make depend && echo "Now you must run a $make."
16064                 ;;
16065         *)
16066                 echo "You must run '$make depend' then '$make'."
16067                 ;;
16068         esac
16069 elif test -f [Mm]akefile; then
16070         echo " "
16071         echo "Now you must run a $make."
16072 else
16073         echo "Done."
16074 fi
16075
16076 if $test -f Policy.sh; then
16077     $cat <<EOM
16078
16079 If you compile $package on a different machine or from a different object
16080 directory, copy the Policy.sh file from this object directory to the
16081 new one before you run Configure -- this will help you with most of
16082 the policy defaults.
16083
16084 EOM
16085 fi
16086 if $test -f config.msg; then
16087     echo "Hmm.  I also noted the following information while running:"
16088     echo " "
16089     $cat config.msg >&4
16090     $rm -f config.msg
16091 fi
16092 $rm -f kit*isdone ark*isdone
16093 $rm -rf UU
16094
16095 : End of Configure
16096