Configure nits: do not use /tmp to avoid potential security
[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 Thu Mar 16 00:41:53 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_fpos64_t=''
358 d_fs_data_s=''
359 d_fseeko=''
360 d_fsetpos=''
361 d_fstatfs=''
362 d_ftello=''
363 d_ftime=''
364 d_gettimeod=''
365 d_Gconvert=''
366 d_getcwd=''
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_getpwent=''
396 d_getsent=''
397 d_getservprotos=''
398 d_getspent=''
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_killpg=''
410 d_lchown=''
411 d_ldbl_dig=''
412 d_link=''
413 d_locconv=''
414 d_lockf=''
415 d_longdbl=''
416 longdblsize=''
417 d_longlong=''
418 longlongsize=''
419 d_lseekproto=''
420 d_lstat=''
421 d_madvise=''
422 d_mblen=''
423 d_mbstowcs=''
424 d_mbtowc=''
425 d_memchr=''
426 d_memcmp=''
427 d_memcpy=''
428 d_memmove=''
429 d_memset=''
430 d_mkdir=''
431 d_mkdtemp=''
432 d_mkfifo=''
433 d_mkstemp=''
434 d_mkstemps=''
435 d_mktime=''
436 d_mmap=''
437 mmaptype=''
438 d_mprotect=''
439 d_msg=''
440 d_msgctl=''
441 d_msgget=''
442 d_msgrcv=''
443 d_msgsnd=''
444 d_msync=''
445 d_munmap=''
446 d_nice=''
447 d_off64_t=''
448 d_open3=''
449 d_fpathconf=''
450 d_pathconf=''
451 d_pause=''
452 d_pipe=''
453 d_poll=''
454 d_portable=''
455 d_old_pthread_create_joinable=''
456 old_pthread_create_joinable=''
457 d_pthread_yield=''
458 d_sched_yield=''
459 sched_yield=''
460 d_qgcvt=''
461 d_readdir=''
462 d_rewinddir=''
463 d_seekdir=''
464 d_telldir=''
465 d_readlink=''
466 d_rename=''
467 d_rmdir=''
468 d_safebcpy=''
469 d_safemcpy=''
470 d_sanemcmp=''
471 d_select=''
472 d_sem=''
473 d_semctl=''
474 d_semget=''
475 d_semop=''
476 d_setegid=''
477 d_seteuid=''
478 d_setgrent=''
479 d_setgrps=''
480 d_sethent=''
481 d_setlinebuf=''
482 d_setlocale=''
483 d_setnent=''
484 d_setpent=''
485 d_setpgid=''
486 d_setpgrp2=''
487 d_bsdsetpgrp=''
488 d_setpgrp=''
489 d_setprior=''
490 d_setpwent=''
491 d_setregid=''
492 d_setresgid=''
493 d_setresuid=''
494 d_setreuid=''
495 d_setrgid=''
496 d_setruid=''
497 d_setsent=''
498 d_setsid=''
499 d_setspent=''
500 d_setvbuf=''
501 d_sfio=''
502 usesfio=''
503 d_shm=''
504 d_shmat=''
505 d_shmatprototype=''
506 shmattype=''
507 d_shmctl=''
508 d_shmdt=''
509 d_shmget=''
510 d_sigaction=''
511 d_sigsetjmp=''
512 d_msg_ctrunc=''
513 d_msg_dontroute=''
514 d_msg_oob=''
515 d_msg_peek=''
516 d_msg_proxy=''
517 d_oldsock=''
518 d_scm_rights=''
519 d_socket=''
520 d_sockpair=''
521 sockethdr=''
522 socketlib=''
523 d_socklen_t=''
524 d_sqrtl=''
525 d_statblks=''
526 d_statfs_f_flags=''
527 d_statfs_s=''
528 d_fstatvfs=''
529 d_statvfs=''
530 d_stdio_cnt_lval=''
531 d_stdio_ptr_lval=''
532 d_stdiobase=''
533 d_stdstdio=''
534 stdio_base=''
535 stdio_bufsiz=''
536 stdio_cnt=''
537 stdio_filbuf=''
538 stdio_ptr=''
539 d_index=''
540 d_strchr=''
541 d_strcoll=''
542 d_strctcpy=''
543 d_strerrm=''
544 d_strerror=''
545 d_sysernlst=''
546 d_syserrlst=''
547 d_strtod=''
548 d_strtol=''
549 d_strtold=''
550 d_strtoll=''
551 d_strtoul=''
552 d_strtoull=''
553 d_strtouq=''
554 d_strxfrm=''
555 d_symlink=''
556 d_syscall=''
557 d_sysconf=''
558 d_system=''
559 d_tcgetpgrp=''
560 d_tcsetpgrp=''
561 d_telldirproto=''
562 d_time=''
563 timetype=''
564 clocktype=''
565 d_times=''
566 d_truncate=''
567 d_tzname=''
568 d_umask=''
569 d_semctl_semid_ds=''
570 d_semctl_semun=''
571 d_union_semun=''
572 d_ustat=''
573 d_vfork=''
574 usevfork=''
575 d_voidsig=''
576 signal_t=''
577 d_volatile=''
578 d_charvspr=''
579 d_vprintf=''
580 d_wait4=''
581 d_waitpid=''
582 d_wcstombs=''
583 d_wctomb=''
584 dlext=''
585 cccdlflags=''
586 ccdlflags=''
587 dlsrc=''
588 ld=''
589 lddlflags=''
590 usedl=''
591 doublesize=''
592 ebcdic=''
593 fflushNULL=''
594 fflushall=''
595 fpossize=''
596 fpostype=''
597 gidformat=''
598 gidsign=''
599 gidsize=''
600 gidtype=''
601 groupstype=''
602 h_fcntl=''
603 h_sysfile=''
604 i_arpainet=''
605 db_hashtype=''
606 db_prefixtype=''
607 i_db=''
608 i_dbm=''
609 i_rpcsvcdbm=''
610 d_dirnamlen=''
611 direntrytype=''
612 i_dirent=''
613 i_dld=''
614 i_dlfcn=''
615 i_fcntl=''
616 i_float=''
617 i_gdbm=''
618 d_grpasswd=''
619 i_grp=''
620 i_iconv=''
621 i_ieeefp=''
622 i_inttypes=''
623 i_limits=''
624 i_locale=''
625 i_machcthr=''
626 i_malloc=''
627 i_math=''
628 i_memory=''
629 i_mntent=''
630 i_ndbm=''
631 i_netdb=''
632 i_neterrno=''
633 i_netinettcp=''
634 i_niin=''
635 i_sysin=''
636 i_poll=''
637 i_pthread=''
638 d_pwage=''
639 d_pwchange=''
640 d_pwclass=''
641 d_pwcomment=''
642 d_pwexpire=''
643 d_pwgecos=''
644 d_pwpasswd=''
645 d_pwquota=''
646 i_pwd=''
647 i_sfio=''
648 i_shadow=''
649 i_socks=''
650 i_stddef=''
651 i_stdlib=''
652 i_string=''
653 strings=''
654 i_sunmath=''
655 i_sysaccess=''
656 i_sysdir=''
657 i_sysfile=''
658 d_voidtty=''
659 i_bsdioctl=''
660 i_sysfilio=''
661 i_sysioctl=''
662 i_syssockio=''
663 i_syslog=''
664 i_sysmman=''
665 i_sysmode=''
666 i_sysmount=''
667 i_sysndir=''
668 i_sysparam=''
669 i_sysresrc=''
670 i_syssecrt=''
671 i_sysselct=''
672 i_sysstat=''
673 i_sysstatfs=''
674 i_sysstatvfs=''
675 i_systimes=''
676 i_systypes=''
677 i_sysuio=''
678 i_sysun=''
679 i_sysutsname=''
680 i_sysvfs=''
681 i_syswait=''
682 i_sgtty=''
683 i_termio=''
684 i_termios=''
685 i_systime=''
686 i_systimek=''
687 i_time=''
688 timeincl=''
689 i_unistd=''
690 i_ustat=''
691 i_utime=''
692 i_values=''
693 i_stdarg=''
694 i_varargs=''
695 i_varhdr=''
696 i_vfork=''
697 inc_version_list=''
698 inc_version_list_init=''
699 installprefix=''
700 installprefixexp=''
701 installstyle=''
702 installusrbinperl=''
703 intsize=''
704 longsize=''
705 shortsize=''
706 libc=''
707 ldlibpthname=''
708 libperl=''
709 shrpenv=''
710 useshrplib=''
711 glibpth=''
712 libpth=''
713 loclibpth=''
714 plibpth=''
715 xlibpth=''
716 ignore_versioned_solibs=''
717 libs=''
718 libsdirs=''
719 libsfiles=''
720 libsfound=''
721 libspath=''
722 lns=''
723 d_PRIEldbl=''
724 d_PRIFldbl=''
725 d_PRIGldbl=''
726 d_PRIeldbl=''
727 d_PRIfldbl=''
728 d_PRIgldbl=''
729 sPRIEldbl=''
730 sPRIFldbl=''
731 sPRIGldbl=''
732 sPRIeldbl=''
733 sPRIfldbl=''
734 sPRIgldbl=''
735 lseeksize=''
736 lseektype=''
737 make_set_make=''
738 d_mymalloc=''
739 freetype=''
740 mallocobj=''
741 mallocsrc=''
742 malloctype=''
743 usemymalloc=''
744 installman1dir=''
745 man1dir=''
746 man1direxp=''
747 man1ext=''
748 installman3dir=''
749 man3dir=''
750 man3direxp=''
751 man3ext=''
752 huge=''
753 large=''
754 medium=''
755 models=''
756 small=''
757 split=''
758 modetype=''
759 multiarch=''
760 mydomain=''
761 myhostname=''
762 phostname=''
763 c=''
764 n=''
765 d_eofnblk=''
766 eagain=''
767 o_nonblock=''
768 rd_nodata=''
769 netdb_hlen_type=''
770 netdb_host_type=''
771 netdb_name_type=''
772 netdb_net_type=''
773 groupcat=''
774 hostcat=''
775 passcat=''
776 orderlib=''
777 ranlib=''
778 package=''
779 spackage=''
780 pager=''
781 api_revision=''
782 api_subversion=''
783 api_version=''
784 api_versionstring=''
785 patchlevel=''
786 revision=''
787 subversion=''
788 version=''
789 perl5=''
790 perladmin=''
791 perlpath=''
792 d_nv_preserves_uv=''
793 i16size=''
794 i16type=''
795 i32size=''
796 i32type=''
797 i64size=''
798 i64type=''
799 i8size=''
800 i8type=''
801 ivsize=''
802 ivtype=''
803 nvsize=''
804 nvtype=''
805 u16size=''
806 u16type=''
807 u32size=''
808 u32type=''
809 u64size=''
810 u64type=''
811 u8size=''
812 u8type=''
813 uvsize=''
814 uvtype=''
815 ivdformat=''
816 uvoformat=''
817 uvuformat=''
818 uvxformat=''
819 pidtype=''
820 prefix=''
821 prefixexp=''
822 installprivlib=''
823 privlib=''
824 privlibexp=''
825 prototype=''
826 ptrsize=''
827 d_PRIX64=''
828 d_PRId64=''
829 d_PRIi64=''
830 d_PRIo64=''
831 d_PRIu64=''
832 d_PRIx64=''
833 sPRIX64=''
834 sPRId64=''
835 sPRIi64=''
836 sPRIo64=''
837 sPRIu64=''
838 sPRIx64=''
839 d_quad=''
840 quadkind=''
841 quadtype=''
842 uquadtype=''
843 drand01=''
844 randbits=''
845 randfunc=''
846 randseedtype=''
847 seedfunc=''
848 installscript=''
849 scriptdir=''
850 scriptdirexp=''
851 selectminbits=''
852 selecttype=''
853 sh=''
854 sig_count=''
855 sig_name=''
856 sig_name_init=''
857 sig_num=''
858 sig_num_init=''
859 installsitearch=''
860 sitearch=''
861 sitearchexp=''
862 installsitebin=''
863 sitebin=''
864 sitebinexp=''
865 installsitelib=''
866 sitelib=''
867 sitelib_stem=''
868 sitelibexp=''
869 siteprefix=''
870 siteprefixexp=''
871 sizetype=''
872 so=''
873 socksizetype=''
874 sharpbang=''
875 shsharp=''
876 spitshell=''
877 src=''
878 ssizetype=''
879 startperl=''
880 startsh=''
881 stdchar=''
882 d_stdio_stream_array=''
883 stdio_stream_array=''
884 sysman=''
885 trnl=''
886 uidformat=''
887 uidsign=''
888 uidsize=''
889 uidtype=''
890 archname64=''
891 use64bitall=''
892 use64bitint=''
893 uselargefiles=''
894 uselongdouble=''
895 usemorebits=''
896 usemultiplicity=''
897 nm_opt=''
898 nm_so_opt=''
899 runnm=''
900 usenm=''
901 useperlio=''
902 usesocks=''
903 d_oldpthreads=''
904 use5005threads=''
905 useithreads=''
906 usethreads=''
907 incpath=''
908 mips_type=''
909 usrinc=''
910 d_vendorarch=''
911 installvendorarch=''
912 vendorarch=''
913 vendorarchexp=''
914 d_vendorbin=''
915 installvendorbin=''
916 vendorbin=''
917 vendorbinexp=''
918 d_vendorlib=''
919 installvendorlib=''
920 vendorlib=''
921 vendorlib_stem=''
922 vendorlibexp=''
923 usevendorprefix=''
924 vendorprefix=''
925 vendorprefixexp=''
926 defvoidused=''
927 voidflags=''
928 pm_apiversion=''
929 xs_apiversion=''
930 CONFIG=''
931
932 define='define'
933 undef='undef'
934 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
935 rmlist=''
936
937 : We must find out about Eunice early
938 eunicefix=':'
939 if test -f /etc/unixtovms; then
940         eunicefix=/etc/unixtovms
941 fi
942 if test -f /etc/unixtovms.exe; then
943         eunicefix=/etc/unixtovms.exe
944 fi
945
946 i_whoami=''
947 : set useposix=false in your hint file to disable the POSIX extension.
948 useposix=true
949 : set useopcode=false in your hint file to disable the Opcode extension.
950 useopcode=true
951 : Trailing extension.  Override this in a hint file, if needed.
952 _exe=''
953 : Extra object files, if any, needed on this platform.
954 archobjs=''
955 : Possible local include directories to search.
956 : Set locincpth to "" in a hint file to defeat local include searches.
957 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
958 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
959 :
960 : no include file wanted by default
961 inclwanted=''
962
963 groupstype=''
964 : change the next line if compiling for Xenix/286 on Xenix/386
965 xlibpth='/usr/lib/386 /lib/386'
966 : Possible local library directories to search.
967 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
968 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
969
970 : general looking path for locating libraries
971 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
972 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
973 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
974 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
975 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
976
977 : Private path used by Configure to find libraries.  Its value
978 : is prepended to libpth. This variable takes care of special
979 : machines, like the mips.  Usually, it should be empty.
980 plibpth=''
981
982 : default library list
983 libswanted=''
984 : some systems want to use only the non-versioned libso:s
985 ignore_versioned_solibs=''
986 : set usemultiplicity on the Configure command line to enable multiplicity.
987 : set usesocks on the Configure command line to enable socks.
988 : set usethreads on the Configure command line to enable threads.
989 : full support for void wanted by default
990 defvoidused=15
991
992 : List of libraries we want.
993 : If anyone needs -lnet, put it in a hint file.
994 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
995 libswanted="$libswanted dld ld sun m c cposix posix"
996 libswanted="$libswanted ndir dir crypt sec"
997 libswanted="$libswanted ucb bsd BSD PW x iconv"
998 : We probably want to search /usr/shlib before most other libraries.
999 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1000 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1001 glibpth="/usr/shlib $glibpth"
1002 : Do not use vfork unless overridden by a hint file.
1003 usevfork=false
1004
1005 : Find the basic shell for Bourne shell scripts
1006 case "$sh" in
1007 '')
1008         case "$SYSTYPE" in
1009         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1010         *) xxx='/bin/sh';;
1011         esac
1012         if test -f "$xxx"; then
1013                 sh="$xxx"
1014         else
1015                 : Build up a list and do a single loop so we can 'break' out.
1016                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1017                 for xxx in sh bash ksh pdksh ash; do
1018                         for p in $pth; do
1019                                 try="$try ${p}/${xxx}"
1020                         done
1021                 done
1022                 for xxx in $try; do
1023                         if test -f "$xxx"; then
1024                                 sh="$xxx";
1025                                 break
1026                         elif test -f "$xxx.exe"; then
1027                                 sh="$xxx";
1028                                 break
1029                         fi
1030                 done
1031         fi
1032         ;;
1033 esac
1034
1035 case "$sh" in
1036 '')     cat <<EOM >&2
1037 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1038
1039 Usually it's in /bin/sh.  How did you even get this far?
1040 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1041 we'll try to straighten this all out.
1042 EOM
1043         exit 1
1044         ;;
1045 esac
1046
1047 : see if sh knows # comments
1048 if `$sh -c '#' >/dev/null 2>&1`; then
1049         shsharp=true
1050         spitshell=cat
1051         xcat=/bin/cat
1052         test -f $xcat || xcat=/usr/bin/cat
1053         echo "#!$xcat" >try
1054         $eunicefix try
1055         chmod +x try
1056         ./try > today
1057         if test -s today; then
1058                 sharpbang='#!'
1059         else
1060                 echo "#! $xcat" > try
1061                 $eunicefix try
1062                 chmod +x try
1063                 ./try > today
1064                 if test -s today; then
1065                         sharpbang='#! '
1066                 else
1067                         sharpbang=': use '
1068                 fi
1069         fi
1070 else
1071         echo " "
1072         echo "Your $sh doesn't grok # comments--I will strip them later on."
1073         shsharp=false
1074         cd ..
1075         echo "exec grep -v '^[  ]*#'" >spitshell
1076         chmod +x spitshell
1077         $eunicefix spitshell
1078         spitshell=`pwd`/spitshell
1079         cd UU
1080         echo "I presume that if # doesn't work, #! won't work either!"
1081         sharpbang=': use '
1082 fi
1083 rm -f try today
1084
1085 : figure out how to guarantee sh startup
1086 case "$startsh" in
1087 '') startsh=${sharpbang}${sh} ;;
1088 *)
1089 esac
1090 cat >try <<EOSS
1091 $startsh
1092 set abc
1093 test "$?abc" != 1
1094 EOSS
1095
1096 chmod +x try
1097 $eunicefix try
1098 if ./try; then
1099         : echo "Yup, it does."
1100 else
1101         echo "Hmm... '$startsh' does not guarantee sh startup..."
1102         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1103 fi
1104 rm -f try
1105
1106
1107 : Save command line options in file UU/cmdline.opt for later use in
1108 : generating config.sh.
1109 cat > cmdline.opt <<EOSH
1110 # Configure command line arguments.
1111 config_arg0='$0'
1112 config_args='$*'
1113 config_argc=$#
1114 EOSH
1115 argn=1
1116 for arg in "$@"; do
1117         cat >>cmdline.opt <<EOSH
1118 config_arg$argn='$arg'
1119 EOSH
1120         argn=`expr $argn + 1`
1121 done
1122
1123 : produce awk script to parse command line options
1124 cat >options.awk <<'EOF'
1125 BEGIN {
1126         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1127
1128         len = length(optstr);
1129         for (i = 1; i <= len; i++) {
1130                 c = substr(optstr, i, 1);
1131                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1132                 if (a == ":") {
1133                         arg[c] = 1;
1134                         i++;
1135                 }
1136                 opt[c] = 1;
1137         }
1138 }
1139 {
1140         expect = 0;
1141         str = $0;
1142         if (substr(str, 1, 1) != "-") {
1143                 printf("'%s'\n", str);
1144                 next;
1145         }
1146         len = length($0);
1147         for (i = 2; i <= len; i++) {
1148                 c = substr(str, i, 1);
1149                 if (!opt[c]) {
1150                         printf("-%s\n", substr(str, i));
1151                         next;
1152                 }
1153                 printf("-%s\n", c);
1154                 if (arg[c]) {
1155                         if (i < len)
1156                                 printf("'%s'\n", substr(str, i + 1));
1157                         else
1158                                 expect = 1;
1159                         next;
1160                 }
1161         }
1162 }
1163 END {
1164         if (expect)
1165                 print "?";
1166 }
1167 EOF
1168
1169 : process the command line options
1170 set X `for arg in "$@"; do echo "X$arg"; done |
1171         sed -e s/X// | awk -f options.awk`
1172 eval "set $*"
1173 shift
1174 rm -f options.awk
1175
1176 : set up default values
1177 fastread=''
1178 reuseval=false
1179 config_sh=''
1180 alldone=''
1181 error=''
1182 silent=''
1183 extractsh=''
1184 override=''
1185 knowitall=''
1186 rm -f optdef.sh posthint.sh
1187 cat >optdef.sh <<EOS
1188 $startsh
1189 EOS
1190
1191
1192 : option parsing
1193 while test $# -gt 0; do
1194         case "$1" in
1195         -d) shift; fastread=yes;;
1196         -e) shift; alldone=cont;;
1197         -f)
1198                 shift
1199                 cd ..
1200                 if test -r "$1"; then
1201                         config_sh="$1"
1202                 else
1203                         echo "$me: cannot read config file $1." >&2
1204                         error=true
1205                 fi
1206                 cd UU
1207                 shift;;
1208         -h) shift; error=true;;
1209         -r) shift; reuseval=true;;
1210         -s) shift; silent=true; realsilent=true;;
1211         -E) shift; alldone=exit;;
1212         -K) shift; knowitall=true;;
1213         -O) shift; override=true;;
1214         -S) shift; silent=true; extractsh=true;;
1215         -D)
1216                 shift
1217                 case "$1" in
1218                 *=)
1219                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1220                         echo "$me: ignoring -D $1" >&2
1221                         ;;
1222                 *=*) echo "$1" | \
1223                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1224                 *) echo "$1='define'" >> optdef.sh;;
1225                 esac
1226                 shift
1227                 ;;
1228         -U)
1229                 shift
1230                 case "$1" in
1231                 *=) echo "$1" >> optdef.sh;;
1232                 *=*)
1233                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1234                         echo "$me: ignoring -U $1" >&2
1235                         ;;
1236                 *) echo "$1='undef'" >> optdef.sh;;
1237                 esac
1238                 shift
1239                 ;;
1240         -A)
1241             shift
1242             xxx=''
1243             yyy="$1"
1244             zzz=''
1245             uuu=undef
1246             case "$yyy" in
1247             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1248                  case "$zzz" in
1249                  *:*) zzz='' ;;
1250                  *)   xxx=append
1251                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1252                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1253                  esac
1254                  ;;
1255             esac
1256             case "$xxx" in
1257             '')  case "$yyy" in
1258                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1259                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1260                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1261                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1262                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1263                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1264                  esac
1265                  ;;       
1266             esac
1267             case "$xxx" in
1268             append)
1269                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1270             clear)
1271                 echo "$yyy=''"                  >> posthint.sh ;;
1272             define)
1273                 case "$zzz" in
1274                 '') zzz=define ;;
1275                 esac
1276                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1277             eval)
1278                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1279             prepend)
1280                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1281             undef)
1282                 case "$zzz" in
1283                 '') zzz="$uuu" ;;
1284                 esac
1285                 echo "$yyy=$zzz"                >> posthint.sh ;;
1286             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1287             esac
1288             shift
1289             ;;
1290         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1291             exit 0;;
1292         --) break;;
1293         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1294         *) break;;
1295         esac
1296 done
1297
1298 case "$error" in
1299 true)
1300         cat >&2 <<EOM
1301 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1302                  [-U symbol] [-U symbol=] [-A command:symbol...]
1303   -d : use defaults for all answers.
1304   -e : go on without questioning past the production of config.sh.
1305   -f : specify an alternate default configuration file.
1306   -h : print this help message and exit (with an error status).
1307   -r : reuse C symbols value if possible (skips costly nm extraction).
1308   -s : silent mode, only echoes questions and essential information.
1309   -D : define symbol to have some value:
1310          -D symbol         symbol gets the value 'define'
1311          -D symbol=value   symbol gets the value 'value'
1312   -E : stop at the end of questions, after having produced config.sh.
1313   -K : do not use unless you know what you are doing.
1314   -O : let -D and -U override definitions from loaded configuration file.
1315   -S : perform variable substitutions on all .SH files (can mix with -f)
1316   -U : undefine symbol:
1317          -U symbol    symbol gets the value 'undef'
1318          -U symbol=   symbol gets completely empty
1319   -A : manipulate symbol after the platform specific hints have been applied:
1320          -A symbol=value                append " "value to symbol
1321          -A append:symbol=value         append value to symbol
1322          -A define:symbol=value         define symbol to have value
1323          -A clear:symbol                define symbol to be ''
1324          -A define:symbol               define symbol to be 'define'
1325          -A eval:symbol=value           define symbol to be eval of value
1326          -A prepend:symbol=value        prepend value to symbol
1327          -A undef:symbol                define symbol to be 'undef'
1328          -A undef:symbol=               define symbol to be ''
1329   -V : print version number and exit (with a zero status).
1330 EOM
1331         exit 1
1332         ;;
1333 esac
1334
1335 : Sanity checks
1336 case "$fastread$alldone" in
1337 yescont|yesexit) ;;
1338 *)
1339         if test ! -t 0; then
1340                 echo "Say 'sh Configure', not 'sh <Configure'"
1341                 exit 1
1342         fi
1343         ;;
1344 esac
1345
1346 exec 4>&1
1347 case "$silent" in
1348 true) exec 1>/dev/null;;
1349 esac
1350
1351 : run the defines and the undefines, if any, but leave the file out there...
1352 touch optdef.sh
1353 . ./optdef.sh
1354 : create the posthint manipulation script and leave the file out there...
1355 touch posthint.sh
1356
1357 : set package name
1358 package=perl5
1359 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1360 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1361 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1362 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1363 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1364 esac
1365
1366 : Some greps do not return status, grrr.
1367 echo "grimblepritz" >grimble
1368 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1369         contains=contains
1370 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1371         contains=grep
1372 else
1373         contains=contains
1374 fi
1375 rm -f grimble
1376 : the following should work in any shell
1377 case "$contains" in
1378 contains*)
1379         echo " "
1380         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1381         cat >contains <<'EOSS'
1382 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1383 EOSS
1384 chmod +x contains
1385 esac
1386
1387 : Find the path to the source tree
1388 case "$src" in
1389 '') case "$0" in
1390     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1391          case "$src" in
1392          /*)    ;;
1393          *)     src=`cd ../$src && pwd` ;;
1394          esac
1395          ;;
1396     *)   src='.';;
1397     esac;;
1398 esac
1399 case "$src" in
1400 '')     src=/
1401         rsrc=/
1402         ;;
1403 /*) rsrc="$src";;
1404 *) rsrc="../$src";;
1405 esac
1406 if test -f $rsrc/Configure && \
1407         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1408 then
1409    : found it, so we are ok.
1410 else
1411         rsrc=''
1412         for src in . .. ../.. ../../.. ../../../..; do
1413                 if test -f ../$src/Configure && \
1414                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1415                 then
1416                         rsrc=../$src
1417                         break
1418                 fi
1419         done
1420 fi
1421 case "$rsrc" in
1422 '')
1423         cat <<EOM >&4
1424
1425 Sorry, I can't seem to locate the source dir for $package.  Please start
1426 Configure with an explicit path -- i.e. /some/path/Configure.
1427
1428 EOM
1429         exit 1
1430         ;;
1431 ../.)   rsrc='..';;
1432 *)
1433         echo " "
1434         echo "Sources for $package found in \"$src\"." >&4
1435         ;;
1436 esac
1437
1438 : script used to extract .SH files with variable substitutions
1439 cat >extract <<'EOS'
1440 CONFIGDOTSH=true
1441 echo "Doing variable substitutions on .SH files..."
1442 if test -f $src/MANIFEST; then
1443         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1444 else
1445         echo "(Looking for .SH files under the source directory.)"
1446         set x `(cd $src; find . -name "*.SH" -print)`
1447 fi
1448 shift
1449 case $# in
1450 0) set x `(cd $src; echo *.SH)`; shift;;
1451 esac
1452 if test ! -f $src/$1; then
1453         shift
1454 fi
1455 mkdir_p='
1456 name=$1;
1457 create="";
1458 while test $name; do
1459         if test ! -d "$name"; then
1460                 create="$name $create";
1461                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1462                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1463         else
1464                 name="";
1465         fi;
1466 done;
1467 for file in $create; do
1468         mkdir $file;
1469 done
1470 '
1471 for file in $*; do
1472         case "$src" in
1473         ".")
1474                 case "$file" in
1475                 */*)
1476                         dir=`expr X$file : 'X\(.*\)/'`
1477                         file=`expr X$file : 'X.*/\(.*\)'`
1478                         (cd $dir && . ./$file)
1479                         ;;
1480                 *)
1481                         . ./$file
1482                         ;;
1483                 esac
1484                 ;;
1485         *)
1486                 case "$file" in
1487                 */*)
1488                         dir=`expr X$file : 'X\(.*\)/'`
1489                         file=`expr X$file : 'X.*/\(.*\)'`
1490                         (set x $dir; shift; eval $mkdir_p)
1491                         sh <$src/$dir/$file
1492                         ;;
1493                 *)
1494                         sh <$src/$file
1495                         ;;
1496                 esac
1497                 ;;
1498         esac
1499 done
1500 if test -f $src/config_h.SH; then
1501         if test ! -f config.h; then
1502         : oops, they left it out of MANIFEST, probably, so do it anyway.
1503         . $src/config_h.SH
1504         fi
1505 fi
1506 EOS
1507
1508 : extract files and exit if asked to do so
1509 case "$extractsh" in
1510 true)
1511         case "$realsilent" in
1512         true) ;;
1513         *) exec 1>&4;;
1514         esac
1515         case "$config_sh" in
1516         '') config_sh='config.sh';;
1517         esac
1518         echo " "
1519         echo "Fetching answers from $config_sh..."
1520         cd ..
1521         . $config_sh
1522         test "$override" && . ./optdef.sh
1523         echo " "
1524         . UU/extract
1525         rm -rf UU
1526         echo "Done."
1527         exit 0
1528         ;;
1529 esac
1530
1531 : Eunice requires " " instead of "", can you believe it
1532 echo " "
1533 : Here we go...
1534 echo "Beginning of configuration questions for $package."
1535
1536 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1537
1538 : first determine how to suppress newline on echo command
1539 echo " "
1540 echo "Checking echo to see how to suppress newlines..."
1541 (echo "hi there\c" ; echo " ") >.echotmp
1542 if $contains c .echotmp >/dev/null 2>&1 ; then
1543         echo "...using -n."
1544         n='-n'
1545         c=''
1546 else
1547         cat <<'EOM'
1548 ...using \c
1549 EOM
1550         n=''
1551         c='\c'
1552 fi
1553 echo $n "The star should be here-->$c"
1554 echo '*'
1555 rm -f .echotmp
1556
1557 : Now test for existence of everything in MANIFEST
1558 echo " "
1559 if test -f $rsrc/MANIFEST; then
1560         echo "First let's make sure your kit is complete.  Checking..." >&4
1561         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1562         rm -f missing
1563         tmppwd=`pwd`
1564         for filelist in x??; do
1565                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1566         done
1567         if test -s missing; then
1568                 cat missing >&4
1569                 cat >&4 <<'EOM'
1570
1571 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1572
1573 You have the option of continuing the configuration process, despite the
1574 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1575 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1576 and contact the author (perlbug@perl.com).
1577
1578 EOM
1579                 echo $n "Continue? [n] $c" >&4
1580                 read ans
1581                 case "$ans" in
1582                 y*)
1583                         echo "Continuing..." >&4
1584                         rm -f missing
1585                         ;;
1586                 *)
1587                         echo "ABORTING..." >&4
1588                         kill $$
1589                         ;;
1590                 esac
1591         else
1592                 echo "Looks good..."
1593         fi
1594 else
1595         echo "There is no MANIFEST file.  I hope your kit is complete !"
1596 fi
1597 rm -f missing x??
1598
1599 echo " "
1600 : Find the appropriate value for a newline for tr
1601 if test -n "$DJGPP"; then
1602        trnl='\012'
1603 fi
1604 if test X"$trnl" = X; then
1605         case "`echo foo|tr '\n' x 2>/dev/null`" in
1606         foox) trnl='\n' ;;
1607         esac
1608 fi
1609 if test X"$trnl" = X; then
1610         case "`echo foo|tr '\012' x 2>/dev/null`" in
1611         foox) trnl='\012' ;;
1612         esac
1613 fi
1614 if test X"$trnl" = X; then
1615         cat <<EOM >&2
1616
1617 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1618
1619 EOM
1620         exit 1
1621 fi
1622
1623 : compute the number of columns on the terminal for proper question formatting
1624 case "$COLUMNS" in
1625 '') COLUMNS='80';;
1626 esac
1627
1628 : set up the echo used in my read
1629 myecho="case \"\$xxxm\" in
1630 '') echo $n \"\$rp $c\" >&4;;
1631 *) case \"\$rp\" in
1632         '') echo $n \"[\$xxxm] $c\";;
1633         *)
1634                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1635                         echo \"\$rp\" >&4
1636                         echo $n \"[\$xxxm] $c\" >&4
1637                 else
1638                         echo $n \"\$rp [\$xxxm] $c\" >&4
1639                 fi
1640                 ;;
1641         esac;;
1642 esac"
1643
1644 : now set up to do reads with possible shell escape and default assignment
1645 cat <<EOSC >myread
1646 $startsh
1647 xxxm=\$dflt
1648 $myecho
1649 ans='!'
1650 case "\$fastread" in
1651 yes) case "\$dflt" in
1652         '') ;;
1653         *) ans='';
1654                 case "\$silent-\$rp" in
1655                 true-) ;;
1656                 *) echo " " >&4;;
1657                 esac;;
1658         esac;;
1659 *) case "\$silent" in
1660         true) case "\$rp" in
1661                 '') ans='';;
1662                 esac;;
1663         esac;;
1664 esac
1665 while expr "X\$ans" : "X!" >/dev/null; do
1666         read answ
1667         set x \$xxxm
1668         shift
1669         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1670         case  "\$answ" in
1671         "!")
1672                 sh 1>&4
1673                 echo " "
1674                 $myecho
1675                 ;;
1676         !*)
1677                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1678                 shift
1679                 sh 1>&4 -c "\$*"
1680                 echo " "
1681                 $myecho
1682                 ;;
1683         "\$ans")
1684                 case "\$ans" in
1685                 \\&*)
1686                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1687                         shift
1688                         case "\$1" in
1689                         -d)
1690                                 fastread=yes
1691                                 echo "(OK, I'll run with -d after this question.)" >&4
1692                                 ;;
1693                         -*)
1694                                 echo "*** Sorry, \$1 not supported yet." >&4
1695                                 ;;
1696                         esac
1697                         $myecho
1698                         ans=!
1699                         ;;
1700                 esac;;
1701         *)
1702                 case "\$aok" in
1703                 y)
1704                         echo "*** Substitution done -- please confirm."
1705                         xxxm="\$ans"
1706                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1707                         xxxm="\$ans"
1708                         ans=!
1709                         ;;
1710                 *)
1711                         echo "*** Error -- try again."
1712                         ans=!
1713                         ;;
1714                 esac
1715                 $myecho
1716                 ;;
1717         esac
1718         case "\$ans\$xxxm\$nostick" in
1719         '')
1720                 ans=!
1721                 $myecho
1722                 ;;
1723         esac
1724 done
1725 case "\$ans" in
1726 '') ans="\$xxxm";;
1727 esac
1728 EOSC
1729
1730 : create .config dir to save info across Configure sessions
1731 test -d ../.config || mkdir ../.config
1732 cat >../.config/README <<EOF
1733 This directory created by Configure to save information that should
1734 persist across sessions for $package.
1735
1736 You may safely delete it if you wish.
1737 EOF
1738
1739 : general instructions
1740 needman=true
1741 firsttime=true
1742 user=`(logname) 2>/dev/null`
1743 case "$user" in
1744 '') user=`whoami 2>&1`;;
1745 esac
1746 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1747         firsttime=false
1748         echo " "
1749         rp='Would you like to see the instructions?'
1750         dflt=n
1751         . ./myread
1752         case "$ans" in
1753         [yY]*) ;;
1754         *) needman=false;;
1755         esac
1756 fi
1757 if $needman; then
1758         cat <<EOH
1759
1760 This installation shell script will examine your system and ask you questions
1761 to determine how the perl5 package should be installed. If you get
1762 stuck on a question, you may use a ! shell escape to start a subshell or
1763 execute a command.  Many of the questions will have default answers in square
1764 brackets; typing carriage return will give you the default.
1765
1766 On some of the questions which ask for file or directory names you are allowed
1767 to use the ~name construct to specify the login directory belonging to "name",
1768 even if you don't have a shell which knows about that.  Questions where this is
1769 allowed will be marked "(~name ok)".
1770
1771 EOH
1772         rp=''
1773         dflt='Type carriage return to continue'
1774         . ./myread
1775         cat <<'EOH'
1776
1777 The prompter used in this script allows you to use shell variables and
1778 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1779 in the default answer, as if the default line was a set of arguments given to a
1780 script shell.  This means you may also use $* to repeat the whole default line,
1781 so you do not have to re-type everything to add something to the default.
1782
1783 Everytime there is a substitution, you will have to confirm.  If there is an
1784 error (e.g. an unmatched backtick), the default answer will remain unchanged
1785 and you will be prompted again.
1786
1787 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1788 the questions and use the computed defaults (or the previous answers if there
1789 was already a config.sh file). Type 'Configure -h' for a list of options.
1790 You may also start interactively and then answer '& -d' at any prompt to turn
1791 on the non-interactive behaviour for the remainder of the execution.
1792
1793 EOH
1794         . ./myread
1795         cat <<EOH
1796
1797 Much effort has been expended to ensure that this shell script will run on any
1798 Unix system.  If despite that it blows up on yours, your best bet is to edit
1799 Configure and run it again.  If you can't run Configure for some reason,
1800 you'll have to generate a config.sh file by hand.  Whatever problems you
1801 have, let me (perlbug@perl.com) know how I blew it.
1802
1803 This installation script affects things in two ways:
1804
1805 1) it may do direct variable substitutions on some of the files included
1806    in this kit.
1807 2) it builds a config.h file for inclusion in C programs.  You may edit
1808    any of these files as the need arises after running this script.
1809
1810 If you make a mistake on a question, there is no easy way to back up to it
1811 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1812 files.  Configure will offer to let you do this before it runs the SH files.
1813
1814 EOH
1815         dflt='Type carriage return to continue'
1816         . ./myread
1817         case "$firsttime" in
1818         true) echo $user >>../.config/instruct;;
1819         esac
1820 fi
1821
1822 : find out where common programs are
1823 echo " "
1824 echo "Locating common programs..." >&4
1825 cat <<EOSC >loc
1826 $startsh
1827 case \$# in
1828 0) exit 1;;
1829 esac
1830 thing=\$1
1831 shift
1832 dflt=\$1
1833 shift
1834 for dir in \$*; do
1835         case "\$thing" in
1836         .)
1837         if test -d \$dir/\$thing; then
1838                 echo \$dir
1839                 exit 0
1840         fi
1841         ;;
1842         *)
1843         for thisthing in \$dir/\$thing; do
1844                 : just loop through to pick last item
1845         done
1846         if test -f \$thisthing; then
1847                 echo \$thisthing
1848                 exit 0
1849         elif test -f \$dir/\$thing.exe; then
1850                 if test -n "$DJGPP"; then
1851                         echo \$dir/\$thing.exe
1852                 else
1853                         : on Eunice apparently
1854                         echo \$dir/\$thing
1855                 fi
1856                 exit 0
1857         fi
1858         ;;
1859         esac
1860 done
1861 echo \$dflt
1862 exit 1
1863 EOSC
1864 chmod +x loc
1865 $eunicefix loc
1866 loclist="
1867 awk
1868 cat
1869 comm
1870 cp
1871 echo
1872 expr
1873 grep
1874 ls
1875 make
1876 mkdir
1877 rm
1878 sed
1879 sort
1880 touch
1881 tr
1882 uniq
1883 "
1884 trylist="
1885 Mcc
1886 ar
1887 byacc
1888 cpp
1889 csh
1890 date
1891 egrep
1892 gzip
1893 less
1894 ln
1895 more
1896 nm
1897 nroff
1898 pg
1899 test
1900 uname
1901 zip
1902 "
1903 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1904 pth="$pth /lib /usr/lib"
1905 for file in $loclist; do
1906         eval xxx=\$$file
1907         case "$xxx" in
1908         /*|?:[\\/]*)
1909                 if test -f "$xxx"; then
1910                         : ok
1911                 else
1912                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1913                         xxx=`./loc $file $file $pth`
1914                 fi
1915                 ;;
1916         '') xxx=`./loc $file $file $pth`;;
1917         *) xxx=`./loc $xxx $xxx $pth`;;
1918         esac
1919         eval $file=$xxx
1920         eval _$file=$xxx
1921         case "$xxx" in
1922         /*)
1923                 echo $file is in $xxx.
1924                 ;;
1925         ?:[\\/]*)
1926                 echo $file is in $xxx.
1927                 ;;
1928         *)
1929                 echo "I don't know where '$file' is, and my life depends on it." >&4
1930                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1931                 exit 1
1932                 ;;
1933         esac
1934 done
1935 echo " "
1936 echo "Don't worry if any of the following aren't found..."
1937 say=offhand
1938 for file in $trylist; do
1939         eval xxx=\$$file
1940         case "$xxx" in
1941         /*|?:[\\/]*)
1942                 if test -f "$xxx"; then
1943                         : ok
1944                 else
1945                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1946                         xxx=`./loc $file $file $pth`
1947                 fi
1948                 ;;
1949         '') xxx=`./loc $file $file $pth`;;
1950         *) xxx=`./loc $xxx $xxx $pth`;;
1951         esac
1952         eval $file=$xxx
1953         eval _$file=$xxx
1954         case "$xxx" in
1955         /*)
1956                 echo $file is in $xxx.
1957                 ;;
1958         ?:[\\/]*)
1959                 echo $file is in $xxx.
1960                 ;;
1961         *)
1962                 echo "I don't see $file out there, $say."
1963                 say=either
1964                 ;;
1965         esac
1966 done
1967 case "$egrep" in
1968 egrep)
1969         echo "Substituting grep for egrep."
1970         egrep=$grep
1971         ;;
1972 esac
1973 case "$ln" in
1974 ln)
1975         echo "Substituting cp for ln."
1976         ln=$cp
1977         ;;
1978 esac
1979 case "$test" in
1980 test)
1981         echo "Hopefully test is built into your sh."
1982         ;;
1983 *)
1984         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1985                 echo "Using the test built into your sh."
1986                 test=test
1987                 _test=test
1988         fi
1989         ;;
1990 esac
1991 case "$echo" in
1992 echo)
1993         echo "Hopefully echo is built into your sh."
1994         ;;
1995 '') ;;
1996 *)
1997         echo " "
1998 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1999         $echo $n "hi there$c" >foo1
2000         echo $n "hi there$c" >foo2
2001         if cmp foo1 foo2 >/dev/null 2>&1; then
2002                 echo "They are compatible.  In fact, they may be identical."
2003         else
2004                 case "$n" in
2005                 '-n') n='' c='\c';;
2006                 *) n='-n' c='';;
2007                 esac
2008                 cat <<FOO
2009 They are not compatible!  You are probably running ksh on a non-USG system.
2010 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2011 have echo built in and we may have to run some Bourne shell scripts.  That
2012 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2013
2014 FOO
2015                 $echo $n "The star should be here-->$c"
2016                 $echo "*"
2017         fi
2018         $rm -f foo1 foo2
2019         ;;
2020 esac
2021
2022 : determine whether symbolic links are supported
2023 echo " "
2024 $touch blurfl
2025 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2026         echo "Symbolic links are supported." >&4
2027         lns="$ln -s"
2028 else
2029         echo "Symbolic links are NOT supported." >&4
2030         lns="$ln"
2031 fi
2032 $rm -f blurfl sym
2033
2034 : see whether [:lower:] and [:upper:] are supported character classes
2035 echo " "
2036 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2037 ABYZ)
2038         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2039         up='[:upper:]'
2040         low='[:lower:]'
2041         ;;
2042 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2043         # (0xc9 and 0xd1), therefore that is a nice testing point.
2044         if test "X$up" = X -o "X$low" = X; then
2045             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2046             ij) up='[A-Z]'
2047                 low='[a-z]'
2048                 ;;
2049             esac
2050         fi
2051         if test "X$up" = X -o "X$low" = X; then
2052             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2053             ij) up='A-Z'
2054                 low='a-z'
2055                 ;;
2056             esac
2057         fi
2058         if test "X$up" = X -o "X$low" = X; then
2059             case "`echo IJ | od -x 2>/dev/null`" in
2060             *C9D1*|*c9d1*)
2061                 echo "Hey, this might be EBCDIC." >&4
2062                 if test "X$up" = X -o "X$low" = X; then
2063                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2064                     ij) up='[A-IJ-RS-Z]'
2065                         low='[a-ij-rs-z]'
2066                         ;;
2067                     esac
2068                 fi
2069                 if test "X$up" = X -o "X$low" = X; then
2070                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2071                     ij) up='A-IJ-RS-Z'
2072                         low='a-ij-rs-z'
2073                         ;;
2074                     esac
2075                 fi
2076                 ;;
2077             esac
2078         fi
2079 esac
2080 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2081 ij)
2082     echo "Using $up and $low to convert case." >&4
2083     ;;
2084 *)
2085     echo "I don't know how to translate letters from upper to lower case." >&4
2086     echo "Your tr is not acting any way I know of." >&4
2087     exit 1
2088     ;;
2089 esac
2090 : set up the translation script tr, must be called with ./tr of course
2091 cat >tr <<EOSC
2092 $startsh
2093 case "\$1\$2" in
2094 '[A-Z][a-z]') exec $tr '$up' '$low';;
2095 '[a-z][A-Z]') exec $tr '$low' '$up';;
2096 esac
2097 exec $tr "\$@"
2098 EOSC
2099 chmod +x tr
2100 $eunicefix tr
2101
2102 : Try to determine whether config.sh was made on this system
2103 case "$config_sh" in
2104 '')
2105 myuname=`$uname -a 2>/dev/null`
2106 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2107 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2108 # because the A-Z/a-z are not consecutive.
2109 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2110         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2111 newmyuname="$myuname"
2112 dflt=n
2113 case "$knowitall" in
2114 '')
2115         if test -f ../config.sh; then
2116                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2117                         eval "`grep myuname= ../config.sh`"
2118                 fi
2119                 if test "X$myuname" = "X$newmyuname"; then
2120                         dflt=y
2121                 fi
2122         fi
2123         ;;
2124 *) dflt=y;;
2125 esac
2126
2127 : Get old answers from old config file if Configure was run on the
2128 : same system, otherwise use the hints.
2129 hint=default
2130 cd ..
2131 if test -f config.sh; then
2132         echo " "
2133         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2134         . UU/myread
2135         case "$ans" in
2136         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2137         *)  echo "Fetching default answers from your old config.sh file..." >&4
2138                 tmp_n="$n"
2139                 tmp_c="$c"
2140                 tmp_sh="$sh"
2141                 . ./config.sh
2142                 cp config.sh UU
2143                 n="$tmp_n"
2144                 c="$tmp_c"
2145                 : Older versions did not always set $sh.  Catch re-use of such
2146                 : an old config.sh.
2147                 case "$sh" in
2148                 '') sh="$tmp_sh" ;;
2149                 esac
2150                 hint=previous
2151                 ;;
2152         esac
2153 fi
2154 if test ! -f config.sh; then
2155         $cat <<EOM
2156
2157 First time through, eh?  I have some defaults handy for some systems
2158 that need some extra help getting the Configure answers right:
2159
2160 EOM
2161         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2162         dflt=''
2163         : Half the following guesses are probably wrong... If you have better
2164         : tests or hints, please send them to perlbug@perl.com
2165         : The metaconfig authors would also appreciate a copy...
2166         $test -f /irix && osname=irix
2167         $test -f /xenix && osname=sco_xenix
2168         $test -f /dynix && osname=dynix
2169         $test -f /dnix && osname=dnix
2170         $test -f /lynx.os && osname=lynxos
2171         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2172         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2173         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2174         $test -f /bin/mips && /bin/mips && osname=mips
2175         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2176                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2177         $test -d /usr/apollo/bin && osname=apollo
2178         $test -f /etc/saf/_sactab && osname=svr4
2179         $test -d /usr/include/minix && osname=minix
2180         if $test -d /MachTen -o -d /MachTen_Folder; then
2181                 osname=machten
2182                 if $test -x /sbin/version; then
2183                         osvers=`/sbin/version | $awk '{print $2}' |
2184                         $sed -e 's/[A-Za-z]$//'`
2185                 elif $test -x /usr/etc/version; then
2186                         osvers=`/usr/etc/version | $awk '{print $2}' |
2187                         $sed -e 's/[A-Za-z]$//'`
2188                 else
2189                         osvers="$2.$3"
2190                 fi
2191         fi
2192
2193         $test -f /sys/posix.dll &&
2194                 $test -f /usr/bin/what &&
2195                 set X `/usr/bin/what /sys/posix.dll` &&
2196                 $test "$3" = UWIN &&
2197                 osname=uwin &&
2198                 osvers="$5"
2199
2200         if $test -f $uname; then
2201                 set X $myuname
2202                 shift
2203
2204                 case "$5" in
2205                 fps*) osname=fps ;;
2206                 mips*)
2207                         case "$4" in
2208                         umips) osname=umips ;;
2209                         *) osname=mips ;;
2210                         esac;;
2211                 [23]100) osname=mips ;;
2212                 next*) osname=next ;;
2213                 i386*)
2214                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2215                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2216                                 osname='sco'
2217                                 osvers=$tmp
2218                         elif $test -f /etc/kconfig; then
2219                                 osname=isc
2220                                 if test "$lns" = "$ln -s"; then
2221                                         osvers=4
2222                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2223                                         osvers=3
2224                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2225                                         osvers=2
2226                                 fi
2227                         fi
2228                         tmp=''
2229                         ;;
2230                 pc*)
2231                         if test -n "$DJGPP"; then
2232                                 osname=dos
2233                                 osvers=djgpp
2234                         fi
2235                         ;;
2236                 esac
2237
2238                 case "$1" in
2239                 aix) osname=aix
2240                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2241                         case "$tmp" in
2242                         'not found') osvers="$4"."$3" ;;
2243                         '<3240'|'<>3240') osvers=3.2.0 ;;
2244                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2245                         '=3250'|'>3250') osvers=3.2.5 ;;
2246                         *) osvers=$tmp;;
2247                         esac
2248                         ;;
2249                 bsd386) osname=bsd386
2250                         osvers=`$uname -r`
2251                         ;;
2252                 cygwin*) osname=cygwin
2253                         osvers="$3"
2254                         ;;
2255                 *dc.osx) osname=dcosx
2256                         osvers="$3"
2257                         ;;
2258                 dnix) osname=dnix
2259                         osvers="$3"
2260                         ;;
2261                 domainos) osname=apollo
2262                         osvers="$3"
2263                         ;;
2264                 dgux) osname=dgux 
2265                         osvers="$3"
2266                         ;;
2267                 dynixptx*) osname=dynixptx
2268                         osvers=`echo "$4"|sed 's/^v//'`
2269                         ;;
2270                 freebsd) osname=freebsd 
2271                         osvers="$3" ;;
2272                 genix) osname=genix ;;
2273                 hp*) osname=hpux 
2274                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2275                         ;;
2276                 irix*) osname=irix
2277                         case "$3" in
2278                         4*) osvers=4 ;;
2279                         5*) osvers=5 ;;
2280                         *)      osvers="$3" ;;
2281                         esac
2282                         ;;
2283                 linux) osname=linux
2284                         case "$3" in
2285                         *)      osvers="$3" ;;
2286                         esac
2287                         ;;
2288                 MiNT) osname=mint
2289                         ;;
2290                 netbsd*) osname=netbsd
2291                         osvers="$3"
2292                         ;;
2293                 news-os) osvers="$3"
2294                         case "$3" in
2295                         4*) osname=newsos4 ;;
2296                         *) osname=newsos ;;
2297                         esac
2298                         ;;
2299                 next*) osname=next ;;
2300                 POSIX-BC | posix-bc ) osname=posix-bc
2301                         osvers="$3"
2302                         ;;
2303                 powerux | power_ux | powermax_os | powermaxos | \
2304                 powerunix | power_unix) osname=powerux
2305                         osvers="$3"
2306                         ;;
2307                 qnx) osname=qnx
2308                         osvers="$4"
2309                         ;;
2310                 solaris) osname=solaris
2311                         case "$3" in
2312                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2313                         *)      osvers="$3" ;;
2314                         esac
2315                         ;;
2316                 sunos) osname=sunos
2317                         case "$3" in
2318                         5*) osname=solaris
2319                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2320                         *)      osvers="$3" ;;
2321                         esac
2322                         ;;
2323                 titanos) osname=titanos
2324                         case "$3" in
2325                         1*) osvers=1 ;;
2326                         2*) osvers=2 ;;
2327                         3*) osvers=3 ;;
2328                         4*) osvers=4 ;;
2329                         *)      osvers="$3" ;;
2330                         esac
2331                         ;;
2332                 ultrix) osname=ultrix
2333                         osvers="$3"
2334                         ;;
2335                 osf1|mls+)      case "$5" in
2336                                 alpha)
2337                                         osname=dec_osf
2338                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2339                                         ;;
2340                         hp*)    osname=hp_osf1  ;;
2341                         mips)   osname=mips_osf1 ;;
2342                         esac
2343                         ;;
2344                 unixware) osname=svr5
2345                         osvers="$4"
2346                         ;;
2347                 uts) osname=uts
2348                         osvers="$3"
2349                         ;;
2350                 $2) case "$osname" in
2351                         *isc*) ;;
2352                         *freebsd*) ;;
2353                         svr*)
2354                                 : svr4.x or possibly later
2355                                 case "svr$3" in 
2356                                 ${osname}*)
2357                                         osname=svr$3
2358                                         osvers=$4
2359                                         ;;
2360                                 esac
2361                                 case "$osname" in
2362                                 svr4.0)
2363                                         : Check for ESIX
2364                                         if test -f /stand/boot ; then
2365                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2366                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2367                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2368                                                         if test -n "$isesix"; then
2369                                                                 osname=esix4
2370                                                         fi
2371                                                 fi
2372                                         fi
2373                                         ;;
2374                                 esac
2375                                 ;;
2376                         *)      if test -f /etc/systemid; then
2377                                         osname=sco
2378                                         set `echo $3 | $sed 's/\./ /g'` $4
2379                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2380                                                 osvers=$1.$2.$3
2381                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2382                                                 osvers=$1.$2
2383                                         elif $test -f $src/hints/sco_$1.sh; then
2384                                                 osvers=$1
2385                                         fi
2386                                 else
2387                                         case "$osname" in
2388                                         '') : Still unknown.  Probably a generic Sys V.
2389                                                 osname="sysv"
2390                                                 osvers="$3"
2391                                                 ;;
2392                                         esac
2393                                 fi
2394                                 ;;
2395                         esac
2396                         ;;
2397                 *)      case "$osname" in
2398                         '') : Still unknown.  Probably a generic BSD.
2399                                 osname="$1"
2400                                 osvers="$3"
2401                                 ;;
2402                         esac
2403                         ;;
2404                 esac
2405         else
2406                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2407                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2408                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2409                                 osname=news_os
2410                         fi
2411                         $rm -f UU/kernel.what
2412                 elif test -d c:/.; then
2413                         set X $myuname
2414                         osname=os2
2415                         osvers="$5"
2416                 fi
2417         fi
2418         
2419         : Now look for a hint file osname_osvers, unless one has been
2420         : specified already.
2421         case "$hintfile" in
2422         ''|' ')
2423                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2424                 : Also try without trailing minor version numbers.
2425                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2426                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2427                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2428                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2429                 case "$file" in
2430                 '') dflt=none ;;
2431                 *)  case "$osvers" in
2432                         '') dflt=$file
2433                                 ;;
2434                         *)  if $test -f $src/hints/$file.sh ; then
2435                                         dflt=$file
2436                                 elif $test -f $src/hints/$xfile.sh ; then
2437                                         dflt=$xfile
2438                                 elif $test -f $src/hints/$xxfile.sh ; then
2439                                         dflt=$xxfile
2440                                 elif $test -f $src/hints/$xxxfile.sh ; then
2441                                         dflt=$xxxfile
2442                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2443                                         dflt=$xxxxfile
2444                                 elif $test -f "$src/hints/${osname}.sh" ; then
2445                                         dflt="${osname}"
2446                                 else
2447                                         dflt=none
2448                                 fi
2449                                 ;;
2450                         esac
2451                         ;;
2452                 esac
2453                 if $test -f Policy.sh ; then
2454                         case "$dflt" in
2455                         *Policy*) ;;
2456                         none) dflt="Policy" ;;
2457                         *) dflt="Policy $dflt" ;;
2458                         esac
2459                 fi
2460                 ;;
2461         *)
2462                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2463                 ;;
2464         esac
2465
2466         if $test -f Policy.sh ; then
2467                 $cat <<EOM
2468
2469 There's also a Policy hint file available, which should make the
2470 site-specific (policy) questions easier to answer.
2471 EOM
2472
2473         fi
2474
2475         $cat <<EOM
2476
2477 You may give one or more space-separated answers, or "none" if appropriate.
2478 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2479 is a good thing.  DO NOT give a wrong version or a wrong OS.
2480
2481 EOM
2482
2483         rp="Which of these apply, if any?"
2484         . UU/myread
2485         tans=$ans
2486         for file in $tans; do
2487                 if $test X$file = XPolicy -a -f Policy.sh; then
2488                         . Policy.sh
2489                         $cat Policy.sh >> UU/config.sh
2490                 elif $test -f $src/hints/$file.sh; then
2491                         . $src/hints/$file.sh
2492                         $cat $src/hints/$file.sh >> UU/config.sh
2493                 elif $test X$tans = X -o X$tans = Xnone ; then
2494                         : nothing
2495                 else
2496                         : Give one chance to correct a possible typo.
2497                         echo "$file.sh does not exist"
2498                         dflt=$file
2499                         rp="hint to use instead?"
2500                         . UU/myread
2501                         for file in $ans; do
2502                                 if $test -f "$src/hints/$file.sh"; then
2503                                         . $src/hints/$file.sh
2504                                         $cat $src/hints/$file.sh >> UU/config.sh
2505                                 elif $test X$ans = X -o X$ans = Xnone ; then
2506                                         : nothing
2507                                 else
2508                                         echo "$file.sh does not exist -- ignored."
2509                                 fi
2510                         done
2511                 fi
2512         done
2513
2514         hint=recommended
2515         : Remember our hint file for later.
2516         if $test -f "$src/hints/$file.sh" ; then
2517                 hintfile="$file"
2518         else
2519                 hintfile=''
2520         fi
2521 fi
2522 cd UU
2523 ;;
2524 *)
2525         echo " "
2526         echo "Fetching default answers from $config_sh..." >&4
2527         tmp_n="$n"
2528         tmp_c="$c"
2529         cd ..
2530         cp $config_sh config.sh 2>/dev/null
2531         chmod +w config.sh
2532         . ./config.sh
2533         cd UU
2534         cp ../config.sh .
2535         n="$tmp_n"
2536         c="$tmp_c"
2537         hint=previous
2538         ;;
2539 esac
2540 test "$override" && . ./optdef.sh
2541 myuname="$newmyuname"
2542
2543 : Restore computed paths
2544 for file in $loclist $trylist; do
2545         eval $file="\$_$file"
2546 done
2547
2548 cat << EOM
2549
2550 Configure uses the operating system name and version to set some defaults.
2551 The default value is probably right if the name rings a bell. Otherwise,
2552 since spelling matters for me, either accept the default or answer "none"
2553 to leave it blank.
2554
2555 EOM
2556 case "$osname" in
2557         ''|' ')
2558                 case "$hintfile" in
2559                 ''|' '|none) dflt=none ;;
2560                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2561                 esac
2562                 ;;
2563         *) dflt="$osname" ;;
2564 esac
2565 rp="Operating system name?"
2566 . ./myread
2567 case "$ans" in
2568 none)  osname='' ;;
2569 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2570 esac
2571 echo " "
2572 case "$osvers" in
2573         ''|' ')
2574                 case "$hintfile" in
2575                 ''|' '|none) dflt=none ;;
2576                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2577                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2578                         case "$dflt" in
2579                         ''|' ') dflt=none ;;
2580                         esac
2581                         ;;
2582                 esac
2583                 ;;
2584         *) dflt="$osvers" ;;
2585 esac
2586 rp="Operating system version?"
2587 . ./myread
2588 case "$ans" in
2589 none)  osvers='' ;;
2590 *) osvers="$ans" ;;
2591 esac
2592
2593
2594 . ./posthint.sh
2595
2596 : who configured the system
2597 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2598 cf_by=`(logname) 2>/dev/null`
2599 case "$cf_by" in
2600 "")
2601         cf_by=`(whoami) 2>/dev/null`
2602         case "$cf_by" in
2603         "") cf_by=unknown ;;
2604         esac ;;
2605 esac
2606
2607 : set up the script used to warn in case of inconsistency
2608 cat <<EOS >whoa
2609 $startsh
2610 EOS
2611 cat <<'EOSC' >>whoa
2612 dflt=y
2613 echo " "
2614 echo "*** WHOA THERE!!! ***" >&4
2615 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2616 rp="    Keep the $hint value?"
2617 . ./myread
2618 case "$ans" in
2619 y) td=$was; tu=$was;;
2620 esac
2621 EOSC
2622
2623 : function used to set $1 to $val
2624 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2625 case "$val$was" in
2626 $define$undef) . ./whoa; eval "$var=\$td";;
2627 $undef$define) . ./whoa; eval "$var=\$tu";;
2628 *) eval "$var=$val";;
2629 esac'
2630
2631 case "$usethreads" in
2632 $define|true|[yY]*)     dflt='y';;
2633 *) dflt='n';;
2634 esac
2635 cat <<EOM
2636
2637 Perl can be built to take advantage of threads on some systems.
2638 To do so, Configure can be run with -Dusethreads.
2639
2640 Note that threading is a highly experimental feature, and
2641 some known race conditions still remain.  If you choose to try
2642 it, be very sure to not actually deploy it for production
2643 purposes.  README.threads has more details, and is required
2644 reading if you enable threads.
2645
2646 If this doesn't make any sense to you, just accept the default '$dflt'.
2647 EOM
2648 rp='Build a threading Perl?'
2649 . ./myread
2650 case "$ans" in
2651 y|Y)    val="$define" ;;
2652 *)      val="$undef" ;;
2653 esac
2654 set usethreads
2655 eval $setvar
2656
2657 case "$usethreads" in
2658 $define)
2659         $cat <<EOM
2660
2661 As of 5.5.640, Perl has two different internal threading implementations,
2662 the 5.005 version (5005threads) and an interpreter-based version
2663 (ithreads) that has one interpreter per thread.  Both are very 
2664 experimental.  This arrangement exists to help developers work out
2665 which one is better.
2666
2667 If you're a casual user, you probably don't want interpreter-threads
2668 at this time.  There doesn't yet exist a way to create threads from
2669 within Perl in this model, i.e., "use Thread;" will NOT work.
2670 EOM
2671         : Default to ithreads unless overridden on command line or with
2672         : old config.sh
2673         dflt='y'
2674         case "$use5005threads" in
2675                 $define|true|[yY]*) dflt='n';;
2676         esac
2677         case "$useithreads" in
2678                 $undef|false|[nN]*) dflt='n';;
2679         esac
2680         rp='Use interpreter-based ithreads?'
2681         . ./myread
2682         case "$ans" in
2683         y|Y)    val="$define" ;;
2684         *)      val="$undef" ;;
2685         esac
2686         set useithreads
2687         eval $setvar
2688         : Now set use5005threads to the opposite value.
2689         case "$useithreads" in
2690         $define) val="$undef" ;;
2691         *) val="$define" ;;
2692         esac
2693         set use5005threads
2694         eval $setvar
2695         ;;
2696 *)
2697         useithreads="$undef"
2698         use5005threads="$undef"
2699         ;;
2700 esac
2701
2702 case "$d_oldpthreads" in
2703 '')     : Configure tests would be welcome here.  For now, assume undef.
2704         val="$undef" ;;
2705 *)      val="$d_oldpthreads" ;;
2706 esac
2707 set d_oldpthreads
2708 eval $setvar
2709
2710
2711 case "$usethreads" in
2712 "$define"|true|[yY]*)
2713 : Look for a hint-file generated 'call-back-unit'.  If the
2714 : user has specified that a threading perl is to be built,
2715 : we may need to set or change some other defaults.
2716         if $test -f usethreads.cbu; then
2717                 echo "Your platform has some specific hints for threaded builds, using them..."
2718                 . ./usethreads.cbu
2719         else
2720                 $cat <<EOM
2721 (Your platform doesn't have any specific hints for threaded builds.
2722  Assuming POSIX threads, then.)
2723 EOM
2724         fi
2725         ;;
2726 esac
2727
2728 cat <<EOM
2729
2730 Perl can be built so that multiple Perl interpreters can coexist
2731 within the same Perl executable.
2732 EOM
2733
2734 case "$useithreads" in
2735 $define)
2736         cat <<EOM
2737 This multiple interpreter support is required for interpreter-based threads.
2738 EOM
2739         val="$define"
2740         ;;
2741 *)      case "$usemultiplicity" in
2742         $define|true|[yY]*)     dflt='y';;
2743         *) dflt='n';;
2744         esac
2745         echo " "
2746         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2747         rp='Build Perl for multiplicity?'
2748         . ./myread
2749         case "$ans" in
2750         y|Y)    val="$define" ;;
2751         *)      val="$undef" ;;
2752         esac
2753         ;;
2754 esac
2755 set usemultiplicity
2756 eval $setvar
2757
2758 : determine where manual pages are on this system
2759 echo " "
2760 case "$sysman" in
2761 '') 
2762         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2763         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2764         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2765         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2766         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2767         sysman=`./loc . /usr/man/man1 $syspath`
2768         ;;
2769 esac
2770 if $test -d "$sysman"; then
2771         echo "System manual is in $sysman." >&4
2772 else
2773         echo "Could not find manual pages in source form." >&4
2774 fi
2775
2776 : see what memory models we can support
2777 case "$models" in
2778 '')
2779         $cat >pdp11.c <<'EOP'
2780 int main() {
2781 #ifdef pdp11
2782         exit(0);
2783 #else
2784         exit(1);
2785 #endif
2786 }
2787 EOP
2788         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2789         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2790                 dflt='unsplit split'
2791         else
2792                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2793                 case "$tans" in
2794                 X) dflt='none';;
2795                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2796                                 dflt='small'
2797                         else
2798                                 dflt=''
2799                         fi
2800                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2801                                 dflt="$dflt medium"
2802                         fi
2803                         if $test -d /lib/large || $test -d /usr/lib/large; then
2804                                 dflt="$dflt large"
2805                         fi
2806                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2807                                 dflt="$dflt huge"
2808                         fi
2809                 esac
2810         fi;;
2811 *) dflt="$models";;
2812 esac
2813 $cat <<EOM
2814  
2815 Some systems have different model sizes.  On most systems they are called
2816 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2817 split.  If your system doesn't support different memory models, say "none".
2818 If you wish to force everything to one memory model, say "none" here and
2819 put the appropriate flags later when it asks you for other cc and ld flags.
2820 Venix systems may wish to put "none" and let the compiler figure things out.
2821 (In the following question multiple model names should be space separated.)
2822
2823 The default for most systems is "none".
2824
2825 EOM
2826 rp="Which memory models are supported?"
2827 . ./myread
2828 models="$ans"
2829
2830 case "$models" in
2831 none)
2832         small=''
2833         medium=''
2834         large=''
2835         huge=''
2836         unsplit=''
2837         split=''
2838         ;;
2839 *split)
2840         case "$split" in
2841         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2842                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2843                         dflt='-i'
2844                 else
2845                         dflt='none'
2846                 fi;;
2847         *) dflt="$split";;
2848         esac
2849         rp="What flag indicates separate I and D space?"
2850         . ./myread
2851         tans="$ans"
2852         case "$tans" in
2853         none) tans='';;
2854         esac
2855         split="$tans"
2856         unsplit='';;
2857 *large*|*small*|*medium*|*huge*)
2858         case "$models" in
2859         *large*)
2860                 case "$large" in
2861                 '') dflt='-Ml';;
2862                 *) dflt="$large";;
2863                 esac
2864         rp="What flag indicates large model?"
2865         . ./myread
2866         tans="$ans"
2867         case "$tans" in
2868         none) tans='';
2869         esac
2870         large="$tans";;
2871         *) large='';;
2872         esac
2873         case "$models" in
2874         *huge*) case "$huge" in
2875                 '') dflt='-Mh';;
2876                 *) dflt="$huge";;
2877                 esac
2878                 rp="What flag indicates huge model?"
2879                 . ./myread
2880                 tans="$ans"
2881                 case "$tans" in
2882                 none) tans='';
2883                 esac
2884                 huge="$tans";;
2885         *) huge="$large";;
2886         esac
2887         case "$models" in
2888         *medium*) case "$medium" in
2889                 '') dflt='-Mm';;
2890                 *) dflt="$medium";;
2891                 esac
2892                 rp="What flag indicates medium model?"
2893                 . ./myread
2894                 tans="$ans"
2895                 case "$tans" in
2896                 none) tans='';
2897                 esac
2898                 medium="$tans";;
2899         *) medium="$large";;
2900         esac
2901         case "$models" in
2902         *small*) case "$small" in
2903                 '') dflt='none';;
2904                 *) dflt="$small";;
2905                 esac
2906                 rp="What flag indicates small model?"
2907                 . ./myread
2908                 tans="$ans"
2909                 case "$tans" in
2910                 none) tans='';
2911                 esac
2912                 small="$tans";;
2913         *) small='';;
2914         esac
2915         ;;
2916 *)
2917         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2918         ;;
2919 esac
2920 $rm -f pdp11.* pdp11
2921
2922 : make some quick guesses about what we are up against
2923 echo " "
2924 $echo $n "Hmm...  $c"
2925 echo exit 1 >bsd
2926 echo exit 1 >usg
2927 echo exit 1 >v7
2928 echo exit 1 >osf1
2929 echo exit 1 >eunice
2930 echo exit 1 >xenix
2931 echo exit 1 >venix
2932 echo exit 1 >os2
2933 d_bsd="$undef"
2934 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2935 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2936 then
2937         echo "Looks kind of like an OSF/1 system, but we'll see..."
2938         echo exit 0 >osf1
2939 elif test `echo abc | tr a-z A-Z` = Abc ; then
2940         xxx=`./loc addbib blurfl $pth`
2941         if $test -f $xxx; then
2942         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2943                 echo exit 0 >bsd
2944                 echo exit 0 >usg
2945         else
2946                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2947                         echo "Looks kind of like an extended USG system, but we'll see..."
2948                 else
2949                         echo "Looks kind of like a USG system, but we'll see..."
2950                 fi
2951                 echo exit 0 >usg
2952         fi
2953 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2954         echo "Looks kind of like a BSD system, but we'll see..."
2955         d_bsd="$define"
2956         echo exit 0 >bsd
2957 else
2958         echo "Looks kind of like a Version 7 system, but we'll see..."
2959         echo exit 0 >v7
2960 fi
2961 case "$eunicefix" in
2962 *unixtovms*)
2963         $cat <<'EOI'
2964 There is, however, a strange, musty smell in the air that reminds me of
2965 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2966 EOI
2967         echo exit 0 >eunice
2968         d_eunice="$define"
2969 : it so happens the Eunice I know will not run shell scripts in Unix format
2970         ;;
2971 *)
2972         echo " "
2973         echo "Congratulations.  You aren't running Eunice."
2974         d_eunice="$undef"
2975         ;;
2976 esac
2977 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2978 case "$p_" in
2979 :) ;;
2980 *)
2981         $cat <<'EOI'
2982 I have the feeling something is not exactly right, however...don't tell me...
2983 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2984 EOI
2985         echo exit 0 >os2
2986         ;;
2987 esac
2988 if test -f /xenix; then
2989         echo "Actually, this looks more like a XENIX system..."
2990         echo exit 0 >xenix
2991         d_xenix="$define"
2992 else
2993         echo " "
2994         echo "It's not Xenix..."
2995         d_xenix="$undef"
2996 fi
2997 chmod +x xenix
2998 $eunicefix xenix
2999 if test -f /venix; then
3000         echo "Actually, this looks more like a VENIX system..."
3001         echo exit 0 >venix
3002 else
3003         echo " "
3004         if ./xenix; then
3005                 : null
3006         else
3007                 echo "Nor is it Venix..."
3008         fi
3009 fi
3010 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3011 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3012 $rm -f foo
3013
3014 : see if we need a special compiler
3015 echo " "
3016 if ./usg; then
3017         case "$cc" in
3018         '') case "$Mcc" in
3019                 /*) dflt='Mcc';;
3020                 *) case "$large" in
3021                         -M*) dflt='cc';;
3022                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3023                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3024                                                 dflt='cc'
3025                                         else
3026                                                 dflt='cc -M'
3027                                         fi
3028                                 else
3029                                         dflt='cc'
3030                                 fi;;
3031                         esac;;
3032                 esac;;
3033         *)  dflt="$cc";;
3034         esac
3035         case "$dflt" in
3036         *M*)    $cat <<'EOM'
3037 On some older systems the default C compiler will not resolve multiple global
3038 references that happen to have the same name.  On some such systems the "Mcc"
3039 command may be used to force these to be resolved.  On other systems a "cc -M"
3040 command is required.  (Note that the -M flag on other systems indicates a
3041 memory model to use!) If you have the Gnu C compiler, you might wish to use
3042 that instead.
3043
3044 EOM
3045         ;;
3046         esac
3047         rp="Use which C compiler?"
3048         . ./myread
3049         cc="$ans"
3050 else
3051         case "$cc" in
3052         '') dflt=cc;;
3053         *) dflt="$cc";;
3054         esac
3055         rp="Use which C compiler?"
3056         . ./myread
3057         cc="$ans"
3058 fi
3059 : Look for a hint-file generated 'call-back-unit'.  Now that the
3060 : user has specified the compiler, we may need to set or change some
3061 : other defaults.
3062 if $test -f cc.cbu; then
3063     . ./cc.cbu
3064 fi
3065 echo " "
3066 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3067 $cat >gccvers.c <<EOM
3068 #include <stdio.h>
3069 int main() {
3070 #ifdef __GNUC__
3071 #ifdef __VERSION__
3072         printf("%s\n", __VERSION__);
3073 #else
3074         printf("%s\n", "1");
3075 #endif
3076 #endif
3077         exit(0);
3078 }
3079 EOM
3080 if $cc $ldflags -o gccvers gccvers.c; then
3081         gccversion=`./gccvers`
3082         case "$gccversion" in
3083         '') echo "You are not using GNU cc." ;;
3084         *)  echo "You are using GNU cc $gccversion."
3085             ;;
3086         esac
3087 else
3088         echo " "
3089         echo "*** WHOA THERE!!! ***" >&4
3090         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3091         case "$knowitall" in
3092         '')
3093         echo "    You'd better start hunting for one and let me know about it." >&4
3094                 exit 1
3095                 ;;
3096         esac
3097 fi
3098 $rm -f gccvers*
3099 case "$gccversion" in
3100 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3101 esac
3102
3103 : decide how portable to be.  Allow command line overrides.
3104 case "$d_portable" in
3105 "$undef") ;;
3106 *)      d_portable="$define" ;;
3107 esac
3108
3109 : set up shell script to do ~ expansion
3110 cat >filexp <<EOSS
3111 $startsh
3112 : expand filename
3113 case "\$1" in
3114  ~/*|~)
3115         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3116         ;;
3117  ~*)
3118         if $test -f /bin/csh; then
3119                 /bin/csh -f -c "glob \$1"
3120                 failed=\$?
3121                 echo ""
3122                 exit \$failed
3123         else
3124                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3125                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3126                 if $test ! -d "\$dir"; then
3127                         me=\`basename \$0\`
3128                         echo "\$me: can't locate home directory for: \$name" >&2
3129                         exit 1
3130                 fi
3131                 case "\$1" in
3132                 */*)
3133                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3134                         ;;
3135                 *)
3136                         echo \$dir
3137                         ;;
3138                 esac
3139         fi
3140         ;;
3141 *)
3142         echo \$1
3143         ;;
3144 esac
3145 EOSS
3146 chmod +x filexp
3147 $eunicefix filexp
3148
3149 : now set up to get a file name
3150 cat <<EOS >getfile
3151 $startsh
3152 EOS
3153 cat <<'EOSC' >>getfile
3154 tilde=''
3155 fullpath=''
3156 already=''
3157 skip=''
3158 none_ok=''
3159 exp_file=''
3160 nopath_ok=''
3161 orig_rp="$rp"
3162 orig_dflt="$dflt"
3163 case "$gfpth" in
3164 '') gfpth='.' ;;
3165 esac
3166
3167 case "$fn" in
3168 *\(*)
3169         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3170         fn=`echo $fn | sed 's/(.*)//'`
3171         ;;
3172 esac
3173
3174 case "$fn" in
3175 *:*)
3176         loc_file=`expr $fn : '.*:\(.*\)'`
3177         fn=`expr $fn : '\(.*\):.*'`
3178         ;;
3179 esac
3180
3181 case "$fn" in
3182 *~*) tilde=true;;
3183 esac
3184 case "$fn" in
3185 */*) fullpath=true;;
3186 esac
3187 case "$fn" in
3188 *+*) skip=true;;
3189 esac
3190 case "$fn" in
3191 *n*) none_ok=true;;
3192 esac
3193 case "$fn" in
3194 *e*) exp_file=true;;
3195 esac
3196 case "$fn" in
3197 *p*) nopath_ok=true;;
3198 esac
3199
3200 case "$fn" in
3201 *f*) type='File';;
3202 *d*) type='Directory';;
3203 *l*) type='Locate';;
3204 esac
3205
3206 what="$type"
3207 case "$what" in
3208 Locate) what='File';;
3209 esac
3210
3211 case "$exp_file" in
3212 '')
3213         case "$d_portable" in
3214         "$define") ;;
3215         *) exp_file=true;;
3216         esac
3217         ;;
3218 esac
3219
3220 cd ..
3221 while test "$type"; do
3222         redo=''
3223         rp="$orig_rp"
3224         dflt="$orig_dflt"
3225         case "$tilde" in
3226         true) rp="$rp (~name ok)";;
3227         esac
3228         . UU/myread
3229         if test -f UU/getfile.ok && \
3230                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3231         then
3232                 value="$ans"
3233                 ansexp="$ans"
3234                 break
3235         fi
3236         case "$ans" in
3237         none)
3238                 value=''
3239                 ansexp=''
3240                 case "$none_ok" in
3241                 true) type='';;
3242                 esac
3243                 ;;
3244         *)
3245                 case "$tilde" in
3246                 '') value="$ans"
3247                         ansexp="$ans";;
3248                 *)
3249                         value=`UU/filexp $ans`
3250                         case $? in
3251                         0)
3252                                 if test "$ans" != "$value"; then
3253                                         echo "(That expands to $value on this system.)"
3254                                 fi
3255                                 ;;
3256                         *) value="$ans";;
3257                         esac
3258                         ansexp="$value"
3259                         case "$exp_file" in
3260                         '') value="$ans";;
3261                         esac
3262                         ;;
3263                 esac
3264                 case "$fullpath" in
3265                 true)
3266                         case "$ansexp" in
3267                         /*) value="$ansexp" ;;
3268                         *)
3269                                 redo=true
3270                                 case "$already" in
3271                                 true)
3272                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3273                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3274                                         ;;
3275                                 *)
3276                                 echo "Please give a full path name, starting with slash." >&4
3277                                         case "$tilde" in
3278                                         true)
3279                                 echo "Note that using ~name is ok provided it expands well." >&4
3280                                                 already=true
3281                                                 ;;
3282                                         esac
3283                                 esac
3284                                 ;;
3285                         esac
3286                         ;;
3287                 esac
3288                 case "$redo" in
3289                 '')
3290                         case "$type" in
3291                         File)
3292                                 for fp in $gfpth; do
3293                                         if test "X$fp" = X.; then
3294                                             pf="$ansexp"
3295                                         else    
3296                                             pf="$fp/$ansexp"
3297                                         fi
3298                                         if test -f "$pf"; then
3299                                                 type=''
3300                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3301                                         then
3302                                                 echo "($value is not a plain file, but that's ok.)"
3303                                                 type=''
3304                                         fi
3305                                         if test X"$type" = X; then
3306                                             value="$pf"
3307                                             break
3308                                         fi
3309                                 done
3310                                 ;;
3311                         Directory)
3312                                 for fp in $gfpth; do
3313                                         if test "X$fp" = X.; then
3314                                             pf="$ansexp"
3315                                         else    
3316                                             pf="$fp/$ansexp"
3317                                         fi
3318                                         if test -d "$pf"; then
3319                                                 type=''
3320                                                 value="$pf"
3321                                                 break
3322                                         fi
3323                                 done
3324                                 ;;
3325                         Locate)
3326                                 if test -d "$ansexp"; then
3327                                         echo "(Looking for $loc_file in directory $value.)"
3328                                         value="$value/$loc_file"
3329                                         ansexp="$ansexp/$loc_file"
3330                                 fi
3331                                 if test -f "$ansexp"; then
3332                                         type=''
3333                                 fi
3334                                 case "$nopath_ok" in
3335                                 true)   case "$value" in
3336                                         */*) ;;
3337                                         *)      echo "Assuming $value will be in people's path."
3338                                                 type=''
3339                                                 ;;
3340                                         esac
3341                                         ;;
3342                                 esac
3343                                 ;;
3344                         esac
3345
3346                         case "$skip" in
3347                         true) type='';
3348                         esac
3349
3350                         case "$type" in
3351                         '') ;;
3352                         *)
3353                                 if test "$fastread" = yes; then
3354                                         dflt=y
3355                                 else
3356                                         dflt=n
3357                                 fi
3358                                 rp="$what $value doesn't exist.  Use that name anyway?"
3359                                 . UU/myread
3360                                 dflt=''
3361                                 case "$ans" in
3362                                 y*) type='';;
3363                                 *) echo " ";;
3364                                 esac
3365                                 ;;
3366                         esac
3367                         ;;
3368                 esac
3369                 ;;
3370         esac
3371 done
3372 cd UU
3373 ans="$value"
3374 rp="$orig_rp"
3375 dflt="$orig_dflt"
3376 rm -f getfile.ok
3377 test "X$gfpthkeep" != Xy && gfpth=""
3378 EOSC
3379
3380 : What should the include directory be ?
3381 echo " "
3382 $echo $n "Hmm...  $c"
3383 dflt='/usr/include'
3384 incpath=''
3385 mips_type=''
3386 if $test -f /bin/mips && /bin/mips; then
3387         echo "Looks like a MIPS system..."
3388         $cat >usr.c <<'EOCP'
3389 #ifdef SYSTYPE_BSD43
3390 /bsd43
3391 #endif
3392 EOCP
3393         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3394                 dflt='/bsd43/usr/include'
3395                 incpath='/bsd43'
3396                 mips_type='BSD 4.3'
3397         else
3398                 mips_type='System V'
3399         fi
3400         $rm -f usr.c usr.out
3401         echo "and you're compiling with the $mips_type compiler and libraries."
3402         xxx_prompt=y
3403         echo "exit 0" >mips
3404 else
3405         echo "Doesn't look like a MIPS system."
3406         xxx_prompt=n
3407         echo "exit 1" >mips
3408 fi
3409 chmod +x mips
3410 $eunicefix mips
3411 case "$usrinc" in
3412 '') ;;
3413 *) dflt="$usrinc";;
3414 esac
3415 case "$xxx_prompt" in
3416 y)      fn=d/
3417         echo " "
3418         rp='Where are the include files you want to use?'
3419         . ./getfile
3420         usrinc="$ans"
3421         ;;
3422 *)      usrinc="$dflt"
3423         ;;
3424 esac
3425
3426 : see how we invoke the C preprocessor
3427 echo " "
3428 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3429 cat <<'EOT' >testcpp.c
3430 #define ABC abc
3431 #define XYZ xyz
3432 ABC.XYZ
3433 EOT
3434 cd ..
3435 if test ! -f cppstdin; then
3436         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3437                 # AIX cc -E doesn't show the absolute headerfile
3438                 # locations but we'll cheat by using the -M flag.
3439                 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
3440         else
3441                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3442         fi
3443 else
3444         echo "Keeping your $hint cppstdin wrapper."
3445 fi
3446 chmod 755 cppstdin
3447 wrapper=`pwd`/cppstdin
3448 ok='false'
3449 cd UU
3450
3451 if $test "X$cppstdin" != "X" && \
3452         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3453         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3454 then
3455         echo "You used to use $cppstdin $cppminus so we'll use that again."
3456         case "$cpprun" in
3457         '') echo "But let's see if we can live without a wrapper..." ;;
3458         *)
3459                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3460                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3461                 then
3462                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3463                         ok='true'
3464                 else
3465                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3466                 fi
3467                 ;;
3468         esac
3469 else
3470         case "$cppstdin" in
3471         '') ;;
3472         *)
3473                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3474                 ;;
3475         esac
3476 fi
3477
3478 if $ok; then
3479         : nothing
3480 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3481         $cc -E <testcpp.c >testcpp.out 2>&1; \
3482         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3483         echo "Yup, it does."
3484         x_cpp="$cc -E"
3485         x_minus='';
3486 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3487         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3488         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489         echo "Yup, it does."
3490         x_cpp="$cc -E"
3491         x_minus='-';
3492 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3493         $cc -P <testcpp.c >testcpp.out 2>&1; \
3494         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3495         echo "Yipee, that works!"
3496         x_cpp="$cc -P"
3497         x_minus='';
3498 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3499         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3500         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501         echo "At long last!"
3502         x_cpp="$cc -P"
3503         x_minus='-';
3504 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3505         $cpp <testcpp.c >testcpp.out 2>&1; \
3506         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507         echo "It works!"
3508         x_cpp="$cpp"
3509         x_minus='';
3510 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3511         $cpp - <testcpp.c >testcpp.out 2>&1; \
3512         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513         echo "Hooray, it works!  I was beginning to wonder."
3514         x_cpp="$cpp"
3515         x_minus='-';
3516 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3517         $wrapper <testcpp.c >testcpp.out 2>&1; \
3518         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3519         x_cpp="$wrapper"
3520         x_minus=''
3521         echo "Eureka!"
3522 else
3523         dflt=''
3524         rp="No dice.  I can't find a C preprocessor.  Name one:"
3525         . ./myread
3526         x_cpp="$ans"
3527         x_minus=''
3528         $x_cpp <testcpp.c >testcpp.out 2>&1
3529         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3530                 echo "OK, that will do." >&4
3531         else
3532 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3533                 exit 1
3534         fi
3535 fi
3536
3537 case "$ok" in
3538 false)
3539         cppstdin="$x_cpp"
3540         cppminus="$x_minus"
3541         cpprun="$x_cpp"
3542         cpplast="$x_minus"
3543         set X $x_cpp
3544         shift
3545         case "$1" in
3546         "$cpp")
3547                 echo "Perhaps can we force $cc -E using a wrapper..."
3548                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3549                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3550                 then
3551                         echo "Yup, we can."
3552                         cppstdin="$wrapper"
3553                         cppminus='';
3554                 else
3555                         echo "Nope, we'll have to live without it..."
3556                 fi
3557                 ;;
3558         esac
3559         case "$cpprun" in
3560         "$wrapper")
3561                 cpprun=''
3562                 cpplast=''
3563                 ;;
3564         esac
3565         ;;
3566 esac
3567
3568 case "$cppstdin" in
3569 "$wrapper"|'cppstdin') ;;
3570 *) $rm -f $wrapper;;
3571 esac
3572 $rm -f testcpp.c testcpp.out
3573
3574 : Set private lib path
3575 case "$plibpth" in
3576 '') if ./mips; then
3577                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3578         fi;;
3579 esac
3580 case "$libpth" in
3581 ' ') dlist='';;
3582 '') dlist="$loclibpth $plibpth $glibpth";;
3583 *) dlist="$libpth";;
3584 esac
3585
3586 : Now check and see which directories actually exist, avoiding duplicates
3587 libpth=''
3588 for xxx in $dlist
3589 do
3590     if $test -d $xxx; then
3591                 case " $libpth " in
3592                 *" $xxx "*) ;;
3593                 *) libpth="$libpth $xxx";;
3594                 esac
3595     fi
3596 done
3597 $cat <<'EOM'
3598
3599 Some systems have incompatible or broken versions of libraries.  Among
3600 the directories listed in the question below, please remove any you
3601 know not to be holding relevant libraries, and add any that are needed.
3602 Say "none" for none.
3603
3604 EOM
3605 case "$libpth" in
3606 '') dflt='none';;
3607 *)
3608         set X $libpth
3609         shift
3610         dflt=${1+"$@"}
3611         ;;
3612 esac
3613 rp="Directories to use for library searches?"
3614 . ./myread
3615 case "$ans" in
3616 none) libpth=' ';;
3617 *) libpth="$ans";;
3618 esac
3619
3620 : compute shared library extension
3621 case "$so" in
3622 '')
3623         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3624                 dflt='sl'
3625         else
3626                 dflt='so'
3627         fi
3628         ;;
3629 *) dflt="$so";;
3630 esac
3631 $cat <<EOM
3632
3633 On some systems, shared libraries may be available.  Answer 'none' if
3634 you want to suppress searching of shared libraries for the remainder
3635 of this configuration.
3636
3637 EOM
3638 rp='What is the file extension used for shared libraries?'
3639 . ./myread
3640 so="$ans"
3641
3642 : Define several unixisms.
3643 : Hints files or command line option can be used to override them.
3644 : The convoluted testing is in case hints files set either the old
3645 : or the new name.
3646 case "$_exe" in
3647 '')     case "$exe_ext" in
3648     '') ;;
3649         *)      _exe="$exe_ext" ;;
3650         esac
3651         ;;
3652 esac
3653 case "$_a" in
3654 '')     case "$lib_ext" in
3655     '') _a='.a';;
3656         *)      _a="$lib_ext" ;;
3657         esac
3658         ;;
3659 esac
3660 case "$_o" in
3661 '') case "$obj_ext" in
3662         '')     _o='.o';;
3663         *)      _o="$obj_ext";;
3664         esac
3665         ;;
3666 esac
3667 case "$p_" in
3668 '') case "$path_sep" in
3669         '')     p_=':';;
3670         *)      p_="$path_sep";;
3671         esac
3672         ;;
3673 esac
3674 exe_ext=$_exe
3675 lib_ext=$_a
3676 obj_ext=$_o
3677 path_sep=$p_
3678
3679 : Which makefile gets called first.  This is used by make depend.
3680 case "$firstmakefile" in
3681 '') firstmakefile='makefile';;
3682 esac
3683
3684 case "$usesocks" in
3685 $define|true|[yY]*)     dflt='y';;
3686 *) dflt='n';;
3687 esac
3688 cat <<EOM
3689
3690 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3691 Configure must be run with -Dusesocks.
3692
3693 If this doesn't make any sense to you, just accept the default '$dflt'.
3694 EOM
3695 rp='Build Perl for SOCKS?'
3696 . ./myread
3697 case "$ans" in
3698 y|Y)    val="$define" ;;     
3699 *)      val="$undef" ;;
3700 esac
3701 set usesocks
3702 eval $setvar
3703
3704 : Looking for optional libraries
3705 echo " "
3706 echo "Checking for optional libraries..." >&4
3707 case "$libs" in
3708 ' '|'') dflt='';;
3709 *) dflt="$libs";;
3710 esac
3711 case "$libswanted" in
3712 '') libswanted='c_s';;
3713 esac
3714 case "$usesocks" in
3715 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3716 esac
3717 libsfound=''
3718 libsfiles=''
3719 libsdirs=''
3720 libspath=''
3721 for thisdir in $libpth $xlibpth; do
3722   test -d $thisdir && libspath="$libspath $thisdir"
3723 done
3724 for thislib in $libswanted; do
3725         for thisdir in $libspath; do
3726             xxx=''
3727             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3728                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3729                 $test -f "$xxx" && eval $libscheck
3730                 $test -f "$xxx" && libstyle=shared
3731             fi
3732             if test ! -f "$xxx"; then
3733                 xxx=$thisdir/lib$thislib.$so
3734                 $test -f "$xxx" && eval $libscheck
3735                 $test -f "$xxx" && libstyle=shared
3736             fi  
3737             if test ! -f "$xxx"; then
3738                 xxx=$thisdir/lib$thislib$_a
3739                 $test -f "$xxx" && eval $libscheck
3740                 $test -f "$xxx" && libstyle=static
3741             fi
3742             if test ! -f "$xxx"; then
3743                 xxx=$thisdir/$thislib$_a
3744                 $test -f "$xxx" && eval $libscheck
3745                 $test -f "$xxx" && libstyle=static
3746             fi
3747             if test ! -f "$xxx"; then
3748                 xxx=$thisdir/lib${thislib}_s$_a
3749                 $test -f "$xxx" && eval $libscheck
3750                 $test -f "$xxx" && libstyle=static
3751                 $test -f "$xxx" && thislib=${thislib}_s
3752             fi
3753             if test ! -f "$xxx"; then
3754                 xxx=$thisdir/Slib$thislib$_a
3755                 $test -f "$xxx" && eval $libscheck
3756                 $test -f "$xxx" && libstyle=static
3757             fi
3758             if $test -f "$xxx"; then
3759                 case "$libstyle" in
3760                 shared) echo "Found -l$thislib (shared)." ;;
3761                 static) echo "Found -l$thislib." ;;
3762                 *)      echo "Found -l$thislib ($libstyle)." ;;
3763                 esac
3764                 case " $dflt " in
3765                 *"-l$thislib "*);;
3766                 *) dflt="$dflt -l$thislib"
3767                    libsfound="$libsfound $xxx"
3768                    yyy=`basename $xxx`
3769                    libsfiles="$libsfiles $yyy"
3770                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3771                    case " $libsdirs " in
3772                    *" $yyy "*) ;;
3773                    *) libsdirs="$libsdirs $yyy" ;;
3774                    esac
3775                    ;;
3776                 esac
3777                 break
3778             fi  
3779         done
3780         if $test ! -f "$xxx"; then
3781             echo "No -l$thislib."
3782         fi
3783 done
3784 set X $dflt
3785 shift
3786 dflt="$*"
3787 case "$libs" in
3788 '') dflt="$dflt";;
3789 *) dflt="$libs";;
3790 esac
3791 case "$dflt" in
3792 ' '|'') dflt='none';;
3793 esac
3794
3795 $cat <<EOM
3796
3797 In order to compile $package on your machine, a number of libraries
3798 are usually needed.  Include any other special libraries here as well.
3799 Say "none" for none.  The default list is almost always right.
3800 EOM
3801
3802 echo " "
3803 rp="What libraries to use?"
3804 . ./myread
3805 case "$ans" in
3806 none) libs=' ';;
3807 *) libs="$ans";;
3808 esac
3809
3810 : determine optimization, if desired, or use for debug flag also
3811 case "$optimize" in
3812 ' '|$undef) dflt='none';;
3813 '') dflt='-O';;
3814 *) dflt="$optimize";;
3815 esac
3816 $cat <<EOH
3817
3818 By default, $package compiles with the -O flag to use the optimizer.
3819 Alternately, you might want to use the symbolic debugger, which uses
3820 the -g flag (on traditional Unix systems).  Either flag can be
3821 specified here.  To use neither flag, specify the word "none".
3822
3823 EOH
3824 rp="What optimizer/debugger flag should be used?"
3825 . ./myread
3826 optimize="$ans"
3827 case "$optimize" in
3828 'none') optimize=" ";;
3829 esac
3830
3831 dflt=''
3832 : We will not override a previous value, but we might want to
3833 : augment a hint file
3834 case "$hint" in
3835 default|recommended)
3836         case "$gccversion" in
3837         1*) dflt='-fpcc-struct-return' ;;
3838         esac
3839         case "$optimize" in
3840         *-g*) dflt="$dflt -DDEBUGGING";;
3841         esac
3842         case "$gccversion" in
3843         2*) if test -d /etc/conf/kconfig.d &&
3844                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3845                 then
3846                         dflt="$dflt -posix"
3847                 fi
3848                 ;;
3849         esac
3850         case "$gccversion" in
3851         1*) ;;
3852         2.[0-8]*) ;;
3853         ?*)     echo " "
3854                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3855                 echo 'int main(void) { return 0; }' > gcctest.c
3856                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3857                         echo "Yes, it does." 2>&1
3858                         case "$ccflags" in
3859                         *strict-aliasing*) 
3860                                 echo "Leaving current flags $ccflags alone." 2>&1
3861                                 ;;
3862                         *) dflt="$dflt -fno-strict-aliasing" ;;
3863                         esac
3864                 else
3865                         echo "Nope, it doesn't, but that's ok." 2>&1
3866                 fi
3867                 ;;
3868         esac
3869         ;;
3870 esac
3871
3872 case "$mips_type" in
3873 *BSD*|'') inclwanted="$locincpth $usrinc";;
3874 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3875 esac
3876 for thisincl in $inclwanted; do
3877         if $test -d $thisincl; then
3878                 if $test x$thisincl != x$usrinc; then
3879                         case "$dflt" in
3880                         *$thisincl*);;
3881                         *) dflt="$dflt -I$thisincl";;
3882                         esac
3883                 fi
3884         fi
3885 done
3886
3887 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3888         xxx=true;
3889 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3890         xxx=true;
3891 else
3892         xxx=false;
3893 fi;
3894 if $xxx; then
3895         case "$dflt" in
3896         *$2*);;
3897         *) dflt="$dflt -D$2";;
3898         esac;
3899 fi'
3900
3901 set signal.h LANGUAGE_C; eval $inctest
3902
3903 case "$usesocks" in
3904 $define)
3905         ccflags="$ccflags -DSOCKS"
3906         ;;
3907 esac
3908
3909 case "$hint" in
3910 default|recommended) dflt="$ccflags $dflt" ;;
3911 *) dflt="$ccflags";;
3912 esac
3913
3914 case "$dflt" in
3915 ''|' ') dflt=none;;
3916 esac
3917 $cat <<EOH
3918
3919 Your C compiler may want other flags.  For this question you should include
3920 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3921 but you should NOT include libraries or ld flags like -lwhatever.  If you
3922 want $package to honor its debug switch, you should include -DDEBUGGING here.
3923 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3924
3925 To use no flags, specify the word "none".
3926
3927 EOH
3928 set X $dflt
3929 shift
3930 dflt=${1+"$@"}
3931 rp="Any additional cc flags?"
3932 . ./myread
3933 case "$ans" in
3934 none) ccflags='';;
3935 *) ccflags="$ans";;
3936 esac
3937
3938 : the following weeds options from ccflags that are of no interest to cpp
3939 cppflags="$ccflags"
3940 case "$gccversion" in
3941 1*) cppflags="$cppflags -D__GNUC__"
3942 esac
3943 case "$mips_type" in
3944 '');;
3945 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3946 esac
3947 case "$cppflags" in
3948 '');;
3949 *)
3950         echo " "
3951         echo "Let me guess what the preprocessor flags are..." >&4
3952         set X $cppflags
3953         shift
3954         cppflags=''
3955         $cat >cpp.c <<'EOM'
3956 #define BLURFL foo
3957
3958 BLURFL xx LFRULB
3959 EOM
3960         previous=''
3961         for flag in $*
3962         do
3963                 case "$flag" in
3964                 -*) ftry="$flag";;
3965                 *) ftry="$previous $flag";;
3966                 esac
3967                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3968                         >cpp1.out 2>/dev/null && \
3969                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3970                         >cpp2.out 2>/dev/null && \
3971                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3972                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3973                 then
3974                         cppflags="$cppflags $ftry"
3975                         previous=''
3976                 else
3977                         previous="$flag"
3978                 fi
3979         done
3980         set X $cppflags
3981         shift
3982         cppflags=${1+"$@"}
3983         case "$cppflags" in
3984         *-*)  echo "They appear to be: $cppflags";;
3985         esac
3986         $rm -f cpp.c cpp?.out
3987         ;;
3988 esac
3989
3990 : flags used in final linking phase
3991 case "$ldflags" in
3992 '') if ./venix; then
3993                 dflt='-i -z'
3994         else
3995                 dflt=''
3996         fi
3997         case "$ccflags" in
3998         *-posix*) dflt="$dflt -posix" ;;
3999         esac
4000         ;;
4001 *) dflt="$ldflags";;
4002 esac
4003
4004 : Try to guess additional flags to pick up local libraries.
4005 for thislibdir in $libpth; do
4006         case " $loclibpth " in
4007         *" $thislibdir "*)
4008                 case "$dflt " in 
4009                 *"-L$thislibdir "*) ;;
4010                 *)  dflt="$dflt -L$thislibdir" ;;
4011                 esac
4012                 ;;
4013         esac
4014 done
4015
4016 case "$dflt" in
4017 '') dflt='none' ;;
4018 esac
4019
4020 $cat <<EOH
4021
4022 Your C linker may need flags.  For this question you should
4023 include -L/whatever and any other flags used by the C linker, but you
4024 should NOT include libraries like -lwhatever.
4025
4026 Make sure you include the appropriate -L/path flags if your C linker
4027 does not normally search all of the directories you specified above,
4028 namely
4029         $libpth
4030 To use no flags, specify the word "none".
4031
4032 EOH
4033
4034 rp="Any additional ld flags (NOT including libraries)?"
4035 . ./myread
4036 case "$ans" in
4037 none) ldflags='';;
4038 *) ldflags="$ans";;
4039 esac
4040 rmlist="$rmlist pdp11"
4041
4042 : coherency check
4043 echo " "
4044 echo "Checking your choice of C compiler and flags for coherency..." >&4
4045 $cat > try.c <<'EOF'
4046 #include <stdio.h>
4047 int main() { printf("Ok\n"); exit(0); }
4048 EOF
4049 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4050 shift
4051 $cat >try.msg <<'EOM'
4052 I've tried to compile and run the following simple program:
4053
4054 EOM
4055 $cat try.c >> try.msg
4056
4057 $cat >> try.msg <<EOM
4058
4059 I used the command:
4060
4061         $*
4062         ./try
4063
4064 and I got the following output:
4065
4066 EOM
4067 dflt=y
4068 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4069         if sh -c './try' >>try.msg 2>&1; then
4070                 xxx=`./try`
4071                 case "$xxx" in
4072                 "Ok") dflt=n ;;
4073                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4074                         case " $libs " in
4075                         *" -lsfio "*)
4076                                 cat >> try.msg <<'EOQS'
4077 If $libs contains -lsfio, and sfio is mis-configured, then it
4078 sometimes (apparently) runs and exits with a 0 status, but with no
4079 output!  It may have to do with sfio's use of _exit vs. exit.
4080
4081 EOQS
4082                                 rp="You have a big problem.  Shall I abort Configure"
4083                                 dflt=y
4084                                 ;;
4085                         esac
4086                         ;;
4087                 esac
4088         else
4089                 echo "The program compiled OK, but exited with status $?." >>try.msg
4090                 rp="You have a problem.  Shall I abort Configure"
4091                 dflt=y
4092         fi
4093 else
4094         echo "I can't compile the test program." >>try.msg
4095         rp="You have a BIG problem.  Shall I abort Configure"
4096         dflt=y
4097 fi
4098 case "$dflt" in
4099 y)
4100         $cat try.msg >&4
4101         case "$knowitall" in
4102         '')
4103                 echo "(The supplied flags or libraries might be incorrect.)"
4104                 ;;
4105         *) dflt=n;;
4106         esac
4107         echo " "
4108         . ./myread
4109         case "$ans" in
4110         n*|N*) ;;
4111         *)      echo "Ok.  Stopping Configure." >&4
4112                 exit 1
4113                 ;;
4114         esac
4115         ;;
4116 n) echo "OK, that should do.";;
4117 esac
4118 $rm -f try try.* core
4119
4120 : define an is-a-typedef? function
4121 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4122 case "$inclist" in
4123 "") inclist="sys/types.h";;
4124 esac;
4125 eval "varval=\$$var";
4126 case "$varval" in
4127 "")
4128         $rm -f temp.c;
4129         for inc in $inclist; do
4130                 echo "#include <$inc>" >>temp.c;
4131         done;
4132         echo "#ifdef $type" >> temp.c;
4133         echo "printf(\"We have $type\");" >> temp.c;
4134         echo "#endif" >> temp.c;
4135         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4136         if $contains $type temp.E >/dev/null 2>&1; then
4137                 eval "$var=\$type";
4138         else
4139                 eval "$var=\$def";
4140         fi;
4141         $rm -f temp.?;;
4142 *) eval "$var=\$varval";;
4143 esac'
4144
4145 : define an is-a-typedef? function that prompts if the type is not available.
4146 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4147 case "$inclist" in
4148 "") inclist="sys/types.h";;
4149 esac;
4150 eval "varval=\$$var";
4151 case "$varval" in
4152 "")
4153         $rm -f temp.c;
4154         for inc in $inclist; do
4155                 echo "#include <$inc>" >>temp.c;
4156         done;
4157         echo "#ifdef $type" >> temp.c;
4158         echo "printf(\"We have $type\");" >> temp.c;
4159         echo "#endif" >> temp.c;
4160         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4161         echo " " ;
4162         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4163         if $contains $type temp.E >/dev/null 2>&1; then
4164                 echo "$type found." >&4;
4165                 eval "$var=\$type";
4166         else
4167                 echo "$type NOT found." >&4;
4168                 dflt="$def";
4169                 . ./myread ;
4170                 eval "$var=\$ans";
4171         fi;
4172         $rm -f temp.?;;
4173 *) eval "$var=\$varval";;
4174 esac'
4175
4176 : define a shorthand compile call
4177 compile='
4178 mc_file=$1;
4179 shift;
4180 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4181 : define a shorthand compile call for compilations that should be ok.
4182 compile_ok='
4183 mc_file=$1;
4184 shift;
4185 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4186
4187 : check for lengths of integral types
4188 echo " "
4189 case "$intsize" in
4190 '')
4191         echo "Checking to see how big your integers are..." >&4
4192         $cat >intsize.c <<'EOCP'
4193 #include <stdio.h>
4194 int main()
4195 {
4196         printf("intsize=%d;\n", (int)sizeof(int));
4197         printf("longsize=%d;\n", (int)sizeof(long));
4198         printf("shortsize=%d;\n", (int)sizeof(short));
4199         exit(0);
4200 }
4201 EOCP
4202         set intsize
4203         if eval $compile_ok && ./intsize > /dev/null; then
4204                 eval `./intsize`
4205                 echo "Your integers are $intsize bytes long."
4206                 echo "Your long integers are $longsize bytes long."
4207                 echo "Your short integers are $shortsize bytes long."
4208         else
4209                 $cat >&4 <<EOM
4210 !
4211 Help! I can't compile and run the intsize test program: please enlighten me!
4212 (This is probably a misconfiguration in your system or libraries, and
4213 you really ought to fix it.  Still, I'll try anyway.)
4214 !
4215 EOM
4216                 dflt=4
4217                 rp="What is the size of an integer (in bytes)?"
4218                 . ./myread
4219                 intsize="$ans"
4220                 dflt=$intsize
4221                 rp="What is the size of a long integer (in bytes)?"
4222                 . ./myread
4223                 longsize="$ans"
4224                 dflt=2
4225                 rp="What is the size of a short integer (in bytes)?"
4226                 . ./myread
4227                 shortsize="$ans"
4228         fi
4229         ;;
4230 esac
4231 $rm -f intsize intsize.*
4232
4233 : see what type lseek is declared as in the kernel
4234 rp="What is the type used for lseek's offset on this system?"
4235 set off_t lseektype long stdio.h sys/types.h
4236 eval $typedef_ask
4237
4238 echo " "
4239 echo "Checking to see how big your file offsets are..." >&4
4240 $cat >try.c <<EOCP
4241 #include <sys/types.h>
4242 #include <stdio.h>
4243 int main()
4244 {
4245     printf("%d\n", (int)sizeof($lseektype));
4246     return(0); 
4247 }
4248 EOCP
4249 set try
4250 if eval $compile_ok; then
4251         lseeksize=`./try`
4252         echo "Your file offsets are $lseeksize bytes long."
4253 else
4254         dflt=$longsize
4255         echo " "
4256         echo "(I can't seem to compile the test program.  Guessing...)"
4257         rp="What is the size of your file offsets (in bytes)?"
4258         . ./myread
4259         lseeksize="$ans"
4260 fi
4261 $rm -f try.c try
4262
4263 : see what type file positions are declared as in the library
4264 rp="What is the type for file position used by fsetpos()?"
4265 set fpos_t fpostype long stdio.h sys/types.h
4266 eval $typedef_ask
4267
4268 echo " "
4269 case "$fpostype" in
4270 *_t) zzz="$fpostype"    ;;
4271 *)   zzz="fpos_t"       ;;
4272 esac
4273 echo "Checking the size of $zzz..." >&4 
4274 cat > try.c <<EOCP
4275 #include <sys/types.h>
4276 #include <stdio.h>
4277 int main() {
4278     printf("%d\n", (int)sizeof($fpostype));
4279     exit(0);
4280 }
4281 EOCP
4282 set try
4283 if eval $compile_ok; then
4284         yyy=`./try`
4285         case "$yyy" in
4286         '')     fpossize=4
4287                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4288                 ;;
4289         *)      fpossize=$yyy
4290                 echo "Your $zzz is $fpossize bytes long."
4291                 ;;
4292         esac
4293 else
4294         dflt="$longsize"
4295         echo " " >&4
4296         echo "(I can't compile the test program.  Guessing...)" >&4
4297         rp="What is the size of your file positions (in bytes)?"
4298         . ./myread
4299         fpossize="$ans"
4300 fi
4301
4302
4303
4304 # Backward compatibility (uselfs is deprecated).
4305 case "$uselfs" in
4306 "$define"|true|[yY]*)
4307         cat <<EOM >&4
4308
4309 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4310 EOM
4311         uselargefiles="$define"
4312         ;;
4313 esac                          
4314
4315 case "$lseeksize:$fpossize" in
4316 8:8) cat <<EOM
4317
4318 You can have files larger than 2 gigabytes.
4319 EOM
4320    val="$define" ;;
4321 *)    case "$uselargefiles" in
4322    "$undef"|false|[nN]*) dflt='n' ;;
4323    *)   dflt='y' ;;
4324    esac
4325    cat <<EOM
4326
4327 Perl can be built to understand large files (files larger than 2 gigabytes)
4328 on some systems.  To do so, Configure can be run with -Duselargefiles.
4329
4330 If this doesn't make any sense to you, just accept the default '$dflt'.
4331 EOM
4332    rp='Try to understand large files, if available?'
4333    . ./myread
4334    case "$ans" in
4335    y|Y)         val="$define" ;;
4336    *)           val="$undef"  ;;
4337    esac
4338    ;;
4339 esac
4340 set uselargefiles
4341 eval $setvar
4342 case "$uselargefiles" in
4343 "$define")
4344 : Look for a hint-file generated 'call-back-unit'.  If the
4345 : user has specified that a large files perl is to be built,
4346 : we may need to set or change some other defaults.
4347         if $test -f uselargefiles.cbu; then
4348                 echo "Your platform has some specific hints for large file builds, using them..."
4349                 . ./uselargefiles.cbu
4350                 echo " "
4351                 echo "Rechecking to see how big your file offsets are..." >&4
4352                 $cat >try.c <<EOCP
4353 #include <sys/types.h>
4354 #include <stdio.h>
4355 int main()
4356 {
4357     printf("%d\n", (int)sizeof($lseektype));
4358     return(0); 
4359 }
4360 EOCP
4361                 set try
4362                 if eval $compile_ok; then
4363                         lseeksize=`./try`
4364                         $echo "Your file offsets are now $lseeksize bytes long."
4365                 else
4366                         dflt="$lseeksize"
4367                         echo " "
4368                         echo "(I can't seem to compile the test program.  Guessing...)"
4369                         rp="What is the size of your file offsets (in bytes)?"
4370                         . ./myread
4371                         lseeksize="$ans"
4372                 fi
4373                 case "$fpostype" in
4374                 *_t) zzz="$fpostype"    ;;
4375                 *)   zzz="fpos_t"       ;;
4376                 esac
4377                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4378                 $cat > try.c <<EOCP
4379 #include <sys/types.h>
4380 #include <stdio.h>
4381 int main() {
4382     printf("%d\n", (int)sizeof($fpostype));
4383     exit(0);
4384 }
4385 EOCP
4386                 set try
4387                 if eval $compile_ok; then
4388                         yyy=`./try`
4389                         dflt="$lseeksize"
4390                         case "$yyy" in
4391                         '')     echo " "
4392                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4393                                 ;;
4394                         *)      fpossize=$yyy
4395                                 echo " $fpossize bytes." >&4
4396                                 ;;
4397                         esac
4398                 else
4399                         dflt="$fpossize"
4400                         echo " "
4401                         echo "(I can't compile the test program.  Guessing...)" >&4
4402                         rp="What is the size of your file positions (in bytes)?"
4403                         . ./myread
4404                         fpossize="$ans"
4405                 fi
4406                 $rm -f try.c try
4407         fi
4408         ;;
4409 esac
4410
4411
4412 case "$usemorebits" in
4413 "$define"|true|[yY]*)
4414         use64bitint="$define"
4415         uselongdouble="$define"
4416         usemorebits="$define"
4417         ;;
4418 *)      usemorebits="$undef"
4419         ;;
4420 esac
4421
4422
4423 case "$uselonglong" in
4424 "$define"|true|[yY]*)
4425         cat <<EOM >&4
4426
4427 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4428 EOM
4429         use64bitint="$define"
4430         ;;
4431 esac                          
4432 case "$use64bits" in
4433 "$define"|true|[yY]*)
4434         cat <<EOM >&4
4435
4436 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4437 EOM
4438         use64bitint="$define"
4439         ;;
4440 esac                          
4441 case "$use64bitints" in
4442 "$define"|true|[yY]*)
4443         cat <<EOM >&4
4444
4445 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4446 EOM
4447         use64bitint="$define"
4448         ;;
4449 esac                          
4450 case "$use64bitsint" in
4451 "$define"|true|[yY]*)
4452         cat <<EOM >&4
4453
4454 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4455 EOM
4456         use64bitint="$define"
4457         ;;
4458 esac                          
4459 case "$uselonglongs" in
4460 "$define"|true|[yY]*)
4461         cat <<EOM >&4
4462
4463 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4464 EOM
4465         use64bitint="$define"
4466         ;;
4467 esac                          
4468 case "$use64bitsall" in
4469 "$define"|true|[yY]*)
4470         cat <<EOM >&4
4471
4472 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4473 EOM
4474         use64bitall="$define"
4475         ;;
4476 esac                          
4477
4478 case "$ccflags" in
4479 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4480 esac
4481 case "$use64bitall" in
4482 "$define"|true|[yY]*) use64bitint="$define" ;;
4483 esac
4484
4485 case "$longsize" in
4486 8) cat <<EOM
4487
4488 You have natively 64-bit long integers.
4489 EOM
4490    val="$define"
4491    ;;
4492 *) case "$use64bitint" in
4493    "$define"|true|[yY]*) dflt='y';;
4494    *) dflt='n';;
4495    esac
4496    cat <<EOM
4497
4498 Perl can be built to take advantage of 64-bit integer types
4499 on some systems.  To do so, Configure can be run with -Duse64bitint.
4500 Choosing this option will most probably introduce binary incompatibilities.
4501
4502 If this doesn't make any sense to you, just accept the default '$dflt'.
4503 EOM
4504    rp='Try to use 64-bit integers, if available?'
4505    . ./myread
4506    case "$ans" in
4507    [yY]*) val="$define" ;;
4508    *)     val="$undef"  ;;
4509    esac
4510    ;;
4511 esac
4512 set use64bitint
4513 eval $setvar
4514
4515 case "$use64bitall" in
4516 "$define"|true|[yY]*) dflt='y' ;;
4517 *) case "$longsize" in
4518    8) dflt='y' ;;
4519    *) dflt='n' ;;
4520    esac
4521    ;;
4522 esac    
4523 cat <<EOM
4524
4525 You may also choose to try maximal 64-bitness.  It means using as much
4526 64-bitness as possible on the platform.  This in turn means even more
4527 binary incompatibilities.  On the other hand, your platform may not
4528 have any more 64-bitness available than what you already have chosen.
4529
4530 If this doesn't make any sense to you, just accept the default '$dflt'.
4531 EOM
4532 rp='Try to use maximal 64-bit support, if available?'
4533 . ./myread
4534 case "$ans" in
4535 [yY]*) val="$define" ;;
4536 *)     val="$undef"  ;;
4537 esac
4538 set use64bitall
4539 eval $setvar
4540 case "$use64bitall" in
4541 "$define")
4542         case "$use64bitint" in
4543         "$undef")
4544                 cat <<EOM
4545
4546 Since you have chosen a maximally 64-bit build, I'm also turning on
4547 the use of 64-bit integers.
4548 EOM
4549                 use64bitint="$define" ;;
4550         esac
4551         ;;
4552 esac
4553
4554 case "$use64bitint" in
4555 "$define"|true|[yY]*)
4556 : Look for a hint-file generated 'call-back-unit'.  If the
4557 : user has specified that a 64-bit perl is to be built,
4558 : we may need to set or change some other defaults.
4559         if $test -f use64bitint.cbu; then
4560                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4561                 . ./use64bitint.cbu
4562         fi
4563         case "$longsize" in
4564         4) case "$archname64" in
4565            '') archname64=64int ;;
4566            esac
4567            ;;
4568         esac
4569         ;;
4570 esac
4571
4572 case "$use64bitall" in
4573 "$define"|true|[yY]*)
4574 : Look for a hint-file generated 'call-back-unit'.  If the
4575 : user has specified that a maximally 64-bit perl is to be built,
4576 : we may need to set or change some other defaults.
4577         if $test -f use64bitall.cbu; then
4578                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4579                 . ./use64bitall.cbu
4580         fi
4581         case "$longsize" in
4582         4) case "$archname64" in
4583            ''|64int) archname64=64all ;;
4584            esac
4585            ;;
4586         esac
4587         ;;
4588 esac
4589
4590 : determine the architecture name
4591 echo " "
4592 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4593         tarch=`arch`"-$osname"
4594 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4595         if uname -m > tmparch 2>&1 ; then
4596                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4597                         -e 's/$/'"-$osname/" tmparch`
4598         else
4599                 tarch="$osname"
4600         fi
4601         $rm -f tmparch
4602 else
4603         tarch="$osname"
4604 fi
4605 case "$myarchname" in
4606 ''|"$tarch") ;;
4607 *)
4608         echo "(Your architecture name used to be $myarchname.)"
4609         archname=''
4610         ;;
4611 esac
4612 myarchname="$tarch"
4613 case "$archname" in
4614 '') dflt="$tarch";;
4615 *) dflt="$archname";;
4616 esac
4617 rp='What is your architecture name'
4618 . ./myread
4619 archname="$ans"
4620 case "$usethreads" in
4621 $define)
4622         echo "Threads selected." >&4
4623         case "$archname" in
4624         *-thread*) echo "...and architecture name already has -thread." >&4
4625                 ;;
4626         *)      archname="$archname-thread"
4627                 echo "...setting architecture name to $archname." >&4
4628                 ;;
4629         esac
4630         ;;
4631 esac
4632 case "$usemultiplicity" in
4633 $define)
4634         echo "Multiplicity selected." >&4
4635         case "$archname" in
4636         *-multi*) echo "...and architecture name already has -multi." >&4
4637                 ;;
4638         *)      archname="$archname-multi"
4639                 echo "...setting architecture name to $archname." >&4
4640                 ;;
4641         esac
4642         ;;
4643 esac
4644 case "$use64bitint" in
4645 $define)
4646         case "$archname64" in
4647         '')
4648                 ;;
4649         *)
4650                 case "$archname" in
4651                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4652                         ;;
4653                 *)      archname="$archname-$archname64"
4654                         echo "...setting architecture name to $archname." >&4
4655                         ;;
4656                 esac
4657                 ;;
4658         esac
4659 esac
4660
4661 : determine root of directory hierarchy where package will be installed.
4662 case "$prefix" in
4663 '')
4664         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4665         ;;
4666 *)
4667         dflt="$prefix"
4668         ;;
4669 esac
4670 $cat <<EOM
4671
4672 By default, $package will be installed in $dflt/bin, manual pages
4673 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4674 installation directories. Typically this is something like /usr/local.
4675 If you wish to have binaries under /usr/bin but other parts of the
4676 installation under /usr/local, that's ok: you will be prompted
4677 separately for each of the installation directories, the prefix being
4678 only used to set the defaults.
4679
4680 EOM
4681 fn=d~
4682 rp='Installation prefix to use?'
4683 . ./getfile
4684 oldprefix=''
4685 case "$prefix" in
4686 '') ;;
4687 *)
4688         case "$ans" in
4689         "$prefix") ;;
4690         *) oldprefix="$prefix";;
4691         esac
4692         ;;
4693 esac
4694 prefix="$ans"
4695 prefixexp="$ansexp"
4696
4697 : is AFS running?
4698 echo " "
4699 case "$afs" in
4700 $define|true)   afs=true ;;
4701 $undef|false)   afs=false ;;
4702 *)      if test -d /afs; then
4703                 afs=true
4704         else
4705                 afs=false
4706         fi
4707         ;;
4708 esac
4709 if $afs; then
4710         echo "AFS may be running... I'll be extra cautious then..." >&4
4711 else
4712         echo "AFS does not seem to be running..." >&4
4713 fi
4714
4715 : determine installation prefix for where package is to be installed.
4716 if $afs; then 
4717 $cat <<EOM
4718
4719 Since you are running AFS, I need to distinguish the directory in which
4720 files will reside from the directory in which they are installed (and from
4721 which they are presumably copied to the former directory by occult means).
4722
4723 EOM
4724         case "$installprefix" in
4725         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4726         *) dflt="$installprefix";;
4727         esac
4728 else
4729 $cat <<EOM
4730
4731 In some special cases, particularly when building $package for distribution,
4732 it is convenient to distinguish between the directory in which files should 
4733 be installed from the directory ($prefix) in which they 
4734 will eventually reside.  For most users, these two directories are the same.
4735
4736 EOM
4737         case "$installprefix" in
4738         '') dflt=$prefix ;;
4739         *) dflt=$installprefix;;
4740         esac
4741 fi
4742 fn=d~
4743 rp='What installation prefix should I use for installing files?'
4744 . ./getfile
4745 installprefix="$ans"
4746 installprefixexp="$ansexp"
4747
4748 : set the prefixit variable, to compute a suitable default value
4749 prefixit='case "$3" in
4750 ""|none)
4751         case "$oldprefix" in
4752         "") eval "$1=\"\$$2\"";;
4753         *)
4754                 case "$3" in
4755                 "") eval "$1=";;
4756                 none)
4757                         eval "tp=\"\$$2\"";
4758                         case "$tp" in
4759                         ""|" ") eval "$1=\"\$$2\"";;
4760                         *) eval "$1=";;
4761                         esac;;
4762                 esac;;
4763         esac;;
4764 *)
4765         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4766         case "$tp" in
4767         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4768         /*-$oldprefix/*|\~*-$oldprefix/*)
4769                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4770         *) eval "$1=\"\$$2\"";;
4771         esac;;
4772 esac'
4773
4774
4775 : get the patchlevel
4776 echo " "
4777 echo "Getting the current patchlevel..." >&4
4778 if $test -r $rsrc/patchlevel.h;then
4779         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4780         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4781         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4782         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4783         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4784         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4785 else
4786         revision=0
4787         patchlevel=0
4788         subversion=0
4789         api_revision=0
4790         api_version=0
4791         api_subversion=0
4792 fi
4793 $echo $n "(You have $package revision $revision" $c
4794 $echo $n " patchlevel $patchlevel" $c
4795 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4796 echo ".)"
4797 case "$osname" in
4798 dos|vms)
4799         : XXX Should be a Configure test for double-dots in filenames.
4800         version=`echo $revision $patchlevel $subversion | \
4801                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4802         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4803                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4804         ;;
4805 *)
4806         version=`echo $revision $patchlevel $subversion | \
4807                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4808         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4809                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4810         ;;
4811 esac
4812 : Special case the 5.005_xx maintenance series, which used 5.005
4813 : without any subversion label as a subdirectory in $sitelib
4814 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4815         api_versionstring='5.005'
4816 fi
4817
4818 : determine installation style
4819 : For now, try to deduce it from prefix unless it is already set.
4820 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4821 case "$installstyle" in
4822 '')     case "$prefix" in
4823                 *perl*) dflt='lib';;
4824                 *) dflt='lib/perl5' ;;
4825         esac
4826         ;;
4827 *)      dflt="$installstyle" ;;
4828 esac
4829 : Probably not worth prompting for this since we prompt for all
4830 : the directories individually, and the prompt would be too long and
4831 : confusing anyway.
4832 installstyle=$dflt
4833
4834 : determine where private library files go
4835 : Usual default is /usr/local/lib/perl5/$version.
4836 : Also allow things like /opt/perl/lib/$version, since 
4837 : /opt/perl/lib/perl5... would be redundant.
4838 : The default "style" setting is made in installstyle.U
4839 case "$installstyle" in
4840 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4841 *)       set dflt privlib lib/$version ;;
4842 esac
4843 eval $prefixit
4844 $cat <<EOM
4845
4846 There are some auxiliary files for $package that need to be put into a
4847 private library directory that is accessible by everyone.
4848
4849 EOM
4850 fn=d~+
4851 rp='Pathname where the private library files will reside?'
4852 . ./getfile
4853 privlib="$ans"
4854 privlibexp="$ansexp"
4855 : Change installation prefix, if necessary.
4856 if $test X"$prefix" != X"$installprefix"; then
4857         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4858 else
4859         installprivlib="$privlibexp"
4860 fi
4861
4862 : set the prefixup variable, to restore leading tilda escape
4863 prefixup='case "$prefixexp" in
4864 "$prefix") ;;
4865 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4866 esac'
4867
4868 : determine where public architecture dependent libraries go
4869 set archlib archlib
4870 eval $prefixit
4871 : privlib default is /usr/local/lib/$package/$version
4872 : archlib default is /usr/local/lib/$package/$version/$archname
4873 : privlib may have an optional trailing /share.
4874 tdflt=`echo $privlib | $sed 's,/share$,,'`
4875 tdflt=$tdflt/$archname
4876 case "$archlib" in
4877 '')     dflt=$tdflt
4878         ;;
4879 *)      dflt="$archlib"
4880     ;;
4881 esac
4882 $cat <<EOM
4883
4884 $spackage contains architecture-dependent library files.  If you are
4885 sharing libraries in a heterogeneous environment, you might store
4886 these files in a separate location.  Otherwise, you can just include
4887 them with the rest of the public library files.
4888
4889 EOM
4890 fn=d+~
4891 rp='Where do you want to put the public architecture-dependent libraries?'
4892 . ./getfile
4893 archlib="$ans"
4894 archlibexp="$ansexp"
4895 if $test X"$archlib" = X"$privlib"; then
4896         d_archlib="$undef"
4897 else
4898         d_archlib="$define"
4899 fi
4900 : Change installation prefix, if necessary.
4901 if $test X"$prefix" != X"$installprefix"; then
4902         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4903 else
4904         installarchlib="$archlibexp"
4905 fi
4906
4907
4908 : Binary compatibility with 5.005 is not possible for builds
4909 : with advanced features
4910 case "$usethreads$usemultiplicity" in
4911 *define*)
4912         bincompat5005="$undef"
4913         d_bincompat5005="$undef"
4914         ;;
4915 *)      $cat <<EOM
4916
4917 Perl 5.006 can be compiled for binary compatibility with 5.005.
4918 If you decide to do so, you will be able to continue using most
4919 of the extensions that were compiled for Perl 5.005.
4920
4921 EOM
4922         case "$bincompat5005$d_bincompat5005" in
4923         *"$undef"*) dflt=n ;;
4924         *) dflt=y ;;
4925         esac
4926         rp='Binary compatibility with Perl 5.005?'
4927         . ./myread
4928         case "$ans" in
4929         y*) val="$define" ;;
4930         *)  val="$undef" ;;
4931         esac
4932         set d_bincompat5005
4933         eval $setvar
4934         case "$d_bincompat5005" in
4935         "$define")
4936                 bincompat5005="$define"
4937                 ;;
4938         *)      bincompat5005="$undef"
4939                 d_bincompat5005="$undef"
4940                 ;;
4941         esac
4942         ;;
4943 esac
4944
4945
4946 : see if setuid scripts can be secure
4947 $cat <<EOM
4948
4949 Some kernels have a bug that prevents setuid #! scripts from being
4950 secure.  Some sites have disabled setuid #! scripts because of this.
4951
4952 First let's decide if your kernel supports secure setuid #! scripts.
4953 (If setuid #! scripts would be secure but have been disabled anyway,
4954 don't say that they are secure if asked.)
4955
4956 EOM
4957
4958 val="$undef"
4959 if $test -d /dev/fd; then
4960         echo "#!$ls" >reflect
4961         chmod +x,u+s reflect
4962         ./reflect >flect 2>&1
4963         if $contains "/dev/fd" flect >/dev/null; then
4964                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4965                 val="$define"
4966         else
4967                 $cat <<EOM
4968 If you are not sure if they are secure, I can check but I'll need a
4969 username and password different from the one you are using right now.
4970 If you don't have such a username or don't want me to test, simply
4971 enter 'none'.
4972
4973 EOM
4974                 rp='Other username to test security of setuid scripts with?'
4975                 dflt='none'
4976                 . ./myread
4977                 case "$ans" in
4978                 n|none)
4979                         case "$d_suidsafe" in
4980                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4981                                 dflt=n;;
4982                         "$undef")
4983                                 echo "Well, the $hint value is *not* secure." >&4
4984                                 dflt=n;;
4985                         *)      echo "Well, the $hint value *is* secure." >&4
4986                                 dflt=y;;
4987                         esac
4988                         ;;
4989                 *)
4990                         $rm -f reflect flect
4991                         echo "#!$ls" >reflect
4992                         chmod +x,u+s reflect
4993                         echo >flect
4994                         chmod a+w flect
4995                         echo '"su" will (probably) prompt you for '"$ans's password."
4996                         su $ans -c './reflect >flect'
4997                         if $contains "/dev/fd" flect >/dev/null; then
4998                                 echo "Okay, it looks like setuid scripts are secure." >&4
4999                                 dflt=y
5000                         else
5001                                 echo "I don't think setuid scripts are secure." >&4
5002                                 dflt=n
5003                         fi
5004                         ;;
5005                 esac
5006                 rp='Does your kernel have *secure* setuid scripts?'
5007                 . ./myread
5008                 case "$ans" in
5009                 [yY]*)  val="$define";;
5010                 *)      val="$undef";;
5011                 esac
5012         fi
5013 else
5014         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5015         echo "(That's for file descriptors, not floppy disks.)"
5016         val="$undef"
5017 fi
5018 set d_suidsafe
5019 eval $setvar
5020
5021 $rm -f reflect flect
5022
5023 : now see if they want to do setuid emulation
5024 echo " "
5025 val="$undef"
5026 case "$d_suidsafe" in
5027 "$define")
5028         val="$undef"
5029         echo "No need to emulate SUID scripts since they are secure here." >& 4
5030         ;;
5031 *)
5032         $cat <<EOM
5033 Some systems have disabled setuid scripts, especially systems where
5034 setuid scripts cannot be secure.  On systems where setuid scripts have
5035 been disabled, the setuid/setgid bits on scripts are currently
5036 useless.  It is possible for $package to detect those bits and emulate
5037 setuid/setgid in a secure fashion.  This emulation will only work if
5038 setuid scripts have been disabled in your kernel.
5039
5040 EOM
5041         case "$d_dosuid" in
5042         "$define") dflt=y ;;
5043         *) dflt=n ;;
5044         esac
5045         rp="Do you want to do setuid/setgid emulation?"
5046         . ./myread
5047         case "$ans" in
5048         [yY]*)  val="$define";;
5049         *)      val="$undef";;
5050         esac
5051         ;;
5052 esac
5053 set d_dosuid
5054 eval $setvar
5055
5056 : determine filename position in cpp output
5057 echo " "
5058 echo "Computing filename position in cpp output for #include directives..." >&4
5059 echo '#include <stdio.h>' > foo.c
5060 $cat >fieldn <<EOF
5061 $startsh
5062 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5063 $grep '^[       ]*#.*stdio\.h' | \
5064 while read cline; do
5065         pos=1
5066         set \$cline
5067         while $test \$# -gt 0; do
5068                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5069                         echo "\$pos"
5070                         exit 0
5071                 fi
5072                 shift
5073                 pos=\`expr \$pos + 1\`
5074         done
5075 done
5076 EOF
5077 chmod +x fieldn
5078 fieldn=`./fieldn`
5079 $rm -f foo.c fieldn
5080 case $fieldn in
5081 '') pos='???';;
5082 1) pos=first;;
5083 2) pos=second;;
5084 3) pos=third;;
5085 *) pos="${fieldn}th";;
5086 esac
5087 echo "Your cpp writes the filename in the $pos field of the line."
5088
5089 : locate header file
5090 $cat >findhdr <<EOF
5091 $startsh
5092 wanted=\$1
5093 name=''
5094 for usrincdir in $usrinc
5095 do
5096         if test -f \$usrincdir/\$wanted; then
5097                 echo "\$usrincdir/\$wanted"
5098                 exit 0
5099         fi
5100 done
5101 awkprg='{ print \$$fieldn }'
5102 echo "#include <\$wanted>" > foo\$\$.c
5103 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5104 $grep "^[       ]*#.*\$wanted" | \
5105 while read cline; do
5106         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5107         case "\$name" in
5108         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5109         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5110         *) exit 2;;
5111         esac;
5112 done;
5113 #
5114 # status = 0: grep returned 0 lines, case statement not executed
5115 # status = 1: headerfile found
5116 # status = 2: while loop executed, no headerfile found
5117 #
5118 status=\$?
5119 $rm -f foo\$\$.c;
5120 if test \$status -eq 1; then
5121         exit 0;
5122 fi
5123 exit 1
5124 EOF
5125 chmod +x findhdr
5126
5127 : define an alternate in-header-list? function
5128 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5129 cont=true; xxf="echo \"<\$1> found.\" >&4";
5130 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5131 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5132 esac;
5133 case $# in 4) instead=instead;; *) instead="at last";; esac;
5134 while $test "$cont"; do
5135         xxx=`./findhdr $1`
5136         var=$2; eval "was=\$$2";
5137         if $test "$xxx" && $test -r "$xxx";
5138         then eval $xxf;
5139         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5140                 cont="";
5141         else eval $xxnf;
5142         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5143         set $yyy; shift; shift; yyy=$@;
5144         case $# in 0) cont="";;
5145         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5146                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5147         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5148                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5149         esac;
5150 done;
5151 while $test "$yyy";
5152 do set $yyy; var=$2; eval "was=\$$2";
5153         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5154         set $yyy; shift; shift; yyy=$@;
5155 done'
5156
5157 : see if this is a malloc.h system
5158 set malloc.h i_malloc
5159 eval $inhdr
5160
5161 : see if stdlib is available
5162 set stdlib.h i_stdlib
5163 eval $inhdr
5164
5165 : determine which malloc to compile in
5166 echo " "
5167 case "$usemymalloc" in
5168 ''|[yY]*|true|$define)  dflt='y' ;;
5169 *)      dflt='n' ;;
5170 esac
5171 rp="Do you wish to attempt to use the malloc that comes with $package?"
5172 . ./myread
5173 usemymalloc="$ans"
5174 case "$ans" in
5175 y*|true)
5176         usemymalloc='y'
5177         mallocsrc='malloc.c'
5178         mallocobj="malloc$_o"
5179         d_mymalloc="$define"
5180         case "$libs" in
5181         *-lmalloc*)
5182                 : Remove malloc from list of libraries to use
5183                 echo "Removing unneeded -lmalloc from library list" >&4
5184                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5185                 shift
5186                 libs="$*"
5187                 echo "libs = $libs" >&4
5188                 ;;
5189         esac
5190         ;;
5191 *)
5192         usemymalloc='n'
5193         mallocsrc=''
5194         mallocobj=''
5195         d_mymalloc="$undef"
5196         ;;
5197 esac
5198
5199 : compute the return types of malloc and free
5200 echo " "
5201 $cat >malloc.c <<END
5202 #$i_malloc I_MALLOC
5203 #$i_stdlib I_STDLIB
5204 #include <stdio.h>
5205 #include <sys/types.h>
5206 #ifdef I_MALLOC
5207 #include <malloc.h>
5208 #endif
5209 #ifdef I_STDLIB
5210 #include <stdlib.h>
5211 #endif
5212 #ifdef TRY_MALLOC
5213 void *malloc();
5214 #endif
5215 #ifdef TRY_FREE
5216 void free();
5217 #endif
5218 END
5219 case "$malloctype" in
5220 '')
5221         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5222                 malloctype='void *'
5223         else
5224                 malloctype='char *'
5225         fi
5226         ;;
5227 esac
5228 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5229
5230 case "$freetype" in
5231 '')
5232         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5233                 freetype='void'
5234         else
5235                 freetype='int'
5236         fi
5237         ;;
5238 esac
5239 echo "Your system uses $freetype free(), it would seem." >&4
5240 $rm -f malloc.[co]
5241 $cat <<EOM
5242
5243 The installation process will also create a directory for
5244 vendor-supplied add-ons.  Vendors who supply perl with their system
5245 may find it convenient to place all vendor-supplied files in this
5246 directory rather than in the main distribution directory.  This will
5247 ease upgrades between binary-compatible maintenance versions of perl.
5248
5249 Of course you may also use these directories in whatever way you see
5250 fit.  For example, you might use them to access modules shared over a
5251 company-wide network.
5252
5253 The default answer should be fine for most people.
5254 This causes further questions about vendor add-ons to be skipped
5255 and no vendor-specific directories will be configured for perl.
5256
5257 EOM
5258 rp='Do you want to configure vendor-specific add-on directories?'
5259 case "$usevendorprefix" in
5260 define|true|[yY]*) dflt=y ;;
5261 *)      : User may have set vendorprefix directly on Configure command line.
5262         case "$vendorprefix" in
5263         ''|' ') dflt=n ;;
5264         *)      dflt=y ;;
5265         esac
5266         ;;
5267 esac
5268 . ./myread
5269 case "$ans" in
5270 [yY]*)  fn=d~+
5271         rp='Installation prefix to use for vendor-supplied add-ons?'
5272         case "$vendorprefix" in
5273         '') dflt='' ;;
5274         *)  dflt=$vendorprefix ;;
5275         esac
5276         . ./getfile
5277         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5278         oldvendorprefix=''
5279         case "$vendorprefix" in
5280         '') ;;
5281         *)      case "$ans" in
5282                 "$prefix") ;;
5283                 *) oldvendorprefix="$prefix";;
5284                 esac
5285                 ;;
5286         esac
5287         usevendorprefix="$define"
5288         vendorprefix="$ans"
5289         vendorprefixexp="$ansexp"
5290         ;;
5291 *)      usevendorprefix="$undef"
5292         vendorprefix=''
5293         vendorprefixexp=''
5294         ;;
5295 esac
5296
5297 case "$vendorprefix" in
5298 '')     d_vendorlib="$undef"
5299         vendorlib=''
5300         vendorlibexp=''
5301         ;;
5302 *)      d_vendorlib="$define"
5303         : determine where vendor-supplied modules go.
5304         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5305         case "$vendorlib" in
5306         '')
5307                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5308                 case "$installstyle" in
5309                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5310                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5311                 esac
5312                 ;;
5313         *)      dflt="$vendorlib"
5314                 ;;
5315         esac
5316         fn=d~+
5317         rp='Pathname for the vendor-supplied library files?'
5318         . ./getfile
5319         vendorlib="$ans"
5320         vendorlibexp="$ansexp"
5321         ;;
5322 esac
5323 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5324 : Change installation prefix, if necessary.
5325 if $test X"$prefix" != X"$installprefix"; then
5326         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5327 else
5328         installvendorlib="$vendorlibexp"
5329 fi
5330
5331 case "$vendorprefix" in
5332 '')     d_vendorarch="$undef"
5333         vendorarch=''
5334         vendorarchexp=''
5335         ;;
5336 *)      d_vendorarch="$define"
5337         : determine where vendor-supplied architecture-dependent libraries go.
5338         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5339         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5340         : vendorlib may have an optional trailing /share.
5341         case "$vendorarch" in
5342         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5343                 dflt="$dflt/$archname"
5344                 ;;
5345         *)      dflt="$vendorarch" ;;
5346         esac
5347         fn=d~+
5348         rp='Pathname for vendor-supplied architecture-dependent files?'
5349         . ./getfile
5350         vendorarch="$ans"
5351         vendorarchexp="$ansexp"
5352         ;;
5353 esac
5354 : Change installation prefix, if necessary.
5355 if $test X"$prefix" != X"$installprefix"; then
5356         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5357 else
5358         installvendorarch="$vendorarchexp"
5359 fi
5360
5361 : Cruising for prototypes
5362 echo " "
5363 echo "Checking out function prototypes..." >&4
5364 $cat >prototype.c <<'EOCP'
5365 int main(int argc, char *argv[]) {
5366         exit(0);}
5367 EOCP
5368 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5369         echo "Your C compiler appears to support function prototypes."
5370         val="$define"
5371 else
5372         echo "Your C compiler doesn't seem to understand function prototypes."
5373         val="$undef"
5374 fi
5375 set prototype
5376 eval $setvar
5377 $rm -f prototype*
5378
5379 case "$prototype" in
5380 "$define") ;;
5381 *)      ansi2knr='ansi2knr'
5382         echo " "
5383         cat <<EOM >&4
5384
5385 $me:  FATAL ERROR:
5386 This version of $package can only be compiled by a compiler that 
5387 understands function prototypes.  Unfortunately, your C compiler 
5388         $cc $ccflags
5389 doesn't seem to understand them.  Sorry about that.
5390
5391 If GNU cc is available for your system, perhaps you could try that instead.  
5392
5393 Eventually, we hope to support building Perl with pre-ANSI compilers.
5394 If you would like to help in that effort, please contact <perlbug@perl.org>.
5395
5396 Aborting Configure now.
5397 EOM
5398         exit 2
5399         ;;
5400 esac
5401
5402 : determine where public executables go
5403 echo " "
5404 set dflt bin bin
5405 eval $prefixit
5406 fn=d~
5407 rp='Pathname where the public executables will reside?'
5408 . ./getfile
5409 if $test "X$ansexp" != "X$binexp"; then
5410         installbin=''
5411 fi
5412 bin="$ans"
5413 binexp="$ansexp"
5414 : Change installation prefix, if necessary.
5415 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5416 if $test X"$prefix" != X"$installprefix"; then
5417         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5418 else
5419         installbin="$binexp"
5420 fi
5421
5422 : Find perl5.005 or later.
5423 echo "Looking for a previously installed perl5.005 or later... "
5424 case "$perl5" in
5425 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5426                 : Check if this perl is recent and can load a simple module
5427                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5428                         perl5=$tdir/perl
5429                         break;
5430                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5431                         perl5=$tdir/perl
5432                         break;
5433                 fi
5434         done
5435         ;;
5436 *)      perl5="$perl5"
5437         ;;
5438 esac
5439 case "$perl5" in
5440 '')     echo "None found.  That's ok.";;
5441 *)      echo "Using $perl5." ;;
5442 esac
5443
5444 $cat <<EOM
5445
5446 After $package is installed, you may wish to install various
5447 add-on modules and utilities.  Typically, these add-ons will
5448 be installed under $prefix with the rest
5449 of this package.  However, you may wish to install such add-ons
5450 elsewhere under a different prefix.
5451
5452 If you do not wish to put everything under a single prefix, that's
5453 ok.  You will be prompted for the individual locations; this siteprefix
5454 is only used to suggest the defaults.
5455
5456 The default should be fine for most people.
5457
5458 EOM
5459 fn=d~+
5460 rp='Installation prefix to use for add-on modules and utilities?'
5461 : XXX Here might be another good place for an installstyle setting.
5462 case "$siteprefix" in
5463 '') dflt=$prefix ;;
5464 *)  dflt=$siteprefix ;;
5465 esac
5466 . ./getfile
5467 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5468 oldsiteprefix=''
5469 case "$siteprefix" in
5470 '') ;;
5471 *)      case "$ans" in
5472         "$prefix") ;;
5473         *) oldsiteprefix="$prefix";;
5474         esac
5475         ;;
5476 esac
5477 siteprefix="$ans"
5478 siteprefixexp="$ansexp"
5479
5480 : determine where site specific libraries go.
5481 : Usual default is /usr/local/lib/perl5/site_perl/$version
5482 : The default "style" setting is made in installstyle.U
5483 : XXX No longer works with Prefixit stuff.
5484 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5485 case "$sitelib" in
5486 '') case "$installstyle" in
5487         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5488         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5489         esac
5490         ;;
5491 *)      dflt="$sitelib"
5492         ;;
5493 esac
5494 $cat <<EOM
5495
5496 The installation process will create a directory for
5497 site-specific extensions and modules.  Most users find it convenient
5498 to place all site-specific files in this directory rather than in the
5499 main distribution directory.
5500
5501 EOM
5502 fn=d~+
5503 rp='Pathname for the site-specific library files?'
5504 . ./getfile
5505 sitelib="$ans"
5506 sitelibexp="$ansexp"
5507 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5508 : Change installation prefix, if necessary.
5509 if $test X"$prefix" != X"$installprefix"; then
5510         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5511 else
5512         installsitelib="$sitelibexp"
5513 fi
5514
5515 : Determine list of previous versions to include in @INC
5516 $cat > getverlist <<EOPL
5517 #!$perl5 -w
5518 use File::Basename;
5519 \$api_versionstring = "$api_versionstring";
5520 \$version = "$version";
5521 \$sitelib = "$sitelib";
5522 \$archname = "$archname";
5523 EOPL
5524         $cat >> getverlist <<'EOPL'
5525 # Can't have leading @ because metaconfig interprets it as a command!
5526 ;@inc_version_list=();
5527 $stem=dirname($sitelib);
5528 # XXX Redo to do opendir/readdir? 
5529 if (-d $stem) {
5530     chdir($stem);
5531     ;@candidates = glob("5.*");
5532 }
5533 else {
5534     ;@candidates = ();
5535 }
5536
5537 # XXX ToDo:  These comparisons must be reworked when two-digit
5538 # subversions come along, so that 5.7.10 compares as greater than
5539 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5540 # widespread that we can use the built-in version vectors rather
5541 # than reinventing them here.  For 5.6.0, however, we must
5542 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5543 foreach $d (@candidates) {
5544     if ($d lt $version) {
5545         if ($d ge $api_versionstring) {
5546             unshift(@inc_version_list, "$d/$archname", $d);
5547         }
5548         elsif ($d ge "5.005") {
5549             unshift(@inc_version_list, $d);
5550         }
5551     }
5552     else {
5553         # Skip newer version.  I.e. don't look in
5554         # 5.7.0 if we're installing 5.6.1.
5555     }
5556 }
5557
5558 if (@inc_version_list) {
5559     print join(' ', @inc_version_list);
5560 }
5561 else {
5562     # Blank space to preserve value for next Configure run.
5563     print " ";
5564 }
5565 EOPL
5566 chmod +x getverlist
5567 case "$inc_version_list" in
5568 '')     if test -x "$perl5"; then
5569                 dflt=`$perl5 getverlist`
5570         else
5571                 dflt='none'
5572         fi
5573         ;;
5574 $undef) dflt='none' ;;
5575 *)  dflt="$inc_version_list" ;;
5576 esac
5577 case "$dflt" in
5578 ''|' ') dflt=none ;;
5579 esac
5580 $cat <<'EOM'
5581
5582 In order to ease the process of upgrading, this version of perl 
5583 can be configured to use modules built and installed with earlier 
5584 versions of perl that were installed under $prefix.  Specify here
5585 the list of earlier versions that this version of perl should check.
5586 If Configure detected no earlier versions of perl installed under
5587 $prefix, then the list will be empty.  Answer 'none' to tell perl
5588 to not search earlier versions.
5589
5590 The default should almost always be sensible, so if you're not sure,
5591 just accept the default.
5592 EOM
5593
5594 rp='List of earlier versions to include in @INC?'
5595 . ./myread
5596 case "$ans" in
5597 [Nn]one|''|' ') inc_version_list=' ' ;;
5598 *) inc_version_list="$ans" ;;
5599 esac
5600 case "$inc_version_list" in
5601 ''|' ') 
5602         inc_version_list_init='0';;
5603 *)      inc_version_list_init=`echo $inc_version_list |
5604                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5605         ;;
5606 esac
5607 $rm -f getverlist
5608
5609 : determine whether to install perl also as /usr/bin/perl
5610
5611 echo " "
5612 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5613         $cat <<EOM
5614 Many scripts expect perl to be installed as /usr/bin/perl.
5615 I can install the perl you are about to compile also as /usr/bin/perl
5616 (in addition to $installbin/perl).
5617 EOM
5618         case "$installusrbinperl" in
5619         "$undef"|[nN]*) dflt='n';;
5620         *)              dflt='y';;
5621         esac
5622         rp="Do you want to install perl as /usr/bin/perl?"
5623         . ./myread
5624         case "$ans" in
5625         [yY]*)  val="$define";;
5626         *)      val="$undef" ;;
5627         esac
5628 else
5629         val="$undef"
5630 fi
5631 set installusrbinperl
5632 eval $setvar
5633
5634 echo " "
5635 echo "Checking for GNU C Library..." >&4
5636 cat >gnulibc.c <<EOM
5637 #include <stdio.h>
5638 int main()
5639 {
5640 #ifdef __GLIBC__
5641     exit(0);
5642 #else
5643     exit(1);
5644 #endif
5645 }
5646 EOM
5647 set gnulibc
5648 if eval $compile_ok && ./gnulibc; then
5649         val="$define"
5650         echo "You are using the GNU C Library"
5651 else
5652         val="$undef"
5653         echo "You are not using the GNU C Library"
5654 fi
5655 $rm -f gnulibc*
5656 set d_gnulibc
5657 eval $setvar
5658
5659 : see if nm is to be used to determine whether a symbol is defined or not
5660 case "$usenm" in
5661 '')
5662         dflt=''
5663         case "$d_gnulibc" in
5664         "$define")
5665                 echo " "
5666                 echo "nm probably won't work on the GNU C Library." >&4
5667                 dflt=n
5668                 ;;
5669         esac
5670         case "$dflt" in
5671         '') 
5672                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5673                         echo " "
5674                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5675                         echo "'nm' won't be sufficient on this sytem." >&4
5676                         dflt=n
5677                 fi
5678                 ;;
5679         esac
5680         case "$dflt" in
5681         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5682                 if $test $dflt -gt 20; then
5683                         dflt=y
5684                 else
5685                         dflt=n
5686                 fi
5687                 ;;
5688         esac
5689         ;;
5690 *)
5691         case "$usenm" in
5692         true|$define) dflt=y;;
5693         *) dflt=n;;
5694         esac
5695         ;;
5696 esac
5697 $cat <<EOM
5698
5699 I can use $nm to extract the symbols from your C libraries. This
5700 is a time consuming task which may generate huge output on the disk (up
5701 to 3 megabytes) but that should make the symbols extraction faster. The
5702 alternative is to skip the 'nm' extraction part and to compile a small
5703 test program instead to determine whether each symbol is present. If
5704 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5705 this may be the best solution.
5706
5707 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5708
5709 EOM
5710 rp="Shall I use $nm to extract C symbols from the libraries?"
5711 . ./myread
5712 case "$ans" in
5713 [Nn]*) usenm=false;;
5714 *) usenm=true;;
5715 esac
5716
5717 runnm=$usenm
5718 case "$reuseval" in
5719 true) runnm=false;;
5720 esac
5721
5722 : nm options which may be necessary
5723 case "$nm_opt" in
5724 '') if $test -f /mach_boot; then
5725                 nm_opt=''       # Mach
5726         elif $test -d /usr/ccs/lib; then
5727                 nm_opt='-p'     # Solaris (and SunOS?)
5728         elif $test -f /dgux; then
5729                 nm_opt='-p'     # DG-UX
5730         elif $test -f /lib64/rld; then
5731                 nm_opt='-p'     # 64-bit Irix
5732         else
5733                 nm_opt=''
5734         fi;;
5735 esac
5736
5737 : nm options which may be necessary for shared libraries but illegal
5738 : for archive libraries.  Thank you, Linux.
5739 case "$nm_so_opt" in
5740 '')     case "$myuname" in
5741         *linux*)
5742                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5743                         nm_so_opt='--dynamic'
5744                 fi
5745                 ;;
5746         esac
5747         ;;
5748 esac
5749
5750 case "$runnm" in
5751 true)
5752 : get list of predefined functions in a handy place
5753 echo " "
5754 case "$libc" in
5755 '') libc=unknown
5756         case "$libs" in
5757         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5758         esac
5759         ;;
5760 esac
5761 libnames='';
5762 case "$libs" in
5763 '') ;;
5764 *)  for thislib in $libs; do
5765         case "$thislib" in
5766         -lc|-lc_s)
5767                 : Handle C library specially below.
5768                 ;;
5769         -l*)
5770                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5771                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5772                         :
5773                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5774                         :
5775                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5776                         :
5777                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5778                         :
5779                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5780                         :
5781                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5782                         :
5783                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5784                         :
5785                 else
5786                         try=''
5787                 fi
5788                 libnames="$libnames $try"
5789                 ;;
5790         *) libnames="$libnames $thislib" ;;
5791         esac
5792         done
5793         ;;
5794 esac
5795 xxx=normal
5796 case "$libc" in
5797 unknown)
5798         set /lib/libc.$so
5799         for xxx in $libpth; do
5800                 $test -r $1 || set $xxx/libc.$so
5801                 : The messy sed command sorts on library version numbers.
5802                 $test -r $1 || \
5803                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5804                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5805                                 h
5806                                 s/[0-9][0-9]*/0000&/g
5807                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5808                                 G
5809                                 s/\n/ /' | \
5810                          sort | $sed -e 's/^.* //'`
5811                 eval set \$$#
5812         done
5813         $test -r $1 || set /usr/ccs/lib/libc.$so
5814         $test -r $1 || set /lib/libsys_s$_a
5815         ;;
5816 *)
5817         set blurfl
5818         ;;
5819 esac
5820 if $test -r "$1"; then
5821         echo "Your (shared) C library seems to be in $1."
5822         libc="$1"
5823 elif $test -r /lib/libc && $test -r /lib/clib; then
5824         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5825         xxx=apollo
5826         libc='/lib/clib /lib/libc'
5827         if $test -r /lib/syslib; then
5828                 echo "(Your math library is in /lib/syslib.)"
5829                 libc="$libc /lib/syslib"
5830         fi
5831 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5832         echo "Your C library seems to be in $libc, as you said before."
5833 elif $test -r $incpath/usr/lib/libc$_a; then
5834         libc=$incpath/usr/lib/libc$_a;
5835         echo "Your C library seems to be in $libc.  That's fine."
5836 elif $test -r /lib/libc$_a; then
5837         libc=/lib/libc$_a;
5838         echo "Your C library seems to be in $libc.  You're normal."
5839 else
5840         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5841                 :
5842         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5843                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5844         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5845                 :
5846         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5847                 :
5848         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5849                 :
5850         else
5851                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5852         fi
5853         if $test -r "$tans"; then
5854                 echo "Your C library seems to be in $tans, of all places."
5855                 libc=$tans
5856         else
5857                 libc='blurfl'
5858         fi
5859 fi
5860 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5861         dflt="$libc"
5862         cat <<EOM
5863
5864 If the guess above is wrong (which it might be if you're using a strange
5865 compiler, or your machine supports multiple models), you can override it here.
5866
5867 EOM
5868 else
5869         dflt=''
5870         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5871         cat >&4 <<EOM
5872 I can't seem to find your C library.  I've looked in the following places:
5873
5874 EOM
5875         $sed 's/^/      /' libpath
5876         cat <<EOM
5877
5878 None of these seems to contain your C library. I need to get its name...
5879
5880 EOM
5881 fi
5882 fn=f
5883 rp='Where is your C library?'
5884 . ./getfile
5885 libc="$ans"
5886
5887 echo " "
5888 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5889 set X `cat libnames`
5890 shift
5891 xxx=files
5892 case $# in 1) xxx=file; esac
5893 echo "Extracting names from the following $xxx for later perusal:" >&4
5894 echo " "
5895 $sed 's/^/      /' libnames >&4
5896 echo " "
5897 $echo $n "This may take a while...$c" >&4
5898
5899 for file in $*; do
5900         case $file in
5901         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5902         *) $nm $nm_opt $file 2>/dev/null;;
5903         esac
5904 done >libc.tmp
5905
5906 $echo $n ".$c"
5907 $grep fprintf libc.tmp > libc.ptf
5908 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5909 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5910 xxx='[ADTSIW]'
5911 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5912         eval $xscan;\
5913         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5914                 eval $xrun
5915 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5916         eval $xscan;\
5917         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5918                 eval $xrun
5919 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5920         eval $xscan;\
5921         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5922                 eval $xrun
5923 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5924         eval $xscan;\
5925         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5926                 eval $xrun
5927 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5928         eval $xscan;\
5929         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5930                 eval $xrun
5931 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5932         eval $xscan;\
5933         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5934                 eval $xrun
5935 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5936                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5937         eval $xscan;\
5938         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5939                 eval $xrun
5940 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5941         eval $xscan;\
5942         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5943                 eval $xrun
5944 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5945         eval $xscan;\
5946         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5947                 eval $xrun
5948 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5949         eval $xscan;\
5950         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5951                 eval $xrun
5952 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5953         eval $xscan;\
5954         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5955                 eval $xrun
5956 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5957         eval $xscan;\
5958         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5959                 eval $xrun
5960 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5961         eval $xscan;\
5962         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5963                 eval $xrun
5964 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5965         eval $xscan;\
5966         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5967                 eval $xrun
5968 else
5969         $nm -p $* 2>/dev/null >libc.tmp
5970         $grep fprintf libc.tmp > libc.ptf
5971         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5972                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5973         then
5974                 nm_opt='-p'
5975                 eval $xrun
5976         else
5977                 echo " "
5978                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5979                 com=''
5980                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5981                         for thisname in $libnames $libc; do
5982                                 $ar t $thisname >>libc.tmp
5983                         done
5984                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5985                         echo "Ok." >&4
5986                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5987                         # Repeat libc to extract forwarders to DLL entries too
5988                         for thisname in $libnames $libc; do
5989                                 $ar tv $thisname >>libc.tmp
5990                                 # Revision 50 of EMX has bug in $ar.
5991                                 # it will not extract forwarders to DLL entries
5992                                 # Use emximp which will extract exactly them.
5993                                 emximp -o tmp.imp $thisname \
5994                                     2>/dev/null && \
5995                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5996                                     < tmp.imp >>libc.tmp
5997                                 $rm tmp.imp
5998                         done
5999                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6000                         echo "Ok." >&4
6001                 else
6002                         echo "$ar didn't seem to work right." >&4
6003                         echo "Maybe this is a Cray...trying bld instead..." >&4
6004                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6005                         then
6006                                 for thisname in $libnames; do
6007                                         bld t $libnames | \
6008                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6009                                         $ar t $thisname >>libc.tmp
6010                                 done
6011                                 echo "Ok." >&4
6012                         else
6013                                 echo "That didn't work either.  Giving up." >&4
6014                                 exit 1
6015                         fi
6016                 fi
6017         fi
6018 fi
6019 nm_extract="$com"
6020 if $test -f /lib/syscalls.exp; then
6021         echo " "
6022         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6023         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6024 fi
6025 ;;
6026 esac
6027 $rm -f libnames libpath
6028
6029 : see if dld is available
6030 set dld.h i_dld
6031 eval $inhdr
6032
6033 : is a C symbol defined?
6034 csym='tlook=$1;
6035 case "$3" in
6036 -v) tf=libc.tmp; tc=""; tdc="";;
6037 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6038 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6039 esac;
6040 tx=yes;
6041 case "$reuseval-$4" in
6042 true-) ;;
6043 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6044 esac;
6045 case "$tx" in
6046 yes)
6047         case "$runnm" in
6048         true)
6049                 if $contains $tlook $tf >/dev/null 2>&1;
6050                 then tval=true;
6051                 else tval=false;
6052                 fi;;
6053         *)
6054                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6055                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6056                 then tval=true;
6057                 else tval=false;
6058                 fi;
6059                 $rm -f t t.c;;
6060         esac;;
6061 *)
6062         case "$tval" in
6063         $define) tval=true;;
6064         *) tval=false;;
6065         esac;;
6066 esac;
6067 eval "$2=$tval"'
6068
6069 : define an is-in-libc? function
6070 inlibc='echo " "; td=$define; tu=$undef;
6071 sym=$1; var=$2; eval "was=\$$2";
6072 tx=yes;
6073 case "$reuseval$was" in
6074 true) ;;
6075 true*) tx=no;;
6076 esac;
6077 case "$tx" in
6078 yes)
6079         set $sym tres -f;
6080         eval $csym;
6081         case "$tres" in
6082         true)
6083                 echo "$sym() found." >&4;
6084                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6085         *)
6086                 echo "$sym() NOT found." >&4;
6087                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6088         esac;;
6089 *)
6090         case "$was" in
6091         $define) echo "$sym() found." >&4;;
6092         *) echo "$sym() NOT found." >&4;;
6093         esac;;
6094 esac'
6095
6096 : see if dlopen exists
6097 xxx_runnm="$runnm"
6098 runnm=false
6099 set dlopen d_dlopen
6100 eval $inlibc
6101 runnm="$xxx_runnm"
6102
6103 : determine which dynamic loading, if any, to compile in
6104 echo " "
6105 dldir="ext/DynaLoader"
6106 case "$usedl" in
6107 $define|y|true)
6108         dflt='y'
6109         usedl="$define"
6110         ;;
6111 $undef|n|false)
6112         dflt='n'
6113         usedl="$undef"
6114         ;;
6115 *) 
6116         dflt='n'
6117         case "$d_dlopen" in
6118             $define) dflt='y' ;;
6119         esac
6120         case "$i_dld" in
6121             $define) dflt='y' ;;
6122         esac
6123         : Does a dl_xxx.xs file exist for this operating system
6124         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6125         ;;
6126 esac
6127 rp="Do you wish to use dynamic loading?"
6128 . ./myread
6129 usedl="$ans"
6130 case "$ans" in
6131 y*) usedl="$define"
6132         case "$dlsrc" in
6133         '')
6134                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6135                         dflt="$dldir/dl_${osname}.xs"
6136                 elif $test "$d_dlopen" = "$define" ; then
6137                         dflt="$dldir/dl_dlopen.xs"
6138                 elif $test "$i_dld" = "$define" ; then
6139                         dflt="$dldir/dl_dld.xs"
6140                 else
6141                         dflt=''
6142                 fi
6143                 ;;
6144         *)      dflt="$dldir/$dlsrc"
6145                 ;;
6146         esac
6147     echo "The following dynamic loading files are available:"
6148         : Can not go over to $dldir because getfile has path hard-coded in.
6149         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6150         rp="Source file to use for dynamic loading"
6151         fn="fne"
6152         gfpth="$src"
6153         . ./getfile
6154         usedl="$define"
6155         : emulate basename
6156         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6157
6158         $cat << EOM
6159
6160 Some systems may require passing special flags to $cc -c to
6161 compile modules that will be used to create a shared library.
6162 To use no flags, say "none".
6163
6164 EOM
6165     case "$cccdlflags" in
6166     '') case "$gccversion" in
6167                 '') case "$osname" in
6168                         hpux)   dflt='+z' ;;
6169                         next)   dflt='none' ;;
6170                         irix*)  dflt='-KPIC' ;;
6171                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6172                         sunos)  dflt='-pic' ;;
6173                         *)      dflt='none' ;;
6174                     esac
6175                         ;;
6176                 *)  case "$osname" in
6177                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6178                         *)      dflt='-fpic' ;;
6179                     esac ;;
6180             esac ;;
6181         ' ') dflt='none' ;;
6182     *)  dflt="$cccdlflags" ;;
6183     esac
6184     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6185     . ./myread
6186     case "$ans" in
6187     none) cccdlflags=' ' ;;
6188     *) cccdlflags="$ans" ;;
6189     esac
6190
6191     cat << EOM
6192
6193 Some systems use ld to create libraries that can be dynamically loaded,
6194 while other systems (such as those using ELF) use $cc.
6195
6196 EOM
6197         case "$ld" in
6198         '')     $cat >try.c <<'EOM'
6199 /* Test for whether ELF binaries are produced */
6200 #include <fcntl.h>
6201 #include <stdlib.h>
6202 int main() {
6203         char b[4];
6204         int i = open("a.out",O_RDONLY);
6205         if(i == -1) 
6206                 exit(1); /* fail */
6207         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6208                 exit(0); /* succeed (yes, it's ELF) */
6209         else
6210                 exit(1); /* fail */
6211 }
6212 EOM
6213                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6214                         cat <<EOM
6215 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6216 EOM
6217                         dflt="$cc"
6218                 else
6219                         echo "I'll use ld to build dynamic libraries."
6220                         dflt='ld'
6221                 fi
6222                 rm -f try.c a.out
6223                 ;;
6224         *)      dflt="$ld"
6225                 ;;
6226         esac
6227
6228     rp="What command should be used to create dynamic libraries?"
6229     . ./myread
6230         ld="$ans"
6231
6232     cat << EOM
6233
6234 Some systems may require passing special flags to $ld to create a
6235 library that can be dynamically loaded.  If your ld flags include
6236 -L/other/path options to locate libraries outside your loader's normal
6237 search path, you may need to specify those -L options here as well.  To
6238 use no flags, say "none".
6239
6240 EOM
6241     case "$lddlflags" in
6242     '') case "$osname" in
6243                         beos) dflt='-nostart' ;;
6244                         hpux) dflt='-b';
6245                               case "$gccversion" in
6246                               '') dflt="$dflt +vnocompatwarnings" ;;
6247                               esac
6248                               ;;        
6249                         linux|irix*)    dflt='-shared' ;;
6250                         next)  dflt='none' ;;
6251                         solaris) dflt='-G' ;;
6252                         sunos) dflt='-assert nodefinitions' ;;
6253                         svr4*|esix*) dflt="-G $ldflags" ;;
6254                 *)     dflt='none' ;;
6255                         esac
6256                         ;;
6257     *) dflt="$lddlflags" ;;
6258     esac
6259
6260         : Try to guess additional flags to pick up local libraries.
6261         : Be careful not to append to a plain 'none'
6262         case "$dflt" in
6263         none) dflt='' ;;
6264         esac
6265         for thisflag in $ldflags; do
6266                 case "$thisflag" in
6267                 -L*)
6268                         case " $dflt " in
6269                         *" $thisflag "*) ;;
6270                         *) dflt="$dflt $thisflag" ;;
6271                         esac
6272                         ;;
6273                 esac
6274         done
6275
6276         case "$dflt" in
6277         ''|' ') dflt='none' ;;
6278         esac
6279
6280     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6281     . ./myread
6282     case "$ans" in
6283     none) lddlflags=' ' ;;
6284     *) lddlflags="$ans" ;;
6285     esac
6286
6287         cat <<EOM
6288
6289 Some systems may require passing special flags to $cc to indicate that
6290 the resulting executable will use dynamic linking.  To use no flags,
6291 say "none".
6292
6293 EOM
6294     case "$ccdlflags" in
6295     '') case "$osname" in
6296                 hpux)   dflt='-Wl,-E' ;;
6297                 linux)  dflt='-rdynamic' ;;
6298                 next)   dflt='none' ;;
6299                 sunos)  dflt='none' ;;
6300                 *)      dflt='none' ;;
6301             esac ;;
6302     ' ')  dflt='none' ;;
6303     *)  dflt="$ccdlflags" ;;
6304     esac
6305     rp="Any special flags to pass to $cc to use dynamic linking?"
6306     . ./myread
6307     case "$ans" in
6308     none) ccdlflags=' ' ;;
6309     *) ccdlflags="$ans" ;;
6310     esac
6311     ;;
6312 *)  usedl="$undef"
6313         ld='ld'
6314     dlsrc='dl_none.xs'
6315     lddlflags=''
6316     ccdlflags=''
6317     ;;
6318 esac
6319
6320 also=''
6321 case "$usedl" in
6322 $undef)
6323         # No dynamic loading being used, so don't bother even to prompt.
6324         useshrplib='false'
6325         ;;
6326 *)      case "$useshrplib" in
6327         '')     case "$osname" in
6328                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6329                         dflt=y
6330                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6331                         ;;
6332                 next*)
6333                         case "$osvers" in
6334                         4*)     dflt=y
6335                                 also='Building a shared libperl is needed for MAB support.'
6336                                 ;;
6337                         *)      dflt=n
6338                                 ;;
6339                         esac
6340                         ;;
6341                 *)      dflt=n
6342                         ;;
6343                 esac
6344                 ;;
6345         $define|true|[Yy]*)
6346                 dflt=y
6347                 ;;
6348         *)      dflt=n
6349                 ;;
6350         esac
6351         $cat << EOM
6352
6353 The perl executable is normally obtained by linking perlmain.c with
6354 libperl${_a}, any static extensions (usually just DynaLoader), and
6355 any other libraries needed on this system (such as -lm, etc.).  Since
6356 your system supports dynamic loading, it is probably possible to build
6357 a shared libperl.$so.  If you will have more than one executable linked
6358 to libperl.$so, this will significantly reduce the size of each
6359 executable, but it may have a noticeable affect on performance.  The
6360 default is probably sensible for your system.
6361 $also
6362
6363 EOM
6364         rp="Build a shared libperl.$so (y/n)"
6365         . ./myread
6366         case "$ans" in
6367         true|$define|[Yy]*)
6368                 useshrplib='true'  ;;
6369         *)      useshrplib='false' ;;
6370         esac
6371         ;;
6372 esac
6373
6374 case "$useshrplib" in
6375 true)
6376         case "$libperl" in
6377         '')
6378                 # Figure out a good name for libperl.so.  Since it gets stored in
6379                 # a version-specific architecture-dependent library, the version
6380                 # number isn't really that important, except for making cc/ld happy.
6381                 #
6382                 # A name such as libperl.so.3.1
6383                 majmin="libperl.$so.$patchlevel.$subversion"
6384                 # A name such as libperl.so.301
6385                 majonly=`echo $patchlevel $subversion |
6386                         $awk '{printf "%d%02d", $1, $2}'`
6387                 majonly=libperl.$so.$majonly
6388                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6389                 # rely on figuring it out from the naming of libc.
6390                 case "${osname}${osvers}" in
6391                 next4*)
6392                         dflt=libperl.5.$so
6393                         # XXX How handle the --version stuff for MAB?
6394                         ;;
6395                 linux*)  # ld won't link with a bare -lperl otherwise.
6396                         dflt=libperl.$so
6397                         ;;
6398                 cygwin*) # include version
6399                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6400                         ;;
6401                 *)      # Try to guess based on whether libc has major.minor.
6402                         case "$libc" in
6403                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6404                         *libc.$so.[0-9]*) dflt=$majonly ;;
6405                         *)      dflt=libperl.$so ;;
6406                         esac
6407                         ;;
6408                 esac
6409                 ;;
6410         *)      dflt=$libperl
6411                 ;;
6412         esac
6413         cat << EOM
6414
6415 I need to select a good name for the shared libperl.  If your system uses
6416 library names with major and minor numbers, then you might want something
6417 like $majmin.  Alternatively, if your system uses a single version
6418 number for shared libraries, then you might want to use $majonly.
6419 Or, your system might be quite happy with a simple libperl.$so.
6420
6421 Since the shared libperl will get installed into a version-specific
6422 architecture-dependent directory, the version number of the shared perl
6423 library probably isn't important, so the default should be o.k.
6424
6425 EOM
6426         rp='What name do you want to give to the shared libperl?'
6427         . ./myread
6428         libperl=$ans
6429         echo "Ok, I'll use $libperl"
6430         ;;
6431 *)
6432         libperl="libperl${_a}"
6433         ;;
6434 esac
6435
6436 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6437 case "$shrpdir" in
6438 '') ;;
6439 *)      $cat >&4 <<EOM
6440 WARNING:  Use of the shrpdir variable for the installation location of
6441 the shared $libperl is not supported.  It was never documented and
6442 will not work in this version.  Let me (perlbug@perl.com)
6443 know of any problems this may cause.
6444
6445 EOM
6446         case "$shrpdir" in
6447         "$archlibexp/CORE")
6448                 $cat >&4 <<EOM
6449 But your current setting of $shrpdir is
6450 the default anyway, so it's harmless.
6451 EOM
6452                 ;;
6453         *)
6454                 $cat >&4 <<EOM
6455 Further, your current attempted setting of $shrpdir
6456 conflicts with the value of $archlibexp/CORE
6457 that installperl will use.
6458 EOM
6459                 ;;
6460         esac
6461         ;;
6462 esac
6463
6464 # How will the perl executable find the installed shared $libperl?
6465 # Add $xxx to ccdlflags.
6466 # If we can't figure out a command-line option, use $shrpenv to
6467 # set env LD_RUN_PATH.  The main perl makefile uses this.
6468 shrpdir=$archlibexp/CORE
6469 xxx=''
6470 tmp_shrpenv=''
6471 if "$useshrplib"; then
6472     case "$osname" in 
6473         aix)
6474                 # We'll set it in Makefile.SH...
6475                 ;;
6476         solaris|netbsd)
6477                 xxx="-R $shrpdir"
6478                 ;;
6479         freebsd)
6480                 xxx="-Wl,-R$shrpdir"
6481                 ;;
6482         linux|irix*|dec_osf)
6483                 xxx="-Wl,-rpath,$shrpdir"
6484                 ;;
6485         next)
6486                 # next doesn't like the default...
6487                 ;;
6488         beos)
6489                 # beos doesn't like the default, either.
6490                 ;;
6491         hpux*)
6492                 # hpux doesn't like the default, either.
6493                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6494                 ;;
6495         *)
6496                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6497                 ;;
6498         esac
6499         case "$xxx" in
6500         '') ;;
6501         *)      
6502                 # Only add $xxx if it isn't already in ccdlflags.
6503                 case " $ccdlflags " in
6504                 *" $xxx "*)     ;;
6505                 *)      ccdlflags="$ccdlflags $xxx"
6506                         cat <<EOM >&4
6507
6508 Adding $xxx to the flags
6509 passed to $ld so that the perl executable will find the 
6510 installed shared $libperl.
6511
6512 EOM
6513                         ;;
6514                 esac
6515                 ;;
6516         esac
6517 fi
6518 # Fix ccdlflags in AIX for building external extensions.
6519 # (For building Perl itself bare -bE:perl.exp is needed,
6520 #  Makefile.SH takes care of this.)
6521 case "$osname" in
6522 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6523 esac
6524 # Respect a hint or command-line value.
6525 case "$shrpenv" in
6526 '') shrpenv="$tmp_shrpenv" ;;
6527 esac
6528 case "$ldlibpthname" in
6529 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6530 none)   ldlibpthname='' ;;
6531 esac
6532
6533 : determine where manual pages go
6534 set man1dir man1dir none
6535 eval $prefixit
6536 $cat <<EOM
6537
6538 $spackage has manual pages available in source form.
6539 EOM
6540 case "$nroff" in
6541 nroff)
6542         echo "However, you don't have nroff, so they're probably useless to you."
6543         case "$man1dir" in
6544         '') man1dir="none";;
6545         esac;;
6546 esac
6547 echo "If you don't want the manual sources installed, answer 'none'."
6548 case "$man1dir" in
6549 ' ') dflt=none
6550         ;;
6551 '')
6552         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6553         lookpath="$lookpath $prefixexp/man/p_man/man1"
6554         lookpath="$lookpath $prefixexp/man/u_man/man1"
6555         lookpath="$lookpath $prefixexp/man/man.1"
6556         case "$sysman" in
6557         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6558         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6559         esac
6560         set dflt
6561         eval $prefixup
6562         ;;
6563 *)  dflt="$man1dir"
6564         ;;
6565 esac
6566 echo " "
6567 fn=dn+~
6568 rp="Where do the main $spackage manual pages (source) go?"
6569 . ./getfile
6570 if $test "X$man1direxp" != "X$ansexp"; then
6571         installman1dir=''
6572 fi
6573 man1dir="$ans"
6574 man1direxp="$ansexp"
6575 case "$man1dir" in
6576 '')     man1dir=' '
6577         installman1dir='';;
6578 esac
6579
6580 : Change installation prefix, if necessary.
6581 if $test X"$prefix" != X"$installprefix"; then
6582         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6583 else
6584         installman1dir="$man1direxp"
6585 fi
6586
6587 : What suffix to use on installed man pages
6588
6589 case "$man1dir" in
6590 ' ')
6591         man1ext='0'
6592         ;;
6593 *)
6594         rp="What suffix should be used for the main $spackage man pages?"
6595         case "$man1ext" in
6596         '')     case "$man1dir" in
6597                 *1)  dflt=1 ;;
6598                 *1p) dflt=1p ;;
6599                 *1pm) dflt=1pm ;;
6600                 *l) dflt=l;;
6601                 *n) dflt=n;;
6602                 *o) dflt=o;;
6603                 *p) dflt=p;;
6604                 *C) dflt=C;;
6605                 *L) dflt=L;;
6606                 *L1) dflt=L1;;
6607                 *) dflt=1;;
6608                 esac
6609                 ;;
6610         *)      dflt="$man1ext";;
6611         esac
6612         . ./myread
6613         man1ext="$ans"
6614         ;;
6615 esac
6616
6617 : see if we can have long filenames
6618 echo " "
6619 first=123456789abcdef
6620 $rm -f $first
6621 if (echo hi >$first) 2>/dev/null; then
6622         if $test -f 123456789abcde; then
6623                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6624                 val="$undef"
6625         else
6626                 echo 'You can have filenames longer than 14 characters.'>&4
6627                 val="$define"
6628         fi
6629 else
6630         $cat <<'EOM'
6631 You can't have filenames longer than 14 chars.
6632 You can't even think about them!
6633 EOM
6634         val="$undef"
6635 fi 
6636 set d_flexfnam
6637 eval $setvar
6638 $rm -rf 123456789abcde*
6639
6640 : determine where library module manual pages go
6641 set man3dir man3dir none
6642 eval $prefixit
6643 $cat <<EOM
6644
6645 $spackage has manual pages for many of the library modules.
6646 EOM
6647
6648 case "$nroff" in
6649 nroff)
6650         $cat <<'EOM'
6651 However, you don't have nroff, so they're probably useless to you.
6652 EOM
6653         case "$man3dir" in
6654         '') man3dir="none";;
6655         esac;;
6656 esac
6657
6658 case "$d_flexfnam" in
6659 undef)
6660         $cat <<'EOM'
6661 However, your system can't handle the long file names like File::Basename.3. 
6662 EOM
6663         case "$man3dir" in
6664         '') man3dir="none";;
6665         esac;;
6666 esac
6667
6668 echo "If you don't want the manual sources installed, answer 'none'."
6669 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6670 case "$man3dir" in
6671 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6672         if $test -d "$privlib/man/man3"; then
6673                 cat <<EOM >&4
6674
6675 WARNING:  Previous versions of perl installed man3 pages into
6676 $privlib/man/man3.  This version will suggest a 
6677 new default of $dflt.  
6678 EOM
6679                 tdflt=$dflt
6680                 dflt='n'
6681                 rp='Do you wish to preserve the old behavior?(y/n)'
6682                 . ./myread
6683                 case "$ans" in
6684                 y*) dflt="$privlib/man/man3" ;;
6685                 *)  dflt=$tdflt ;;
6686                 esac
6687     fi
6688         ;;
6689 *)      dflt="$man3dir" ;;
6690 esac
6691 case "$dflt" in
6692 ' ') dflt=none ;;
6693 esac
6694 echo " "
6695 fn=dn+~
6696 rp="Where do the $package library man pages (source) go?"
6697 . ./getfile
6698 man3dir="$ans"
6699 man3direxp="$ansexp"
6700 case "$man3dir" in
6701 '')     man3dir=' '
6702         installman3dir='';;
6703 esac
6704
6705 : Change installation prefix, if necessary.
6706 if $test X"$prefix" != X"$installprefix"; then
6707         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6708 else
6709         installman3dir="$man3direxp"
6710 fi
6711
6712 : What suffix to use on installed man pages
6713 case "$man3dir" in
6714 ' ')
6715         man3ext='0'
6716         ;;
6717 *)
6718         rp="What suffix should be used for the $package library man pages?"
6719         case "$man3ext" in
6720         '')     case "$man3dir" in
6721                 *3)  dflt=3 ;;
6722                 *3p) dflt=3p ;;
6723                 *3pm) dflt=3pm ;;
6724                 *l) dflt=l;;
6725                 *n) dflt=n;;
6726                 *o) dflt=o;;
6727                 *p) dflt=p;;
6728                 *C) dflt=C;;
6729                 *L) dflt=L;;
6730                 *L3) dflt=L3;;
6731                 *) dflt=3;;
6732                 esac
6733                 ;;
6734         *)      dflt="$man3ext";;
6735         esac
6736         . ./myread
6737         man3ext="$ans"
6738         ;;
6739 esac
6740
6741 : see if we have to deal with yellow pages, now NIS.
6742 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6743         if $test -f /usr/etc/nibindd; then
6744                 echo " "
6745                 echo "I'm fairly confident you're on a NeXT."
6746                 echo " "
6747                 rp='Do you get the hosts file via NetInfo?'
6748                 dflt=y
6749                 case "$hostcat" in
6750                 nidump*) ;;
6751                 '') ;;
6752                 *) dflt=n;;
6753                 esac
6754                 . ./myread
6755                 case "$ans" in
6756                 y*) hostcat='nidump hosts .';;
6757                 *)      case "$hostcat" in
6758                         nidump*) hostcat='';;
6759                         esac
6760                         ;;
6761                 esac
6762         fi
6763         case "$hostcat" in
6764         nidump*) ;;
6765         *)
6766                 case "$hostcat" in
6767                 *ypcat*) dflt=y;;
6768                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6769                                 dflt=y
6770                         else
6771                                 dflt=n
6772                         fi;;
6773                 *) dflt=n;;
6774                 esac
6775                 echo " "
6776                 rp='Are you getting the hosts file via yellow pages?'
6777                 . ./myread
6778                 case "$ans" in
6779                 y*) hostcat='ypcat hosts';;
6780                 *) hostcat='cat /etc/hosts';;
6781                 esac
6782                 ;;
6783         esac
6784 fi
6785 case "$hostcat" in
6786 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6787 esac
6788 case "$groupcat" in
6789 '') test -f /etc/group && groupcat='cat /etc/group';;
6790 esac
6791 case "$passcat" in
6792 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6793 esac
6794
6795 : now get the host name
6796 echo " "
6797 echo "Figuring out host name..." >&4
6798 case "$myhostname" in
6799 '') cont=true
6800         echo 'Maybe "hostname" will work...'
6801         if tans=`sh -c hostname 2>&1` ; then
6802                 myhostname=$tans
6803                 phostname=hostname
6804                 cont=''
6805         fi
6806         ;;
6807 *) cont='';;
6808 esac
6809 if $test "$cont"; then
6810         if ./xenix; then
6811                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6812                 if tans=`cat /etc/systemid 2>&1` ; then
6813                         myhostname=$tans
6814                         phostname='cat /etc/systemid'
6815                         echo "Whadyaknow.  Xenix always was a bit strange..."
6816                         cont=''
6817                 fi
6818         elif $test -r /etc/systemid; then
6819                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6820         fi
6821 fi
6822 if $test "$cont"; then
6823         echo 'No, maybe "uuname -l" will work...'
6824         if tans=`sh -c 'uuname -l' 2>&1` ; then
6825                 myhostname=$tans
6826                 phostname='uuname -l'
6827         else
6828                 echo 'Strange.  Maybe "uname -n" will work...'
6829                 if tans=`sh -c 'uname -n' 2>&1` ; then
6830                         myhostname=$tans
6831                         phostname='uname -n'
6832                 else
6833                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6834                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6835                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6836                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6837                         else
6838                                 case "$myhostname" in
6839                                 '') echo "Does this machine have an identity crisis or something?"
6840                                         phostname='';;
6841                                 *)
6842                                         echo "Well, you said $myhostname before..."
6843                                         phostname='echo $myhostname';;
6844                                 esac
6845                         fi
6846                 fi
6847         fi
6848 fi
6849 : you do not want to know about this
6850 set $myhostname
6851 myhostname=$1
6852
6853 : verify guess
6854 if $test "$myhostname" ; then
6855         dflt=y
6856         rp='Your host name appears to be "'$myhostname'".'" Right?"
6857         . ./myread
6858         case "$ans" in
6859         y*) ;;
6860         *) myhostname='';;
6861         esac
6862 fi
6863
6864 : bad guess or no guess
6865 while $test "X$myhostname" = X ; do
6866         dflt=''
6867         rp="Please type the (one word) name of your host:"
6868         . ./myread
6869         myhostname="$ans"
6870 done
6871
6872 : translate upper to lower if necessary
6873 case "$myhostname" in
6874 *[A-Z]*)
6875         echo "(Normalizing case in your host name)"
6876         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6877         ;;
6878 esac
6879
6880 case "$myhostname" in
6881 *.*)
6882         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6883         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6884         echo "(Trimming domain name from host name--host name is now $myhostname)"
6885         ;;
6886 *) case "$mydomain" in
6887         '')
6888                 {
6889                         test "X$hostcat" = "Xypcat hosts" &&
6890                         ypmatch "$myhostname" hosts 2>/dev/null |\
6891                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6892                         $test -s hosts
6893                 } || {
6894                         test "X$hostcat" != "X" &&
6895                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6896                                         /[       ]$myhostname[  . ]/p" > hosts
6897                 }
6898                 tmp_re="[       . ]"
6899                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6900                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6901                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6902                         hosts | $sort | $uniq | \
6903                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6904                 case `$echo X$dflt` in
6905                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6906                         dflt=.
6907                         ;;
6908                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6909                         ;;
6910                 esac
6911                 case "$dflt" in
6912                 .)
6913                         tans=`./loc resolv.conf X /etc /usr/etc`
6914                         if $test -f "$tans"; then
6915                                 echo "(Attempting domain name extraction from $tans)"
6916                                 dflt=.`$sed -n -e 's/   / /g' \
6917                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6918                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6919                                 case "$dflt" in
6920                                 .) dflt=.`$sed -n -e 's/        / /g' \
6921                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6922                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6923                                         ;;
6924                                 esac
6925                         fi
6926                         ;;
6927                 esac
6928                 case "$dflt" in
6929                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6930                         dflt=.`sh -c domainname 2>/dev/null`
6931                         case "$dflt" in
6932                         '') dflt='.';;
6933                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6934                         esac
6935                         ;;
6936                 esac
6937                 case "$dflt" in
6938                 .) echo "(Lost all hope -- silly guess then)"
6939                         dflt='.uucp'
6940                         ;;
6941                 esac
6942                 $rm -f hosts
6943                 ;;
6944         *) dflt="$mydomain";;
6945         esac;;
6946 esac
6947 echo " "
6948 rp="What is your domain name?"
6949 . ./myread
6950 tans="$ans"
6951 case "$ans" in
6952 '') ;;
6953 .*) ;;
6954 *) tans=".$tans";;
6955 esac
6956 mydomain="$tans"
6957
6958 : translate upper to lower if necessary
6959 case "$mydomain" in
6960 *[A-Z]*)
6961         echo "(Normalizing case in your domain name)"
6962         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6963         ;;
6964 esac
6965
6966 : a little sanity check here
6967 case "$phostname" in
6968 '') ;;
6969 *)
6970         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6971         $myhostname$mydomain|$myhostname) ;;
6972         *)
6973                 case "$phostname" in
6974                 sed*)
6975                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6976                         ;;
6977                 *)
6978                         echo "(That doesn't agree with your $phostname command, by the way.)"
6979                         ;;
6980                 esac
6981         ;;
6982         esac
6983         ;;
6984 esac
6985
6986 $cat <<EOM
6987
6988 I need to get your e-mail address in Internet format if possible, i.e.
6989 something like user@host.domain. Please answer accurately since I have
6990 no easy means to double check it. The default value provided below
6991 is most probably close to reality but may not be valid from outside
6992 your organization...
6993
6994 EOM
6995 cont=x
6996 while test "$cont"; do
6997         case "$cf_email" in
6998         '') dflt="$cf_by@$myhostname$mydomain";;
6999         *) dflt="$cf_email";;
7000         esac
7001         rp='What is your e-mail address?'
7002         . ./myread
7003         cf_email="$ans"
7004         case "$cf_email" in
7005         *@*.*) cont='' ;;
7006         *)
7007                 rp='Address does not look like an Internet one.  Use it anyway?'
7008                 case "$fastread" in
7009                 yes) dflt=y ;;
7010                 *) dflt=n ;;
7011                 esac
7012                 . ./myread
7013                 case "$ans" in
7014                 y*) cont='' ;;
7015                 *) echo " " ;;
7016                 esac
7017                 ;;
7018         esac
7019 done
7020
7021 $cat <<EOM
7022
7023 If you or somebody else will be maintaining perl at your site, please
7024 fill in the correct e-mail address here so that they may be contacted
7025 if necessary. Currently, the "perlbug" program included with perl
7026 will send mail to this address in addition to perlbug@perl.com. You may
7027 enter "none" for no administrator.
7028
7029 EOM
7030 case "$perladmin" in
7031 '') dflt="$cf_email";;
7032 *) dflt="$perladmin";;
7033 esac
7034 rp='Perl administrator e-mail address'
7035 . ./myread
7036 perladmin="$ans"
7037
7038 : figure out how to guarantee perl startup
7039 case "$startperl" in
7040 '')
7041         case "$sharpbang" in
7042         *!)
7043                 $cat <<EOH
7044
7045 I can use the #! construct to start perl on your system. This will
7046 make startup of perl scripts faster, but may cause problems if you
7047 want to share those scripts and perl is not in a standard place
7048 ($binexp/perl) on all your platforms. The alternative is to force
7049 a shell by starting the script with a single ':' character.
7050
7051 EOH
7052                 dflt="$binexp/perl"
7053                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7054                 . ./myread
7055                 case "$ans" in
7056                 none)   startperl=": # use perl";;
7057                 *)      startperl="#!$ans"
7058                         if $test 30 -lt `echo "$ans" | wc -c`; then
7059                                 $cat >&4 <<EOM
7060
7061 WARNING:  Some systems limit the #! command to 32 characters.
7062 If you experience difficulty running Perl scripts with #!, try
7063 installing Perl in a directory with a shorter pathname.
7064
7065 EOM
7066                         fi ;;
7067                 esac
7068                 ;;
7069         *) startperl=": # use perl"
7070                 ;;
7071         esac
7072         ;;
7073 esac
7074 echo "I'll use $startperl to start perl scripts."
7075
7076 : figure best path for perl in scripts
7077 case "$perlpath" in
7078 '')
7079         perlpath="$binexp/perl"
7080         case "$startperl" in
7081         *!*) ;;
7082         *)
7083                 $cat <<EOH
7084
7085 I will use the "eval 'exec'" idiom to start Perl on your system.
7086 I can use the full path of your Perl binary for this purpose, but
7087 doing so may cause problems if you want to share those scripts and
7088 Perl is not always in a standard place ($binexp/perl).
7089
7090 EOH
7091                 dflt="$binexp/perl"
7092                 rp="What path shall I use in \"eval 'exec'\"?"
7093                 . ./myread
7094                 perlpath="$ans"
7095                 ;;
7096         esac
7097         ;;
7098 esac
7099 case "$startperl" in
7100 *!*)    ;;
7101 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7102 esac
7103
7104 : determine where public executable scripts go
7105 set scriptdir scriptdir
7106 eval $prefixit
7107 case "$scriptdir" in
7108 '')
7109         dflt="$bin"
7110         : guess some guesses
7111         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7112         $test -d /usr/share/bin     && dflt=/usr/share/bin
7113         $test -d /usr/local/script  && dflt=/usr/local/script
7114         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7115         $test -d $prefixexp/script  && dflt=$prefixexp/script
7116         set dflt
7117         eval $prefixup
7118         ;;
7119 *)  dflt="$scriptdir"
7120         ;;
7121 esac
7122 $cat <<EOM
7123  
7124 Some installations have a separate directory just for executable scripts so
7125 that they can mount it across multiple architectures but keep the scripts in
7126 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7127 Or you might just lump your scripts in with all your other executables.
7128  
7129 EOM
7130 fn=d~
7131 rp='Where do you keep publicly executable scripts?'
7132 . ./getfile
7133 if $test "X$ansexp" != "X$scriptdirexp"; then
7134         installscript=''
7135 fi
7136 scriptdir="$ans"
7137 scriptdirexp="$ansexp"
7138 : Change installation prefix, if necessary.
7139 if $test X"$prefix" != X"$installprefix"; then
7140         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7141 else
7142         installscript="$scriptdirexp"
7143 fi
7144
7145 : determine where site specific architecture-dependent libraries go.
7146 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7147 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7148 : sitelib may have an optional trailing /share.
7149 case "$sitearch" in
7150 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7151         dflt="$dflt/$archname"
7152         ;;
7153 *)      dflt="$sitearch"
7154         ;;
7155 esac
7156 set sitearch sitearch none
7157 eval $prefixit
7158 $cat <<EOM
7159
7160 The installation process will also create a directory for
7161 architecture-dependent site-specific extensions and modules.
7162
7163 EOM
7164 fn=d~+
7165 rp='Pathname for the site-specific architecture-dependent library files?'
7166 . ./getfile
7167 sitearch="$ans"
7168 sitearchexp="$ansexp"
7169 : Change installation prefix, if necessary.
7170 if $test X"$prefix" != X"$installprefix"; then
7171         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7172 else
7173         installsitearch="$sitearchexp"
7174 fi
7175
7176 : determine where add-on public executables go
7177 case "$sitebin" in
7178 '')     dflt=$siteprefix/bin ;;
7179 *)      dflt=$sitebin ;;
7180 esac
7181 fn=d~
7182 rp='Pathname where the add-on public executables should be installed?'
7183 . ./getfile
7184 sitebin="$ans"
7185 sitebinexp="$ansexp"
7186 : Change installation prefix, if necessary.
7187 if $test X"$prefix" != X"$installprefix"; then
7188         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7189 else
7190         installsitebin="$sitebinexp"
7191 fi
7192
7193 : see if sqrtl exists
7194 set sqrtl d_sqrtl
7195 eval $inlibc
7196
7197 case "$ccflags" in
7198 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7199 esac
7200
7201 case "$uselongdouble" in
7202 $define|true|[yY]*)     dflt='y';;
7203 *) dflt='n';;
7204 esac
7205 cat <<EOM
7206
7207 Perl can be built to take advantage of long doubles which
7208 (if available) may give more accuracy and range for floating point numbers.
7209
7210 If this doesn't make any sense to you, just accept the default '$dflt'.
7211 EOM
7212 rp='Try to use long doubles if available?'
7213 . ./myread
7214 case "$ans" in
7215 y|Y)    val="$define"   ;;
7216 *)      val="$undef"    ;;
7217 esac
7218 set uselongdouble
7219 eval $setvar
7220
7221 case "$uselongdouble" in
7222 true|[yY]*) uselongdouble="$define" ;;
7223 esac
7224
7225 case "$uselongdouble" in
7226 $define)
7227 : Look for a hint-file generated 'call-back-unit'.  If the
7228 : user has specified that long doubles should be used,
7229 : we may need to set or change some other defaults.
7230         if $test -f uselongdouble.cbu; then
7231                 echo "Your platform has some specific hints for long doubles, using them..."
7232                 . ./uselongdouble.cbu
7233         else
7234                 $cat <<EOM
7235 (Your platform doesn't have any specific hints for long doubles.)
7236 EOM
7237         fi
7238         ;;
7239 esac
7240
7241 case "$uselongdouble:$d_sqrtl" in
7242 $define:$undef)
7243                 $cat <<EOM >&4
7244
7245 *** You requested the use of long doubles but you do not seem to have
7246 *** the mathematic functions for long doubles.  I'm disabling the use
7247 *** of long doubles.
7248
7249 EOM
7250         uselongdouble=$undef
7251         ;;
7252 esac
7253
7254 case "$useperlio" in
7255 $define|true|[yY]*)     dflt='y';;
7256 *) dflt='n';;
7257 esac
7258 cat <<EOM
7259
7260 Previous version of $package used the standard IO mechanisms as defined
7261 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7262 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7263 the default.  This abstraction layer can use AT&T's sfio (if you already
7264 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7265 problems with some extension modules.  Using PerlIO with stdio is safe,
7266 but it is slower than plain stdio and therefore is not the default.
7267
7268 If this doesn't make any sense to you, just accept the default '$dflt'.
7269 EOM
7270 rp='Use the experimental PerlIO abstraction layer?'
7271 . ./myread
7272 case "$ans" in
7273 y|Y) 
7274         val="$define"
7275         ;;     
7276 *)      
7277         echo "Ok, doing things the stdio way"
7278         val="$undef"
7279         ;;
7280 esac
7281 set useperlio
7282 eval $setvar 
7283
7284 case "$vendorprefix" in
7285 '')     d_vendorbin="$undef"
7286         vendorbin=''
7287         vendorbinexp=''
7288         ;;
7289 *)      d_vendorbin="$define"
7290         : determine where vendor-supplied executables go.
7291         case "$vendorbin" in
7292         '') dflt=$vendorprefix/bin ;;
7293         *)      dflt="$vendorbin" ;;
7294         esac
7295         fn=d~+
7296         rp='Pathname for the vendor-supplied executables directory?'
7297         . ./getfile
7298         vendorbin="$ans"
7299         vendorbinexp="$ansexp"
7300         ;;
7301 esac
7302 : Change installation prefix, if necessary.
7303 if $test X"$prefix" != X"$installprefix"; then
7304         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7305 else
7306         installvendorbin="$vendorbinexp"
7307 fi
7308
7309 : see if qgcvt exists
7310 set qgcvt d_qgcvt
7311 eval $inlibc
7312
7313 : check for length of double
7314 echo " "
7315 case "$doublesize" in
7316 '')
7317         echo "Checking to see how big your double precision numbers are..." >&4
7318         $cat >try.c <<'EOCP'
7319 #include <stdio.h>
7320 int main()
7321 {
7322     printf("%d\n", (int)sizeof(double));
7323     exit(0);
7324 }
7325 EOCP
7326         set try
7327         if eval $compile_ok; then
7328                 doublesize=`./try`
7329                 echo "Your double is $doublesize bytes long."
7330         else
7331                 dflt='8'
7332                 echo "(I can't seem to compile the test program.  Guessing...)"
7333                 rp="What is the size of a double precision number (in bytes)?"
7334                 . ./myread
7335                 doublesize="$ans"
7336         fi
7337         ;;
7338 esac
7339 $rm -f try.c try
7340
7341 : check for long doubles
7342 echo " "
7343 echo "Checking to see if you have long double..." >&4
7344 echo 'int main() { long double x = 7.0; }' > try.c
7345 set try
7346 if eval $compile; then
7347         val="$define"
7348         echo "You have long double."
7349 else
7350         val="$undef"
7351         echo "You do not have long double."
7352 fi
7353 $rm try.*
7354 set d_longdbl
7355 eval $setvar
7356
7357 : check for length of long double
7358 case "${d_longdbl}${longdblsize}" in
7359 $define)
7360         echo " "
7361         echo "Checking to see how big your long doubles are..." >&4
7362         $cat >try.c <<'EOCP'
7363 #include <stdio.h>
7364 int main()
7365 {
7366         printf("%d\n", sizeof(long double));
7367 }
7368 EOCP
7369         set try
7370         set try
7371         if eval $compile; then
7372                 longdblsize=`./try$exe_ext`
7373                 echo "Your long doubles are $longdblsize bytes long."
7374         else
7375                 dflt='8'
7376                 echo " "
7377                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7378                 rp="What is the size of a long double (in bytes)?"
7379                 . ./myread
7380                 longdblsize="$ans"
7381         fi
7382         if $test "X$doublesize" = "X$longdblsize"; then
7383                 echo "(That isn't any different from an ordinary double.)"
7384         fi      
7385         ;;
7386 esac
7387 $rm -f try.* try
7388
7389 echo " "
7390
7391 if $test X"$d_longdbl" = X"$define"; then
7392
7393 echo "Checking how to print long doubles..." >&4
7394
7395 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7396         $cat >try.c <<'EOCP'
7397 #include <sys/types.h>
7398 #include <stdio.h>
7399 int main() {
7400   double d = 123.456;
7401   printf("%.3f\n", d);
7402 }
7403 EOCP
7404         set try
7405         if eval $compile; then
7406                 yyy=`./try$exe_ext`
7407                 case "$yyy" in
7408                 123.456)
7409                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7410                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7411                         echo "We will use %f."
7412                         ;;
7413                 esac
7414         fi
7415 fi
7416
7417 if $test X"$sPRIfldbl" = X; then
7418         $cat >try.c <<'EOCP'
7419 #include <sys/types.h>
7420 #include <stdio.h>
7421 int main() {
7422   long double d = 123.456;
7423   printf("%.3llf\n", d);
7424 }
7425 EOCP
7426         set try
7427         if eval $compile; then
7428                 yyy=`./try$exe_ext`
7429                 case "$yyy" in
7430                 123.456)
7431                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7432                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7433                         echo "We will use %llf."
7434                         ;;
7435                 esac
7436         fi
7437 fi
7438
7439 if $test X"$sPRIfldbl" = X; then
7440         $cat >try.c <<'EOCP'
7441 #include <sys/types.h>
7442 #include <stdio.h>
7443 int main() {
7444   long double d = 123.456;
7445   printf("%.3Lf\n", d);
7446 }
7447 EOCP
7448         set try
7449         if eval $compile; then
7450                 yyy=`./try$exe_ext`
7451                 case "$yyy" in
7452                 123.456)
7453                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7454                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7455                         echo "We will use %Lf."
7456                         ;;
7457                 esac
7458         fi
7459 fi
7460
7461 if $test X"$sPRIfldbl" = X; then
7462         $cat >try.c <<'EOCP'
7463 #include <sys/types.h>
7464 #include <stdio.h>
7465 int main() {
7466   long double d = 123.456;
7467   printf("%.3lf\n", d);
7468 }
7469 EOCP
7470         set try
7471         if eval $compile; then
7472                 yyy=`./try$exe_ext`
7473                 case "$yyy" in
7474                 123.456)
7475                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7476                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7477                         echo "We will use %lf."
7478                         ;;
7479                 esac
7480         fi
7481 fi
7482
7483 if $test X"$sPRIfldbl" = X; then
7484         echo "Cannot figure out how to print long doubles." >&4
7485 fi
7486
7487 $rm -f try try.*
7488
7489 fi # d_longdbl
7490
7491 case "$sPRIfldbl" in
7492 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7493         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7494         ;;
7495 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7496         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7497         ;;
7498 esac
7499
7500 : Check how to convert floats to strings.
7501 if test "X$d_Gconvert" = X; then
7502         echo " "
7503         echo "Checking for an efficient way to convert floats to strings."
7504         echo " " > try.c
7505         case "$uselongdouble" in
7506         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7507         esac
7508         case "$d_longdbl" in
7509         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7510         esac
7511         case "$d_PRIgldbl" in
7512         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7513         esac
7514         $cat >>try.c <<EOP
7515 #ifdef TRY_gconvert
7516 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7517 char *myname = "gconvert";
7518 #endif
7519 #ifdef TRY_gcvt
7520 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7521 char *myname = "gcvt";
7522 #endif
7523 #ifdef TRY_qgcvt
7524 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7525 char *myname = "qgcvt";
7526 #define DOUBLETYPE long double
7527 #endif
7528 #ifdef TRY_sprintf
7529 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7530 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7531 #else
7532 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7533 #endif
7534 char *myname = "sprintf";
7535 #endif
7536
7537 #ifndef DOUBLETYPE
7538 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7539 #define DOUBLETYPE long double
7540 #else
7541 #define DOUBLETYPE double
7542 #endif
7543 #endif
7544
7545 #include <stdio.h>
7546
7547 #define I_STDLIB $i_stdlib
7548 #ifdef I_STDLIB
7549 #include <stdlib.h>
7550 #endif
7551
7552 int
7553 checkit(expect, got)
7554 char *expect;
7555 char *got;
7556 {
7557     if (strcmp(expect, got)) {
7558                 printf("%s oddity:  Expected %s, got %s\n",
7559                         myname, expect, got);
7560                 exit(1);
7561         }
7562 }
7563
7564 int main()
7565
7566         char buf[64]; 
7567         buf[63] = '\0';
7568
7569         /* This must be 1st test on (which?) platform */
7570         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7571         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7572         checkit("0.1", buf);
7573
7574         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7575         checkit("1", buf);
7576
7577         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7578         checkit("1.1", buf);
7579
7580         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7581         checkit("1.01", buf);
7582
7583         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7584         checkit("1.001", buf);
7585
7586         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7587         checkit("1.0001", buf);
7588
7589         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7590         checkit("1.00001", buf);
7591
7592         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7593         checkit("1.000001", buf);
7594
7595         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7596         checkit("0", buf);
7597
7598         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7599         checkit("-1", buf);
7600
7601         /* Some Linux gcvt's give 1.e+5 here. */
7602         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7603         checkit("100000", buf);
7604         
7605         /* Some Linux gcvt's give -1.e+5 here. */
7606         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7607         checkit("-100000", buf);
7608
7609         exit(0);
7610 }
7611 EOP
7612         case "$d_Gconvert" in
7613         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7614         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7615         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7616         *) xxx_list='gconvert gcvt sprintf' ;;
7617         esac
7618
7619         case "$d_longdbl$uselongdouble$d_qgcvt" in
7620         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7621         esac
7622
7623         for xxx_convert in $xxx_list; do
7624                 echo "Trying $xxx_convert..."
7625                 $rm -f try try$_o
7626                 set try -DTRY_$xxx_convert
7627                 if eval $compile; then
7628                         echo "$xxx_convert() found." >&4
7629                         if ./try; then
7630                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7631                                 break;
7632                         else
7633                                 echo "...But $xxx_convert didn't work as I expected."
7634                         fi
7635                 else
7636                         echo "$xxx_convert NOT found." >&4
7637                 fi
7638         done
7639                 
7640         case "$xxx_convert" in
7641         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7642         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7643         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7644         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7645            "$define$define$define")
7646               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7647            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7648            esac
7649            ;;  
7650         esac
7651 fi
7652
7653 : Initialize h_fcntl
7654 h_fcntl=false
7655
7656 : Initialize h_sysfile
7657 h_sysfile=false
7658
7659 : access call always available on UNIX
7660 set access d_access
7661 eval $inlibc
7662
7663 : locate the flags for 'access()'
7664 case "$d_access" in
7665 "$define")
7666         echo " "
7667         $cat >access.c <<'EOCP'
7668 #include <sys/types.h>
7669 #ifdef I_FCNTL
7670 #include <fcntl.h>
7671 #endif
7672 #ifdef I_SYS_FILE
7673 #include <sys/file.h>
7674 #endif
7675 #ifdef I_UNISTD
7676 #include <unistd.h>
7677 #endif
7678 int main() {
7679         exit(R_OK);
7680 }
7681 EOCP
7682         : check sys/file.h first, no particular reason here
7683         if $test `./findhdr sys/file.h` && \
7684                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7685                 h_sysfile=true;
7686                 echo "<sys/file.h> defines the *_OK access constants." >&4
7687         elif $test `./findhdr fcntl.h` && \
7688                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7689                 h_fcntl=true;
7690                 echo "<fcntl.h> defines the *_OK access constants." >&4
7691         elif $test `./findhdr unistd.h` && \
7692                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7693                 echo "<unistd.h> defines the *_OK access constants." >&4
7694         else
7695                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7696         fi
7697         ;;
7698 esac
7699 $rm -f access*
7700
7701 : see if accessx exists
7702 set accessx d_accessx
7703 eval $inlibc
7704
7705 : see if alarm exists
7706 set alarm d_alarm
7707 eval $inlibc
7708
7709 : see if atolf exists
7710 set atolf d_atolf
7711 eval $inlibc
7712
7713 : see if atoll exists
7714 set atoll d_atoll
7715 eval $inlibc
7716
7717 : Look for GNU-cc style attribute checking
7718 echo " "
7719 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7720 $cat >attrib.c <<'EOCP'
7721 #include <stdio.h>
7722 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7723 EOCP
7724 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7725         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7726                 echo "Your C compiler doesn't fully support __attribute__."
7727                 val="$undef"
7728         else
7729                 echo "Your C compiler supports __attribute__."
7730                 val="$define"
7731         fi
7732 else
7733         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7734         val="$undef"
7735 fi
7736 set d_attribut
7737 eval $setvar
7738 $rm -f attrib*
7739
7740 : see if bcmp exists
7741 set bcmp d_bcmp
7742 eval $inlibc
7743
7744 : see if bcopy exists
7745 set bcopy d_bcopy
7746 eval $inlibc
7747
7748 : see if this is a unistd.h system
7749 set unistd.h i_unistd
7750 eval $inhdr
7751
7752 : see if getpgrp exists
7753 set getpgrp d_getpgrp
7754 eval $inlibc
7755
7756 case "$d_getpgrp" in
7757 "$define")
7758         echo " "
7759         echo "Checking to see which flavor of getpgrp is in use..."
7760         $cat >set.c <<EOP
7761 #$i_unistd I_UNISTD
7762 #include <sys/types.h>
7763 #ifdef I_UNISTD
7764 #  include <unistd.h>
7765 #endif
7766 int main()
7767 {
7768         if (getuid() == 0) {
7769                 printf("(I see you are running Configure as super-user...)\n");
7770                 setuid(1);
7771         }
7772 #ifdef TRY_BSD_PGRP
7773         if (getpgrp(1) == 0)
7774                 exit(0);
7775 #else
7776         if (getpgrp() > 0)
7777                 exit(0);
7778 #endif
7779         exit(1);
7780 }
7781 EOP
7782         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7783                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7784                 val="$define"
7785         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7786                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7787                 val="$undef"
7788         else
7789                 echo "I can't seem to compile and run the test program."
7790                 if ./usg; then
7791                         xxx="a USG one, i.e. you use getpgrp()."
7792                 else
7793                         # SVR4 systems can appear rather BSD-ish.
7794                         case "$i_unistd" in
7795                         $undef)
7796                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7797                                 val="$define"
7798                                 ;;
7799                         $define)
7800                                 xxx="probably a USG one, i.e. you use getpgrp()."
7801                                 val="$undef"
7802                                 ;;
7803                         esac
7804                 fi
7805                 echo "Assuming your getpgrp is $xxx" >&4
7806         fi
7807         ;;
7808 *) val="$undef";;
7809 esac
7810 set d_bsdgetpgrp
7811 eval $setvar
7812 $rm -f set set.c
7813
7814 : see if setpgrp exists
7815 set setpgrp d_setpgrp
7816 eval $inlibc
7817
7818 case "$d_setpgrp" in
7819 "$define")
7820         echo " "
7821         echo "Checking to see which flavor of setpgrp is in use..."
7822         $cat >set.c <<EOP
7823 #$i_unistd I_UNISTD
7824 #include <sys/types.h>
7825 #ifdef I_UNISTD
7826 #  include <unistd.h>
7827 #endif
7828 int main()
7829 {
7830         if (getuid() == 0) {
7831                 printf("(I see you are running Configure as super-user...)\n");
7832                 setuid(1);
7833         }
7834 #ifdef TRY_BSD_PGRP
7835         if (-1 == setpgrp(1, 1))
7836                 exit(0);
7837 #else
7838         if (setpgrp() != -1)
7839                 exit(0);
7840 #endif
7841         exit(1);
7842 }
7843 EOP
7844         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7845                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7846                 val="$define"
7847         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7848                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7849                 val="$undef"
7850         else
7851                 echo "(I can't seem to compile and run the test program.)"
7852                 if ./usg; then
7853                         xxx="a USG one, i.e. you use setpgrp()."
7854                 else
7855                         # SVR4 systems can appear rather BSD-ish.
7856                         case "$i_unistd" in
7857                         $undef)
7858                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7859                                 val="$define"
7860                                 ;;
7861                         $define)
7862                                 xxx="probably a USG one, i.e. you use setpgrp()."
7863                                 val="$undef"
7864                                 ;;
7865                         esac
7866                 fi
7867                 echo "Assuming your setpgrp is $xxx" >&4
7868         fi
7869         ;;
7870 *) val="$undef";;
7871 esac
7872 set d_bsdsetpgrp
7873 eval $setvar
7874 $rm -f set set.c
7875 : see if bzero exists
7876 set bzero d_bzero
7877 eval $inlibc
7878
7879 : see if signal is declared as pointer to function returning int or void
7880 echo " "
7881 xxx=`./findhdr signal.h`
7882 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7883 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7884         echo "You have int (*signal())() instead of void." >&4
7885         val="$undef"
7886 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7887         echo "You have void (*signal())()." >&4
7888         val="$define"
7889 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7890         echo "You have int (*signal())() instead of void." >&4
7891         val="$undef"
7892 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7893         echo "You have void (*signal())()." >&4
7894         val="$define"
7895 else
7896         case "$d_voidsig" in
7897         '')
7898         echo "I can't determine whether signal handler returns void or int..." >&4
7899                 dflt=void
7900                 rp="What type does your signal handler return?"
7901                 . ./myread
7902                 case "$ans" in
7903                 v*) val="$define";;
7904                 *) val="$undef";;
7905                 esac;;
7906         "$define")
7907                 echo "As you already told me, signal handler returns void." >&4
7908                 val="$define"
7909                 ;;
7910         *)      echo "As you already told me, signal handler returns int." >&4
7911                 val="$undef"
7912                 ;;
7913         esac
7914 fi
7915 set d_voidsig
7916 eval $setvar
7917 case "$d_voidsig" in
7918 "$define") signal_t="void";;
7919 *) signal_t="int";;
7920 esac
7921 $rm -f $$.tmp
7922
7923 : check for ability to cast large floats to 32-bit ints.
7924 echo " "
7925 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7926 if $test "$intsize" -ge 4; then
7927         xxx=int
7928 else
7929         xxx=long
7930 fi
7931 $cat >try.c <<EOCP
7932 #include <stdio.h>
7933 #include <sys/types.h>
7934 #include <signal.h>
7935 $signal_t blech(s) int s; { exit(3); }
7936 int main()
7937 {
7938         $xxx i32;
7939         double f, g;
7940         int result = 0;
7941         char str[16];
7942         signal(SIGFPE, blech);
7943
7944         /* Don't let compiler optimize the test away.  Store the number 
7945            in a writable string for gcc to pass to sscanf under HP/UX.
7946         */
7947         sprintf(str, "2147483647");
7948         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7949         g = 10 * f;
7950         i32  = ($xxx) g;
7951
7952         /* x86 processors will probably give 0x8000 0000, which is a
7953        sign change.  We don't want that.  We want to mimic SPARC
7954            behavior here, which is to preserve the sign and give
7955            back 0x7fff ffff.
7956         */
7957         if (i32 != ($xxx) f)
7958                 result |= 1;
7959         exit(result);
7960 }
7961 EOCP
7962 set try
7963 if eval $compile_ok; then
7964         ./try
7965         yyy=$?
7966 else
7967         echo "(I can't seem to compile the test program--assuming it can't)"
7968         yyy=1
7969 fi
7970 case "$yyy" in
7971 0)      val="$define"
7972         echo "Yup, it can."
7973         ;;
7974 *)      val="$undef"
7975         echo "Nope, it can't."
7976         ;;
7977 esac
7978 set d_casti32
7979 eval $setvar
7980 $rm -f try try.*
7981
7982 : check for ability to cast negative floats to unsigned
7983 echo " "
7984 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7985 $cat >try.c <<EOCP
7986 #include <stdio.h>
7987 #include <sys/types.h>
7988 #include <signal.h>
7989 $signal_t blech(s) int s; { exit(7); }
7990 $signal_t blech_in_list(s) int s; { exit(4); }
7991 unsigned long dummy_long(p) unsigned long p; { return p; }
7992 unsigned int dummy_int(p) unsigned int p; { return p; }
7993 unsigned short dummy_short(p) unsigned short p; { return p; }
7994 int main()
7995 {
7996         double f;
7997         unsigned long along;
7998         unsigned int aint;
7999         unsigned short ashort;
8000         int result = 0;
8001         char str[16];
8002         
8003         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8004            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8005            optimized the whole file away
8006         */
8007         /* Store the number in a writable string for gcc to pass to 
8008            sscanf under HP/UX.
8009         */
8010         sprintf(str, "-123");
8011         sscanf(str, "%lf", &f);  /* f = -123.; */
8012
8013         signal(SIGFPE, blech);
8014         along = (unsigned long)f;
8015         aint = (unsigned int)f;
8016         ashort = (unsigned short)f;
8017         if (along != (unsigned long)-123)
8018                 result |= 1;
8019         if (aint != (unsigned int)-123)
8020                 result |= 1;
8021         if (ashort != (unsigned short)-123)
8022                 result |= 1;
8023         sprintf(str, "1073741824.");
8024         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8025         f = f + f;
8026         along = 0;
8027         along = (unsigned long)f;
8028         if (along != 0x80000000)
8029                 result |= 2;
8030         f -= 1.;
8031         along = 0;
8032         along = (unsigned long)f;
8033         if (along != 0x7fffffff)
8034                 result |= 1;
8035         f += 2.;
8036         along = 0;
8037         along = (unsigned long)f;
8038         if (along != 0x80000001)
8039                 result |= 2;
8040         if (result)
8041                 exit(result);
8042         signal(SIGFPE, blech_in_list);
8043         sprintf(str, "123.");
8044         sscanf(str, "%lf", &f);  /* f = 123.; */
8045         along = dummy_long((unsigned long)f);
8046         aint = dummy_int((unsigned int)f);
8047         ashort = dummy_short((unsigned short)f);
8048         if (along != (unsigned long)123)
8049                 result |= 4;
8050         if (aint != (unsigned int)123)
8051                 result |= 4;
8052         if (ashort != (unsigned short)123)
8053                 result |= 4;
8054         exit(result);
8055
8056 }
8057 EOCP
8058 set try
8059 if eval $compile_ok; then
8060         ./try
8061         castflags=$?
8062 else
8063         echo "(I can't seem to compile the test program--assuming it can't)"
8064         castflags=7
8065 fi
8066 case "$castflags" in
8067 0)      val="$define"
8068         echo "Yup, it can."
8069         ;;
8070 *)      val="$undef"
8071         echo "Nope, it can't."
8072         ;;
8073 esac
8074 set d_castneg
8075 eval $setvar
8076 $rm -f try.*
8077
8078 : see if vprintf exists
8079 echo " "
8080 if set vprintf val -f d_vprintf; eval $csym; $val; then
8081         echo 'vprintf() found.' >&4
8082         val="$define"
8083         $cat >vprintf.c <<'EOF'
8084 #include <varargs.h>
8085
8086 int main() { xxx("foo"); }
8087
8088 xxx(va_alist)
8089 va_dcl
8090 {
8091         va_list args;
8092         char buf[10];
8093
8094         va_start(args);
8095         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8096 }
8097 EOF
8098         set vprintf
8099         if eval $compile && ./vprintf; then
8100                 echo "Your vsprintf() returns (int)." >&4
8101                 val2="$undef"
8102         else
8103                 echo "Your vsprintf() returns (char*)." >&4
8104                 val2="$define"
8105         fi
8106 else
8107         echo 'vprintf() NOT found.' >&4
8108                 val="$undef"
8109                 val2="$undef"
8110 fi
8111 set d_vprintf
8112 eval $setvar
8113 val=$val2
8114 set d_charvspr
8115 eval $setvar
8116
8117 : see if chown exists
8118 set chown d_chown
8119 eval $inlibc
8120
8121 : see if chroot exists
8122 set chroot d_chroot
8123 eval $inlibc
8124
8125 : see if chsize exists
8126 set chsize d_chsize
8127 eval $inlibc
8128
8129 : check for const keyword
8130 echo " "
8131 echo 'Checking to see if your C compiler knows about "const"...' >&4
8132 $cat >const.c <<'EOCP'
8133 typedef struct spug { int drokk; } spug;
8134 int main()
8135 {
8136         const char *foo;
8137         const spug y;
8138 }
8139 EOCP
8140 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8141         val="$define"
8142         echo "Yup, it does."
8143 else
8144         val="$undef"
8145         echo "Nope, it doesn't."
8146 fi
8147 set d_const
8148 eval $setvar
8149
8150 : see if crypt exists
8151 echo " "
8152 if set crypt val -f d_crypt; eval $csym; $val; then
8153         echo 'crypt() found.' >&4
8154         val="$define"
8155         cryptlib=''
8156 else
8157         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8158         if $test -z "$cryptlib"; then
8159                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8160         else
8161                 cryptlib=-lcrypt
8162         fi
8163         if $test -z "$cryptlib"; then
8164                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8165         else
8166                 cryptlib=-lcrypt
8167         fi
8168         if $test -z "$cryptlib"; then
8169                 cryptlib=`./loc libcrypt$_a "" $libpth`
8170         else
8171                 cryptlib=-lcrypt
8172         fi
8173         if $test -z "$cryptlib"; then
8174                 echo 'crypt() NOT found.' >&4
8175                 val="$undef"
8176         else
8177                 val="$define"
8178         fi
8179 fi
8180 set d_crypt
8181 eval $setvar
8182
8183 : get csh whereabouts
8184 case "$csh" in
8185 'csh') val="$undef" ;;
8186 *) val="$define" ;;
8187 esac
8188 set d_csh
8189 eval $setvar
8190 : Respect a hint or command line value for full_csh.
8191 case "$full_csh" in
8192 '') full_csh=$csh ;;
8193 esac
8194
8195 : see if cuserid exists
8196 set cuserid d_cuserid
8197 eval $inlibc
8198
8199 : see if this is a limits.h system
8200 set limits.h i_limits
8201 eval $inhdr
8202
8203 : see if this is a float.h system
8204 set float.h i_float
8205 eval $inhdr
8206
8207 : See if number of significant digits in a double precision number is known
8208 echo " "
8209 $cat >dbl_dig.c <<EOM
8210 #$i_limits I_LIMITS
8211 #$i_float I_FLOAT
8212 #ifdef I_LIMITS
8213 #include <limits.h>
8214 #endif
8215 #ifdef I_FLOAT
8216 #include <float.h>
8217 #endif
8218 #ifdef DBL_DIG
8219 printf("Contains DBL_DIG");
8220 #endif
8221 EOM
8222 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8223 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8224         echo "DBL_DIG found." >&4
8225         val="$define"
8226 else
8227         echo "DBL_DIG NOT found." >&4
8228         val="$undef"
8229 fi
8230 $rm -f dbl_dig.?
8231 set d_dbl_dig
8232 eval $setvar
8233
8234 : see if difftime exists
8235 set difftime d_difftime
8236 eval $inlibc
8237
8238 : see if this is a dirent system
8239 echo " "
8240 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8241         val="$define"
8242         echo "<dirent.h> found." >&4
8243 else
8244         val="$undef"
8245         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8246                 echo "<sys/dir.h> found." >&4
8247                 echo " "
8248         else
8249                 xinc=`./findhdr sys/ndir.h`
8250         fi
8251         echo "<dirent.h> NOT found." >&4
8252 fi
8253 set i_dirent
8254 eval $setvar
8255
8256 : Look for type of directory structure.
8257 echo " "
8258 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8259
8260 case "$direntrytype" in
8261 ''|' ')
8262         case "$i_dirent" in
8263         $define) guess1='struct dirent' ;;
8264         *) guess1='struct direct'  ;;
8265         esac
8266         ;;
8267 *)      guess1="$direntrytype"
8268         ;;
8269 esac
8270
8271 case "$guess1" in
8272 'struct dirent') guess2='struct direct' ;;
8273 *) guess2='struct dirent' ;;
8274 esac
8275                 
8276 if $contains "$guess1" try.c >/dev/null 2>&1; then
8277         direntrytype="$guess1"
8278         echo "Your directory entries are $direntrytype." >&4
8279 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8280         direntrytype="$guess2"
8281         echo "Your directory entries seem to be $direntrytype." >&4
8282 else
8283         echo "I don't recognize your system's directory entries." >&4
8284         rp="What type is used for directory entries on this system?"
8285         dflt="$guess1"
8286         . ./myread
8287         direntrytype="$ans"
8288 fi
8289 $rm -f try.c
8290
8291
8292 : see if the directory entry stores field length
8293 echo " "
8294 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8295 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8296         echo "Good, your directory entry keeps length information in d_namlen." >&4
8297         val="$define"
8298 else
8299         echo "Your directory entry does not know about the d_namlen field." >&4
8300         val="$undef"
8301 fi
8302 set d_dirnamlen
8303 eval $setvar
8304 $rm -f try.c
8305
8306 : see if dlerror exists
8307 xxx_runnm="$runnm"
8308 runnm=false
8309 set dlerror d_dlerror
8310 eval $inlibc
8311 runnm="$xxx_runnm"
8312
8313 : see if dlfcn is available
8314 set dlfcn.h i_dlfcn
8315 eval $inhdr
8316
8317 case "$usedl" in
8318 $define|y|true)
8319         $cat << EOM
8320
8321 On a few systems, the dynamically loaded modules that perl generates and uses
8322 will need a different extension than shared libs. The default will probably
8323 be appropriate.
8324
8325 EOM
8326         case "$dlext" in
8327         '')     dflt="$so" ;;
8328         *)      dflt="$dlext" ;;
8329         esac
8330         rp='What is the extension of dynamically loaded modules'
8331         . ./myread
8332         dlext="$ans"
8333         ;;
8334 *)
8335         dlext="none"
8336         ;;
8337 esac
8338
8339 : Check if dlsym need a leading underscore
8340 echo " "
8341 val="$undef"
8342
8343 case "$dlsrc" in
8344 dl_dlopen.xs)
8345         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8346         $cat >dyna.c <<'EOM'
8347 fred () { }
8348 EOM
8349
8350 $cat >fred.c<<EOM
8351
8352 #include <stdio.h>
8353 #$i_dlfcn I_DLFCN
8354 #ifdef I_DLFCN
8355 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8356 #else
8357 #include <sys/types.h>
8358 #include <nlist.h>
8359 #include <link.h>
8360 #endif
8361
8362 extern int fred() ;
8363
8364 int main()
8365 {
8366     void * handle ;
8367     void * symbol ;
8368 #ifndef RTLD_LAZY
8369     int mode = 1 ;
8370 #else
8371     int mode = RTLD_LAZY ;
8372 #endif
8373     handle = dlopen("./dyna.$dlext", mode) ;
8374     if (handle == NULL) {
8375         printf ("1\n") ;
8376         fflush (stdout) ;
8377         exit(0);
8378     }
8379     symbol = dlsym(handle, "fred") ;
8380     if (symbol == NULL) {
8381         /* try putting a leading underscore */
8382         symbol = dlsym(handle, "_fred") ;
8383         if (symbol == NULL) {
8384             printf ("2\n") ;
8385             fflush (stdout) ;
8386             exit(0);
8387         }
8388         printf ("3\n") ;
8389     }
8390     else
8391         printf ("4\n") ;
8392     fflush (stdout) ;
8393     exit(0);
8394 }
8395 EOM
8396         : Call the object file tmp-dyna.o in case dlext=o.
8397         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8398                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8399                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8400                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8401                 xxx=`./fred`
8402                 case $xxx in
8403                 1)      echo "Test program failed using dlopen." >&4
8404                         echo "Perhaps you should not use dynamic loading." >&4;;
8405                 2)      echo "Test program failed using dlsym." >&4
8406                         echo "Perhaps you should not use dynamic loading." >&4;;
8407                 3)      echo "dlsym needs a leading underscore" >&4
8408                         val="$define" ;;
8409                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8410                 esac
8411         else
8412                 echo "I can't compile and run the test program." >&4
8413                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8414         fi
8415         ;;
8416 esac
8417                 
8418 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8419
8420 set d_dlsymun
8421 eval $setvar
8422
8423 hasproto='varname=$1; func=$2; shift; shift;
8424 while $test $# -ge 2; do
8425         case "$1" in
8426         $define) echo "#include <$2>";;
8427         esac ;
8428     shift 2;
8429 done > try.c;
8430 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8431 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8432         echo "$func() prototype found.";
8433         val="$define";
8434 else
8435         echo "$func() prototype NOT found.";
8436         val="$undef";
8437 fi;
8438 set $varname;
8439 eval $setvar;
8440 $rm -f try.c tryout.c'
8441
8442 : see if prototype for drand48 is available
8443 echo " "
8444 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8445 eval $hasproto
8446
8447 : see if dup2 exists
8448 set dup2 d_dup2
8449 eval $inlibc
8450
8451 : see if eaccess exists
8452 set eaccess d_eaccess
8453 eval $inlibc
8454
8455 : see if endgrent exists
8456 set endgrent d_endgrent
8457 eval $inlibc
8458
8459 : see if endhostent exists
8460 set endhostent d_endhent
8461 eval $inlibc
8462
8463 : see if endnetent exists
8464 set endnetent d_endnent
8465 eval $inlibc
8466
8467 : see if endprotoent exists
8468 set endprotoent d_endpent
8469 eval $inlibc
8470
8471 : see if endpwent exists
8472 set endpwent d_endpwent
8473 eval $inlibc
8474
8475 : see if endservent exists
8476 set endservent d_endsent
8477 eval $inlibc
8478
8479 : see if endspent exists
8480 set endspent d_endspent
8481 eval $inlibc
8482
8483 : Locate the flags for 'open()'
8484 echo " "
8485 $cat >open3.c <<'EOCP'
8486 #include <sys/types.h>
8487 #ifdef I_FCNTL
8488 #include <fcntl.h>
8489 #endif
8490 #ifdef I_SYS_FILE
8491 #include <sys/file.h>
8492 #endif
8493 int main() {
8494         if(O_RDONLY);
8495 #ifdef O_TRUNC
8496         exit(0);
8497 #else
8498         exit(1);
8499 #endif
8500 }
8501 EOCP
8502 : check sys/file.h first to get FREAD on Sun
8503 if $test `./findhdr sys/file.h` && \
8504                 set open3 -DI_SYS_FILE && eval $compile; then
8505         h_sysfile=true;
8506         echo "<sys/file.h> defines the O_* constants..." >&4
8507         if ./open3; then
8508                 echo "and you have the 3 argument form of open()." >&4
8509                 val="$define"
8510         else
8511                 echo "but not the 3 argument form of open().  Oh, well." >&4
8512                 val="$undef"
8513         fi
8514 elif $test `./findhdr fcntl.h` && \
8515                 set open3 -DI_FCNTL && eval $compile; then
8516         h_fcntl=true;
8517         echo "<fcntl.h> defines the O_* constants..." >&4
8518         if ./open3; then
8519                 echo "and you have the 3 argument form of open()." >&4
8520                 val="$define"
8521         else
8522                 echo "but not the 3 argument form of open().  Oh, well." >&4
8523                 val="$undef"
8524         fi
8525 else
8526         val="$undef"
8527         echo "I can't find the O_* constant definitions!  You got problems." >&4
8528 fi
8529 set d_open3
8530 eval $setvar
8531 $rm -f open3*
8532
8533 : see which of string.h or strings.h is needed
8534 echo " "
8535 strings=`./findhdr string.h`
8536 if $test "$strings" && $test -r "$strings"; then
8537         echo "Using <string.h> instead of <strings.h>." >&4
8538         val="$define"
8539 else
8540         val="$undef"
8541         strings=`./findhdr strings.h`
8542         if $test "$strings" && $test -r "$strings"; then
8543                 echo "Using <strings.h> instead of <string.h>." >&4
8544         else
8545                 echo "No string header found -- You'll surely have problems." >&4
8546         fi
8547 fi
8548 set i_string
8549 eval $setvar
8550 case "$i_string" in
8551 "$undef") strings=`./findhdr strings.h`;;
8552 *)        strings=`./findhdr string.h`;;
8553 esac
8554
8555 : check for non-blocking I/O stuff
8556 case "$h_sysfile" in
8557 true) echo "#include <sys/file.h>" > head.c;;
8558 *)
8559         case "$h_fcntl" in
8560         true) echo "#include <fcntl.h>" > head.c;;
8561         *) echo "#include <sys/fcntl.h>" > head.c;;
8562         esac
8563         ;;
8564 esac
8565 echo " "
8566 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8567 case "$o_nonblock" in
8568 '')
8569         $cat head.c > try.c
8570         $cat >>try.c <<'EOCP'
8571 #include <stdio.h>
8572 int main() {
8573 #ifdef O_NONBLOCK
8574         printf("O_NONBLOCK\n");
8575         exit(0);
8576 #endif
8577 #ifdef O_NDELAY
8578         printf("O_NDELAY\n");
8579         exit(0);
8580 #endif
8581 #ifdef FNDELAY
8582         printf("FNDELAY\n");
8583         exit(0);
8584 #endif
8585         exit(0);
8586 }
8587 EOCP
8588         set try
8589         if eval $compile_ok; then
8590                 o_nonblock=`./try`
8591                 case "$o_nonblock" in
8592                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8593                 *) echo "Seems like we can use $o_nonblock.";;
8594                 esac
8595         else
8596                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8597         fi
8598         ;;
8599 *) echo "Using $hint value $o_nonblock.";;
8600 esac
8601 $rm -f try try.* .out core
8602
8603 echo " "
8604 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8605 case "$eagain" in
8606 '')
8607         $cat head.c > try.c
8608         $cat >>try.c <<EOCP
8609 #include <errno.h>
8610 #include <sys/types.h>
8611 #include <signal.h>
8612 #include <stdio.h> 
8613 #define MY_O_NONBLOCK $o_nonblock
8614 #ifndef errno  /* XXX need better Configure test */
8615 extern int errno;
8616 #endif
8617 #$i_unistd I_UNISTD
8618 #ifdef I_UNISTD
8619 #include <unistd.h>
8620 #endif
8621 #$i_string I_STRING
8622 #ifdef I_STRING
8623 #include <string.h>
8624 #else
8625 #include <strings.h>
8626 #endif
8627 $signal_t blech(x) int x; { exit(3); }
8628 EOCP
8629         $cat >> try.c <<'EOCP'
8630 int main()
8631 {
8632         int pd[2];
8633         int pu[2];
8634         char buf[1];
8635         char string[100];
8636
8637         pipe(pd);       /* Down: child -> parent */
8638         pipe(pu);       /* Up: parent -> child */
8639         if (0 != fork()) {
8640                 int ret;
8641                 close(pd[1]);   /* Parent reads from pd[0] */
8642                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8643                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8644                         exit(1);
8645                 signal(SIGALRM, blech);
8646                 alarm(5);
8647                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8648                         exit(2);
8649                 sprintf(string, "%d\n", ret);
8650                 write(2, string, strlen(string));
8651                 alarm(0);
8652 #ifdef EAGAIN
8653                 if (errno == EAGAIN) {
8654                         printf("EAGAIN\n");
8655                         goto ok;
8656                 }
8657 #endif
8658 #ifdef EWOULDBLOCK
8659                 if (errno == EWOULDBLOCK)
8660                         printf("EWOULDBLOCK\n");
8661 #endif
8662         ok:
8663                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8664                 sleep(2);                               /* Give it time to close our pipe */
8665                 alarm(5);
8666                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8667                 alarm(0);
8668                 sprintf(string, "%d\n", ret);
8669                 write(3, string, strlen(string));
8670                 exit(0);
8671         }
8672
8673         close(pd[0]);                   /* We write to pd[1] */
8674         close(pu[1]);                   /* We read from pu[0] */
8675         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8676         close(pd[1]);                   /* Pipe pd is now fully closed! */
8677         exit(0);                                /* Bye bye, thank you for playing! */
8678 }
8679 EOCP
8680         set try
8681         if eval $compile_ok; then
8682                 echo "$startsh" >mtry
8683                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8684                 chmod +x mtry
8685                 ./mtry >/dev/null 2>&1
8686                 case $? in
8687                 0) eagain=`$cat try.out`;;
8688                 1) echo "Could not perform non-blocking setting!";;
8689                 2) echo "I did a successful read() for something that was not there!";;
8690                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8691                 *) echo "Something terribly wrong happened during testing.";;
8692                 esac
8693                 rd_nodata=`$cat try.ret`
8694                 echo "A read() system call with no data present returns $rd_nodata."
8695                 case "$rd_nodata" in
8696                 0|-1) ;;
8697                 *)
8698                         echo "(That's peculiar, fixing that to be -1.)"
8699                         rd_nodata=-1
8700                         ;;
8701                 esac
8702                 case "$eagain" in
8703                 '')
8704                         echo "Forcing errno EAGAIN on read() with no data available."
8705                         eagain=EAGAIN
8706                         ;;
8707                 *)
8708                         echo "Your read() sets errno to $eagain when no data is available."
8709                         ;;
8710                 esac
8711                 status=`$cat try.err`
8712                 case "$status" in
8713                 0) echo "And it correctly returns 0 to signal EOF.";;
8714                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8715                 *) echo "However, your read() returns '$status' on EOF??";;
8716                 esac
8717                 val="$define"
8718                 if test "$status" = "$rd_nodata"; then
8719                         echo "WARNING: you can't distinguish between EOF and no data!"
8720                         val="$undef"
8721                 fi
8722         else
8723                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8724                 eagain=EAGAIN
8725         fi
8726         set d_eofnblk
8727         eval $setvar
8728         ;;
8729 *)
8730         echo "Using $hint value $eagain."
8731         echo "Your read() returns $rd_nodata when no data is present."
8732         case "$d_eofnblk" in
8733         "$define") echo "And you can see EOF because read() returns 0.";;
8734         "$undef") echo "But you can't see EOF status from read() returned value.";;
8735         *)
8736                 echo "(Assuming you can't see EOF status from read anyway.)"
8737                 d_eofnblk=$undef
8738                 ;;
8739         esac
8740         ;;
8741 esac
8742 $rm -f try try.* .out core head.c mtry
8743
8744 : see if fchmod exists
8745 set fchmod d_fchmod
8746 eval $inlibc
8747
8748 : see if fchown exists
8749 set fchown d_fchown
8750 eval $inlibc
8751
8752 : see if this is an fcntl system
8753 set fcntl d_fcntl
8754 eval $inlibc
8755
8756 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8757 while $test $# -ge 2; do
8758         case "$1" in
8759         $define) echo "#include <$2>";;
8760         esac ;
8761     shift 2;
8762 done > try.c;
8763 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8764 set try;
8765 if eval $compile; then
8766         val="$define";
8767 else
8768         val="$undef";
8769 fi;
8770 set $varname;
8771 eval $setvar;
8772 $rm -f try.c try.o'
8773
8774 socketlib=''
8775 sockethdr=''
8776 : see whether socket exists
8777 echo " "
8778 $echo $n "Hmm... $c" >&4
8779 if set socket val -f d_socket; eval $csym; $val; then
8780         echo "Looks like you have Berkeley networking support." >&4
8781         d_socket="$define"
8782         if set setsockopt val -f; eval $csym; $val; then
8783                 d_oldsock="$undef"
8784         else
8785                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8786                 d_oldsock="$define"
8787         fi
8788 else
8789         if $contains socklib libc.list >/dev/null 2>&1; then
8790                 echo "Looks like you have Berkeley networking support." >&4
8791                 d_socket="$define"
8792                 : we will have to assume that it supports the 4.2 BSD interface
8793                 d_oldsock="$undef"
8794         else
8795                 echo "You don't have Berkeley networking in libc$_a..." >&4
8796                 if test "X$d_socket" = "X$define"; then
8797                    echo "...but you seem to believe that you have sockets." >&4
8798                 else
8799                         for net in net socket
8800                         do
8801                                 if test -f /usr/lib/lib$net$_a; then
8802                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8803                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8804                                         if $contains socket libc.list >/dev/null 2>&1; then
8805                                                 d_socket="$define"
8806                                                 socketlib="-l$net"
8807                                                 case "$net" in
8808                                                 net)
8809                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8810                                                         sockethdr="-I/usr/netinclude"
8811                                                         ;;
8812                                                 esac
8813                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8814                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8815                                                         d_oldsock="$undef"
8816                                                 else
8817                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8818                                                         d_oldsock="$define"
8819                                                 fi
8820                                                 break
8821                                         fi
8822                                 fi
8823                         done
8824                         if test "X$d_socket" != "X$define"; then
8825                            echo "or anywhere else I see." >&4
8826                            d_socket="$undef"
8827                            d_oldsock="$undef"
8828                         fi
8829                 fi
8830         fi
8831 fi
8832
8833 : see if socketpair exists
8834 set socketpair d_sockpair
8835 eval $inlibc
8836
8837
8838 echo " "
8839 echo "Checking the availability of certain socket constants..." >& 4
8840 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8841         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8842         $cat >try.c <<EOF
8843 #include <sys/types.h>
8844 #include <sys/socket.h>
8845 int main() {
8846     int i = $ENUM;
8847 }
8848 EOF
8849         val="$undef"
8850         set try; if eval $compile; then
8851                 val="$define"
8852         fi
8853         set d_${enum}; eval $setvar
8854         $rm -f try.c try
8855 done
8856
8857 : see if sys/select.h has to be included
8858 set sys/select.h i_sysselct
8859 eval $inhdr
8860
8861 : see if we should include time.h, sys/time.h, or both
8862 echo " "
8863 if test "X$timeincl" = X; then
8864         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8865         $echo $n "I'm now running the test program...$c"
8866         $cat >try.c <<'EOCP'
8867 #include <sys/types.h>
8868 #ifdef I_TIME
8869 #include <time.h>
8870 #endif
8871 #ifdef I_SYSTIME
8872 #ifdef SYSTIMEKERNEL
8873 #define KERNEL
8874 #endif
8875 #include <sys/time.h>
8876 #endif
8877 #ifdef I_SYSSELECT
8878 #include <sys/select.h>
8879 #endif
8880 int main()
8881 {
8882         struct tm foo;
8883 #ifdef S_TIMEVAL
8884         struct timeval bar;
8885 #endif
8886 #ifdef S_TIMEZONE
8887         struct timezone tzp;
8888 #endif
8889         if (foo.tm_sec == foo.tm_sec)
8890                 exit(0);
8891 #ifdef S_TIMEVAL
8892         if (bar.tv_sec == bar.tv_sec)
8893                 exit(0);
8894 #endif
8895         exit(1);
8896 }
8897 EOCP
8898         flags=''
8899         for s_timezone in '-DS_TIMEZONE' ''; do
8900         sysselect=''
8901         for s_timeval in '-DS_TIMEVAL' ''; do
8902         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8903         for i_time in '' '-DI_TIME'; do
8904         for i_systime in '-DI_SYSTIME' ''; do
8905                 case "$flags" in
8906                 '') $echo $n ".$c"
8907                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8908                         if eval $compile; then
8909                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8910                                 shift
8911                                 flags="$*"
8912                                 echo " "
8913                                 $echo $n "Succeeded with $flags$c"
8914                         fi
8915                         ;;
8916                 esac
8917         done
8918         done
8919         done
8920         done
8921         done
8922         timeincl=''
8923         echo " "
8924         case "$flags" in
8925         *SYSTIMEKERNEL*) i_systimek="$define"
8926                 timeincl=`./findhdr sys/time.h`
8927                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8928         *) i_systimek="$undef";;
8929         esac
8930         case "$flags" in
8931         *I_TIME*) i_time="$define"
8932                 timeincl=`./findhdr time.h`" $timeincl"
8933                 echo "We'll include <time.h>." >&4;;
8934         *) i_time="$undef";;
8935         esac
8936         case "$flags" in
8937         *I_SYSTIME*) i_systime="$define"
8938                 timeincl=`./findhdr sys/time.h`" $timeincl"
8939                 echo "We'll include <sys/time.h>." >&4;;
8940         *) i_systime="$undef";;
8941         esac
8942         $rm -f try.c try
8943 fi
8944
8945 : check for fd_set items
8946 $cat <<EOM
8947
8948 Checking to see how well your C compiler handles fd_set and friends ...
8949 EOM
8950 $cat >fd_set.c <<EOCP
8951 #$i_systime I_SYS_TIME
8952 #$i_sysselct I_SYS_SELECT
8953 #$d_socket HAS_SOCKET
8954 #include <sys/types.h>
8955 #ifdef HAS_SOCKET
8956 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8957 #endif
8958 #ifdef I_SYS_TIME
8959 #include <sys/time.h>
8960 #endif
8961 #ifdef I_SYS_SELECT
8962 #include <sys/select.h>
8963 #endif
8964 int main() {
8965         fd_set fds;
8966
8967 #ifdef TRYBITS
8968         if(fds.fds_bits);
8969 #endif
8970
8971 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8972         exit(0);
8973 #else
8974         exit(1);
8975 #endif
8976 }
8977 EOCP
8978 set fd_set -DTRYBITS
8979 if eval $compile; then
8980         d_fds_bits="$define"
8981         d_fd_set="$define"
8982         echo "Well, your system knows about the normal fd_set typedef..." >&4
8983         if ./fd_set; then
8984                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8985                 d_fd_macros="$define"
8986         else
8987                 $cat >&4 <<'EOM'
8988 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8989 EOM
8990                 d_fd_macros="$undef"
8991         fi
8992 else
8993         $cat <<'EOM'
8994 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8995 EOM
8996         set fd_set
8997         if eval $compile; then
8998                 d_fds_bits="$undef"
8999                 d_fd_set="$define"
9000                 echo "Well, your system has some sort of fd_set available..." >&4
9001                 if ./fd_set; then
9002                         echo "and you have the normal fd_set macros." >&4
9003                         d_fd_macros="$define"
9004                 else
9005                         $cat <<'EOM'
9006 but not the normal fd_set macros!  Gross!  More work for me...
9007 EOM
9008                         d_fd_macros="$undef"
9009                 fi
9010         else
9011         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9012                 d_fd_set="$undef"
9013                 d_fds_bits="$undef"
9014                 d_fd_macros="$undef"
9015         fi
9016 fi
9017 $rm -f fd_set*
9018
9019 : see if fgetpos exists
9020 set fgetpos d_fgetpos
9021 eval $inlibc
9022
9023 : see if flock exists
9024 set flock d_flock
9025 eval $inlibc
9026
9027 : see if fork exists
9028 set fork d_fork
9029 eval $inlibc
9030
9031 : see if pathconf exists
9032 set pathconf d_pathconf
9033 eval $inlibc
9034
9035 : see if fpathconf exists
9036 set fpathconf d_fpathconf
9037 eval $inlibc
9038
9039
9040 : check for fpos64_t
9041 echo " "
9042 echo "Checking to see if you have fpos64_t..." >&4
9043 $cat >try.c <<EOCP
9044 #include <stdio.h>
9045 int main() { fpos64_t x = 7; }
9046 EOCP
9047 set try
9048 if eval $compile; then
9049         val="$define"
9050         echo "You have fpos64_t."
9051 else
9052         val="$undef"
9053         echo "You do not have fpos64_t."
9054         case "$fpossize" in
9055         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9056         esac
9057 fi
9058 $rm -f try.* try
9059 set d_fpos64_t
9060 eval $setvar
9061
9062 hasstruct='varname=$1; struct=$2; shift; shift;
9063 while $test $# -ge 2; do
9064         case "$1" in
9065         $define) echo "#include <$2>";;
9066         esac ;
9067     shift 2;
9068 done > try.c;
9069 echo "int main () { struct $struct foo; }" >> try.c;
9070 set try;
9071 if eval $compile; then
9072         val="$define";
9073 else
9074         val="$undef";
9075 fi;
9076 set $varname;
9077 eval $setvar;
9078 $rm -f try.c try.o'
9079
9080 : see if this is a sys/param system
9081 set sys/param.h i_sysparam
9082 eval $inhdr
9083
9084 : see if this is a sys/mount.h system
9085 set sys/mount.h i_sysmount
9086 eval $inhdr
9087
9088 : see if sys/types.h has to be included
9089 set sys/types.h i_systypes
9090 eval $inhdr
9091
9092
9093 echo " "
9094 echo "Checking to see if your system supports struct fs_data..." >&4
9095 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9096 eval $hasstruct
9097 case "$d_fs_data_s" in
9098 "$define")      echo "Yes, it does."   ;;
9099 *)              echo "No, it doesn't." ;;
9100 esac
9101
9102 : see if fseeko exists
9103 set fseeko d_fseeko
9104 eval $inlibc
9105 case "$longsize" in
9106 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9107 esac
9108
9109 : see if fsetpos exists
9110 set fsetpos d_fsetpos
9111 eval $inlibc
9112
9113
9114 : see if fstatfs exists
9115 set fstatfs d_fstatfs
9116 eval $inlibc
9117
9118
9119 : see if statvfs exists
9120 set statvfs d_statvfs
9121 eval $inlibc
9122
9123 : see if fstatvfs exists
9124 set fstatvfs d_fstatvfs
9125 eval $inlibc
9126
9127
9128 : see if ftello exists
9129 set ftello d_ftello
9130 eval $inlibc
9131 case "$longsize" in
9132 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9133 esac
9134
9135 : see if getcwd exists
9136 set getcwd d_getcwd
9137 eval $inlibc
9138
9139
9140 : see if getfsstat exists
9141 set getfsstat d_getfsstat
9142 eval $inlibc
9143
9144 : see if getgrent exists
9145 set getgrent d_getgrent
9146 eval $inlibc
9147
9148 : see if gethostbyaddr exists
9149 set gethostbyaddr d_gethbyaddr
9150 eval $inlibc
9151
9152 : see if gethostbyname exists
9153 set gethostbyname d_gethbyname
9154 eval $inlibc
9155
9156 : see if gethostent exists
9157 set gethostent d_gethent
9158 eval $inlibc
9159
9160 : see how we will look up host name
9161 echo " "
9162 call=''
9163 if set gethostname val -f d_gethname; eval $csym; $val; then
9164         echo 'gethostname() found.' >&4
9165         d_gethname="$define"
9166         call=gethostname
9167 fi
9168 if set uname val -f d_uname; eval $csym; $val; then
9169         if ./xenix; then
9170                 $cat <<'EOM'
9171 uname() was found, but you're running xenix, and older versions of xenix
9172 have a broken uname(). If you don't really know whether your xenix is old
9173 enough to have a broken system call, use the default answer.
9174
9175 EOM
9176                 dflt=y
9177                 case "$d_uname" in
9178                 "$define") dflt=n;;
9179                 esac
9180                 rp='Is your uname() broken?'
9181                 . ./myread
9182                 case "$ans" in
9183                 n*) d_uname="$define"; call=uname;;
9184                 esac
9185         else
9186                 echo 'uname() found.' >&4
9187                 d_uname="$define"
9188                 case "$call" in
9189                 '') call=uname ;;
9190                 esac
9191         fi
9192 fi
9193 case "$d_gethname" in
9194 '') d_gethname="$undef";;
9195 esac
9196 case "$d_uname" in
9197 '') d_uname="$undef";;
9198 esac
9199 case "$d_uname$d_gethname" in
9200 *define*)
9201         dflt=n
9202         cat <<EOM
9203  
9204 Every now and then someone has a $call() that lies about the hostname
9205 but can't be fixed for political or economic reasons.  If you wish, I can
9206 pretend $call() isn't there and maybe compute hostname at run-time
9207 thanks to the '$phostname' command.
9208
9209 EOM
9210         rp="Shall I ignore $call() from now on?"
9211         . ./myread
9212         case "$ans" in
9213         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9214         esac;;
9215 esac
9216 case "$phostname" in
9217 '') aphostname='';;
9218 *) case "$aphostname" in
9219         /*) ;;
9220         *) set X $phostname
9221                 shift
9222                 file=$1
9223                 shift
9224                 file=`./loc $file $file $pth`
9225                 aphostname=`echo $file $*`
9226                 ;;
9227         esac
9228         ;;
9229 esac
9230 case "$d_uname$d_gethname" in
9231 *define*) ;;
9232 *)
9233         case "$phostname" in
9234         '')
9235                 echo "There will be no way for $package to get your hostname." >&4;;
9236         *)
9237         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9238                 ;;
9239         esac;;
9240 esac
9241 case "$d_phostname" in
9242 '') d_phostname="$undef";;
9243 esac
9244
9245 : see if this is a netdb.h system
9246 set netdb.h i_netdb
9247 eval $inhdr
9248
9249 : see if prototypes for various gethostxxx netdb.h functions are available
9250 echo " "
9251 set d_gethostprotos gethostent $i_netdb netdb.h
9252 eval $hasproto
9253
9254 : see if getlogin exists
9255 set getlogin d_getlogin
9256 eval $inlibc
9257
9258 : see if getmnt exists
9259 set getmnt d_getmnt
9260 eval $inlibc
9261
9262 : see if getmntent exists
9263 set getmntent d_getmntent
9264 eval $inlibc
9265
9266 : see if getnetbyaddr exists
9267 set getnetbyaddr d_getnbyaddr
9268 eval $inlibc
9269
9270 : see if getnetbyname exists
9271 set getnetbyname d_getnbyname
9272 eval $inlibc
9273
9274 : see if getnetent exists
9275 set getnetent d_getnent
9276 eval $inlibc
9277
9278 : see if prototypes for various getnetxxx netdb.h functions are available
9279 echo " "
9280 set d_getnetprotos getnetent $i_netdb netdb.h
9281 eval $hasproto
9282
9283
9284 : see if getprotobyname exists
9285 set getprotobyname d_getpbyname
9286 eval $inlibc
9287
9288 : see if getprotobynumber exists
9289 set getprotobynumber d_getpbynumber
9290 eval $inlibc
9291
9292 : see if getprotoent exists
9293 set getprotoent d_getpent
9294 eval $inlibc
9295
9296 : see if getpgid exists
9297 set getpgid d_getpgid
9298 eval $inlibc
9299
9300 : see if getpgrp2 exists
9301 set getpgrp2 d_getpgrp2
9302 eval $inlibc
9303
9304 : see if getppid exists
9305 set getppid d_getppid
9306 eval $inlibc
9307
9308 : see if getpriority exists
9309 set getpriority d_getprior
9310 eval $inlibc
9311
9312 : see if prototypes for various getprotoxxx netdb.h functions are available
9313 echo " "
9314 set d_getprotoprotos getprotoent $i_netdb netdb.h
9315 eval $hasproto
9316
9317 : see if getpwent exists
9318 set getpwent d_getpwent
9319 eval $inlibc
9320
9321
9322 : see if getservbyname exists
9323 set getservbyname d_getsbyname
9324 eval $inlibc
9325
9326 : see if getservbyport exists
9327 set getservbyport d_getsbyport
9328 eval $inlibc
9329
9330 : see if getservent exists
9331 set getservent d_getsent
9332 eval $inlibc
9333
9334 : see if prototypes for various getservxxx netdb.h functions are available
9335 echo " "
9336 set d_getservprotos getservent $i_netdb netdb.h
9337 eval $hasproto
9338
9339 : see if getspent exists
9340 set getspent d_getspent
9341 eval $inlibc
9342
9343 : see if getspnam exists
9344 set getspnam d_getspnam
9345 eval $inlibc
9346
9347 : see if gettimeofday or ftime exists
9348 set gettimeofday d_gettimeod
9349 eval $inlibc
9350 case "$d_gettimeod" in
9351 "$undef")
9352         set ftime d_ftime 
9353         eval $inlibc
9354         ;;
9355 *)
9356         val="$undef"; set d_ftime; eval $setvar
9357         ;;
9358 esac
9359 case "$d_gettimeod$d_ftime" in
9360 "$undef$undef")
9361         echo " "
9362         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9363         ;;
9364 esac
9365
9366 : see if this is an grp system
9367 set grp.h i_grp
9368 eval $inhdr
9369
9370 case "$i_grp" in
9371 $define)
9372         xxx=`./findhdr grp.h`
9373         $cppstdin $cppflags $cppminus < $xxx >$$.h
9374
9375         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9376                 val="$define"
9377         else
9378                 val="$undef"
9379         fi
9380         set d_grpasswd
9381         eval $setvar
9382
9383         $rm -f $$.h
9384         ;;
9385 *)
9386         val="$undef";
9387         set d_grpasswd; eval $setvar
9388         ;;
9389 esac
9390
9391 : see if hasmntopt exists
9392 set hasmntopt d_hasmntopt
9393 eval $inlibc
9394
9395 : see if this is a netinet/in.h or sys/in.h system
9396 set netinet/in.h i_niin sys/in.h i_sysin
9397 eval $inhdr
9398
9399 : see if arpa/inet.h has to be included
9400 set arpa/inet.h i_arpainet
9401 eval $inhdr
9402
9403 : see if htonl --and friends-- exists
9404 val=''
9405 set htonl val
9406 eval $inlibc
9407
9408 : Maybe they are macros.
9409 case "$val" in
9410 $undef)
9411         $cat >htonl.c <<EOM
9412 #include <stdio.h>
9413 #include <sys/types.h>
9414 #$i_niin I_NETINET_IN
9415 #$i_sysin I_SYS_IN
9416 #$i_arpainet I_ARPA_INET
9417 #ifdef I_NETINET_IN
9418 #include <netinet/in.h>
9419 #endif
9420 #ifdef I_SYS_IN
9421 #include <sys/in.h>
9422 #endif
9423 #ifdef I_ARPA_INET
9424 #include <arpa/inet.h>
9425 #endif
9426 #ifdef htonl
9427 printf("Defined as a macro.");
9428 #endif
9429 EOM
9430         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9431         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9432                 val="$define"
9433                 echo "But it seems to be defined as a macro." >&4
9434         fi
9435         $rm -f htonl.?
9436         ;;
9437 esac
9438 set d_htonl
9439 eval $setvar
9440
9441 : see if iconv exists
9442 set iconv d_iconv
9443 eval $inlibc
9444
9445 : index or strchr
9446 echo " "
9447 if set index val -f; eval $csym; $val; then
9448         if set strchr val -f d_strchr; eval $csym; $val; then
9449                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9450                         val="$define"
9451                         vali="$undef"
9452                         echo "strchr() found." >&4
9453                 else
9454                         val="$undef"
9455                         vali="$define"
9456                         echo "index() found." >&4
9457                 fi
9458         else
9459                 val="$undef"
9460                 vali="$define"
9461                 echo "index() found." >&4
9462         fi
9463 else
9464         if set strchr val -f d_strchr; eval $csym; $val; then
9465                 val="$define"
9466                 vali="$undef"
9467                 echo "strchr() found." >&4
9468         else
9469                 echo "No index() or strchr() found!" >&4
9470                 val="$undef"
9471                 vali="$undef"
9472         fi
9473 fi
9474 set d_strchr; eval $setvar
9475 val="$vali"
9476 set d_index; eval $setvar
9477
9478 : check whether inet_aton exists
9479 set inet_aton d_inetaton
9480 eval $inlibc
9481
9482 : see if inttypes.h is available
9483 : we want a real compile instead of Inhdr because some systems
9484 : have an inttypes.h which includes non-existent headers
9485 echo " "
9486 $cat >try.c <<EOCP
9487 #include <inttypes.h>
9488 int main() {
9489         static int32_t foo32 = 0x12345678;
9490 }
9491 EOCP
9492 set try
9493 if eval $compile; then
9494         echo "<inttypes.h> found." >&4
9495         val="$define"
9496 else
9497         echo "<inttypes.h> NOT found." >&4
9498         val="$undef"
9499 fi
9500 $rm -f try.c try
9501 set i_inttypes
9502 eval $setvar
9503
9504 : check for int64_t
9505 echo " "
9506 echo "Checking to see if you have int64_t..." >&4
9507 $cat >try.c <<EOCP
9508 #include <sys/types.h>
9509 #$i_inttypes I_INTTYPES
9510 #ifdef I_INTTYPES
9511 #include <inttypes.h>
9512 #endif
9513 int main() { int64_t x = 7; }
9514 EOCP
9515 set try
9516 if eval $compile; then
9517         val="$define"
9518         echo "You have int64_t."
9519 else
9520         val="$undef"
9521         echo "You do not have int64_t."
9522 fi
9523 $rm -f try try.*
9524 set d_int64_t
9525 eval $setvar
9526
9527 : Look for isascii
9528 echo " "
9529 $cat >isascii.c <<'EOCP'
9530 #include <stdio.h>
9531 #include <ctype.h>
9532 int main() {
9533         int c = 'A';
9534         if (isascii(c))
9535                 exit(0);
9536         else
9537                 exit(1);
9538 }
9539 EOCP
9540 set isascii
9541 if eval $compile; then
9542         echo "isascii() found." >&4
9543         val="$define"
9544 else
9545         echo "isascii() NOT found." >&4
9546         val="$undef"
9547 fi
9548 set d_isascii
9549 eval $setvar
9550 $rm -f isascii*
9551
9552 : see if killpg exists
9553 set killpg d_killpg
9554 eval $inlibc
9555
9556 : see if lchown exists
9557 echo " "
9558 $cat > try.c <<'EOCP'
9559 /* System header to define __stub macros and hopefully few prototypes,
9560     which can conflict with char lchown(); below.  */
9561 #include <assert.h>
9562 /* Override any gcc2 internal prototype to avoid an error.  */
9563 /* We use char because int might match the return type of a gcc2
9564    builtin and then its argument prototype would still apply.  */
9565 char lchown();
9566 int main() {
9567     /*  The GNU C library defines this for functions which it implements
9568         to always fail with ENOSYS.  Some functions are actually named
9569         something starting with __ and the normal name is an alias.  */
9570 #if defined (__stub_lchown) || defined (__stub___lchown)
9571 choke me
9572 #else
9573 lchown();
9574 #endif
9575 ; return 0; }
9576 EOCP
9577 set try
9578 if eval $compile; then
9579     $echo "lchown() found." >&4
9580     val="$define"
9581 else
9582     $echo "lchown() NOT found." >&4
9583     val="$undef"
9584 fi
9585 set d_lchown
9586 eval $setvar
9587
9588 : See if number of significant digits in a double precision number is known
9589 echo " "
9590 $cat >ldbl_dig.c <<EOM
9591 #$i_limits I_LIMITS
9592 #$i_float I_FLOAT
9593 #ifdef I_LIMITS
9594 #include <limits.h>
9595 #endif
9596 #ifdef I_FLOAT
9597 #include <float.h>
9598 #endif
9599 #ifdef LDBL_DIG
9600 printf("Contains LDBL_DIG");
9601 #endif
9602 EOM
9603 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9604 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9605         echo "LDBL_DIG found." >&4
9606         val="$define"
9607 else
9608         echo "LDBL_DIG NOT found." >&4
9609         val="$undef"
9610 fi
9611 $rm -f ldbl_dig.?
9612 set d_ldbl_dig
9613 eval $setvar
9614
9615 : see if link exists
9616 set link d_link
9617 eval $inlibc
9618
9619 : see if localeconv exists
9620 set localeconv d_locconv
9621 eval $inlibc
9622
9623 : see if lockf exists
9624 set lockf d_lockf
9625 eval $inlibc
9626
9627 : check for long long
9628 echo " "
9629 echo "Checking to see if you have long long..." >&4
9630 echo 'int main() { long long x = 7; return 0; }' > try.c
9631 set try
9632 if eval $compile; then
9633         val="$define"
9634         echo "You have have long long."
9635 else
9636         val="$undef"
9637         echo "You do not have long long."
9638 fi
9639 $rm try.*
9640 set d_longlong
9641 eval $setvar
9642
9643 : check for length of long long
9644 case "${d_longlong}${longlongsize}" in
9645 $define)
9646         echo " "
9647         echo "Checking to see how big your long longs are..." >&4
9648         $cat >try.c <<'EOCP'
9649 #include <stdio.h>
9650 int main()
9651 {
9652     printf("%d\n", (int)sizeof(long long));
9653     return(0);
9654 }
9655 EOCP
9656         set try
9657         if eval $compile_ok; then
9658                 longlongsize=`./try$exe_ext`
9659                 echo "Your long longs are $longlongsize bytes long."
9660         else
9661                 dflt='8'
9662                 echo " "
9663                 echo "(I can't seem to compile the test program.  Guessing...)"
9664                 rp="What is the size of a long long (in bytes)?"
9665                 . ./myread
9666                 longlongsize="$ans"
9667         fi
9668         if $test "X$longsize" = "X$longlongsize"; then
9669                 echo "(That isn't any different from an ordinary long.)"
9670         fi      
9671         ;;
9672 esac
9673 $rm -f try.* try
9674
9675 : see if prototype for lseek is available
9676 echo " "
9677 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9678 eval $hasproto
9679
9680 : see if lstat exists
9681 set lstat d_lstat
9682 eval $inlibc
9683
9684 : see if madvise exists
9685 set madvise d_madvise
9686 eval $inlibc
9687
9688 : see if mblen exists
9689 set mblen d_mblen
9690 eval $inlibc
9691
9692 : see if mbstowcs exists
9693 set mbstowcs d_mbstowcs
9694 eval $inlibc
9695
9696 : see if mbtowc exists
9697 set mbtowc d_mbtowc
9698 eval $inlibc
9699
9700 : see if memchr exists
9701 set memchr d_memchr
9702 eval $inlibc
9703
9704 : see if memcmp exists
9705 set memcmp d_memcmp
9706 eval $inlibc
9707
9708 : see if memcpy exists
9709 set memcpy d_memcpy
9710 eval $inlibc
9711
9712 : see if memmove exists
9713 set memmove d_memmove
9714 eval $inlibc
9715
9716 : see if memset exists
9717 set memset d_memset
9718 eval $inlibc
9719
9720 : see if mkdir exists
9721 set mkdir d_mkdir
9722 eval $inlibc
9723
9724 : see if mkdtemp exists
9725 set mkdtemp d_mkdtemp
9726 eval $inlibc
9727
9728 : see if mkfifo exists
9729 set mkfifo d_mkfifo
9730 eval $inlibc
9731
9732 : see if mkstemp exists
9733 set mkstemp d_mkstemp
9734 eval $inlibc
9735
9736 : see if mkstemps exists
9737 set mkstemps d_mkstemps
9738 eval $inlibc
9739
9740 : see if mktime exists
9741 set mktime d_mktime
9742 eval $inlibc
9743
9744 : see if this is a sys/mman.h system
9745 set sys/mman.h i_sysmman
9746 eval $inhdr
9747
9748 : see if mmap exists
9749 set mmap d_mmap
9750 eval $inlibc
9751 : see what shmat returns
9752 : default to something harmless
9753 mmaptype='void *'
9754 case "$i_sysmman$d_mmap" in
9755 "$define$define")
9756         $cat >mmap.c <<'END'
9757 #include <sys/mman.h>
9758 void *mmap();
9759 END
9760         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9761                 mmaptype='void *'
9762         else
9763                 mmaptype='caddr_t'
9764         fi
9765         echo "and it returns ($mmaptype)." >&4
9766         ;;
9767 esac
9768
9769
9770
9771 : see if mprotect exists
9772 set mprotect d_mprotect
9773 eval $inlibc
9774
9775 : see if msgctl exists
9776 set msgctl d_msgctl
9777 eval $inlibc
9778
9779 : see if msgget exists
9780 set msgget d_msgget
9781 eval $inlibc
9782
9783 : see if msgsnd exists
9784 set msgsnd d_msgsnd
9785 eval $inlibc
9786
9787 : see if msgrcv exists
9788 set msgrcv d_msgrcv
9789 eval $inlibc
9790
9791 : see how much of the 'msg*(2)' library is present.
9792 h_msg=true
9793 echo " "
9794 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9795 *"$undef"*) h_msg=false;;
9796 esac
9797 case "$osname" in
9798 freebsd)
9799     case "`ipcs 2>&1`" in
9800     "SVID messages"*"not configured"*)
9801         echo "Your $osname does not have the msg*(2) configured." >&4
9802         h_msg=false
9803         val="$undef"
9804         set msgctl d_msgctl
9805         eval $setvar
9806         set msgget d_msgget
9807         eval $setvar
9808         set msgsnd d_msgsnd
9809         eval $setvar
9810         set msgrcv d_msgrcv
9811         eval $setvar
9812         ;;
9813     esac
9814     ;;
9815 esac
9816 : we could also check for sys/ipc.h ...
9817 if $h_msg && $test `./findhdr sys/msg.h`; then
9818         echo "You have the full msg*(2) library." >&4
9819         val="$define"
9820 else
9821         echo "You don't have the full msg*(2) library." >&4
9822         val="$undef"
9823 fi
9824 set d_msg
9825 eval $setvar
9826
9827 : see if msync exists
9828 set msync d_msync
9829 eval $inlibc
9830
9831 : see if munmap exists
9832 set munmap d_munmap
9833 eval $inlibc
9834
9835 : see if nice exists
9836 set nice d_nice
9837 eval $inlibc
9838
9839
9840 echo " "
9841 echo "Checking which 64-bit integer type we could use..." >&4
9842
9843 case "$intsize" in
9844 8) val=int
9845    set quadtype
9846    eval $setvar
9847    val='"unsigned int"'
9848    set uquadtype
9849    eval $setvar
9850    quadkind=1
9851    ;;
9852 *) case "$longsize" in
9853    8) val=long
9854       set quadtype
9855       eval $setvar
9856       val='"unsigned long"'
9857       set uquadtype
9858       eval $setvar
9859       quadkind=2
9860       ;;
9861    *) case "$d_longlong:$longlongsize" in
9862       define:8)
9863         val='"long long"'
9864         set quadtype
9865         eval $setvar
9866         val='"unsigned long long"'
9867         set uquadtype
9868         eval $setvar
9869         quadkind=3
9870         ;;
9871       *) case "$d_int64_t" in
9872          define)
9873            val=int64_t
9874            set quadtype
9875            eval $setvar
9876            val=uint64_t
9877            set uquadtype
9878            eval $setvar
9879            quadkind=4
9880            ;;
9881          esac
9882          ;;
9883       esac
9884       ;;
9885    esac
9886    ;;
9887 esac
9888
9889 case "$quadtype" in
9890 '')     echo "Alas, no 64-bit integer types in sight." >&4
9891         d_quad="$undef"
9892         ;;
9893 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9894             verb="will"
9895         else
9896             verb="could"
9897         fi
9898         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9899         d_quad="$define"
9900         ;;
9901 esac
9902
9903 : check for length of character
9904 echo " "
9905 case "$charsize" in
9906 '')
9907         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9908         $cat >try.c <<'EOCP'
9909 #include <stdio.h>
9910 int main()
9911 {
9912     printf("%d\n", (int)sizeof(char));
9913     exit(0);
9914 }
9915 EOCP
9916         set try
9917         if eval $compile_ok; then
9918                 dflt=`./try`
9919         else
9920                 dflt='1'
9921                 echo "(I can't seem to compile the test program.  Guessing...)"
9922         fi
9923         ;;
9924 *)
9925         dflt="$charsize"
9926         ;;
9927 esac
9928 rp="What is the size of a character (in bytes)?"
9929 . ./myread
9930 charsize="$ans"
9931 $rm -f try.c try
9932
9933
9934 echo " "
9935 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9936
9937 case "$use64bitint:$d_quad:$quadtype" in
9938 define:define:?*)
9939         ivtype="$quadtype"
9940         uvtype="$uquadtype"
9941         ivsize=8
9942         uvsize=8
9943         ;;
9944 *)      ivtype="long"
9945         uvtype="unsigned long"
9946         ivsize=$longsize
9947         uvsize=$longsize
9948         ;;
9949 esac
9950
9951 case "$uselongdouble:$d_longdbl" in
9952 define:define)
9953         nvtype="long double"
9954         nvsize=$longdblsize
9955         ;;
9956 *)      nvtype=double
9957         nvsize=$doublesize
9958         ;;
9959 esac
9960
9961 $echo "(IV will be "$ivtype", $ivsize bytes)"
9962 $echo "(UV will be "$uvtype", $uvsize bytes)"
9963 $echo "(NV will be "$nvtype", $nvsize bytes)"
9964
9965 $cat >try.c <<EOCP
9966 #$i_inttypes I_INTTYPES
9967 #ifdef I_INTTYPES
9968 #include <inttypes.h>
9969 #endif
9970 #include <stdio.h>
9971 int main() {
9972 #ifdef INT8
9973    int8_t i =  INT8_MAX;
9974   uint8_t u = UINT8_MAX;
9975   printf("int8_t\n");
9976 #endif
9977 #ifdef INT16
9978    int16_t i =  INT16_MAX;
9979   uint16_t i = UINT16_MAX;
9980   printf("int16_t\n");
9981 #endif
9982 #ifdef INT32
9983    int32_t i =  INT32_MAX;
9984   uint32_t u = UINT32_MAX;
9985   printf("int32_t\n");
9986 #endif
9987 }
9988 EOCP
9989
9990 case "$i8type" in
9991 '')     case "$charsize" in
9992         1)      i8type=char
9993                 u8type="unsigned char"
9994                 i8size=$charsize
9995                 u8size=$charsize
9996                 ;;
9997         esac
9998         ;;
9999 esac
10000 case "$i8type" in
10001 '')     set try -DINT8
10002         if eval $compile; then
10003                 case "`./try$exe_ext`" in
10004                 int8_t) i8type=int8_t
10005                         u8type=uint8_t
10006                         i8size=1
10007                         u8size=1
10008                         ;;
10009                 esac
10010         fi
10011         ;;
10012 esac
10013 case "$i8type" in
10014 '')     if $test $charsize -ge 1; then
10015                 i8type=char
10016                 u8type="unsigned char"
10017                 i8size=$charsize
10018                 u8size=$charsize
10019         fi
10020         ;;
10021 esac
10022
10023 case "$i16type" in
10024 '')     case "$shortsize" in
10025         2)      i16type=short
10026                 u16type="unsigned short"
10027                 i16size=$shortsize
10028                 u16size=$shortsize
10029                 ;;
10030         esac
10031         ;;
10032 esac
10033 case "$i16type" in
10034 '')     set try -DINT16
10035         if eval $compile; then
10036                 case "`./try$exe_ext`" in
10037                 int16_t)
10038                         i16type=int16_t
10039                         u16type=uint16_t
10040                         i16size=2
10041                         u16size=2
10042                         ;;
10043                 esac
10044         fi
10045         ;;
10046 esac
10047 case "$i16type" in
10048 '')     if $test $shortsize -ge 2; then
10049                 i16type=short
10050                 u16type="unsigned short"
10051                 i16size=$shortsize
10052                 u16size=$shortsize
10053         fi
10054         ;;
10055 esac
10056
10057 case "$i32type" in
10058 '')     case "$longsize" in
10059         4)      i32type=long
10060                 u32type="unsigned long"
10061                 i32size=$longsize
10062                 u32size=$longsize
10063                 ;;
10064         *)      case "$intsize" in
10065                 4)      i32type=int
10066                         u32type="unsigned int"
10067                         i32size=$intsize
10068                         u32size=$intsize
10069                         ;;
10070                 esac
10071                 ;;
10072         esac
10073         ;;
10074 esac
10075 case "$i32type" in
10076 '')     set try -DINT32
10077         if eval $compile; then
10078                 case "`./try$exe_ext`" in
10079                 int32_t)
10080                         i32type=int32_t
10081                         u32type=uint32_t
10082                         i32size=4
10083                         u32size=4
10084                         ;;
10085                 esac
10086         fi
10087         ;;
10088 esac
10089 case "$i32type" in
10090 '')     if $test $intsize -ge 4; then
10091                 i32type=int
10092                 u32type="unsigned int"
10093                 i32size=$intsize
10094                 u32size=$intsize
10095         fi
10096         ;;
10097 esac
10098
10099 case "$i64type" in
10100 '')     case "$d_quad:$quadtype" in
10101         define:?*)
10102                 i64type="$quadtype"
10103                 u64type="$uquadtype"
10104                 i64size=8
10105                 u64size=8
10106                 ;;
10107         esac
10108         ;;
10109 esac
10110
10111 $echo "Checking whether your NVs can preserve your UVs..." >&4
10112 $cat <<EOP >try.c
10113 #include <stdio.h>
10114 int main() {
10115     $uvtype k = ($uvtype)~0, l;
10116     $nvtype d;
10117     l = k;
10118     d = ($nvtype)l;
10119     l = ($uvtype)d;
10120     if (l == k)
10121        printf("preserve\n");
10122     exit(0);
10123 }
10124 EOP
10125 set try
10126 if eval $compile; then
10127         case "`./try$exe_ext`" in
10128         preserve) d_nv_preserves_uv="$define" ;;
10129         esac
10130 fi      
10131 case "$d_nv_preserves_uv" in
10132 $define) $echo "Yes, they can."  2>&1 ;;
10133 *)       $echo "No, they can't." 2>&1
10134          d_nv_preserves_uv="$undef"
10135          ;;
10136 esac
10137
10138 $rm -f try.* try
10139
10140
10141 : check for off64_t
10142 echo " "
10143 echo "Checking to see if you have off64_t..." >&4
10144 $cat >try.c <<EOCP
10145 #include <sys/types.h>
10146 #include <unistd.h>
10147 int main() { off64_t x = 7; }
10148 EOCP
10149 set try
10150 if eval $compile; then
10151         val="$define"
10152         echo "You have off64_t."
10153 else
10154         val="$undef"
10155         echo "You do not have off64_t."
10156         case "$lseeksize" in
10157         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10158         esac
10159 fi
10160 $rm -f try.* try
10161 set d_off64_t
10162 eval $setvar
10163
10164 : see if POSIX threads are available
10165 set pthread.h i_pthread
10166 eval $inhdr
10167
10168
10169
10170
10171 : how to create joinable pthreads
10172 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10173         echo " "
10174         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10175         $cat >try.c <<'EOCP'
10176 #include <pthread.h>
10177 int main() {
10178     int detachstate = JOINABLE;
10179 }
10180 EOCP
10181         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10182         if eval $compile; then
10183                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10184                 val="$undef" # Yes, undef.
10185                 set d_old_pthread_create_joinable
10186                 eval $setvar
10187                 val=""
10188                 set old_pthread_create_joinable
10189                 eval $setvar
10190         else
10191                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10192                 if eval $compile; then
10193                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10194                         val="$define"
10195                         set d_old_pthread_create_joinable
10196                         eval $setvar
10197                         val=PTHREAD_CREATE_UNDETACHED
10198                         set old_pthread_create_joinable
10199                         eval $setvar
10200                 else            
10201                         set try -DJOINABLE=__UNDETACHED
10202                         if eval $compile; then
10203                                 echo "You seem to use __UNDETACHED." >&4
10204                                 val="$define"
10205                                 set d_old_pthread_create_joinable
10206                                 eval $setvar
10207                                 val=__UNDETACHED
10208                                 set old_pthread_create_joinable
10209                                 eval $setvar
10210                         else
10211                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10212                                 val="$define"
10213                                 set d_old_pthread_create_joinable
10214                                 eval $setvar
10215                                 val=0
10216                                 set old_pthread_create_joinable
10217                                 eval $setvar
10218                         fi
10219                 fi
10220         fi
10221         $rm -f try try.*
10222 else
10223     d_old_pthread_create_joinable="$undef"
10224     old_pthread_create_joinable=""
10225 fi
10226
10227 : see if pause exists
10228 set pause d_pause
10229 eval $inlibc
10230
10231 : see if pipe exists
10232 set pipe d_pipe
10233 eval $inlibc
10234
10235 : see if poll exists
10236 set poll d_poll
10237 eval $inlibc
10238
10239
10240 : see whether the various POSIXish _yields exist
10241 $cat >try.c <<EOP
10242 #include <pthread.h>
10243 #include <stdio.h>
10244 int main() {
10245 #ifdef SCHED_YIELD
10246         sched_yield();
10247 #else
10248 #ifdef PTHREAD_YIELD
10249         pthread_yield();
10250 #else
10251 #ifdef PTHREAD_YIELD_NULL
10252         pthread_yield(NULL);
10253 #endif
10254 #endif
10255 #endif
10256 }
10257 EOP
10258 : see if sched_yield exists
10259 set try -DSCHED_YIELD
10260 if eval $compile; then
10261     val="$define"
10262     sched_yield='sched_yield()'
10263 else
10264     val="$undef"
10265 fi
10266 case "$usethreads" in
10267 $define)
10268         case "$val" in
10269         $define) echo 'sched_yield() found.' >&4        ;;
10270         *)       echo 'sched_yield() NOT found.' >&4    ;;
10271         esac
10272 esac
10273 set d_sched_yield
10274 eval $setvar
10275
10276 : see if pthread_yield exists
10277 set try -DPTHREAD_YIELD
10278 if eval $compile; then
10279     val="$define"
10280     case "$sched_yield" in
10281     '') sched_yield='pthread_yield()' ;;
10282     esac
10283 else
10284     set try -DPTHREAD_YIELD_NULL
10285     if eval $compile; then
10286         val="$define"
10287         case "$sched_yield" in
10288         '') sched_yield='pthread_yield(NULL)' ;;
10289         esac
10290     else
10291         val="$undef"
10292     fi
10293 fi
10294 case "$usethreads" in
10295 $define)
10296         case "$val" in
10297         $define) echo 'pthread_yield() found.' >&4      ;;
10298         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10299         esac
10300         ;;
10301 esac
10302 set d_pthread_yield
10303 eval $setvar
10304
10305 case "$sched_yield" in
10306 '') sched_yield=undef ;;
10307 esac
10308
10309 $rm -f try try.*
10310
10311 : see if this is a pwd.h system
10312 set pwd.h i_pwd
10313 eval $inhdr
10314
10315 case "$i_pwd" in
10316 $define)
10317         xxx=`./findhdr pwd.h`
10318         $cppstdin $cppflags $cppminus < $xxx >$$.h
10319
10320         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10321                 val="$define"
10322         else
10323                 val="$undef"
10324         fi
10325         set d_pwquota
10326         eval $setvar
10327
10328         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10329                 val="$define"
10330         else
10331                 val="$undef"
10332         fi
10333         set d_pwage
10334         eval $setvar
10335
10336         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10337                 val="$define"
10338         else
10339                 val="$undef"
10340         fi
10341         set d_pwchange
10342         eval $setvar
10343
10344         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10345                 val="$define"
10346         else
10347                 val="$undef"
10348         fi
10349         set d_pwclass
10350         eval $setvar
10351
10352         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10353                 val="$define"
10354         else
10355                 val="$undef"
10356         fi
10357         set d_pwexpire
10358         eval $setvar
10359
10360         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10361                 val="$define"
10362         else
10363                 val="$undef"
10364         fi
10365         set d_pwcomment
10366         eval $setvar
10367
10368         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10369                 val="$define"
10370         else
10371                 val="$undef"
10372         fi
10373         set d_pwgecos
10374         eval $setvar
10375
10376         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10377                 val="$define"
10378         else
10379                 val="$undef"
10380         fi
10381         set d_pwpasswd
10382         eval $setvar
10383
10384         $rm -f $$.h
10385         ;;
10386 *)
10387         val="$undef"; 
10388         set d_pwquota; eval $setvar
10389         set d_pwage; eval $setvar
10390         set d_pwchange; eval $setvar
10391         set d_pwclass; eval $setvar
10392         set d_pwexpire; eval $setvar
10393         set d_pwcomment; eval $setvar
10394         set d_pwgecos; eval $setvar
10395         set d_pwpasswd; eval $setvar
10396         ;;
10397 esac
10398
10399 : see if readdir and friends exist
10400 set readdir d_readdir
10401 eval $inlibc
10402 set seekdir d_seekdir
10403 eval $inlibc
10404 set telldir d_telldir
10405 eval $inlibc
10406 set rewinddir d_rewinddir
10407 eval $inlibc
10408
10409 : see if readlink exists
10410 set readlink d_readlink
10411 eval $inlibc
10412
10413 : see if rename exists
10414 set rename d_rename
10415 eval $inlibc
10416
10417 : see if rmdir exists
10418 set rmdir d_rmdir
10419 eval $inlibc
10420
10421 : see if memory.h is available.
10422 val=''
10423 set memory.h val
10424 eval $inhdr
10425
10426 : See if it conflicts with string.h
10427 case "$val" in
10428 $define)
10429         case "$strings" in
10430         '') ;;
10431         *)
10432                 $cppstdin $cppflags $cppminus < $strings > mem.h
10433                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10434                         echo " "
10435                         echo "We won't be including <memory.h>."
10436                         val="$undef"
10437                 fi
10438                 $rm -f mem.h
10439                 ;;
10440         esac
10441 esac
10442 set i_memory
10443 eval $setvar
10444
10445 : can bcopy handle overlapping blocks?
10446 val="$undef"
10447 case "$d_bcopy" in
10448 "$define")
10449         echo " "
10450         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10451         $cat >try.c <<EOCP
10452 #$i_memory I_MEMORY
10453 #$i_stdlib I_STDLIB
10454 #$i_string I_STRING
10455 #$i_unistd I_UNISTD
10456 EOCP
10457         $cat >>try.c <<'EOCP'
10458 #include <stdio.h>
10459 #ifdef I_MEMORY
10460 #  include <memory.h>
10461 #endif
10462 #ifdef I_STDLIB
10463 #  include <stdlib.h>
10464 #endif
10465 #ifdef I_STRING
10466 #  include <string.h>
10467 #else
10468 #  include <strings.h>
10469 #endif
10470 #ifdef I_UNISTD
10471 #  include <unistd.h>  /* Needed for NetBSD */
10472 #endif
10473 int main()
10474 {
10475 char buf[128], abc[128];
10476 char *b;
10477 int len;
10478 int off;
10479 int align;
10480
10481 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10482
10483 for (align = 7; align >= 0; align--) {
10484         for (len = 36; len; len--) {
10485                 b = buf+align;
10486                 bcopy(abc, b, len);
10487                 for (off = 1; off <= len; off++) {
10488                         bcopy(b, b+off, len);
10489                         bcopy(b+off, b, len);
10490                         if (bcmp(b, abc, len))
10491                                 exit(1);
10492                 }
10493         }
10494 }
10495 exit(0);
10496 }
10497 EOCP
10498         set try
10499         if eval $compile_ok; then
10500                 if ./try 2>/dev/null; then
10501                         echo "Yes, it can."
10502                         val="$define"
10503                 else
10504                         echo "It can't, sorry."
10505                         case "$d_memmove" in
10506                         "$define") echo "But that's Ok since you have memmove()." ;;
10507                         esac
10508                 fi
10509         else
10510                 echo "(I can't compile the test program, so we'll assume not...)"
10511                 case "$d_memmove" in
10512                 "$define") echo "But that's Ok since you have memmove()." ;;
10513                 esac
10514         fi
10515         ;;
10516 esac
10517 $rm -f try.* try core
10518 set d_safebcpy
10519 eval $setvar
10520
10521 : can memcpy handle overlapping blocks?
10522 val="$undef"
10523 case "$d_memcpy" in
10524 "$define")
10525         echo " "
10526         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10527         $cat >try.c <<EOCP
10528 #$i_memory I_MEMORY
10529 #$i_stdlib I_STDLIB
10530 #$i_string I_STRING
10531 #$i_unistd I_UNISTD
10532 EOCP
10533         $cat >>try.c <<'EOCP'
10534 #include <stdio.h>
10535 #ifdef I_MEMORY
10536 #  include <memory.h>
10537 #endif
10538 #ifdef I_STDLIB
10539 #  include <stdlib.h>
10540 #endif
10541 #ifdef I_STRING
10542 #  include <string.h>
10543 #else
10544 #  include <strings.h>
10545 #endif
10546 #ifdef I_UNISTD
10547 #  include <unistd.h>  /* Needed for NetBSD */
10548 #endif
10549 int main()
10550 {
10551 char buf[128], abc[128];
10552 char *b;
10553 int len;
10554 int off;
10555 int align;
10556
10557 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10558    try to store the string in read-only memory. */
10559 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10560
10561 for (align = 7; align >= 0; align--) {
10562         for (len = 36; len; len--) {
10563                 b = buf+align;
10564                 memcpy(b, abc, len);
10565                 for (off = 1; off <= len; off++) {
10566                         memcpy(b+off, b, len);
10567                         memcpy(b, b+off, len);
10568                         if (memcmp(b, abc, len))
10569                                 exit(1);
10570                 }
10571         }
10572 }
10573 exit(0);
10574 }
10575 EOCP
10576         set try
10577         if eval $compile_ok; then
10578                 if ./try 2>/dev/null; then
10579                         echo "Yes, it can."
10580                         val="$define"
10581                 else
10582                         echo "It can't, sorry."
10583                         case "$d_memmove" in
10584                         "$define") echo "But that's Ok since you have memmove()." ;;
10585                         esac
10586                 fi
10587         else
10588                 echo "(I can't compile the test program, so we'll assume not...)"
10589                 case "$d_memmove" in
10590                 "$define") echo "But that's Ok since you have memmove()." ;;
10591                 esac
10592         fi
10593         ;;
10594 esac
10595 $rm -f try.* try core
10596 set d_safemcpy
10597 eval $setvar
10598
10599 : can memcmp be trusted to compare relative magnitude?
10600 val="$undef"
10601 case "$d_memcmp" in
10602 "$define")
10603         echo " "
10604         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10605         $cat >try.c <<EOCP
10606 #$i_memory I_MEMORY
10607 #$i_stdlib I_STDLIB
10608 #$i_string I_STRING
10609 #$i_unistd I_UNISTD
10610 EOCP
10611         $cat >>try.c <<'EOCP'
10612 #include <stdio.h>
10613 #ifdef I_MEMORY
10614 #  include <memory.h>
10615 #endif
10616 #ifdef I_STDLIB
10617 #  include <stdlib.h>
10618 #endif
10619 #ifdef I_STRING
10620 #  include <string.h>
10621 #else
10622 #  include <strings.h>
10623 #endif
10624 #ifdef I_UNISTD
10625 #  include <unistd.h>  /* Needed for NetBSD */
10626 #endif
10627 int main()
10628 {
10629 char a = -1;
10630 char b = 0;
10631 if ((a < b) && memcmp(&a, &b, 1) < 0)
10632         exit(1);
10633 exit(0);
10634 }
10635 EOCP
10636         set try
10637         if eval $compile_ok; then
10638                 if ./try 2>/dev/null; then
10639                         echo "Yes, it can."
10640                         val="$define"
10641                 else
10642                         echo "No, it can't (it uses signed chars)."
10643                 fi
10644         else
10645                 echo "(I can't compile the test program, so we'll assume not...)"
10646         fi
10647         ;;
10648 esac
10649 $rm -f try.* try core
10650 set d_sanemcmp
10651 eval $setvar
10652
10653 : see if select exists
10654 set select d_select
10655 eval $inlibc
10656
10657 : see if semctl exists
10658 set semctl d_semctl
10659 eval $inlibc
10660
10661 : see if semget exists
10662 set semget d_semget
10663 eval $inlibc
10664
10665 : see if semop exists
10666 set semop d_semop
10667 eval $inlibc
10668
10669 : see how much of the 'sem*(2)' library is present.
10670 h_sem=true
10671 echo " "
10672 case "$d_semctl$d_semget$d_semop" in
10673 *"$undef"*) h_sem=false;;
10674 esac
10675 case "$osname" in
10676 freebsd)
10677     case "`ipcs 2>&1`" in
10678     "SVID messages"*"not configured"*)
10679         echo "Your $osname does not have the sem*(2) configured." >&4
10680         h_sem=false
10681         val="$undef"
10682         set semctl d_semctl
10683         eval $setvar
10684         set semget d_semget
10685         eval $setvar
10686         set semop d_semop
10687         eval $setvar
10688         ;;
10689     esac
10690     ;;
10691 esac
10692 : we could also check for sys/ipc.h ...
10693 if $h_sem && $test `./findhdr sys/sem.h`; then
10694         echo "You have the full sem*(2) library." >&4
10695         val="$define"
10696 else
10697         echo "You don't have the full sem*(2) library." >&4
10698         val="$undef"
10699 fi
10700 set d_sem
10701 eval $setvar
10702
10703 : see whether sys/sem.h defines union semun
10704 echo " "
10705 $cat > try.c <<'END'
10706 #include <sys/types.h>
10707 #include <sys/ipc.h>
10708 #include <sys/sem.h>
10709 int main () { union semun semun; semun.buf = 0; }
10710 END
10711 set try
10712 if eval $compile; then
10713     echo "You have union semun in <sys/sem.h>." >&4
10714     val="$define"
10715 else
10716     echo "You do not have union semun in <sys/sem.h>." >&4
10717     val="$undef"
10718 fi
10719 $rm -f try try.c try.h
10720 set d_union_semun
10721 eval $setvar
10722
10723 : see how to do semctl IPC_STAT
10724 case "$d_sem" in
10725 $define)
10726     : see whether semctl IPC_STAT can use union semun
10727     echo " "
10728     $cat > try.h <<END
10729 #ifndef S_IRUSR
10730 #   ifdef S_IREAD
10731 #       define S_IRUSR S_IREAD
10732 #       define S_IWUSR S_IWRITE
10733 #       define S_IXUSR S_IEXEC
10734 #   else
10735 #       define S_IRUSR 0400
10736 #       define S_IWUSR 0200
10737 #       define S_IXUSR 0100
10738 #   endif
10739 #   define S_IRGRP (S_IRUSR>>3)
10740 #   define S_IWGRP (S_IWUSR>>3)
10741 #   define S_IXGRP (S_IXUSR>>3)
10742 #   define S_IROTH (S_IRUSR>>6)
10743 #   define S_IWOTH (S_IWUSR>>6)
10744 #   define S_IXOTH (S_IXUSR>>6)
10745 #endif
10746 #ifndef S_IRWXU
10747 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10748 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10749 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10750 #endif
10751 END
10752
10753     $cat > try.c <<END
10754 #include <sys/types.h>
10755 #include <sys/ipc.h>
10756 #include <sys/sem.h>
10757 #include <sys/stat.h>
10758 #include <stdio.h>
10759 #include <errno.h>
10760 #include "try.h"
10761 #ifndef errno
10762 extern int errno;
10763 #endif
10764 #$d_union_semun HAS_UNION_SEMUN
10765 int main() {
10766     union semun
10767 #ifndef HAS_UNION_SEMUN
10768     {
10769         int val;
10770         struct semid_ds *buf;
10771         unsigned short *array;
10772     }
10773 #endif
10774     arg;
10775     int sem, st;
10776
10777 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10778     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10779     if (sem > -1) {
10780         struct semid_ds argbuf;
10781         arg.buf = &argbuf;
10782 #       ifdef IPC_STAT
10783         st = semctl(sem, 0, IPC_STAT, arg);
10784         if (st == 0)
10785             printf("semun\n");
10786         else
10787 #       endif /* IPC_STAT */
10788             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10789 #       ifdef IPC_RMID
10790         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10791 #       endif /* IPC_RMID */
10792             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10793     } else
10794 #endif /* IPC_PRIVATE && ... */
10795         printf("semget failed: errno = %d\n", errno);
10796   return 0;
10797 }
10798 END
10799     val="$undef"
10800     set try
10801     if eval $compile; then
10802         xxx=`./try`
10803         case "$xxx" in
10804         semun) val="$define" ;;
10805         esac
10806     fi
10807     $rm -f try try.c
10808     set d_semctl_semun
10809     eval $setvar
10810     case "$d_semctl_semun" in
10811     $define)
10812         echo "You can use union semun for semctl IPC_STAT." >&4
10813         also='also'
10814         ;;
10815     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10816         also=''
10817         ;;
10818     esac
10819
10820     : see whether semctl IPC_STAT can use struct semid_ds pointer
10821     $cat > try.c <<'END'
10822 #include <sys/types.h>
10823 #include <sys/ipc.h>
10824 #include <sys/sem.h>
10825 #include <sys/stat.h>
10826 #include "try.h"
10827 #include <stdio.h>
10828 #include <errno.h>
10829 #ifndef errno
10830 extern int errno;
10831 #endif
10832 int main() {
10833     struct semid_ds arg;
10834     int sem, st;
10835
10836 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10837     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10838     if (sem > -1) {
10839 #       ifdef IPC_STAT
10840         st = semctl(sem, 0, IPC_STAT, &arg);
10841         if (st == 0)
10842             printf("semid_ds\n");
10843         else
10844 #       endif /* IPC_STAT */
10845             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10846 #       ifdef IPC_RMID
10847         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10848 #       endif /* IPC_RMID */
10849             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10850     } else
10851 #endif /* IPC_PRIVATE && ... */
10852         printf("semget failed: errno = %d\n", errno);
10853
10854     return 0;
10855 }
10856 END
10857     val="$undef"
10858     set try
10859     if eval $compile; then
10860         xxx=`./try`
10861         case "$xxx" in
10862         semid_ds) val="$define" ;;
10863         esac
10864     fi
10865     $rm -f try try.c
10866     set d_semctl_semid_ds
10867     eval $setvar
10868     case "$d_semctl_semid_ds" in
10869     $define)
10870         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10871         ;;
10872     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10873         ;;
10874     esac
10875     $rm -f try.h
10876     ;;
10877 *)  val="$undef"
10878
10879     # We do not have the full sem*(2) library, so assume we can not
10880     # use either.
10881
10882     set d_semctl_semun
10883     eval $setvar
10884
10885     set d_semctl_semid_ds
10886     eval $setvar
10887     ;;
10888 esac
10889
10890 : see if setegid exists
10891 set setegid d_setegid
10892 eval $inlibc
10893
10894 : see if seteuid exists
10895 set seteuid d_seteuid
10896 eval $inlibc
10897
10898 : see if setgrent exists
10899 set setgrent d_setgrent
10900 eval $inlibc
10901
10902 : see if sethostent exists
10903 set sethostent d_sethent
10904 eval $inlibc
10905
10906 : see if setlinebuf exists
10907 set setlinebuf d_setlinebuf
10908 eval $inlibc
10909
10910 : see if setlocale exists
10911 set setlocale d_setlocale
10912 eval $inlibc
10913
10914 : see if setnetent exists
10915 set setnetent d_setnent
10916 eval $inlibc
10917
10918 : see if setprotoent exists
10919 set setprotoent d_setpent
10920 eval $inlibc
10921
10922 : see if setpgid exists
10923 set setpgid d_setpgid
10924 eval $inlibc
10925
10926 : see if setpgrp2 exists
10927 set setpgrp2 d_setpgrp2
10928 eval $inlibc
10929
10930 : see if setpriority exists
10931 set setpriority d_setprior
10932 eval $inlibc
10933
10934 : see if setpwent exists
10935 set setpwent d_setpwent
10936 eval $inlibc
10937
10938 : see if setregid exists
10939 set setregid d_setregid
10940 eval $inlibc
10941 set setresgid d_setresgid
10942 eval $inlibc
10943
10944 : see if setreuid exists
10945 set setreuid d_setreuid
10946 eval $inlibc
10947 set setresuid d_setresuid
10948 eval $inlibc
10949
10950 : see if setrgid exists
10951 set setrgid d_setrgid
10952 eval $inlibc
10953
10954 : see if setruid exists
10955 set setruid d_setruid
10956 eval $inlibc
10957
10958 : see if setservent exists
10959 set setservent d_setsent
10960 eval $inlibc
10961
10962 : see if setsid exists
10963 set setsid d_setsid
10964 eval $inlibc
10965
10966 : see if setspent exists
10967 set setspent d_setspent
10968 eval $inlibc
10969
10970 : see if setvbuf exists
10971 set setvbuf d_setvbuf
10972 eval $inlibc
10973
10974 : see if sfio.h is available
10975 set sfio.h i_sfio
10976 eval $inhdr
10977
10978
10979 : see if sfio library is available
10980 case "$i_sfio" in
10981 $define)
10982         val=''
10983         set sfreserve val
10984         eval $inlibc
10985         ;;
10986 *)
10987         val="$undef"
10988         ;;
10989 esac
10990 : Ok, but do we want to use it.
10991 case "$val" in
10992 $define)
10993         case "$usesfio" in
10994         true|$define|[yY]*) dflt='y';;
10995         *) dflt='n';;
10996         esac
10997         echo "$package can use the sfio library, but it is experimental."
10998         rp="You seem to have sfio available, do you want to try using it?"
10999         . ./myread
11000         case "$ans" in
11001         y|Y) ;;
11002         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11003                 val="$undef"
11004                 : Remove sfio from list of libraries to use
11005                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11006                 shift
11007                 libs="$*"
11008                 echo "libs = $libs" >&4
11009                 ;;
11010         esac
11011         ;;
11012 *)      case "$usesfio" in
11013         true|$define|[yY]*)
11014                 echo "Sorry, cannot find sfio on this machine" >&4
11015                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11016                 ;;
11017         esac
11018         ;;
11019 esac
11020 set d_sfio
11021 eval $setvar
11022 case "$d_sfio" in
11023 $define) usesfio='true';;
11024 *) usesfio='false';;
11025 esac
11026
11027 : see if shmctl exists
11028 set shmctl d_shmctl
11029 eval $inlibc
11030
11031 : see if shmget exists
11032 set shmget d_shmget
11033 eval $inlibc
11034
11035 : see if shmat exists
11036 set shmat d_shmat
11037 eval $inlibc
11038 : see what shmat returns
11039 case "$d_shmat" in
11040 "$define")
11041         $cat >shmat.c <<'END'
11042 #include <sys/shm.h>
11043 void *shmat();
11044 END
11045         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11046                 shmattype='void *'
11047         else
11048                 shmattype='char *'
11049         fi
11050         echo "and it returns ($shmattype)." >&4
11051         : see if a prototype for shmat is available
11052         xxx=`./findhdr sys/shm.h`
11053         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11054         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11055                 val="$define"
11056         else
11057                 val="$undef"
11058         fi
11059         $rm -f shmat.[co]
11060         ;;
11061 *)
11062         val="$undef"
11063         ;;
11064 esac
11065 set d_shmatprototype
11066 eval $setvar
11067
11068 : see if shmdt exists
11069 set shmdt d_shmdt
11070 eval $inlibc
11071
11072 : see how much of the 'shm*(2)' library is present.
11073 h_shm=true
11074 echo " "
11075 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11076 *"$undef"*) h_shm=false;;
11077 esac
11078 case "$osname" in
11079 freebsd)
11080     case "`ipcs 2>&1`" in
11081     "SVID shared memory"*"not configured"*)
11082         echo "Your $osname does not have the shm*(2) configured." >&4
11083         h_shm=false
11084         val="$undef"
11085         set shmctl d_shmctl
11086         evat $setvar
11087         set shmget d_shmget
11088         evat $setvar
11089         set shmat d_shmat
11090         evat $setvar
11091         set shmdt d_shmdt
11092         evat $setvar
11093         ;;
11094     esac
11095     ;;
11096 esac
11097 : we could also check for sys/ipc.h ...
11098 if $h_shm && $test `./findhdr sys/shm.h`; then
11099         echo "You have the full shm*(2) library." >&4
11100         val="$define"
11101 else
11102         echo "You don't have the full shm*(2) library." >&4
11103         val="$undef"
11104 fi
11105 set d_shm
11106 eval $setvar
11107
11108 echo " "
11109 : see if we have sigaction
11110 if set sigaction val -f d_sigaction; eval $csym; $val; then
11111         echo 'sigaction() found.' >&4
11112         $cat > try.c <<'EOP'
11113 #include <stdio.h>
11114 #include <sys/types.h>
11115 #include <signal.h>
11116 int main()
11117 {
11118     struct sigaction act, oact;
11119     act.sa_flags = 0;
11120     oact.sa_handler = 0;
11121     /* so that act and oact are used */
11122     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11123 }
11124 EOP
11125         set try
11126         if eval $compile_ok; then
11127                 val="$define"
11128         else
11129                 echo "But you don't seem to have a useable struct sigaction." >&4
11130                 val="$undef"
11131         fi
11132 else
11133         echo 'sigaction NOT found.' >&4
11134         val="$undef"
11135 fi
11136 set d_sigaction; eval $setvar
11137 $rm -f try try$_o try.c
11138
11139 : see if sigsetjmp exists
11140 echo " "
11141 case "$d_sigsetjmp" in
11142 '')
11143         $cat >try.c <<'EOP'
11144 #include <setjmp.h>
11145 sigjmp_buf env;
11146 int set = 1;
11147 int main()
11148 {
11149         if (sigsetjmp(env,1))
11150                 exit(set);
11151         set = 0;
11152         siglongjmp(env, 1);
11153         exit(1);
11154 }
11155 EOP
11156         set try
11157         if eval $compile; then
11158                 if ./try >/dev/null 2>&1; then
11159                         echo "POSIX sigsetjmp found." >&4
11160                         val="$define"
11161                 else
11162                         $cat >&4 <<EOM
11163 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11164 I'll ignore them.
11165 EOM
11166                         val="$undef"
11167                 fi
11168         else
11169                 echo "sigsetjmp not found." >&4
11170                 val="$undef"
11171         fi
11172         ;;
11173 *) val="$d_sigsetjmp"
11174         case "$d_sigsetjmp" in
11175         $define) echo "POSIX sigsetjmp found." >&4;;
11176         $undef) echo "sigsetjmp not found." >&4;;
11177         esac
11178         ;;
11179 esac
11180 set d_sigsetjmp
11181 eval $setvar
11182 $rm -f try.c try
11183
11184 : see if sys/stat.h is available
11185 set sys/stat.h i_sysstat
11186 eval $inhdr
11187
11188
11189 : see if stat knows about block sizes
11190 echo " "
11191 echo "Checking to see if your struct stat has st_blocks field..." >&4
11192 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11193 eval $hasfield
11194
11195
11196 : see if this is a sys/vfs.h system
11197 set sys/vfs.h i_sysvfs
11198 eval $inhdr
11199
11200
11201 : see if this is a sys/statfs.h system
11202 set sys/statfs.h i_sysstatfs
11203 eval $inhdr
11204
11205
11206 echo " "
11207 echo "Checking to see if your system supports struct statfs..." >&4
11208 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
11209 eval $hasstruct
11210 case "$d_statfs_s" in
11211 "$define")      echo "Yes, it does."   ;;
11212 *)              echo "No, it doesn't." ;;
11213 esac
11214
11215
11216
11217 : see if struct statfs knows about f_flags
11218 case "$d_statfs_s" in
11219 define) 
11220         echo " "
11221         echo "Checking to see if your struct statfs has f_flags field..." >&4
11222         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
11223         eval $hasfield
11224         ;;
11225 *)      val="$undef"
11226         set d_statfs_f_flags
11227         eval $setvar
11228         ;;
11229 esac
11230 case "$d_statfs_f_flags" in
11231 "$define")      echo "Yes, it does."   ;;
11232 *)              echo "No, it doesn't." ;;
11233 esac
11234
11235 : see if _ptr and _cnt from stdio act std
11236 echo " "
11237 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11238         echo "(Looks like you have stdio.h from Linux.)"
11239         case "$stdio_ptr" in
11240         '') stdio_ptr='((fp)->_IO_read_ptr)'
11241                 ptr_lval=$define
11242                 ;;
11243         *)      ptr_lval=$d_stdio_ptr_lval;;
11244         esac
11245         case "$stdio_cnt" in
11246         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11247                 cnt_lval=$undef
11248                 ;;
11249         *)      cnt_lval=$d_stdio_cnt_lval;;
11250         esac
11251         case "$stdio_base" in
11252         '') stdio_base='((fp)->_IO_read_base)';;
11253         esac
11254         case "$stdio_bufsiz" in
11255         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11256         esac
11257 else
11258         case "$stdio_ptr" in
11259         '') stdio_ptr='((fp)->_ptr)'
11260                 ptr_lval=$define
11261                 ;;
11262         *)      ptr_lval=$d_stdio_ptr_lval;;
11263         esac
11264         case "$stdio_cnt" in
11265         '') stdio_cnt='((fp)->_cnt)'
11266                 cnt_lval=$define
11267                 ;;
11268         *)      cnt_lval=$d_stdio_cnt_lval;;
11269         esac
11270         case "$stdio_base" in
11271         '') stdio_base='((fp)->_base)';;
11272         esac
11273         case "$stdio_bufsiz" in
11274         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11275         esac
11276 fi
11277 : test whether _ptr and _cnt really work
11278 echo "Checking how std your stdio is..." >&4
11279 $cat >try.c <<EOP
11280 #include <stdio.h>
11281 #define FILE_ptr(fp)    $stdio_ptr
11282 #define FILE_cnt(fp)    $stdio_cnt
11283 int main() {
11284         FILE *fp = fopen("try.c", "r");
11285         char c = getc(fp);
11286         if (
11287                 18 <= FILE_cnt(fp) &&
11288                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11289         )
11290                 exit(0);
11291         exit(1);
11292 }
11293 EOP
11294 val="$undef"
11295 set try
11296 if eval $compile; then
11297         if ./try; then
11298                 echo "Your stdio acts pretty std."
11299                 val="$define"
11300         else
11301                 echo "Your stdio isn't very std."
11302         fi
11303 else
11304         echo "Your stdio doesn't appear very std."
11305 fi
11306 $rm -f try.c try
11307 set d_stdstdio
11308 eval $setvar
11309
11310 : Can _ptr be used as an lvalue?
11311 case "$d_stdstdio$ptr_lval" in
11312 $define$define) val=$define ;;
11313 *) val=$undef ;;
11314 esac
11315 set d_stdio_ptr_lval
11316 eval $setvar
11317
11318 : Can _cnt be used as an lvalue?
11319 case "$d_stdstdio$cnt_lval" in
11320 $define$define) val=$define ;;
11321 *) val=$undef ;;
11322 esac
11323 set d_stdio_cnt_lval
11324 eval $setvar
11325
11326 : see if _base is also standard
11327 val="$undef"
11328 case "$d_stdstdio" in
11329 $define)
11330         $cat >try.c <<EOP
11331 #include <stdio.h>
11332 #define FILE_base(fp)   $stdio_base
11333 #define FILE_bufsiz(fp) $stdio_bufsiz
11334 int main() {
11335         FILE *fp = fopen("try.c", "r");
11336         char c = getc(fp);
11337         if (
11338                 19 <= FILE_bufsiz(fp) &&
11339                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11340         )
11341                 exit(0);
11342         exit(1);
11343 }
11344 EOP
11345         set try
11346         if eval $compile; then
11347                 if ./try; then
11348                         echo "And its _base field acts std."
11349                         val="$define"
11350                 else
11351                         echo "But its _base field isn't std."
11352                 fi
11353         else
11354                 echo "However, it seems to be lacking the _base field."
11355         fi
11356         $rm -f try.c try
11357         ;;
11358 esac
11359 set d_stdiobase
11360 eval $setvar
11361
11362 $cat >&4 <<EOM
11363 Checking how to access stdio streams by file descriptor number...
11364 EOM
11365 case "$stdio_stream_array" in
11366 '')     $cat >try.c <<EOCP
11367 #include <stdio.h>
11368 int main() {
11369   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11370     printf("yes\n");
11371 }
11372 EOCP
11373         for s in _iob __iob __sF
11374         do
11375                 set try -DSTDIO_STREAM_ARRAY=$s
11376                 if eval $compile; then
11377                         case "`./try$exe_ext`" in
11378                         yes)    stdio_stream_array=$s; break ;;
11379                         esac
11380                 fi
11381         done
11382         $rm -f try.* try$exe_ext
11383 esac
11384 case "$stdio_stream_array" in
11385 '')     $cat >&4 <<EOM
11386 I can't figure out how to access stdio streams by file descriptor number.
11387 EOM
11388         d_stdio_stream_array="$undef"
11389         ;;
11390 *)      $cat >&4 <<EOM
11391 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11392 EOM
11393         d_stdio_stream_array="$define"
11394         ;;
11395 esac
11396
11397 : see if strcoll exists
11398 set strcoll d_strcoll
11399 eval $inlibc
11400
11401 : check for structure copying
11402 echo " "
11403 echo "Checking to see if your C compiler can copy structs..." >&4
11404 $cat >try.c <<'EOCP'
11405 int main()
11406 {
11407         struct blurfl {
11408                 int dyick;
11409         } foo, bar;
11410
11411         foo = bar;
11412 }
11413 EOCP
11414 if $cc -c try.c >/dev/null 2>&1 ; then
11415         val="$define"
11416         echo "Yup, it can."
11417 else
11418         val="$undef"
11419         echo "Nope, it can't."
11420 fi
11421 set d_strctcpy
11422 eval $setvar
11423 $rm -f try.*
11424
11425 : see if strerror and/or sys_errlist[] exist
11426 echo " "
11427 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11428     if set strerror val -f d_strerror; eval $csym; $val; then
11429                 echo 'strerror() found.' >&4
11430                 d_strerror="$define"
11431                 d_strerrm='strerror(e)'
11432                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11433                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11434                         d_syserrlst="$define"
11435                 else
11436                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11437                         d_syserrlst="$undef"
11438                 fi
11439     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11440                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11441                 echo 'strerror() found in string header.' >&4
11442                 d_strerror="$define"
11443                 d_strerrm='strerror(e)'
11444                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11445                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11446                                 d_syserrlst="$define"
11447                 else
11448                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11449                         d_syserrlst="$undef"
11450                 fi
11451     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11452                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11453                 d_strerror="$undef"
11454                 d_syserrlst="$define"
11455                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11456     else
11457                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11458                 d_strerror="$undef"
11459                 d_syserrlst="$undef"
11460                 d_strerrm='"unknown"'
11461     fi
11462 fi
11463
11464 : see if strtod exists
11465 set strtod d_strtod
11466 eval $inlibc
11467
11468 : see if strtol exists
11469 set strtol d_strtol
11470 eval $inlibc
11471
11472 : see if strtold exists
11473 set strtold d_strtold
11474 eval $inlibc
11475
11476 : see if strtoll exists
11477 set strtoll d_strtoll
11478 eval $inlibc
11479
11480 case "$d_longlong-$d_strtoll" in
11481 "$define-$define")
11482         $cat <<EOM
11483 Checking whether your strtoll() works okay...
11484 EOM
11485         $cat >try.c <<'EOCP'
11486 #include <errno.h>
11487 #ifdef __hpux
11488 #define strtoll __strtoll
11489 #endif
11490 #include <stdio.h>
11491 extern long long int strtoll(char *s, char **, int); 
11492 static int bad = 0;
11493 int check(char *s, long long ell, int een) {
11494         long long gll;
11495         errno = 0;
11496         gll = strtoll(s, 0, 10);
11497         if (!((gll == ell) && (errno == een)))
11498                 bad++;
11499 }
11500 int main() {
11501         check(" 1",                                      1LL, 0);
11502         check(" 0",                                      0LL, 0);
11503         check("-1",                                     -1LL, 0);
11504         check("-9223372036854775808", -9223372036854775808LL, 0);
11505         check("-9223372036854775808", -9223372036854775808LL, 0);
11506         check(" 9223372036854775807",  9223372036854775807LL, 0);
11507         check("-9223372036854775808", -9223372036854775808LL, 0);
11508         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11509         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11510         if (!bad)
11511                 printf("ok\n");
11512 }
11513 EOCP
11514         set try
11515         if eval $compile; then
11516                 case "`./try`" in
11517                 ok) echo "Your strtoll() seems to be working okay." ;;
11518                 *) cat <<EOM >&4
11519 Your strtoll() doesn't seem to be working okay.
11520 EOM
11521                    d_strtoll="$undef"
11522                    ;;
11523                 esac
11524         fi
11525         ;;
11526 esac
11527
11528 : see if strtoul exists
11529 set strtoul d_strtoul
11530 eval $inlibc
11531
11532 : see if strtoull exists
11533 set strtoull d_strtoull
11534 eval $inlibc
11535
11536 case "$d_longlong-$d_strtoull" in
11537 "$define-$define")
11538         $cat <<EOM
11539 Checking whether your strtoull() works okay...
11540 EOM
11541         $cat >try.c <<'EOCP'
11542 #include <errno.h>
11543 #ifdef __hpux
11544 #define strtoull __strtoull
11545 #endif
11546 #include <stdio.h>
11547 extern unsigned long long int strtoull(char *s, char **, int); 
11548 static int bad = 0;
11549 int check(char *s, long long eull, int een) {
11550         long long gull;
11551         errno = 0;
11552         gull = strtoull(s, 0, 10);
11553         if (!((gull == eull) && (errno == een)))
11554                 bad++;
11555 }
11556 int main() {
11557         check(" 1",                                       1LL, 0);
11558         check(" 0",                                       0LL, 0);
11559         check("18446744073709551615", 18446744073709551615ULL, 0);
11560         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11561         if (!bad)
11562                 printf("ok\n");
11563 }
11564 EOCP
11565         set try
11566         if eval $compile; then
11567                 case "`./try`" in
11568                 ok) echo "Your strtoull() seems to be working okay." ;;
11569                 *) cat <<EOM >&4
11570 Your strtoull() doesn't seem to be working okay.
11571 EOM
11572                    d_strtoull="$undef"
11573                    ;;
11574                 esac
11575         fi
11576         ;;
11577 esac
11578
11579 : see if strtouq exists
11580 set strtouq d_strtouq
11581 eval $inlibc
11582
11583 : see if strxfrm exists
11584 set strxfrm d_strxfrm
11585 eval $inlibc
11586
11587 : see if symlink exists
11588 set symlink d_symlink
11589 eval $inlibc
11590
11591 : see if syscall exists
11592 set syscall d_syscall
11593 eval $inlibc
11594
11595 : see if sysconf exists
11596 set sysconf d_sysconf
11597 eval $inlibc
11598
11599 : see if system exists
11600 set system d_system
11601 eval $inlibc
11602
11603 : see if tcgetpgrp exists
11604 set tcgetpgrp d_tcgetpgrp
11605 eval $inlibc
11606
11607 : see if tcsetpgrp exists
11608 set tcsetpgrp d_tcsetpgrp
11609 eval $inlibc
11610
11611 : see if prototype for telldir is available
11612 echo " "
11613 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11614 eval $hasproto
11615
11616 : see if this is a sys/times.h system
11617 set sys/times.h i_systimes
11618 eval $inhdr
11619
11620 : see if times exists
11621 echo " "
11622 if set times val -f d_times; eval $csym; $val; then
11623         echo 'times() found.' >&4
11624         d_times="$define"
11625         inc=''
11626         case "$i_systimes" in
11627         "$define") inc='sys/times.h';;
11628         esac
11629         rp="What is the type returned by times() on this system?"
11630         set clock_t clocktype long stdio.h sys/types.h $inc
11631         eval $typedef_ask
11632 else
11633         echo 'times() NOT found, hope that will do.' >&4
11634         d_times="$undef"
11635         clocktype='int'
11636 fi
11637
11638 : see if truncate exists
11639 set truncate d_truncate
11640 eval $inlibc
11641
11642 : see if tzname[] exists
11643 echo " "
11644 if set tzname val -a d_tzname; eval $csym; $val; then
11645         val="$define"
11646         echo 'tzname[] found.' >&4
11647 else
11648         val="$undef"
11649         echo 'tzname[] NOT found.' >&4
11650 fi
11651 set d_tzname
11652 eval $setvar
11653
11654 : see if umask exists
11655 set umask d_umask
11656 eval $inlibc
11657
11658 : see if ustat exists
11659 set ustat d_ustat
11660 eval $inlibc
11661
11662 : backward compatibility for d_hvfork
11663 if test X$d_hvfork != X; then
11664         d_vfork="$d_hvfork"
11665         d_hvfork=''
11666 fi
11667 : see if there is a vfork
11668 val=''
11669 set vfork val
11670 eval $inlibc
11671
11672 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11673 : perl on Solaris 2.x, and probably elsewhere.
11674 case "$val" in
11675 $define)
11676         echo " "
11677         case "$usevfork" in
11678         false) dflt='n';;
11679         *) dflt='y';;
11680         esac
11681         cat <<'EOM'
11682  
11683 Perl can only use a vfork() that doesn't suffer from strict
11684 restrictions on calling functions or modifying global data in
11685 the child.  For example, glibc-2.1 contains such a vfork()
11686 that is unsuitable.  If your system provides a proper fork()
11687 call, chances are that you do NOT want perl to use vfork().
11688
11689 EOM
11690         rp="Do you still want to use vfork()?"
11691         . ./myread
11692         case "$ans" in
11693         y|Y) ;;
11694         *)
11695                 echo "Ok, we won't use vfork()."
11696                 val="$undef"
11697                 ;;
11698         esac
11699         ;;
11700 esac
11701 set d_vfork
11702 eval $setvar
11703 case "$d_vfork" in
11704 $define) usevfork='true';;
11705 *) usevfork='false';;
11706 esac
11707
11708 : see if this is an sysdir system
11709 set sys/dir.h i_sysdir
11710 eval $inhdr
11711
11712 : see if this is an sysndir system
11713 set sys/ndir.h i_sysndir
11714 eval $inhdr
11715
11716 : see if closedir exists
11717 set closedir d_closedir
11718 eval $inlibc
11719
11720 case "$d_closedir" in
11721 "$define")
11722         echo " "
11723         echo "Checking whether closedir() returns a status..." >&4
11724         cat > closedir.c <<EOM
11725 #$i_dirent I_DIRENT             /**/
11726 #$i_sysdir I_SYS_DIR            /**/
11727 #$i_sysndir I_SYS_NDIR          /**/
11728 #$i_systypes I_SYS_TYPES        /**/
11729
11730 #if defined(I_SYS_TYPES)
11731 #include <sys/types.h>
11732 #endif
11733 #if defined(I_DIRENT)
11734 #include <dirent.h>
11735 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11736 #include <sys/dir.h>
11737 #endif
11738 #else
11739 #ifdef I_SYS_NDIR
11740 #include <sys/ndir.h>
11741 #else
11742 #ifdef I_SYS_DIR
11743 #ifdef hp9000s500
11744 #include <ndir.h>       /* may be wrong in the future */
11745 #else
11746 #include <sys/dir.h>
11747 #endif
11748 #endif
11749 #endif
11750 #endif 
11751 int main() { return closedir(opendir(".")); }
11752 EOM
11753         set closedir
11754         if eval $compile_ok; then
11755                 if ./closedir > /dev/null 2>&1 ; then
11756                         echo "Yes, it does."
11757                         val="$undef"
11758                 else
11759                         echo "No, it doesn't."
11760                         val="$define"
11761                 fi
11762         else
11763                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11764                 val="$define"
11765         fi
11766         ;;
11767 *)
11768         val="$undef";
11769         ;;
11770 esac
11771 set d_void_closedir
11772 eval $setvar
11773 $rm -f closedir*
11774 : check for volatile keyword
11775 echo " "
11776 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11777 $cat >try.c <<'EOCP'
11778 int main()
11779 {
11780         typedef struct _goo_struct goo_struct;
11781         goo_struct * volatile goo = ((goo_struct *)0);
11782         struct _goo_struct {
11783                 long long_int;
11784                 int reg_int;
11785                 char char_var;
11786         };
11787         typedef unsigned short foo_t;
11788         char *volatile foo;
11789         volatile int bar;
11790         volatile foo_t blech;
11791         foo = foo;
11792 }
11793 EOCP
11794 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11795         val="$define"
11796         echo "Yup, it does."
11797 else
11798         val="$undef"
11799         echo "Nope, it doesn't."
11800 fi
11801 set d_volatile
11802 eval $setvar
11803 $rm -f try.*
11804
11805 : see if there is a wait4
11806 set wait4 d_wait4
11807 eval $inlibc
11808
11809 : see if waitpid exists
11810 set waitpid d_waitpid
11811 eval $inlibc
11812
11813 : see if wcstombs exists
11814 set wcstombs d_wcstombs
11815 eval $inlibc
11816
11817 : see if wctomb exists
11818 set wctomb d_wctomb
11819 eval $inlibc
11820
11821 : preserve RCS keywords in files with variable substitution, grrr
11822 Date='$Date'
11823 Id='$Id'
11824 Log='$Log'
11825 RCSfile='$RCSfile'
11826 Revision='$Revision'
11827
11828 case "$crosscompile" in
11829 ''|[nN]*) crosscompile="$undef" ;;
11830 esac
11831
11832 case "$osname" in
11833 next|rhapsody|darwin) multiarch="$define" ;;
11834 esac
11835 case "$multiarch" in
11836 ''|[nN]*) multiarch="$undef" ;;
11837 esac
11838
11839 : check for alignment requirements
11840 echo " "
11841 case "$crosscompile$multiarch" in
11842 *$define*)
11843         $cat <<EOM
11844 You seem to be either cross-compiling or doing a multiarchitecture build,
11845 skipping the memory alignment check.
11846
11847 EOM
11848         case "$alignbytes" in
11849         '') alignbytes=8 ;;
11850         esac
11851         ;;
11852 *)
11853         case "$alignbytes" in
11854         '') echo "Checking alignment constraints..." >&4
11855                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11856                         $cat >try.c <<'EOCP'
11857 typedef long double NV;
11858 EOCP
11859                 else
11860                         $cat >try.c <<'EOCP'
11861 typedef double NV;
11862 EOCP
11863                 fi
11864                 $cat >>try.c <<'EOCP'
11865 #include <stdio.h>
11866 struct foobar {
11867         char foo;
11868         NV bar;
11869 } try_algn;
11870 int main()
11871 {
11872     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11873     return(0);
11874 }
11875 EOCP
11876                 set try
11877                 if eval $compile_ok; then
11878                         dflt=`./try`
11879                 else
11880                         dflt='8'
11881                         echo "(I can't seem to compile the test program...)"
11882                 fi
11883                 ;;
11884         *) dflt="$alignbytes"
11885                 ;;
11886         esac
11887         rp="Doubles must be aligned on a how-many-byte boundary?"
11888         . ./myread
11889         alignbytes="$ans"
11890         $rm -f try.c try
11891         ;;
11892 esac
11893
11894
11895 : set the base revision
11896 baserev=5.0
11897
11898 : check for ordering of bytes in a long
11899 echo " "
11900 case "$crosscompile$multiarch" in
11901 *$define*)
11902         $cat <<EOM
11903 You seem to be either cross-compiling or doing a multiarchitecture build,
11904 skipping the byteorder check.
11905
11906 EOM
11907         byteorder='0xffff'
11908         ;;
11909 *)
11910         case "$byteorder" in
11911         '')
11912                 $cat <<'EOM'
11913 In the following, larger digits indicate more significance.  A big-endian
11914 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11915 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11916 machines may have weird orders like 3412.  A Cray will report 87654321,
11917 an Alpha will report 12345678. If the test program works the default is
11918 probably right.
11919 I'm now running the test program...
11920 EOM
11921                 $cat >try.c <<'EOCP'
11922 #include <stdio.h>
11923 int main()
11924 {
11925         int i;
11926         union {
11927                 unsigned long l;
11928                 char c[sizeof(long)];
11929         } u;
11930
11931         if (sizeof(long) > 4)
11932                 u.l = (0x08070605L << 32) | 0x04030201L;
11933         else
11934                 u.l = 0x04030201L;
11935         for (i = 0; i < sizeof(long); i++)
11936                 printf("%c", u.c[i]+'0');
11937         printf("\n");
11938         exit(0);
11939 }
11940 EOCP
11941                 xxx_prompt=y
11942                 set try
11943                 if eval $compile && ./try > /dev/null; then
11944                         dflt=`./try`
11945                         case "$dflt" in
11946                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11947                                 echo "(The test program ran ok.)"
11948                                 echo "byteorder=$dflt"
11949                                 xxx_prompt=n
11950                         ;;
11951                         ????|????????) echo "(The test program ran ok.)" ;;
11952                         *) echo "(The test program didn't run right for some reason.)" ;;
11953                         esac
11954                 else
11955                         dflt='4321'
11956                         cat <<'EOM'
11957 (I can't seem to compile the test program.  Guessing big-endian...)
11958 EOM
11959                 fi
11960                 case "$xxx_prompt" in
11961                 y)
11962                         rp="What is the order of bytes in a long?"
11963                         . ./myread
11964                         byteorder="$ans"
11965                         ;;
11966                 *)      byteorder=$dflt
11967                         ;;
11968                 esac
11969                 ;;
11970         esac
11971         $rm -f try.c try
11972         ;;
11973 esac
11974
11975
11976 : how do we catenate cpp tokens here?
11977 echo " "
11978 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11979 $cat >cpp_stuff.c <<'EOCP'
11980 #define RCAT(a,b)a/**/b
11981 #define ACAT(a,b)a ## b
11982 RCAT(Rei,ser)
11983 ACAT(Cir,cus)
11984 EOCP
11985 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11986 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11987         echo "Oh!  Smells like ANSI's been here." >&4
11988         echo "We can catify or stringify, separately or together!"
11989         cpp_stuff=42
11990 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11991         echo "Ah, yes!  The good old days!" >&4
11992         echo "However, in the good old days we don't know how to stringify and"
11993         echo "catify at the same time."
11994         cpp_stuff=1
11995 else
11996         $cat >&4 <<EOM
11997 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11998 to have to edit the values of CAT[2-5] in config.h...
11999 EOM
12000         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12001 fi
12002 $rm -f cpp_stuff.*
12003
12004 : see if this is a db.h system
12005 set db.h i_db
12006 eval $inhdr
12007
12008 case "$i_db" in
12009 $define)
12010         : Check db version.
12011         echo " "
12012         echo "Checking Berkeley DB version ..." >&4
12013         $cat >try.c <<EOCP
12014 #$d_const HASCONST
12015 #ifndef HASCONST
12016 #define const
12017 #endif
12018 #include <sys/types.h>
12019 #include <stdio.h>
12020 #include <db.h>
12021 int main()
12022 {
12023 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12024     int Major, Minor, Patch ;
12025     unsigned long Version ;
12026     (void)db_version(&Major, &Minor, &Patch) ;
12027     printf("You have Berkeley DB Version 2 or greater\n");
12028
12029     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12030                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12031     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12032                 Major, Minor, Patch) ;
12033
12034     /* check that db.h & libdb are compatible */
12035     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12036         printf("db.h and libdb are incompatible\n") ;
12037         exit(3);        
12038     }
12039
12040     printf("db.h and libdb are compatible\n") ;
12041
12042     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12043                 + DB_VERSION_PATCH ;
12044
12045     /* needs to be >= 2.3.4 */
12046     if (Version < 2003004) {
12047     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12048         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12049         exit(2);        
12050     }
12051
12052     exit(0);
12053 #else
12054 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12055     printf("You have Berkeley DB Version 1\n");
12056     exit(0);    /* DB version < 2: the coast is clear. */
12057 #else
12058     exit(1);    /* <db.h> not Berkeley DB? */
12059 #endif
12060 #endif
12061 }
12062 EOCP
12063         set try
12064         if eval $compile_ok && ./try; then
12065                 echo 'Looks OK.' >&4
12066         else
12067                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12068                 i_db=$undef
12069                 case " $libs " in
12070                 *"-ldb "*)
12071                         : Remove db from list of libraries to use
12072                         echo "Removing unusable -ldb from library list" >&4
12073                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12074                         shift
12075                         libs="$*"
12076                         echo "libs = $libs" >&4
12077                         ;;
12078                 esac
12079         fi
12080         $rm -f try.*
12081         ;;
12082 esac
12083
12084 case "$i_db" in
12085 define)
12086         : Check the return type needed for hash 
12087         echo " "
12088         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12089         $cat >try.c <<EOCP
12090 #$d_const HASCONST
12091 #ifndef HASCONST
12092 #define const
12093 #endif
12094 #include <sys/types.h>
12095 #include <db.h>
12096
12097 #ifndef DB_VERSION_MAJOR
12098 u_int32_t hash_cb (ptr, size)
12099 const void *ptr;
12100 size_t size;
12101 {
12102 }
12103 HASHINFO info;
12104 int main()
12105 {
12106         info.hash = hash_cb;
12107 }
12108 #endif
12109 EOCP
12110         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12111                 if $contains warning try.out >>/dev/null 2>&1 ; then
12112                         db_hashtype='int'
12113                 else
12114                         db_hashtype='u_int32_t'
12115                 fi
12116         else
12117                 : XXX Maybe we should just give up here.
12118                 db_hashtype=u_int32_t
12119                 $cat try.out >&4
12120                 echo "Help:  I can't seem to compile the db test program." >&4
12121                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12122         fi
12123         $rm -f try.*
12124         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12125         ;;
12126 *)      db_hashtype=u_int32_t
12127         ;;
12128 esac
12129 case "$i_db" in
12130 define)
12131         : Check the return type needed for prefix 
12132         echo " "
12133         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12134         cat >try.c <<EOCP
12135 #$d_const HASCONST
12136 #ifndef HASCONST
12137 #define const
12138 #endif
12139 #include <sys/types.h>
12140 #include <db.h>
12141
12142 #ifndef DB_VERSION_MAJOR
12143 size_t prefix_cb (key1, key2)
12144 const DBT *key1;
12145 const DBT *key2;
12146 {
12147 }
12148 BTREEINFO info;
12149 int main()
12150 {
12151         info.prefix = prefix_cb;
12152 }
12153 #endif
12154 EOCP
12155         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12156                 if $contains warning try.out >>/dev/null 2>&1 ; then
12157                         db_prefixtype='int'
12158                 else
12159                         db_prefixtype='size_t'
12160                 fi
12161         else
12162                 db_prefixtype='size_t'
12163                 : XXX Maybe we should just give up here.
12164                 $cat try.out >&4
12165                 echo "Help:  I can't seem to compile the db test program." >&4
12166                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12167         fi
12168         $rm -f try.*
12169         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12170         ;;
12171 *)      db_prefixtype='size_t'
12172         ;;
12173 esac
12174
12175 : check for void type
12176 echo " "
12177 echo "Checking to see how well your C compiler groks the void type..." >&4
12178 case "$voidflags" in
12179 '')
12180         $cat >try.c <<'EOCP'
12181 #if TRY & 1
12182 void sub() {
12183 #else
12184 sub() {
12185 #endif
12186         extern void moo();      /* function returning void */
12187         void (*goo)();          /* ptr to func returning void */
12188 #if TRY & 8
12189         void *hue;              /* generic ptr */
12190 #endif
12191 #if TRY & 2
12192         void (*foo[10])();
12193 #endif
12194
12195 #if TRY & 4
12196         if(goo == moo) {
12197                 exit(0);
12198         }
12199 #endif
12200         exit(0);
12201 }
12202 int main() { sub(); }
12203 EOCP
12204         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12205                 voidflags=$defvoidused
12206         echo "Good.  It appears to support void to the level $package wants.">&4
12207                 if $contains warning .out >/dev/null 2>&1; then
12208                         echo "However, you might get some warnings that look like this:"
12209                         $cat .out
12210                 fi
12211         else
12212 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12213                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12214                         echo "It supports 1..."
12215                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12216                                 echo "It also supports 2..."
12217                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12218                                         voidflags=7
12219                                         echo "And it supports 4 but not 8 definitely."
12220                                 else
12221                                         echo "It doesn't support 4..."
12222                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12223                                                 voidflags=11
12224                                                 echo "But it supports 8."
12225                                         else
12226                                                 voidflags=3
12227                                                 echo "Neither does it support 8."
12228                                         fi
12229                                 fi
12230                         else
12231                                 echo "It does not support 2..."
12232                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12233                                         voidflags=13
12234                                         echo "But it supports 4 and 8."
12235                                 else
12236                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12237                                                 voidflags=5
12238                                                 echo "And it supports 4 but has not heard about 8."
12239                                         else
12240                                                 echo "However it supports 8 but not 4."
12241                                         fi
12242                                 fi
12243                         fi
12244                 else
12245                         echo "There is no support at all for void."
12246                         voidflags=0
12247                 fi
12248         fi
12249 esac
12250 case "$voidflags" in
12251 "$defvoidused") ;;
12252 *)      $cat >&4 <<'EOM'
12253   Support flag bits are:
12254     1: basic void declarations.
12255     2: arrays of pointers to functions returning void.
12256     4: operations between pointers to and addresses of void functions.
12257     8: generic void pointers.
12258 EOM
12259         dflt="$voidflags";
12260         rp="Your void support flags add up to what?"
12261         . ./myread
12262         voidflags="$ans"
12263         ;;
12264 esac
12265 $rm -f try.* .out
12266
12267
12268 : How can we generate normalized random numbers ?
12269 echo " "
12270 echo "Looking for a random number function..." >&4
12271 case "$randfunc" in
12272 '')
12273         if set drand48 val -f; eval $csym; $val; then
12274                 dflt="drand48"
12275                 echo "Good, found drand48()." >&4
12276         elif set random val -f; eval $csym; $val; then
12277                 dflt="random"
12278                 echo "OK, found random()." >&4
12279         else
12280                 dflt="rand"
12281                 echo "Yick, looks like I have to use rand()." >&4
12282         fi
12283         echo " "
12284         ;;
12285 *)
12286         dflt="$randfunc"
12287         ;;
12288 esac
12289 cont=true
12290
12291 case "$ccflags" in
12292 *-Dmy_rand=*|*-Dmy_srand=*)
12293         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12294         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12295         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12296         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12297         ;;
12298 esac
12299
12300 while $test "$cont"; do
12301         rp="Use which function to generate random numbers?"
12302         . ./myread
12303         if $test "$ans" = "$dflt"; then
12304                 : null
12305         else
12306                 randbits=''
12307         fi
12308         randfunc="$ans"
12309         if set $ans val -f; eval $csym; $val; then
12310                 cont=''
12311         else
12312                 dflt=y
12313                 rp="I cannot find function $ans. Use that name anyway?"
12314                 . ./myread
12315                 dflt=rand
12316                 case "$ans" in
12317                         [yY]*) cont='';;
12318                 esac
12319         fi
12320         case "$cont" in
12321         '')
12322                 case "$randfunc" in
12323                 drand48)
12324                         drand01="drand48()"
12325                         seedfunc="srand48"
12326                         randbits=48
12327                         randseedtype=long
12328                         ;;
12329                 rand|random)
12330                         case "$randbits" in
12331                         '')
12332 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12333                                 $cat >try.c <<EOCP
12334 #$i_unistd I_UNISTD
12335 #$i_stdlib I_STDLIB
12336 #include <stdio.h>
12337 #ifdef I_UNISTD
12338 #  include <unistd.h>
12339 #endif
12340 #ifdef I_STDLIB
12341 #  include <stdlib.h>
12342 #endif
12343 int main()
12344 {
12345         register int i;
12346         register unsigned long tmp;
12347         register unsigned long max = 0L;
12348
12349         for (i = 1000; i; i--) {
12350                 tmp = (unsigned long) $randfunc();
12351                 if (tmp > max) max = tmp;
12352         }
12353         for (i = 0; max; i++)
12354                 max /= 2;
12355         printf("%d\n",i);
12356 }
12357 EOCP
12358                                 set try
12359                                 if eval $compile_ok; then
12360                                         dflt=`try`
12361                                 else
12362                                         dflt='?'
12363                                         echo "(I can't seem to compile the test program...)"
12364                                 fi
12365                                 ;;
12366                         *)
12367                                 dflt="$randbits"
12368                                 ;;
12369                         esac
12370                         rp="How many bits does your $randfunc() function produce?"
12371                         . ./myread
12372                         randbits="$ans"
12373                         $rm -f try.c try
12374                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12375                         seedfunc="s$randfunc"
12376                         randseedtype=unsigned
12377                         ;;
12378                 *)
12379                         dflt="31"
12380                         rp="How many bits does your $randfunc() function produce?"
12381                         . ./myread
12382                         randbits="$ans"
12383                         seedfunc="s$randfunc"
12384                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12385                         if set $seedfunc val -f; eval $csym; $val; then
12386                                 echo "(Using $seedfunc() to seed random generator)"
12387                         else
12388                                 echo "(Warning: no $seedfunc() to seed random generator)"
12389                                 seedfunc=rand
12390                         fi
12391                         randseedtype=unsigned
12392                         ;;
12393                 esac
12394                 ;;
12395         esac
12396 done
12397
12398 echo " "
12399 echo "Determining whether or not we are on an EBCDIC system..." >&4
12400 $cat >tebcdic.c <<'EOM'
12401 int main()
12402 {
12403   if ('M'==0xd4) return 0;
12404   return 1;
12405 }
12406 EOM
12407
12408 val=$undef
12409 set tebcdic
12410 if eval $compile_ok; then
12411         if ./tebcdic; then
12412                 echo "You have EBCDIC." >&4
12413                 val="$define"
12414         else
12415                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12416         fi
12417 else
12418         echo "I'm unable to compile the test program." >&4
12419         echo "I'll assume ASCII or some ISO Latin." >&4
12420 fi
12421 $rm -f tebcdic.c tebcdic
12422 set ebcdic
12423 eval $setvar
12424
12425 echo " "
12426 $cat >&4 <<EOM
12427 Checking how to flush all pending stdio output...
12428 EOM
12429 # I only know how to find the first 32 possibly open files on SunOS.
12430 # See also hints/sunos_4_1.sh and util.c  --AD
12431 case "$osname" in
12432 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12433 esac
12434 $cat >>try.c <<EOCP
12435 #include <stdio.h>
12436 #$i_unistd I_UNISTD
12437 #ifdef I_UNISTD
12438 # include <unistd.h>
12439 #endif
12440 #$d_sysconf HAS_SYSCONF
12441 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12442 #ifdef HAS_STDIO_STREAM_ARRAY
12443 # define STDIO_STREAM_ARRAY $stdio_stream_array
12444 #endif
12445 int main() {
12446   FILE* p = fopen("try.out", "w");
12447 #ifdef TRY_FPUTC
12448   fputc('x', p);
12449 #else
12450 # ifdef TRY_FPRINTF
12451   fprintf(p, "x");
12452 # endif
12453 #endif
12454 #ifdef TRY_FFLUSH_NULL
12455   fflush(NULL);
12456 #endif
12457 #ifdef TRY_FFLUSH_ALL
12458   {
12459     long open_max = -1;
12460 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12461     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12462 # else
12463 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12464     open_max = sysconf(_SC_OPEN_MAX);
12465 #  else
12466 #   ifdef FOPEN_MAX
12467     open_max = FOPEN_MAX;
12468 #   else
12469 #    ifdef OPEN_MAX
12470     open_max = OPEN_MAX;
12471 #    else
12472 #     ifdef _NFILE
12473     open_max = _NFILE;
12474 #     endif
12475 #    endif
12476 #   endif
12477 #  endif
12478 # endif 
12479 # ifdef HAS_STDIO_STREAM_ARRAY
12480     if (open_max > 0) {
12481       long i;
12482       for (i = 0; i < open_max; i++)
12483             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12484                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12485                 STDIO_STREAM_ARRAY[i]._flag)
12486                 fflush(&STDIO_STREAM_ARRAY[i]);
12487     }   
12488   }
12489 # endif
12490 #endif
12491   _exit(42);
12492 }
12493 EOCP
12494 : first we have to find out how _not_ to flush
12495 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12496     output=''
12497     set try -DTRY_FPUTC
12498     if eval $compile; then
12499             $rm -f try.out
12500             ./try$exe_ext 2>/dev/null
12501             if $test ! -s try.out -a "X$?" = X42; then
12502                 output=-DTRY_FPUTC
12503             fi
12504     fi
12505     case "$output" in
12506     '')
12507             set try -DTRY_FPRINTF
12508             $rm -f try.out
12509             if eval $compile; then
12510                     $rm -f try.out
12511                     ./try$exe_ext 2>/dev/null
12512                     if $test ! -s try.out -a "X$?" = X42; then
12513                         output=-DTRY_FPRINTF
12514                     fi
12515             fi
12516         ;;
12517     esac
12518 fi
12519 : check for fflush NULL behaviour
12520 case "$fflushNULL" in
12521 '')     set try -DTRY_FFLUSH_NULL $output
12522         if eval $compile; then
12523                 $rm -f try.out
12524                 ./try$exe_ext 2>/dev/null
12525                 code="$?"
12526                 if $test -s try.out -a "X$code" = X42; then
12527                         fflushNULL="`$cat try.out`"
12528                 else
12529                         if $test "X$code" != X42; then
12530                                 $cat >&4 <<EOM
12531 (If this test failed, don't worry, we'll try another method shortly.)
12532 EOM
12533                         fi
12534                 fi
12535         fi
12536         $rm -f core try.core core.try.*
12537         case "$fflushNULL" in
12538         x)      $cat >&4 <<EOM
12539 Your fflush(NULL) works okay for output streams.
12540 Let's see if it clobbers input pipes...
12541 EOM
12542 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12543 # bug that improperly flushes the input end of pipes.  So we avoid the
12544 # autoflush on fork/system/exec support for now. :-(
12545 $cat >tryp.c <<EOCP
12546 #include <stdio.h>
12547 int
12548 main(int argc, char **argv)
12549 {
12550     char buf[1024];
12551     int i;
12552     char *bp = buf;
12553     while (1) {
12554         while ((i = getc(stdin)) != -1
12555                && (*bp++ = i) != '\n'
12556                && bp < &buf[1024])
12557         /* DO NOTHING */ ;
12558         *bp = '\0';
12559         fprintf(stdout, "%s", buf);
12560         fflush(NULL);
12561         if (i == -1)
12562             return 0;
12563         bp = buf;
12564     }
12565 }
12566 EOCP
12567                 fflushNULL="$define"
12568                 set tryp
12569                 if eval $compile; then
12570                     $rm -f tryp.out
12571                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12572                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12573                        $cat >&4 <<EOM
12574 fflush(NULL) seems to behave okay with input streams.
12575 EOM
12576                         fflushNULL="$define"
12577                     else
12578                         $cat >&4 <<EOM
12579 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12580 EOM
12581                         fflushNULL="$undef"
12582                     fi
12583                 fi
12584                 $rm -f core tryp.c tryp.core core.tryp.*
12585                 ;;
12586         '')     $cat >&4 <<EOM
12587 Your fflush(NULL) isn't working (contrary to ANSI C).
12588 EOM
12589                 fflushNULL="$undef"
12590                 ;;
12591         *)      $cat >&4 <<EOM
12592 Cannot figure out whether your fflush(NULL) works or not.
12593 I'm assuming it doesn't (contrary to ANSI C).
12594 EOM
12595                 fflushNULL="$undef"
12596                 ;;
12597         esac
12598         ;;
12599 $define|true|[yY]*)
12600         fflushNULL="$define"
12601         ;;
12602 *)
12603         fflushNULL="$undef"
12604         ;;
12605 esac
12606 : check explicit looping only if NULL did not work, and if the pipe
12607 : bug does not show up on an explicit flush too
12608 case "$fflushNULL" in
12609 "$undef")
12610         $cat >tryp.c <<EOCP
12611 #include <stdio.h>
12612 int
12613 main(int argc, char **argv)
12614 {
12615     char buf[1024];
12616     int i;
12617     char *bp = buf;
12618     while (1) {
12619         while ((i = getc(stdin)) != -1
12620                && (*bp++ = i) != '\n'
12621                && bp < &buf[1024])
12622         /* DO NOTHING */ ;
12623         *bp = '\0';
12624         fprintf(stdout, "%s", buf);
12625         fflush(stdin);
12626         if (i == -1)
12627             return 0;
12628         bp = buf;
12629     }
12630 }
12631 EOCP
12632         set tryp
12633         if eval $compile; then
12634             $rm -f tryp.out
12635             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12636             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12637                $cat >&4 <<EOM
12638 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12639 EOM
12640                 : now check for fflushall behaviour
12641                 case "$fflushall" in
12642                 '')     set try -DTRY_FFLUSH_ALL $output
12643                         if eval $compile; then
12644                                 $cat >&4 <<EOM
12645 (Now testing the other method--but note that this also may fail.)
12646 EOM
12647                                 $rm -f try.out
12648                                 ./try$exe_ext 2>/dev/null
12649                                 if $test -s try.out -a "X$?" = X42; then
12650                                         fflushall="`$cat try.out`"
12651                                 fi
12652                         fi
12653                         $rm -f core try.core core.try.*
12654                         case "$fflushall" in
12655                         x)      $cat >&4 <<EOM
12656 Whew. Flushing explicitly all the stdio streams works.
12657 EOM
12658                                 fflushall="$define"
12659                                 ;;
12660                         '')     $cat >&4 <<EOM
12661 Sigh. Flushing explicitly all the stdio streams doesn't work.
12662 EOM
12663                                 fflushall="$undef"
12664                                 ;;
12665                         *)      $cat >&4 <<EOM
12666 Cannot figure out whether flushing stdio streams explicitly works or not.
12667 I'm assuming it doesn't.
12668 EOM
12669                                 fflushall="$undef"
12670                                 ;;
12671                         esac
12672                         ;;
12673                 "$define"|true|[yY]*)
12674                         fflushall="$define"
12675                         ;;
12676                 *)
12677                         fflushall="$undef"
12678                         ;;
12679                 esac
12680             else
12681                 $cat >&4 <<EOM
12682 All is futile.  Even fflush(stdin) clobbers input pipes!
12683 EOM
12684                 fflushall="$undef"
12685             fi
12686         else
12687             fflushall="$undef"
12688         fi
12689         $rm -f core tryp.c tryp.core core.tryp.*
12690         ;;
12691 *)      fflushall="$undef"
12692         ;;
12693 esac
12694
12695 case "$fflushNULL$fflushall" in
12696 undefundef)
12697         $cat <<EOM
12698 OK, I give up.  I cannot figure out how to flush pending stdio output.
12699 We won't be flushing handles at all before fork/exec/popen.
12700 EOM
12701         ;;
12702 esac
12703 $rm -f try.* try$exe_ext
12704
12705 : Store the full pathname to the ar program for use in the C program
12706 : Respect a hint or command line value for full_ar.
12707 case "$full_ar" in
12708 '') full_ar=$ar ;;
12709 esac
12710
12711 : Store the full pathname to the sed program for use in the C program
12712 full_sed=$sed
12713
12714 : see what type gids are declared as in the kernel
12715 echo " "
12716 echo "Looking for the type for group ids returned by getgid()."
12717 set gid_t gidtype xxx stdio.h sys/types.h
12718 eval $typedef
12719 case "$gidtype" in
12720 xxx)
12721         xxx=`./findhdr sys/user.h`
12722         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12723         case $1 in
12724         unsigned) dflt="$1 $2" ;;
12725         *) dflt="$1" ;;
12726         esac
12727         ;;
12728 *) dflt="$gidtype";;
12729 esac
12730 case "$gidtype" in
12731 gid_t) echo "gid_t found." ;;
12732 *)      rp="What is the type for group ids returned by getgid()?"
12733         . ./myread
12734         gidtype="$ans"
12735         ;;
12736 esac
12737
12738 echo " "
12739 case "$gidtype" in
12740 *_t) zzz="$gidtype"     ;;
12741 *)   zzz="gid"          ;;
12742 esac
12743 echo "Checking the size of $zzz..." >&4 
12744 cat > try.c <<EOCP
12745 #include <sys/types.h>
12746 #include <stdio.h>
12747 int main() {
12748     printf("%d\n", (int)sizeof($gidtype));
12749     exit(0);
12750 }
12751 EOCP
12752 set try
12753 if eval $compile_ok; then
12754         yyy=`./try`
12755         case "$yyy" in
12756         '')     gidsize=4
12757                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12758                 ;;
12759         *)      gidsize=$yyy
12760                 echo "Your $zzz is $gidsize bytes long."
12761                 ;;
12762         esac
12763 else
12764         gidsize=4
12765         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12766 fi
12767
12768
12769 echo " "
12770 case "$gidtype" in
12771 *_t) zzz="$gidtype"     ;;
12772 *)   zzz="gid"          ;;
12773 esac
12774 echo "Checking the sign of $zzz..." >&4 
12775 cat > try.c <<EOCP
12776 #include <sys/types.h>
12777 #include <stdio.h>
12778 int main() {
12779         $gidtype foo = -1;
12780         if (foo < 0)
12781                 printf("-1\n");
12782         else
12783                 printf("1\n");
12784 }
12785 EOCP
12786 set try
12787 if eval $compile; then
12788         yyy=`./try`
12789         case "$yyy" in
12790         '')     gidsign=1
12791                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12792                 ;;
12793         *)      gidsign=$yyy
12794                 case "$gidsign" in
12795                  1) echo "Your $zzz is unsigned." ;;
12796                 -1) echo "Your $zzz is signed."   ;;
12797                 esac
12798                 ;;
12799         esac
12800 else
12801         gidsign=1
12802         echo "(I can't compile the test program--guessing unsigned.)" >&4
12803 fi
12804
12805
12806 echo " "
12807
12808 if $test X"$quadtype" != X; then
12809
12810 echo "Checking how to print 64-bit integers..." >&4
12811
12812 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12813         $cat >try.c <<'EOCP'
12814 #include <sys/types.h>
12815 #include <stdio.h>
12816 int main() {
12817   int q = 12345678901;
12818   printf("%ld\n", q);
12819 }
12820 EOCP
12821         set try
12822         if eval $compile; then
12823                 yyy=`./try$exe_ext`
12824                 case "$yyy" in
12825                 12345678901)
12826                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12827                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12828                         echo "We will use %d."
12829                         ;;
12830                 esac
12831         fi
12832 fi
12833
12834 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12835         $cat >try.c <<'EOCP'
12836 #include <sys/types.h>
12837 #include <stdio.h>
12838 int main() {
12839   long q = 12345678901;
12840   printf("%ld\n", q);
12841 }
12842 EOCP
12843         set try
12844         if eval $compile; then
12845                 yyy=`./try$exe_ext`
12846                 case "$yyy" in
12847                 12345678901)
12848                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12849                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12850                         echo "We will use %ld."
12851                         ;;
12852                 esac
12853         fi
12854 fi
12855
12856 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12857         $cat >try.c <<'EOCP'
12858 #include <sys/types.h>
12859 #include <inttypes.h>
12860 #include <stdio.h>
12861 int main() {
12862   int64_t q = 12345678901;
12863   printf("%" PRId64 "\n", q);
12864 }
12865 EOCP
12866         set try
12867         if eval $compile; then
12868                 yyy=`./try$exe_ext`
12869                 case "$yyy" in
12870                 12345678901)
12871                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12872                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12873                         echo "We will use the C9X style."
12874                         ;;
12875                 esac
12876         fi
12877 fi
12878
12879 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12880         $cat >try.c <<'EOCP'
12881 #include <sys/types.h>
12882 #include <stdio.h>
12883 int main() {
12884   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12885   printf("%lld\n", q);
12886 }
12887 EOCP
12888         set try
12889         if eval $compile; then
12890                 yyy=`./try$exe_ext`
12891                 case "$yyy" in
12892                 12345678901)
12893                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12894                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12895                         echo "We will use the %lld style."
12896                         ;;
12897                 esac
12898         fi
12899 fi
12900
12901 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12902         $cat >try.c <<EOCP
12903 #include <sys/types.h>
12904 #include <stdio.h>
12905 int main() {
12906   $quadtype q = 12345678901;
12907   printf("%Ld\n", q);
12908 }
12909 EOCP
12910         set try
12911         if eval $compile; then
12912                 yyy=`./try$exe_ext`
12913                 case "$yyy" in
12914                 12345678901)
12915                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12916                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12917                         echo "We will use %Ld."
12918                         ;;
12919                 esac
12920         fi
12921 fi
12922
12923 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12924         $cat >try.c <<EOCP
12925 #include <sys/types.h>
12926 #include <stdio.h>
12927 int main() {
12928   $quadtype q = 12345678901;
12929   printf("%qd\n", q);
12930 }
12931 EOCP
12932         set try
12933         if eval $compile; then
12934                 yyy=`./try$exe_ext`
12935                 case "$yyy" in
12936                 12345678901)
12937                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12938                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12939                         echo "We will use %qd."
12940                         ;;
12941                 esac
12942         fi
12943 fi
12944
12945 if $test X"$sPRId64" = X; then
12946         echo "Cannot figure out how to print 64-bit integers." >&4
12947 fi
12948
12949 $rm -f try try.*
12950
12951 fi
12952
12953 case "$sPRId64" in
12954 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12955         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12956         ;;
12957 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12958         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12959         ;;
12960 esac
12961
12962
12963 echo " "
12964 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12965
12966 if $test X"$ivsize" = X8; then
12967         ivdformat="$sPRId64"
12968         uvuformat="$sPRIu64"
12969         uvoformat="$sPRIo64"
12970         uvxformat="$sPRIx64"
12971 else
12972         if $test X"$ivsize" = X"$longsize"; then
12973                 ivdformat='"ld"'
12974                 uvuformat='"lu"'
12975                 uvoformat='"lo"'
12976                 uvxformat='"lx"'
12977         else
12978                 if $test X"$ivsize" = X"$intsize"; then
12979                         ivdformat='"d"'
12980                         uvuformat='"u"'
12981                         uvoformat='"o"'
12982                         uvxformat='"x"'
12983                 else
12984                         : far out
12985                         if $test X"$ivsize" = X"$shortsize"; then
12986                                 ivdformat='"hd"'
12987                                 uvuformat='"hu"'
12988                                 uvoformat='"ho"'
12989                                 uvxformat='"hx"'
12990                         fi
12991                 fi
12992         fi
12993 fi
12994
12995 case "$ivdformat" in
12996 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12997     exit 1
12998     ;;
12999 esac
13000
13001
13002 echo " "
13003 $echo "Checking the format string to be used for gids..." >&4
13004
13005 case "$gidsign" in
13006 -1)     if $test X"$gidsize" = X"$ivsize"; then
13007                 gidformat="$ivdformat"
13008         else
13009                 if $test X"$gidsize" = X"$longsize"; then
13010                         gidformat='"ld"'
13011                 else
13012                         if $test X"$gidsize" = X"$intsize"; then
13013                                 gidformat='"d"'
13014                         else
13015                                 if $test X"$gidsize" = X"$shortsize"; then
13016                                         gidformat='"hd"'
13017                                 fi
13018                         fi
13019                 fi
13020         fi
13021         ;;
13022 *)      if $test X"$gidsize" = X"$uvsize"; then
13023                 gidformat="$uvuformat"
13024         else
13025                 if $test X"$gidsize" = X"$longsize"; then
13026                         gidformat='"lu"'
13027                 else
13028                         if $test X"$gidsize" = X"$intsize"; then
13029                                 gidformat='"u"'
13030                         else
13031                                 if $test X"$gidsize" = X"$shortsize"; then
13032                                         gidformat='"hu"'
13033                                 fi
13034                         fi
13035                 fi
13036         fi
13037         ;;
13038 esac
13039
13040 : see if getgroups exists
13041 set getgroups d_getgrps
13042 eval $inlibc
13043
13044 : see if setgroups exists
13045 set setgroups d_setgrps
13046 eval $inlibc
13047
13048
13049 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13050 echo " "
13051 case "$d_getgrps$d_setgrps" in
13052 *define*)
13053         case "$groupstype" in
13054         '') dflt="$gidtype" ;;
13055         *)  dflt="$groupstype" ;;
13056         esac
13057         $cat <<EOM
13058 What type of pointer is the second argument to getgroups() and setgroups()?
13059 Usually this is the same as group ids, $gidtype, but not always.
13060
13061 EOM
13062         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13063         . ./myread
13064         groupstype="$ans"
13065         ;;
13066 *)  groupstype="$gidtype";;
13067 esac
13068
13069 echo " "
13070 echo "Checking if your $make program sets \$(MAKE)..." >&4
13071 case "$make_set_make" in
13072 '')
13073         $sed 's/^X //' > testmake.mak << 'EOF'
13074 Xall:
13075 X       @echo 'maketemp="$(MAKE)"'
13076 EOF
13077         case "`$make -f testmake.mak 2>/dev/null`" in
13078         *maketemp=*) make_set_make='#' ;;
13079         *)      make_set_make="MAKE=$make" ;;
13080         esac
13081         $rm -f testmake.mak
13082         ;;
13083 esac
13084 case "$make_set_make" in
13085 '#') echo "Yup, it does.";;
13086 *) echo "Nope, it doesn't.";;
13087 esac
13088
13089 : see what type is used for mode_t
13090 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13091 set mode_t modetype int stdio.h sys/types.h
13092 eval $typedef_ask
13093
13094 : define a fucntion to check prototypes
13095 $cat > protochk <<EOSH
13096 $startsh
13097 cc="$cc"
13098 optimize="$optimize"
13099 ccflags="$ccflags"
13100 prototype="$prototype"
13101 define="$define"
13102 rm=$rm
13103 EOSH
13104
13105 $cat >> protochk <<'EOSH'
13106
13107 $rm -f try.c
13108 foo="$1"
13109 shift
13110 while test $# -ge 2; do
13111         case "$1" in
13112                 $define) echo "#include <$2>" >> try.c ;;
13113                 literal) echo "$2" >> try.c ;;
13114         esac
13115     shift 2
13116 done
13117 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13118 cat >> try.c <<'EOCP'
13119 #ifdef CAN_PROTOTYPE
13120 #define _(args) args
13121 #else
13122 #define _(args) ()
13123 #endif
13124 EOCP
13125 echo "$foo" >> try.c
13126 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13127 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13128 status=$?
13129 $rm -f try.[co]
13130 exit $status
13131 EOSH
13132 chmod +x protochk
13133 $eunicefix protochk
13134
13135 : see what type is used for size_t
13136 rp="What is the type used for the length parameter for string functions?"
13137 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13138 eval $typedef_ask
13139
13140 : check for type of arguments to gethostbyaddr. 
13141 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13142         case "$d_gethbyaddr" in
13143         $define)
13144                 $cat <<EOM
13145
13146 Checking to see what type of arguments are accepted by gethostbyaddr().
13147 EOM
13148                 hdrs="$define sys/types.h
13149                         $d_socket sys/socket.h 
13150                         $i_niin netinet/in.h 
13151                         $i_netdb netdb.h
13152                         $i_unistd unistd.h"
13153                 : The first arg can 'char *' or 'void *'
13154                 : The second arg is some of integral type
13155                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13156                         for yyy in size_t long int; do
13157                                 case "$netdb_host_type" in
13158                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13159                                         if ./protochk "$try" $hdrs; then
13160                                                 echo "Your system accepts $xxx for the first arg."
13161                                                 echo "...and $yyy for the second arg."
13162                                                 netdb_host_type="$xxx"
13163                                                 netdb_hlen_type="$yyy"
13164                                         fi
13165                                         ;;
13166                                 esac
13167                         done
13168                 done
13169                 : In case none of those worked, prompt the user.
13170                 case "$netdb_host_type" in
13171                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13172                         dflt='char *'
13173                         . ./myread
13174                         netdb_host_type=$ans
13175                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13176                         dflt="$sizetype"
13177                         . ./myread
13178                         netdb_hlen_type=$ans
13179                         ;;
13180                 esac
13181                 ;;
13182         *)      : no gethostbyaddr, so pick harmless defaults
13183                 netdb_host_type='char *'
13184                 netdb_hlen_type="$sizetype"
13185                 ;;
13186         esac
13187         # Remove the "const" if needed. -- but then we'll have a 
13188         # prototype clash!
13189         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13190 fi
13191
13192 : check for type of argument to gethostbyname. 
13193 if test "X$netdb_name_type" = X ; then
13194         case "$d_gethbyname" in
13195         $define)
13196                 $cat <<EOM
13197
13198 Checking to see what type of argument is accepted by gethostbyname().
13199 EOM
13200                 hdrs="$define sys/types.h
13201                         $d_socket sys/socket.h 
13202                         $i_niin netinet/in.h 
13203                         $i_netdb netdb.h
13204                         $i_unistd unistd.h"
13205                 for xxx in "const char *" "char *"; do
13206                         case "$netdb_name_type" in
13207                         '')     try="extern struct hostent *gethostbyname($xxx);"
13208                                 if ./protochk "$try" $hdrs; then
13209                                         echo "Your system accepts $xxx."
13210                                         netdb_name_type="$xxx"
13211                                 fi
13212                                 ;;
13213                         esac
13214                 done
13215                 : In case none of those worked, prompt the user.
13216                 case "$netdb_name_type" in
13217                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13218                         dflt='char *'
13219                         . ./myread
13220                         netdb_name_type=$ans
13221                         ;;
13222                 esac
13223                 ;;
13224         *)      : no gethostbyname, so pick harmless default
13225                 netdb_name_type='char *'
13226                 ;;
13227         esac
13228 fi
13229
13230 : check for type of 1st argument to getnetbyaddr. 
13231 if test "X$netdb_net_type" = X ; then
13232         case "$d_getnbyaddr" in
13233         $define)
13234                 $cat <<EOM
13235
13236 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13237 EOM
13238                 hdrs="$define sys/types.h
13239                         $d_socket sys/socket.h 
13240                         $i_niin netinet/in.h 
13241                         $i_netdb netdb.h
13242                         $i_unistd unistd.h"
13243                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13244                         case "$netdb_net_type" in
13245                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13246                                 if ./protochk "$try" $hdrs; then
13247                                         echo "Your system accepts $xxx."
13248                                         netdb_net_type="$xxx"
13249                                 fi
13250                                 ;;
13251                         esac
13252                 done
13253                 : In case none of those worked, prompt the user.
13254                 case "$netdb_net_type" in
13255                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13256                         dflt='long'
13257                         . ./myread
13258                         netdb_net_type=$ans
13259                         ;;
13260                 esac
13261                 ;;
13262         *)      : no getnetbyaddr, so pick harmless default
13263                 netdb_net_type='long'
13264                 ;;
13265         esac
13266 fi
13267 : locate the preferred pager for this system
13268 case "$pager" in
13269 '')
13270         dflt=''
13271         case "$pg" in
13272         /*) dflt=$pg;;
13273         esac
13274         case "$more" in
13275         /*) dflt=$more;;
13276         esac
13277         case "$less" in
13278         /*) dflt=$less;;
13279         esac
13280         case "$dflt" in
13281         '') dflt=/usr/ucb/more;;
13282         esac
13283         ;;
13284 *) dflt="$pager";;
13285 esac
13286 echo " "
13287 fn=f/
13288 rp='What pager is used on your system?'
13289 . ./getfile
13290 pager="$ans"
13291
13292 : see what type pids are declared as in the kernel
13293 rp="What is the type of process ids on this system?"
13294 set pid_t pidtype int stdio.h sys/types.h
13295 eval $typedef_ask
13296
13297 : Find earliest binary compatible site_perl subdirectory perl can use.
13298 case "$bincompat5005" in
13299 "$define") xs_apiversion='5.005' ;;
13300 *) xs_apiversion=$version ;;   # The current site_perl version.
13301 esac
13302 : Find earliest pure perl site_perl subdirectory perl can use.
13303 : The versioned directories started at 5.005.
13304 pm_apiversion='5.005'
13305
13306 : check for length of pointer
13307 echo " "
13308 case "$ptrsize" in
13309 '')
13310         echo "Checking to see how big your pointers are..." >&4
13311         if test "$voidflags" -gt 7; then
13312                 echo '#define VOID_PTR char *' > try.c
13313         else
13314                 echo '#define VOID_PTR void *' > try.c
13315         fi
13316         $cat >>try.c <<'EOCP'
13317 #include <stdio.h>
13318 int main()
13319 {
13320     printf("%d\n", (int)sizeof(VOID_PTR));
13321     exit(0);
13322 }
13323 EOCP
13324         set try
13325         if eval $compile_ok; then
13326                 ptrsize=`./try`
13327                 echo "Your pointers are $ptrsize bytes long."
13328         else
13329                 dflt='4'
13330                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13331                 rp="What is the size of a pointer (in bytes)?"
13332                 . ./myread
13333                 ptrsize="$ans"
13334         fi
13335         ;;
13336 esac
13337 $rm -f try.c try
13338
13339 : see if ar generates random libraries by itself
13340 echo " "
13341 echo "Checking how to generate random libraries on your machine..." >&4
13342 echo 'int bar1() { return bar2(); }' > bar1.c
13343 echo 'int bar2() { return 2; }' > bar2.c
13344 $cat > foo.c <<'EOP'
13345 int main() { printf("%d\n", bar1()); exit(0); }
13346 EOP
13347 $cc $ccflags -c bar1.c >/dev/null 2>&1
13348 $cc $ccflags -c bar2.c >/dev/null 2>&1
13349 $cc $ccflags -c foo.c >/dev/null 2>&1
13350 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13351 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13352         ./foobar >/dev/null 2>&1; then
13353         echo "$ar appears to generate random libraries itself."
13354         orderlib=false
13355         ranlib=":"
13356 elif $ar ts bar$_a >/dev/null 2>&1 &&
13357         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13358         ./foobar >/dev/null 2>&1; then
13359                 echo "a table of contents needs to be added with '$ar ts'."
13360                 orderlib=false
13361                 ranlib="$ar ts"
13362 else
13363         case "$ranlib" in
13364         :) ranlib='';;
13365         '')
13366                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13367                 $test -f $ranlib || ranlib=''
13368                 ;;
13369         esac
13370         if $test -n "$ranlib"; then
13371                 echo "your system has '$ranlib'; we'll use that."
13372                 orderlib=false
13373         else
13374                 echo "your system doesn't seem to support random libraries"
13375                 echo "so we'll use lorder and tsort to order the libraries."
13376                 orderlib=true
13377                 ranlib=":"
13378         fi
13379 fi
13380 $rm -f foo* bar* 
13381
13382 : check for type of arguments to select. 
13383 case "$selecttype" in
13384 '') case "$d_select" in
13385         $define)
13386                 echo " "
13387                 $cat <<EOM
13388 Checking to see what type of arguments are accepted by select().
13389 EOM
13390                 hdrs="$define sys/types.h
13391                         $i_systime sys/time.h 
13392                         $i_sysselct sys/select.h
13393                         $d_socket sys/socket.h"
13394                 : The first arg can be int, unsigned, or size_t
13395                 : The last arg may or may not be 'const'
13396                 val=''
13397                 : void pointer has been seen but using that
13398                 : breaks the selectminbits test
13399                 for xxx in 'fd_set *' 'int *'; do
13400                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13401                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13402                                         case "$val" in
13403                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13404                                                 if ./protochk "$try" $hdrs; then
13405                                                         echo "Your system accepts $xxx."
13406                                                         val="$xxx"
13407                                                 fi
13408                                                 ;;
13409                                         esac
13410                                 done
13411                         done
13412                 done
13413                 case "$val" in
13414                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13415                         case "$d_fd_set" in
13416                                 $define) dflt="fd_set *" ;;
13417                                 *)              dflt="int *" ;;
13418                         esac
13419                         . ./myread
13420                         val=$ans
13421                         ;;
13422                 esac
13423                 selecttype="$val"
13424                 ;;
13425         *)      : no select, so pick a harmless default
13426                 selecttype='int *'
13427                 ;;
13428         esac
13429         ;;
13430 esac
13431
13432 : check for the select 'width'
13433 case "$selectminbits" in
13434 '') case "$d_select" in
13435         $define)
13436                 $cat <<EOM
13437
13438 Checking to see on how many bits at a time your select() operates...
13439 EOM
13440                 $cat >try.c <<EOCP
13441 #include <sys/types.h>
13442 #$i_time I_TIME
13443 #$i_systime I_SYS_TIME
13444 #$i_systimek I_SYS_TIME_KERNEL
13445 #ifdef I_TIME
13446 #   include <time.h>
13447 #endif
13448 #ifdef I_SYS_TIME
13449 #   ifdef I_SYS_TIME_KERNEL
13450 #       define KERNEL
13451 #   endif
13452 #   include <sys/time.h>
13453 #   ifdef I_SYS_TIME_KERNEL
13454 #       undef KERNEL
13455 #   endif
13456 #endif
13457 #$i_sysselct I_SYS_SELECT
13458 #ifdef I_SYS_SELECT
13459 #include <sys/select.h>
13460 #endif
13461 #$d_socket HAS_SOCKET
13462 #ifdef HAS_SOCKET
13463 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13464 #endif
13465 #include <stdio.h>
13466 $selecttype b;
13467 #define S sizeof(*(b))
13468 #define MINBITS 64
13469 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13470 #define NBITS  (NBYTES * 8)
13471 int main() {
13472     char s[NBYTES];
13473     struct timeval t;
13474     int i;
13475     FILE* fp;
13476     int fd;
13477
13478     fclose(stdin);
13479     fp = fopen("try.c", "r");
13480     if (fp == 0)
13481       exit(1);
13482     fd = fileno(fp);
13483     if (fd < 0)
13484       exit(2);
13485     b = ($selecttype)s;
13486     for (i = 0; i < NBITS; i++)
13487         FD_SET(i, b);
13488     t.tv_sec  = 0;
13489     t.tv_usec = 0;
13490     select(fd + 1, b, 0, 0, &t);
13491     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13492     printf("%d\n", i + 1);
13493     return 0;
13494 }
13495 EOCP
13496                 set try
13497                 if eval $compile_ok; then
13498                         selectminbits=`./try`
13499                         case "$selectminbits" in
13500                         '')     cat >&4 <<EOM
13501 Cannot figure out on how many bits at a time your select() operates.
13502 I'll play safe and guess it is 32 bits.
13503 EOM
13504                                 selectminbits=32
13505                                 bits="32 bits"
13506                                 ;;
13507                         1)      bits="1 bit" ;;
13508                         *)      bits="$selectminbits bits" ;;
13509                         esac
13510                         echo "Your select() operates on $bits at a time." >&4
13511                 else
13512                         rp='What is the minimum number of bits your select() operates on?'
13513                         case "$byteorder" in
13514                         1234|12345678)  dflt=32 ;;
13515                         *)              dflt=1  ;;
13516                         esac
13517                         . ./myread
13518                         val=$ans
13519                         selectminbits="$val"
13520                 fi
13521                 $rm -f try.* try
13522                 ;;
13523         *)      : no select, so pick a harmless default
13524                 selectminbits='32'
13525                 ;;
13526         esac
13527         ;;
13528 esac
13529
13530 : Trace out the files included by signal.h, then look for SIGxxx names.
13531 : Remove SIGARRAYSIZE used by HPUX.
13532 : Remove SIGSTKSIZE used by Linux.
13533 : Remove SIGSTKSZ used by Posix.
13534 : Remove SIGTYP void lines used by OS2.
13535 : Some cpps, like os390, dont give the file name anywhere
13536 if [ "X$fieldn" = X ]; then
13537         : Just make some guesses.  We check them later.
13538         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13539 else
13540         xxx=`echo '#include <signal.h>' |
13541         $cppstdin $cppminus $cppflags 2>/dev/null |
13542         $grep '^[       ]*#.*include' | 
13543         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13544 fi
13545 : Check this list of files to be sure we have parsed the cpp output ok.
13546 : This will also avoid potentially non-existent files, such 
13547 : as ../foo/bar.h
13548 xxxfiles=''
13549 for xx in $xxx /dev/null ; do
13550         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13551 done
13552 : If we have found no files, at least try signal.h
13553 case "$xxxfiles" in
13554 '')     xxxfiles=`./findhdr signal.h` ;;
13555 esac
13556 xxx=`awk '
13557 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13558         print substr($2, 4, 20)
13559 }
13560 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13561         print substr($3, 4, 20)
13562 }' $xxxfiles`
13563 : Append some common names just in case the awk scan failed.
13564 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13565 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13566 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13567 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13568 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13569
13570 : generate a few handy files for later
13571 $cat > signal.c <<'EOCP'
13572 #include <sys/types.h>
13573 #include <signal.h>
13574 #include <stdio.h>
13575 int main() {
13576
13577 /* Strange style to avoid deeply-nested #if/#else/#endif */
13578 #ifndef NSIG
13579 #  ifdef _NSIG
13580 #    define NSIG (_NSIG)
13581 #  endif
13582 #endif
13583
13584 #ifndef NSIG
13585 #  ifdef SIGMAX
13586 #    define NSIG (SIGMAX+1)
13587 #  endif
13588 #endif
13589
13590 #ifndef NSIG
13591 #  ifdef SIG_MAX
13592 #    define NSIG (SIG_MAX+1)
13593 #  endif
13594 #endif
13595
13596 #ifndef NSIG
13597 #  ifdef MAXSIG
13598 #    define NSIG (MAXSIG+1)
13599 #  endif
13600 #endif
13601
13602 #ifndef NSIG
13603 #  ifdef MAX_SIG
13604 #    define NSIG (MAX_SIG+1)
13605 #  endif
13606 #endif
13607
13608 #ifndef NSIG
13609 #  ifdef SIGARRAYSIZE
13610 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13611 #  endif
13612 #endif
13613
13614 #ifndef NSIG
13615 #  ifdef _sys_nsig
13616 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13617 #  endif
13618 #endif
13619
13620 /* Default to some arbitrary number that's big enough to get most
13621    of the common signals.
13622 */
13623 #ifndef NSIG
13624 #    define NSIG 50
13625 #endif
13626
13627 printf("NSIG %d\n", NSIG);
13628
13629 #ifndef JUST_NSIG
13630
13631 EOCP
13632
13633 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13634 {
13635         printf "#ifdef SIG"; printf $1; printf "\n"
13636         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13637         printf $1; printf ");\n"
13638         printf "#endif\n"
13639 }
13640 END {
13641         printf "#endif /* JUST_NSIG */\n";
13642         printf "exit(0);\n}\n";
13643 }
13644 ' >>signal.c
13645 $cat >signal.awk <<'EOP'
13646 BEGIN { ndups = 0 }
13647 $1 ~ /^NSIG$/ { nsig = $2 }
13648 ($1 !~ /^NSIG$/) && (NF == 2) {
13649     if ($2 > maxsig) { maxsig = $2 }
13650     if (sig_name[$2]) {
13651         dup_name[ndups] = $1
13652         dup_num[ndups] = $2
13653         ndups++ 
13654     }
13655     else {
13656         sig_name[$2] = $1
13657         sig_num[$2] = $2
13658     }
13659 }
13660 END { 
13661     if (nsig == 0) {
13662         nsig = maxsig + 1
13663     }
13664     printf("NSIG %d\n", nsig);
13665     for (n = 1; n < nsig; n++) {
13666         if (sig_name[n]) {
13667             printf("%s %d\n", sig_name[n], sig_num[n])
13668         }
13669         else {
13670             printf("NUM%d %d\n", n, n) 
13671         }
13672     }
13673     for (n = 0; n < ndups; n++) {
13674         printf("%s %d\n", dup_name[n], dup_num[n])
13675     }
13676 }
13677 EOP
13678 $cat >signal_cmd <<EOS
13679 $startsh
13680 if $test -s signal.lst; then
13681     echo "Using your existing signal.lst file"
13682         exit 0
13683 fi
13684 xxx="$xxx"
13685 EOS
13686 $cat >>signal_cmd <<'EOS'
13687
13688 set signal
13689 if eval $compile_ok; then
13690         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13691 else
13692         echo "(I can't seem be able to compile the whole test program)" >&4
13693         echo "(I'll try it in little pieces.)" >&4
13694         set signal -DJUST_NSIG
13695         if eval $compile_ok; then
13696                 ./signal$_exe > signal.nsg
13697                 $cat signal.nsg
13698         else
13699                 echo "I can't seem to figure out how many signals you have." >&4
13700                 echo "Guessing 50." >&4
13701                 echo 'NSIG 50' > signal.nsg
13702         fi
13703         : Now look at all the signal names, one at a time.
13704         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13705                 $cat > signal.c <<EOCP
13706 #include <sys/types.h>
13707 #include <signal.h>
13708 #include <stdio.h>
13709 int main() {
13710 printf("$xx %d\n", SIG${xx});
13711 return 0;
13712 }
13713 EOCP
13714                 set signal
13715                 if eval $compile; then
13716                         echo "SIG${xx} found."
13717                         ./signal$_exe  >> signal.ls1
13718                 else
13719                         echo "SIG${xx} NOT found."
13720                 fi
13721         done
13722         if $test -s signal.ls1; then
13723                 $cat signal.nsg signal.ls1 |
13724                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13725         fi
13726
13727 fi
13728 if $test -s signal.lst; then
13729         :
13730 else
13731         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13732         echo 'kill -l' >signal
13733         set X `csh -f <signal`
13734         $rm -f signal
13735         shift
13736         case $# in
13737         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13738         esac
13739         echo $@ | $tr ' ' $trnl | \
13740             $awk '{ printf "%s %d\n", $1, ++s; }
13741                   END { printf "NSIG %d\n", ++s }' >signal.lst
13742 fi
13743 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13744 EOS
13745 chmod a+x signal_cmd
13746 $eunicefix signal_cmd
13747
13748 : generate list of signal names
13749 echo " "
13750 case "$sig_name_init" in
13751 '') doinit=yes ;;
13752 *)  case "$sig_num_init" in
13753     ''|*,*) doinit=yes ;;
13754     esac ;;
13755 esac
13756 case "$doinit" in
13757 yes)
13758         echo "Generating a list of signal names and numbers..." >&4
13759         . ./signal_cmd
13760         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13761         sig_name=`$awk 'BEGIN { printf "ZERO " }
13762                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13763         sig_num=`$awk  'BEGIN { printf "0 " }
13764                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13765         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13766                              !/^NSIG/   { printf "\"%s\", ", $1 }
13767                              END        { printf "0\n" }' signal.lst`
13768         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13769                              !/^NSIG/   { printf "%d, ", $2}
13770                              END        { printf "0\n"}' signal.lst`
13771         ;;
13772 esac
13773 echo "The following $sig_count signals are available:"
13774 echo " "
13775 echo $sig_name | $awk \
13776 'BEGIN { linelen = 0 }
13777 {
13778         for (i = 1; i <= NF; i++) {
13779                 name = "SIG" $i " "
13780                 linelen = linelen + length(name)
13781                 if (linelen > 70) {
13782                         printf "\n"
13783                         linelen = length(name)
13784                 }
13785                 printf "%s", name
13786         }
13787         printf "\n"
13788 }'
13789 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13790
13791 : check for socklen_t
13792 echo " "
13793 echo "Checking to see if you have socklen_t..." >&4
13794 $cat >try.c <<EOCP
13795 #include <sys/types.h>
13796 #$d_socket HAS_SOCKET
13797 #ifdef HAS_SOCKET
13798 #include <sys/socket.h>
13799 #endif
13800 int main() { socklen_t x = 16; }
13801 EOCP
13802 set try
13803 if eval $compile; then
13804         val="$define"
13805         echo "You have socklen_t."
13806 else
13807         val="$undef"
13808         echo "You do not have socklen_t."
13809         case "$sizetype" in
13810         size_t) echo "(You do have size_t, that might work.)" ;;
13811         esac
13812 fi
13813 $rm -f try try.*
13814 set d_socklen_t
13815 eval $setvar
13816
13817 : check for type of the size argument to socket calls
13818 case "$d_socket" in
13819 "$define")
13820         $cat <<EOM
13821
13822 Checking to see what type is the last argument of accept().
13823 EOM
13824         hdrs="$define sys/types.h $d_socket sys/socket.h" 
13825         yyy=''
13826         case "$d_socklen_t" in
13827         "$define") yyy="$yyy socklen_t"
13828         esac
13829         yyy="$yyy $sizetype int long"
13830         for xxx in $yyy; do
13831                 case "$socksizetype" in
13832                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
13833                         if ./protochk "$try" $hdrs; then
13834                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
13835                                 socksizetype="$xxx"
13836                         fi
13837                         ;;
13838                 esac
13839         done
13840 : In case none of those worked, prompt the user.
13841         case "$socksizetype" in
13842         '')     rp='What is the type for socket address structure sizes?'
13843                 dflt='int'
13844                 . ./myread
13845                 socksizetype=$ans
13846                 ;;
13847         esac
13848         ;;
13849 *)      : no sockets, so pick relatively harmless defaults
13850         socksizetype='char *'
13851         ;;
13852 esac
13853
13854 : see what type is used for signed size_t
13855 set ssize_t ssizetype int stdio.h sys/types.h
13856 eval $typedef
13857 dflt="$ssizetype"
13858 $cat > ssize.c <<EOM
13859 #include <stdio.h>
13860 #include <sys/types.h>
13861 #define Size_t $sizetype
13862 #define SSize_t $dflt
13863 int main()
13864 {
13865         if (sizeof(Size_t) == sizeof(SSize_t))
13866                 printf("$dflt\n");
13867         else if (sizeof(Size_t) == sizeof(int))
13868                 printf("int\n");
13869         else 
13870                 printf("long\n");
13871         exit(0);
13872 }
13873 EOM
13874 echo " "
13875 set ssize
13876 if eval $compile_ok && ./ssize > /dev/null; then
13877         ssizetype=`./ssize`
13878         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13879 else
13880         $cat >&4 <<EOM
13881 Help! I can't compile and run the ssize_t test program: please enlighten me!
13882 (This is probably a misconfiguration in your system or libraries, and
13883 you really ought to fix it.  Still, I'll try anyway.)
13884
13885 I need a type that is the same size as $sizetype, but is guaranteed to
13886 be signed.  Common values are ssize_t, int and long.
13887
13888 EOM
13889         rp="What signed type is the same size as $sizetype?"
13890         . ./myread
13891         ssizetype="$ans"
13892 fi
13893 $rm -f ssize ssize.*
13894
13895 : see what type of char stdio uses.
13896 echo " "
13897 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13898         echo "Your stdio uses unsigned chars." >&4
13899         stdchar="unsigned char"
13900 else
13901         echo "Your stdio uses signed chars." >&4
13902         stdchar="char"
13903 fi
13904
13905 : see if time exists
13906 echo " "
13907 if test "X$d_time" = X -o X"$timetype" = X; then
13908     if set time val -f d_time; eval $csym; $val; then
13909                 echo 'time() found.' >&4
13910                 val="$define"
13911                 rp="What is the type returned by time() on this system?"
13912                 set time_t timetype long stdio.h sys/types.h
13913                 eval $typedef_ask
13914     else
13915                 echo 'time() not found, hope that will do.' >&4
13916                 val="$undef"
13917                 timetype='int';
13918     fi
13919     set d_time
13920     eval $setvar
13921 fi
13922
13923 : see what type uids are declared as in the kernel
13924 echo " "
13925 echo "Looking for the type for user ids returned by getuid()."
13926 set uid_t uidtype xxx stdio.h sys/types.h
13927 eval $typedef
13928 case "$uidtype" in
13929 xxx)
13930         xxx=`./findhdr sys/user.h`
13931         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13932         case $1 in
13933         unsigned) dflt="$1 $2" ;;
13934         *) dflt="$1" ;;
13935         esac
13936         ;;
13937 *) dflt="$uidtype";;
13938 esac
13939 case "$uidtype" in
13940 uid_t)  echo "uid_t found." ;;
13941 *)      rp="What is the type for user ids returned by getuid()?"
13942         . ./myread
13943         uidtype="$ans"
13944         ;;
13945 esac
13946
13947 echo " "
13948 case "$uidtype" in
13949 *_t) zzz="$uidtype"     ;;
13950 *)   zzz="uid"          ;;
13951 esac
13952 echo "Checking the size of $zzz..." >&4 
13953 cat > try.c <<EOCP
13954 #include <sys/types.h>
13955 #include <stdio.h>
13956 int main() {
13957     printf("%d\n", (int)sizeof($uidtype));
13958     exit(0);
13959 }
13960 EOCP
13961 set try
13962 if eval $compile_ok; then
13963         yyy=`./try`
13964         case "$yyy" in
13965         '')     uidsize=4
13966                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13967                 ;;
13968         *)      uidsize=$yyy
13969                 echo "Your $zzz is $uidsize bytes long."
13970                 ;;
13971         esac
13972 else
13973         uidsize=4
13974         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13975 fi
13976
13977 echo " "
13978 case "$uidtype" in
13979 *_t) zzz="$uidtype"     ;;
13980 *)   zzz="uid"          ;;
13981 esac
13982 echo "Checking the sign of $zzz..." >&4
13983 cat > try.c <<EOCP
13984 #include <sys/types.h>
13985 #include <stdio.h>
13986 int main() {
13987         $uidtype foo = -1;
13988         if (foo < 0)
13989                 printf("-1\n");
13990         else
13991                 printf("1\n");
13992 }
13993 EOCP
13994 set try
13995 if eval $compile; then
13996         yyy=`./try`
13997         case "$yyy" in
13998         '')     uidsign=1
13999                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14000                 ;;
14001         *)      uidsign=$yyy
14002                 case "$uidsign" in
14003                  1) echo "Your $zzz is unsigned." ;;
14004                 -1) echo "Your $zzz is signed."   ;;
14005                 esac
14006                 ;;
14007         esac
14008 else
14009         uidsign=1
14010         echo "(I can't compile the test program--guessing unsigned.)" >&4
14011 fi
14012
14013
14014
14015 echo " "
14016 $echo "Checking the format string to be used for uids..." >&4
14017
14018 case "$uidsign" in
14019 -1)     if $test X"$uidsize" = X"$ivsize"; then
14020                 uidformat="$ivdformat"
14021         else
14022                 if $test X"$uidsize" = X"$longsize"; then
14023                         uidformat='"ld"'
14024                 else
14025                         if $test X"$uidsize" = X"$intsize"; then
14026                                 uidformat='"d"'
14027                         else
14028                                 if $test X"$uidsize" = X"$shortsize"; then
14029                                         uidformat='"hd"'
14030                                 fi
14031                         fi
14032                 fi
14033         fi
14034         ;;
14035 *)      if $test X"$uidsize" = X"$uvsize"; then
14036                 uidformat="$uvuformat"
14037         else
14038                 if $test X"$uidsize" = X"$longsize"; then
14039                         uidformat='"lu"'
14040                 else
14041                         if $test X"$uidsize" = X"$intsize"; then
14042                                 uidformat='"u"'
14043                         else
14044                                 if $test X"$uidsize" = X"$shortsize"; then
14045                                         uidformat='"hu"'
14046                                 fi
14047                         fi
14048                 fi
14049         fi
14050         ;;
14051 esac
14052
14053 : see if dbm.h is available
14054 : see if dbmclose exists
14055 set dbmclose d_dbmclose
14056 eval $inlibc
14057
14058 case "$d_dbmclose" in
14059 $define)
14060         set dbm.h i_dbm
14061         eval $inhdr
14062         case "$i_dbm" in
14063         $define)
14064                 val="$undef"
14065                 set i_rpcsvcdbm
14066                 eval $setvar
14067                 ;;
14068         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14069                 eval $inhdr
14070                 ;;
14071         esac
14072         ;;
14073 *)      echo "We won't be including <dbm.h>"
14074         val="$undef"
14075         set i_dbm
14076         eval $setvar
14077         val="$undef"
14078         set i_rpcsvcdbm
14079         eval $setvar
14080         ;;
14081 esac
14082
14083 : see if this is a sys/file.h system
14084 val=''
14085 set sys/file.h val
14086 eval $inhdr
14087
14088 : do we need to include sys/file.h ?
14089 case "$val" in
14090 "$define")
14091         echo " "
14092         if $h_sysfile; then
14093                 val="$define"
14094                 echo "We'll be including <sys/file.h>." >&4
14095         else
14096                 val="$undef"
14097                 echo "We won't be including <sys/file.h>." >&4
14098         fi
14099         ;;
14100 *)
14101         h_sysfile=false
14102         ;;
14103 esac
14104 set i_sysfile
14105 eval $setvar
14106
14107 : see if fcntl.h is there
14108 val=''
14109 set fcntl.h val
14110 eval $inhdr
14111
14112 : see if we can include fcntl.h
14113 case "$val" in
14114 "$define")
14115         echo " "
14116         if $h_fcntl; then
14117                 val="$define"
14118                 echo "We'll be including <fcntl.h>." >&4
14119         else
14120                 val="$undef"
14121                 if $h_sysfile; then
14122         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14123                 else
14124                         echo "We won't be including <fcntl.h>." >&4
14125                 fi
14126         fi
14127         ;;
14128 *)
14129         h_fcntl=false
14130         val="$undef"
14131         ;;
14132 esac
14133 set i_fcntl
14134 eval $setvar
14135
14136 : see if this is a iconv.h system
14137 set iconv.h i_iconv
14138 eval $inhdr
14139
14140 : see if this is a ieeefp.h system
14141 set ieeefp.h i_ieeefp
14142 eval $inhdr
14143
14144 : see if locale.h is available
14145 set locale.h i_locale
14146 eval $inhdr
14147
14148 : see if mach cthreads are available
14149 if test "X$usethreads" = "X$define"; then
14150         set mach/cthreads.h i_machcthr
14151         eval $inhdr
14152 else
14153         i_machcthr="$undef"
14154 fi
14155
14156
14157
14158 : see if this is a math.h system
14159 set math.h i_math
14160 eval $inhdr
14161
14162 : see if this is a mntent.h system
14163 set mntent.h i_mntent
14164 eval $inhdr
14165
14166 : see if ndbm.h is available
14167 set ndbm.h t_ndbm
14168 eval $inhdr
14169 case "$t_ndbm" in
14170 $define)
14171         : see if dbm_open exists
14172         set dbm_open d_dbm_open
14173         eval $inlibc
14174         case "$d_dbm_open" in
14175         $undef)
14176                 t_ndbm="$undef"
14177                 echo "We won't be including <ndbm.h>"
14178                 ;;
14179         esac
14180         ;;
14181 esac
14182 val="$t_ndbm"
14183 set i_ndbm
14184 eval $setvar
14185
14186 : see if net/errno.h is available
14187 val=''
14188 set net/errno.h val
14189 eval $inhdr
14190
14191 : Unfortunately, it causes problems on some systems.  Arrgh.
14192 case "$val" in
14193 $define)
14194         cat > try.c <<'EOM'
14195 #include <stdio.h>
14196 #include <errno.h>
14197 #include <net/errno.h>
14198 int func()
14199 {
14200         return ENOTSOCK;
14201 }
14202 EOM
14203         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14204                 echo "We'll be including <net/errno.h>." >&4
14205         else
14206                 echo "We won't be including <net/errno.h>." >&4
14207                 val="$undef"
14208         fi
14209         $rm -f try.* try
14210         ;;
14211 esac
14212 set i_neterrno
14213 eval $setvar
14214
14215 : see if netinet/tcp.h is available
14216 set netinet/tcp.h i_netinettcp
14217 eval $inhdr
14218
14219 : see if this is a poll.h system
14220 set poll.h i_poll
14221 eval $inhdr
14222
14223 echo " "
14224 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14225 $cat <<'EOSH' > Cppsym.know
14226 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14227 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14228 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14229 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14230 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14231 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14232 bull c cadmus clipper CMU COFF COMPILER_VERSION
14233 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14234 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14235 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14236 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14237 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14238 H3050R H3050RX hbullx20 hcx host_mips
14239 hp200 hp300 hp700 HP700 hp800 hp9000
14240 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14241 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14242 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14243 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14244 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14245 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14246 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14247 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14248 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14249 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14250 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14251 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14252 MATH_HAS_NO_SIDE_EFFECTS
14253 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14254 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14255 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14256 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14257 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14258 NetBSD news1500 news1700 news1800 news1900 news3700
14259 news700 news800 news900 NeXT NLS ns16000 ns32000
14260 ns32016 ns32332 ns32k nsc32000
14261 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14262 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14263 pc532 pdp11 PGC PIC plexus PORTAR posix
14264 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14265 POSIX_C_SOURCE POSIX_SOURCE POWER
14266 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14267 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14268 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14269 sony sony_news sonyrisc sparc sparclite spectrum
14270 stardent stdc STDC_EXT stratos sun sun3 sun386
14271 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14272 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14273 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14274 sysV68 sysV88 Tek4132 Tek4300 titan
14275 tower tower32 tower32_200 tower32_600 tower32_700
14276 tower32_800 tower32_850 tss
14277 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14278 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14279 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14280 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14281 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14282 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14283 z8000
14284 EOSH
14285 # Maybe put other stuff here too.
14286 cat <<EOSH >>Cppsym.know
14287 $osname
14288 EOSH
14289 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14290 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14291 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14292 $rm -f Cppsym.a Cppsym.b
14293 cat <<EOSH > Cppsym
14294 $startsh
14295 if $test \$# -gt 0; then
14296     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14297     if $test -s Cppsym.got; then
14298         $rm -f Cppsym.got
14299         exit 0
14300     fi
14301     $rm -f Cppsym.got
14302     exit 1
14303 else
14304     $tr " " "$trnl" | ./Cppsym.try
14305     exit 0
14306 fi
14307 EOSH
14308 chmod +x Cppsym
14309 $eunicefix Cppsym
14310 cat <<EOSH > Cppsym.try
14311 $startsh
14312 cat <<'EOCP' > try.c
14313 #include <stdio.h>
14314 int main() {
14315 EOCP
14316 $awk \\
14317 EOSH
14318 cat <<'EOSH' >> Cppsym.try
14319 'length($1) > 0 {
14320     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
14321     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
14322     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
14323     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
14324 }'       >> try.c
14325 echo '}' >> try.c
14326 EOSH
14327 cat <<EOSH >> Cppsym.try
14328 ccflags="$ccflags"
14329 case "$osname-$gccversion" in
14330 irix-) ccflags="\$ccflags -woff 1178" ;;
14331 esac
14332 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14333 EOSH
14334 chmod +x Cppsym.try
14335 $eunicefix Cppsym.try
14336 ./Cppsym < Cppsym.know > Cppsym.true
14337 : now check the C compiler for additional symbols
14338 postprocess_cc_v=''
14339 case "$osname" in
14340 aix) postprocess_cc_v="|$tr , ' '" ;;
14341 esac
14342 $cat >ccsym <<EOS
14343 $startsh
14344 $cat >tmp.c <<EOF
14345 extern int foo;
14346 EOF
14347 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14348 do
14349         case "\$i" in
14350         -D*) echo "\$i" | $sed 's/^-D//';;
14351         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14352         esac
14353 done
14354 $rm -f try.c
14355 EOS
14356 postprocess_cc_v=''
14357 chmod +x ccsym
14358 $eunicefix ccsym
14359 ./ccsym > ccsym1.raw
14360 if $test -s ccsym1.raw; then
14361        $sort ccsym1.raw | $uniq >ccsym.raw
14362 else
14363        mv ccsym1.raw ccsym.raw
14364 fi
14365
14366 $awk '/\=/ { print $0; next }
14367         { print $0"=1" }' ccsym.raw >ccsym.list
14368 $awk '/\=/ { print $0; next }
14369         { print $0"=1" }' Cppsym.true >ccsym.true
14370 $comm -13 ccsym.true ccsym.list >ccsym.own
14371 $comm -12 ccsym.true ccsym.list >ccsym.com
14372 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14373 also=''
14374 if $test -z ccsym.raw; then
14375         echo "Your C compiler doesn't seem to define any symbols!" >&4
14376         echo " "
14377         echo "However, your C preprocessor defines the following symbols:"
14378         $cat Cppsym.true
14379         ccsymbols=''
14380         cppsymbols=`$cat Cppsym.true`
14381         cppsymbols=`echo $cppsymbols`
14382         cppccsymbols="$cppsymbols"
14383 else
14384         if $test -s ccsym.com; then
14385                 echo "Your C compiler and pre-processor define these symbols:"
14386                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14387                 also='also '
14388                 symbols='ones'
14389                 cppccsymbols=`$cat ccsym.com`
14390                 cppccsymbols=`echo $cppccsymbols`
14391                 $test "$silent" || sleep 1
14392         fi
14393         if $test -s ccsym.cpp; then
14394                 $test "$also" && echo " "
14395                 echo "Your C pre-processor ${also}defines the following symbols:"
14396                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14397                 also='further '
14398                 cppsymbols=`$cat ccsym.cpp`
14399                 cppsymbols=`echo $cppsymbols`
14400                 $test "$silent" || sleep 1
14401         fi
14402         if $test -s ccsym.own; then
14403                 $test "$also" && echo " "
14404                 echo "Your C compiler ${also}defines the following cpp symbols:"
14405                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14406                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14407                 ccsymbols=`$cat ccsym.own`
14408                 ccsymbols=`echo $ccsymbols`
14409                 $test "$silent" || sleep 1
14410         fi
14411 fi
14412 $rm -f ccsym*
14413
14414 : see if this is a termio system
14415 val="$undef"
14416 val2="$undef"
14417 val3="$undef"
14418 if $test `./findhdr termios.h`; then
14419         set tcsetattr i_termios
14420         eval $inlibc
14421         val3="$i_termios"
14422 fi
14423 echo " "
14424 case "$val3" in
14425 "$define") echo "You have POSIX termios.h... good!" >&4;;
14426 *) if ./Cppsym pyr; then
14427                 case "`/bin/universe`" in
14428                 ucb) if $test `./findhdr sgtty.h`; then
14429                                 val2="$define"
14430                                 echo "<sgtty.h> found." >&4
14431                         else
14432                                 echo "System is pyramid with BSD universe."
14433                                 echo "<sgtty.h> not found--you could have problems." >&4
14434                         fi;;
14435                 *) if $test `./findhdr termio.h`; then
14436                                 val="$define"
14437                                 echo "<termio.h> found." >&4
14438                         else
14439                                 echo "System is pyramid with USG universe."
14440                                 echo "<termio.h> not found--you could have problems." >&4
14441                         fi;;
14442                 esac
14443         elif ./usg; then
14444                 if $test `./findhdr termio.h`; then
14445                         echo "<termio.h> found." >&4
14446                         val="$define"
14447                 elif $test `./findhdr sgtty.h`; then
14448                         echo "<sgtty.h> found." >&4
14449                         val2="$define"
14450                 else
14451 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14452                 fi
14453         else
14454                 if $test `./findhdr sgtty.h`; then
14455                         echo "<sgtty.h> found." >&4
14456                         val2="$define"
14457                 elif $test `./findhdr termio.h`; then
14458                         echo "<termio.h> found." >&4
14459                         val="$define"
14460                 else
14461 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14462                 fi
14463         fi;;
14464 esac
14465 set i_termio; eval $setvar
14466 val=$val2; set i_sgtty; eval $setvar
14467 val=$val3; set i_termios; eval $setvar
14468
14469 : see if this is a shadow.h system
14470 set shadow.h i_shadow
14471 eval $inhdr
14472
14473 : see if this is a socks.h system
14474 set socks.h i_socks
14475 eval $inhdr
14476
14477 : see if stdarg is available
14478 echo " "
14479 if $test `./findhdr stdarg.h`; then
14480         echo "<stdarg.h> found." >&4
14481         valstd="$define"
14482 else
14483         echo "<stdarg.h> NOT found." >&4
14484         valstd="$undef"
14485 fi
14486
14487 : see if varags is available
14488 echo " "
14489 if $test `./findhdr varargs.h`; then
14490         echo "<varargs.h> found." >&4
14491 else
14492         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14493 fi
14494
14495 : set up the varargs testing programs
14496 $cat > varargs.c <<EOP
14497 #ifdef I_STDARG
14498 #include <stdarg.h>
14499 #endif
14500 #ifdef I_VARARGS
14501 #include <varargs.h>
14502 #endif
14503
14504 #ifdef I_STDARG
14505 int f(char *p, ...)
14506 #else
14507 int f(va_alist)
14508 va_dcl
14509 #endif
14510 {
14511         va_list ap;
14512 #ifndef I_STDARG
14513         char *p;
14514 #endif
14515 #ifdef I_STDARG
14516         va_start(ap,p);
14517 #else
14518         va_start(ap);
14519         p = va_arg(ap, char *);
14520 #endif
14521         va_end(ap);
14522 }
14523 EOP
14524 $cat > varargs <<EOP
14525 $startsh
14526 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14527         echo "true"
14528 else
14529         echo "false"
14530 fi
14531 $rm -f varargs$_o
14532 EOP
14533 chmod +x varargs
14534
14535 : now check which varargs header should be included
14536 echo " "
14537 i_varhdr=''
14538 case "$valstd" in
14539 "$define")
14540         if `./varargs I_STDARG`; then
14541                 val='stdarg.h'
14542         elif `./varargs I_VARARGS`; then
14543                 val='varargs.h'
14544         fi
14545         ;;
14546 *)
14547         if `./varargs I_VARARGS`; then
14548                 val='varargs.h'
14549         fi
14550         ;;
14551 esac
14552 case "$val" in
14553 '')
14554 echo "I could not find the definition for va_dcl... You have problems..." >&4
14555         val="$undef"; set i_stdarg; eval $setvar
14556         val="$undef"; set i_varargs; eval $setvar
14557         ;;
14558 *) 
14559         set i_varhdr
14560         eval $setvar
14561         case "$i_varhdr" in
14562         stdarg.h)
14563                 val="$define"; set i_stdarg; eval $setvar
14564                 val="$undef"; set i_varargs; eval $setvar
14565                 ;;
14566         varargs.h)
14567                 val="$undef"; set i_stdarg; eval $setvar
14568                 val="$define"; set i_varargs; eval $setvar
14569                 ;;
14570         esac
14571         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14572 esac
14573 $rm -f varargs*
14574
14575 : see if stddef is available
14576 set stddef.h i_stddef
14577 eval $inhdr
14578
14579 : see if this is a sunmath.h system
14580 set sunmath.h i_sunmath
14581 eval $inhdr
14582
14583 : see if sys/access.h is available
14584 set sys/access.h i_sysaccess
14585 eval $inhdr
14586
14587 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14588 set sys/filio.h i_sysfilio
14589 eval $inhdr
14590 echo " "
14591 if $test `./findhdr sys/ioctl.h`; then
14592         val="$define"
14593         echo '<sys/ioctl.h> found.' >&4
14594 else
14595         val="$undef"
14596         if $test $i_sysfilio = "$define"; then
14597             echo '<sys/ioctl.h> NOT found.' >&4
14598         else
14599                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14600                 $test $i_termio = "$define" && xxx="termio.h"
14601                 $test $i_termios = "$define" && xxx="termios.h"
14602 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14603         fi
14604 fi
14605 set i_sysioctl
14606 eval $setvar
14607
14608
14609 : see if this is a syslog.h system
14610 set syslog.h i_syslog
14611 eval $inhdr
14612
14613
14614 : see if this is a sys/mode.h system
14615 set sys/mode.h i_sysmode
14616 eval $inhdr
14617
14618 : see if sys/resource.h has to be included
14619 set sys/resource.h i_sysresrc
14620 eval $inhdr
14621
14622 : see if sys/security.h is available
14623 set sys/security.h i_syssecrt
14624 eval $inhdr
14625
14626 : see if this is a sys/statvfs.h system
14627 set sys/statvfs.h i_sysstatvfs
14628 eval $inhdr
14629
14630 : see if this is a sys/uio.h system
14631 set sys/uio.h i_sysuio
14632 eval $inhdr
14633
14634 : see if this is a sys/un.h system
14635 set sys/un.h i_sysun
14636 eval $inhdr
14637
14638
14639 : see if this is a sys/utsname.h system
14640 set sys/utsname.h i_sysutsname
14641 eval $inhdr
14642
14643 : see if this is a syswait system
14644 set sys/wait.h i_syswait
14645 eval $inhdr
14646
14647 : see if this is a ustat.h system
14648 set ustat.h i_ustat
14649 eval $inhdr
14650
14651 : see if this is an utime system
14652 set utime.h i_utime
14653 eval $inhdr
14654
14655 : see if this is a values.h system
14656 set values.h i_values
14657 eval $inhdr
14658
14659 : see if this is a vfork system
14660 case "$d_vfork" in
14661 "$define")
14662         set vfork.h i_vfork
14663         eval $inhdr
14664         ;;
14665 *)
14666         i_vfork="$undef"
14667         ;;
14668 esac
14669
14670 : see if gdbm.h is available
14671 set gdbm.h t_gdbm
14672 eval $inhdr
14673 case "$t_gdbm" in
14674 $define)
14675         : see if gdbm_open exists
14676         set gdbm_open d_gdbm_open
14677         eval $inlibc
14678         case "$d_gdbm_open" in
14679         $undef)
14680                 t_gdbm="$undef"
14681                 echo "We won't be including <gdbm.h>"
14682                 ;;
14683         esac
14684         ;;
14685 esac
14686 val="$t_gdbm"
14687 set i_gdbm
14688 eval $setvar
14689
14690 echo " "
14691 echo "Looking for extensions..." >&4
14692 : If we are using the old config.sh, known_extensions may contain
14693 : old or inaccurate or duplicate values.
14694 known_extensions=''
14695 nonxs_extensions=''
14696 : We do not use find because it might not be available.
14697 : We do not just use MANIFEST because the user may have dropped
14698 : some additional extensions into the source tree and expect them
14699 : to be built.
14700
14701 : Function to recursively find available extensions, ignoring DynaLoader
14702 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14703 find_extensions='
14704     for xxx in *; do
14705        case "$xxx" in
14706            DynaLoader|dynaload) ;;
14707            *)
14708            if $test -f $xxx/$xxx.xs; then
14709                known_extensions="$known_extensions $1$xxx";
14710            elif $test -f $xxx/Makefile.PL; then
14711                nonxs_extensions="$nonxs_extensions $1$xxx";
14712            else
14713                if $test -d $xxx -a $# -lt 10; then
14714                    set $1$xxx/ $*;
14715                    cd $xxx;
14716                    eval $find_extensions;
14717                    cd ..;
14718                    shift;
14719                fi;
14720            fi
14721            ;;
14722        esac;
14723     done'
14724 tdir=`pwd`
14725 cd $rsrc/ext
14726 set X
14727 shift
14728 eval $find_extensions
14729 set X $nonxs_extensions
14730 shift
14731 nonxs_extensions="$*"
14732 set X $known_extensions
14733 shift
14734 known_extensions="$*"
14735 cd $tdir
14736
14737 : Now see which are supported on this system.
14738 avail_ext=''
14739 for xxx in $known_extensions ; do
14740         case "$xxx" in
14741         DB_File|db_file)
14742                 case "$i_db" in
14743                 $define) avail_ext="$avail_ext $xxx" ;;
14744                 esac
14745                 ;;
14746         GDBM_File|gdbm_fil)
14747                 case "$i_gdbm" in 
14748                 $define) avail_ext="$avail_ext $xxx" ;;
14749                 esac
14750                 ;;
14751         NDBM_File|ndbm_fil)
14752                 case "$i_ndbm" in
14753                 $define)
14754                     case "$osname-$use64bitint" in
14755                     hpux-define)
14756                         case "$libs" in
14757                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14758                         esac
14759                         ;;
14760                     *) avail_ext="$avail_ext $xxx" ;;
14761                     esac
14762                     ;;
14763                 esac
14764                 ;;
14765         ODBM_File|odbm_fil) 
14766                 case "${i_dbm}${i_rpcsvcdbm}" in
14767                 *"${define}"*)
14768                     case "$osname-$use64bitint" in
14769                     hpux-define)
14770                         case "$libs" in
14771                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14772                         esac
14773                         ;;
14774                     *) avail_ext="$avail_ext $xxx" ;;
14775                     esac
14776                     ;;
14777                 esac
14778                 ;;
14779         POSIX|posix)
14780                 case "$useposix" in
14781                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14782                 esac
14783                 ;;
14784         Opcode|opcode)
14785                 case "$useopcode" in
14786                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14787                 esac
14788                 ;;
14789         Socket|socket)
14790                 case "$d_socket" in 
14791                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14792                 esac
14793                 ;;
14794         Thread|thread)
14795                 case "$usethreads" in 
14796                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14797                 esac
14798                 ;;
14799         IPC/SysV|ipc/sysv)
14800                 : XXX Do we need a useipcsysv variable here
14801                 case "${d_msg}${d_sem}${d_shm}" in 
14802                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14803                 esac
14804                 ;;
14805         *)      avail_ext="$avail_ext $xxx"
14806                 ;;
14807         esac
14808 done
14809
14810 set X $avail_ext
14811 shift
14812 avail_ext="$*"
14813
14814 : Now see which nonxs extensions are supported on this system.
14815 : For now assume all are.
14816 nonxs_ext=''
14817 for xxx in $nonxs_extensions ; do
14818         case "$xxx" in
14819         *)      nonxs_ext="$nonxs_ext $xxx"
14820                 ;;
14821         esac
14822 done
14823
14824 set X $nonxs_ext
14825 shift
14826 nonxs_ext="$*"
14827
14828 case $usedl in
14829 $define)
14830         $cat <<EOM
14831 A number of extensions are supplied with $package.  You may choose to
14832 compile these extensions for dynamic loading (the default), compile
14833 them into the $package executable (static loading), or not include
14834 them at all.  Answer "none" to include no extensions.
14835 Note that DynaLoader is always built and need not be mentioned here.
14836
14837 EOM
14838         case "$dynamic_ext" in
14839         '') dflt="$avail_ext" ;;
14840         *)      dflt="$dynamic_ext"
14841                 # Perhaps we are reusing an old out-of-date config.sh.
14842                 case "$hint" in
14843                 previous)
14844                         if test X"$dynamic_ext" != X"$avail_ext"; then
14845                                 $cat <<EOM
14846 NOTICE:  Your previous config.sh list may be incorrect. 
14847 The extensions now available to you are 
14848         ${avail_ext}
14849 but the default list from your previous config.sh is
14850         ${dynamic_ext} 
14851
14852 EOM
14853                         fi
14854                         ;;
14855                 esac
14856                 ;;
14857         esac
14858         case "$dflt" in
14859         '')     dflt=none;;
14860         esac
14861         rp="What extensions do you wish to load dynamically?"
14862         . ./myread
14863         case "$ans" in
14864         none) dynamic_ext=' ' ;;
14865         *) dynamic_ext="$ans" ;;
14866         esac
14867
14868         case "$static_ext" in
14869         '')
14870                 : Exclude those already listed in dynamic linking
14871                 dflt=''
14872                 for xxx in $avail_ext; do
14873                         case " $dynamic_ext " in
14874                         *" $xxx "*) ;;
14875                         *) dflt="$dflt $xxx" ;;
14876                         esac
14877                 done
14878                 set X $dflt
14879                 shift
14880                 dflt="$*"
14881                 ;;
14882         *)  dflt="$static_ext" 
14883                 ;;
14884         esac
14885
14886         case "$dflt" in
14887         '')     dflt=none;;
14888         esac
14889         rp="What extensions do you wish to load statically?"
14890         . ./myread
14891         case "$ans" in
14892         none) static_ext=' ' ;;
14893         *) static_ext="$ans" ;;
14894         esac
14895         ;;
14896 *)
14897         $cat <<EOM
14898 A number of extensions are supplied with $package.  Answer "none" 
14899 to include no extensions. 
14900 Note that DynaLoader is always built and need not be mentioned here.
14901
14902 EOM
14903         case "$static_ext" in
14904         '') dflt="$avail_ext" ;;
14905         *)      dflt="$static_ext"
14906                 # Perhaps we are reusing an old out-of-date config.sh.
14907                 case "$hint" in
14908                 previous)
14909                         if test X"$static_ext" != X"$avail_ext"; then
14910                                 $cat <<EOM
14911 NOTICE:  Your previous config.sh list may be incorrect. 
14912 The extensions now available to you are 
14913         ${avail_ext}
14914 but the default list from your previous config.sh is
14915         ${static_ext} 
14916
14917 EOM
14918                         fi
14919                         ;;
14920                 esac
14921                 ;;
14922         esac
14923         : Exclude those that are not xs extensions
14924         case "$dflt" in
14925         '')     dflt=none;;
14926         esac
14927         rp="What extensions do you wish to include?"
14928         . ./myread
14929         case "$ans" in
14930         none) static_ext=' ' ;;
14931         *) static_ext="$ans" ;;
14932         esac
14933         ;;
14934 esac
14935
14936 set X $dynamic_ext $static_ext $nonxs_ext
14937 shift
14938 extensions="$*"
14939
14940 : Remove build directory name from cppstdin so it can be used from
14941 : either the present location or the final installed location.
14942 echo " "
14943 : Get out of the UU directory to get correct path name.
14944 cd ..
14945 case "$cppstdin" in
14946 `pwd`/cppstdin)
14947         echo "Stripping down cppstdin path name"
14948         cppstdin=cppstdin
14949         ;;
14950 esac
14951 cd UU
14952
14953 : end of configuration questions
14954 echo " "
14955 echo "End of configuration questions."
14956 echo " "
14957
14958 : back to where it started
14959 if test -d ../UU; then
14960         cd ..
14961 fi
14962
14963 : configuration may be patched via a 'config.over' file
14964 if $test -f config.over; then
14965         echo " "
14966         dflt=y
14967         rp='I see a config.over file.  Do you wish to load it?'
14968         . UU/myread
14969         case "$ans" in
14970         n*) echo "OK, I'll ignore it.";;
14971         *)      . ./config.over
14972                 echo "Configuration override changes have been loaded."
14973                 ;;
14974         esac
14975 fi
14976
14977 : in case they want portability, strip down executable paths
14978 case "$d_portable" in
14979 "$define")
14980         echo " "
14981         echo "Stripping down executable paths..." >&4
14982         for file in $loclist $trylist; do
14983                 eval temp=\$$file
14984                 eval $file=`basename $temp`
14985         done
14986         ;;
14987 esac
14988
14989 : create config.sh file
14990 echo " "
14991 echo "Creating config.sh..." >&4
14992 $spitshell <<EOT >config.sh
14993 $startsh
14994 #
14995 # This file was produced by running the Configure script. It holds all the
14996 # definitions figured out by Configure. Should you modify one of these values,
14997 # do not forget to propagate your changes by running "Configure -der". You may
14998 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14999 #
15000
15001 # Package name      : $package
15002 # Source directory  : $src
15003 # Configuration time: $cf_time
15004 # Configured by     : $cf_by
15005 # Target system     : $myuname
15006
15007 Author='$Author'
15008 Date='$Date'
15009 Header='$Header'
15010 Id='$Id'
15011 Locker='$Locker'
15012 Log='$Log'
15013 Mcc='$Mcc'
15014 RCSfile='$RCSfile'
15015 Revision='$Revision'
15016 Source='$Source'
15017 State='$State'
15018 _a='$_a'
15019 _exe='$_exe'
15020 _o='$_o'
15021 afs='$afs'
15022 alignbytes='$alignbytes'
15023 ansi2knr='$ansi2knr'
15024 aphostname='$aphostname'
15025 api_revision='$api_revision'
15026 api_subversion='$api_subversion'
15027 api_version='$api_version'
15028 api_versionstring='$api_versionstring'
15029 ar='$ar'
15030 archlib='$archlib'
15031 archlibexp='$archlibexp'
15032 archname64='$archname64'
15033 archname='$archname'
15034 archobjs='$archobjs'
15035 awk='$awk'
15036 baserev='$baserev'
15037 bash='$bash'
15038 bin='$bin'
15039 bincompat5005='$bincompat5005'
15040 binexp='$binexp'
15041 bison='$bison'
15042 byacc='$byacc'
15043 byteorder='$byteorder'
15044 c='$c'
15045 castflags='$castflags'
15046 cat='$cat'
15047 cc='$cc'
15048 cccdlflags='$cccdlflags'
15049 ccdlflags='$ccdlflags'
15050 ccflags='$ccflags'
15051 ccsymbols='$ccsymbols'
15052 cf_by='$cf_by'
15053 cf_email='$cf_email'
15054 cf_time='$cf_time'
15055 charsize='$charsize'
15056 chgrp='$chgrp'
15057 chmod='$chmod'
15058 chown='$chown'
15059 clocktype='$clocktype'
15060 comm='$comm'
15061 compress='$compress'
15062 contains='$contains'
15063 cp='$cp'
15064 cpio='$cpio'
15065 cpp='$cpp'
15066 cpp_stuff='$cpp_stuff'
15067 cppccsymbols='$cppccsymbols'
15068 cppflags='$cppflags'
15069 cpplast='$cpplast'
15070 cppminus='$cppminus'
15071 cpprun='$cpprun'
15072 cppstdin='$cppstdin'
15073 cppsymbols='$cppsymbols'
15074 crosscompile='$crosscompile'
15075 cryptlib='$cryptlib'
15076 csh='$csh'
15077 d_Gconvert='$d_Gconvert'
15078 d_PRIEldbl='$d_PRIEldbl'
15079 d_PRIFldbl='$d_PRIFldbl'
15080 d_PRIGldbl='$d_PRIGldbl'
15081 d_PRIX64='$d_PRIX64'
15082 d_PRId64='$d_PRId64'
15083 d_PRIeldbl='$d_PRIeldbl'
15084 d_PRIfldbl='$d_PRIfldbl'
15085 d_PRIgldbl='$d_PRIgldbl'
15086 d_PRIi64='$d_PRIi64'
15087 d_PRIo64='$d_PRIo64'
15088 d_PRIu64='$d_PRIu64'
15089 d_PRIx64='$d_PRIx64'
15090 d_access='$d_access'
15091 d_accessx='$d_accessx'
15092 d_alarm='$d_alarm'
15093 d_archlib='$d_archlib'
15094 d_atolf='$d_atolf'
15095 d_atoll='$d_atoll'
15096 d_attribut='$d_attribut'
15097 d_bcmp='$d_bcmp'
15098 d_bcopy='$d_bcopy'
15099 d_bincompat5005='$d_bincompat5005'
15100 d_bsd='$d_bsd'
15101 d_bsdgetpgrp='$d_bsdgetpgrp'
15102 d_bsdsetpgrp='$d_bsdsetpgrp'
15103 d_bzero='$d_bzero'
15104 d_casti32='$d_casti32'
15105 d_castneg='$d_castneg'
15106 d_charvspr='$d_charvspr'
15107 d_chown='$d_chown'
15108 d_chroot='$d_chroot'
15109 d_chsize='$d_chsize'
15110 d_closedir='$d_closedir'
15111 d_const='$d_const'
15112 d_crypt='$d_crypt'
15113 d_csh='$d_csh'
15114 d_cuserid='$d_cuserid'
15115 d_dbl_dig='$d_dbl_dig'
15116 d_difftime='$d_difftime'
15117 d_dirnamlen='$d_dirnamlen'
15118 d_dlerror='$d_dlerror'
15119 d_dlopen='$d_dlopen'
15120 d_dlsymun='$d_dlsymun'
15121 d_dosuid='$d_dosuid'
15122 d_drand48proto='$d_drand48proto'
15123 d_dup2='$d_dup2'
15124 d_eaccess='$d_eaccess'
15125 d_endgrent='$d_endgrent'
15126 d_endhent='$d_endhent'
15127 d_endnent='$d_endnent'
15128 d_endpent='$d_endpent'
15129 d_endpwent='$d_endpwent'
15130 d_endsent='$d_endsent'
15131 d_endspent='$d_endspent'
15132 d_eofnblk='$d_eofnblk'
15133 d_eunice='$d_eunice'
15134 d_fchmod='$d_fchmod'
15135 d_fchown='$d_fchown'
15136 d_fcntl='$d_fcntl'
15137 d_fd_macros='$d_fd_macros'
15138 d_fd_set='$d_fd_set'
15139 d_fds_bits='$d_fds_bits'
15140 d_fgetpos='$d_fgetpos'
15141 d_flexfnam='$d_flexfnam'
15142 d_flock='$d_flock'
15143 d_fork='$d_fork'
15144 d_fpathconf='$d_fpathconf'
15145 d_fpos64_t='$d_fpos64_t'
15146 d_fs_data_s='$d_fs_data_s'
15147 d_fseeko='$d_fseeko'
15148 d_fsetpos='$d_fsetpos'
15149 d_fstatfs='$d_fstatfs'
15150 d_fstatvfs='$d_fstatvfs'
15151 d_ftello='$d_ftello'
15152 d_ftime='$d_ftime'
15153 d_getcwd='$d_getcwd'
15154 d_getfsstat='$d_getfsstat'
15155 d_getgrent='$d_getgrent'
15156 d_getgrps='$d_getgrps'
15157 d_gethbyaddr='$d_gethbyaddr'
15158 d_gethbyname='$d_gethbyname'
15159 d_gethent='$d_gethent'
15160 d_gethname='$d_gethname'
15161 d_gethostprotos='$d_gethostprotos'
15162 d_getlogin='$d_getlogin'
15163 d_getmnt='$d_getmnt'
15164 d_getmntent='$d_getmntent'
15165 d_getnbyaddr='$d_getnbyaddr'
15166 d_getnbyname='$d_getnbyname'
15167 d_getnent='$d_getnent'
15168 d_getnetprotos='$d_getnetprotos'
15169 d_getpbyname='$d_getpbyname'
15170 d_getpbynumber='$d_getpbynumber'
15171 d_getpent='$d_getpent'
15172 d_getpgid='$d_getpgid'
15173 d_getpgrp2='$d_getpgrp2'
15174 d_getpgrp='$d_getpgrp'
15175 d_getppid='$d_getppid'
15176 d_getprior='$d_getprior'
15177 d_getprotoprotos='$d_getprotoprotos'
15178 d_getpwent='$d_getpwent'
15179 d_getsbyname='$d_getsbyname'
15180 d_getsbyport='$d_getsbyport'
15181 d_getsent='$d_getsent'
15182 d_getservprotos='$d_getservprotos'
15183 d_getspent='$d_getspent'
15184 d_getspnam='$d_getspnam'
15185 d_gettimeod='$d_gettimeod'
15186 d_gnulibc='$d_gnulibc'
15187 d_grpasswd='$d_grpasswd'
15188 d_hasmntopt='$d_hasmntopt'
15189 d_htonl='$d_htonl'
15190 d_iconv='$d_iconv'
15191 d_index='$d_index'
15192 d_inetaton='$d_inetaton'
15193 d_int64_t='$d_int64_t'
15194 d_isascii='$d_isascii'
15195 d_killpg='$d_killpg'
15196 d_lchown='$d_lchown'
15197 d_ldbl_dig='$d_ldbl_dig'
15198 d_link='$d_link'
15199 d_locconv='$d_locconv'
15200 d_lockf='$d_lockf'
15201 d_longdbl='$d_longdbl'
15202 d_longlong='$d_longlong'
15203 d_lseekproto='$d_lseekproto'
15204 d_lstat='$d_lstat'
15205 d_madvise='$d_madvise'
15206 d_mblen='$d_mblen'
15207 d_mbstowcs='$d_mbstowcs'
15208 d_mbtowc='$d_mbtowc'
15209 d_memchr='$d_memchr'
15210 d_memcmp='$d_memcmp'
15211 d_memcpy='$d_memcpy'
15212 d_memmove='$d_memmove'
15213 d_memset='$d_memset'
15214 d_mkdir='$d_mkdir'
15215 d_mkdtemp='$d_mkdtemp'
15216 d_mkfifo='$d_mkfifo'
15217 d_mkstemp='$d_mkstemp'
15218 d_mkstemps='$d_mkstemps'
15219 d_mktime='$d_mktime'
15220 d_mmap='$d_mmap'
15221 d_mprotect='$d_mprotect'
15222 d_msg='$d_msg'
15223 d_msg_ctrunc='$d_msg_ctrunc'
15224 d_msg_dontroute='$d_msg_dontroute'
15225 d_msg_oob='$d_msg_oob'
15226 d_msg_peek='$d_msg_peek'
15227 d_msg_proxy='$d_msg_proxy'
15228 d_msgctl='$d_msgctl'
15229 d_msgget='$d_msgget'
15230 d_msgrcv='$d_msgrcv'
15231 d_msgsnd='$d_msgsnd'
15232 d_msync='$d_msync'
15233 d_munmap='$d_munmap'
15234 d_mymalloc='$d_mymalloc'
15235 d_nice='$d_nice'
15236 d_nv_preserves_uv='$d_nv_preserves_uv'
15237 d_off64_t='$d_off64_t'
15238 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15239 d_oldpthreads='$d_oldpthreads'
15240 d_oldsock='$d_oldsock'
15241 d_open3='$d_open3'
15242 d_pathconf='$d_pathconf'
15243 d_pause='$d_pause'
15244 d_phostname='$d_phostname'
15245 d_pipe='$d_pipe'
15246 d_poll='$d_poll'
15247 d_portable='$d_portable'
15248 d_pthread_yield='$d_pthread_yield'
15249 d_pwage='$d_pwage'
15250 d_pwchange='$d_pwchange'
15251 d_pwclass='$d_pwclass'
15252 d_pwcomment='$d_pwcomment'
15253 d_pwexpire='$d_pwexpire'
15254 d_pwgecos='$d_pwgecos'
15255 d_pwpasswd='$d_pwpasswd'
15256 d_pwquota='$d_pwquota'
15257 d_qgcvt='$d_qgcvt'
15258 d_quad='$d_quad'
15259 d_readdir='$d_readdir'
15260 d_readlink='$d_readlink'
15261 d_rename='$d_rename'
15262 d_rewinddir='$d_rewinddir'
15263 d_rmdir='$d_rmdir'
15264 d_safebcpy='$d_safebcpy'
15265 d_safemcpy='$d_safemcpy'
15266 d_sanemcmp='$d_sanemcmp'
15267 d_sched_yield='$d_sched_yield'
15268 d_scm_rights='$d_scm_rights'
15269 d_seekdir='$d_seekdir'
15270 d_select='$d_select'
15271 d_sem='$d_sem'
15272 d_semctl='$d_semctl'
15273 d_semctl_semid_ds='$d_semctl_semid_ds'
15274 d_semctl_semun='$d_semctl_semun'
15275 d_semget='$d_semget'
15276 d_semop='$d_semop'
15277 d_setegid='$d_setegid'
15278 d_seteuid='$d_seteuid'
15279 d_setgrent='$d_setgrent'
15280 d_setgrps='$d_setgrps'
15281 d_sethent='$d_sethent'
15282 d_setlinebuf='$d_setlinebuf'
15283 d_setlocale='$d_setlocale'
15284 d_setnent='$d_setnent'
15285 d_setpent='$d_setpent'
15286 d_setpgid='$d_setpgid'
15287 d_setpgrp2='$d_setpgrp2'
15288 d_setpgrp='$d_setpgrp'
15289 d_setprior='$d_setprior'
15290 d_setpwent='$d_setpwent'
15291 d_setregid='$d_setregid'
15292 d_setresgid='$d_setresgid'
15293 d_setresuid='$d_setresuid'
15294 d_setreuid='$d_setreuid'
15295 d_setrgid='$d_setrgid'
15296 d_setruid='$d_setruid'
15297 d_setsent='$d_setsent'
15298 d_setsid='$d_setsid'
15299 d_setspent='$d_setspent'
15300 d_setvbuf='$d_setvbuf'
15301 d_sfio='$d_sfio'
15302 d_shm='$d_shm'
15303 d_shmat='$d_shmat'
15304 d_shmatprototype='$d_shmatprototype'
15305 d_shmctl='$d_shmctl'
15306 d_shmdt='$d_shmdt'
15307 d_shmget='$d_shmget'
15308 d_sigaction='$d_sigaction'
15309 d_sigsetjmp='$d_sigsetjmp'
15310 d_socket='$d_socket'
15311 d_socklen_t='$d_socklen_t'
15312 d_sockpair='$d_sockpair'
15313 d_sqrtl='$d_sqrtl'
15314 d_statblks='$d_statblks'
15315 d_statfs_f_flags='$d_statfs_f_flags'
15316 d_statfs_s='$d_statfs_s'
15317 d_statvfs='$d_statvfs'
15318 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15319 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15320 d_stdio_stream_array='$d_stdio_stream_array'
15321 d_stdiobase='$d_stdiobase'
15322 d_stdstdio='$d_stdstdio'
15323 d_strchr='$d_strchr'
15324 d_strcoll='$d_strcoll'
15325 d_strctcpy='$d_strctcpy'
15326 d_strerrm='$d_strerrm'
15327 d_strerror='$d_strerror'
15328 d_strtod='$d_strtod'
15329 d_strtol='$d_strtol'
15330 d_strtold='$d_strtold'
15331 d_strtoll='$d_strtoll'
15332 d_strtoul='$d_strtoul'
15333 d_strtoull='$d_strtoull'
15334 d_strtouq='$d_strtouq'
15335 d_strxfrm='$d_strxfrm'
15336 d_suidsafe='$d_suidsafe'
15337 d_symlink='$d_symlink'
15338 d_syscall='$d_syscall'
15339 d_sysconf='$d_sysconf'
15340 d_sysernlst='$d_sysernlst'
15341 d_syserrlst='$d_syserrlst'
15342 d_system='$d_system'
15343 d_tcgetpgrp='$d_tcgetpgrp'
15344 d_tcsetpgrp='$d_tcsetpgrp'
15345 d_telldir='$d_telldir'
15346 d_telldirproto='$d_telldirproto'
15347 d_time='$d_time'
15348 d_times='$d_times'
15349 d_truncate='$d_truncate'
15350 d_tzname='$d_tzname'
15351 d_umask='$d_umask'
15352 d_uname='$d_uname'
15353 d_union_semun='$d_union_semun'
15354 d_ustat='$d_ustat'
15355 d_vendorarch='$d_vendorarch'
15356 d_vendorbin='$d_vendorbin'
15357 d_vendorlib='$d_vendorlib'
15358 d_vfork='$d_vfork'
15359 d_void_closedir='$d_void_closedir'
15360 d_voidsig='$d_voidsig'
15361 d_voidtty='$d_voidtty'
15362 d_volatile='$d_volatile'
15363 d_vprintf='$d_vprintf'
15364 d_wait4='$d_wait4'
15365 d_waitpid='$d_waitpid'
15366 d_wcstombs='$d_wcstombs'
15367 d_wctomb='$d_wctomb'
15368 d_xenix='$d_xenix'
15369 date='$date'
15370 db_hashtype='$db_hashtype'
15371 db_prefixtype='$db_prefixtype'
15372 defvoidused='$defvoidused'
15373 direntrytype='$direntrytype'
15374 dlext='$dlext'
15375 dlsrc='$dlsrc'
15376 doublesize='$doublesize'
15377 drand01='$drand01'
15378 dynamic_ext='$dynamic_ext'
15379 eagain='$eagain'
15380 ebcdic='$ebcdic'
15381 echo='$echo'
15382 egrep='$egrep'
15383 emacs='$emacs'
15384 eunicefix='$eunicefix'
15385 exe_ext='$exe_ext'
15386 expr='$expr'
15387 extensions='$extensions'
15388 fflushNULL='$fflushNULL'
15389 fflushall='$fflushall'
15390 find='$find'
15391 firstmakefile='$firstmakefile'
15392 flex='$flex'
15393 fpossize='$fpossize'
15394 fpostype='$fpostype'
15395 freetype='$freetype'
15396 full_ar='$full_ar'
15397 full_csh='$full_csh'
15398 full_sed='$full_sed'
15399 gccversion='$gccversion'
15400 gidformat='$gidformat'
15401 gidsign='$gidsign'
15402 gidsize='$gidsize'
15403 gidtype='$gidtype'
15404 glibpth='$glibpth'
15405 grep='$grep'
15406 groupcat='$groupcat'
15407 groupstype='$groupstype'
15408 gzip='$gzip'
15409 h_fcntl='$h_fcntl'
15410 h_sysfile='$h_sysfile'
15411 hint='$hint'
15412 hostcat='$hostcat'
15413 huge='$huge'
15414 i16size='$i16size'
15415 i16type='$i16type'
15416 i32size='$i32size'
15417 i32type='$i32type'
15418 i64size='$i64size'
15419 i64type='$i64type'
15420 i8size='$i8size'
15421 i8type='$i8type'
15422 i_arpainet='$i_arpainet'
15423 i_bsdioctl='$i_bsdioctl'
15424 i_db='$i_db'
15425 i_dbm='$i_dbm'
15426 i_dirent='$i_dirent'
15427 i_dld='$i_dld'
15428 i_dlfcn='$i_dlfcn'
15429 i_fcntl='$i_fcntl'
15430 i_float='$i_float'
15431 i_gdbm='$i_gdbm'
15432 i_grp='$i_grp'
15433 i_iconv='$i_iconv'
15434 i_ieeefp='$i_ieeefp'
15435 i_inttypes='$i_inttypes'
15436 i_limits='$i_limits'
15437 i_locale='$i_locale'
15438 i_machcthr='$i_machcthr'
15439 i_malloc='$i_malloc'
15440 i_math='$i_math'
15441 i_memory='$i_memory'
15442 i_mntent='$i_mntent'
15443 i_ndbm='$i_ndbm'
15444 i_netdb='$i_netdb'
15445 i_neterrno='$i_neterrno'
15446 i_netinettcp='$i_netinettcp'
15447 i_niin='$i_niin'
15448 i_poll='$i_poll'
15449 i_pthread='$i_pthread'
15450 i_pwd='$i_pwd'
15451 i_rpcsvcdbm='$i_rpcsvcdbm'
15452 i_sfio='$i_sfio'
15453 i_sgtty='$i_sgtty'
15454 i_shadow='$i_shadow'
15455 i_socks='$i_socks'
15456 i_stdarg='$i_stdarg'
15457 i_stddef='$i_stddef'
15458 i_stdlib='$i_stdlib'
15459 i_string='$i_string'
15460 i_sunmath='$i_sunmath'
15461 i_sysaccess='$i_sysaccess'
15462 i_sysdir='$i_sysdir'
15463 i_sysfile='$i_sysfile'
15464 i_sysfilio='$i_sysfilio'
15465 i_sysin='$i_sysin'
15466 i_sysioctl='$i_sysioctl'
15467 i_syslog='$i_syslog'
15468 i_sysmman='$i_sysmman'
15469 i_sysmode='$i_sysmode'
15470 i_sysmount='$i_sysmount'
15471 i_sysndir='$i_sysndir'
15472 i_sysparam='$i_sysparam'
15473 i_sysresrc='$i_sysresrc'
15474 i_syssecrt='$i_syssecrt'
15475 i_sysselct='$i_sysselct'
15476 i_syssockio='$i_syssockio'
15477 i_sysstat='$i_sysstat'
15478 i_sysstatfs='$i_sysstatfs'
15479 i_sysstatvfs='$i_sysstatvfs'
15480 i_systime='$i_systime'
15481 i_systimek='$i_systimek'
15482 i_systimes='$i_systimes'
15483 i_systypes='$i_systypes'
15484 i_sysuio='$i_sysuio'
15485 i_sysun='$i_sysun'
15486 i_sysutsname='$i_sysutsname'
15487 i_sysvfs='$i_sysvfs'
15488 i_syswait='$i_syswait'
15489 i_termio='$i_termio'
15490 i_termios='$i_termios'
15491 i_time='$i_time'
15492 i_unistd='$i_unistd'
15493 i_ustat='$i_ustat'
15494 i_utime='$i_utime'
15495 i_values='$i_values'
15496 i_varargs='$i_varargs'
15497 i_varhdr='$i_varhdr'
15498 i_vfork='$i_vfork'
15499 ignore_versioned_solibs='$ignore_versioned_solibs'
15500 inc_version_list='$inc_version_list'
15501 inc_version_list_init='$inc_version_list_init'
15502 incpath='$incpath'
15503 inews='$inews'
15504 installarchlib='$installarchlib'
15505 installbin='$installbin'
15506 installman1dir='$installman1dir'
15507 installman3dir='$installman3dir'
15508 installprefix='$installprefix'
15509 installprefixexp='$installprefixexp'
15510 installprivlib='$installprivlib'
15511 installscript='$installscript'
15512 installsitearch='$installsitearch'
15513 installsitebin='$installsitebin'
15514 installsitelib='$installsitelib'
15515 installstyle='$installstyle'
15516 installusrbinperl='$installusrbinperl'
15517 installvendorarch='$installvendorarch'
15518 installvendorbin='$installvendorbin'
15519 installvendorlib='$installvendorlib'
15520 intsize='$intsize'
15521 ivdformat='$ivdformat'
15522 ivsize='$ivsize'
15523 ivtype='$ivtype'
15524 known_extensions='$known_extensions'
15525 ksh='$ksh'
15526 large='$large'
15527 ld='$ld'
15528 lddlflags='$lddlflags'
15529 ldflags='$ldflags'
15530 ldlibpthname='$ldlibpthname'
15531 less='$less'
15532 lib_ext='$lib_ext'
15533 libc='$libc'
15534 libperl='$libperl'
15535 libpth='$libpth'
15536 libs='$libs'
15537 libsdirs='$libsdirs'
15538 libsfiles='$libsfiles'
15539 libsfound='$libsfound'
15540 libspath='$libspath'
15541 libswanted='$libswanted'
15542 line='$line'
15543 lint='$lint'
15544 lkflags='$lkflags'
15545 ln='$ln'
15546 lns='$lns'
15547 locincpth='$locincpth'
15548 loclibpth='$loclibpth'
15549 longdblsize='$longdblsize'
15550 longlongsize='$longlongsize'
15551 longsize='$longsize'
15552 lp='$lp'
15553 lpr='$lpr'
15554 ls='$ls'
15555 lseeksize='$lseeksize'
15556 lseektype='$lseektype'
15557 mail='$mail'
15558 mailx='$mailx'
15559 make='$make'
15560 make_set_make='$make_set_make'
15561 mallocobj='$mallocobj'
15562 mallocsrc='$mallocsrc'
15563 malloctype='$malloctype'
15564 man1dir='$man1dir'
15565 man1direxp='$man1direxp'
15566 man1ext='$man1ext'
15567 man3dir='$man3dir'
15568 man3direxp='$man3direxp'
15569 man3ext='$man3ext'
15570 medium='$medium'
15571 mips_type='$mips_type'
15572 mkdir='$mkdir'
15573 mmaptype='$mmaptype'
15574 models='$models'
15575 modetype='$modetype'
15576 more='$more'
15577 multiarch='$multiarch'
15578 mv='$mv'
15579 myarchname='$myarchname'
15580 mydomain='$mydomain'
15581 myhostname='$myhostname'
15582 myuname='$myuname'
15583 n='$n'
15584 netdb_hlen_type='$netdb_hlen_type'
15585 netdb_host_type='$netdb_host_type'
15586 netdb_name_type='$netdb_name_type'
15587 netdb_net_type='$netdb_net_type'
15588 nm='$nm'
15589 nm_opt='$nm_opt'
15590 nm_so_opt='$nm_so_opt'
15591 nonxs_ext='$nonxs_ext'
15592 nroff='$nroff'
15593 nvsize='$nvsize'
15594 nvtype='$nvtype'
15595 o_nonblock='$o_nonblock'
15596 obj_ext='$obj_ext'
15597 old_pthread_create_joinable='$old_pthread_create_joinable'
15598 optimize='$optimize'
15599 orderlib='$orderlib'
15600 osname='$osname'
15601 osvers='$osvers'
15602 package='$package'
15603 pager='$pager'
15604 passcat='$passcat'
15605 patchlevel='$patchlevel'
15606 path_sep='$path_sep'
15607 perl5='$perl5'
15608 perl='$perl'
15609 perladmin='$perladmin'
15610 perlpath='$perlpath'
15611 pg='$pg'
15612 phostname='$phostname'
15613 pidtype='$pidtype'
15614 plibpth='$plibpth'
15615 pm_apiversion='$pm_apiversion'
15616 pmake='$pmake'
15617 pr='$pr'
15618 prefix='$prefix'
15619 prefixexp='$prefixexp'
15620 privlib='$privlib'
15621 privlibexp='$privlibexp'
15622 prototype='$prototype'
15623 ptrsize='$ptrsize'
15624 quadkind='$quadkind'
15625 quadtype='$quadtype'
15626 randbits='$randbits'
15627 randfunc='$randfunc'
15628 randseedtype='$randseedtype'
15629 ranlib='$ranlib'
15630 rd_nodata='$rd_nodata'
15631 revision='$revision'
15632 rm='$rm'
15633 rmail='$rmail'
15634 runnm='$runnm'
15635 sPRIEldbl='$sPRIEldbl'
15636 sPRIFldbl='$sPRIFldbl'
15637 sPRIGldbl='$sPRIGldbl'
15638 sPRIX64='$sPRIX64'
15639 sPRId64='$sPRId64'
15640 sPRIeldbl='$sPRIeldbl'
15641 sPRIfldbl='$sPRIfldbl'
15642 sPRIgldbl='$sPRIgldbl'
15643 sPRIi64='$sPRIi64'
15644 sPRIo64='$sPRIo64'
15645 sPRIu64='$sPRIu64'
15646 sPRIx64='$sPRIx64'
15647 sched_yield='$sched_yield'
15648 scriptdir='$scriptdir'
15649 scriptdirexp='$scriptdirexp'
15650 sed='$sed'
15651 seedfunc='$seedfunc'
15652 selectminbits='$selectminbits'
15653 selecttype='$selecttype'
15654 sendmail='$sendmail'
15655 sh='$sh'
15656 shar='$shar'
15657 sharpbang='$sharpbang'
15658 shmattype='$shmattype'
15659 shortsize='$shortsize'
15660 shrpenv='$shrpenv'
15661 shsharp='$shsharp'
15662 sig_count='$sig_count'
15663 sig_name='$sig_name'
15664 sig_name_init='$sig_name_init'
15665 sig_num='$sig_num'
15666 sig_num_init='$sig_num_init'
15667 signal_t='$signal_t'
15668 sitearch='$sitearch'
15669 sitearchexp='$sitearchexp'
15670 sitebin='$sitebin'
15671 sitebinexp='$sitebinexp'
15672 sitelib='$sitelib'
15673 sitelib_stem='$sitelib_stem'
15674 sitelibexp='$sitelibexp'
15675 siteprefix='$siteprefix'
15676 siteprefixexp='$siteprefixexp'
15677 sizetype='$sizetype'
15678 sleep='$sleep'
15679 smail='$smail'
15680 small='$small'
15681 so='$so'
15682 sockethdr='$sockethdr'
15683 socketlib='$socketlib'
15684 socksizetype='$socksizetype'
15685 sort='$sort'
15686 spackage='$spackage'
15687 spitshell='$spitshell'
15688 split='$split'
15689 src='$src'
15690 ssizetype='$ssizetype'
15691 startperl='$startperl'
15692 startsh='$startsh'
15693 static_ext='$static_ext'
15694 stdchar='$stdchar'
15695 stdio_base='$stdio_base'
15696 stdio_bufsiz='$stdio_bufsiz'
15697 stdio_cnt='$stdio_cnt'
15698 stdio_filbuf='$stdio_filbuf'
15699 stdio_ptr='$stdio_ptr'
15700 stdio_stream_array='$stdio_stream_array'
15701 strings='$strings'
15702 submit='$submit'
15703 subversion='$subversion'
15704 sysman='$sysman'
15705 tail='$tail'
15706 tar='$tar'
15707 tbl='$tbl'
15708 tee='$tee'
15709 test='$test'
15710 timeincl='$timeincl'
15711 timetype='$timetype'
15712 touch='$touch'
15713 tr='$tr'
15714 trnl='$trnl'
15715 troff='$troff'
15716 u16size='$u16size'
15717 u16type='$u16type'
15718 u32size='$u32size'
15719 u32type='$u32type'
15720 u64size='$u64size'
15721 u64type='$u64type'
15722 u8size='$u8size'
15723 u8type='$u8type'
15724 uidformat='$uidformat'
15725 uidsign='$uidsign'
15726 uidsize='$uidsize'
15727 uidtype='$uidtype'
15728 uname='$uname'
15729 uniq='$uniq'
15730 uquadtype='$uquadtype'
15731 use5005threads='$use5005threads'
15732 use64bitall='$use64bitall'
15733 use64bitint='$use64bitint'
15734 usedl='$usedl'
15735 useithreads='$useithreads'
15736 uselargefiles='$uselargefiles'
15737 uselongdouble='$uselongdouble'
15738 usemorebits='$usemorebits'
15739 usemultiplicity='$usemultiplicity'
15740 usemymalloc='$usemymalloc'
15741 usenm='$usenm'
15742 useopcode='$useopcode'
15743 useperlio='$useperlio'
15744 useposix='$useposix'
15745 usesfio='$usesfio'
15746 useshrplib='$useshrplib'
15747 usesocks='$usesocks'
15748 usethreads='$usethreads'
15749 usevendorprefix='$usevendorprefix'
15750 usevfork='$usevfork'
15751 usrinc='$usrinc'
15752 uuname='$uuname'
15753 uvoformat='$uvoformat'
15754 uvsize='$uvsize'
15755 uvtype='$uvtype'
15756 uvuformat='$uvuformat'
15757 uvxformat='$uvxformat'
15758 vendorarch='$vendorarch'
15759 vendorarchexp='$vendorarchexp'
15760 vendorbin='$vendorbin'
15761 vendorbinexp='$vendorbinexp'
15762 vendorlib='$vendorlib'
15763 vendorlib_stem='$vendorlib_stem'
15764 vendorlibexp='$vendorlibexp'
15765 vendorprefix='$vendorprefix'
15766 vendorprefixexp='$vendorprefixexp'
15767 version='$version'
15768 vi='$vi'
15769 voidflags='$voidflags'
15770 xlibpth='$xlibpth'
15771 xs_apiversion='$xs_apiversion'
15772 zcat='$zcat'
15773 zip='$zip'
15774 EOT
15775
15776 : Add in command line options if available
15777 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15778
15779 : add special variables
15780 $test -f $src/patchlevel.h && \
15781 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15782 echo "CONFIGDOTSH=true" >>config.sh
15783
15784 : propagate old symbols
15785 if $test -f UU/config.sh; then
15786         <UU/config.sh sort | uniq >UU/oldconfig.sh
15787         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15788         sort | uniq -u >UU/oldsyms
15789         set X `cat UU/oldsyms`
15790         shift
15791         case $# in
15792         0) ;;
15793         *)
15794                 cat <<EOM
15795 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15796 EOM
15797                 echo "# Variables propagated from previous config.sh file." >>config.sh
15798                 for sym in `cat UU/oldsyms`; do
15799                         echo "    Propagating $hint variable "'$'"$sym..."
15800                         eval 'tmp="$'"${sym}"'"'
15801                         echo "$tmp" | \
15802                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15803                 done
15804                 ;;
15805         esac
15806 fi
15807
15808 : Finish up by extracting the .SH files
15809 case "$alldone" in
15810 exit)
15811         $rm -rf UU
15812         echo "Done."
15813         exit 0
15814         ;;
15815 cont)
15816         ;;
15817 '')
15818         dflt=''
15819         nostick=true
15820         $cat <<EOM
15821
15822 If you'd like to make any changes to the config.sh file before I begin
15823 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15824
15825 EOM
15826         rp="Press return or use a shell escape to edit config.sh:"
15827         . UU/myread
15828         nostick=''
15829         case "$ans" in
15830         '') ;;
15831         *) : in case they cannot read
15832                 sh 1>&4 -c "$ans";;
15833         esac
15834         ;;
15835 esac
15836
15837 : if this fails, just run all the .SH files by hand
15838 . ./config.sh
15839
15840 echo " "
15841 exec 1>&4
15842 . ./UU/extract
15843
15844 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15845         dflt=y
15846         case "$silent" in
15847         true) ;;
15848         *)
15849                 $cat <<EOM
15850
15851 Now you need to generate make dependencies by running "$make depend".
15852 You might prefer to run it in background: "$make depend > makedepend.out &"
15853 It can take a while, so you might not want to run it right now.
15854
15855 EOM
15856                 ;;
15857         esac
15858         rp="Run $make depend now?"
15859         . UU/myread
15860         case "$ans" in
15861         y*)
15862                 $make depend && echo "Now you must run a $make."
15863                 ;;
15864         *)
15865                 echo "You must run '$make depend' then '$make'."
15866                 ;;
15867         esac
15868 elif test -f [Mm]akefile; then
15869         echo " "
15870         echo "Now you must run a $make."
15871 else
15872         echo "Done."
15873 fi
15874
15875 if $test -f Policy.sh; then
15876     $cat <<EOM
15877
15878 If you compile $package on a different machine or from a different object
15879 directory, copy the Policy.sh file from this object directory to the
15880 new one before you run Configure -- this will help you with most of
15881 the policy defaults.
15882
15883 EOM
15884 fi
15885 if $test -f config.msg; then
15886     echo "Hmm.  I also noted the following information while running:"
15887     echo " "
15888     $cat config.msg >&4
15889     $rm -f config.msg
15890 fi
15891 $rm -f kit*isdone ark*isdone
15892 $rm -rf UU
15893
15894 : End of Configure
15895