Make the user to give up his firstborn, err, to knowingly
[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 Tue Aug 15 05:57:14 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 ccflags=''
292 cppflags=''
293 ldflags=''
294 lkflags=''
295 locincpth=''
296 optimize=''
297 cf_email=''
298 cf_by=''
299 cf_time=''
300 charsize=''
301 contains=''
302 cpp_stuff=''
303 cpplast=''
304 cppminus=''
305 cpprun=''
306 cppstdin=''
307 crosscompile=''
308 d_access=''
309 d_accessx=''
310 d_alarm=''
311 d_attribut=''
312 d_bcmp=''
313 d_bcopy=''
314 d_bzero=''
315 d_casti32=''
316 castflags=''
317 d_castneg=''
318 d_chown=''
319 d_chroot=''
320 d_chsize=''
321 d_closedir=''
322 d_void_closedir=''
323 d_const=''
324 cryptlib=''
325 d_crypt=''
326 d_csh=''
327 full_csh=''
328 d_cuserid=''
329 d_dbl_dig=''
330 d_difftime=''
331 d_dlerror=''
332 d_dlopen=''
333 d_dlsymun=''
334 d_dosuid=''
335 d_suidsafe=''
336 d_drand48proto=''
337 d_dup2=''
338 d_eaccess=''
339 d_endgrent=''
340 d_endhent=''
341 d_endnent=''
342 d_endpent=''
343 d_endpwent=''
344 d_endsent=''
345 d_fchmod=''
346 d_fchown=''
347 d_fcntl=''
348 d_fd_macros=''
349 d_fd_set=''
350 d_fds_bits=''
351 d_fgetpos=''
352 d_flexfnam=''
353 d_flock=''
354 d_fork=''
355 d_fpos64_t=''
356 d_frexpl=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getcwd=''
366 d_getespwnam=''
367 d_getfsstat=''
368 d_getgrent=''
369 d_getgrps=''
370 d_gethbyaddr=''
371 d_gethbyname=''
372 d_gethent=''
373 aphostname=''
374 d_gethname=''
375 d_phostname=''
376 d_uname=''
377 d_gethostprotos=''
378 d_getlogin=''
379 d_getmnt=''
380 d_getmntent=''
381 d_getnbyaddr=''
382 d_getnbyname=''
383 d_getnent=''
384 d_getnetprotos=''
385 d_getpent=''
386 d_getpgid=''
387 d_getpgrp2=''
388 d_bsdgetpgrp=''
389 d_getpgrp=''
390 d_getppid=''
391 d_getprior=''
392 d_getpbyname=''
393 d_getpbynumber=''
394 d_getprotoprotos=''
395 d_getprpwnam=''
396 d_getpwent=''
397 d_getsent=''
398 d_getservprotos=''
399 d_getspnam=''
400 d_getsbyname=''
401 d_getsbyport=''
402 d_gnulibc=''
403 d_hasmntopt=''
404 d_htonl=''
405 d_iconv=''
406 d_inetaton=''
407 d_int64_t=''
408 d_isascii=''
409 d_isnan=''
410 d_isnanl=''
411 d_killpg=''
412 d_lchown=''
413 d_ldbl_dig=''
414 d_link=''
415 d_locconv=''
416 d_lockf=''
417 d_longdbl=''
418 longdblsize=''
419 d_longlong=''
420 longlongsize=''
421 d_lseekproto=''
422 d_lstat=''
423 d_madvise=''
424 d_mblen=''
425 d_mbstowcs=''
426 d_mbtowc=''
427 d_memchr=''
428 d_memcmp=''
429 d_memcpy=''
430 d_memmove=''
431 d_memset=''
432 d_mkdir=''
433 d_mkdtemp=''
434 d_mkfifo=''
435 d_mkstemp=''
436 d_mkstemps=''
437 d_mktime=''
438 d_mmap=''
439 mmaptype=''
440 d_modfl=''
441 d_mprotect=''
442 d_msg=''
443 d_msgctl=''
444 d_msgget=''
445 d_msgrcv=''
446 d_msgsnd=''
447 d_msync=''
448 d_munmap=''
449 d_nice=''
450 d_off64_t=''
451 d_open3=''
452 d_fpathconf=''
453 d_pathconf=''
454 d_pause=''
455 d_pipe=''
456 d_poll=''
457 d_portable=''
458 d_old_pthread_create_joinable=''
459 old_pthread_create_joinable=''
460 d_pthread_yield=''
461 d_sched_yield=''
462 sched_yield=''
463 d_qgcvt=''
464 d_readdir=''
465 d_rewinddir=''
466 d_seekdir=''
467 d_telldir=''
468 d_readlink=''
469 d_rename=''
470 d_rmdir=''
471 d_safebcpy=''
472 d_safemcpy=''
473 d_sanemcmp=''
474 d_select=''
475 d_sem=''
476 d_semctl=''
477 d_semget=''
478 d_semop=''
479 d_setegid=''
480 d_seteuid=''
481 d_setgrent=''
482 d_setgrps=''
483 d_sethent=''
484 d_setlinebuf=''
485 d_setlocale=''
486 d_setnent=''
487 d_setpent=''
488 d_setpgid=''
489 d_setpgrp2=''
490 d_bsdsetpgrp=''
491 d_setpgrp=''
492 d_setprior=''
493 d_setproctitle=''
494 d_setpwent=''
495 d_setregid=''
496 d_setresgid=''
497 d_setresuid=''
498 d_setreuid=''
499 d_setrgid=''
500 d_setruid=''
501 d_setsent=''
502 d_setsid=''
503 d_setvbuf=''
504 d_sfio=''
505 usesfio=''
506 d_shm=''
507 d_shmat=''
508 d_shmatprototype=''
509 shmattype=''
510 d_shmctl=''
511 d_shmdt=''
512 d_shmget=''
513 d_sigaction=''
514 d_sigsetjmp=''
515 d_msg_ctrunc=''
516 d_msg_dontroute=''
517 d_msg_oob=''
518 d_msg_peek=''
519 d_msg_proxy=''
520 d_oldsock=''
521 d_scm_rights=''
522 d_socket=''
523 d_sockpair=''
524 sockethdr=''
525 socketlib=''
526 d_socklen_t=''
527 d_sqrtl=''
528 d_statblks=''
529 d_statfs_f_flags=''
530 d_statfs_s=''
531 d_fstatvfs=''
532 d_statvfs=''
533 d_stdio_cnt_lval=''
534 d_stdio_ptr_lval=''
535 d_stdiobase=''
536 d_stdstdio=''
537 stdio_base=''
538 stdio_bufsiz=''
539 stdio_cnt=''
540 stdio_filbuf=''
541 stdio_ptr=''
542 d_index=''
543 d_strchr=''
544 d_strcoll=''
545 d_strctcpy=''
546 d_strerrm=''
547 d_strerror=''
548 d_sysernlst=''
549 d_syserrlst=''
550 d_strtod=''
551 d_strtol=''
552 d_strtold=''
553 d_strtoll=''
554 d_strtoul=''
555 d_strtoull=''
556 d_strtouq=''
557 d_strxfrm=''
558 d_symlink=''
559 d_syscall=''
560 d_sysconf=''
561 d_system=''
562 d_tcgetpgrp=''
563 d_tcsetpgrp=''
564 d_telldirproto=''
565 d_time=''
566 timetype=''
567 clocktype=''
568 d_times=''
569 d_truncate=''
570 d_tzname=''
571 d_umask=''
572 d_semctl_semid_ds=''
573 d_semctl_semun=''
574 d_union_semun=''
575 d_ustat=''
576 d_vfork=''
577 usevfork=''
578 d_voidsig=''
579 signal_t=''
580 d_volatile=''
581 d_charvspr=''
582 d_vprintf=''
583 d_wait4=''
584 d_waitpid=''
585 d_wcstombs=''
586 d_wctomb=''
587 dlext=''
588 cccdlflags=''
589 ccdlflags=''
590 dlsrc=''
591 ld=''
592 lddlflags=''
593 usedl=''
594 doublesize=''
595 ebcdic=''
596 fflushNULL=''
597 fflushall=''
598 fpossize=''
599 fpostype=''
600 gccosandvers=''
601 gccversion=''
602 gidformat=''
603 gidsign=''
604 gidsize=''
605 gidtype=''
606 groupstype=''
607 h_fcntl=''
608 h_sysfile=''
609 i_arpainet=''
610 db_hashtype=''
611 db_prefixtype=''
612 i_db=''
613 i_dbm=''
614 i_rpcsvcdbm=''
615 d_dirnamlen=''
616 direntrytype=''
617 i_dirent=''
618 i_dld=''
619 i_dlfcn=''
620 i_fcntl=''
621 i_float=''
622 i_gdbm=''
623 d_grpasswd=''
624 i_grp=''
625 i_iconv=''
626 i_ieeefp=''
627 i_inttypes=''
628 i_libutil=''
629 i_limits=''
630 i_locale=''
631 i_machcthr=''
632 i_malloc=''
633 i_math=''
634 i_memory=''
635 i_mntent=''
636 i_ndbm=''
637 i_netdb=''
638 i_neterrno=''
639 i_netinettcp=''
640 i_niin=''
641 i_sysin=''
642 i_poll=''
643 i_prot=''
644 i_pthread=''
645 d_pwage=''
646 d_pwchange=''
647 d_pwclass=''
648 d_pwcomment=''
649 d_pwexpire=''
650 d_pwgecos=''
651 d_pwpasswd=''
652 d_pwquota=''
653 i_pwd=''
654 i_sfio=''
655 i_shadow=''
656 i_socks=''
657 i_stddef=''
658 i_stdlib=''
659 i_string=''
660 strings=''
661 i_sunmath=''
662 i_sysaccess=''
663 i_sysdir=''
664 i_sysfile=''
665 d_voidtty=''
666 i_bsdioctl=''
667 i_sysfilio=''
668 i_sysioctl=''
669 i_syssockio=''
670 i_syslog=''
671 i_sysmman=''
672 i_sysmode=''
673 i_sysmount=''
674 i_sysndir=''
675 i_sysparam=''
676 i_sysresrc=''
677 i_syssecrt=''
678 i_sysselct=''
679 i_sysstat=''
680 i_sysstatfs=''
681 i_sysstatvfs=''
682 i_systimes=''
683 i_systypes=''
684 i_sysuio=''
685 i_sysun=''
686 i_sysutsname=''
687 i_sysvfs=''
688 i_syswait=''
689 i_sgtty=''
690 i_termio=''
691 i_termios=''
692 i_systime=''
693 i_systimek=''
694 i_time=''
695 timeincl=''
696 i_unistd=''
697 i_ustat=''
698 i_utime=''
699 i_values=''
700 i_stdarg=''
701 i_varargs=''
702 i_varhdr=''
703 i_vfork=''
704 inc_version_list=''
705 inc_version_list_init=''
706 installprefix=''
707 installprefixexp=''
708 installstyle=''
709 installusrbinperl=''
710 intsize=''
711 longsize=''
712 shortsize=''
713 libc=''
714 ldlibpthname=''
715 libperl=''
716 shrpenv=''
717 useshrplib=''
718 glibpth=''
719 libpth=''
720 loclibpth=''
721 plibpth=''
722 xlibpth=''
723 ignore_versioned_solibs=''
724 libs=''
725 libsdirs=''
726 libsfiles=''
727 libsfound=''
728 libspath=''
729 lns=''
730 d_PRIEldbl=''
731 d_PRIFldbl=''
732 d_PRIGldbl=''
733 d_PRIeldbl=''
734 d_PRIfldbl=''
735 d_PRIgldbl=''
736 sPRIEldbl=''
737 sPRIFldbl=''
738 sPRIGldbl=''
739 sPRIeldbl=''
740 sPRIfldbl=''
741 sPRIgldbl=''
742 lseeksize=''
743 lseektype=''
744 make_set_make=''
745 d_mymalloc=''
746 freetype=''
747 mallocobj=''
748 mallocsrc=''
749 malloctype=''
750 usemymalloc=''
751 installman1dir=''
752 man1dir=''
753 man1direxp=''
754 man1ext=''
755 installman3dir=''
756 man3dir=''
757 man3direxp=''
758 man3ext=''
759 huge=''
760 large=''
761 medium=''
762 models=''
763 small=''
764 split=''
765 modetype=''
766 multiarch=''
767 mydomain=''
768 myhostname=''
769 phostname=''
770 c=''
771 n=''
772 d_eofnblk=''
773 eagain=''
774 o_nonblock=''
775 rd_nodata=''
776 netdb_hlen_type=''
777 netdb_host_type=''
778 netdb_name_type=''
779 netdb_net_type=''
780 groupcat=''
781 hostcat=''
782 passcat=''
783 orderlib=''
784 ranlib=''
785 d_perl_otherlibdirs=''
786 otherlibdirs=''
787 package=''
788 spackage=''
789 pager=''
790 api_revision=''
791 api_subversion=''
792 api_version=''
793 api_versionstring=''
794 patchlevel=''
795 revision=''
796 subversion=''
797 version=''
798 perl5=''
799 perladmin=''
800 perlpath=''
801 d_nv_preserves_uv=''
802 d_nv_preserves_uv_bits=''
803 i16size=''
804 i16type=''
805 i32size=''
806 i32type=''
807 i64size=''
808 i64type=''
809 i8size=''
810 i8type=''
811 ivsize=''
812 ivtype=''
813 nvsize=''
814 nvtype=''
815 u16size=''
816 u16type=''
817 u32size=''
818 u32type=''
819 u64size=''
820 u64type=''
821 u8size=''
822 u8type=''
823 uvsize=''
824 uvtype=''
825 ivdformat=''
826 uvoformat=''
827 uvuformat=''
828 uvxformat=''
829 pidtype=''
830 prefix=''
831 prefixexp=''
832 installprivlib=''
833 privlib=''
834 privlibexp=''
835 prototype=''
836 ptrsize=''
837 d_PRIX64=''
838 d_PRId64=''
839 d_PRIi64=''
840 d_PRIo64=''
841 d_PRIu64=''
842 d_PRIx64=''
843 sPRIX64=''
844 sPRId64=''
845 sPRIi64=''
846 sPRIo64=''
847 sPRIu64=''
848 sPRIx64=''
849 d_quad=''
850 quadkind=''
851 quadtype=''
852 uquadtype=''
853 drand01=''
854 randbits=''
855 randfunc=''
856 randseedtype=''
857 seedfunc=''
858 installscript=''
859 scriptdir=''
860 scriptdirexp=''
861 selectminbits=''
862 selecttype=''
863 sh=''
864 sig_count=''
865 sig_name=''
866 sig_name_init=''
867 sig_num=''
868 sig_num_init=''
869 installsitearch=''
870 sitearch=''
871 sitearchexp=''
872 installsitebin=''
873 sitebin=''
874 sitebinexp=''
875 installsitelib=''
876 sitelib=''
877 sitelib_stem=''
878 sitelibexp=''
879 siteprefix=''
880 siteprefixexp=''
881 sizesize=''
882 sizetype=''
883 so=''
884 socksizetype=''
885 sharpbang=''
886 shsharp=''
887 spitshell=''
888 src=''
889 ssizetype=''
890 startperl=''
891 startsh=''
892 stdchar=''
893 d_stdio_stream_array=''
894 stdio_stream_array=''
895 sysman=''
896 trnl=''
897 uidformat=''
898 uidsign=''
899 uidsize=''
900 uidtype=''
901 archname64=''
902 use64bitall=''
903 use64bitint=''
904 ccflags_uselargefiles=''
905 ldflags_uselargefiles=''
906 libswanted_uselargefiles=''
907 uselargefiles=''
908 uselongdouble=''
909 usemorebits=''
910 usemultiplicity=''
911 nm_opt=''
912 nm_so_opt=''
913 runnm=''
914 usenm=''
915 useperlio=''
916 usesocks=''
917 d_oldpthreads=''
918 use5005threads=''
919 useithreads=''
920 usethreads=''
921 incpath=''
922 mips_type=''
923 usrinc=''
924 d_vendorarch=''
925 installvendorarch=''
926 vendorarch=''
927 vendorarchexp=''
928 d_vendorbin=''
929 installvendorbin=''
930 vendorbin=''
931 vendorbinexp=''
932 d_vendorlib=''
933 installvendorlib=''
934 vendorlib=''
935 vendorlib_stem=''
936 vendorlibexp=''
937 usevendorprefix=''
938 vendorprefix=''
939 vendorprefixexp=''
940 defvoidused=''
941 voidflags=''
942 pm_apiversion=''
943 xs_apiversion=''
944 CONFIG=''
945
946 define='define'
947 undef='undef'
948 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
949 rmlist=''
950
951 : We must find out about Eunice early
952 eunicefix=':'
953 if test -f /etc/unixtovms; then
954         eunicefix=/etc/unixtovms
955 fi
956 if test -f /etc/unixtovms.exe; then
957         eunicefix=/etc/unixtovms.exe
958 fi
959
960 i_whoami=''
961 : set useposix=false in your hint file to disable the POSIX extension.
962 useposix=true
963 : set useopcode=false in your hint file to disable the Opcode extension.
964 useopcode=true
965 : Trailing extension.  Override this in a hint file, if needed.
966 _exe=''
967 : Extra object files, if any, needed on this platform.
968 archobjs=''
969 : Possible local include directories to search.
970 : Set locincpth to "" in a hint file to defeat local include searches.
971 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
972 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
973 :
974 : no include file wanted by default
975 inclwanted=''
976
977 groupstype=''
978 : change the next line if compiling for Xenix/286 on Xenix/386
979 xlibpth='/usr/lib/386 /lib/386'
980 : Possible local library directories to search.
981 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
982 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
983
984 : general looking path for locating libraries
985 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
986 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
987 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
988 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
989 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
990
991 : Private path used by Configure to find libraries.  Its value
992 : is prepended to libpth. This variable takes care of special
993 : machines, like the mips.  Usually, it should be empty.
994 plibpth=''
995
996 : default library list
997 libswanted=''
998 : some systems want to use only the non-versioned libso:s
999 ignore_versioned_solibs=''
1000 ccflags_uselargefiles=''
1001 ldflags_uselargefiles=''
1002 libswanted_uselargefiles=''
1003 : set usemultiplicity on the Configure command line to enable multiplicity.
1004 : set usesocks on the Configure command line to enable socks.
1005 : set usethreads on the Configure command line to enable threads.
1006 : full support for void wanted by default
1007 defvoidused=15
1008
1009 : List of libraries we want.
1010 : If anyone needs -lnet, put it in a hint file.
1011 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1012 libswanted="$libswanted dld ld sun m c cposix posix"
1013 libswanted="$libswanted ndir dir crypt sec"
1014 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1015 : We probably want to search /usr/shlib before most other libraries.
1016 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1017 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1018 glibpth="/usr/shlib $glibpth"
1019 : Do not use vfork unless overridden by a hint file.
1020 usevfork=false
1021
1022 : Find the basic shell for Bourne shell scripts
1023 case "$sh" in
1024 '')
1025         case "$SYSTYPE" in
1026         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1027         *) xxx='/bin/sh';;
1028         esac
1029         if test -f "$xxx"; then
1030                 sh="$xxx"
1031         else
1032                 : Build up a list and do a single loop so we can 'break' out.
1033                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1034                 for xxx in sh bash ksh pdksh ash; do
1035                         for p in $pth; do
1036                                 try="$try ${p}/${xxx}"
1037                         done
1038                 done
1039                 for xxx in $try; do
1040                         if test -f "$xxx"; then
1041                                 sh="$xxx";
1042                                 break
1043                         elif test -f "$xxx.exe"; then
1044                                 sh="$xxx";
1045                                 break
1046                         fi
1047                 done
1048         fi
1049         ;;
1050 esac
1051
1052 case "$sh" in
1053 '')     cat <<EOM >&2
1054 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1055
1056 Usually it's in /bin/sh.  How did you even get this far?
1057 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1058 we'll try to straighten this all out.
1059 EOM
1060         exit 1
1061         ;;
1062 esac
1063
1064 : see if sh knows # comments
1065 if `$sh -c '#' >/dev/null 2>&1`; then
1066         shsharp=true
1067         spitshell=cat
1068         xcat=/bin/cat
1069         test -f $xcat || xcat=/usr/bin/cat
1070         echo "#!$xcat" >try
1071         $eunicefix try
1072         chmod +x try
1073         ./try > today
1074         if test -s today; then
1075                 sharpbang='#!'
1076         else
1077                 echo "#! $xcat" > try
1078                 $eunicefix try
1079                 chmod +x try
1080                 ./try > today
1081                 if test -s today; then
1082                         sharpbang='#! '
1083                 else
1084                         sharpbang=': use '
1085                 fi
1086         fi
1087 else
1088         echo " "
1089         echo "Your $sh doesn't grok # comments--I will strip them later on."
1090         shsharp=false
1091         cd ..
1092         echo "exec grep -v '^[  ]*#'" >spitshell
1093         chmod +x spitshell
1094         $eunicefix spitshell
1095         spitshell=`pwd`/spitshell
1096         cd UU
1097         echo "I presume that if # doesn't work, #! won't work either!"
1098         sharpbang=': use '
1099 fi
1100 rm -f try today
1101
1102 : figure out how to guarantee sh startup
1103 case "$startsh" in
1104 '') startsh=${sharpbang}${sh} ;;
1105 *)
1106 esac
1107 cat >try <<EOSS
1108 $startsh
1109 set abc
1110 test "$?abc" != 1
1111 EOSS
1112
1113 chmod +x try
1114 $eunicefix try
1115 if ./try; then
1116         : echo "Yup, it does."
1117 else
1118         echo "Hmm... '$startsh' does not guarantee sh startup..."
1119         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1120 fi
1121 rm -f try
1122
1123
1124 : Save command line options in file UU/cmdline.opt for later use in
1125 : generating config.sh.
1126 cat > cmdline.opt <<EOSH
1127 # Configure command line arguments.
1128 config_arg0='$0'
1129 config_args='$*'
1130 config_argc=$#
1131 EOSH
1132 argn=1
1133 for arg in "$@"; do
1134         cat >>cmdline.opt <<EOSH
1135 config_arg$argn='$arg'
1136 EOSH
1137         argn=`expr $argn + 1`
1138 done
1139
1140 : produce awk script to parse command line options
1141 cat >options.awk <<'EOF'
1142 BEGIN {
1143         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1144
1145         len = length(optstr);
1146         for (i = 1; i <= len; i++) {
1147                 c = substr(optstr, i, 1);
1148                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1149                 if (a == ":") {
1150                         arg[c] = 1;
1151                         i++;
1152                 }
1153                 opt[c] = 1;
1154         }
1155 }
1156 {
1157         expect = 0;
1158         str = $0;
1159         if (substr(str, 1, 1) != "-") {
1160                 printf("'%s'\n", str);
1161                 next;
1162         }
1163         len = length($0);
1164         for (i = 2; i <= len; i++) {
1165                 c = substr(str, i, 1);
1166                 if (!opt[c]) {
1167                         printf("-%s\n", substr(str, i));
1168                         next;
1169                 }
1170                 printf("-%s\n", c);
1171                 if (arg[c]) {
1172                         if (i < len)
1173                                 printf("'%s'\n", substr(str, i + 1));
1174                         else
1175                                 expect = 1;
1176                         next;
1177                 }
1178         }
1179 }
1180 END {
1181         if (expect)
1182                 print "?";
1183 }
1184 EOF
1185
1186 : process the command line options
1187 set X `for arg in "$@"; do echo "X$arg"; done |
1188         sed -e s/X// | awk -f options.awk`
1189 eval "set $*"
1190 shift
1191 rm -f options.awk
1192
1193 : set up default values
1194 fastread=''
1195 reuseval=false
1196 config_sh=''
1197 alldone=''
1198 error=''
1199 silent=''
1200 extractsh=''
1201 override=''
1202 knowitall=''
1203 rm -f optdef.sh posthint.sh
1204 cat >optdef.sh <<EOS
1205 $startsh
1206 EOS
1207
1208
1209 : option parsing
1210 while test $# -gt 0; do
1211         case "$1" in
1212         -d) shift; fastread=yes;;
1213         -e) shift; alldone=cont;;
1214         -f)
1215                 shift
1216                 cd ..
1217                 if test -r "$1"; then
1218                         config_sh="$1"
1219                 else
1220                         echo "$me: cannot read config file $1." >&2
1221                         error=true
1222                 fi
1223                 cd UU
1224                 shift;;
1225         -h) shift; error=true;;
1226         -r) shift; reuseval=true;;
1227         -s) shift; silent=true; realsilent=true;;
1228         -E) shift; alldone=exit;;
1229         -K) shift; knowitall=true;;
1230         -O) shift; override=true;;
1231         -S) shift; silent=true; extractsh=true;;
1232         -D)
1233                 shift
1234                 case "$1" in
1235                 *=)
1236                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1237                         echo "$me: ignoring -D $1" >&2
1238                         ;;
1239                 *=*) echo "$1" | \
1240                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1241                 *) echo "$1='define'" >> optdef.sh;;
1242                 esac
1243                 shift
1244                 ;;
1245         -U)
1246                 shift
1247                 case "$1" in
1248                 *=) echo "$1" >> optdef.sh;;
1249                 *=*)
1250                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1251                         echo "$me: ignoring -U $1" >&2
1252                         ;;
1253                 *) echo "$1='undef'" >> optdef.sh;;
1254                 esac
1255                 shift
1256                 ;;
1257         -A)
1258             shift
1259             xxx=''
1260             yyy="$1"
1261             zzz=''
1262             uuu=undef
1263             case "$yyy" in
1264             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1265                  case "$zzz" in
1266                  *:*) zzz='' ;;
1267                  *)   xxx=append
1268                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1269                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1270                  esac
1271                  ;;
1272             esac
1273             case "$xxx" in
1274             '')  case "$yyy" in
1275                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1276                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1277                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1278                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1279                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1280                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1281                  esac
1282                  ;;       
1283             esac
1284             case "$xxx" in
1285             append)
1286                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1287             clear)
1288                 echo "$yyy=''"                  >> posthint.sh ;;
1289             define)
1290                 case "$zzz" in
1291                 '') zzz=define ;;
1292                 esac
1293                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1294             eval)
1295                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1296             prepend)
1297                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1298             undef)
1299                 case "$zzz" in
1300                 '') zzz="$uuu" ;;
1301                 esac
1302                 echo "$yyy=$zzz"                >> posthint.sh ;;
1303             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1304             esac
1305             shift
1306             ;;
1307         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1308             exit 0;;
1309         --) break;;
1310         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1311         *) break;;
1312         esac
1313 done
1314
1315 case "$error" in
1316 true)
1317         cat >&2 <<EOM
1318 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1319                  [-U symbol] [-U symbol=] [-A command:symbol...]
1320   -d : use defaults for all answers.
1321   -e : go on without questioning past the production of config.sh.
1322   -f : specify an alternate default configuration file.
1323   -h : print this help message and exit (with an error status).
1324   -r : reuse C symbols value if possible (skips costly nm extraction).
1325   -s : silent mode, only echoes questions and essential information.
1326   -D : define symbol to have some value:
1327          -D symbol         symbol gets the value 'define'
1328          -D symbol=value   symbol gets the value 'value'
1329   -E : stop at the end of questions, after having produced config.sh.
1330   -K : do not use unless you know what you are doing.
1331   -O : let -D and -U override definitions from loaded configuration file.
1332   -S : perform variable substitutions on all .SH files (can mix with -f)
1333   -U : undefine symbol:
1334          -U symbol    symbol gets the value 'undef'
1335          -U symbol=   symbol gets completely empty
1336   -A : manipulate symbol after the platform specific hints have been applied:
1337          -A symbol=value                append " "value to symbol
1338          -A append:symbol=value         append value to symbol
1339          -A define:symbol=value         define symbol to have value
1340          -A clear:symbol                define symbol to be ''
1341          -A define:symbol               define symbol to be 'define'
1342          -A eval:symbol=value           define symbol to be eval of value
1343          -A prepend:symbol=value        prepend value to symbol
1344          -A undef:symbol                define symbol to be 'undef'
1345          -A undef:symbol=               define symbol to be ''
1346   -V : print version number and exit (with a zero status).
1347 EOM
1348         exit 1
1349         ;;
1350 esac
1351
1352 : Sanity checks
1353 case "$fastread$alldone" in
1354 yescont|yesexit) ;;
1355 *)
1356         case "$extractsh" in
1357         true) ;;
1358         *)
1359                 if test ! -t 0; then
1360                         echo "Say 'sh Configure', not 'sh <Configure'"
1361                         exit 1
1362                 fi
1363                 ;;
1364         esac
1365         ;;
1366 esac
1367
1368 exec 4>&1
1369 case "$silent" in
1370 true) exec 1>/dev/null;;
1371 esac
1372
1373 : run the defines and the undefines, if any, but leave the file out there...
1374 touch optdef.sh
1375 . ./optdef.sh
1376 : create the posthint manipulation script and leave the file out there...
1377 touch posthint.sh
1378
1379 : set package name
1380 package=perl5
1381 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1382 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1383 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1384 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1385 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1386 esac
1387
1388 : Some greps do not return status, grrr.
1389 echo "grimblepritz" >grimble
1390 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1391         contains=contains
1392 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1393         contains=grep
1394 else
1395         contains=contains
1396 fi
1397 rm -f grimble
1398 : the following should work in any shell
1399 case "$contains" in
1400 contains*)
1401         echo " "
1402         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1403         cat >contains <<'EOSS'
1404 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1405 EOSS
1406 chmod +x contains
1407 esac
1408
1409 : Find the path to the source tree
1410 case "$src" in
1411 '') case "$0" in
1412     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1413          case "$src" in
1414          /*)    ;;
1415          *)     src=`cd ../$src && pwd` ;;
1416          esac
1417          ;;
1418     *)   src='.';;
1419     esac;;
1420 esac
1421 case "$src" in
1422 '')     src=/
1423         rsrc=/
1424         ;;
1425 /*) rsrc="$src";;
1426 *) rsrc="../$src";;
1427 esac
1428 if test -f $rsrc/Configure && \
1429         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1430 then
1431    : found it, so we are ok.
1432 else
1433         rsrc=''
1434         for src in . .. ../.. ../../.. ../../../..; do
1435                 if test -f ../$src/Configure && \
1436                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1437                 then
1438                         rsrc=../$src
1439                         break
1440                 fi
1441         done
1442 fi
1443 case "$rsrc" in
1444 '')
1445         cat <<EOM >&4
1446
1447 Sorry, I can't seem to locate the source dir for $package.  Please start
1448 Configure with an explicit path -- i.e. /some/path/Configure.
1449
1450 EOM
1451         exit 1
1452         ;;
1453 ../.)   rsrc='..';;
1454 *)
1455         echo " "
1456         echo "Sources for $package found in \"$src\"." >&4
1457         ;;
1458 esac
1459
1460 : script used to extract .SH files with variable substitutions
1461 cat >extract <<'EOS'
1462 CONFIGDOTSH=true
1463 echo "Doing variable substitutions on .SH files..."
1464 if test -f $src/MANIFEST; then
1465         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1466 else
1467         echo "(Looking for .SH files under the source directory.)"
1468         set x `(cd $src; find . -name "*.SH" -print)`
1469 fi
1470 shift
1471 case $# in
1472 0) set x `(cd $src; echo *.SH)`; shift;;
1473 esac
1474 if test ! -f $src/$1; then
1475         shift
1476 fi
1477 mkdir_p='
1478 name=$1;
1479 create="";
1480 while test $name; do
1481         if test ! -d "$name"; then
1482                 create="$name $create";
1483                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1484                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1485         else
1486                 name="";
1487         fi;
1488 done;
1489 for file in $create; do
1490         mkdir $file;
1491 done
1492 '
1493 for file in $*; do
1494         case "$src" in
1495         ".")
1496                 case "$file" in
1497                 */*)
1498                         dir=`expr X$file : 'X\(.*\)/'`
1499                         file=`expr X$file : 'X.*/\(.*\)'`
1500                         (cd $dir && . ./$file)
1501                         ;;
1502                 *)
1503                         . ./$file
1504                         ;;
1505                 esac
1506                 ;;
1507         *)
1508                 case "$file" in
1509                 */*)
1510                         dir=`expr X$file : 'X\(.*\)/'`
1511                         file=`expr X$file : 'X.*/\(.*\)'`
1512                         (set x $dir; shift; eval $mkdir_p)
1513                         sh <$src/$dir/$file
1514                         ;;
1515                 *)
1516                         sh <$src/$file
1517                         ;;
1518                 esac
1519                 ;;
1520         esac
1521 done
1522 if test -f $src/config_h.SH; then
1523         if test ! -f config.h; then
1524         : oops, they left it out of MANIFEST, probably, so do it anyway.
1525         . $src/config_h.SH
1526         fi
1527 fi
1528 EOS
1529
1530 : extract files and exit if asked to do so
1531 case "$extractsh" in
1532 true)
1533         case "$realsilent" in
1534         true) ;;
1535         *) exec 1>&4;;
1536         esac
1537         case "$config_sh" in
1538         '') config_sh='config.sh';;
1539         esac
1540         echo " "
1541         echo "Fetching answers from $config_sh..."
1542         cd ..
1543         . $config_sh
1544         test "$override" && . ./optdef.sh
1545         echo " "
1546         . UU/extract
1547         rm -rf UU
1548         echo "Done."
1549         exit 0
1550         ;;
1551 esac
1552
1553 : Eunice requires " " instead of "", can you believe it
1554 echo " "
1555 : Here we go...
1556 echo "Beginning of configuration questions for $package."
1557
1558 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1559
1560 : first determine how to suppress newline on echo command
1561 echo " "
1562 echo "Checking echo to see how to suppress newlines..."
1563 (echo "hi there\c" ; echo " ") >.echotmp
1564 if $contains c .echotmp >/dev/null 2>&1 ; then
1565         echo "...using -n."
1566         n='-n'
1567         c=''
1568 else
1569         cat <<'EOM'
1570 ...using \c
1571 EOM
1572         n=''
1573         c='\c'
1574 fi
1575 echo $n "The star should be here-->$c"
1576 echo '*'
1577 rm -f .echotmp
1578
1579 : Now test for existence of everything in MANIFEST
1580 echo " "
1581 if test -f $rsrc/MANIFEST; then
1582         echo "First let's make sure your kit is complete.  Checking..." >&4
1583         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1584         rm -f missing
1585         tmppwd=`pwd`
1586         for filelist in x??; do
1587                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1588         done
1589         if test -s missing; then
1590                 cat missing >&4
1591                 cat >&4 <<'EOM'
1592
1593 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1594
1595 You have the option of continuing the configuration process, despite the
1596 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1597 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1598 and contact the author (perlbug@perl.com).
1599
1600 EOM
1601                 echo $n "Continue? [n] $c" >&4
1602                 read ans
1603                 case "$ans" in
1604                 y*)
1605                         echo "Continuing..." >&4
1606                         rm -f missing
1607                         ;;
1608                 *)
1609                         echo "ABORTING..." >&4
1610                         kill $$
1611                         ;;
1612                 esac
1613         else
1614                 echo "Looks good..."
1615         fi
1616 else
1617         echo "There is no MANIFEST file.  I hope your kit is complete !"
1618 fi
1619 rm -f missing x??
1620
1621 echo " "
1622 : Find the appropriate value for a newline for tr
1623 if test -n "$DJGPP"; then
1624        trnl='\012'
1625 fi
1626 if test X"$trnl" = X; then
1627         case "`echo foo|tr '\n' x 2>/dev/null`" in
1628         foox) trnl='\n' ;;
1629         esac
1630 fi
1631 if test X"$trnl" = X; then
1632         case "`echo foo|tr '\012' x 2>/dev/null`" in
1633         foox) trnl='\012' ;;
1634         esac
1635 fi
1636 if test X"$trnl" = X; then
1637         cat <<EOM >&2
1638
1639 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1640
1641 EOM
1642         exit 1
1643 fi
1644
1645 : compute the number of columns on the terminal for proper question formatting
1646 case "$COLUMNS" in
1647 '') COLUMNS='80';;
1648 esac
1649
1650 : set up the echo used in my read
1651 myecho="case \"\$xxxm\" in
1652 '') echo $n \"\$rp $c\" >&4;;
1653 *) case \"\$rp\" in
1654         '') echo $n \"[\$xxxm] $c\";;
1655         *)
1656                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1657                         echo \"\$rp\" >&4
1658                         echo $n \"[\$xxxm] $c\" >&4
1659                 else
1660                         echo $n \"\$rp [\$xxxm] $c\" >&4
1661                 fi
1662                 ;;
1663         esac;;
1664 esac"
1665
1666 : now set up to do reads with possible shell escape and default assignment
1667 cat <<EOSC >myread
1668 $startsh
1669 xxxm=\$dflt
1670 $myecho
1671 ans='!'
1672 case "\$fastread" in
1673 yes) case "\$dflt" in
1674         '') ;;
1675         *) ans='';
1676                 case "\$silent-\$rp" in
1677                 true-) ;;
1678                 *) echo " " >&4;;
1679                 esac;;
1680         esac;;
1681 *) case "\$silent" in
1682         true) case "\$rp" in
1683                 '') ans='';;
1684                 esac;;
1685         esac;;
1686 esac
1687 while expr "X\$ans" : "X!" >/dev/null; do
1688         read answ
1689         set x \$xxxm
1690         shift
1691         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1692         case  "\$answ" in
1693         "!")
1694                 sh 1>&4
1695                 echo " "
1696                 $myecho
1697                 ;;
1698         !*)
1699                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1700                 shift
1701                 sh 1>&4 -c "\$*"
1702                 echo " "
1703                 $myecho
1704                 ;;
1705         "\$ans")
1706                 case "\$ans" in
1707                 \\&*)
1708                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1709                         shift
1710                         case "\$1" in
1711                         -d)
1712                                 fastread=yes
1713                                 echo "(OK, I'll run with -d after this question.)" >&4
1714                                 ;;
1715                         -*)
1716                                 echo "*** Sorry, \$1 not supported yet." >&4
1717                                 ;;
1718                         esac
1719                         $myecho
1720                         ans=!
1721                         ;;
1722                 esac;;
1723         *)
1724                 case "\$aok" in
1725                 y)
1726                         echo "*** Substitution done -- please confirm."
1727                         xxxm="\$ans"
1728                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1729                         xxxm="\$ans"
1730                         ans=!
1731                         ;;
1732                 *)
1733                         echo "*** Error -- try again."
1734                         ans=!
1735                         ;;
1736                 esac
1737                 $myecho
1738                 ;;
1739         esac
1740         case "\$ans\$xxxm\$nostick" in
1741         '')
1742                 ans=!
1743                 $myecho
1744                 ;;
1745         esac
1746 done
1747 case "\$ans" in
1748 '') ans="\$xxxm";;
1749 esac
1750 EOSC
1751
1752 : create .config dir to save info across Configure sessions
1753 test -d ../.config || mkdir ../.config
1754 cat >../.config/README <<EOF
1755 This directory created by Configure to save information that should
1756 persist across sessions for $package.
1757
1758 You may safely delete it if you wish.
1759 EOF
1760
1761 xpatchlevel=`awk '/define[      ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1762 case "$useunstabledeveloperreleases" in
1763 $define|true|[yY]*) ;;
1764 *) case "$xpatchlevel" in
1765    *[13579])
1766         cat >&4 <<EOH
1767 *** WHOA THERE!!! ***
1768
1769     This is an UNSTABLE DEVELOPMENT release.
1770     (The patchlevel, $xpatchlevel, is odd--as opposed to even,
1771      and that signifies a development release.  If you want a
1772      maintenance release, you want an even-numbered release.)
1773
1774     Do ***NOT*** install this into production use.
1775     Data corruption and crashes are possible.
1776
1777     It is most seriously suggested that you do not continue any further
1778     unless you want to help in developing and debugging Perl.
1779
1780 EOH
1781         rp='Do you really want to continue?'
1782         dflt='n'
1783         . ./myread
1784         case "$ans" in
1785         [yY]) echo >&4 "Okay, continuing." ;;
1786         *) echo >&4 "Okay, bye."
1787            exit 1
1788            ;;
1789         esac
1790         ;;
1791     esac
1792     ;;
1793 esac
1794
1795 : general instructions
1796 needman=true
1797 firsttime=true
1798 user=`(logname) 2>/dev/null`
1799 case "$user" in
1800 '') user=`whoami 2>&1`;;
1801 esac
1802 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1803         firsttime=false
1804         echo " "
1805         rp='Would you like to see the instructions?'
1806         dflt=n
1807         . ./myread
1808         case "$ans" in
1809         [yY]*) ;;
1810         *) needman=false;;
1811         esac
1812 fi
1813 if $needman; then
1814         cat <<EOH
1815
1816 This installation shell script will examine your system and ask you questions
1817 to determine how the perl5 package should be installed. If you get
1818 stuck on a question, you may use a ! shell escape to start a subshell or
1819 execute a command.  Many of the questions will have default answers in square
1820 brackets; typing carriage return will give you the default.
1821
1822 On some of the questions which ask for file or directory names you are allowed
1823 to use the ~name construct to specify the login directory belonging to "name",
1824 even if you don't have a shell which knows about that.  Questions where this is
1825 allowed will be marked "(~name ok)".
1826
1827 EOH
1828         rp=''
1829         dflt='Type carriage return to continue'
1830         . ./myread
1831         cat <<'EOH'
1832
1833 The prompter used in this script allows you to use shell variables and
1834 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1835 in the default answer, as if the default line was a set of arguments given to a
1836 script shell.  This means you may also use $* to repeat the whole default line,
1837 so you do not have to re-type everything to add something to the default.
1838
1839 Everytime there is a substitution, you will have to confirm.  If there is an
1840 error (e.g. an unmatched backtick), the default answer will remain unchanged
1841 and you will be prompted again.
1842
1843 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1844 the questions and use the computed defaults (or the previous answers if there
1845 was already a config.sh file). Type 'Configure -h' for a list of options.
1846 You may also start interactively and then answer '& -d' at any prompt to turn
1847 on the non-interactive behaviour for the remainder of the execution.
1848
1849 EOH
1850         . ./myread
1851         cat <<EOH
1852
1853 Much effort has been expended to ensure that this shell script will run on any
1854 Unix system.  If despite that it blows up on yours, your best bet is to edit
1855 Configure and run it again.  If you can't run Configure for some reason,
1856 you'll have to generate a config.sh file by hand.  Whatever problems you
1857 have, let me (perlbug@perl.com) know how I blew it.
1858
1859 This installation script affects things in two ways:
1860
1861 1) it may do direct variable substitutions on some of the files included
1862    in this kit.
1863 2) it builds a config.h file for inclusion in C programs.  You may edit
1864    any of these files as the need arises after running this script.
1865
1866 If you make a mistake on a question, there is no easy way to back up to it
1867 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1868 files.  Configure will offer to let you do this before it runs the SH files.
1869
1870 EOH
1871         dflt='Type carriage return to continue'
1872         . ./myread
1873         case "$firsttime" in
1874         true) echo $user >>../.config/instruct;;
1875         esac
1876 fi
1877
1878 : find out where common programs are
1879 echo " "
1880 echo "Locating common programs..." >&4
1881 cat <<EOSC >loc
1882 $startsh
1883 case \$# in
1884 0) exit 1;;
1885 esac
1886 thing=\$1
1887 shift
1888 dflt=\$1
1889 shift
1890 for dir in \$*; do
1891         case "\$thing" in
1892         .)
1893         if test -d \$dir/\$thing; then
1894                 echo \$dir
1895                 exit 0
1896         fi
1897         ;;
1898         *)
1899         for thisthing in \$dir/\$thing; do
1900                 : just loop through to pick last item
1901         done
1902         if test -f \$thisthing; then
1903                 echo \$thisthing
1904                 exit 0
1905         elif test -f \$dir/\$thing.exe; then
1906                 if test -n "$DJGPP"; then
1907                         echo \$dir/\$thing.exe
1908                 else
1909                         : on Eunice apparently
1910                         echo \$dir/\$thing
1911                 fi
1912                 exit 0
1913         fi
1914         ;;
1915         esac
1916 done
1917 echo \$dflt
1918 exit 1
1919 EOSC
1920 chmod +x loc
1921 $eunicefix loc
1922 loclist="
1923 awk
1924 cat
1925 comm
1926 cp
1927 echo
1928 expr
1929 grep
1930 ls
1931 make
1932 mkdir
1933 rm
1934 sed
1935 sort
1936 touch
1937 tr
1938 uniq
1939 "
1940 trylist="
1941 Mcc
1942 ar
1943 byacc
1944 cpp
1945 csh
1946 date
1947 egrep
1948 gzip
1949 less
1950 ln
1951 more
1952 nm
1953 nroff
1954 pg
1955 test
1956 uname
1957 zip
1958 "
1959 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1960 pth="$pth /lib /usr/lib"
1961 for file in $loclist; do
1962         eval xxx=\$$file
1963         case "$xxx" in
1964         /*|?:[\\/]*)
1965                 if test -f "$xxx"; then
1966                         : ok
1967                 else
1968                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1969                         xxx=`./loc $file $file $pth`
1970                 fi
1971                 ;;
1972         '') xxx=`./loc $file $file $pth`;;
1973         *) xxx=`./loc $xxx $xxx $pth`;;
1974         esac
1975         eval $file=$xxx
1976         eval _$file=$xxx
1977         case "$xxx" in
1978         /*)
1979                 echo $file is in $xxx.
1980                 ;;
1981         ?:[\\/]*)
1982                 echo $file is in $xxx.
1983                 ;;
1984         *)
1985                 echo "I don't know where '$file' is, and my life depends on it." >&4
1986                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1987                 exit 1
1988                 ;;
1989         esac
1990 done
1991 echo " "
1992 echo "Don't worry if any of the following aren't found..."
1993 say=offhand
1994 for file in $trylist; do
1995         eval xxx=\$$file
1996         case "$xxx" in
1997         /*|?:[\\/]*)
1998                 if test -f "$xxx"; then
1999                         : ok
2000                 else
2001                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2002                         xxx=`./loc $file $file $pth`
2003                 fi
2004                 ;;
2005         '') xxx=`./loc $file $file $pth`;;
2006         *) xxx=`./loc $xxx $xxx $pth`;;
2007         esac
2008         eval $file=$xxx
2009         eval _$file=$xxx
2010         case "$xxx" in
2011         /*)
2012                 echo $file is in $xxx.
2013                 ;;
2014         ?:[\\/]*)
2015                 echo $file is in $xxx.
2016                 ;;
2017         *)
2018                 echo "I don't see $file out there, $say."
2019                 say=either
2020                 ;;
2021         esac
2022 done
2023 case "$egrep" in
2024 egrep)
2025         echo "Substituting grep for egrep."
2026         egrep=$grep
2027         ;;
2028 esac
2029 case "$ln" in
2030 ln)
2031         echo "Substituting cp for ln."
2032         ln=$cp
2033         ;;
2034 esac
2035 case "$test" in
2036 test)
2037         echo "Hopefully test is built into your sh."
2038         ;;
2039 *)
2040         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2041                 echo "Using the test built into your sh."
2042                 test=test
2043                 _test=test
2044         fi
2045         ;;
2046 esac
2047 case "$echo" in
2048 echo)
2049         echo "Hopefully echo is built into your sh."
2050         ;;
2051 '') ;;
2052 *)
2053         echo " "
2054 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2055         $echo $n "hi there$c" >foo1
2056         echo $n "hi there$c" >foo2
2057         if cmp foo1 foo2 >/dev/null 2>&1; then
2058                 echo "They are compatible.  In fact, they may be identical."
2059         else
2060                 case "$n" in
2061                 '-n') n='' c='\c';;
2062                 *) n='-n' c='';;
2063                 esac
2064                 cat <<FOO
2065 They are not compatible!  You are probably running ksh on a non-USG system.
2066 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2067 have echo built in and we may have to run some Bourne shell scripts.  That
2068 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2069
2070 FOO
2071                 $echo $n "The star should be here-->$c"
2072                 $echo "*"
2073         fi
2074         $rm -f foo1 foo2
2075         ;;
2076 esac
2077
2078 cat <<EOS >checkcc
2079 $startsh
2080 EOS
2081 cat <<'EOSC' >>checkcc
2082 case "$cc" in
2083 '') ;;
2084 *)  $rm -f try try.*
2085     $cat >try.c <<EOM
2086 int main(int argc, char *argv[]) {
2087   return 0;
2088 }
2089 EOM
2090     if $cc -o try try.c; then
2091        :
2092     else
2093         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2094         despair=yes
2095         trygcc=yes
2096         case "$cc" in
2097         *gcc*) trygcc=no ;;
2098         esac
2099         case "`$cc -v -c try.c 2>&1`" in
2100         *gcc*) trygcc=no ;;
2101         esac
2102         if $test X"$trygcc" = Xyes; then
2103             if gcc -o try -c try.c; then
2104                 echo " "
2105                 echo "You seem to have a working gcc, though." >&4
2106                 rp="Would you like to use it?"
2107                 dflt=y
2108                 if $test -f myread; then
2109                     . ./myread
2110                 else
2111                     if $test -f UU/myread; then
2112                         . ./UU/myread
2113                     else
2114                         echo "Cannot find myread, sorry.  Aborting." >&2
2115                         exit 1
2116                     fi
2117                 fi  
2118                 case "$ans" in
2119                 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2120                 esac
2121             fi
2122         fi
2123         if $test X"$despair" = Xyes; then
2124             echo "You need to find a working C compiler." >&4
2125             echo "I cannot continue any further, aborting." >&4
2126             exit 1
2127         fi
2128     fi
2129     $rm -f try try.*
2130     ;;
2131 esac
2132 EOSC
2133
2134 : determine whether symbolic links are supported
2135 echo " "
2136 $touch blurfl
2137 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2138         echo "Symbolic links are supported." >&4
2139         lns="$ln -s"
2140 else
2141         echo "Symbolic links are NOT supported." >&4
2142         lns="$ln"
2143 fi
2144 $rm -f blurfl sym
2145
2146 : see whether [:lower:] and [:upper:] are supported character classes
2147 echo " "
2148 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2149 ABYZ)
2150         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2151         up='[:upper:]'
2152         low='[:lower:]'
2153         ;;
2154 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2155         # (0xc9 and 0xd1), therefore that is a nice testing point.
2156         if test "X$up" = X -o "X$low" = X; then
2157             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2158             ij) up='[A-Z]'
2159                 low='[a-z]'
2160                 ;;
2161             esac
2162         fi
2163         if test "X$up" = X -o "X$low" = X; then
2164             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2165             ij) up='A-Z'
2166                 low='a-z'
2167                 ;;
2168             esac
2169         fi
2170         if test "X$up" = X -o "X$low" = X; then
2171             case "`echo IJ | od -x 2>/dev/null`" in
2172             *C9D1*|*c9d1*)
2173                 echo "Hey, this might be EBCDIC." >&4
2174                 if test "X$up" = X -o "X$low" = X; then
2175                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2176                     ij) up='[A-IJ-RS-Z]'
2177                         low='[a-ij-rs-z]'
2178                         ;;
2179                     esac
2180                 fi
2181                 if test "X$up" = X -o "X$low" = X; then
2182                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2183                     ij) up='A-IJ-RS-Z'
2184                         low='a-ij-rs-z'
2185                         ;;
2186                     esac
2187                 fi
2188                 ;;
2189             esac
2190         fi
2191 esac
2192 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2193 ij)
2194     echo "Using $up and $low to convert case." >&4
2195     ;;
2196 *)
2197     echo "I don't know how to translate letters from upper to lower case." >&4
2198     echo "Your tr is not acting any way I know of." >&4
2199     exit 1
2200     ;;
2201 esac
2202 : set up the translation script tr, must be called with ./tr of course
2203 cat >tr <<EOSC
2204 $startsh
2205 case "\$1\$2" in
2206 '[A-Z][a-z]') exec $tr '$up' '$low';;
2207 '[a-z][A-Z]') exec $tr '$low' '$up';;
2208 esac
2209 exec $tr "\$@"
2210 EOSC
2211 chmod +x tr
2212 $eunicefix tr
2213
2214 : Try to determine whether config.sh was made on this system
2215 case "$config_sh" in
2216 '')
2217 myuname=`$uname -a 2>/dev/null`
2218 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2219 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2220 # because the A-Z/a-z are not consecutive.
2221 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2222         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2223 newmyuname="$myuname"
2224 dflt=n
2225 case "$knowitall" in
2226 '')
2227         if test -f ../config.sh; then
2228                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2229                         eval "`grep myuname= ../config.sh`"
2230                 fi
2231                 if test "X$myuname" = "X$newmyuname"; then
2232                         dflt=y
2233                 fi
2234         fi
2235         ;;
2236 *) dflt=y;;
2237 esac
2238
2239 : Get old answers from old config file if Configure was run on the
2240 : same system, otherwise use the hints.
2241 hint=default
2242 cd ..
2243 if test -f config.sh; then
2244         echo " "
2245         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2246         . UU/myread
2247         case "$ans" in
2248         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2249         *)  echo "Fetching default answers from your old config.sh file..." >&4
2250                 tmp_n="$n"
2251                 tmp_c="$c"
2252                 tmp_sh="$sh"
2253                 . ./config.sh
2254                 cp config.sh UU
2255                 n="$tmp_n"
2256                 c="$tmp_c"
2257                 : Older versions did not always set $sh.  Catch re-use of such
2258                 : an old config.sh.
2259                 case "$sh" in
2260                 '') sh="$tmp_sh" ;;
2261                 esac
2262                 hint=previous
2263                 ;;
2264         esac
2265 fi
2266 . ./UU/checkcc
2267 if test ! -f config.sh; then
2268         $cat <<EOM
2269
2270 First time through, eh?  I have some defaults handy for some systems
2271 that need some extra help getting the Configure answers right:
2272
2273 EOM
2274         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2275         dflt=''
2276         : Half the following guesses are probably wrong... If you have better
2277         : tests or hints, please send them to perlbug@perl.com
2278         : The metaconfig authors would also appreciate a copy...
2279         $test -f /irix && osname=irix
2280         $test -f /xenix && osname=sco_xenix
2281         $test -f /dynix && osname=dynix
2282         $test -f /dnix && osname=dnix
2283         $test -f /lynx.os && osname=lynxos
2284         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2285         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2286         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2287         $test -f /bin/mips && /bin/mips && osname=mips
2288         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2289                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2290         $test -d /usr/apollo/bin && osname=apollo
2291         $test -f /etc/saf/_sactab && osname=svr4
2292         $test -d /usr/include/minix && osname=minix
2293         if $test -d /MachTen -o -d /MachTen_Folder; then
2294                 osname=machten
2295                 if $test -x /sbin/version; then
2296                         osvers=`/sbin/version | $awk '{print $2}' |
2297                         $sed -e 's/[A-Za-z]$//'`
2298                 elif $test -x /usr/etc/version; then
2299                         osvers=`/usr/etc/version | $awk '{print $2}' |
2300                         $sed -e 's/[A-Za-z]$//'`
2301                 else
2302                         osvers="$2.$3"
2303                 fi
2304         fi
2305
2306         $test -f /sys/posix.dll &&
2307                 $test -f /usr/bin/what &&
2308                 set X `/usr/bin/what /sys/posix.dll` &&
2309                 $test "$3" = UWIN &&
2310                 osname=uwin &&
2311                 osvers="$5"
2312
2313         if $test -f $uname; then
2314                 set X $myuname
2315                 shift
2316
2317                 case "$5" in
2318                 fps*) osname=fps ;;
2319                 mips*)
2320                         case "$4" in
2321                         umips) osname=umips ;;
2322                         *) osname=mips ;;
2323                         esac;;
2324                 [23]100) osname=mips ;;
2325                 next*) osname=next ;;
2326                 i386*)
2327                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2328                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2329                                 osname='sco'
2330                                 osvers=$tmp
2331                         elif $test -f /etc/kconfig; then
2332                                 osname=isc
2333                                 if test "$lns" = "$ln -s"; then
2334                                         osvers=4
2335                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2336                                         osvers=3
2337                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2338                                         osvers=2
2339                                 fi
2340                         fi
2341                         tmp=''
2342                         ;;
2343                 pc*)
2344                         if test -n "$DJGPP"; then
2345                                 osname=dos
2346                                 osvers=djgpp
2347                         fi
2348                         ;;
2349                 esac
2350
2351                 case "$1" in
2352                 aix) osname=aix
2353                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2354                         case "$tmp" in
2355                         'not found') osvers="$4"."$3" ;;
2356                         '<3240'|'<>3240') osvers=3.2.0 ;;
2357                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2358                         '=3250'|'>3250') osvers=3.2.5 ;;
2359                         *) osvers=$tmp;;
2360                         esac
2361                         ;;
2362                 bsd386) osname=bsd386
2363                         osvers=`$uname -r`
2364                         ;;
2365                 cygwin*) osname=cygwin
2366                         osvers="$3"
2367                         ;;
2368                 *dc.osx) osname=dcosx
2369                         osvers="$3"
2370                         ;;
2371                 dnix) osname=dnix
2372                         osvers="$3"
2373                         ;;
2374                 domainos) osname=apollo
2375                         osvers="$3"
2376                         ;;
2377                 dgux) osname=dgux 
2378                         osvers="$3"
2379                         ;;
2380                 dynixptx*) osname=dynixptx
2381                         osvers=`echo "$4"|sed 's/^v//'`
2382                         ;;
2383                 freebsd) osname=freebsd 
2384                         osvers="$3" ;;
2385                 genix) osname=genix ;;
2386                 hp*) osname=hpux 
2387                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2388                         ;;
2389                 irix*) osname=irix
2390                         case "$3" in
2391                         4*) osvers=4 ;;
2392                         5*) osvers=5 ;;
2393                         *)      osvers="$3" ;;
2394                         esac
2395                         ;;
2396                 linux) osname=linux
2397                         case "$3" in
2398                         *)      osvers="$3" ;;
2399                         esac
2400                         ;;
2401                 MiNT) osname=mint
2402                         ;;
2403                 netbsd*) osname=netbsd
2404                         osvers="$3"
2405                         ;;
2406                 news-os) osvers="$3"
2407                         case "$3" in
2408                         4*) osname=newsos4 ;;
2409                         *) osname=newsos ;;
2410                         esac
2411                         ;;
2412                 next*) osname=next ;;
2413                 POSIX-BC | posix-bc ) osname=posix-bc
2414                         osvers="$3"
2415                         ;;
2416                 powerux | power_ux | powermax_os | powermaxos | \
2417                 powerunix | power_unix) osname=powerux
2418                         osvers="$3"
2419                         ;;
2420                 qnx) osname=qnx
2421                         osvers="$4"
2422                         ;;
2423                 solaris) osname=solaris
2424                         case "$3" in
2425                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2426                         *)      osvers="$3" ;;
2427                         esac
2428                         ;;
2429                 sunos) osname=sunos
2430                         case "$3" in
2431                         5*) osname=solaris
2432                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2433                         *)      osvers="$3" ;;
2434                         esac
2435                         ;;
2436                 titanos) osname=titanos
2437                         case "$3" in
2438                         1*) osvers=1 ;;
2439                         2*) osvers=2 ;;
2440                         3*) osvers=3 ;;
2441                         4*) osvers=4 ;;
2442                         *)      osvers="$3" ;;
2443                         esac
2444                         ;;
2445                 ultrix) osname=ultrix
2446                         osvers="$3"
2447                         ;;
2448                 osf1|mls+)      case "$5" in
2449                                 alpha)
2450                                         osname=dec_osf
2451                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2452                                         case "$osvers" in
2453                                         [1-9].[0-9]*) ;;
2454                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2455                                         esac
2456                                         ;;
2457                         hp*)    osname=hp_osf1  ;;
2458                         mips)   osname=mips_osf1 ;;
2459                         esac
2460                         ;;
2461                 unixware) osname=svr5
2462                         osvers="$4"
2463                         ;;
2464                 uts) osname=uts
2465                         osvers="$3"
2466                         ;;
2467                 $2) case "$osname" in
2468                         *isc*) ;;
2469                         *freebsd*) ;;
2470                         svr*)
2471                                 : svr4.x or possibly later
2472                                 case "svr$3" in 
2473                                 ${osname}*)
2474                                         osname=svr$3
2475                                         osvers=$4
2476                                         ;;
2477                                 esac
2478                                 case "$osname" in
2479                                 svr4.0)
2480                                         : Check for ESIX
2481                                         if test -f /stand/boot ; then
2482                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2483                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2484                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2485                                                         if test -n "$isesix"; then
2486                                                                 osname=esix4
2487                                                         fi
2488                                                 fi
2489                                         fi
2490                                         ;;
2491                                 esac
2492                                 ;;
2493                         *)      if test -f /etc/systemid; then
2494                                         osname=sco
2495                                         set `echo $3 | $sed 's/\./ /g'` $4
2496                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2497                                                 osvers=$1.$2.$3
2498                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2499                                                 osvers=$1.$2
2500                                         elif $test -f $src/hints/sco_$1.sh; then
2501                                                 osvers=$1
2502                                         fi
2503                                 else
2504                                         case "$osname" in
2505                                         '') : Still unknown.  Probably a generic Sys V.
2506                                                 osname="sysv"
2507                                                 osvers="$3"
2508                                                 ;;
2509                                         esac
2510                                 fi
2511                                 ;;
2512                         esac
2513                         ;;
2514                 *)      case "$osname" in
2515                         '') : Still unknown.  Probably a generic BSD.
2516                                 osname="$1"
2517                                 osvers="$3"
2518                                 ;;
2519                         esac
2520                         ;;
2521                 esac
2522         else
2523                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2524                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2525                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2526                                 osname=news_os
2527                         fi
2528                         $rm -f UU/kernel.what
2529                 elif test -d c:/.; then
2530                         set X $myuname
2531                         osname=os2
2532                         osvers="$5"
2533                 fi
2534         fi
2535         
2536         : Now look for a hint file osname_osvers, unless one has been
2537         : specified already.
2538         case "$hintfile" in
2539         ''|' ')
2540                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2541                 : Also try without trailing minor version numbers.
2542                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2543                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2544                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2545                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2546                 case "$file" in
2547                 '') dflt=none ;;
2548                 *)  case "$osvers" in
2549                         '') dflt=$file
2550                                 ;;
2551                         *)  if $test -f $src/hints/$file.sh ; then
2552                                         dflt=$file
2553                                 elif $test -f $src/hints/$xfile.sh ; then
2554                                         dflt=$xfile
2555                                 elif $test -f $src/hints/$xxfile.sh ; then
2556                                         dflt=$xxfile
2557                                 elif $test -f $src/hints/$xxxfile.sh ; then
2558                                         dflt=$xxxfile
2559                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2560                                         dflt=$xxxxfile
2561                                 elif $test -f "$src/hints/${osname}.sh" ; then
2562                                         dflt="${osname}"
2563                                 else
2564                                         dflt=none
2565                                 fi
2566                                 ;;
2567                         esac
2568                         ;;
2569                 esac
2570                 if $test -f Policy.sh ; then
2571                         case "$dflt" in
2572                         *Policy*) ;;
2573                         none) dflt="Policy" ;;
2574                         *) dflt="Policy $dflt" ;;
2575                         esac
2576                 fi
2577                 ;;
2578         *)
2579                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2580                 ;;
2581         esac
2582
2583         if $test -f Policy.sh ; then
2584                 $cat <<EOM
2585
2586 There's also a Policy hint file available, which should make the
2587 site-specific (policy) questions easier to answer.
2588 EOM
2589
2590         fi
2591
2592         $cat <<EOM
2593
2594 You may give one or more space-separated answers, or "none" if appropriate.
2595 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2596 is a good thing.  DO NOT give a wrong version or a wrong OS.
2597
2598 EOM
2599
2600         rp="Which of these apply, if any?"
2601         . UU/myread
2602         tans=$ans
2603         for file in $tans; do
2604                 if $test X$file = XPolicy -a -f Policy.sh; then
2605                         . Policy.sh
2606                         $cat Policy.sh >> UU/config.sh
2607                 elif $test -f $src/hints/$file.sh; then
2608                         . $src/hints/$file.sh
2609                         $cat $src/hints/$file.sh >> UU/config.sh
2610                 elif $test X$tans = X -o X$tans = Xnone ; then
2611                         : nothing
2612                 else
2613                         : Give one chance to correct a possible typo.
2614                         echo "$file.sh does not exist"
2615                         dflt=$file
2616                         rp="hint to use instead?"
2617                         . UU/myread
2618                         for file in $ans; do
2619                                 if $test -f "$src/hints/$file.sh"; then
2620                                         . $src/hints/$file.sh
2621                                         $cat $src/hints/$file.sh >> UU/config.sh
2622                                 elif $test X$ans = X -o X$ans = Xnone ; then
2623                                         : nothing
2624                                 else
2625                                         echo "$file.sh does not exist -- ignored."
2626                                 fi
2627                         done
2628                 fi
2629         done
2630
2631         hint=recommended
2632         : Remember our hint file for later.
2633         if $test -f "$src/hints/$file.sh" ; then
2634                 hintfile="$file"
2635         else
2636                 hintfile=''
2637         fi
2638 fi
2639 cd UU
2640 ;;
2641 *)
2642         echo " "
2643         echo "Fetching default answers from $config_sh..." >&4
2644         tmp_n="$n"
2645         tmp_c="$c"
2646         cd ..
2647         cp $config_sh config.sh 2>/dev/null
2648         chmod +w config.sh
2649         . ./config.sh
2650         cd UU
2651         cp ../config.sh .
2652         n="$tmp_n"
2653         c="$tmp_c"
2654         hint=previous
2655         ;;
2656 esac
2657 test "$override" && . ./optdef.sh
2658 myuname="$newmyuname"
2659
2660 : Restore computed paths
2661 for file in $loclist $trylist; do
2662         eval $file="\$_$file"
2663 done
2664
2665 cat << EOM
2666
2667 Configure uses the operating system name and version to set some defaults.
2668 The default value is probably right if the name rings a bell. Otherwise,
2669 since spelling matters for me, either accept the default or answer "none"
2670 to leave it blank.
2671
2672 EOM
2673 case "$osname" in
2674         ''|' ')
2675                 case "$hintfile" in
2676                 ''|' '|none) dflt=none ;;
2677                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2678                 esac
2679                 ;;
2680         *) dflt="$osname" ;;
2681 esac
2682 rp="Operating system name?"
2683 . ./myread
2684 case "$ans" in
2685 none)  osname='' ;;
2686 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2687 esac
2688 echo " "
2689 case "$osvers" in
2690         ''|' ')
2691                 case "$hintfile" in
2692                 ''|' '|none) dflt=none ;;
2693                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2694                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2695                         case "$dflt" in
2696                         ''|' ') dflt=none ;;
2697                         esac
2698                         ;;
2699                 esac
2700                 ;;
2701         *) dflt="$osvers" ;;
2702 esac
2703 rp="Operating system version?"
2704 . ./myread
2705 case "$ans" in
2706 none)  osvers='' ;;
2707 *) osvers="$ans" ;;
2708 esac
2709
2710
2711 . ./posthint.sh
2712
2713 : who configured the system
2714 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2715 cf_by=`(logname) 2>/dev/null`
2716 case "$cf_by" in
2717 "")
2718         cf_by=`(whoami) 2>/dev/null`
2719         case "$cf_by" in
2720         "") cf_by=unknown ;;
2721         esac ;;
2722 esac
2723
2724 : set up the script used to warn in case of inconsistency
2725 cat <<EOS >whoa
2726 $startsh
2727 EOS
2728 cat <<'EOSC' >>whoa
2729 dflt=y
2730 echo " "
2731 echo "*** WHOA THERE!!! ***" >&4
2732 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2733 rp="    Keep the $hint value?"
2734 . ./myread
2735 case "$ans" in
2736 y) td=$was; tu=$was;;
2737 esac
2738 EOSC
2739
2740 : function used to set $1 to $val
2741 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2742 case "$val$was" in
2743 $define$undef) . ./whoa; eval "$var=\$td";;
2744 $undef$define) . ./whoa; eval "$var=\$tu";;
2745 *) eval "$var=$val";;
2746 esac'
2747
2748 case "$usethreads" in
2749 $define|true|[yY]*)     dflt='y';;
2750 *) dflt='n';;
2751 esac
2752 cat <<EOM
2753
2754 Perl can be built to take advantage of threads on some systems.
2755 To do so, Configure can be run with -Dusethreads.
2756
2757 Note that threading is a highly experimental feature, and
2758 some known race conditions still remain.  If you choose to try
2759 it, be very sure to not actually deploy it for production
2760 purposes.  README.threads has more details, and is required
2761 reading if you enable threads.
2762
2763 If this doesn't make any sense to you, just accept the default '$dflt'.
2764 EOM
2765 rp='Build a threading Perl?'
2766 . ./myread
2767 case "$ans" in
2768 y|Y)    val="$define" ;;
2769 *)      val="$undef" ;;
2770 esac
2771 set usethreads
2772 eval $setvar
2773
2774 case "$usethreads" in
2775 $define)
2776         $cat <<EOM
2777
2778 As of 5.5.640, Perl has two different internal threading implementations,
2779 the 5.005 version (5005threads) and an interpreter-based version
2780 (ithreads) that has one interpreter per thread.  Both are very 
2781 experimental.  This arrangement exists to help developers work out
2782 which one is better.
2783
2784 If you're a casual user, you probably don't want interpreter-threads
2785 at this time.  There doesn't yet exist a way to create threads from
2786 within Perl in this model, i.e., "use Thread;" will NOT work.
2787 EOM
2788         : Default to ithreads unless overridden on command line or with
2789         : old config.sh
2790         dflt='y'
2791         case "$use5005threads" in
2792                 $define|true|[yY]*) dflt='n';;
2793         esac
2794         case "$useithreads" in
2795                 $undef|false|[nN]*) dflt='n';;
2796         esac
2797         rp='Use interpreter-based ithreads?'
2798         . ./myread
2799         case "$ans" in
2800         y|Y)    val="$define" ;;
2801         *)      val="$undef" ;;
2802         esac
2803         set useithreads
2804         eval $setvar
2805         : Now set use5005threads to the opposite value.
2806         case "$useithreads" in
2807         $define) val="$undef" ;;
2808         *) val="$define" ;;
2809         esac
2810         set use5005threads
2811         eval $setvar
2812         ;;
2813 *)
2814         useithreads="$undef"
2815         use5005threads="$undef"
2816         ;;
2817 esac
2818
2819 case "$d_oldpthreads" in
2820 '')     : Configure tests would be welcome here.  For now, assume undef.
2821         val="$undef" ;;
2822 *)      val="$d_oldpthreads" ;;
2823 esac
2824 set d_oldpthreads
2825 eval $setvar
2826
2827
2828 case "$usethreads" in
2829 "$define"|true|[yY]*)
2830 : Look for a hint-file generated 'call-back-unit'.  If the
2831 : user has specified that a threading perl is to be built,
2832 : we may need to set or change some other defaults.
2833         if $test -f usethreads.cbu; then
2834                 echo "Your platform has some specific hints for threaded builds, using them..."
2835                 . ./usethreads.cbu
2836         else
2837                 $cat <<EOM
2838 (Your platform doesn't have any specific hints for threaded builds.
2839  Assuming POSIX threads, then.)
2840 EOM
2841         fi
2842         ;;
2843 esac
2844
2845 cat <<EOM
2846
2847 Perl can be built so that multiple Perl interpreters can coexist
2848 within the same Perl executable.
2849 EOM
2850
2851 case "$useithreads" in
2852 $define)
2853         cat <<EOM
2854 This multiple interpreter support is required for interpreter-based threads.
2855 EOM
2856         val="$define"
2857         ;;
2858 *)      case "$usemultiplicity" in
2859         $define|true|[yY]*)     dflt='y';;
2860         *) dflt='n';;
2861         esac
2862         echo " "
2863         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2864         rp='Build Perl for multiplicity?'
2865         . ./myread
2866         case "$ans" in
2867         y|Y)    val="$define" ;;
2868         *)      val="$undef" ;;
2869         esac
2870         ;;
2871 esac
2872 set usemultiplicity
2873 eval $setvar
2874
2875 : determine where manual pages are on this system
2876 echo " "
2877 case "$sysman" in
2878 '') 
2879         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2880         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2881         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2882         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2883         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2884         sysman=`./loc . /usr/man/man1 $syspath`
2885         ;;
2886 esac
2887 if $test -d "$sysman"; then
2888         echo "System manual is in $sysman." >&4
2889 else
2890         echo "Could not find manual pages in source form." >&4
2891 fi
2892
2893 : see what memory models we can support
2894 case "$models" in
2895 '')
2896         $cat >pdp11.c <<'EOP'
2897 int main() {
2898 #ifdef pdp11
2899         exit(0);
2900 #else
2901         exit(1);
2902 #endif
2903 }
2904 EOP
2905         case "$cc" in
2906         '') modelcc="$cc" ;;
2907         *) modelcc="cc" ;;
2908         esac
2909         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2910         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2911                 dflt='unsplit split'
2912         else
2913                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2914                 case "$tans" in
2915                 X) dflt='none';;
2916                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2917                                 dflt='small'
2918                         else
2919                                 dflt=''
2920                         fi
2921                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2922                                 dflt="$dflt medium"
2923                         fi
2924                         if $test -d /lib/large || $test -d /usr/lib/large; then
2925                                 dflt="$dflt large"
2926                         fi
2927                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2928                                 dflt="$dflt huge"
2929                         fi
2930                 esac
2931         fi;;
2932 *) dflt="$models";;
2933 esac
2934 $cat <<EOM
2935  
2936 Some systems have different model sizes.  On most systems they are called
2937 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2938 split.  If your system doesn't support different memory models, say "none".
2939 If you wish to force everything to one memory model, say "none" here and
2940 put the appropriate flags later when it asks you for other cc and ld flags.
2941 Venix systems may wish to put "none" and let the compiler figure things out.
2942 (In the following question multiple model names should be space separated.)
2943
2944 The default for most systems is "none".
2945
2946 EOM
2947 rp="Which memory models are supported?"
2948 . ./myread
2949 models="$ans"
2950
2951 case "$models" in
2952 none)
2953         small=''
2954         medium=''
2955         large=''
2956         huge=''
2957         unsplit=''
2958         split=''
2959         ;;
2960 *split)
2961         case "$split" in
2962         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2963                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2964                         dflt='-i'
2965                 else
2966                         dflt='none'
2967                 fi;;
2968         *) dflt="$split";;
2969         esac
2970         rp="What flag indicates separate I and D space?"
2971         . ./myread
2972         tans="$ans"
2973         case "$tans" in
2974         none) tans='';;
2975         esac
2976         split="$tans"
2977         unsplit='';;
2978 *large*|*small*|*medium*|*huge*)
2979         case "$models" in
2980         *large*)
2981                 case "$large" in
2982                 '') dflt='-Ml';;
2983                 *) dflt="$large";;
2984                 esac
2985         rp="What flag indicates large model?"
2986         . ./myread
2987         tans="$ans"
2988         case "$tans" in
2989         none) tans='';
2990         esac
2991         large="$tans";;
2992         *) large='';;
2993         esac
2994         case "$models" in
2995         *huge*) case "$huge" in
2996                 '') dflt='-Mh';;
2997                 *) dflt="$huge";;
2998                 esac
2999                 rp="What flag indicates huge model?"
3000                 . ./myread
3001                 tans="$ans"
3002                 case "$tans" in
3003                 none) tans='';
3004                 esac
3005                 huge="$tans";;
3006         *) huge="$large";;
3007         esac
3008         case "$models" in
3009         *medium*) case "$medium" in
3010                 '') dflt='-Mm';;
3011                 *) dflt="$medium";;
3012                 esac
3013                 rp="What flag indicates medium model?"
3014                 . ./myread
3015                 tans="$ans"
3016                 case "$tans" in
3017                 none) tans='';
3018                 esac
3019                 medium="$tans";;
3020         *) medium="$large";;
3021         esac
3022         case "$models" in
3023         *small*) case "$small" in
3024                 '') dflt='none';;
3025                 *) dflt="$small";;
3026                 esac
3027                 rp="What flag indicates small model?"
3028                 . ./myread
3029                 tans="$ans"
3030                 case "$tans" in
3031                 none) tans='';
3032                 esac
3033                 small="$tans";;
3034         *) small='';;
3035         esac
3036         ;;
3037 *)
3038         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3039         ;;
3040 esac
3041 $rm -f pdp11.* pdp11
3042
3043 : make some quick guesses about what we are up against
3044 echo " "
3045 $echo $n "Hmm...  $c"
3046 echo exit 1 >bsd
3047 echo exit 1 >usg
3048 echo exit 1 >v7
3049 echo exit 1 >osf1
3050 echo exit 1 >eunice
3051 echo exit 1 >xenix
3052 echo exit 1 >venix
3053 echo exit 1 >os2
3054 d_bsd="$undef"
3055 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3056 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3057 then
3058         echo "Looks kind of like an OSF/1 system, but we'll see..."
3059         echo exit 0 >osf1
3060 elif test `echo abc | tr a-z A-Z` = Abc ; then
3061         xxx=`./loc addbib blurfl $pth`
3062         if $test -f $xxx; then
3063         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3064                 echo exit 0 >bsd
3065                 echo exit 0 >usg
3066         else
3067                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3068                         echo "Looks kind of like an extended USG system, but we'll see..."
3069                 else
3070                         echo "Looks kind of like a USG system, but we'll see..."
3071                 fi
3072                 echo exit 0 >usg
3073         fi
3074 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3075         echo "Looks kind of like a BSD system, but we'll see..."
3076         d_bsd="$define"
3077         echo exit 0 >bsd
3078 else
3079         echo "Looks kind of like a Version 7 system, but we'll see..."
3080         echo exit 0 >v7
3081 fi
3082 case "$eunicefix" in
3083 *unixtovms*)
3084         $cat <<'EOI'
3085 There is, however, a strange, musty smell in the air that reminds me of
3086 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3087 EOI
3088         echo exit 0 >eunice
3089         d_eunice="$define"
3090 : it so happens the Eunice I know will not run shell scripts in Unix format
3091         ;;
3092 *)
3093         echo " "
3094         echo "Congratulations.  You aren't running Eunice."
3095         d_eunice="$undef"
3096         ;;
3097 esac
3098 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3099 case "$p_" in
3100 :) ;;
3101 *)
3102         $cat <<'EOI'
3103 I have the feeling something is not exactly right, however...don't tell me...
3104 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3105 EOI
3106         echo exit 0 >os2
3107         ;;
3108 esac
3109 if test -f /xenix; then
3110         echo "Actually, this looks more like a XENIX system..."
3111         echo exit 0 >xenix
3112         d_xenix="$define"
3113 else
3114         echo " "
3115         echo "It's not Xenix..."
3116         d_xenix="$undef"
3117 fi
3118 chmod +x xenix
3119 $eunicefix xenix
3120 if test -f /venix; then
3121         echo "Actually, this looks more like a VENIX system..."
3122         echo exit 0 >venix
3123 else
3124         echo " "
3125         if ./xenix; then
3126                 : null
3127         else
3128                 echo "Nor is it Venix..."
3129         fi
3130 fi
3131 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3132 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3133 $rm -f foo
3134
3135 : see if we need a special compiler
3136 echo " "
3137 if ./usg; then
3138         case "$cc" in
3139         '') case "$Mcc" in
3140                 /*) dflt='Mcc';;
3141                 *) case "$large" in
3142                         -M*) dflt='cc';;
3143                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3144                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3145                                                 dflt='cc'
3146                                         else
3147                                                 dflt='cc -M'
3148                                         fi
3149                                 else
3150                                         dflt='cc'
3151                                 fi;;
3152                         esac;;
3153                 esac;;
3154         *)  dflt="$cc";;
3155         esac
3156         case "$dflt" in
3157         *M*)    $cat <<'EOM'
3158 On some older systems the default C compiler will not resolve multiple global
3159 references that happen to have the same name.  On some such systems the "Mcc"
3160 command may be used to force these to be resolved.  On other systems a "cc -M"
3161 command is required.  (Note that the -M flag on other systems indicates a
3162 memory model to use!) If you have the Gnu C compiler, you might wish to use
3163 that instead.
3164
3165 EOM
3166         ;;
3167         esac
3168         rp="Use which C compiler?"
3169         . ./myread
3170         cc="$ans"
3171 else
3172         case "$cc" in
3173         '') dflt=cc;;
3174         *) dflt="$cc";;
3175         esac
3176         rp="Use which C compiler?"
3177         . ./myread
3178         cc="$ans"
3179 fi
3180 : Look for a hint-file generated 'call-back-unit'.  Now that the
3181 : user has specified the compiler, we may need to set or change some
3182 : other defaults.
3183 if $test -f cc.cbu; then
3184     . ./cc.cbu
3185 fi
3186 . ./checkcc
3187
3188 echo " "
3189 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3190 $cat >gccvers.c <<EOM
3191 #include <stdio.h>
3192 int main() {
3193 #ifdef __GNUC__
3194 #ifdef __VERSION__
3195         printf("%s\n", __VERSION__);
3196 #else
3197         printf("%s\n", "1");
3198 #endif
3199 #endif
3200         exit(0);
3201 }
3202 EOM
3203 if $cc $ldflags -o gccvers gccvers.c; then
3204         gccversion=`./gccvers`
3205         case "$gccversion" in
3206         '') echo "You are not using GNU cc." ;;
3207         *)  echo "You are using GNU cc $gccversion."
3208             ;;
3209         esac
3210 else
3211         echo " "
3212         echo "*** WHOA THERE!!! ***" >&4
3213         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3214         case "$knowitall" in
3215         '')
3216         echo "    You'd better start hunting for one and let me know about it." >&4
3217                 exit 1
3218                 ;;
3219         esac
3220 fi
3221 $rm -f gccvers*
3222 case "$gccversion" in
3223 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3224 esac
3225 case "$gccversion" in
3226 '') gccosandvers='' ;;
3227 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3228    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3229    gccshortvers=''
3230    case "$gccosandvers" in
3231    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3232    $osname$osvers) ;; # looking good
3233    $osname*) cat <<EOM >&4
3234
3235 *** WHOA THERE!!! ***
3236
3237     Your gcc has not been compiled for the exact release of
3238     your operating system ($gccosandvers versus $osname$osvers).
3239
3240     In general it is a good idea to keep gcc synchronized with
3241     the operating system because otherwise serious problems
3242     may ensue when trying to compile software, like Perl.
3243
3244     I'm trying to be optimistic here, though, and will continue.
3245     If later during the configuration and build icky compilation
3246     problems appear (headerfile conflicts being the most common
3247     manifestation), I suggest reinstalling the gcc to match
3248     your operating system release.
3249
3250 EOM
3251       ;;
3252    *) gccosandvers='' ;; # failed to parse, better be silent
3253    esac
3254    ;;
3255 esac
3256
3257
3258
3259
3260 : see how we invoke the C preprocessor
3261 echo " "
3262 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3263 cat <<'EOT' >testcpp.c
3264 #define ABC abc
3265 #define XYZ xyz
3266 ABC.XYZ
3267 EOT
3268 cd ..
3269 if test ! -f cppstdin; then
3270         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3271                 # AIX cc -E doesn't show the absolute headerfile
3272                 # locations but we'll cheat by using the -M flag.
3273                 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
3274         else
3275                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3276         fi
3277 else
3278         echo "Keeping your $hint cppstdin wrapper."
3279 fi
3280 chmod 755 cppstdin
3281 wrapper=`pwd`/cppstdin
3282 ok='false'
3283 cd UU
3284
3285 if $test "X$cppstdin" != "X" && \
3286         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3287         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3288 then
3289         echo "You used to use $cppstdin $cppminus so we'll use that again."
3290         case "$cpprun" in
3291         '') echo "But let's see if we can live without a wrapper..." ;;
3292         *)
3293                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3294                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3295                 then
3296                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3297                         ok='true'
3298                 else
3299                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3300                 fi
3301                 ;;
3302         esac
3303 else
3304         case "$cppstdin" in
3305         '') ;;
3306         *)
3307                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3308                 ;;
3309         esac
3310 fi
3311
3312 if $ok; then
3313         : nothing
3314 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3315         $cc -E <testcpp.c >testcpp.out 2>&1; \
3316         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3317         echo "Yup, it does."
3318         x_cpp="$cc -E"
3319         x_minus='';
3320 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3321         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3322         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3323         echo "Yup, it does."
3324         x_cpp="$cc -E"
3325         x_minus='-';
3326 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3327         $cc -P <testcpp.c >testcpp.out 2>&1; \
3328         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3329         echo "Yipee, that works!"
3330         x_cpp="$cc -P"
3331         x_minus='';
3332 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3333         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3334         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3335         echo "At long last!"
3336         x_cpp="$cc -P"
3337         x_minus='-';
3338 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3339         $cpp <testcpp.c >testcpp.out 2>&1; \
3340         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3341         echo "It works!"
3342         x_cpp="$cpp"
3343         x_minus='';
3344 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3345         $cpp - <testcpp.c >testcpp.out 2>&1; \
3346         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3347         echo "Hooray, it works!  I was beginning to wonder."
3348         x_cpp="$cpp"
3349         x_minus='-';
3350 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3351         $wrapper <testcpp.c >testcpp.out 2>&1; \
3352         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3353         x_cpp="$wrapper"
3354         x_minus=''
3355         echo "Eureka!"
3356 else
3357         dflt=''
3358         rp="No dice.  I can't find a C preprocessor.  Name one:"
3359         . ./myread
3360         x_cpp="$ans"
3361         x_minus=''
3362         $x_cpp <testcpp.c >testcpp.out 2>&1
3363         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3364                 echo "OK, that will do." >&4
3365         else
3366 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3367                 exit 1
3368         fi
3369 fi
3370
3371 case "$ok" in
3372 false)
3373         cppstdin="$x_cpp"
3374         cppminus="$x_minus"
3375         cpprun="$x_cpp"
3376         cpplast="$x_minus"
3377         set X $x_cpp
3378         shift
3379         case "$1" in
3380         "$cpp")
3381                 echo "Perhaps can we force $cc -E using a wrapper..."
3382                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3383                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3384                 then
3385                         echo "Yup, we can."
3386                         cppstdin="$wrapper"
3387                         cppminus='';
3388                 else
3389                         echo "Nope, we'll have to live without it..."
3390                 fi
3391                 ;;
3392         esac
3393         case "$cpprun" in
3394         "$wrapper")
3395                 cpprun=''
3396                 cpplast=''
3397                 ;;
3398         esac
3399         ;;
3400 esac
3401
3402 case "$cppstdin" in
3403 "$wrapper"|'cppstdin') ;;
3404 *) $rm -f $wrapper;;
3405 esac
3406 $rm -f testcpp.c testcpp.out
3407
3408 : decide how portable to be.  Allow command line overrides.
3409 case "$d_portable" in
3410 "$undef") ;;
3411 *)      d_portable="$define" ;;
3412 esac
3413
3414 : set up shell script to do ~ expansion
3415 cat >filexp <<EOSS
3416 $startsh
3417 : expand filename
3418 case "\$1" in
3419  ~/*|~)
3420         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3421         ;;
3422  ~*)
3423         if $test -f /bin/csh; then
3424                 /bin/csh -f -c "glob \$1"
3425                 failed=\$?
3426                 echo ""
3427                 exit \$failed
3428         else
3429                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3430                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3431                 if $test ! -d "\$dir"; then
3432                         me=\`basename \$0\`
3433                         echo "\$me: can't locate home directory for: \$name" >&2
3434                         exit 1
3435                 fi
3436                 case "\$1" in
3437                 */*)
3438                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3439                         ;;
3440                 *)
3441                         echo \$dir
3442                         ;;
3443                 esac
3444         fi
3445         ;;
3446 *)
3447         echo \$1
3448         ;;
3449 esac
3450 EOSS
3451 chmod +x filexp
3452 $eunicefix filexp
3453
3454 : now set up to get a file name
3455 cat <<EOS >getfile
3456 $startsh
3457 EOS
3458 cat <<'EOSC' >>getfile
3459 tilde=''
3460 fullpath=''
3461 already=''
3462 skip=''
3463 none_ok=''
3464 exp_file=''
3465 nopath_ok=''
3466 orig_rp="$rp"
3467 orig_dflt="$dflt"
3468 case "$gfpth" in
3469 '') gfpth='.' ;;
3470 esac
3471
3472 case "$fn" in
3473 *\(*)
3474         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3475         fn=`echo $fn | sed 's/(.*)//'`
3476         ;;
3477 esac
3478
3479 case "$fn" in
3480 *:*)
3481         loc_file=`expr $fn : '.*:\(.*\)'`
3482         fn=`expr $fn : '\(.*\):.*'`
3483         ;;
3484 esac
3485
3486 case "$fn" in
3487 *~*) tilde=true;;
3488 esac
3489 case "$fn" in
3490 */*) fullpath=true;;
3491 esac
3492 case "$fn" in
3493 *+*) skip=true;;
3494 esac
3495 case "$fn" in
3496 *n*) none_ok=true;;
3497 esac
3498 case "$fn" in
3499 *e*) exp_file=true;;
3500 esac
3501 case "$fn" in
3502 *p*) nopath_ok=true;;
3503 esac
3504
3505 case "$fn" in
3506 *f*) type='File';;
3507 *d*) type='Directory';;
3508 *l*) type='Locate';;
3509 esac
3510
3511 what="$type"
3512 case "$what" in
3513 Locate) what='File';;
3514 esac
3515
3516 case "$exp_file" in
3517 '')
3518         case "$d_portable" in
3519         "$define") ;;
3520         *) exp_file=true;;
3521         esac
3522         ;;
3523 esac
3524
3525 cd ..
3526 while test "$type"; do
3527         redo=''
3528         rp="$orig_rp"
3529         dflt="$orig_dflt"
3530         case "$tilde" in
3531         true) rp="$rp (~name ok)";;
3532         esac
3533         . UU/myread
3534         if test -f UU/getfile.ok && \
3535                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3536         then
3537                 value="$ans"
3538                 ansexp="$ans"
3539                 break
3540         fi
3541         case "$ans" in
3542         none)
3543                 value=''
3544                 ansexp=''
3545                 case "$none_ok" in
3546                 true) type='';;
3547                 esac
3548                 ;;
3549         *)
3550                 case "$tilde" in
3551                 '') value="$ans"
3552                         ansexp="$ans";;
3553                 *)
3554                         value=`UU/filexp $ans`
3555                         case $? in
3556                         0)
3557                                 if test "$ans" != "$value"; then
3558                                         echo "(That expands to $value on this system.)"
3559                                 fi
3560                                 ;;
3561                         *) value="$ans";;
3562                         esac
3563                         ansexp="$value"
3564                         case "$exp_file" in
3565                         '') value="$ans";;
3566                         esac
3567                         ;;
3568                 esac
3569                 case "$fullpath" in
3570                 true)
3571                         case "$ansexp" in
3572                         /*) value="$ansexp" ;;
3573                         [a-zA-Z]:/*) value="$ansexp" ;;
3574                         *)
3575                                 redo=true
3576                                 case "$already" in
3577                                 true)
3578                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3579                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3580                                         ;;
3581                                 *)
3582                                 echo "Please give a full path name, starting with slash." >&4
3583                                         case "$tilde" in
3584                                         true)
3585                                 echo "Note that using ~name is ok provided it expands well." >&4
3586                                                 already=true
3587                                                 ;;
3588                                         esac
3589                                 esac
3590                                 ;;
3591                         esac
3592                         ;;
3593                 esac
3594                 case "$redo" in
3595                 '')
3596                         case "$type" in
3597                         File)
3598                                 for fp in $gfpth; do
3599                                         if test "X$fp" = X.; then
3600                                             pf="$ansexp"
3601                                         else    
3602                                             pf="$fp/$ansexp"
3603                                         fi
3604                                         if test -f "$pf"; then
3605                                                 type=''
3606                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3607                                         then
3608                                                 echo "($value is not a plain file, but that's ok.)"
3609                                                 type=''
3610                                         fi
3611                                         if test X"$type" = X; then
3612                                             value="$pf"
3613                                             break
3614                                         fi
3615                                 done
3616                                 ;;
3617                         Directory)
3618                                 for fp in $gfpth; do
3619                                         if test "X$fp" = X.; then
3620                                             dir="$ans"
3621                                             direxp="$ansexp"
3622                                         else    
3623                                             dir="$fp/$ansexp"
3624                                             direxp="$fp/$ansexp"
3625                                         fi
3626                                         if test -d "$direxp"; then
3627                                                 type=''
3628                                                 value="$dir"
3629                                                 break
3630                                         fi
3631                                 done
3632                                 ;;
3633                         Locate)
3634                                 if test -d "$ansexp"; then
3635                                         echo "(Looking for $loc_file in directory $value.)"
3636                                         value="$value/$loc_file"
3637                                         ansexp="$ansexp/$loc_file"
3638                                 fi
3639                                 if test -f "$ansexp"; then
3640                                         type=''
3641                                 fi
3642                                 case "$nopath_ok" in
3643                                 true)   case "$value" in
3644                                         */*) ;;
3645                                         *)      echo "Assuming $value will be in people's path."
3646                                                 type=''
3647                                                 ;;
3648                                         esac
3649                                         ;;
3650                                 esac
3651                                 ;;
3652                         esac
3653
3654                         case "$skip" in
3655                         true) type='';
3656                         esac
3657
3658                         case "$type" in
3659                         '') ;;
3660                         *)
3661                                 if test "$fastread" = yes; then
3662                                         dflt=y
3663                                 else
3664                                         dflt=n
3665                                 fi
3666                                 rp="$what $value doesn't exist.  Use that name anyway?"
3667                                 . UU/myread
3668                                 dflt=''
3669                                 case "$ans" in
3670                                 y*) type='';;
3671                                 *) echo " ";;
3672                                 esac
3673                                 ;;
3674                         esac
3675                         ;;
3676                 esac
3677                 ;;
3678         esac
3679 done
3680 cd UU
3681 ans="$value"
3682 rp="$orig_rp"
3683 dflt="$orig_dflt"
3684 rm -f getfile.ok
3685 test "X$gfpthkeep" != Xy && gfpth=""
3686 EOSC
3687
3688 : What should the include directory be ?
3689 echo " "
3690 $echo $n "Hmm...  $c"
3691 dflt='/usr/include'
3692 incpath=''
3693 mips_type=''
3694 if $test -f /bin/mips && /bin/mips; then
3695         echo "Looks like a MIPS system..."
3696         $cat >usr.c <<'EOCP'
3697 #ifdef SYSTYPE_BSD43
3698 /bsd43
3699 #endif
3700 EOCP
3701         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3702                 dflt='/bsd43/usr/include'
3703                 incpath='/bsd43'
3704                 mips_type='BSD 4.3'
3705         else
3706                 mips_type='System V'
3707         fi
3708         $rm -f usr.c usr.out
3709         echo "and you're compiling with the $mips_type compiler and libraries."
3710         xxx_prompt=y
3711         echo "exit 0" >mips
3712 else
3713         echo "Doesn't look like a MIPS system."
3714         xxx_prompt=n
3715         echo "exit 1" >mips
3716 fi
3717 chmod +x mips
3718 $eunicefix mips
3719 case "$usrinc" in
3720 '') ;;
3721 *) dflt="$usrinc";;
3722 esac
3723 case "$xxx_prompt" in
3724 y)      fn=d/
3725         echo " "
3726         rp='Where are the include files you want to use?'
3727         . ./getfile
3728         usrinc="$ans"
3729         ;;
3730 *)      usrinc="$dflt"
3731         ;;
3732 esac
3733
3734 : Set private lib path
3735 case "$plibpth" in
3736 '') if ./mips; then
3737                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3738         fi;;
3739 esac
3740 case "$libpth" in
3741 ' ') dlist='';;
3742 '') dlist="$loclibpth $plibpth $glibpth";;
3743 *) dlist="$libpth";;
3744 esac
3745
3746 : Now check and see which directories actually exist, avoiding duplicates
3747 libpth=''
3748 for xxx in $dlist
3749 do
3750     if $test -d $xxx; then
3751                 case " $libpth " in
3752                 *" $xxx "*) ;;
3753                 *) libpth="$libpth $xxx";;
3754                 esac
3755     fi
3756 done
3757 $cat <<'EOM'
3758
3759 Some systems have incompatible or broken versions of libraries.  Among
3760 the directories listed in the question below, please remove any you
3761 know not to be holding relevant libraries, and add any that are needed.
3762 Say "none" for none.
3763
3764 EOM
3765 case "$libpth" in
3766 '') dflt='none';;
3767 *)
3768         set X $libpth
3769         shift
3770         dflt=${1+"$@"}
3771         ;;
3772 esac
3773 rp="Directories to use for library searches?"
3774 . ./myread
3775 case "$ans" in
3776 none) libpth=' ';;
3777 *) libpth="$ans";;
3778 esac
3779
3780 : compute shared library extension
3781 case "$so" in
3782 '')
3783         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3784                 dflt='sl'
3785         else
3786                 dflt='so'
3787         fi
3788         ;;
3789 *) dflt="$so";;
3790 esac
3791 $cat <<EOM
3792
3793 On some systems, shared libraries may be available.  Answer 'none' if
3794 you want to suppress searching of shared libraries for the remainder
3795 of this configuration.
3796
3797 EOM
3798 rp='What is the file extension used for shared libraries?'
3799 . ./myread
3800 so="$ans"
3801
3802 : Define several unixisms.
3803 : Hints files or command line option can be used to override them.
3804 : The convoluted testing is in case hints files set either the old
3805 : or the new name.
3806 case "$_exe" in
3807 '')     case "$exe_ext" in
3808     '') ;;
3809         *)      _exe="$exe_ext" ;;
3810         esac
3811         ;;
3812 esac
3813 case "$_a" in
3814 '')     case "$lib_ext" in
3815     '') _a='.a';;
3816         *)      _a="$lib_ext" ;;
3817         esac
3818         ;;
3819 esac
3820 case "$_o" in
3821 '') case "$obj_ext" in
3822         '')     _o='.o';;
3823         *)      _o="$obj_ext";;
3824         esac
3825         ;;
3826 esac
3827 case "$p_" in
3828 '') case "$path_sep" in
3829         '')     p_=':';;
3830         *)      p_="$path_sep";;
3831         esac
3832         ;;
3833 esac
3834 exe_ext=$_exe
3835 lib_ext=$_a
3836 obj_ext=$_o
3837 path_sep=$p_
3838
3839 : Which makefile gets called first.  This is used by make depend.
3840 case "$firstmakefile" in
3841 '') firstmakefile='makefile';;
3842 esac
3843
3844 case "$usesocks" in
3845 $define|true|[yY]*)     dflt='y';;
3846 *) dflt='n';;
3847 esac
3848 cat <<EOM
3849
3850 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3851 Configure must be run with -Dusesocks.
3852
3853 If this doesn't make any sense to you, just accept the default '$dflt'.
3854 EOM
3855 rp='Build Perl for SOCKS?'
3856 . ./myread
3857 case "$ans" in
3858 y|Y)    val="$define" ;;     
3859 *)      val="$undef" ;;
3860 esac
3861 set usesocks
3862 eval $setvar
3863
3864 : Looking for optional libraries
3865 echo " "
3866 echo "Checking for optional libraries..." >&4
3867 case "$libs" in
3868 ' '|'') dflt='';;
3869 *) dflt="$libs";;
3870 esac
3871 case "$libswanted" in
3872 '') libswanted='c_s';;
3873 esac
3874 case "$usesocks" in
3875 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3876 esac
3877 libsfound=''
3878 libsfiles=''
3879 libsdirs=''
3880 libspath=''
3881 for thisdir in $libpth $xlibpth; do
3882   test -d $thisdir && libspath="$libspath $thisdir"
3883 done
3884 for thislib in $libswanted; do
3885         for thisdir in $libspath; do
3886             xxx=''
3887             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3888                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3889                 $test -f "$xxx" && eval $libscheck
3890                 $test -f "$xxx" && libstyle=shared
3891             fi
3892             if test ! -f "$xxx"; then
3893                 xxx=$thisdir/lib$thislib.$so
3894                 $test -f "$xxx" && eval $libscheck
3895                 $test -f "$xxx" && libstyle=shared
3896             fi  
3897             if test ! -f "$xxx"; then
3898                 xxx=$thisdir/lib$thislib$_a
3899                 $test -f "$xxx" && eval $libscheck
3900                 $test -f "$xxx" && libstyle=static
3901             fi
3902             if test ! -f "$xxx"; then
3903                 xxx=$thisdir/$thislib$_a
3904                 $test -f "$xxx" && eval $libscheck
3905                 $test -f "$xxx" && libstyle=static
3906             fi
3907             if test ! -f "$xxx"; then
3908                 xxx=$thisdir/lib${thislib}_s$_a
3909                 $test -f "$xxx" && eval $libscheck
3910                 $test -f "$xxx" && libstyle=static
3911                 $test -f "$xxx" && thislib=${thislib}_s
3912             fi
3913             if test ! -f "$xxx"; then
3914                 xxx=$thisdir/Slib$thislib$_a
3915                 $test -f "$xxx" && eval $libscheck
3916                 $test -f "$xxx" && libstyle=static
3917             fi
3918             if $test -f "$xxx"; then
3919                 case "$libstyle" in
3920                 shared) echo "Found -l$thislib (shared)." ;;
3921                 static) echo "Found -l$thislib." ;;
3922                 *)      echo "Found -l$thislib ($libstyle)." ;;
3923                 esac
3924                 case " $dflt " in
3925                 *"-l$thislib "*);;
3926                 *) dflt="$dflt -l$thislib"
3927                    libsfound="$libsfound $xxx"
3928                    yyy=`basename $xxx`
3929                    libsfiles="$libsfiles $yyy"
3930                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3931                    case " $libsdirs " in
3932                    *" $yyy "*) ;;
3933                    *) libsdirs="$libsdirs $yyy" ;;
3934                    esac
3935                    ;;
3936                 esac
3937                 break
3938             fi  
3939         done
3940         if $test ! -f "$xxx"; then
3941             echo "No -l$thislib."
3942         fi
3943 done
3944 set X $dflt
3945 shift
3946 dflt="$*"
3947 case "$libs" in
3948 '') dflt="$dflt";;
3949 *) dflt="$libs";;
3950 esac
3951 case "$dflt" in
3952 ' '|'') dflt='none';;
3953 esac
3954
3955 $cat <<EOM
3956
3957 In order to compile $package on your machine, a number of libraries
3958 are usually needed.  Include any other special libraries here as well.
3959 Say "none" for none.  The default list is almost always right.
3960 EOM
3961
3962 echo " "
3963 rp="What libraries to use?"
3964 . ./myread
3965 case "$ans" in
3966 none) libs=' ';;
3967 *) libs="$ans";;
3968 esac
3969
3970 : determine optimization, if desired, or use for debug flag also
3971 case "$optimize" in
3972 ' '|$undef) dflt='none';;
3973 '') dflt='-O';;
3974 *) dflt="$optimize";;
3975 esac
3976 $cat <<EOH
3977
3978 By default, $package compiles with the -O flag to use the optimizer.
3979 Alternately, you might want to use the symbolic debugger, which uses
3980 the -g flag (on traditional Unix systems).  Either flag can be
3981 specified here.  To use neither flag, specify the word "none".
3982
3983 EOH
3984 rp="What optimizer/debugger flag should be used?"
3985 . ./myread
3986 optimize="$ans"
3987 case "$optimize" in
3988 'none') optimize=" ";;
3989 esac
3990
3991 dflt=''
3992 : We will not override a previous value, but we might want to
3993 : augment a hint file
3994 case "$hint" in
3995 default|recommended)
3996         case "$gccversion" in
3997         1*) dflt='-fpcc-struct-return' ;;
3998         esac
3999         case "$optimize" in
4000         *-g*) dflt="$dflt -DDEBUGGING";;
4001         esac
4002         case "$gccversion" in
4003         2*) if test -d /etc/conf/kconfig.d &&
4004                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4005                 then
4006                         dflt="$dflt -posix"
4007                 fi
4008                 ;;
4009         esac
4010         case "$gccversion" in
4011         1*) ;;
4012         2.[0-8]*) ;;
4013         ?*)     echo " "
4014                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4015                 echo 'int main(void) { return 0; }' > gcctest.c
4016                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4017                         echo "Yes, it does." 2>&1
4018                         case "$ccflags" in
4019                         *strict-aliasing*) 
4020                                 echo "Leaving current flags $ccflags alone." 2>&1
4021                                 ;;
4022                         *) dflt="$dflt -fno-strict-aliasing" ;;
4023                         esac
4024                 else
4025                         echo "Nope, it doesn't, but that's ok." 2>&1
4026                 fi
4027                 ;;
4028         esac
4029         ;;
4030 esac
4031
4032 case "$mips_type" in
4033 *BSD*|'') inclwanted="$locincpth $usrinc";;
4034 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4035 esac
4036 for thisincl in $inclwanted; do
4037         if $test -d $thisincl; then
4038                 if $test x$thisincl != x$usrinc; then
4039                         case "$dflt" in
4040                         *$thisincl*);;
4041                         *) dflt="$dflt -I$thisincl";;
4042                         esac
4043                 fi
4044         fi
4045 done
4046
4047 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4048         xxx=true;
4049 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4050         xxx=true;
4051 else
4052         xxx=false;
4053 fi;
4054 if $xxx; then
4055         case "$dflt" in
4056         *$2*);;
4057         *) dflt="$dflt -D$2";;
4058         esac;
4059 fi'
4060
4061 set signal.h LANGUAGE_C; eval $inctest
4062
4063 case "$usesocks" in
4064 $define)
4065         ccflags="$ccflags -DSOCKS"
4066         ;;
4067 esac
4068
4069 case "$hint" in
4070 default|recommended) dflt="$ccflags $dflt" ;;
4071 *) dflt="$ccflags";;
4072 esac
4073
4074 case "$dflt" in
4075 ''|' ') dflt=none;;
4076 esac
4077 $cat <<EOH
4078
4079 Your C compiler may want other flags.  For this question you should include
4080 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4081 but you should NOT include libraries or ld flags like -lwhatever.  If you
4082 want $package to honor its debug switch, you should include -DDEBUGGING here.
4083 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4084
4085 To use no flags, specify the word "none".
4086
4087 EOH
4088 set X $dflt
4089 shift
4090 dflt=${1+"$@"}
4091 rp="Any additional cc flags?"
4092 . ./myread
4093 case "$ans" in
4094 none) ccflags='';;
4095 *) ccflags="$ans";;
4096 esac
4097
4098 : the following weeds options from ccflags that are of no interest to cpp
4099 cppflags="$ccflags"
4100 case "$gccversion" in
4101 1*) cppflags="$cppflags -D__GNUC__"
4102 esac
4103 case "$mips_type" in
4104 '');;
4105 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4106 esac
4107 case "$cppflags" in
4108 '');;
4109 *)
4110         echo " "
4111         echo "Let me guess what the preprocessor flags are..." >&4
4112         set X $cppflags
4113         shift
4114         cppflags=''
4115         $cat >cpp.c <<'EOM'
4116 #define BLURFL foo
4117
4118 BLURFL xx LFRULB
4119 EOM
4120         previous=''
4121         for flag in $*
4122         do
4123                 case "$flag" in
4124                 -*) ftry="$flag";;
4125                 *) ftry="$previous $flag";;
4126                 esac
4127                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4128                         >cpp1.out 2>/dev/null && \
4129                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4130                         >cpp2.out 2>/dev/null && \
4131                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4132                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4133                 then
4134                         cppflags="$cppflags $ftry"
4135                         previous=''
4136                 else
4137                         previous="$flag"
4138                 fi
4139         done
4140         set X $cppflags
4141         shift
4142         cppflags=${1+"$@"}
4143         case "$cppflags" in
4144         *-*)  echo "They appear to be: $cppflags";;
4145         esac
4146         $rm -f cpp.c cpp?.out
4147         ;;
4148 esac
4149
4150 : flags used in final linking phase
4151 case "$ldflags" in
4152 '') if ./venix; then
4153                 dflt='-i -z'
4154         else
4155                 dflt=''
4156         fi
4157         case "$ccflags" in
4158         *-posix*) dflt="$dflt -posix" ;;
4159         esac
4160         ;;
4161 *) dflt="$ldflags";;
4162 esac
4163
4164 : Try to guess additional flags to pick up local libraries.
4165 for thislibdir in $libpth; do
4166         case " $loclibpth " in
4167         *" $thislibdir "*)
4168                 case "$dflt " in 
4169                 *"-L$thislibdir "*) ;;
4170                 *)  dflt="$dflt -L$thislibdir" ;;
4171                 esac
4172                 ;;
4173         esac
4174 done
4175
4176 case "$dflt" in
4177 '') dflt='none' ;;
4178 esac
4179
4180 $cat <<EOH
4181
4182 Your C linker may need flags.  For this question you should
4183 include -L/whatever and any other flags used by the C linker, but you
4184 should NOT include libraries like -lwhatever.
4185
4186 Make sure you include the appropriate -L/path flags if your C linker
4187 does not normally search all of the directories you specified above,
4188 namely
4189         $libpth
4190 To use no flags, specify the word "none".
4191
4192 EOH
4193
4194 rp="Any additional ld flags (NOT including libraries)?"
4195 . ./myread
4196 case "$ans" in
4197 none) ldflags='';;
4198 *) ldflags="$ans";;
4199 esac
4200 rmlist="$rmlist pdp11"
4201
4202 : coherency check
4203 echo " "
4204 echo "Checking your choice of C compiler and flags for coherency..." >&4
4205 $cat > try.c <<'EOF'
4206 #include <stdio.h>
4207 int main() { printf("Ok\n"); exit(0); }
4208 EOF
4209 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4210 shift
4211 $cat >try.msg <<'EOM'
4212 I've tried to compile and run the following simple program:
4213
4214 EOM
4215 $cat try.c >> try.msg
4216
4217 $cat >> try.msg <<EOM
4218
4219 I used the command:
4220
4221         $*
4222         ./try
4223
4224 and I got the following output:
4225
4226 EOM
4227 dflt=y
4228 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4229         if sh -c './try' >>try.msg 2>&1; then
4230                 xxx=`./try`
4231                 case "$xxx" in
4232                 "Ok") dflt=n ;;
4233                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4234                         case " $libs " in
4235                         *" -lsfio "*)
4236                                 cat >> try.msg <<'EOQS'
4237 If $libs contains -lsfio, and sfio is mis-configured, then it
4238 sometimes (apparently) runs and exits with a 0 status, but with no
4239 output!  It may have to do with sfio's use of _exit vs. exit.
4240
4241 EOQS
4242                                 rp="You have a big problem.  Shall I abort Configure"
4243                                 dflt=y
4244                                 ;;
4245                         esac
4246                         ;;
4247                 esac
4248         else
4249                 echo "The program compiled OK, but exited with status $?." >>try.msg
4250                 rp="You have a problem.  Shall I abort Configure"
4251                 dflt=y
4252         fi
4253 else
4254         echo "I can't compile the test program." >>try.msg
4255         rp="You have a BIG problem.  Shall I abort Configure"
4256         dflt=y
4257 fi
4258 case "$dflt" in
4259 y)
4260         $cat try.msg >&4
4261         case "$knowitall" in
4262         '')
4263                 echo "(The supplied flags or libraries might be incorrect.)"
4264                 ;;
4265         *) dflt=n;;
4266         esac
4267         echo " "
4268         . ./myread
4269         case "$ans" in
4270         n*|N*) ;;
4271         *)      echo "Ok.  Stopping Configure." >&4
4272                 exit 1
4273                 ;;
4274         esac
4275         ;;
4276 n) echo "OK, that should do.";;
4277 esac
4278 $rm -f try try.* core
4279
4280 : define an is-a-typedef? function
4281 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4282 case "$inclist" in
4283 "") inclist="sys/types.h";;
4284 esac;
4285 eval "varval=\$$var";
4286 case "$varval" in
4287 "")
4288         $rm -f temp.c;
4289         for inc in $inclist; do
4290                 echo "#include <$inc>" >>temp.c;
4291         done;
4292         echo "#ifdef $type" >> temp.c;
4293         echo "printf(\"We have $type\");" >> temp.c;
4294         echo "#endif" >> temp.c;
4295         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4296         if $contains $type temp.E >/dev/null 2>&1; then
4297                 eval "$var=\$type";
4298         else
4299                 eval "$var=\$def";
4300         fi;
4301         $rm -f temp.?;;
4302 *) eval "$var=\$varval";;
4303 esac'
4304
4305 : define an is-a-typedef? function that prompts if the type is not available.
4306 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4307 case "$inclist" in
4308 "") inclist="sys/types.h";;
4309 esac;
4310 eval "varval=\$$var";
4311 case "$varval" in
4312 "")
4313         $rm -f temp.c;
4314         for inc in $inclist; do
4315                 echo "#include <$inc>" >>temp.c;
4316         done;
4317         echo "#ifdef $type" >> temp.c;
4318         echo "printf(\"We have $type\");" >> temp.c;
4319         echo "#endif" >> temp.c;
4320         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4321         echo " " ;
4322         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4323         if $contains $type temp.E >/dev/null 2>&1; then
4324                 echo "$type found." >&4;
4325                 eval "$var=\$type";
4326         else
4327                 echo "$type NOT found." >&4;
4328                 dflt="$def";
4329                 . ./myread ;
4330                 eval "$var=\$ans";
4331         fi;
4332         $rm -f temp.?;;
4333 *) eval "$var=\$varval";;
4334 esac'
4335
4336 : define a shorthand compile call
4337 compile='
4338 mc_file=$1;
4339 shift;
4340 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4341 : define a shorthand compile call for compilations that should be ok.
4342 compile_ok='
4343 mc_file=$1;
4344 shift;
4345 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4346
4347 : check for lengths of integral types
4348 echo " "
4349 case "$intsize" in
4350 '')
4351         echo "Checking to see how big your integers are..." >&4
4352         $cat >intsize.c <<'EOCP'
4353 #include <stdio.h>
4354 int main()
4355 {
4356         printf("intsize=%d;\n", (int)sizeof(int));
4357         printf("longsize=%d;\n", (int)sizeof(long));
4358         printf("shortsize=%d;\n", (int)sizeof(short));
4359         exit(0);
4360 }
4361 EOCP
4362         set intsize
4363         if eval $compile_ok && ./intsize > /dev/null; then
4364                 eval `./intsize`
4365                 echo "Your integers are $intsize bytes long."
4366                 echo "Your long integers are $longsize bytes long."
4367                 echo "Your short integers are $shortsize bytes long."
4368         else
4369                 $cat >&4 <<EOM
4370 !
4371 Help! I can't compile and run the intsize test program: please enlighten me!
4372 (This is probably a misconfiguration in your system or libraries, and
4373 you really ought to fix it.  Still, I'll try anyway.)
4374 !
4375 EOM
4376                 dflt=4
4377                 rp="What is the size of an integer (in bytes)?"
4378                 . ./myread
4379                 intsize="$ans"
4380                 dflt=$intsize
4381                 rp="What is the size of a long integer (in bytes)?"
4382                 . ./myread
4383                 longsize="$ans"
4384                 dflt=2
4385                 rp="What is the size of a short integer (in bytes)?"
4386                 . ./myread
4387                 shortsize="$ans"
4388         fi
4389         ;;
4390 esac
4391 $rm -f intsize intsize.*
4392
4393 : see what type lseek is declared as in the kernel
4394 rp="What is the type used for lseek's offset on this system?"
4395 set off_t lseektype long stdio.h sys/types.h
4396 eval $typedef_ask
4397
4398 echo " "
4399 echo "Checking to see how big your file offsets are..." >&4
4400 $cat >try.c <<EOCP
4401 #include <sys/types.h>
4402 #include <stdio.h>
4403 int main()
4404 {
4405     printf("%d\n", (int)sizeof($lseektype));
4406     return(0); 
4407 }
4408 EOCP
4409 set try
4410 if eval $compile_ok; then
4411         lseeksize=`./try`
4412         echo "Your file offsets are $lseeksize bytes long."
4413 else
4414         dflt=$longsize
4415         echo " "
4416         echo "(I can't seem to compile the test program.  Guessing...)"
4417         rp="What is the size of your file offsets (in bytes)?"
4418         . ./myread
4419         lseeksize="$ans"
4420 fi
4421 $rm -f try.c try
4422
4423 : see what type file positions are declared as in the library
4424 rp="What is the type for file position used by fsetpos()?"
4425 set fpos_t fpostype long stdio.h sys/types.h
4426 eval $typedef_ask
4427
4428 echo " "
4429 case "$fpostype" in
4430 *_t) zzz="$fpostype"    ;;
4431 *)   zzz="fpos_t"       ;;
4432 esac
4433 echo "Checking the size of $zzz..." >&4 
4434 cat > try.c <<EOCP
4435 #include <sys/types.h>
4436 #include <stdio.h>
4437 int main() {
4438     printf("%d\n", (int)sizeof($fpostype));
4439     exit(0);
4440 }
4441 EOCP
4442 set try
4443 if eval $compile_ok; then
4444         yyy=`./try`
4445         case "$yyy" in
4446         '')     fpossize=4
4447                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4448                 ;;
4449         *)      fpossize=$yyy
4450                 echo "Your $zzz is $fpossize bytes long."
4451                 ;;
4452         esac
4453 else
4454         dflt="$longsize"
4455         echo " " >&4
4456         echo "(I can't compile the test program.  Guessing...)" >&4
4457         rp="What is the size of your file positions (in bytes)?"
4458         . ./myread
4459         fpossize="$ans"
4460 fi
4461
4462
4463
4464 # Backward compatibility (uselfs is deprecated).
4465 case "$uselfs" in
4466 "$define"|true|[yY]*)
4467         cat <<EOM >&4
4468
4469 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4470 EOM
4471         uselargefiles="$define"
4472         ;;
4473 esac                          
4474
4475 case "$lseeksize:$fpossize" in
4476 8:8) cat <<EOM
4477
4478 You can have files larger than 2 gigabytes.
4479 EOM
4480    val="$define" ;;
4481 *)    case "$uselargefiles" in
4482    "$undef"|false|[nN]*) dflt='n' ;;
4483    *)   dflt='y' ;;
4484    esac
4485    cat <<EOM
4486
4487 Perl can be built to understand large files (files larger than 2 gigabytes)
4488 on some systems.  To do so, Configure can be run with -Duselargefiles.
4489
4490 If this doesn't make any sense to you, just accept the default '$dflt'.
4491 EOM
4492    rp='Try to understand large files, if available?'
4493    . ./myread
4494    case "$ans" in
4495    y|Y)         val="$define" ;;
4496    *)           val="$undef"  ;;
4497    esac
4498    ;;
4499 esac
4500 set uselargefiles
4501 eval $setvar
4502 case "$uselargefiles" in
4503 "$define")
4504 : Look for a hint-file generated 'call-back-unit'.  If the
4505 : user has specified that a large files perl is to be built,
4506 : we may need to set or change some other defaults.
4507         if $test -f uselargefiles.cbu; then
4508                 echo "Your platform has some specific hints for large file builds, using them..."
4509                 . ./uselargefiles.cbu
4510                 echo " "
4511                 echo "Rechecking to see how big your file offsets are..." >&4
4512                 $cat >try.c <<EOCP
4513 #include <sys/types.h>
4514 #include <stdio.h>
4515 int main()
4516 {
4517     printf("%d\n", (int)sizeof($lseektype));
4518     return(0); 
4519 }
4520 EOCP
4521                 set try
4522                 if eval $compile_ok; then
4523                         lseeksize=`./try`
4524                         $echo "Your file offsets are now $lseeksize bytes long."
4525                 else
4526                         dflt="$lseeksize"
4527                         echo " "
4528                         echo "(I can't seem to compile the test program.  Guessing...)"
4529                         rp="What is the size of your file offsets (in bytes)?"
4530                         . ./myread
4531                         lseeksize="$ans"
4532                 fi
4533                 case "$fpostype" in
4534                 *_t) zzz="$fpostype"    ;;
4535                 *)   zzz="fpos_t"       ;;
4536                 esac
4537                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4538                 $cat > try.c <<EOCP
4539 #include <sys/types.h>
4540 #include <stdio.h>
4541 int main() {
4542     printf("%d\n", (int)sizeof($fpostype));
4543     exit(0);
4544 }
4545 EOCP
4546                 set try
4547                 if eval $compile_ok; then
4548                         yyy=`./try`
4549                         dflt="$lseeksize"
4550                         case "$yyy" in
4551                         '')     echo " "
4552                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4553                                 ;;
4554                         *)      fpossize=$yyy
4555                                 echo " $fpossize bytes." >&4
4556                                 ;;
4557                         esac
4558                 else
4559                         dflt="$fpossize"
4560                         echo " "
4561                         echo "(I can't compile the test program.  Guessing...)" >&4
4562                         rp="What is the size of your file positions (in bytes)?"
4563                         . ./myread
4564                         fpossize="$ans"
4565                 fi
4566                 $rm -f try.c try
4567         fi
4568         ;;
4569 esac
4570
4571
4572 case "$usemorebits" in
4573 "$define"|true|[yY]*)
4574         use64bitint="$define"
4575         uselongdouble="$define"
4576         usemorebits="$define"
4577         ;;
4578 *)      usemorebits="$undef"
4579         ;;
4580 esac
4581
4582
4583 case "$uselonglong" in
4584 "$define"|true|[yY]*)
4585         cat <<EOM >&4
4586
4587 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4588 EOM
4589         use64bitint="$define"
4590         ;;
4591 esac                          
4592 case "$use64bits" in
4593 "$define"|true|[yY]*)
4594         cat <<EOM >&4
4595
4596 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4597 EOM
4598         use64bitint="$define"
4599         ;;
4600 esac                          
4601 case "$use64bitints" in
4602 "$define"|true|[yY]*)
4603         cat <<EOM >&4
4604
4605 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4606 EOM
4607         use64bitint="$define"
4608         ;;
4609 esac                          
4610 case "$use64bitsint" in
4611 "$define"|true|[yY]*)
4612         cat <<EOM >&4
4613
4614 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4615 EOM
4616         use64bitint="$define"
4617         ;;
4618 esac                          
4619 case "$uselonglongs" in
4620 "$define"|true|[yY]*)
4621         cat <<EOM >&4
4622
4623 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4624 EOM
4625         use64bitint="$define"
4626         ;;
4627 esac                          
4628 case "$use64bitsall" in
4629 "$define"|true|[yY]*)
4630         cat <<EOM >&4
4631
4632 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4633 EOM
4634         use64bitall="$define"
4635         ;;
4636 esac                          
4637
4638 case "$ccflags" in
4639 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4640 esac
4641 case "$use64bitall" in
4642 "$define"|true|[yY]*) use64bitint="$define" ;;
4643 esac
4644
4645 case "$longsize" in
4646 8) cat <<EOM
4647
4648 You have natively 64-bit long integers.
4649 EOM
4650    val="$define"
4651    ;;
4652 *) case "$use64bitint" in
4653    "$define"|true|[yY]*) dflt='y';;
4654    *) dflt='n';;
4655    esac
4656    cat <<EOM
4657
4658 Perl can be built to take advantage of 64-bit integer types
4659 on some systems.  To do so, Configure can be run with -Duse64bitint.
4660 Choosing this option will most probably introduce binary incompatibilities.
4661
4662 If this doesn't make any sense to you, just accept the default '$dflt'.
4663 EOM
4664    rp='Try to use 64-bit integers, if available?'
4665    . ./myread
4666    case "$ans" in
4667    [yY]*) val="$define" ;;
4668    *)     val="$undef"  ;;
4669    esac
4670    ;;
4671 esac
4672 set use64bitint
4673 eval $setvar
4674
4675 case "$use64bitall" in
4676 "$define"|true|[yY]*) dflt='y' ;;
4677 *) case "$longsize" in
4678    8) dflt='y' ;;
4679    *) dflt='n' ;;
4680    esac
4681    ;;
4682 esac    
4683 cat <<EOM
4684
4685 You may also choose to try maximal 64-bitness.  It means using as much
4686 64-bitness as possible on the platform.  This in turn means even more
4687 binary incompatibilities.  On the other hand, your platform may not
4688 have any more 64-bitness available than what you already have chosen.
4689
4690 If this doesn't make any sense to you, just accept the default '$dflt'.
4691 EOM
4692 rp='Try to use maximal 64-bit support, if available?'
4693 . ./myread
4694 case "$ans" in
4695 [yY]*) val="$define" ;;
4696 *)     val="$undef"  ;;
4697 esac
4698 set use64bitall
4699 eval $setvar
4700 case "$use64bitall" in
4701 "$define")
4702         case "$use64bitint" in
4703         "$undef")
4704                 cat <<EOM
4705
4706 Since you have chosen a maximally 64-bit build, I'm also turning on
4707 the use of 64-bit integers.
4708 EOM
4709                 use64bitint="$define" ;;
4710         esac
4711         ;;
4712 esac
4713
4714 case "$use64bitint" in
4715 "$define"|true|[yY]*)
4716 : Look for a hint-file generated 'call-back-unit'.  If the
4717 : user has specified that a 64-bit perl is to be built,
4718 : we may need to set or change some other defaults.
4719         if $test -f use64bitint.cbu; then
4720                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4721                 . ./use64bitint.cbu
4722         fi
4723         case "$longsize" in
4724         4) case "$archname64" in
4725            '') archname64=64int ;;
4726            esac
4727            ;;
4728         esac
4729         ;;
4730 esac
4731
4732 case "$use64bitall" in
4733 "$define"|true|[yY]*)
4734 : Look for a hint-file generated 'call-back-unit'.  If the
4735 : user has specified that a maximally 64-bit perl is to be built,
4736 : we may need to set or change some other defaults.
4737         if $test -f use64bitall.cbu; then
4738                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4739                 . ./use64bitall.cbu
4740         fi
4741         case "$longsize" in
4742         4) case "$archname64" in
4743            ''|64int) archname64=64all ;;
4744            esac
4745            ;;
4746         esac
4747         ;;
4748 esac
4749
4750 : determine the architecture name
4751 echo " "
4752 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4753         tarch=`arch`"-$osname"
4754 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4755         if uname -m > tmparch 2>&1 ; then
4756                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4757                         -e 's/$/'"-$osname/" tmparch`
4758         else
4759                 tarch="$osname"
4760         fi
4761         $rm -f tmparch
4762 else
4763         tarch="$osname"
4764 fi
4765 case "$myarchname" in
4766 ''|"$tarch") ;;
4767 *)
4768         echo "(Your architecture name used to be $myarchname.)"
4769         archname=''
4770         ;;
4771 esac
4772 myarchname="$tarch"
4773 case "$archname" in
4774 '') dflt="$tarch";;
4775 *) dflt="$archname";;
4776 esac
4777 rp='What is your architecture name'
4778 . ./myread
4779 archname="$ans"
4780 case "$usethreads" in
4781 $define)
4782         echo "Threads selected." >&4
4783         case "$archname" in
4784         *-thread*) echo "...and architecture name already has -thread." >&4
4785                 ;;
4786         *)      archname="$archname-thread"
4787                 echo "...setting architecture name to $archname." >&4
4788                 ;;
4789         esac
4790         ;;
4791 esac
4792 case "$usemultiplicity" in
4793 $define)
4794         echo "Multiplicity selected." >&4
4795         case "$archname" in
4796         *-multi*) echo "...and architecture name already has -multi." >&4
4797                 ;;
4798         *)      archname="$archname-multi"
4799                 echo "...setting architecture name to $archname." >&4
4800                 ;;
4801         esac
4802         ;;
4803 esac
4804 case "$use64bitint" in
4805 $define)
4806         case "$archname64" in
4807         '')
4808                 ;;
4809         *)
4810                 case "$archname" in
4811                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4812                         ;;
4813                 *)      archname="$archname-$archname64"
4814                         echo "...setting architecture name to $archname." >&4
4815                         ;;
4816                 esac
4817                 ;;
4818         esac
4819 esac
4820
4821 : determine root of directory hierarchy where package will be installed.
4822 case "$prefix" in
4823 '')
4824         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4825         ;;
4826 *)
4827         dflt="$prefix"
4828         ;;
4829 esac
4830 $cat <<EOM
4831
4832 By default, $package will be installed in $dflt/bin, manual pages
4833 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4834 installation directories. Typically this is something like /usr/local.
4835 If you wish to have binaries under /usr/bin but other parts of the
4836 installation under /usr/local, that's ok: you will be prompted
4837 separately for each of the installation directories, the prefix being
4838 only used to set the defaults.
4839
4840 EOM
4841 fn=d~
4842 rp='Installation prefix to use?'
4843 . ./getfile
4844 oldprefix=''
4845 case "$prefix" in
4846 '') ;;
4847 *)
4848         case "$ans" in
4849         "$prefix") ;;
4850         *) oldprefix="$prefix";;
4851         esac
4852         ;;
4853 esac
4854 prefix="$ans"
4855 prefixexp="$ansexp"
4856
4857 : is AFS running?
4858 echo " "
4859 case "$afs" in
4860 $define|true)   afs=true ;;
4861 $undef|false)   afs=false ;;
4862 *)      if test -d /afs; then
4863                 afs=true
4864         else
4865                 afs=false
4866         fi
4867         ;;
4868 esac
4869 if $afs; then
4870         echo "AFS may be running... I'll be extra cautious then..." >&4
4871 else
4872         echo "AFS does not seem to be running..." >&4
4873 fi
4874
4875 : determine installation prefix for where package is to be installed.
4876 if $afs; then 
4877 $cat <<EOM
4878
4879 Since you are running AFS, I need to distinguish the directory in which
4880 files will reside from the directory in which they are installed (and from
4881 which they are presumably copied to the former directory by occult means).
4882
4883 EOM
4884         case "$installprefix" in
4885         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4886         *) dflt="$installprefix";;
4887         esac
4888 else
4889 $cat <<EOM
4890
4891 In some special cases, particularly when building $package for distribution,
4892 it is convenient to distinguish between the directory in which files should 
4893 be installed from the directory ($prefix) in which they 
4894 will eventually reside.  For most users, these two directories are the same.
4895
4896 EOM
4897         case "$installprefix" in
4898         '') dflt=$prefix ;;
4899         *) dflt=$installprefix;;
4900         esac
4901 fi
4902 fn=d~
4903 rp='What installation prefix should I use for installing files?'
4904 . ./getfile
4905 installprefix="$ans"
4906 installprefixexp="$ansexp"
4907
4908 : set the prefixit variable, to compute a suitable default value
4909 prefixit='case "$3" in
4910 ""|none)
4911         case "$oldprefix" in
4912         "") eval "$1=\"\$$2\"";;
4913         *)
4914                 case "$3" in
4915                 "") eval "$1=";;
4916                 none)
4917                         eval "tp=\"\$$2\"";
4918                         case "$tp" in
4919                         ""|" ") eval "$1=\"\$$2\"";;
4920                         *) eval "$1=";;
4921                         esac;;
4922                 esac;;
4923         esac;;
4924 *)
4925         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4926         case "$tp" in
4927         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4928         /*-$oldprefix/*|\~*-$oldprefix/*)
4929                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4930         *) eval "$1=\"\$$2\"";;
4931         esac;;
4932 esac'
4933
4934
4935 : get the patchlevel
4936 echo " "
4937 echo "Getting the current patchlevel..." >&4
4938 if $test -r $rsrc/patchlevel.h;then
4939         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4940         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4941         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4942         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4943         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4944         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4945 else
4946         revision=0
4947         patchlevel=0
4948         subversion=0
4949         api_revision=0
4950         api_version=0
4951         api_subversion=0
4952 fi
4953 $echo $n "(You have $package revision $revision" $c
4954 $echo $n " patchlevel $patchlevel" $c
4955 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4956 echo ".)"
4957 case "$osname" in
4958 dos|vms)
4959         : XXX Should be a Configure test for double-dots in filenames.
4960         version=`echo $revision $patchlevel $subversion | \
4961                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4962         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4963                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4964         ;;
4965 *)
4966         version=`echo $revision $patchlevel $subversion | \
4967                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4968         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4969                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4970         ;;
4971 esac
4972 : Special case the 5.005_xx maintenance series, which used 5.005
4973 : without any subversion label as a subdirectory in $sitelib
4974 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4975         api_versionstring='5.005'
4976 fi
4977
4978 : determine installation style
4979 : For now, try to deduce it from prefix unless it is already set.
4980 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4981 case "$installstyle" in
4982 '')     case "$prefix" in
4983                 *perl*) dflt='lib';;
4984                 *) dflt='lib/perl5' ;;
4985         esac
4986         ;;
4987 *)      dflt="$installstyle" ;;
4988 esac
4989 : Probably not worth prompting for this since we prompt for all
4990 : the directories individually, and the prompt would be too long and
4991 : confusing anyway.
4992 installstyle=$dflt
4993
4994 : determine where private library files go
4995 : Usual default is /usr/local/lib/perl5/$version.
4996 : Also allow things like /opt/perl/lib/$version, since 
4997 : /opt/perl/lib/perl5... would be redundant.
4998 : The default "style" setting is made in installstyle.U
4999 case "$installstyle" in
5000 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5001 *)       set dflt privlib lib/$version ;;
5002 esac
5003 eval $prefixit
5004 $cat <<EOM
5005
5006 There are some auxiliary files for $package that need to be put into a
5007 private library directory that is accessible by everyone.
5008
5009 EOM
5010 fn=d~+
5011 rp='Pathname where the private library files will reside?'
5012 . ./getfile
5013 privlib="$ans"
5014 privlibexp="$ansexp"
5015 : Change installation prefix, if necessary.
5016 if $test X"$prefix" != X"$installprefix"; then
5017         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5018 else
5019         installprivlib="$privlibexp"
5020 fi
5021
5022 : set the prefixup variable, to restore leading tilda escape
5023 prefixup='case "$prefixexp" in
5024 "$prefix") ;;
5025 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5026 esac'
5027
5028 : determine where public architecture dependent libraries go
5029 set archlib archlib
5030 eval $prefixit
5031 : privlib default is /usr/local/lib/$package/$version
5032 : archlib default is /usr/local/lib/$package/$version/$archname
5033 : privlib may have an optional trailing /share.
5034 tdflt=`echo $privlib | $sed 's,/share$,,'`
5035 tdflt=$tdflt/$archname
5036 case "$archlib" in
5037 '')     dflt=$tdflt
5038         ;;
5039 *)      dflt="$archlib"
5040     ;;
5041 esac
5042 $cat <<EOM
5043
5044 $spackage contains architecture-dependent library files.  If you are
5045 sharing libraries in a heterogeneous environment, you might store
5046 these files in a separate location.  Otherwise, you can just include
5047 them with the rest of the public library files.
5048
5049 EOM
5050 fn=d+~
5051 rp='Where do you want to put the public architecture-dependent libraries?'
5052 . ./getfile
5053 archlib="$ans"
5054 archlibexp="$ansexp"
5055 if $test X"$archlib" = X"$privlib"; then
5056         d_archlib="$undef"
5057 else
5058         d_archlib="$define"
5059 fi
5060 : Change installation prefix, if necessary.
5061 if $test X"$prefix" != X"$installprefix"; then
5062         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5063 else
5064         installarchlib="$archlibexp"
5065 fi
5066
5067
5068 : Binary compatibility with 5.005 is not possible for builds
5069 : with advanced features
5070 case "$usethreads$usemultiplicity" in
5071 *define*)
5072         bincompat5005="$undef"
5073         d_bincompat5005="$undef"
5074         ;;
5075 *)      $cat <<EOM
5076
5077 This version of Perl can be compiled for binary compatibility with 5.005.
5078 If you decide to do so, you will be able to continue using most of the
5079 extensions that were compiled for Perl 5.005.
5080
5081 EOM
5082         case "$bincompat5005$d_bincompat5005" in
5083         *"$undef"*) dflt=n ;;
5084         *) dflt=y ;;
5085         esac
5086         rp='Binary compatibility with Perl 5.005?'
5087         . ./myread
5088         case "$ans" in
5089         y*) val="$define" ;;
5090         *)  val="$undef" ;;
5091         esac
5092         set d_bincompat5005
5093         eval $setvar
5094         case "$d_bincompat5005" in
5095         "$define")
5096                 bincompat5005="$define"
5097                 ;;
5098         *)      bincompat5005="$undef"
5099                 d_bincompat5005="$undef"
5100                 ;;
5101         esac
5102         ;;
5103 esac
5104
5105
5106 : see if setuid scripts can be secure
5107 $cat <<EOM
5108
5109 Some kernels have a bug that prevents setuid #! scripts from being
5110 secure.  Some sites have disabled setuid #! scripts because of this.
5111
5112 First let's decide if your kernel supports secure setuid #! scripts.
5113 (If setuid #! scripts would be secure but have been disabled anyway,
5114 don't say that they are secure if asked.)
5115
5116 EOM
5117
5118 val="$undef"
5119 if $test -d /dev/fd; then
5120         echo "#!$ls" >reflect
5121         chmod +x,u+s reflect
5122         ./reflect >flect 2>&1
5123         if $contains "/dev/fd" flect >/dev/null; then
5124                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5125                 val="$define"
5126         else
5127                 $cat <<EOM
5128 If you are not sure if they are secure, I can check but I'll need a
5129 username and password different from the one you are using right now.
5130 If you don't have such a username or don't want me to test, simply
5131 enter 'none'.
5132
5133 EOM
5134                 rp='Other username to test security of setuid scripts with?'
5135                 dflt='none'
5136                 . ./myread
5137                 case "$ans" in
5138                 n|none)
5139                         case "$d_suidsafe" in
5140                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5141                                 dflt=n;;
5142                         "$undef")
5143                                 echo "Well, the $hint value is *not* secure." >&4
5144                                 dflt=n;;
5145                         *)      echo "Well, the $hint value *is* secure." >&4
5146                                 dflt=y;;
5147                         esac
5148                         ;;
5149                 *)
5150                         $rm -f reflect flect
5151                         echo "#!$ls" >reflect
5152                         chmod +x,u+s reflect
5153                         echo >flect
5154                         chmod a+w flect
5155                         echo '"su" will (probably) prompt you for '"$ans's password."
5156                         su $ans -c './reflect >flect'
5157                         if $contains "/dev/fd" flect >/dev/null; then
5158                                 echo "Okay, it looks like setuid scripts are secure." >&4
5159                                 dflt=y
5160                         else
5161                                 echo "I don't think setuid scripts are secure." >&4
5162                                 dflt=n
5163                         fi
5164                         ;;
5165                 esac
5166                 rp='Does your kernel have *secure* setuid scripts?'
5167                 . ./myread
5168                 case "$ans" in
5169                 [yY]*)  val="$define";;
5170                 *)      val="$undef";;
5171                 esac
5172         fi
5173 else
5174         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5175         echo "(That's for file descriptors, not floppy disks.)"
5176         val="$undef"
5177 fi
5178 set d_suidsafe
5179 eval $setvar
5180
5181 $rm -f reflect flect
5182
5183 : now see if they want to do setuid emulation
5184 echo " "
5185 val="$undef"
5186 case "$d_suidsafe" in
5187 "$define")
5188         val="$undef"
5189         echo "No need to emulate SUID scripts since they are secure here." >& 4
5190         ;;
5191 *)
5192         $cat <<EOM
5193 Some systems have disabled setuid scripts, especially systems where
5194 setuid scripts cannot be secure.  On systems where setuid scripts have
5195 been disabled, the setuid/setgid bits on scripts are currently
5196 useless.  It is possible for $package to detect those bits and emulate
5197 setuid/setgid in a secure fashion.  This emulation will only work if
5198 setuid scripts have been disabled in your kernel.
5199
5200 EOM
5201         case "$d_dosuid" in
5202         "$define") dflt=y ;;
5203         *) dflt=n ;;
5204         esac
5205         rp="Do you want to do setuid/setgid emulation?"
5206         . ./myread
5207         case "$ans" in
5208         [yY]*)  val="$define";;
5209         *)      val="$undef";;
5210         esac
5211         ;;
5212 esac
5213 set d_dosuid
5214 eval $setvar
5215
5216 : determine filename position in cpp output
5217 echo " "
5218 echo "Computing filename position in cpp output for #include directives..." >&4
5219 echo '#include <stdio.h>' > foo.c
5220 $cat >fieldn <<EOF
5221 $startsh
5222 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5223 $grep '^[       ]*#.*stdio\.h' | \
5224 while read cline; do
5225         pos=1
5226         set \$cline
5227         while $test \$# -gt 0; do
5228                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5229                         echo "\$pos"
5230                         exit 0
5231                 fi
5232                 shift
5233                 pos=\`expr \$pos + 1\`
5234         done
5235 done
5236 EOF
5237 chmod +x fieldn
5238 fieldn=`./fieldn`
5239 $rm -f foo.c fieldn
5240 case $fieldn in
5241 '') pos='???';;
5242 1) pos=first;;
5243 2) pos=second;;
5244 3) pos=third;;
5245 *) pos="${fieldn}th";;
5246 esac
5247 echo "Your cpp writes the filename in the $pos field of the line."
5248
5249 : locate header file
5250 $cat >findhdr <<EOF
5251 $startsh
5252 wanted=\$1
5253 name=''
5254 for usrincdir in $usrinc
5255 do
5256         if test -f \$usrincdir/\$wanted; then
5257                 echo "\$usrincdir/\$wanted"
5258                 exit 0
5259         fi
5260 done
5261 awkprg='{ print \$$fieldn }'
5262 echo "#include <\$wanted>" > foo\$\$.c
5263 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5264 $grep "^[       ]*#.*\$wanted" | \
5265 while read cline; do
5266         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5267         case "\$name" in
5268         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5269         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5270         *) exit 2;;
5271         esac;
5272 done;
5273 #
5274 # status = 0: grep returned 0 lines, case statement not executed
5275 # status = 1: headerfile found
5276 # status = 2: while loop executed, no headerfile found
5277 #
5278 status=\$?
5279 $rm -f foo\$\$.c;
5280 if test \$status -eq 1; then
5281         exit 0;
5282 fi
5283 exit 1
5284 EOF
5285 chmod +x findhdr
5286
5287 : define an alternate in-header-list? function
5288 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5289 cont=true; xxf="echo \"<\$1> found.\" >&4";
5290 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5291 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5292 esac;
5293 case $# in 4) instead=instead;; *) instead="at last";; esac;
5294 while $test "$cont"; do
5295         xxx=`./findhdr $1`
5296         var=$2; eval "was=\$$2";
5297         if $test "$xxx" && $test -r "$xxx";
5298         then eval $xxf;
5299         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5300                 cont="";
5301         else eval $xxnf;
5302         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5303         set $yyy; shift; shift; yyy=$@;
5304         case $# in 0) cont="";;
5305         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5306                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5307         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5308                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5309         esac;
5310 done;
5311 while $test "$yyy";
5312 do set $yyy; var=$2; eval "was=\$$2";
5313         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5314         set $yyy; shift; shift; yyy=$@;
5315 done'
5316
5317 : see if this is a malloc.h system
5318 set malloc.h i_malloc
5319 eval $inhdr
5320
5321 : see if stdlib is available
5322 set stdlib.h i_stdlib
5323 eval $inhdr
5324
5325 : determine which malloc to compile in
5326 echo " "
5327 case "$usemymalloc" in
5328 ''|[yY]*|true|$define)  dflt='y' ;;
5329 *)      dflt='n' ;;
5330 esac
5331 rp="Do you wish to attempt to use the malloc that comes with $package?"
5332 . ./myread
5333 usemymalloc="$ans"
5334 case "$ans" in
5335 y*|true)
5336         usemymalloc='y'
5337         mallocsrc='malloc.c'
5338         mallocobj="malloc$_o"
5339         d_mymalloc="$define"
5340         case "$libs" in
5341         *-lmalloc*)
5342                 : Remove malloc from list of libraries to use
5343                 echo "Removing unneeded -lmalloc from library list" >&4
5344                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5345                 shift
5346                 libs="$*"
5347                 echo "libs = $libs" >&4
5348                 ;;
5349         esac
5350         ;;
5351 *)
5352         usemymalloc='n'
5353         mallocsrc=''
5354         mallocobj=''
5355         d_mymalloc="$undef"
5356         ;;
5357 esac
5358
5359 : compute the return types of malloc and free
5360 echo " "
5361 $cat >malloc.c <<END
5362 #$i_malloc I_MALLOC
5363 #$i_stdlib I_STDLIB
5364 #include <stdio.h>
5365 #include <sys/types.h>
5366 #ifdef I_MALLOC
5367 #include <malloc.h>
5368 #endif
5369 #ifdef I_STDLIB
5370 #include <stdlib.h>
5371 #endif
5372 #ifdef TRY_MALLOC
5373 void *malloc();
5374 #endif
5375 #ifdef TRY_FREE
5376 void free();
5377 #endif
5378 END
5379 case "$malloctype" in
5380 '')
5381         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5382                 malloctype='void *'
5383         else
5384                 malloctype='char *'
5385         fi
5386         ;;
5387 esac
5388 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5389
5390 case "$freetype" in
5391 '')
5392         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5393                 freetype='void'
5394         else
5395                 freetype='int'
5396         fi
5397         ;;
5398 esac
5399 echo "Your system uses $freetype free(), it would seem." >&4
5400 $rm -f malloc.[co]
5401 $cat <<EOM
5402
5403 After $package is installed, you may wish to install various
5404 add-on modules and utilities.  Typically, these add-ons will
5405 be installed under $prefix with the rest
5406 of this package.  However, you may wish to install such add-ons
5407 elsewhere under a different prefix.
5408
5409 If you do not wish to put everything under a single prefix, that's
5410 ok.  You will be prompted for the individual locations; this siteprefix
5411 is only used to suggest the defaults.
5412
5413 The default should be fine for most people.
5414
5415 EOM
5416 fn=d~+
5417 rp='Installation prefix to use for add-on modules and utilities?'
5418 : XXX Here might be another good place for an installstyle setting.
5419 case "$siteprefix" in
5420 '') dflt=$prefix ;;
5421 *)  dflt=$siteprefix ;;
5422 esac
5423 . ./getfile
5424 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5425 oldsiteprefix=''
5426 case "$siteprefix" in
5427 '') ;;
5428 *)      case "$ans" in
5429         "$prefix") ;;
5430         *) oldsiteprefix="$prefix";;
5431         esac
5432         ;;
5433 esac
5434 siteprefix="$ans"
5435 siteprefixexp="$ansexp"
5436
5437 : determine where site specific libraries go.
5438 : Usual default is /usr/local/lib/perl5/site_perl/$version
5439 : The default "style" setting is made in installstyle.U
5440 : XXX No longer works with Prefixit stuff.
5441 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5442 case "$sitelib" in
5443 '') case "$installstyle" in
5444         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5445         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5446         esac
5447         ;;
5448 *)      dflt="$sitelib"
5449         ;;
5450 esac
5451 $cat <<EOM
5452
5453 The installation process will create a directory for
5454 site-specific extensions and modules.  Most users find it convenient
5455 to place all site-specific files in this directory rather than in the
5456 main distribution directory.
5457
5458 EOM
5459 fn=d~+
5460 rp='Pathname for the site-specific library files?'
5461 . ./getfile
5462 sitelib="$ans"
5463 sitelibexp="$ansexp"
5464 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5465 : Change installation prefix, if necessary.
5466 if $test X"$prefix" != X"$installprefix"; then
5467         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5468 else
5469         installsitelib="$sitelibexp"
5470 fi
5471
5472 : determine where site specific architecture-dependent libraries go.
5473 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5474 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5475 : sitelib may have an optional trailing /share.
5476 case "$sitearch" in
5477 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5478         dflt="$dflt/$archname"
5479         ;;
5480 *)      dflt="$sitearch"
5481         ;;
5482 esac
5483 set sitearch sitearch none
5484 eval $prefixit
5485 $cat <<EOM
5486
5487 The installation process will also create a directory for
5488 architecture-dependent site-specific extensions and modules.
5489
5490 EOM
5491 fn=d~+
5492 rp='Pathname for the site-specific architecture-dependent library files?'
5493 . ./getfile
5494 sitearch="$ans"
5495 sitearchexp="$ansexp"
5496 : Change installation prefix, if necessary.
5497 if $test X"$prefix" != X"$installprefix"; then
5498         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5499 else
5500         installsitearch="$sitearchexp"
5501 fi
5502
5503 $cat <<EOM
5504
5505 The installation process will also create a directory for
5506 vendor-supplied add-ons.  Vendors who supply perl with their system
5507 may find it convenient to place all vendor-supplied files in this
5508 directory rather than in the main distribution directory.  This will
5509 ease upgrades between binary-compatible maintenance versions of perl.
5510
5511 Of course you may also use these directories in whatever way you see
5512 fit.  For example, you might use them to access modules shared over a
5513 company-wide network.
5514
5515 The default answer should be fine for most people.
5516 This causes further questions about vendor add-ons to be skipped
5517 and no vendor-specific directories will be configured for perl.
5518
5519 EOM
5520 rp='Do you want to configure vendor-specific add-on directories?'
5521 case "$usevendorprefix" in
5522 define|true|[yY]*) dflt=y ;;
5523 *)      : User may have set vendorprefix directly on Configure command line.
5524         case "$vendorprefix" in
5525         ''|' ') dflt=n ;;
5526         *)      dflt=y ;;
5527         esac
5528         ;;
5529 esac
5530 . ./myread
5531 case "$ans" in
5532 [yY]*)  fn=d~+
5533         rp='Installation prefix to use for vendor-supplied add-ons?'
5534         case "$vendorprefix" in
5535         '') dflt='' ;;
5536         *)  dflt=$vendorprefix ;;
5537         esac
5538         . ./getfile
5539         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5540         oldvendorprefix=''
5541         case "$vendorprefix" in
5542         '') ;;
5543         *)      case "$ans" in
5544                 "$prefix") ;;
5545                 *) oldvendorprefix="$prefix";;
5546                 esac
5547                 ;;
5548         esac
5549         usevendorprefix="$define"
5550         vendorprefix="$ans"
5551         vendorprefixexp="$ansexp"
5552         ;;
5553 *)      usevendorprefix="$undef"
5554         vendorprefix=''
5555         vendorprefixexp=''
5556         ;;
5557 esac
5558
5559 case "$vendorprefix" in
5560 '')     d_vendorlib="$undef"
5561         vendorlib=''
5562         vendorlibexp=''
5563         ;;
5564 *)      d_vendorlib="$define"
5565         : determine where vendor-supplied modules go.
5566         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5567         case "$vendorlib" in
5568         '')
5569                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5570                 case "$installstyle" in
5571                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5572                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5573                 esac
5574                 ;;
5575         *)      dflt="$vendorlib"
5576                 ;;
5577         esac
5578         fn=d~+
5579         rp='Pathname for the vendor-supplied library files?'
5580         . ./getfile
5581         vendorlib="$ans"
5582         vendorlibexp="$ansexp"
5583         ;;
5584 esac
5585 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5586 : Change installation prefix, if necessary.
5587 if $test X"$prefix" != X"$installprefix"; then
5588         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5589 else
5590         installvendorlib="$vendorlibexp"
5591 fi
5592
5593 case "$vendorprefix" in
5594 '')     d_vendorarch="$undef"
5595         vendorarch=''
5596         vendorarchexp=''
5597         ;;
5598 *)      d_vendorarch="$define"
5599         : determine where vendor-supplied architecture-dependent libraries go.
5600         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
5601         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5602         : vendorlib may have an optional trailing /share.
5603         case "$vendorarch" in
5604         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
5605                 dflt="$dflt/$archname"
5606                 ;;
5607         *)      dflt="$vendorarch" ;;
5608         esac
5609         fn=d~+
5610         rp='Pathname for vendor-supplied architecture-dependent files?'
5611         . ./getfile
5612         vendorarch="$ans"
5613         vendorarchexp="$ansexp"
5614         ;;
5615 esac
5616 : Change installation prefix, if necessary.
5617 if $test X"$prefix" != X"$installprefix"; then
5618         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5619 else
5620         installvendorarch="$vendorarchexp"
5621 fi
5622
5623 : Final catch-all directories to search
5624 $cat <<EOM
5625
5626 Lastly, you can have perl look in other directories for extensions and
5627 modules in addition to those already specified.
5628 These directories will be searched after 
5629         $sitearch 
5630         $sitelib 
5631 EOM
5632 test X"$vendorlib" != "X" && echo '     ' $vendorlib
5633 test X"$vendorarch" != "X" && echo '    ' $vendorarch
5634 echo ' '
5635 case "$otherlibdirs" in
5636 ''|' ') dflt='none' ;;
5637 *)      dflt="$otherlibdirs" ;;
5638 esac
5639 $cat <<EOM
5640 Enter a colon-separated set of extra paths to include in perl's @INC
5641 search path, or enter 'none' for no extra paths.
5642
5643 EOM
5644
5645 rp='Colon-separated list of additional directories for perl to search?'
5646 . ./myread
5647 case "$ans" in
5648 ' '|''|none)    otherlibdirs=' ' ;;     
5649 *)      otherlibdirs="$ans" ;;
5650 esac
5651 case "$otherlibdirs" in
5652 ' ') val=$undef ;;
5653 *)      val=$define ;;
5654 esac
5655 set d_perl_otherlibdirs
5656 eval $setvar
5657
5658 : Cruising for prototypes
5659 echo " "
5660 echo "Checking out function prototypes..." >&4
5661 $cat >prototype.c <<'EOCP'
5662 int main(int argc, char *argv[]) {
5663         exit(0);}
5664 EOCP
5665 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5666         echo "Your C compiler appears to support function prototypes."
5667         val="$define"
5668 else
5669         echo "Your C compiler doesn't seem to understand function prototypes."
5670         val="$undef"
5671 fi
5672 set prototype
5673 eval $setvar
5674 $rm -f prototype*
5675
5676 case "$prototype" in
5677 "$define") ;;
5678 *)      ansi2knr='ansi2knr'
5679         echo " "
5680         cat <<EOM >&4
5681
5682 $me:  FATAL ERROR:
5683 This version of $package can only be compiled by a compiler that 
5684 understands function prototypes.  Unfortunately, your C compiler 
5685         $cc $ccflags
5686 doesn't seem to understand them.  Sorry about that.
5687
5688 If GNU cc is available for your system, perhaps you could try that instead.  
5689
5690 Eventually, we hope to support building Perl with pre-ANSI compilers.
5691 If you would like to help in that effort, please contact <perlbug@perl.org>.
5692
5693 Aborting Configure now.
5694 EOM
5695         exit 2
5696         ;;
5697 esac
5698
5699 : determine where public executables go
5700 echo " "
5701 set dflt bin bin
5702 eval $prefixit
5703 fn=d~
5704 rp='Pathname where the public executables will reside?'
5705 . ./getfile
5706 if $test "X$ansexp" != "X$binexp"; then
5707         installbin=''
5708 fi
5709 bin="$ans"
5710 binexp="$ansexp"
5711 : Change installation prefix, if necessary.
5712 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5713 if $test X"$prefix" != X"$installprefix"; then
5714         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5715 else
5716         installbin="$binexp"
5717 fi
5718
5719 : Find perl5.005 or later.
5720 echo "Looking for a previously installed perl5.005 or later... "
5721 case "$perl5" in
5722 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5723                 : Check if this perl is recent and can load a simple module
5724                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5725                         perl5=$tdir/perl
5726                         break;
5727                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5728                         perl5=$tdir/perl
5729                         break;
5730                 fi
5731         done
5732         ;;
5733 *)      perl5="$perl5"
5734         ;;
5735 esac
5736 case "$perl5" in
5737 '')     echo "None found.  That's ok.";;
5738 *)      echo "Using $perl5." ;;
5739 esac
5740
5741 : Determine list of previous versions to include in @INC
5742 $cat > getverlist <<EOPL
5743 #!$perl5 -w
5744 use File::Basename;
5745 \$api_versionstring = "$api_versionstring";
5746 \$version = "$version";
5747 \$stem = "$sitelib_stem";
5748 \$archname = "$archname";
5749 EOPL
5750         $cat >> getverlist <<'EOPL'
5751 # Can't have leading @ because metaconfig interprets it as a command!
5752 ;@inc_version_list=();
5753 # XXX Redo to do opendir/readdir? 
5754 if (-d $stem) {
5755     chdir($stem);
5756     ;@candidates = glob("5.*");
5757 }
5758 else {
5759     ;@candidates = ();
5760 }
5761
5762 # XXX ToDo:  These comparisons must be reworked when two-digit
5763 # subversions come along, so that 5.7.10 compares as greater than
5764 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5765 # widespread that we can use the built-in version vectors rather
5766 # than reinventing them here.  For 5.6.0, however, we must
5767 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5768 foreach $d (@candidates) {
5769     if ($d lt $version) {
5770         if ($d ge $api_versionstring) {
5771             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5772         }
5773         elsif ($d ge "5.005") {
5774             unshift(@inc_version_list, grep { -d } $d);
5775         }
5776     }
5777     else {
5778         # Skip newer version.  I.e. don't look in
5779         # 5.7.0 if we're installing 5.6.1.
5780     }
5781 }
5782
5783 if (@inc_version_list) {
5784     print join(' ', @inc_version_list);
5785 }
5786 else {
5787     # Blank space to preserve value for next Configure run.
5788     print " ";
5789 }
5790 EOPL
5791 chmod +x getverlist
5792 case "$inc_version_list" in
5793 '')     if test -x "$perl5"; then
5794                 dflt=`$perl5 getverlist`
5795         else
5796                 dflt='none'
5797         fi
5798         ;;
5799 $undef) dflt='none' ;;
5800 *)  dflt="$inc_version_list" ;;
5801 esac
5802 case "$dflt" in
5803 ''|' ') dflt=none ;;
5804 esac
5805 $cat <<'EOM'
5806
5807 In order to ease the process of upgrading, this version of perl 
5808 can be configured to use modules built and installed with earlier 
5809 versions of perl that were installed under $prefix.  Specify here
5810 the list of earlier versions that this version of perl should check.
5811 If Configure detected no earlier versions of perl installed under
5812 $prefix, then the list will be empty.  Answer 'none' to tell perl
5813 to not search earlier versions.
5814
5815 The default should almost always be sensible, so if you're not sure,
5816 just accept the default.
5817 EOM
5818
5819 rp='List of earlier versions to include in @INC?'
5820 . ./myread
5821 case "$ans" in
5822 [Nn]one|''|' ') inc_version_list=' ' ;;
5823 *) inc_version_list="$ans" ;;
5824 esac
5825 case "$inc_version_list" in
5826 ''|' ') 
5827         inc_version_list_init='0';;
5828 *)      inc_version_list_init=`echo $inc_version_list |
5829                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5830         ;;
5831 esac
5832 $rm -f getverlist
5833
5834 : determine whether to install perl also as /usr/bin/perl
5835
5836 echo " "
5837 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5838         $cat <<EOM
5839 Many scripts expect perl to be installed as /usr/bin/perl.
5840 I can install the perl you are about to compile also as /usr/bin/perl
5841 (in addition to $installbin/perl).
5842 EOM
5843         case "$installusrbinperl" in
5844         "$undef"|[nN]*) dflt='n';;
5845         *)              dflt='y';;
5846         esac
5847         rp="Do you want to install perl as /usr/bin/perl?"
5848         . ./myread
5849         case "$ans" in
5850         [yY]*)  val="$define";;
5851         *)      val="$undef" ;;
5852         esac
5853 else
5854         val="$undef"
5855 fi
5856 set installusrbinperl
5857 eval $setvar
5858
5859 echo " "
5860 echo "Checking for GNU C Library..." >&4
5861 cat >gnulibc.c <<EOM
5862 #include <stdio.h>
5863 int main()
5864 {
5865 #ifdef __GLIBC__
5866     exit(0);
5867 #else
5868     exit(1);
5869 #endif
5870 }
5871 EOM
5872 set gnulibc
5873 if eval $compile_ok && ./gnulibc; then
5874         val="$define"
5875         echo "You are using the GNU C Library"
5876 else
5877         val="$undef"
5878         echo "You are not using the GNU C Library"
5879 fi
5880 $rm -f gnulibc*
5881 set d_gnulibc
5882 eval $setvar
5883
5884 : see if nm is to be used to determine whether a symbol is defined or not
5885 case "$usenm" in
5886 '')
5887         dflt=''
5888         case "$d_gnulibc" in
5889         "$define")
5890                 echo " "
5891                 echo "nm probably won't work on the GNU C Library." >&4
5892                 dflt=n
5893                 ;;
5894         esac
5895         case "$dflt" in
5896         '') 
5897                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5898                         echo " "
5899                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5900                         echo "'nm' won't be sufficient on this sytem." >&4
5901                         dflt=n
5902                 fi
5903                 ;;
5904         esac
5905         case "$dflt" in
5906         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5907                 if $test $dflt -gt 20; then
5908                         dflt=y
5909                 else
5910                         dflt=n
5911                 fi
5912                 ;;
5913         esac
5914         ;;
5915 *)
5916         case "$usenm" in
5917         true|$define) dflt=y;;
5918         *) dflt=n;;
5919         esac
5920         ;;
5921 esac
5922 $cat <<EOM
5923
5924 I can use $nm to extract the symbols from your C libraries. This
5925 is a time consuming task which may generate huge output on the disk (up
5926 to 3 megabytes) but that should make the symbols extraction faster. The
5927 alternative is to skip the 'nm' extraction part and to compile a small
5928 test program instead to determine whether each symbol is present. If
5929 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5930 this may be the best solution.
5931
5932 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5933
5934 EOM
5935 rp="Shall I use $nm to extract C symbols from the libraries?"
5936 . ./myread
5937 case "$ans" in
5938 [Nn]*) usenm=false;;
5939 *) usenm=true;;
5940 esac
5941
5942 runnm=$usenm
5943 case "$reuseval" in
5944 true) runnm=false;;
5945 esac
5946
5947 : nm options which may be necessary
5948 case "$nm_opt" in
5949 '') if $test -f /mach_boot; then
5950                 nm_opt=''       # Mach
5951         elif $test -d /usr/ccs/lib; then
5952                 nm_opt='-p'     # Solaris (and SunOS?)
5953         elif $test -f /dgux; then
5954                 nm_opt='-p'     # DG-UX
5955         elif $test -f /lib64/rld; then
5956                 nm_opt='-p'     # 64-bit Irix
5957         else
5958                 nm_opt=''
5959         fi;;
5960 esac
5961
5962 : nm options which may be necessary for shared libraries but illegal
5963 : for archive libraries.  Thank you, Linux.
5964 case "$nm_so_opt" in
5965 '')     case "$myuname" in
5966         *linux*)
5967                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5968                         nm_so_opt='--dynamic'
5969                 fi
5970                 ;;
5971         esac
5972         ;;
5973 esac
5974
5975 case "$runnm" in
5976 true)
5977 : get list of predefined functions in a handy place
5978 echo " "
5979 case "$libc" in
5980 '') libc=unknown
5981         case "$libs" in
5982         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5983         esac
5984         ;;
5985 esac
5986 libnames='';
5987 case "$libs" in
5988 '') ;;
5989 *)  for thislib in $libs; do
5990         case "$thislib" in
5991         -lc|-lc_s)
5992                 : Handle C library specially below.
5993                 ;;
5994         -l*)
5995                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5996                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5997                         :
5998                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5999                         :
6000                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
6001                         :
6002                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
6003                         :
6004                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
6005                         :
6006                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
6007                         :
6008                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
6009                         :
6010                 else
6011                         try=''
6012                 fi
6013                 libnames="$libnames $try"
6014                 ;;
6015         *) libnames="$libnames $thislib" ;;
6016         esac
6017         done
6018         ;;
6019 esac
6020 xxx=normal
6021 case "$libc" in
6022 unknown)
6023         set /lib/libc.$so
6024         for xxx in $libpth; do
6025                 $test -r $1 || set $xxx/libc.$so
6026                 : The messy sed command sorts on library version numbers.
6027                 $test -r $1 || \
6028                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
6029                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
6030                                 h
6031                                 s/[0-9][0-9]*/0000&/g
6032                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
6033                                 G
6034                                 s/\n/ /' | \
6035                          sort | $sed -e 's/^.* //'`
6036                 eval set \$$#
6037         done
6038         $test -r $1 || set /usr/ccs/lib/libc.$so
6039         $test -r $1 || set /lib/libsys_s$_a
6040         ;;
6041 *)
6042         set blurfl
6043         ;;
6044 esac
6045 if $test -r "$1"; then
6046         echo "Your (shared) C library seems to be in $1."
6047         libc="$1"
6048 elif $test -r /lib/libc && $test -r /lib/clib; then
6049         echo "Your C library seems to be in both /lib/clib and /lib/libc."
6050         xxx=apollo
6051         libc='/lib/clib /lib/libc'
6052         if $test -r /lib/syslib; then
6053                 echo "(Your math library is in /lib/syslib.)"
6054                 libc="$libc /lib/syslib"
6055         fi
6056 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6057         echo "Your C library seems to be in $libc, as you said before."
6058 elif $test -r $incpath/usr/lib/libc$_a; then
6059         libc=$incpath/usr/lib/libc$_a;
6060         echo "Your C library seems to be in $libc.  That's fine."
6061 elif $test -r /lib/libc$_a; then
6062         libc=/lib/libc$_a;
6063         echo "Your C library seems to be in $libc.  You're normal."
6064 else
6065         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
6066                 :
6067         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
6068                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
6069         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
6070                 :
6071         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6072                 :
6073         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6074                 :
6075         else
6076                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
6077         fi
6078         if $test -r "$tans"; then
6079                 echo "Your C library seems to be in $tans, of all places."
6080                 libc=$tans
6081         else
6082                 libc='blurfl'
6083         fi
6084 fi
6085 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6086         dflt="$libc"
6087         cat <<EOM
6088
6089 If the guess above is wrong (which it might be if you're using a strange
6090 compiler, or your machine supports multiple models), you can override it here.
6091
6092 EOM
6093 else
6094         dflt=''
6095         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
6096         cat >&4 <<EOM
6097 I can't seem to find your C library.  I've looked in the following places:
6098
6099 EOM
6100         $sed 's/^/      /' libpath
6101         cat <<EOM
6102
6103 None of these seems to contain your C library. I need to get its name...
6104
6105 EOM
6106 fi
6107 fn=f
6108 rp='Where is your C library?'
6109 . ./getfile
6110 libc="$ans"
6111
6112 echo " "
6113 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
6114 set X `cat libnames`
6115 shift
6116 xxx=files
6117 case $# in 1) xxx=file; esac
6118 echo "Extracting names from the following $xxx for later perusal:" >&4
6119 echo " "
6120 $sed 's/^/      /' libnames >&4
6121 echo " "
6122 $echo $n "This may take a while...$c" >&4
6123
6124 for file in $*; do
6125         case $file in
6126         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6127         *) $nm $nm_opt $file 2>/dev/null;;
6128         esac
6129 done >libc.tmp
6130
6131 $echo $n ".$c"
6132 $grep fprintf libc.tmp > libc.ptf
6133 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6134 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6135 xxx='[ADTSIW]'
6136 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
6137         eval $xscan;\
6138         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6139                 eval $xrun
6140 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6141         eval $xscan;\
6142         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6143                 eval $xrun
6144 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6145         eval $xscan;\
6146         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6147                 eval $xrun
6148 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6149         eval $xscan;\
6150         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6151                 eval $xrun
6152 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6153         eval $xscan;\
6154         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6155                 eval $xrun
6156 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6157         eval $xscan;\
6158         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6159                 eval $xrun
6160 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6161                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6162         eval $xscan;\
6163         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6164                 eval $xrun
6165 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6166         eval $xscan;\
6167         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6168                 eval $xrun
6169 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6170         eval $xscan;\
6171         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6172                 eval $xrun
6173 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6174         eval $xscan;\
6175         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6176                 eval $xrun
6177 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6178         eval $xscan;\
6179         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6180                 eval $xrun
6181 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6182         eval $xscan;\
6183         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6184                 eval $xrun
6185 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6186         eval $xscan;\
6187         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6188                 eval $xrun
6189 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6190         eval $xscan;\
6191         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6192                 eval $xrun
6193 else
6194         $nm -p $* 2>/dev/null >libc.tmp
6195         $grep fprintf libc.tmp > libc.ptf
6196         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6197                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6198         then
6199                 nm_opt='-p'
6200                 eval $xrun
6201         else
6202                 echo " "
6203                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6204                 com=''
6205                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6206                         for thisname in $libnames $libc; do
6207                                 $ar t $thisname >>libc.tmp
6208                         done
6209                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6210                         echo "Ok." >&4
6211                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6212                         # Repeat libc to extract forwarders to DLL entries too
6213                         for thisname in $libnames $libc; do
6214                                 $ar tv $thisname >>libc.tmp
6215                                 # Revision 50 of EMX has bug in $ar.
6216                                 # it will not extract forwarders to DLL entries
6217                                 # Use emximp which will extract exactly them.
6218                                 emximp -o tmp.imp $thisname \
6219                                     2>/dev/null && \
6220                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6221                                     < tmp.imp >>libc.tmp
6222                                 $rm tmp.imp
6223                         done
6224                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6225                         echo "Ok." >&4
6226                 else
6227                         echo "$ar didn't seem to work right." >&4
6228                         echo "Maybe this is a Cray...trying bld instead..." >&4
6229                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6230                         then
6231                                 for thisname in $libnames; do
6232                                         bld t $libnames | \
6233                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6234                                         $ar t $thisname >>libc.tmp
6235                                 done
6236                                 echo "Ok." >&4
6237                         else
6238                                 echo "That didn't work either.  Giving up." >&4
6239                                 exit 1
6240                         fi
6241                 fi
6242         fi
6243 fi
6244 nm_extract="$com"
6245 if $test -f /lib/syscalls.exp; then
6246         echo " "
6247         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6248         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6249 fi
6250 ;;
6251 esac
6252 $rm -f libnames libpath
6253
6254 : see if dld is available
6255 set dld.h i_dld
6256 eval $inhdr
6257
6258 : is a C symbol defined?
6259 csym='tlook=$1;
6260 case "$3" in
6261 -v) tf=libc.tmp; tc=""; tdc="";;
6262 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6263 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6264 esac;
6265 tx=yes;
6266 case "$reuseval-$4" in
6267 true-) ;;
6268 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6269 esac;
6270 case "$tx" in
6271 yes)
6272         case "$runnm" in
6273         true)
6274                 if $contains $tlook $tf >/dev/null 2>&1;
6275                 then tval=true;
6276                 else tval=false;
6277                 fi;;
6278         *)
6279                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6280                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6281                 then tval=true;
6282                 else tval=false;
6283                 fi;
6284                 $rm -f t t.c;;
6285         esac;;
6286 *)
6287         case "$tval" in
6288         $define) tval=true;;
6289         *) tval=false;;
6290         esac;;
6291 esac;
6292 eval "$2=$tval"'
6293
6294 : define an is-in-libc? function
6295 inlibc='echo " "; td=$define; tu=$undef;
6296 sym=$1; var=$2; eval "was=\$$2";
6297 tx=yes;
6298 case "$reuseval$was" in
6299 true) ;;
6300 true*) tx=no;;
6301 esac;
6302 case "$tx" in
6303 yes)
6304         set $sym tres -f;
6305         eval $csym;
6306         case "$tres" in
6307         true)
6308                 echo "$sym() found." >&4;
6309                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6310         *)
6311                 echo "$sym() NOT found." >&4;
6312                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6313         esac;;
6314 *)
6315         case "$was" in
6316         $define) echo "$sym() found." >&4;;
6317         *) echo "$sym() NOT found." >&4;;
6318         esac;;
6319 esac'
6320
6321 : see if dlopen exists
6322 xxx_runnm="$runnm"
6323 runnm=false
6324 set dlopen d_dlopen
6325 eval $inlibc
6326 runnm="$xxx_runnm"
6327
6328 : determine which dynamic loading, if any, to compile in
6329 echo " "
6330 dldir="ext/DynaLoader"
6331 case "$usedl" in
6332 $define|y|true)
6333         dflt='y'
6334         usedl="$define"
6335         ;;
6336 $undef|n|false)
6337         dflt='n'
6338         usedl="$undef"
6339         ;;
6340 *) 
6341         dflt='n'
6342         case "$d_dlopen" in
6343             $define) dflt='y' ;;
6344         esac
6345         case "$i_dld" in
6346             $define) dflt='y' ;;
6347         esac
6348         : Does a dl_xxx.xs file exist for this operating system
6349         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6350         ;;
6351 esac
6352 rp="Do you wish to use dynamic loading?"
6353 . ./myread
6354 usedl="$ans"
6355 case "$ans" in
6356 y*) usedl="$define"
6357         case "$dlsrc" in
6358         '')
6359                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6360                         dflt="$dldir/dl_${osname}.xs"
6361                 elif $test "$d_dlopen" = "$define" ; then
6362                         dflt="$dldir/dl_dlopen.xs"
6363                 elif $test "$i_dld" = "$define" ; then
6364                         dflt="$dldir/dl_dld.xs"
6365                 else
6366                         dflt=''
6367                 fi
6368                 ;;
6369         *)      dflt="$dldir/$dlsrc"
6370                 ;;
6371         esac
6372     echo "The following dynamic loading files are available:"
6373         : Can not go over to $dldir because getfile has path hard-coded in.
6374         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6375         rp="Source file to use for dynamic loading"
6376         fn="fne"
6377         gfpth="$src"
6378         . ./getfile
6379         usedl="$define"
6380         : emulate basename
6381         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6382
6383         $cat << EOM
6384
6385 Some systems may require passing special flags to $cc -c to
6386 compile modules that will be used to create a shared library.
6387 To use no flags, say "none".
6388
6389 EOM
6390     case "$cccdlflags" in
6391     '') case "$gccversion" in
6392                 '') case "$osname" in
6393                         hpux)   dflt='+z' ;;
6394                         next)   dflt='none' ;;
6395                         irix*)  dflt='-KPIC' ;;
6396                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6397                         sunos)  dflt='-pic' ;;
6398                         *)      dflt='none' ;;
6399                     esac
6400                         ;;
6401                 *)  case "$osname" in
6402                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6403                         *)      dflt='-fpic' ;;
6404                     esac ;;
6405             esac ;;
6406         ' ') dflt='none' ;;
6407     *)  dflt="$cccdlflags" ;;
6408     esac
6409     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6410     . ./myread
6411     case "$ans" in
6412     none) cccdlflags=' ' ;;
6413     *) cccdlflags="$ans" ;;
6414     esac
6415
6416     cat << EOM
6417
6418 Some systems use ld to create libraries that can be dynamically loaded,
6419 while other systems (such as those using ELF) use $cc.
6420
6421 EOM
6422         case "$ld" in
6423         '')     $cat >try.c <<'EOM'
6424 /* Test for whether ELF binaries are produced */
6425 #include <fcntl.h>
6426 #include <stdlib.h>
6427 int main() {
6428         char b[4];
6429         int i = open("a.out",O_RDONLY);
6430         if(i == -1) 
6431                 exit(1); /* fail */
6432         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6433                 exit(0); /* succeed (yes, it's ELF) */
6434         else
6435                 exit(1); /* fail */
6436 }
6437 EOM
6438                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6439                         cat <<EOM
6440 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6441 EOM
6442                         dflt="$cc"
6443                 else
6444                         echo "I'll use ld to build dynamic libraries."
6445                         dflt='ld'
6446                 fi
6447                 rm -f try.c a.out
6448                 ;;
6449         *)      dflt="$ld"
6450                 ;;
6451         esac
6452
6453     rp="What command should be used to create dynamic libraries?"
6454     . ./myread
6455         ld="$ans"
6456
6457     cat << EOM
6458
6459 Some systems may require passing special flags to $ld to create a
6460 library that can be dynamically loaded.  If your ld flags include
6461 -L/other/path options to locate libraries outside your loader's normal
6462 search path, you may need to specify those -L options here as well.  To
6463 use no flags, say "none".
6464
6465 EOM
6466     case "$lddlflags" in
6467     '') case "$osname" in
6468                         beos) dflt='-nostart' ;;
6469                         hpux) dflt='-b';
6470                               case "$gccversion" in
6471                               '') dflt="$dflt +vnocompatwarnings" ;;
6472                               esac
6473                               ;;        
6474                         linux|irix*)    dflt='-shared' ;;
6475                         next)  dflt='none' ;;
6476                         solaris) dflt='-G' ;;
6477                         sunos) dflt='-assert nodefinitions' ;;
6478                         svr4*|esix*) dflt="-G $ldflags" ;;
6479                 *)     dflt='none' ;;
6480                         esac
6481                         ;;
6482     *) dflt="$lddlflags" ;;
6483     esac
6484
6485         : Try to guess additional flags to pick up local libraries.
6486         : Be careful not to append to a plain 'none'
6487         case "$dflt" in
6488         none) dflt='' ;;
6489         esac
6490         for thisflag in $ldflags; do
6491                 case "$thisflag" in
6492                 -L*)
6493                         case " $dflt " in
6494                         *" $thisflag "*) ;;
6495                         *) dflt="$dflt $thisflag" ;;
6496                         esac
6497                         ;;
6498                 esac
6499         done
6500
6501         case "$dflt" in
6502         ''|' ') dflt='none' ;;
6503         esac
6504
6505     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6506     . ./myread
6507     case "$ans" in
6508     none) lddlflags=' ' ;;
6509     *) lddlflags="$ans" ;;
6510     esac
6511
6512         cat <<EOM
6513
6514 Some systems may require passing special flags to $cc to indicate that
6515 the resulting executable will use dynamic linking.  To use no flags,
6516 say "none".
6517
6518 EOM
6519     case "$ccdlflags" in
6520     '') case "$osname" in
6521                 hpux)   dflt='-Wl,-E' ;;
6522                 linux)  dflt='-rdynamic' ;;
6523                 next)   dflt='none' ;;
6524                 sunos)  dflt='none' ;;
6525                 *)      dflt='none' ;;
6526             esac ;;
6527     ' ')  dflt='none' ;;
6528     *)  dflt="$ccdlflags" ;;
6529     esac
6530     rp="Any special flags to pass to $cc to use dynamic linking?"
6531     . ./myread
6532     case "$ans" in
6533     none) ccdlflags=' ' ;;
6534     *) ccdlflags="$ans" ;;
6535     esac
6536     ;;
6537 *)  usedl="$undef"
6538         ld='ld'
6539     dlsrc='dl_none.xs'
6540     lddlflags=''
6541     ccdlflags=''
6542     ;;
6543 esac
6544
6545 also=''
6546 case "$usedl" in
6547 $undef)
6548         # No dynamic loading being used, so don't bother even to prompt.
6549         useshrplib='false'
6550         ;;
6551 *)      case "$useshrplib" in
6552         '')     case "$osname" in
6553                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6554                         dflt=y
6555                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6556                         ;;
6557                 next*)
6558                         case "$osvers" in
6559                         4*)     dflt=y
6560                                 also='Building a shared libperl is needed for MAB support.'
6561                                 ;;
6562                         *)      dflt=n
6563                                 ;;
6564                         esac
6565                         ;;
6566                 *)      dflt=n
6567                         ;;
6568                 esac
6569                 ;;
6570         $define|true|[Yy]*)
6571                 dflt=y
6572                 ;;
6573         *)      dflt=n
6574                 ;;
6575         esac
6576         $cat << EOM
6577
6578 The perl executable is normally obtained by linking perlmain.c with
6579 libperl${_a}, any static extensions (usually just DynaLoader), and
6580 any other libraries needed on this system (such as -lm, etc.).  Since
6581 your system supports dynamic loading, it is probably possible to build
6582 a shared libperl.$so.  If you will have more than one executable linked
6583 to libperl.$so, this will significantly reduce the size of each
6584 executable, but it may have a noticeable affect on performance.  The
6585 default is probably sensible for your system.
6586 $also
6587
6588 EOM
6589         rp="Build a shared libperl.$so (y/n)"
6590         . ./myread
6591         case "$ans" in
6592         true|$define|[Yy]*)
6593                 useshrplib='true'  ;;
6594         *)      useshrplib='false' ;;
6595         esac
6596         ;;
6597 esac
6598
6599 case "$useshrplib" in
6600 true)
6601         case "$libperl" in
6602         '')
6603                 # Figure out a good name for libperl.so.  Since it gets stored in
6604                 # a version-specific architecture-dependent library, the version
6605                 # number isn't really that important, except for making cc/ld happy.
6606                 #
6607                 # A name such as libperl.so.3.1
6608                 majmin="libperl.$so.$patchlevel.$subversion"
6609                 # A name such as libperl.so.301
6610                 majonly=`echo $patchlevel $subversion |
6611                         $awk '{printf "%d%02d", $1, $2}'`
6612                 majonly=libperl.$so.$majonly
6613                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6614                 # rely on figuring it out from the naming of libc.
6615                 case "${osname}${osvers}" in
6616                 next4*)
6617                         dflt=libperl.5.$so
6618                         # XXX How handle the --version stuff for MAB?
6619                         ;;
6620                 linux*)  # ld won't link with a bare -lperl otherwise.
6621                         dflt=libperl.$so
6622                         ;;
6623                 cygwin*) # include version
6624                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6625                         ;;
6626                 *)      # Try to guess based on whether libc has major.minor.
6627                         case "$libc" in
6628                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6629                         *libc.$so.[0-9]*) dflt=$majonly ;;
6630                         *)      dflt=libperl.$so ;;
6631                         esac
6632                         ;;
6633                 esac
6634                 ;;
6635         *)      dflt=$libperl
6636                 ;;
6637         esac
6638         cat << EOM
6639
6640 I need to select a good name for the shared libperl.  If your system uses
6641 library names with major and minor numbers, then you might want something
6642 like $majmin.  Alternatively, if your system uses a single version
6643 number for shared libraries, then you might want to use $majonly.
6644 Or, your system might be quite happy with a simple libperl.$so.
6645
6646 Since the shared libperl will get installed into a version-specific
6647 architecture-dependent directory, the version number of the shared perl
6648 library probably isn't important, so the default should be o.k.
6649
6650 EOM
6651         rp='What name do you want to give to the shared libperl?'
6652         . ./myread
6653         libperl=$ans
6654         echo "Ok, I'll use $libperl"
6655         ;;
6656 *)
6657         libperl="libperl${_a}"
6658         ;;
6659 esac
6660
6661 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6662 case "$shrpdir" in
6663 '') ;;
6664 *)      $cat >&4 <<EOM
6665 WARNING:  Use of the shrpdir variable for the installation location of
6666 the shared $libperl is not supported.  It was never documented and
6667 will not work in this version.  Let me (perlbug@perl.com)
6668 know of any problems this may cause.
6669
6670 EOM
6671         case "$shrpdir" in
6672         "$archlibexp/CORE")
6673                 $cat >&4 <<EOM
6674 But your current setting of $shrpdir is
6675 the default anyway, so it's harmless.
6676 EOM
6677                 ;;
6678         *)
6679                 $cat >&4 <<EOM
6680 Further, your current attempted setting of $shrpdir
6681 conflicts with the value of $archlibexp/CORE
6682 that installperl will use.
6683 EOM
6684                 ;;
6685         esac
6686         ;;
6687 esac
6688
6689 # How will the perl executable find the installed shared $libperl?
6690 # Add $xxx to ccdlflags.
6691 # If we can't figure out a command-line option, use $shrpenv to
6692 # set env LD_RUN_PATH.  The main perl makefile uses this.
6693 shrpdir=$archlibexp/CORE
6694 xxx=''
6695 tmp_shrpenv=''
6696 if "$useshrplib"; then
6697     case "$osname" in 
6698         aix)
6699                 # We'll set it in Makefile.SH...
6700                 ;;
6701         solaris|netbsd)
6702                 xxx="-R $shrpdir"
6703                 ;;
6704         freebsd)
6705                 xxx="-Wl,-R$shrpdir"
6706                 ;;
6707         linux|irix*|dec_osf)
6708                 xxx="-Wl,-rpath,$shrpdir"
6709                 ;;
6710         next)
6711                 # next doesn't like the default...
6712                 ;;
6713         beos)
6714                 # beos doesn't like the default, either.
6715                 ;;
6716         hpux*)
6717                 # hpux doesn't like the default, either.
6718                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6719                 ;;
6720         *)
6721                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6722                 ;;
6723         esac
6724         case "$xxx" in
6725         '') ;;
6726         *)      
6727                 # Only add $xxx if it isn't already in ccdlflags.
6728                 case " $ccdlflags " in
6729                 *" $xxx "*)     ;;
6730                 *)      ccdlflags="$ccdlflags $xxx"
6731                         cat <<EOM >&4
6732
6733 Adding $xxx to the flags
6734 passed to $ld so that the perl executable will find the 
6735 installed shared $libperl.
6736
6737 EOM
6738                         ;;
6739                 esac
6740                 ;;
6741         esac
6742 fi
6743 # Fix ccdlflags in AIX for building external extensions.
6744 # (For building Perl itself bare -bE:perl.exp is needed,
6745 #  Makefile.SH takes care of this.)
6746 case "$osname" in
6747 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6748 esac
6749 # Respect a hint or command-line value.
6750 case "$shrpenv" in
6751 '') shrpenv="$tmp_shrpenv" ;;
6752 esac
6753 case "$ldlibpthname" in
6754 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6755 none)   ldlibpthname='' ;;
6756 esac
6757
6758 : determine where manual pages go
6759 set man1dir man1dir none
6760 eval $prefixit
6761 $cat <<EOM
6762
6763 $spackage has manual pages available in source form.
6764 EOM
6765 case "$nroff" in
6766 nroff)
6767         echo "However, you don't have nroff, so they're probably useless to you."
6768         case "$man1dir" in
6769         '') man1dir="none";;
6770         esac;;
6771 esac
6772 echo "If you don't want the manual sources installed, answer 'none'."
6773 case "$man1dir" in
6774 ' ') dflt=none
6775         ;;
6776 '')
6777         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6778         lookpath="$lookpath $prefixexp/man/p_man/man1"
6779         lookpath="$lookpath $prefixexp/man/u_man/man1"
6780         lookpath="$lookpath $prefixexp/man/man.1"
6781         case "$sysman" in
6782         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6783         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6784         esac
6785         set dflt
6786         eval $prefixup
6787         ;;
6788 *)  dflt="$man1dir"
6789         ;;
6790 esac
6791 echo " "
6792 fn=dn+~
6793 rp="Where do the main $spackage manual pages (source) go?"
6794 . ./getfile
6795 if $test "X$man1direxp" != "X$ansexp"; then
6796         installman1dir=''
6797 fi
6798 man1dir="$ans"
6799 man1direxp="$ansexp"
6800 case "$man1dir" in
6801 '')     man1dir=' '
6802         installman1dir='';;
6803 esac
6804
6805 : Change installation prefix, if necessary.
6806 if $test X"$prefix" != X"$installprefix"; then
6807         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6808 else
6809         installman1dir="$man1direxp"
6810 fi
6811
6812 : What suffix to use on installed man pages
6813
6814 case "$man1dir" in
6815 ' ')
6816         man1ext='0'
6817         ;;
6818 *)
6819         rp="What suffix should be used for the main $spackage man pages?"
6820         case "$man1ext" in
6821         '')     case "$man1dir" in
6822                 *1)  dflt=1 ;;
6823                 *1p) dflt=1p ;;
6824                 *1pm) dflt=1pm ;;
6825                 *l) dflt=l;;
6826                 *n) dflt=n;;
6827                 *o) dflt=o;;
6828                 *p) dflt=p;;
6829                 *C) dflt=C;;
6830                 *L) dflt=L;;
6831                 *L1) dflt=L1;;
6832                 *) dflt=1;;
6833                 esac
6834                 ;;
6835         *)      dflt="$man1ext";;
6836         esac
6837         . ./myread
6838         man1ext="$ans"
6839         ;;
6840 esac
6841
6842 : see if we can have long filenames
6843 echo " "
6844 first=123456789abcdef
6845 $rm -f $first
6846 if (echo hi >$first) 2>/dev/null; then
6847         if $test -f 123456789abcde; then
6848                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6849                 val="$undef"
6850         else
6851                 echo 'You can have filenames longer than 14 characters.'>&4
6852                 val="$define"
6853         fi
6854 else
6855         $cat <<'EOM'
6856 You can't have filenames longer than 14 chars.
6857 You can't even think about them!
6858 EOM
6859         val="$undef"
6860 fi 
6861 set d_flexfnam
6862 eval $setvar
6863 $rm -rf 123456789abcde*
6864
6865 : determine where library module manual pages go
6866 set man3dir man3dir none
6867 eval $prefixit
6868 $cat <<EOM
6869
6870 $spackage has manual pages for many of the library modules.
6871 EOM
6872
6873 case "$nroff" in
6874 nroff)
6875         $cat <<'EOM'
6876 However, you don't have nroff, so they're probably useless to you.
6877 EOM
6878         case "$man3dir" in
6879         '') man3dir="none";;
6880         esac;;
6881 esac
6882
6883 case "$d_flexfnam" in
6884 undef)
6885         $cat <<'EOM'
6886 However, your system can't handle the long file names like File::Basename.3. 
6887 EOM
6888         case "$man3dir" in
6889         '') man3dir="none";;
6890         esac;;
6891 esac
6892
6893 echo "If you don't want the manual sources installed, answer 'none'."
6894 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6895 case "$man3dir" in
6896 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6897         if $test -d "$privlib/man/man3"; then
6898                 cat <<EOM >&4
6899
6900 WARNING:  Previous versions of perl installed man3 pages into
6901 $privlib/man/man3.  This version will suggest a 
6902 new default of $dflt.  
6903 EOM
6904                 tdflt=$dflt
6905                 dflt='n'
6906                 rp='Do you wish to preserve the old behavior?(y/n)'
6907                 . ./myread
6908                 case "$ans" in
6909                 y*) dflt="$privlib/man/man3" ;;
6910                 *)  dflt=$tdflt ;;
6911                 esac
6912     fi
6913         ;;
6914 *)      dflt="$man3dir" ;;
6915 esac
6916 case "$dflt" in
6917 ' ') dflt=none ;;
6918 esac
6919 echo " "
6920 fn=dn+~
6921 rp="Where do the $package library man pages (source) go?"
6922 . ./getfile
6923 man3dir="$ans"
6924 man3direxp="$ansexp"
6925 case "$man3dir" in
6926 '')     man3dir=' '
6927         installman3dir='';;
6928 esac
6929
6930 : Change installation prefix, if necessary.
6931 if $test X"$prefix" != X"$installprefix"; then
6932         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6933 else
6934         installman3dir="$man3direxp"
6935 fi
6936
6937 : What suffix to use on installed man pages
6938 case "$man3dir" in
6939 ' ')
6940         man3ext='0'
6941         ;;
6942 *)
6943         rp="What suffix should be used for the $package library man pages?"
6944         case "$man3ext" in
6945         '')     case "$man3dir" in
6946                 *3)  dflt=3 ;;
6947                 *3p) dflt=3p ;;
6948                 *3pm) dflt=3pm ;;
6949                 *l) dflt=l;;
6950                 *n) dflt=n;;
6951                 *o) dflt=o;;
6952                 *p) dflt=p;;
6953                 *C) dflt=C;;
6954                 *L) dflt=L;;
6955                 *L3) dflt=L3;;
6956                 *) dflt=3;;
6957                 esac
6958                 ;;
6959         *)      dflt="$man3ext";;
6960         esac
6961         . ./myread
6962         man3ext="$ans"
6963         ;;
6964 esac
6965
6966 : see if we have to deal with yellow pages, now NIS.
6967 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6968         if $test -f /usr/etc/nibindd; then
6969                 echo " "
6970                 echo "I'm fairly confident you're on a NeXT."
6971                 echo " "
6972                 rp='Do you get the hosts file via NetInfo?'
6973                 dflt=y
6974                 case "$hostcat" in
6975                 nidump*) ;;
6976                 '') ;;
6977                 *) dflt=n;;
6978                 esac
6979                 . ./myread
6980                 case "$ans" in
6981                 y*) hostcat='nidump hosts .';;
6982                 *)      case "$hostcat" in
6983                         nidump*) hostcat='';;
6984                         esac
6985                         ;;
6986                 esac
6987         fi
6988         case "$hostcat" in
6989         nidump*) ;;
6990         *)
6991                 case "$hostcat" in
6992                 *ypcat*) dflt=y;;
6993                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6994                                 dflt=y
6995                         else
6996                                 dflt=n
6997                         fi;;
6998                 *) dflt=n;;
6999                 esac
7000                 echo " "
7001                 rp='Are you getting the hosts file via yellow pages?'
7002                 . ./myread
7003                 case "$ans" in
7004                 y*) hostcat='ypcat hosts';;
7005                 *) hostcat='cat /etc/hosts';;
7006                 esac
7007                 ;;
7008         esac
7009 fi
7010 case "$hostcat" in
7011 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7012 esac
7013 case "$groupcat" in
7014 '') test -f /etc/group && groupcat='cat /etc/group';;
7015 esac
7016 case "$passcat" in
7017 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7018 esac
7019
7020 : now get the host name
7021 echo " "
7022 echo "Figuring out host name..." >&4
7023 case "$myhostname" in
7024 '') cont=true
7025         echo 'Maybe "hostname" will work...'
7026         if tans=`sh -c hostname 2>&1` ; then
7027                 myhostname=$tans
7028                 phostname=hostname
7029                 cont=''
7030         fi
7031         ;;
7032 *) cont='';;
7033 esac
7034 if $test "$cont"; then
7035         if ./xenix; then
7036                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7037                 if tans=`cat /etc/systemid 2>&1` ; then
7038                         myhostname=$tans
7039                         phostname='cat /etc/systemid'
7040                         echo "Whadyaknow.  Xenix always was a bit strange..."
7041                         cont=''
7042                 fi
7043         elif $test -r /etc/systemid; then
7044                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7045         fi
7046 fi
7047 if $test "$cont"; then
7048         echo 'No, maybe "uuname -l" will work...'
7049         if tans=`sh -c 'uuname -l' 2>&1` ; then
7050                 myhostname=$tans
7051                 phostname='uuname -l'
7052         else
7053                 echo 'Strange.  Maybe "uname -n" will work...'
7054                 if tans=`sh -c 'uname -n' 2>&1` ; then
7055                         myhostname=$tans
7056                         phostname='uname -n'
7057                 else
7058                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7059                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7060                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7061                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7062                         else
7063                                 case "$myhostname" in
7064                                 '') echo "Does this machine have an identity crisis or something?"
7065                                         phostname='';;
7066                                 *)
7067                                         echo "Well, you said $myhostname before..."
7068                                         phostname='echo $myhostname';;
7069                                 esac
7070                         fi
7071                 fi
7072         fi
7073 fi
7074 : you do not want to know about this
7075 set $myhostname
7076 myhostname=$1
7077
7078 : verify guess
7079 if $test "$myhostname" ; then
7080         dflt=y
7081         rp='Your host name appears to be "'$myhostname'".'" Right?"
7082         . ./myread
7083         case "$ans" in
7084         y*) ;;
7085         *) myhostname='';;
7086         esac
7087 fi
7088
7089 : bad guess or no guess
7090 while $test "X$myhostname" = X ; do
7091         dflt=''
7092         rp="Please type the (one word) name of your host:"
7093         . ./myread
7094         myhostname="$ans"
7095 done
7096
7097 : translate upper to lower if necessary
7098 case "$myhostname" in
7099 *[A-Z]*)
7100         echo "(Normalizing case in your host name)"
7101         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7102         ;;
7103 esac
7104
7105 case "$myhostname" in
7106 *.*)
7107         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7108         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7109         echo "(Trimming domain name from host name--host name is now $myhostname)"
7110         ;;
7111 *) case "$mydomain" in
7112         '')
7113                 {
7114                         test "X$hostcat" = "Xypcat hosts" &&
7115                         ypmatch "$myhostname" hosts 2>/dev/null |\
7116                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7117                         $test -s hosts
7118                 } || {
7119                         test "X$hostcat" != "X" &&
7120                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7121                                         /[       ]$myhostname[  . ]/p" > hosts
7122                 }
7123                 tmp_re="[       . ]"
7124                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7125                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7126                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7127                         hosts | $sort | $uniq | \
7128                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7129                 case `$echo X$dflt` in
7130                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7131                         dflt=.
7132                         ;;
7133                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7134                         ;;
7135                 esac
7136                 case "$dflt" in
7137                 .)
7138                         tans=`./loc resolv.conf X /etc /usr/etc`
7139                         if $test -f "$tans"; then
7140                                 echo "(Attempting domain name extraction from $tans)"
7141                                 dflt=.`$sed -n -e 's/   / /g' \
7142                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7143                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7144                                 case "$dflt" in
7145                                 .) dflt=.`$sed -n -e 's/        / /g' \
7146                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7147                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7148                                         ;;
7149                                 esac
7150                         fi
7151                         ;;
7152                 esac
7153                 case "$dflt" in
7154                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7155                         dflt=.`sh -c domainname 2>/dev/null`
7156                         case "$dflt" in
7157                         '') dflt='.';;
7158                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7159                         esac
7160                         ;;
7161                 esac
7162                 case "$dflt" in
7163                 .) echo "(Lost all hope -- silly guess then)"
7164                         dflt='.uucp'
7165                         ;;
7166                 esac
7167                 $rm -f hosts
7168                 ;;
7169         *) dflt="$mydomain";;
7170         esac;;
7171 esac
7172 echo " "
7173 rp="What is your domain name?"
7174 . ./myread
7175 tans="$ans"
7176 case "$ans" in
7177 '') ;;
7178 .*) ;;
7179 *) tans=".$tans";;
7180 esac
7181 mydomain="$tans"
7182
7183 : translate upper to lower if necessary
7184 case "$mydomain" in
7185 *[A-Z]*)
7186         echo "(Normalizing case in your domain name)"
7187         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7188         ;;
7189 esac
7190
7191 : a little sanity check here
7192 case "$phostname" in
7193 '') ;;
7194 *)
7195         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7196         $myhostname$mydomain|$myhostname) ;;
7197         *)
7198                 case "$phostname" in
7199                 sed*)
7200                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7201                         ;;
7202                 *)
7203                         echo "(That doesn't agree with your $phostname command, by the way.)"
7204                         ;;
7205                 esac
7206         ;;
7207         esac
7208         ;;
7209 esac
7210
7211 $cat <<EOM
7212
7213 I need to get your e-mail address in Internet format if possible, i.e.
7214 something like user@host.domain. Please answer accurately since I have
7215 no easy means to double check it. The default value provided below
7216 is most probably close to reality but may not be valid from outside
7217 your organization...
7218
7219 EOM
7220 cont=x
7221 while test "$cont"; do
7222         case "$cf_email" in
7223         '') dflt="$cf_by@$myhostname$mydomain";;
7224         *) dflt="$cf_email";;
7225         esac
7226         rp='What is your e-mail address?'
7227         . ./myread
7228         cf_email="$ans"
7229         case "$cf_email" in
7230         *@*.*) cont='' ;;
7231         *)
7232                 rp='Address does not look like an Internet one.  Use it anyway?'
7233                 case "$fastread" in
7234                 yes) dflt=y ;;
7235                 *) dflt=n ;;
7236                 esac
7237                 . ./myread
7238                 case "$ans" in
7239                 y*) cont='' ;;
7240                 *) echo " " ;;
7241                 esac
7242                 ;;
7243         esac
7244 done
7245
7246 $cat <<EOM
7247
7248 If you or somebody else will be maintaining perl at your site, please
7249 fill in the correct e-mail address here so that they may be contacted
7250 if necessary. Currently, the "perlbug" program included with perl
7251 will send mail to this address in addition to perlbug@perl.com. You may
7252 enter "none" for no administrator.
7253
7254 EOM
7255 case "$perladmin" in
7256 '') dflt="$cf_email";;
7257 *) dflt="$perladmin";;
7258 esac
7259 rp='Perl administrator e-mail address'
7260 . ./myread
7261 perladmin="$ans"
7262
7263 : figure out how to guarantee perl startup
7264 case "$startperl" in
7265 '')
7266         case "$sharpbang" in
7267         *!)
7268                 $cat <<EOH
7269
7270 I can use the #! construct to start perl on your system. This will
7271 make startup of perl scripts faster, but may cause problems if you
7272 want to share those scripts and perl is not in a standard place
7273 ($binexp/perl) on all your platforms. The alternative is to force
7274 a shell by starting the script with a single ':' character.
7275
7276 EOH
7277                 dflt="$binexp/perl"
7278                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7279                 . ./myread
7280                 case "$ans" in
7281                 none)   startperl=": # use perl";;
7282                 *)      startperl="#!$ans"
7283                         if $test 30 -lt `echo "$ans" | wc -c`; then
7284                                 $cat >&4 <<EOM
7285
7286 WARNING:  Some systems limit the #! command to 32 characters.
7287 If you experience difficulty running Perl scripts with #!, try
7288 installing Perl in a directory with a shorter pathname.
7289
7290 EOM
7291                         fi ;;
7292                 esac
7293                 ;;
7294         *) startperl=": # use perl"
7295                 ;;
7296         esac
7297         ;;
7298 esac
7299 echo "I'll use $startperl to start perl scripts."
7300
7301 : figure best path for perl in scripts
7302 case "$perlpath" in
7303 '')
7304         perlpath="$binexp/perl"
7305         case "$startperl" in
7306         *!*) ;;
7307         *)
7308                 $cat <<EOH
7309
7310 I will use the "eval 'exec'" idiom to start Perl on your system.
7311 I can use the full path of your Perl binary for this purpose, but
7312 doing so may cause problems if you want to share those scripts and
7313 Perl is not always in a standard place ($binexp/perl).
7314
7315 EOH
7316                 dflt="$binexp/perl"
7317                 rp="What path shall I use in \"eval 'exec'\"?"
7318                 . ./myread
7319                 perlpath="$ans"
7320                 ;;
7321         esac
7322         ;;
7323 esac
7324 case "$startperl" in
7325 *!*)    ;;
7326 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7327 esac
7328
7329 : determine where public executable scripts go
7330 set scriptdir scriptdir
7331 eval $prefixit
7332 case "$scriptdir" in
7333 '')
7334         dflt="$bin"
7335         : guess some guesses
7336         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7337         $test -d /usr/share/bin     && dflt=/usr/share/bin
7338         $test -d /usr/local/script  && dflt=/usr/local/script
7339         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7340         $test -d $prefixexp/script  && dflt=$prefixexp/script
7341         set dflt
7342         eval $prefixup
7343         ;;
7344 *)  dflt="$scriptdir"
7345         ;;
7346 esac
7347 $cat <<EOM
7348  
7349 Some installations have a separate directory just for executable scripts so
7350 that they can mount it across multiple architectures but keep the scripts in
7351 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7352 Or you might just lump your scripts in with all your other executables.
7353  
7354 EOM
7355 fn=d~
7356 rp='Where do you keep publicly executable scripts?'
7357 . ./getfile
7358 if $test "X$ansexp" != "X$scriptdirexp"; then
7359         installscript=''
7360 fi
7361 scriptdir="$ans"
7362 scriptdirexp="$ansexp"
7363 : Change installation prefix, if necessary.
7364 if $test X"$prefix" != X"$installprefix"; then
7365         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7366 else
7367         installscript="$scriptdirexp"
7368 fi
7369
7370 : determine where add-on public executables go
7371 case "$sitebin" in
7372 '')     dflt=$siteprefix/bin ;;
7373 *)      dflt=$sitebin ;;
7374 esac
7375 fn=d~
7376 rp='Pathname where the add-on public executables should be installed?'
7377 . ./getfile
7378 sitebin="$ans"
7379 sitebinexp="$ansexp"
7380 : Change installation prefix, if necessary.
7381 if $test X"$prefix" != X"$installprefix"; then
7382         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7383 else
7384         installsitebin="$sitebinexp"
7385 fi
7386
7387 : see if sqrtl exists
7388 set sqrtl d_sqrtl
7389 eval $inlibc
7390
7391 case "$ccflags" in
7392 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7393 esac
7394
7395 case "$uselongdouble" in
7396 $define|true|[yY]*)     dflt='y';;
7397 *) dflt='n';;
7398 esac
7399 cat <<EOM
7400
7401 Perl can be built to take advantage of long doubles which
7402 (if available) may give more accuracy and range for floating point numbers.
7403
7404 If this doesn't make any sense to you, just accept the default '$dflt'.
7405 EOM
7406 rp='Try to use long doubles if available?'
7407 . ./myread
7408 case "$ans" in
7409 y|Y)    val="$define"   ;;
7410 *)      val="$undef"    ;;
7411 esac
7412 set uselongdouble
7413 eval $setvar
7414
7415 case "$uselongdouble" in
7416 true|[yY]*) uselongdouble="$define" ;;
7417 esac
7418
7419 case "$uselongdouble" in
7420 $define)
7421 : Look for a hint-file generated 'call-back-unit'.  If the
7422 : user has specified that long doubles should be used,
7423 : we may need to set or change some other defaults.
7424         if $test -f uselongdouble.cbu; then
7425                 echo "Your platform has some specific hints for long doubles, using them..."
7426                 . ./uselongdouble.cbu
7427         else
7428                 $cat <<EOM
7429 (Your platform doesn't have any specific hints for long doubles.)
7430 EOM
7431         fi
7432         ;;
7433 esac
7434
7435 case "$uselongdouble:$d_sqrtl" in
7436 $define:$undef)
7437                 $cat <<EOM >&4
7438
7439 *** You requested the use of long doubles but you do not seem to have
7440 *** the mathematic functions for long doubles.  I'm disabling the use
7441 *** of long doubles.
7442
7443 EOM
7444         uselongdouble=$undef
7445         ;;
7446 esac
7447
7448 case "$useperlio" in
7449 $define|true|[yY]*)     dflt='y';;
7450 *) dflt='n';;
7451 esac
7452 cat <<EOM
7453
7454 Previous version of $package used the standard IO mechanisms as defined
7455 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7456 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7457 the default.  This abstraction layer can use AT&T's sfio (if you already
7458 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7459 problems with some extension modules.  Using PerlIO with stdio is safe,
7460 but it is slower than plain stdio and therefore is not the default.
7461
7462 If this doesn't make any sense to you, just accept the default '$dflt'.
7463 EOM
7464 rp='Use the experimental PerlIO abstraction layer?'
7465 . ./myread
7466 case "$ans" in
7467 y|Y) 
7468         val="$define"
7469         ;;     
7470 *)      
7471         echo "Ok, doing things the stdio way"
7472         val="$undef"
7473         ;;
7474 esac
7475 set useperlio
7476 eval $setvar 
7477
7478 case "$vendorprefix" in
7479 '')     d_vendorbin="$undef"
7480         vendorbin=''
7481         vendorbinexp=''
7482         ;;
7483 *)      d_vendorbin="$define"
7484         : determine where vendor-supplied executables go.
7485         case "$vendorbin" in
7486         '') dflt=$vendorprefix/bin ;;
7487         *)      dflt="$vendorbin" ;;
7488         esac
7489         fn=d~+
7490         rp='Pathname for the vendor-supplied executables directory?'
7491         . ./getfile
7492         vendorbin="$ans"
7493         vendorbinexp="$ansexp"
7494         ;;
7495 esac
7496 : Change installation prefix, if necessary.
7497 if $test X"$prefix" != X"$installprefix"; then
7498         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7499 else
7500         installvendorbin="$vendorbinexp"
7501 fi
7502
7503 : see if qgcvt exists
7504 set qgcvt d_qgcvt
7505 eval $inlibc
7506
7507 : check for length of double
7508 echo " "
7509 case "$doublesize" in
7510 '')
7511         echo "Checking to see how big your double precision numbers are..." >&4
7512         $cat >try.c <<'EOCP'
7513 #include <stdio.h>
7514 int main()
7515 {
7516     printf("%d\n", (int)sizeof(double));
7517     exit(0);
7518 }
7519 EOCP
7520         set try
7521         if eval $compile_ok; then
7522                 doublesize=`./try`
7523                 echo "Your double is $doublesize bytes long."
7524         else
7525                 dflt='8'
7526                 echo "(I can't seem to compile the test program.  Guessing...)"
7527                 rp="What is the size of a double precision number (in bytes)?"
7528                 . ./myread
7529                 doublesize="$ans"
7530         fi
7531         ;;
7532 esac
7533 $rm -f try.c try
7534
7535 : check for long doubles
7536 echo " "
7537 echo "Checking to see if you have long double..." >&4
7538 echo 'int main() { long double x = 7.0; }' > try.c
7539 set try
7540 if eval $compile; then
7541         val="$define"
7542         echo "You have long double."
7543 else
7544         val="$undef"
7545         echo "You do not have long double."
7546 fi
7547 $rm try.*
7548 set d_longdbl
7549 eval $setvar
7550
7551 : check for length of long double
7552 case "${d_longdbl}${longdblsize}" in
7553 $define)
7554         echo " "
7555         echo "Checking to see how big your long doubles are..." >&4
7556         $cat >try.c <<'EOCP'
7557 #include <stdio.h>
7558 int main()
7559 {
7560         printf("%d\n", sizeof(long double));
7561 }
7562 EOCP
7563         set try
7564         set try
7565         if eval $compile; then
7566                 longdblsize=`./try$exe_ext`
7567                 echo "Your long doubles are $longdblsize bytes long."
7568         else
7569                 dflt='8'
7570                 echo " "
7571                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7572                 rp="What is the size of a long double (in bytes)?"
7573                 . ./myread
7574                 longdblsize="$ans"
7575         fi
7576         if $test "X$doublesize" = "X$longdblsize"; then
7577                 echo "(That isn't any different from an ordinary double.)"
7578         fi      
7579         ;;
7580 esac
7581 $rm -f try.* try
7582
7583 echo " "
7584
7585 if $test X"$d_longdbl" = X"$define"; then
7586
7587 echo "Checking how to print long doubles..." >&4
7588
7589 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7590         $cat >try.c <<'EOCP'
7591 #include <sys/types.h>
7592 #include <stdio.h>
7593 int main() {
7594   double d = 123.456;
7595   printf("%.3f\n", d);
7596 }
7597 EOCP
7598         set try
7599         if eval $compile; then
7600                 yyy=`./try$exe_ext`
7601                 case "$yyy" in
7602                 123.456)
7603                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7604                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7605                         echo "We will use %f."
7606                         ;;
7607                 esac
7608         fi
7609 fi
7610
7611 if $test X"$sPRIfldbl" = X; then
7612         $cat >try.c <<'EOCP'
7613 #include <sys/types.h>
7614 #include <stdio.h>
7615 int main() {
7616   long double d = 123.456;
7617   printf("%.3llf\n", d);
7618 }
7619 EOCP
7620         set try
7621         if eval $compile; then
7622                 yyy=`./try$exe_ext`
7623                 case "$yyy" in
7624                 123.456)
7625                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7626                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7627                         echo "We will use %llf."
7628                         ;;
7629                 esac
7630         fi
7631 fi
7632
7633 if $test X"$sPRIfldbl" = X; then
7634         $cat >try.c <<'EOCP'
7635 #include <sys/types.h>
7636 #include <stdio.h>
7637 int main() {
7638   long double d = 123.456;
7639   printf("%.3Lf\n", d);
7640 }
7641 EOCP
7642         set try
7643         if eval $compile; then
7644                 yyy=`./try$exe_ext`
7645                 case "$yyy" in
7646                 123.456)
7647                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7648                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7649                         echo "We will use %Lf."
7650                         ;;
7651                 esac
7652         fi
7653 fi
7654
7655 if $test X"$sPRIfldbl" = X; then
7656         $cat >try.c <<'EOCP'
7657 #include <sys/types.h>
7658 #include <stdio.h>
7659 int main() {
7660   long double d = 123.456;
7661   printf("%.3lf\n", d);
7662 }
7663 EOCP
7664         set try
7665         if eval $compile; then
7666                 yyy=`./try$exe_ext`
7667                 case "$yyy" in
7668                 123.456)
7669                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7670                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7671                         echo "We will use %lf."
7672                         ;;
7673                 esac
7674         fi
7675 fi
7676
7677 if $test X"$sPRIfldbl" = X; then
7678         echo "Cannot figure out how to print long doubles." >&4
7679 fi
7680
7681 $rm -f try try.*
7682
7683 fi # d_longdbl
7684
7685 case "$sPRIfldbl" in
7686 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7687         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7688         ;;
7689 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7690         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7691         ;;
7692 esac
7693
7694 : Check how to convert floats to strings.
7695 if test "X$d_Gconvert" = X; then
7696         echo " "
7697         echo "Checking for an efficient way to convert floats to strings."
7698         echo " " > try.c
7699         case "$uselongdouble" in
7700         "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7701         esac
7702         case "$d_longdbl" in
7703         "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7704         esac
7705         case "$d_PRIgldbl" in
7706         "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7707         esac
7708         $cat >>try.c <<EOP
7709 #ifdef TRY_gconvert
7710 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7711 char *myname = "gconvert";
7712 #endif
7713 #ifdef TRY_gcvt
7714 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7715 char *myname = "gcvt";
7716 #endif
7717 #ifdef TRY_qgcvt
7718 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7719 char *myname = "qgcvt";
7720 #define DOUBLETYPE long double
7721 #endif
7722 #ifdef TRY_sprintf
7723 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7724 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7725 #else
7726 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7727 #endif
7728 char *myname = "sprintf";
7729 #endif
7730
7731 #ifndef DOUBLETYPE
7732 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7733 #define DOUBLETYPE long double
7734 #else
7735 #define DOUBLETYPE double
7736 #endif
7737 #endif
7738
7739 #include <stdio.h>
7740
7741 #define I_STDLIB $i_stdlib
7742 #ifdef I_STDLIB
7743 #include <stdlib.h>
7744 #endif
7745
7746 int
7747 checkit(expect, got)
7748 char *expect;
7749 char *got;
7750 {
7751     if (strcmp(expect, got)) {
7752                 printf("%s oddity:  Expected %s, got %s\n",
7753                         myname, expect, got);
7754                 exit(1);
7755         }
7756 }
7757
7758 int main()
7759
7760         char buf[64]; 
7761         buf[63] = '\0';
7762
7763         /* This must be 1st test on (which?) platform */
7764         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7765         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7766         checkit("0.1", buf);
7767
7768         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7769         checkit("1", buf);
7770
7771         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7772         checkit("1.1", buf);
7773
7774         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7775         checkit("1.01", buf);
7776
7777         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7778         checkit("1.001", buf);
7779
7780         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7781         checkit("1.0001", buf);
7782
7783         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7784         checkit("1.00001", buf);
7785
7786         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7787         checkit("1.000001", buf);
7788
7789         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7790         checkit("0", buf);
7791
7792         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7793         checkit("-1", buf);
7794
7795         /* Some Linux gcvt's give 1.e+5 here. */
7796         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7797         checkit("100000", buf);
7798         
7799         /* Some Linux gcvt's give -1.e+5 here. */
7800         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7801         checkit("-100000", buf);
7802
7803         exit(0);
7804 }
7805 EOP
7806         case "$d_Gconvert" in
7807         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7808         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7809         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7810         *) xxx_list='gconvert gcvt sprintf' ;;
7811         esac
7812
7813         case "$d_longdbl$uselongdouble$d_qgcvt" in
7814         "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7815         esac
7816
7817         for xxx_convert in $xxx_list; do
7818                 echo "Trying $xxx_convert..."
7819                 $rm -f try try$_o
7820                 set try -DTRY_$xxx_convert
7821                 if eval $compile; then
7822                         echo "$xxx_convert() found." >&4
7823                         if ./try; then
7824                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7825                                 break;
7826                         else
7827                                 echo "...But $xxx_convert didn't work as I expected."
7828                         fi
7829                 else
7830                         echo "$xxx_convert NOT found." >&4
7831                 fi
7832         done
7833                 
7834         case "$xxx_convert" in
7835         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7836         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7837         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7838         *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7839            "$define$define$define")
7840               d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7841            *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7842            esac
7843            ;;  
7844         esac
7845 fi
7846
7847 : Initialize h_fcntl
7848 h_fcntl=false
7849
7850 : Initialize h_sysfile
7851 h_sysfile=false
7852
7853 : access call always available on UNIX
7854 set access d_access
7855 eval $inlibc
7856
7857 : locate the flags for 'access()'
7858 case "$d_access" in
7859 "$define")
7860         echo " "
7861         $cat >access.c <<'EOCP'
7862 #include <sys/types.h>
7863 #ifdef I_FCNTL
7864 #include <fcntl.h>
7865 #endif
7866 #ifdef I_SYS_FILE
7867 #include <sys/file.h>
7868 #endif
7869 #ifdef I_UNISTD
7870 #include <unistd.h>
7871 #endif
7872 int main() {
7873         exit(R_OK);
7874 }
7875 EOCP
7876         : check sys/file.h first, no particular reason here
7877         if $test `./findhdr sys/file.h` && \
7878                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7879                 h_sysfile=true;
7880                 echo "<sys/file.h> defines the *_OK access constants." >&4
7881         elif $test `./findhdr fcntl.h` && \
7882                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7883                 h_fcntl=true;
7884                 echo "<fcntl.h> defines the *_OK access constants." >&4
7885         elif $test `./findhdr unistd.h` && \
7886                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7887                 echo "<unistd.h> defines the *_OK access constants." >&4
7888         else
7889                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7890         fi
7891         ;;
7892 esac
7893 $rm -f access*
7894
7895 : see if accessx exists
7896 set accessx d_accessx
7897 eval $inlibc
7898
7899 : see if alarm exists
7900 set alarm d_alarm
7901 eval $inlibc
7902
7903 : see if atolf exists
7904 set atolf d_atolf
7905 eval $inlibc
7906
7907 : see if atoll exists
7908 set atoll d_atoll
7909 eval $inlibc
7910
7911 : Look for GNU-cc style attribute checking
7912 echo " "
7913 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7914 $cat >attrib.c <<'EOCP'
7915 #include <stdio.h>
7916 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7917 EOCP
7918 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7919         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7920                 echo "Your C compiler doesn't fully support __attribute__."
7921                 val="$undef"
7922         else
7923                 echo "Your C compiler supports __attribute__."
7924                 val="$define"
7925         fi
7926 else
7927         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7928         val="$undef"
7929 fi
7930 set d_attribut
7931 eval $setvar
7932 $rm -f attrib*
7933
7934 : see if bcmp exists
7935 set bcmp d_bcmp
7936 eval $inlibc
7937
7938 : see if bcopy exists
7939 set bcopy d_bcopy
7940 eval $inlibc
7941
7942 : see if this is a unistd.h system
7943 set unistd.h i_unistd
7944 eval $inhdr
7945
7946 : see if getpgrp exists
7947 set getpgrp d_getpgrp
7948 eval $inlibc
7949
7950 case "$d_getpgrp" in
7951 "$define")
7952         echo " "
7953         echo "Checking to see which flavor of getpgrp is in use..."
7954         $cat >set.c <<EOP
7955 #$i_unistd I_UNISTD
7956 #include <sys/types.h>
7957 #ifdef I_UNISTD
7958 #  include <unistd.h>
7959 #endif
7960 int main()
7961 {
7962         if (getuid() == 0) {
7963                 printf("(I see you are running Configure as super-user...)\n");
7964                 setuid(1);
7965         }
7966 #ifdef TRY_BSD_PGRP
7967         if (getpgrp(1) == 0)
7968                 exit(0);
7969 #else
7970         if (getpgrp() > 0)
7971                 exit(0);
7972 #endif
7973         exit(1);
7974 }
7975 EOP
7976         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7977                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7978                 val="$define"
7979         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7980                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7981                 val="$undef"
7982         else
7983                 echo "I can't seem to compile and run the test program."
7984                 if ./usg; then
7985                         xxx="a USG one, i.e. you use getpgrp()."
7986                 else
7987                         # SVR4 systems can appear rather BSD-ish.
7988                         case "$i_unistd" in
7989                         $undef)
7990                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7991                                 val="$define"
7992                                 ;;
7993                         $define)
7994                                 xxx="probably a USG one, i.e. you use getpgrp()."
7995                                 val="$undef"
7996                                 ;;
7997                         esac
7998                 fi
7999                 echo "Assuming your getpgrp is $xxx" >&4
8000         fi
8001         ;;
8002 *) val="$undef";;
8003 esac
8004 set d_bsdgetpgrp
8005 eval $setvar
8006 $rm -f set set.c
8007
8008 : see if setpgrp exists
8009 set setpgrp d_setpgrp
8010 eval $inlibc
8011
8012 case "$d_setpgrp" in
8013 "$define")
8014         echo " "
8015         echo "Checking to see which flavor of setpgrp is in use..."
8016         $cat >set.c <<EOP
8017 #$i_unistd I_UNISTD
8018 #include <sys/types.h>
8019 #ifdef I_UNISTD
8020 #  include <unistd.h>
8021 #endif
8022 int main()
8023 {
8024         if (getuid() == 0) {
8025                 printf("(I see you are running Configure as super-user...)\n");
8026                 setuid(1);
8027         }
8028 #ifdef TRY_BSD_PGRP
8029         if (-1 == setpgrp(1, 1))
8030                 exit(0);
8031 #else
8032         if (setpgrp() != -1)
8033                 exit(0);
8034 #endif
8035         exit(1);
8036 }
8037 EOP
8038         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8039                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8040                 val="$define"
8041         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8042                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8043                 val="$undef"
8044         else
8045                 echo "(I can't seem to compile and run the test program.)"
8046                 if ./usg; then
8047                         xxx="a USG one, i.e. you use setpgrp()."
8048                 else
8049                         # SVR4 systems can appear rather BSD-ish.
8050                         case "$i_unistd" in
8051                         $undef)
8052                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8053                                 val="$define"
8054                                 ;;
8055                         $define)
8056                                 xxx="probably a USG one, i.e. you use setpgrp()."
8057                                 val="$undef"
8058                                 ;;
8059                         esac
8060                 fi
8061                 echo "Assuming your setpgrp is $xxx" >&4
8062         fi
8063         ;;
8064 *) val="$undef";;
8065 esac
8066 set d_bsdsetpgrp
8067 eval $setvar
8068 $rm -f set set.c
8069 : see if bzero exists
8070 set bzero d_bzero
8071 eval $inlibc
8072
8073 : see if signal is declared as pointer to function returning int or void
8074 echo " "
8075 xxx=`./findhdr signal.h`
8076 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8077 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8078         echo "You have int (*signal())() instead of void." >&4
8079         val="$undef"
8080 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8081         echo "You have void (*signal())()." >&4
8082         val="$define"
8083 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8084         echo "You have int (*signal())() instead of void." >&4
8085         val="$undef"
8086 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8087         echo "You have void (*signal())()." >&4
8088         val="$define"
8089 else
8090         case "$d_voidsig" in
8091         '')
8092         echo "I can't determine whether signal handler returns void or int..." >&4
8093                 dflt=void
8094                 rp="What type does your signal handler return?"
8095                 . ./myread
8096                 case "$ans" in
8097                 v*) val="$define";;
8098                 *) val="$undef";;
8099                 esac;;
8100         "$define")
8101                 echo "As you already told me, signal handler returns void." >&4
8102                 val="$define"
8103                 ;;
8104         *)      echo "As you already told me, signal handler returns int." >&4
8105                 val="$undef"
8106                 ;;
8107         esac
8108 fi
8109 set d_voidsig
8110 eval $setvar
8111 case "$d_voidsig" in
8112 "$define") signal_t="void";;
8113 *) signal_t="int";;
8114 esac
8115 $rm -f $$.tmp
8116
8117 : check for ability to cast large floats to 32-bit ints.
8118 echo " "
8119 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8120 if $test "$intsize" -ge 4; then
8121         xxx=int
8122 else
8123         xxx=long
8124 fi
8125 $cat >try.c <<EOCP
8126 #include <stdio.h>
8127 #include <sys/types.h>
8128 #include <signal.h>
8129 $signal_t blech(s) int s; { exit(3); }
8130 int main()
8131 {
8132         $xxx i32;
8133         double f, g;
8134         int result = 0;
8135         char str[16];
8136         signal(SIGFPE, blech);
8137
8138         /* Don't let compiler optimize the test away.  Store the number 
8139            in a writable string for gcc to pass to sscanf under HP/UX.
8140         */
8141         sprintf(str, "2147483647");
8142         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8143         g = 10 * f;
8144         i32  = ($xxx) g;
8145
8146         /* x86 processors will probably give 0x8000 0000, which is a
8147        sign change.  We don't want that.  We want to mimic SPARC
8148            behavior here, which is to preserve the sign and give
8149            back 0x7fff ffff.
8150         */
8151         if (i32 != ($xxx) f)
8152                 result |= 1;
8153         exit(result);
8154 }
8155 EOCP
8156 set try
8157 if eval $compile_ok; then
8158         ./try
8159         yyy=$?
8160 else
8161         echo "(I can't seem to compile the test program--assuming it can't)"
8162         yyy=1
8163 fi
8164 case "$yyy" in
8165 0)      val="$define"
8166         echo "Yup, it can."
8167         ;;
8168 *)      val="$undef"
8169         echo "Nope, it can't."
8170         ;;
8171 esac
8172 set d_casti32
8173 eval $setvar
8174 $rm -f try try.*
8175
8176 : check for ability to cast negative floats to unsigned
8177 echo " "
8178 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8179 $cat >try.c <<EOCP
8180 #include <stdio.h>
8181 #include <sys/types.h>
8182 #include <signal.h>
8183 $signal_t blech(s) int s; { exit(7); }
8184 $signal_t blech_in_list(s) int s; { exit(4); }
8185 unsigned long dummy_long(p) unsigned long p; { return p; }
8186 unsigned int dummy_int(p) unsigned int p; { return p; }
8187 unsigned short dummy_short(p) unsigned short p; { return p; }
8188 int main()
8189 {
8190         double f;
8191         unsigned long along;
8192         unsigned int aint;
8193         unsigned short ashort;
8194         int result = 0;
8195         char str[16];
8196         
8197         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8198            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8199            optimized the whole file away
8200         */
8201         /* Store the number in a writable string for gcc to pass to 
8202            sscanf under HP/UX.
8203         */
8204         sprintf(str, "-123");
8205         sscanf(str, "%lf", &f);  /* f = -123.; */
8206
8207         signal(SIGFPE, blech);
8208         along = (unsigned long)f;
8209         aint = (unsigned int)f;
8210         ashort = (unsigned short)f;
8211         if (along != (unsigned long)-123)
8212                 result |= 1;
8213         if (aint != (unsigned int)-123)
8214                 result |= 1;
8215         if (ashort != (unsigned short)-123)
8216                 result |= 1;
8217         sprintf(str, "1073741824.");
8218         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8219         f = f + f;
8220         along = 0;
8221         along = (unsigned long)f;
8222         if (along != 0x80000000)
8223                 result |= 2;
8224         f -= 1.;
8225         along = 0;
8226         along = (unsigned long)f;
8227         if (along != 0x7fffffff)
8228                 result |= 1;
8229         f += 2.;
8230         along = 0;
8231         along = (unsigned long)f;
8232         if (along != 0x80000001)
8233                 result |= 2;
8234         if (result)
8235                 exit(result);
8236         signal(SIGFPE, blech_in_list);
8237         sprintf(str, "123.");
8238         sscanf(str, "%lf", &f);  /* f = 123.; */
8239         along = dummy_long((unsigned long)f);
8240         aint = dummy_int((unsigned int)f);
8241         ashort = dummy_short((unsigned short)f);
8242         if (along != (unsigned long)123)
8243                 result |= 4;
8244         if (aint != (unsigned int)123)
8245                 result |= 4;
8246         if (ashort != (unsigned short)123)
8247                 result |= 4;
8248         exit(result);
8249
8250 }
8251 EOCP
8252 set try
8253 if eval $compile_ok; then
8254         ./try
8255         castflags=$?
8256 else
8257         echo "(I can't seem to compile the test program--assuming it can't)"
8258         castflags=7
8259 fi
8260 case "$castflags" in
8261 0)      val="$define"
8262         echo "Yup, it can."
8263         ;;
8264 *)      val="$undef"
8265         echo "Nope, it can't."
8266         ;;
8267 esac
8268 set d_castneg
8269 eval $setvar
8270 $rm -f try.*
8271
8272 : see if vprintf exists
8273 echo " "
8274 if set vprintf val -f d_vprintf; eval $csym; $val; then
8275         echo 'vprintf() found.' >&4
8276         val="$define"
8277         $cat >vprintf.c <<'EOF'
8278 #include <varargs.h>
8279
8280 int main() { xxx("foo"); }
8281
8282 xxx(va_alist)
8283 va_dcl
8284 {
8285         va_list args;
8286         char buf[10];
8287
8288         va_start(args);
8289         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8290 }
8291 EOF
8292         set vprintf
8293         if eval $compile && ./vprintf; then
8294                 echo "Your vsprintf() returns (int)." >&4
8295                 val2="$undef"
8296         else
8297                 echo "Your vsprintf() returns (char*)." >&4
8298                 val2="$define"
8299         fi
8300 else
8301         echo 'vprintf() NOT found.' >&4
8302                 val="$undef"
8303                 val2="$undef"
8304 fi
8305 set d_vprintf
8306 eval $setvar
8307 val=$val2
8308 set d_charvspr
8309 eval $setvar
8310
8311 : see if chown exists
8312 set chown d_chown
8313 eval $inlibc
8314
8315 : see if chroot exists
8316 set chroot d_chroot
8317 eval $inlibc
8318
8319 : see if chsize exists
8320 set chsize d_chsize
8321 eval $inlibc
8322
8323 : check for const keyword
8324 echo " "
8325 echo 'Checking to see if your C compiler knows about "const"...' >&4
8326 $cat >const.c <<'EOCP'
8327 typedef struct spug { int drokk; } spug;
8328 int main()
8329 {
8330         const char *foo;
8331         const spug y;
8332 }
8333 EOCP
8334 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8335         val="$define"
8336         echo "Yup, it does."
8337 else
8338         val="$undef"
8339         echo "Nope, it doesn't."
8340 fi
8341 set d_const
8342 eval $setvar
8343
8344 : see if crypt exists
8345 echo " "
8346 if set crypt val -f d_crypt; eval $csym; $val; then
8347         echo 'crypt() found.' >&4
8348         val="$define"
8349         cryptlib=''
8350 else
8351         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8352         if $test -z "$cryptlib"; then
8353                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8354         else
8355                 cryptlib=-lcrypt
8356         fi
8357         if $test -z "$cryptlib"; then
8358                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8359         else
8360                 cryptlib=-lcrypt
8361         fi
8362         if $test -z "$cryptlib"; then
8363                 cryptlib=`./loc libcrypt$_a "" $libpth`
8364         else
8365                 cryptlib=-lcrypt
8366         fi
8367         if $test -z "$cryptlib"; then
8368                 echo 'crypt() NOT found.' >&4
8369                 val="$undef"
8370         else
8371                 val="$define"
8372         fi
8373 fi
8374 set d_crypt
8375 eval $setvar
8376
8377 : get csh whereabouts
8378 case "$csh" in
8379 'csh') val="$undef" ;;
8380 *) val="$define" ;;
8381 esac
8382 set d_csh
8383 eval $setvar
8384 : Respect a hint or command line value for full_csh.
8385 case "$full_csh" in
8386 '') full_csh=$csh ;;
8387 esac
8388
8389 : see if cuserid exists
8390 set cuserid d_cuserid
8391 eval $inlibc
8392
8393 : see if this is a limits.h system
8394 set limits.h i_limits
8395 eval $inhdr
8396
8397 : see if this is a float.h system
8398 set float.h i_float
8399 eval $inhdr
8400
8401 : See if number of significant digits in a double precision number is known
8402 echo " "
8403 $cat >dbl_dig.c <<EOM
8404 #$i_limits I_LIMITS
8405 #$i_float I_FLOAT
8406 #ifdef I_LIMITS
8407 #include <limits.h>
8408 #endif
8409 #ifdef I_FLOAT
8410 #include <float.h>
8411 #endif
8412 #ifdef DBL_DIG
8413 printf("Contains DBL_DIG");
8414 #endif
8415 EOM
8416 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8417 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8418         echo "DBL_DIG found." >&4
8419         val="$define"
8420 else
8421         echo "DBL_DIG NOT found." >&4
8422         val="$undef"
8423 fi
8424 $rm -f dbl_dig.?
8425 set d_dbl_dig
8426 eval $setvar
8427
8428 : see if difftime exists
8429 set difftime d_difftime
8430 eval $inlibc
8431
8432 : see if this is a dirent system
8433 echo " "
8434 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8435         val="$define"
8436         echo "<dirent.h> found." >&4
8437 else
8438         val="$undef"
8439         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8440                 echo "<sys/dir.h> found." >&4
8441                 echo " "
8442         else
8443                 xinc=`./findhdr sys/ndir.h`
8444         fi
8445         echo "<dirent.h> NOT found." >&4
8446 fi
8447 set i_dirent
8448 eval $setvar
8449
8450 : Look for type of directory structure.
8451 echo " "
8452 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8453
8454 case "$direntrytype" in
8455 ''|' ')
8456         case "$i_dirent" in
8457         $define) guess1='struct dirent' ;;
8458         *) guess1='struct direct'  ;;
8459         esac
8460         ;;
8461 *)      guess1="$direntrytype"
8462         ;;
8463 esac
8464
8465 case "$guess1" in
8466 'struct dirent') guess2='struct direct' ;;
8467 *) guess2='struct dirent' ;;
8468 esac
8469                 
8470 if $contains "$guess1" try.c >/dev/null 2>&1; then
8471         direntrytype="$guess1"
8472         echo "Your directory entries are $direntrytype." >&4
8473 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8474         direntrytype="$guess2"
8475         echo "Your directory entries seem to be $direntrytype." >&4
8476 else
8477         echo "I don't recognize your system's directory entries." >&4
8478         rp="What type is used for directory entries on this system?"
8479         dflt="$guess1"
8480         . ./myread
8481         direntrytype="$ans"
8482 fi
8483 $rm -f try.c
8484
8485
8486 : see if the directory entry stores field length
8487 echo " "
8488 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8489 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8490         echo "Good, your directory entry keeps length information in d_namlen." >&4
8491         val="$define"
8492 else
8493         echo "Your directory entry does not know about the d_namlen field." >&4
8494         val="$undef"
8495 fi
8496 set d_dirnamlen
8497 eval $setvar
8498 $rm -f try.c
8499
8500 : see if dlerror exists
8501 xxx_runnm="$runnm"
8502 runnm=false
8503 set dlerror d_dlerror
8504 eval $inlibc
8505 runnm="$xxx_runnm"
8506
8507 : see if dlfcn is available
8508 set dlfcn.h i_dlfcn
8509 eval $inhdr
8510
8511 case "$usedl" in
8512 $define|y|true)
8513         $cat << EOM
8514
8515 On a few systems, the dynamically loaded modules that perl generates and uses
8516 will need a different extension than shared libs. The default will probably
8517 be appropriate.
8518
8519 EOM
8520         case "$dlext" in
8521         '')     dflt="$so" ;;
8522         *)      dflt="$dlext" ;;
8523         esac
8524         rp='What is the extension of dynamically loaded modules'
8525         . ./myread
8526         dlext="$ans"
8527         ;;
8528 *)
8529         dlext="none"
8530         ;;
8531 esac
8532
8533 : Check if dlsym need a leading underscore
8534 echo " "
8535 val="$undef"
8536
8537 case "$dlsrc" in
8538 dl_dlopen.xs)
8539         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8540         $cat >dyna.c <<'EOM'
8541 fred () { }
8542 EOM
8543
8544 $cat >fred.c<<EOM
8545
8546 #include <stdio.h>
8547 #$i_dlfcn I_DLFCN
8548 #ifdef I_DLFCN
8549 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8550 #else
8551 #include <sys/types.h>
8552 #include <nlist.h>
8553 #include <link.h>
8554 #endif
8555
8556 extern int fred() ;
8557
8558 int main()
8559 {
8560     void * handle ;
8561     void * symbol ;
8562 #ifndef RTLD_LAZY
8563     int mode = 1 ;
8564 #else
8565     int mode = RTLD_LAZY ;
8566 #endif
8567     handle = dlopen("./dyna.$dlext", mode) ;
8568     if (handle == NULL) {
8569         printf ("1\n") ;
8570         fflush (stdout) ;
8571         exit(0);
8572     }
8573     symbol = dlsym(handle, "fred") ;
8574     if (symbol == NULL) {
8575         /* try putting a leading underscore */
8576         symbol = dlsym(handle, "_fred") ;
8577         if (symbol == NULL) {
8578             printf ("2\n") ;
8579             fflush (stdout) ;
8580             exit(0);
8581         }
8582         printf ("3\n") ;
8583     }
8584     else
8585         printf ("4\n") ;
8586     fflush (stdout) ;
8587     exit(0);
8588 }
8589 EOM
8590         : Call the object file tmp-dyna.o in case dlext=o.
8591         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8592                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8593                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8594                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8595                 xxx=`./fred`
8596                 case $xxx in
8597                 1)      echo "Test program failed using dlopen." >&4
8598                         echo "Perhaps you should not use dynamic loading." >&4;;
8599                 2)      echo "Test program failed using dlsym." >&4
8600                         echo "Perhaps you should not use dynamic loading." >&4;;
8601                 3)      echo "dlsym needs a leading underscore" >&4
8602                         val="$define" ;;
8603                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8604                 esac
8605         else
8606                 echo "I can't compile and run the test program." >&4
8607                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8608         fi
8609         ;;
8610 esac
8611                 
8612 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8613
8614 set d_dlsymun
8615 eval $setvar
8616
8617 hasproto='varname=$1; func=$2; shift; shift;
8618 while $test $# -ge 2; do
8619         case "$1" in
8620         $define) echo "#include <$2>";;
8621         esac ;
8622     shift 2;
8623 done > try.c;
8624 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8625 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8626         echo "$func() prototype found.";
8627         val="$define";
8628 else
8629         echo "$func() prototype NOT found.";
8630         val="$undef";
8631 fi;
8632 set $varname;
8633 eval $setvar;
8634 $rm -f try.c tryout.c'
8635
8636 : see if prototype for drand48 is available
8637 echo " "
8638 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8639 eval $hasproto
8640
8641 : see if dup2 exists
8642 set dup2 d_dup2
8643 eval $inlibc
8644
8645 : see if eaccess exists
8646 set eaccess d_eaccess
8647 eval $inlibc
8648
8649 : see if endgrent exists
8650 set endgrent d_endgrent
8651 eval $inlibc
8652
8653 : see if endhostent exists
8654 set endhostent d_endhent
8655 eval $inlibc
8656
8657 : see if endnetent exists
8658 set endnetent d_endnent
8659 eval $inlibc
8660
8661 : see if endprotoent exists
8662 set endprotoent d_endpent
8663 eval $inlibc
8664
8665 : see if endpwent exists
8666 set endpwent d_endpwent
8667 eval $inlibc
8668
8669 : see if endservent exists
8670 set endservent d_endsent
8671 eval $inlibc
8672
8673 : Locate the flags for 'open()'
8674 echo " "
8675 $cat >open3.c <<'EOCP'
8676 #include <sys/types.h>
8677 #ifdef I_FCNTL
8678 #include <fcntl.h>
8679 #endif
8680 #ifdef I_SYS_FILE
8681 #include <sys/file.h>
8682 #endif
8683 int main() {
8684         if(O_RDONLY);
8685 #ifdef O_TRUNC
8686         exit(0);
8687 #else
8688         exit(1);
8689 #endif
8690 }
8691 EOCP
8692 : check sys/file.h first to get FREAD on Sun
8693 if $test `./findhdr sys/file.h` && \
8694                 set open3 -DI_SYS_FILE && eval $compile; then
8695         h_sysfile=true;
8696         echo "<sys/file.h> defines the O_* constants..." >&4
8697         if ./open3; then
8698                 echo "and you have the 3 argument form of open()." >&4
8699                 val="$define"
8700         else
8701                 echo "but not the 3 argument form of open().  Oh, well." >&4
8702                 val="$undef"
8703         fi
8704 elif $test `./findhdr fcntl.h` && \
8705                 set open3 -DI_FCNTL && eval $compile; then
8706         h_fcntl=true;
8707         echo "<fcntl.h> defines the O_* constants..." >&4
8708         if ./open3; then
8709                 echo "and you have the 3 argument form of open()." >&4
8710                 val="$define"
8711         else
8712                 echo "but not the 3 argument form of open().  Oh, well." >&4
8713                 val="$undef"
8714         fi
8715 else
8716         val="$undef"
8717         echo "I can't find the O_* constant definitions!  You got problems." >&4
8718 fi
8719 set d_open3
8720 eval $setvar
8721 $rm -f open3*
8722
8723 : see which of string.h or strings.h is needed
8724 echo " "
8725 strings=`./findhdr string.h`
8726 if $test "$strings" && $test -r "$strings"; then
8727         echo "Using <string.h> instead of <strings.h>." >&4
8728         val="$define"
8729 else
8730         val="$undef"
8731         strings=`./findhdr strings.h`
8732         if $test "$strings" && $test -r "$strings"; then
8733                 echo "Using <strings.h> instead of <string.h>." >&4
8734         else
8735                 echo "No string header found -- You'll surely have problems." >&4
8736         fi
8737 fi
8738 set i_string
8739 eval $setvar
8740 case "$i_string" in
8741 "$undef") strings=`./findhdr strings.h`;;
8742 *)        strings=`./findhdr string.h`;;
8743 esac
8744
8745 : check for non-blocking I/O stuff
8746 case "$h_sysfile" in
8747 true) echo "#include <sys/file.h>" > head.c;;
8748 *)
8749         case "$h_fcntl" in
8750         true) echo "#include <fcntl.h>" > head.c;;
8751         *) echo "#include <sys/fcntl.h>" > head.c;;
8752         esac
8753         ;;
8754 esac
8755 echo " "
8756 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8757 case "$o_nonblock" in
8758 '')
8759         $cat head.c > try.c
8760         $cat >>try.c <<'EOCP'
8761 #include <stdio.h>
8762 int main() {
8763 #ifdef O_NONBLOCK
8764         printf("O_NONBLOCK\n");
8765         exit(0);
8766 #endif
8767 #ifdef O_NDELAY
8768         printf("O_NDELAY\n");
8769         exit(0);
8770 #endif
8771 #ifdef FNDELAY
8772         printf("FNDELAY\n");
8773         exit(0);
8774 #endif
8775         exit(0);
8776 }
8777 EOCP
8778         set try
8779         if eval $compile_ok; then
8780                 o_nonblock=`./try`
8781                 case "$o_nonblock" in
8782                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8783                 *) echo "Seems like we can use $o_nonblock.";;
8784                 esac
8785         else
8786                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8787         fi
8788         ;;
8789 *) echo "Using $hint value $o_nonblock.";;
8790 esac
8791 $rm -f try try.* .out core
8792
8793 echo " "
8794 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8795 case "$eagain" in
8796 '')
8797         $cat head.c > try.c
8798         $cat >>try.c <<EOCP
8799 #include <errno.h>
8800 #include <sys/types.h>
8801 #include <signal.h>
8802 #include <stdio.h> 
8803 #define MY_O_NONBLOCK $o_nonblock
8804 #ifndef errno  /* XXX need better Configure test */
8805 extern int errno;
8806 #endif
8807 #$i_unistd I_UNISTD
8808 #ifdef I_UNISTD
8809 #include <unistd.h>
8810 #endif
8811 #$i_string I_STRING
8812 #ifdef I_STRING
8813 #include <string.h>
8814 #else
8815 #include <strings.h>
8816 #endif
8817 $signal_t blech(x) int x; { exit(3); }
8818 EOCP
8819         $cat >> try.c <<'EOCP'
8820 int main()
8821 {
8822         int pd[2];
8823         int pu[2];
8824         char buf[1];
8825         char string[100];
8826
8827         pipe(pd);       /* Down: child -> parent */
8828         pipe(pu);       /* Up: parent -> child */
8829         if (0 != fork()) {
8830                 int ret;
8831                 close(pd[1]);   /* Parent reads from pd[0] */
8832                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8833                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8834                         exit(1);
8835                 signal(SIGALRM, blech);
8836                 alarm(5);
8837                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8838                         exit(2);
8839                 sprintf(string, "%d\n", ret);
8840                 write(2, string, strlen(string));
8841                 alarm(0);
8842 #ifdef EAGAIN
8843                 if (errno == EAGAIN) {
8844                         printf("EAGAIN\n");
8845                         goto ok;
8846                 }
8847 #endif
8848 #ifdef EWOULDBLOCK
8849                 if (errno == EWOULDBLOCK)
8850                         printf("EWOULDBLOCK\n");
8851 #endif
8852         ok:
8853                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8854                 sleep(2);                               /* Give it time to close our pipe */
8855                 alarm(5);
8856                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8857                 alarm(0);
8858                 sprintf(string, "%d\n", ret);
8859                 write(3, string, strlen(string));
8860                 exit(0);
8861         }
8862
8863         close(pd[0]);                   /* We write to pd[1] */
8864         close(pu[1]);                   /* We read from pu[0] */
8865         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8866         close(pd[1]);                   /* Pipe pd is now fully closed! */
8867         exit(0);                                /* Bye bye, thank you for playing! */
8868 }
8869 EOCP
8870         set try
8871         if eval $compile_ok; then
8872                 echo "$startsh" >mtry
8873                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8874                 chmod +x mtry
8875                 ./mtry >/dev/null 2>&1
8876                 case $? in
8877                 0) eagain=`$cat try.out`;;
8878                 1) echo "Could not perform non-blocking setting!";;
8879                 2) echo "I did a successful read() for something that was not there!";;
8880                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8881                 *) echo "Something terribly wrong happened during testing.";;
8882                 esac
8883                 rd_nodata=`$cat try.ret`
8884                 echo "A read() system call with no data present returns $rd_nodata."
8885                 case "$rd_nodata" in
8886                 0|-1) ;;
8887                 *)
8888                         echo "(That's peculiar, fixing that to be -1.)"
8889                         rd_nodata=-1
8890                         ;;
8891                 esac
8892                 case "$eagain" in
8893                 '')
8894                         echo "Forcing errno EAGAIN on read() with no data available."
8895                         eagain=EAGAIN
8896                         ;;
8897                 *)
8898                         echo "Your read() sets errno to $eagain when no data is available."
8899                         ;;
8900                 esac
8901                 status=`$cat try.err`
8902                 case "$status" in
8903                 0) echo "And it correctly returns 0 to signal EOF.";;
8904                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8905                 *) echo "However, your read() returns '$status' on EOF??";;
8906                 esac
8907                 val="$define"
8908                 if test "$status" = "$rd_nodata"; then
8909                         echo "WARNING: you can't distinguish between EOF and no data!"
8910                         val="$undef"
8911                 fi
8912         else
8913                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8914                 eagain=EAGAIN
8915         fi
8916         set d_eofnblk
8917         eval $setvar
8918         ;;
8919 *)
8920         echo "Using $hint value $eagain."
8921         echo "Your read() returns $rd_nodata when no data is present."
8922         case "$d_eofnblk" in
8923         "$define") echo "And you can see EOF because read() returns 0.";;
8924         "$undef") echo "But you can't see EOF status from read() returned value.";;
8925         *)
8926                 echo "(Assuming you can't see EOF status from read anyway.)"
8927                 d_eofnblk=$undef
8928                 ;;
8929         esac
8930         ;;
8931 esac
8932 $rm -f try try.* .out core head.c mtry
8933
8934 : see if fchmod exists
8935 set fchmod d_fchmod
8936 eval $inlibc
8937
8938 : see if fchown exists
8939 set fchown d_fchown
8940 eval $inlibc
8941
8942 : see if this is an fcntl system
8943 set fcntl d_fcntl
8944 eval $inlibc
8945
8946 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8947 while $test $# -ge 2; do
8948         case "$1" in
8949         $define) echo "#include <$2>";;
8950         esac ;
8951     shift 2;
8952 done > try.c;
8953 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8954 set try;
8955 if eval $compile; then
8956         val="$define";
8957 else
8958         val="$undef";
8959 fi;
8960 set $varname;
8961 eval $setvar;
8962 $rm -f try.c try.o'
8963
8964 socketlib=''
8965 sockethdr=''
8966 : see whether socket exists
8967 echo " "
8968 $echo $n "Hmm... $c" >&4
8969 if set socket val -f d_socket; eval $csym; $val; then
8970         echo "Looks like you have Berkeley networking support." >&4
8971         d_socket="$define"
8972         if set setsockopt val -f; eval $csym; $val; then
8973                 d_oldsock="$undef"
8974         else
8975                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8976                 d_oldsock="$define"
8977         fi
8978 else
8979         if $contains socklib libc.list >/dev/null 2>&1; then
8980                 echo "Looks like you have Berkeley networking support." >&4
8981                 d_socket="$define"
8982                 : we will have to assume that it supports the 4.2 BSD interface
8983                 d_oldsock="$undef"
8984         else
8985                 echo "You don't have Berkeley networking in libc$_a..." >&4
8986                 if test "X$d_socket" = "X$define"; then
8987                    echo "...but you seem to believe that you have sockets." >&4
8988                 else
8989                         for net in net socket
8990                         do
8991                                 if test -f /usr/lib/lib$net$_a; then
8992                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8993                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8994                                         if $contains socket libc.list >/dev/null 2>&1; then
8995                                                 d_socket="$define"
8996                                                 socketlib="-l$net"
8997                                                 case "$net" in
8998                                                 net)
8999                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9000                                                         sockethdr="-I/usr/netinclude"
9001                                                         ;;
9002                                                 esac
9003                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9004                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9005                                                         d_oldsock="$undef"
9006                                                 else
9007                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9008                                                         d_oldsock="$define"
9009                                                 fi
9010                                                 break
9011                                         fi
9012                                 fi
9013                         done
9014                         if test "X$d_socket" != "X$define"; then
9015                            echo "or anywhere else I see." >&4
9016                            d_socket="$undef"
9017                            d_oldsock="$undef"
9018                         fi
9019                 fi
9020         fi
9021 fi
9022
9023 : see if socketpair exists
9024 set socketpair d_sockpair
9025 eval $inlibc
9026
9027
9028 echo " "
9029 echo "Checking the availability of certain socket constants..." >& 4
9030 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9031         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9032         $cat >try.c <<EOF
9033 #include <sys/types.h>
9034 #include <sys/socket.h>
9035 int main() {
9036     int i = $ENUM;
9037 }
9038 EOF
9039         val="$undef"
9040         set try; if eval $compile; then
9041                 val="$define"
9042         fi
9043         set d_${enum}; eval $setvar
9044         $rm -f try.c try
9045 done
9046
9047 : see if sys/select.h has to be included
9048 set sys/select.h i_sysselct
9049 eval $inhdr
9050
9051 : see if we should include time.h, sys/time.h, or both
9052 echo " "
9053 if test "X$timeincl" = X; then
9054         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9055         $echo $n "I'm now running the test program...$c"
9056         $cat >try.c <<'EOCP'
9057 #include <sys/types.h>
9058 #ifdef I_TIME
9059 #include <time.h>
9060 #endif
9061 #ifdef I_SYSTIME
9062 #ifdef SYSTIMEKERNEL
9063 #define KERNEL
9064 #endif
9065 #include <sys/time.h>
9066 #endif
9067 #ifdef I_SYSSELECT
9068 #include <sys/select.h>
9069 #endif
9070 int main()
9071 {
9072         struct tm foo;
9073 #ifdef S_TIMEVAL
9074         struct timeval bar;
9075 #endif
9076 #ifdef S_TIMEZONE
9077         struct timezone tzp;
9078 #endif
9079         if (foo.tm_sec == foo.tm_sec)
9080                 exit(0);
9081 #ifdef S_TIMEVAL
9082         if (bar.tv_sec == bar.tv_sec)
9083                 exit(0);
9084 #endif
9085         exit(1);
9086 }
9087 EOCP
9088         flags=''
9089         for s_timezone in '-DS_TIMEZONE' ''; do
9090         sysselect=''
9091         for s_timeval in '-DS_TIMEVAL' ''; do
9092         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9093         for i_time in '' '-DI_TIME'; do
9094         for i_systime in '-DI_SYSTIME' ''; do
9095                 case "$flags" in
9096                 '') $echo $n ".$c"
9097                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9098                         if eval $compile; then
9099                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9100                                 shift
9101                                 flags="$*"
9102                                 echo " "
9103                                 $echo $n "Succeeded with $flags$c"
9104                         fi
9105                         ;;
9106                 esac
9107         done
9108         done
9109         done
9110         done
9111         done
9112         timeincl=''
9113         echo " "
9114         case "$flags" in
9115         *SYSTIMEKERNEL*) i_systimek="$define"
9116                 timeincl=`./findhdr sys/time.h`
9117                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9118         *) i_systimek="$undef";;
9119         esac
9120         case "$flags" in
9121         *I_TIME*) i_time="$define"
9122                 timeincl=`./findhdr time.h`" $timeincl"
9123                 echo "We'll include <time.h>." >&4;;
9124         *) i_time="$undef";;
9125         esac
9126         case "$flags" in
9127         *I_SYSTIME*) i_systime="$define"
9128                 timeincl=`./findhdr sys/time.h`" $timeincl"
9129                 echo "We'll include <sys/time.h>." >&4;;
9130         *) i_systime="$undef";;
9131         esac
9132         $rm -f try.c try
9133 fi
9134
9135 : check for fd_set items
9136 $cat <<EOM
9137
9138 Checking to see how well your C compiler handles fd_set and friends ...
9139 EOM
9140 $cat >fd_set.c <<EOCP
9141 #$i_systime I_SYS_TIME
9142 #$i_sysselct I_SYS_SELECT
9143 #$d_socket HAS_SOCKET
9144 #include <sys/types.h>
9145 #ifdef HAS_SOCKET
9146 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9147 #endif
9148 #ifdef I_SYS_TIME
9149 #include <sys/time.h>
9150 #endif
9151 #ifdef I_SYS_SELECT
9152 #include <sys/select.h>
9153 #endif
9154 int main() {
9155         fd_set fds;
9156
9157 #ifdef TRYBITS
9158         if(fds.fds_bits);
9159 #endif
9160
9161 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9162         exit(0);
9163 #else
9164         exit(1);
9165 #endif
9166 }
9167 EOCP
9168 set fd_set -DTRYBITS
9169 if eval $compile; then
9170         d_fds_bits="$define"
9171         d_fd_set="$define"
9172         echo "Well, your system knows about the normal fd_set typedef..." >&4
9173         if ./fd_set; then
9174                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9175                 d_fd_macros="$define"
9176         else
9177                 $cat >&4 <<'EOM'
9178 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9179 EOM
9180                 d_fd_macros="$undef"
9181         fi
9182 else
9183         $cat <<'EOM'
9184 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9185 EOM
9186         set fd_set
9187         if eval $compile; then
9188                 d_fds_bits="$undef"
9189                 d_fd_set="$define"
9190                 echo "Well, your system has some sort of fd_set available..." >&4
9191                 if ./fd_set; then
9192                         echo "and you have the normal fd_set macros." >&4
9193                         d_fd_macros="$define"
9194                 else
9195                         $cat <<'EOM'
9196 but not the normal fd_set macros!  Gross!  More work for me...
9197 EOM
9198                         d_fd_macros="$undef"
9199                 fi
9200         else
9201         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9202                 d_fd_set="$undef"
9203                 d_fds_bits="$undef"
9204                 d_fd_macros="$undef"
9205         fi
9206 fi
9207 $rm -f fd_set*
9208
9209 : see if fgetpos exists
9210 set fgetpos d_fgetpos
9211 eval $inlibc
9212
9213 : see if flock exists
9214 set flock d_flock
9215 eval $inlibc
9216
9217 : see if fork exists
9218 set fork d_fork
9219 eval $inlibc
9220
9221 : see if pathconf exists
9222 set pathconf d_pathconf
9223 eval $inlibc
9224
9225 : see if fpathconf exists
9226 set fpathconf d_fpathconf
9227 eval $inlibc
9228
9229
9230 : check for fpos64_t
9231 echo " "
9232 echo "Checking to see if you have fpos64_t..." >&4
9233 $cat >try.c <<EOCP
9234 #include <stdio.h>
9235 int main() { fpos64_t x = 7; }
9236 EOCP
9237 set try
9238 if eval $compile; then
9239         val="$define"
9240         echo "You have fpos64_t."
9241 else
9242         val="$undef"
9243         echo "You do not have fpos64_t."
9244         case "$fpossize" in
9245         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9246         esac
9247 fi
9248 $rm -f try.* try
9249 set d_fpos64_t
9250 eval $setvar
9251
9252 : see if frexpl exists
9253 set frexpl d_frexpl
9254 eval $inlibc
9255
9256 hasstruct='varname=$1; struct=$2; shift; shift;
9257 while $test $# -ge 2; do
9258         case "$1" in
9259         $define) echo "#include <$2>";;
9260         esac ;
9261     shift 2;
9262 done > try.c;
9263 echo "int main () { struct $struct foo; }" >> try.c;
9264 set try;
9265 if eval $compile; then
9266         val="$define";
9267 else
9268         val="$undef";
9269 fi;
9270 set $varname;
9271 eval $setvar;
9272 $rm -f try.c try.o'
9273
9274 : see if this is a sys/param system
9275 set sys/param.h i_sysparam
9276 eval $inhdr
9277
9278 : see if this is a sys/mount.h system
9279 set sys/mount.h i_sysmount
9280 eval $inhdr
9281
9282 : see if sys/types.h has to be included
9283 set sys/types.h i_systypes
9284 eval $inhdr
9285
9286
9287 echo " "
9288 echo "Checking to see if your system supports struct fs_data..." >&4
9289 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9290 eval $hasstruct
9291 case "$d_fs_data_s" in
9292 "$define")      echo "Yes, it does."   ;;
9293 *)              echo "No, it doesn't." ;;
9294 esac
9295
9296 : see if fseeko exists
9297 set fseeko d_fseeko
9298 eval $inlibc
9299 case "$longsize" in
9300 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9301 esac
9302
9303 : see if fsetpos exists
9304 set fsetpos d_fsetpos
9305 eval $inlibc
9306
9307
9308 : see if fstatfs exists
9309 set fstatfs d_fstatfs
9310 eval $inlibc
9311
9312
9313 : see if statvfs exists
9314 set statvfs d_statvfs
9315 eval $inlibc
9316
9317 : see if fstatvfs exists
9318 set fstatvfs d_fstatvfs
9319 eval $inlibc
9320
9321
9322 : see if ftello exists
9323 set ftello d_ftello
9324 eval $inlibc
9325 case "$longsize" in
9326 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9327 esac
9328
9329 : see if getcwd exists
9330 set getcwd d_getcwd
9331 eval $inlibc
9332
9333 : see if getespwnam exists
9334 set getespwnam d_getespwnam
9335 eval $inlibc
9336
9337
9338 : see if getfsstat exists
9339 set getfsstat d_getfsstat
9340 eval $inlibc
9341
9342 : see if getgrent exists
9343 set getgrent d_getgrent
9344 eval $inlibc
9345
9346 : see if gethostbyaddr exists
9347 set gethostbyaddr d_gethbyaddr
9348 eval $inlibc
9349
9350 : see if gethostbyname exists
9351 set gethostbyname d_gethbyname
9352 eval $inlibc
9353
9354 : see if gethostent exists
9355 set gethostent d_gethent
9356 eval $inlibc
9357
9358 : see how we will look up host name
9359 echo " "
9360 call=''
9361 if set gethostname val -f d_gethname; eval $csym; $val; then
9362         echo 'gethostname() found.' >&4
9363         d_gethname="$define"
9364         call=gethostname
9365 fi
9366 if set uname val -f d_uname; eval $csym; $val; then
9367         if ./xenix; then
9368                 $cat <<'EOM'
9369 uname() was found, but you're running xenix, and older versions of xenix
9370 have a broken uname(). If you don't really know whether your xenix is old
9371 enough to have a broken system call, use the default answer.
9372
9373 EOM
9374                 dflt=y
9375                 case "$d_uname" in
9376                 "$define") dflt=n;;
9377                 esac
9378                 rp='Is your uname() broken?'
9379                 . ./myread
9380                 case "$ans" in
9381                 n*) d_uname="$define"; call=uname;;
9382                 esac
9383         else
9384                 echo 'uname() found.' >&4
9385                 d_uname="$define"
9386                 case "$call" in
9387                 '') call=uname ;;
9388                 esac
9389         fi
9390 fi
9391 case "$d_gethname" in
9392 '') d_gethname="$undef";;
9393 esac
9394 case "$d_uname" in
9395 '') d_uname="$undef";;
9396 esac
9397 case "$d_uname$d_gethname" in
9398 *define*)
9399         dflt=n
9400         cat <<EOM
9401  
9402 Every now and then someone has a $call() that lies about the hostname
9403 but can't be fixed for political or economic reasons.  If you wish, I can
9404 pretend $call() isn't there and maybe compute hostname at run-time
9405 thanks to the '$phostname' command.
9406
9407 EOM
9408         rp="Shall I ignore $call() from now on?"
9409         . ./myread
9410         case "$ans" in
9411         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9412         esac;;
9413 esac
9414 case "$phostname" in
9415 '') aphostname='';;
9416 *) case "$aphostname" in
9417         /*) ;;
9418         *) set X $phostname
9419                 shift
9420                 file=$1
9421                 shift
9422                 file=`./loc $file $file $pth`
9423                 aphostname=`echo $file $*`
9424                 ;;
9425         esac
9426         ;;
9427 esac
9428 case "$d_uname$d_gethname" in
9429 *define*) ;;
9430 *)
9431         case "$phostname" in
9432         '')
9433                 echo "There will be no way for $package to get your hostname." >&4;;
9434         *)
9435         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9436                 ;;
9437         esac;;
9438 esac
9439 case "$d_phostname" in
9440 '') d_phostname="$undef";;
9441 esac
9442
9443 : see if this is a netdb.h system
9444 set netdb.h i_netdb
9445 eval $inhdr
9446
9447 : see if prototypes for various gethostxxx netdb.h functions are available
9448 echo " "
9449 set d_gethostprotos gethostent $i_netdb netdb.h
9450 eval $hasproto
9451
9452 : see if getlogin exists
9453 set getlogin d_getlogin
9454 eval $inlibc
9455
9456 : see if getmnt exists
9457 set getmnt d_getmnt
9458 eval $inlibc
9459
9460 : see if getmntent exists
9461 set getmntent d_getmntent
9462 eval $inlibc
9463
9464 : see if getnetbyaddr exists
9465 set getnetbyaddr d_getnbyaddr
9466 eval $inlibc
9467
9468 : see if getnetbyname exists
9469 set getnetbyname d_getnbyname
9470 eval $inlibc
9471
9472 : see if getnetent exists
9473 set getnetent d_getnent
9474 eval $inlibc
9475
9476 : see if prototypes for various getnetxxx netdb.h functions are available
9477 echo " "
9478 set d_getnetprotos getnetent $i_netdb netdb.h
9479 eval $hasproto
9480
9481
9482 : see if getprotobyname exists
9483 set getprotobyname d_getpbyname
9484 eval $inlibc
9485
9486 : see if getprotobynumber exists
9487 set getprotobynumber d_getpbynumber
9488 eval $inlibc
9489
9490 : see if getprotoent exists
9491 set getprotoent d_getpent
9492 eval $inlibc
9493
9494 : see if getpgid exists
9495 set getpgid d_getpgid
9496 eval $inlibc
9497
9498 : see if getpgrp2 exists
9499 set getpgrp2 d_getpgrp2
9500 eval $inlibc
9501
9502 : see if getppid exists
9503 set getppid d_getppid
9504 eval $inlibc
9505
9506 : see if getpriority exists
9507 set getpriority d_getprior
9508 eval $inlibc
9509
9510 : see if prototypes for various getprotoxxx netdb.h functions are available
9511 echo " "
9512 set d_getprotoprotos getprotoent $i_netdb netdb.h
9513 eval $hasproto
9514
9515 : see if getprpwnam exists
9516 set getprpwnam d_getprpwnam
9517 eval $inlibc
9518
9519 : see if getpwent exists
9520 set getpwent d_getpwent
9521 eval $inlibc
9522
9523
9524 : see if getservbyname exists
9525 set getservbyname d_getsbyname
9526 eval $inlibc
9527
9528 : see if getservbyport exists
9529 set getservbyport d_getsbyport
9530 eval $inlibc
9531
9532 : see if getservent exists
9533 set getservent d_getsent
9534 eval $inlibc
9535
9536 : see if prototypes for various getservxxx netdb.h functions are available
9537 echo " "
9538 set d_getservprotos getservent $i_netdb netdb.h
9539 eval $hasproto
9540
9541 : see if getspnam exists
9542 set getspnam d_getspnam
9543 eval $inlibc
9544
9545 : see if gettimeofday or ftime exists
9546 set gettimeofday d_gettimeod
9547 eval $inlibc
9548 case "$d_gettimeod" in
9549 "$undef")
9550         set ftime d_ftime 
9551         eval $inlibc
9552         ;;
9553 *)
9554         val="$undef"; set d_ftime; eval $setvar
9555         ;;
9556 esac
9557 case "$d_gettimeod$d_ftime" in
9558 "$undef$undef")
9559         echo " "
9560         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9561         ;;
9562 esac
9563
9564 : see if this is an grp system
9565 set grp.h i_grp
9566 eval $inhdr
9567
9568 case "$i_grp" in
9569 $define)
9570         xxx=`./findhdr grp.h`
9571         $cppstdin $cppflags $cppminus < $xxx >$$.h
9572
9573         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9574                 val="$define"
9575         else
9576                 val="$undef"
9577         fi
9578         set d_grpasswd
9579         eval $setvar
9580
9581         $rm -f $$.h
9582         ;;
9583 *)
9584         val="$undef";
9585         set d_grpasswd; eval $setvar
9586         ;;
9587 esac
9588
9589 : see if hasmntopt exists
9590 set hasmntopt d_hasmntopt
9591 eval $inlibc
9592
9593 : see if this is a netinet/in.h or sys/in.h system
9594 set netinet/in.h i_niin sys/in.h i_sysin
9595 eval $inhdr
9596
9597 : see if arpa/inet.h has to be included
9598 set arpa/inet.h i_arpainet
9599 eval $inhdr
9600
9601 : see if htonl --and friends-- exists
9602 val=''
9603 set htonl val
9604 eval $inlibc
9605
9606 : Maybe they are macros.
9607 case "$val" in
9608 $undef)
9609         $cat >htonl.c <<EOM
9610 #include <stdio.h>
9611 #include <sys/types.h>
9612 #$i_niin I_NETINET_IN
9613 #$i_sysin I_SYS_IN
9614 #$i_arpainet I_ARPA_INET
9615 #ifdef I_NETINET_IN
9616 #include <netinet/in.h>
9617 #endif
9618 #ifdef I_SYS_IN
9619 #include <sys/in.h>
9620 #endif
9621 #ifdef I_ARPA_INET
9622 #include <arpa/inet.h>
9623 #endif
9624 #ifdef htonl
9625 printf("Defined as a macro.");
9626 #endif
9627 EOM
9628         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9629         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9630                 val="$define"
9631                 echo "But it seems to be defined as a macro." >&4
9632         fi
9633         $rm -f htonl.?
9634         ;;
9635 esac
9636 set d_htonl
9637 eval $setvar
9638
9639 : see if iconv exists
9640 set iconv d_iconv
9641 eval $inlibc
9642
9643 : index or strchr
9644 echo " "
9645 if set index val -f; eval $csym; $val; then
9646         if set strchr val -f d_strchr; eval $csym; $val; then
9647                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9648                         val="$define"
9649                         vali="$undef"
9650                         echo "strchr() found." >&4
9651                 else
9652                         val="$undef"
9653                         vali="$define"
9654                         echo "index() found." >&4
9655                 fi
9656         else
9657                 val="$undef"
9658                 vali="$define"
9659                 echo "index() found." >&4
9660         fi
9661 else
9662         if set strchr val -f d_strchr; eval $csym; $val; then
9663                 val="$define"
9664                 vali="$undef"
9665                 echo "strchr() found." >&4
9666         else
9667                 echo "No index() or strchr() found!" >&4
9668                 val="$undef"
9669                 vali="$undef"
9670         fi
9671 fi
9672 set d_strchr; eval $setvar
9673 val="$vali"
9674 set d_index; eval $setvar
9675
9676 : check whether inet_aton exists
9677 set inet_aton d_inetaton
9678 eval $inlibc
9679
9680 : see if inttypes.h is available
9681 : we want a real compile instead of Inhdr because some systems
9682 : have an inttypes.h which includes non-existent headers
9683 echo " "
9684 $cat >try.c <<EOCP
9685 #include <inttypes.h>
9686 int main() {
9687         static int32_t foo32 = 0x12345678;
9688 }
9689 EOCP
9690 set try
9691 if eval $compile; then
9692         echo "<inttypes.h> found." >&4
9693         val="$define"
9694 else
9695         echo "<inttypes.h> NOT found." >&4
9696         val="$undef"
9697 fi
9698 $rm -f try.c try
9699 set i_inttypes
9700 eval $setvar
9701
9702 : check for int64_t
9703 echo " "
9704 echo "Checking to see if you have int64_t..." >&4
9705 $cat >try.c <<EOCP
9706 #include <sys/types.h>
9707 #$i_inttypes I_INTTYPES
9708 #ifdef I_INTTYPES
9709 #include <inttypes.h>
9710 #endif
9711 int main() { int64_t x = 7; }
9712 EOCP
9713 set try
9714 if eval $compile; then
9715         val="$define"
9716         echo "You have int64_t."
9717 else
9718         val="$undef"
9719         echo "You do not have int64_t."
9720 fi
9721 $rm -f try try.*
9722 set d_int64_t
9723 eval $setvar
9724
9725 : Look for isascii
9726 echo " "
9727 $cat >isascii.c <<'EOCP'
9728 #include <stdio.h>
9729 #include <ctype.h>
9730 int main() {
9731         int c = 'A';
9732         if (isascii(c))
9733                 exit(0);
9734         else
9735                 exit(1);
9736 }
9737 EOCP
9738 set isascii
9739 if eval $compile; then
9740         echo "isascii() found." >&4
9741         val="$define"
9742 else
9743         echo "isascii() NOT found." >&4
9744         val="$undef"
9745 fi
9746 set d_isascii
9747 eval $setvar
9748 $rm -f isascii*
9749
9750 : see if isnan exists
9751 set isnan d_isnan
9752 eval $inlibc
9753
9754 : see if isnanl exists
9755 set isnanl d_isnanl
9756 eval $inlibc
9757
9758 : see if killpg exists
9759 set killpg d_killpg
9760 eval $inlibc
9761
9762 : see if lchown exists
9763 echo " "
9764 $cat > try.c <<'EOCP'
9765 /* System header to define __stub macros and hopefully few prototypes,
9766     which can conflict with char lchown(); below.  */
9767 #include <assert.h>
9768 /* Override any gcc2 internal prototype to avoid an error.  */
9769 /* We use char because int might match the return type of a gcc2
9770    builtin and then its argument prototype would still apply.  */
9771 char lchown();
9772 int main() {
9773     /*  The GNU C library defines this for functions which it implements
9774         to always fail with ENOSYS.  Some functions are actually named
9775         something starting with __ and the normal name is an alias.  */
9776 #if defined (__stub_lchown) || defined (__stub___lchown)
9777 choke me
9778 #else
9779 lchown();
9780 #endif
9781 ; return 0; }
9782 EOCP
9783 set try
9784 if eval $compile; then
9785     $echo "lchown() found." >&4
9786     val="$define"
9787 else
9788     $echo "lchown() NOT found." >&4
9789     val="$undef"
9790 fi
9791 set d_lchown
9792 eval $setvar
9793
9794 : See if number of significant digits in a double precision number is known
9795 echo " "
9796 $cat >ldbl_dig.c <<EOM
9797 #$i_limits I_LIMITS
9798 #$i_float I_FLOAT
9799 #ifdef I_LIMITS
9800 #include <limits.h>
9801 #endif
9802 #ifdef I_FLOAT
9803 #include <float.h>
9804 #endif
9805 #ifdef LDBL_DIG
9806 printf("Contains LDBL_DIG");
9807 #endif
9808 EOM
9809 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9810 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9811         echo "LDBL_DIG found." >&4
9812         val="$define"
9813 else
9814         echo "LDBL_DIG NOT found." >&4
9815         val="$undef"
9816 fi
9817 $rm -f ldbl_dig.?
9818 set d_ldbl_dig
9819 eval $setvar
9820
9821 : see if link exists
9822 set link d_link
9823 eval $inlibc
9824
9825 : see if localeconv exists
9826 set localeconv d_locconv
9827 eval $inlibc
9828
9829 : see if lockf exists
9830 set lockf d_lockf
9831 eval $inlibc
9832
9833 : check for long long
9834 echo " "
9835 echo "Checking to see if you have long long..." >&4
9836 echo 'int main() { long long x = 7; return 0; }' > try.c
9837 set try
9838 if eval $compile; then
9839         val="$define"
9840         echo "You have long long."
9841 else
9842         val="$undef"
9843         echo "You do not have long long."
9844 fi
9845 $rm try.*
9846 set d_longlong
9847 eval $setvar
9848
9849 : check for length of long long
9850 case "${d_longlong}${longlongsize}" in
9851 $define)
9852         echo " "
9853         echo "Checking to see how big your long longs are..." >&4
9854         $cat >try.c <<'EOCP'
9855 #include <stdio.h>
9856 int main()
9857 {
9858     printf("%d\n", (int)sizeof(long long));
9859     return(0);
9860 }
9861 EOCP
9862         set try
9863         if eval $compile_ok; then
9864                 longlongsize=`./try$exe_ext`
9865                 echo "Your long longs are $longlongsize bytes long."
9866         else
9867                 dflt='8'
9868                 echo " "
9869                 echo "(I can't seem to compile the test program.  Guessing...)"
9870                 rp="What is the size of a long long (in bytes)?"
9871                 . ./myread
9872                 longlongsize="$ans"
9873         fi
9874         if $test "X$longsize" = "X$longlongsize"; then
9875                 echo "(That isn't any different from an ordinary long.)"
9876         fi      
9877         ;;
9878 esac
9879 $rm -f try.* try
9880
9881 : see if prototype for lseek is available
9882 echo " "
9883 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9884 eval $hasproto
9885
9886 : see if lstat exists
9887 set lstat d_lstat
9888 eval $inlibc
9889
9890 : see if madvise exists
9891 set madvise d_madvise
9892 eval $inlibc
9893
9894 : see if mblen exists
9895 set mblen d_mblen
9896 eval $inlibc
9897
9898 : see if mbstowcs exists
9899 set mbstowcs d_mbstowcs
9900 eval $inlibc
9901
9902 : see if mbtowc exists
9903 set mbtowc d_mbtowc
9904 eval $inlibc
9905
9906 : see if memchr exists
9907 set memchr d_memchr
9908 eval $inlibc
9909
9910 : see if memcmp exists
9911 set memcmp d_memcmp
9912 eval $inlibc
9913
9914 : see if memcpy exists
9915 set memcpy d_memcpy
9916 eval $inlibc
9917
9918 : see if memmove exists
9919 set memmove d_memmove
9920 eval $inlibc
9921
9922 : see if memset exists
9923 set memset d_memset
9924 eval $inlibc
9925
9926 : see if mkdir exists
9927 set mkdir d_mkdir
9928 eval $inlibc
9929
9930 : see if mkdtemp exists
9931 set mkdtemp d_mkdtemp
9932 eval $inlibc
9933
9934 : see if mkfifo exists
9935 set mkfifo d_mkfifo
9936 eval $inlibc
9937
9938 : see if mkstemp exists
9939 set mkstemp d_mkstemp
9940 eval $inlibc
9941
9942 : see if mkstemps exists
9943 set mkstemps d_mkstemps
9944 eval $inlibc
9945
9946 : see if mktime exists
9947 set mktime d_mktime
9948 eval $inlibc
9949
9950 : see if this is a sys/mman.h system
9951 set sys/mman.h i_sysmman
9952 eval $inhdr
9953
9954 : see if mmap exists
9955 set mmap d_mmap
9956 eval $inlibc
9957 : see what shmat returns
9958 : default to something harmless
9959 mmaptype='void *'
9960 case "$i_sysmman$d_mmap" in
9961 "$define$define")
9962         $cat >mmap.c <<'END'
9963 #include <sys/mman.h>
9964 void *mmap();
9965 END
9966         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9967                 mmaptype='void *'
9968         else
9969                 mmaptype='caddr_t'
9970         fi
9971         echo "and it returns ($mmaptype)." >&4
9972         ;;
9973 esac
9974
9975
9976
9977 : see if modfl exists
9978 set modfl d_modfl
9979 eval $inlibc
9980
9981 : see if mprotect exists
9982 set mprotect d_mprotect
9983 eval $inlibc
9984
9985 : see if msgctl exists
9986 set msgctl d_msgctl
9987 eval $inlibc
9988
9989 : see if msgget exists
9990 set msgget d_msgget
9991 eval $inlibc
9992
9993 : see if msgsnd exists
9994 set msgsnd d_msgsnd
9995 eval $inlibc
9996
9997 : see if msgrcv exists
9998 set msgrcv d_msgrcv
9999 eval $inlibc
10000
10001 : see how much of the 'msg*(2)' library is present.
10002 h_msg=true
10003 echo " "
10004 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10005 *"$undef"*) h_msg=false;;
10006 esac
10007 case "$osname" in
10008 freebsd)
10009     case "`ipcs 2>&1`" in
10010     "SVID messages"*"not configured"*)
10011         echo "Your $osname does not have the msg*(2) configured." >&4
10012         h_msg=false
10013         val="$undef"
10014         set msgctl d_msgctl
10015         eval $setvar
10016         set msgget d_msgget
10017         eval $setvar
10018         set msgsnd d_msgsnd
10019         eval $setvar
10020         set msgrcv d_msgrcv
10021         eval $setvar
10022         ;;
10023     esac
10024     ;;
10025 esac
10026 : we could also check for sys/ipc.h ...
10027 if $h_msg && $test `./findhdr sys/msg.h`; then
10028         echo "You have the full msg*(2) library." >&4
10029         val="$define"
10030 else
10031         echo "You don't have the full msg*(2) library." >&4
10032         val="$undef"
10033 fi
10034 set d_msg
10035 eval $setvar
10036
10037 : see if msync exists
10038 set msync d_msync
10039 eval $inlibc
10040
10041 : see if munmap exists
10042 set munmap d_munmap
10043 eval $inlibc
10044
10045 : see if nice exists
10046 set nice d_nice
10047 eval $inlibc
10048
10049
10050 echo " "
10051 echo "Checking which 64-bit integer type we could use..." >&4
10052
10053 case "$intsize" in
10054 8) val=int
10055    set quadtype
10056    eval $setvar
10057    val='"unsigned int"'
10058    set uquadtype
10059    eval $setvar
10060    quadkind=1
10061    ;;
10062 *) case "$longsize" in
10063    8) val=long
10064       set quadtype
10065       eval $setvar
10066       val='"unsigned long"'
10067       set uquadtype
10068       eval $setvar
10069       quadkind=2
10070       ;;
10071    *) case "$d_longlong:$longlongsize" in
10072       define:8)
10073         val='"long long"'
10074         set quadtype
10075         eval $setvar
10076         val='"unsigned long long"'
10077         set uquadtype
10078         eval $setvar
10079         quadkind=3
10080         ;;
10081       *) case "$d_int64_t" in
10082          define)
10083            val=int64_t
10084            set quadtype
10085            eval $setvar
10086            val=uint64_t
10087            set uquadtype
10088            eval $setvar
10089            quadkind=4
10090            ;;
10091          esac
10092          ;;
10093       esac
10094       ;;
10095    esac
10096    ;;
10097 esac
10098
10099 case "$quadtype" in
10100 '')     echo "Alas, no 64-bit integer types in sight." >&4
10101         d_quad="$undef"
10102         ;;
10103 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10104             verb="will"
10105         else
10106             verb="could"
10107         fi
10108         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10109         d_quad="$define"
10110         ;;
10111 esac
10112
10113 : check for length of character
10114 echo " "
10115 case "$charsize" in
10116 '')
10117         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10118         $cat >try.c <<'EOCP'
10119 #include <stdio.h>
10120 int main()
10121 {
10122     printf("%d\n", (int)sizeof(char));
10123     exit(0);
10124 }
10125 EOCP
10126         set try
10127         if eval $compile_ok; then
10128                 dflt=`./try`
10129         else
10130                 dflt='1'
10131                 echo "(I can't seem to compile the test program.  Guessing...)"
10132         fi
10133         ;;
10134 *)
10135         dflt="$charsize"
10136         ;;
10137 esac
10138 rp="What is the size of a character (in bytes)?"
10139 . ./myread
10140 charsize="$ans"
10141 $rm -f try.c try
10142
10143
10144 echo " "
10145 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10146
10147 case "$use64bitint:$d_quad:$quadtype" in
10148 define:define:?*)
10149         ivtype="$quadtype"
10150         uvtype="$uquadtype"
10151         ivsize=8
10152         uvsize=8
10153         ;;
10154 *)      ivtype="long"
10155         uvtype="unsigned long"
10156         ivsize=$longsize
10157         uvsize=$longsize
10158         ;;
10159 esac
10160
10161 case "$uselongdouble:$d_longdbl" in
10162 define:define)
10163         nvtype="long double"
10164         nvsize=$longdblsize
10165         ;;
10166 *)      nvtype=double
10167         nvsize=$doublesize
10168         ;;
10169 esac
10170
10171 $echo "(IV will be "$ivtype", $ivsize bytes)"
10172 $echo "(UV will be "$uvtype", $uvsize bytes)"
10173 $echo "(NV will be "$nvtype", $nvsize bytes)"
10174
10175 $cat >try.c <<EOCP
10176 #$i_inttypes I_INTTYPES
10177 #ifdef I_INTTYPES
10178 #include <inttypes.h>
10179 #endif
10180 #include <stdio.h>
10181 int main() {
10182 #ifdef INT8
10183    int8_t i =  INT8_MAX;
10184   uint8_t u = UINT8_MAX;
10185   printf("int8_t\n");
10186 #endif
10187 #ifdef INT16
10188    int16_t i =  INT16_MAX;
10189   uint16_t i = UINT16_MAX;
10190   printf("int16_t\n");
10191 #endif
10192 #ifdef INT32
10193    int32_t i =  INT32_MAX;
10194   uint32_t u = UINT32_MAX;
10195   printf("int32_t\n");
10196 #endif
10197 }
10198 EOCP
10199
10200 case "$i8type" in
10201 '')     case "$charsize" in
10202         1)      i8type=char
10203                 u8type="unsigned char"
10204                 i8size=$charsize
10205                 u8size=$charsize
10206                 ;;
10207         esac
10208         ;;
10209 esac
10210 case "$i8type" in
10211 '')     set try -DINT8
10212         if eval $compile; then
10213                 case "`./try$exe_ext`" in
10214                 int8_t) i8type=int8_t
10215                         u8type=uint8_t
10216                         i8size=1
10217                         u8size=1
10218                         ;;
10219                 esac
10220         fi
10221         ;;
10222 esac
10223 case "$i8type" in
10224 '')     if $test $charsize -ge 1; then
10225                 i8type=char
10226                 u8type="unsigned char"
10227                 i8size=$charsize
10228                 u8size=$charsize
10229         fi
10230         ;;
10231 esac
10232
10233 case "$i16type" in
10234 '')     case "$shortsize" in
10235         2)      i16type=short
10236                 u16type="unsigned short"
10237                 i16size=$shortsize
10238                 u16size=$shortsize
10239                 ;;
10240         esac
10241         ;;
10242 esac
10243 case "$i16type" in
10244 '')     set try -DINT16
10245         if eval $compile; then
10246                 case "`./try$exe_ext`" in
10247                 int16_t)
10248                         i16type=int16_t
10249                         u16type=uint16_t
10250                         i16size=2
10251                         u16size=2
10252                         ;;
10253                 esac
10254         fi
10255         ;;
10256 esac
10257 case "$i16type" in
10258 '')     if $test $shortsize -ge 2; then
10259                 i16type=short
10260                 u16type="unsigned short"
10261                 i16size=$shortsize
10262                 u16size=$shortsize
10263         fi
10264         ;;
10265 esac
10266
10267 case "$i32type" in
10268 '')     case "$longsize" in
10269         4)      i32type=long
10270                 u32type="unsigned long"
10271                 i32size=$longsize
10272                 u32size=$longsize
10273                 ;;
10274         *)      case "$intsize" in
10275                 4)      i32type=int
10276                         u32type="unsigned int"
10277                         i32size=$intsize
10278                         u32size=$intsize
10279                         ;;
10280                 esac
10281                 ;;
10282         esac
10283         ;;
10284 esac
10285 case "$i32type" in
10286 '')     set try -DINT32
10287         if eval $compile; then
10288                 case "`./try$exe_ext`" in
10289                 int32_t)
10290                         i32type=int32_t
10291                         u32type=uint32_t
10292                         i32size=4
10293                         u32size=4
10294                         ;;
10295                 esac
10296         fi
10297         ;;
10298 esac
10299 case "$i32type" in
10300 '')     if $test $intsize -ge 4; then
10301                 i32type=int
10302                 u32type="unsigned int"
10303                 i32size=$intsize
10304                 u32size=$intsize
10305         fi
10306         ;;
10307 esac
10308
10309 case "$i64type" in
10310 '')     case "$d_quad:$quadtype" in
10311         define:?*)
10312                 i64type="$quadtype"
10313                 u64type="$uquadtype"
10314                 i64size=8
10315                 u64size=8
10316                 ;;
10317         esac
10318         ;;
10319 esac
10320
10321 $echo "Checking whether your NVs can preserve your UVs..." >&4
10322 $cat <<EOP >try.c
10323 #include <stdio.h>
10324 int main() {
10325     $uvtype k = ($uvtype)~0, l;
10326     $nvtype d;
10327     l = k;
10328     d = ($nvtype)l;
10329     l = ($uvtype)d;
10330     if (l == k)
10331        printf("preserve\n");
10332     exit(0);
10333 }
10334 EOP
10335 set try
10336 if eval $compile; then
10337         case "`./try$exe_ext`" in
10338         preserve) d_nv_preserves_uv="$define" ;;
10339         esac
10340 fi      
10341 case "$d_nv_preserves_uv" in
10342 $define) $echo "Yes, they can."  2>&1 ;;
10343 *)       $echo "No, they can't." 2>&1
10344          d_nv_preserves_uv="$undef"
10345          ;;
10346 esac
10347
10348 $rm -f try.* try
10349
10350 case "$d_nv_preserves_uv" in
10351 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10352 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10353         $cat <<EOP >try.c
10354 #include <stdio.h>
10355 int main() {
10356     $uvtype u = 0;
10357     int     n = 8 * $uvsize;
10358     int     i;
10359     for (i = 0; i < n; i++) {
10360       u = u << 1 | ($uvtype)1;
10361       if (($uvtype)($nvtype)u != u)
10362         break;
10363     }
10364     printf("%d\n", i);
10365     exit(0);
10366 }
10367 EOP
10368         set try
10369         if eval $compile; then
10370                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10371         fi
10372         case "$d_nv_preserves_uv_bits" in
10373         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10374         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10375                 d_nv_preserves_uv_bits="$undef"
10376                 ;;
10377         esac
10378         $rm -f try.* try
10379         ;;
10380 esac
10381
10382
10383
10384 : check for off64_t
10385 echo " "
10386 echo "Checking to see if you have off64_t..." >&4
10387 $cat >try.c <<EOCP
10388 #include <sys/types.h>
10389 #include <unistd.h>
10390 int main() { off64_t x = 7; }
10391 EOCP
10392 set try
10393 if eval $compile; then
10394         val="$define"
10395         echo "You have off64_t."
10396 else
10397         val="$undef"
10398         echo "You do not have off64_t."
10399         case "$lseeksize" in
10400         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10401         esac
10402 fi
10403 $rm -f try.* try
10404 set d_off64_t
10405 eval $setvar
10406
10407 : see if POSIX threads are available
10408 set pthread.h i_pthread
10409 eval $inhdr
10410
10411
10412
10413
10414 : how to create joinable pthreads
10415 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10416         echo " "
10417         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10418         $cat >try.c <<'EOCP'
10419 #include <pthread.h>
10420 int main() {
10421     int detachstate = JOINABLE;
10422 }
10423 EOCP
10424         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10425         if eval $compile; then
10426                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10427                 val="$undef" # Yes, undef.
10428                 set d_old_pthread_create_joinable
10429                 eval $setvar
10430                 val=""
10431                 set old_pthread_create_joinable
10432                 eval $setvar
10433         else
10434                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10435                 if eval $compile; then
10436                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10437                         val="$define"
10438                         set d_old_pthread_create_joinable
10439                         eval $setvar
10440                         val=PTHREAD_CREATE_UNDETACHED
10441                         set old_pthread_create_joinable
10442                         eval $setvar
10443                 else            
10444                         set try -DJOINABLE=__UNDETACHED
10445                         if eval $compile; then
10446                                 echo "You seem to use __UNDETACHED." >&4
10447                                 val="$define"
10448                                 set d_old_pthread_create_joinable
10449                                 eval $setvar
10450                                 val=__UNDETACHED
10451                                 set old_pthread_create_joinable
10452                                 eval $setvar
10453                         else
10454                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10455                                 val="$define"
10456                                 set d_old_pthread_create_joinable
10457                                 eval $setvar
10458                                 val=0
10459                                 set old_pthread_create_joinable
10460                                 eval $setvar
10461                         fi
10462                 fi
10463         fi
10464         $rm -f try try.*
10465 else
10466     d_old_pthread_create_joinable="$undef"
10467     old_pthread_create_joinable=""
10468 fi
10469
10470 : see if pause exists
10471 set pause d_pause
10472 eval $inlibc
10473
10474 : see if pipe exists
10475 set pipe d_pipe
10476 eval $inlibc
10477
10478 : see if poll exists
10479 set poll d_poll
10480 eval $inlibc
10481
10482
10483 : see whether the various POSIXish _yields exist
10484 $cat >try.c <<EOP
10485 #include <pthread.h>
10486 #include <stdio.h>
10487 int main() {
10488 #ifdef SCHED_YIELD
10489         sched_yield();
10490 #else
10491 #ifdef PTHREAD_YIELD
10492         pthread_yield();
10493 #else
10494 #ifdef PTHREAD_YIELD_NULL
10495         pthread_yield(NULL);
10496 #endif
10497 #endif
10498 #endif
10499 }
10500 EOP
10501 : see if sched_yield exists
10502 set try -DSCHED_YIELD
10503 if eval $compile; then
10504     val="$define"
10505     sched_yield='sched_yield()'
10506 else
10507     val="$undef"
10508 fi
10509 case "$usethreads" in
10510 $define)
10511         case "$val" in
10512         $define) echo 'sched_yield() found.' >&4        ;;
10513         *)       echo 'sched_yield() NOT found.' >&4    ;;
10514         esac
10515 esac
10516 set d_sched_yield
10517 eval $setvar
10518
10519 : see if pthread_yield exists
10520 set try -DPTHREAD_YIELD
10521 if eval $compile; then
10522     val="$define"
10523     case "$sched_yield" in
10524     '') sched_yield='pthread_yield()' ;;
10525     esac
10526 else
10527     set try -DPTHREAD_YIELD_NULL
10528     if eval $compile; then
10529         val="$define"
10530         case "$sched_yield" in
10531         '') sched_yield='pthread_yield(NULL)' ;;
10532         esac
10533     else
10534         val="$undef"
10535     fi
10536 fi
10537 case "$usethreads" in
10538 $define)
10539         case "$val" in
10540         $define) echo 'pthread_yield() found.' >&4      ;;
10541         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10542         esac
10543         ;;
10544 esac
10545 set d_pthread_yield
10546 eval $setvar
10547
10548 case "$sched_yield" in
10549 '') sched_yield=undef ;;
10550 esac
10551
10552 $rm -f try try.*
10553
10554 : see if this is a pwd.h system
10555 set pwd.h i_pwd
10556 eval $inhdr
10557
10558 case "$i_pwd" in
10559 $define)
10560         xxx=`./findhdr pwd.h`
10561         $cppstdin $cppflags $cppminus < $xxx >$$.h
10562
10563         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10564                 val="$define"
10565         else
10566                 val="$undef"
10567         fi
10568         set d_pwquota
10569         eval $setvar
10570
10571         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10572                 val="$define"
10573         else
10574                 val="$undef"
10575         fi
10576         set d_pwage
10577         eval $setvar
10578
10579         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10580                 val="$define"
10581         else
10582                 val="$undef"
10583         fi
10584         set d_pwchange
10585         eval $setvar
10586
10587         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10588                 val="$define"
10589         else
10590                 val="$undef"
10591         fi
10592         set d_pwclass
10593         eval $setvar
10594
10595         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10596                 val="$define"
10597         else
10598                 val="$undef"
10599         fi
10600         set d_pwexpire
10601         eval $setvar
10602
10603         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10604                 val="$define"
10605         else
10606                 val="$undef"
10607         fi
10608         set d_pwcomment
10609         eval $setvar
10610
10611         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10612                 val="$define"
10613         else
10614                 val="$undef"
10615         fi
10616         set d_pwgecos
10617         eval $setvar
10618
10619         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10620                 val="$define"
10621         else
10622                 val="$undef"
10623         fi
10624         set d_pwpasswd
10625         eval $setvar
10626
10627         $rm -f $$.h
10628         ;;
10629 *)
10630         val="$undef"; 
10631         set d_pwquota; eval $setvar
10632         set d_pwage; eval $setvar
10633         set d_pwchange; eval $setvar
10634         set d_pwclass; eval $setvar
10635         set d_pwexpire; eval $setvar
10636         set d_pwcomment; eval $setvar
10637         set d_pwgecos; eval $setvar
10638         set d_pwpasswd; eval $setvar
10639         ;;
10640 esac
10641
10642 : see if readdir and friends exist
10643 set readdir d_readdir
10644 eval $inlibc
10645 set seekdir d_seekdir
10646 eval $inlibc
10647 set telldir d_telldir
10648 eval $inlibc
10649 set rewinddir d_rewinddir
10650 eval $inlibc
10651
10652 : see if readlink exists
10653 set readlink d_readlink
10654 eval $inlibc
10655
10656 : see if rename exists
10657 set rename d_rename
10658 eval $inlibc
10659
10660 : see if rmdir exists
10661 set rmdir d_rmdir
10662 eval $inlibc
10663
10664 : see if memory.h is available.
10665 val=''
10666 set memory.h val
10667 eval $inhdr
10668
10669 : See if it conflicts with string.h
10670 case "$val" in
10671 $define)
10672         case "$strings" in
10673         '') ;;
10674         *)
10675                 $cppstdin $cppflags $cppminus < $strings > mem.h
10676                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10677                         echo " "
10678                         echo "We won't be including <memory.h>."
10679                         val="$undef"
10680                 fi
10681                 $rm -f mem.h
10682                 ;;
10683         esac
10684 esac
10685 set i_memory
10686 eval $setvar
10687
10688 : can bcopy handle overlapping blocks?
10689 val="$undef"
10690 case "$d_bcopy" in
10691 "$define")
10692         echo " "
10693         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10694         $cat >try.c <<EOCP
10695 #$i_memory I_MEMORY
10696 #$i_stdlib I_STDLIB
10697 #$i_string I_STRING
10698 #$i_unistd I_UNISTD
10699 EOCP
10700         $cat >>try.c <<'EOCP'
10701 #include <stdio.h>
10702 #ifdef I_MEMORY
10703 #  include <memory.h>
10704 #endif
10705 #ifdef I_STDLIB
10706 #  include <stdlib.h>
10707 #endif
10708 #ifdef I_STRING
10709 #  include <string.h>
10710 #else
10711 #  include <strings.h>
10712 #endif
10713 #ifdef I_UNISTD
10714 #  include <unistd.h>  /* Needed for NetBSD */
10715 #endif
10716 int main()
10717 {
10718 char buf[128], abc[128];
10719 char *b;
10720 int len;
10721 int off;
10722 int align;
10723
10724 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10725
10726 for (align = 7; align >= 0; align--) {
10727         for (len = 36; len; len--) {
10728                 b = buf+align;
10729                 bcopy(abc, b, len);
10730                 for (off = 1; off <= len; off++) {
10731                         bcopy(b, b+off, len);
10732                         bcopy(b+off, b, len);
10733                         if (bcmp(b, abc, len))
10734                                 exit(1);
10735                 }
10736         }
10737 }
10738 exit(0);
10739 }
10740 EOCP
10741         set try
10742         if eval $compile_ok; then
10743                 if ./try 2>/dev/null; then
10744                         echo "Yes, it can."
10745                         val="$define"
10746                 else
10747                         echo "It can't, sorry."
10748                         case "$d_memmove" in
10749                         "$define") echo "But that's Ok since you have memmove()." ;;
10750                         esac
10751                 fi
10752         else
10753                 echo "(I can't compile the test program, so we'll assume not...)"
10754                 case "$d_memmove" in
10755                 "$define") echo "But that's Ok since you have memmove()." ;;
10756                 esac
10757         fi
10758         ;;
10759 esac
10760 $rm -f try.* try core
10761 set d_safebcpy
10762 eval $setvar
10763
10764 : can memcpy handle overlapping blocks?
10765 val="$undef"
10766 case "$d_memcpy" in
10767 "$define")
10768         echo " "
10769         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10770         $cat >try.c <<EOCP
10771 #$i_memory I_MEMORY
10772 #$i_stdlib I_STDLIB
10773 #$i_string I_STRING
10774 #$i_unistd I_UNISTD
10775 EOCP
10776         $cat >>try.c <<'EOCP'
10777 #include <stdio.h>
10778 #ifdef I_MEMORY
10779 #  include <memory.h>
10780 #endif
10781 #ifdef I_STDLIB
10782 #  include <stdlib.h>
10783 #endif
10784 #ifdef I_STRING
10785 #  include <string.h>
10786 #else
10787 #  include <strings.h>
10788 #endif
10789 #ifdef I_UNISTD
10790 #  include <unistd.h>  /* Needed for NetBSD */
10791 #endif
10792 int main()
10793 {
10794 char buf[128], abc[128];
10795 char *b;
10796 int len;
10797 int off;
10798 int align;
10799
10800 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10801    try to store the string in read-only memory. */
10802 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10803
10804 for (align = 7; align >= 0; align--) {
10805         for (len = 36; len; len--) {
10806                 b = buf+align;
10807                 memcpy(b, abc, len);
10808                 for (off = 1; off <= len; off++) {
10809                         memcpy(b+off, b, len);
10810                         memcpy(b, b+off, len);
10811                         if (memcmp(b, abc, len))
10812                                 exit(1);
10813                 }
10814         }
10815 }
10816 exit(0);
10817 }
10818 EOCP
10819         set try
10820         if eval $compile_ok; then
10821                 if ./try 2>/dev/null; then
10822                         echo "Yes, it can."
10823                         val="$define"
10824                 else
10825                         echo "It can't, sorry."
10826                         case "$d_memmove" in
10827                         "$define") echo "But that's Ok since you have memmove()." ;;
10828                         esac
10829                 fi
10830         else
10831                 echo "(I can't compile the test program, so we'll assume not...)"
10832                 case "$d_memmove" in
10833                 "$define") echo "But that's Ok since you have memmove()." ;;
10834                 esac
10835         fi
10836         ;;
10837 esac
10838 $rm -f try.* try core
10839 set d_safemcpy
10840 eval $setvar
10841
10842 : can memcmp be trusted to compare relative magnitude?
10843 val="$undef"
10844 case "$d_memcmp" in
10845 "$define")
10846         echo " "
10847         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10848         $cat >try.c <<EOCP
10849 #$i_memory I_MEMORY
10850 #$i_stdlib I_STDLIB
10851 #$i_string I_STRING
10852 #$i_unistd I_UNISTD
10853 EOCP
10854         $cat >>try.c <<'EOCP'
10855 #include <stdio.h>
10856 #ifdef I_MEMORY
10857 #  include <memory.h>
10858 #endif
10859 #ifdef I_STDLIB
10860 #  include <stdlib.h>
10861 #endif
10862 #ifdef I_STRING
10863 #  include <string.h>
10864 #else
10865 #  include <strings.h>
10866 #endif
10867 #ifdef I_UNISTD
10868 #  include <unistd.h>  /* Needed for NetBSD */
10869 #endif
10870 int main()
10871 {
10872 char a = -1;
10873 char b = 0;
10874 if ((a < b) && memcmp(&a, &b, 1) < 0)
10875         exit(1);
10876 exit(0);
10877 }
10878 EOCP
10879         set try
10880         if eval $compile_ok; then
10881                 if ./try 2>/dev/null; then
10882                         echo "Yes, it can."
10883                         val="$define"
10884                 else
10885                         echo "No, it can't (it uses signed chars)."
10886                 fi
10887         else
10888                 echo "(I can't compile the test program, so we'll assume not...)"
10889         fi
10890         ;;
10891 esac
10892 $rm -f try.* try core
10893 set d_sanemcmp
10894 eval $setvar
10895
10896 : see if select exists
10897 set select d_select
10898 eval $inlibc
10899
10900 : see if semctl exists
10901 set semctl d_semctl
10902 eval $inlibc
10903
10904 : see if semget exists
10905 set semget d_semget
10906 eval $inlibc
10907
10908 : see if semop exists
10909 set semop d_semop
10910 eval $inlibc
10911
10912 : see how much of the 'sem*(2)' library is present.
10913 h_sem=true
10914 echo " "
10915 case "$d_semctl$d_semget$d_semop" in
10916 *"$undef"*) h_sem=false;;
10917 esac
10918 case "$osname" in
10919 freebsd)
10920     case "`ipcs 2>&1`" in
10921     "SVID messages"*"not configured"*)
10922         echo "Your $osname does not have the sem*(2) configured." >&4
10923         h_sem=false
10924         val="$undef"
10925         set semctl d_semctl
10926         eval $setvar
10927         set semget d_semget
10928         eval $setvar
10929         set semop d_semop
10930         eval $setvar
10931         ;;
10932     esac
10933     ;;
10934 esac
10935 : we could also check for sys/ipc.h ...
10936 if $h_sem && $test `./findhdr sys/sem.h`; then
10937         echo "You have the full sem*(2) library." >&4
10938         val="$define"
10939 else
10940         echo "You don't have the full sem*(2) library." >&4
10941         val="$undef"
10942 fi
10943 set d_sem
10944 eval $setvar
10945
10946 : see whether sys/sem.h defines union semun
10947 echo " "
10948 $cat > try.c <<'END'
10949 #include <sys/types.h>
10950 #include <sys/ipc.h>
10951 #include <sys/sem.h>
10952 int main () { union semun semun; semun.buf = 0; }
10953 END
10954 set try
10955 if eval $compile; then
10956     echo "You have union semun in <sys/sem.h>." >&4
10957     val="$define"
10958 else
10959     echo "You do not have union semun in <sys/sem.h>." >&4
10960     val="$undef"
10961 fi
10962 $rm -f try try.c try.h
10963 set d_union_semun
10964 eval $setvar
10965
10966 : see how to do semctl IPC_STAT
10967 case "$d_sem" in
10968 $define)
10969     : see whether semctl IPC_STAT can use union semun
10970     echo " "
10971     $cat > try.h <<END
10972 #ifndef S_IRUSR
10973 #   ifdef S_IREAD
10974 #       define S_IRUSR S_IREAD
10975 #       define S_IWUSR S_IWRITE
10976 #       define S_IXUSR S_IEXEC
10977 #   else
10978 #       define S_IRUSR 0400
10979 #       define S_IWUSR 0200
10980 #       define S_IXUSR 0100
10981 #   endif
10982 #   define S_IRGRP (S_IRUSR>>3)
10983 #   define S_IWGRP (S_IWUSR>>3)
10984 #   define S_IXGRP (S_IXUSR>>3)
10985 #   define S_IROTH (S_IRUSR>>6)
10986 #   define S_IWOTH (S_IWUSR>>6)
10987 #   define S_IXOTH (S_IXUSR>>6)
10988 #endif
10989 #ifndef S_IRWXU
10990 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10991 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10992 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10993 #endif
10994 END
10995
10996     $cat > try.c <<END
10997 #include <sys/types.h>
10998 #include <sys/ipc.h>
10999 #include <sys/sem.h>
11000 #include <sys/stat.h>
11001 #include <stdio.h>
11002 #include <errno.h>
11003 #include "try.h"
11004 #ifndef errno
11005 extern int errno;
11006 #endif
11007 #$d_union_semun HAS_UNION_SEMUN
11008 int main() {
11009     union semun
11010 #ifndef HAS_UNION_SEMUN
11011     {
11012         int val;
11013         struct semid_ds *buf;
11014         unsigned short *array;
11015     }
11016 #endif
11017     arg;
11018     int sem, st;
11019
11020 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11021     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11022     if (sem > -1) {
11023         struct semid_ds argbuf;
11024         arg.buf = &argbuf;
11025 #       ifdef IPC_STAT
11026         st = semctl(sem, 0, IPC_STAT, arg);
11027         if (st == 0)
11028             printf("semun\n");
11029         else
11030 #       endif /* IPC_STAT */
11031             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11032 #       ifdef IPC_RMID
11033         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11034 #       endif /* IPC_RMID */
11035             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11036     } else
11037 #endif /* IPC_PRIVATE && ... */
11038         printf("semget failed: errno = %d\n", errno);
11039   return 0;
11040 }
11041 END
11042     val="$undef"
11043     set try
11044     if eval $compile; then
11045         xxx=`./try`
11046         case "$xxx" in
11047         semun) val="$define" ;;
11048         esac
11049     fi
11050     $rm -f try try.c
11051     set d_semctl_semun
11052     eval $setvar
11053     case "$d_semctl_semun" in
11054     $define)
11055         echo "You can use union semun for semctl IPC_STAT." >&4
11056         also='also'
11057         ;;
11058     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11059         also=''
11060         ;;
11061     esac
11062
11063     : see whether semctl IPC_STAT can use struct semid_ds pointer
11064     $cat > try.c <<'END'
11065 #include <sys/types.h>
11066 #include <sys/ipc.h>
11067 #include <sys/sem.h>
11068 #include <sys/stat.h>
11069 #include "try.h"
11070 #include <stdio.h>
11071 #include <errno.h>
11072 #ifndef errno
11073 extern int errno;
11074 #endif
11075 int main() {
11076     struct semid_ds arg;
11077     int sem, st;
11078
11079 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11080     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11081     if (sem > -1) {
11082 #       ifdef IPC_STAT
11083         st = semctl(sem, 0, IPC_STAT, &arg);
11084         if (st == 0)
11085             printf("semid_ds\n");
11086         else
11087 #       endif /* IPC_STAT */
11088             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11089 #       ifdef IPC_RMID
11090         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11091 #       endif /* IPC_RMID */
11092             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11093     } else
11094 #endif /* IPC_PRIVATE && ... */
11095         printf("semget failed: errno = %d\n", errno);
11096
11097     return 0;
11098 }
11099 END
11100     val="$undef"
11101     set try
11102     if eval $compile; then
11103         xxx=`./try`
11104         case "$xxx" in
11105         semid_ds) val="$define" ;;
11106         esac
11107     fi
11108     $rm -f try try.c
11109     set d_semctl_semid_ds
11110     eval $setvar
11111     case "$d_semctl_semid_ds" in
11112     $define)
11113         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11114         ;;
11115     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11116         ;;
11117     esac
11118     $rm -f try.h
11119     ;;
11120 *)  val="$undef"
11121
11122     # We do not have the full sem*(2) library, so assume we can not
11123     # use either.
11124
11125     set d_semctl_semun
11126     eval $setvar
11127
11128     set d_semctl_semid_ds
11129     eval $setvar
11130     ;;
11131 esac
11132
11133 : see if setegid exists
11134 set setegid d_setegid
11135 eval $inlibc
11136
11137 : see if seteuid exists
11138 set seteuid d_seteuid
11139 eval $inlibc
11140
11141 : see if setgrent exists
11142 set setgrent d_setgrent
11143 eval $inlibc
11144
11145 : see if sethostent exists
11146 set sethostent d_sethent
11147 eval $inlibc
11148
11149 : see if setlinebuf exists
11150 set setlinebuf d_setlinebuf
11151 eval $inlibc
11152
11153 : see if setlocale exists
11154 set setlocale d_setlocale
11155 eval $inlibc
11156
11157 : see if setnetent exists
11158 set setnetent d_setnent
11159 eval $inlibc
11160
11161 : see if setprotoent exists
11162 set setprotoent d_setpent
11163 eval $inlibc
11164
11165 : see if setpgid exists
11166 set setpgid d_setpgid
11167 eval $inlibc
11168
11169 : see if setpgrp2 exists
11170 set setpgrp2 d_setpgrp2
11171 eval $inlibc
11172
11173 : see if setpriority exists
11174 set setpriority d_setprior
11175 eval $inlibc
11176
11177 : see if setproctitle exists
11178 set setproctitle d_setproctitle
11179 eval $inlibc
11180
11181 : see if setpwent exists
11182 set setpwent d_setpwent
11183 eval $inlibc
11184
11185 : see if setregid exists
11186 set setregid d_setregid
11187 eval $inlibc
11188 set setresgid d_setresgid
11189 eval $inlibc
11190
11191 : see if setreuid exists
11192 set setreuid d_setreuid
11193 eval $inlibc
11194 set setresuid d_setresuid
11195 eval $inlibc
11196
11197 : see if setrgid exists
11198 set setrgid d_setrgid
11199 eval $inlibc
11200
11201 : see if setruid exists
11202 set setruid d_setruid
11203 eval $inlibc
11204
11205 : see if setservent exists
11206 set setservent d_setsent
11207 eval $inlibc
11208
11209 : see if setsid exists
11210 set setsid d_setsid
11211 eval $inlibc
11212
11213 : see if setvbuf exists
11214 set setvbuf d_setvbuf
11215 eval $inlibc
11216
11217 : see if sfio.h is available
11218 set sfio.h i_sfio
11219 eval $inhdr
11220
11221
11222 : see if sfio library is available
11223 case "$i_sfio" in
11224 $define)
11225         val=''
11226         set sfreserve val
11227         eval $inlibc
11228         ;;
11229 *)
11230         val="$undef"
11231         ;;
11232 esac
11233 : Ok, but do we want to use it.
11234 case "$val" in
11235 $define)
11236         case "$usesfio" in
11237         true|$define|[yY]*) dflt='y';;
11238         *) dflt='n';;
11239         esac
11240         echo "$package can use the sfio library, but it is experimental."
11241         rp="You seem to have sfio available, do you want to try using it?"
11242         . ./myread
11243         case "$ans" in
11244         y|Y) ;;
11245         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11246                 val="$undef"
11247                 : Remove sfio from list of libraries to use
11248                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11249                 shift
11250                 libs="$*"
11251                 echo "libs = $libs" >&4
11252                 ;;
11253         esac
11254         ;;
11255 *)      case "$usesfio" in
11256         true|$define|[yY]*)
11257                 echo "Sorry, cannot find sfio on this machine" >&4
11258                 echo "Ignoring your setting of usesfio=$usesfio" >&4
11259                 ;;
11260         esac
11261         ;;
11262 esac
11263 set d_sfio
11264 eval $setvar
11265 case "$d_sfio" in
11266 $define) usesfio='true';;
11267 *) usesfio='false';;
11268 esac
11269
11270 : see if shmctl exists
11271 set shmctl d_shmctl
11272 eval $inlibc
11273
11274 : see if shmget exists
11275 set shmget d_shmget
11276 eval $inlibc
11277
11278 : see if shmat exists
11279 set shmat d_shmat
11280 eval $inlibc
11281 : see what shmat returns
11282 case "$d_shmat" in
11283 "$define")
11284         $cat >shmat.c <<'END'
11285 #include <sys/shm.h>
11286 void *shmat();
11287 END
11288         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11289                 shmattype='void *'
11290         else
11291                 shmattype='char *'
11292         fi
11293         echo "and it returns ($shmattype)." >&4
11294         : see if a prototype for shmat is available
11295         xxx=`./findhdr sys/shm.h`
11296         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11297         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11298                 val="$define"
11299         else
11300                 val="$undef"
11301         fi
11302         $rm -f shmat.[co]
11303         ;;
11304 *)
11305         val="$undef"
11306         ;;
11307 esac
11308 set d_shmatprototype
11309 eval $setvar
11310
11311 : see if shmdt exists
11312 set shmdt d_shmdt
11313 eval $inlibc
11314
11315 : see how much of the 'shm*(2)' library is present.
11316 h_shm=true
11317 echo " "
11318 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11319 *"$undef"*) h_shm=false;;
11320 esac
11321 case "$osname" in
11322 freebsd)
11323     case "`ipcs 2>&1`" in
11324     "SVID shared memory"*"not configured"*)
11325         echo "Your $osname does not have the shm*(2) configured." >&4
11326         h_shm=false
11327         val="$undef"
11328         set shmctl d_shmctl
11329         evat $setvar
11330         set shmget d_shmget
11331         evat $setvar
11332         set shmat d_shmat
11333         evat $setvar
11334         set shmdt d_shmdt
11335         evat $setvar
11336         ;;
11337     esac
11338     ;;
11339 esac
11340 : we could also check for sys/ipc.h ...
11341 if $h_shm && $test `./findhdr sys/shm.h`; then
11342         echo "You have the full shm*(2) library." >&4
11343         val="$define"
11344 else
11345         echo "You don't have the full shm*(2) library." >&4
11346         val="$undef"
11347 fi
11348 set d_shm
11349 eval $setvar
11350
11351 echo " "
11352 : see if we have sigaction
11353 if set sigaction val -f d_sigaction; eval $csym; $val; then
11354         echo 'sigaction() found.' >&4
11355         $cat > try.c <<'EOP'
11356 #include <stdio.h>
11357 #include <sys/types.h>
11358 #include <signal.h>
11359 int main()
11360 {
11361     struct sigaction act, oact;
11362     act.sa_flags = 0;
11363     oact.sa_handler = 0;
11364     /* so that act and oact are used */
11365     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11366 }
11367 EOP
11368         set try
11369         if eval $compile_ok; then
11370                 val="$define"
11371         else
11372                 echo "But you don't seem to have a useable struct sigaction." >&4
11373                 val="$undef"
11374         fi
11375 else
11376         echo 'sigaction NOT found.' >&4
11377         val="$undef"
11378 fi
11379 set d_sigaction; eval $setvar
11380 $rm -f try try$_o try.c
11381
11382 : see if sigsetjmp exists
11383 echo " "
11384 case "$d_sigsetjmp" in
11385 '')
11386         $cat >try.c <<'EOP'
11387 #include <setjmp.h>
11388 sigjmp_buf env;
11389 int set = 1;
11390 int main()
11391 {
11392         if (sigsetjmp(env,1))
11393                 exit(set);
11394         set = 0;
11395         siglongjmp(env, 1);
11396         exit(1);
11397 }
11398 EOP
11399         set try
11400         if eval $compile; then
11401                 if ./try >/dev/null 2>&1; then
11402                         echo "POSIX sigsetjmp found." >&4
11403                         val="$define"
11404                 else
11405                         $cat >&4 <<EOM
11406 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11407 I'll ignore them.
11408 EOM
11409                         val="$undef"
11410                 fi
11411         else
11412                 echo "sigsetjmp not found." >&4
11413                 val="$undef"
11414         fi
11415         ;;
11416 *) val="$d_sigsetjmp"
11417         case "$d_sigsetjmp" in
11418         $define) echo "POSIX sigsetjmp found." >&4;;
11419         $undef) echo "sigsetjmp not found." >&4;;
11420         esac
11421         ;;
11422 esac
11423 set d_sigsetjmp
11424 eval $setvar
11425 $rm -f try.c try
11426
11427 : see if sys/stat.h is available
11428 set sys/stat.h i_sysstat
11429 eval $inhdr
11430
11431
11432 : see if stat knows about block sizes
11433 echo " "
11434 echo "Checking to see if your struct stat has st_blocks field..." >&4
11435 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11436 eval $hasfield
11437
11438
11439 : see if this is a sys/vfs.h system
11440 set sys/vfs.h i_sysvfs
11441 eval $inhdr
11442
11443
11444 : see if this is a sys/statfs.h system
11445 set sys/statfs.h i_sysstatfs
11446 eval $inhdr
11447
11448
11449 echo " "
11450 echo "Checking to see if your system supports struct statfs..." >&4
11451 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
11452 eval $hasstruct
11453 case "$d_statfs_s" in
11454 "$define")      echo "Yes, it does."   ;;
11455 *)              echo "No, it doesn't." ;;
11456 esac
11457
11458
11459
11460 : see if struct statfs knows about f_flags
11461 case "$d_statfs_s" in
11462 define) 
11463         echo " "
11464         echo "Checking to see if your struct statfs has f_flags field..." >&4
11465         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
11466         eval $hasfield
11467         ;;
11468 *)      val="$undef"
11469         set d_statfs_f_flags
11470         eval $setvar
11471         ;;
11472 esac
11473 case "$d_statfs_f_flags" in
11474 "$define")      echo "Yes, it does."   ;;
11475 *)              echo "No, it doesn't." ;;
11476 esac
11477
11478 : see if _ptr and _cnt from stdio act std
11479 echo " "
11480 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11481         echo "(Looks like you have stdio.h from Linux.)"
11482         case "$stdio_ptr" in
11483         '') stdio_ptr='((fp)->_IO_read_ptr)'
11484                 ptr_lval=$define
11485                 ;;
11486         *)      ptr_lval=$d_stdio_ptr_lval;;
11487         esac
11488         case "$stdio_cnt" in
11489         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11490                 cnt_lval=$undef
11491                 ;;
11492         *)      cnt_lval=$d_stdio_cnt_lval;;
11493         esac
11494         case "$stdio_base" in
11495         '') stdio_base='((fp)->_IO_read_base)';;
11496         esac
11497         case "$stdio_bufsiz" in
11498         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11499         esac
11500 else
11501         case "$stdio_ptr" in
11502         '') stdio_ptr='((fp)->_ptr)'
11503                 ptr_lval=$define
11504                 ;;
11505         *)      ptr_lval=$d_stdio_ptr_lval;;
11506         esac
11507         case "$stdio_cnt" in
11508         '') stdio_cnt='((fp)->_cnt)'
11509                 cnt_lval=$define
11510                 ;;
11511         *)      cnt_lval=$d_stdio_cnt_lval;;
11512         esac
11513         case "$stdio_base" in
11514         '') stdio_base='((fp)->_base)';;
11515         esac
11516         case "$stdio_bufsiz" in
11517         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11518         esac
11519 fi
11520 : test whether _ptr and _cnt really work
11521 echo "Checking how std your stdio is..." >&4
11522 $cat >try.c <<EOP
11523 #include <stdio.h>
11524 #define FILE_ptr(fp)    $stdio_ptr
11525 #define FILE_cnt(fp)    $stdio_cnt
11526 int main() {
11527         FILE *fp = fopen("try.c", "r");
11528         char c = getc(fp);
11529         if (
11530                 18 <= FILE_cnt(fp) &&
11531                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11532         )
11533                 exit(0);
11534         exit(1);
11535 }
11536 EOP
11537 val="$undef"
11538 set try
11539 if eval $compile; then
11540         if ./try; then
11541                 echo "Your stdio acts pretty std."
11542                 val="$define"
11543         else
11544                 echo "Your stdio isn't very std."
11545         fi
11546 else
11547         echo "Your stdio doesn't appear very std."
11548 fi
11549 $rm -f try.c try
11550 set d_stdstdio
11551 eval $setvar
11552
11553 : Can _ptr be used as an lvalue?
11554 case "$d_stdstdio$ptr_lval" in
11555 $define$define) val=$define ;;
11556 *) val=$undef ;;
11557 esac
11558 set d_stdio_ptr_lval
11559 eval $setvar
11560
11561 : Can _cnt be used as an lvalue?
11562 case "$d_stdstdio$cnt_lval" in
11563 $define$define) val=$define ;;
11564 *) val=$undef ;;
11565 esac
11566 set d_stdio_cnt_lval
11567 eval $setvar
11568
11569 : see if _base is also standard
11570 val="$undef"
11571 case "$d_stdstdio" in
11572 $define)
11573         $cat >try.c <<EOP
11574 #include <stdio.h>
11575 #define FILE_base(fp)   $stdio_base
11576 #define FILE_bufsiz(fp) $stdio_bufsiz
11577 int main() {
11578         FILE *fp = fopen("try.c", "r");
11579         char c = getc(fp);
11580         if (
11581                 19 <= FILE_bufsiz(fp) &&
11582                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11583         )
11584                 exit(0);
11585         exit(1);
11586 }
11587 EOP
11588         set try
11589         if eval $compile; then
11590                 if ./try; then
11591                         echo "And its _base field acts std."
11592                         val="$define"
11593                 else
11594                         echo "But its _base field isn't std."
11595                 fi
11596         else
11597                 echo "However, it seems to be lacking the _base field."
11598         fi
11599         $rm -f try.c try
11600         ;;
11601 esac
11602 set d_stdiobase
11603 eval $setvar
11604
11605 $cat >&4 <<EOM
11606 Checking how to access stdio streams by file descriptor number...
11607 EOM
11608 case "$stdio_stream_array" in
11609 '')     $cat >try.c <<EOCP
11610 #include <stdio.h>
11611 int main() {
11612   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11613     printf("yes\n");
11614 }
11615 EOCP
11616         for s in _iob __iob __sF
11617         do
11618                 set try -DSTDIO_STREAM_ARRAY=$s
11619                 if eval $compile; then
11620                         case "`./try$exe_ext`" in
11621                         yes)    stdio_stream_array=$s; break ;;
11622                         esac
11623                 fi
11624         done
11625         $rm -f try.* try$exe_ext
11626 esac
11627 case "$stdio_stream_array" in
11628 '')     $cat >&4 <<EOM
11629 I can't figure out how to access stdio streams by file descriptor number.
11630 EOM
11631         d_stdio_stream_array="$undef"
11632         ;;
11633 *)      $cat >&4 <<EOM
11634 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11635 EOM
11636         d_stdio_stream_array="$define"
11637         ;;
11638 esac
11639
11640 : see if strcoll exists
11641 set strcoll d_strcoll
11642 eval $inlibc
11643
11644 : check for structure copying
11645 echo " "
11646 echo "Checking to see if your C compiler can copy structs..." >&4
11647 $cat >try.c <<'EOCP'
11648 int main()
11649 {
11650         struct blurfl {
11651                 int dyick;
11652         } foo, bar;
11653
11654         foo = bar;
11655 }
11656 EOCP
11657 if $cc -c try.c >/dev/null 2>&1 ; then
11658         val="$define"
11659         echo "Yup, it can."
11660 else
11661         val="$undef"
11662         echo "Nope, it can't."
11663 fi
11664 set d_strctcpy
11665 eval $setvar
11666 $rm -f try.*
11667
11668 : see if strerror and/or sys_errlist[] exist
11669 echo " "
11670 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11671     if set strerror val -f d_strerror; eval $csym; $val; then
11672                 echo 'strerror() found.' >&4
11673                 d_strerror="$define"
11674                 d_strerrm='strerror(e)'
11675                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11676                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11677                         d_syserrlst="$define"
11678                 else
11679                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11680                         d_syserrlst="$undef"
11681                 fi
11682     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11683                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11684                 echo 'strerror() found in string header.' >&4
11685                 d_strerror="$define"
11686                 d_strerrm='strerror(e)'
11687                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11688                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11689                                 d_syserrlst="$define"
11690                 else
11691                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11692                         d_syserrlst="$undef"
11693                 fi
11694     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11695                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11696                 d_strerror="$undef"
11697                 d_syserrlst="$define"
11698                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11699     else
11700                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11701                 d_strerror="$undef"
11702                 d_syserrlst="$undef"
11703                 d_strerrm='"unknown"'
11704     fi
11705 fi
11706
11707 : see if strtod exists
11708 set strtod d_strtod
11709 eval $inlibc
11710
11711 : see if strtol exists
11712 set strtol d_strtol
11713 eval $inlibc
11714
11715 : see if strtold exists
11716 set strtold d_strtold
11717 eval $inlibc
11718
11719 : see if strtoll exists
11720 set strtoll d_strtoll
11721 eval $inlibc
11722
11723 case "$d_longlong-$d_strtoll" in
11724 "$define-$define")
11725         $cat <<EOM
11726 Checking whether your strtoll() works okay...
11727 EOM
11728         $cat >try.c <<'EOCP'
11729 #include <errno.h>
11730 #ifdef __hpux
11731 #define strtoll __strtoll
11732 #endif
11733 #include <stdio.h>
11734 extern long long int strtoll(char *s, char **, int); 
11735 static int bad = 0;
11736 int check(char *s, long long ell, int een) {
11737         long long gll;
11738         errno = 0;
11739         gll = strtoll(s, 0, 10);
11740         if (!((gll == ell) && (errno == een)))
11741                 bad++;
11742 }
11743 int main() {
11744         check(" 1",                                      1LL, 0);
11745         check(" 0",                                      0LL, 0);
11746         check("-1",                                     -1LL, 0);
11747         check("-9223372036854775808", -9223372036854775808LL, 0);
11748         check("-9223372036854775808", -9223372036854775808LL, 0);
11749         check(" 9223372036854775807",  9223372036854775807LL, 0);
11750         check("-9223372036854775808", -9223372036854775808LL, 0);
11751         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11752         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11753         if (!bad)
11754                 printf("ok\n");
11755 }
11756 EOCP
11757         set try
11758         if eval $compile; then
11759                 case "`./try`" in
11760                 ok) echo "Your strtoll() seems to be working okay." ;;
11761                 *) cat <<EOM >&4
11762 Your strtoll() doesn't seem to be working okay.
11763 EOM
11764                    d_strtoll="$undef"
11765                    ;;
11766                 esac
11767         fi
11768         ;;
11769 esac
11770
11771 : see if strtoul exists
11772 set strtoul d_strtoul
11773 eval $inlibc
11774
11775 : see if strtoull exists
11776 set strtoull d_strtoull
11777 eval $inlibc
11778
11779 case "$d_longlong-$d_strtoull" in
11780 "$define-$define")
11781         $cat <<EOM
11782 Checking whether your strtoull() works okay...
11783 EOM
11784         $cat >try.c <<'EOCP'
11785 #include <errno.h>
11786 #ifdef __hpux
11787 #define strtoull __strtoull
11788 #endif
11789 #include <stdio.h>
11790 extern unsigned long long int strtoull(char *s, char **, int); 
11791 static int bad = 0;
11792 int check(char *s, long long eull, int een) {
11793         long long gull;
11794         errno = 0;
11795         gull = strtoull(s, 0, 10);
11796         if (!((gull == eull) && (errno == een)))
11797                 bad++;
11798 }
11799 int main() {
11800         check(" 1",                                       1LL, 0);
11801         check(" 0",                                       0LL, 0);
11802         check("18446744073709551615", 18446744073709551615ULL, 0);
11803         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11804         if (!bad)
11805                 printf("ok\n");
11806 }
11807 EOCP
11808         set try
11809         if eval $compile; then
11810                 case "`./try`" in
11811                 ok) echo "Your strtoull() seems to be working okay." ;;
11812                 *) cat <<EOM >&4
11813 Your strtoull() doesn't seem to be working okay.
11814 EOM
11815                    d_strtoull="$undef"
11816                    ;;
11817                 esac
11818         fi
11819         ;;
11820 esac
11821
11822 : see if strtouq exists
11823 set strtouq d_strtouq
11824 eval $inlibc
11825
11826 : see if strxfrm exists
11827 set strxfrm d_strxfrm
11828 eval $inlibc
11829
11830 : see if symlink exists
11831 set symlink d_symlink
11832 eval $inlibc
11833
11834 : see if syscall exists
11835 set syscall d_syscall
11836 eval $inlibc
11837
11838 : see if sysconf exists
11839 set sysconf d_sysconf
11840 eval $inlibc
11841
11842 : see if system exists
11843 set system d_system
11844 eval $inlibc
11845
11846 : see if tcgetpgrp exists
11847 set tcgetpgrp d_tcgetpgrp
11848 eval $inlibc
11849
11850 : see if tcsetpgrp exists
11851 set tcsetpgrp d_tcsetpgrp
11852 eval $inlibc
11853
11854 : see if prototype for telldir is available
11855 echo " "
11856 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11857 eval $hasproto
11858
11859 : see if this is a sys/times.h system
11860 set sys/times.h i_systimes
11861 eval $inhdr
11862
11863 : see if times exists
11864 echo " "
11865 if set times val -f d_times; eval $csym; $val; then
11866         echo 'times() found.' >&4
11867         d_times="$define"
11868         inc=''
11869         case "$i_systimes" in
11870         "$define") inc='sys/times.h';;
11871         esac
11872         rp="What is the type returned by times() on this system?"
11873         set clock_t clocktype long stdio.h sys/types.h $inc
11874         eval $typedef_ask
11875 else
11876         echo 'times() NOT found, hope that will do.' >&4
11877         d_times="$undef"
11878         clocktype='int'
11879 fi
11880
11881 : see if truncate exists
11882 set truncate d_truncate
11883 eval $inlibc
11884
11885 : see if tzname[] exists
11886 echo " "
11887 if set tzname val -a d_tzname; eval $csym; $val; then
11888         val="$define"
11889         echo 'tzname[] found.' >&4
11890 else
11891         val="$undef"
11892         echo 'tzname[] NOT found.' >&4
11893 fi
11894 set d_tzname
11895 eval $setvar
11896
11897 : see if umask exists
11898 set umask d_umask
11899 eval $inlibc
11900
11901 : see if ustat exists
11902 set ustat d_ustat
11903 eval $inlibc
11904
11905 : backward compatibility for d_hvfork
11906 if test X$d_hvfork != X; then
11907         d_vfork="$d_hvfork"
11908         d_hvfork=''
11909 fi
11910 : see if there is a vfork
11911 val=''
11912 set vfork val
11913 eval $inlibc
11914
11915 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11916 : perl on Solaris 2.x, and probably elsewhere.
11917 case "$val" in
11918 $define)
11919         echo " "
11920         case "$usevfork" in
11921         false) dflt='n';;
11922         *) dflt='y';;
11923         esac
11924         cat <<'EOM'
11925  
11926 Perl can only use a vfork() that doesn't suffer from strict
11927 restrictions on calling functions or modifying global data in
11928 the child.  For example, glibc-2.1 contains such a vfork()
11929 that is unsuitable.  If your system provides a proper fork()
11930 call, chances are that you do NOT want perl to use vfork().
11931
11932 EOM
11933         rp="Do you still want to use vfork()?"
11934         . ./myread
11935         case "$ans" in
11936         y|Y) ;;
11937         *)
11938                 echo "Ok, we won't use vfork()."
11939                 val="$undef"
11940                 ;;
11941         esac
11942         ;;
11943 esac
11944 set d_vfork
11945 eval $setvar
11946 case "$d_vfork" in
11947 $define) usevfork='true';;
11948 *) usevfork='false';;
11949 esac
11950
11951 : see if this is an sysdir system
11952 set sys/dir.h i_sysdir
11953 eval $inhdr
11954
11955 : see if this is an sysndir system
11956 set sys/ndir.h i_sysndir
11957 eval $inhdr
11958
11959 : see if closedir exists
11960 set closedir d_closedir
11961 eval $inlibc
11962
11963 case "$d_closedir" in
11964 "$define")
11965         echo " "
11966         echo "Checking whether closedir() returns a status..." >&4
11967         cat > closedir.c <<EOM
11968 #$i_dirent I_DIRENT             /**/
11969 #$i_sysdir I_SYS_DIR            /**/
11970 #$i_sysndir I_SYS_NDIR          /**/
11971 #$i_systypes I_SYS_TYPES        /**/
11972
11973 #if defined(I_SYS_TYPES)
11974 #include <sys/types.h>
11975 #endif
11976 #if defined(I_DIRENT)
11977 #include <dirent.h>
11978 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11979 #include <sys/dir.h>
11980 #endif
11981 #else
11982 #ifdef I_SYS_NDIR
11983 #include <sys/ndir.h>
11984 #else
11985 #ifdef I_SYS_DIR
11986 #ifdef hp9000s500
11987 #include <ndir.h>       /* may be wrong in the future */
11988 #else
11989 #include <sys/dir.h>
11990 #endif
11991 #endif
11992 #endif
11993 #endif 
11994 int main() { return closedir(opendir(".")); }
11995 EOM
11996         set closedir
11997         if eval $compile_ok; then
11998                 if ./closedir > /dev/null 2>&1 ; then
11999                         echo "Yes, it does."
12000                         val="$undef"
12001                 else
12002                         echo "No, it doesn't."
12003                         val="$define"
12004                 fi
12005         else
12006                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12007                 val="$define"
12008         fi
12009         ;;
12010 *)
12011         val="$undef";
12012         ;;
12013 esac
12014 set d_void_closedir
12015 eval $setvar
12016 $rm -f closedir*
12017 : check for volatile keyword
12018 echo " "
12019 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12020 $cat >try.c <<'EOCP'
12021 int main()
12022 {
12023         typedef struct _goo_struct goo_struct;
12024         goo_struct * volatile goo = ((goo_struct *)0);
12025         struct _goo_struct {
12026                 long long_int;
12027                 int reg_int;
12028                 char char_var;
12029         };
12030         typedef unsigned short foo_t;
12031         char *volatile foo;
12032         volatile int bar;
12033         volatile foo_t blech;
12034         foo = foo;
12035 }
12036 EOCP
12037 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12038         val="$define"
12039         echo "Yup, it does."
12040 else
12041         val="$undef"
12042         echo "Nope, it doesn't."
12043 fi
12044 set d_volatile
12045 eval $setvar
12046 $rm -f try.*
12047
12048 : see if there is a wait4
12049 set wait4 d_wait4
12050 eval $inlibc
12051
12052 : see if waitpid exists
12053 set waitpid d_waitpid
12054 eval $inlibc
12055
12056 : see if wcstombs exists
12057 set wcstombs d_wcstombs
12058 eval $inlibc
12059
12060 : see if wctomb exists
12061 set wctomb d_wctomb
12062 eval $inlibc
12063
12064 : preserve RCS keywords in files with variable substitution, grrr
12065 Date='$Date'
12066 Id='$Id'
12067 Log='$Log'
12068 RCSfile='$RCSfile'
12069 Revision='$Revision'
12070
12071 case "$crosscompile" in
12072 ''|[nN]*) crosscompile="$undef" ;;
12073 esac
12074
12075 case "$osname" in
12076 next|rhapsody|darwin) multiarch="$define" ;;
12077 esac
12078 case "$multiarch" in
12079 ''|[nN]*) multiarch="$undef" ;;
12080 esac
12081
12082 : check for alignment requirements
12083 echo " "
12084 case "$crosscompile$multiarch" in
12085 *$define*)
12086         $cat <<EOM
12087 You seem to be either cross-compiling or doing a multiarchitecture build,
12088 skipping the memory alignment check.
12089
12090 EOM
12091         case "$alignbytes" in
12092         '') alignbytes=8 ;;
12093         esac
12094         ;;
12095 *)
12096         case "$alignbytes" in
12097         '') echo "Checking alignment constraints..." >&4
12098                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12099                         $cat >try.c <<'EOCP'
12100 typedef long double NV;
12101 EOCP
12102                 else
12103                         $cat >try.c <<'EOCP'
12104 typedef double NV;
12105 EOCP
12106                 fi
12107                 $cat >>try.c <<'EOCP'
12108 #include <stdio.h>
12109 struct foobar {
12110         char foo;
12111         NV bar;
12112 } try_algn;
12113 int main()
12114 {
12115     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12116     return(0);
12117 }
12118 EOCP
12119                 set try
12120                 if eval $compile_ok; then
12121                         dflt=`./try`
12122                 else
12123                         dflt='8'
12124                         echo "(I can't seem to compile the test program...)"
12125                 fi
12126                 ;;
12127         *) dflt="$alignbytes"
12128                 ;;
12129         esac
12130         rp="Doubles must be aligned on a how-many-byte boundary?"
12131         . ./myread
12132         alignbytes="$ans"
12133         $rm -f try.c try
12134         ;;
12135 esac
12136
12137
12138 : set the base revision
12139 baserev=5.0
12140
12141 : check for ordering of bytes in a long
12142 echo " "
12143 case "$crosscompile$multiarch" in
12144 *$define*)
12145         $cat <<EOM
12146 You seem to be either cross-compiling or doing a multiarchitecture build,
12147 skipping the byteorder check.
12148
12149 EOM
12150         byteorder='0xffff'
12151         ;;
12152 *)
12153         case "$byteorder" in
12154         '')
12155                 $cat <<'EOM'
12156 In the following, larger digits indicate more significance.  A big-endian
12157 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12158 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12159 machines may have weird orders like 3412.  A Cray will report 87654321,
12160 an Alpha will report 12345678. If the test program works the default is
12161 probably right.
12162 I'm now running the test program...
12163 EOM
12164                 $cat >try.c <<'EOCP'
12165 #include <stdio.h>
12166 int main()
12167 {
12168         int i;
12169         union {
12170                 unsigned long l;
12171                 char c[sizeof(long)];
12172         } u;
12173
12174         if (sizeof(long) > 4)
12175                 u.l = (0x08070605L << 32) | 0x04030201L;
12176         else
12177                 u.l = 0x04030201L;
12178         for (i = 0; i < sizeof(long); i++)
12179                 printf("%c", u.c[i]+'0');
12180         printf("\n");
12181         exit(0);
12182 }
12183 EOCP
12184                 xxx_prompt=y
12185                 set try
12186                 if eval $compile && ./try > /dev/null; then
12187                         dflt=`./try`
12188                         case "$dflt" in
12189                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12190                                 echo "(The test program ran ok.)"
12191                                 echo "byteorder=$dflt"
12192                                 xxx_prompt=n
12193                         ;;
12194                         ????|????????) echo "(The test program ran ok.)" ;;
12195                         *) echo "(The test program didn't run right for some reason.)" ;;
12196                         esac
12197                 else
12198                         dflt='4321'
12199                         cat <<'EOM'
12200 (I can't seem to compile the test program.  Guessing big-endian...)
12201 EOM
12202                 fi
12203                 case "$xxx_prompt" in
12204                 y)
12205                         rp="What is the order of bytes in a long?"
12206                         . ./myread
12207                         byteorder="$ans"
12208                         ;;
12209                 *)      byteorder=$dflt
12210                         ;;
12211                 esac
12212                 ;;
12213         esac
12214         $rm -f try.c try
12215         ;;
12216 esac
12217
12218
12219 : how do we catenate cpp tokens here?
12220 echo " "
12221 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12222 $cat >cpp_stuff.c <<'EOCP'
12223 #define RCAT(a,b)a/**/b
12224 #define ACAT(a,b)a ## b
12225 RCAT(Rei,ser)
12226 ACAT(Cir,cus)
12227 EOCP
12228 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12229 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12230         echo "Oh!  Smells like ANSI's been here." >&4
12231         echo "We can catify or stringify, separately or together!"
12232         cpp_stuff=42
12233 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12234         echo "Ah, yes!  The good old days!" >&4
12235         echo "However, in the good old days we don't know how to stringify and"
12236         echo "catify at the same time."
12237         cpp_stuff=1
12238 else
12239         $cat >&4 <<EOM
12240 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12241 to have to edit the values of CAT[2-5] in config.h...
12242 EOM
12243         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12244 fi
12245 $rm -f cpp_stuff.*
12246
12247 : see if this is a db.h system
12248 set db.h i_db
12249 eval $inhdr
12250
12251 case "$i_db" in
12252 $define)
12253         : Check db version.
12254         echo " "
12255         echo "Checking Berkeley DB version ..." >&4
12256         $cat >try.c <<EOCP
12257 #$d_const HASCONST
12258 #ifndef HASCONST
12259 #define const
12260 #endif
12261 #include <sys/types.h>
12262 #include <stdio.h>
12263 #include <db.h>
12264 int main()
12265 {
12266 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12267     int Major, Minor, Patch ;
12268     unsigned long Version ;
12269     (void)db_version(&Major, &Minor, &Patch) ;
12270     printf("You have Berkeley DB Version 2 or greater\n");
12271
12272     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12273                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12274     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12275                 Major, Minor, Patch) ;
12276
12277     /* check that db.h & libdb are compatible */
12278     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12279         printf("db.h and libdb are incompatible\n") ;
12280         exit(3);        
12281     }
12282
12283     printf("db.h and libdb are compatible\n") ;
12284
12285     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12286                 + DB_VERSION_PATCH ;
12287
12288     /* needs to be >= 2.3.4 */
12289     if (Version < 2003004) {
12290     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12291         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12292         exit(2);        
12293     }
12294
12295     exit(0);
12296 #else
12297 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12298     printf("You have Berkeley DB Version 1\n");
12299     exit(0);    /* DB version < 2: the coast is clear. */
12300 #else
12301     exit(1);    /* <db.h> not Berkeley DB? */
12302 #endif
12303 #endif
12304 }
12305 EOCP
12306         set try
12307         if eval $compile_ok && ./try; then
12308                 echo 'Looks OK.' >&4
12309         else
12310                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12311                 i_db=$undef
12312                 case " $libs " in
12313                 *"-ldb "*)
12314                         : Remove db from list of libraries to use
12315                         echo "Removing unusable -ldb from library list" >&4
12316                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12317                         shift
12318                         libs="$*"
12319                         echo "libs = $libs" >&4
12320                         ;;
12321                 esac
12322         fi
12323         $rm -f try.*
12324         ;;
12325 esac
12326
12327 case "$i_db" in
12328 define)
12329         : Check the return type needed for hash 
12330         echo " "
12331         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12332         $cat >try.c <<EOCP
12333 #$d_const HASCONST
12334 #ifndef HASCONST
12335 #define const
12336 #endif
12337 #include <sys/types.h>
12338 #include <db.h>
12339
12340 #ifndef DB_VERSION_MAJOR
12341 u_int32_t hash_cb (ptr, size)
12342 const void *ptr;
12343 size_t size;
12344 {
12345 }
12346 HASHINFO info;
12347 int main()
12348 {
12349         info.hash = hash_cb;
12350 }
12351 #endif
12352 EOCP
12353         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12354                 if $contains warning try.out >>/dev/null 2>&1 ; then
12355                         db_hashtype='int'
12356                 else
12357                         db_hashtype='u_int32_t'
12358                 fi
12359         else
12360                 : XXX Maybe we should just give up here.
12361                 db_hashtype=u_int32_t
12362                 $cat try.out >&4
12363                 echo "Help:  I can't seem to compile the db test program." >&4
12364                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12365         fi
12366         $rm -f try.*
12367         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12368         ;;
12369 *)      db_hashtype=u_int32_t
12370         ;;
12371 esac
12372 case "$i_db" in
12373 define)
12374         : Check the return type needed for prefix 
12375         echo " "
12376         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12377         cat >try.c <<EOCP
12378 #$d_const HASCONST
12379 #ifndef HASCONST
12380 #define const
12381 #endif
12382 #include <sys/types.h>
12383 #include <db.h>
12384
12385 #ifndef DB_VERSION_MAJOR
12386 size_t prefix_cb (key1, key2)
12387 const DBT *key1;
12388 const DBT *key2;
12389 {
12390 }
12391 BTREEINFO info;
12392 int main()
12393 {
12394         info.prefix = prefix_cb;
12395 }
12396 #endif
12397 EOCP
12398         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12399                 if $contains warning try.out >>/dev/null 2>&1 ; then
12400                         db_prefixtype='int'
12401                 else
12402                         db_prefixtype='size_t'
12403                 fi
12404         else
12405                 db_prefixtype='size_t'
12406                 : XXX Maybe we should just give up here.
12407                 $cat try.out >&4
12408                 echo "Help:  I can't seem to compile the db test program." >&4
12409                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12410         fi
12411         $rm -f try.*
12412         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12413         ;;
12414 *)      db_prefixtype='size_t'
12415         ;;
12416 esac
12417
12418 : check for void type
12419 echo " "
12420 echo "Checking to see how well your C compiler groks the void type..." >&4
12421 case "$voidflags" in
12422 '')
12423         $cat >try.c <<'EOCP'
12424 #if TRY & 1
12425 void sub() {
12426 #else
12427 sub() {
12428 #endif
12429         extern void moo();      /* function returning void */
12430         void (*goo)();          /* ptr to func returning void */
12431 #if TRY & 8
12432         void *hue;              /* generic ptr */
12433 #endif
12434 #if TRY & 2
12435         void (*foo[10])();
12436 #endif
12437
12438 #if TRY & 4
12439         if(goo == moo) {
12440                 exit(0);
12441         }
12442 #endif
12443         exit(0);
12444 }
12445 int main() { sub(); }
12446 EOCP
12447         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12448                 voidflags=$defvoidused
12449         echo "Good.  It appears to support void to the level $package wants.">&4
12450                 if $contains warning .out >/dev/null 2>&1; then
12451                         echo "However, you might get some warnings that look like this:"
12452                         $cat .out
12453                 fi
12454         else
12455 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12456                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12457                         echo "It supports 1..."
12458                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12459                                 echo "It also supports 2..."
12460                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12461                                         voidflags=7
12462                                         echo "And it supports 4 but not 8 definitely."
12463                                 else
12464                                         echo "It doesn't support 4..."
12465                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12466                                                 voidflags=11
12467                                                 echo "But it supports 8."
12468                                         else
12469                                                 voidflags=3
12470                                                 echo "Neither does it support 8."
12471                                         fi
12472                                 fi
12473                         else
12474                                 echo "It does not support 2..."
12475                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12476                                         voidflags=13
12477                                         echo "But it supports 4 and 8."
12478                                 else
12479                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12480                                                 voidflags=5
12481                                                 echo "And it supports 4 but has not heard about 8."
12482                                         else
12483                                                 echo "However it supports 8 but not 4."
12484                                         fi
12485                                 fi
12486                         fi
12487                 else
12488                         echo "There is no support at all for void."
12489                         voidflags=0
12490                 fi
12491         fi
12492 esac
12493 case "$voidflags" in
12494 "$defvoidused") ;;
12495 *)      $cat >&4 <<'EOM'
12496   Support flag bits are:
12497     1: basic void declarations.
12498     2: arrays of pointers to functions returning void.
12499     4: operations between pointers to and addresses of void functions.
12500     8: generic void pointers.
12501 EOM
12502         dflt="$voidflags";
12503         rp="Your void support flags add up to what?"
12504         . ./myread
12505         voidflags="$ans"
12506         ;;
12507 esac
12508 $rm -f try.* .out
12509
12510
12511 : How can we generate normalized random numbers ?
12512 echo " "
12513 echo "Looking for a random number function..." >&4
12514 case "$randfunc" in
12515 '')
12516         if set drand48 val -f; eval $csym; $val; then
12517                 dflt="drand48"
12518                 echo "Good, found drand48()." >&4
12519         elif set random val -f; eval $csym; $val; then
12520                 dflt="random"
12521                 echo "OK, found random()." >&4
12522         else
12523                 dflt="rand"
12524                 echo "Yick, looks like I have to use rand()." >&4
12525         fi
12526         echo " "
12527         ;;
12528 *)
12529         dflt="$randfunc"
12530         ;;
12531 esac
12532 cont=true
12533
12534 case "$ccflags" in
12535 *-Dmy_rand=*|*-Dmy_srand=*)
12536         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12537         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12538         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12539         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12540         ;;
12541 esac
12542
12543 while $test "$cont"; do
12544         rp="Use which function to generate random numbers?"
12545         . ./myread
12546         if $test "$ans" = "$dflt"; then
12547                 : null
12548         else
12549                 randbits=''
12550         fi
12551         randfunc="$ans"
12552         if set $ans val -f; eval $csym; $val; then
12553                 cont=''
12554         else
12555                 dflt=y
12556                 rp="I cannot find function $ans. Use that name anyway?"
12557                 . ./myread
12558                 dflt=rand
12559                 case "$ans" in
12560                         [yY]*) cont='';;
12561                 esac
12562         fi
12563         case "$cont" in
12564         '')
12565                 case "$randfunc" in
12566                 drand48)
12567                         drand01="drand48()"
12568                         seedfunc="srand48"
12569                         randbits=48
12570                         randseedtype=long
12571                         ;;
12572                 rand|random)
12573                         case "$randbits" in
12574                         '')
12575 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12576                                 $cat >try.c <<EOCP
12577 #$i_unistd I_UNISTD
12578 #$i_stdlib I_STDLIB
12579 #include <stdio.h>
12580 #ifdef I_UNISTD
12581 #  include <unistd.h>
12582 #endif
12583 #ifdef I_STDLIB
12584 #  include <stdlib.h>
12585 #endif
12586 int main()
12587 {
12588         register int i;
12589         register unsigned long tmp;
12590         register unsigned long max = 0L;
12591
12592         for (i = 1000; i; i--) {
12593                 tmp = (unsigned long) $randfunc();
12594                 if (tmp > max) max = tmp;
12595         }
12596         for (i = 0; max; i++)
12597                 max /= 2;
12598         printf("%d\n",i);
12599 }
12600 EOCP
12601                                 set try
12602                                 if eval $compile_ok; then
12603                                         dflt=`try`
12604                                 else
12605                                         dflt='?'
12606                                         echo "(I can't seem to compile the test program...)"
12607                                 fi
12608                                 ;;
12609                         *)
12610                                 dflt="$randbits"
12611                                 ;;
12612                         esac
12613                         rp="How many bits does your $randfunc() function produce?"
12614                         . ./myread
12615                         randbits="$ans"
12616                         $rm -f try.c try
12617                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12618                         seedfunc="s$randfunc"
12619                         randseedtype=unsigned
12620                         ;;
12621                 *)
12622                         dflt="31"
12623                         rp="How many bits does your $randfunc() function produce?"
12624                         . ./myread
12625                         randbits="$ans"
12626                         seedfunc="s$randfunc"
12627                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12628                         if set $seedfunc val -f; eval $csym; $val; then
12629                                 echo "(Using $seedfunc() to seed random generator)"
12630                         else
12631                                 echo "(Warning: no $seedfunc() to seed random generator)"
12632                                 seedfunc=rand
12633                         fi
12634                         randseedtype=unsigned
12635                         ;;
12636                 esac
12637                 ;;
12638         esac
12639 done
12640
12641 echo " "
12642 echo "Determining whether or not we are on an EBCDIC system..." >&4
12643 $cat >tebcdic.c <<'EOM'
12644 int main()
12645 {
12646   if ('M'==0xd4) return 0;
12647   return 1;
12648 }
12649 EOM
12650
12651 val=$undef
12652 set tebcdic
12653 if eval $compile_ok; then
12654         if ./tebcdic; then
12655                 echo "You have EBCDIC." >&4
12656                 val="$define"
12657         else
12658                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12659         fi
12660 else
12661         echo "I'm unable to compile the test program." >&4
12662         echo "I'll assume ASCII or some ISO Latin." >&4
12663 fi
12664 $rm -f tebcdic.c tebcdic
12665 set ebcdic
12666 eval $setvar
12667
12668 echo " "
12669 $cat >&4 <<EOM
12670 Checking how to flush all pending stdio output...
12671 EOM
12672 # I only know how to find the first 32 possibly open files on SunOS.
12673 # See also hints/sunos_4_1.sh and util.c  --AD
12674 case "$osname" in
12675 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12676 esac
12677 $cat >>try.c <<EOCP
12678 #include <stdio.h>
12679 #$i_unistd I_UNISTD
12680 #ifdef I_UNISTD
12681 # include <unistd.h>
12682 #endif
12683 #$d_sysconf HAS_SYSCONF
12684 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12685 #ifdef HAS_STDIO_STREAM_ARRAY
12686 # define STDIO_STREAM_ARRAY $stdio_stream_array
12687 #endif
12688 int main() {
12689   FILE* p = fopen("try.out", "w");
12690 #ifdef TRY_FPUTC
12691   fputc('x', p);
12692 #else
12693 # ifdef TRY_FPRINTF
12694   fprintf(p, "x");
12695 # endif
12696 #endif
12697 #ifdef TRY_FFLUSH_NULL
12698   fflush(NULL);
12699 #endif
12700 #ifdef TRY_FFLUSH_ALL
12701   {
12702     long open_max = -1;
12703 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12704     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12705 # else
12706 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12707     open_max = sysconf(_SC_OPEN_MAX);
12708 #  else
12709 #   ifdef FOPEN_MAX
12710     open_max = FOPEN_MAX;
12711 #   else
12712 #    ifdef OPEN_MAX
12713     open_max = OPEN_MAX;
12714 #    else
12715 #     ifdef _NFILE
12716     open_max = _NFILE;
12717 #     endif
12718 #    endif
12719 #   endif
12720 #  endif
12721 # endif 
12722 # ifdef HAS_STDIO_STREAM_ARRAY
12723     if (open_max > 0) {
12724       long i;
12725       for (i = 0; i < open_max; i++)
12726             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12727                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12728                 STDIO_STREAM_ARRAY[i]._flag)
12729                 fflush(&STDIO_STREAM_ARRAY[i]);
12730     }   
12731   }
12732 # endif
12733 #endif
12734   _exit(42);
12735 }
12736 EOCP
12737 : first we have to find out how _not_ to flush
12738 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12739     output=''
12740     set try -DTRY_FPUTC
12741     if eval $compile; then
12742             $rm -f try.out
12743             ./try$exe_ext 2>/dev/null
12744             if $test ! -s try.out -a "X$?" = X42; then
12745                 output=-DTRY_FPUTC
12746             fi
12747     fi
12748     case "$output" in
12749     '')
12750             set try -DTRY_FPRINTF
12751             $rm -f try.out
12752             if eval $compile; then
12753                     $rm -f try.out
12754                     ./try$exe_ext 2>/dev/null
12755                     if $test ! -s try.out -a "X$?" = X42; then
12756                         output=-DTRY_FPRINTF
12757                     fi
12758             fi
12759         ;;
12760     esac
12761 fi
12762 : check for fflush NULL behaviour
12763 case "$fflushNULL" in
12764 '')     set try -DTRY_FFLUSH_NULL $output
12765         if eval $compile; then
12766                 $rm -f try.out
12767                 ./try$exe_ext 2>/dev/null
12768                 code="$?"
12769                 if $test -s try.out -a "X$code" = X42; then
12770                         fflushNULL="`$cat try.out`"
12771                 else
12772                         if $test "X$code" != X42; then
12773                                 $cat >&4 <<EOM
12774 (If this test failed, don't worry, we'll try another method shortly.)
12775 EOM
12776                         fi
12777                 fi
12778         fi
12779         $rm -f core try.core core.try.*
12780         case "$fflushNULL" in
12781         x)      $cat >&4 <<EOM
12782 Your fflush(NULL) works okay for output streams.
12783 Let's see if it clobbers input pipes...
12784 EOM
12785 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12786 # bug that improperly flushes the input end of pipes.  So we avoid the
12787 # autoflush on fork/system/exec support for now. :-(
12788 $cat >tryp.c <<EOCP
12789 #include <stdio.h>
12790 int
12791 main(int argc, char **argv)
12792 {
12793     char buf[1024];
12794     int i;
12795     char *bp = buf;
12796     while (1) {
12797         while ((i = getc(stdin)) != -1
12798                && (*bp++ = i) != '\n'
12799                && bp < &buf[1024])
12800         /* DO NOTHING */ ;
12801         *bp = '\0';
12802         fprintf(stdout, "%s", buf);
12803         fflush(NULL);
12804         if (i == -1)
12805             return 0;
12806         bp = buf;
12807     }
12808 }
12809 EOCP
12810                 fflushNULL="$define"
12811                 set tryp
12812                 if eval $compile; then
12813                     $rm -f tryp.out
12814                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12815                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12816                        $cat >&4 <<EOM
12817 fflush(NULL) seems to behave okay with input streams.
12818 EOM
12819                         fflushNULL="$define"
12820                     else
12821                         $cat >&4 <<EOM
12822 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12823 EOM
12824                         fflushNULL="$undef"
12825                     fi
12826                 fi
12827                 $rm -f core tryp.c tryp.core core.tryp.*
12828                 ;;
12829         '')     $cat >&4 <<EOM
12830 Your fflush(NULL) isn't working (contrary to ANSI C).
12831 EOM
12832                 fflushNULL="$undef"
12833                 ;;
12834         *)      $cat >&4 <<EOM
12835 Cannot figure out whether your fflush(NULL) works or not.
12836 I'm assuming it doesn't (contrary to ANSI C).
12837 EOM
12838                 fflushNULL="$undef"
12839                 ;;
12840         esac
12841         ;;
12842 $define|true|[yY]*)
12843         fflushNULL="$define"
12844         ;;
12845 *)
12846         fflushNULL="$undef"
12847         ;;
12848 esac
12849 : check explicit looping only if NULL did not work, and if the pipe
12850 : bug does not show up on an explicit flush too
12851 case "$fflushNULL" in
12852 "$undef")
12853         $cat >tryp.c <<EOCP
12854 #include <stdio.h>
12855 int
12856 main(int argc, char **argv)
12857 {
12858     char buf[1024];
12859     int i;
12860     char *bp = buf;
12861     while (1) {
12862         while ((i = getc(stdin)) != -1
12863                && (*bp++ = i) != '\n'
12864                && bp < &buf[1024])
12865         /* DO NOTHING */ ;
12866         *bp = '\0';
12867         fprintf(stdout, "%s", buf);
12868         fflush(stdin);
12869         if (i == -1)
12870             return 0;
12871         bp = buf;
12872     }
12873 }
12874 EOCP
12875         set tryp
12876         if eval $compile; then
12877             $rm -f tryp.out
12878             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12879             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12880                $cat >&4 <<EOM
12881 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12882 EOM
12883                 : now check for fflushall behaviour
12884                 case "$fflushall" in
12885                 '')     set try -DTRY_FFLUSH_ALL $output
12886                         if eval $compile; then
12887                                 $cat >&4 <<EOM
12888 (Now testing the other method--but note that this also may fail.)
12889 EOM
12890                                 $rm -f try.out
12891                                 ./try$exe_ext 2>/dev/null
12892                                 if $test -s try.out -a "X$?" = X42; then
12893                                         fflushall="`$cat try.out`"
12894                                 fi
12895                         fi
12896                         $rm -f core try.core core.try.*
12897                         case "$fflushall" in
12898                         x)      $cat >&4 <<EOM
12899 Whew. Flushing explicitly all the stdio streams works.
12900 EOM
12901                                 fflushall="$define"
12902                                 ;;
12903                         '')     $cat >&4 <<EOM
12904 Sigh. Flushing explicitly all the stdio streams doesn't work.
12905 EOM
12906                                 fflushall="$undef"
12907                                 ;;
12908                         *)      $cat >&4 <<EOM
12909 Cannot figure out whether flushing stdio streams explicitly works or not.
12910 I'm assuming it doesn't.
12911 EOM
12912                                 fflushall="$undef"
12913                                 ;;
12914                         esac
12915                         ;;
12916                 "$define"|true|[yY]*)
12917                         fflushall="$define"
12918                         ;;
12919                 *)
12920                         fflushall="$undef"
12921                         ;;
12922                 esac
12923             else
12924                 $cat >&4 <<EOM
12925 All is futile.  Even fflush(stdin) clobbers input pipes!
12926 EOM
12927                 fflushall="$undef"
12928             fi
12929         else
12930             fflushall="$undef"
12931         fi
12932         $rm -f core tryp.c tryp.core core.tryp.*
12933         ;;
12934 *)      fflushall="$undef"
12935         ;;
12936 esac
12937
12938 case "$fflushNULL$fflushall" in
12939 undefundef)
12940         $cat <<EOM
12941 OK, I give up.  I cannot figure out how to flush pending stdio output.
12942 We won't be flushing handles at all before fork/exec/popen.
12943 EOM
12944         ;;
12945 esac
12946 $rm -f try.* try$exe_ext
12947
12948 : Store the full pathname to the ar program for use in the C program
12949 : Respect a hint or command line value for full_ar.
12950 case "$full_ar" in
12951 '') full_ar=$ar ;;
12952 esac
12953
12954 : Store the full pathname to the sed program for use in the C program
12955 full_sed=$sed
12956
12957 : see what type gids are declared as in the kernel
12958 echo " "
12959 echo "Looking for the type for group ids returned by getgid()."
12960 set gid_t gidtype xxx stdio.h sys/types.h
12961 eval $typedef
12962 case "$gidtype" in
12963 xxx)
12964         xxx=`./findhdr sys/user.h`
12965         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12966         case $1 in
12967         unsigned) dflt="$1 $2" ;;
12968         *) dflt="$1" ;;
12969         esac
12970         ;;
12971 *) dflt="$gidtype";;
12972 esac
12973 case "$gidtype" in
12974 gid_t) echo "gid_t found." ;;
12975 *)      rp="What is the type for group ids returned by getgid()?"
12976         . ./myread
12977         gidtype="$ans"
12978         ;;
12979 esac
12980
12981 echo " "
12982 case "$gidtype" in
12983 *_t) zzz="$gidtype"     ;;
12984 *)   zzz="gid"          ;;
12985 esac
12986 echo "Checking the size of $zzz..." >&4 
12987 cat > try.c <<EOCP
12988 #include <sys/types.h>
12989 #include <stdio.h>
12990 int main() {
12991     printf("%d\n", (int)sizeof($gidtype));
12992     exit(0);
12993 }
12994 EOCP
12995 set try
12996 if eval $compile_ok; then
12997         yyy=`./try`
12998         case "$yyy" in
12999         '')     gidsize=4
13000                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13001                 ;;
13002         *)      gidsize=$yyy
13003                 echo "Your $zzz is $gidsize bytes long."
13004                 ;;
13005         esac
13006 else
13007         gidsize=4
13008         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13009 fi
13010
13011
13012 echo " "
13013 case "$gidtype" in
13014 *_t) zzz="$gidtype"     ;;
13015 *)   zzz="gid"          ;;
13016 esac
13017 echo "Checking the sign of $zzz..." >&4 
13018 cat > try.c <<EOCP
13019 #include <sys/types.h>
13020 #include <stdio.h>
13021 int main() {
13022         $gidtype foo = -1;
13023         if (foo < 0)
13024                 printf("-1\n");
13025         else
13026                 printf("1\n");
13027 }
13028 EOCP
13029 set try
13030 if eval $compile; then
13031         yyy=`./try`
13032         case "$yyy" in
13033         '')     gidsign=1
13034                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13035                 ;;
13036         *)      gidsign=$yyy
13037                 case "$gidsign" in
13038                  1) echo "Your $zzz is unsigned." ;;
13039                 -1) echo "Your $zzz is signed."   ;;
13040                 esac
13041                 ;;
13042         esac
13043 else
13044         gidsign=1
13045         echo "(I can't compile the test program--guessing unsigned.)" >&4
13046 fi
13047
13048
13049 echo " "
13050
13051 if $test X"$quadtype" != X; then
13052
13053 echo "Checking how to print 64-bit integers..." >&4
13054
13055 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13056         $cat >try.c <<'EOCP'
13057 #include <sys/types.h>
13058 #include <stdio.h>
13059 int main() {
13060   int q = 12345678901;
13061   printf("%ld\n", q);
13062 }
13063 EOCP
13064         set try
13065         if eval $compile; then
13066                 yyy=`./try$exe_ext`
13067                 case "$yyy" in
13068                 12345678901)
13069                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13070                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13071                         echo "We will use %d."
13072                         ;;
13073                 esac
13074         fi
13075 fi
13076
13077 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13078         $cat >try.c <<'EOCP'
13079 #include <sys/types.h>
13080 #include <stdio.h>
13081 int main() {
13082   long q = 12345678901;
13083   printf("%ld\n", q);
13084 }
13085 EOCP
13086         set try
13087         if eval $compile; then
13088                 yyy=`./try$exe_ext`
13089                 case "$yyy" in
13090                 12345678901)
13091                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13092                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13093                         echo "We will use %ld."
13094                         ;;
13095                 esac
13096         fi
13097 fi
13098
13099 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13100         $cat >try.c <<'EOCP'
13101 #include <sys/types.h>
13102 #include <inttypes.h>
13103 #include <stdio.h>
13104 int main() {
13105   int64_t q = 12345678901;
13106   printf("%" PRId64 "\n", q);
13107 }
13108 EOCP
13109         set try
13110         if eval $compile; then
13111                 yyy=`./try$exe_ext`
13112                 case "$yyy" in
13113                 12345678901)
13114                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13115                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13116                         echo "We will use the C9X style."
13117                         ;;
13118                 esac
13119         fi
13120 fi
13121
13122 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13123         $cat >try.c <<'EOCP'
13124 #include <sys/types.h>
13125 #include <stdio.h>
13126 int main() {
13127   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13128   printf("%lld\n", q);
13129 }
13130 EOCP
13131         set try
13132         if eval $compile; then
13133                 yyy=`./try$exe_ext`
13134                 case "$yyy" in
13135                 12345678901)
13136                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13137                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13138                         echo "We will use the %lld style."
13139                         ;;
13140                 esac
13141         fi
13142 fi
13143
13144 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13145         $cat >try.c <<EOCP
13146 #include <sys/types.h>
13147 #include <stdio.h>
13148 int main() {
13149   $quadtype q = 12345678901;
13150   printf("%Ld\n", q);
13151 }
13152 EOCP
13153         set try
13154         if eval $compile; then
13155                 yyy=`./try$exe_ext`
13156                 case "$yyy" in
13157                 12345678901)
13158                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13159                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13160                         echo "We will use %Ld."
13161                         ;;
13162                 esac
13163         fi
13164 fi
13165
13166 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13167         $cat >try.c <<EOCP
13168 #include <sys/types.h>
13169 #include <stdio.h>
13170 int main() {
13171   $quadtype q = 12345678901;
13172   printf("%qd\n", q);
13173 }
13174 EOCP
13175         set try
13176         if eval $compile; then
13177                 yyy=`./try$exe_ext`
13178                 case "$yyy" in
13179                 12345678901)
13180                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13181                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13182                         echo "We will use %qd."
13183                         ;;
13184                 esac
13185         fi
13186 fi
13187
13188 if $test X"$sPRId64" = X; then
13189         echo "Cannot figure out how to print 64-bit integers." >&4
13190 fi
13191
13192 $rm -f try try.*
13193
13194 fi
13195
13196 case "$sPRId64" in
13197 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13198         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13199         ;;
13200 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13201         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13202         ;;
13203 esac
13204
13205
13206 echo " "
13207 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13208
13209 if $test X"$ivsize" = X8; then
13210         ivdformat="$sPRId64"
13211         uvuformat="$sPRIu64"
13212         uvoformat="$sPRIo64"
13213         uvxformat="$sPRIx64"
13214 else
13215         if $test X"$ivsize" = X"$longsize"; then
13216                 ivdformat='"ld"'
13217                 uvuformat='"lu"'
13218                 uvoformat='"lo"'
13219                 uvxformat='"lx"'
13220         else
13221                 if $test X"$ivsize" = X"$intsize"; then
13222                         ivdformat='"d"'
13223                         uvuformat='"u"'
13224                         uvoformat='"o"'
13225                         uvxformat='"x"'
13226                 else
13227                         : far out
13228                         if $test X"$ivsize" = X"$shortsize"; then
13229                                 ivdformat='"hd"'
13230                                 uvuformat='"hu"'
13231                                 uvoformat='"ho"'
13232                                 uvxformat='"hx"'
13233                         fi
13234                 fi
13235         fi
13236 fi
13237
13238 case "$ivdformat" in
13239 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13240     exit 1
13241     ;;
13242 esac
13243
13244
13245 echo " "
13246 $echo "Checking the format string to be used for gids..." >&4
13247
13248 case "$gidsign" in
13249 -1)     if $test X"$gidsize" = X"$ivsize"; then
13250                 gidformat="$ivdformat"
13251         else
13252                 if $test X"$gidsize" = X"$longsize"; then
13253                         gidformat='"ld"'
13254                 else
13255                         if $test X"$gidsize" = X"$intsize"; then
13256                                 gidformat='"d"'
13257                         else
13258                                 if $test X"$gidsize" = X"$shortsize"; then
13259                                         gidformat='"hd"'
13260                                 fi
13261                         fi
13262                 fi
13263         fi
13264         ;;
13265 *)      if $test X"$gidsize" = X"$uvsize"; then
13266                 gidformat="$uvuformat"
13267         else
13268                 if $test X"$gidsize" = X"$longsize"; then
13269                         gidformat='"lu"'
13270                 else
13271                         if $test X"$gidsize" = X"$intsize"; then
13272                                 gidformat='"u"'
13273                         else
13274                                 if $test X"$gidsize" = X"$shortsize"; then
13275                                         gidformat='"hu"'
13276                                 fi
13277                         fi
13278                 fi
13279         fi
13280         ;;
13281 esac
13282
13283 : see if getgroups exists
13284 set getgroups d_getgrps
13285 eval $inlibc
13286
13287 : see if setgroups exists
13288 set setgroups d_setgrps
13289 eval $inlibc
13290
13291
13292 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13293 echo " "
13294 case "$d_getgrps$d_setgrps" in
13295 *define*)
13296         case "$groupstype" in
13297         '') dflt="$gidtype" ;;
13298         *)  dflt="$groupstype" ;;
13299         esac
13300         $cat <<EOM
13301 What type of pointer is the second argument to getgroups() and setgroups()?
13302 Usually this is the same as group ids, $gidtype, but not always.
13303
13304 EOM
13305         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13306         . ./myread
13307         groupstype="$ans"
13308         ;;
13309 *)  groupstype="$gidtype";;
13310 esac
13311
13312 echo " "
13313 echo "Checking if your $make program sets \$(MAKE)..." >&4
13314 case "$make_set_make" in
13315 '')
13316         $sed 's/^X //' > testmake.mak << 'EOF'
13317 Xall:
13318 X       @echo 'maketemp="$(MAKE)"'
13319 EOF
13320         case "`$make -f testmake.mak 2>/dev/null`" in
13321         *maketemp=*) make_set_make='#' ;;
13322         *)      make_set_make="MAKE=$make" ;;
13323         esac
13324         $rm -f testmake.mak
13325         ;;
13326 esac
13327 case "$make_set_make" in
13328 '#') echo "Yup, it does.";;
13329 *) echo "Nope, it doesn't.";;
13330 esac
13331
13332 : see what type is used for mode_t
13333 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13334 set mode_t modetype int stdio.h sys/types.h
13335 eval $typedef_ask
13336
13337 : define a fucntion to check prototypes
13338 $cat > protochk <<EOSH
13339 $startsh
13340 cc="$cc"
13341 optimize="$optimize"
13342 ccflags="$ccflags"
13343 prototype="$prototype"
13344 define="$define"
13345 rm=$rm
13346 EOSH
13347
13348 $cat >> protochk <<'EOSH'
13349
13350 $rm -f try.c
13351 foo="$1"
13352 shift
13353 while test $# -ge 2; do
13354         case "$1" in
13355                 $define) echo "#include <$2>" >> try.c ;;
13356                 literal) echo "$2" >> try.c ;;
13357         esac
13358     shift 2
13359 done
13360 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13361 cat >> try.c <<'EOCP'
13362 #ifdef CAN_PROTOTYPE
13363 #define _(args) args
13364 #else
13365 #define _(args) ()
13366 #endif
13367 EOCP
13368 echo "$foo" >> try.c
13369 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13370 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13371 status=$?
13372 $rm -f try.[co]
13373 exit $status
13374 EOSH
13375 chmod +x protochk
13376 $eunicefix protochk
13377
13378 : see what type is used for size_t
13379 rp="What is the type used for the length parameter for string functions?"
13380 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13381 eval $typedef_ask
13382
13383 : check for type of arguments to gethostbyaddr. 
13384 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13385         case "$d_gethbyaddr" in
13386         $define)
13387                 $cat <<EOM
13388
13389 Checking to see what type of arguments are accepted by gethostbyaddr().
13390 EOM
13391                 hdrs="$define sys/types.h
13392                         $d_socket sys/socket.h 
13393                         $i_niin netinet/in.h 
13394                         $i_netdb netdb.h
13395                         $i_unistd unistd.h"
13396                 : The first arg can 'char *' or 'void *'
13397                 : The second arg is some of integral type
13398                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13399                         for yyy in size_t long int; do
13400                                 case "$netdb_host_type" in
13401                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13402                                         if ./protochk "$try" $hdrs; then
13403                                                 echo "Your system accepts $xxx for the first arg."
13404                                                 echo "...and $yyy for the second arg."
13405                                                 netdb_host_type="$xxx"
13406                                                 netdb_hlen_type="$yyy"
13407                                         fi
13408                                         ;;
13409                                 esac
13410                         done
13411                 done
13412                 : In case none of those worked, prompt the user.
13413                 case "$netdb_host_type" in
13414                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13415                         dflt='char *'
13416                         . ./myread
13417                         netdb_host_type=$ans
13418                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13419                         dflt="$sizetype"
13420                         . ./myread
13421                         netdb_hlen_type=$ans
13422                         ;;
13423                 esac
13424                 ;;
13425         *)      : no gethostbyaddr, so pick harmless defaults
13426                 netdb_host_type='char *'
13427                 netdb_hlen_type="$sizetype"
13428                 ;;
13429         esac
13430         # Remove the "const" if needed. -- but then we'll have a 
13431         # prototype clash!
13432         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13433 fi
13434
13435 : check for type of argument to gethostbyname. 
13436 if test "X$netdb_name_type" = X ; then
13437         case "$d_gethbyname" in
13438         $define)
13439                 $cat <<EOM
13440
13441 Checking to see what type of argument is accepted by gethostbyname().
13442 EOM
13443                 hdrs="$define sys/types.h
13444                         $d_socket sys/socket.h 
13445                         $i_niin netinet/in.h 
13446                         $i_netdb netdb.h
13447                         $i_unistd unistd.h"
13448                 for xxx in "const char *" "char *"; do
13449                         case "$netdb_name_type" in
13450                         '')     try="extern struct hostent *gethostbyname($xxx);"
13451                                 if ./protochk "$try" $hdrs; then
13452                                         echo "Your system accepts $xxx."
13453                                         netdb_name_type="$xxx"
13454                                 fi
13455                                 ;;
13456                         esac
13457                 done
13458                 : In case none of those worked, prompt the user.
13459                 case "$netdb_name_type" in
13460                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13461                         dflt='char *'
13462                         . ./myread
13463                         netdb_name_type=$ans
13464                         ;;
13465                 esac
13466                 ;;
13467         *)      : no gethostbyname, so pick harmless default
13468                 netdb_name_type='char *'
13469                 ;;
13470         esac
13471 fi
13472
13473 : check for type of 1st argument to getnetbyaddr. 
13474 if test "X$netdb_net_type" = X ; then
13475         case "$d_getnbyaddr" in
13476         $define)
13477                 $cat <<EOM
13478
13479 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13480 EOM
13481                 hdrs="$define sys/types.h
13482                         $d_socket sys/socket.h 
13483                         $i_niin netinet/in.h 
13484                         $i_netdb netdb.h
13485                         $i_unistd unistd.h"
13486                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13487                         case "$netdb_net_type" in
13488                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13489                                 if ./protochk "$try" $hdrs; then
13490                                         echo "Your system accepts $xxx."
13491                                         netdb_net_type="$xxx"
13492                                 fi
13493                                 ;;
13494                         esac
13495                 done
13496                 : In case none of those worked, prompt the user.
13497                 case "$netdb_net_type" in
13498                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13499                         dflt='long'
13500                         . ./myread
13501                         netdb_net_type=$ans
13502                         ;;
13503                 esac
13504                 ;;
13505         *)      : no getnetbyaddr, so pick harmless default
13506                 netdb_net_type='long'
13507                 ;;
13508         esac
13509 fi
13510 : locate the preferred pager for this system
13511 case "$pager" in
13512 '')
13513         dflt=''
13514         case "$pg" in
13515         /*) dflt=$pg;;
13516         esac
13517         case "$more" in
13518         /*) dflt=$more;;
13519         esac
13520         case "$less" in
13521         /*) dflt=$less;;
13522         esac
13523         case "$dflt" in
13524         '') dflt=/usr/ucb/more;;
13525         esac
13526         ;;
13527 *) dflt="$pager";;
13528 esac
13529 echo " "
13530 fn=f/
13531 rp='What pager is used on your system?'
13532 . ./getfile
13533 pager="$ans"
13534
13535 : see what type pids are declared as in the kernel
13536 rp="What is the type of process ids on this system?"
13537 set pid_t pidtype int stdio.h sys/types.h
13538 eval $typedef_ask
13539
13540 : Find earliest binary compatible site_perl subdirectory perl can use.
13541 case "$bincompat5005" in
13542 "$define") xs_apiversion='5.005' ;;
13543 *) xs_apiversion=$version ;;   # The current site_perl version.
13544 esac
13545 : Find earliest pure perl site_perl subdirectory perl can use.
13546 : The versioned directories started at 5.005.
13547 pm_apiversion='5.005'
13548
13549 : check for length of pointer
13550 echo " "
13551 case "$ptrsize" in
13552 '')
13553         echo "Checking to see how big your pointers are..." >&4
13554         if test "$voidflags" -gt 7; then
13555                 echo '#define VOID_PTR char *' > try.c
13556         else
13557                 echo '#define VOID_PTR void *' > try.c
13558         fi
13559         $cat >>try.c <<'EOCP'
13560 #include <stdio.h>
13561 int main()
13562 {
13563     printf("%d\n", (int)sizeof(VOID_PTR));
13564     exit(0);
13565 }
13566 EOCP
13567         set try
13568         if eval $compile_ok; then
13569                 ptrsize=`./try`
13570                 echo "Your pointers are $ptrsize bytes long."
13571         else
13572                 dflt='4'
13573                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13574                 rp="What is the size of a pointer (in bytes)?"
13575                 . ./myread
13576                 ptrsize="$ans"
13577         fi
13578         ;;
13579 esac
13580 $rm -f try.c try
13581
13582 : see if ar generates random libraries by itself
13583 echo " "
13584 echo "Checking how to generate random libraries on your machine..." >&4
13585 echo 'int bar1() { return bar2(); }' > bar1.c
13586 echo 'int bar2() { return 2; }' > bar2.c
13587 $cat > foo.c <<'EOP'
13588 int main() { printf("%d\n", bar1()); exit(0); }
13589 EOP
13590 $cc $ccflags -c bar1.c >/dev/null 2>&1
13591 $cc $ccflags -c bar2.c >/dev/null 2>&1
13592 $cc $ccflags -c foo.c >/dev/null 2>&1
13593 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13594 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13595         ./foobar >/dev/null 2>&1; then
13596         echo "$ar appears to generate random libraries itself."
13597         orderlib=false
13598         ranlib=":"
13599 elif $ar ts bar$_a >/dev/null 2>&1 &&
13600         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13601         ./foobar >/dev/null 2>&1; then
13602                 echo "a table of contents needs to be added with '$ar ts'."
13603                 orderlib=false
13604                 ranlib="$ar ts"
13605 else
13606         case "$ranlib" in
13607         :) ranlib='';;
13608         '')
13609                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13610                 $test -f $ranlib || ranlib=''
13611                 ;;
13612         esac
13613         if $test -n "$ranlib"; then
13614                 echo "your system has '$ranlib'; we'll use that."
13615                 orderlib=false
13616         else
13617                 echo "your system doesn't seem to support random libraries"
13618                 echo "so we'll use lorder and tsort to order the libraries."
13619                 orderlib=true
13620                 ranlib=":"
13621         fi
13622 fi
13623 $rm -f foo* bar* 
13624
13625 : check for type of arguments to select. 
13626 case "$selecttype" in
13627 '') case "$d_select" in
13628         $define)
13629                 echo " "
13630                 $cat <<EOM
13631 Checking to see what type of arguments are accepted by select().
13632 EOM
13633                 hdrs="$define sys/types.h
13634                         $i_systime sys/time.h 
13635                         $i_sysselct sys/select.h
13636                         $d_socket sys/socket.h"
13637                 : The first arg can be int, unsigned, or size_t
13638                 : The last arg may or may not be 'const'
13639                 val=''
13640                 : void pointer has been seen but using that
13641                 : breaks the selectminbits test
13642                 for xxx in 'fd_set *' 'int *'; do
13643                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13644                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13645                                         case "$val" in
13646                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13647                                                 if ./protochk "$try" $hdrs; then
13648                                                         echo "Your system accepts $xxx."
13649                                                         val="$xxx"
13650                                                 fi
13651                                                 ;;
13652                                         esac
13653                                 done
13654                         done
13655                 done
13656                 case "$val" in
13657                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13658                         case "$d_fd_set" in
13659                                 $define) dflt="fd_set *" ;;
13660                                 *)              dflt="int *" ;;
13661                         esac
13662                         . ./myread
13663                         val=$ans
13664                         ;;
13665                 esac
13666                 selecttype="$val"
13667                 ;;
13668         *)      : no select, so pick a harmless default
13669                 selecttype='int *'
13670                 ;;
13671         esac
13672         ;;
13673 esac
13674
13675 : check for the select 'width'
13676 case "$selectminbits" in
13677 '') case "$d_select" in
13678         $define)
13679                 $cat <<EOM
13680
13681 Checking to see on how many bits at a time your select() operates...
13682 EOM
13683                 $cat >try.c <<EOCP
13684 #include <sys/types.h>
13685 #$i_time I_TIME
13686 #$i_systime I_SYS_TIME
13687 #$i_systimek I_SYS_TIME_KERNEL
13688 #ifdef I_TIME
13689 #   include <time.h>
13690 #endif
13691 #ifdef I_SYS_TIME
13692 #   ifdef I_SYS_TIME_KERNEL
13693 #       define KERNEL
13694 #   endif
13695 #   include <sys/time.h>
13696 #   ifdef I_SYS_TIME_KERNEL
13697 #       undef KERNEL
13698 #   endif
13699 #endif
13700 #$i_sysselct I_SYS_SELECT
13701 #ifdef I_SYS_SELECT
13702 #include <sys/select.h>
13703 #endif
13704 #$d_socket HAS_SOCKET
13705 #ifdef HAS_SOCKET
13706 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13707 #endif
13708 #include <stdio.h>
13709 $selecttype b;
13710 #define S sizeof(*(b))
13711 #define MINBITS 64
13712 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13713 #define NBITS  (NBYTES * 8)
13714 int main() {
13715     char s[NBYTES];
13716     struct timeval t;
13717     int i;
13718     FILE* fp;
13719     int fd;
13720
13721     fclose(stdin);
13722     fp = fopen("try.c", "r");
13723     if (fp == 0)
13724       exit(1);
13725     fd = fileno(fp);
13726     if (fd < 0)
13727       exit(2);
13728     b = ($selecttype)s;
13729     for (i = 0; i < NBITS; i++)
13730         FD_SET(i, b);
13731     t.tv_sec  = 0;
13732     t.tv_usec = 0;
13733     select(fd + 1, b, 0, 0, &t);
13734     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13735     printf("%d\n", i + 1);
13736     return 0;
13737 }
13738 EOCP
13739                 set try
13740                 if eval $compile_ok; then
13741                         selectminbits=`./try`
13742                         case "$selectminbits" in
13743                         '')     cat >&4 <<EOM
13744 Cannot figure out on how many bits at a time your select() operates.
13745 I'll play safe and guess it is 32 bits.
13746 EOM
13747                                 selectminbits=32
13748                                 bits="32 bits"
13749                                 ;;
13750                         1)      bits="1 bit" ;;
13751                         *)      bits="$selectminbits bits" ;;
13752                         esac
13753                         echo "Your select() operates on $bits at a time." >&4
13754                 else
13755                         rp='What is the minimum number of bits your select() operates on?'
13756                         case "$byteorder" in
13757                         1234|12345678)  dflt=32 ;;
13758                         *)              dflt=1  ;;
13759                         esac
13760                         . ./myread
13761                         val=$ans
13762                         selectminbits="$val"
13763                 fi
13764                 $rm -f try.* try
13765                 ;;
13766         *)      : no select, so pick a harmless default
13767                 selectminbits='32'
13768                 ;;
13769         esac
13770         ;;
13771 esac
13772
13773 : Trace out the files included by signal.h, then look for SIGxxx names.
13774 : Remove SIGARRAYSIZE used by HPUX.
13775 : Remove SIGSTKSIZE used by Linux.
13776 : Remove SIGSTKSZ used by Posix.
13777 : Remove SIGTYP void lines used by OS2.
13778 : Some cpps, like os390, dont give the file name anywhere
13779 if [ "X$fieldn" = X ]; then
13780         : Just make some guesses.  We check them later.
13781         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13782 else
13783         xxx=`echo '#include <signal.h>' |
13784         $cppstdin $cppminus $cppflags 2>/dev/null |
13785         $grep '^[       ]*#.*include' | 
13786         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13787 fi
13788 : Check this list of files to be sure we have parsed the cpp output ok.
13789 : This will also avoid potentially non-existent files, such 
13790 : as ../foo/bar.h
13791 xxxfiles=''
13792 for xx in $xxx /dev/null ; do
13793         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13794 done
13795 : If we have found no files, at least try signal.h
13796 case "$xxxfiles" in
13797 '')     xxxfiles=`./findhdr signal.h` ;;
13798 esac
13799 xxx=`awk '
13800 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13801         print substr($2, 4, 20)
13802 }
13803 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13804         print substr($3, 4, 20)
13805 }' $xxxfiles`
13806 : Append some common names just in case the awk scan failed.
13807 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13808 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13809 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13810 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13811 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13812
13813 : generate a few handy files for later
13814 $cat > signal.c <<'EOCP'
13815 #include <sys/types.h>
13816 #include <signal.h>
13817 #include <stdio.h>
13818 int main() {
13819
13820 /* Strange style to avoid deeply-nested #if/#else/#endif */
13821 #ifndef NSIG
13822 #  ifdef _NSIG
13823 #    define NSIG (_NSIG)
13824 #  endif
13825 #endif
13826
13827 #ifndef NSIG
13828 #  ifdef SIGMAX
13829 #    define NSIG (SIGMAX+1)
13830 #  endif
13831 #endif
13832
13833 #ifndef NSIG
13834 #  ifdef SIG_MAX
13835 #    define NSIG (SIG_MAX+1)
13836 #  endif
13837 #endif
13838
13839 #ifndef NSIG
13840 #  ifdef MAXSIG
13841 #    define NSIG (MAXSIG+1)
13842 #  endif
13843 #endif
13844
13845 #ifndef NSIG
13846 #  ifdef MAX_SIG
13847 #    define NSIG (MAX_SIG+1)
13848 #  endif
13849 #endif
13850
13851 #ifndef NSIG
13852 #  ifdef SIGARRAYSIZE
13853 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13854 #  endif
13855 #endif
13856
13857 #ifndef NSIG
13858 #  ifdef _sys_nsig
13859 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13860 #  endif
13861 #endif
13862
13863 /* Default to some arbitrary number that's big enough to get most
13864    of the common signals.
13865 */
13866 #ifndef NSIG
13867 #    define NSIG 50
13868 #endif
13869
13870 printf("NSIG %d\n", NSIG);
13871
13872 #ifndef JUST_NSIG
13873
13874 EOCP
13875
13876 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13877 {
13878         printf "#ifdef SIG"; printf $1; printf "\n"
13879         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13880         printf $1; printf ");\n"
13881         printf "#endif\n"
13882 }
13883 END {
13884         printf "#endif /* JUST_NSIG */\n";
13885         printf "exit(0);\n}\n";
13886 }
13887 ' >>signal.c
13888 $cat >signal.awk <<'EOP'
13889 BEGIN { ndups = 0 }
13890 $1 ~ /^NSIG$/ { nsig = $2 }
13891 ($1 !~ /^NSIG$/) && (NF == 2) {
13892     if ($2 > maxsig) { maxsig = $2 }
13893     if (sig_name[$2]) {
13894         dup_name[ndups] = $1
13895         dup_num[ndups] = $2
13896         ndups++ 
13897     }
13898     else {
13899         sig_name[$2] = $1
13900         sig_num[$2] = $2
13901     }
13902 }
13903 END { 
13904     if (nsig == 0) {
13905         nsig = maxsig + 1
13906     }
13907     printf("NSIG %d\n", nsig);
13908     for (n = 1; n < nsig; n++) {
13909         if (sig_name[n]) {
13910             printf("%s %d\n", sig_name[n], sig_num[n])
13911         }
13912         else {
13913             printf("NUM%d %d\n", n, n) 
13914         }
13915     }
13916     for (n = 0; n < ndups; n++) {
13917         printf("%s %d\n", dup_name[n], dup_num[n])
13918     }
13919 }
13920 EOP
13921 $cat >signal_cmd <<EOS
13922 $startsh
13923 if $test -s signal.lst; then
13924     echo "Using your existing signal.lst file"
13925         exit 0
13926 fi
13927 xxx="$xxx"
13928 EOS
13929 $cat >>signal_cmd <<'EOS'
13930
13931 set signal
13932 if eval $compile_ok; then
13933         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13934 else
13935         echo "(I can't seem be able to compile the whole test program)" >&4
13936         echo "(I'll try it in little pieces.)" >&4
13937         set signal -DJUST_NSIG
13938         if eval $compile_ok; then
13939                 ./signal$_exe > signal.nsg
13940                 $cat signal.nsg
13941         else
13942                 echo "I can't seem to figure out how many signals you have." >&4
13943                 echo "Guessing 50." >&4
13944                 echo 'NSIG 50' > signal.nsg
13945         fi
13946         : Now look at all the signal names, one at a time.
13947         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13948                 $cat > signal.c <<EOCP
13949 #include <sys/types.h>
13950 #include <signal.h>
13951 #include <stdio.h>
13952 int main() {
13953 printf("$xx %d\n", SIG${xx});
13954 return 0;
13955 }
13956 EOCP
13957                 set signal
13958                 if eval $compile; then
13959                         echo "SIG${xx} found."
13960                         ./signal$_exe  >> signal.ls1
13961                 else
13962                         echo "SIG${xx} NOT found."
13963                 fi
13964         done
13965         if $test -s signal.ls1; then
13966                 $cat signal.nsg signal.ls1 |
13967                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13968         fi
13969
13970 fi
13971 if $test -s signal.lst; then
13972         :
13973 else
13974         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13975         echo 'kill -l' >signal
13976         set X `csh -f <signal`
13977         $rm -f signal
13978         shift
13979         case $# in
13980         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13981         esac
13982         echo $@ | $tr ' ' $trnl | \
13983             $awk '{ printf "%s %d\n", $1, ++s; }
13984                   END { printf "NSIG %d\n", ++s }' >signal.lst
13985 fi
13986 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13987 EOS
13988 chmod a+x signal_cmd
13989 $eunicefix signal_cmd
13990
13991 : generate list of signal names
13992 echo " "
13993 case "$sig_name_init" in
13994 '') doinit=yes ;;
13995 *)  case "$sig_num_init" in
13996     ''|*,*) doinit=yes ;;
13997     esac ;;
13998 esac
13999 case "$doinit" in
14000 yes)
14001         echo "Generating a list of signal names and numbers..." >&4
14002         . ./signal_cmd
14003         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14004         sig_name=`$awk 'BEGIN { printf "ZERO " }
14005                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14006         sig_num=`$awk  'BEGIN { printf "0 " }
14007                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14008         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14009                              !/^NSIG/   { printf "\"%s\", ", $1 }
14010                              END        { printf "0\n" }' signal.lst`
14011         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14012                              !/^NSIG/   { printf "%d, ", $2}
14013                              END        { printf "0\n"}' signal.lst`
14014         ;;
14015 esac
14016 echo "The following $sig_count signals are available:"
14017 echo " "
14018 echo $sig_name | $awk \
14019 'BEGIN { linelen = 0 }
14020 {
14021         for (i = 1; i <= NF; i++) {
14022                 name = "SIG" $i " "
14023                 linelen = linelen + length(name)
14024                 if (linelen > 70) {
14025                         printf "\n"
14026                         linelen = length(name)
14027                 }
14028                 printf "%s", name
14029         }
14030         printf "\n"
14031 }'
14032 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14033
14034 echo " "
14035 case "$sizetype" in
14036 *_t) zzz="$sizetype"    ;;
14037 *)   zzz="filesize"     ;;
14038 esac
14039 echo "Checking the size of $zzz..." >&4 
14040 cat > try.c <<EOCP
14041 #include <sys/types.h>
14042 #include <stdio.h>
14043 int main() {
14044     printf("%d\n", (int)sizeof($sizetype));
14045     exit(0);
14046 }
14047 EOCP
14048 set try
14049 if eval $compile_ok; then
14050         yyy=`./try`
14051         case "$yyy" in
14052         '')     sizesize=4
14053                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14054                 ;;
14055         *)      sizesize=$yyy
14056                 echo "Your $zzz size is $sizesize bytes."
14057                 ;;
14058         esac
14059 else
14060         sizesize=4
14061         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14062 fi
14063
14064
14065 : check for socklen_t
14066 echo " "
14067 echo "Checking to see if you have socklen_t..." >&4
14068 $cat >try.c <<EOCP
14069 #include <sys/types.h>
14070 #$d_socket HAS_SOCKET
14071 #ifdef HAS_SOCKET
14072 #include <sys/socket.h>
14073 #endif
14074 int main() { socklen_t x = 16; }
14075 EOCP
14076 set try
14077 if eval $compile; then
14078         val="$define"
14079         echo "You have socklen_t."
14080 else
14081         val="$undef"
14082         echo "You do not have socklen_t."
14083         case "$sizetype" in
14084         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14085         esac
14086 fi
14087 $rm -f try try.*
14088 set d_socklen_t
14089 eval $setvar
14090
14091 : check for type of the size argument to socket calls
14092 case "$d_socket" in
14093 "$define")
14094         $cat <<EOM
14095
14096 Checking to see what type is the last argument of accept().
14097 EOM
14098         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14099         yyy=''
14100         case "$d_socklen_t" in
14101         "$define") yyy="$yyy socklen_t"
14102         esac
14103         yyy="$yyy $sizetype int long unsigned"
14104         for xxx in $yyy; do
14105                 case "$socksizetype" in
14106                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14107                         if ./protochk "$try" $hdrs; then
14108                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14109                                 socksizetype="$xxx"
14110                         fi
14111                         ;;
14112                 esac
14113         done
14114 : In case none of those worked, prompt the user.
14115         case "$socksizetype" in
14116         '')     rp='What is the type for socket address structure sizes?'
14117                 dflt='int'
14118                 . ./myread
14119                 socksizetype=$ans
14120                 ;;
14121         esac
14122         ;;
14123 *)      : no sockets, so pick relatively harmless default
14124         socksizetype='int'
14125         ;;
14126 esac
14127
14128 : see what type is used for signed size_t
14129 set ssize_t ssizetype int stdio.h sys/types.h
14130 eval $typedef
14131 dflt="$ssizetype"
14132 $cat > ssize.c <<EOM
14133 #include <stdio.h>
14134 #include <sys/types.h>
14135 #define Size_t $sizetype
14136 #define SSize_t $dflt
14137 int main()
14138 {
14139         if (sizeof(Size_t) == sizeof(SSize_t))
14140                 printf("$dflt\n");
14141         else if (sizeof(Size_t) == sizeof(int))
14142                 printf("int\n");
14143         else 
14144                 printf("long\n");
14145         exit(0);
14146 }
14147 EOM
14148 echo " "
14149 set ssize
14150 if eval $compile_ok && ./ssize > /dev/null; then
14151         ssizetype=`./ssize`
14152         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14153 else
14154         $cat >&4 <<EOM
14155 Help! I can't compile and run the ssize_t test program: please enlighten me!
14156 (This is probably a misconfiguration in your system or libraries, and
14157 you really ought to fix it.  Still, I'll try anyway.)
14158
14159 I need a type that is the same size as $sizetype, but is guaranteed to
14160 be signed.  Common values are ssize_t, int and long.
14161
14162 EOM
14163         rp="What signed type is the same size as $sizetype?"
14164         . ./myread
14165         ssizetype="$ans"
14166 fi
14167 $rm -f ssize ssize.*
14168
14169 : see what type of char stdio uses.
14170 echo " "
14171 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14172         echo "Your stdio uses unsigned chars." >&4
14173         stdchar="unsigned char"
14174 else
14175         echo "Your stdio uses signed chars." >&4
14176         stdchar="char"
14177 fi
14178
14179 : see if time exists
14180 echo " "
14181 if test "X$d_time" = X -o X"$timetype" = X; then
14182     if set time val -f d_time; eval $csym; $val; then
14183                 echo 'time() found.' >&4
14184                 val="$define"
14185                 rp="What is the type returned by time() on this system?"
14186                 set time_t timetype long stdio.h sys/types.h
14187                 eval $typedef_ask
14188     else
14189                 echo 'time() not found, hope that will do.' >&4
14190                 val="$undef"
14191                 timetype='int';
14192     fi
14193     set d_time
14194     eval $setvar
14195 fi
14196
14197 : see what type uids are declared as in the kernel
14198 echo " "
14199 echo "Looking for the type for user ids returned by getuid()."
14200 set uid_t uidtype xxx stdio.h sys/types.h
14201 eval $typedef
14202 case "$uidtype" in
14203 xxx)
14204         xxx=`./findhdr sys/user.h`
14205         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14206         case $1 in
14207         unsigned) dflt="$1 $2" ;;
14208         *) dflt="$1" ;;
14209         esac
14210         ;;
14211 *) dflt="$uidtype";;
14212 esac
14213 case "$uidtype" in
14214 uid_t)  echo "uid_t found." ;;
14215 *)      rp="What is the type for user ids returned by getuid()?"
14216         . ./myread
14217         uidtype="$ans"
14218         ;;
14219 esac
14220
14221 echo " "
14222 case "$uidtype" in
14223 *_t) zzz="$uidtype"     ;;
14224 *)   zzz="uid"          ;;
14225 esac
14226 echo "Checking the size of $zzz..." >&4 
14227 cat > try.c <<EOCP
14228 #include <sys/types.h>
14229 #include <stdio.h>
14230 int main() {
14231     printf("%d\n", (int)sizeof($uidtype));
14232     exit(0);
14233 }
14234 EOCP
14235 set try
14236 if eval $compile_ok; then
14237         yyy=`./try`
14238         case "$yyy" in
14239         '')     uidsize=4
14240                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14241                 ;;
14242         *)      uidsize=$yyy
14243                 echo "Your $zzz is $uidsize bytes long."
14244                 ;;
14245         esac
14246 else
14247         uidsize=4
14248         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14249 fi
14250
14251 echo " "
14252 case "$uidtype" in
14253 *_t) zzz="$uidtype"     ;;
14254 *)   zzz="uid"          ;;
14255 esac
14256 echo "Checking the sign of $zzz..." >&4
14257 cat > try.c <<EOCP
14258 #include <sys/types.h>
14259 #include <stdio.h>
14260 int main() {
14261         $uidtype foo = -1;
14262         if (foo < 0)
14263                 printf("-1\n");
14264         else
14265                 printf("1\n");
14266 }
14267 EOCP
14268 set try
14269 if eval $compile; then
14270         yyy=`./try`
14271         case "$yyy" in
14272         '')     uidsign=1
14273                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14274                 ;;
14275         *)      uidsign=$yyy
14276                 case "$uidsign" in
14277                  1) echo "Your $zzz is unsigned." ;;
14278                 -1) echo "Your $zzz is signed."   ;;
14279                 esac
14280                 ;;
14281         esac
14282 else
14283         uidsign=1
14284         echo "(I can't compile the test program--guessing unsigned.)" >&4
14285 fi
14286
14287
14288
14289 echo " "
14290 $echo "Checking the format string to be used for uids..." >&4
14291
14292 case "$uidsign" in
14293 -1)     if $test X"$uidsize" = X"$ivsize"; then
14294                 uidformat="$ivdformat"
14295         else
14296                 if $test X"$uidsize" = X"$longsize"; then
14297                         uidformat='"ld"'
14298                 else
14299                         if $test X"$uidsize" = X"$intsize"; then
14300                                 uidformat='"d"'
14301                         else
14302                                 if $test X"$uidsize" = X"$shortsize"; then
14303                                         uidformat='"hd"'
14304                                 fi
14305                         fi
14306                 fi
14307         fi
14308         ;;
14309 *)      if $test X"$uidsize" = X"$uvsize"; then
14310                 uidformat="$uvuformat"
14311         else
14312                 if $test X"$uidsize" = X"$longsize"; then
14313                         uidformat='"lu"'
14314                 else
14315                         if $test X"$uidsize" = X"$intsize"; then
14316                                 uidformat='"u"'
14317                         else
14318                                 if $test X"$uidsize" = X"$shortsize"; then
14319                                         uidformat='"hu"'
14320                                 fi
14321                         fi
14322                 fi
14323         fi
14324         ;;
14325 esac
14326
14327 : see if dbm.h is available
14328 : see if dbmclose exists
14329 set dbmclose d_dbmclose
14330 eval $inlibc
14331
14332 case "$d_dbmclose" in
14333 $define)
14334         set dbm.h i_dbm
14335         eval $inhdr
14336         case "$i_dbm" in
14337         $define)
14338                 val="$undef"
14339                 set i_rpcsvcdbm
14340                 eval $setvar
14341                 ;;
14342         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14343                 eval $inhdr
14344                 ;;
14345         esac
14346         ;;
14347 *)      echo "We won't be including <dbm.h>"
14348         val="$undef"
14349         set i_dbm
14350         eval $setvar
14351         val="$undef"
14352         set i_rpcsvcdbm
14353         eval $setvar
14354         ;;
14355 esac
14356
14357 : see if this is a sys/file.h system
14358 val=''
14359 set sys/file.h val
14360 eval $inhdr
14361
14362 : do we need to include sys/file.h ?
14363 case "$val" in
14364 "$define")
14365         echo " "
14366         if $h_sysfile; then
14367                 val="$define"
14368                 echo "We'll be including <sys/file.h>." >&4
14369         else
14370                 val="$undef"
14371                 echo "We won't be including <sys/file.h>." >&4
14372         fi
14373         ;;
14374 *)
14375         h_sysfile=false
14376         ;;
14377 esac
14378 set i_sysfile
14379 eval $setvar
14380
14381 : see if fcntl.h is there
14382 val=''
14383 set fcntl.h val
14384 eval $inhdr
14385
14386 : see if we can include fcntl.h
14387 case "$val" in
14388 "$define")
14389         echo " "
14390         if $h_fcntl; then
14391                 val="$define"
14392                 echo "We'll be including <fcntl.h>." >&4
14393         else
14394                 val="$undef"
14395                 if $h_sysfile; then
14396         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14397                 else
14398                         echo "We won't be including <fcntl.h>." >&4
14399                 fi
14400         fi
14401         ;;
14402 *)
14403         h_fcntl=false
14404         val="$undef"
14405         ;;
14406 esac
14407 set i_fcntl
14408 eval $setvar
14409
14410 : see if this is a iconv.h system
14411 set iconv.h i_iconv
14412 eval $inhdr
14413
14414 : see if this is a ieeefp.h system
14415 set ieeefp.h i_ieeefp
14416 eval $inhdr
14417
14418 : see if this is a libutil.h system
14419 set libutil.h i_libutil
14420 eval $inhdr
14421
14422 : see if locale.h is available
14423 set locale.h i_locale
14424 eval $inhdr
14425
14426 : see if mach cthreads are available
14427 if test "X$usethreads" = "X$define"; then
14428         set mach/cthreads.h i_machcthr
14429         eval $inhdr
14430 else
14431         i_machcthr="$undef"
14432 fi
14433
14434
14435
14436 : see if this is a math.h system
14437 set math.h i_math
14438 eval $inhdr
14439
14440 : see if this is a mntent.h system
14441 set mntent.h i_mntent
14442 eval $inhdr
14443
14444 : see if ndbm.h is available
14445 set ndbm.h t_ndbm
14446 eval $inhdr
14447 case "$t_ndbm" in
14448 $define)
14449         : see if dbm_open exists
14450         set dbm_open d_dbm_open
14451         eval $inlibc
14452         case "$d_dbm_open" in
14453         $undef)
14454                 t_ndbm="$undef"
14455                 echo "We won't be including <ndbm.h>"
14456                 ;;
14457         esac
14458         ;;
14459 esac
14460 val="$t_ndbm"
14461 set i_ndbm
14462 eval $setvar
14463
14464 : see if net/errno.h is available
14465 val=''
14466 set net/errno.h val
14467 eval $inhdr
14468
14469 : Unfortunately, it causes problems on some systems.  Arrgh.
14470 case "$val" in
14471 $define)
14472         cat > try.c <<'EOM'
14473 #include <stdio.h>
14474 #include <errno.h>
14475 #include <net/errno.h>
14476 int func()
14477 {
14478         return ENOTSOCK;
14479 }
14480 EOM
14481         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14482                 echo "We'll be including <net/errno.h>." >&4
14483         else
14484                 echo "We won't be including <net/errno.h>." >&4
14485                 val="$undef"
14486         fi
14487         $rm -f try.* try
14488         ;;
14489 esac
14490 set i_neterrno
14491 eval $setvar
14492
14493 : see if netinet/tcp.h is available
14494 set netinet/tcp.h i_netinettcp
14495 eval $inhdr
14496
14497 : see if this is a poll.h system
14498 set poll.h i_poll
14499 eval $inhdr
14500
14501 : see if this is a prot.h system
14502 set prot.h i_prot
14503 eval $inhdr
14504
14505 echo " "
14506 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14507 $cat <<'EOSH' > Cppsym.know
14508 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14509 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14510 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14511 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14512 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14513 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14514 bull c cadmus clipper CMU COFF COMPILER_VERSION
14515 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14516 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14517 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14518 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14519 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14520 H3050R H3050RX hbullx20 hcx host_mips
14521 hp200 hp300 hp700 HP700 hp800 hp9000
14522 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14523 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14524 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14525 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14526 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14527 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14528 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14529 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14530 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14531 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14532 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14533 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14534 MATH_HAS_NO_SIDE_EFFECTS
14535 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14536 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14537 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14538 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14539 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14540 NetBSD news1500 news1700 news1800 news1900 news3700
14541 news700 news800 news900 NeXT NLS ns16000 ns32000
14542 ns32016 ns32332 ns32k nsc32000
14543 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14544 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14545 pc532 pdp11 PGC PIC plexus PORTAR posix
14546 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14547 POSIX_C_SOURCE POSIX_SOURCE POWER
14548 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14549 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14550 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14551 sony sony_news sonyrisc sparc sparclite spectrum
14552 stardent stdc STDC_EXT stratos sun sun3 sun386
14553 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14554 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14555 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14556 sysV68 sysV88 Tek4132 Tek4300 titan
14557 tower tower32 tower32_200 tower32_600 tower32_700
14558 tower32_800 tower32_850 tss
14559 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14560 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14561 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14562 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14563 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14564 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14565 z8000
14566 EOSH
14567 # Maybe put other stuff here too.
14568 cat <<EOSH >>Cppsym.know
14569 $osname
14570 EOSH
14571 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14572 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14573 $cat Cppsym.know > Cppsym.c
14574 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14575 $rm -f Cppsym.a Cppsym.b Cppsym.c
14576 cat <<EOSH > Cppsym
14577 $startsh
14578 if $test \$# -gt 0; then
14579     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14580     if $test -s Cppsym.got; then
14581         $rm -f Cppsym.got
14582         exit 0
14583     fi
14584     $rm -f Cppsym.got
14585     exit 1
14586 else
14587     $tr " " "$trnl" | ./Cppsym.try
14588     exit 0
14589 fi
14590 EOSH
14591 chmod +x Cppsym
14592 $eunicefix Cppsym
14593 cat <<EOSH > Cppsym.try
14594 $startsh
14595 cat <<'EOCP' > try.c
14596 #include <stdio.h>
14597 int main() {
14598 EOCP
14599 $awk \\
14600 EOSH
14601 cat <<'EOSH' >> Cppsym.try
14602 'length($1) > 0 {
14603     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
14604     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
14605     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
14606     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
14607 }'       >> try.c
14608 echo '}' >> try.c
14609 EOSH
14610 cat <<EOSH >> Cppsym.try
14611 ccflags="$ccflags"
14612 case "$osname-$gccversion" in
14613 irix-) ccflags="\$ccflags -woff 1178" ;;
14614 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14615 esac
14616 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14617 EOSH
14618 chmod +x Cppsym.try
14619 $eunicefix Cppsym.try
14620 ./Cppsym < Cppsym.know > Cppsym.true
14621 : now check the C compiler for additional symbols
14622 postprocess_cc_v=''
14623 case "$osname" in
14624 aix) postprocess_cc_v="|$tr , ' '" ;;
14625 esac
14626 $cat >ccsym <<EOS
14627 $startsh
14628 $cat >tmp.c <<EOF
14629 extern int foo;
14630 EOF
14631 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14632 do
14633         case "\$i" in
14634         -D*) echo "\$i" | $sed 's/^-D//';;
14635         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14636         esac
14637 done
14638 $rm -f try.c
14639 EOS
14640 postprocess_cc_v=''
14641 chmod +x ccsym
14642 $eunicefix ccsym
14643 ./ccsym > ccsym1.raw
14644 if $test -s ccsym1.raw; then
14645        $sort ccsym1.raw | $uniq >ccsym.raw
14646 else
14647        mv ccsym1.raw ccsym.raw
14648 fi
14649
14650 $awk '/\=/ { print $0; next }
14651         { print $0"=1" }' ccsym.raw >ccsym.list
14652 $awk '/\=/ { print $0; next }
14653         { print $0"=1" }' Cppsym.true >ccsym.true
14654 $comm -13 ccsym.true ccsym.list >ccsym.own
14655 $comm -12 ccsym.true ccsym.list >ccsym.com
14656 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14657 also=''
14658 if $test -z ccsym.raw; then
14659         echo "Your C compiler doesn't seem to define any symbols!" >&4
14660         echo " "
14661         echo "However, your C preprocessor defines the following symbols:"
14662         $cat Cppsym.true
14663         ccsymbols=''
14664         cppsymbols=`$cat Cppsym.true`
14665         cppsymbols=`echo $cppsymbols`
14666         cppccsymbols="$cppsymbols"
14667 else
14668         if $test -s ccsym.com; then
14669                 echo "Your C compiler and pre-processor define these symbols:"
14670                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14671                 also='also '
14672                 symbols='ones'
14673                 cppccsymbols=`$cat ccsym.com`
14674                 cppccsymbols=`echo $cppccsymbols`
14675                 $test "$silent" || sleep 1
14676         fi
14677         if $test -s ccsym.cpp; then
14678                 $test "$also" && echo " "
14679                 echo "Your C pre-processor ${also}defines the following symbols:"
14680                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14681                 also='further '
14682                 cppsymbols=`$cat ccsym.cpp`
14683                 cppsymbols=`echo $cppsymbols`
14684                 $test "$silent" || sleep 1
14685         fi
14686         if $test -s ccsym.own; then
14687                 $test "$also" && echo " "
14688                 echo "Your C compiler ${also}defines the following cpp symbols:"
14689                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14690                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14691                 ccsymbols=`$cat ccsym.own`
14692                 ccsymbols=`echo $ccsymbols`
14693                 $test "$silent" || sleep 1
14694         fi
14695 fi
14696 $rm -f ccsym* Cppsym.*
14697
14698 : see if this is a termio system
14699 val="$undef"
14700 val2="$undef"
14701 val3="$undef"
14702 if $test `./findhdr termios.h`; then
14703         set tcsetattr i_termios
14704         eval $inlibc
14705         val3="$i_termios"
14706 fi
14707 echo " "
14708 case "$val3" in
14709 "$define") echo "You have POSIX termios.h... good!" >&4;;
14710 *) if ./Cppsym pyr; then
14711                 case "`/bin/universe`" in
14712                 ucb) if $test `./findhdr sgtty.h`; then
14713                                 val2="$define"
14714                                 echo "<sgtty.h> found." >&4
14715                         else
14716                                 echo "System is pyramid with BSD universe."
14717                                 echo "<sgtty.h> not found--you could have problems." >&4
14718                         fi;;
14719                 *) if $test `./findhdr termio.h`; then
14720                                 val="$define"
14721                                 echo "<termio.h> found." >&4
14722                         else
14723                                 echo "System is pyramid with USG universe."
14724                                 echo "<termio.h> not found--you could have problems." >&4
14725                         fi;;
14726                 esac
14727         elif ./usg; then
14728                 if $test `./findhdr termio.h`; then
14729                         echo "<termio.h> found." >&4
14730                         val="$define"
14731                 elif $test `./findhdr sgtty.h`; then
14732                         echo "<sgtty.h> found." >&4
14733                         val2="$define"
14734                 else
14735 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14736                 fi
14737         else
14738                 if $test `./findhdr sgtty.h`; then
14739                         echo "<sgtty.h> found." >&4
14740                         val2="$define"
14741                 elif $test `./findhdr termio.h`; then
14742                         echo "<termio.h> found." >&4
14743                         val="$define"
14744                 else
14745 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14746                 fi
14747         fi;;
14748 esac
14749 set i_termio; eval $setvar
14750 val=$val2; set i_sgtty; eval $setvar
14751 val=$val3; set i_termios; eval $setvar
14752
14753 : see if this is a shadow.h system
14754 set shadow.h i_shadow
14755 eval $inhdr
14756
14757 : see if this is a socks.h system
14758 set socks.h i_socks
14759 eval $inhdr
14760
14761 : see if stdarg is available
14762 echo " "
14763 if $test `./findhdr stdarg.h`; then
14764         echo "<stdarg.h> found." >&4
14765         valstd="$define"
14766 else
14767         echo "<stdarg.h> NOT found." >&4
14768         valstd="$undef"
14769 fi
14770
14771 : see if varags is available
14772 echo " "
14773 if $test `./findhdr varargs.h`; then
14774         echo "<varargs.h> found." >&4
14775 else
14776         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14777 fi
14778
14779 : set up the varargs testing programs
14780 $cat > varargs.c <<EOP
14781 #ifdef I_STDARG
14782 #include <stdarg.h>
14783 #endif
14784 #ifdef I_VARARGS
14785 #include <varargs.h>
14786 #endif
14787
14788 #ifdef I_STDARG
14789 int f(char *p, ...)
14790 #else
14791 int f(va_alist)
14792 va_dcl
14793 #endif
14794 {
14795         va_list ap;
14796 #ifndef I_STDARG
14797         char *p;
14798 #endif
14799 #ifdef I_STDARG
14800         va_start(ap,p);
14801 #else
14802         va_start(ap);
14803         p = va_arg(ap, char *);
14804 #endif
14805         va_end(ap);
14806 }
14807 EOP
14808 $cat > varargs <<EOP
14809 $startsh
14810 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14811         echo "true"
14812 else
14813         echo "false"
14814 fi
14815 $rm -f varargs$_o
14816 EOP
14817 chmod +x varargs
14818
14819 : now check which varargs header should be included
14820 echo " "
14821 i_varhdr=''
14822 case "$valstd" in
14823 "$define")
14824         if `./varargs I_STDARG`; then
14825                 val='stdarg.h'
14826         elif `./varargs I_VARARGS`; then
14827                 val='varargs.h'
14828         fi
14829         ;;
14830 *)
14831         if `./varargs I_VARARGS`; then
14832                 val='varargs.h'
14833         fi
14834         ;;
14835 esac
14836 case "$val" in
14837 '')
14838 echo "I could not find the definition for va_dcl... You have problems..." >&4
14839         val="$undef"; set i_stdarg; eval $setvar
14840         val="$undef"; set i_varargs; eval $setvar
14841         ;;
14842 *) 
14843         set i_varhdr
14844         eval $setvar
14845         case "$i_varhdr" in
14846         stdarg.h)
14847                 val="$define"; set i_stdarg; eval $setvar
14848                 val="$undef"; set i_varargs; eval $setvar
14849                 ;;
14850         varargs.h)
14851                 val="$undef"; set i_stdarg; eval $setvar
14852                 val="$define"; set i_varargs; eval $setvar
14853                 ;;
14854         esac
14855         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14856 esac
14857 $rm -f varargs*
14858
14859 : see if stddef is available
14860 set stddef.h i_stddef
14861 eval $inhdr
14862
14863 : see if this is a sunmath.h system
14864 set sunmath.h i_sunmath
14865 eval $inhdr
14866
14867 : see if sys/access.h is available
14868 set sys/access.h i_sysaccess
14869 eval $inhdr
14870
14871 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14872 set sys/filio.h i_sysfilio
14873 eval $inhdr
14874 echo " "
14875 if $test `./findhdr sys/ioctl.h`; then
14876         val="$define"
14877         echo '<sys/ioctl.h> found.' >&4
14878 else
14879         val="$undef"
14880         if $test $i_sysfilio = "$define"; then
14881             echo '<sys/ioctl.h> NOT found.' >&4
14882         else
14883                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14884                 $test $i_termio = "$define" && xxx="termio.h"
14885                 $test $i_termios = "$define" && xxx="termios.h"
14886 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14887         fi
14888 fi
14889 set i_sysioctl
14890 eval $setvar
14891
14892
14893 : see if this is a syslog.h system
14894 set syslog.h i_syslog
14895 eval $inhdr
14896
14897
14898 : see if this is a sys/mode.h system
14899 set sys/mode.h i_sysmode
14900 eval $inhdr
14901
14902 : see if sys/resource.h has to be included
14903 set sys/resource.h i_sysresrc
14904 eval $inhdr
14905
14906 : see if sys/security.h is available
14907 set sys/security.h i_syssecrt
14908 eval $inhdr
14909
14910 : see if this is a sys/statvfs.h system
14911 set sys/statvfs.h i_sysstatvfs
14912 eval $inhdr
14913
14914 : see if this is a sys/uio.h system
14915 set sys/uio.h i_sysuio
14916 eval $inhdr
14917
14918 : see if this is a sys/un.h system
14919 set sys/un.h i_sysun
14920 eval $inhdr
14921
14922
14923 : see if this is a sys/utsname.h system
14924 set sys/utsname.h i_sysutsname
14925 eval $inhdr
14926
14927 : see if this is a syswait system
14928 set sys/wait.h i_syswait
14929 eval $inhdr
14930
14931 : see if this is a ustat.h system
14932 set ustat.h i_ustat
14933 eval $inhdr
14934
14935 : see if this is an utime system
14936 set utime.h i_utime
14937 eval $inhdr
14938
14939 : see if this is a values.h system
14940 set values.h i_values
14941 eval $inhdr
14942
14943 : see if this is a vfork system
14944 case "$d_vfork" in
14945 "$define")
14946         set vfork.h i_vfork
14947         eval $inhdr
14948         ;;
14949 *)
14950         i_vfork="$undef"
14951         ;;
14952 esac
14953
14954 : see if gdbm.h is available
14955 set gdbm.h t_gdbm
14956 eval $inhdr
14957 case "$t_gdbm" in
14958 $define)
14959         : see if gdbm_open exists
14960         set gdbm_open d_gdbm_open
14961         eval $inlibc
14962         case "$d_gdbm_open" in
14963         $undef)
14964                 t_gdbm="$undef"
14965                 echo "We won't be including <gdbm.h>"
14966                 ;;
14967         esac
14968         ;;
14969 esac
14970 val="$t_gdbm"
14971 set i_gdbm
14972 eval $setvar
14973
14974 echo " "
14975 echo "Looking for extensions..." >&4
14976 : If we are using the old config.sh, known_extensions may contain
14977 : old or inaccurate or duplicate values.
14978 known_extensions=''
14979 nonxs_extensions=''
14980 : We do not use find because it might not be available.
14981 : We do not just use MANIFEST because the user may have dropped
14982 : some additional extensions into the source tree and expect them
14983 : to be built.
14984
14985 : Function to recursively find available extensions, ignoring DynaLoader
14986 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14987 find_extensions='
14988     for xxx in *; do
14989        case "$xxx" in
14990            DynaLoader|dynaload) ;;
14991            *)
14992            if $test -f $xxx/$xxx.xs; then
14993                known_extensions="$known_extensions $1$xxx";
14994            elif $test -f $xxx/Makefile.PL; then
14995                nonxs_extensions="$nonxs_extensions $1$xxx";
14996            else
14997                if $test -d $xxx -a $# -lt 10; then
14998                    set $1$xxx/ $*;
14999                    cd $xxx;
15000                    eval $find_extensions;
15001                    cd ..;
15002                    shift;
15003                fi;
15004            fi
15005            ;;
15006        esac;
15007     done'
15008 tdir=`pwd`
15009 cd $rsrc/ext
15010 set X
15011 shift
15012 eval $find_extensions
15013 set X $nonxs_extensions
15014 shift
15015 nonxs_extensions="$*"
15016 set X $known_extensions
15017 shift
15018 known_extensions="$*"
15019 cd $tdir
15020
15021 : Now see which are supported on this system.
15022 avail_ext=''
15023 for xxx in $known_extensions ; do
15024         case "$xxx" in
15025         DB_File|db_file)
15026                 case "$i_db" in
15027                 $define) avail_ext="$avail_ext $xxx" ;;
15028                 esac
15029                 ;;
15030         GDBM_File|gdbm_fil)
15031                 case "$i_gdbm" in 
15032                 $define) avail_ext="$avail_ext $xxx" ;;
15033                 esac
15034                 ;;
15035         NDBM_File|ndbm_fil)
15036                 case "$i_ndbm" in
15037                 $define)
15038                     case "$osname-$use64bitint" in
15039                     hpux-define)
15040                         case "$libs" in
15041                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15042                         esac
15043                         ;;
15044                     *) avail_ext="$avail_ext $xxx" ;;
15045                     esac
15046                     ;;
15047                 esac
15048                 ;;
15049         ODBM_File|odbm_fil) 
15050                 case "${i_dbm}${i_rpcsvcdbm}" in
15051                 *"${define}"*)
15052                     case "$osname-$use64bitint" in
15053                     hpux-define)
15054                         case "$libs" in
15055                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15056                         esac
15057                         ;;
15058                     *) avail_ext="$avail_ext $xxx" ;;
15059                     esac
15060                     ;;
15061                 esac
15062                 ;;
15063         POSIX|posix)
15064                 case "$useposix" in
15065                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15066                 esac
15067                 ;;
15068         Opcode|opcode)
15069                 case "$useopcode" in
15070                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15071                 esac
15072                 ;;
15073         Socket|socket)
15074                 case "$d_socket" in 
15075                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15076                 esac
15077                 ;;
15078         Sys/Syslog|sys/syslog)
15079                 : XXX syslog requires socket
15080                 case "$d_socket" in 
15081                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15082                 esac
15083                 ;;
15084         Thread|thread)
15085                 case "$usethreads" in 
15086                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15087                 esac
15088                 ;;
15089         IPC/SysV|ipc/sysv)
15090                 : XXX Do we need a useipcsysv variable here
15091                 case "${d_msg}${d_sem}${d_shm}" in 
15092                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15093                 esac
15094                 ;;
15095         *)      avail_ext="$avail_ext $xxx"
15096                 ;;
15097         esac
15098 done
15099
15100 set X $avail_ext
15101 shift
15102 avail_ext="$*"
15103
15104 : Now see which nonxs extensions are supported on this system.
15105 : For now assume all are.
15106 nonxs_ext=''
15107 for xxx in $nonxs_extensions ; do
15108         case "$xxx" in
15109         *)      nonxs_ext="$nonxs_ext $xxx"
15110                 ;;
15111         esac
15112 done
15113
15114 set X $nonxs_ext
15115 shift
15116 nonxs_ext="$*"
15117
15118 case $usedl in
15119 $define)
15120         $cat <<EOM
15121 A number of extensions are supplied with $package.  You may choose to
15122 compile these extensions for dynamic loading (the default), compile
15123 them into the $package executable (static loading), or not include
15124 them at all.  Answer "none" to include no extensions.
15125 Note that DynaLoader is always built and need not be mentioned here.
15126
15127 EOM
15128         case "$dynamic_ext" in
15129         '') dflt="$avail_ext" ;;
15130         *)      dflt="$dynamic_ext"
15131                 # Perhaps we are reusing an old out-of-date config.sh.
15132                 case "$hint" in
15133                 previous)
15134                         if test X"$dynamic_ext" != X"$avail_ext"; then
15135                                 $cat <<EOM
15136 NOTICE:  Your previous config.sh list may be incorrect. 
15137 The extensions now available to you are 
15138         ${avail_ext}
15139 but the default list from your previous config.sh is
15140         ${dynamic_ext} 
15141
15142 EOM
15143                         fi
15144                         ;;
15145                 esac
15146                 ;;
15147         esac
15148         case "$dflt" in
15149         '')     dflt=none;;
15150         esac
15151         rp="What extensions do you wish to load dynamically?"
15152         . ./myread
15153         case "$ans" in
15154         none) dynamic_ext=' ' ;;
15155         *) dynamic_ext="$ans" ;;
15156         esac
15157
15158         case "$static_ext" in
15159         '')
15160                 : Exclude those already listed in dynamic linking
15161                 dflt=''
15162                 for xxx in $avail_ext; do
15163                         case " $dynamic_ext " in
15164                         *" $xxx "*) ;;
15165                         *) dflt="$dflt $xxx" ;;
15166                         esac
15167                 done
15168                 set X $dflt
15169                 shift
15170                 dflt="$*"
15171                 ;;
15172         *)  dflt="$static_ext" 
15173                 ;;
15174         esac
15175
15176         case "$dflt" in
15177         '')     dflt=none;;
15178         esac
15179         rp="What extensions do you wish to load statically?"
15180         . ./myread
15181         case "$ans" in
15182         none) static_ext=' ' ;;
15183         *) static_ext="$ans" ;;
15184         esac
15185         ;;
15186 *)
15187         $cat <<EOM
15188 A number of extensions are supplied with $package.  Answer "none" 
15189 to include no extensions. 
15190 Note that DynaLoader is always built and need not be mentioned here.
15191
15192 EOM
15193         case "$static_ext" in
15194         '') dflt="$avail_ext" ;;
15195         *)      dflt="$static_ext"
15196                 # Perhaps we are reusing an old out-of-date config.sh.
15197                 case "$hint" in
15198                 previous)
15199                         if test X"$static_ext" != X"$avail_ext"; then
15200                                 $cat <<EOM
15201 NOTICE:  Your previous config.sh list may be incorrect. 
15202 The extensions now available to you are 
15203         ${avail_ext}
15204 but the default list from your previous config.sh is
15205         ${static_ext} 
15206
15207 EOM
15208                         fi
15209                         ;;
15210                 esac
15211                 ;;
15212         esac
15213         : Exclude those that are not xs extensions
15214         case "$dflt" in
15215         '')     dflt=none;;
15216         esac
15217         rp="What extensions do you wish to include?"
15218         . ./myread
15219         case "$ans" in
15220         none) static_ext=' ' ;;
15221         *) static_ext="$ans" ;;
15222         esac
15223         ;;
15224 esac
15225
15226 set X $dynamic_ext $static_ext $nonxs_ext
15227 shift
15228 extensions="$*"
15229
15230 : Remove build directory name from cppstdin so it can be used from
15231 : either the present location or the final installed location.
15232 echo " "
15233 : Get out of the UU directory to get correct path name.
15234 cd ..
15235 case "$cppstdin" in
15236 `pwd`/cppstdin)
15237         echo "Stripping down cppstdin path name"
15238         cppstdin=cppstdin
15239         ;;
15240 esac
15241 cd UU
15242
15243 : end of configuration questions
15244 echo " "
15245 echo "End of configuration questions."
15246 echo " "
15247
15248 : back to where it started
15249 if test -d ../UU; then
15250         cd ..
15251 fi
15252
15253 : configuration may be patched via a 'config.over' file
15254 if $test -f config.over; then
15255         echo " "
15256         dflt=y
15257         rp='I see a config.over file.  Do you wish to load it?'
15258         . UU/myread
15259         case "$ans" in
15260         n*) echo "OK, I'll ignore it.";;
15261         *)      . ./config.over
15262                 echo "Configuration override changes have been loaded."
15263                 ;;
15264         esac
15265 fi
15266
15267 : in case they want portability, strip down executable paths
15268 case "$d_portable" in
15269 "$define")
15270         echo " "
15271         echo "Stripping down executable paths..." >&4
15272         for file in $loclist $trylist; do
15273                 eval temp=\$$file
15274                 eval $file=`basename $temp`
15275         done
15276         ;;
15277 esac
15278
15279 : create config.sh file
15280 echo " "
15281 echo "Creating config.sh..." >&4
15282 $spitshell <<EOT >config.sh
15283 $startsh
15284 #
15285 # This file was produced by running the Configure script. It holds all the
15286 # definitions figured out by Configure. Should you modify one of these values,
15287 # do not forget to propagate your changes by running "Configure -der". You may
15288 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15289 #
15290
15291 # Package name      : $package
15292 # Source directory  : $src
15293 # Configuration time: $cf_time
15294 # Configured by     : $cf_by
15295 # Target system     : $myuname
15296
15297 Author='$Author'
15298 Date='$Date'
15299 Header='$Header'
15300 Id='$Id'
15301 Locker='$Locker'
15302 Log='$Log'
15303 Mcc='$Mcc'
15304 RCSfile='$RCSfile'
15305 Revision='$Revision'
15306 Source='$Source'
15307 State='$State'
15308 _a='$_a'
15309 _exe='$_exe'
15310 _o='$_o'
15311 afs='$afs'
15312 alignbytes='$alignbytes'
15313 ansi2knr='$ansi2knr'
15314 aphostname='$aphostname'
15315 api_revision='$api_revision'
15316 api_subversion='$api_subversion'
15317 api_version='$api_version'
15318 api_versionstring='$api_versionstring'
15319 ar='$ar'
15320 archlib='$archlib'
15321 archlibexp='$archlibexp'
15322 archname64='$archname64'
15323 archname='$archname'
15324 archobjs='$archobjs'
15325 awk='$awk'
15326 baserev='$baserev'
15327 bash='$bash'
15328 bin='$bin'
15329 bincompat5005='$bincompat5005'
15330 binexp='$binexp'
15331 bison='$bison'
15332 byacc='$byacc'
15333 byteorder='$byteorder'
15334 c='$c'
15335 castflags='$castflags'
15336 cat='$cat'
15337 cc='$cc'
15338 cccdlflags='$cccdlflags'
15339 ccdlflags='$ccdlflags'
15340 ccflags='$ccflags'
15341 ccflags_uselargefiles='$ccflags_uselargefiles'
15342 ccsymbols='$ccsymbols'
15343 cf_by='$cf_by'
15344 cf_email='$cf_email'
15345 cf_time='$cf_time'
15346 charsize='$charsize'
15347 chgrp='$chgrp'
15348 chmod='$chmod'
15349 chown='$chown'
15350 clocktype='$clocktype'
15351 comm='$comm'
15352 compress='$compress'
15353 contains='$contains'
15354 cp='$cp'
15355 cpio='$cpio'
15356 cpp='$cpp'
15357 cpp_stuff='$cpp_stuff'
15358 cppccsymbols='$cppccsymbols'
15359 cppflags='$cppflags'
15360 cpplast='$cpplast'
15361 cppminus='$cppminus'
15362 cpprun='$cpprun'
15363 cppstdin='$cppstdin'
15364 cppsymbols='$cppsymbols'
15365 crosscompile='$crosscompile'
15366 cryptlib='$cryptlib'
15367 csh='$csh'
15368 d_Gconvert='$d_Gconvert'
15369 d_PRIEldbl='$d_PRIEldbl'
15370 d_PRIFldbl='$d_PRIFldbl'
15371 d_PRIGldbl='$d_PRIGldbl'
15372 d_PRIX64='$d_PRIX64'
15373 d_PRId64='$d_PRId64'
15374 d_PRIeldbl='$d_PRIeldbl'
15375 d_PRIfldbl='$d_PRIfldbl'
15376 d_PRIgldbl='$d_PRIgldbl'
15377 d_PRIi64='$d_PRIi64'
15378 d_PRIo64='$d_PRIo64'
15379 d_PRIu64='$d_PRIu64'
15380 d_PRIx64='$d_PRIx64'
15381 d_access='$d_access'
15382 d_accessx='$d_accessx'
15383 d_alarm='$d_alarm'
15384 d_archlib='$d_archlib'
15385 d_atolf='$d_atolf'
15386 d_atoll='$d_atoll'
15387 d_attribut='$d_attribut'
15388 d_bcmp='$d_bcmp'
15389 d_bcopy='$d_bcopy'
15390 d_bincompat5005='$d_bincompat5005'
15391 d_bsd='$d_bsd'
15392 d_bsdgetpgrp='$d_bsdgetpgrp'
15393 d_bsdsetpgrp='$d_bsdsetpgrp'
15394 d_bzero='$d_bzero'
15395 d_casti32='$d_casti32'
15396 d_castneg='$d_castneg'
15397 d_charvspr='$d_charvspr'
15398 d_chown='$d_chown'
15399 d_chroot='$d_chroot'
15400 d_chsize='$d_chsize'
15401 d_closedir='$d_closedir'
15402 d_const='$d_const'
15403 d_crypt='$d_crypt'
15404 d_csh='$d_csh'
15405 d_cuserid='$d_cuserid'
15406 d_dbl_dig='$d_dbl_dig'
15407 d_difftime='$d_difftime'
15408 d_dirnamlen='$d_dirnamlen'
15409 d_dlerror='$d_dlerror'
15410 d_dlopen='$d_dlopen'
15411 d_dlsymun='$d_dlsymun'
15412 d_dosuid='$d_dosuid'
15413 d_drand48proto='$d_drand48proto'
15414 d_dup2='$d_dup2'
15415 d_eaccess='$d_eaccess'
15416 d_endgrent='$d_endgrent'
15417 d_endhent='$d_endhent'
15418 d_endnent='$d_endnent'
15419 d_endpent='$d_endpent'
15420 d_endpwent='$d_endpwent'
15421 d_endsent='$d_endsent'
15422 d_eofnblk='$d_eofnblk'
15423 d_eunice='$d_eunice'
15424 d_fchmod='$d_fchmod'
15425 d_fchown='$d_fchown'
15426 d_fcntl='$d_fcntl'
15427 d_fd_macros='$d_fd_macros'
15428 d_fd_set='$d_fd_set'
15429 d_fds_bits='$d_fds_bits'
15430 d_fgetpos='$d_fgetpos'
15431 d_flexfnam='$d_flexfnam'
15432 d_flock='$d_flock'
15433 d_fork='$d_fork'
15434 d_fpathconf='$d_fpathconf'
15435 d_fpos64_t='$d_fpos64_t'
15436 d_frexpl='$d_frexpl'
15437 d_fs_data_s='$d_fs_data_s'
15438 d_fseeko='$d_fseeko'
15439 d_fsetpos='$d_fsetpos'
15440 d_fstatfs='$d_fstatfs'
15441 d_fstatvfs='$d_fstatvfs'
15442 d_ftello='$d_ftello'
15443 d_ftime='$d_ftime'
15444 d_getcwd='$d_getcwd'
15445 d_getespwnam='$d_getespwnam'
15446 d_getfsstat='$d_getfsstat'
15447 d_getgrent='$d_getgrent'
15448 d_getgrps='$d_getgrps'
15449 d_gethbyaddr='$d_gethbyaddr'
15450 d_gethbyname='$d_gethbyname'
15451 d_gethent='$d_gethent'
15452 d_gethname='$d_gethname'
15453 d_gethostprotos='$d_gethostprotos'
15454 d_getlogin='$d_getlogin'
15455 d_getmnt='$d_getmnt'
15456 d_getmntent='$d_getmntent'
15457 d_getnbyaddr='$d_getnbyaddr'
15458 d_getnbyname='$d_getnbyname'
15459 d_getnent='$d_getnent'
15460 d_getnetprotos='$d_getnetprotos'
15461 d_getpbyname='$d_getpbyname'
15462 d_getpbynumber='$d_getpbynumber'
15463 d_getpent='$d_getpent'
15464 d_getpgid='$d_getpgid'
15465 d_getpgrp2='$d_getpgrp2'
15466 d_getpgrp='$d_getpgrp'
15467 d_getppid='$d_getppid'
15468 d_getprior='$d_getprior'
15469 d_getprotoprotos='$d_getprotoprotos'
15470 d_getprpwnam='$d_getprpwnam'
15471 d_getpwent='$d_getpwent'
15472 d_getsbyname='$d_getsbyname'
15473 d_getsbyport='$d_getsbyport'
15474 d_getsent='$d_getsent'
15475 d_getservprotos='$d_getservprotos'
15476 d_getspnam='$d_getspnam'
15477 d_gettimeod='$d_gettimeod'
15478 d_gnulibc='$d_gnulibc'
15479 d_grpasswd='$d_grpasswd'
15480 d_hasmntopt='$d_hasmntopt'
15481 d_htonl='$d_htonl'
15482 d_iconv='$d_iconv'
15483 d_index='$d_index'
15484 d_inetaton='$d_inetaton'
15485 d_int64_t='$d_int64_t'
15486 d_isascii='$d_isascii'
15487 d_isnan='$d_isnan'
15488 d_isnanl='$d_isnanl'
15489 d_killpg='$d_killpg'
15490 d_lchown='$d_lchown'
15491 d_ldbl_dig='$d_ldbl_dig'
15492 d_link='$d_link'
15493 d_locconv='$d_locconv'
15494 d_lockf='$d_lockf'
15495 d_longdbl='$d_longdbl'
15496 d_longlong='$d_longlong'
15497 d_lseekproto='$d_lseekproto'
15498 d_lstat='$d_lstat'
15499 d_madvise='$d_madvise'
15500 d_mblen='$d_mblen'
15501 d_mbstowcs='$d_mbstowcs'
15502 d_mbtowc='$d_mbtowc'
15503 d_memchr='$d_memchr'
15504 d_memcmp='$d_memcmp'
15505 d_memcpy='$d_memcpy'
15506 d_memmove='$d_memmove'
15507 d_memset='$d_memset'
15508 d_mkdir='$d_mkdir'
15509 d_mkdtemp='$d_mkdtemp'
15510 d_mkfifo='$d_mkfifo'
15511 d_mkstemp='$d_mkstemp'
15512 d_mkstemps='$d_mkstemps'
15513 d_mktime='$d_mktime'
15514 d_mmap='$d_mmap'
15515 d_modfl='$d_modfl'
15516 d_mprotect='$d_mprotect'
15517 d_msg='$d_msg'
15518 d_msg_ctrunc='$d_msg_ctrunc'
15519 d_msg_dontroute='$d_msg_dontroute'
15520 d_msg_oob='$d_msg_oob'
15521 d_msg_peek='$d_msg_peek'
15522 d_msg_proxy='$d_msg_proxy'
15523 d_msgctl='$d_msgctl'
15524 d_msgget='$d_msgget'
15525 d_msgrcv='$d_msgrcv'
15526 d_msgsnd='$d_msgsnd'
15527 d_msync='$d_msync'
15528 d_munmap='$d_munmap'
15529 d_mymalloc='$d_mymalloc'
15530 d_nice='$d_nice'
15531 d_nv_preserves_uv='$d_nv_preserves_uv'
15532 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15533 d_off64_t='$d_off64_t'
15534 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15535 d_oldpthreads='$d_oldpthreads'
15536 d_oldsock='$d_oldsock'
15537 d_open3='$d_open3'
15538 d_pathconf='$d_pathconf'
15539 d_pause='$d_pause'
15540 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15541 d_phostname='$d_phostname'
15542 d_pipe='$d_pipe'
15543 d_poll='$d_poll'
15544 d_portable='$d_portable'
15545 d_pthread_yield='$d_pthread_yield'
15546 d_pwage='$d_pwage'
15547 d_pwchange='$d_pwchange'
15548 d_pwclass='$d_pwclass'
15549 d_pwcomment='$d_pwcomment'
15550 d_pwexpire='$d_pwexpire'
15551 d_pwgecos='$d_pwgecos'
15552 d_pwpasswd='$d_pwpasswd'
15553 d_pwquota='$d_pwquota'
15554 d_qgcvt='$d_qgcvt'
15555 d_quad='$d_quad'
15556 d_readdir='$d_readdir'
15557 d_readlink='$d_readlink'
15558 d_rename='$d_rename'
15559 d_rewinddir='$d_rewinddir'
15560 d_rmdir='$d_rmdir'
15561 d_safebcpy='$d_safebcpy'
15562 d_safemcpy='$d_safemcpy'
15563 d_sanemcmp='$d_sanemcmp'
15564 d_sched_yield='$d_sched_yield'
15565 d_scm_rights='$d_scm_rights'
15566 d_seekdir='$d_seekdir'
15567 d_select='$d_select'
15568 d_sem='$d_sem'
15569 d_semctl='$d_semctl'
15570 d_semctl_semid_ds='$d_semctl_semid_ds'
15571 d_semctl_semun='$d_semctl_semun'
15572 d_semget='$d_semget'
15573 d_semop='$d_semop'
15574 d_setegid='$d_setegid'
15575 d_seteuid='$d_seteuid'
15576 d_setgrent='$d_setgrent'
15577 d_setgrps='$d_setgrps'
15578 d_sethent='$d_sethent'
15579 d_setlinebuf='$d_setlinebuf'
15580 d_setlocale='$d_setlocale'
15581 d_setnent='$d_setnent'
15582 d_setpent='$d_setpent'
15583 d_setpgid='$d_setpgid'
15584 d_setpgrp2='$d_setpgrp2'
15585 d_setpgrp='$d_setpgrp'
15586 d_setprior='$d_setprior'
15587 d_setproctitle='$d_setproctitle'
15588 d_setpwent='$d_setpwent'
15589 d_setregid='$d_setregid'
15590 d_setresgid='$d_setresgid'
15591 d_setresuid='$d_setresuid'
15592 d_setreuid='$d_setreuid'
15593 d_setrgid='$d_setrgid'
15594 d_setruid='$d_setruid'
15595 d_setsent='$d_setsent'
15596 d_setsid='$d_setsid'
15597 d_setvbuf='$d_setvbuf'
15598 d_sfio='$d_sfio'
15599 d_shm='$d_shm'
15600 d_shmat='$d_shmat'
15601 d_shmatprototype='$d_shmatprototype'
15602 d_shmctl='$d_shmctl'
15603 d_shmdt='$d_shmdt'
15604 d_shmget='$d_shmget'
15605 d_sigaction='$d_sigaction'
15606 d_sigsetjmp='$d_sigsetjmp'
15607 d_socket='$d_socket'
15608 d_socklen_t='$d_socklen_t'
15609 d_sockpair='$d_sockpair'
15610 d_sqrtl='$d_sqrtl'
15611 d_statblks='$d_statblks'
15612 d_statfs_f_flags='$d_statfs_f_flags'
15613 d_statfs_s='$d_statfs_s'
15614 d_statvfs='$d_statvfs'
15615 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15616 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15617 d_stdio_stream_array='$d_stdio_stream_array'
15618 d_stdiobase='$d_stdiobase'
15619 d_stdstdio='$d_stdstdio'
15620 d_strchr='$d_strchr'
15621 d_strcoll='$d_strcoll'
15622 d_strctcpy='$d_strctcpy'
15623 d_strerrm='$d_strerrm'
15624 d_strerror='$d_strerror'
15625 d_strtod='$d_strtod'
15626 d_strtol='$d_strtol'
15627 d_strtold='$d_strtold'
15628 d_strtoll='$d_strtoll'
15629 d_strtoul='$d_strtoul'
15630 d_strtoull='$d_strtoull'
15631 d_strtouq='$d_strtouq'
15632 d_strxfrm='$d_strxfrm'
15633 d_suidsafe='$d_suidsafe'
15634 d_symlink='$d_symlink'
15635 d_syscall='$d_syscall'
15636 d_sysconf='$d_sysconf'
15637 d_sysernlst='$d_sysernlst'
15638 d_syserrlst='$d_syserrlst'
15639 d_system='$d_system'
15640 d_tcgetpgrp='$d_tcgetpgrp'
15641 d_tcsetpgrp='$d_tcsetpgrp'
15642 d_telldir='$d_telldir'
15643 d_telldirproto='$d_telldirproto'
15644 d_time='$d_time'
15645 d_times='$d_times'
15646 d_truncate='$d_truncate'
15647 d_tzname='$d_tzname'
15648 d_umask='$d_umask'
15649 d_uname='$d_uname'
15650 d_union_semun='$d_union_semun'
15651 d_ustat='$d_ustat'
15652 d_vendorarch='$d_vendorarch'
15653 d_vendorbin='$d_vendorbin'
15654 d_vendorlib='$d_vendorlib'
15655 d_vfork='$d_vfork'
15656 d_void_closedir='$d_void_closedir'
15657 d_voidsig='$d_voidsig'
15658 d_voidtty='$d_voidtty'
15659 d_volatile='$d_volatile'
15660 d_vprintf='$d_vprintf'
15661 d_wait4='$d_wait4'
15662 d_waitpid='$d_waitpid'
15663 d_wcstombs='$d_wcstombs'
15664 d_wctomb='$d_wctomb'
15665 d_xenix='$d_xenix'
15666 date='$date'
15667 db_hashtype='$db_hashtype'
15668 db_prefixtype='$db_prefixtype'
15669 defvoidused='$defvoidused'
15670 direntrytype='$direntrytype'
15671 dlext='$dlext'
15672 dlsrc='$dlsrc'
15673 doublesize='$doublesize'
15674 drand01='$drand01'
15675 dynamic_ext='$dynamic_ext'
15676 eagain='$eagain'
15677 ebcdic='$ebcdic'
15678 echo='$echo'
15679 egrep='$egrep'
15680 emacs='$emacs'
15681 eunicefix='$eunicefix'
15682 exe_ext='$exe_ext'
15683 expr='$expr'
15684 extensions='$extensions'
15685 fflushNULL='$fflushNULL'
15686 fflushall='$fflushall'
15687 find='$find'
15688 firstmakefile='$firstmakefile'
15689 flex='$flex'
15690 fpossize='$fpossize'
15691 fpostype='$fpostype'
15692 freetype='$freetype'
15693 full_ar='$full_ar'
15694 full_csh='$full_csh'
15695 full_sed='$full_sed'
15696 gccosandvers='$gccosandvers'
15697 gccversion='$gccversion'
15698 gidformat='$gidformat'
15699 gidsign='$gidsign'
15700 gidsize='$gidsize'
15701 gidtype='$gidtype'
15702 glibpth='$glibpth'
15703 grep='$grep'
15704 groupcat='$groupcat'
15705 groupstype='$groupstype'
15706 gzip='$gzip'
15707 h_fcntl='$h_fcntl'
15708 h_sysfile='$h_sysfile'
15709 hint='$hint'
15710 hostcat='$hostcat'
15711 huge='$huge'
15712 i16size='$i16size'
15713 i16type='$i16type'
15714 i32size='$i32size'
15715 i32type='$i32type'
15716 i64size='$i64size'
15717 i64type='$i64type'
15718 i8size='$i8size'
15719 i8type='$i8type'
15720 i_arpainet='$i_arpainet'
15721 i_bsdioctl='$i_bsdioctl'
15722 i_db='$i_db'
15723 i_dbm='$i_dbm'
15724 i_dirent='$i_dirent'
15725 i_dld='$i_dld'
15726 i_dlfcn='$i_dlfcn'
15727 i_fcntl='$i_fcntl'
15728 i_float='$i_float'
15729 i_gdbm='$i_gdbm'
15730 i_grp='$i_grp'
15731 i_iconv='$i_iconv'
15732 i_ieeefp='$i_ieeefp'
15733 i_inttypes='$i_inttypes'
15734 i_libutil='$i_libutil'
15735 i_limits='$i_limits'
15736 i_locale='$i_locale'
15737 i_machcthr='$i_machcthr'
15738 i_malloc='$i_malloc'
15739 i_math='$i_math'
15740 i_memory='$i_memory'
15741 i_mntent='$i_mntent'
15742 i_ndbm='$i_ndbm'
15743 i_netdb='$i_netdb'
15744 i_neterrno='$i_neterrno'
15745 i_netinettcp='$i_netinettcp'
15746 i_niin='$i_niin'
15747 i_poll='$i_poll'
15748 i_prot='$i_prot'
15749 i_pthread='$i_pthread'
15750 i_pwd='$i_pwd'
15751 i_rpcsvcdbm='$i_rpcsvcdbm'
15752 i_sfio='$i_sfio'
15753 i_sgtty='$i_sgtty'
15754 i_shadow='$i_shadow'
15755 i_socks='$i_socks'
15756 i_stdarg='$i_stdarg'
15757 i_stddef='$i_stddef'
15758 i_stdlib='$i_stdlib'
15759 i_string='$i_string'
15760 i_sunmath='$i_sunmath'
15761 i_sysaccess='$i_sysaccess'
15762 i_sysdir='$i_sysdir'
15763 i_sysfile='$i_sysfile'
15764 i_sysfilio='$i_sysfilio'
15765 i_sysin='$i_sysin'
15766 i_sysioctl='$i_sysioctl'
15767 i_syslog='$i_syslog'
15768 i_sysmman='$i_sysmman'
15769 i_sysmode='$i_sysmode'
15770 i_sysmount='$i_sysmount'
15771 i_sysndir='$i_sysndir'
15772 i_sysparam='$i_sysparam'
15773 i_sysresrc='$i_sysresrc'
15774 i_syssecrt='$i_syssecrt'
15775 i_sysselct='$i_sysselct'
15776 i_syssockio='$i_syssockio'
15777 i_sysstat='$i_sysstat'
15778 i_sysstatfs='$i_sysstatfs'
15779 i_sysstatvfs='$i_sysstatvfs'
15780 i_systime='$i_systime'
15781 i_systimek='$i_systimek'
15782 i_systimes='$i_systimes'
15783 i_systypes='$i_systypes'
15784 i_sysuio='$i_sysuio'
15785 i_sysun='$i_sysun'
15786 i_sysutsname='$i_sysutsname'
15787 i_sysvfs='$i_sysvfs'
15788 i_syswait='$i_syswait'
15789 i_termio='$i_termio'
15790 i_termios='$i_termios'
15791 i_time='$i_time'
15792 i_unistd='$i_unistd'
15793 i_ustat='$i_ustat'
15794 i_utime='$i_utime'
15795 i_values='$i_values'
15796 i_varargs='$i_varargs'
15797 i_varhdr='$i_varhdr'
15798 i_vfork='$i_vfork'
15799 ignore_versioned_solibs='$ignore_versioned_solibs'
15800 inc_version_list='$inc_version_list'
15801 inc_version_list_init='$inc_version_list_init'
15802 incpath='$incpath'
15803 inews='$inews'
15804 installarchlib='$installarchlib'
15805 installbin='$installbin'
15806 installman1dir='$installman1dir'
15807 installman3dir='$installman3dir'
15808 installprefix='$installprefix'
15809 installprefixexp='$installprefixexp'
15810 installprivlib='$installprivlib'
15811 installscript='$installscript'
15812 installsitearch='$installsitearch'
15813 installsitebin='$installsitebin'
15814 installsitelib='$installsitelib'
15815 installstyle='$installstyle'
15816 installusrbinperl='$installusrbinperl'
15817 installvendorarch='$installvendorarch'
15818 installvendorbin='$installvendorbin'
15819 installvendorlib='$installvendorlib'
15820 intsize='$intsize'
15821 ivdformat='$ivdformat'
15822 ivsize='$ivsize'
15823 ivtype='$ivtype'
15824 known_extensions='$known_extensions'
15825 ksh='$ksh'
15826 large='$large'
15827 ld='$ld'
15828 lddlflags='$lddlflags'
15829 ldflags='$ldflags'
15830 ldflags_uselargefiles='$ldflags_uselargefiles'
15831 ldlibpthname='$ldlibpthname'
15832 less='$less'
15833 lib_ext='$lib_ext'
15834 libc='$libc'
15835 libperl='$libperl'
15836 libpth='$libpth'
15837 libs='$libs'
15838 libsdirs='$libsdirs'
15839 libsfiles='$libsfiles'
15840 libsfound='$libsfound'
15841 libspath='$libspath'
15842 libswanted='$libswanted'
15843 libswanted_uselargefiles='$libswanted_uselargefiles'
15844 line='$line'
15845 lint='$lint'
15846 lkflags='$lkflags'
15847 ln='$ln'
15848 lns='$lns'
15849 locincpth='$locincpth'
15850 loclibpth='$loclibpth'
15851 longdblsize='$longdblsize'
15852 longlongsize='$longlongsize'
15853 longsize='$longsize'
15854 lp='$lp'
15855 lpr='$lpr'
15856 ls='$ls'
15857 lseeksize='$lseeksize'
15858 lseektype='$lseektype'
15859 mail='$mail'
15860 mailx='$mailx'
15861 make='$make'
15862 make_set_make='$make_set_make'
15863 mallocobj='$mallocobj'
15864 mallocsrc='$mallocsrc'
15865 malloctype='$malloctype'
15866 man1dir='$man1dir'
15867 man1direxp='$man1direxp'
15868 man1ext='$man1ext'
15869 man3dir='$man3dir'
15870 man3direxp='$man3direxp'
15871 man3ext='$man3ext'
15872 medium='$medium'
15873 mips_type='$mips_type'
15874 mkdir='$mkdir'
15875 mmaptype='$mmaptype'
15876 models='$models'
15877 modetype='$modetype'
15878 more='$more'
15879 multiarch='$multiarch'
15880 mv='$mv'
15881 myarchname='$myarchname'
15882 mydomain='$mydomain'
15883 myhostname='$myhostname'
15884 myuname='$myuname'
15885 n='$n'
15886 netdb_hlen_type='$netdb_hlen_type'
15887 netdb_host_type='$netdb_host_type'
15888 netdb_name_type='$netdb_name_type'
15889 netdb_net_type='$netdb_net_type'
15890 nm='$nm'
15891 nm_opt='$nm_opt'
15892 nm_so_opt='$nm_so_opt'
15893 nonxs_ext='$nonxs_ext'
15894 nroff='$nroff'
15895 nvsize='$nvsize'
15896 nvtype='$nvtype'
15897 o_nonblock='$o_nonblock'
15898 obj_ext='$obj_ext'
15899 old_pthread_create_joinable='$old_pthread_create_joinable'
15900 optimize='$optimize'
15901 orderlib='$orderlib'
15902 osname='$osname'
15903 osvers='$osvers'
15904 otherlibdirs='$otherlibdirs'
15905 package='$package'
15906 pager='$pager'
15907 passcat='$passcat'
15908 patchlevel='$patchlevel'
15909 path_sep='$path_sep'
15910 perl5='$perl5'
15911 perl='$perl'
15912 perladmin='$perladmin'
15913 perlpath='$perlpath'
15914 pg='$pg'
15915 phostname='$phostname'
15916 pidtype='$pidtype'
15917 plibpth='$plibpth'
15918 pm_apiversion='$pm_apiversion'
15919 pmake='$pmake'
15920 pr='$pr'
15921 prefix='$prefix'
15922 prefixexp='$prefixexp'
15923 privlib='$privlib'
15924 privlibexp='$privlibexp'
15925 prototype='$prototype'
15926 ptrsize='$ptrsize'
15927 quadkind='$quadkind'
15928 quadtype='$quadtype'
15929 randbits='$randbits'
15930 randfunc='$randfunc'
15931 randseedtype='$randseedtype'
15932 ranlib='$ranlib'
15933 rd_nodata='$rd_nodata'
15934 revision='$revision'
15935 rm='$rm'
15936 rmail='$rmail'
15937 runnm='$runnm'
15938 sPRIEldbl='$sPRIEldbl'
15939 sPRIFldbl='$sPRIFldbl'
15940 sPRIGldbl='$sPRIGldbl'
15941 sPRIX64='$sPRIX64'
15942 sPRId64='$sPRId64'
15943 sPRIeldbl='$sPRIeldbl'
15944 sPRIfldbl='$sPRIfldbl'
15945 sPRIgldbl='$sPRIgldbl'
15946 sPRIi64='$sPRIi64'
15947 sPRIo64='$sPRIo64'
15948 sPRIu64='$sPRIu64'
15949 sPRIx64='$sPRIx64'
15950 sched_yield='$sched_yield'
15951 scriptdir='$scriptdir'
15952 scriptdirexp='$scriptdirexp'
15953 sed='$sed'
15954 seedfunc='$seedfunc'
15955 selectminbits='$selectminbits'
15956 selecttype='$selecttype'
15957 sendmail='$sendmail'
15958 sh='$sh'
15959 shar='$shar'
15960 sharpbang='$sharpbang'
15961 shmattype='$shmattype'
15962 shortsize='$shortsize'
15963 shrpenv='$shrpenv'
15964 shsharp='$shsharp'
15965 sig_count='$sig_count'
15966 sig_name='$sig_name'
15967 sig_name_init='$sig_name_init'
15968 sig_num='$sig_num'
15969 sig_num_init='$sig_num_init'
15970 signal_t='$signal_t'
15971 sitearch='$sitearch'
15972 sitearchexp='$sitearchexp'
15973 sitebin='$sitebin'
15974 sitebinexp='$sitebinexp'
15975 sitelib='$sitelib'
15976 sitelib_stem='$sitelib_stem'
15977 sitelibexp='$sitelibexp'
15978 siteprefix='$siteprefix'
15979 siteprefixexp='$siteprefixexp'
15980 sizesize='$sizesize'
15981 sizetype='$sizetype'
15982 sleep='$sleep'
15983 smail='$smail'
15984 small='$small'
15985 so='$so'
15986 sockethdr='$sockethdr'
15987 socketlib='$socketlib'
15988 socksizetype='$socksizetype'
15989 sort='$sort'
15990 spackage='$spackage'
15991 spitshell='$spitshell'
15992 split='$split'
15993 src='$src'
15994 ssizetype='$ssizetype'
15995 startperl='$startperl'
15996 startsh='$startsh'
15997 static_ext='$static_ext'
15998 stdchar='$stdchar'
15999 stdio_base='$stdio_base'
16000 stdio_bufsiz='$stdio_bufsiz'
16001 stdio_cnt='$stdio_cnt'
16002 stdio_filbuf='$stdio_filbuf'
16003 stdio_ptr='$stdio_ptr'
16004 stdio_stream_array='$stdio_stream_array'
16005 strings='$strings'
16006 submit='$submit'
16007 subversion='$subversion'
16008 sysman='$sysman'
16009 tail='$tail'
16010 tar='$tar'
16011 tbl='$tbl'
16012 tee='$tee'
16013 test='$test'
16014 timeincl='$timeincl'
16015 timetype='$timetype'
16016 touch='$touch'
16017 tr='$tr'
16018 trnl='$trnl'
16019 troff='$troff'
16020 u16size='$u16size'
16021 u16type='$u16type'
16022 u32size='$u32size'
16023 u32type='$u32type'
16024 u64size='$u64size'
16025 u64type='$u64type'
16026 u8size='$u8size'
16027 u8type='$u8type'
16028 uidformat='$uidformat'
16029 uidsign='$uidsign'
16030 uidsize='$uidsize'
16031 uidtype='$uidtype'
16032 uname='$uname'
16033 uniq='$uniq'
16034 uquadtype='$uquadtype'
16035 use5005threads='$use5005threads'
16036 use64bitall='$use64bitall'
16037 use64bitint='$use64bitint'
16038 usedl='$usedl'
16039 useithreads='$useithreads'
16040 uselargefiles='$uselargefiles'
16041 uselongdouble='$uselongdouble'
16042 usemorebits='$usemorebits'
16043 usemultiplicity='$usemultiplicity'
16044 usemymalloc='$usemymalloc'
16045 usenm='$usenm'
16046 useopcode='$useopcode'
16047 useperlio='$useperlio'
16048 useposix='$useposix'
16049 usesfio='$usesfio'
16050 useshrplib='$useshrplib'
16051 usesocks='$usesocks'
16052 usethreads='$usethreads'
16053 usevendorprefix='$usevendorprefix'
16054 usevfork='$usevfork'
16055 usrinc='$usrinc'
16056 uuname='$uuname'
16057 uvoformat='$uvoformat'
16058 uvsize='$uvsize'
16059 uvtype='$uvtype'
16060 uvuformat='$uvuformat'
16061 uvxformat='$uvxformat'
16062 vendorarch='$vendorarch'
16063 vendorarchexp='$vendorarchexp'
16064 vendorbin='$vendorbin'
16065 vendorbinexp='$vendorbinexp'
16066 vendorlib='$vendorlib'
16067 vendorlib_stem='$vendorlib_stem'
16068 vendorlibexp='$vendorlibexp'
16069 vendorprefix='$vendorprefix'
16070 vendorprefixexp='$vendorprefixexp'
16071 version='$version'
16072 vi='$vi'
16073 voidflags='$voidflags'
16074 xlibpth='$xlibpth'
16075 xs_apiversion='$xs_apiversion'
16076 zcat='$zcat'
16077 zip='$zip'
16078 EOT
16079
16080 : Add in command line options if available
16081 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16082
16083 : add special variables
16084 $test -f $src/patchlevel.h && \
16085 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16086 echo "CONFIGDOTSH=true" >>config.sh
16087
16088 : propagate old symbols
16089 if $test -f UU/config.sh; then
16090         <UU/config.sh sort | uniq >UU/oldconfig.sh
16091         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16092         sort | uniq -u >UU/oldsyms
16093         set X `cat UU/oldsyms`
16094         shift
16095         case $# in
16096         0) ;;
16097         *)
16098                 cat <<EOM
16099 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16100 EOM
16101                 echo "# Variables propagated from previous config.sh file." >>config.sh
16102                 for sym in `cat UU/oldsyms`; do
16103                         echo "    Propagating $hint variable "'$'"$sym..."
16104                         eval 'tmp="$'"${sym}"'"'
16105                         echo "$tmp" | \
16106                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16107                 done
16108                 ;;
16109         esac
16110 fi
16111
16112 : Finish up by extracting the .SH files
16113 case "$alldone" in
16114 exit)
16115         $rm -rf UU
16116         echo "Done."
16117         exit 0
16118         ;;
16119 cont)
16120         ;;
16121 '')
16122         dflt=''
16123         nostick=true
16124         $cat <<EOM
16125
16126 If you'd like to make any changes to the config.sh file before I begin
16127 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16128
16129 EOM
16130         rp="Press return or use a shell escape to edit config.sh:"
16131         . UU/myread
16132         nostick=''
16133         case "$ans" in
16134         '') ;;
16135         *) : in case they cannot read
16136                 sh 1>&4 -c "$ans";;
16137         esac
16138         ;;
16139 esac
16140
16141 : if this fails, just run all the .SH files by hand
16142 . ./config.sh
16143
16144 echo " "
16145 exec 1>&4
16146 . ./UU/extract
16147
16148 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16149         dflt=y
16150         case "$silent" in
16151         true) ;;
16152         *)
16153                 $cat <<EOM
16154
16155 Now you need to generate make dependencies by running "$make depend".
16156 You might prefer to run it in background: "$make depend > makedepend.out &"
16157 It can take a while, so you might not want to run it right now.
16158
16159 EOM
16160                 ;;
16161         esac
16162         rp="Run $make depend now?"
16163         . UU/myread
16164         case "$ans" in
16165         y*)
16166                 $make depend && echo "Now you must run a $make."
16167                 ;;
16168         *)
16169                 echo "You must run '$make depend' then '$make'."
16170                 ;;
16171         esac
16172 elif test -f [Mm]akefile; then
16173         echo " "
16174         echo "Now you must run a $make."
16175 else
16176         echo "Done."
16177 fi
16178
16179 if $test -f Policy.sh; then
16180     $cat <<EOM
16181
16182 If you compile $package on a different machine or from a different object
16183 directory, copy the Policy.sh file from this object directory to the
16184 new one before you run Configure -- this will help you with most of
16185 the policy defaults.
16186
16187 EOM
16188 fi
16189 if $test -f config.msg; then
16190     echo "Hmm.  I also noted the following information while running:"
16191     echo " "
16192     $cat config.msg >&4
16193     $rm -f config.msg
16194 fi
16195 $rm -f kit*isdone ark*isdone
16196 $rm -rf UU
16197
16198 : End of Configure
16199