Configure -A stopped processing of any further options.
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon Feb 14 06:52:21 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_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getcwd=''
366 d_getgrent=''
367 d_getgrps=''
368 d_gethbyaddr=''
369 d_gethbyname=''
370 d_gethent=''
371 aphostname=''
372 d_gethname=''
373 d_phostname=''
374 d_uname=''
375 d_gethostprotos=''
376 d_getlogin=''
377 d_getmnt=''
378 d_getmntent=''
379 d_getnbyaddr=''
380 d_getnbyname=''
381 d_getnent=''
382 d_getnetprotos=''
383 d_getpent=''
384 d_getpgid=''
385 d_getpgrp2=''
386 d_bsdgetpgrp=''
387 d_getpgrp=''
388 d_getppid=''
389 d_getprior=''
390 d_getpbyname=''
391 d_getpbynumber=''
392 d_getprotoprotos=''
393 d_getpwent=''
394 d_getsent=''
395 d_getservprotos=''
396 d_getspent=''
397 d_getspnam=''
398 d_getsbyname=''
399 d_getsbyport=''
400 d_gnulibc=''
401 d_hasmntopt=''
402 d_htonl=''
403 d_iconv=''
404 d_inetaton=''
405 d_int64t=''
406 d_isascii=''
407 d_killpg=''
408 d_lchown=''
409 d_ldbl_dig=''
410 d_link=''
411 d_locconv=''
412 d_lockf=''
413 d_longdbl=''
414 longdblsize=''
415 d_longlong=''
416 longlongsize=''
417 d_lstat=''
418 d_mblen=''
419 d_mbstowcs=''
420 d_mbtowc=''
421 d_memchr=''
422 d_memcmp=''
423 d_memcpy=''
424 d_memmove=''
425 d_memset=''
426 d_mkdir=''
427 d_mkdtemp=''
428 d_mkfifo=''
429 d_mkstemp=''
430 d_mkstemps=''
431 d_mktime=''
432 d_mmap=''
433 mmaptype=''
434 d_mprotect=''
435 d_msg=''
436 d_msgctl=''
437 d_msgget=''
438 d_msgrcv=''
439 d_msgsnd=''
440 d_msync=''
441 d_munmap=''
442 d_nice=''
443 d_open3=''
444 d_fpathconf=''
445 d_pathconf=''
446 d_pause=''
447 d_pipe=''
448 d_poll=''
449 d_portable=''
450 d_old_pthread_create_joinable=''
451 old_pthread_create_joinable=''
452 d_pthread_yield=''
453 d_sched_yield=''
454 sched_yield=''
455 d_readdir=''
456 d_rewinddir=''
457 d_seekdir=''
458 d_telldir=''
459 d_readlink=''
460 d_rename=''
461 d_rmdir=''
462 d_safebcpy=''
463 d_safemcpy=''
464 d_sanemcmp=''
465 d_select=''
466 d_sem=''
467 d_semctl=''
468 d_semget=''
469 d_semop=''
470 d_setegid=''
471 d_seteuid=''
472 d_setgrent=''
473 d_setgrps=''
474 d_sethent=''
475 d_setlinebuf=''
476 d_setlocale=''
477 d_setnent=''
478 d_setpent=''
479 d_setpgid=''
480 d_setpgrp2=''
481 d_bsdsetpgrp=''
482 d_setpgrp=''
483 d_setprior=''
484 d_setpwent=''
485 d_setregid=''
486 d_setresgid=''
487 d_setresuid=''
488 d_setreuid=''
489 d_setrgid=''
490 d_setruid=''
491 d_setsent=''
492 d_setsid=''
493 d_setspent=''
494 d_setvbuf=''
495 d_sfio=''
496 usesfio=''
497 d_shm=''
498 d_shmat=''
499 d_shmatprototype=''
500 shmattype=''
501 d_shmctl=''
502 d_shmdt=''
503 d_shmget=''
504 d_sigaction=''
505 d_sigsetjmp=''
506 d_msg_ctrunc=''
507 d_msg_dontroute=''
508 d_msg_oob=''
509 d_msg_peek=''
510 d_msg_proxy=''
511 d_oldsock=''
512 d_scm_rights=''
513 d_socket=''
514 d_sockpair=''
515 sockethdr=''
516 socketlib=''
517 d_sqrtl=''
518 d_statblks=''
519 d_statfs_f_flags=''
520 d_statfs_s=''
521 d_fstatvfs=''
522 d_statvfs=''
523 d_stdio_cnt_lval=''
524 d_stdio_ptr_lval=''
525 d_stdiobase=''
526 d_stdstdio=''
527 stdio_base=''
528 stdio_bufsiz=''
529 stdio_cnt=''
530 stdio_filbuf=''
531 stdio_ptr=''
532 d_index=''
533 d_strchr=''
534 d_strcoll=''
535 d_strctcpy=''
536 d_strerrm=''
537 d_strerror=''
538 d_sysernlst=''
539 d_syserrlst=''
540 d_strtod=''
541 d_strtol=''
542 d_strtold=''
543 d_strtoll=''
544 d_strtoul=''
545 d_strtoull=''
546 d_strtouq=''
547 d_strxfrm=''
548 d_symlink=''
549 d_syscall=''
550 d_sysconf=''
551 d_system=''
552 d_tcgetpgrp=''
553 d_tcsetpgrp=''
554 d_telldirproto=''
555 d_time=''
556 timetype=''
557 clocktype=''
558 d_times=''
559 d_truncate=''
560 d_tzname=''
561 d_umask=''
562 d_semctl_semid_ds=''
563 d_semctl_semun=''
564 d_union_semun=''
565 d_ustat=''
566 d_vfork=''
567 usevfork=''
568 d_voidsig=''
569 signal_t=''
570 d_volatile=''
571 d_charvspr=''
572 d_vprintf=''
573 d_wait4=''
574 d_waitpid=''
575 d_wcstombs=''
576 d_wctomb=''
577 dlext=''
578 cccdlflags=''
579 ccdlflags=''
580 dlsrc=''
581 ld=''
582 lddlflags=''
583 usedl=''
584 doublesize=''
585 ebcdic=''
586 fflushNULL=''
587 fflushall=''
588 fpossize=''
589 fpostype=''
590 gidformat=''
591 gidsign=''
592 gidsize=''
593 gidtype=''
594 groupstype=''
595 h_fcntl=''
596 h_sysfile=''
597 i_arpainet=''
598 db_hashtype=''
599 db_prefixtype=''
600 i_db=''
601 i_dbm=''
602 i_rpcsvcdbm=''
603 d_dirnamlen=''
604 direntrytype=''
605 i_dirent=''
606 i_dld=''
607 i_dlfcn=''
608 i_fcntl=''
609 i_float=''
610 i_gdbm=''
611 d_grpasswd=''
612 i_grp=''
613 i_iconv=''
614 i_inttypes=''
615 i_limits=''
616 i_locale=''
617 i_machcthr=''
618 i_malloc=''
619 i_math=''
620 i_memory=''
621 i_mntent=''
622 i_ndbm=''
623 i_netdb=''
624 i_neterrno=''
625 i_netinettcp=''
626 i_niin=''
627 i_sysin=''
628 i_poll=''
629 i_pthread=''
630 d_pwage=''
631 d_pwchange=''
632 d_pwclass=''
633 d_pwcomment=''
634 d_pwexpire=''
635 d_pwgecos=''
636 d_pwpasswd=''
637 d_pwquota=''
638 i_pwd=''
639 i_sfio=''
640 i_shadow=''
641 i_socks=''
642 i_stddef=''
643 i_stdlib=''
644 i_string=''
645 strings=''
646 i_sysaccess=''
647 i_sysdir=''
648 i_sysfile=''
649 d_voidtty=''
650 i_bsdioctl=''
651 i_sysfilio=''
652 i_sysioctl=''
653 i_syssockio=''
654 i_syslog=''
655 i_sysmman=''
656 i_sysmount=''
657 i_sysndir=''
658 i_sysparam=''
659 i_sysresrc=''
660 i_syssecrt=''
661 i_sysselct=''
662 i_sysstat=''
663 i_sysstatfs=''
664 i_sysstatvfs=''
665 i_systimes=''
666 i_systypes=''
667 i_sysuio=''
668 i_sysun=''
669 i_sysvfs=''
670 i_syswait=''
671 i_sgtty=''
672 i_termio=''
673 i_termios=''
674 i_systime=''
675 i_systimek=''
676 i_time=''
677 timeincl=''
678 i_unistd=''
679 i_ustat=''
680 i_utime=''
681 i_values=''
682 i_stdarg=''
683 i_varargs=''
684 i_varhdr=''
685 i_vfork=''
686 inc_version_list=''
687 inc_version_list_init=''
688 installprefix=''
689 installprefixexp=''
690 installstyle=''
691 installusrbinperl=''
692 intsize=''
693 longsize=''
694 shortsize=''
695 d_fpos64_t=''
696 d_off64_t=''
697 libc=''
698 ldlibpthname=''
699 libperl=''
700 shrpenv=''
701 useshrplib=''
702 glibpth=''
703 libpth=''
704 loclibpth=''
705 plibpth=''
706 xlibpth=''
707 ignore_versioned_solibs=''
708 libs=''
709 libsdirs=''
710 libsfiles=''
711 libsfound=''
712 lns=''
713 d_PRIEldbl=''
714 d_PRIFldbl=''
715 d_PRIGldbl=''
716 d_PRIeldbl=''
717 d_PRIfldbl=''
718 d_PRIgldbl=''
719 sPRIEldbl=''
720 sPRIFldbl=''
721 sPRIGldbl=''
722 sPRIeldbl=''
723 sPRIfldbl=''
724 sPRIgldbl=''
725 lseeksize=''
726 lseektype=''
727 make_set_make=''
728 d_mymalloc=''
729 freetype=''
730 mallocobj=''
731 mallocsrc=''
732 malloctype=''
733 usemymalloc=''
734 installman1dir=''
735 man1dir=''
736 man1direxp=''
737 man1ext=''
738 installman3dir=''
739 man3dir=''
740 man3direxp=''
741 man3ext=''
742 huge=''
743 large=''
744 medium=''
745 models=''
746 small=''
747 split=''
748 modetype=''
749 multiarch=''
750 mydomain=''
751 myhostname=''
752 phostname=''
753 c=''
754 n=''
755 d_eofnblk=''
756 eagain=''
757 o_nonblock=''
758 rd_nodata=''
759 netdb_hlen_type=''
760 netdb_host_type=''
761 netdb_name_type=''
762 netdb_net_type=''
763 groupcat=''
764 hostcat=''
765 passcat=''
766 orderlib=''
767 ranlib=''
768 package=''
769 spackage=''
770 pager=''
771 api_revision=''
772 api_subversion=''
773 api_version=''
774 api_versionstring=''
775 patchlevel=''
776 subversion=''
777 version=''
778 perladmin=''
779 perlpath=''
780 d_nv_preserves_uv=''
781 i16size=''
782 i16type=''
783 i32size=''
784 i32type=''
785 i64size=''
786 i64type=''
787 i8size=''
788 i8type=''
789 ivsize=''
790 ivtype=''
791 nvsize=''
792 nvtype=''
793 u16size=''
794 u16type=''
795 u32size=''
796 u32type=''
797 u64size=''
798 u64type=''
799 u8size=''
800 u8type=''
801 uvsize=''
802 uvtype=''
803 ivdformat=''
804 uvoformat=''
805 uvuformat=''
806 uvxformat=''
807 pidtype=''
808 prefix=''
809 prefixexp=''
810 installprivlib=''
811 privlib=''
812 privlibexp=''
813 prototype=''
814 ptrsize=''
815 d_PRIX64=''
816 d_PRId64=''
817 d_PRIi64=''
818 d_PRIo64=''
819 d_PRIu64=''
820 d_PRIx64=''
821 sPRIX64=''
822 sPRId64=''
823 sPRIi64=''
824 sPRIo64=''
825 sPRIu64=''
826 sPRIx64=''
827 d_quad=''
828 quadkind=''
829 quadtype=''
830 uquadtype=''
831 drand01=''
832 randbits=''
833 randfunc=''
834 randseedtype=''
835 seedfunc=''
836 installscript=''
837 scriptdir=''
838 scriptdirexp=''
839 selectminbits=''
840 selecttype=''
841 sh=''
842 sig_count=''
843 sig_name=''
844 sig_name_init=''
845 sig_num=''
846 sig_num_init=''
847 installsitearch=''
848 sitearch=''
849 sitearchexp=''
850 installsitebin=''
851 sitebin=''
852 sitebinexp=''
853 installsitelib=''
854 sitelib=''
855 sitelibexp=''
856 siteprefix=''
857 siteprefixexp=''
858 sizetype=''
859 so=''
860 sharpbang=''
861 shsharp=''
862 spitshell=''
863 src=''
864 ssizetype=''
865 startperl=''
866 startsh=''
867 stdchar=''
868 d_stdio_stream_array=''
869 stdio_stream_array=''
870 sysman=''
871 trnl=''
872 uidformat=''
873 uidsign=''
874 uidsize=''
875 uidtype=''
876 archname64=''
877 use64bits=''
878 uselargefiles=''
879 uselongdouble=''
880 usemorebits=''
881 usemultiplicity=''
882 nm_opt=''
883 nm_so_opt=''
884 runnm=''
885 usenm=''
886 useperlio=''
887 usesocks=''
888 d_oldpthreads=''
889 use5005threads=''
890 useithreads=''
891 usethreads=''
892 incpath=''
893 mips_type=''
894 usrinc=''
895 d_vendorbin=''
896 installvendorbin=''
897 vendorbin=''
898 vendorbinexp=''
899 d_vendorlib=''
900 installvendorlib=''
901 vendorlib=''
902 vendorlibexp=''
903 usevendorprefix=''
904 vendorprefix=''
905 vendorprefixexp=''
906 defvoidused=''
907 voidflags=''
908 pm_apiversion=''
909 xs_apiversion=''
910 CONFIG=''
911
912 define='define'
913 undef='undef'
914 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
915 rmlist=''
916
917 : We must find out about Eunice early
918 eunicefix=':'
919 if test -f /etc/unixtovms; then
920         eunicefix=/etc/unixtovms
921 fi
922 if test -f /etc/unixtovms.exe; then
923         eunicefix=/etc/unixtovms.exe
924 fi
925
926 i_whoami=''
927 : set useposix=false in your hint file to disable the POSIX extension.
928 useposix=true
929 : set useopcode=false in your hint file to disable the Opcode extension.
930 useopcode=true
931 : Trailing extension.  Override this in a hint file, if needed.
932 _exe=''
933 : Extra object files, if any, needed on this platform.
934 archobjs=''
935 : Possible local include directories to search.
936 : Set locincpth to "" in a hint file to defeat local include searches.
937 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
938 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
939 :
940 : no include file wanted by default
941 inclwanted=''
942
943 groupstype=''
944 : change the next line if compiling for Xenix/286 on Xenix/386
945 xlibpth='/usr/lib/386 /lib/386'
946
947 : Possible local library directories to search.
948 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
949 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
950
951 : general looking path for locating libraries
952 glibpth="/shlib /usr/shlib /lib/pa20_64 /lib/pa1.1 /usr/lib/large"
953 glibpth="$glibpth /lib /usr/lib $xlibpth"
954 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
955 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
956
957 : Private path used by Configure to find libraries.  Its value
958 : is prepended to libpth. This variable takes care of special
959 : machines, like the mips.  Usually, it should be empty.
960 plibpth=''
961
962 : default library list
963 libswanted=''
964 : some systems want to use only the non-versioned libso:s
965 ignore_versioned_solibs=''
966 : set usemultiplicity on the Configure command line to enable multiplicity.
967 : set usesocks on the Configure command line to enable socks.
968 : set usethreads on the Configure command line to enable threads.
969 : full support for void wanted by default
970 defvoidused=15
971
972 : List of libraries we want.
973 : If anyone needs -lnet, put it in a hint file.
974 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
975 libswanted="$libswanted dld ld sun m c cposix posix"
976 libswanted="$libswanted ndir dir crypt sec"
977 libswanted="$libswanted ucb bsd BSD PW x"
978 : We probably want to search /usr/shlib before most other libraries.
979 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
980 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
981 glibpth="/usr/shlib $glibpth"
982 : Do not use vfork unless overridden by a hint file.
983 usevfork=false
984
985 : Find the basic shell for Bourne shell scripts
986 case "$sh" in
987 '')
988         case "$SYSTYPE" in
989         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
990         *) xxx='/bin/sh';;
991         esac
992         if test -f "$xxx"; then
993                 sh="$xxx"
994         else
995                 : Build up a list and do a single loop so we can 'break' out.
996                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
997                 for xxx in sh bash ksh pdksh ash; do
998                         for p in $pth; do
999                                 try="$try ${p}/${xxx}"
1000                         done
1001                 done
1002                 for xxx in $try; do
1003                         if test -f "$xxx"; then
1004                                 sh="$xxx";
1005                                 break
1006                         elif test -f "$xxx.exe"; then
1007                                 sh="$xxx";
1008                                 break
1009                         fi
1010                 done
1011         fi
1012         ;;
1013 esac
1014
1015 case "$sh" in
1016 '')     cat <<EOM >&2
1017 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1018
1019 Usually it's in /bin/sh.  How did you even get this far?
1020 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1021 we'll try to straighten this all out.
1022 EOM
1023         exit 1
1024         ;;
1025 esac
1026
1027 : see if sh knows # comments
1028 if `$sh -c '#' >/dev/null 2>&1`; then
1029         shsharp=true
1030         spitshell=cat
1031         xcat=/bin/cat
1032         test -f $xcat || xcat=/usr/bin/cat
1033         echo "#!$xcat" >try
1034         $eunicefix try
1035         chmod +x try
1036         ./try > today
1037         if test -s today; then
1038                 sharpbang='#!'
1039         else
1040                 echo "#! $xcat" > try
1041                 $eunicefix try
1042                 chmod +x try
1043                 ./try > today
1044                 if test -s today; then
1045                         sharpbang='#! '
1046                 else
1047                         sharpbang=': use '
1048                 fi
1049         fi
1050 else
1051         echo " "
1052         echo "Your $sh doesn't grok # comments--I will strip them later on."
1053         shsharp=false
1054         cd ..
1055         echo "exec grep -v '^[  ]*#'" >spitshell
1056         chmod +x spitshell
1057         $eunicefix spitshell
1058         spitshell=`pwd`/spitshell
1059         cd UU
1060         echo "I presume that if # doesn't work, #! won't work either!"
1061         sharpbang=': use '
1062 fi
1063 rm -f try today
1064
1065 : figure out how to guarantee sh startup
1066 case "$startsh" in
1067 '') startsh=${sharpbang}${sh} ;;
1068 *)
1069 esac
1070 cat >try <<EOSS
1071 $startsh
1072 set abc
1073 test "$?abc" != 1
1074 EOSS
1075
1076 chmod +x try
1077 $eunicefix try
1078 if ./try; then
1079         : echo "Yup, it does."
1080 else
1081         echo "Hmm... '$startsh' does not guarantee sh startup..."
1082         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1083 fi
1084 rm -f try
1085
1086
1087 : Save command line options in file UU/cmdline.opt for later use in
1088 : generating config.sh.
1089 cat > cmdline.opt <<EOSH
1090 # Configure command line arguments.
1091 config_arg0='$0'
1092 config_args='$*'
1093 config_argc=$#
1094 EOSH
1095 argn=1
1096 for arg in "$@"; do
1097         cat >>cmdline.opt <<EOSH
1098 config_arg$argn='$arg'
1099 EOSH
1100         argn=`expr $argn + 1`
1101 done
1102
1103 : produce awk script to parse command line options
1104 cat >options.awk <<'EOF'
1105 BEGIN {
1106         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1107
1108         len = length(optstr);
1109         for (i = 1; i <= len; i++) {
1110                 c = substr(optstr, i, 1);
1111                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1112                 if (a == ":") {
1113                         arg[c] = 1;
1114                         i++;
1115                 }
1116                 opt[c] = 1;
1117         }
1118 }
1119 {
1120         expect = 0;
1121         str = $0;
1122         if (substr(str, 1, 1) != "-") {
1123                 printf("'%s'\n", str);
1124                 next;
1125         }
1126         len = length($0);
1127         for (i = 2; i <= len; i++) {
1128                 c = substr(str, i, 1);
1129                 if (!opt[c]) {
1130                         printf("-%s\n", substr(str, i));
1131                         next;
1132                 }
1133                 printf("-%s\n", c);
1134                 if (arg[c]) {
1135                         if (i < len)
1136                                 printf("'%s'\n", substr(str, i + 1));
1137                         else
1138                                 expect = 1;
1139                         next;
1140                 }
1141         }
1142 }
1143 END {
1144         if (expect)
1145                 print "?";
1146 }
1147 EOF
1148
1149 : process the command line options
1150 set X `for arg in "$@"; do echo "X$arg"; done |
1151         sed -e s/X// | awk -f options.awk`
1152 eval "set $*"
1153 shift
1154 rm -f options.awk
1155
1156 : set up default values
1157 fastread=''
1158 reuseval=false
1159 config_sh=''
1160 alldone=''
1161 error=''
1162 silent=''
1163 extractsh=''
1164 override=''
1165 knowitall=''
1166 rm -f optdef.sh posthint.sh
1167 cat >optdef.sh <<EOS
1168 $startsh
1169 EOS
1170
1171
1172 : option parsing
1173 while test $# -gt 0; do
1174         case "$1" in
1175         -d) shift; fastread=yes;;
1176         -e) shift; alldone=cont;;
1177         -f)
1178                 shift
1179                 cd ..
1180                 if test -r "$1"; then
1181                         config_sh="$1"
1182                 else
1183                         echo "$me: cannot read config file $1." >&2
1184                         error=true
1185                 fi
1186                 cd UU
1187                 shift;;
1188         -h) shift; error=true;;
1189         -r) shift; reuseval=true;;
1190         -s) shift; silent=true; realsilent=true;;
1191         -E) shift; alldone=exit;;
1192         -K) shift; knowitall=true;;
1193         -O) shift; override=true;;
1194         -S) shift; silent=true; extractsh=true;;
1195         -D)
1196                 shift
1197                 case "$1" in
1198                 *=)
1199                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1200                         echo "$me: ignoring -D $1" >&2
1201                         ;;
1202                 *=*) echo "$1" | \
1203                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1204                 *) echo "$1='define'" >> optdef.sh;;
1205                 esac
1206                 shift
1207                 ;;
1208         -U)
1209                 shift
1210                 case "$1" in
1211                 *=) echo "$1" >> optdef.sh;;
1212                 *=*)
1213                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1214                         echo "$me: ignoring -U $1" >&2
1215                         ;;
1216                 *) echo "$1='undef'" >> optdef.sh;;
1217                 esac
1218                 shift
1219                 ;;
1220         -A)
1221             shift
1222             xxx=''
1223             yyy="$1"
1224             zzz=''
1225             uuu=undef
1226             case "$yyy" in
1227             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1228                  case "$zzz" in
1229                  *:*) zzz='' ;;
1230                  *)   xxx=append
1231                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1232                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1233                  esac
1234                  ;;
1235             esac
1236             case "$xxx" in
1237             '')  case "$yyy" in
1238                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1239                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1240                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1241                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1242                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1243                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1244                  esac
1245                  ;;       
1246             esac
1247             case "$xxx" in
1248             append)
1249                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1250             clear)
1251                 echo "$yyy=''"                  >> posthint.sh ;;
1252             define)
1253                 case "$zzz" in
1254                 '') zzz=define ;;
1255                 esac
1256                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1257             eval)
1258                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1259             prepend)
1260                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1261             undef)
1262                 case "$zzz" in
1263                 '') zzz="$uuu" ;;
1264                 esac
1265                 echo "$yyy=$zzz"                >> posthint.sh ;;
1266             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1267             esac
1268             shift
1269             ;;
1270         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1271             exit 0;;
1272         --) break;;
1273         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1274         *) break;;
1275         esac
1276 done
1277
1278 case "$error" in
1279 true)
1280         cat >&2 <<EOM
1281 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1282                  [-U symbol] [-U symbol=] [-A command:symbol...]
1283   -d : use defaults for all answers.
1284   -e : go on without questioning past the production of config.sh.
1285   -f : specify an alternate default configuration file.
1286   -h : print this help message and exit (with an error status).
1287   -r : reuse C symbols value if possible (skips costly nm extraction).
1288   -s : silent mode, only echoes questions and essential information.
1289   -D : define symbol to have some value:
1290          -D symbol         symbol gets the value 'define'
1291          -D symbol=value   symbol gets the value 'value'
1292   -E : stop at the end of questions, after having produced config.sh.
1293   -K : do not use unless you know what you are doing.
1294   -O : let -D and -U override definitions from loaded configuration file.
1295   -S : perform variable substitutions on all .SH files (can mix with -f)
1296   -U : undefine symbol:
1297          -U symbol    symbol gets the value 'undef'
1298          -U symbol=   symbol gets completely empty
1299   -A : manipulate symbol after the platform specific hints have been applied:
1300          -A symbol=value                append " "value to symbol
1301          -A append:symbol=value         append value to symbol
1302          -A define:symbol=value         define symbol to have value
1303          -A clear:symbol                define symbol to be ''
1304          -A define:symbol               define symbol to be 'define'
1305          -A eval:symbol=value           define symbol to be eval of value
1306          -A prepend:symbol=value        prepend value to symbol
1307          -A undef:symbol                define symbol to be 'undef'
1308          -A undef:symbol=               define symbol to be ''
1309   -V : print version number and exit (with a zero status).
1310 EOM
1311         exit 1
1312         ;;
1313 esac
1314
1315 : Sanity checks
1316 case "$fastread$alldone" in
1317 yescont|yesexit) ;;
1318 *)
1319         if test ! -t 0; then
1320                 echo "Say 'sh Configure', not 'sh <Configure'"
1321                 exit 1
1322         fi
1323         ;;
1324 esac
1325
1326 exec 4>&1
1327 case "$silent" in
1328 true) exec 1>/dev/null;;
1329 esac
1330
1331 : run the defines and the undefines, if any, but leave the file out there...
1332 touch optdef.sh
1333 . ./optdef.sh
1334 : create the posthint manipulation script and leave the file out there...
1335 touch posthint.sh
1336
1337 : set package name
1338 package=perl5
1339 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1340 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1341 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1342 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1343 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1344 esac
1345
1346 : Some greps do not return status, grrr.
1347 echo "grimblepritz" >grimble
1348 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1349         contains=contains
1350 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1351         contains=grep
1352 else
1353         contains=contains
1354 fi
1355 rm -f grimble
1356 : the following should work in any shell
1357 case "$contains" in
1358 contains*)
1359         echo " "
1360         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1361         cat >contains <<'EOSS'
1362 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1363 EOSS
1364 chmod +x contains
1365 esac
1366
1367 : Find the path to the source tree
1368 case "$src" in
1369 '') case "$0" in
1370     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1371          case "$src" in
1372          /*)    ;;
1373          *)     src=`cd ../$src && pwd` ;;
1374          esac
1375          ;;
1376     *)   src='.';;
1377     esac;;
1378 esac
1379 case "$src" in
1380 '')     src=/
1381         rsrc=/
1382         ;;
1383 /*) rsrc="$src";;
1384 *) rsrc="../$src";;
1385 esac
1386 if test -f $rsrc/Configure && \
1387         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1388 then
1389    : found it, so we are ok.
1390 else
1391         rsrc=''
1392         for src in . .. ../.. ../../.. ../../../..; do
1393                 if test -f ../$src/Configure && \
1394                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1395                 then
1396                         rsrc=../$src
1397                         break
1398                 fi
1399         done
1400 fi
1401 case "$rsrc" in
1402 '')
1403         cat <<EOM >&4
1404
1405 Sorry, I can't seem to locate the source dir for $package.  Please start
1406 Configure with an explicit path -- i.e. /some/path/Configure.
1407
1408 EOM
1409         exit 1
1410         ;;
1411 ../.)   rsrc='..';;
1412 *)
1413         echo " "
1414         echo "Sources for $package found in \"$src\"." >&4
1415         ;;
1416 esac
1417
1418 : script used to extract .SH files with variable substitutions
1419 cat >extract <<'EOS'
1420 CONFIGDOTSH=true
1421 echo "Doing variable substitutions on .SH files..."
1422 if test -f $src/MANIFEST; then
1423         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1424 else
1425         echo "(Looking for .SH files under the source directory.)"
1426         set x `(cd $src; find . -name "*.SH" -print)`
1427 fi
1428 shift
1429 case $# in
1430 0) set x `(cd $src; echo *.SH)`; shift;;
1431 esac
1432 if test ! -f $src/$1; then
1433         shift
1434 fi
1435 mkdir_p='
1436 name=$1;
1437 create="";
1438 while test $name; do
1439         if test ! -d "$name"; then
1440                 create="$name $create";
1441                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1442                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1443         else
1444                 name="";
1445         fi;
1446 done;
1447 for file in $create; do
1448         mkdir $file;
1449 done
1450 '
1451 for file in $*; do
1452         case "$src" in
1453         ".")
1454                 case "$file" in
1455                 */*)
1456                         dir=`expr X$file : 'X\(.*\)/'`
1457                         file=`expr X$file : 'X.*/\(.*\)'`
1458                         (cd $dir && . ./$file)
1459                         ;;
1460                 *)
1461                         . ./$file
1462                         ;;
1463                 esac
1464                 ;;
1465         *)
1466                 case "$file" in
1467                 */*)
1468                         dir=`expr X$file : 'X\(.*\)/'`
1469                         file=`expr X$file : 'X.*/\(.*\)'`
1470                         (set x $dir; shift; eval $mkdir_p)
1471                         sh <$src/$dir/$file
1472                         ;;
1473                 *)
1474                         sh <$src/$file
1475                         ;;
1476                 esac
1477                 ;;
1478         esac
1479 done
1480 if test -f $src/config_h.SH; then
1481         if test ! -f config.h; then
1482         : oops, they left it out of MANIFEST, probably, so do it anyway.
1483         . $src/config_h.SH
1484         fi
1485 fi
1486 EOS
1487
1488 : extract files and exit if asked to do so
1489 case "$extractsh" in
1490 true)
1491         case "$realsilent" in
1492         true) ;;
1493         *) exec 1>&4;;
1494         esac
1495         case "$config_sh" in
1496         '') config_sh='config.sh';;
1497         esac
1498         echo " "
1499         echo "Fetching answers from $config_sh..."
1500         cd ..
1501         . $config_sh
1502         test "$override" && . ./optdef.sh
1503         echo " "
1504         . UU/extract
1505         rm -rf UU
1506         echo "Done."
1507         exit 0
1508         ;;
1509 esac
1510
1511 : Eunice requires " " instead of "", can you believe it
1512 echo " "
1513 : Here we go...
1514 echo "Beginning of configuration questions for $package."
1515
1516 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1517
1518 : first determine how to suppress newline on echo command
1519 echo " "
1520 echo "Checking echo to see how to suppress newlines..."
1521 (echo "hi there\c" ; echo " ") >.echotmp
1522 if $contains c .echotmp >/dev/null 2>&1 ; then
1523         echo "...using -n."
1524         n='-n'
1525         c=''
1526 else
1527         cat <<'EOM'
1528 ...using \c
1529 EOM
1530         n=''
1531         c='\c'
1532 fi
1533 echo $n "The star should be here-->$c"
1534 echo '*'
1535 rm -f .echotmp
1536
1537 : Now test for existence of everything in MANIFEST
1538 echo " "
1539 if test -f $rsrc/MANIFEST; then
1540         echo "First let's make sure your kit is complete.  Checking..." >&4
1541         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1542         rm -f missing
1543         tmppwd=`pwd`
1544         for filelist in x??; do
1545                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1546         done
1547         if test -s missing; then
1548                 cat missing >&4
1549                 cat >&4 <<'EOM'
1550
1551 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1552
1553 You have the option of continuing the configuration process, despite the
1554 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1555 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1556 and contact the author (perlbug@perl.com).
1557
1558 EOM
1559                 echo $n "Continue? [n] $c" >&4
1560                 read ans
1561                 case "$ans" in
1562                 y*)
1563                         echo "Continuing..." >&4
1564                         rm -f missing
1565                         ;;
1566                 *)
1567                         echo "ABORTING..." >&4
1568                         kill $$
1569                         ;;
1570                 esac
1571         else
1572                 echo "Looks good..."
1573         fi
1574 else
1575         echo "There is no MANIFEST file.  I hope your kit is complete !"
1576 fi
1577 rm -f missing x??
1578
1579 echo " "
1580 : Find the appropriate value for a newline for tr
1581 if test -n "$DJGPP"; then
1582        trnl='\012'
1583 fi
1584 if test X"$trnl" = X; then
1585         case "`echo foo|tr '\n' x 2>/dev/null`" in
1586         foox) trnl='\n' ;;
1587         esac
1588 fi
1589 if test X"$trnl" = X; then
1590         case "`echo foo|tr '\012' x 2>/dev/null`" in
1591         foox) trnl='\012' ;;
1592         esac
1593 fi
1594 if test X"$trnl" = X; then
1595         cat <<EOM >&2
1596
1597 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1598
1599 EOM
1600         exit 1
1601 fi
1602
1603 : compute the number of columns on the terminal for proper question formatting
1604 case "$COLUMNS" in
1605 '') COLUMNS='80';;
1606 esac
1607
1608 : set up the echo used in my read
1609 myecho="case \"\$xxxm\" in
1610 '') echo $n \"\$rp $c\" >&4;;
1611 *) case \"\$rp\" in
1612         '') echo $n \"[\$xxxm] $c\";;
1613         *)
1614                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1615                         echo \"\$rp\" >&4
1616                         echo $n \"[\$xxxm] $c\" >&4
1617                 else
1618                         echo $n \"\$rp [\$xxxm] $c\" >&4
1619                 fi
1620                 ;;
1621         esac;;
1622 esac"
1623
1624 : now set up to do reads with possible shell escape and default assignment
1625 cat <<EOSC >myread
1626 $startsh
1627 xxxm=\$dflt
1628 $myecho
1629 ans='!'
1630 case "\$fastread" in
1631 yes) case "\$dflt" in
1632         '') ;;
1633         *) ans='';
1634                 case "\$silent-\$rp" in
1635                 true-) ;;
1636                 *) echo " " >&4;;
1637                 esac;;
1638         esac;;
1639 *) case "\$silent" in
1640         true) case "\$rp" in
1641                 '') ans='';;
1642                 esac;;
1643         esac;;
1644 esac
1645 while expr "X\$ans" : "X!" >/dev/null; do
1646         read answ
1647         set x \$xxxm
1648         shift
1649         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1650         case  "\$answ" in
1651         "!")
1652                 sh 1>&4
1653                 echo " "
1654                 $myecho
1655                 ;;
1656         !*)
1657                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1658                 shift
1659                 sh 1>&4 -c "\$*"
1660                 echo " "
1661                 $myecho
1662                 ;;
1663         "\$ans")
1664                 case "\$ans" in
1665                 \\&*)
1666                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1667                         shift
1668                         case "\$1" in
1669                         -d)
1670                                 fastread=yes
1671                                 echo "(OK, I'll run with -d after this question.)" >&4
1672                                 ;;
1673                         -*)
1674                                 echo "*** Sorry, \$1 not supported yet." >&4
1675                                 ;;
1676                         esac
1677                         $myecho
1678                         ans=!
1679                         ;;
1680                 esac;;
1681         *)
1682                 case "\$aok" in
1683                 y)
1684                         echo "*** Substitution done -- please confirm."
1685                         xxxm="\$ans"
1686                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1687                         xxxm="\$ans"
1688                         ans=!
1689                         ;;
1690                 *)
1691                         echo "*** Error -- try again."
1692                         ans=!
1693                         ;;
1694                 esac
1695                 $myecho
1696                 ;;
1697         esac
1698         case "\$ans\$xxxm\$nostick" in
1699         '')
1700                 ans=!
1701                 $myecho
1702                 ;;
1703         esac
1704 done
1705 case "\$ans" in
1706 '') ans="\$xxxm";;
1707 esac
1708 EOSC
1709
1710 : create .config dir to save info across Configure sessions
1711 test -d ../.config || mkdir ../.config
1712 cat >../.config/README <<EOF
1713 This directory created by Configure to save information that should
1714 persist across sessions for $package.
1715
1716 You may safely delete it if you wish.
1717 EOF
1718
1719 : general instructions
1720 needman=true
1721 firsttime=true
1722 user=`(logname) 2>/dev/null`
1723 case "$user" in
1724 '') user=`whoami 2>&1`;;
1725 esac
1726 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1727         firsttime=false
1728         echo " "
1729         rp='Would you like to see the instructions?'
1730         dflt=n
1731         . ./myread
1732         case "$ans" in
1733         [yY]*) ;;
1734         *) needman=false;;
1735         esac
1736 fi
1737 if $needman; then
1738         cat <<EOH
1739
1740 This installation shell script will examine your system and ask you questions
1741 to determine how the perl5 package should be installed. If you get
1742 stuck on a question, you may use a ! shell escape to start a subshell or
1743 execute a command.  Many of the questions will have default answers in square
1744 brackets; typing carriage return will give you the default.
1745
1746 On some of the questions which ask for file or directory names you are allowed
1747 to use the ~name construct to specify the login directory belonging to "name",
1748 even if you don't have a shell which knows about that.  Questions where this is
1749 allowed will be marked "(~name ok)".
1750
1751 EOH
1752         rp=''
1753         dflt='Type carriage return to continue'
1754         . ./myread
1755         cat <<'EOH'
1756
1757 The prompter used in this script allows you to use shell variables and
1758 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1759 in the default answer, as if the default line was a set of arguments given to a
1760 script shell.  This means you may also use $* to repeat the whole default line,
1761 so you do not have to re-type everything to add something to the default.
1762
1763 Everytime there is a substitution, you will have to confirm.  If there is an
1764 error (e.g. an unmatched backtick), the default answer will remain unchanged
1765 and you will be prompted again.
1766
1767 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1768 the questions and use the computed defaults (or the previous answers if there
1769 was already a config.sh file). Type 'Configure -h' for a list of options.
1770 You may also start interactively and then answer '& -d' at any prompt to turn
1771 on the non-interactive behaviour for the remainder of the execution.
1772
1773 EOH
1774         . ./myread
1775         cat <<EOH
1776
1777 Much effort has been expended to ensure that this shell script will run on any
1778 Unix system.  If despite that it blows up on yours, your best bet is to edit
1779 Configure and run it again.  If you can't run Configure for some reason,
1780 you'll have to generate a config.sh file by hand.  Whatever problems you
1781 have, let me (perlbug@perl.com) know how I blew it.
1782
1783 This installation script affects things in two ways:
1784
1785 1) it may do direct variable substitutions on some of the files included
1786    in this kit.
1787 2) it builds a config.h file for inclusion in C programs.  You may edit
1788    any of these files as the need arises after running this script.
1789
1790 If you make a mistake on a question, there is no easy way to back up to it
1791 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1792 files.  Configure will offer to let you do this before it runs the SH files.
1793
1794 EOH
1795         dflt='Type carriage return to continue'
1796         . ./myread
1797         case "$firsttime" in
1798         true) echo $user >>../.config/instruct;;
1799         esac
1800 fi
1801
1802 : find out where common programs are
1803 echo " "
1804 echo "Locating common programs..." >&4
1805 cat <<EOSC >loc
1806 $startsh
1807 case \$# in
1808 0) exit 1;;
1809 esac
1810 thing=\$1
1811 shift
1812 dflt=\$1
1813 shift
1814 for dir in \$*; do
1815         case "\$thing" in
1816         .)
1817         if test -d \$dir/\$thing; then
1818                 echo \$dir
1819                 exit 0
1820         fi
1821         ;;
1822         *)
1823         for thisthing in \$dir/\$thing; do
1824                 : just loop through to pick last item
1825         done
1826         if test -f \$thisthing; then
1827                 echo \$thisthing
1828                 exit 0
1829         elif test -f \$dir/\$thing.exe; then
1830                 if test -n "$DJGPP"; then
1831                         echo \$dir/\$thing.exe
1832                 else
1833                         : on Eunice apparently
1834                         echo \$dir/\$thing
1835                 fi
1836                 exit 0
1837         fi
1838         ;;
1839         esac
1840 done
1841 echo \$dflt
1842 exit 1
1843 EOSC
1844 chmod +x loc
1845 $eunicefix loc
1846 loclist="
1847 awk
1848 cat
1849 comm
1850 cp
1851 echo
1852 expr
1853 grep
1854 ls
1855 make
1856 mkdir
1857 rm
1858 sed
1859 sort
1860 touch
1861 tr
1862 uniq
1863 "
1864 trylist="
1865 Mcc
1866 ar
1867 byacc
1868 cpp
1869 csh
1870 date
1871 egrep
1872 gzip
1873 less
1874 ln
1875 more
1876 nm
1877 nroff
1878 perl
1879 pg
1880 test
1881 uname
1882 zip
1883 "
1884 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1885 pth="$pth /lib /usr/lib"
1886 for file in $loclist; do
1887         eval xxx=\$$file
1888         case "$xxx" in
1889         /*|?:[\\/]*)
1890                 if test -f "$xxx"; then
1891                         : ok
1892                 else
1893                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1894                         xxx=`./loc $file $file $pth`
1895                 fi
1896                 ;;
1897         '') xxx=`./loc $file $file $pth`;;
1898         *) xxx=`./loc $xxx $xxx $pth`;;
1899         esac
1900         eval $file=$xxx
1901         eval _$file=$xxx
1902         case "$xxx" in
1903         /*)
1904                 echo $file is in $xxx.
1905                 ;;
1906         ?:[\\/]*)
1907                 echo $file is in $xxx.
1908                 ;;
1909         *)
1910                 echo "I don't know where '$file' is, and my life depends on it." >&4
1911                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1912                 exit 1
1913                 ;;
1914         esac
1915 done
1916 echo " "
1917 echo "Don't worry if any of the following aren't found..."
1918 say=offhand
1919 for file in $trylist; do
1920         eval xxx=\$$file
1921         case "$xxx" in
1922         /*|?:[\\/]*)
1923                 if test -f "$xxx"; then
1924                         : ok
1925                 else
1926                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1927                         xxx=`./loc $file $file $pth`
1928                 fi
1929                 ;;
1930         '') xxx=`./loc $file $file $pth`;;
1931         *) xxx=`./loc $xxx $xxx $pth`;;
1932         esac
1933         eval $file=$xxx
1934         eval _$file=$xxx
1935         case "$xxx" in
1936         /*)
1937                 echo $file is in $xxx.
1938                 ;;
1939         ?:[\\/]*)
1940                 echo $file is in $xxx.
1941                 ;;
1942         *)
1943                 echo "I don't see $file out there, $say."
1944                 say=either
1945                 ;;
1946         esac
1947 done
1948 case "$egrep" in
1949 egrep)
1950         echo "Substituting grep for egrep."
1951         egrep=$grep
1952         ;;
1953 esac
1954 case "$ln" in
1955 ln)
1956         echo "Substituting cp for ln."
1957         ln=$cp
1958         ;;
1959 esac
1960 case "$test" in
1961 test)
1962         echo "Hopefully test is built into your sh."
1963         ;;
1964 *)
1965         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1966                 echo "Using the test built into your sh."
1967                 test=test
1968                 _test=test
1969         fi
1970         ;;
1971 esac
1972 case "$echo" in
1973 echo)
1974         echo "Hopefully echo is built into your sh."
1975         ;;
1976 '') ;;
1977 *)
1978         echo " "
1979 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1980         $echo $n "hi there$c" >foo1
1981         echo $n "hi there$c" >foo2
1982         if cmp foo1 foo2 >/dev/null 2>&1; then
1983                 echo "They are compatible.  In fact, they may be identical."
1984         else
1985                 case "$n" in
1986                 '-n') n='' c='\c';;
1987                 *) n='-n' c='';;
1988                 esac
1989                 cat <<FOO
1990 They are not compatible!  You are probably running ksh on a non-USG system.
1991 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1992 have echo built in and we may have to run some Bourne shell scripts.  That
1993 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1994
1995 FOO
1996                 $echo $n "The star should be here-->$c"
1997                 $echo "*"
1998         fi
1999         $rm -f foo1 foo2
2000         ;;
2001 esac
2002
2003 : determine whether symbolic links are supported
2004 echo " "
2005 $touch blurfl
2006 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2007         echo "Symbolic links are supported." >&4
2008         lns="$ln -s"
2009 else
2010         echo "Symbolic links are NOT supported." >&4
2011         lns="$ln"
2012 fi
2013 $rm -f blurfl sym
2014
2015 : see whether [:lower:] and [:upper:] are supported character classes
2016 echo " "
2017 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2018 ABYZ)
2019         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2020         up='[:upper:]'
2021         low='[:lower:]'
2022         ;;
2023 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2024         # (0xc9 and 0xd1), therefore that is a nice testing point.
2025         if test "X$up" = X -o "X$low" = X; then
2026             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2027             ij) up='[A-Z]'
2028                 low='[a-z]'
2029                 ;;
2030             esac
2031         fi
2032         if test "X$up" = X -o "X$low" = X; then
2033             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2034             ij) up='A-Z'
2035                 low='a-z'
2036                 ;;
2037             esac
2038         fi
2039         if test "X$up" = X -o "X$low" = X; then
2040             case "`echo IJ | od -x 2>/dev/null`" in
2041             *C9D1*|*c9d1*)
2042                 echo "Hey, this might be EBCDIC." >&4
2043                 if test "X$up" = X -o "X$low" = X; then
2044                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2045                     ij) up='[A-IJ-RS-Z]'
2046                         low='[a-ij-rs-z]'
2047                         ;;
2048                     esac
2049                 fi
2050                 if test "X$up" = X -o "X$low" = X; then
2051                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2052                     ij) up='A-IJ-RS-Z'
2053                         low='a-ij-rs-z'
2054                         ;;
2055                     esac
2056                 fi
2057                 ;;
2058             esac
2059         fi
2060 esac
2061 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2062 ij)
2063     echo "Using $up and $low to convert case." >&4
2064     ;;
2065 *)
2066     echo "I don't know how to translate letters from upper to lower case." >&4
2067     echo "Your tr is not acting any way I know of." >&4
2068     exit 1
2069     ;;
2070 esac
2071 : set up the translation script tr, must be called with ./tr of course
2072 cat >tr <<EOSC
2073 $startsh
2074 case "\$1\$2" in
2075 '[A-Z][a-z]') exec $tr '$up' '$low';;
2076 '[a-z][A-Z]') exec $tr '$low' '$up';;
2077 esac
2078 exec $tr "\$@"
2079 EOSC
2080 chmod +x tr
2081 $eunicefix tr
2082
2083 : Try to determine whether config.sh was made on this system
2084 case "$config_sh" in
2085 '')
2086 myuname=`$uname -a 2>/dev/null`
2087 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2088 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2089 # because the A-Z/a-z are not consecutive.
2090 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2091         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2092 newmyuname="$myuname"
2093 dflt=n
2094 case "$knowitall" in
2095 '')
2096         if test -f ../config.sh; then
2097                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2098                         eval "`grep myuname= ../config.sh`"
2099                 fi
2100                 if test "X$myuname" = "X$newmyuname"; then
2101                         dflt=y
2102                 fi
2103         fi
2104         ;;
2105 *) dflt=y;;
2106 esac
2107
2108 : Get old answers from old config file if Configure was run on the
2109 : same system, otherwise use the hints.
2110 hint=default
2111 cd ..
2112 if test -f config.sh; then
2113         echo " "
2114         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2115         . UU/myread
2116         case "$ans" in
2117         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2118         *)  echo "Fetching default answers from your old config.sh file..." >&4
2119                 tmp_n="$n"
2120                 tmp_c="$c"
2121                 tmp_sh="$sh"
2122                 . ./config.sh
2123                 cp config.sh UU
2124                 n="$tmp_n"
2125                 c="$tmp_c"
2126                 : Older versions did not always set $sh.  Catch re-use of such
2127                 : an old config.sh.
2128                 case "$sh" in
2129                 '') sh="$tmp_sh" ;;
2130                 esac
2131                 hint=previous
2132                 ;;
2133         esac
2134 fi
2135 if test ! -f config.sh; then
2136         $cat <<EOM
2137
2138 First time through, eh?  I have some defaults handy for some systems
2139 that need some extra help getting the Configure answers right:
2140
2141 EOM
2142         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2143         dflt=''
2144         : Half the following guesses are probably wrong... If you have better
2145         : tests or hints, please send them to perlbug@perl.com
2146         : The metaconfig authors would also appreciate a copy...
2147         $test -f /irix && osname=irix
2148         $test -f /xenix && osname=sco_xenix
2149         $test -f /dynix && osname=dynix
2150         $test -f /dnix && osname=dnix
2151         $test -f /lynx.os && osname=lynxos
2152         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2153         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2154         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2155         $test -f /bin/mips && /bin/mips && osname=mips
2156         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2157                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2158         $test -d /usr/apollo/bin && osname=apollo
2159         $test -f /etc/saf/_sactab && osname=svr4
2160         $test -d /usr/include/minix && osname=minix
2161         if $test -d /MachTen -o -d /MachTen_Folder; then
2162                 osname=machten
2163                 if $test -x /sbin/version; then
2164                         osvers=`/sbin/version | $awk '{print $2}' |
2165                         $sed -e 's/[A-Za-z]$//'`
2166                 elif $test -x /usr/etc/version; then
2167                         osvers=`/usr/etc/version | $awk '{print $2}' |
2168                         $sed -e 's/[A-Za-z]$//'`
2169                 else
2170                         osvers="$2.$3"
2171                 fi
2172         fi
2173
2174         $test -f /sys/posix.dll &&
2175                 $test -f /usr/bin/what &&
2176                 set X `/usr/bin/what /sys/posix.dll` &&
2177                 $test "$3" = UWIN &&
2178                 osname=uwin &&
2179                 osvers="$5"
2180
2181         if $test -f $uname; then
2182                 set X $myuname
2183                 shift
2184
2185                 case "$5" in
2186                 fps*) osname=fps ;;
2187                 mips*)
2188                         case "$4" in
2189                         umips) osname=umips ;;
2190                         *) osname=mips ;;
2191                         esac;;
2192                 [23]100) osname=mips ;;
2193                 next*) osname=next ;;
2194                 i386*)
2195                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2196                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2197                                 osname='sco'
2198                                 osvers=$tmp
2199                         elif $test -f /etc/kconfig; then
2200                                 osname=isc
2201                                 if test "$lns" = "$ln -s"; then
2202                                         osvers=4
2203                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2204                                         osvers=3
2205                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2206                                         osvers=2
2207                                 fi
2208                         fi
2209                         tmp=''
2210                         ;;
2211                 pc*)
2212                         if test -n "$DJGPP"; then
2213                                 osname=dos
2214                                 osvers=djgpp
2215                         fi
2216                         ;;
2217                 esac
2218
2219                 case "$1" in
2220                 aix) osname=aix
2221                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2222                         case "$tmp" in
2223                         'not found') osvers="$4"."$3" ;;
2224                         '<3240'|'<>3240') osvers=3.2.0 ;;
2225                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2226                         '=3250'|'>3250') osvers=3.2.5 ;;
2227                         *) osvers=$tmp;;
2228                         esac
2229                         ;;
2230                 bsd386) osname=bsd386
2231                         osvers=`$uname -r`
2232                         ;;
2233                 cygwin*) osname=cygwin
2234                         osvers="$3"
2235                         ;;
2236                 *dc.osx) osname=dcosx
2237                         osvers="$3"
2238                         ;;
2239                 dnix) osname=dnix
2240                         osvers="$3"
2241                         ;;
2242                 domainos) osname=apollo
2243                         osvers="$3"
2244                         ;;
2245                 dgux) osname=dgux 
2246                         osvers="$3"
2247                         ;;
2248                 dynixptx*) osname=dynixptx
2249                         osvers=`echo "$4"|sed 's/^v//'`
2250                         ;;
2251                 freebsd) osname=freebsd 
2252                         osvers="$3" ;;
2253                 genix) osname=genix ;;
2254                 hp*) osname=hpux 
2255                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2256                         ;;
2257                 irix*) osname=irix
2258                         case "$3" in
2259                         4*) osvers=4 ;;
2260                         5*) osvers=5 ;;
2261                         *)      osvers="$3" ;;
2262                         esac
2263                         ;;
2264                 linux) osname=linux
2265                         case "$3" in
2266                         *)      osvers="$3" ;;
2267                         esac
2268                         ;;
2269                 MiNT) osname=mint
2270                         ;;
2271                 netbsd*) osname=netbsd
2272                         osvers="$3"
2273                         ;;
2274                 news-os) osvers="$3"
2275                         case "$3" in
2276                         4*) osname=newsos4 ;;
2277                         *) osname=newsos ;;
2278                         esac
2279                         ;;
2280                 next*) osname=next ;;
2281                 POSIX-BC | posix-bc ) osname=posix-bc
2282                         osvers="$3"
2283                         ;;
2284                 powerux | power_ux | powermax_os | powermaxos | \
2285                 powerunix | power_unix) osname=powerux
2286                         osvers="$3"
2287                         ;;
2288                 qnx) osname=qnx
2289                         osvers="$4"
2290                         ;;
2291                 solaris) osname=solaris
2292                         case "$3" in
2293                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2294                         *)      osvers="$3" ;;
2295                         esac
2296                         ;;
2297                 sunos) osname=sunos
2298                         case "$3" in
2299                         5*) osname=solaris
2300                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2301                         *)      osvers="$3" ;;
2302                         esac
2303                         ;;
2304                 titanos) osname=titanos
2305                         case "$3" in
2306                         1*) osvers=1 ;;
2307                         2*) osvers=2 ;;
2308                         3*) osvers=3 ;;
2309                         4*) osvers=4 ;;
2310                         *)      osvers="$3" ;;
2311                         esac
2312                         ;;
2313                 ultrix) osname=ultrix
2314                         osvers="$3"
2315                         ;;
2316                 osf1|mls+)      case "$5" in
2317                                 alpha)
2318                                         osname=dec_osf
2319                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2320                                         ;;
2321                         hp*)    osname=hp_osf1  ;;
2322                         mips)   osname=mips_osf1 ;;
2323                         esac
2324                         ;;
2325                 unixware) osname=svr5
2326                         osvers="$4"
2327                         ;;
2328                 uts) osname=uts
2329                         osvers="$3"
2330                         ;;
2331                 $2) case "$osname" in
2332                         *isc*) ;;
2333                         *freebsd*) ;;
2334                         svr*)
2335                                 : svr4.x or possibly later
2336                                 case "svr$3" in 
2337                                 ${osname}*)
2338                                         osname=svr$3
2339                                         osvers=$4
2340                                         ;;
2341                                 esac
2342                                 case "$osname" in
2343                                 svr4.0)
2344                                         : Check for ESIX
2345                                         if test -f /stand/boot ; then
2346                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2347                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2348                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2349                                                         if test -n "$isesix"; then
2350                                                                 osname=esix4
2351                                                         fi
2352                                                 fi
2353                                         fi
2354                                         ;;
2355                                 esac
2356                                 ;;
2357                         *)      if test -f /etc/systemid; then
2358                                         osname=sco
2359                                         set `echo $3 | $sed 's/\./ /g'` $4
2360                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2361                                                 osvers=$1.$2.$3
2362                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2363                                                 osvers=$1.$2
2364                                         elif $test -f $src/hints/sco_$1.sh; then
2365                                                 osvers=$1
2366                                         fi
2367                                 else
2368                                         case "$osname" in
2369                                         '') : Still unknown.  Probably a generic Sys V.
2370                                                 osname="sysv"
2371                                                 osvers="$3"
2372                                                 ;;
2373                                         esac
2374                                 fi
2375                                 ;;
2376                         esac
2377                         ;;
2378                 *)      case "$osname" in
2379                         '') : Still unknown.  Probably a generic BSD.
2380                                 osname="$1"
2381                                 osvers="$3"
2382                                 ;;
2383                         esac
2384                         ;;
2385                 esac
2386         else
2387                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2388                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2389                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2390                                 osname=news_os
2391                         fi
2392                         $rm -f UU/kernel.what
2393                 elif test -d c:/.; then
2394                         set X $myuname
2395                         osname=os2
2396                         osvers="$5"
2397                 fi
2398         fi
2399         
2400         : Now look for a hint file osname_osvers, unless one has been
2401         : specified already.
2402         case "$hintfile" in
2403         ''|' ')
2404                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2405                 : Also try without trailing minor version numbers.
2406                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2407                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2408                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2409                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2410                 case "$file" in
2411                 '') dflt=none ;;
2412                 *)  case "$osvers" in
2413                         '') dflt=$file
2414                                 ;;
2415                         *)  if $test -f $src/hints/$file.sh ; then
2416                                         dflt=$file
2417                                 elif $test -f $src/hints/$xfile.sh ; then
2418                                         dflt=$xfile
2419                                 elif $test -f $src/hints/$xxfile.sh ; then
2420                                         dflt=$xxfile
2421                                 elif $test -f $src/hints/$xxxfile.sh ; then
2422                                         dflt=$xxxfile
2423                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2424                                         dflt=$xxxxfile
2425                                 elif $test -f "$src/hints/${osname}.sh" ; then
2426                                         dflt="${osname}"
2427                                 else
2428                                         dflt=none
2429                                 fi
2430                                 ;;
2431                         esac
2432                         ;;
2433                 esac
2434                 if $test -f Policy.sh ; then
2435                         case "$dflt" in
2436                         *Policy*) ;;
2437                         none) dflt="Policy" ;;
2438                         *) dflt="Policy $dflt" ;;
2439                         esac
2440                 fi
2441                 ;;
2442         *)
2443                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2444                 ;;
2445         esac
2446
2447         if $test -f Policy.sh ; then
2448                 $cat <<EOM
2449
2450 There's also a Policy hint file available, which should make the
2451 site-specific (policy) questions easier to answer.
2452 EOM
2453
2454         fi
2455
2456         $cat <<EOM
2457
2458 You may give one or more space-separated answers, or "none" if appropriate.
2459 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2460 is a good thing.  DO NOT give a wrong version or a wrong OS.
2461
2462 EOM
2463
2464         rp="Which of these apply, if any?"
2465         . UU/myread
2466         tans=$ans
2467         for file in $tans; do
2468                 if $test X$file = XPolicy -a -f Policy.sh; then
2469                         . Policy.sh
2470                         $cat Policy.sh >> UU/config.sh
2471                 elif $test -f $src/hints/$file.sh; then
2472                         . $src/hints/$file.sh
2473                         $cat $src/hints/$file.sh >> UU/config.sh
2474                 elif $test X$tans = X -o X$tans = Xnone ; then
2475                         : nothing
2476                 else
2477                         : Give one chance to correct a possible typo.
2478                         echo "$file.sh does not exist"
2479                         dflt=$file
2480                         rp="hint to use instead?"
2481                         . UU/myread
2482                         for file in $ans; do
2483                                 if $test -f "$src/hints/$file.sh"; then
2484                                         . $src/hints/$file.sh
2485                                         $cat $src/hints/$file.sh >> UU/config.sh
2486                                 elif $test X$ans = X -o X$ans = Xnone ; then
2487                                         : nothing
2488                                 else
2489                                         echo "$file.sh does not exist -- ignored."
2490                                 fi
2491                         done
2492                 fi
2493         done
2494
2495         hint=recommended
2496         : Remember our hint file for later.
2497         if $test -f "$src/hints/$file.sh" ; then
2498                 hintfile="$file"
2499         else
2500                 hintfile=''
2501         fi
2502 fi
2503 cd UU
2504 ;;
2505 *)
2506         echo " "
2507         echo "Fetching default answers from $config_sh..." >&4
2508         tmp_n="$n"
2509         tmp_c="$c"
2510         cd ..
2511         cp $config_sh config.sh 2>/dev/null
2512         chmod +w config.sh
2513         . ./config.sh
2514         cd UU
2515         cp ../config.sh .
2516         n="$tmp_n"
2517         c="$tmp_c"
2518         hint=previous
2519         ;;
2520 esac
2521 test "$override" && . ./optdef.sh
2522 myuname="$newmyuname"
2523
2524 : Restore computed paths
2525 for file in $loclist $trylist; do
2526         eval $file="\$_$file"
2527 done
2528
2529 cat << EOM
2530
2531 Configure uses the operating system name and version to set some defaults.
2532 The default value is probably right if the name rings a bell. Otherwise,
2533 since spelling matters for me, either accept the default or answer "none"
2534 to leave it blank.
2535
2536 EOM
2537 case "$osname" in
2538         ''|' ')
2539                 case "$hintfile" in
2540                 ''|' '|none) dflt=none ;;
2541                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2542                 esac
2543                 ;;
2544         *) dflt="$osname" ;;
2545 esac
2546 rp="Operating system name?"
2547 . ./myread
2548 case "$ans" in
2549 none)  osname='' ;;
2550 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2551 esac
2552 echo " "
2553 case "$osvers" in
2554         ''|' ')
2555                 case "$hintfile" in
2556                 ''|' '|none) dflt=none ;;
2557                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2558                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2559                         case "$dflt" in
2560                         ''|' ') dflt=none ;;
2561                         esac
2562                         ;;
2563                 esac
2564                 ;;
2565         *) dflt="$osvers" ;;
2566 esac
2567 rp="Operating system version?"
2568 . ./myread
2569 case "$ans" in
2570 none)  osvers='' ;;
2571 *) osvers="$ans" ;;
2572 esac
2573
2574
2575 . ./posthint.sh
2576
2577 : who configured the system
2578 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2579 cf_by=`(logname) 2>/dev/null`
2580 case "$cf_by" in
2581 "")
2582         cf_by=`(whoami) 2>/dev/null`
2583         case "$cf_by" in
2584         "") cf_by=unknown ;;
2585         esac ;;
2586 esac
2587
2588 : set up the script used to warn in case of inconsistency
2589 cat <<EOS >whoa
2590 $startsh
2591 EOS
2592 cat <<'EOSC' >>whoa
2593 dflt=y
2594 echo " "
2595 echo "*** WHOA THERE!!! ***" >&4
2596 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2597 rp="    Keep the $hint value?"
2598 . ./myread
2599 case "$ans" in
2600 y) td=$was; tu=$was;;
2601 esac
2602 EOSC
2603
2604 : function used to set $1 to $val
2605 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2606 case "$val$was" in
2607 $define$undef) . ./whoa; eval "$var=\$td";;
2608 $undef$define) . ./whoa; eval "$var=\$tu";;
2609 *) eval "$var=$val";;
2610 esac'
2611
2612 cat <<EOM
2613
2614 Perl can be built to take advantage of threads on some systems.
2615 To do so, Configure must be run with -Dusethreads.
2616
2617 Note that threading is a highly experimental feature, and
2618 some known race conditions still remain.  If you choose to try
2619 it, be very sure to not actually deploy it for production
2620 purposes.  README.threads has more details, and is required
2621 reading if you enable threads.
2622 EOM
2623 case "$usethreads" in
2624 $define|true|[yY]*)     dflt='y';;
2625 *) dflt='n';;
2626 esac
2627 rp='Build a threading Perl?'
2628 . ./myread
2629 case "$ans" in
2630 y|Y)    val="$define" ;;
2631 *)      val="$undef" ;;
2632 esac
2633 set usethreads
2634 eval $setvar
2635
2636 case "$usethreads" in
2637 $define)
2638         $cat <<EOM
2639
2640 As of 5.5.640, Perl has two different internal threading implementations,
2641 the 5.005 version (5005threads) and an interpreter-based version
2642 (ithreads) that has one interpreter per thread.  Both are very 
2643 experimental.  This arrangement exists to help developers work out
2644 which one is better.
2645
2646 If you're a casual user, you probably don't want interpreter-threads
2647 at this time.  There doesn't yet exist a way to create threads from
2648 within Perl in this model, i.e., "use Thread;" will NOT work.
2649 EOM
2650         : Default to ithreads unless overridden on command line or with
2651         : old config.sh
2652         dflt='y'
2653         case "$use5005threads" in
2654                 $define|true|[yY]*) dflt='n';;
2655         esac
2656         case "$useithreads" in
2657                 $undef|false|[nN]*) dflt='n';;
2658         esac
2659         rp='Use interpreter-based ithreads?'
2660         . ./myread
2661         case "$ans" in
2662         y|Y)    val="$define" ;;
2663         *)      val="$undef" ;;
2664         esac
2665         set useithreads
2666         eval $setvar
2667         : Now set use5005threads to the opposite value.
2668         case "$useithreads" in
2669         $define) val="$undef" ;;
2670         *) val="$define" ;;
2671         esac
2672         set use5005threads
2673         eval $setvar
2674         ;;
2675 *)
2676         useithreads="$undef"
2677         use5005threads="$undef"
2678         ;;
2679 esac
2680
2681 case "$d_oldpthreads" in
2682 '')     : Configure tests would be welcome here.  For now, assume undef.
2683         val="$undef" ;;
2684 *)      val="$d_oldpthreads" ;;
2685 esac
2686 set d_oldpthreads
2687 eval $setvar
2688
2689
2690 case "$usethreads" in
2691 "$define"|true|[yY]*)
2692 : Look for a hint-file generated 'call-back-unit'.  If the
2693 : user has specified that a threading perl is to be built,
2694 : we may need to set or change some other defaults.
2695         if $test -f usethreads.cbu; then
2696                 echo "Your platform has some specific hints for threaded builds, using them..."
2697                 . ./usethreads.cbu
2698         else
2699                 $cat <<EOM
2700 (Your platform doesn't have any specific hints for threaded builds.
2701  Assuming POSIX threads, then.)
2702 EOM
2703         fi
2704         ;;
2705 esac
2706
2707 cat <<EOM
2708
2709 Perl can be built so that multiple Perl interpreters can coexist
2710 within the same Perl executable.
2711 EOM
2712
2713 case "$useithreads" in
2714 $define)
2715         cat <<EOM
2716 This multiple interpreter support is required for interpreter-based threads.
2717 EOM
2718         val="$define"
2719         ;;
2720 *)
2721         echo 'Normally you do not need this and you should answer no.'
2722         case "$usemultiplicity" in
2723         $define|true|[yY]*)     dflt='y';;
2724         *) dflt='n';;
2725         esac
2726         rp='Build Perl for multiplicity?'
2727         . ./myread
2728         case "$ans" in
2729         y|Y)    val="$define" ;;
2730         *)      val="$undef" ;;
2731         esac
2732         ;;
2733 esac
2734 set usemultiplicity
2735 eval $setvar
2736
2737 : determine where manual pages are on this system
2738 echo " "
2739 case "$sysman" in
2740 '') 
2741         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2742         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2743         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2744         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2745         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2746         sysman=`./loc . /usr/man/man1 $syspath`
2747         ;;
2748 esac
2749 if $test -d "$sysman"; then
2750         echo "System manual is in $sysman." >&4
2751 else
2752         echo "Could not find manual pages in source form." >&4
2753 fi
2754
2755 : see what memory models we can support
2756 case "$models" in
2757 '')
2758         $cat >pdp11.c <<'EOP'
2759 int main() {
2760 #ifdef pdp11
2761         exit(0);
2762 #else
2763         exit(1);
2764 #endif
2765 }
2766 EOP
2767         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2768         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2769                 dflt='unsplit split'
2770         else
2771                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2772                 case "$tans" in
2773                 X) dflt='none';;
2774                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2775                                 dflt='small'
2776                         else
2777                                 dflt=''
2778                         fi
2779                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2780                                 dflt="$dflt medium"
2781                         fi
2782                         if $test -d /lib/large || $test -d /usr/lib/large; then
2783                                 dflt="$dflt large"
2784                         fi
2785                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2786                                 dflt="$dflt huge"
2787                         fi
2788                 esac
2789         fi;;
2790 *) dflt="$models";;
2791 esac
2792 $cat <<EOM
2793  
2794 Some systems have different model sizes.  On most systems they are called
2795 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2796 split.  If your system doesn't support different memory models, say "none".
2797 If you wish to force everything to one memory model, say "none" here and
2798 put the appropriate flags later when it asks you for other cc and ld flags.
2799 Venix systems may wish to put "none" and let the compiler figure things out.
2800 (In the following question multiple model names should be space separated.)
2801
2802 The default for most systems is "none".
2803
2804 EOM
2805 rp="Which memory models are supported?"
2806 . ./myread
2807 models="$ans"
2808
2809 case "$models" in
2810 none)
2811         small=''
2812         medium=''
2813         large=''
2814         huge=''
2815         unsplit=''
2816         split=''
2817         ;;
2818 *split)
2819         case "$split" in
2820         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2821                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2822                         dflt='-i'
2823                 else
2824                         dflt='none'
2825                 fi;;
2826         *) dflt="$split";;
2827         esac
2828         rp="What flag indicates separate I and D space?"
2829         . ./myread
2830         tans="$ans"
2831         case "$tans" in
2832         none) tans='';;
2833         esac
2834         split="$tans"
2835         unsplit='';;
2836 *large*|*small*|*medium*|*huge*)
2837         case "$models" in
2838         *large*)
2839                 case "$large" in
2840                 '') dflt='-Ml';;
2841                 *) dflt="$large";;
2842                 esac
2843         rp="What flag indicates large model?"
2844         . ./myread
2845         tans="$ans"
2846         case "$tans" in
2847         none) tans='';
2848         esac
2849         large="$tans";;
2850         *) large='';;
2851         esac
2852         case "$models" in
2853         *huge*) case "$huge" in
2854                 '') dflt='-Mh';;
2855                 *) dflt="$huge";;
2856                 esac
2857                 rp="What flag indicates huge model?"
2858                 . ./myread
2859                 tans="$ans"
2860                 case "$tans" in
2861                 none) tans='';
2862                 esac
2863                 huge="$tans";;
2864         *) huge="$large";;
2865         esac
2866         case "$models" in
2867         *medium*) case "$medium" in
2868                 '') dflt='-Mm';;
2869                 *) dflt="$medium";;
2870                 esac
2871                 rp="What flag indicates medium model?"
2872                 . ./myread
2873                 tans="$ans"
2874                 case "$tans" in
2875                 none) tans='';
2876                 esac
2877                 medium="$tans";;
2878         *) medium="$large";;
2879         esac
2880         case "$models" in
2881         *small*) case "$small" in
2882                 '') dflt='none';;
2883                 *) dflt="$small";;
2884                 esac
2885                 rp="What flag indicates small model?"
2886                 . ./myread
2887                 tans="$ans"
2888                 case "$tans" in
2889                 none) tans='';
2890                 esac
2891                 small="$tans";;
2892         *) small='';;
2893         esac
2894         ;;
2895 *)
2896         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2897         ;;
2898 esac
2899 $rm -f pdp11.* pdp11
2900
2901 : make some quick guesses about what we are up against
2902 echo " "
2903 $echo $n "Hmm...  $c"
2904 echo exit 1 >bsd
2905 echo exit 1 >usg
2906 echo exit 1 >v7
2907 echo exit 1 >osf1
2908 echo exit 1 >eunice
2909 echo exit 1 >xenix
2910 echo exit 1 >venix
2911 echo exit 1 >os2
2912 d_bsd="$undef"
2913 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2914 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2915 then
2916         echo "Looks kind of like an OSF/1 system, but we'll see..."
2917         echo exit 0 >osf1
2918 elif test `echo abc | tr a-z A-Z` = Abc ; then
2919         xxx=`./loc addbib blurfl $pth`
2920         if $test -f $xxx; then
2921         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2922                 echo exit 0 >bsd
2923                 echo exit 0 >usg
2924         else
2925                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2926                         echo "Looks kind of like an extended USG system, but we'll see..."
2927                 else
2928                         echo "Looks kind of like a USG system, but we'll see..."
2929                 fi
2930                 echo exit 0 >usg
2931         fi
2932 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2933         echo "Looks kind of like a BSD system, but we'll see..."
2934         d_bsd="$define"
2935         echo exit 0 >bsd
2936 else
2937         echo "Looks kind of like a Version 7 system, but we'll see..."
2938         echo exit 0 >v7
2939 fi
2940 case "$eunicefix" in
2941 *unixtovms*)
2942         $cat <<'EOI'
2943 There is, however, a strange, musty smell in the air that reminds me of
2944 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2945 EOI
2946         echo exit 0 >eunice
2947         d_eunice="$define"
2948 : it so happens the Eunice I know will not run shell scripts in Unix format
2949         ;;
2950 *)
2951         echo " "
2952         echo "Congratulations.  You aren't running Eunice."
2953         d_eunice="$undef"
2954         ;;
2955 esac
2956 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2957 case "$p_" in
2958 :) ;;
2959 *)
2960         $cat <<'EOI'
2961 I have the feeling something is not exactly right, however...don't tell me...
2962 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2963 EOI
2964         echo exit 0 >os2
2965         ;;
2966 esac
2967 if test -f /xenix; then
2968         echo "Actually, this looks more like a XENIX system..."
2969         echo exit 0 >xenix
2970         d_xenix="$define"
2971 else
2972         echo " "
2973         echo "It's not Xenix..."
2974         d_xenix="$undef"
2975 fi
2976 chmod +x xenix
2977 $eunicefix xenix
2978 if test -f /venix; then
2979         echo "Actually, this looks more like a VENIX system..."
2980         echo exit 0 >venix
2981 else
2982         echo " "
2983         if ./xenix; then
2984                 : null
2985         else
2986                 echo "Nor is it Venix..."
2987         fi
2988 fi
2989 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2990 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2991 $rm -f foo
2992
2993 : see if we need a special compiler
2994 echo " "
2995 if ./usg; then
2996         case "$cc" in
2997         '') case "$Mcc" in
2998                 /*) dflt='Mcc';;
2999                 *) case "$large" in
3000                         -M*) dflt='cc';;
3001                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3002                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3003                                                 dflt='cc'
3004                                         else
3005                                                 dflt='cc -M'
3006                                         fi
3007                                 else
3008                                         dflt='cc'
3009                                 fi;;
3010                         esac;;
3011                 esac;;
3012         *)  dflt="$cc";;
3013         esac
3014         case "$dflt" in
3015         *M*)    $cat <<'EOM'
3016 On some older systems the default C compiler will not resolve multiple global
3017 references that happen to have the same name.  On some such systems the "Mcc"
3018 command may be used to force these to be resolved.  On other systems a "cc -M"
3019 command is required.  (Note that the -M flag on other systems indicates a
3020 memory model to use!) If you have the Gnu C compiler, you might wish to use
3021 that instead.
3022
3023 EOM
3024         ;;
3025         esac
3026         rp="Use which C compiler?"
3027         . ./myread
3028         cc="$ans"
3029 else
3030         case "$cc" in
3031         '') dflt=cc;;
3032         *) dflt="$cc";;
3033         esac
3034         rp="Use which C compiler?"
3035         . ./myread
3036         cc="$ans"
3037 fi
3038 : Look for a hint-file generated 'call-back-unit'.  Now that the
3039 : user has specified the compiler, we may need to set or change some
3040 : other defaults.
3041 if $test -f cc.cbu; then
3042     . ./cc.cbu
3043 fi
3044 echo " "
3045 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3046 $cat >gccvers.c <<EOM
3047 #include <stdio.h>
3048 int main() {
3049 #ifdef __GNUC__
3050 #ifdef __VERSION__
3051         printf("%s\n", __VERSION__);
3052 #else
3053         printf("%s\n", "1");
3054 #endif
3055 #endif
3056         exit(0);
3057 }
3058 EOM
3059 if $cc -o gccvers gccvers.c; then
3060         gccversion=`./gccvers`
3061         case "$gccversion" in
3062         '') echo "You are not using GNU cc." ;;
3063         *)  echo "You are using GNU cc $gccversion."
3064             ;;
3065         esac
3066 else
3067         echo " "
3068         echo "*** WHOA THERE!!! ***" >&4
3069         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3070         case "$knowitall" in
3071         '')
3072         echo "    You'd better start hunting for one and let me know about it." >&4
3073                 exit 1
3074                 ;;
3075         esac
3076 fi
3077 $rm -f gccvers*
3078 case "$gccversion" in
3079 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3080 esac
3081
3082 : decide how portable to be.  Allow command line overrides.
3083 case "$d_portable" in
3084 "$undef") ;;
3085 *)      d_portable="$define" ;;
3086 esac
3087
3088 : set up shell script to do ~ expansion
3089 cat >filexp <<EOSS
3090 $startsh
3091 : expand filename
3092 case "\$1" in
3093  ~/*|~)
3094         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3095         ;;
3096  ~*)
3097         if $test -f /bin/csh; then
3098                 /bin/csh -f -c "glob \$1"
3099                 failed=\$?
3100                 echo ""
3101                 exit \$failed
3102         else
3103                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3104                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3105                 if $test ! -d "\$dir"; then
3106                         me=\`basename \$0\`
3107                         echo "\$me: can't locate home directory for: \$name" >&2
3108                         exit 1
3109                 fi
3110                 case "\$1" in
3111                 */*)
3112                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3113                         ;;
3114                 *)
3115                         echo \$dir
3116                         ;;
3117                 esac
3118         fi
3119         ;;
3120 *)
3121         echo \$1
3122         ;;
3123 esac
3124 EOSS
3125 chmod +x filexp
3126 $eunicefix filexp
3127
3128 : now set up to get a file name
3129 cat <<EOS >getfile
3130 $startsh
3131 EOS
3132 cat <<'EOSC' >>getfile
3133 tilde=''
3134 fullpath=''
3135 already=''
3136 skip=''
3137 none_ok=''
3138 exp_file=''
3139 nopath_ok=''
3140 orig_rp="$rp"
3141 orig_dflt="$dflt"
3142 case "$gfpth" in
3143 '') gfpth='.' ;;
3144 esac
3145
3146 case "$fn" in
3147 *\(*)
3148         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3149         fn=`echo $fn | sed 's/(.*)//'`
3150         ;;
3151 esac
3152
3153 case "$fn" in
3154 *:*)
3155         loc_file=`expr $fn : '.*:\(.*\)'`
3156         fn=`expr $fn : '\(.*\):.*'`
3157         ;;
3158 esac
3159
3160 case "$fn" in
3161 *~*) tilde=true;;
3162 esac
3163 case "$fn" in
3164 */*) fullpath=true;;
3165 esac
3166 case "$fn" in
3167 *+*) skip=true;;
3168 esac
3169 case "$fn" in
3170 *n*) none_ok=true;;
3171 esac
3172 case "$fn" in
3173 *e*) exp_file=true;;
3174 esac
3175 case "$fn" in
3176 *p*) nopath_ok=true;;
3177 esac
3178
3179 case "$fn" in
3180 *f*) type='File';;
3181 *d*) type='Directory';;
3182 *l*) type='Locate';;
3183 esac
3184
3185 what="$type"
3186 case "$what" in
3187 Locate) what='File';;
3188 esac
3189
3190 case "$exp_file" in
3191 '')
3192         case "$d_portable" in
3193         "$define") ;;
3194         *) exp_file=true;;
3195         esac
3196         ;;
3197 esac
3198
3199 cd ..
3200 while test "$type"; do
3201         redo=''
3202         rp="$orig_rp"
3203         dflt="$orig_dflt"
3204         case "$tilde" in
3205         true) rp="$rp (~name ok)";;
3206         esac
3207         . UU/myread
3208         if test -f UU/getfile.ok && \
3209                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3210         then
3211                 value="$ans"
3212                 ansexp="$ans"
3213                 break
3214         fi
3215         case "$ans" in
3216         none)
3217                 value=''
3218                 ansexp=''
3219                 case "$none_ok" in
3220                 true) type='';;
3221                 esac
3222                 ;;
3223         *)
3224                 case "$tilde" in
3225                 '') value="$ans"
3226                         ansexp="$ans";;
3227                 *)
3228                         value=`UU/filexp $ans`
3229                         case $? in
3230                         0)
3231                                 if test "$ans" != "$value"; then
3232                                         echo "(That expands to $value on this system.)"
3233                                 fi
3234                                 ;;
3235                         *) value="$ans";;
3236                         esac
3237                         ansexp="$value"
3238                         case "$exp_file" in
3239                         '') value="$ans";;
3240                         esac
3241                         ;;
3242                 esac
3243                 case "$fullpath" in
3244                 true)
3245                         case "$ansexp" in
3246                         /*) value="$ansexp" ;;
3247                         *)
3248                                 redo=true
3249                                 case "$already" in
3250                                 true)
3251                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3252                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3253                                         ;;
3254                                 *)
3255                                 echo "Please give a full path name, starting with slash." >&4
3256                                         case "$tilde" in
3257                                         true)
3258                                 echo "Note that using ~name is ok provided it expands well." >&4
3259                                                 already=true
3260                                                 ;;
3261                                         esac
3262                                 esac
3263                                 ;;
3264                         esac
3265                         ;;
3266                 esac
3267                 case "$redo" in
3268                 '')
3269                         case "$type" in
3270                         File)
3271                                 for fp in $gfpth; do
3272                                         if test "X$fp" = X.; then
3273                                             pf="$ansexp"
3274                                         else    
3275                                             pf="$fp/$ansexp"
3276                                         fi
3277                                         if test -f "$pf"; then
3278                                                 type=''
3279                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3280                                         then
3281                                                 echo "($value is not a plain file, but that's ok.)"
3282                                                 type=''
3283                                         fi
3284                                         if test X"$type" = X; then
3285                                             value="$pf"
3286                                             break
3287                                         fi
3288                                 done
3289                                 ;;
3290                         Directory)
3291                                 for fp in $gfpth; do
3292                                         if test "X$fp" = X.; then
3293                                             pf="$ansexp"
3294                                         else    
3295                                             pf="$fp/$ansexp"
3296                                         fi
3297                                         if test -d "$pf"; then
3298                                                 type=''
3299                                                 value="$pf"
3300                                                 break
3301                                         fi
3302                                 done
3303                                 ;;
3304                         Locate)
3305                                 if test -d "$ansexp"; then
3306                                         echo "(Looking for $loc_file in directory $value.)"
3307                                         value="$value/$loc_file"
3308                                         ansexp="$ansexp/$loc_file"
3309                                 fi
3310                                 if test -f "$ansexp"; then
3311                                         type=''
3312                                 fi
3313                                 case "$nopath_ok" in
3314                                 true)   case "$value" in
3315                                         */*) ;;
3316                                         *)      echo "Assuming $value will be in people's path."
3317                                                 type=''
3318                                                 ;;
3319                                         esac
3320                                         ;;
3321                                 esac
3322                                 ;;
3323                         esac
3324
3325                         case "$skip" in
3326                         true) type='';
3327                         esac
3328
3329                         case "$type" in
3330                         '') ;;
3331                         *)
3332                                 if test "$fastread" = yes; then
3333                                         dflt=y
3334                                 else
3335                                         dflt=n
3336                                 fi
3337                                 rp="$what $value doesn't exist.  Use that name anyway?"
3338                                 . UU/myread
3339                                 dflt=''
3340                                 case "$ans" in
3341                                 y*) type='';;
3342                                 *) echo " ";;
3343                                 esac
3344                                 ;;
3345                         esac
3346                         ;;
3347                 esac
3348                 ;;
3349         esac
3350 done
3351 cd UU
3352 ans="$value"
3353 rp="$orig_rp"
3354 dflt="$orig_dflt"
3355 rm -f getfile.ok
3356 test "X$gfpthkeep" != Xy && gfpth=""
3357 EOSC
3358
3359 : What should the include directory be ?
3360 echo " "
3361 $echo $n "Hmm...  $c"
3362 dflt='/usr/include'
3363 incpath=''
3364 mips_type=''
3365 if $test -f /bin/mips && /bin/mips; then
3366         echo "Looks like a MIPS system..."
3367         $cat >usr.c <<'EOCP'
3368 #ifdef SYSTYPE_BSD43
3369 /bsd43
3370 #endif
3371 EOCP
3372         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3373                 dflt='/bsd43/usr/include'
3374                 incpath='/bsd43'
3375                 mips_type='BSD 4.3'
3376         else
3377                 mips_type='System V'
3378         fi
3379         $rm -f usr.c usr.out
3380         echo "and you're compiling with the $mips_type compiler and libraries."
3381         xxx_prompt=y
3382         echo "exit 0" >mips
3383 else
3384         echo "Doesn't look like a MIPS system."
3385         xxx_prompt=n
3386         echo "exit 1" >mips
3387 fi
3388 chmod +x mips
3389 $eunicefix mips
3390 case "$usrinc" in
3391 '') ;;
3392 *) dflt="$usrinc";;
3393 esac
3394 case "$xxx_prompt" in
3395 y)      fn=d/
3396         echo " "
3397         rp='Where are the include files you want to use?'
3398         . ./getfile
3399         usrinc="$ans"
3400         ;;
3401 *)      usrinc="$dflt"
3402         ;;
3403 esac
3404
3405 : see how we invoke the C preprocessor
3406 echo " "
3407 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3408 cat <<'EOT' >testcpp.c
3409 #define ABC abc
3410 #define XYZ xyz
3411 ABC.XYZ
3412 EOT
3413 cd ..
3414 if test ! -f cppstdin; then
3415         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3416                 # AIX cc -E doesn't show the absolute headerfile
3417                 # locations but we'll cheat by using the -M flag.
3418                 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
3419         else
3420                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3421         fi
3422 else
3423         echo "Keeping your $hint cppstdin wrapper."
3424 fi
3425 chmod 755 cppstdin
3426 wrapper=`pwd`/cppstdin
3427 ok='false'
3428 cd UU
3429
3430 if $test "X$cppstdin" != "X" && \
3431         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3432         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3433 then
3434         echo "You used to use $cppstdin $cppminus so we'll use that again."
3435         case "$cpprun" in
3436         '') echo "But let's see if we can live without a wrapper..." ;;
3437         *)
3438                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3439                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3440                 then
3441                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3442                         ok='true'
3443                 else
3444                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3445                 fi
3446                 ;;
3447         esac
3448 else
3449         case "$cppstdin" in
3450         '') ;;
3451         *)
3452                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3453                 ;;
3454         esac
3455 fi
3456
3457 if $ok; then
3458         : nothing
3459 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3460         $cc -E <testcpp.c >testcpp.out 2>&1; \
3461         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3462         echo "Yup, it does."
3463         x_cpp="$cc -E"
3464         x_minus='';
3465 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3466         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3467         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3468         echo "Yup, it does."
3469         x_cpp="$cc -E"
3470         x_minus='-';
3471 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3472         $cc -P <testcpp.c >testcpp.out 2>&1; \
3473         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474         echo "Yipee, that works!"
3475         x_cpp="$cc -P"
3476         x_minus='';
3477 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3478         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3479         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480         echo "At long last!"
3481         x_cpp="$cc -P"
3482         x_minus='-';
3483 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3484         $cpp <testcpp.c >testcpp.out 2>&1; \
3485         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486         echo "It works!"
3487         x_cpp="$cpp"
3488         x_minus='';
3489 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3490         $cpp - <testcpp.c >testcpp.out 2>&1; \
3491         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492         echo "Hooray, it works!  I was beginning to wonder."
3493         x_cpp="$cpp"
3494         x_minus='-';
3495 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3496         $wrapper <testcpp.c >testcpp.out 2>&1; \
3497         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3498         x_cpp="$wrapper"
3499         x_minus=''
3500         echo "Eureka!"
3501 else
3502         dflt=''
3503         rp="No dice.  I can't find a C preprocessor.  Name one:"
3504         . ./myread
3505         x_cpp="$ans"
3506         x_minus=''
3507         $x_cpp <testcpp.c >testcpp.out 2>&1
3508         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3509                 echo "OK, that will do." >&4
3510         else
3511 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3512                 exit 1
3513         fi
3514 fi
3515
3516 case "$ok" in
3517 false)
3518         cppstdin="$x_cpp"
3519         cppminus="$x_minus"
3520         cpprun="$x_cpp"
3521         cpplast="$x_minus"
3522         set X $x_cpp
3523         shift
3524         case "$1" in
3525         "$cpp")
3526                 echo "Perhaps can we force $cc -E using a wrapper..."
3527                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3528                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3529                 then
3530                         echo "Yup, we can."
3531                         cppstdin="$wrapper"
3532                         cppminus='';
3533                 else
3534                         echo "Nope, we'll have to live without it..."
3535                 fi
3536                 ;;
3537         esac
3538         case "$cpprun" in
3539         "$wrapper")
3540                 cpprun=''
3541                 cpplast=''
3542                 ;;
3543         esac
3544         ;;
3545 esac
3546
3547 case "$cppstdin" in
3548 "$wrapper"|'cppstdin') ;;
3549 *) $rm -f $wrapper;;
3550 esac
3551 $rm -f testcpp.c testcpp.out
3552
3553 : Set private lib path
3554 case "$plibpth" in
3555 '') if ./mips; then
3556                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3557         fi;;
3558 esac
3559 case "$libpth" in
3560 ' ') dlist='';;
3561 '') dlist="$loclibpth $plibpth $glibpth";;
3562 *) dlist="$libpth";;
3563 esac
3564
3565 : Now check and see which directories actually exist, avoiding duplicates
3566 libpth=''
3567 for xxx in $dlist
3568 do
3569     if $test -d $xxx; then
3570                 case " $libpth " in
3571                 *" $xxx "*) ;;
3572                 *) libpth="$libpth $xxx";;
3573                 esac
3574     fi
3575 done
3576 $cat <<'EOM'
3577
3578 Some systems have incompatible or broken versions of libraries.  Among
3579 the directories listed in the question below, please remove any you
3580 know not to be holding relevant libraries, and add any that are needed.
3581 Say "none" for none.
3582
3583 EOM
3584 case "$libpth" in
3585 '') dflt='none';;
3586 *)
3587         set X $libpth
3588         shift
3589         dflt=${1+"$@"}
3590         ;;
3591 esac
3592 rp="Directories to use for library searches?"
3593 . ./myread
3594 case "$ans" in
3595 none) libpth=' ';;
3596 *) libpth="$ans";;
3597 esac
3598
3599 : compute shared library extension
3600 case "$so" in
3601 '')
3602         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3603                 dflt='sl'
3604         else
3605                 dflt='so'
3606         fi
3607         ;;
3608 *) dflt="$so";;
3609 esac
3610 $cat <<EOM
3611
3612 On some systems, shared libraries may be available.  Answer 'none' if
3613 you want to suppress searching of shared libraries for the remainder
3614 of this configuration.
3615
3616 EOM
3617 rp='What is the file extension used for shared libraries?'
3618 . ./myread
3619 so="$ans"
3620
3621 : Define several unixisms.
3622 : Hints files or command line option can be used to override them.
3623 : The convoluted testing is in case hints files set either the old
3624 : or the new name.
3625 case "$_exe" in
3626 '')     case "$exe_ext" in
3627     '') ;;
3628         *)      _exe="$exe_ext" ;;
3629         esac
3630         ;;
3631 esac
3632 case "$_a" in
3633 '')     case "$lib_ext" in
3634     '') _a='.a';;
3635         *)      _a="$lib_ext" ;;
3636         esac
3637         ;;
3638 esac
3639 case "$_o" in
3640 '') case "$obj_ext" in
3641         '')     _o='.o';;
3642         *)      _o="$obj_ext";;
3643         esac
3644         ;;
3645 esac
3646 case "$p_" in
3647 '') case "$path_sep" in
3648         '')     p_=':';;
3649         *)      p_="$path_sep";;
3650         esac
3651         ;;
3652 esac
3653 exe_ext=$_exe
3654 lib_ext=$_a
3655 obj_ext=$_o
3656 path_sep=$p_
3657
3658 : Which makefile gets called first.  This is used by make depend.
3659 case "$firstmakefile" in
3660 '') firstmakefile='makefile';;
3661 esac
3662
3663 cat <<EOM
3664
3665 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3666 Configure must be run with -Dusesocks.
3667
3668 Normally you do not need this and you should answer no.
3669
3670 EOM
3671 case "$usesocks" in
3672 $define|true|[yY]*)     dflt='y';;
3673 *) dflt='n';;
3674 esac
3675 rp='Build Perl for SOCKS?'
3676 . ./myread
3677 case "$ans" in
3678 y|Y)    val="$define" ;;     
3679 *)      val="$undef" ;;
3680 esac
3681 set usesocks
3682 eval $setvar
3683
3684 : Looking for optional libraries
3685 echo " "
3686 echo "Checking for optional libraries..." >&4
3687 case "$libs" in
3688 ' '|'') dflt='';;
3689 *) dflt="$libs";;
3690 esac
3691 case "$libswanted" in
3692 '') libswanted='c_s';;
3693 esac
3694 case "$usesocks" in
3695 $define)
3696         libswanted="$libswanted socks5 socks5_sh"
3697         ;;
3698 esac
3699 for thislib in $libswanted; do
3700         
3701         libname="$thislib"
3702         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`
3703            $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X" ; then
3704                 libstyle=shared
3705         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3706                 libstyle=shared
3707         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3708                 libstyle=static
3709         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3710                 libstyle=static
3711         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3712                 libstyle=static
3713                 libname=${thislib}_s
3714         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3715                 libstyle="static"
3716         fi
3717         if $test -f "$xxx"; then
3718                 case "$libstyle" in
3719                 shared) echo "Found -l$libname (shared)." ;;
3720                 static) echo "Found -l$libname." ;;
3721                 *)      echo "Found -l$libname ($libstyle)." ;;
3722                 esac
3723                 case " $dflt " in
3724                 *"-l$thislib "*);;
3725                 *) dflt="$dflt -l$libname"
3726                    libsfound="$libsfound $xxx"
3727                    yyy=`basename $xxx`
3728                    libsfiles="$libsfiles $yyy"
3729                    yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3730                    case " $libsdirs " in
3731                    *" $yyy "*) ;;
3732                    *) libsdirs="$libsdirs $yyy" ;;
3733                    esac
3734                    ;;
3735                 esac
3736         else
3737                 echo "No -l$thislib."
3738         fi
3739 done
3740 set X $dflt
3741 shift
3742 dflt="$*"
3743 case "$libs" in
3744 '') dflt="$dflt";;
3745 *) dflt="$libs";;
3746 esac
3747 case "$dflt" in
3748 ' '|'') dflt='none';;
3749 esac
3750
3751 $cat <<EOM
3752
3753 In order to compile $package on your machine, a number of libraries
3754 are usually needed.  Include any other special libraries here as well.
3755 Say "none" for none.  The default list is almost always right.
3756 EOM
3757
3758 echo " "
3759 rp="What libraries to use?"
3760 . ./myread
3761 case "$ans" in
3762 none) libs=' ';;
3763 *) libs="$ans";;
3764 esac
3765
3766 : determine optimization, if desired, or use for debug flag also
3767 case "$optimize" in
3768 ' '|$undef) dflt='none';;
3769 '') dflt='-O';;
3770 *) dflt="$optimize";;
3771 esac
3772 $cat <<EOH
3773
3774 By default, $package compiles with the -O flag to use the optimizer.
3775 Alternately, you might want to use the symbolic debugger, which uses
3776 the -g flag (on traditional Unix systems).  Either flag can be
3777 specified here.  To use neither flag, specify the word "none".
3778
3779 EOH
3780 rp="What optimizer/debugger flag should be used?"
3781 . ./myread
3782 optimize="$ans"
3783 case "$optimize" in
3784 'none') optimize=" ";;
3785 esac
3786
3787 dflt=''
3788 : We will not override a previous value, but we might want to
3789 : augment a hint file
3790 case "$hint" in
3791 default|recommended)
3792         case "$gccversion" in
3793         1*) dflt='-fpcc-struct-return' ;;
3794         esac
3795         case "$optimize" in
3796         *-g*) dflt="$dflt -DDEBUGGING";;
3797         esac
3798         case "$gccversion" in
3799         2*) if test -d /etc/conf/kconfig.d &&
3800                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3801                 then
3802                         dflt="$dflt -posix"
3803                 fi
3804                 ;;
3805         esac
3806         case "$gccversion" in
3807         1*) ;;
3808         2.[0-8]*) ;;
3809         ?*)     echo " "
3810                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3811                 echo 'int main(void) { return 0; }' > gcctest.c
3812                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3813                         echo "Yes, it does." 2>&1
3814                         case "$ccflags" in
3815                         *strict-aliasing*) 
3816                                 echo "Leaving current flags $ccflags alone." 2>&1
3817                                 ;;
3818                         *) dflt="$dflt -fno-strict-aliasing" ;;
3819                         esac
3820                 else
3821                         echo "Nope, it doesn't, but that's ok." 2>&1
3822                 fi
3823                 ;;
3824         esac
3825         ;;
3826 esac
3827
3828 case "$mips_type" in
3829 *BSD*|'') inclwanted="$locincpth $usrinc";;
3830 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3831 esac
3832 for thisincl in $inclwanted; do
3833         if $test -d $thisincl; then
3834                 if $test x$thisincl != x$usrinc; then
3835                         case "$dflt" in
3836                         *$thisincl*);;
3837                         *) dflt="$dflt -I$thisincl";;
3838                         esac
3839                 fi
3840         fi
3841 done
3842
3843 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3844         xxx=true;
3845 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3846         xxx=true;
3847 else
3848         xxx=false;
3849 fi;
3850 if $xxx; then
3851         case "$dflt" in
3852         *$2*);;
3853         *) dflt="$dflt -D$2";;
3854         esac;
3855 fi'
3856
3857 set signal.h LANGUAGE_C; eval $inctest
3858
3859 case "$usesocks" in
3860 $define)
3861         ccflags="$ccflags -DSOCKS"
3862         ;;
3863 esac
3864
3865 case "$hint" in
3866 default|recommended) dflt="$ccflags $dflt" ;;
3867 *) dflt="$ccflags";;
3868 esac
3869
3870 case "$dflt" in
3871 ''|' ') dflt=none;;
3872 esac
3873 $cat <<EOH
3874
3875 Your C compiler may want other flags.  For this question you should include
3876 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3877 but you should NOT include libraries or ld flags like -lwhatever.  If you
3878 want $package to honor its debug switch, you should include -DDEBUGGING here.
3879 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3880
3881 To use no flags, specify the word "none".
3882
3883 EOH
3884 set X $dflt
3885 shift
3886 dflt=${1+"$@"}
3887 rp="Any additional cc flags?"
3888 . ./myread
3889 case "$ans" in
3890 none) ccflags='';;
3891 *) ccflags="$ans";;
3892 esac
3893
3894 : the following weeds options from ccflags that are of no interest to cpp
3895 cppflags="$ccflags"
3896 case "$gccversion" in
3897 1*) cppflags="$cppflags -D__GNUC__"
3898 esac
3899 case "$mips_type" in
3900 '');;
3901 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3902 esac
3903 case "$cppflags" in
3904 '');;
3905 *)
3906         echo " "
3907         echo "Let me guess what the preprocessor flags are..." >&4
3908         set X $cppflags
3909         shift
3910         cppflags=''
3911         $cat >cpp.c <<'EOM'
3912 #define BLURFL foo
3913
3914 BLURFL xx LFRULB
3915 EOM
3916         previous=''
3917         for flag in $*
3918         do
3919                 case "$flag" in
3920                 -*) ftry="$flag";;
3921                 *) ftry="$previous $flag";;
3922                 esac
3923                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3924                         >cpp1.out 2>/dev/null && \
3925                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3926                         >cpp2.out 2>/dev/null && \
3927                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3928                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3929                 then
3930                         cppflags="$cppflags $ftry"
3931                         previous=''
3932                 else
3933                         previous="$flag"
3934                 fi
3935         done
3936         set X $cppflags
3937         shift
3938         cppflags=${1+"$@"}
3939         case "$cppflags" in
3940         *-*)  echo "They appear to be: $cppflags";;
3941         esac
3942         $rm -f cpp.c cpp?.out
3943         ;;
3944 esac
3945
3946 : flags used in final linking phase
3947 case "$ldflags" in
3948 '') if ./venix; then
3949                 dflt='-i -z'
3950         else
3951                 dflt=''
3952         fi
3953         case "$ccflags" in
3954         *-posix*) dflt="$dflt -posix" ;;
3955         esac
3956         ;;
3957 *) dflt="$ldflags";;
3958 esac
3959
3960 : Try to guess additional flags to pick up local libraries.
3961 for thislibdir in $libpth; do
3962         case " $loclibpth " in
3963         *" $thislibdir "*)
3964                 case "$dflt " in 
3965                 *"-L$thislibdir "*) ;;
3966                 *)  dflt="$dflt -L$thislibdir" ;;
3967                 esac
3968                 ;;
3969         esac
3970 done
3971
3972 case "$dflt" in
3973 '') dflt='none' ;;
3974 esac
3975
3976 $cat <<EOH
3977
3978 Your C linker may need flags.  For this question you should
3979 include -L/whatever and any other flags used by the C linker, but you
3980 should NOT include libraries like -lwhatever.
3981
3982 Make sure you include the appropriate -L/path flags if your C linker
3983 does not normally search all of the directories you specified above,
3984 namely
3985         $libpth
3986 To use no flags, specify the word "none".
3987
3988 EOH
3989
3990 rp="Any additional ld flags (NOT including libraries)?"
3991 . ./myread
3992 case "$ans" in
3993 none) ldflags='';;
3994 *) ldflags="$ans";;
3995 esac
3996 rmlist="$rmlist pdp11"
3997
3998 : coherency check
3999 echo " "
4000 echo "Checking your choice of C compiler and flags for coherency..." >&4
4001 $cat > try.c <<'EOF'
4002 #include <stdio.h>
4003 int main() { printf("Ok\n"); exit(0); }
4004 EOF
4005 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4006 shift
4007 $cat >try.msg <<'EOM'
4008 I've tried to compile and run the following simple program:
4009
4010 EOM
4011 $cat try.c >> try.msg
4012
4013 $cat >> try.msg <<EOM
4014
4015 I used the command:
4016
4017         $*
4018         ./try
4019
4020 and I got the following output:
4021
4022 EOM
4023 dflt=y
4024 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4025         if sh -c './try' >>try.msg 2>&1; then
4026                 xxx=`./try`
4027                 case "$xxx" in
4028                 "Ok") dflt=n ;;
4029                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4030                         case " $libs " in
4031                         *" -lsfio "*)
4032                                 cat >> try.msg <<'EOQS'
4033 If $libs contains -lsfio, and sfio is mis-configured, then it
4034 sometimes (apparently) runs and exits with a 0 status, but with no
4035 output!  It may have to do with sfio's use of _exit vs. exit.
4036
4037 EOQS
4038                                 rp="You have a big problem.  Shall I abort Configure"
4039                                 dflt=y
4040                                 ;;
4041                         esac
4042                         ;;
4043                 esac
4044         else
4045                 echo "The program compiled OK, but exited with status $?." >>try.msg
4046                 rp="You have a problem.  Shall I abort Configure"
4047                 dflt=y
4048         fi
4049 else
4050         echo "I can't compile the test program." >>try.msg
4051         rp="You have a BIG problem.  Shall I abort Configure"
4052         dflt=y
4053 fi
4054 case "$dflt" in
4055 y)
4056         $cat try.msg >&4
4057         case "$knowitall" in
4058         '')
4059                 echo "(The supplied flags or libraries might be incorrect.)"
4060                 ;;
4061         *) dflt=n;;
4062         esac
4063         echo " "
4064         . ./myread
4065         case "$ans" in
4066         n*|N*) ;;
4067         *)      echo "Ok.  Stopping Configure." >&4
4068                 exit 1
4069                 ;;
4070         esac
4071         ;;
4072 n) echo "OK, that should do.";;
4073 esac
4074 $rm -f try try.* core
4075
4076 : define an is-a-typedef? function
4077 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4078 case "$inclist" in
4079 "") inclist="sys/types.h";;
4080 esac;
4081 eval "varval=\$$var";
4082 case "$varval" in
4083 "")
4084         $rm -f temp.c;
4085         for inc in $inclist; do
4086                 echo "#include <$inc>" >>temp.c;
4087         done;
4088         echo "#ifdef $type" >> temp.c;
4089         echo "printf(\"We have $type\");" >> temp.c;
4090         echo "#endif" >> temp.c;
4091         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4092         if $contains $type temp.E >/dev/null 2>&1; then
4093                 eval "$var=\$type";
4094         else
4095                 eval "$var=\$def";
4096         fi;
4097         $rm -f temp.?;;
4098 *) eval "$var=\$varval";;
4099 esac'
4100
4101 : define an is-a-typedef? function that prompts if the type is not available.
4102 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4103 case "$inclist" in
4104 "") inclist="sys/types.h";;
4105 esac;
4106 eval "varval=\$$var";
4107 case "$varval" in
4108 "")
4109         $rm -f temp.c;
4110         for inc in $inclist; do
4111                 echo "#include <$inc>" >>temp.c;
4112         done;
4113         echo "#ifdef $type" >> temp.c;
4114         echo "printf(\"We have $type\");" >> temp.c;
4115         echo "#endif" >> temp.c;
4116         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4117         echo " " ;
4118         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4119         if $contains $type temp.E >/dev/null 2>&1; then
4120                 echo "$type found." >&4;
4121                 eval "$var=\$type";
4122         else
4123                 echo "$type NOT found." >&4;
4124                 dflt="$def";
4125                 . ./myread ;
4126                 eval "$var=\$ans";
4127         fi;
4128         $rm -f temp.?;;
4129 *) eval "$var=\$varval";;
4130 esac'
4131
4132 : define a shorthand compile call
4133 compile='
4134 mc_file=$1;
4135 shift;
4136 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4137 : define a shorthand compile call for compilations that should be ok.
4138 compile_ok='
4139 mc_file=$1;
4140 shift;
4141 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4142
4143 : check for lengths of integral types
4144 echo " "
4145 case "$intsize" in
4146 '')
4147         echo "Checking to see how big your integers are..." >&4
4148         $cat >intsize.c <<'EOCP'
4149 #include <stdio.h>
4150 int main()
4151 {
4152         printf("intsize=%d;\n", (int)sizeof(int));
4153         printf("longsize=%d;\n", (int)sizeof(long));
4154         printf("shortsize=%d;\n", (int)sizeof(short));
4155         exit(0);
4156 }
4157 EOCP
4158         set intsize
4159         if eval $compile_ok && ./intsize > /dev/null; then
4160                 eval `./intsize`
4161                 echo "Your integers are $intsize bytes long."
4162                 echo "Your long integers are $longsize bytes long."
4163                 echo "Your short integers are $shortsize bytes long."
4164         else
4165                 $cat >&4 <<EOM
4166 !
4167 Help! I can't compile and run the intsize test program: please enlighten me!
4168 (This is probably a misconfiguration in your system or libraries, and
4169 you really ought to fix it.  Still, I'll try anyway.)
4170 !
4171 EOM
4172                 dflt=4
4173                 rp="What is the size of an integer (in bytes)?"
4174                 . ./myread
4175                 intsize="$ans"
4176                 dflt=$intsize
4177                 rp="What is the size of a long integer (in bytes)?"
4178                 . ./myread
4179                 longsize="$ans"
4180                 dflt=2
4181                 rp="What is the size of a short integer (in bytes)?"
4182                 . ./myread
4183                 shortsize="$ans"
4184         fi
4185         ;;
4186 esac
4187 $rm -f intsize intsize.*
4188
4189 : see what type lseek is declared as in the kernel
4190 rp="What is the type used for lseek's offset on this system?"
4191 set off_t lseektype long stdio.h sys/types.h
4192 eval $typedef_ask
4193
4194 echo " "
4195 $echo $n "Checking to see how big your file offsets are...$c" >&4
4196 $cat >try.c <<EOCP
4197 #include <sys/types.h>
4198 #include <stdio.h>
4199 int main()
4200 {
4201     printf("%d\n", (int)sizeof($lseektype));
4202     return(0); 
4203 }
4204 EOCP
4205 set try
4206 if eval $compile_ok; then
4207         lseeksize=`./try`
4208         $echo " $lseeksize bytes." >&4
4209 else
4210         dflt=$longsize
4211         echo " "
4212         echo "(I can't seem to compile the test program.  Guessing...)"
4213         rp="What is the size of your file offsets (in bytes)?"
4214         . ./myread
4215         lseeksize="$ans"
4216 fi
4217 $rm -f try.c try
4218
4219 : see what type file positions are declared as in the library
4220 rp="What is the type for file position used by fsetpos()?"
4221 set fpos_t fpostype long stdio.h sys/types.h
4222 eval $typedef_ask
4223
4224 echo " "
4225 case "$fpostype" in
4226 *_t) zzz="$fpostype"    ;;
4227 *)   zzz="fpos_t"       ;;
4228 esac
4229 $echo $n "Checking the size of $zzz...$c" >&4 
4230 cat > try.c <<EOCP
4231 #include <sys/types.h>
4232 #include <stdio.h>
4233 int main() {
4234     printf("%d\n", (int)sizeof($fpostype));
4235     exit(0);
4236 }
4237 EOCP
4238 set try
4239 if eval $compile_ok; then
4240         yyy=`./try`
4241         case "$yyy" in
4242         '')     fpossize=4
4243                 echo " "
4244                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4245                 ;;
4246         *)      fpossize=$yyy
4247                 echo " $fpossize bytes."
4248                 ;;
4249         esac
4250 else
4251         dflt="$longsize"
4252         echo " "
4253         echo "(I can't compile the test program.  Guessing...)" >&4
4254         rp="What is the size of your file positions (in bytes)?"
4255         . ./myread
4256         fpossize="$ans"
4257 fi
4258
4259
4260
4261 case "$lseeksize:$fpossize" in
4262 8:8) cat <<EOM
4263
4264 You can have files larger than 2 gigabytes.
4265 EOM
4266    val="$define" ;;
4267 *) cat <<EOM
4268
4269 Perl can be built to understand large files (files larger than 2 gigabytes)
4270 on some systems.  To do so, Configure must be run with -Duselargefiles.
4271
4272 If this doesn't make any sense to you, just accept the default 'y'.
4273 EOM
4274    case "$uselargefiles" in
4275    "$undef"|false|[nN]*) dflt='n' ;;
4276    *)   dflt='y' ;;
4277    esac
4278    rp='Try to understand large files, if available?'
4279    . ./myread
4280    case "$ans" in
4281    y|Y)         val="$define" ;;
4282    *)           val="$undef"  ;;
4283    esac
4284    ;;
4285 esac
4286 set uselargefiles
4287 eval $setvar
4288 case "$uselargefiles" in
4289 "$define")
4290 : Look for a hint-file generated 'call-back-unit'.  If the
4291 : user has specified that a large files perl is to be built,
4292 : we may need to set or change some other defaults.
4293         if $test -f uselfs.cbu; then
4294                 echo "Your platform has some specific hints for large file builds, using them..."
4295                 . ./uselfs.cbu
4296                 echo " "
4297                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4298                 $cat >try.c <<EOCP
4299 #include <sys/types.h>
4300 #include <stdio.h>
4301 int main()
4302 {
4303     printf("%d\n", (int)sizeof($lseektype));
4304     return(0); 
4305 }
4306 EOCP
4307                 set try
4308                 if eval $compile_ok; then
4309                         lseeksize=`./try`
4310                         $echo " $lseeksize bytes." >&4
4311                 else
4312                         dflt="$lseeksize"
4313                         echo " "
4314                         echo "(I can't seem to compile the test program.  Guessing...)"
4315                         rp="What is the size of your file offsets (in bytes)?"
4316                         . ./myread
4317                         lseeksize="$ans"
4318                 fi
4319                 case "$fpostype" in
4320                 *_t) zzz="$fpostype"    ;;
4321                 *)   zzz="fpos_t"       ;;
4322                 esac
4323                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4324                 $cat > try.c <<EOCP
4325 #include <sys/types.h>
4326 #include <stdio.h>
4327 int main() {
4328     printf("%d\n", (int)sizeof($fpostype));
4329     exit(0);
4330 }
4331 EOCP
4332                 set try
4333                 if eval $compile_ok; then
4334                         yyy=`./try`
4335                         dflt="$lseeksize"
4336                         case "$yyy" in
4337                         '')     echo " "
4338                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4339                                 ;;
4340                         *)      fpossize=$yyy
4341                                 echo " $fpossize bytes."
4342                                 ;;
4343                         esac
4344                 else
4345                         dflt="$fpossize"
4346                         echo " "
4347                         echo "(I can't compile the test program.  Guessing...)" >&4
4348                         rp="What is the size of your file positions (in bytes)?"
4349                         . ./myread
4350                         fpossize="$ans"
4351                 fi
4352                 $rm -f try.c try
4353         fi
4354         ;;
4355 esac
4356
4357
4358 case "$usemorebits" in
4359 "$define"|true|[yY]*)
4360         use64bits="$define"
4361         uselongdouble="$define"
4362         usemorebits="$define"
4363         ;;
4364 *)      usemorebits="$undef"
4365         ;;
4366 esac
4367
4368
4369 case "$intsize:$longsize" in
4370 8:*|*:8) cat <<EOM
4371
4372 You have natively 64-bit integers.
4373 EOM
4374    val="$define"
4375    ;;
4376 *) case "$ccflags" in
4377    *-DUSE_64_BITS*|*-DUSE_LONG_LONG*) use64bits="$define";;
4378    *) case "$uselonglong" in
4379       $define|true|[yY]*) use64bits="$define";;
4380       esac
4381       ;;
4382    esac
4383    case "$use64bits" in
4384    $define|true|[yY]*) dflt='y';;
4385    *) dflt='n';;
4386    esac
4387 cat <<EOM
4388
4389 Perl can be built to take advantage of 64-bit integer types
4390 on some systems.  To do so, Configure must be run with -Duse64bits.
4391
4392 If this doesn't make any sense to you, just accept the default '$dflt'.
4393 EOM
4394    rp='Try to use 64-bit integers, if available?'
4395    . ./myread
4396    case "$ans" in
4397    [yY]*) val="$define" ;;
4398    *)     val="$undef"  ;;
4399    esac
4400    ;;
4401 esac
4402 set use64bits
4403 eval $setvar
4404
4405 case "$archname64" in
4406 '') archname64='' ;;    # not a typo
4407 esac
4408
4409 case "$use64bits" in
4410 "$define"|true|[yY]*)
4411 : Look for a hint-file generated 'call-back-unit'.  If the
4412 : user has specified that a 64-bit perl is to be built,
4413 : we may need to set or change some other defaults.
4414         if $test -f use64bits.cbu; then
4415                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4416                 . ./use64bits.cbu
4417         else
4418                 $cat <<EOM
4419 (Your platform doesn't have any specific hints for 64-bit builds.)
4420 EOM
4421                 case "$intsize:$longsize" in
4422 8:*|*:8) cat <<EOM
4423 (This is probably okay, as your system is a natively 64-bit system.)
4424 EOM
4425                   ;;
4426                 esac
4427                 case "$gccversion" in
4428                 '')     ;;
4429                 *)      case "$ccflags" in
4430                         *-DUSE_64_BITS*) ;;
4431                         *) $cat <<EOM
4432 But since you seem to be using gcc, I will now add -DUSE_64_BITS
4433 to the compilation flags to get long longs.
4434 EOM
4435                            ccflags="$ccflags -DUSE_64_BITS"
4436                            ;;
4437                         esac
4438                         ;;
4439                 esac
4440         fi
4441         ;;
4442 esac
4443
4444 : determine the architecture name
4445 echo " "
4446 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4447         tarch=`arch`"-$osname"
4448 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4449         if uname -m > tmparch 2>&1 ; then
4450                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4451                         -e 's/$/'"-$osname/" tmparch`
4452         else
4453                 tarch="$osname"
4454         fi
4455         $rm -f tmparch
4456 else
4457         tarch="$osname"
4458 fi
4459 case "$myarchname" in
4460 ''|"$tarch") ;;
4461 *)
4462         echo "(Your architecture name used to be $myarchname.)"
4463         archname=''
4464         ;;
4465 esac
4466 myarchname="$tarch"
4467 case "$archname" in
4468 '') dflt="$tarch";;
4469 *) dflt="$archname";;
4470 esac
4471 rp='What is your architecture name'
4472 . ./myread
4473 archname="$ans"
4474 case "$usethreads" in
4475 $define)
4476         echo "Threads selected." >&4
4477         case "$archname" in
4478         *-thread*) echo "...and architecture name already has -thread." >&4
4479                 ;;
4480         *)      archname="$archname-thread"
4481                 echo "...setting architecture name to $archname." >&4
4482                 ;;
4483         esac
4484         ;;
4485 esac
4486 case "$usemultiplicity" in
4487 $define)
4488         echo "Multiplicity selected." >&4
4489         case "$archname" in
4490         *-multi*) echo "...and architecture name already has -multi." >&4
4491                 ;;
4492         *)      archname="$archname-multi"
4493                 echo "...setting architecture name to $archname." >&4
4494                 ;;
4495         esac
4496         ;;
4497 esac
4498 case "$use64bits" in
4499 $define)
4500         case "$archname64" in
4501         '')
4502                 ;;
4503         *)
4504                 case "$archname" in
4505                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4506                         ;;
4507                 *)      archname="$archname-$archname64"
4508                         echo "...setting architecture name to $archname." >&4
4509                         ;;
4510                 esac
4511                 ;;
4512         esac
4513 esac
4514
4515 : determine root of directory hierarchy where package will be installed.
4516 case "$prefix" in
4517 '')
4518         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4519         ;;
4520 *)
4521         dflt="$prefix"
4522         ;;
4523 esac
4524 $cat <<EOM
4525
4526 By default, $package will be installed in $dflt/bin, manual pages
4527 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4528 installation directories. Typically this is something like /usr/local.
4529 If you wish to have binaries under /usr/bin but other parts of the
4530 installation under /usr/local, that's ok: you will be prompted
4531 separately for each of the installation directories, the prefix being
4532 only used to set the defaults.
4533
4534 EOM
4535 fn=d~
4536 rp='Installation prefix to use?'
4537 . ./getfile
4538 oldprefix=''
4539 case "$prefix" in
4540 '') ;;
4541 *)
4542         case "$ans" in
4543         "$prefix") ;;
4544         *) oldprefix="$prefix";;
4545         esac
4546         ;;
4547 esac
4548 prefix="$ans"
4549 prefixexp="$ansexp"
4550
4551 : is AFS running?
4552 echo " "
4553 case "$afs" in
4554 $define|true)   afs=true ;;
4555 $undef|false)   afs=false ;;
4556 *)      if test -d /afs; then
4557                 afs=true
4558         else
4559                 afs=false
4560         fi
4561         ;;
4562 esac
4563 if $afs; then
4564         echo "AFS may be running... I'll be extra cautious then..." >&4
4565 else
4566         echo "AFS does not seem to be running..." >&4
4567 fi
4568
4569 : determine installation prefix for where package is to be installed.
4570 if $afs; then 
4571 $cat <<EOM
4572
4573 Since you are running AFS, I need to distinguish the directory in which
4574 files will reside from the directory in which they are installed (and from
4575 which they are presumably copied to the former directory by occult means).
4576
4577 EOM
4578         case "$installprefix" in
4579         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4580         *) dflt="$installprefix";;
4581         esac
4582 else
4583 $cat <<EOM
4584
4585 In some special cases, particularly when building $package for distribution,
4586 it is convenient to distinguish between the directory in which files should 
4587 be installed from the directory ($prefix) in which they 
4588 will eventually reside.  For most users, these two directories are the same.
4589
4590 EOM
4591         case "$installprefix" in
4592         '') dflt=$prefix ;;
4593         *) dflt=$installprefix;;
4594         esac
4595 fi
4596 fn=d~
4597 rp='What installation prefix should I use for installing files?'
4598 . ./getfile
4599 installprefix="$ans"
4600 installprefixexp="$ansexp"
4601
4602 : set the prefixit variable, to compute a suitable default value
4603 prefixit='case "$3" in
4604 ""|none)
4605         case "$oldprefix" in
4606         "") eval "$1=\"\$$2\"";;
4607         *)
4608                 case "$3" in
4609                 "") eval "$1=";;
4610                 none)
4611                         eval "tp=\"\$$2\"";
4612                         case "$tp" in
4613                         ""|" ") eval "$1=\"\$$2\"";;
4614                         *) eval "$1=";;
4615                         esac;;
4616                 esac;;
4617         esac;;
4618 *)
4619         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4620         case "$tp" in
4621         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4622         /*-$oldprefix/*|\~*-$oldprefix/*)
4623                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4624         *) eval "$1=\"\$$2\"";;
4625         esac;;
4626 esac'
4627
4628 : set the base revision
4629 baserev=5.0
4630
4631
4632 : get the patchlevel
4633 echo " "
4634 echo "Getting the current patchlevel..." >&4
4635 if $test -r $rsrc/patchlevel.h;then
4636         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4637         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4638         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4639         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4640         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4641 else
4642         patchlevel=0
4643         subversion=0
4644         api_revision=0
4645         api_version=0
4646         api_subversion=0
4647 fi
4648 $echo $n "(You have $package" $c
4649 case "$package" in
4650 "*$baserev")    ;;
4651 *)              $echo $n " $baserev" $c ;;
4652 esac
4653 $echo $n " patchlevel $patchlevel" $c
4654 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4655 echo ".)"
4656 case "$osname" in
4657 dos|vms)
4658         : XXX Should be a Configure test for double-dots in filenames.
4659         version=`echo $baserev $patchlevel $subversion | \
4660                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4661         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4662                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4663         ;;
4664 *)
4665         version=`echo $baserev $patchlevel $subversion | \
4666                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4667         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4668                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4669         ;;
4670 esac
4671 : Special case the 5.005_xx maintenance series, which used 5.005
4672 : without any subversion label as a subdirectory in $sitelib
4673 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4674         api_versionstring='5.005'
4675 fi
4676
4677 : determine installation style
4678 : For now, try to deduce it from prefix unless it is already set.
4679 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4680 case "$installstyle" in
4681 '')     case "$prefix" in
4682                 *perl*) dflt='lib';;
4683                 *) dflt='lib/perl5' ;;
4684         esac
4685         ;;
4686 *)      dflt='lib/perl5' ;;
4687 esac
4688 : Probably not worth prompting for this since we prompt for all
4689 : the directories individually, and the prompt would be too long and
4690 : confusing anyway.
4691 installstyle=$dflt
4692
4693 : determine where private library files go
4694 : Usual default is /usr/local/lib/perl5/$version.
4695 : Also allow things like /opt/perl/lib/$version, since 
4696 : /opt/perl/lib/perl5... would be redundant.
4697 : The default "style" setting is made in installstyle.U
4698 case "$installstyle" in
4699 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4700 *)       set dflt privlib lib/$version ;;
4701 esac
4702 eval $prefixit
4703 $cat <<EOM
4704
4705 There are some auxiliary files for $package that need to be put into a
4706 private library directory that is accessible by everyone.
4707
4708 EOM
4709 fn=d~+
4710 rp='Pathname where the private library files will reside?'
4711 . ./getfile
4712 privlib="$ans"
4713 privlibexp="$ansexp"
4714 : Change installation prefix, if necessary.
4715 if $test X"$prefix" != X"$installprefix"; then
4716         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4717 else
4718         installprivlib="$privlibexp"
4719 fi
4720
4721 : set the prefixup variable, to restore leading tilda escape
4722 prefixup='case "$prefixexp" in
4723 "$prefix") ;;
4724 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4725 esac'
4726
4727 : determine where public architecture dependent libraries go
4728 set archlib archlib
4729 eval $prefixit
4730 : privlib default is /usr/local/lib/$package/$version
4731 : archlib default is /usr/local/lib/$package/$version/$archname
4732 : privlib may have an optional trailing /share.
4733 tdflt=`echo $privlib | $sed 's,/share$,,'`
4734 tdflt=$tdflt/$archname
4735 case "$archlib" in
4736 '')     dflt=$tdflt
4737         ;;
4738 *)      dflt="$archlib"
4739     ;;
4740 esac
4741 $cat <<EOM
4742
4743 $spackage contains architecture-dependent library files.  If you are
4744 sharing libraries in a heterogeneous environment, you might store
4745 these files in a separate location.  Otherwise, you can just include
4746 them with the rest of the public library files.
4747
4748 EOM
4749 fn=d+~
4750 rp='Where do you want to put the public architecture-dependent libraries?'
4751 . ./getfile
4752 archlib="$ans"
4753 archlibexp="$ansexp"
4754 if $test X"$archlib" = X"$privlib"; then
4755         d_archlib="$undef"
4756 else
4757         d_archlib="$define"
4758 fi
4759 : Change installation prefix, if necessary.
4760 if $test X"$prefix" != X"$installprefix"; then
4761         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4762 else
4763         installarchlib="$archlibexp"
4764 fi
4765
4766
4767 : Binary compatibility with 5.005 is not possible for builds
4768 : with advanced features
4769 case "$usethreads$usemultiplicity" in
4770 *define*)
4771         bincompat5005="$undef"
4772         d_bincompat5005="$undef"
4773         ;;
4774 *)      $cat <<EOM
4775
4776 Perl 5.006 can be compiled for binary compatibility with 5.005.
4777 If you decide to do so, you will be able to continue using most
4778 of the extensions that were compiled for Perl 5.005.
4779
4780 EOM
4781         case "$bincompat5005$d_bincompat5005" in
4782         *"$undef"*) dflt=n ;;
4783         *) dflt=y ;;
4784         esac
4785         rp='Binary compatibility with Perl 5.005?'
4786         . ./myread
4787         case "$ans" in
4788         y*) val="$define" ;;
4789         *)  val="$undef" ;;
4790         esac
4791         set d_bincompat5005
4792         eval $setvar
4793         case "$d_bincompat5005" in
4794         "$define")
4795                 bincompat5005="$define"
4796                 ;;
4797         *)      bincompat5005="$undef"
4798                 d_bincompat5005="$undef"
4799                 ;;
4800         esac
4801         ;;
4802 esac
4803
4804
4805 : see if setuid scripts can be secure
4806 $cat <<EOM
4807
4808 Some kernels have a bug that prevents setuid #! scripts from being
4809 secure.  Some sites have disabled setuid #! scripts because of this.
4810
4811 First let's decide if your kernel supports secure setuid #! scripts.
4812 (If setuid #! scripts would be secure but have been disabled anyway,
4813 don't say that they are secure if asked.)
4814
4815 EOM
4816
4817 val="$undef"
4818 if $test -d /dev/fd; then
4819         echo "#!$ls" >reflect
4820         chmod +x,u+s reflect
4821         ./reflect >flect 2>&1
4822         if $contains "/dev/fd" flect >/dev/null; then
4823                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4824                 val="$define"
4825         else
4826                 $cat <<EOM
4827 If you are not sure if they are secure, I can check but I'll need a
4828 username and password different from the one you are using right now.
4829 If you don't have such a username or don't want me to test, simply
4830 enter 'none'.
4831
4832 EOM
4833                 rp='Other username to test security of setuid scripts with?'
4834                 dflt='none'
4835                 . ./myread
4836                 case "$ans" in
4837                 n|none)
4838                         case "$d_suidsafe" in
4839                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4840                                 dflt=n;;
4841                         "$undef")
4842                                 echo "Well, the $hint value is *not* secure." >&4
4843                                 dflt=n;;
4844                         *)      echo "Well, the $hint value *is* secure." >&4
4845                                 dflt=y;;
4846                         esac
4847                         ;;
4848                 *)
4849                         $rm -f reflect flect
4850                         echo "#!$ls" >reflect
4851                         chmod +x,u+s reflect
4852                         echo >flect
4853                         chmod a+w flect
4854                         echo '"su" will (probably) prompt you for '"$ans's password."
4855                         su $ans -c './reflect >flect'
4856                         if $contains "/dev/fd" flect >/dev/null; then
4857                                 echo "Okay, it looks like setuid scripts are secure." >&4
4858                                 dflt=y
4859                         else
4860                                 echo "I don't think setuid scripts are secure." >&4
4861                                 dflt=n
4862                         fi
4863                         ;;
4864                 esac
4865                 rp='Does your kernel have *secure* setuid scripts?'
4866                 . ./myread
4867                 case "$ans" in
4868                 [yY]*)  val="$define";;
4869                 *)      val="$undef";;
4870                 esac
4871         fi
4872 else
4873         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4874         echo "(That's for file descriptors, not floppy disks.)"
4875         val="$undef"
4876 fi
4877 set d_suidsafe
4878 eval $setvar
4879
4880 $rm -f reflect flect
4881
4882 : now see if they want to do setuid emulation
4883 echo " "
4884 val="$undef"
4885 case "$d_suidsafe" in
4886 "$define")
4887         val="$undef"
4888         echo "No need to emulate SUID scripts since they are secure here." >& 4
4889         ;;
4890 *)
4891         $cat <<EOM
4892 Some systems have disabled setuid scripts, especially systems where
4893 setuid scripts cannot be secure.  On systems where setuid scripts have
4894 been disabled, the setuid/setgid bits on scripts are currently
4895 useless.  It is possible for $package to detect those bits and emulate
4896 setuid/setgid in a secure fashion.  This emulation will only work if
4897 setuid scripts have been disabled in your kernel.
4898
4899 EOM
4900         case "$d_dosuid" in
4901         "$define") dflt=y ;;
4902         *) dflt=n ;;
4903         esac
4904         rp="Do you want to do setuid/setgid emulation?"
4905         . ./myread
4906         case "$ans" in
4907         [yY]*)  val="$define";;
4908         *)      val="$undef";;
4909         esac
4910         ;;
4911 esac
4912 set d_dosuid
4913 eval $setvar
4914
4915 : determine filename position in cpp output
4916 echo " "
4917 echo "Computing filename position in cpp output for #include directives..." >&4
4918 echo '#include <stdio.h>' > foo.c
4919 $cat >fieldn <<EOF
4920 $startsh
4921 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4922 $grep '^[       ]*#.*stdio\.h' | \
4923 while read cline; do
4924         pos=1
4925         set \$cline
4926         while $test \$# -gt 0; do
4927                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4928                         echo "\$pos"
4929                         exit 0
4930                 fi
4931                 shift
4932                 pos=\`expr \$pos + 1\`
4933         done
4934 done
4935 EOF
4936 chmod +x fieldn
4937 fieldn=`./fieldn`
4938 $rm -f foo.c fieldn
4939 case $fieldn in
4940 '') pos='???';;
4941 1) pos=first;;
4942 2) pos=second;;
4943 3) pos=third;;
4944 *) pos="${fieldn}th";;
4945 esac
4946 echo "Your cpp writes the filename in the $pos field of the line."
4947
4948 : locate header file
4949 $cat >findhdr <<EOF
4950 $startsh
4951 wanted=\$1
4952 name=''
4953 for usrincdir in $usrinc
4954 do
4955         if test -f \$usrincdir/\$wanted; then
4956                 echo "\$usrincdir/\$wanted"
4957                 exit 0
4958         fi
4959 done
4960 awkprg='{ print \$$fieldn }'
4961 echo "#include <\$wanted>" > foo\$\$.c
4962 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4963 $grep "^[       ]*#.*\$wanted" | \
4964 while read cline; do
4965         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4966         case "\$name" in
4967         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4968         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4969         *) exit 2;;
4970         esac;
4971 done;
4972 #
4973 # status = 0: grep returned 0 lines, case statement not executed
4974 # status = 1: headerfile found
4975 # status = 2: while loop executed, no headerfile found
4976 #
4977 status=\$?
4978 $rm -f foo\$\$.c;
4979 if test \$status -eq 1; then
4980         exit 0;
4981 fi
4982 exit 1
4983 EOF
4984 chmod +x findhdr
4985
4986 : define an alternate in-header-list? function
4987 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4988 cont=true; xxf="echo \"<\$1> found.\" >&4";
4989 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4990 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4991 esac;
4992 case $# in 4) instead=instead;; *) instead="at last";; esac;
4993 while $test "$cont"; do
4994         xxx=`./findhdr $1`
4995         var=$2; eval "was=\$$2";
4996         if $test "$xxx" && $test -r "$xxx";
4997         then eval $xxf;
4998         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4999                 cont="";
5000         else eval $xxnf;
5001         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5002         set $yyy; shift; shift; yyy=$@;
5003         case $# in 0) cont="";;
5004         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5005                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5006         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5007                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5008         esac;
5009 done;
5010 while $test "$yyy";
5011 do set $yyy; var=$2; eval "was=\$$2";
5012         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5013         set $yyy; shift; shift; yyy=$@;
5014 done'
5015
5016 : see if this is a malloc.h system
5017 set malloc.h i_malloc
5018 eval $inhdr
5019
5020 : see if stdlib is available
5021 set stdlib.h i_stdlib
5022 eval $inhdr
5023
5024 : determine which malloc to compile in
5025 echo " "
5026 case "$usemymalloc" in
5027 ''|[yY]*|true|$define)  dflt='y' ;;
5028 *)      dflt='n' ;;
5029 esac
5030 rp="Do you wish to attempt to use the malloc that comes with $package?"
5031 . ./myread
5032 usemymalloc="$ans"
5033 case "$ans" in
5034 y*|true)
5035         usemymalloc='y'
5036         mallocsrc='malloc.c'
5037         mallocobj="malloc$_o"
5038         d_mymalloc="$define"
5039         case "$libs" in
5040         *-lmalloc*)
5041                 : Remove malloc from list of libraries to use
5042                 echo "Removing unneeded -lmalloc from library list" >&4
5043                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5044                 shift
5045                 libs="$*"
5046                 echo "libs = $libs" >&4
5047                 ;;
5048         esac
5049         ;;
5050 *)
5051         usemymalloc='n'
5052         mallocsrc=''
5053         mallocobj=''
5054         d_mymalloc="$undef"
5055         ;;
5056 esac
5057
5058 : compute the return types of malloc and free
5059 echo " "
5060 $cat >malloc.c <<END
5061 #$i_malloc I_MALLOC
5062 #$i_stdlib I_STDLIB
5063 #include <stdio.h>
5064 #include <sys/types.h>
5065 #ifdef I_MALLOC
5066 #include <malloc.h>
5067 #endif
5068 #ifdef I_STDLIB
5069 #include <stdlib.h>
5070 #endif
5071 #ifdef TRY_MALLOC
5072 void *malloc();
5073 #endif
5074 #ifdef TRY_FREE
5075 void free();
5076 #endif
5077 END
5078 case "$malloctype" in
5079 '')
5080         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5081                 malloctype='void *'
5082         else
5083                 malloctype='char *'
5084         fi
5085         ;;
5086 esac
5087 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5088
5089 case "$freetype" in
5090 '')
5091         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5092                 freetype='void'
5093         else
5094                 freetype='int'
5095         fi
5096         ;;
5097 esac
5098 echo "Your system uses $freetype free(), it would seem." >&4
5099 $rm -f malloc.[co]
5100 $cat <<EOM
5101
5102 The installation process will also create a directory for
5103 vendor-supplied add-ons.  Vendors who supply perl with their system
5104 may find it convenient to place all vendor-supplied files in this
5105 directory rather than in the main distribution directory.  This will
5106 ease upgrades between binary-compatible maintenance versions of perl.
5107
5108 Of course you may also use these directories in whatever way you see
5109 fit.  For example, you might use them to access modules shared over a
5110 company-wide network.
5111
5112 The default answer should be fine for most people.
5113 This causes further questions about vendor add-ons to be skipped
5114 and no vendor-specific directories will be configured for perl.
5115
5116 EOM
5117 rp='Do you want to configure vendor-specific add-on directories?'
5118 case "$usevendorprefix" in
5119 define|true|[yY]*) dflt=y ;;
5120 *) dflt=n ;;
5121 esac
5122 . ./myread
5123 case "$ans" in
5124 [yY]*)  fn=d~+
5125         rp='Installation prefix to use for vendor-supplied add-ons?'
5126         case "$vendorprefix" in
5127         '') dflt='' ;;
5128         *)  dflt=$vendorprefix ;;
5129         esac
5130         . ./getfile
5131         oldvendorprefix=''
5132         case "$vendorprefix" in
5133         '') ;;
5134         *)      case "$ans" in
5135                 "$prefix") ;;
5136                 *) oldvendorprefix="$prefix";;
5137                 esac
5138                 ;;
5139         esac
5140         usevendorprefix="$define"
5141         vendorprefix="$ans"
5142         vendorprefixexp="$ansexp"
5143         ;;
5144 *)      usevendorprefix="$undef"
5145         vendorprefix=''
5146         vendorprefixexp=''
5147         ;;
5148 esac
5149
5150 case "$vendorprefix" in
5151 '')     d_vendorlib="$undef"
5152         vendorlib=''
5153         vendorlibexp=''
5154         ;;
5155 *)      d_vendorlib="$define"
5156         : determine where vendor-supplied modules go.
5157         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5158         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5159         case "$installstyle" in
5160         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5161         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5162         esac
5163         fn=d~+
5164         rp='Pathname for the vendor-supplied library files?'
5165         . ./getfile
5166         vendorlib="$ans"
5167         vendorlibexp="$ansexp"
5168         : Change installation prefix, if necessary.
5169         if $test X"$prefix" != X"$installprefix"; then
5170                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5171         else
5172                 installvendorlib="$vendorlibexp"
5173         fi
5174         ;;
5175 esac
5176
5177 : Cruising for prototypes
5178 echo " "
5179 echo "Checking out function prototypes..." >&4
5180 $cat >prototype.c <<'EOCP'
5181 int main(int argc, char *argv[]) {
5182         exit(0);}
5183 EOCP
5184 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5185         echo "Your C compiler appears to support function prototypes."
5186         val="$define"
5187 else
5188         echo "Your C compiler doesn't seem to understand function prototypes."
5189         val="$undef"
5190 fi
5191 set prototype
5192 eval $setvar
5193 $rm -f prototype*
5194
5195 case "$prototype" in
5196 "$define") ;;
5197 *)      ansi2knr='ansi2knr'
5198         echo " "
5199         cat <<EOM >&4
5200
5201 $me:  FATAL ERROR:
5202 This version of $package can only be compiled by a compiler that 
5203 understands function prototypes.  Unfortunately, your C compiler 
5204         $cc $ccflags
5205 doesn't seem to understand them.  Sorry about that.
5206
5207 If GNU cc is available for your system, perhaps you could try that instead.  
5208
5209 Eventually, we hope to support building Perl with pre-ANSI compilers.
5210 If you would like to help in that effort, please contact <perlbug@perl.org>.
5211
5212 Aborting Configure now.
5213 EOM
5214         exit 2
5215         ;;
5216 esac
5217
5218 : determine where public executables go
5219 echo " "
5220 set dflt bin bin
5221 eval $prefixit
5222 fn=d~
5223 rp='Pathname where the public executables will reside?'
5224 . ./getfile
5225 if $test "X$ansexp" != "X$binexp"; then
5226         installbin=''
5227 fi
5228 bin="$ans"
5229 binexp="$ansexp"
5230 : Change installation prefix, if necessary.
5231 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5232 if $test X"$prefix" != X"$installprefix"; then
5233         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5234 else
5235         installbin="$binexp"
5236 fi
5237
5238 $cat <<EOM
5239
5240 After $package is installed, you may wish to install various
5241 add-on modules and utilities.  Typically, these add-ons will
5242 be installed under $prefix with the rest
5243 of this package.  However, you may wish to install such add-ons
5244 elsewhere under a different prefix.
5245
5246 If you do not wish to put everything under a single prefix, that's
5247 ok.  You will be prompted for the individual locations; this siteprefix
5248 is only used to suggest the defaults.
5249
5250 The default should be fine for most people.
5251
5252 EOM
5253 fn=d~+
5254 rp='Installation prefix to use for add-on modules and utilities?'
5255 : XXX Here might be another good place for an installstyle setting.
5256 case "$siteprefix" in
5257 '') dflt=$prefix ;;
5258 *)  dflt=$siteprefix ;;
5259 esac
5260 . ./getfile
5261 oldsiteprefix=''
5262 case "$siteprefix" in
5263 '') ;;
5264 *)
5265         case "$ans" in
5266         "$prefix") ;;
5267         *) oldsiteprefix="$prefix";;
5268         esac
5269         ;;
5270 esac
5271 siteprefix="$ans"
5272 siteprefixexp="$ansexp"
5273
5274 : determine where site specific libraries go.
5275 : Usual default is /usr/local/lib/perl5/site_perl/$version
5276 : The default "style" setting is made in installstyle.U
5277 : XXX No longer works with Prefixit stuff.
5278 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5279 case "$installstyle" in
5280 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5281 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5282 esac
5283 $cat <<EOM
5284
5285 The installation process will create a directory for
5286 site-specific extensions and modules.  Most users find it convenient
5287 to place all site-specific files in this directory rather than in the
5288 main distribution directory.
5289
5290 EOM
5291 fn=d~+
5292 rp='Pathname for the site-specific library files?'
5293 . ./getfile
5294 sitelib="$ans"
5295 sitelibexp="$ansexp"
5296 : Change installation prefix, if necessary.
5297 if $test X"$prefix" != X"$installprefix"; then
5298         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5299 else
5300         installsitelib="$sitelibexp"
5301 fi
5302
5303 : Determine list of previous versions to include in @INC
5304 $cat > getverlist <<EOPL
5305 #!$perl -w
5306 use File::Basename;
5307 \$api_versionstring = "$api_versionstring";
5308 \$version = "$version";
5309 \$sitelib = "$sitelib";
5310 \$archname = "$archname";
5311 EOPL
5312         $cat >> getverlist <<'EOPL'
5313 # Can't have leading @ because metaconfig interprets it as a command!
5314 ;@inc_version_list=();
5315 $stem=dirname($sitelib);
5316 # Redo to do opendir/readdir? 
5317 if (-d $stem) {
5318     chdir($stem);
5319     ;@candidates = glob("5.*");
5320 }
5321 else {
5322     ;@candidates = ();
5323 }
5324
5325 # XXX ToDo:  These comparisons must be reworked when two-digit
5326 # subversions come along, so that 5.7.10 compares as greater than
5327 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5328 # widespread that we can use the built-in version vectors rather
5329 # than reinventing them here.  For 5.6.0, however, we must
5330 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5331 foreach $d (@candidates) {
5332     if ($d lt $version) {
5333         if ($d ge $api_versionstring) {
5334             unshift(@inc_version_list, "$d/$archname", $d);
5335         }
5336         elsif ($d ge "5.005") {
5337             unshift(@inc_version_list, $d);
5338         }
5339     }
5340     else {
5341         # Skip newer version.  I.e. don't look in
5342         # 5.7.0 if we're installing 5.6.1.
5343     }
5344 }
5345
5346 if (@inc_version_list) {
5347     print join(' ', @inc_version_list);
5348 }
5349 else {
5350     # Blank space to preserve value for next Configure run.
5351     print " ";
5352 }
5353 EOPL
5354 chmod +x getverlist
5355 case "$inc_version_list" in
5356 '')     if test -x $perl; then
5357                 dflt=`$perl getverlist`
5358         else
5359                 dflt='none'
5360         fi
5361         ;;
5362 $undef) dflt='none' ;;
5363 *)  dflt="$inc_version_list" ;;
5364 esac
5365 $cat <<'EOM'
5366
5367 In order to ease the process of upgrading, this version of perl 
5368 can be configured to use modules built and installed with earlier 
5369 versions of perl that were installed under $prefix.  Specify here
5370 the list of earlier versions that this version of perl should check.
5371 If Configure detected no earlier versions of perl installed under
5372 $prefix, then the list will be empty.  Answer 'none' to tell perl
5373 to not search earlier versions.
5374
5375 The default should almost always be sensible, so if you're not sure,
5376 just accept the default.
5377 EOM
5378
5379 rp='List of earlier versions to include in @INC?'
5380 . ./myread
5381 case "$ans" in
5382 [Nn]one) inc_version_list=' ' ;;
5383 *) inc_version_list="$ans" ;;
5384 esac
5385 case "$inc_version_list" in
5386 ''|' ') 
5387         inc_version_list_init='0';;
5388 *)      inc_version_list_init=`echo $inc_version_list |
5389                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5390         ;;
5391 esac
5392 $rm -f getverlist
5393
5394 : determine whether to install perl also as /usr/bin/perl
5395
5396 echo " "
5397 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5398         $cat <<EOM
5399 Many scripts expect to perl to be installed as /usr/bin/perl.
5400 I can install the perl you are about to compile also as /usr/bin/perl
5401 (in addition to $installbin/perl).
5402 EOM
5403         case "$installusrbinperl" in
5404         "$undef"|[nN]*) dflt='n';;
5405         *)              dflt='y';;
5406         esac
5407         rp="Do you want to install perl as /usr/bin/perl?"
5408         . ./myread
5409         case "$ans" in
5410         [yY]*)  val="$define";;
5411         *)      val="$undef" ;;
5412         esac
5413 else
5414         val="$undef"
5415 fi
5416 set installusrbinperl
5417 eval $setvar
5418
5419 echo " "
5420 echo "Checking for GNU C Library..." >&4
5421 cat >gnulibc.c <<EOM
5422 #include <stdio.h>
5423 int main()
5424 {
5425 #ifdef __GLIBC__
5426     exit(0);
5427 #else
5428     exit(1);
5429 #endif
5430 }
5431 EOM
5432 set gnulibc
5433 if eval $compile_ok && ./gnulibc; then
5434         val="$define"
5435         echo "You are using the GNU C Library"
5436 else
5437         val="$undef"
5438         echo "You are not using the GNU C Library"
5439 fi
5440 $rm -f gnulibc*
5441 set d_gnulibc
5442 eval $setvar
5443
5444 : see if nm is to be used to determine whether a symbol is defined or not
5445 case "$usenm" in
5446 '')
5447         dflt=''
5448         case "$d_gnulibc" in
5449         "$define")
5450                 echo " "
5451                 echo "nm probably won't work on the GNU C Library." >&4
5452                 dflt=n
5453                 ;;
5454         esac
5455         case "$dflt" in
5456         '') 
5457                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5458                         echo " "
5459                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5460                         echo "'nm' won't be sufficient on this sytem." >&4
5461                         dflt=n
5462                 fi
5463                 ;;
5464         esac
5465         case "$dflt" in
5466         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5467                 if $test $dflt -gt 20; then
5468                         dflt=y
5469                 else
5470                         dflt=n
5471                 fi
5472                 ;;
5473         esac
5474         ;;
5475 *)
5476         case "$usenm" in
5477         true|$define) dflt=y;;
5478         *) dflt=n;;
5479         esac
5480         ;;
5481 esac
5482 $cat <<EOM
5483
5484 I can use $nm to extract the symbols from your C libraries. This
5485 is a time consuming task which may generate huge output on the disk (up
5486 to 3 megabytes) but that should make the symbols extraction faster. The
5487 alternative is to skip the 'nm' extraction part and to compile a small
5488 test program instead to determine whether each symbol is present. If
5489 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5490 this may be the best solution.
5491
5492 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5493
5494 EOM
5495 rp="Shall I use $nm to extract C symbols from the libraries?"
5496 . ./myread
5497 case "$ans" in
5498 [Nn]*) usenm=false;;
5499 *) usenm=true;;
5500 esac
5501
5502 runnm=$usenm
5503 case "$reuseval" in
5504 true) runnm=false;;
5505 esac
5506
5507 : nm options which may be necessary
5508 case "$nm_opt" in
5509 '') if $test -f /mach_boot; then
5510                 nm_opt=''       # Mach
5511         elif $test -d /usr/ccs/lib; then
5512                 nm_opt='-p'     # Solaris (and SunOS?)
5513         elif $test -f /dgux; then
5514                 nm_opt='-p'     # DG-UX
5515         elif $test -f /lib64/rld; then
5516                 nm_opt='-p'     # 64-bit Irix
5517         else
5518                 nm_opt=''
5519         fi;;
5520 esac
5521
5522 : nm options which may be necessary for shared libraries but illegal
5523 : for archive libraries.  Thank you, Linux.
5524 case "$nm_so_opt" in
5525 '')     case "$myuname" in
5526         *linux*)
5527                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5528                         nm_so_opt='--dynamic'
5529                 fi
5530                 ;;
5531         esac
5532         ;;
5533 esac
5534
5535 case "$runnm" in
5536 true)
5537 : get list of predefined functions in a handy place
5538 echo " "
5539 case "$libc" in
5540 '') libc=unknown
5541         case "$libs" in
5542         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5543         esac
5544         ;;
5545 esac
5546 libnames='';
5547 case "$libs" in
5548 '') ;;
5549 *)  for thislib in $libs; do
5550         case "$thislib" in
5551         -lc|-lc_s)
5552                 : Handle C library specially below.
5553                 ;;
5554         -l*)
5555                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5556                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5557                         :
5558                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5559                         :
5560                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5561                         :
5562                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5563                         :
5564                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5565                         :
5566                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5567                         :
5568                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5569                         :
5570                 else
5571                         try=''
5572                 fi
5573                 libnames="$libnames $try"
5574                 ;;
5575         *) libnames="$libnames $thislib" ;;
5576         esac
5577         done
5578         ;;
5579 esac
5580 xxx=normal
5581 case "$libc" in
5582 unknown)
5583         set /lib/libc.$so
5584         for xxx in $libpth; do
5585                 $test -r $1 || set $xxx/libc.$so
5586                 : The messy sed command sorts on library version numbers.
5587                 $test -r $1 || \
5588                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5589                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5590                                 h
5591                                 s/[0-9][0-9]*/0000&/g
5592                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5593                                 G
5594                                 s/\n/ /' | \
5595                          sort | $sed -e 's/^.* //'`
5596                 eval set \$$#
5597         done
5598         $test -r $1 || set /usr/ccs/lib/libc.$so
5599         $test -r $1 || set /lib/libsys_s$_a
5600         ;;
5601 *)
5602         set blurfl
5603         ;;
5604 esac
5605 if $test -r "$1"; then
5606         echo "Your (shared) C library seems to be in $1."
5607         libc="$1"
5608 elif $test -r /lib/libc && $test -r /lib/clib; then
5609         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5610         xxx=apollo
5611         libc='/lib/clib /lib/libc'
5612         if $test -r /lib/syslib; then
5613                 echo "(Your math library is in /lib/syslib.)"
5614                 libc="$libc /lib/syslib"
5615         fi
5616 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5617         echo "Your C library seems to be in $libc, as you said before."
5618 elif $test -r $incpath/usr/lib/libc$_a; then
5619         libc=$incpath/usr/lib/libc$_a;
5620         echo "Your C library seems to be in $libc.  That's fine."
5621 elif $test -r /lib/libc$_a; then
5622         libc=/lib/libc$_a;
5623         echo "Your C library seems to be in $libc.  You're normal."
5624 else
5625         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5626                 :
5627         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5628                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5629         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5630                 :
5631         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5632                 :
5633         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5634                 :
5635         else
5636                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5637         fi
5638         if $test -r "$tans"; then
5639                 echo "Your C library seems to be in $tans, of all places."
5640                 libc=$tans
5641         else
5642                 libc='blurfl'
5643         fi
5644 fi
5645 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5646         dflt="$libc"
5647         cat <<EOM
5648
5649 If the guess above is wrong (which it might be if you're using a strange
5650 compiler, or your machine supports multiple models), you can override it here.
5651
5652 EOM
5653 else
5654         dflt=''
5655         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5656         cat >&4 <<EOM
5657 I can't seem to find your C library.  I've looked in the following places:
5658
5659 EOM
5660         $sed 's/^/      /' libpath
5661         cat <<EOM
5662
5663 None of these seems to contain your C library. I need to get its name...
5664
5665 EOM
5666 fi
5667 fn=f
5668 rp='Where is your C library?'
5669 . ./getfile
5670 libc="$ans"
5671
5672 echo " "
5673 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5674 set X `cat libnames`
5675 shift
5676 xxx=files
5677 case $# in 1) xxx=file; esac
5678 echo "Extracting names from the following $xxx for later perusal:" >&4
5679 echo " "
5680 $sed 's/^/      /' libnames >&4
5681 echo " "
5682 $echo $n "This may take a while...$c" >&4
5683
5684 for file in $*; do
5685         case $file in
5686         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5687         *) $nm $nm_opt $file 2>/dev/null;;
5688         esac
5689 done >libc.tmp
5690
5691 $echo $n ".$c"
5692 $grep fprintf libc.tmp > libc.ptf
5693 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5694 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5695 xxx='[ADTSIW]'
5696 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5697         eval $xscan;\
5698         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5699                 eval $xrun
5700 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5701         eval $xscan;\
5702         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5703                 eval $xrun
5704 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5705         eval $xscan;\
5706         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5707                 eval $xrun
5708 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5709         eval $xscan;\
5710         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5711                 eval $xrun
5712 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5713         eval $xscan;\
5714         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5715                 eval $xrun
5716 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5717         eval $xscan;\
5718         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5719                 eval $xrun
5720 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5721                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5722         eval $xscan;\
5723         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5724                 eval $xrun
5725 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5726         eval $xscan;\
5727         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5728                 eval $xrun
5729 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5730         eval $xscan;\
5731         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5732                 eval $xrun
5733 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5734         eval $xscan;\
5735         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5736                 eval $xrun
5737 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5738         eval $xscan;\
5739         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5740                 eval $xrun
5741 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5742         eval $xscan;\
5743         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5744                 eval $xrun
5745 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5746         eval $xscan;\
5747         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5748                 eval $xrun
5749 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5750         eval $xscan;\
5751         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5752                 eval $xrun
5753 else
5754         $nm -p $* 2>/dev/null >libc.tmp
5755         $grep fprintf libc.tmp > libc.ptf
5756         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5757                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5758         then
5759                 nm_opt='-p'
5760                 eval $xrun
5761         else
5762                 echo " "
5763                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5764                 com=''
5765                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5766                         for thisname in $libnames $libc; do
5767                                 $ar t $thisname >>libc.tmp
5768                         done
5769                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5770                         echo "Ok." >&4
5771                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5772                         # Repeat libc to extract forwarders to DLL entries too
5773                         for thisname in $libnames $libc; do
5774                                 $ar tv $thisname >>libc.tmp
5775                                 # Revision 50 of EMX has bug in $ar.
5776                                 # it will not extract forwarders to DLL entries
5777                                 # Use emximp which will extract exactly them.
5778                                 emximp -o tmp.imp $thisname \
5779                                     2>/dev/null && \
5780                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5781                                     < tmp.imp >>libc.tmp
5782                                 $rm tmp.imp
5783                         done
5784                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5785                         echo "Ok." >&4
5786                 else
5787                         echo "$ar didn't seem to work right." >&4
5788                         echo "Maybe this is a Cray...trying bld instead..." >&4
5789                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5790                         then
5791                                 for thisname in $libnames; do
5792                                         bld t $libnames | \
5793                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5794                                         $ar t $thisname >>libc.tmp
5795                                 done
5796                                 echo "Ok." >&4
5797                         else
5798                                 echo "That didn't work either.  Giving up." >&4
5799                                 exit 1
5800                         fi
5801                 fi
5802         fi
5803 fi
5804 nm_extract="$com"
5805 if $test -f /lib/syscalls.exp; then
5806         echo " "
5807         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5808         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5809 fi
5810 ;;
5811 esac
5812 $rm -f libnames libpath
5813
5814 : see if dld is available
5815 set dld.h i_dld
5816 eval $inhdr
5817
5818 : is a C symbol defined?
5819 csym='tlook=$1;
5820 case "$3" in
5821 -v) tf=libc.tmp; tc=""; tdc="";;
5822 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5823 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5824 esac;
5825 tx=yes;
5826 case "$reuseval-$4" in
5827 true-) ;;
5828 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5829 esac;
5830 case "$tx" in
5831 yes)
5832         case "$runnm" in
5833         true)
5834                 if $contains $tlook $tf >/dev/null 2>&1;
5835                 then tval=true;
5836                 else tval=false;
5837                 fi;;
5838         *)
5839                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5840                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5841                 then tval=true;
5842                 else tval=false;
5843                 fi;
5844                 $rm -f t t.c;;
5845         esac;;
5846 *)
5847         case "$tval" in
5848         $define) tval=true;;
5849         *) tval=false;;
5850         esac;;
5851 esac;
5852 eval "$2=$tval"'
5853
5854 : define an is-in-libc? function
5855 inlibc='echo " "; td=$define; tu=$undef;
5856 sym=$1; var=$2; eval "was=\$$2";
5857 tx=yes;
5858 case "$reuseval$was" in
5859 true) ;;
5860 true*) tx=no;;
5861 esac;
5862 case "$tx" in
5863 yes)
5864         set $sym tres -f;
5865         eval $csym;
5866         case "$tres" in
5867         true)
5868                 echo "$sym() found." >&4;
5869                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5870         *)
5871                 echo "$sym() NOT found." >&4;
5872                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5873         esac;;
5874 *)
5875         case "$was" in
5876         $define) echo "$sym() found." >&4;;
5877         *) echo "$sym() NOT found." >&4;;
5878         esac;;
5879 esac'
5880
5881 : see if dlopen exists
5882 xxx_runnm="$runnm"
5883 runnm=false
5884 set dlopen d_dlopen
5885 eval $inlibc
5886 runnm="$xxx_runnm"
5887
5888 : determine which dynamic loading, if any, to compile in
5889 echo " "
5890 dldir="ext/DynaLoader"
5891 case "$usedl" in
5892 $define|y|true)
5893         dflt='y'
5894         usedl="$define"
5895         ;;
5896 $undef|n|false)
5897         dflt='n'
5898         usedl="$undef"
5899         ;;
5900 *) 
5901         dflt='n'
5902         case "$d_dlopen" in
5903             $define) dflt='y' ;;
5904         esac
5905         case "$i_dld" in
5906             $define) dflt='y' ;;
5907         esac
5908         : Does a dl_xxx.xs file exist for this operating system
5909         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5910         ;;
5911 esac
5912 rp="Do you wish to use dynamic loading?"
5913 . ./myread
5914 usedl="$ans"
5915 case "$ans" in
5916 y*) usedl="$define"
5917         case "$dlsrc" in
5918         '')
5919                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5920                         dflt="$dldir/dl_${osname}.xs"
5921                 elif $test "$d_dlopen" = "$define" ; then
5922                         dflt="$dldir/dl_dlopen.xs"
5923                 elif $test "$i_dld" = "$define" ; then
5924                         dflt="$dldir/dl_dld.xs"
5925                 else
5926                         dflt=''
5927                 fi
5928                 ;;
5929         *)      dflt="$dldir/$dlsrc"
5930                 ;;
5931         esac
5932     echo "The following dynamic loading files are available:"
5933         : Can not go over to $dldir because getfile has path hard-coded in.
5934         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5935         rp="Source file to use for dynamic loading"
5936         fn="fne"
5937         gfpth="$src"
5938         . ./getfile
5939         usedl="$define"
5940         : emulate basename
5941         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5942
5943         $cat << EOM
5944
5945 Some systems may require passing special flags to $cc -c to
5946 compile modules that will be used to create a shared library.
5947 To use no flags, say "none".
5948
5949 EOM
5950     case "$cccdlflags" in
5951     '') case "$gccversion" in
5952                 '') case "$osname" in
5953                         hpux)   dflt='+z' ;;
5954                         next)   dflt='none' ;;
5955                         irix*)  dflt='-KPIC' ;;
5956                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5957                         sunos)  dflt='-pic' ;;
5958                         *)      dflt='none' ;;
5959                     esac
5960                         ;;
5961                 *)  case "$osname" in
5962                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5963                         *)      dflt='-fpic' ;;
5964                     esac ;;
5965             esac ;;
5966         ' ') dflt='none' ;;
5967     *)  dflt="$cccdlflags" ;;
5968     esac
5969     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5970     . ./myread
5971     case "$ans" in
5972     none) cccdlflags=' ' ;;
5973     *) cccdlflags="$ans" ;;
5974     esac
5975
5976     cat << EOM
5977
5978 Some systems use ld to create libraries that can be dynamically loaded,
5979 while other systems (such as those using ELF) use $cc.
5980
5981 EOM
5982         case "$ld" in
5983         '')     $cat >try.c <<'EOM'
5984 /* Test for whether ELF binaries are produced */
5985 #include <fcntl.h>
5986 #include <stdlib.h>
5987 int main() {
5988         char b[4];
5989         int i = open("a.out",O_RDONLY);
5990         if(i == -1) 
5991                 exit(1); /* fail */
5992         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5993                 exit(0); /* succeed (yes, it's ELF) */
5994         else
5995                 exit(1); /* fail */
5996 }
5997 EOM
5998                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5999                         cat <<EOM
6000 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6001 EOM
6002                         dflt="$cc"
6003                 else
6004                         echo "I'll use ld to build dynamic libraries."
6005                         dflt='ld'
6006                 fi
6007                 rm -f try.c a.out
6008                 ;;
6009         *)      dflt="$ld"
6010                 ;;
6011         esac
6012
6013     rp="What command should be used to create dynamic libraries?"
6014     . ./myread
6015         ld="$ans"
6016
6017     cat << EOM
6018
6019 Some systems may require passing special flags to $ld to create a
6020 library that can be dynamically loaded.  If your ld flags include
6021 -L/other/path options to locate libraries outside your loader's normal
6022 search path, you may need to specify those -L options here as well.  To
6023 use no flags, say "none".
6024
6025 EOM
6026     case "$lddlflags" in
6027     '') case "$osname" in
6028                         beos) dflt='-nostart' ;;
6029                         hpux)  dflt='-b' ;;
6030                         linux|irix*)    dflt='-shared' ;;
6031                         next)  dflt='none' ;;
6032                         solaris) dflt='-G' ;;
6033                         sunos) dflt='-assert nodefinitions' ;;
6034                         svr4*|esix*) dflt="-G $ldflags" ;;
6035                 *)     dflt='none' ;;
6036                         esac
6037                         ;;
6038     *) dflt="$lddlflags" ;;
6039     esac
6040
6041         : Try to guess additional flags to pick up local libraries.
6042         : Be careful not to append to a plain 'none'
6043         case "$dflt" in
6044         none) dflt='' ;;
6045         esac
6046         for thisflag in $ldflags; do
6047                 case "$thisflag" in
6048                 -L*)
6049                         case " $dflt " in
6050                         *" $thisflag "*) ;;
6051                         *) dflt="$dflt $thisflag" ;;
6052                         esac
6053                         ;;
6054                 esac
6055         done
6056
6057         case "$dflt" in
6058         ''|' ') dflt='none' ;;
6059         esac
6060
6061     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6062     . ./myread
6063     case "$ans" in
6064     none) lddlflags=' ' ;;
6065     *) lddlflags="$ans" ;;
6066     esac
6067
6068         cat <<EOM
6069
6070 Some systems may require passing special flags to $cc to indicate that
6071 the resulting executable will use dynamic linking.  To use no flags,
6072 say "none".
6073
6074 EOM
6075     case "$ccdlflags" in
6076     '') case "$osname" in
6077                 hpux)   dflt='-Wl,-E' ;;
6078                 linux)  dflt='-rdynamic' ;;
6079                 next)   dflt='none' ;;
6080                 sunos)  dflt='none' ;;
6081                 *)      dflt='none' ;;
6082             esac ;;
6083     ' ')  dflt='none' ;;
6084     *)  dflt="$ccdlflags" ;;
6085     esac
6086     rp="Any special flags to pass to $cc to use dynamic linking?"
6087     . ./myread
6088     case "$ans" in
6089     none) ccdlflags=' ' ;;
6090     *) ccdlflags="$ans" ;;
6091     esac
6092     ;;
6093 *)  usedl="$undef"
6094         ld='ld'
6095     dlsrc='dl_none.xs'
6096     lddlflags=''
6097     ccdlflags=''
6098     ;;
6099 esac
6100
6101 also=''
6102 case "$usedl" in
6103 $undef)
6104         # No dynamic loading being used, so don't bother even to prompt.
6105         useshrplib='false'
6106         ;;
6107 *)      case "$useshrplib" in
6108         '')     case "$osname" in
6109                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6110                         dflt=y
6111                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6112                         ;;
6113                 next*)
6114                         case "$osvers" in
6115                         4*)     dflt=y
6116                                 also='Building a shared libperl is needed for MAB support.'
6117                                 ;;
6118                         *)      dflt=n
6119                                 ;;
6120                         esac
6121                         ;;
6122                 *)      dflt=n
6123                         ;;
6124                 esac
6125                 ;;
6126         $define|true|[Yy]*)
6127                 dflt=y
6128                 ;;
6129         *)      dflt=n
6130                 ;;
6131         esac
6132         $cat << EOM
6133
6134 The perl executable is normally obtained by linking perlmain.c with
6135 libperl${_a}, any static extensions (usually just DynaLoader), and
6136 any other libraries needed on this system (such as -lm, etc.).  Since
6137 your system supports dynamic loading, it is probably possible to build
6138 a shared libperl.$so.  If you will have more than one executable linked
6139 to libperl.$so, this will significantly reduce the size of each
6140 executable, but it may have a noticeable affect on performance.  The
6141 default is probably sensible for your system.
6142 $also
6143
6144 EOM
6145         rp="Build a shared libperl.$so (y/n)"
6146         . ./myread
6147         case "$ans" in
6148         true|$define|[Yy]*)
6149                 useshrplib='true'  ;;
6150         *)      useshrplib='false' ;;
6151         esac
6152         ;;
6153 esac
6154
6155 case "$useshrplib" in
6156 true)
6157         case "$libperl" in
6158         '')
6159                 # Figure out a good name for libperl.so.  Since it gets stored in
6160                 # a version-specific architecture-dependent library, the version
6161                 # number isn't really that important, except for making cc/ld happy.
6162                 #
6163                 # A name such as libperl.so.3.1
6164                 majmin="libperl.$so.$patchlevel.$subversion"
6165                 # A name such as libperl.so.301
6166                 majonly=`echo $patchlevel $subversion |
6167                         $awk '{printf "%d%02d", $1, $2}'`
6168                 majonly=libperl.$so.$majonly
6169                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6170                 # rely on figuring it out from the naming of libc.
6171                 case "${osname}${osvers}" in
6172                 next4*)
6173                         dflt=libperl.5.$so
6174                         # XXX How handle the --version stuff for MAB?
6175                         ;;
6176                 linux*)  # ld won't link with a bare -lperl otherwise.
6177                         dflt=libperl.$so
6178                         ;;
6179                 cygwin*) # include version
6180                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6181                         ;;
6182                 *)      # Try to guess based on whether libc has major.minor.
6183                         case "$libc" in
6184                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6185                         *libc.$so.[0-9]*) dflt=$majonly ;;
6186                         *)      dflt=libperl.$so ;;
6187                         esac
6188                         ;;
6189                 esac
6190                 ;;
6191         *)      dflt=$libperl
6192                 ;;
6193         esac
6194         cat << EOM
6195
6196 I need to select a good name for the shared libperl.  If your system uses
6197 library names with major and minor numbers, then you might want something
6198 like $majmin.  Alternatively, if your system uses a single version
6199 number for shared libraries, then you might want to use $majonly.
6200 Or, your system might be quite happy with a simple libperl.$so.
6201
6202 Since the shared libperl will get installed into a version-specific
6203 architecture-dependent directory, the version number of the shared perl
6204 library probably isn't important, so the default should be o.k.
6205
6206 EOM
6207         rp='What name do you want to give to the shared libperl?'
6208         . ./myread
6209         libperl=$ans
6210         echo "Ok, I'll use $libperl"
6211         ;;
6212 *)
6213         libperl="libperl${_a}"
6214         ;;
6215 esac
6216
6217 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6218 case "$shrpdir" in
6219 '') ;;
6220 *)      $cat >&4 <<EOM
6221 WARNING:  Use of the shrpdir variable for the installation location of
6222 the shared $libperl is not supported.  It was never documented and
6223 will not work in this version.  Let me (perlbug@perl.com)
6224 know of any problems this may cause.
6225
6226 EOM
6227         case "$shrpdir" in
6228         "$archlibexp/CORE")
6229                 $cat >&4 <<EOM
6230 But your current setting of $shrpdir is
6231 the default anyway, so it's harmless.
6232 EOM
6233                 ;;
6234         *)
6235                 $cat >&4 <<EOM
6236 Further, your current attempted setting of $shrpdir
6237 conflicts with the value of $archlibexp/CORE
6238 that installperl will use.
6239 EOM
6240                 ;;
6241         esac
6242         ;;
6243 esac
6244
6245 # How will the perl executable find the installed shared $libperl?
6246 # Add $xxx to ccdlflags.
6247 # If we can't figure out a command-line option, use $shrpenv to
6248 # set env LD_RUN_PATH.  The main perl makefile uses this.
6249 shrpdir=$archlibexp/CORE
6250 xxx=''
6251 tmp_shrpenv=''
6252 if "$useshrplib"; then
6253     case "$osname" in 
6254         aix)
6255                 # We'll set it in Makefile.SH...
6256                 ;;
6257         solaris|netbsd)
6258                 xxx="-R $shrpdir"
6259                 ;;
6260         freebsd)
6261                 xxx="-Wl,-R$shrpdir"
6262                 ;;
6263         linux|irix*|dec_osf)
6264                 xxx="-Wl,-rpath,$shrpdir"
6265                 ;;
6266         next)
6267                 # next doesn't like the default...
6268                 ;;
6269         beos)
6270                 # beos doesn't like the default, either.
6271                 ;;
6272         hpux*)
6273                 # hpux doesn't like the default, either.
6274                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6275                 ;;
6276         *)
6277                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6278                 ;;
6279         esac
6280         case "$xxx" in
6281         '') ;;
6282         *)      
6283                 # Only add $xxx if it isn't already in ccdlflags.
6284                 case " $ccdlflags " in
6285                 *" $xxx "*)     ;;
6286                 *)      ccdlflags="$ccdlflags $xxx"
6287                         cat <<EOM >&4
6288
6289 Adding $xxx to the flags
6290 passed to $ld so that the perl executable will find the 
6291 installed shared $libperl.
6292
6293 EOM
6294                         ;;
6295                 esac
6296                 ;;
6297         esac
6298 fi
6299 # Fix ccdlflags in AIX for building external extensions.
6300 # (For building Perl itself bare -bE:perl.exp is needed,
6301 #  Makefile.SH takes care of this.)
6302 case "$osname" in
6303 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6304 esac
6305 # Respect a hint or command-line value.
6306 case "$shrpenv" in
6307 '') shrpenv="$tmp_shrpenv" ;;
6308 esac
6309 case "$ldlibpthname" in
6310 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6311 none)   ldlibpthname='' ;;
6312 esac
6313
6314 : determine where manual pages go
6315 set man1dir man1dir none
6316 eval $prefixit
6317 $cat <<EOM
6318
6319 $spackage has manual pages available in source form.
6320 EOM
6321 case "$nroff" in
6322 nroff)
6323         echo "However, you don't have nroff, so they're probably useless to you."
6324         case "$man1dir" in
6325         '') man1dir="none";;
6326         esac;;
6327 esac
6328 echo "If you don't want the manual sources installed, answer 'none'."
6329 case "$man1dir" in
6330 ' ') dflt=none
6331         ;;
6332 '')
6333         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6334         lookpath="$lookpath $prefixexp/man/p_man/man1"
6335         lookpath="$lookpath $prefixexp/man/u_man/man1"
6336         lookpath="$lookpath $prefixexp/man/man.1"
6337         case "$sysman" in
6338         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6339         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6340         esac
6341         set dflt
6342         eval $prefixup
6343         ;;
6344 *)  dflt="$man1dir"
6345         ;;
6346 esac
6347 echo " "
6348 fn=dn+~
6349 rp="Where do the main $spackage manual pages (source) go?"
6350 . ./getfile
6351 if $test "X$man1direxp" != "X$ansexp"; then
6352         installman1dir=''
6353 fi
6354 man1dir="$ans"
6355 man1direxp="$ansexp"
6356 case "$man1dir" in
6357 '')     man1dir=' '
6358         installman1dir='';;
6359 esac
6360
6361 : Change installation prefix, if necessary.
6362 if $test X"$prefix" != X"$installprefix"; then
6363         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6364 else
6365         installman1dir="$man1direxp"
6366 fi
6367
6368 : What suffix to use on installed man pages
6369
6370 case "$man1dir" in
6371 ' ')
6372         man1ext='0'
6373         ;;
6374 *)
6375         rp="What suffix should be used for the main $spackage man pages?"
6376         case "$man1ext" in
6377         '')     case "$man1dir" in
6378                 *1)  dflt=1 ;;
6379                 *1p) dflt=1p ;;
6380                 *1pm) dflt=1pm ;;
6381                 *l) dflt=l;;
6382                 *n) dflt=n;;
6383                 *o) dflt=o;;
6384                 *p) dflt=p;;
6385                 *C) dflt=C;;
6386                 *L) dflt=L;;
6387                 *L1) dflt=L1;;
6388                 *) dflt=1;;
6389                 esac
6390                 ;;
6391         *)      dflt="$man1ext";;
6392         esac
6393         . ./myread
6394         man1ext="$ans"
6395         ;;
6396 esac
6397
6398 : see if we can have long filenames
6399 echo " "
6400 rmlist="$rmlist /tmp/cf$$"
6401 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6402 first=123456789abcdef
6403 second=/tmp/cf$$/$first
6404 $rm -f $first $second
6405 if (echo hi >$first) 2>/dev/null; then
6406         if $test -f 123456789abcde; then
6407                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6408                 val="$undef"
6409         else
6410                 if (echo hi >$second) 2>/dev/null; then
6411                         if $test -f /tmp/cf$$/123456789abcde; then
6412                                 $cat <<'EOM'
6413 That's peculiar... You can have filenames longer than 14 characters, but only
6414 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6415 I shall consider your system cannot support long filenames at all.
6416 EOM
6417                                 val="$undef"
6418                         else
6419                                 echo 'You can have filenames longer than 14 characters.' >&4
6420                                 val="$define"
6421                         fi
6422                 else
6423                         $cat <<'EOM'
6424 How confusing! Some of your filesystems are sane enough to allow filenames
6425 longer than 14 characters but some others like /tmp can't even think about them.
6426 So, for now on, I shall assume your kernel does not allow them at all.
6427 EOM
6428                         val="$undef"
6429                 fi
6430         fi
6431 else
6432         $cat <<'EOM'
6433 You can't have filenames longer than 14 chars.  You can't even think about them!
6434 EOM
6435         val="$undef"
6436 fi 
6437 set d_flexfnam
6438 eval $setvar
6439 $rm -rf /tmp/cf$$ 123456789abcde*
6440
6441 : determine where library module manual pages go
6442 set man3dir man3dir none
6443 eval $prefixit
6444 $cat <<EOM
6445
6446 $spackage has manual pages for many of the library modules.
6447 EOM
6448
6449 case "$nroff" in
6450 nroff)
6451         $cat <<'EOM'
6452 However, you don't have nroff, so they're probably useless to you.
6453 EOM
6454         case "$man3dir" in
6455         '') man3dir="none";;
6456         esac;;
6457 esac
6458
6459 case "$d_flexfnam" in
6460 undef)
6461         $cat <<'EOM'
6462 However, your system can't handle the long file names like File::Basename.3. 
6463 EOM
6464         case "$man3dir" in
6465         '') man3dir="none";;
6466         esac;;
6467 esac
6468
6469 echo "If you don't want the manual sources installed, answer 'none'."
6470 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6471 case "$man3dir" in
6472 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6473         if $test -d "$privlib/man/man3"; then
6474                 cat <<EOM >&4
6475
6476 WARNING:  Previous versions of perl installed man3 pages into
6477 $privlib/man/man3.  This version will suggest a 
6478 new default of $dflt.  
6479 EOM
6480                 tdflt=$dflt
6481                 dflt='n'
6482                 rp='Do you wish to preserve the old behavior?(y/n)'
6483                 . ./myread
6484                 case "$ans" in
6485                 y*) dflt="$privlib/man/man3" ;;
6486                 *)  dflt=$tdflt ;;
6487                 esac
6488     fi
6489         ;;
6490 ' ') dflt=none;;
6491 *)      dflt="$man3dir" ;;
6492 esac
6493 echo " "
6494 fn=dn+~
6495 rp="Where do the $package library man pages (source) go?"
6496 . ./getfile
6497 man3dir="$ans"
6498 man3direxp="$ansexp"
6499 case "$man1dir" in
6500 '')     man3dir=' '
6501         installman3dir='';;
6502 esac
6503
6504 : Change installation prefix, if necessary.
6505 if $test X"$prefix" != X"$installprefix"; then
6506         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6507 else
6508         installman3dir="$man3direxp"
6509 fi
6510
6511 : What suffix to use on installed man pages
6512 case "$man3dir" in
6513 ' ')
6514         man3ext='0'
6515         ;;
6516 *)
6517         rp="What suffix should be used for the $package library man pages?"
6518         case "$man3ext" in
6519         '')     case "$man3dir" in
6520                 *3)  dflt=3 ;;
6521                 *3p) dflt=3p ;;
6522                 *3pm) dflt=3pm ;;
6523                 *l) dflt=l;;
6524                 *n) dflt=n;;
6525                 *o) dflt=o;;
6526                 *p) dflt=p;;
6527                 *C) dflt=C;;
6528                 *L) dflt=L;;
6529                 *L3) dflt=L3;;
6530                 *) dflt=3;;
6531                 esac
6532                 ;;
6533         *)      dflt="$man3ext";;
6534         esac
6535         . ./myread
6536         man3ext="$ans"
6537         ;;
6538 esac
6539
6540 : see if we have to deal with yellow pages, now NIS.
6541 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6542         if $test -f /usr/etc/nibindd; then
6543                 echo " "
6544                 echo "I'm fairly confident you're on a NeXT."
6545                 echo " "
6546                 rp='Do you get the hosts file via NetInfo?'
6547                 dflt=y
6548                 case "$hostcat" in
6549                 nidump*) ;;
6550                 '') ;;
6551                 *) dflt=n;;
6552                 esac
6553                 . ./myread
6554                 case "$ans" in
6555                 y*) hostcat='nidump hosts .';;
6556                 *)      case "$hostcat" in
6557                         nidump*) hostcat='';;
6558                         esac
6559                         ;;
6560                 esac
6561         fi
6562         case "$hostcat" in
6563         nidump*) ;;
6564         *)
6565                 case "$hostcat" in
6566                 *ypcat*) dflt=y;;
6567                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6568                                 dflt=y
6569                         else
6570                                 dflt=n
6571                         fi;;
6572                 *) dflt=n;;
6573                 esac
6574                 echo " "
6575                 rp='Are you getting the hosts file via yellow pages?'
6576                 . ./myread
6577                 case "$ans" in
6578                 y*) hostcat='ypcat hosts';;
6579                 *) hostcat='cat /etc/hosts';;
6580                 esac
6581                 ;;
6582         esac
6583 fi
6584 case "$hostcat" in
6585 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6586 esac
6587 case "$groupcat" in
6588 '') test -f /etc/group && groupcat='cat /etc/group';;
6589 esac
6590 case "$passcat" in
6591 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6592 esac
6593
6594 : now get the host name
6595 echo " "
6596 echo "Figuring out host name..." >&4
6597 case "$myhostname" in
6598 '') cont=true
6599         echo 'Maybe "hostname" will work...'
6600         if tans=`sh -c hostname 2>&1` ; then
6601                 myhostname=$tans
6602                 phostname=hostname
6603                 cont=''
6604         fi
6605         ;;
6606 *) cont='';;
6607 esac
6608 if $test "$cont"; then
6609         if ./xenix; then
6610                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6611                 if tans=`cat /etc/systemid 2>&1` ; then
6612                         myhostname=$tans
6613                         phostname='cat /etc/systemid'
6614                         echo "Whadyaknow.  Xenix always was a bit strange..."
6615                         cont=''
6616                 fi
6617         elif $test -r /etc/systemid; then
6618                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6619         fi
6620 fi
6621 if $test "$cont"; then
6622         echo 'No, maybe "uuname -l" will work...'
6623         if tans=`sh -c 'uuname -l' 2>&1` ; then
6624                 myhostname=$tans
6625                 phostname='uuname -l'
6626         else
6627                 echo 'Strange.  Maybe "uname -n" will work...'
6628                 if tans=`sh -c 'uname -n' 2>&1` ; then
6629                         myhostname=$tans
6630                         phostname='uname -n'
6631                 else
6632                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6633                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6634                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6635                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6636                         else
6637                                 case "$myhostname" in
6638                                 '') echo "Does this machine have an identity crisis or something?"
6639                                         phostname='';;
6640                                 *)
6641                                         echo "Well, you said $myhostname before..."
6642                                         phostname='echo $myhostname';;
6643                                 esac
6644                         fi
6645                 fi
6646         fi
6647 fi
6648 : you do not want to know about this
6649 set $myhostname
6650 myhostname=$1
6651
6652 : verify guess
6653 if $test "$myhostname" ; then
6654         dflt=y
6655         rp='Your host name appears to be "'$myhostname'".'" Right?"
6656         . ./myread
6657         case "$ans" in
6658         y*) ;;
6659         *) myhostname='';;
6660         esac
6661 fi
6662
6663 : bad guess or no guess
6664 while $test "X$myhostname" = X ; do
6665         dflt=''
6666         rp="Please type the (one word) name of your host:"
6667         . ./myread
6668         myhostname="$ans"
6669 done
6670
6671 : translate upper to lower if necessary
6672 case "$myhostname" in
6673 *[A-Z]*)
6674         echo "(Normalizing case in your host name)"
6675         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6676         ;;
6677 esac
6678
6679 case "$myhostname" in
6680 *.*)
6681         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6682         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6683         echo "(Trimming domain name from host name--host name is now $myhostname)"
6684         ;;
6685 *) case "$mydomain" in
6686         '')
6687                 {
6688                         test "X$hostcat" = "Xypcat hosts" &&
6689                         ypmatch "$myhostname" hosts 2>/dev/null |\
6690                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6691                         $test -s hosts
6692                 } || {
6693                         test "X$hostcat" != "X" &&
6694                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6695                                         /[       ]$myhostname[  . ]/p" > hosts
6696                 }
6697                 tmp_re="[       . ]"
6698                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6699                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6700                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6701                         hosts | $sort | $uniq | \
6702                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6703                 case `$echo X$dflt` in
6704                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6705                         dflt=.
6706                         ;;
6707                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6708                         ;;
6709                 esac
6710                 case "$dflt" in
6711                 .)
6712                         tans=`./loc resolv.conf X /etc /usr/etc`
6713                         if $test -f "$tans"; then
6714                                 echo "(Attempting domain name extraction from $tans)"
6715                                 dflt=.`$sed -n -e 's/   / /g' \
6716                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6717                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6718                                 case "$dflt" in
6719                                 .) dflt=.`$sed -n -e 's/        / /g' \
6720                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6721                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6722                                         ;;
6723                                 esac
6724                         fi
6725                         ;;
6726                 esac
6727                 case "$dflt" in
6728                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6729                         dflt=.`sh -c domainname 2>/dev/null`
6730                         case "$dflt" in
6731                         '') dflt='.';;
6732                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6733                         esac
6734                         ;;
6735                 esac
6736                 case "$dflt" in
6737                 .) echo "(Lost all hope -- silly guess then)"
6738                         dflt='.uucp'
6739                         ;;
6740                 esac
6741                 $rm -f hosts
6742                 ;;
6743         *) dflt="$mydomain";;
6744         esac;;
6745 esac
6746 echo " "
6747 rp="What is your domain name?"
6748 . ./myread
6749 tans="$ans"
6750 case "$ans" in
6751 '') ;;
6752 .*) ;;
6753 *) tans=".$tans";;
6754 esac
6755 mydomain="$tans"
6756
6757 : translate upper to lower if necessary
6758 case "$mydomain" in
6759 *[A-Z]*)
6760         echo "(Normalizing case in your domain name)"
6761         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6762         ;;
6763 esac
6764
6765 : a little sanity check here
6766 case "$phostname" in
6767 '') ;;
6768 *)
6769         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6770         $myhostname$mydomain|$myhostname) ;;
6771         *)
6772                 case "$phostname" in
6773                 sed*)
6774                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6775                         ;;
6776                 *)
6777                         echo "(That doesn't agree with your $phostname command, by the way.)"
6778                         ;;
6779                 esac
6780         ;;
6781         esac
6782         ;;
6783 esac
6784
6785 $cat <<EOM
6786
6787 I need to get your e-mail address in Internet format if possible, i.e.
6788 something like user@host.domain. Please answer accurately since I have
6789 no easy means to double check it. The default value provided below
6790 is most probably close to reality but may not be valid from outside
6791 your organization...
6792
6793 EOM
6794 cont=x
6795 while test "$cont"; do
6796         case "$cf_email" in
6797         '') dflt="$cf_by@$myhostname$mydomain";;
6798         *) dflt="$cf_email";;
6799         esac
6800         rp='What is your e-mail address?'
6801         . ./myread
6802         cf_email="$ans"
6803         case "$cf_email" in
6804         *@*.*) cont='' ;;
6805         *)
6806                 rp='Address does not look like an Internet one.  Use it anyway?'
6807                 case "$fastread" in
6808                 yes) dflt=y ;;
6809                 *) dflt=n ;;
6810                 esac
6811                 . ./myread
6812                 case "$ans" in
6813                 y*) cont='' ;;
6814                 *) echo " " ;;
6815                 esac
6816                 ;;
6817         esac
6818 done
6819
6820 $cat <<EOM
6821
6822 If you or somebody else will be maintaining perl at your site, please
6823 fill in the correct e-mail address here so that they may be contacted
6824 if necessary. Currently, the "perlbug" program included with perl
6825 will send mail to this address in addition to perlbug@perl.com. You may
6826 enter "none" for no administrator.
6827
6828 EOM
6829 case "$perladmin" in
6830 '') dflt="$cf_email";;
6831 *) dflt="$perladmin";;
6832 esac
6833 rp='Perl administrator e-mail address'
6834 . ./myread
6835 perladmin="$ans"
6836
6837 : figure out how to guarantee perl startup
6838 case "$startperl" in
6839 '')
6840         case "$sharpbang" in
6841         *!)
6842                 $cat <<EOH
6843
6844 I can use the #! construct to start perl on your system. This will
6845 make startup of perl scripts faster, but may cause problems if you
6846 want to share those scripts and perl is not in a standard place
6847 ($binexp/perl) on all your platforms. The alternative is to force
6848 a shell by starting the script with a single ':' character.
6849
6850 EOH
6851                 dflt="$binexp/perl"
6852                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6853                 . ./myread
6854                 case "$ans" in
6855                 none)   startperl=": # use perl";;
6856                 *)      startperl="#!$ans"
6857                         if $test 30 -lt `echo "$ans" | wc -c`; then
6858                                 $cat >&4 <<EOM
6859
6860 WARNING:  Some systems limit the #! command to 32 characters.
6861 If you experience difficulty running Perl scripts with #!, try
6862 installing Perl in a directory with a shorter pathname.
6863
6864 EOM
6865                         fi ;;
6866                 esac
6867                 ;;
6868         *) startperl=": # use perl"
6869                 ;;
6870         esac
6871         ;;
6872 esac
6873 echo "I'll use $startperl to start perl scripts."
6874
6875 : figure best path for perl in scripts
6876 case "$perlpath" in
6877 '')
6878         perlpath="$binexp/perl"
6879         case "$startperl" in
6880         *!*) ;;
6881         *)
6882                 $cat <<EOH
6883
6884 I will use the "eval 'exec'" idiom to start Perl on your system.
6885 I can use the full path of your Perl binary for this purpose, but
6886 doing so may cause problems if you want to share those scripts and
6887 Perl is not always in a standard place ($binexp/perl).
6888
6889 EOH
6890                 dflt="$binexp/perl"
6891                 rp="What path shall I use in \"eval 'exec'\"?"
6892                 . ./myread
6893                 perlpath="$ans"
6894                 ;;
6895         esac
6896         ;;
6897 esac
6898 case "$startperl" in
6899 *!*)    ;;
6900 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6901 esac
6902
6903 : determine where public executable scripts go
6904 set scriptdir scriptdir
6905 eval $prefixit
6906 case "$scriptdir" in
6907 '')
6908         dflt="$bin"
6909         : guess some guesses
6910         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6911         $test -d /usr/share/bin     && dflt=/usr/share/bin
6912         $test -d /usr/local/script  && dflt=/usr/local/script
6913         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6914         $test -d $prefixexp/script  && dflt=$prefixexp/script
6915         set dflt
6916         eval $prefixup
6917         ;;
6918 *)  dflt="$scriptdir"
6919         ;;
6920 esac
6921 $cat <<EOM
6922  
6923 Some installations have a separate directory just for executable scripts so
6924 that they can mount it across multiple architectures but keep the scripts in
6925 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6926 Or you might just lump your scripts in with all your other executables.
6927  
6928 EOM
6929 fn=d~
6930 rp='Where do you keep publicly executable scripts?'
6931 . ./getfile
6932 if $test "X$ansexp" != "X$scriptdirexp"; then
6933         installscript=''
6934 fi
6935 scriptdir="$ans"
6936 scriptdirexp="$ansexp"
6937 : Change installation prefix, if necessary.
6938 if $test X"$prefix" != X"$installprefix"; then
6939         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6940 else
6941         installscript="$scriptdirexp"
6942 fi
6943
6944 : determine where site specific architecture-dependent libraries go.
6945 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6946 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6947 : sitelib may have an optional trailing /share.
6948 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6949 tdflt="$tdflt/$archname"
6950 set sitearch sitearch none
6951 eval $prefixit
6952 case "$sitearch" in
6953 '')     dflt="$tdflt" ;;
6954 *)      dflt="$sitearch" ;;
6955 esac
6956 $cat <<EOM
6957
6958 The installation process will also create a directory for
6959 architecture-dependent site-specific extensions and modules.
6960
6961 EOM
6962 fn=nd~+
6963 rp='Pathname for the site-specific architecture-dependent library files?'
6964 . ./getfile
6965 sitearch="$ans"
6966 sitearchexp="$ansexp"
6967 : Change installation prefix, if necessary.
6968 if $test X"$prefix" != X"$installprefix"; then
6969         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6970 else
6971         installsitearch="$sitearchexp"
6972 fi
6973
6974 : determine where add-on public executables go
6975 case "$sitebin" in
6976 '')     dflt=$siteprefix/bin ;;
6977 *)      dflt=$sitebin ;;
6978 esac
6979 fn=d~
6980 rp='Pathname where the add-on public executables should be installed?'
6981 . ./getfile
6982 sitebin="$ans"
6983 sitebinexp="$ansexp"
6984 : Change installation prefix, if necessary.
6985 if $test X"$prefix" != X"$installprefix"; then
6986         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6987 else
6988         installsitebin="$sitebinexp"
6989 fi
6990
6991 : see if sqrtl exists
6992 set sqrtl d_sqrtl
6993 eval $inlibc
6994
6995 cat <<EOM
6996
6997 Perl can be built to take advantage of long doubles which
6998 (if available) may give more accuracy and range for floating point numbers.
6999
7000 If this doesn't make any sense to you, just accept the default 'n'.
7001 EOM
7002
7003 case "$ccflags" in
7004 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7005 esac
7006
7007 case "$uselongdouble" in
7008 $define|true|[yY]*)     dflt='y';;
7009 *) dflt='n';;
7010 esac
7011 rp='Try to use long doubles if available?'
7012 . ./myread
7013 case "$ans" in
7014 y|Y)    val="$define"   ;;
7015 *)      val="$undef"    ;;
7016 esac
7017 set uselongdouble
7018 eval $setvar
7019
7020 case "$uselongdouble" in
7021 true|[yY]*) uselongdouble="$define" ;;
7022 esac
7023
7024 case "$uselongdouble" in
7025 $define)
7026 : Look for a hint-file generated 'call-back-unit'.  If the
7027 : user has specified that long doubles should be used,
7028 : we may need to set or change some other defaults.
7029         if $test -f uselongdouble.cbu; then
7030                 echo "Your platform has some specific hints for long doubles, using them..."
7031                 . ./uselongdouble.cbu
7032         else
7033                 $cat <<EOM
7034 (Your platform doesn't have any specific hints for long doubles.)
7035 EOM
7036         fi
7037         ;;
7038 esac
7039
7040 case "$uselongdouble:$d_sqrtl" in
7041 $define:$undef)
7042                 $cat <<EOM >&4
7043
7044 You requested the use of long doubles but you do not seem to have
7045 the mathematic functions for long doubles.  I'm disabling the use
7046 of long doubles.
7047 EOM
7048         uselongdouble=$undef
7049         ;;
7050 esac
7051
7052 cat <<EOM
7053
7054 Previous version of $package used the standard IO mechanisms as defined
7055 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7056 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7057 the default.  This abstraction layer can use AT&T's sfio (if you already
7058 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7059 problems with some extension modules.  Using PerlIO with stdio is safe,
7060 but it is slower than plain stdio and therefore is not the default.
7061
7062 If this doesn't make any sense to you, just accept the default 'n'.
7063 EOM
7064 case "$useperlio" in
7065 $define|true|[yY]*)     dflt='y';;
7066 *) dflt='n';;
7067 esac
7068 rp='Use the experimental PerlIO abstraction layer?'
7069 . ./myread
7070 case "$ans" in
7071 y|Y) 
7072         val="$define"
7073         ;;     
7074 *)      
7075         echo "Ok, doing things the stdio way"
7076         val="$undef"
7077         ;;
7078 esac
7079 set useperlio
7080 eval $setvar 
7081
7082 case "$vendorprefix" in
7083 '')     d_vendorbin="$undef"
7084         vendorbin=''
7085         vendorbinexp=''
7086         ;;
7087 *)      d_vendorbin="$define"
7088         : determine where vendor-supplied executables go.
7089         dflt=$vendorprefix/bin
7090         fn=d~+
7091         rp='Pathname for the vendor-supplied executables directory?'
7092         . ./getfile
7093         vendorbin="$ans"
7094         vendorbinexp="$ansexp"
7095         : Change installation prefix, if necessary.
7096         if $test X"$prefix" != X"$installprefix"; then
7097                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7098         else
7099                 installvendorbin="$vendorbinexp"
7100         fi
7101         ;;
7102 esac
7103
7104 : check for length of double
7105 echo " "
7106 case "$doublesize" in
7107 '')
7108         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7109         $cat >try.c <<'EOCP'
7110 #include <stdio.h>
7111 int main()
7112 {
7113     printf("%d\n", (int)sizeof(double));
7114     exit(0);
7115 }
7116 EOCP
7117         set try
7118         if eval $compile_ok; then
7119                 doublesize=`./try`
7120                 $echo " $doublesize bytes." >&4
7121         else
7122                 dflt='8'
7123                 echo "(I can't seem to compile the test program.  Guessing...)"
7124                 rp="What is the size of a double precision number (in bytes)?"
7125                 . ./myread
7126                 doublesize="$ans"
7127         fi
7128         ;;
7129 esac
7130 $rm -f try.c try
7131
7132 : check for long doubles
7133 echo " "
7134 $echo $n "Checking to see if your system supports long double..." $c >&4
7135 echo 'int main() { long double x = 7.0; }' > try.c
7136 set try
7137 if eval $compile; then
7138         val="$define"
7139         echo " Yes, it does." >&4
7140 else
7141         val="$undef"
7142         echo " No, it doesn't." >&4
7143 fi
7144 $rm try.*
7145 set d_longdbl
7146 eval $setvar
7147
7148 : check for length of long double
7149 case "${d_longdbl}${longdblsize}" in
7150 $define)
7151         echo " "
7152         $echo $n "Checking to see how big your long doubles are..." $c >&4
7153         $cat >try.c <<'EOCP'
7154 #include <stdio.h>
7155 int main()
7156 {
7157         printf("%d\n", sizeof(long double));
7158 }
7159 EOCP
7160         set try
7161         set try
7162         if eval $compile; then
7163                 longdblsize=`./try$exe_ext`
7164                 $echo " $longdblsize bytes." >&4
7165         else
7166                 dflt='8'
7167                 echo " "
7168                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7169                 rp="What is the size of a long double (in bytes)?"
7170                 . ./myread
7171                 longdblsize="$ans"
7172         fi
7173         if $test "X$doublesize" = "X$longdblsize"; then
7174                 echo "(That isn't any different from an ordinary double.)"
7175         fi      
7176         ;;
7177 esac
7178 $rm -f try.* try
7179
7180 : Check how to convert floats to strings.
7181 if test "X$d_Gconvert" = X; then
7182         echo " "
7183         echo "Checking for an efficient way to convert floats to strings."
7184         $cat >try.c <<EOP
7185 #ifdef TRY_gconvert
7186 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7187 char *myname = "gconvert";
7188 #endif
7189 #ifdef TRY_gcvt
7190 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7191 char *myname = "gcvt";
7192 #endif
7193 #ifdef TRY_qgcvt
7194 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7195 char *myname = "qgcvt";
7196 #define DOUBLETYPE long double
7197 #endif
7198 #ifdef TRY_sprintf
7199 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7200 char *myname = "sprintf";
7201 #endif
7202
7203 #ifndef DOUBLETYPE
7204 #define DOUBLETYPE double
7205 #endif
7206
7207 #include <stdio.h>
7208
7209 #define I_STDLIB $i_stdlib
7210 #ifdef I_STDLIB
7211 #include <stdlib.h>
7212 #endif
7213
7214 int
7215 checkit(expect, got)
7216 char *expect;
7217 char *got;
7218 {
7219     if (strcmp(expect, got)) {
7220                 printf("%s oddity:  Expected %s, got %s\n",
7221                         myname, expect, got);
7222                 exit(1);
7223         }
7224 }
7225
7226 int main()
7227
7228         char buf[64]; 
7229         buf[63] = '\0';
7230
7231         /* This must be 1st test on (which?) platform */
7232         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7233         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7234         checkit("0.1", buf);
7235
7236         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7237         checkit("1", buf);
7238
7239         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7240         checkit("0", buf);
7241
7242         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7243         checkit("-1", buf);
7244
7245         /* Some Linux gcvt's give 1.e+5 here. */
7246         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7247         checkit("100000", buf);
7248         
7249         /* Some Linux gcvt's give -1.e+5 here. */
7250         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7251         checkit("-100000", buf);
7252
7253         exit(0);
7254 }
7255 EOP
7256         case "$d_Gconvert" in
7257         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7258         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7259         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7260         *) xxx_list='gconvert gcvt sprintf' ;;
7261         esac
7262
7263         case "$d_longdbl$uselongdouble" in
7264         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7265         esac
7266
7267         for xxx_convert in $xxx_list; do
7268                 echo "Trying $xxx_convert..."
7269                 $rm -f try try$_o
7270                 set try -DTRY_$xxx_convert
7271                 if eval $compile; then
7272                         echo "$xxx_convert() found." >&4
7273                         if ./try; then
7274                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7275                                 break;
7276                         else
7277                                 echo "...But $xxx_convert didn't work as I expected."
7278                         fi
7279                 else
7280                         echo "$xxx_convert NOT found." >&4
7281                 fi
7282         done
7283                 
7284         case "$xxx_convert" in
7285         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7286         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7287         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7288         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7289         esac
7290 fi
7291
7292 echo " "
7293
7294 if $test X"$d_longdbl" = X"$define"; then
7295
7296 echo "Checking how to print long doubles..." >&4
7297
7298 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7299         $cat >try.c <<'EOCP'
7300 #include <sys/types.h>
7301 #include <stdio.h>
7302 int main() {
7303   double d = 123.456;
7304   printf("%.3f\n", d);
7305 }
7306 EOCP
7307         set try
7308         if eval $compile; then
7309                 yyy=`./try$exe_ext`
7310                 case "$yyy" in
7311                 123.456)
7312                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7313                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7314                         echo "We will use %f."
7315                         ;;
7316                 esac
7317         fi
7318 fi
7319
7320 if $test X"$sPRIfldbl" = X; then
7321         $cat >try.c <<'EOCP'
7322 #include <sys/types.h>
7323 #include <stdio.h>
7324 int main() {
7325   long double d = 123.456;
7326   printf("%.3llf\n", d);
7327 }
7328 EOCP
7329         set try
7330         if eval $compile; then
7331                 yyy=`./try$exe_ext`
7332                 case "$yyy" in
7333                 123.456)
7334                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7335                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7336                         echo "We will use %llf."
7337                         ;;
7338                 esac
7339         fi
7340 fi
7341
7342 if $test X"$sPRIfldbl" = X; then
7343         $cat >try.c <<'EOCP'
7344 #include <sys/types.h>
7345 #include <stdio.h>
7346 int main() {
7347   long double d = 123.456;
7348   printf("%.3Lf\n", d);
7349 }
7350 EOCP
7351         set try
7352         if eval $compile; then
7353                 yyy=`./try$exe_ext`
7354                 case "$yyy" in
7355                 123.456)
7356                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7357                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7358                         echo "We will use %Lf."
7359                         ;;
7360                 esac
7361         fi
7362 fi
7363
7364 if $test X"$sPRIfldbl" = X; then
7365         $cat >try.c <<'EOCP'
7366 #include <sys/types.h>
7367 #include <stdio.h>
7368 int main() {
7369   long double d = 123.456;
7370   printf("%.3lf\n", d);
7371 }
7372 EOCP
7373         set try
7374         if eval $compile; then
7375                 yyy=`./try$exe_ext`
7376                 case "$yyy" in
7377                 123.456)
7378                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7379                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7380                         echo "We will use %lf."
7381                         ;;
7382                 esac
7383         fi
7384 fi
7385
7386 if $test X"$sPRIfldbl" = X; then
7387         echo "Cannot figure out how to print long doubles." >&4
7388 fi
7389
7390 $rm -f try try.*
7391
7392 fi # d_longdbl
7393
7394 case "$sPRIfldbl" in
7395 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7396         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7397         ;;
7398 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7399         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7400         ;;
7401 esac
7402
7403 : Initialize h_fcntl
7404 h_fcntl=false
7405
7406 : Initialize h_sysfile
7407 h_sysfile=false
7408
7409 : access call always available on UNIX
7410 set access d_access
7411 eval $inlibc
7412
7413 : locate the flags for 'access()'
7414 case "$d_access" in
7415 "$define")
7416         echo " "
7417         $cat >access.c <<'EOCP'
7418 #include <sys/types.h>
7419 #ifdef I_FCNTL
7420 #include <fcntl.h>
7421 #endif
7422 #ifdef I_SYS_FILE
7423 #include <sys/file.h>
7424 #endif
7425 #ifdef I_UNISTD
7426 #include <unistd.h>
7427 #endif
7428 int main() {
7429         exit(R_OK);
7430 }
7431 EOCP
7432         : check sys/file.h first, no particular reason here
7433         if $test `./findhdr sys/file.h` && \
7434                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7435                 h_sysfile=true;
7436                 echo "<sys/file.h> defines the *_OK access constants." >&4
7437         elif $test `./findhdr fcntl.h` && \
7438                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7439                 h_fcntl=true;
7440                 echo "<fcntl.h> defines the *_OK access constants." >&4
7441         elif $test `./findhdr unistd.h` && \
7442                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7443                 echo "<unistd.h> defines the *_OK access constants." >&4
7444         else
7445                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7446         fi
7447         ;;
7448 esac
7449 $rm -f access*
7450
7451 : see if accessx exists
7452 set accessx d_accessx
7453 eval $inlibc
7454
7455 : see if alarm exists
7456 set alarm d_alarm
7457 eval $inlibc
7458
7459 : see if atolf exists
7460 set atolf d_atolf
7461 eval $inlibc
7462
7463 : see if atoll exists
7464 set atoll d_atoll
7465 eval $inlibc
7466
7467 : Look for GNU-cc style attribute checking
7468 echo " "
7469 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7470 $cat >attrib.c <<'EOCP'
7471 #include <stdio.h>
7472 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7473 EOCP
7474 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7475         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7476                 echo "Your C compiler doesn't fully support __attribute__."
7477                 val="$undef"
7478         else
7479                 echo "Your C compiler supports __attribute__."
7480                 val="$define"
7481         fi
7482 else
7483         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7484         val="$undef"
7485 fi
7486 set d_attribut
7487 eval $setvar
7488 $rm -f attrib*
7489
7490 : see if bcmp exists
7491 set bcmp d_bcmp
7492 eval $inlibc
7493
7494 : see if bcopy exists
7495 set bcopy d_bcopy
7496 eval $inlibc
7497
7498 : see if this is a unistd.h system
7499 set unistd.h i_unistd
7500 eval $inhdr
7501
7502 : see if getpgrp exists
7503 set getpgrp d_getpgrp
7504 eval $inlibc
7505
7506 case "$d_getpgrp" in
7507 "$define")
7508         echo " "
7509         echo "Checking to see which flavor of getpgrp is in use..."
7510         $cat >set.c <<EOP
7511 #$i_unistd I_UNISTD
7512 #include <sys/types.h>
7513 #ifdef I_UNISTD
7514 #  include <unistd.h>
7515 #endif
7516 int main()
7517 {
7518         if (getuid() == 0) {
7519                 printf("(I see you are running Configure as super-user...)\n");
7520                 setuid(1);
7521         }
7522 #ifdef TRY_BSD_PGRP
7523         if (getpgrp(1) == 0)
7524                 exit(0);
7525 #else
7526         if (getpgrp() > 0)
7527                 exit(0);
7528 #endif
7529         exit(1);
7530 }
7531 EOP
7532         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7533                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7534                 val="$define"
7535         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7536                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7537                 val="$undef"
7538         else
7539                 echo "I can't seem to compile and run the test program."
7540                 if ./usg; then
7541                         xxx="a USG one, i.e. you use getpgrp()."
7542                 else
7543                         # SVR4 systems can appear rather BSD-ish.
7544                         case "$i_unistd" in
7545                         $undef)
7546                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7547                                 val="$define"
7548                                 ;;
7549                         $define)
7550                                 xxx="probably a USG one, i.e. you use getpgrp()."
7551                                 val="$undef"
7552                                 ;;
7553                         esac
7554                 fi
7555                 echo "Assuming your getpgrp is $xxx" >&4
7556         fi
7557         ;;
7558 *) val="$undef";;
7559 esac
7560 set d_bsdgetpgrp
7561 eval $setvar
7562 $rm -f set set.c
7563
7564 : see if setpgrp exists
7565 set setpgrp d_setpgrp
7566 eval $inlibc
7567
7568 case "$d_setpgrp" in
7569 "$define")
7570         echo " "
7571         echo "Checking to see which flavor of setpgrp is in use..."
7572         $cat >set.c <<EOP
7573 #$i_unistd I_UNISTD
7574 #include <sys/types.h>
7575 #ifdef I_UNISTD
7576 #  include <unistd.h>
7577 #endif
7578 int main()
7579 {
7580         if (getuid() == 0) {
7581                 printf("(I see you are running Configure as super-user...)\n");
7582                 setuid(1);
7583         }
7584 #ifdef TRY_BSD_PGRP
7585         if (-1 == setpgrp(1, 1))
7586                 exit(0);
7587 #else
7588         if (setpgrp() != -1)
7589                 exit(0);
7590 #endif
7591         exit(1);
7592 }
7593 EOP
7594         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7595                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7596                 val="$define"
7597         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7598                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7599                 val="$undef"
7600         else
7601                 echo "(I can't seem to compile and run the test program.)"
7602                 if ./usg; then
7603                         xxx="a USG one, i.e. you use setpgrp()."
7604                 else
7605                         # SVR4 systems can appear rather BSD-ish.
7606                         case "$i_unistd" in
7607                         $undef)
7608                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7609                                 val="$define"
7610                                 ;;
7611                         $define)
7612                                 xxx="probably a USG one, i.e. you use setpgrp()."
7613                                 val="$undef"
7614                                 ;;
7615                         esac
7616                 fi
7617                 echo "Assuming your setpgrp is $xxx" >&4
7618         fi
7619         ;;
7620 *) val="$undef";;
7621 esac
7622 set d_bsdsetpgrp
7623 eval $setvar
7624 $rm -f set set.c
7625 : see if bzero exists
7626 set bzero d_bzero
7627 eval $inlibc
7628
7629 : see if signal is declared as pointer to function returning int or void
7630 echo " "
7631 xxx=`./findhdr signal.h`
7632 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7633 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7634         echo "You have int (*signal())() instead of void." >&4
7635         val="$undef"
7636 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7637         echo "You have void (*signal())()." >&4
7638         val="$define"
7639 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7640         echo "You have int (*signal())() instead of void." >&4
7641         val="$undef"
7642 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7643         echo "You have void (*signal())()." >&4
7644         val="$define"
7645 else
7646         case "$d_voidsig" in
7647         '')
7648         echo "I can't determine whether signal handler returns void or int..." >&4
7649                 dflt=void
7650                 rp="What type does your signal handler return?"
7651                 . ./myread
7652                 case "$ans" in
7653                 v*) val="$define";;
7654                 *) val="$undef";;
7655                 esac;;
7656         "$define")
7657                 echo "As you already told me, signal handler returns void." >&4
7658                 val="$define"
7659                 ;;
7660         *)      echo "As you already told me, signal handler returns int." >&4
7661                 val="$undef"
7662                 ;;
7663         esac
7664 fi
7665 set d_voidsig
7666 eval $setvar
7667 case "$d_voidsig" in
7668 "$define") signal_t="void";;
7669 *) signal_t="int";;
7670 esac
7671 $rm -f $$.tmp
7672
7673 : check for ability to cast large floats to 32-bit ints.
7674 echo " "
7675 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7676 if $test "$intsize" -ge 4; then
7677         xxx=int
7678 else
7679         xxx=long
7680 fi
7681 $cat >try.c <<EOCP
7682 #include <stdio.h>
7683 #include <sys/types.h>
7684 #include <signal.h>
7685 $signal_t blech(s) int s; { exit(3); }
7686 int main()
7687 {
7688         $xxx i32;
7689         double f, g;
7690         int result = 0;
7691         char str[16];
7692         signal(SIGFPE, blech);
7693
7694         /* Don't let compiler optimize the test away.  Store the number 
7695            in a writable string for gcc to pass to sscanf under HP/UX.
7696         */
7697         sprintf(str, "2147483647");
7698         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7699         g = 10 * f;
7700         i32  = ($xxx) g;
7701
7702         /* x86 processors will probably give 0x8000 0000, which is a
7703        sign change.  We don't want that.  We want to mimic SPARC
7704            behavior here, which is to preserve the sign and give
7705            back 0x7fff ffff.
7706         */
7707         if (i32 != ($xxx) f)
7708                 result |= 1;
7709         exit(result);
7710 }
7711 EOCP
7712 set try
7713 if eval $compile_ok; then
7714         ./try
7715         yyy=$?
7716 else
7717         echo "(I can't seem to compile the test program--assuming it can't)"
7718         yyy=1
7719 fi
7720 case "$yyy" in
7721 0)      val="$define"
7722         echo "Yup, it can."
7723         ;;
7724 *)      val="$undef"
7725         echo "Nope, it can't."
7726         ;;
7727 esac
7728 set d_casti32
7729 eval $setvar
7730 $rm -f try try.*
7731
7732 : check for ability to cast negative floats to unsigned
7733 echo " "
7734 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7735 $cat >try.c <<EOCP
7736 #include <stdio.h>
7737 #include <sys/types.h>
7738 #include <signal.h>
7739 $signal_t blech(s) int s; { exit(7); }
7740 $signal_t blech_in_list(s) int s; { exit(4); }
7741 unsigned long dummy_long(p) unsigned long p; { return p; }
7742 unsigned int dummy_int(p) unsigned int p; { return p; }
7743 unsigned short dummy_short(p) unsigned short p; { return p; }
7744 int main()
7745 {
7746         double f;
7747         unsigned long along;
7748         unsigned int aint;
7749         unsigned short ashort;
7750         int result = 0;
7751         char str[16];
7752         
7753         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7754            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7755            optimized the whole file away
7756         */
7757         /* Store the number in a writable string for gcc to pass to 
7758            sscanf under HP/UX.
7759         */
7760         sprintf(str, "-123");
7761         sscanf(str, "%lf", &f);  /* f = -123.; */
7762
7763         signal(SIGFPE, blech);
7764         along = (unsigned long)f;
7765         aint = (unsigned int)f;
7766         ashort = (unsigned short)f;
7767         if (along != (unsigned long)-123)
7768                 result |= 1;
7769         if (aint != (unsigned int)-123)
7770                 result |= 1;
7771         if (ashort != (unsigned short)-123)
7772                 result |= 1;
7773         sprintf(str, "1073741824.");
7774         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7775         f = f + f;
7776         along = 0;
7777         along = (unsigned long)f;
7778         if (along != 0x80000000)
7779                 result |= 2;
7780         f -= 1.;
7781         along = 0;
7782         along = (unsigned long)f;
7783         if (along != 0x7fffffff)
7784                 result |= 1;
7785         f += 2.;
7786         along = 0;
7787         along = (unsigned long)f;
7788         if (along != 0x80000001)
7789                 result |= 2;
7790         if (result)
7791                 exit(result);
7792         signal(SIGFPE, blech_in_list);
7793         sprintf(str, "123.");
7794         sscanf(str, "%lf", &f);  /* f = 123.; */
7795         along = dummy_long((unsigned long)f);
7796         aint = dummy_int((unsigned int)f);
7797         ashort = dummy_short((unsigned short)f);
7798         if (along != (unsigned long)123)
7799                 result |= 4;
7800         if (aint != (unsigned int)123)
7801                 result |= 4;
7802         if (ashort != (unsigned short)123)
7803                 result |= 4;
7804         exit(result);
7805
7806 }
7807 EOCP
7808 set try
7809 if eval $compile_ok; then
7810         ./try
7811         castflags=$?
7812 else
7813         echo "(I can't seem to compile the test program--assuming it can't)"
7814         castflags=7
7815 fi
7816 case "$castflags" in
7817 0)      val="$define"
7818         echo "Yup, it can."
7819         ;;
7820 *)      val="$undef"
7821         echo "Nope, it can't."
7822         ;;
7823 esac
7824 set d_castneg
7825 eval $setvar
7826 $rm -f try.*
7827
7828 : see if vprintf exists
7829 echo " "
7830 if set vprintf val -f d_vprintf; eval $csym; $val; then
7831         echo 'vprintf() found.' >&4
7832         val="$define"
7833         $cat >vprintf.c <<'EOF'
7834 #include <varargs.h>
7835
7836 int main() { xxx("foo"); }
7837
7838 xxx(va_alist)
7839 va_dcl
7840 {
7841         va_list args;
7842         char buf[10];
7843
7844         va_start(args);
7845         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7846 }
7847 EOF
7848         set vprintf
7849         if eval $compile && ./vprintf; then
7850                 echo "Your vsprintf() returns (int)." >&4
7851                 val2="$undef"
7852         else
7853                 echo "Your vsprintf() returns (char*)." >&4
7854                 val2="$define"
7855         fi
7856 else
7857         echo 'vprintf() NOT found.' >&4
7858                 val="$undef"
7859                 val2="$undef"
7860 fi
7861 set d_vprintf
7862 eval $setvar
7863 val=$val2
7864 set d_charvspr
7865 eval $setvar
7866
7867 : see if chown exists
7868 set chown d_chown
7869 eval $inlibc
7870
7871 : see if chroot exists
7872 set chroot d_chroot
7873 eval $inlibc
7874
7875 : see if chsize exists
7876 set chsize d_chsize
7877 eval $inlibc
7878
7879 : check for const keyword
7880 echo " "
7881 echo 'Checking to see if your C compiler knows about "const"...' >&4
7882 $cat >const.c <<'EOCP'
7883 typedef struct spug { int drokk; } spug;
7884 int main()
7885 {
7886         const char *foo;
7887         const spug y;
7888 }
7889 EOCP
7890 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7891         val="$define"
7892         echo "Yup, it does."
7893 else
7894         val="$undef"
7895         echo "Nope, it doesn't."
7896 fi
7897 set d_const
7898 eval $setvar
7899
7900 : see if crypt exists
7901 echo " "
7902 if set crypt val -f d_crypt; eval $csym; $val; then
7903         echo 'crypt() found.' >&4
7904         val="$define"
7905         cryptlib=''
7906 else
7907         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7908         if $test -z "$cryptlib"; then
7909                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7910         else
7911                 cryptlib=-lcrypt
7912         fi
7913         if $test -z "$cryptlib"; then
7914                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7915         else
7916                 cryptlib=-lcrypt
7917         fi
7918         if $test -z "$cryptlib"; then
7919                 cryptlib=`./loc libcrypt$_a "" $libpth`
7920         else
7921                 cryptlib=-lcrypt
7922         fi
7923         if $test -z "$cryptlib"; then
7924                 echo 'crypt() NOT found.' >&4
7925                 val="$undef"
7926         else
7927                 val="$define"
7928         fi
7929 fi
7930 set d_crypt
7931 eval $setvar
7932
7933 : get csh whereabouts
7934 case "$csh" in
7935 'csh') val="$undef" ;;
7936 *) val="$define" ;;
7937 esac
7938 set d_csh
7939 eval $setvar
7940 : Respect a hint or command line value for full_csh.
7941 case "$full_csh" in
7942 '') full_csh=$csh ;;
7943 esac
7944
7945 : see if cuserid exists
7946 set cuserid d_cuserid
7947 eval $inlibc
7948
7949 : see if this is a limits.h system
7950 set limits.h i_limits
7951 eval $inhdr
7952
7953 : see if this is a float.h system
7954 set float.h i_float
7955 eval $inhdr
7956
7957 : See if number of significant digits in a double precision number is known
7958 echo " "
7959 $cat >dbl_dig.c <<EOM
7960 #$i_limits I_LIMITS
7961 #$i_float I_FLOAT
7962 #ifdef I_LIMITS
7963 #include <limits.h>
7964 #endif
7965 #ifdef I_FLOAT
7966 #include <float.h>
7967 #endif
7968 #ifdef DBL_DIG
7969 printf("Contains DBL_DIG");
7970 #endif
7971 EOM
7972 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7973 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7974         echo "DBL_DIG found." >&4
7975         val="$define"
7976 else
7977         echo "DBL_DIG NOT found." >&4
7978         val="$undef"
7979 fi
7980 $rm -f dbl_dig.?
7981 set d_dbl_dig
7982 eval $setvar
7983
7984 : see if difftime exists
7985 set difftime d_difftime
7986 eval $inlibc
7987
7988 : see if this is a dirent system
7989 echo " "
7990 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7991         val="$define"
7992         echo "<dirent.h> found." >&4
7993 else
7994         val="$undef"
7995         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7996                 echo "<sys/dir.h> found." >&4
7997                 echo " "
7998         else
7999                 xinc=`./findhdr sys/ndir.h`
8000         fi
8001         echo "<dirent.h> NOT found." >&4
8002 fi
8003 set i_dirent
8004 eval $setvar
8005
8006 : Look for type of directory structure.
8007 echo " "
8008 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8009
8010 case "$direntrytype" in
8011 ''|' ')
8012         case "$i_dirent" in
8013         $define) guess1='struct dirent' ;;
8014         *) guess1='struct direct'  ;;
8015         esac
8016         ;;
8017 *)      guess1="$direntrytype"
8018         ;;
8019 esac
8020
8021 case "$guess1" in
8022 'struct dirent') guess2='struct direct' ;;
8023 *) guess2='struct dirent' ;;
8024 esac
8025                 
8026 if $contains "$guess1" try.c >/dev/null 2>&1; then
8027         direntrytype="$guess1"
8028         echo "Your directory entries are $direntrytype." >&4
8029 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8030         direntrytype="$guess2"
8031         echo "Your directory entries seem to be $direntrytype." >&4
8032 else
8033         echo "I don't recognize your system's directory entries." >&4
8034         rp="What type is used for directory entries on this system?"
8035         dflt="$guess1"
8036         . ./myread
8037         direntrytype="$ans"
8038 fi
8039 $rm -f try.c
8040
8041
8042 : see if the directory entry stores field length
8043 echo " "
8044 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8045 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8046         echo "Good, your directory entry keeps length information in d_namlen." >&4
8047         val="$define"
8048 else
8049         echo "Your directory entry does not know about the d_namlen field." >&4
8050         val="$undef"
8051 fi
8052 set d_dirnamlen
8053 eval $setvar
8054 $rm -f try.c
8055
8056 : see if dlerror exists
8057 xxx_runnm="$runnm"
8058 runnm=false
8059 set dlerror d_dlerror
8060 eval $inlibc
8061 runnm="$xxx_runnm"
8062
8063 : see if dlfcn is available
8064 set dlfcn.h i_dlfcn
8065 eval $inhdr
8066
8067 case "$usedl" in
8068 $define|y|true)
8069         $cat << EOM
8070
8071 On a few systems, the dynamically loaded modules that perl generates and uses
8072 will need a different extension than shared libs. The default will probably
8073 be appropriate.
8074
8075 EOM
8076         case "$dlext" in
8077         '')     dflt="$so" ;;
8078         *)      dflt="$dlext" ;;
8079         esac
8080         rp='What is the extension of dynamically loaded modules'
8081         . ./myread
8082         dlext="$ans"
8083         ;;
8084 *)
8085         dlext="none"
8086         ;;
8087 esac
8088
8089 : Check if dlsym need a leading underscore
8090 echo " "
8091 val="$undef"
8092
8093 case "$dlsrc" in
8094 dl_dlopen.xs)
8095         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8096         $cat >dyna.c <<'EOM'
8097 fred () { }
8098 EOM
8099
8100 $cat >fred.c<<EOM
8101
8102 #include <stdio.h>
8103 #$i_dlfcn I_DLFCN
8104 #ifdef I_DLFCN
8105 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8106 #else
8107 #include <sys/types.h>
8108 #include <nlist.h>
8109 #include <link.h>
8110 #endif
8111
8112 extern int fred() ;
8113
8114 int main()
8115 {
8116     void * handle ;
8117     void * symbol ;
8118 #ifndef RTLD_LAZY
8119     int mode = 1 ;
8120 #else
8121     int mode = RTLD_LAZY ;
8122 #endif
8123     handle = dlopen("./dyna.$dlext", mode) ;
8124     if (handle == NULL) {
8125         printf ("1\n") ;
8126         fflush (stdout) ;
8127         exit(0);
8128     }
8129     symbol = dlsym(handle, "fred") ;
8130     if (symbol == NULL) {
8131         /* try putting a leading underscore */
8132         symbol = dlsym(handle, "_fred") ;
8133         if (symbol == NULL) {
8134             printf ("2\n") ;
8135             fflush (stdout) ;
8136             exit(0);
8137         }
8138         printf ("3\n") ;
8139     }
8140     else
8141         printf ("4\n") ;
8142     fflush (stdout) ;
8143     exit(0);
8144 }
8145 EOM
8146         : Call the object file tmp-dyna.o in case dlext=o.
8147         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8148                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8149                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8150                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8151                 xxx=`./fred`
8152                 case $xxx in
8153                 1)      echo "Test program failed using dlopen." >&4
8154                         echo "Perhaps you should not use dynamic loading." >&4;;
8155                 2)      echo "Test program failed using dlsym." >&4
8156                         echo "Perhaps you should not use dynamic loading." >&4;;
8157                 3)      echo "dlsym needs a leading underscore" >&4
8158                         val="$define" ;;
8159                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8160                 esac
8161         else
8162                 echo "I can't compile and run the test program." >&4
8163                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8164         fi
8165         ;;
8166 esac
8167                 
8168 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8169
8170 set d_dlsymun
8171 eval $setvar
8172
8173 hasproto='varname=$1; func=$2; shift; shift;
8174 while $test $# -ge 2; do
8175         case "$1" in
8176         $define) echo "#include <$2>";;
8177         esac ;
8178     shift 2;
8179 done > try.c;
8180 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8181 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8182         echo "$func() prototype found.";
8183         val="$define";
8184 else
8185         echo "$func() prototype NOT found.";
8186         val="$undef";
8187 fi;
8188 set $varname;
8189 eval $setvar;
8190 $rm -f try.c tryout.c'
8191
8192 : see if prototype for drand48 is available
8193 echo " "
8194 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8195 eval $hasproto
8196
8197 : see if dup2 exists
8198 set dup2 d_dup2
8199 eval $inlibc
8200
8201 : see if eaccess exists
8202 set eaccess d_eaccess
8203 eval $inlibc
8204
8205 : see if endgrent exists
8206 set endgrent d_endgrent
8207 eval $inlibc
8208
8209 : see if endhostent exists
8210 set endhostent d_endhent
8211 eval $inlibc
8212
8213 : see if endnetent exists
8214 set endnetent d_endnent
8215 eval $inlibc
8216
8217 : see if endprotoent exists
8218 set endprotoent d_endpent
8219 eval $inlibc
8220
8221 : see if endpwent exists
8222 set endpwent d_endpwent
8223 eval $inlibc
8224
8225 : see if endservent exists
8226 set endservent d_endsent
8227 eval $inlibc
8228
8229 : see if endspent exists
8230 set endspent d_endspent
8231 eval $inlibc
8232
8233 : Locate the flags for 'open()'
8234 echo " "
8235 $cat >open3.c <<'EOCP'
8236 #include <sys/types.h>
8237 #ifdef I_FCNTL
8238 #include <fcntl.h>
8239 #endif
8240 #ifdef I_SYS_FILE
8241 #include <sys/file.h>
8242 #endif
8243 int main() {
8244         if(O_RDONLY);
8245 #ifdef O_TRUNC
8246         exit(0);
8247 #else
8248         exit(1);
8249 #endif
8250 }
8251 EOCP
8252 : check sys/file.h first to get FREAD on Sun
8253 if $test `./findhdr sys/file.h` && \
8254                 set open3 -DI_SYS_FILE && eval $compile; then
8255         h_sysfile=true;
8256         echo "<sys/file.h> defines the O_* constants..." >&4
8257         if ./open3; then
8258                 echo "and you have the 3 argument form of open()." >&4
8259                 val="$define"
8260         else
8261                 echo "but not the 3 argument form of open().  Oh, well." >&4
8262                 val="$undef"
8263         fi
8264 elif $test `./findhdr fcntl.h` && \
8265                 set open3 -DI_FCNTL && eval $compile; then
8266         h_fcntl=true;
8267         echo "<fcntl.h> defines the O_* constants..." >&4
8268         if ./open3; then
8269                 echo "and you have the 3 argument form of open()." >&4
8270                 val="$define"
8271         else
8272                 echo "but not the 3 argument form of open().  Oh, well." >&4
8273                 val="$undef"
8274         fi
8275 else
8276         val="$undef"
8277         echo "I can't find the O_* constant definitions!  You got problems." >&4
8278 fi
8279 set d_open3
8280 eval $setvar
8281 $rm -f open3*
8282
8283 : see which of string.h or strings.h is needed
8284 echo " "
8285 strings=`./findhdr string.h`
8286 if $test "$strings" && $test -r "$strings"; then
8287         echo "Using <string.h> instead of <strings.h>." >&4
8288         val="$define"
8289 else
8290         val="$undef"
8291         strings=`./findhdr strings.h`
8292         if $test "$strings" && $test -r "$strings"; then
8293                 echo "Using <strings.h> instead of <string.h>." >&4
8294         else
8295                 echo "No string header found -- You'll surely have problems." >&4
8296         fi
8297 fi
8298 set i_string
8299 eval $setvar
8300 case "$i_string" in
8301 "$undef") strings=`./findhdr strings.h`;;
8302 *)        strings=`./findhdr string.h`;;
8303 esac
8304
8305 : check for non-blocking I/O stuff
8306 case "$h_sysfile" in
8307 true) echo "#include <sys/file.h>" > head.c;;
8308 *)
8309         case "$h_fcntl" in
8310         true) echo "#include <fcntl.h>" > head.c;;
8311         *) echo "#include <sys/fcntl.h>" > head.c;;
8312         esac
8313         ;;
8314 esac
8315 echo " "
8316 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8317 case "$o_nonblock" in
8318 '')
8319         $cat head.c > try.c
8320         $cat >>try.c <<'EOCP'
8321 #include <stdio.h>
8322 int main() {
8323 #ifdef O_NONBLOCK
8324         printf("O_NONBLOCK\n");
8325         exit(0);
8326 #endif
8327 #ifdef O_NDELAY
8328         printf("O_NDELAY\n");
8329         exit(0);
8330 #endif
8331 #ifdef FNDELAY
8332         printf("FNDELAY\n");
8333         exit(0);
8334 #endif
8335         exit(0);
8336 }
8337 EOCP
8338         set try
8339         if eval $compile_ok; then
8340                 o_nonblock=`./try`
8341                 case "$o_nonblock" in
8342                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8343                 *) echo "Seems like we can use $o_nonblock.";;
8344                 esac
8345         else
8346                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8347         fi
8348         ;;
8349 *) echo "Using $hint value $o_nonblock.";;
8350 esac
8351 $rm -f try try.* .out core
8352
8353 echo " "
8354 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8355 case "$eagain" in
8356 '')
8357         $cat head.c > try.c
8358         $cat >>try.c <<EOCP
8359 #include <errno.h>
8360 #include <sys/types.h>
8361 #include <signal.h>
8362 #include <stdio.h> 
8363 #define MY_O_NONBLOCK $o_nonblock
8364 #ifndef errno  /* XXX need better Configure test */
8365 extern int errno;
8366 #endif
8367 #$i_unistd I_UNISTD
8368 #ifdef I_UNISTD
8369 #include <unistd.h>
8370 #endif
8371 #ifdef $i_string
8372 #include <string.h>
8373 #else
8374 #include <strings.h>
8375 #endif
8376 $signal_t blech(x) int x; { exit(3); }
8377 EOCP
8378         $cat >> try.c <<'EOCP'
8379 int main()
8380 {
8381         int pd[2];
8382         int pu[2];
8383         char buf[1];
8384         char string[100];
8385
8386         pipe(pd);       /* Down: child -> parent */
8387         pipe(pu);       /* Up: parent -> child */
8388         if (0 != fork()) {
8389                 int ret;
8390                 close(pd[1]);   /* Parent reads from pd[0] */
8391                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8392                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8393                         exit(1);
8394                 signal(SIGALRM, blech);
8395                 alarm(5);
8396                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8397                         exit(2);
8398                 sprintf(string, "%d\n", ret);
8399                 write(2, string, strlen(string));
8400                 alarm(0);
8401 #ifdef EAGAIN
8402                 if (errno == EAGAIN) {
8403                         printf("EAGAIN\n");
8404                         goto ok;
8405                 }
8406 #endif
8407 #ifdef EWOULDBLOCK
8408                 if (errno == EWOULDBLOCK)
8409                         printf("EWOULDBLOCK\n");
8410 #endif
8411         ok:
8412                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8413                 sleep(2);                               /* Give it time to close our pipe */
8414                 alarm(5);
8415                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8416                 alarm(0);
8417                 sprintf(string, "%d\n", ret);
8418                 write(3, string, strlen(string));
8419                 exit(0);
8420         }
8421
8422         close(pd[0]);                   /* We write to pd[1] */
8423         close(pu[1]);                   /* We read from pu[0] */
8424         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8425         close(pd[1]);                   /* Pipe pd is now fully closed! */
8426         exit(0);                                /* Bye bye, thank you for playing! */
8427 }
8428 EOCP
8429         set try
8430         if eval $compile_ok; then
8431                 echo "$startsh" >mtry
8432                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8433                 chmod +x mtry
8434                 ./mtry >/dev/null 2>&1
8435                 case $? in
8436                 0) eagain=`$cat try.out`;;
8437                 1) echo "Could not perform non-blocking setting!";;
8438                 2) echo "I did a successful read() for something that was not there!";;
8439                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8440                 *) echo "Something terribly wrong happened during testing.";;
8441                 esac
8442                 rd_nodata=`$cat try.ret`
8443                 echo "A read() system call with no data present returns $rd_nodata."
8444                 case "$rd_nodata" in
8445                 0|-1) ;;
8446                 *)
8447                         echo "(That's peculiar, fixing that to be -1.)"
8448                         rd_nodata=-1
8449                         ;;
8450                 esac
8451                 case "$eagain" in
8452                 '')
8453                         echo "Forcing errno EAGAIN on read() with no data available."
8454                         eagain=EAGAIN
8455                         ;;
8456                 *)
8457                         echo "Your read() sets errno to $eagain when no data is available."
8458                         ;;
8459                 esac
8460                 status=`$cat try.err`
8461                 case "$status" in
8462                 0) echo "And it correctly returns 0 to signal EOF.";;
8463                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8464                 *) echo "However, your read() returns '$status' on EOF??";;
8465                 esac
8466                 val="$define"
8467                 if test "$status" = "$rd_nodata"; then
8468                         echo "WARNING: you can't distinguish between EOF and no data!"
8469                         val="$undef"
8470                 fi
8471         else
8472                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8473                 eagain=EAGAIN
8474         fi
8475         set d_eofnblk
8476         eval $setvar
8477         ;;
8478 *)
8479         echo "Using $hint value $eagain."
8480         echo "Your read() returns $rd_nodata when no data is present."
8481         case "$d_eofnblk" in
8482         "$define") echo "And you can see EOF because read() returns 0.";;
8483         "$undef") echo "But you can't see EOF status from read() returned value.";;
8484         *)
8485                 echo "(Assuming you can't see EOF status from read anyway.)"
8486                 d_eofnblk=$undef
8487                 ;;
8488         esac
8489         ;;
8490 esac
8491 $rm -f try try.* .out core head.c mtry
8492
8493 : see if fchmod exists
8494 set fchmod d_fchmod
8495 eval $inlibc
8496
8497 : see if fchown exists
8498 set fchown d_fchown
8499 eval $inlibc
8500
8501 : see if this is an fcntl system
8502 set fcntl d_fcntl
8503 eval $inlibc
8504
8505 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8506 while $test $# -ge 2; do
8507         case "$1" in
8508         $define) echo "#include <$2>";;
8509         esac ;
8510     shift 2;
8511 done > try.c;
8512 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8513 set try;
8514 if eval $compile; then
8515         val="$define";
8516 else
8517         val="$undef";
8518 fi;
8519 set $varname;
8520 eval $setvar;
8521 $rm -f try.c try.o'
8522
8523 socketlib=''
8524 sockethdr=''
8525 : see whether socket exists
8526 echo " "
8527 $echo $n "Hmm... $c" >&4
8528 if set socket val -f d_socket; eval $csym; $val; then
8529         echo "Looks like you have Berkeley networking support." >&4
8530         d_socket="$define"
8531         if set setsockopt val -f; eval $csym; $val; then
8532                 d_oldsock="$undef"
8533         else
8534                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8535                 d_oldsock="$define"
8536         fi
8537 else
8538         if $contains socklib libc.list >/dev/null 2>&1; then
8539                 echo "Looks like you have Berkeley networking support." >&4
8540                 d_socket="$define"
8541                 : we will have to assume that it supports the 4.2 BSD interface
8542                 d_oldsock="$undef"
8543         else
8544                 echo "You don't have Berkeley networking in libc$_a..." >&4
8545                 if test "X$d_socket" = "X$define"; then
8546                    echo "...but you seem to believe that you have sockets." >&4
8547                 else
8548                         for net in net socket
8549                         do
8550                                 if test -f /usr/lib/lib$net$_a; then
8551                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8552                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8553                                         if $contains socket libc.list >/dev/null 2>&1; then
8554                                                 d_socket="$define"
8555                                                 socketlib="-l$net"
8556                                                 case "$net" in
8557                                                 net)
8558                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8559                                                         sockethdr="-I/usr/netinclude"
8560                                                         ;;
8561                                                 esac
8562                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8563                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8564                                                         d_oldsock="$undef"
8565                                                 else
8566                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8567                                                         d_oldsock="$define"
8568                                                 fi
8569                                                 break
8570                                         fi
8571                                 fi
8572                         done
8573                         if test "X$d_socket" != "X$define"; then
8574                            echo "or anywhere else I see." >&4
8575                            d_socket="$undef"
8576                            d_oldsock="$undef"
8577                         fi
8578                 fi
8579         fi
8580 fi
8581
8582 : see if socketpair exists
8583 set socketpair d_sockpair
8584 eval $inlibc
8585
8586
8587 echo " "
8588 echo "Checking the availability of certain socket constants..." >& 4
8589 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8590         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8591         $cat >try.c <<EOF
8592 #include <sys/types.h>
8593 #include <sys/socket.h>
8594 int main() {
8595     int i = $ENUM;
8596 }
8597 EOF
8598         val="$undef"
8599         set try; if eval $compile; then
8600                 val="$define"
8601         fi
8602         set d_${enum}; eval $setvar
8603         $rm -f try.c try
8604 done
8605
8606 : see if sys/select.h has to be included
8607 set sys/select.h i_sysselct
8608 eval $inhdr
8609
8610 : see if we should include time.h, sys/time.h, or both
8611 echo " "
8612 if test "X$timeincl" = X; then
8613         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8614         $echo $n "I'm now running the test program...$c"
8615         $cat >try.c <<'EOCP'
8616 #include <sys/types.h>
8617 #ifdef I_TIME
8618 #include <time.h>
8619 #endif
8620 #ifdef I_SYSTIME
8621 #ifdef SYSTIMEKERNEL
8622 #define KERNEL
8623 #endif
8624 #include <sys/time.h>
8625 #endif
8626 #ifdef I_SYSSELECT
8627 #include <sys/select.h>
8628 #endif
8629 int main()
8630 {
8631         struct tm foo;
8632 #ifdef S_TIMEVAL
8633         struct timeval bar;
8634 #endif
8635 #ifdef S_TIMEZONE
8636         struct timezone tzp;
8637 #endif
8638         if (foo.tm_sec == foo.tm_sec)
8639                 exit(0);
8640 #ifdef S_TIMEVAL
8641         if (bar.tv_sec == bar.tv_sec)
8642                 exit(0);
8643 #endif
8644         exit(1);
8645 }
8646 EOCP
8647         flags=''
8648         for s_timezone in '-DS_TIMEZONE' ''; do
8649         sysselect=''
8650         for s_timeval in '-DS_TIMEVAL' ''; do
8651         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8652         for i_time in '' '-DI_TIME'; do
8653         for i_systime in '-DI_SYSTIME' ''; do
8654                 case "$flags" in
8655                 '') $echo $n ".$c"
8656                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8657                         if eval $compile; then
8658                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8659                                 shift
8660                                 flags="$*"
8661                                 echo " "
8662                                 $echo $n "Succeeded with $flags$c"
8663                         fi
8664                         ;;
8665                 esac
8666         done
8667         done
8668         done
8669         done
8670         done
8671         timeincl=''
8672         echo " "
8673         case "$flags" in
8674         *SYSTIMEKERNEL*) i_systimek="$define"
8675                 timeincl=`./findhdr sys/time.h`
8676                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8677         *) i_systimek="$undef";;
8678         esac
8679         case "$flags" in
8680         *I_TIME*) i_time="$define"
8681                 timeincl=`./findhdr time.h`" $timeincl"
8682                 echo "We'll include <time.h>." >&4;;
8683         *) i_time="$undef";;
8684         esac
8685         case "$flags" in
8686         *I_SYSTIME*) i_systime="$define"
8687                 timeincl=`./findhdr sys/time.h`" $timeincl"
8688                 echo "We'll include <sys/time.h>." >&4;;
8689         *) i_systime="$undef";;
8690         esac
8691         $rm -f try.c try
8692 fi
8693
8694 : check for fd_set items
8695 $cat <<EOM
8696
8697 Checking to see how well your C compiler handles fd_set and friends ...
8698 EOM
8699 $cat >fd_set.c <<EOCP
8700 #$i_systime I_SYS_TIME
8701 #$i_sysselct I_SYS_SELECT
8702 #$d_socket HAS_SOCKET
8703 #include <sys/types.h>
8704 #ifdef HAS_SOCKET
8705 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8706 #endif
8707 #ifdef I_SYS_TIME
8708 #include <sys/time.h>
8709 #endif
8710 #ifdef I_SYS_SELECT
8711 #include <sys/select.h>
8712 #endif
8713 int main() {
8714         fd_set fds;
8715
8716 #ifdef TRYBITS
8717         if(fds.fds_bits);
8718 #endif
8719
8720 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8721         exit(0);
8722 #else
8723         exit(1);
8724 #endif
8725 }
8726 EOCP
8727 set fd_set -DTRYBITS
8728 if eval $compile; then
8729         d_fds_bits="$define"
8730         d_fd_set="$define"
8731         echo "Well, your system knows about the normal fd_set typedef..." >&4
8732         if ./fd_set; then
8733                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8734                 d_fd_macros="$define"
8735         else
8736                 $cat >&4 <<'EOM'
8737 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8738 EOM
8739                 d_fd_macros="$undef"
8740         fi
8741 else
8742         $cat <<'EOM'
8743 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8744 EOM
8745         set fd_set
8746         if eval $compile; then
8747                 d_fds_bits="$undef"
8748                 d_fd_set="$define"
8749                 echo "Well, your system has some sort of fd_set available..." >&4
8750                 if ./fd_set; then
8751                         echo "and you have the normal fd_set macros." >&4
8752                         d_fd_macros="$define"
8753                 else
8754                         $cat <<'EOM'
8755 but not the normal fd_set macros!  Gross!  More work for me...
8756 EOM
8757                         d_fd_macros="$undef"
8758                 fi
8759         else
8760         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8761                 d_fd_set="$undef"
8762                 d_fds_bits="$undef"
8763                 d_fd_macros="$undef"
8764         fi
8765 fi
8766 $rm -f fd_set*
8767
8768 : see if fgetpos exists
8769 set fgetpos d_fgetpos
8770 eval $inlibc
8771
8772 : see if flock exists
8773 set flock d_flock
8774 eval $inlibc
8775
8776 : see if fork exists
8777 set fork d_fork
8778 eval $inlibc
8779
8780 : see if pathconf exists
8781 set pathconf d_pathconf
8782 eval $inlibc
8783
8784 : see if fpathconf exists
8785 set fpathconf d_fpathconf
8786 eval $inlibc
8787
8788
8789 : check for off64_t
8790 echo " "
8791 echo "Checking to see if your system supports off64_t..." >&4
8792 $cat >try.c <<EOCP
8793 #include <sys/types.h>
8794 #include <unistd.h>
8795 int main() { off64_t x = 7; }'
8796 EOCP
8797 set try
8798 if eval $compile; then
8799         val="$define"
8800         echo "Yes, it does."
8801 else
8802         val="$undef"
8803         echo "No, it doesn't."
8804         case "$lseeksize" in
8805         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8806         esac
8807 fi
8808 $rm -f try.* try
8809 set d_off64_t
8810 eval $setvar
8811
8812 : check for fpos64_t
8813 echo " "
8814 echo "Checking to see if your system supports fpos64_t..." >&4
8815 $cat >try.c <<EOCP
8816 #include <sys/stdio.h>
8817 int main() { fpos64_t x x = 7; }'
8818 EOCP
8819 set try
8820 if eval $compile; then
8821         val="$define"
8822         echo "Yes, it does."
8823 else
8824         val="$undef"
8825         echo "No, it doesn't."
8826         case "$fpossize" in
8827         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8828         esac
8829 fi
8830 $rm -f try.* try
8831 set d_fpos64_t
8832 eval $setvar
8833
8834 hasstruct='varname=$1; struct=$2; shift; shift;
8835 while $test $# -ge 2; do
8836         case "$1" in
8837         $define) echo "#include <$2>";;
8838         esac ;
8839     shift 2;
8840 done > try.c;
8841 echo "int main () { struct $struct foo; }" >> try.c;
8842 set try;
8843 if eval $compile; then
8844         val="$define";
8845 else
8846         val="$undef";
8847 fi;
8848 set $varname;
8849 eval $setvar;
8850 $rm -f try.c try.o'
8851
8852 : see if this is a sys/param system
8853 set sys/param.h i_sysparam
8854 eval $inhdr
8855
8856 : see if this is a sys/mount.h system
8857 set sys/mount.h i_sysmount
8858 eval $inhdr
8859
8860 : see if sys/types.h has to be included
8861 set sys/types.h i_systypes
8862 eval $inhdr
8863
8864
8865 echo " "
8866 echo "Checking to see if your system supports struct fs_data..." >&4
8867 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8868 eval $hasstruct
8869 case "$d_fs_data_s" in
8870 "$define")      echo "Yes, it does."   ;;
8871 *)              echo "No, it doesn't." ;;
8872 esac
8873
8874 : see if fseeko exists
8875 set fseeko d_fseeko
8876 eval $inlibc
8877 case "$longsize" in
8878 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8879 esac
8880
8881 : see if fsetpos exists
8882 set fsetpos d_fsetpos
8883 eval $inlibc
8884
8885
8886 : see if fstatfs exists
8887 set fstatfs d_fstatfs
8888 eval $inlibc
8889
8890
8891 : see if statvfs exists
8892 set statvfs d_statvfs
8893 eval $inlibc
8894
8895 : see if fstatvfs exists
8896 set fstatvfs d_fstatvfs
8897 eval $inlibc
8898
8899
8900 : see if ftello exists
8901 set ftello d_ftello
8902 eval $inlibc
8903 case "$longsize" in
8904 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8905 esac
8906
8907 : see if getcwd exists
8908 set getcwd d_getcwd
8909 eval $inlibc
8910
8911 : see if getgrent exists
8912 set getgrent d_getgrent
8913 eval $inlibc
8914
8915 : see if gethostbyaddr exists
8916 set gethostbyaddr d_gethbyaddr
8917 eval $inlibc
8918
8919 : see if gethostbyname exists
8920 set gethostbyname d_gethbyname
8921 eval $inlibc
8922
8923 : see if gethostent exists
8924 set gethostent d_gethent
8925 eval $inlibc
8926
8927 : see how we will look up host name
8928 echo " "
8929 call=''
8930 if set gethostname val -f d_gethname; eval $csym; $val; then
8931         echo 'gethostname() found.' >&4
8932         d_gethname="$define"
8933         call=gethostname
8934 fi
8935 if set uname val -f d_uname; eval $csym; $val; then
8936         if ./xenix; then
8937                 $cat <<'EOM'
8938 uname() was found, but you're running xenix, and older versions of xenix
8939 have a broken uname(). If you don't really know whether your xenix is old
8940 enough to have a broken system call, use the default answer.
8941
8942 EOM
8943                 dflt=y
8944                 case "$d_uname" in
8945                 "$define") dflt=n;;
8946                 esac
8947                 rp='Is your uname() broken?'
8948                 . ./myread
8949                 case "$ans" in
8950                 n*) d_uname="$define"; call=uname;;
8951                 esac
8952         else
8953                 echo 'uname() found.' >&4
8954                 d_uname="$define"
8955                 case "$call" in
8956                 '') call=uname ;;
8957                 esac
8958         fi
8959 fi
8960 case "$d_gethname" in
8961 '') d_gethname="$undef";;
8962 esac
8963 case "$d_uname" in
8964 '') d_uname="$undef";;
8965 esac
8966 case "$d_uname$d_gethname" in
8967 *define*)
8968         dflt=n
8969         cat <<EOM
8970  
8971 Every now and then someone has a $call() that lies about the hostname
8972 but can't be fixed for political or economic reasons.  If you wish, I can
8973 pretend $call() isn't there and maybe compute hostname at run-time
8974 thanks to the '$phostname' command.
8975
8976 EOM
8977         rp="Shall I ignore $call() from now on?"
8978         . ./myread
8979         case "$ans" in
8980         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8981         esac;;
8982 esac
8983 case "$phostname" in
8984 '') aphostname='';;
8985 *) case "$aphostname" in
8986         /*) ;;
8987         *) set X $phostname
8988                 shift
8989                 file=$1
8990                 shift
8991                 file=`./loc $file $file $pth`
8992                 aphostname=`echo $file $*`
8993                 ;;
8994         esac
8995         ;;
8996 esac
8997 case "$d_uname$d_gethname" in
8998 *define*) ;;
8999 *)
9000         case "$phostname" in
9001         '')
9002                 echo "There will be no way for $package to get your hostname." >&4;;
9003         *)
9004         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9005                 ;;
9006         esac;;
9007 esac
9008 case "$d_phostname" in
9009 '') d_phostname="$undef";;
9010 esac
9011
9012 : see if this is a netdb.h system
9013 set netdb.h i_netdb
9014 eval $inhdr
9015
9016 : see if prototypes for various gethostxxx netdb.h functions are available
9017 echo " "
9018 set d_gethostprotos gethostent $i_netdb netdb.h
9019 eval $hasproto
9020
9021 : see if getlogin exists
9022 set getlogin d_getlogin
9023 eval $inlibc
9024
9025 : see if getmnt exists
9026 set getmnt d_getmnt
9027 eval $inlibc
9028
9029 : see if getmntent exists
9030 set getmntent d_getmntent
9031 eval $inlibc
9032
9033 : see if getnetbyaddr exists
9034 set getnetbyaddr d_getnbyaddr
9035 eval $inlibc
9036
9037 : see if getnetbyname exists
9038 set getnetbyname d_getnbyname
9039 eval $inlibc
9040
9041 : see if getnetent exists
9042 set getnetent d_getnent
9043 eval $inlibc
9044
9045 : see if prototypes for various getnetxxx netdb.h functions are available
9046 echo " "
9047 set d_getnetprotos getnetent $i_netdb netdb.h
9048 eval $hasproto
9049
9050
9051 : see if getprotobyname exists
9052 set getprotobyname d_getpbyname
9053 eval $inlibc
9054
9055 : see if getprotobynumber exists
9056 set getprotobynumber d_getpbynumber
9057 eval $inlibc
9058
9059 : see if getprotoent exists
9060 set getprotoent d_getpent
9061 eval $inlibc
9062
9063 : see if getpgid exists
9064 set getpgid d_getpgid
9065 eval $inlibc
9066
9067 : see if getpgrp2 exists
9068 set getpgrp2 d_getpgrp2
9069 eval $inlibc
9070
9071 : see if getppid exists
9072 set getppid d_getppid
9073 eval $inlibc
9074
9075 : see if getpriority exists
9076 set getpriority d_getprior
9077 eval $inlibc
9078
9079 : see if prototypes for various getprotoxxx netdb.h functions are available
9080 echo " "
9081 set d_getprotoprotos getprotoent $i_netdb netdb.h
9082 eval $hasproto
9083
9084 : see if getpwent exists
9085 set getpwent d_getpwent
9086 eval $inlibc
9087
9088
9089 : see if getservbyname exists
9090 set getservbyname d_getsbyname
9091 eval $inlibc
9092
9093 : see if getservbyport exists
9094 set getservbyport d_getsbyport
9095 eval $inlibc
9096
9097 : see if getservent exists
9098 set getservent d_getsent
9099 eval $inlibc
9100
9101 : see if prototypes for various getservxxx netdb.h functions are available
9102 echo " "
9103 set d_getservprotos getservent $i_netdb netdb.h
9104 eval $hasproto
9105
9106 : see if getspent exists
9107 set getspent d_getspent
9108 eval $inlibc
9109
9110 : see if getspnam exists
9111 set getspnam d_getspnam
9112 eval $inlibc
9113
9114 : see if gettimeofday or ftime exists
9115 set gettimeofday d_gettimeod
9116 eval $inlibc
9117 case "$d_gettimeod" in
9118 "$undef")
9119         set ftime d_ftime 
9120         eval $inlibc
9121         ;;
9122 *)
9123         val="$undef"; set d_ftime; eval $setvar
9124         ;;
9125 esac
9126 case "$d_gettimeod$d_ftime" in
9127 "$undef$undef")
9128         echo " "
9129         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9130         ;;
9131 esac
9132
9133 : see if this is an grp system
9134 set grp.h i_grp
9135 eval $inhdr
9136
9137 case "$i_grp" in
9138 $define)
9139         xxx=`./findhdr grp.h`
9140         $cppstdin $cppflags $cppminus < $xxx >$$.h
9141
9142         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9143                 val="$define"
9144         else
9145                 val="$undef"
9146         fi
9147         set d_grpasswd
9148         eval $setvar
9149
9150         $rm -f $$.h
9151         ;;
9152 *)
9153         val="$undef";
9154         set d_grpasswd; eval $setvar
9155         ;;
9156 esac
9157
9158 : see if hasmntopt exists
9159 set hasmntopt d_hasmntopt
9160 eval $inlibc
9161
9162 : see if this is a netinet/in.h or sys/in.h system
9163 set netinet/in.h i_niin sys/in.h i_sysin
9164 eval $inhdr
9165
9166 : see if arpa/inet.h has to be included
9167 set arpa/inet.h i_arpainet
9168 eval $inhdr
9169
9170 : see if htonl --and friends-- exists
9171 val=''
9172 set htonl val
9173 eval $inlibc
9174
9175 : Maybe they are macros.
9176 case "$val" in
9177 $undef)
9178         $cat >htonl.c <<EOM
9179 #include <stdio.h>
9180 #include <sys/types.h>
9181 #$i_niin I_NETINET_IN
9182 #$i_sysin I_SYS_IN
9183 #$i_arpainet I_ARPA_INET
9184 #ifdef I_NETINET_IN
9185 #include <netinet/in.h>
9186 #endif
9187 #ifdef I_SYS_IN
9188 #include <sys/in.h>
9189 #endif
9190 #ifdef I_ARPA_INET
9191 #include <arpa/inet.h>
9192 #endif
9193 #ifdef htonl
9194 printf("Defined as a macro.");
9195 #endif
9196 EOM
9197         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9198         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9199                 val="$define"
9200                 echo "But it seems to be defined as a macro." >&4
9201         fi
9202         $rm -f htonl.?
9203         ;;
9204 esac
9205 set d_htonl
9206 eval $setvar
9207
9208 : see if iconv exists
9209 set iconv d_iconv
9210 eval $inlibc
9211
9212 : index or strchr
9213 echo " "
9214 if set index val -f; eval $csym; $val; then
9215         if set strchr val -f d_strchr; eval $csym; $val; then
9216                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9217                         val="$define"
9218                         vali="$undef"
9219                         echo "strchr() found." >&4
9220                 else
9221                         val="$undef"
9222                         vali="$define"
9223                         echo "index() found." >&4
9224                 fi
9225         else
9226                 val="$undef"
9227                 vali="$define"
9228                 echo "index() found." >&4
9229         fi
9230 else
9231         if set strchr val -f d_strchr; eval $csym; $val; then
9232                 val="$define"
9233                 vali="$undef"
9234                 echo "strchr() found." >&4
9235         else
9236                 echo "No index() or strchr() found!" >&4
9237                 val="$undef"
9238                 vali="$undef"
9239         fi
9240 fi
9241 set d_strchr; eval $setvar
9242 val="$vali"
9243 set d_index; eval $setvar
9244
9245 : check whether inet_aton exists
9246 set inet_aton d_inetaton
9247 eval $inlibc
9248
9249 : see if inttypes.h is available
9250 : we want a real compile instead of Inhdr because some systems
9251 : have an inttypes.h which includes non-existent headers
9252 echo " "
9253 $cat >try.c <<EOCP
9254 #include <inttypes.h>
9255 int main() {
9256         static int32_t foo32 = 0x12345678;
9257 }
9258 EOCP
9259 set try
9260 if eval $compile; then
9261         echo "<inttypes.h> found." >&4
9262         val="$define"
9263 else
9264         echo "<inttypes.h> NOT found." >&4
9265         val="$undef"
9266 fi
9267 $rm -f try.c try
9268 set i_inttypes
9269 eval $setvar
9270
9271 : check for int64_t
9272 echo " "
9273 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9274 $cat >try.c <<EOCP
9275 #include <sys/types.h>
9276 #$i_inttypes I_INTTYPES
9277 #ifdef I_INTTYPES
9278 #include <inttypes.h>
9279 #endif
9280 int main() { int64_t x = 7; }
9281 EOCP
9282 set try
9283 if eval $compile; then
9284         val="$define"
9285         echo " Yes, it does." >&4
9286 else
9287         val="$undef"
9288         echo " No, it doesn't." >&4
9289 fi
9290 $rm -f try try.*
9291 set d_int64t
9292 eval $setvar
9293
9294 : Look for isascii
9295 echo " "
9296 $cat >isascii.c <<'EOCP'
9297 #include <stdio.h>
9298 #include <ctype.h>
9299 int main() {
9300         int c = 'A';
9301         if (isascii(c))
9302                 exit(0);
9303         else
9304                 exit(1);
9305 }
9306 EOCP
9307 set isascii
9308 if eval $compile; then
9309         echo "isascii() found." >&4
9310         val="$define"
9311 else
9312         echo "isascii() NOT found." >&4
9313         val="$undef"
9314 fi
9315 set d_isascii
9316 eval $setvar
9317 $rm -f isascii*
9318
9319 : see if killpg exists
9320 set killpg d_killpg
9321 eval $inlibc
9322
9323 : see if lchown exists
9324 echo " "
9325 $cat > try.c <<'EOCP'
9326 /* System header to define __stub macros and hopefully few prototypes,
9327     which can conflict with char lchown(); below.  */
9328 #include <assert.h>
9329 /* Override any gcc2 internal prototype to avoid an error.  */
9330 /* We use char because int might match the return type of a gcc2
9331    builtin and then its argument prototype would still apply.  */
9332 char lchown();
9333 int main() {
9334     /*  The GNU C library defines this for functions which it implements
9335         to always fail with ENOSYS.  Some functions are actually named
9336         something starting with __ and the normal name is an alias.  */
9337 #if defined (__stub_lchown) || defined (__stub___lchown)
9338 choke me
9339 #else
9340 lchown();
9341 #endif
9342 ; return 0; }
9343 EOCP
9344 set try
9345 if eval $compile; then
9346     $echo "lchown() found." >&4
9347     val="$define"
9348 else
9349     $echo "lchown() NOT found." >&4
9350     val="$undef"
9351 fi
9352 set d_lchown
9353 eval $setvar
9354
9355 : See if number of significant digits in a double precision number is known
9356 echo " "
9357 $cat >ldbl_dig.c <<EOM
9358 #$i_limits I_LIMITS
9359 #$i_float I_FLOAT
9360 #ifdef I_LIMITS
9361 #include <limits.h>
9362 #endif
9363 #ifdef I_FLOAT
9364 #include <float.h>
9365 #endif
9366 #ifdef LDBL_DIG
9367 printf("Contains LDBL_DIG");
9368 #endif
9369 EOM
9370 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9371 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9372         echo "LDBL_DIG found." >&4
9373         val="$define"
9374 else
9375         echo "LDBL_DIG NOT found." >&4
9376         val="$undef"
9377 fi
9378 $rm -f ldbl_dig.?
9379 set d_ldbl_dig
9380 eval $setvar
9381
9382 : see if link exists
9383 set link d_link
9384 eval $inlibc
9385
9386 : see if localeconv exists
9387 set localeconv d_locconv
9388 eval $inlibc
9389
9390 : see if lockf exists
9391 set lockf d_lockf
9392 eval $inlibc
9393
9394 : check for long long
9395 echo " "
9396 $echo $n "Checking to see if your system supports long long..." $c >&4
9397 echo 'int main() { long long x = 7; return 0; }' > try.c
9398 set try
9399 if eval $compile; then
9400         val="$define"
9401         echo " Yes, it does." >&4
9402 else
9403         val="$undef"
9404         echo " No, it doesn't." >&4
9405 fi
9406 $rm try.*
9407 set d_longlong
9408 eval $setvar
9409
9410 : check for length of long long
9411 case "${d_longlong}${longlongsize}" in
9412 $define)
9413         echo " "
9414         $echo $n "Checking to see how big your long longs are..." $c >&4
9415         $cat >try.c <<'EOCP'
9416 #include <stdio.h>
9417 int main()
9418 {
9419     printf("%d\n", (int)sizeof(long long));
9420     return(0);
9421 }
9422 EOCP
9423         set try
9424         if eval $compile_ok; then
9425                 longlongsize=`./try$exe_ext`
9426                 $echo " $longlongsize bytes." >&4
9427         else
9428                 dflt='8'
9429                 echo " "
9430                 echo "(I can't seem to compile the test program.  Guessing...)"
9431                 rp="What is the size of a long long (in bytes)?"
9432                 . ./myread
9433                 longlongsize="$ans"
9434         fi
9435         if $test "X$longsize" = "X$longlongsize"; then
9436                 echo "(That isn't any different from an ordinary long.)"
9437         fi      
9438         ;;
9439 esac
9440 $rm -f try.* try
9441
9442 : see if lstat exists
9443 set lstat d_lstat
9444 eval $inlibc
9445
9446 : see if mblen exists
9447 set mblen d_mblen
9448 eval $inlibc
9449
9450 : see if mbstowcs exists
9451 set mbstowcs d_mbstowcs
9452 eval $inlibc
9453
9454 : see if mbtowc exists
9455 set mbtowc d_mbtowc
9456 eval $inlibc
9457
9458 : see if memchr exists
9459 set memchr d_memchr
9460 eval $inlibc
9461
9462 : see if memcmp exists
9463 set memcmp d_memcmp
9464 eval $inlibc
9465
9466 : see if memcpy exists
9467 set memcpy d_memcpy
9468 eval $inlibc
9469
9470 : see if memmove exists
9471 set memmove d_memmove
9472 eval $inlibc
9473
9474 : see if memset exists
9475 set memset d_memset
9476 eval $inlibc
9477
9478 : see if mkdir exists
9479 set mkdir d_mkdir
9480 eval $inlibc
9481
9482 : see if mkdtemp exists
9483 set mkdtemp d_mkdtemp
9484 eval $inlibc
9485
9486 : see if mkfifo exists
9487 set mkfifo d_mkfifo
9488 eval $inlibc
9489
9490 : see if mkstemp exists
9491 set mkstemp d_mkstemp
9492 eval $inlibc
9493
9494 : see if mkstemps exists
9495 set mkstemps d_mkstemps
9496 eval $inlibc
9497
9498 : see if mktime exists
9499 set mktime d_mktime
9500 eval $inlibc
9501
9502 : see if mprotect exists
9503 set mprotect d_mprotect
9504 eval $inlibc
9505
9506 : see if msgctl exists
9507 set msgctl d_msgctl
9508 eval $inlibc
9509
9510 : see if msgget exists
9511 set msgget d_msgget
9512 eval $inlibc
9513
9514 : see if msgsnd exists
9515 set msgsnd d_msgsnd
9516 eval $inlibc
9517
9518 : see if msgrcv exists
9519 set msgrcv d_msgrcv
9520 eval $inlibc
9521
9522 : see how much of the 'msg*(2)' library is present.
9523 h_msg=true
9524 echo " "
9525 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9526 *"$undef"*) h_msg=false;;
9527 esac
9528 case "$osname" in
9529 freebsd)
9530     case "`ipcs 2>&1`" in
9531     "SVID messages"*"not configured"*)
9532         echo "Your $osname does not have the msg*(2) configured." >&4
9533         h_msg=false
9534         val="$undef"
9535         set msgctl d_msgctl
9536         eval $setvar
9537         set msgget d_msgget
9538         eval $setvar
9539         set msgsnd d_msgsnd
9540         eval $setvar
9541         set msgrcv d_msgrcv
9542         eval $setvar
9543         ;;
9544     esac
9545     ;;
9546 esac
9547 : we could also check for sys/ipc.h ...
9548 if $h_msg && $test `./findhdr sys/msg.h`; then
9549         echo "You have the full msg*(2) library." >&4
9550         val="$define"
9551 else
9552         echo "You don't have the full msg*(2) library." >&4
9553         val="$undef"
9554 fi
9555 set d_msg
9556 eval $setvar
9557
9558 : see if msync exists
9559 set msync d_msync
9560 eval $inlibc
9561
9562 : see if munmap exists
9563 set munmap d_munmap
9564 eval $inlibc
9565
9566 : see if nice exists
9567 set nice d_nice
9568 eval $inlibc
9569
9570
9571 echo " "
9572 echo "Checking which 64-bit integer type we could use..." >&4
9573
9574 case "$intsize" in
9575 8) val=int
9576    set quadtype
9577    eval $setvar
9578    val='"unsigned int"'
9579    set uquadtype
9580    eval $setvar
9581    quadkind=1
9582    ;;
9583 *) case "$longsize" in
9584    8) val=long
9585       set quadtype
9586       eval $setvar
9587       val='"unsigned long"'
9588       set uquadtype
9589       eval $setvar
9590       quadkind=2
9591       ;;
9592    *) case "$d_longlong:$longlongsize" in
9593       define:8)
9594         val='"long long"'
9595         set quadtype
9596         eval $setvar
9597         val='"unsigned long long"'
9598         set uquadtype
9599         eval $setvar
9600         quadkind=3
9601         ;;
9602       *) case "$d_int64t" in
9603          define)
9604            val=int64_t
9605            set quadtype
9606            eval $setvar
9607            val=uint64_t
9608            set uquadtype
9609            eval $setvar
9610            quadkind=4
9611            ;;
9612          esac
9613          ;;
9614       esac
9615       ;;
9616    esac
9617    ;;
9618 esac
9619
9620 case "$quadtype" in
9621 '')     echo "Alas, no 64-bit integer types in sight." >&4
9622         d_quad="$undef"
9623         ;;
9624 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9625             verb="will"
9626         else
9627             verb="could"
9628         fi
9629         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9630         d_quad="$define"
9631         ;;
9632 esac
9633
9634 : check for length of character
9635 echo " "
9636 case "$charsize" in
9637 '')
9638         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9639         $cat >try.c <<'EOCP'
9640 #include <stdio.h>
9641 int main()
9642 {
9643     printf("%d\n", (int)sizeof(char));
9644     exit(0);
9645 }
9646 EOCP
9647         set try
9648         if eval $compile_ok; then
9649                 dflt=`./try`
9650         else
9651                 dflt='1'
9652                 echo "(I can't seem to compile the test program.  Guessing...)"
9653         fi
9654         ;;
9655 *)
9656         dflt="$charsize"
9657         ;;
9658 esac
9659 rp="What is the size of a character (in bytes)?"
9660 . ./myread
9661 charsize="$ans"
9662 $rm -f try.c try
9663
9664
9665 echo " "
9666 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9667
9668 case "$use64bits:$d_quad:$quadtype" in
9669 define:define:?*)
9670         ivtype="$quadtype"
9671         uvtype="$uquadtype"
9672         ivsize=8
9673         uvsize=8
9674         ;;
9675 *)      ivtype="long"
9676         uvtype="unsigned long"
9677         ivsize=$longsize
9678         uvsize=$longsize
9679         ;;
9680 esac
9681
9682 case "$uselongdouble:$d_longdbl" in
9683 define:define)
9684         nvtype="long double"
9685         nvsize=$longdblsize
9686         ;;
9687 *)      nvtype=double
9688         nvsize=$doublesize
9689         ;;
9690 esac
9691
9692 $echo "(IV will be "$ivtype", $ivsize bytes)"
9693 $echo "(UV will be "$uvtype", $uvsize bytes)"
9694 $echo "(NV will be "$nvtype", $nvsize bytes)"
9695
9696 $cat >try.c <<EOCP
9697 #$i_inttypes I_INTTYPES
9698 #ifdef I_INTTYPES
9699 #include <inttypes.h>
9700 #endif
9701 #include <stdio.h>
9702 int main() {
9703 #ifdef INT8
9704    int8_t i =  INT8_MAX;
9705   uint8_t u = UINT8_MAX;
9706   printf("int8_t\n");
9707 #endif
9708 #ifdef INT16
9709    int16_t i =  INT16_MAX;
9710   uint16_t i = UINT16_MAX;
9711   printf("int16_t\n");
9712 #endif
9713 #ifdef INT32
9714    int32_t i =  INT32_MAX;
9715   uint32_t u = UINT32_MAX;
9716   printf("int32_t\n");
9717 #endif
9718 }
9719 EOCP
9720
9721 case "$i8type" in
9722 '')     case "$charsize" in
9723         1)      i8type=char
9724                 u8type="unsigned char"
9725                 i8size=$charsize
9726                 u8size=$charsize
9727                 ;;
9728         esac
9729         ;;
9730 esac
9731 case "$i8type" in
9732 '')     set try -DINT8
9733         if eval $compile; then
9734                 case "`./try$exe_ext`" in
9735                 int8_t) i8type=int8_t
9736                         u8type=uint8_t
9737                         i8size=1
9738                         u8size=1
9739                         ;;
9740                 esac
9741         fi
9742         ;;
9743 esac
9744 case "$i8type" in
9745 '')     if $test $charsize -ge 1; then
9746                 i8type=char
9747                 u8type="unsigned char"
9748                 i8size=$charsize
9749                 u8size=$charsize
9750         fi
9751         ;;
9752 esac
9753
9754 case "$i16type" in
9755 '')     case "$shortsize" in
9756         2)      i16type=short
9757                 u16type="unsigned short"
9758                 i16size=$shortsize
9759                 u16size=$shortsize
9760                 ;;
9761         esac
9762         ;;
9763 esac
9764 case "$i16type" in
9765 '')     set try -DINT16
9766         if eval $compile; then
9767                 case "`./try$exe_ext`" in
9768                 int16_t)
9769                         i16type=int16_t
9770                         u16type=uint16_t
9771                         i16size=2
9772                         u16size=2
9773                         ;;
9774                 esac
9775         fi
9776         ;;
9777 esac
9778 case "$i16type" in
9779 '')     if $test $shortsize -ge 2; then
9780                 i16type=short
9781                 u16type="unsigned short"
9782                 i16size=$shortsize
9783                 u16size=$shortsize
9784         fi
9785         ;;
9786 esac
9787
9788 case "$i32type" in
9789 '')     case "$longsize" in
9790         4)      i32type=long
9791                 u32type="unsigned long"
9792                 i32size=$longsize
9793                 u32size=$longsize
9794                 ;;
9795         *)      case "$intsize" in
9796                 4)      i32type=int
9797                         u32type="unsigned int"
9798                         i32size=$intsize
9799                         u32size=$intsize
9800                         ;;
9801                 esac
9802                 ;;
9803         esac
9804         ;;
9805 esac
9806 case "$i32type" in
9807 '')     set try -DINT32
9808         if eval $compile; then
9809                 case "`./try$exe_ext`" in
9810                 int32_t)
9811                         i32type=int32_t
9812                         u32type=uint32_t
9813                         i32size=4
9814                         u32size=4
9815                         ;;
9816                 esac
9817         fi
9818         ;;
9819 esac
9820 case "$i32type" in
9821 '')     if $test $intsize -ge 4; then
9822                 i32type=int
9823                 u32type="unsigned int"
9824                 i32size=$intsize
9825                 u32size=$intsize
9826         fi
9827         ;;
9828 esac
9829
9830 case "$i64type" in
9831 '')     case "$d_quad:$quadtype" in
9832         define:?*)
9833                 i64type="$quadtype"
9834                 u64type="$uquadtype"
9835                 i64size=8
9836                 u64size=8
9837                 ;;
9838         esac
9839         ;;
9840 esac
9841
9842 $echo "Checking whether your NVs can preserve your UVs..." >&4
9843 $cat <<EOP >try.c
9844 #include <stdio.h>
9845 int main() {
9846     $uvtype k = ($uvtype)~0, l;
9847     $nvtype d;
9848     l = k;
9849     d = ($nvtype)l;
9850     l = ($uvtype)d;
9851     if (l == k)
9852        printf("preserve\n");
9853     exit(0);
9854 }
9855 EOP
9856 set try
9857 if eval $compile; then
9858         case "`./try$exe_ext`" in
9859         preserve) d_nv_preserves_uv="$define" ;;
9860         esac
9861 fi      
9862 case "$d_nv_preserves_uv" in
9863 $define) $echo "Yes, they can."  2>&1 ;;
9864 *)       $echo "No, they can't." 2>&1
9865          d_nv_preserves_uv="$undef"
9866          ;;
9867 esac
9868
9869 $rm -f try.* try
9870
9871 : see if POSIX threads are available
9872 set pthread.h i_pthread
9873 eval $inhdr
9874
9875
9876
9877
9878 : how to create joinable pthreads
9879 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9880         echo " "
9881         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9882         $cat >try.c <<'EOCP'
9883 #include <pthread.h>
9884 int main() {
9885     int detachstate = JOINABLE;
9886 }
9887 EOCP
9888         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9889         if eval $compile; then
9890                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9891                 val="$undef" # Yes, undef.
9892                 set d_old_pthread_create_joinable
9893                 eval $setvar
9894                 val=""
9895                 set old_pthread_create_joinable
9896                 eval $setvar
9897         else
9898                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9899                 if eval $compile; then
9900                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9901                         val="$define"
9902                         set d_old_pthread_create_joinable
9903                         eval $setvar
9904                         val=PTHREAD_CREATE_UNDETACHED
9905                         set old_pthread_create_joinable
9906                         eval $setvar
9907                 else            
9908                         set try -DJOINABLE=__UNDETACHED
9909                         if eval $compile; then
9910                                 echo "You seem to use __UNDETACHED." >&4
9911                                 val="$define"
9912                                 set d_old_pthread_create_joinable
9913                                 eval $setvar
9914                                 val=__UNDETACHED
9915                                 set old_pthread_create_joinable
9916                                 eval $setvar
9917                         else
9918                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9919                                 val="$define"
9920                                 set d_old_pthread_create_joinable
9921                                 eval $setvar
9922                                 val=0
9923                                 set old_pthread_create_joinable
9924                                 eval $setvar
9925                         fi
9926                 fi
9927         fi
9928         $rm -f try try.*
9929 else
9930     d_old_pthread_create_joinable="$undef"
9931     old_pthread_create_joinable=""
9932 fi
9933
9934 : see if pause exists
9935 set pause d_pause
9936 eval $inlibc
9937
9938 : see if pipe exists
9939 set pipe d_pipe
9940 eval $inlibc
9941
9942 : see if poll exists
9943 set poll d_poll
9944 eval $inlibc
9945
9946
9947 : see whether the various POSIXish _yields exist
9948 $cat >try.c <<EOP
9949 #include <pthread.h>
9950 #include <stdio.h>
9951 int main() {
9952 #ifdef SCHED_YIELD
9953         sched_yield();
9954 #else
9955 #ifdef PTHREAD_YIELD
9956         pthread_yield();
9957 #else
9958 #ifdef PTHREAD_YIELD_NULL
9959         pthread_yield(NULL);
9960 #endif
9961 #endif
9962 #endif
9963 }
9964 EOP
9965 : see if sched_yield exists
9966 set try -DSCHED_YIELD
9967 if eval $compile; then
9968     val="$define"
9969     sched_yield='sched_yield()'
9970 else
9971     val="$undef"
9972 fi
9973 case "$usethreads" in
9974 $define)
9975         case "$val" in
9976         $define) echo 'sched_yield() found.' >&4        ;;
9977         *)       echo 'sched_yield() NOT found.' >&4    ;;
9978         esac
9979 esac
9980 set d_sched_yield
9981 eval $setvar
9982
9983 : see if pthread_yield exists
9984 set try -DPTHREAD_YIELD
9985 if eval $compile; then
9986     val="$define"
9987     case "$sched_yield" in
9988     '') sched_yield='pthread_yield()' ;;
9989     esac
9990 else
9991     set try -DPTHREAD_YIELD_NULL
9992     if eval $compile; then
9993         val="$define"
9994         case "$sched_yield" in
9995         '') sched_yield='pthread_yield(NULL)' ;;
9996         esac
9997     else
9998         val="$undef"
9999     fi
10000 fi
10001 case "$usethreads" in
10002 $define)
10003         case "$val" in
10004         $define) echo 'pthread_yield() found.' >&4      ;;
10005         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10006         esac
10007         ;;
10008 esac
10009 set d_pthread_yield
10010 eval $setvar
10011
10012 case "$sched_yield" in
10013 '') sched_yield=undef ;;
10014 esac
10015
10016 $rm -f try try.*
10017
10018 : see if this is a pwd.h system
10019 set pwd.h i_pwd
10020 eval $inhdr
10021
10022 case "$i_pwd" in
10023 $define)
10024         xxx=`./findhdr pwd.h`
10025         $cppstdin $cppflags $cppminus < $xxx >$$.h
10026
10027         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10028                 val="$define"
10029         else
10030                 val="$undef"
10031         fi
10032         set d_pwquota
10033         eval $setvar
10034
10035         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10036                 val="$define"
10037         else
10038                 val="$undef"
10039         fi
10040         set d_pwage
10041         eval $setvar
10042
10043         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10044                 val="$define"
10045         else
10046                 val="$undef"
10047         fi
10048         set d_pwchange
10049         eval $setvar
10050
10051         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10052                 val="$define"
10053         else
10054                 val="$undef"
10055         fi
10056         set d_pwclass
10057         eval $setvar
10058
10059         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10060                 val="$define"
10061         else
10062                 val="$undef"
10063         fi
10064         set d_pwexpire
10065         eval $setvar
10066
10067         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10068                 val="$define"
10069         else
10070                 val="$undef"
10071         fi
10072         set d_pwcomment
10073         eval $setvar
10074
10075         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10076                 val="$define"
10077         else
10078                 val="$undef"
10079         fi
10080         set d_pwgecos
10081         eval $setvar
10082
10083         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10084                 val="$define"
10085         else
10086                 val="$undef"
10087         fi
10088         set d_pwpasswd
10089         eval $setvar
10090
10091         $rm -f $$.h
10092         ;;
10093 *)
10094         val="$undef"; 
10095         set d_pwquota; eval $setvar
10096         set d_pwage; eval $setvar
10097         set d_pwchange; eval $setvar
10098         set d_pwclass; eval $setvar
10099         set d_pwexpire; eval $setvar
10100         set d_pwcomment; eval $setvar
10101         set d_pwgecos; eval $setvar
10102         set d_pwpasswd; eval $setvar
10103         ;;
10104 esac
10105
10106 : see if readdir and friends exist
10107 set readdir d_readdir
10108 eval $inlibc
10109 set seekdir d_seekdir
10110 eval $inlibc
10111 set telldir d_telldir
10112 eval $inlibc
10113 set rewinddir d_rewinddir
10114 eval $inlibc
10115
10116 : see if readlink exists
10117 set readlink d_readlink
10118 eval $inlibc
10119
10120 : see if rename exists
10121 set rename d_rename
10122 eval $inlibc
10123
10124 : see if rmdir exists
10125 set rmdir d_rmdir
10126 eval $inlibc
10127
10128 : see if memory.h is available.
10129 val=''
10130 set memory.h val
10131 eval $inhdr
10132
10133 : See if it conflicts with string.h
10134 case "$val" in
10135 $define)
10136         case "$strings" in
10137         '') ;;
10138         *)
10139                 $cppstdin $cppflags $cppminus < $strings > mem.h
10140                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10141                         echo " "
10142                         echo "We won't be including <memory.h>."
10143                         val="$undef"
10144                 fi
10145                 $rm -f mem.h
10146                 ;;
10147         esac
10148 esac
10149 set i_memory
10150 eval $setvar
10151
10152 : can bcopy handle overlapping blocks?
10153 val="$undef"
10154 case "$d_bcopy" in
10155 "$define")
10156         echo " "
10157         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10158         $cat >try.c <<EOCP
10159 #$i_memory I_MEMORY
10160 #$i_stdlib I_STDLIB
10161 #$i_string I_STRING
10162 #$i_unistd I_UNISTD
10163 EOCP
10164         $cat >>try.c <<'EOCP'
10165 #include <stdio.h>
10166 #ifdef I_MEMORY
10167 #  include <memory.h>
10168 #endif
10169 #ifdef I_STDLIB
10170 #  include <stdlib.h>
10171 #endif
10172 #ifdef I_STRING
10173 #  include <string.h>
10174 #else
10175 #  include <strings.h>
10176 #endif
10177 #ifdef I_UNISTD
10178 #  include <unistd.h>  /* Needed for NetBSD */
10179 #endif
10180 int main()
10181 {
10182 char buf[128], abc[128];
10183 char *b;
10184 int len;
10185 int off;
10186 int align;
10187
10188 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10189
10190 for (align = 7; align >= 0; align--) {
10191         for (len = 36; len; len--) {
10192                 b = buf+align;
10193                 bcopy(abc, b, len);
10194                 for (off = 1; off <= len; off++) {
10195                         bcopy(b, b+off, len);
10196                         bcopy(b+off, b, len);
10197                         if (bcmp(b, abc, len))
10198                                 exit(1);
10199                 }
10200         }
10201 }
10202 exit(0);
10203 }
10204 EOCP
10205         set try
10206         if eval $compile_ok; then
10207                 if ./try 2>/dev/null; then
10208                         echo "Yes, it can."
10209                         val="$define"
10210                 else
10211                         echo "It can't, sorry."
10212                         case "$d_memmove" in
10213                         "$define") echo "But that's Ok since you have memmove()." ;;
10214                         esac
10215                 fi
10216         else
10217                 echo "(I can't compile the test program, so we'll assume not...)"
10218                 case "$d_memmove" in
10219                 "$define") echo "But that's Ok since you have memmove()." ;;
10220                 esac
10221         fi
10222         ;;
10223 esac
10224 $rm -f try.* try core
10225 set d_safebcpy
10226 eval $setvar
10227
10228 : can memcpy handle overlapping blocks?
10229 val="$undef"
10230 case "$d_memcpy" in
10231 "$define")
10232         echo " "
10233         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10234         $cat >try.c <<EOCP
10235 #$i_memory I_MEMORY
10236 #$i_stdlib I_STDLIB
10237 #$i_string I_STRING
10238 #$i_unistd I_UNISTD
10239 EOCP
10240         $cat >>try.c <<'EOCP'
10241 #include <stdio.h>
10242 #ifdef I_MEMORY
10243 #  include <memory.h>
10244 #endif
10245 #ifdef I_STDLIB
10246 #  include <stdlib.h>
10247 #endif
10248 #ifdef I_STRING
10249 #  include <string.h>
10250 #else
10251 #  include <strings.h>
10252 #endif
10253 #ifdef I_UNISTD
10254 #  include <unistd.h>  /* Needed for NetBSD */
10255 #endif
10256 int main()
10257 {
10258 char buf[128], abc[128];
10259 char *b;
10260 int len;
10261 int off;
10262 int align;
10263
10264 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10265    try to store the string in read-only memory. */
10266 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10267
10268 for (align = 7; align >= 0; align--) {
10269         for (len = 36; len; len--) {
10270                 b = buf+align;
10271                 memcpy(b, abc, len);
10272                 for (off = 1; off <= len; off++) {
10273                         memcpy(b+off, b, len);
10274                         memcpy(b, b+off, len);
10275                         if (memcmp(b, abc, len))
10276                                 exit(1);
10277                 }
10278         }
10279 }
10280 exit(0);
10281 }
10282 EOCP
10283         set try
10284         if eval $compile_ok; then
10285                 if ./try 2>/dev/null; then
10286                         echo "Yes, it can."
10287                         val="$define"
10288                 else
10289                         echo "It can't, sorry."
10290                         case "$d_memmove" in
10291                         "$define") echo "But that's Ok since you have memmove()." ;;
10292                         esac
10293                 fi
10294         else
10295                 echo "(I can't compile the test program, so we'll assume not...)"
10296                 case "$d_memmove" in
10297                 "$define") echo "But that's Ok since you have memmove()." ;;
10298                 esac
10299         fi
10300         ;;
10301 esac
10302 $rm -f try.* try core
10303 set d_safemcpy
10304 eval $setvar
10305
10306 : can memcmp be trusted to compare relative magnitude?
10307 val="$undef"
10308 case "$d_memcmp" in
10309 "$define")
10310         echo " "
10311         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10312         $cat >try.c <<EOCP
10313 #$i_memory I_MEMORY
10314 #$i_stdlib I_STDLIB
10315 #$i_string I_STRING
10316 #$i_unistd I_UNISTD
10317 EOCP
10318         $cat >>try.c <<'EOCP'
10319 #include <stdio.h>
10320 #ifdef I_MEMORY
10321 #  include <memory.h>
10322 #endif
10323 #ifdef I_STDLIB
10324 #  include <stdlib.h>
10325 #endif
10326 #ifdef I_STRING
10327 #  include <string.h>
10328 #else
10329 #  include <strings.h>
10330 #endif
10331 #ifdef I_UNISTD
10332 #  include <unistd.h>  /* Needed for NetBSD */
10333 #endif
10334 int main()
10335 {
10336 char a = -1;
10337 char b = 0;
10338 if ((a < b) && memcmp(&a, &b, 1) < 0)
10339         exit(1);
10340 exit(0);
10341 }
10342 EOCP
10343         set try
10344         if eval $compile_ok; then
10345                 if ./try 2>/dev/null; then
10346                         echo "Yes, it can."
10347                         val="$define"
10348                 else
10349                         echo "No, it can't (it uses signed chars)."
10350                 fi
10351         else
10352                 echo "(I can't compile the test program, so we'll assume not...)"
10353         fi
10354         ;;
10355 esac
10356 $rm -f try.* try core
10357 set d_sanemcmp
10358 eval $setvar
10359
10360 : see if select exists
10361 set select d_select
10362 eval $inlibc
10363
10364 : see if semctl exists
10365 set semctl d_semctl
10366 eval $inlibc
10367
10368 : see if semget exists
10369 set semget d_semget
10370 eval $inlibc
10371
10372 : see if semop exists
10373 set semop d_semop
10374 eval $inlibc
10375
10376 : see how much of the 'sem*(2)' library is present.
10377 h_sem=true
10378 echo " "
10379 case "$d_semctl$d_semget$d_semop" in
10380 *"$undef"*) h_sem=false;;
10381 esac
10382 case "$osname" in
10383 freebsd)
10384     case "`ipcs 2>&1`" in
10385     "SVID messages"*"not configured"*)
10386         echo "Your $osname does not have the sem*(2) configured." >&4
10387         h_sem=false
10388         val="$undef"
10389         set semctl d_semctl
10390         eval $setvar
10391         set semget d_semget
10392         eval $setvar
10393         set semop d_semop
10394         eval $setvar
10395         ;;
10396     esac
10397     ;;
10398 esac
10399 : we could also check for sys/ipc.h ...
10400 if $h_sem && $test `./findhdr sys/sem.h`; then
10401         echo "You have the full sem*(2) library." >&4
10402         val="$define"
10403 else
10404         echo "You don't have the full sem*(2) library." >&4
10405         val="$undef"
10406 fi
10407 set d_sem
10408 eval $setvar
10409
10410 : see whether sys/sem.h defines union semun
10411 echo " "
10412 $cat > try.c <<'END'
10413 #include <sys/types.h>
10414 #include <sys/ipc.h>
10415 #include <sys/sem.h>
10416 int main () { union semun semun; semun.buf = 0; }
10417 END
10418 set try
10419 if eval $compile; then
10420     echo "You have union semun in <sys/sem.h>." >&4
10421     val="$define"
10422 else
10423     echo "You do not have union semun in <sys/sem.h>." >&4
10424     val="$undef"
10425 fi
10426 $rm -f try try.c try.h
10427 set d_union_semun
10428 eval $setvar
10429
10430 : see how to do semctl IPC_STAT
10431 case "$d_sem" in
10432 $define)
10433     : see whether semctl IPC_STAT can use union semun
10434     echo " "
10435     $cat > try.h <<END
10436 #ifndef S_IRUSR
10437 #   ifdef S_IREAD
10438 #       define S_IRUSR S_IREAD
10439 #       define S_IWUSR S_IWRITE
10440 #       define S_IXUSR S_IEXEC
10441 #   else
10442 #       define S_IRUSR 0400
10443 #       define S_IWUSR 0200
10444 #       define S_IXUSR 0100
10445 #   endif
10446 #   define S_IRGRP (S_IRUSR>>3)
10447 #   define S_IWGRP (S_IWUSR>>3)
10448 #   define S_IXGRP (S_IXUSR>>3)
10449 #   define S_IROTH (S_IRUSR>>6)
10450 #   define S_IWOTH (S_IWUSR>>6)
10451 #   define S_IXOTH (S_IXUSR>>6)
10452 #endif
10453 #ifndef S_IRWXU
10454 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10455 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10456 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10457 #endif
10458 END
10459
10460     $cat > try.c <<END
10461 #include <sys/types.h>
10462 #include <sys/ipc.h>
10463 #include <sys/sem.h>
10464 #include <sys/stat.h>
10465 #include <stdio.h>
10466 #include <errno.h>
10467 #include "try.h"
10468 #ifndef errno
10469 extern int errno;
10470 #endif
10471 #$d_union_semun HAS_UNION_SEMUN
10472 int main() {
10473     union semun
10474 #ifndef HAS_UNION_SEMUN
10475     {
10476         int val;
10477         struct semid_ds *buf;
10478         unsigned short *array;
10479     }
10480 #endif
10481     arg;
10482     int sem, st;
10483
10484 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10485     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10486     if (sem > -1) {
10487         struct semid_ds argbuf;
10488         arg.buf = &argbuf;
10489 #       ifdef IPC_STAT
10490         st = semctl(sem, 0, IPC_STAT, arg);
10491         if (st == 0)
10492             printf("semun\n");
10493         else
10494 #       endif /* IPC_STAT */
10495             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10496 #       ifdef IPC_RMID
10497         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10498 #       endif /* IPC_RMID */
10499             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10500     } else
10501 #endif /* IPC_PRIVATE && ... */
10502         printf("semget failed: errno = %d\n", errno);
10503   return 0;
10504 }
10505 END
10506     val="$undef"
10507     set try
10508     if eval $compile; then
10509         xxx=`./try`
10510         case "$xxx" in
10511         semun) val="$define" ;;
10512         esac
10513     fi
10514     $rm -f try try.c
10515     set d_semctl_semun
10516     eval $setvar
10517     case "$d_semctl_semun" in
10518     $define)
10519         echo "You can use union semun for semctl IPC_STAT." >&4
10520         also='also'
10521         ;;
10522     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10523         also=''
10524         ;;
10525     esac
10526
10527     : see whether semctl IPC_STAT can use struct semid_ds pointer
10528     $cat > try.c <<'END'
10529 #include <sys/types.h>
10530 #include <sys/ipc.h>
10531 #include <sys/sem.h>
10532 #include <sys/stat.h>
10533 #include "try.h"
10534 #include <stdio.h>
10535 #include <errno.h>
10536 #ifndef errno
10537 extern int errno;
10538 #endif
10539 int main() {
10540     struct semid_ds arg;
10541     int sem, st;
10542
10543 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10544     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10545     if (sem > -1) {
10546 #       ifdef IPC_STAT
10547         st = semctl(sem, 0, IPC_STAT, &arg);
10548         if (st == 0)
10549             printf("semid_ds\n");
10550         else
10551 #       endif /* IPC_STAT */
10552             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10553 #       ifdef IPC_RMID
10554         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10555 #       endif /* IPC_RMID */
10556             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10557     } else
10558 #endif /* IPC_PRIVATE && ... */
10559         printf("semget failed: errno = %d\n", errno);
10560
10561     return 0;
10562 }
10563 END
10564     val="$undef"
10565     set try
10566     if eval $compile; then
10567         xxx=`./try`
10568         case "$xxx" in
10569         semid_ds) val="$define" ;;
10570         esac
10571     fi
10572     $rm -f try try.c
10573     set d_semctl_semid_ds
10574     eval $setvar
10575     case "$d_semctl_semid_ds" in
10576     $define)
10577         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10578         ;;
10579     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10580         ;;
10581     esac
10582     $rm -f try.h
10583     ;;
10584 *)  val="$undef"
10585
10586     # We do not have the full sem*(2) library, so assume we can not
10587     # use either.
10588
10589     set d_semctl_semun
10590     eval $setvar
10591
10592     set d_semctl_semid_ds
10593     eval $setvar
10594     ;;
10595 esac
10596
10597 : see if setegid exists
10598 set setegid d_setegid
10599 eval $inlibc
10600
10601 : see if seteuid exists
10602 set seteuid d_seteuid
10603 eval $inlibc
10604
10605 : see if setgrent exists
10606 set setgrent d_setgrent
10607 eval $inlibc
10608
10609 : see if sethostent exists
10610 set sethostent d_sethent
10611 eval $inlibc
10612
10613 : see if setlinebuf exists
10614 set setlinebuf d_setlinebuf
10615 eval $inlibc
10616
10617 : see if setlocale exists
10618 set setlocale d_setlocale
10619 eval $inlibc
10620
10621 : see if setnetent exists
10622 set setnetent d_setnent
10623 eval $inlibc
10624
10625 : see if setprotoent exists
10626 set setprotoent d_setpent
10627 eval $inlibc
10628
10629 : see if setpgid exists
10630 set setpgid d_setpgid
10631 eval $inlibc
10632
10633 : see if setpgrp2 exists
10634 set setpgrp2 d_setpgrp2
10635 eval $inlibc
10636
10637 : see if setpriority exists
10638 set setpriority d_setprior
10639 eval $inlibc
10640
10641 : see if setpwent exists
10642 set setpwent d_setpwent
10643 eval $inlibc
10644
10645 : see if setregid exists
10646 set setregid d_setregid
10647 eval $inlibc
10648 set setresgid d_setresgid
10649 eval $inlibc
10650
10651 : see if setreuid exists
10652 set setreuid d_setreuid
10653 eval $inlibc
10654 set setresuid d_setresuid
10655 eval $inlibc
10656
10657 : see if setrgid exists
10658 set setrgid d_setrgid
10659 eval $inlibc
10660
10661 : see if setruid exists
10662 set setruid d_setruid
10663 eval $inlibc
10664
10665 : see if setservent exists
10666 set setservent d_setsent
10667 eval $inlibc
10668
10669 : see if setsid exists
10670 set setsid d_setsid
10671 eval $inlibc
10672
10673 : see if setspent exists
10674 set setspent d_setspent
10675 eval $inlibc
10676
10677 : see if setvbuf exists
10678 set setvbuf d_setvbuf
10679 eval $inlibc
10680
10681 : see if sfio.h is available
10682 set sfio.h i_sfio
10683 eval $inhdr
10684
10685
10686 : see if sfio library is available
10687 case "$i_sfio" in
10688 $define)
10689         val=''
10690         set sfreserve val
10691         eval $inlibc
10692         ;;
10693 *)
10694         val="$undef"
10695         ;;
10696 esac
10697 : Ok, but do we want to use it.
10698 case "$val" in
10699 $define)
10700         case "$usesfio" in
10701         true|$define|[yY]*) dflt='y';;
10702         *) dflt='n';;
10703         esac
10704         echo "$package can use the sfio library, but it is experimental."
10705         rp="You seem to have sfio available, do you want to try using it?"
10706         . ./myread
10707         case "$ans" in
10708         y|Y) ;;
10709         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10710                 val="$undef"
10711                 : Remove sfio from list of libraries to use
10712                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10713                 shift
10714                 libs="$*"
10715                 echo "libs = $libs" >&4
10716                 ;;
10717         esac
10718         ;;
10719 *)      case "$usesfio" in
10720         true|$define|[yY]*)
10721                 echo "Sorry, cannot find sfio on this machine" >&4
10722                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10723                 ;;
10724         esac
10725         ;;
10726 esac
10727 set d_sfio
10728 eval $setvar
10729 case "$d_sfio" in
10730 $define) usesfio='true';;
10731 *) usesfio='false';;
10732 esac
10733
10734 : see if shmctl exists
10735 set shmctl d_shmctl
10736 eval $inlibc
10737
10738 : see if shmget exists
10739 set shmget d_shmget
10740 eval $inlibc
10741
10742 : see if shmat exists
10743 set shmat d_shmat
10744 eval $inlibc
10745 : see what shmat returns
10746 case "$d_shmat" in
10747 "$define")
10748         $cat >shmat.c <<'END'
10749 #include <sys/shm.h>
10750 void *shmat();
10751 END
10752         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10753                 shmattype='void *'
10754         else
10755                 shmattype='char *'
10756         fi
10757         echo "and it returns ($shmattype)." >&4
10758         : see if a prototype for shmat is available
10759         xxx=`./findhdr sys/shm.h`
10760         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10761         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10762                 val="$define"
10763         else
10764                 val="$undef"
10765         fi
10766         $rm -f shmat.[co]
10767         ;;
10768 *)
10769         val="$undef"
10770         ;;
10771 esac
10772 set d_shmatprototype
10773 eval $setvar
10774
10775 : see if shmdt exists
10776 set shmdt d_shmdt
10777 eval $inlibc
10778
10779 : see how much of the 'shm*(2)' library is present.
10780 h_shm=true
10781 echo " "
10782 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10783 *"$undef"*) h_shm=false;;
10784 esac
10785 case "$osname" in
10786 freebsd)
10787     case "`ipcs 2>&1`" in
10788     "SVID shared memory"*"not configured"*)
10789         echo "Your $osname does not have the shm*(2) configured." >&4
10790         h_shm=false
10791         val="$undef"
10792         set shmctl d_shmctl
10793         evat $setvar
10794         set shmget d_shmget
10795         evat $setvar
10796         set shmat d_shmat
10797         evat $setvar
10798         set shmdt d_shmdt
10799         evat $setvar
10800         ;;
10801     esac
10802     ;;
10803 esac
10804 : we could also check for sys/ipc.h ...
10805 if $h_shm && $test `./findhdr sys/shm.h`; then
10806         echo "You have the full shm*(2) library." >&4
10807         val="$define"
10808 else
10809         echo "You don't have the full shm*(2) library." >&4
10810         val="$undef"
10811 fi
10812 set d_shm
10813 eval $setvar
10814
10815 echo " "
10816 : see if we have sigaction
10817 if set sigaction val -f d_sigaction; eval $csym; $val; then
10818         echo 'sigaction() found.' >&4
10819         $cat > try.c <<'EOP'
10820 #include <stdio.h>
10821 #include <sys/types.h>
10822 #include <signal.h>
10823 int main()
10824 {
10825     struct sigaction act, oact;
10826     act.sa_flags = 0;
10827     oact.sa_handler = 0;
10828     /* so that act and oact are used */
10829     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10830 }
10831 EOP
10832         set try
10833         if eval $compile_ok; then
10834                 val="$define"
10835         else
10836                 echo "But you don't seem to have a useable struct sigaction." >&4
10837                 val="$undef"
10838         fi
10839 else
10840         echo 'sigaction NOT found.' >&4
10841         val="$undef"
10842 fi
10843 set d_sigaction; eval $setvar
10844 $rm -f try try$_o try.c
10845
10846 : see if sigsetjmp exists
10847 echo " "
10848 case "$d_sigsetjmp" in
10849 '')
10850         $cat >try.c <<'EOP'
10851 #include <setjmp.h>
10852 sigjmp_buf env;
10853 int set = 1;
10854 int main()
10855 {
10856         if (sigsetjmp(env,1))
10857                 exit(set);
10858         set = 0;
10859         siglongjmp(env, 1);
10860         exit(1);
10861 }
10862 EOP
10863         set try
10864         if eval $compile; then
10865                 if ./try >/dev/null 2>&1; then
10866                         echo "POSIX sigsetjmp found." >&4
10867                         val="$define"
10868                 else
10869                         $cat >&4 <<EOM
10870 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10871 I'll ignore them.
10872 EOM
10873                         val="$undef"
10874                 fi
10875         else
10876                 echo "sigsetjmp not found." >&4
10877                 val="$undef"
10878         fi
10879         ;;
10880 *) val="$d_sigsetjmp"
10881         case "$d_sigsetjmp" in
10882         $define) echo "POSIX sigsetjmp found." >&4;;
10883         $undef) echo "sigsetjmp not found." >&4;;
10884         esac
10885         ;;
10886 esac
10887 set d_sigsetjmp
10888 eval $setvar
10889 $rm -f try.c try
10890
10891 : see if sys/stat.h is available
10892 set sys/stat.h i_sysstat
10893 eval $inhdr
10894
10895
10896 : see if stat knows about block sizes
10897 echo " "
10898 echo "Checking to see if your struct stat has st_blocks field..." >&4
10899 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10900 eval $hasfield
10901
10902
10903 : see if this is a sys/vfs.h system
10904 set sys/vfs.h i_sysvfs
10905 eval $inhdr
10906
10907
10908 : see if this is a sys/statfs.h system
10909 set sys/statfs.h i_sysstatfs
10910 eval $inhdr
10911
10912
10913 echo " "
10914 echo "Checking to see if your system supports struct statfs..." >&4
10915 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
10916 eval $hasstruct
10917 case "$d_statfs_s" in
10918 "$define")      echo "Yes, it does."   ;;
10919 *)              echo "No, it doesn't." ;;
10920 esac
10921
10922
10923
10924 : see if struct statfs knows about f_flags
10925 case "$d_statfs_s" in
10926 define) 
10927         echo " "
10928         echo "Checking to see if your struct statfs has f_flags field..." >&4
10929         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
10930         eval $hasfield
10931         ;;
10932 *)      val="$undef"
10933         set d_statfs_f_flags
10934         eval $setvar
10935         ;;
10936 esac
10937 case "$d_statfs_f_flags" in
10938 "$define")      echo "Yes, it does."   ;;
10939 *)              echo "No, it doesn't." ;;
10940 esac
10941
10942 : see if _ptr and _cnt from stdio act std
10943 echo " "
10944 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10945         echo "(Looks like you have stdio.h from Linux.)"
10946         case "$stdio_ptr" in
10947         '') stdio_ptr='((fp)->_IO_read_ptr)'
10948                 ptr_lval=$define
10949                 ;;
10950         *)      ptr_lval=$d_stdio_ptr_lval;;
10951         esac
10952         case "$stdio_cnt" in
10953         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10954                 cnt_lval=$undef
10955                 ;;
10956         *)      cnt_lval=$d_stdio_cnt_lval;;
10957         esac
10958         case "$stdio_base" in
10959         '') stdio_base='((fp)->_IO_read_base)';;
10960         esac
10961         case "$stdio_bufsiz" in
10962         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10963         esac
10964 else
10965         case "$stdio_ptr" in
10966         '') stdio_ptr='((fp)->_ptr)'
10967                 ptr_lval=$define
10968                 ;;
10969         *)      ptr_lval=$d_stdio_ptr_lval;;
10970         esac
10971         case "$stdio_cnt" in
10972         '') stdio_cnt='((fp)->_cnt)'
10973                 cnt_lval=$define
10974                 ;;
10975         *)      cnt_lval=$d_stdio_cnt_lval;;
10976         esac
10977         case "$stdio_base" in
10978         '') stdio_base='((fp)->_base)';;
10979         esac
10980         case "$stdio_bufsiz" in
10981         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10982         esac
10983 fi
10984 : test whether _ptr and _cnt really work
10985 echo "Checking how std your stdio is..." >&4
10986 $cat >try.c <<EOP
10987 #include <stdio.h>
10988 #define FILE_ptr(fp)    $stdio_ptr
10989 #define FILE_cnt(fp)    $stdio_cnt
10990 int main() {
10991         FILE *fp = fopen("try.c", "r");
10992         char c = getc(fp);
10993         if (
10994                 18 <= FILE_cnt(fp) &&
10995                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
10996         )
10997                 exit(0);
10998         exit(1);
10999 }
11000 EOP
11001 val="$undef"
11002 set try
11003 if eval $compile; then
11004         if ./try; then
11005                 echo "Your stdio acts pretty std."
11006                 val="$define"
11007         else
11008                 echo "Your stdio isn't very std."
11009         fi
11010 else
11011         echo "Your stdio doesn't appear very std."
11012 fi
11013 $rm -f try.c try
11014 set d_stdstdio
11015 eval $setvar
11016
11017 : Can _ptr be used as an lvalue?
11018 case "$d_stdstdio$ptr_lval" in
11019 $define$define) val=$define ;;
11020 *) val=$undef ;;
11021 esac
11022 set d_stdio_ptr_lval
11023 eval $setvar
11024
11025 : Can _cnt be used as an lvalue?
11026 case "$d_stdstdio$cnt_lval" in
11027 $define$define) val=$define ;;
11028 *) val=$undef ;;
11029 esac
11030 set d_stdio_cnt_lval
11031 eval $setvar
11032
11033 : see if _base is also standard
11034 val="$undef"
11035 case "$d_stdstdio" in
11036 $define)
11037         $cat >try.c <<EOP
11038 #include <stdio.h>
11039 #define FILE_base(fp)   $stdio_base
11040 #define FILE_bufsiz(fp) $stdio_bufsiz
11041 int main() {
11042         FILE *fp = fopen("try.c", "r");
11043         char c = getc(fp);
11044         if (
11045                 19 <= FILE_bufsiz(fp) &&
11046                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11047         )
11048                 exit(0);
11049         exit(1);
11050 }
11051 EOP
11052         set try
11053         if eval $compile; then
11054                 if ./try; then
11055                         echo "And its _base field acts std."
11056                         val="$define"
11057                 else
11058                         echo "But its _base field isn't std."
11059                 fi
11060         else
11061                 echo "However, it seems to be lacking the _base field."
11062         fi
11063         $rm -f try.c try
11064         ;;
11065 esac
11066 set d_stdiobase
11067 eval $setvar
11068
11069 $cat >&4 <<EOM
11070 Checking how to access stdio streams by file descriptor number...
11071 EOM
11072 case "$stdio_stream_array" in
11073 '')     $cat >try.c <<EOCP
11074 #include <stdio.h>
11075 int main() {
11076   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11077     printf("yes\n");
11078 }
11079 EOCP
11080         for s in _iob __iob __sF
11081         do
11082                 set try -DSTDIO_STREAM_ARRAY=$s
11083                 if eval $compile; then
11084                         case "`./try$exe_ext`" in
11085                         yes)    stdio_stream_array=$s; break ;;
11086                         esac
11087                 fi
11088         done
11089         $rm -f try.* try$exe_ext
11090 esac
11091 case "$stdio_stream_array" in
11092 '')     $cat >&4 <<EOM
11093 I can't figure out how to access stdio streams by file descriptor number.
11094 EOM
11095         d_stdio_stream_array="$undef"
11096         ;;
11097 *)      $cat >&4 <<EOM
11098 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11099 EOM
11100         d_stdio_stream_array="$define"
11101         ;;
11102 esac
11103
11104 : see if strcoll exists
11105 set strcoll d_strcoll
11106 eval $inlibc
11107
11108 : check for structure copying
11109 echo " "
11110 echo "Checking to see if your C compiler can copy structs..." >&4
11111 $cat >try.c <<'EOCP'
11112 int main()
11113 {
11114         struct blurfl {
11115                 int dyick;
11116         } foo, bar;
11117
11118         foo = bar;
11119 }
11120 EOCP
11121 if $cc -c try.c >/dev/null 2>&1 ; then
11122         val="$define"
11123         echo "Yup, it can."
11124 else
11125         val="$undef"
11126         echo "Nope, it can't."
11127 fi
11128 set d_strctcpy
11129 eval $setvar
11130 $rm -f try.*
11131
11132 : see if strerror and/or sys_errlist[] exist
11133 echo " "
11134 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11135     if set strerror val -f d_strerror; eval $csym; $val; then
11136                 echo 'strerror() found.' >&4
11137                 d_strerror="$define"
11138                 d_strerrm='strerror(e)'
11139                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11140                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11141                         d_syserrlst="$define"
11142                 else
11143                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11144                         d_syserrlst="$undef"
11145                 fi
11146     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11147                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11148                 echo 'strerror() found in string header.' >&4
11149                 d_strerror="$define"
11150                 d_strerrm='strerror(e)'
11151                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11152                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11153                                 d_syserrlst="$define"
11154                 else
11155                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11156                         d_syserrlst="$undef"
11157                 fi
11158     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11159                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11160                 d_strerror="$undef"
11161                 d_syserrlst="$define"
11162                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11163     else
11164                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11165                 d_strerror="$undef"
11166                 d_syserrlst="$undef"
11167                 d_strerrm='"unknown"'
11168     fi
11169 fi
11170
11171 : see if strtod exists
11172 set strtod d_strtod
11173 eval $inlibc
11174
11175 : see if strtol exists
11176 set strtol d_strtol
11177 eval $inlibc
11178
11179 : see if strtold exists
11180 set strtold d_strtold
11181 eval $inlibc
11182
11183 : see if strtoll exists
11184 set strtoll d_strtoll
11185 eval $inlibc
11186
11187 : see if strtoul exists
11188 set strtoul d_strtoul
11189 eval $inlibc
11190
11191 : see if strtoull exists
11192 set strtoull d_strtoull
11193 eval $inlibc
11194
11195 : see if strtouq exists
11196 set strtouq d_strtouq
11197 eval $inlibc
11198
11199 : see if strxfrm exists
11200 set strxfrm d_strxfrm
11201 eval $inlibc
11202
11203 : see if symlink exists
11204 set symlink d_symlink
11205 eval $inlibc
11206
11207 : see if syscall exists
11208 set syscall d_syscall
11209 eval $inlibc
11210
11211 : see if sysconf exists
11212 set sysconf d_sysconf
11213 eval $inlibc
11214
11215 : see if system exists
11216 set system d_system
11217 eval $inlibc
11218
11219 : see if tcgetpgrp exists
11220 set tcgetpgrp d_tcgetpgrp
11221 eval $inlibc
11222
11223 : see if tcsetpgrp exists
11224 set tcsetpgrp d_tcsetpgrp
11225 eval $inlibc
11226
11227 : see if prototype for telldir is available
11228 echo " "
11229 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11230 eval $hasproto
11231
11232 : see if this is a sys/times.h system
11233 set sys/times.h i_systimes
11234 eval $inhdr
11235
11236 : see if times exists
11237 echo " "
11238 if set times val -f d_times; eval $csym; $val; then
11239         echo 'times() found.' >&4
11240         d_times="$define"
11241         inc=''
11242         case "$i_systimes" in
11243         "$define") inc='sys/times.h';;
11244         esac
11245         rp="What is the type returned by times() on this system?"
11246         set clock_t clocktype long stdio.h sys/types.h $inc
11247         eval $typedef_ask
11248 else
11249         echo 'times() NOT found, hope that will do.' >&4
11250         d_times="$undef"
11251         clocktype='int'
11252 fi
11253
11254 : see if truncate exists
11255 set truncate d_truncate
11256 eval $inlibc
11257
11258 : see if tzname[] exists
11259 echo " "
11260 if set tzname val -a d_tzname; eval $csym; $val; then
11261         val="$define"
11262         echo 'tzname[] found.' >&4
11263 else
11264         val="$undef"
11265         echo 'tzname[] NOT found.' >&4
11266 fi
11267 set d_tzname
11268 eval $setvar
11269
11270 : see if umask exists
11271 set umask d_umask
11272 eval $inlibc
11273
11274 : see if ustat exists
11275 set ustat d_ustat
11276 eval $inlibc
11277
11278 : backward compatibility for d_hvfork
11279 if test X$d_hvfork != X; then
11280         d_vfork="$d_hvfork"
11281         d_hvfork=''
11282 fi
11283 : see if there is a vfork
11284 val=''
11285 set vfork val
11286 eval $inlibc
11287
11288 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11289 : perl on Solaris 2.x, and probably elsewhere.
11290 case "$val" in
11291 $define)
11292         echo " "
11293         case "$usevfork" in
11294         false) dflt='n';;
11295         *) dflt='y';;
11296         esac
11297         cat <<'EOM'
11298  
11299 Perl can only use a vfork() that doesn't suffer from strict
11300 restrictions on calling functions or modifying global data in
11301 the child.  For example, glibc-2.1 contains such a vfork()
11302 that is unsuitable.  If your system provides a proper fork()
11303 call, chances are that you do NOT want perl to use vfork().
11304
11305 EOM
11306         rp="Do you still want to use vfork()?"
11307         . ./myread
11308         case "$ans" in
11309         y|Y) ;;
11310         *)
11311                 echo "Ok, we won't use vfork()."
11312                 val="$undef"
11313                 ;;
11314         esac
11315         ;;
11316 esac
11317 set d_vfork
11318 eval $setvar
11319 case "$d_vfork" in
11320 $define) usevfork='true';;
11321 *) usevfork='false';;
11322 esac
11323
11324 : see if this is an sysdir system
11325 set sys/dir.h i_sysdir
11326 eval $inhdr
11327
11328 : see if this is an sysndir system
11329 set sys/ndir.h i_sysndir
11330 eval $inhdr
11331
11332 : see if closedir exists
11333 set closedir d_closedir
11334 eval $inlibc
11335
11336 case "$d_closedir" in
11337 "$define")
11338         echo " "
11339         echo "Checking whether closedir() returns a status..." >&4
11340         cat > closedir.c <<EOM
11341 #$i_dirent I_DIRENT             /**/
11342 #$i_sysdir I_SYS_DIR            /**/
11343 #$i_sysndir I_SYS_NDIR          /**/
11344 #$i_systypes I_SYS_TYPES        /**/
11345
11346 #if defined(I_SYS_TYPES)
11347 #include <sys/types.h>
11348 #endif
11349 #if defined(I_DIRENT)
11350 #include <dirent.h>
11351 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11352 #include <sys/dir.h>
11353 #endif
11354 #else
11355 #ifdef I_SYS_NDIR
11356 #include <sys/ndir.h>
11357 #else
11358 #ifdef I_SYS_DIR
11359 #ifdef hp9000s500
11360 #include <ndir.h>       /* may be wrong in the future */
11361 #else
11362 #include <sys/dir.h>
11363 #endif
11364 #endif
11365 #endif
11366 #endif 
11367 int main() { return closedir(opendir(".")); }
11368 EOM
11369         set closedir
11370         if eval $compile_ok; then
11371                 if ./closedir > /dev/null 2>&1 ; then
11372                         echo "Yes, it does."
11373                         val="$undef"
11374                 else
11375                         echo "No, it doesn't."
11376                         val="$define"
11377                 fi
11378         else
11379                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11380                 val="$define"
11381         fi
11382         ;;
11383 *)
11384         val="$undef";
11385         ;;
11386 esac
11387 set d_void_closedir
11388 eval $setvar
11389 $rm -f closedir*
11390 : check for volatile keyword
11391 echo " "
11392 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11393 $cat >try.c <<'EOCP'
11394 int main()
11395 {
11396         typedef struct _goo_struct goo_struct;
11397         goo_struct * volatile goo = ((goo_struct *)0);
11398         struct _goo_struct {
11399                 long long_int;
11400                 int reg_int;
11401                 char char_var;
11402         };
11403         typedef unsigned short foo_t;
11404         char *volatile foo;
11405         volatile int bar;
11406         volatile foo_t blech;
11407         foo = foo;
11408 }
11409 EOCP
11410 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11411         val="$define"
11412         echo "Yup, it does."
11413 else
11414         val="$undef"
11415         echo "Nope, it doesn't."
11416 fi
11417 set d_volatile
11418 eval $setvar
11419 $rm -f try.*
11420
11421 : see if there is a wait4
11422 set wait4 d_wait4
11423 eval $inlibc
11424
11425 : see if waitpid exists
11426 set waitpid d_waitpid
11427 eval $inlibc
11428
11429 : see if wcstombs exists
11430 set wcstombs d_wcstombs
11431 eval $inlibc
11432
11433 : see if wctomb exists
11434 set wctomb d_wctomb
11435 eval $inlibc
11436
11437 : preserve RCS keywords in files with variable substitution, grrr
11438 Date='$Date'
11439 Id='$Id'
11440 Log='$Log'
11441 RCSfile='$RCSfile'
11442 Revision='$Revision'
11443
11444 case "$crosscompile" in
11445 ''|[nN]*) crosscompile="$undef" ;;
11446 esac
11447
11448 case "$osname" in
11449 next|rhapsody) multiarch="$define" ;;
11450 esac
11451 case "$multiarch" in
11452 ''|[nN]*) multiarch="$undef" ;;
11453 esac
11454
11455 : check for alignment requirements
11456 echo " "
11457 case "$crosscompile$multiarch" in
11458 *$define*)
11459         $cat <<EOM
11460 You seem to be either cross-compiling or doing a multiarchitecture build,
11461 skipping the memory alignment check.
11462
11463 EOM
11464         case "$alignbytes" in
11465         '') alignbytes=8 ;;
11466         esac
11467         ;;
11468 *)
11469         case "$alignbytes" in
11470         '') echo "Checking alignment constraints..." >&4
11471                 $cat >try.c <<'EOCP'
11472 #include <stdio.h>
11473 struct foobar {
11474         char foo;
11475         double bar;
11476 } try_algn;
11477 int main()
11478 {
11479     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11480     return(0);
11481 }
11482 EOCP
11483                 set try
11484                 if eval $compile_ok; then
11485                         dflt=`./try`
11486                 else
11487                         dflt='8'
11488                         echo "(I can't seem to compile the test program...)"
11489                 fi
11490                 ;;
11491         *) dflt="$alignbytes"
11492                 ;;
11493         esac
11494         rp="Doubles must be aligned on a how-many-byte boundary?"
11495         . ./myread
11496         alignbytes="$ans"
11497         $rm -f try.c try
11498         ;;
11499 esac
11500
11501
11502 : check for ordering of bytes in a long
11503 echo " "
11504 case "$crosscompile$multiarch" in
11505 *$define*)
11506         $cat <<EOM
11507 You seem to be either cross-compiling or doing a multiarchitecture build,
11508 skipping the byteorder check.
11509
11510 EOM
11511         byteorder='0xffff'
11512         ;;
11513 *)
11514         case "$byteorder" in
11515         '')
11516                 $cat <<'EOM'
11517 In the following, larger digits indicate more significance.  A big-endian
11518 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11519 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11520 machines may have weird orders like 3412.  A Cray will report 87654321,
11521 an Alpha will report 12345678. If the test program works the default is
11522 probably right.
11523 I'm now running the test program...
11524 EOM
11525                 $cat >try.c <<'EOCP'
11526 #include <stdio.h>
11527 int main()
11528 {
11529         int i;
11530         union {
11531                 unsigned long l;
11532                 char c[sizeof(long)];
11533         } u;
11534
11535         if (sizeof(long) > 4)
11536                 u.l = (0x08070605L << 32) | 0x04030201L;
11537         else
11538                 u.l = 0x04030201L;
11539         for (i = 0; i < sizeof(long); i++)
11540                 printf("%c", u.c[i]+'0');
11541         printf("\n");
11542         exit(0);
11543 }
11544 EOCP
11545                 xxx_prompt=y
11546                 set try
11547                 if eval $compile && ./try > /dev/null; then
11548                         dflt=`./try`
11549                         case "$dflt" in
11550                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11551                                 echo "(The test program ran ok.)"
11552                                 echo "byteorder=$dflt"
11553                                 xxx_prompt=n
11554                         ;;
11555                         ????|????????) echo "(The test program ran ok.)" ;;
11556                         *) echo "(The test program didn't run right for some reason.)" ;;
11557                         esac
11558                 else
11559                         dflt='4321'
11560                         cat <<'EOM'
11561 (I can't seem to compile the test program.  Guessing big-endian...)
11562 EOM
11563                 fi
11564                 case "$xxx_prompt" in
11565                 y)
11566                         rp="What is the order of bytes in a long?"
11567                         . ./myread
11568                         byteorder="$ans"
11569                         ;;
11570                 *)      byteorder=$dflt
11571                         ;;
11572                 esac
11573                 ;;
11574         esac
11575         $rm -f try.c try
11576         ;;
11577 esac
11578
11579
11580 : how do we catenate cpp tokens here?
11581 echo " "
11582 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11583 $cat >cpp_stuff.c <<'EOCP'
11584 #define RCAT(a,b)a/**/b
11585 #define ACAT(a,b)a ## b
11586 RCAT(Rei,ser)
11587 ACAT(Cir,cus)
11588 EOCP
11589 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11590 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11591         echo "Oh!  Smells like ANSI's been here." >&4
11592         echo "We can catify or stringify, separately or together!"
11593         cpp_stuff=42
11594 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11595         echo "Ah, yes!  The good old days!" >&4
11596         echo "However, in the good old days we don't know how to stringify and"
11597         echo "catify at the same time."
11598         cpp_stuff=1
11599 else
11600         $cat >&4 <<EOM
11601 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11602 to have to edit the values of CAT[2-5] in config.h...
11603 EOM
11604         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11605 fi
11606 $rm -f cpp_stuff.*
11607
11608 : see if this is a db.h system
11609 set db.h i_db
11610 eval $inhdr
11611
11612 case "$i_db" in
11613 $define)
11614         : Check db version.
11615         echo " "
11616         echo "Checking Berkeley DB version ..." >&4
11617         $cat >try.c <<EOCP
11618 #$d_const HASCONST
11619 #ifndef HASCONST
11620 #define const
11621 #endif
11622 #include <sys/types.h>
11623 #include <stdio.h>
11624 #include <db.h>
11625 int main()
11626 {
11627 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11628     int Major, Minor, Patch ;
11629     unsigned long Version ;
11630     (void)db_version(&Major, &Minor, &Patch) ;
11631     printf("You have Berkeley DB Version 2 or greater\n");
11632
11633     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11634                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11635     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11636                 Major, Minor, Patch) ;
11637
11638     /* check that db.h & libdb are compatible */
11639     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11640         printf("db.h and libdb are incompatible\n") ;
11641         exit(3);        
11642     }
11643
11644     printf("db.h and libdb are compatible\n") ;
11645
11646     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11647                 + DB_VERSION_PATCH ;
11648
11649     /* needs to be >= 2.3.4 */
11650     if (Version < 2003004) {
11651     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11652         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11653         exit(2);        
11654     }
11655
11656     exit(0);
11657 #else
11658 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11659     printf("You have Berkeley DB Version 1\n");
11660     exit(0);    /* DB version < 2: the coast is clear. */
11661 #else
11662     exit(1);    /* <db.h> not Berkeley DB? */
11663 #endif
11664 #endif
11665 }
11666 EOCP
11667         set try
11668         if eval $compile_ok && ./try; then
11669                 echo 'Looks OK.' >&4
11670         else
11671                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11672                 i_db=$undef
11673                 case " $libs " in
11674                 *"-ldb "*)
11675                         : Remove db from list of libraries to use
11676                         echo "Removing unusable -ldb from library list" >&4
11677                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11678                         shift
11679                         libs="$*"
11680                         echo "libs = $libs" >&4
11681                         ;;
11682                 esac
11683         fi
11684         $rm -f try.*
11685         ;;
11686 esac
11687
11688 case "$i_db" in
11689 define)
11690         : Check the return type needed for hash 
11691         echo " "
11692         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11693         $cat >try.c <<EOCP
11694 #$d_const HASCONST
11695 #ifndef HASCONST
11696 #define const
11697 #endif
11698 #include <sys/types.h>
11699 #include <db.h>
11700
11701 #ifndef DB_VERSION_MAJOR
11702 u_int32_t hash_cb (ptr, size)
11703 const void *ptr;
11704 size_t size;
11705 {
11706 }
11707 HASHINFO info;
11708 int main()
11709 {
11710         info.hash = hash_cb;
11711 }
11712 #endif
11713 EOCP
11714         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11715                 if $contains warning try.out >>/dev/null 2>&1 ; then
11716                         db_hashtype='int'
11717                 else
11718                         db_hashtype='u_int32_t'
11719                 fi
11720         else
11721                 : XXX Maybe we should just give up here.
11722                 db_hashtype=u_int32_t
11723                 $cat try.out >&4
11724                 echo "Help:  I can't seem to compile the db test program." >&4
11725                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11726         fi
11727         $rm -f try.*
11728         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11729         ;;
11730 *)      db_hashtype=u_int32_t
11731         ;;
11732 esac
11733 case "$i_db" in
11734 define)
11735         : Check the return type needed for prefix 
11736         echo " "
11737         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11738         cat >try.c <<EOCP
11739 #$d_const HASCONST
11740 #ifndef HASCONST
11741 #define const
11742 #endif
11743 #include <sys/types.h>
11744 #include <db.h>
11745
11746 #ifndef DB_VERSION_MAJOR
11747 size_t prefix_cb (key1, key2)
11748 const DBT *key1;
11749 const DBT *key2;
11750 {
11751 }
11752 BTREEINFO info;
11753 int main()
11754 {
11755         info.prefix = prefix_cb;
11756 }
11757 #endif
11758 EOCP
11759         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11760                 if $contains warning try.out >>/dev/null 2>&1 ; then
11761                         db_prefixtype='int'
11762                 else
11763                         db_prefixtype='size_t'
11764                 fi
11765         else
11766                 db_prefixtype='size_t'
11767                 : XXX Maybe we should just give up here.
11768                 $cat try.out >&4
11769                 echo "Help:  I can't seem to compile the db test program." >&4
11770                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11771         fi
11772         $rm -f try.*
11773         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11774         ;;
11775 *)      db_prefixtype='size_t'
11776         ;;
11777 esac
11778
11779 : check for void type
11780 echo " "
11781 echo "Checking to see how well your C compiler groks the void type..." >&4
11782 case "$voidflags" in
11783 '')
11784         $cat >try.c <<'EOCP'
11785 #if TRY & 1
11786 void sub() {
11787 #else
11788 sub() {
11789 #endif
11790         extern void moo();      /* function returning void */
11791         void (*goo)();          /* ptr to func returning void */
11792 #if TRY & 8
11793         void *hue;              /* generic ptr */
11794 #endif
11795 #if TRY & 2
11796         void (*foo[10])();
11797 #endif
11798
11799 #if TRY & 4
11800         if(goo == moo) {
11801                 exit(0);
11802         }
11803 #endif
11804         exit(0);
11805 }
11806 int main() { sub(); }
11807 EOCP
11808         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11809                 voidflags=$defvoidused
11810         echo "Good.  It appears to support void to the level $package wants.">&4
11811                 if $contains warning .out >/dev/null 2>&1; then
11812                         echo "However, you might get some warnings that look like this:"
11813                         $cat .out
11814                 fi
11815         else
11816 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11817                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11818                         echo "It supports 1..."
11819                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11820                                 echo "It also supports 2..."
11821                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11822                                         voidflags=7
11823                                         echo "And it supports 4 but not 8 definitely."
11824                                 else
11825                                         echo "It doesn't support 4..."
11826                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11827                                                 voidflags=11
11828                                                 echo "But it supports 8."
11829                                         else
11830                                                 voidflags=3
11831                                                 echo "Neither does it support 8."
11832                                         fi
11833                                 fi
11834                         else
11835                                 echo "It does not support 2..."
11836                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11837                                         voidflags=13
11838                                         echo "But it supports 4 and 8."
11839                                 else
11840                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11841                                                 voidflags=5
11842                                                 echo "And it supports 4 but has not heard about 8."
11843                                         else
11844                                                 echo "However it supports 8 but not 4."
11845                                         fi
11846                                 fi
11847                         fi
11848                 else
11849                         echo "There is no support at all for void."
11850                         voidflags=0
11851                 fi
11852         fi
11853 esac
11854 case "$voidflags" in
11855 "$defvoidused") ;;
11856 *)      $cat >&4 <<'EOM'
11857   Support flag bits are:
11858     1: basic void declarations.
11859     2: arrays of pointers to functions returning void.
11860     4: operations between pointers to and addresses of void functions.
11861     8: generic void pointers.
11862 EOM
11863         dflt="$voidflags";
11864         rp="Your void support flags add up to what?"
11865         . ./myread
11866         voidflags="$ans"
11867         ;;
11868 esac
11869 $rm -f try.* .out
11870
11871
11872 : How can we generate normalized random numbers ?
11873 echo " "
11874 echo "Looking for a random number function..." >&4
11875 case "$randfunc" in
11876 '')
11877         if set drand48 val -f; eval $csym; $val; then
11878                 dflt="drand48"
11879                 echo "Good, found drand48()." >&4
11880         elif set random val -f; eval $csym; $val; then
11881                 dflt="random"
11882                 echo "OK, found random()." >&4
11883         else
11884                 dflt="rand"
11885                 echo "Yick, looks like I have to use rand()." >&4
11886         fi
11887         echo " "
11888         ;;
11889 *)
11890         dflt="$randfunc"
11891         ;;
11892 esac
11893 cont=true
11894
11895 case "$ccflags" in
11896 *-Dmy_rand=*|*-Dmy_srand=*)
11897         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11898         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11899         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11900         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11901         ;;
11902 esac
11903
11904 while $test "$cont"; do
11905         rp="Use which function to generate random numbers?"
11906         . ./myread
11907         if $test "$ans" = "$dflt"; then
11908                 : null
11909         else
11910                 randbits=''
11911         fi
11912         randfunc="$ans"
11913         if set $ans val -f; eval $csym; $val; then
11914                 cont=''
11915         else
11916                 dflt=y
11917                 rp="I cannot find function $ans. Use that name anyway?"
11918                 . ./myread
11919                 dflt=rand
11920                 case "$ans" in
11921                         [yY]*) cont='';;
11922                 esac
11923         fi
11924         case "$cont" in
11925         '')
11926                 case "$randfunc" in
11927                 drand48)
11928                         drand01="drand48()"
11929                         seedfunc="srand48"
11930                         randbits=48
11931                         randseedtype=long
11932                         ;;
11933                 rand|random)
11934                         case "$randbits" in
11935                         '')
11936 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11937                                 $cat >try.c <<EOCP
11938 #$i_unistd I_UNISTD
11939 #$i_stdlib I_STDLIB
11940 #include <stdio.h>
11941 #ifdef I_UNISTD
11942 #  include <unistd.h>
11943 #endif
11944 #ifdef I_STDLIB
11945 #  include <stdlib.h>
11946 #endif
11947 int main()
11948 {
11949         register int i;
11950         register unsigned long tmp;
11951         register unsigned long max = 0L;
11952
11953         for (i = 1000; i; i--) {
11954                 tmp = (unsigned long) $randfunc();
11955                 if (tmp > max) max = tmp;
11956         }
11957         for (i = 0; max; i++)
11958                 max /= 2;
11959         printf("%d\n",i);
11960 }
11961 EOCP
11962                                 set try
11963                                 if eval $compile_ok; then
11964                                         dflt=`try`
11965                                 else
11966                                         dflt='?'
11967                                         echo "(I can't seem to compile the test program...)"
11968                                 fi
11969                                 ;;
11970                         *)
11971                                 dflt="$randbits"
11972                                 ;;
11973                         esac
11974                         rp="How many bits does your $randfunc() function produce?"
11975                         . ./myread
11976                         randbits="$ans"
11977                         $rm -f try.c try
11978                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11979                         seedfunc="s$randfunc"
11980                         randseedtype=unsigned
11981                         ;;
11982                 *)
11983                         dflt="31"
11984                         rp="How many bits does your $randfunc() function produce?"
11985                         . ./myread
11986                         randbits="$ans"
11987                         seedfunc="s$randfunc"
11988                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11989                         if set $seedfunc val -f; eval $csym; $val; then
11990                                 echo "(Using $seedfunc() to seed random generator)"
11991                         else
11992                                 echo "(Warning: no $seedfunc() to seed random generator)"
11993                                 seedfunc=rand
11994                         fi
11995                         randseedtype=unsigned
11996                         ;;
11997                 esac
11998                 ;;
11999         esac
12000 done
12001
12002 echo " "
12003 echo "Determining whether or not we are on an EBCDIC system..." >&4
12004 $cat >tebcdic.c <<'EOM'
12005 int main()
12006 {
12007   if ('M'==0xd4) return 0;
12008   return 1;
12009 }
12010 EOM
12011
12012 val=$undef
12013 set tebcdic
12014 if eval $compile_ok; then
12015         if ./tebcdic; then
12016                 echo "You have EBCDIC." >&4
12017                 val="$define"
12018         else
12019                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12020         fi
12021 else
12022         echo "I'm unable to compile the test program." >&4
12023         echo "I'll assume ASCII or some ISO Latin." >&4
12024 fi
12025 $rm -f tebcdic.c tebcdic
12026 set ebcdic
12027 eval $setvar
12028
12029 echo " "
12030 $cat >&4 <<EOM
12031 Checking how to flush all pending stdio output...
12032 EOM
12033 # I only know how to find the first 32 possibly open files on SunOS.
12034 # See also hints/sunos_4_1.sh and util.c  --AD
12035 case "$osname" in
12036 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12037 esac
12038 $cat >>try.c <<EOCP
12039 #include <stdio.h>
12040 #$i_unistd I_UNISTD
12041 #ifdef I_UNISTD
12042 # include <unistd.h>
12043 #endif
12044 #$d_sysconf HAS_SYSCONF
12045 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12046 #ifdef HAS_STDIO_STREAM_ARRAY
12047 # define STDIO_STREAM_ARRAY $stdio_stream_array
12048 #endif
12049 int main() {
12050   FILE* p = fopen("try.out", "w");
12051 #ifdef TRY_FPUTC
12052   fputc('x', p);
12053 #else
12054 # ifdef TRY_FPRINTF
12055   fprintf(p, "x");
12056 # endif
12057 #endif
12058 #ifdef TRY_FFLUSH_NULL
12059   fflush(NULL);
12060 #endif
12061 #ifdef TRY_FFLUSH_ALL
12062   {
12063     long open_max = -1;
12064 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12065     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12066 # else
12067 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12068     open_max = sysconf(_SC_OPEN_MAX);
12069 #  else
12070 #   ifdef FOPEN_MAX
12071     open_max = FOPEN_MAX;
12072 #   else
12073 #    ifdef OPEN_MAX
12074     open_max = OPEN_MAX;
12075 #    else
12076 #     ifdef _NFILE
12077     open_max = _NFILE;
12078 #     endif
12079 #    endif
12080 #   endif
12081 #  endif
12082 # endif 
12083 # ifdef HAS_STDIO_STREAM_ARRAY
12084     if (open_max > 0) {
12085       long i;
12086       for (i = 0; i < open_max; i++)
12087             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12088                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12089                 STDIO_STREAM_ARRAY[i]._flag)
12090                 fflush(&STDIO_STREAM_ARRAY[i]);
12091     }   
12092   }
12093 # endif
12094 #endif
12095   _exit(42);
12096 }
12097 EOCP
12098 : first we have to find out how _not_ to flush
12099 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12100     output=''
12101     set try -DTRY_FPUTC
12102     if eval $compile; then
12103             $rm -f try.out
12104             ./try$exe_ext 2>/dev/null
12105             if $test ! -s try.out -a "X$?" = X42; then
12106                 output=-DTRY_FPUTC
12107             fi
12108     fi
12109     case "$output" in
12110     '')
12111             set try -DTRY_FPRINTF
12112             $rm -f try.out
12113             if eval $compile; then
12114                     $rm -f try.out
12115                     ./try$exe_ext 2>/dev/null
12116                     if $test ! -s try.out -a "X$?" = X42; then
12117                         output=-DTRY_FPRINTF
12118                     fi
12119             fi
12120         ;;
12121     esac
12122 fi
12123 : check for fflush NULL behaviour
12124 case "$fflushNULL" in
12125 '')     set try -DTRY_FFLUSH_NULL $output
12126         if eval $compile; then
12127                 $rm -f try.out
12128                 ./try$exe_ext 2>/dev/null
12129                 code="$?"
12130                 if $test -s try.out -a "X$code" = X42; then
12131                         fflushNULL="`$cat try.out`"
12132                 else
12133                         if $test "X$code" != X42; then
12134                                 $cat >&4 <<EOM
12135 (If this test failed, don't worry, we'll try another method shortly.)
12136 EOM
12137                         fi
12138                 fi
12139         fi
12140         $rm -f core try.core core.try.*
12141         case "$fflushNULL" in
12142         x)      $cat >&4 <<EOM
12143 Your fflush(NULL) works okay.
12144 EOM
12145                 fflushNULL="$define"
12146                 ;;
12147         '')     $cat >&4 <<EOM
12148 Your fflush(NULL) isn't working (contrary to ANSI C).
12149 EOM
12150                 fflushNULL="$undef"
12151                 ;;
12152         *)      $cat >&4 <<EOM
12153 Cannot figure out whether your fflush(NULL) works or not.
12154 I'm assuming it doesn't (contrary to ANSI C).
12155 EOM
12156                 fflushNULL="$undef"
12157                 ;;
12158         esac
12159         ;;
12160 $define|true|[yY]*)
12161         fflushNULL="$define"
12162         ;;
12163 *)
12164         fflushNULL="$undef"
12165         ;;
12166 esac
12167 : check explicit looping only if NULL did not work
12168 case "$fflushNULL" in
12169 "$undef")
12170         : check for fflush all behaviour
12171         case "$fflushall" in
12172         '')     set try -DTRY_FFLUSH_ALL $output
12173                 if eval $compile; then
12174                         $cat >&4 <<EOM
12175 (Now testing the other method--but note that also this may fail.)
12176 EOM
12177                         $rm -f try.out
12178                         ./try$exe_ext 2>/dev/null
12179                         if $test -s try.out -a "X$?" = X42; then
12180                                 fflushall="`$cat try.out`"
12181                         fi
12182                 fi
12183                 $rm -f core try.core core.try.*
12184                 case "$fflushall" in
12185                 x)      $cat >&4 <<EOM
12186 Whew. Flushing explicitly all the stdio streams works.
12187 EOM
12188                         fflushall="$define"
12189                         ;;
12190                 '')     $cat >&4 <<EOM
12191 Sigh. Flushing explicitly all the stdio streams doesn't work.
12192 EOM
12193                         fflushall="$undef"
12194                         ;;
12195                 *)      $cat >&4 <<EOM
12196 Cannot figure out whether flushing stdio streams explicitly works or not.
12197 I'm assuming it doesn't.
12198 EOM
12199                         fflushall="$undef"
12200                         ;;
12201                 esac
12202                 ;;
12203         "$define"|true|[yY]*)
12204                 fflushall="$define"
12205                 ;;
12206         *)
12207                 fflushall="$undef"
12208                 ;;
12209         esac
12210         ;;
12211 *)      fflushall="$undef"      
12212         ;;
12213 esac
12214 case "$fflushNULL$fflushall" in
12215 undefundef)
12216         $cat <<EOM
12217 I cannot figure out how to flush pending stdio output.
12218 EOM
12219         ;;
12220 esac
12221 $rm -f try.* try$exe_ext
12222
12223 : Store the full pathname to the ar program for use in the C program
12224 : Respect a hint or command line value for full_ar.
12225 case "$full_ar" in
12226 '') full_ar=$ar ;;
12227 esac
12228
12229 : Store the full pathname to the sed program for use in the C program
12230 full_sed=$sed
12231
12232 : see what type gids are declared as in the kernel
12233 echo " "
12234 echo "Looking for the type for group ids returned by getgid()."
12235 set gid_t gidtype xxx stdio.h sys/types.h
12236 eval $typedef
12237 case "$gidtype" in
12238 xxx)
12239         xxx=`./findhdr sys/user.h`
12240         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12241         case $1 in
12242         unsigned) dflt="$1 $2" ;;
12243         *) dflt="$1" ;;
12244         esac
12245         ;;
12246 *) dflt="$gidtype";;
12247 esac
12248 case "$gidtype" in
12249 gid_t) echo "gid_t found." ;;
12250 *)      rp="What is the type for group ids returned by getgid()?"
12251         . ./myread
12252         gidtype="$ans"
12253         ;;
12254 esac
12255
12256 echo " "
12257 case "$gidtype" in
12258 *_t) zzz="$gidtype"     ;;
12259 *)   zzz="gid"          ;;
12260 esac
12261 echo "Checking the size of $zzz..." >&4 
12262 cat > try.c <<EOCP
12263 #include <sys/types.h>
12264 #include <stdio.h>
12265 int main() {
12266     printf("%d\n", (int)sizeof($gidtype));
12267     exit(0);
12268 }
12269 EOCP
12270 set try
12271 if eval $compile_ok; then
12272         yyy=`./try`
12273         case "$yyy" in
12274         '')     gidsize=4
12275                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12276                 ;;
12277         *)      gidsize=$yyy
12278                 echo "Your $zzz size is $gidsize bytes."
12279                 ;;
12280         esac
12281 else
12282         gidsize=4
12283         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12284 fi
12285
12286
12287 echo " "
12288 case "$gidtype" in
12289 *_t) zzz="$gidtype"     ;;
12290 *)   zzz="gid"          ;;
12291 esac
12292 echo "Checking the sign of $zzz..." >&4 
12293 cat > try.c <<EOCP
12294 #include <sys/types.h>
12295 #include <stdio.h>
12296 int main() {
12297         $gidtype foo = -1;
12298         if (foo < 0)
12299                 printf("-1\n");
12300         else
12301                 printf("1\n");
12302 }
12303 EOCP
12304 set try
12305 if eval $compile; then
12306         yyy=`./try`
12307         case "$yyy" in
12308         '')     gidsign=1
12309                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12310                 ;;
12311         *)      gidsign=$yyy
12312                 case "$gidsign" in
12313                  1) echo "Your $zzz is unsigned." ;;
12314                 -1) echo "Your $zzz is signed."   ;;
12315                 esac
12316                 ;;
12317         esac
12318 else
12319         gidsign=1
12320         echo "(I can't compile the test program--guessing unsigned.)" >&4
12321 fi
12322
12323
12324 echo " "
12325
12326 if $test X"$quadtype" != X; then
12327
12328 echo "Checking how to print 64-bit integers..." >&4
12329
12330 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12331         $cat >try.c <<'EOCP'
12332 #include <sys/types.h>
12333 #include <stdio.h>
12334 int main() {
12335   int q = 12345678901;
12336   printf("%ld\n", q);
12337 }
12338 EOCP
12339         set try
12340         if eval $compile; then
12341                 yyy=`./try$exe_ext`
12342                 case "$yyy" in
12343                 12345678901)
12344                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12345                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12346                         echo "We will use %d."
12347                         ;;
12348                 esac
12349         fi
12350 fi
12351
12352 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12353         $cat >try.c <<'EOCP'
12354 #include <sys/types.h>
12355 #include <stdio.h>
12356 int main() {
12357   long q = 12345678901;
12358   printf("%ld\n", q);
12359 }
12360 EOCP
12361         set try
12362         if eval $compile; then
12363                 yyy=`./try$exe_ext`
12364                 case "$yyy" in
12365                 12345678901)
12366                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12367                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12368                         echo "We will use %ld."
12369                         ;;
12370                 esac
12371         fi
12372 fi
12373
12374 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12375         $cat >try.c <<'EOCP'
12376 #include <sys/types.h>
12377 #include <inttypes.h>
12378 #include <stdio.h>
12379 int main() {
12380   int64_t q = 12345678901;
12381   printf("%" PRId64 "\n", q);
12382 }
12383 EOCP
12384         set try
12385         if eval $compile; then
12386                 yyy=`./try$exe_ext`
12387                 case "$yyy" in
12388                 12345678901)
12389                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12390                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12391                         echo "We will use the C9X style."
12392                         ;;
12393                 esac
12394         fi
12395 fi
12396
12397 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12398         $cat >try.c <<'EOCP'
12399 #include <sys/types.h>
12400 #include <stdio.h>
12401 int main() {
12402   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12403   printf("%lld\n", q);
12404 }
12405 EOCP
12406         set try
12407         if eval $compile; then
12408                 yyy=`./try$exe_ext`
12409                 case "$yyy" in
12410                 12345678901)
12411                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12412                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12413                         echo "We will use the %lld style."
12414                         ;;
12415                 esac
12416         fi
12417 fi
12418
12419 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12420         $cat >try.c <<EOCP
12421 #include <sys/types.h>
12422 #include <stdio.h>
12423 int main() {
12424   $quadtype q = 12345678901;
12425   printf("%Ld\n", q);
12426 }
12427 EOCP
12428         set try
12429         if eval $compile; then
12430                 yyy=`./try$exe_ext`
12431                 case "$yyy" in
12432                 12345678901)
12433                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12434                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12435                         echo "We will use %Ld."
12436                         ;;
12437                 esac
12438         fi
12439 fi
12440
12441 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12442         $cat >try.c <<EOCP
12443 #include <sys/types.h>
12444 #include <stdio.h>
12445 int main() {
12446   $quadtype q = 12345678901;
12447   printf("%qd\n", q);
12448 }
12449 EOCP
12450         set try
12451         if eval $compile; then
12452                 yyy=`./try$exe_ext`
12453                 case "$yyy" in
12454                 12345678901)
12455                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12456                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12457                         echo "We will use %qd."
12458                         ;;
12459                 esac
12460         fi
12461 fi
12462
12463 if $test X"$sPRId64" = X; then
12464         echo "Cannot figure out how to print 64-bit integers." >&4
12465 fi
12466
12467 $rm -f try try.*
12468
12469 fi
12470
12471 case "$sPRId64" in
12472 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12473         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12474         ;;
12475 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12476         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12477         ;;
12478 esac
12479
12480
12481 echo " "
12482 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12483
12484 if $test X"$ivsize" = X8; then
12485         ivdformat="$sPRId64"
12486         uvuformat="$sPRIu64"
12487         uvoformat="$sPRIo64"
12488         uvxformat="$sPRIx64"
12489 else
12490         if $test X"$ivsize" = X"$longsize"; then
12491                 ivdformat='"ld"'
12492                 uvuformat='"lu"'
12493                 uvoformat='"lo"'
12494                 uvxformat='"lx"'
12495         else
12496                 if $test X"$ivsize" = X"$intsize"; then
12497                         ivdformat='"d"'
12498                         uvuformat='"u"'
12499                         uvoformat='"o"'
12500                         uvxformat='"x"'
12501                 else
12502                         : far out
12503                         if $test X"$ivsize" = X"$shortsize"; then
12504                                 ivdformat='"hd"'
12505                                 uvuformat='"hu"'
12506                                 uvoformat='"ho"'
12507                                 uvxformat='"hx"'
12508                         fi
12509                 fi
12510         fi
12511 fi
12512
12513 case "$ivdformat" in
12514 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12515     exit 1
12516     ;;
12517 esac
12518
12519
12520 echo " "
12521 $echo "Checking the format string to be used for gids..." >&4
12522
12523 case "$gidsign" in
12524 -1)     if $test X"$gidsize" = X"$ivsize"; then
12525                 gidformat="$ivdformat"
12526         else
12527                 if $test X"$gidsize" = X"$longsize"; then
12528                         gidformat='"ld"'
12529                 else
12530                         if $test X"$gidsize" = X"$intsize"; then
12531                                 gidformat='"d"'
12532                         else
12533                                 if $test X"$gidsize" = X"$shortsize"; then
12534                                         gidformat='"hd"'
12535                                 fi
12536                         fi
12537                 fi
12538         fi
12539         ;;
12540 *)      if $test X"$gidsize" = X"$uvsize"; then
12541                 gidformat="$uvuformat"
12542         else
12543                 if $test X"$gidsize" = X"$longsize"; then
12544                         gidformat='"lu"'
12545                 else
12546                         if $test X"$gidsize" = X"$intsize"; then
12547                                 gidformat='"u"'
12548                         else
12549                                 if $test X"$gidsize" = X"$shortsize"; then
12550                                         gidformat='"hu"'
12551                                 fi
12552                         fi
12553                 fi
12554         fi
12555         ;;
12556 esac
12557
12558 : see if getgroups exists
12559 set getgroups d_getgrps
12560 eval $inlibc
12561
12562 : see if setgroups exists
12563 set setgroups d_setgrps
12564 eval $inlibc
12565
12566
12567 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12568 echo " "
12569 case "$d_getgrps$d_setgrps" in
12570 *define*)
12571         case "$groupstype" in
12572         '') dflt="$gidtype" ;;
12573         *)  dflt="$groupstype" ;;
12574         esac
12575         $cat <<EOM
12576 What type of pointer is the second argument to getgroups() and setgroups()?
12577 Usually this is the same as group ids, $gidtype, but not always.
12578
12579 EOM
12580         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12581         . ./myread
12582         groupstype="$ans"
12583         ;;
12584 *)  groupstype="$gidtype";;
12585 esac
12586
12587 echo " "
12588 echo "Checking if your $make program sets \$(MAKE)..." >&4
12589 case "$make_set_make" in
12590 '')
12591         $sed 's/^X //' > testmake.mak << 'EOF'
12592 Xall:
12593 X       @echo 'maketemp="$(MAKE)"'
12594 EOF
12595         case "`$make -f testmake.mak 2>/dev/null`" in
12596         *maketemp=*) make_set_make='#' ;;
12597         *)      make_set_make="MAKE=$make" ;;
12598         esac
12599         $rm -f testmake.mak
12600         ;;
12601 esac
12602 case "$make_set_make" in
12603 '#') echo "Yup, it does.";;
12604 *) echo "Nope, it doesn't.";;
12605 esac
12606
12607 : see if this is a sys/mman.h system
12608 set sys/mman.h i_sysmman
12609 eval $inhdr
12610
12611 : see if mmap exists
12612 set mmap d_mmap
12613 eval $inlibc
12614 : see what shmat returns
12615 : default to something harmless
12616 mmaptype='void *'
12617 case "$i_sysmman$d_mmap" in
12618 "$define$define")
12619         $cat >mmap.c <<'END'
12620 #include <sys/mman.h>
12621 void *mmap();
12622 END
12623         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12624                 mmaptype='void *'
12625         else
12626                 mmaptype='caddr_t'
12627         fi
12628         echo "and it returns ($mmaptype)." >&4
12629         ;;
12630 esac
12631
12632
12633
12634 : see what type is used for mode_t
12635 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12636 set mode_t modetype int stdio.h sys/types.h
12637 eval $typedef_ask
12638
12639 : define a fucntion to check prototypes
12640 $cat > protochk <<EOSH
12641 $startsh
12642 cc="$cc"
12643 optimize="$optimize"
12644 ccflags="$ccflags"
12645 prototype="$prototype"
12646 define="$define"
12647 rm=$rm
12648 EOSH
12649
12650 $cat >> protochk <<'EOSH'
12651
12652 $rm -f try.c
12653 foo="$1"
12654 shift
12655 while test $# -ge 2; do
12656         case "$1" in
12657                 $define) echo "#include <$2>" >> try.c ;;
12658                 literal) echo "$2" >> try.c ;;
12659         esac
12660     shift 2
12661 done
12662 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12663 cat >> try.c <<'EOCP'
12664 #ifdef CAN_PROTOTYPE
12665 #define _(args) args
12666 #else
12667 #define _(args) ()
12668 #endif
12669 EOCP
12670 echo "$foo" >> try.c
12671 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12672 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12673 status=$?
12674 $rm -f try.[co]
12675 exit $status
12676 EOSH
12677 chmod +x protochk
12678 $eunicefix protochk
12679
12680 : see what type is used for size_t
12681 rp="What is the type used for the length parameter for string functions?"
12682 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12683 eval $typedef_ask
12684
12685 : check for type of arguments to gethostbyaddr. 
12686 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12687         case "$d_gethbyaddr" in
12688         $define)
12689                 $cat <<EOM
12690
12691 Checking to see what type of arguments are accepted by gethostbyaddr().
12692 EOM
12693                 hdrs="$define sys/types.h
12694                         $d_socket sys/socket.h 
12695                         $i_niin netinet/in.h 
12696                         $i_netdb netdb.h
12697                         $i_unistd unistd.h"
12698                 : The first arg can 'char *' or 'void *'
12699                 : The second arg is some of integral type
12700                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12701                         for yyy in size_t long int; do
12702                                 case "$netdb_host_type" in
12703                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12704                                         if ./protochk "$try" $hdrs; then
12705                                                 echo "Your system accepts $xxx for the first arg."
12706                                                 echo "...and $yyy for the second arg."
12707                                                 netdb_host_type="$xxx"
12708                                                 netdb_hlen_type="$yyy"
12709                                         fi
12710                                         ;;
12711                                 esac
12712                         done
12713                 done
12714                 : In case none of those worked, prompt the user.
12715                 case "$netdb_host_type" in
12716                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12717                         dflt='char *'
12718                         . ./myread
12719                         netdb_host_type=$ans
12720                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12721                         dflt="$sizetype"
12722                         . ./myread
12723                         netdb_hlen_type=$ans
12724                         ;;
12725                 esac
12726                 ;;
12727         *)      : no gethostbyaddr, so pick harmless defaults
12728                 netdb_host_type='char *'
12729                 netdb_hlen_type="$sizetype"
12730                 ;;
12731         esac
12732         # Remove the "const" if needed. -- but then we'll have a 
12733         # prototype clash!
12734         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12735 fi
12736
12737 : check for type of argument to gethostbyname. 
12738 if test "X$netdb_name_type" = X ; then
12739         case "$d_gethbyname" in
12740         $define)
12741                 $cat <<EOM
12742
12743 Checking to see what type of argument is accepted by gethostbyname().
12744 EOM
12745                 hdrs="$define sys/types.h
12746                         $d_socket sys/socket.h 
12747                         $i_niin netinet/in.h 
12748                         $i_netdb netdb.h
12749                         $i_unistd unistd.h"
12750                 for xxx in "const char *" "char *"; do
12751                         case "$netdb_name_type" in
12752                         '')     try="extern struct hostent *gethostbyname($xxx);"
12753                                 if ./protochk "$try" $hdrs; then
12754                                         echo "Your system accepts $xxx."
12755                                         netdb_name_type="$xxx"
12756                                 fi
12757                                 ;;
12758                         esac
12759                 done
12760                 : In case none of those worked, prompt the user.
12761                 case "$netdb_name_type" in
12762                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12763                         dflt='char *'
12764                         . ./myread
12765                         netdb_name_type=$ans
12766                         ;;
12767                 esac
12768                 ;;
12769         *)      : no gethostbyname, so pick harmless default
12770                 netdb_name_type='char *'
12771                 ;;
12772         esac
12773 fi
12774
12775 : check for type of 1st argument to getnetbyaddr. 
12776 if test "X$netdb_net_type" = X ; then
12777         case "$d_getnbyaddr" in
12778         $define)
12779                 $cat <<EOM
12780
12781 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12782 EOM
12783                 hdrs="$define sys/types.h
12784                         $d_socket sys/socket.h 
12785                         $i_niin netinet/in.h 
12786                         $i_netdb netdb.h
12787                         $i_unistd unistd.h"
12788                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12789                         case "$netdb_net_type" in
12790                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12791                                 if ./protochk "$try" $hdrs; then
12792                                         echo "Your system accepts $xxx."
12793                                         netdb_net_type="$xxx"
12794                                 fi
12795                                 ;;
12796                         esac
12797                 done
12798                 : In case none of those worked, prompt the user.
12799                 case "$netdb_net_type" in
12800                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12801                         dflt='long'
12802                         . ./myread
12803                         netdb_net_type=$ans
12804                         ;;
12805                 esac
12806                 ;;
12807         *)      : no getnetbyaddr, so pick harmless default
12808                 netdb_net_type='long'
12809                 ;;
12810         esac
12811 fi
12812 : locate the preferred pager for this system
12813 case "$pager" in
12814 '')
12815         dflt=''
12816         case "$pg" in
12817         /*) dflt=$pg;;
12818         esac
12819         case "$more" in
12820         /*) dflt=$more;;
12821         esac
12822         case "$less" in
12823         /*) dflt=$less;;
12824         esac
12825         case "$dflt" in
12826         '') dflt=/usr/ucb/more;;
12827         esac
12828         ;;
12829 *) dflt="$pager";;
12830 esac
12831 echo " "
12832 fn=f/
12833 rp='What pager is used on your system?'
12834 . ./getfile
12835 pager="$ans"
12836
12837 : see what type pids are declared as in the kernel
12838 rp="What is the type of process ids on this system?"
12839 set pid_t pidtype int stdio.h sys/types.h
12840 eval $typedef_ask
12841
12842 : Find earliest binary compatible site_perl subdirectory perl can use.
12843 case "$bincompat5005" in
12844 "$define") xs_apiversion='5.005' ;;
12845 *) xs_apiversion=$version ;;   # The current site_perl version.
12846 esac
12847 : Find earliest pure perl site_perl subdirectory perl can use.
12848 : The versioned directories started at 5.005.
12849 pm_apiversion='5.005'
12850
12851 : check for length of pointer
12852 echo " "
12853 case "$ptrsize" in
12854 '')
12855         $echo $n "Checking to see how big your pointers are...$c" >&4
12856         if test "$voidflags" -gt 7; then
12857                 echo '#define VOID_PTR char *' > try.c
12858         else
12859                 echo '#define VOID_PTR void *' > try.c
12860         fi
12861         $cat >>try.c <<'EOCP'
12862 #include <stdio.h>
12863 int main()
12864 {
12865     printf("%d\n", (int)sizeof(VOID_PTR));
12866     exit(0);
12867 }
12868 EOCP
12869         set try
12870         if eval $compile_ok; then
12871                 ptrsize=`./try`
12872                 $echo " $ptrsize bytes." >&4
12873         else
12874                 dflt='4'
12875                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12876                 rp="What is the size of a pointer (in bytes)?"
12877                 . ./myread
12878                 ptrsize="$ans"
12879         fi
12880         ;;
12881 esac
12882 $rm -f try.c try
12883
12884 : see if ar generates random libraries by itself
12885 echo " "
12886 echo "Checking how to generate random libraries on your machine..." >&4
12887 echo 'int bar1() { return bar2(); }' > bar1.c
12888 echo 'int bar2() { return 2; }' > bar2.c
12889 $cat > foo.c <<'EOP'
12890 int main() { printf("%d\n", bar1()); exit(0); }
12891 EOP
12892 $cc $ccflags -c bar1.c >/dev/null 2>&1
12893 $cc $ccflags -c bar2.c >/dev/null 2>&1
12894 $cc $ccflags -c foo.c >/dev/null 2>&1
12895 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12896 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12897         ./foobar >/dev/null 2>&1; then
12898         echo "$ar appears to generate random libraries itself."
12899         orderlib=false
12900         ranlib=":"
12901 elif $ar ts bar$_a >/dev/null 2>&1 &&
12902         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12903         ./foobar >/dev/null 2>&1; then
12904                 echo "a table of contents needs to be added with '$ar ts'."
12905                 orderlib=false
12906                 ranlib="$ar ts"
12907 else
12908         case "$ranlib" in
12909         :) ranlib='';;
12910         '')
12911                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12912                 $test -f $ranlib || ranlib=''
12913                 ;;
12914         esac
12915         if $test -n "$ranlib"; then
12916                 echo "your system has '$ranlib'; we'll use that."
12917                 orderlib=false
12918         else
12919                 echo "your system doesn't seem to support random libraries"
12920                 echo "so we'll use lorder and tsort to order the libraries."
12921                 orderlib=true
12922                 ranlib=":"
12923         fi
12924 fi
12925 $rm -f foo* bar* 
12926
12927 : check for type of arguments to select. 
12928 case "$selecttype" in
12929 '') case "$d_select" in
12930         $define)
12931                 echo " "
12932                 $cat <<EOM
12933 Checking to see what type of arguments are accepted by select().
12934 EOM
12935                 hdrs="$define sys/types.h
12936                         $i_systime sys/time.h 
12937                         $i_sysselct sys/select.h
12938                         $d_socket sys/socket.h"
12939                 : The first arg can be int, unsigned, or size_t
12940                 : The last arg may or may not be 'const'
12941                 val=''
12942                 : void pointer has been seen but using that
12943                 : breaks the selectminbits test
12944                 for xxx in 'fd_set *' 'int *'; do
12945                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12946                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12947                                         case "$val" in
12948                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12949                                                 if ./protochk "$try" $hdrs; then
12950                                                         echo "Your system accepts $xxx."
12951                                                         val="$xxx"
12952                                                 fi
12953                                                 ;;
12954                                         esac
12955                                 done
12956                         done
12957                 done
12958                 case "$val" in
12959                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12960                         case "$d_fd_set" in
12961                                 $define) dflt="fd_set *" ;;
12962                                 *)              dflt="int *" ;;
12963                         esac
12964                         . ./myread
12965                         val=$ans
12966                         ;;
12967                 esac
12968                 selecttype="$val"
12969                 ;;
12970         *)      : no select, so pick a harmless default
12971                 selecttype='int *'
12972                 ;;
12973         esac
12974         ;;
12975 esac
12976
12977 : check for the select 'width'
12978 case "$selectminbits" in
12979 '') case "$d_select" in
12980         $define)
12981                 $cat <<EOM
12982
12983 Checking to see on how many bits at a time your select() operates...
12984 EOM
12985                 $cat >try.c <<EOCP
12986 #include <sys/types.h>
12987 #$i_time I_TIME
12988 #$i_systime I_SYS_TIME
12989 #$i_systimek I_SYS_TIME_KERNEL
12990 #ifdef I_TIME
12991 #   include <time.h>
12992 #endif
12993 #ifdef I_SYS_TIME
12994 #   ifdef I_SYS_TIME_KERNEL
12995 #       define KERNEL
12996 #   endif
12997 #   include <sys/time.h>
12998 #   ifdef I_SYS_TIME_KERNEL
12999 #       undef KERNEL
13000 #   endif
13001 #endif
13002 #$i_sysselct I_SYS_SELECT
13003 #ifdef I_SYS_SELECT
13004 #include <sys/select.h>
13005 #endif
13006 #$d_socket HAS_SOCKET
13007 #ifdef HAS_SOCKET
13008 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13009 #endif
13010 #include <stdio.h>
13011 $selecttype b;
13012 #define S sizeof(*(b))
13013 #define MINBITS 64
13014 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13015 #define NBITS  (NBYTES * 8)
13016 int main() {
13017     char s[NBYTES];
13018     struct timeval t;
13019     int i;
13020     FILE* fp;
13021     int fd;
13022
13023     fclose(stdin);
13024     fp = fopen("try.c", "r");
13025     if (fp == 0)
13026       exit(1);
13027     fd = fileno(fp);
13028     if (fd < 0)
13029       exit(2);
13030     b = ($selecttype)s;
13031     for (i = 0; i < NBITS; i++)
13032         FD_SET(i, b);
13033     t.tv_sec  = 0;
13034     t.tv_usec = 0;
13035     select(fd + 1, b, 0, 0, &t);
13036     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13037     printf("%d\n", i + 1);
13038     return 0;
13039 }
13040 EOCP
13041                 set try
13042                 if eval $compile_ok; then
13043                         selectminbits=`./try`
13044                         case "$selectminbits" in
13045                         '')     cat >&4 <<EOM
13046 Cannot figure out on how many bits at a time your select() operates.
13047 I'll play safe and guess it is 32 bits.
13048 EOM
13049                                 selectminbits=32
13050                                 bits="32 bits"
13051                                 ;;
13052                         1)      bits="1 bit" ;;
13053                         *)      bits="$selectminbits bits" ;;
13054                         esac
13055                         echo "Your select() operates on $bits at a time." >&4
13056                 else
13057                         rp='What is the minimum number of bits your select() operates on?'
13058                         case "$byteorder" in
13059                         1234|12345678)  dflt=32 ;;
13060                         *)              dflt=1  ;;
13061                         esac
13062                         . ./myread
13063                         val=$ans
13064                         selectminbits="$val"
13065                 fi
13066                 $rm -f try.* try
13067                 ;;
13068         *)      : no select, so pick a harmless default
13069                 selectminbits='32'
13070                 ;;
13071         esac
13072         ;;
13073 esac
13074
13075 : Trace out the files included by signal.h, then look for SIGxxx names.
13076 : Remove SIGARRAYSIZE used by HPUX.
13077 : Remove SIGSTKSIZE used by Linux.
13078 : Remove SIGSTKSZ used by Posix.
13079 : Remove SIGTYP void lines used by OS2.
13080 : Some cpps, like os390, dont give the file name anywhere
13081 if [ "X$fieldn" = X ]; then
13082         : Just make some guesses.  We check them later.
13083         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13084 else
13085         xxx=`echo '#include <signal.h>' |
13086         $cppstdin $cppminus $cppflags 2>/dev/null |
13087         $grep '^[       ]*#.*include' | 
13088         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13089 fi
13090 : Check this list of files to be sure we have parsed the cpp output ok.
13091 : This will also avoid potentially non-existent files, such 
13092 : as ../foo/bar.h
13093 xxxfiles=''
13094 for xx in $xxx /dev/null ; do
13095         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13096 done
13097 : If we have found no files, at least try signal.h
13098 case "$xxxfiles" in
13099 '')     xxxfiles=`./findhdr signal.h` ;;
13100 esac
13101 xxx=`awk '
13102 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13103         print substr($2, 4, 20)
13104 }
13105 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13106         print substr($3, 4, 20)
13107 }' $xxxfiles`
13108 : Append some common names just in case the awk scan failed.
13109 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13110 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13111 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13112 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13113 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13114
13115 : generate a few handy files for later
13116 $cat > signal.c <<'EOCP'
13117 #include <sys/types.h>
13118 #include <signal.h>
13119 #include <stdio.h>
13120 int main() {
13121
13122 /* Strange style to avoid deeply-nested #if/#else/#endif */
13123 #ifndef NSIG
13124 #  ifdef _NSIG
13125 #    define NSIG (_NSIG)
13126 #  endif
13127 #endif
13128
13129 #ifndef NSIG
13130 #  ifdef SIGMAX
13131 #    define NSIG (SIGMAX+1)
13132 #  endif
13133 #endif
13134
13135 #ifndef NSIG
13136 #  ifdef SIG_MAX
13137 #    define NSIG (SIG_MAX+1)
13138 #  endif
13139 #endif
13140
13141 #ifndef NSIG
13142 #  ifdef MAXSIG
13143 #    define NSIG (MAXSIG+1)
13144 #  endif
13145 #endif
13146
13147 #ifndef NSIG
13148 #  ifdef MAX_SIG
13149 #    define NSIG (MAX_SIG+1)
13150 #  endif
13151 #endif
13152
13153 #ifndef NSIG
13154 #  ifdef SIGARRAYSIZE
13155 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13156 #  endif
13157 #endif
13158
13159 #ifndef NSIG
13160 #  ifdef _sys_nsig
13161 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13162 #  endif
13163 #endif
13164
13165 /* Default to some arbitrary number that's big enough to get most
13166    of the common signals.
13167 */
13168 #ifndef NSIG
13169 #    define NSIG 50
13170 #endif
13171
13172 printf("NSIG %d\n", NSIG);
13173
13174 #ifndef JUST_NSIG
13175
13176 EOCP
13177
13178 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13179 {
13180         printf "#ifdef SIG"; printf $1; printf "\n"
13181         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13182         printf $1; printf ");\n"
13183         printf "#endif\n"
13184 }
13185 END {
13186         printf "#endif /* JUST_NSIG */\n";
13187         printf "exit(0);\n}\n";
13188 }
13189 ' >>signal.c
13190 $cat >signal.awk <<'EOP'
13191 BEGIN { ndups = 0 }
13192 $1 ~ /^NSIG$/ { nsig = $2 }
13193 ($1 !~ /^NSIG$/) && (NF == 2) {
13194     if ($2 > maxsig) { maxsig = $2 }
13195     if (sig_name[$2]) {
13196         dup_name[ndups] = $1
13197         dup_num[ndups] = $2
13198         ndups++ 
13199     }
13200     else {
13201         sig_name[$2] = $1
13202         sig_num[$2] = $2
13203     }
13204 }
13205 END { 
13206     if (nsig == 0) {
13207         nsig = maxsig + 1
13208     }
13209     printf("NSIG %d\n", nsig);
13210     for (n = 1; n < nsig; n++) {
13211         if (sig_name[n]) {
13212             printf("%s %d\n", sig_name[n], sig_num[n])
13213         }
13214         else {
13215             printf("NUM%d %d\n", n, n) 
13216         }
13217     }
13218     for (n = 0; n < ndups; n++) {
13219         printf("%s %d\n", dup_name[n], dup_num[n])
13220     }
13221 }
13222 EOP
13223 $cat >signal_cmd <<EOS
13224 $startsh
13225 if $test -s signal.lst; then
13226     echo "Using your existing signal.lst file"
13227         exit 0
13228 fi
13229 xxx="$xxx"
13230 EOS
13231 $cat >>signal_cmd <<'EOS'
13232
13233 set signal
13234 if eval $compile_ok; then
13235         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13236 else
13237         echo "(I can't seem be able to compile the whole test program)" >&4
13238         echo "(I'll try it in little pieces.)" >&4
13239         set signal -DJUST_NSIG
13240         if eval $compile_ok; then
13241                 ./signal$_exe > signal.nsg
13242                 $cat signal.nsg
13243         else
13244                 echo "I can't seem to figure out how many signals you have." >&4
13245                 echo "Guessing 50." >&4
13246                 echo 'NSIG 50' > signal.nsg
13247         fi
13248         : Now look at all the signal names, one at a time.
13249         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13250                 $cat > signal.c <<EOCP
13251 #include <sys/types.h>
13252 #include <signal.h>
13253 #include <stdio.h>
13254 int main() {
13255 printf("$xx %d\n", SIG${xx});
13256 return 0;
13257 }
13258 EOCP
13259                 set signal
13260                 if eval $compile; then
13261                         echo "SIG${xx} found."
13262                         ./signal$_exe  >> signal.ls1
13263                 else
13264                         echo "SIG${xx} NOT found."
13265                 fi
13266         done
13267         if $test -s signal.ls1; then
13268                 $cat signal.nsg signal.ls1 |
13269                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13270         fi
13271
13272 fi
13273 if $test -s signal.lst; then
13274         :
13275 else
13276         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13277         echo 'kill -l' >signal
13278         set X `csh -f <signal`
13279         $rm -f signal
13280         shift
13281         case $# in
13282         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13283         esac
13284         echo $@ | $tr ' ' $trnl | \
13285             $awk '{ printf "%s %d\n", $1, ++s; }
13286                   END { printf "NSIG %d\n", ++s }' >signal.lst
13287 fi
13288 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13289 EOS
13290 chmod a+x signal_cmd
13291 $eunicefix signal_cmd
13292
13293 : generate list of signal names
13294 echo " "
13295 case "$sig_name_init" in
13296 '') doinit=yes ;;
13297 *)  case "$sig_num_init" in
13298     ''|*,*) doinit=yes ;;
13299     esac ;;
13300 esac
13301 case "$doinit" in
13302 yes)
13303         echo "Generating a list of signal names and numbers..." >&4
13304         . ./signal_cmd
13305         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13306         sig_name=`$awk 'BEGIN { printf "ZERO " }
13307                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13308         sig_num=`$awk  'BEGIN { printf "0 " }
13309                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13310         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13311                              !/^NSIG/   { printf "\"%s\", ", $1 }
13312                              END        { printf "0\n" }' signal.lst`
13313         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13314                              !/^NSIG/   { printf "%d, ", $2}
13315                              END        { printf "0\n"}' signal.lst`
13316         ;;
13317 esac
13318 echo "The following $sig_count signals are available:"
13319 echo " "
13320 echo $sig_name | $awk \
13321 'BEGIN { linelen = 0 }
13322 {
13323         for (i = 1; i <= NF; i++) {
13324                 name = "SIG" $i " "
13325                 linelen = linelen + length(name)
13326                 if (linelen > 70) {
13327                         printf "\n"
13328                         linelen = length(name)
13329                 }
13330                 printf "%s", name
13331         }
13332         printf "\n"
13333 }'
13334 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13335
13336 : see what type is used for signed size_t
13337 set ssize_t ssizetype int stdio.h sys/types.h
13338 eval $typedef
13339 dflt="$ssizetype"
13340 $cat > ssize.c <<EOM
13341 #include <stdio.h>
13342 #include <sys/types.h>
13343 #define Size_t $sizetype
13344 #define SSize_t $dflt
13345 int main()
13346 {
13347         if (sizeof(Size_t) == sizeof(SSize_t))
13348                 printf("$dflt\n");
13349         else if (sizeof(Size_t) == sizeof(int))
13350                 printf("int\n");
13351         else 
13352                 printf("long\n");
13353         exit(0);
13354 }
13355 EOM
13356 echo " "
13357 set ssize
13358 if eval $compile_ok && ./ssize > /dev/null; then
13359         ssizetype=`./ssize`
13360         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13361 else
13362         $cat >&4 <<EOM
13363 Help! I can't compile and run the ssize_t test program: please enlighten me!
13364 (This is probably a misconfiguration in your system or libraries, and
13365 you really ought to fix it.  Still, I'll try anyway.)
13366
13367 I need a type that is the same size as $sizetype, but is guaranteed to
13368 be signed.  Common values are ssize_t, int and long.
13369
13370 EOM
13371         rp="What signed type is the same size as $sizetype?"
13372         . ./myread
13373         ssizetype="$ans"
13374 fi
13375 $rm -f ssize ssize.*
13376
13377 : see what type of char stdio uses.
13378 echo " "
13379 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13380         echo "Your stdio uses unsigned chars." >&4
13381         stdchar="unsigned char"
13382 else
13383         echo "Your stdio uses signed chars." >&4
13384         stdchar="char"
13385 fi
13386
13387 : see if time exists
13388 echo " "
13389 if test "X$d_time" = X -o X"$timetype" = X; then
13390     if set time val -f d_time; eval $csym; $val; then
13391                 echo 'time() found.' >&4
13392                 val="$define"
13393                 rp="What is the type returned by time() on this system?"
13394                 set time_t timetype long stdio.h sys/types.h
13395                 eval $typedef_ask
13396     else
13397                 echo 'time() not found, hope that will do.' >&4
13398                 val="$undef"
13399                 timetype='int';
13400     fi
13401     set d_time
13402     eval $setvar
13403 fi
13404
13405 : see what type uids are declared as in the kernel
13406 echo " "
13407 echo "Looking for the type for user ids returned by getuid()."
13408 set uid_t uidtype xxx stdio.h sys/types.h
13409 eval $typedef
13410 case "$uidtype" in
13411 xxx)
13412         xxx=`./findhdr sys/user.h`
13413         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13414         case $1 in
13415         unsigned) dflt="$1 $2" ;;
13416         *) dflt="$1" ;;
13417         esac
13418         ;;
13419 *) dflt="$uidtype";;
13420 esac
13421 case "$uidtype" in
13422 uid_t)  echo "uid_t found." ;;
13423 *)      rp="What is the type for user ids returned by getuid()?"
13424         . ./myread
13425         uidtype="$ans"
13426         ;;
13427 esac
13428
13429 echo " "
13430 case "$uidtype" in
13431 *_t) zzz="$uidtype"     ;;
13432 *)   zzz="uid"          ;;
13433 esac
13434 echo "Checking the size of $zzz..." >&4 
13435 cat > try.c <<EOCP
13436 #include <sys/types.h>
13437 #include <stdio.h>
13438 int main() {
13439     printf("%d\n", (int)sizeof($uidtype));
13440     exit(0);
13441 }
13442 EOCP
13443 set try
13444 if eval $compile_ok; then
13445         yyy=`./try`
13446         case "$yyy" in
13447         '')     uidsize=4
13448                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13449                 ;;
13450         *)      uidsize=$yyy
13451                 echo "Your $zzz size is $uidsize bytes."
13452                 ;;
13453         esac
13454 else
13455         uidsize=4
13456         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13457 fi
13458
13459 echo " "
13460 case "$uidtype" in
13461 *_t) zzz="$uidtype"     ;;
13462 *)   zzz="uid"          ;;
13463 esac
13464 echo "Checking the sign of $zzz..." >&4
13465 cat > try.c <<EOCP
13466 #include <sys/types.h>
13467 #include <stdio.h>
13468 int main() {
13469         $uidtype foo = -1;
13470         if (foo < 0)
13471                 printf("-1\n");
13472         else
13473                 printf("1\n");
13474 }
13475 EOCP
13476 set try
13477 if eval $compile; then
13478         yyy=`./try`
13479         case "$yyy" in
13480         '')     uidsign=1
13481                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13482                 ;;
13483         *)      uidsign=$yyy
13484                 case "$uidsign" in
13485                  1) echo "Your $zzz is unsigned." ;;
13486                 -1) echo "Your $zzz is signed."   ;;
13487                 esac
13488                 ;;
13489         esac
13490 else
13491         uidsign=1
13492         echo "(I can't compile the test program--guessing unsigned.)" >&4
13493 fi
13494
13495
13496
13497 echo " "
13498 $echo "Checking the format string to be used for uids..." >&4
13499
13500 case "$uidsign" in
13501 -1)     if $test X"$uidsize" = X"$ivsize"; then
13502                 uidformat="$ivdformat"
13503         else
13504                 if $test X"$uidsize" = X"$longsize"; then
13505                         uidformat='"ld"'
13506                 else
13507                         if $test X"$uidsize" = X"$intsize"; then
13508                                 uidformat='"d"'
13509                         else
13510                                 if $test X"$uidsize" = X"$shortsize"; then
13511                                         uidformat='"hd"'
13512                                 fi
13513                         fi
13514                 fi
13515         fi
13516         ;;
13517 *)      if $test X"$uidsize" = X"$uvsize"; then
13518                 uidformat="$uvuformat"
13519         else
13520                 if $test X"$uidsize" = X"$longsize"; then
13521                         uidformat='"lu"'
13522                 else
13523                         if $test X"$uidsize" = X"$intsize"; then
13524                                 uidformat='"u"'
13525                         else
13526                                 if $test X"$uidsize" = X"$shortsize"; then
13527                                         uidformat='"hu"'
13528                                 fi
13529                         fi
13530                 fi
13531         fi
13532         ;;
13533 esac
13534
13535 : see if dbm.h is available
13536 : see if dbmclose exists
13537 set dbmclose d_dbmclose
13538 eval $inlibc
13539
13540 case "$d_dbmclose" in
13541 $define)
13542         set dbm.h i_dbm
13543         eval $inhdr
13544         case "$i_dbm" in
13545         $define)
13546                 val="$undef"
13547                 set i_rpcsvcdbm
13548                 eval $setvar
13549                 ;;
13550         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13551                 eval $inhdr
13552                 ;;
13553         esac
13554         ;;
13555 *)      echo "We won't be including <dbm.h>"
13556         val="$undef"
13557         set i_dbm
13558         eval $setvar
13559         val="$undef"
13560         set i_rpcsvcdbm
13561         eval $setvar
13562         ;;
13563 esac
13564
13565 : see if this is a sys/file.h system
13566 val=''
13567 set sys/file.h val
13568 eval $inhdr
13569
13570 : do we need to include sys/file.h ?
13571 case "$val" in
13572 "$define")
13573         echo " "
13574         if $h_sysfile; then
13575                 val="$define"
13576                 echo "We'll be including <sys/file.h>." >&4
13577         else
13578                 val="$undef"
13579                 echo "We won't be including <sys/file.h>." >&4
13580         fi
13581         ;;
13582 *)
13583         h_sysfile=false
13584         ;;
13585 esac
13586 set i_sysfile
13587 eval $setvar
13588
13589 : see if fcntl.h is there
13590 val=''
13591 set fcntl.h val
13592 eval $inhdr
13593
13594 : see if we can include fcntl.h
13595 case "$val" in
13596 "$define")
13597         echo " "
13598         if $h_fcntl; then
13599                 val="$define"
13600                 echo "We'll be including <fcntl.h>." >&4
13601         else
13602                 val="$undef"
13603                 if $h_sysfile; then
13604         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13605                 else
13606                         echo "We won't be including <fcntl.h>." >&4
13607                 fi
13608         fi
13609         ;;
13610 *)
13611         h_fcntl=false
13612         val="$undef"
13613         ;;
13614 esac
13615 set i_fcntl
13616 eval $setvar
13617
13618 : see if this is a iconv.h system
13619 set iconv.h i_iconv
13620 eval $inhdr
13621
13622 : see if locale.h is available
13623 set locale.h i_locale
13624 eval $inhdr
13625
13626 : see if mach cthreads are available
13627 if test "X$usethreads" = "X$define"; then
13628         set mach/cthreads.h i_machcthr
13629         eval $inhdr
13630 else
13631         i_machcthr="$undef"
13632 fi
13633
13634
13635
13636 : see if this is a math.h system
13637 set math.h i_math
13638 eval $inhdr
13639
13640 : see if this is a mntent.h system
13641 set mntent.h i_mntent
13642 eval $inhdr
13643
13644 : see if ndbm.h is available
13645 set ndbm.h t_ndbm
13646 eval $inhdr
13647 case "$t_ndbm" in
13648 $define)
13649         : see if dbm_open exists
13650         set dbm_open d_dbm_open
13651         eval $inlibc
13652         case "$d_dbm_open" in
13653         $undef)
13654                 t_ndbm="$undef"
13655                 echo "We won't be including <ndbm.h>"
13656                 ;;
13657         esac
13658         ;;
13659 esac
13660 val="$t_ndbm"
13661 set i_ndbm
13662 eval $setvar
13663
13664 : see if net/errno.h is available
13665 val=''
13666 set net/errno.h val
13667 eval $inhdr
13668
13669 : Unfortunately, it causes problems on some systems.  Arrgh.
13670 case "$val" in
13671 $define)
13672         cat > try.c <<'EOM'
13673 #include <stdio.h>
13674 #include <errno.h>
13675 #include <net/errno.h>
13676 int func()
13677 {
13678         return ENOTSOCK;
13679 }
13680 EOM
13681         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13682                 echo "We'll be including <net/errno.h>." >&4
13683         else
13684                 echo "We won't be including <net/errno.h>." >&4
13685                 val="$undef"
13686         fi
13687         $rm -f try.* try
13688         ;;
13689 esac
13690 set i_neterrno
13691 eval $setvar
13692
13693 : see if netinet/tcp.h is available
13694 set netinet/tcp.h i_netinettcp
13695 eval $inhdr
13696
13697 : see if this is a poll.h system
13698 set poll.h i_poll
13699 eval $inhdr
13700
13701 echo " "
13702 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13703 $cat <<'EOSH' > Cppsym.know
13704 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13705 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13706 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13707 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13708 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13709 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13710 bull c cadmus clipper CMU COFF COMPILER_VERSION
13711 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13712 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13713 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13714 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13715 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13716 H3050R H3050RX hbullx20 hcx host_mips
13717 hp200 hp300 hp700 HP700 hp800 hp9000
13718 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13719 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13720 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13721 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13722 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13723 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13724 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13725 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13726 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13727 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13728 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13729 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13730 MATH_HAS_NO_SIDE_EFFECTS
13731 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13732 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13733 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13734 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13735 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13736 NetBSD news1500 news1700 news1800 news1900 news3700
13737 news700 news800 news900 NeXT NLS ns16000 ns32000
13738 ns32016 ns32332 ns32k nsc32000
13739 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13740 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13741 pc532 pdp11 PGC PIC plexus PORTAR posix
13742 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13743 POSIX_C_SOURCE POSIX_SOURCE POWER
13744 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13745 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13746 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13747 sony sony_news sonyrisc sparc sparclite spectrum
13748 stardent stdc STDC_EXT stratos sun sun3 sun386
13749 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13750 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13751 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13752 sysV68 sysV88 Tek4132 Tek4300 titan
13753 tower tower32 tower32_200 tower32_600 tower32_700
13754 tower32_800 tower32_850 tss
13755 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13756 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13757 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13758 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13759 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13760 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13761 z8000
13762 EOSH
13763 # Maybe put other stuff here too.
13764 cat <<EOSH >>Cppsym.know
13765 $osname
13766 EOSH
13767 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13768 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13769 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13770 $rm -f Cppsym.a Cppsym.b
13771 cat <<EOSH > Cppsym
13772 $startsh
13773 if $test \$# -gt 0; then
13774     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13775     if $test -s Cppsym.got; then
13776         $rm -f Cppsym.got
13777         exit 0
13778     fi
13779     $rm -f Cppsym.got
13780     exit 1
13781 else
13782     $tr " " "$trnl" | ./Cppsym.try
13783     exit 0
13784 fi
13785 EOSH
13786 chmod +x Cppsym
13787 $eunicefix Cppsym
13788 cat <<EOSH > Cppsym.try
13789 $startsh
13790 cat <<'EOCP' > try.c
13791 #include <stdio.h>
13792 int main() {
13793 EOCP
13794 $awk \\
13795 EOSH
13796 cat <<'EOSH' >> Cppsym.try
13797 'length($1) > 0 {
13798     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
13799     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
13800     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
13801     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
13802 }'       >> try.c
13803 echo '}' >> try.c
13804 EOSH
13805 cat <<EOSH >> Cppsym.try
13806 cc="$cc"
13807 optimize="$optimize"
13808 ccflags="$ccflags"
13809 ldflags="$ldflags"
13810 libs="$libs"
13811 exe_ext="$exe_ext"
13812 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
13813 EOSH
13814 chmod +x Cppsym.try
13815 $eunicefix Cppsym.try
13816 ./Cppsym < Cppsym.know > Cppsym.true
13817 : now check the C compiler for additional symbols
13818 postprocess_cc_v=''
13819 case "$osname" in
13820 aix) postprocess_cc_v="|$tr , ' '" ;;
13821 esac
13822 $cat >ccsym <<EOS
13823 $startsh
13824 $cat >tmp.c <<EOF
13825 extern int foo;
13826 EOF
13827 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13828 do
13829         case "\$i" in
13830         -D*) echo "\$i" | $sed 's/^-D//';;
13831         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13832         esac
13833 done
13834 $rm -f try.c
13835 EOS
13836 postprocess_cc_v=''
13837 chmod +x ccsym
13838 $eunicefix ccsym
13839 ./ccsym > ccsym1.raw
13840 if $test -s ccsym1.raw; then
13841        $sort ccsym1.raw | $uniq >ccsym.raw
13842 else
13843        mv ccsym1.raw ccsym.raw
13844 fi
13845
13846 $awk '/\=/ { print $0; next }
13847         { print $0"=1" }' ccsym.raw >ccsym.list
13848 $awk '/\=/ { print $0; next }
13849         { print $0"=1" }' Cppsym.true >ccsym.true
13850 $comm -13 ccsym.true ccsym.list >ccsym.own
13851 $comm -12 ccsym.true ccsym.list >ccsym.com
13852 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13853 also=''
13854 if $test -z ccsym.raw; then
13855         echo "Your C compiler doesn't seem to define any symbols!" >&4
13856         echo " "
13857         echo "However, your C preprocessor defines the following symbols:"
13858         $cat Cppsym.true
13859         ccsymbols=''
13860         cppsymbols=`$cat Cppsym.true`
13861         cppsymbols=`echo $cppsymbols`
13862         cppccsymbols="$cppsymbols"
13863 else
13864         if $test -s ccsym.com; then
13865                 echo "Your C compiler and pre-processor define these symbols:"
13866                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13867                 also='also '
13868                 symbols='ones'
13869                 cppccsymbols=`$cat ccsym.com`
13870                 cppccsymbols=`echo $cppccsymbols`
13871                 $test "$silent" || sleep 1
13872         fi
13873         if $test -s ccsym.cpp; then
13874                 $test "$also" && echo " "
13875                 echo "Your C pre-processor ${also}defines the following symbols:"
13876                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13877                 also='further '
13878                 cppsymbols=`$cat ccsym.cpp`
13879                 cppsymbols=`echo $cppsymbols`
13880                 $test "$silent" || sleep 1
13881         fi
13882         if $test -s ccsym.own; then
13883                 $test "$also" && echo " "
13884                 echo "Your C compiler ${also}defines the following cpp symbols:"
13885                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13886                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13887                 ccsymbols=`$cat ccsym.own`
13888                 ccsymbols=`echo $ccsymbols`
13889                 $test "$silent" || sleep 1
13890         fi
13891 fi
13892 $rm -f ccsym*
13893
13894 : see if this is a termio system
13895 val="$undef"
13896 val2="$undef"
13897 val3="$undef"
13898 if $test `./findhdr termios.h`; then
13899         set tcsetattr i_termios
13900         eval $inlibc
13901         val3="$i_termios"
13902 fi
13903 echo " "
13904 case "$val3" in
13905 "$define") echo "You have POSIX termios.h... good!" >&4;;
13906 *) if ./Cppsym pyr; then
13907                 case "`/bin/universe`" in
13908                 ucb) if $test `./findhdr sgtty.h`; then
13909                                 val2="$define"
13910                                 echo "<sgtty.h> found." >&4
13911                         else
13912                                 echo "System is pyramid with BSD universe."
13913                                 echo "<sgtty.h> not found--you could have problems." >&4
13914                         fi;;
13915                 *) if $test `./findhdr termio.h`; then
13916                                 val="$define"
13917                                 echo "<termio.h> found." >&4
13918                         else
13919                                 echo "System is pyramid with USG universe."
13920                                 echo "<termio.h> not found--you could have problems." >&4
13921                         fi;;
13922                 esac
13923         elif ./usg; then
13924                 if $test `./findhdr termio.h`; then
13925                         echo "<termio.h> found." >&4
13926                         val="$define"
13927                 elif $test `./findhdr sgtty.h`; then
13928                         echo "<sgtty.h> found." >&4
13929                         val2="$define"
13930                 else
13931 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13932                 fi
13933         else
13934                 if $test `./findhdr sgtty.h`; then
13935                         echo "<sgtty.h> found." >&4
13936                         val2="$define"
13937                 elif $test `./findhdr termio.h`; then
13938                         echo "<termio.h> found." >&4
13939                         val="$define"
13940                 else
13941 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13942                 fi
13943         fi;;
13944 esac
13945 set i_termio; eval $setvar
13946 val=$val2; set i_sgtty; eval $setvar
13947 val=$val3; set i_termios; eval $setvar
13948
13949 : see if this is a shadow.h system
13950 set shadow.h i_shadow
13951 eval $inhdr
13952
13953 : see if this is a socks.h system
13954 set socks.h i_socks
13955 eval $inhdr
13956
13957 : see if stdarg is available
13958 echo " "
13959 if $test `./findhdr stdarg.h`; then
13960         echo "<stdarg.h> found." >&4
13961         valstd="$define"
13962 else
13963         echo "<stdarg.h> NOT found." >&4
13964         valstd="$undef"
13965 fi
13966
13967 : see if varags is available
13968 echo " "
13969 if $test `./findhdr varargs.h`; then
13970         echo "<varargs.h> found." >&4
13971 else
13972         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13973 fi
13974
13975 : set up the varargs testing programs
13976 $cat > varargs.c <<EOP
13977 #ifdef I_STDARG
13978 #include <stdarg.h>
13979 #endif
13980 #ifdef I_VARARGS
13981 #include <varargs.h>
13982 #endif
13983
13984 #ifdef I_STDARG
13985 int f(char *p, ...)
13986 #else
13987 int f(va_alist)
13988 va_dcl
13989 #endif
13990 {
13991         va_list ap;
13992 #ifndef I_STDARG
13993         char *p;
13994 #endif
13995 #ifdef I_STDARG
13996         va_start(ap,p);
13997 #else
13998         va_start(ap);
13999         p = va_arg(ap, char *);
14000 #endif
14001         va_end(ap);
14002 }
14003 EOP
14004 $cat > varargs <<EOP
14005 $startsh
14006 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14007         echo "true"
14008 else
14009         echo "false"
14010 fi
14011 $rm -f varargs$_o
14012 EOP
14013 chmod +x varargs
14014
14015 : now check which varargs header should be included
14016 echo " "
14017 i_varhdr=''
14018 case "$valstd" in
14019 "$define")
14020         if `./varargs I_STDARG`; then
14021                 val='stdarg.h'
14022         elif `./varargs I_VARARGS`; then
14023                 val='varargs.h'
14024         fi
14025         ;;
14026 *)
14027         if `./varargs I_VARARGS`; then
14028                 val='varargs.h'
14029         fi
14030         ;;
14031 esac
14032 case "$val" in
14033 '')
14034 echo "I could not find the definition for va_dcl... You have problems..." >&4
14035         val="$undef"; set i_stdarg; eval $setvar
14036         val="$undef"; set i_varargs; eval $setvar
14037         ;;
14038 *) 
14039         set i_varhdr
14040         eval $setvar
14041         case "$i_varhdr" in
14042         stdarg.h)
14043                 val="$define"; set i_stdarg; eval $setvar
14044                 val="$undef"; set i_varargs; eval $setvar
14045                 ;;
14046         varargs.h)
14047                 val="$undef"; set i_stdarg; eval $setvar
14048                 val="$define"; set i_varargs; eval $setvar
14049                 ;;
14050         esac
14051         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14052 esac
14053 $rm -f varargs*
14054
14055 : see if stddef is available
14056 set stddef.h i_stddef
14057 eval $inhdr
14058
14059 : see if sys/access.h is available
14060 set sys/access.h i_sysaccess
14061 eval $inhdr
14062
14063 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14064 set sys/filio.h i_sysfilio
14065 eval $inhdr
14066 echo " "
14067 if $test `./findhdr sys/ioctl.h`; then
14068         val="$define"
14069         echo '<sys/ioctl.h> found.' >&4
14070 else
14071         val="$undef"
14072         if $test $i_sysfilio = "$define"; then
14073             echo '<sys/ioctl.h> NOT found.' >&4
14074         else
14075                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14076                 $test $i_termio = "$define" && xxx="termio.h"
14077                 $test $i_termios = "$define" && xxx="termios.h"
14078 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14079         fi
14080 fi
14081 set i_sysioctl
14082 eval $setvar
14083
14084
14085 : see if this is a syslog.h system
14086 set syslog.h i_syslog
14087 eval $inhdr
14088
14089 : see if sys/resource.h has to be included
14090 set sys/resource.h i_sysresrc
14091 eval $inhdr
14092
14093 : see if sys/security.h is available
14094 set sys/security.h i_syssecrt
14095 eval $inhdr
14096
14097 : see if this is a sys/statvfs.h system
14098 set sys/statvfs.h i_sysstatvfs
14099 eval $inhdr
14100
14101 : see if this is a sys/uio.h system
14102 set sys/uio.h i_sysuio
14103 eval $inhdr
14104
14105 : see if this is a sys/un.h system
14106 set sys/un.h i_sysun
14107 eval $inhdr
14108
14109 : see if this is a syswait system
14110 set sys/wait.h i_syswait
14111 eval $inhdr
14112
14113 : see if this is a ustat.h system
14114 set ustat.h i_ustat
14115 eval $inhdr
14116
14117 : see if this is an utime system
14118 set utime.h i_utime
14119 eval $inhdr
14120
14121 : see if this is a values.h system
14122 set values.h i_values
14123 eval $inhdr
14124
14125 : see if this is a vfork system
14126 case "$d_vfork" in
14127 "$define")
14128         set vfork.h i_vfork
14129         eval $inhdr
14130         ;;
14131 *)
14132         i_vfork="$undef"
14133         ;;
14134 esac
14135
14136 : see if gdbm.h is available
14137 set gdbm.h t_gdbm
14138 eval $inhdr
14139 case "$t_gdbm" in
14140 $define)
14141         : see if gdbm_open exists
14142         set gdbm_open d_gdbm_open
14143         eval $inlibc
14144         case "$d_gdbm_open" in
14145         $undef)
14146                 t_gdbm="$undef"
14147                 echo "We won't be including <gdbm.h>"
14148                 ;;
14149         esac
14150         ;;
14151 esac
14152 val="$t_gdbm"
14153 set i_gdbm
14154 eval $setvar
14155
14156 echo " "
14157 echo "Looking for extensions..." >&4
14158 : If we are using the old config.sh, known_extensions may contain
14159 : old or inaccurate or duplicate values.
14160 known_extensions=''
14161 nonxs_extensions=''
14162 : We do not use find because it might not be available.
14163 : We do not just use MANIFEST because the user may have dropped
14164 : some additional extensions into the source tree and expect them
14165 : to be built.
14166
14167 : Function to recursively find available extensions, ignoring DynaLoader
14168 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14169 find_extensions='
14170     for xxx in *; do
14171        case "$xxx" in
14172            DynaLoader|dynaload) ;;
14173            *)
14174            if $test -f $xxx/$xxx.xs; then
14175                known_extensions="$known_extensions $1$xxx";
14176            elif $test -f $xxx/Makefile.PL; then
14177                nonxs_extensions="$nonxs_extensions $1$xxx";
14178            else
14179                if $test -d $xxx -a $# -lt 10; then
14180                    set $1$xxx/ $*;
14181                    cd $xxx;
14182                    eval $find_extensions;
14183                    cd ..;
14184                    shift;
14185                fi;
14186            fi
14187            ;;
14188        esac;
14189     done'
14190 tdir=`pwd`
14191 cd $rsrc/ext
14192 set X
14193 shift
14194 eval $find_extensions
14195 set X $nonxs_extensions
14196 shift
14197 nonxs_extensions="$*"
14198 set X $known_extensions
14199 shift
14200 known_extensions="$*"
14201 cd $tdir
14202
14203 : Now see which are supported on this system.
14204 avail_ext=''
14205 for xxx in $known_extensions ; do
14206         case "$xxx" in
14207         DB_File|db_file)
14208                 case "$i_db" in
14209                 $define) avail_ext="$avail_ext $xxx" ;;
14210                 esac
14211                 ;;
14212         GDBM_File|gdbm_fil)
14213                 case "$i_gdbm" in 
14214                 $define) avail_ext="$avail_ext $xxx" ;;
14215                 esac
14216                 ;;
14217         NDBM_File|ndbm_fil)
14218                 case "$i_ndbm" in
14219                 $define) avail_ext="$avail_ext $xxx" ;;
14220                 esac
14221                 ;;
14222         ODBM_File|odbm_fil) 
14223                 case "${i_dbm}${i_rpcsvcdbm}" in
14224                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14225                 esac
14226                 ;;
14227         POSIX|posix)
14228                 case "$useposix" in
14229                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14230                 esac
14231                 ;;
14232         Opcode|opcode)
14233                 case "$useopcode" in
14234                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14235                 esac
14236                 ;;
14237         Socket|socket)
14238                 case "$d_socket" in 
14239                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14240                 esac
14241                 ;;
14242         Thread|thread)
14243                 case "$usethreads" in 
14244                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14245                 esac
14246                 ;;
14247         IPC/SysV|ipc/sysv)
14248                 : XXX Do we need a useipcsysv variable here
14249                 case "${d_msg}${d_sem}${d_shm}" in 
14250                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14251                 esac
14252                 ;;
14253         *)      avail_ext="$avail_ext $xxx"
14254                 ;;
14255         esac
14256 done
14257
14258 set X $avail_ext
14259 shift
14260 avail_ext="$*"
14261
14262 : Now see which nonxs extensions are supported on this system.
14263 : For now assume all are.
14264 nonxs_ext=''
14265 for xxx in $nonxs_extensions ; do
14266         case "$xxx" in
14267         *)      nonxs_ext="$nonxs_ext $xxx"
14268                 ;;
14269         esac
14270 done
14271
14272 set X $nonxs_ext
14273 shift
14274 nonxs_ext="$*"
14275
14276 case $usedl in
14277 $define)
14278         $cat <<EOM
14279 A number of extensions are supplied with $package.  You may choose to
14280 compile these extensions for dynamic loading (the default), compile
14281 them into the $package executable (static loading), or not include
14282 them at all.  Answer "none" to include no extensions.
14283 Note that DynaLoader is always built and need not be mentioned here.
14284
14285 EOM
14286         case "$dynamic_ext" in
14287         '') dflt="$avail_ext" ;;
14288         *)      dflt="$dynamic_ext"
14289                 # Perhaps we are reusing an old out-of-date config.sh.
14290                 case "$hint" in
14291                 previous)
14292                         if test X"$dynamic_ext" != X"$avail_ext"; then
14293                                 $cat <<EOM
14294 NOTICE:  Your previous config.sh list may be incorrect. 
14295 The extensions now available to you are 
14296         ${avail_ext}
14297 but the default list from your previous config.sh is
14298         ${dynamic_ext} 
14299
14300 EOM
14301                         fi
14302                         ;;
14303                 esac
14304                 ;;
14305         esac
14306         case "$dflt" in
14307         '')     dflt=none;;
14308         esac
14309         rp="What extensions do you wish to load dynamically?"
14310         . ./myread
14311         case "$ans" in
14312         none) dynamic_ext=' ' ;;
14313         *) dynamic_ext="$ans" ;;
14314         esac
14315
14316         case "$static_ext" in
14317         '')
14318                 : Exclude those already listed in dynamic linking
14319                 dflt=''
14320                 for xxx in $avail_ext; do
14321                         case " $dynamic_ext " in
14322                         *" $xxx "*) ;;
14323                         *) dflt="$dflt $xxx" ;;
14324                         esac
14325                 done
14326                 set X $dflt
14327                 shift
14328                 dflt="$*"
14329                 ;;
14330         *)  dflt="$static_ext" 
14331                 ;;
14332         esac
14333
14334         case "$dflt" in
14335         '')     dflt=none;;
14336         esac
14337         rp="What extensions do you wish to load statically?"
14338         . ./myread
14339         case "$ans" in
14340         none) static_ext=' ' ;;
14341         *) static_ext="$ans" ;;
14342         esac
14343         ;;
14344 *)
14345         $cat <<EOM
14346 A number of extensions are supplied with $package.  Answer "none" 
14347 to include no extensions. 
14348 Note that DynaLoader is always built and need not be mentioned here.
14349
14350 EOM
14351         case "$static_ext" in
14352         '') dflt="$avail_ext" ;;
14353         *)      dflt="$static_ext"
14354                 # Perhaps we are reusing an old out-of-date config.sh.
14355                 case "$hint" in
14356                 previous)
14357                         if test X"$static_ext" != X"$avail_ext"; then
14358                                 $cat <<EOM
14359 NOTICE:  Your previous config.sh list may be incorrect. 
14360 The extensions now available to you are 
14361         ${avail_ext}
14362 but the default list from your previous config.sh is
14363         ${static_ext} 
14364
14365 EOM
14366                         fi
14367                         ;;
14368                 esac
14369                 ;;
14370         esac
14371         : Exclude those that are not xs extensions
14372         case "$dflt" in
14373         '')     dflt=none;;
14374         esac
14375         rp="What extensions do you wish to include?"
14376         . ./myread
14377         case "$ans" in
14378         none) static_ext=' ' ;;
14379         *) static_ext="$ans" ;;
14380         esac
14381         ;;
14382 esac
14383
14384 set X $dynamic_ext $static_ext $nonxs_ext
14385 shift
14386 extensions="$*"
14387
14388 : Remove build directory name from cppstdin so it can be used from
14389 : either the present location or the final installed location.
14390 echo " "
14391 : Get out of the UU directory to get correct path name.
14392 cd ..
14393 case "$cppstdin" in
14394 `pwd`/cppstdin)
14395         echo "Stripping down cppstdin path name"
14396         cppstdin=cppstdin
14397         ;;
14398 esac
14399 cd UU
14400
14401 : end of configuration questions
14402 echo " "
14403 echo "End of configuration questions."
14404 echo " "
14405
14406 : back to where it started
14407 if test -d ../UU; then
14408         cd ..
14409 fi
14410
14411 : configuration may be patched via a 'config.over' file
14412 if $test -f config.over; then
14413         echo " "
14414         dflt=y
14415         rp='I see a config.over file.  Do you wish to load it?'
14416         . UU/myread
14417         case "$ans" in
14418         n*) echo "OK, I'll ignore it.";;
14419         *)      . ./config.over
14420                 echo "Configuration override changes have been loaded."
14421                 ;;
14422         esac
14423 fi
14424
14425 : in case they want portability, strip down executable paths
14426 case "$d_portable" in
14427 "$define")
14428         echo " "
14429         echo "Stripping down executable paths..." >&4
14430         for file in $loclist $trylist; do
14431                 eval temp=\$$file
14432                 eval $file=`basename $temp`
14433         done
14434         ;;
14435 esac
14436
14437 : create config.sh file
14438 echo " "
14439 echo "Creating config.sh..." >&4
14440 $spitshell <<EOT >config.sh
14441 $startsh
14442 #
14443 # This file was produced by running the Configure script. It holds all the
14444 # definitions figured out by Configure. Should you modify one of these values,
14445 # do not forget to propagate your changes by running "Configure -der". You may
14446 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14447 #
14448
14449 # Package name      : $package
14450 # Source directory  : $src
14451 # Configuration time: $cf_time
14452 # Configured by     : $cf_by
14453 # Target system     : $myuname
14454
14455 Author='$Author'
14456 Date='$Date'
14457 Header='$Header'
14458 Id='$Id'
14459 Locker='$Locker'
14460 Log='$Log'
14461 Mcc='$Mcc'
14462 RCSfile='$RCSfile'
14463 Revision='$Revision'
14464 Source='$Source'
14465 State='$State'
14466 _a='$_a'
14467 _exe='$_exe'
14468 _o='$_o'
14469 afs='$afs'
14470 alignbytes='$alignbytes'
14471 ansi2knr='$ansi2knr'
14472 aphostname='$aphostname'
14473 api_revision='$api_revision'
14474 api_subversion='$api_subversion'
14475 api_version='$api_version'
14476 api_versionstring='$api_versionstring'
14477 ar='$ar'
14478 archlib='$archlib'
14479 archlibexp='$archlibexp'
14480 archname64='$archname64'
14481 archname='$archname'
14482 archobjs='$archobjs'
14483 awk='$awk'
14484 baserev='$baserev'
14485 bash='$bash'
14486 bin='$bin'
14487 bincompat5005='$bincompat5005'
14488 binexp='$binexp'
14489 bison='$bison'
14490 byacc='$byacc'
14491 byteorder='$byteorder'
14492 c='$c'
14493 castflags='$castflags'
14494 cat='$cat'
14495 cc='$cc'
14496 cccdlflags='$cccdlflags'
14497 ccdlflags='$ccdlflags'
14498 ccflags='$ccflags'
14499 ccsymbols='$ccsymbols'
14500 cf_by='$cf_by'
14501 cf_email='$cf_email'
14502 cf_time='$cf_time'
14503 charsize='$charsize'
14504 chgrp='$chgrp'
14505 chmod='$chmod'
14506 chown='$chown'
14507 clocktype='$clocktype'
14508 comm='$comm'
14509 compress='$compress'
14510 contains='$contains'
14511 cp='$cp'
14512 cpio='$cpio'
14513 cpp='$cpp'
14514 cpp_stuff='$cpp_stuff'
14515 cppccsymbols='$cppccsymbols'
14516 cppflags='$cppflags'
14517 cpplast='$cpplast'
14518 cppminus='$cppminus'
14519 cpprun='$cpprun'
14520 cppstdin='$cppstdin'
14521 cppsymbols='$cppsymbols'
14522 crosscompile='$crosscompile'
14523 cryptlib='$cryptlib'
14524 csh='$csh'
14525 d_Gconvert='$d_Gconvert'
14526 d_PRIEldbl='$d_PRIEldbl'
14527 d_PRIFldbl='$d_PRIFldbl'
14528 d_PRIGldbl='$d_PRIGldbl'
14529 d_PRIX64='$d_PRIX64'
14530 d_PRId64='$d_PRId64'
14531 d_PRIeldbl='$d_PRIeldbl'
14532 d_PRIfldbl='$d_PRIfldbl'
14533 d_PRIgldbl='$d_PRIgldbl'
14534 d_PRIi64='$d_PRIi64'
14535 d_PRIo64='$d_PRIo64'
14536 d_PRIu64='$d_PRIu64'
14537 d_PRIx64='$d_PRIx64'
14538 d_access='$d_access'
14539 d_accessx='$d_accessx'
14540 d_alarm='$d_alarm'
14541 d_archlib='$d_archlib'
14542 d_atolf='$d_atolf'
14543 d_atoll='$d_atoll'
14544 d_attribut='$d_attribut'
14545 d_bcmp='$d_bcmp'
14546 d_bcopy='$d_bcopy'
14547 d_bincompat5005='$d_bincompat5005'
14548 d_bsd='$d_bsd'
14549 d_bsdgetpgrp='$d_bsdgetpgrp'
14550 d_bsdsetpgrp='$d_bsdsetpgrp'
14551 d_bzero='$d_bzero'
14552 d_casti32='$d_casti32'
14553 d_castneg='$d_castneg'
14554 d_charvspr='$d_charvspr'
14555 d_chown='$d_chown'
14556 d_chroot='$d_chroot'
14557 d_chsize='$d_chsize'
14558 d_closedir='$d_closedir'
14559 d_const='$d_const'
14560 d_crypt='$d_crypt'
14561 d_csh='$d_csh'
14562 d_cuserid='$d_cuserid'
14563 d_dbl_dig='$d_dbl_dig'
14564 d_difftime='$d_difftime'
14565 d_dirnamlen='$d_dirnamlen'
14566 d_dlerror='$d_dlerror'
14567 d_dlopen='$d_dlopen'
14568 d_dlsymun='$d_dlsymun'
14569 d_dosuid='$d_dosuid'
14570 d_drand48proto='$d_drand48proto'
14571 d_dup2='$d_dup2'
14572 d_eaccess='$d_eaccess'
14573 d_endgrent='$d_endgrent'
14574 d_endhent='$d_endhent'
14575 d_endnent='$d_endnent'
14576 d_endpent='$d_endpent'
14577 d_endpwent='$d_endpwent'
14578 d_endsent='$d_endsent'
14579 d_endspent='$d_endspent'
14580 d_eofnblk='$d_eofnblk'
14581 d_eunice='$d_eunice'
14582 d_fchmod='$d_fchmod'
14583 d_fchown='$d_fchown'
14584 d_fcntl='$d_fcntl'
14585 d_fd_macros='$d_fd_macros'
14586 d_fd_set='$d_fd_set'
14587 d_fds_bits='$d_fds_bits'
14588 d_fgetpos='$d_fgetpos'
14589 d_flexfnam='$d_flexfnam'
14590 d_flock='$d_flock'
14591 d_fork='$d_fork'
14592 d_fpathconf='$d_fpathconf'
14593 d_fpos64_t='$d_fpos64_t'
14594 d_fs_data_s='$d_fs_data_s'
14595 d_fseeko='$d_fseeko'
14596 d_fsetpos='$d_fsetpos'
14597 d_fstatfs='$d_fstatfs'
14598 d_fstatvfs='$d_fstatvfs'
14599 d_ftello='$d_ftello'
14600 d_ftime='$d_ftime'
14601 d_getcwd='$d_getcwd'
14602 d_getgrent='$d_getgrent'
14603 d_getgrps='$d_getgrps'
14604 d_gethbyaddr='$d_gethbyaddr'
14605 d_gethbyname='$d_gethbyname'
14606 d_gethent='$d_gethent'
14607 d_gethname='$d_gethname'
14608 d_gethostprotos='$d_gethostprotos'
14609 d_getlogin='$d_getlogin'
14610 d_getmnt='$d_getmnt'
14611 d_getmntent='$d_getmntent'
14612 d_getnbyaddr='$d_getnbyaddr'
14613 d_getnbyname='$d_getnbyname'
14614 d_getnent='$d_getnent'
14615 d_getnetprotos='$d_getnetprotos'
14616 d_getpbyname='$d_getpbyname'
14617 d_getpbynumber='$d_getpbynumber'
14618 d_getpent='$d_getpent'
14619 d_getpgid='$d_getpgid'
14620 d_getpgrp2='$d_getpgrp2'
14621 d_getpgrp='$d_getpgrp'
14622 d_getppid='$d_getppid'
14623 d_getprior='$d_getprior'
14624 d_getprotoprotos='$d_getprotoprotos'
14625 d_getpwent='$d_getpwent'
14626 d_getsbyname='$d_getsbyname'
14627 d_getsbyport='$d_getsbyport'
14628 d_getsent='$d_getsent'
14629 d_getservprotos='$d_getservprotos'
14630 d_getspent='$d_getspent'
14631 d_getspnam='$d_getspnam'
14632 d_gettimeod='$d_gettimeod'
14633 d_gnulibc='$d_gnulibc'
14634 d_grpasswd='$d_grpasswd'
14635 d_hasmntopt='$d_hasmntopt'
14636 d_htonl='$d_htonl'
14637 d_iconv='$d_iconv'
14638 d_index='$d_index'
14639 d_inetaton='$d_inetaton'
14640 d_int64t='$d_int64t'
14641 d_isascii='$d_isascii'
14642 d_killpg='$d_killpg'
14643 d_lchown='$d_lchown'
14644 d_ldbl_dig='$d_ldbl_dig'
14645 d_link='$d_link'
14646 d_locconv='$d_locconv'
14647 d_lockf='$d_lockf'
14648 d_longdbl='$d_longdbl'
14649 d_longlong='$d_longlong'
14650 d_lstat='$d_lstat'
14651 d_mblen='$d_mblen'
14652 d_mbstowcs='$d_mbstowcs'
14653 d_mbtowc='$d_mbtowc'
14654 d_memchr='$d_memchr'
14655 d_memcmp='$d_memcmp'
14656 d_memcpy='$d_memcpy'
14657 d_memmove='$d_memmove'
14658 d_memset='$d_memset'
14659 d_mkdir='$d_mkdir'
14660 d_mkdtemp='$d_mkdtemp'
14661 d_mkfifo='$d_mkfifo'
14662 d_mkstemp='$d_mkstemp'
14663 d_mkstemps='$d_mkstemps'
14664 d_mktime='$d_mktime'
14665 d_mmap='$d_mmap'
14666 d_mprotect='$d_mprotect'
14667 d_msg='$d_msg'
14668 d_msg_ctrunc='$d_msg_ctrunc'
14669 d_msg_dontroute='$d_msg_dontroute'
14670 d_msg_oob='$d_msg_oob'
14671 d_msg_peek='$d_msg_peek'
14672 d_msg_proxy='$d_msg_proxy'
14673 d_msgctl='$d_msgctl'
14674 d_msgget='$d_msgget'
14675 d_msgrcv='$d_msgrcv'
14676 d_msgsnd='$d_msgsnd'
14677 d_msync='$d_msync'
14678 d_munmap='$d_munmap'
14679 d_mymalloc='$d_mymalloc'
14680 d_nice='$d_nice'
14681 d_nv_preserves_uv='$d_nv_preserves_uv'
14682 d_off64_t='$d_off64_t'
14683 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14684 d_oldpthreads='$d_oldpthreads'
14685 d_oldsock='$d_oldsock'
14686 d_open3='$d_open3'
14687 d_pathconf='$d_pathconf'
14688 d_pause='$d_pause'
14689 d_phostname='$d_phostname'
14690 d_pipe='$d_pipe'
14691 d_poll='$d_poll'
14692 d_portable='$d_portable'
14693 d_pthread_yield='$d_pthread_yield'
14694 d_pwage='$d_pwage'
14695 d_pwchange='$d_pwchange'
14696 d_pwclass='$d_pwclass'
14697 d_pwcomment='$d_pwcomment'
14698 d_pwexpire='$d_pwexpire'
14699 d_pwgecos='$d_pwgecos'
14700 d_pwpasswd='$d_pwpasswd'
14701 d_pwquota='$d_pwquota'
14702 d_quad='$d_quad'
14703 d_readdir='$d_readdir'
14704 d_readlink='$d_readlink'
14705 d_rename='$d_rename'
14706 d_rewinddir='$d_rewinddir'
14707 d_rmdir='$d_rmdir'
14708 d_safebcpy='$d_safebcpy'
14709 d_safemcpy='$d_safemcpy'
14710 d_sanemcmp='$d_sanemcmp'
14711 d_sched_yield='$d_sched_yield'
14712 d_scm_rights='$d_scm_rights'
14713 d_seekdir='$d_seekdir'
14714 d_select='$d_select'
14715 d_sem='$d_sem'
14716 d_semctl='$d_semctl'
14717 d_semctl_semid_ds='$d_semctl_semid_ds'
14718 d_semctl_semun='$d_semctl_semun'
14719 d_semget='$d_semget'
14720 d_semop='$d_semop'
14721 d_setegid='$d_setegid'
14722 d_seteuid='$d_seteuid'
14723 d_setgrent='$d_setgrent'
14724 d_setgrps='$d_setgrps'
14725 d_sethent='$d_sethent'
14726 d_setlinebuf='$d_setlinebuf'
14727 d_setlocale='$d_setlocale'
14728 d_setnent='$d_setnent'
14729 d_setpent='$d_setpent'
14730 d_setpgid='$d_setpgid'
14731 d_setpgrp2='$d_setpgrp2'
14732 d_setpgrp='$d_setpgrp'
14733 d_setprior='$d_setprior'
14734 d_setpwent='$d_setpwent'
14735 d_setregid='$d_setregid'
14736 d_setresgid='$d_setresgid'
14737 d_setresuid='$d_setresuid'
14738 d_setreuid='$d_setreuid'
14739 d_setrgid='$d_setrgid'
14740 d_setruid='$d_setruid'
14741 d_setsent='$d_setsent'
14742 d_setsid='$d_setsid'
14743 d_setspent='$d_setspent'
14744 d_setvbuf='$d_setvbuf'
14745 d_sfio='$d_sfio'
14746 d_shm='$d_shm'
14747 d_shmat='$d_shmat'
14748 d_shmatprototype='$d_shmatprototype'
14749 d_shmctl='$d_shmctl'
14750 d_shmdt='$d_shmdt'
14751 d_shmget='$d_shmget'
14752 d_sigaction='$d_sigaction'
14753 d_sigsetjmp='$d_sigsetjmp'
14754 d_socket='$d_socket'
14755 d_sockpair='$d_sockpair'
14756 d_sqrtl='$d_sqrtl'
14757 d_statblks='$d_statblks'
14758 d_statfs_f_flags='$d_statfs_f_flags'
14759 d_statfs_s='$d_statfs_s'
14760 d_statvfs='$d_statvfs'
14761 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14762 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14763 d_stdio_stream_array='$d_stdio_stream_array'
14764 d_stdiobase='$d_stdiobase'
14765 d_stdstdio='$d_stdstdio'
14766 d_strchr='$d_strchr'
14767 d_strcoll='$d_strcoll'
14768 d_strctcpy='$d_strctcpy'
14769 d_strerrm='$d_strerrm'
14770 d_strerror='$d_strerror'
14771 d_strtod='$d_strtod'
14772 d_strtol='$d_strtol'
14773 d_strtold='$d_strtold'
14774 d_strtoll='$d_strtoll'
14775 d_strtoul='$d_strtoul'
14776 d_strtoull='$d_strtoull'
14777 d_strtouq='$d_strtouq'
14778 d_strxfrm='$d_strxfrm'
14779 d_suidsafe='$d_suidsafe'
14780 d_symlink='$d_symlink'
14781 d_syscall='$d_syscall'
14782 d_sysconf='$d_sysconf'
14783 d_sysernlst='$d_sysernlst'
14784 d_syserrlst='$d_syserrlst'
14785 d_system='$d_system'
14786 d_tcgetpgrp='$d_tcgetpgrp'
14787 d_tcsetpgrp='$d_tcsetpgrp'
14788 d_telldir='$d_telldir'
14789 d_telldirproto='$d_telldirproto'
14790 d_time='$d_time'
14791 d_times='$d_times'
14792 d_truncate='$d_truncate'
14793 d_tzname='$d_tzname'
14794 d_umask='$d_umask'
14795 d_uname='$d_uname'
14796 d_union_semun='$d_union_semun'
14797 d_ustat='$d_ustat'
14798 d_vendorbin='$d_vendorbin'
14799 d_vendorlib='$d_vendorlib'
14800 d_vfork='$d_vfork'
14801 d_void_closedir='$d_void_closedir'
14802 d_voidsig='$d_voidsig'
14803 d_voidtty='$d_voidtty'
14804 d_volatile='$d_volatile'
14805 d_vprintf='$d_vprintf'
14806 d_wait4='$d_wait4'
14807 d_waitpid='$d_waitpid'
14808 d_wcstombs='$d_wcstombs'
14809 d_wctomb='$d_wctomb'
14810 d_xenix='$d_xenix'
14811 date='$date'
14812 db_hashtype='$db_hashtype'
14813 db_prefixtype='$db_prefixtype'
14814 defvoidused='$defvoidused'
14815 direntrytype='$direntrytype'
14816 dlext='$dlext'
14817 dlsrc='$dlsrc'
14818 doublesize='$doublesize'
14819 drand01='$drand01'
14820 dynamic_ext='$dynamic_ext'
14821 eagain='$eagain'
14822 ebcdic='$ebcdic'
14823 echo='$echo'
14824 egrep='$egrep'
14825 emacs='$emacs'
14826 eunicefix='$eunicefix'
14827 exe_ext='$exe_ext'
14828 expr='$expr'
14829 extensions='$extensions'
14830 fflushNULL='$fflushNULL'
14831 fflushall='$fflushall'
14832 find='$find'
14833 firstmakefile='$firstmakefile'
14834 flex='$flex'
14835 fpossize='$fpossize'
14836 fpostype='$fpostype'
14837 freetype='$freetype'
14838 full_ar='$full_ar'
14839 full_csh='$full_csh'
14840 full_sed='$full_sed'
14841 gccversion='$gccversion'
14842 gidformat='$gidformat'
14843 gidsign='$gidsign'
14844 gidsize='$gidsize'
14845 gidtype='$gidtype'
14846 glibpth='$glibpth'
14847 grep='$grep'
14848 groupcat='$groupcat'
14849 groupstype='$groupstype'
14850 gzip='$gzip'
14851 h_fcntl='$h_fcntl'
14852 h_sysfile='$h_sysfile'
14853 hint='$hint'
14854 hostcat='$hostcat'
14855 huge='$huge'
14856 i16size='$i16size'
14857 i16type='$i16type'
14858 i32size='$i32size'
14859 i32type='$i32type'
14860 i64size='$i64size'
14861 i64type='$i64type'
14862 i8size='$i8size'
14863 i8type='$i8type'
14864 i_arpainet='$i_arpainet'
14865 i_bsdioctl='$i_bsdioctl'
14866 i_db='$i_db'
14867 i_dbm='$i_dbm'
14868 i_dirent='$i_dirent'
14869 i_dld='$i_dld'
14870 i_dlfcn='$i_dlfcn'
14871 i_fcntl='$i_fcntl'
14872 i_float='$i_float'
14873 i_gdbm='$i_gdbm'
14874 i_grp='$i_grp'
14875 i_iconv='$i_iconv'
14876 i_inttypes='$i_inttypes'
14877 i_limits='$i_limits'
14878 i_locale='$i_locale'
14879 i_machcthr='$i_machcthr'
14880 i_malloc='$i_malloc'
14881 i_math='$i_math'
14882 i_memory='$i_memory'
14883 i_mntent='$i_mntent'
14884 i_ndbm='$i_ndbm'
14885 i_netdb='$i_netdb'
14886 i_neterrno='$i_neterrno'
14887 i_netinettcp='$i_netinettcp'
14888 i_niin='$i_niin'
14889 i_poll='$i_poll'
14890 i_pthread='$i_pthread'
14891 i_pwd='$i_pwd'
14892 i_rpcsvcdbm='$i_rpcsvcdbm'
14893 i_sfio='$i_sfio'
14894 i_sgtty='$i_sgtty'
14895 i_shadow='$i_shadow'
14896 i_socks='$i_socks'
14897 i_stdarg='$i_stdarg'
14898 i_stddef='$i_stddef'
14899 i_stdlib='$i_stdlib'
14900 i_string='$i_string'
14901 i_sysaccess='$i_sysaccess'
14902 i_sysdir='$i_sysdir'
14903 i_sysfile='$i_sysfile'
14904 i_sysfilio='$i_sysfilio'
14905 i_sysin='$i_sysin'
14906 i_sysioctl='$i_sysioctl'
14907 i_syslog='$i_syslog'
14908 i_sysmman='$i_sysmman'
14909 i_sysmount='$i_sysmount'
14910 i_sysndir='$i_sysndir'
14911 i_sysparam='$i_sysparam'
14912 i_sysresrc='$i_sysresrc'
14913 i_syssecrt='$i_syssecrt'
14914 i_sysselct='$i_sysselct'
14915 i_syssockio='$i_syssockio'
14916 i_sysstat='$i_sysstat'
14917 i_sysstatfs='$i_sysstatfs'
14918 i_sysstatvfs='$i_sysstatvfs'
14919 i_systime='$i_systime'
14920 i_systimek='$i_systimek'
14921 i_systimes='$i_systimes'
14922 i_systypes='$i_systypes'
14923 i_sysuio='$i_sysuio'
14924 i_sysun='$i_sysun'
14925 i_sysvfs='$i_sysvfs'
14926 i_syswait='$i_syswait'
14927 i_termio='$i_termio'
14928 i_termios='$i_termios'
14929 i_time='$i_time'
14930 i_unistd='$i_unistd'
14931 i_ustat='$i_ustat'
14932 i_utime='$i_utime'
14933 i_values='$i_values'
14934 i_varargs='$i_varargs'
14935 i_varhdr='$i_varhdr'
14936 i_vfork='$i_vfork'
14937 ignore_versioned_solibs='$ignore_versioned_solibs'
14938 inc_version_list='$inc_version_list'
14939 inc_version_list_init='$inc_version_list_init'
14940 incpath='$incpath'
14941 inews='$inews'
14942 installarchlib='$installarchlib'
14943 installbin='$installbin'
14944 installman1dir='$installman1dir'
14945 installman3dir='$installman3dir'
14946 installprefix='$installprefix'
14947 installprefixexp='$installprefixexp'
14948 installprivlib='$installprivlib'
14949 installscript='$installscript'
14950 installsitearch='$installsitearch'
14951 installsitebin='$installsitebin'
14952 installsitelib='$installsitelib'
14953 installstyle='$installstyle'
14954 installusrbinperl='$installusrbinperl'
14955 installvendorbin='$installvendorbin'
14956 installvendorlib='$installvendorlib'
14957 intsize='$intsize'
14958 ivdformat='$ivdformat'
14959 ivsize='$ivsize'
14960 ivtype='$ivtype'
14961 known_extensions='$known_extensions'
14962 ksh='$ksh'
14963 large='$large'
14964 ld='$ld'
14965 lddlflags='$lddlflags'
14966 ldflags='$ldflags'
14967 ldlibpthname='$ldlibpthname'
14968 less='$less'
14969 lib_ext='$lib_ext'
14970 libc='$libc'
14971 libperl='$libperl'
14972 libpth='$libpth'
14973 libs='$libs'
14974 libsdirs='$libsdirs'
14975 libsfiles='$libsfiles'
14976 libsfound='$libsfound'
14977 libswanted='$libswanted'
14978 line='$line'
14979 lint='$lint'
14980 lkflags='$lkflags'
14981 ln='$ln'
14982 lns='$lns'
14983 locincpth='$locincpth'
14984 loclibpth='$loclibpth'
14985 longdblsize='$longdblsize'
14986 longlongsize='$longlongsize'
14987 longsize='$longsize'
14988 lp='$lp'
14989 lpr='$lpr'
14990 ls='$ls'
14991 lseeksize='$lseeksize'
14992 lseektype='$lseektype'
14993 mail='$mail'
14994 mailx='$mailx'
14995 make='$make'
14996 make_set_make='$make_set_make'
14997 mallocobj='$mallocobj'
14998 mallocsrc='$mallocsrc'
14999 malloctype='$malloctype'
15000 man1dir='$man1dir'
15001 man1direxp='$man1direxp'
15002 man1ext='$man1ext'
15003 man3dir='$man3dir'
15004 man3direxp='$man3direxp'
15005 man3ext='$man3ext'
15006 medium='$medium'
15007 mips_type='$mips_type'
15008 mkdir='$mkdir'
15009 mmaptype='$mmaptype'
15010 models='$models'
15011 modetype='$modetype'
15012 more='$more'
15013 multiarch='$multiarch'
15014 mv='$mv'
15015 myarchname='$myarchname'
15016 mydomain='$mydomain'
15017 myhostname='$myhostname'
15018 myuname='$myuname'
15019 n='$n'
15020 netdb_hlen_type='$netdb_hlen_type'
15021 netdb_host_type='$netdb_host_type'
15022 netdb_name_type='$netdb_name_type'
15023 netdb_net_type='$netdb_net_type'
15024 nm='$nm'
15025 nm_opt='$nm_opt'
15026 nm_so_opt='$nm_so_opt'
15027 nonxs_ext='$nonxs_ext'
15028 nroff='$nroff'
15029 nvsize='$nvsize'
15030 nvtype='$nvtype'
15031 o_nonblock='$o_nonblock'
15032 obj_ext='$obj_ext'
15033 old_pthread_create_joinable='$old_pthread_create_joinable'
15034 optimize='$optimize'
15035 orderlib='$orderlib'
15036 osname='$osname'
15037 osvers='$osvers'
15038 package='$package'
15039 pager='$pager'
15040 passcat='$passcat'
15041 patchlevel='$patchlevel'
15042 path_sep='$path_sep'
15043 perl='$perl'
15044 perladmin='$perladmin'
15045 perlpath='$perlpath'
15046 pg='$pg'
15047 phostname='$phostname'
15048 pidtype='$pidtype'
15049 plibpth='$plibpth'
15050 pm_apiversion='$pm_apiversion'
15051 pmake='$pmake'
15052 pr='$pr'
15053 prefix='$prefix'
15054 prefixexp='$prefixexp'
15055 privlib='$privlib'
15056 privlibexp='$privlibexp'
15057 prototype='$prototype'
15058 ptrsize='$ptrsize'
15059 quadkind='$quadkind'
15060 quadtype='$quadtype'
15061 randbits='$randbits'
15062 randfunc='$randfunc'
15063 randseedtype='$randseedtype'
15064 ranlib='$ranlib'
15065 rd_nodata='$rd_nodata'
15066 rm='$rm'
15067 rmail='$rmail'
15068 runnm='$runnm'
15069 sPRIEldbl='$sPRIEldbl'
15070 sPRIFldbl='$sPRIFldbl'
15071 sPRIGldbl='$sPRIGldbl'
15072 sPRIX64='$sPRIX64'
15073 sPRId64='$sPRId64'
15074 sPRIeldbl='$sPRIeldbl'
15075 sPRIfldbl='$sPRIfldbl'
15076 sPRIgldbl='$sPRIgldbl'
15077 sPRIi64='$sPRIi64'
15078 sPRIo64='$sPRIo64'
15079 sPRIu64='$sPRIu64'
15080 sPRIx64='$sPRIx64'
15081 sched_yield='$sched_yield'
15082 scriptdir='$scriptdir'
15083 scriptdirexp='$scriptdirexp'
15084 sed='$sed'
15085 seedfunc='$seedfunc'
15086 selectminbits='$selectminbits'
15087 selecttype='$selecttype'
15088 sendmail='$sendmail'
15089 sh='$sh'
15090 shar='$shar'
15091 sharpbang='$sharpbang'
15092 shmattype='$shmattype'
15093 shortsize='$shortsize'
15094 shrpenv='$shrpenv'
15095 shsharp='$shsharp'
15096 sig_count='$sig_count'
15097 sig_name='$sig_name'
15098 sig_name_init='$sig_name_init'
15099 sig_num='$sig_num'
15100 sig_num_init='$sig_num_init'
15101 signal_t='$signal_t'
15102 sitearch='$sitearch'
15103 sitearchexp='$sitearchexp'
15104 sitebin='$sitebin'
15105 sitebinexp='$sitebinexp'
15106 sitelib='$sitelib'
15107 sitelibexp='$sitelibexp'
15108 siteprefix='$siteprefix'
15109 siteprefixexp='$siteprefixexp'
15110 sizetype='$sizetype'
15111 sleep='$sleep'
15112 smail='$smail'
15113 small='$small'
15114 so='$so'
15115 sockethdr='$sockethdr'
15116 socketlib='$socketlib'
15117 sort='$sort'
15118 spackage='$spackage'
15119 spitshell='$spitshell'
15120 split='$split'
15121 src='$src'
15122 ssizetype='$ssizetype'
15123 startperl='$startperl'
15124 startsh='$startsh'
15125 static_ext='$static_ext'
15126 stdchar='$stdchar'
15127 stdio_base='$stdio_base'
15128 stdio_bufsiz='$stdio_bufsiz'
15129 stdio_cnt='$stdio_cnt'
15130 stdio_filbuf='$stdio_filbuf'
15131 stdio_ptr='$stdio_ptr'
15132 stdio_stream_array='$stdio_stream_array'
15133 strings='$strings'
15134 submit='$submit'
15135 subversion='$subversion'
15136 sysman='$sysman'
15137 tail='$tail'
15138 tar='$tar'
15139 tbl='$tbl'
15140 tee='$tee'
15141 test='$test'
15142 timeincl='$timeincl'
15143 timetype='$timetype'
15144 touch='$touch'
15145 tr='$tr'
15146 trnl='$trnl'
15147 troff='$troff'
15148 u16size='$u16size'
15149 u16type='$u16type'
15150 u32size='$u32size'
15151 u32type='$u32type'
15152 u64size='$u64size'
15153 u64type='$u64type'
15154 u8size='$u8size'
15155 u8type='$u8type'
15156 uidformat='$uidformat'
15157 uidsign='$uidsign'
15158 uidsize='$uidsize'
15159 uidtype='$uidtype'
15160 uname='$uname'
15161 uniq='$uniq'
15162 uquadtype='$uquadtype'
15163 use5005threads='$use5005threads'
15164 use64bits='$use64bits'
15165 usedl='$usedl'
15166 useithreads='$useithreads'
15167 uselargefiles='$uselargefiles'
15168 uselongdouble='$uselongdouble'
15169 usemorebits='$usemorebits'
15170 usemultiplicity='$usemultiplicity'
15171 usemymalloc='$usemymalloc'
15172 usenm='$usenm'
15173 useopcode='$useopcode'
15174 useperlio='$useperlio'
15175 useposix='$useposix'
15176 usesfio='$usesfio'
15177 useshrplib='$useshrplib'
15178 usesocks='$usesocks'
15179 usethreads='$usethreads'
15180 usevendorprefix='$usevendorprefix'
15181 usevfork='$usevfork'
15182 usrinc='$usrinc'
15183 uuname='$uuname'
15184 uvoformat='$uvoformat'
15185 uvsize='$uvsize'
15186 uvtype='$uvtype'
15187 uvuformat='$uvuformat'
15188 uvxformat='$uvxformat'
15189 vendorbin='$vendorbin'
15190 vendorbinexp='$vendorbinexp'
15191 vendorlib='$vendorlib'
15192 vendorlibexp='$vendorlibexp'
15193 vendorprefix='$vendorprefix'
15194 vendorprefixexp='$vendorprefixexp'
15195 version='$version'
15196 vi='$vi'
15197 voidflags='$voidflags'
15198 xlibpth='$xlibpth'
15199 xs_apiversion='$xs_apiversion'
15200 zcat='$zcat'
15201 zip='$zip'
15202 EOT
15203
15204 : Add in command line options if available
15205 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15206
15207 : add special variables
15208 $test -f $src/patchlevel.h && \
15209 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15210 echo "CONFIGDOTSH=true" >>config.sh
15211
15212 : propagate old symbols
15213 if $test -f UU/config.sh; then
15214         <UU/config.sh sort | uniq >UU/oldconfig.sh
15215         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15216         sort | uniq -u >UU/oldsyms
15217         set X `cat UU/oldsyms`
15218         shift
15219         case $# in
15220         0) ;;
15221         *)
15222                 cat <<EOM
15223 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15224 EOM
15225                 echo "# Variables propagated from previous config.sh file." >>config.sh
15226                 for sym in `cat UU/oldsyms`; do
15227                         echo "    Propagating $hint variable "'$'"$sym..."
15228                         eval 'tmp="$'"${sym}"'"'
15229                         echo "$tmp" | \
15230                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15231                 done
15232                 ;;
15233         esac
15234 fi
15235
15236 : Finish up by extracting the .SH files
15237 case "$alldone" in
15238 exit)
15239         $rm -rf UU
15240         echo "Done."
15241         exit 0
15242         ;;
15243 cont)
15244         ;;
15245 '')
15246         dflt=''
15247         nostick=true
15248         $cat <<EOM
15249
15250 If you'd like to make any changes to the config.sh file before I begin
15251 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15252
15253 EOM
15254         rp="Press return or use a shell escape to edit config.sh:"
15255         . UU/myread
15256         nostick=''
15257         case "$ans" in
15258         '') ;;
15259         *) : in case they cannot read
15260                 sh 1>&4 -c "$ans";;
15261         esac
15262         ;;
15263 esac
15264
15265 : if this fails, just run all the .SH files by hand
15266 . ./config.sh
15267
15268 echo " "
15269 exec 1>&4
15270 . ./UU/extract
15271
15272 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15273         dflt=y
15274         case "$silent" in
15275         true) ;;
15276         *)
15277                 $cat <<EOM
15278
15279 Now you need to generate make dependencies by running "$make depend".
15280 You might prefer to run it in background: "$make depend > makedepend.out &"
15281 It can take a while, so you might not want to run it right now.
15282
15283 EOM
15284                 ;;
15285         esac
15286         rp="Run $make depend now?"
15287         . UU/myread
15288         case "$ans" in
15289         y*)
15290                 $make depend && echo "Now you must run a $make."
15291                 ;;
15292         *)
15293                 echo "You must run '$make depend' then '$make'."
15294                 ;;
15295         esac
15296 elif test -f [Mm]akefile; then
15297         echo " "
15298         echo "Now you must run a $make."
15299 else
15300         echo "Done."
15301 fi
15302
15303 if $test -f Policy.sh; then
15304     $cat <<EOM
15305
15306 If you compile $package on a different machine or from a different object
15307 directory, copy the Policy.sh file from this object directory to the
15308 new one before you run Configure -- this will help you with most of
15309 the policy defaults.
15310
15311 EOM
15312 fi
15313 if $test -f config.msg; then
15314     echo "Hmm.  I also noted the following information while running:"
15315     echo " "
15316     $cat config.msg >&4
15317     $rm -f config.msg
15318 fi
15319 $rm -f kit*isdone ark*isdone
15320 $rm -rf UU
15321
15322 : End of Configure
15323