428241e468d91cd98fde471b23982557a3bcc4a1
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Aug 31 21:06:17 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
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_socks5_init=''
528 d_sqrtl=''
529 d_statblks=''
530 d_statfs_f_flags=''
531 d_statfs_s=''
532 d_fstatvfs=''
533 d_statvfs=''
534 d_stdio_cnt_lval=''
535 d_stdio_ptr_lval=''
536 d_stdiobase=''
537 d_stdstdio=''
538 stdio_base=''
539 stdio_bufsiz=''
540 stdio_cnt=''
541 stdio_filbuf=''
542 stdio_ptr=''
543 d_index=''
544 d_strchr=''
545 d_strcoll=''
546 d_strctcpy=''
547 d_strerrm=''
548 d_strerror=''
549 d_sysernlst=''
550 d_syserrlst=''
551 d_strtod=''
552 d_strtol=''
553 d_strtold=''
554 d_strtoll=''
555 d_strtoul=''
556 d_strtoull=''
557 d_strtouq=''
558 d_strxfrm=''
559 d_symlink=''
560 d_syscall=''
561 d_sysconf=''
562 d_system=''
563 d_tcgetpgrp=''
564 d_tcsetpgrp=''
565 d_telldirproto=''
566 d_time=''
567 timetype=''
568 clocktype=''
569 d_times=''
570 d_truncate=''
571 d_tzname=''
572 d_umask=''
573 d_semctl_semid_ds=''
574 d_semctl_semun=''
575 d_union_semun=''
576 d_ustat=''
577 d_vfork=''
578 usevfork=''
579 d_voidsig=''
580 signal_t=''
581 d_volatile=''
582 d_charvspr=''
583 d_vprintf=''
584 d_wait4=''
585 d_waitpid=''
586 d_wcstombs=''
587 d_wctomb=''
588 dlext=''
589 cccdlflags=''
590 ccdlflags=''
591 dlsrc=''
592 ld=''
593 lddlflags=''
594 usedl=''
595 doublesize=''
596 ebcdic=''
597 fflushNULL=''
598 fflushall=''
599 fpossize=''
600 fpostype=''
601 ccname=''
602 gccosandvers=''
603 gccversion=''
604 gidformat=''
605 gidsign=''
606 gidsize=''
607 gidtype=''
608 groupstype=''
609 h_fcntl=''
610 h_sysfile=''
611 i_arpainet=''
612 db_hashtype=''
613 db_prefixtype=''
614 i_db=''
615 i_dbm=''
616 i_rpcsvcdbm=''
617 d_dirnamlen=''
618 direntrytype=''
619 i_dirent=''
620 i_dld=''
621 i_dlfcn=''
622 i_fcntl=''
623 i_float=''
624 i_gdbm=''
625 d_grpasswd=''
626 i_grp=''
627 i_iconv=''
628 i_ieeefp=''
629 i_inttypes=''
630 i_libutil=''
631 i_limits=''
632 i_locale=''
633 i_machcthr=''
634 i_malloc=''
635 i_math=''
636 i_memory=''
637 i_mntent=''
638 i_ndbm=''
639 i_netdb=''
640 i_neterrno=''
641 i_netinettcp=''
642 i_niin=''
643 i_sysin=''
644 i_poll=''
645 i_prot=''
646 i_pthread=''
647 d_pwage=''
648 d_pwchange=''
649 d_pwclass=''
650 d_pwcomment=''
651 d_pwexpire=''
652 d_pwgecos=''
653 d_pwpasswd=''
654 d_pwquota=''
655 i_pwd=''
656 i_sfio=''
657 i_shadow=''
658 i_socks=''
659 i_stddef=''
660 i_stdlib=''
661 i_string=''
662 strings=''
663 i_sunmath=''
664 i_sysaccess=''
665 i_sysdir=''
666 i_sysfile=''
667 d_voidtty=''
668 i_bsdioctl=''
669 i_sysfilio=''
670 i_sysioctl=''
671 i_syssockio=''
672 i_syslog=''
673 i_sysmman=''
674 i_sysmode=''
675 i_sysmount=''
676 i_sysndir=''
677 i_sysparam=''
678 i_sysresrc=''
679 i_syssecrt=''
680 i_sysselct=''
681 i_sysstat=''
682 i_sysstatfs=''
683 i_sysstatvfs=''
684 i_systimes=''
685 i_systypes=''
686 i_sysuio=''
687 i_sysun=''
688 i_sysutsname=''
689 i_sysvfs=''
690 i_syswait=''
691 i_sgtty=''
692 i_termio=''
693 i_termios=''
694 i_systime=''
695 i_systimek=''
696 i_time=''
697 timeincl=''
698 i_unistd=''
699 i_ustat=''
700 i_utime=''
701 i_values=''
702 i_stdarg=''
703 i_varargs=''
704 i_varhdr=''
705 i_vfork=''
706 inc_version_list=''
707 inc_version_list_init=''
708 installprefix=''
709 installprefixexp=''
710 installstyle=''
711 installusrbinperl=''
712 intsize=''
713 longsize=''
714 shortsize=''
715 libc=''
716 ldlibpthname=''
717 libperl=''
718 shrpenv=''
719 useshrplib=''
720 glibpth=''
721 libpth=''
722 loclibpth=''
723 plibpth=''
724 xlibpth=''
725 ignore_versioned_solibs=''
726 libs=''
727 libsdirs=''
728 libsfiles=''
729 libsfound=''
730 libspath=''
731 lns=''
732 d_PRIEldbl=''
733 d_PRIFldbl=''
734 d_PRIGldbl=''
735 d_PRIeldbl=''
736 d_PRIfldbl=''
737 d_PRIgldbl=''
738 d_SCNfldbl=''
739 sPRIEldbl=''
740 sPRIFldbl=''
741 sPRIGldbl=''
742 sPRIeldbl=''
743 sPRIfldbl=''
744 sPRIgldbl=''
745 sSCNfldbl=''
746 lseeksize=''
747 lseektype=''
748 make_set_make=''
749 d_mymalloc=''
750 freetype=''
751 mallocobj=''
752 mallocsrc=''
753 malloctype=''
754 usemymalloc=''
755 installman1dir=''
756 man1dir=''
757 man1direxp=''
758 man1ext=''
759 installman3dir=''
760 man3dir=''
761 man3direxp=''
762 man3ext=''
763 huge=''
764 large=''
765 medium=''
766 models=''
767 small=''
768 split=''
769 modetype=''
770 multiarch=''
771 mydomain=''
772 myhostname=''
773 phostname=''
774 c=''
775 n=''
776 d_eofnblk=''
777 eagain=''
778 o_nonblock=''
779 rd_nodata=''
780 netdb_hlen_type=''
781 netdb_host_type=''
782 netdb_name_type=''
783 netdb_net_type=''
784 groupcat=''
785 hostcat=''
786 passcat=''
787 orderlib=''
788 ranlib=''
789 d_perl_otherlibdirs=''
790 otherlibdirs=''
791 package=''
792 spackage=''
793 pager=''
794 api_revision=''
795 api_subversion=''
796 api_version=''
797 api_versionstring=''
798 patchlevel=''
799 revision=''
800 subversion=''
801 version=''
802 perl5=''
803 perladmin=''
804 perlpath=''
805 d_nv_preserves_uv=''
806 d_nv_preserves_uv_bits=''
807 i16size=''
808 i16type=''
809 i32size=''
810 i32type=''
811 i64size=''
812 i64type=''
813 i8size=''
814 i8type=''
815 ivsize=''
816 ivtype=''
817 nvsize=''
818 nvtype=''
819 u16size=''
820 u16type=''
821 u32size=''
822 u32type=''
823 u64size=''
824 u64type=''
825 u8size=''
826 u8type=''
827 uvsize=''
828 uvtype=''
829 ivdformat=''
830 nvEformat=''
831 nvFformat=''
832 nvGformat=''
833 nveformat=''
834 nvfformat=''
835 nvgformat=''
836 uvXformat=''
837 uvoformat=''
838 uvuformat=''
839 uvxformat=''
840 pidtype=''
841 prefix=''
842 prefixexp=''
843 installprivlib=''
844 privlib=''
845 privlibexp=''
846 prototype=''
847 ptrsize=''
848 d_PRIX64=''
849 d_PRId64=''
850 d_PRIi64=''
851 d_PRIo64=''
852 d_PRIu64=''
853 d_PRIx64=''
854 sPRIX64=''
855 sPRId64=''
856 sPRIi64=''
857 sPRIo64=''
858 sPRIu64=''
859 sPRIx64=''
860 d_quad=''
861 quadkind=''
862 quadtype=''
863 uquadtype=''
864 drand01=''
865 randbits=''
866 randfunc=''
867 randseedtype=''
868 seedfunc=''
869 installscript=''
870 scriptdir=''
871 scriptdirexp=''
872 selectminbits=''
873 selecttype=''
874 sh=''
875 sig_count=''
876 sig_name=''
877 sig_name_init=''
878 sig_num=''
879 sig_num_init=''
880 installsitearch=''
881 sitearch=''
882 sitearchexp=''
883 installsitebin=''
884 sitebin=''
885 sitebinexp=''
886 installsitelib=''
887 sitelib=''
888 sitelib_stem=''
889 sitelibexp=''
890 siteprefix=''
891 siteprefixexp=''
892 sizesize=''
893 sizetype=''
894 so=''
895 socksizetype=''
896 sharpbang=''
897 shsharp=''
898 spitshell=''
899 src=''
900 ssizetype=''
901 startperl=''
902 startsh=''
903 stdchar=''
904 d_stdio_stream_array=''
905 stdio_stream_array=''
906 sysman=''
907 trnl=''
908 uidformat=''
909 uidsign=''
910 uidsize=''
911 uidtype=''
912 archname64=''
913 use64bitall=''
914 use64bitint=''
915 ccflags_uselargefiles=''
916 ldflags_uselargefiles=''
917 libswanted_uselargefiles=''
918 uselargefiles=''
919 uselongdouble=''
920 usemorebits=''
921 usemultiplicity=''
922 nm_opt=''
923 nm_so_opt=''
924 runnm=''
925 usenm=''
926 useperlio=''
927 usesocks=''
928 d_oldpthreads=''
929 use5005threads=''
930 useithreads=''
931 usethreads=''
932 incpath=''
933 mips_type=''
934 usrinc=''
935 d_vendorarch=''
936 installvendorarch=''
937 vendorarch=''
938 vendorarchexp=''
939 d_vendorbin=''
940 installvendorbin=''
941 vendorbin=''
942 vendorbinexp=''
943 d_vendorlib=''
944 installvendorlib=''
945 vendorlib=''
946 vendorlib_stem=''
947 vendorlibexp=''
948 usevendorprefix=''
949 vendorprefix=''
950 vendorprefixexp=''
951 defvoidused=''
952 voidflags=''
953 pm_apiversion=''
954 xs_apiversion=''
955 CONFIG=''
956
957 define='define'
958 undef='undef'
959 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
960 rmlist=''
961
962 : We must find out about Eunice early
963 eunicefix=':'
964 if test -f /etc/unixtovms; then
965         eunicefix=/etc/unixtovms
966 fi
967 if test -f /etc/unixtovms.exe; then
968         eunicefix=/etc/unixtovms.exe
969 fi
970
971 i_whoami=''
972 : set useposix=false in your hint file to disable the POSIX extension.
973 useposix=true
974 : set useopcode=false in your hint file to disable the Opcode extension.
975 useopcode=true
976 : Trailing extension.  Override this in a hint file, if needed.
977 _exe=''
978 : Extra object files, if any, needed on this platform.
979 archobjs=''
980 archname=''
981 : Possible local include directories to search.
982 : Set locincpth to "" in a hint file to defeat local include searches.
983 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
984 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
985 :
986 : no include file wanted by default
987 inclwanted=''
988
989 groupstype=''
990 : change the next line if compiling for Xenix/286 on Xenix/386
991 xlibpth='/usr/lib/386 /lib/386'
992 : Possible local library directories to search.
993 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
994 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
995
996 : general looking path for locating libraries
997 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
998 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
999 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1000 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1001 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1002
1003 : Private path used by Configure to find libraries.  Its value
1004 : is prepended to libpth. This variable takes care of special
1005 : machines, like the mips.  Usually, it should be empty.
1006 plibpth=''
1007
1008 : default library list
1009 libswanted=''
1010 : some systems want to use only the non-versioned libso:s
1011 ignore_versioned_solibs=''
1012 archname64=''
1013 ccflags_uselargefiles=''
1014 ldflags_uselargefiles=''
1015 libswanted_uselargefiles=''
1016 : set usemultiplicity on the Configure command line to enable multiplicity.
1017 : set usesocks on the Configure command line to enable socks.
1018 : set usethreads on the Configure command line to enable threads.
1019 : full support for void wanted by default
1020 defvoidused=15
1021
1022 : List of libraries we want.
1023 : If anyone needs -lnet, put it in a hint file.
1024 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1025 libswanted="$libswanted dld ld sun m c cposix posix"
1026 libswanted="$libswanted ndir dir crypt sec"
1027 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1028 : We probably want to search /usr/shlib before most other libraries.
1029 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1030 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1031 glibpth="/usr/shlib $glibpth"
1032 : Do not use vfork unless overridden by a hint file.
1033 usevfork=false
1034
1035 : Find the basic shell for Bourne shell scripts
1036 case "$sh" in
1037 '')
1038         case "$SYSTYPE" in
1039         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1040         *) xxx='/bin/sh';;
1041         esac
1042         if test -f "$xxx"; then
1043                 sh="$xxx"
1044         else
1045                 : Build up a list and do a single loop so we can 'break' out.
1046                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1047                 for xxx in sh bash ksh pdksh ash; do
1048                         for p in $pth; do
1049                                 try="$try ${p}/${xxx}"
1050                         done
1051                 done
1052                 for xxx in $try; do
1053                         if test -f "$xxx"; then
1054                                 sh="$xxx";
1055                                 break
1056                         elif test -f "$xxx.exe"; then
1057                                 sh="$xxx";
1058                                 break
1059                         fi
1060                 done
1061         fi
1062         ;;
1063 esac
1064
1065 case "$sh" in
1066 '')     cat <<EOM >&2
1067 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1068
1069 Usually it's in /bin/sh.  How did you even get this far?
1070 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1071 we'll try to straighten this all out.
1072 EOM
1073         exit 1
1074         ;;
1075 esac
1076
1077 : see if sh knows # comments
1078 if `$sh -c '#' >/dev/null 2>&1`; then
1079         shsharp=true
1080         spitshell=cat
1081         xcat=/bin/cat
1082         test -f $xcat || xcat=/usr/bin/cat
1083         echo "#!$xcat" >try
1084         $eunicefix try
1085         chmod +x try
1086         ./try > today
1087         if test -s today; then
1088                 sharpbang='#!'
1089         else
1090                 echo "#! $xcat" > try
1091                 $eunicefix try
1092                 chmod +x try
1093                 ./try > today
1094                 if test -s today; then
1095                         sharpbang='#! '
1096                 else
1097                         sharpbang=': use '
1098                 fi
1099         fi
1100 else
1101         echo " "
1102         echo "Your $sh doesn't grok # comments--I will strip them later on."
1103         shsharp=false
1104         cd ..
1105         echo "exec grep -v '^[  ]*#'" >spitshell
1106         chmod +x spitshell
1107         $eunicefix spitshell
1108         spitshell=`pwd`/spitshell
1109         cd UU
1110         echo "I presume that if # doesn't work, #! won't work either!"
1111         sharpbang=': use '
1112 fi
1113 rm -f try today
1114
1115 : figure out how to guarantee sh startup
1116 case "$startsh" in
1117 '') startsh=${sharpbang}${sh} ;;
1118 *)
1119 esac
1120 cat >try <<EOSS
1121 $startsh
1122 set abc
1123 test "$?abc" != 1
1124 EOSS
1125
1126 chmod +x try
1127 $eunicefix try
1128 if ./try; then
1129         : echo "Yup, it does."
1130 else
1131         echo "Hmm... '$startsh' does not guarantee sh startup..."
1132         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1133 fi
1134 rm -f try
1135
1136
1137 : Save command line options in file UU/cmdline.opt for later use in
1138 : generating config.sh.
1139 cat > cmdline.opt <<EOSH
1140 # Configure command line arguments.
1141 config_arg0='$0'
1142 config_args='$*'
1143 config_argc=$#
1144 EOSH
1145 argn=1
1146 for arg in "$@"; do
1147         cat >>cmdline.opt <<EOSH
1148 config_arg$argn='$arg'
1149 EOSH
1150         argn=`expr $argn + 1`
1151 done
1152
1153 : produce awk script to parse command line options
1154 cat >options.awk <<'EOF'
1155 BEGIN {
1156         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1157
1158         len = length(optstr);
1159         for (i = 1; i <= len; i++) {
1160                 c = substr(optstr, i, 1);
1161                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1162                 if (a == ":") {
1163                         arg[c] = 1;
1164                         i++;
1165                 }
1166                 opt[c] = 1;
1167         }
1168 }
1169 {
1170         expect = 0;
1171         str = $0;
1172         if (substr(str, 1, 1) != "-") {
1173                 printf("'%s'\n", str);
1174                 next;
1175         }
1176         len = length($0);
1177         for (i = 2; i <= len; i++) {
1178                 c = substr(str, i, 1);
1179                 if (!opt[c]) {
1180                         printf("-%s\n", substr(str, i));
1181                         next;
1182                 }
1183                 printf("-%s\n", c);
1184                 if (arg[c]) {
1185                         if (i < len)
1186                                 printf("'%s'\n", substr(str, i + 1));
1187                         else
1188                                 expect = 1;
1189                         next;
1190                 }
1191         }
1192 }
1193 END {
1194         if (expect)
1195                 print "?";
1196 }
1197 EOF
1198
1199 : process the command line options
1200 set X `for arg in "$@"; do echo "X$arg"; done |
1201         sed -e s/X// | awk -f options.awk`
1202 eval "set $*"
1203 shift
1204 rm -f options.awk
1205
1206 : set up default values
1207 fastread=''
1208 reuseval=false
1209 config_sh=''
1210 alldone=''
1211 error=''
1212 silent=''
1213 extractsh=''
1214 override=''
1215 knowitall=''
1216 rm -f optdef.sh posthint.sh
1217 cat >optdef.sh <<EOS
1218 $startsh
1219 EOS
1220
1221
1222 : option parsing
1223 while test $# -gt 0; do
1224         case "$1" in
1225         -d) shift; fastread=yes;;
1226         -e) shift; alldone=cont;;
1227         -f)
1228                 shift
1229                 cd ..
1230                 if test -r "$1"; then
1231                         config_sh="$1"
1232                 else
1233                         echo "$me: cannot read config file $1." >&2
1234                         error=true
1235                 fi
1236                 cd UU
1237                 shift;;
1238         -h) shift; error=true;;
1239         -r) shift; reuseval=true;;
1240         -s) shift; silent=true; realsilent=true;;
1241         -E) shift; alldone=exit;;
1242         -K) shift; knowitall=true;;
1243         -O) shift; override=true;;
1244         -S) shift; silent=true; extractsh=true;;
1245         -D)
1246                 shift
1247                 case "$1" in
1248                 *=)
1249                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1250                         echo "$me: ignoring -D $1" >&2
1251                         ;;
1252                 *=*) echo "$1" | \
1253                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1254                 *) echo "$1='define'" >> optdef.sh;;
1255                 esac
1256                 shift
1257                 ;;
1258         -U)
1259                 shift
1260                 case "$1" in
1261                 *=) echo "$1" >> optdef.sh;;
1262                 *=*)
1263                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1264                         echo "$me: ignoring -U $1" >&2
1265                         ;;
1266                 *) echo "$1='undef'" >> optdef.sh;;
1267                 esac
1268                 shift
1269                 ;;
1270         -A)
1271             shift
1272             xxx=''
1273             yyy="$1"
1274             zzz=''
1275             uuu=undef
1276             case "$yyy" in
1277             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1278                  case "$zzz" in
1279                  *:*) zzz='' ;;
1280                  *)   xxx=append
1281                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1282                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1283                  esac
1284                  ;;
1285             esac
1286             case "$xxx" in
1287             '')  case "$yyy" in
1288                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1289                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1290                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1291                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1292                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1293                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1294                  esac
1295                  ;;       
1296             esac
1297             case "$xxx" in
1298             append)
1299                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1300             clear)
1301                 echo "$yyy=''"                  >> posthint.sh ;;
1302             define)
1303                 case "$zzz" in
1304                 '') zzz=define ;;
1305                 esac
1306                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1307             eval)
1308                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1309             prepend)
1310                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1311             undef)
1312                 case "$zzz" in
1313                 '') zzz="$uuu" ;;
1314                 esac
1315                 echo "$yyy=$zzz"                >> posthint.sh ;;
1316             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1317             esac
1318             shift
1319             ;;
1320         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1321             exit 0;;
1322         --) break;;
1323         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1324         *) break;;
1325         esac
1326 done
1327
1328 case "$error" in
1329 true)
1330         cat >&2 <<EOM
1331 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1332                  [-U symbol] [-U symbol=] [-A command:symbol...]
1333   -d : use defaults for all answers.
1334   -e : go on without questioning past the production of config.sh.
1335   -f : specify an alternate default configuration file.
1336   -h : print this help message and exit (with an error status).
1337   -r : reuse C symbols value if possible (skips costly nm extraction).
1338   -s : silent mode, only echoes questions and essential information.
1339   -D : define symbol to have some value:
1340          -D symbol         symbol gets the value 'define'
1341          -D symbol=value   symbol gets the value 'value'
1342   -E : stop at the end of questions, after having produced config.sh.
1343   -K : do not use unless you know what you are doing.
1344   -O : let -D and -U override definitions from loaded configuration file.
1345   -S : perform variable substitutions on all .SH files (can mix with -f)
1346   -U : undefine symbol:
1347          -U symbol    symbol gets the value 'undef'
1348          -U symbol=   symbol gets completely empty
1349   -A : manipulate symbol after the platform specific hints have been applied:
1350          -A symbol=value                append " "value to symbol
1351          -A append:symbol=value         append value to symbol
1352          -A define:symbol=value         define symbol to have value
1353          -A clear:symbol                define symbol to be ''
1354          -A define:symbol               define symbol to be 'define'
1355          -A eval:symbol=value           define symbol to be eval of value
1356          -A prepend:symbol=value        prepend value to symbol
1357          -A undef:symbol                define symbol to be 'undef'
1358          -A undef:symbol=               define symbol to be ''
1359   -V : print version number and exit (with a zero status).
1360 EOM
1361         exit 1
1362         ;;
1363 esac
1364
1365 : Sanity checks
1366 case "$fastread$alldone" in
1367 yescont|yesexit) ;;
1368 *)
1369         case "$extractsh" in
1370         true) ;;
1371         *)
1372                 if test ! -t 0; then
1373                         echo "Say 'sh Configure', not 'sh <Configure'"
1374                         exit 1
1375                 fi
1376                 ;;
1377         esac
1378         ;;
1379 esac
1380
1381 exec 4>&1
1382 case "$silent" in
1383 true) exec 1>/dev/null;;
1384 esac
1385
1386 : run the defines and the undefines, if any, but leave the file out there...
1387 touch optdef.sh
1388 . ./optdef.sh
1389 : create the posthint manipulation script and leave the file out there...
1390 touch posthint.sh
1391
1392 : set package name
1393 package=perl5
1394 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1395 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1396 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1397 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1398 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1399 esac
1400
1401 : Some greps do not return status, grrr.
1402 echo "grimblepritz" >grimble
1403 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1404         contains=contains
1405 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1406         contains=grep
1407 else
1408         contains=contains
1409 fi
1410 rm -f grimble
1411 : the following should work in any shell
1412 case "$contains" in
1413 contains*)
1414         echo " "
1415         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1416         cat >contains <<'EOSS'
1417 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1418 EOSS
1419 chmod +x contains
1420 esac
1421
1422 : Find the path to the source tree
1423 case "$src" in
1424 '') case "$0" in
1425     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1426          case "$src" in
1427          /*)    ;;
1428          *)     src=`cd ../$src && pwd` ;;
1429          esac
1430          ;;
1431     *)   src='.';;
1432     esac;;
1433 esac
1434 case "$src" in
1435 '')     src=/
1436         rsrc=/
1437         ;;
1438 /*) rsrc="$src";;
1439 *) rsrc="../$src";;
1440 esac
1441 if test -f $rsrc/Configure && \
1442         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1443 then
1444    : found it, so we are ok.
1445 else
1446         rsrc=''
1447         for src in . .. ../.. ../../.. ../../../..; do
1448                 if test -f ../$src/Configure && \
1449                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1450                 then
1451                         rsrc=../$src
1452                         break
1453                 fi
1454         done
1455 fi
1456 case "$rsrc" in
1457 '')
1458         cat <<EOM >&4
1459
1460 Sorry, I can't seem to locate the source dir for $package.  Please start
1461 Configure with an explicit path -- i.e. /some/path/Configure.
1462
1463 EOM
1464         exit 1
1465         ;;
1466 ../.)   rsrc='..';;
1467 *)
1468         echo " "
1469         echo "Sources for $package found in \"$src\"." >&4
1470         ;;
1471 esac
1472
1473 : script used to extract .SH files with variable substitutions
1474 cat >extract <<'EOS'
1475 CONFIGDOTSH=true
1476 echo "Doing variable substitutions on .SH files..."
1477 if test -f $src/MANIFEST; then
1478         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1479 else
1480         echo "(Looking for .SH files under the source directory.)"
1481         set x `(cd $src; find . -name "*.SH" -print)`
1482 fi
1483 shift
1484 case $# in
1485 0) set x `(cd $src; echo *.SH)`; shift;;
1486 esac
1487 if test ! -f $src/$1; then
1488         shift
1489 fi
1490 mkdir_p='
1491 name=$1;
1492 create="";
1493 while test $name; do
1494         if test ! -d "$name"; then
1495                 create="$name $create";
1496                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1497                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1498         else
1499                 name="";
1500         fi;
1501 done;
1502 for file in $create; do
1503         mkdir $file;
1504 done
1505 '
1506 for file in $*; do
1507         case "$src" in
1508         ".")
1509                 case "$file" in
1510                 */*)
1511                         dir=`expr X$file : 'X\(.*\)/'`
1512                         file=`expr X$file : 'X.*/\(.*\)'`
1513                         (cd $dir && . ./$file)
1514                         ;;
1515                 *)
1516                         . ./$file
1517                         ;;
1518                 esac
1519                 ;;
1520         *)
1521                 case "$file" in
1522                 */*)
1523                         dir=`expr X$file : 'X\(.*\)/'`
1524                         file=`expr X$file : 'X.*/\(.*\)'`
1525                         (set x $dir; shift; eval $mkdir_p)
1526                         sh <$src/$dir/$file
1527                         ;;
1528                 *)
1529                         sh <$src/$file
1530                         ;;
1531                 esac
1532                 ;;
1533         esac
1534 done
1535 if test -f $src/config_h.SH; then
1536         if test ! -f config.h; then
1537         : oops, they left it out of MANIFEST, probably, so do it anyway.
1538         . $src/config_h.SH
1539         fi
1540 fi
1541 EOS
1542
1543 : extract files and exit if asked to do so
1544 case "$extractsh" in
1545 true)
1546         case "$realsilent" in
1547         true) ;;
1548         *) exec 1>&4;;
1549         esac
1550         case "$config_sh" in
1551         '') config_sh='config.sh';;
1552         esac
1553         echo " "
1554         echo "Fetching answers from $config_sh..."
1555         cd ..
1556         . $config_sh
1557         test "$override" && . ./optdef.sh
1558         echo " "
1559         . UU/extract
1560         rm -rf UU
1561         echo "Done."
1562         exit 0
1563         ;;
1564 esac
1565
1566 : Eunice requires " " instead of "", can you believe it
1567 echo " "
1568 : Here we go...
1569 echo "Beginning of configuration questions for $package."
1570
1571 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1572
1573 : first determine how to suppress newline on echo command
1574 echo " "
1575 echo "Checking echo to see how to suppress newlines..."
1576 (echo "hi there\c" ; echo " ") >.echotmp
1577 if $contains c .echotmp >/dev/null 2>&1 ; then
1578         echo "...using -n."
1579         n='-n'
1580         c=''
1581 else
1582         cat <<'EOM'
1583 ...using \c
1584 EOM
1585         n=''
1586         c='\c'
1587 fi
1588 echo $n "The star should be here-->$c"
1589 echo '*'
1590 rm -f .echotmp
1591
1592 : Now test for existence of everything in MANIFEST
1593 echo " "
1594 if test -f $rsrc/MANIFEST; then
1595         echo "First let's make sure your kit is complete.  Checking..." >&4
1596         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1597         rm -f missing
1598         tmppwd=`pwd`
1599         for filelist in x??; do
1600                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1601         done
1602         if test -s missing; then
1603                 cat missing >&4
1604                 cat >&4 <<'EOM'
1605
1606 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1607
1608 You have the option of continuing the configuration process, despite the
1609 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1610 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1611 and contact the author (perlbug@perl.org).
1612
1613 EOM
1614                 echo $n "Continue? [n] $c" >&4
1615                 read ans
1616                 case "$ans" in
1617                 y*)
1618                         echo "Continuing..." >&4
1619                         rm -f missing
1620                         ;;
1621                 *)
1622                         echo "ABORTING..." >&4
1623                         kill $$
1624                         ;;
1625                 esac
1626         else
1627                 echo "Looks good..."
1628         fi
1629 else
1630         echo "There is no MANIFEST file.  I hope your kit is complete !"
1631 fi
1632 rm -f missing x??
1633
1634 echo " "
1635 : Find the appropriate value for a newline for tr
1636 if test -n "$DJGPP"; then
1637        trnl='\012'
1638 fi
1639 if test X"$trnl" = X; then
1640         case "`echo foo|tr '\n' x 2>/dev/null`" in
1641         foox) trnl='\n' ;;
1642         esac
1643 fi
1644 if test X"$trnl" = X; then
1645         case "`echo foo|tr '\012' x 2>/dev/null`" in
1646         foox) trnl='\012' ;;
1647         esac
1648 fi
1649 if test X"$trnl" = X; then
1650         cat <<EOM >&2
1651
1652 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1653
1654 EOM
1655         exit 1
1656 fi
1657
1658 : compute the number of columns on the terminal for proper question formatting
1659 case "$COLUMNS" in
1660 '') COLUMNS='80';;
1661 esac
1662
1663 : set up the echo used in my read
1664 myecho="case \"\$xxxm\" in
1665 '') echo $n \"\$rp $c\" >&4;;
1666 *) case \"\$rp\" in
1667         '') echo $n \"[\$xxxm] $c\";;
1668         *)
1669                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1670                         echo \"\$rp\" >&4
1671                         echo $n \"[\$xxxm] $c\" >&4
1672                 else
1673                         echo $n \"\$rp [\$xxxm] $c\" >&4
1674                 fi
1675                 ;;
1676         esac;;
1677 esac"
1678
1679 : now set up to do reads with possible shell escape and default assignment
1680 cat <<EOSC >myread
1681 $startsh
1682 xxxm=\$dflt
1683 $myecho
1684 ans='!'
1685 case "\$fastread" in
1686 yes) case "\$dflt" in
1687         '') ;;
1688         *) ans='';
1689                 case "\$silent-\$rp" in
1690                 true-) ;;
1691                 *) echo " " >&4;;
1692                 esac;;
1693         esac;;
1694 *) case "\$silent" in
1695         true) case "\$rp" in
1696                 '') ans='';;
1697                 esac;;
1698         esac;;
1699 esac
1700 while expr "X\$ans" : "X!" >/dev/null; do
1701         read answ
1702         set x \$xxxm
1703         shift
1704         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1705         case  "\$answ" in
1706         "!")
1707                 sh 1>&4
1708                 echo " "
1709                 $myecho
1710                 ;;
1711         !*)
1712                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1713                 shift
1714                 sh 1>&4 -c "\$*"
1715                 echo " "
1716                 $myecho
1717                 ;;
1718         "\$ans")
1719                 case "\$ans" in
1720                 \\&*)
1721                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1722                         shift
1723                         case "\$1" in
1724                         -d)
1725                                 fastread=yes
1726                                 echo "(OK, I'll run with -d after this question.)" >&4
1727                                 ;;
1728                         -*)
1729                                 echo "*** Sorry, \$1 not supported yet." >&4
1730                                 ;;
1731                         esac
1732                         $myecho
1733                         ans=!
1734                         ;;
1735                 esac;;
1736         *)
1737                 case "\$aok" in
1738                 y)
1739                         echo "*** Substitution done -- please confirm."
1740                         xxxm="\$ans"
1741                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1742                         xxxm="\$ans"
1743                         ans=!
1744                         ;;
1745                 *)
1746                         echo "*** Error -- try again."
1747                         ans=!
1748                         ;;
1749                 esac
1750                 $myecho
1751                 ;;
1752         esac
1753         case "\$ans\$xxxm\$nostick" in
1754         '')
1755                 ans=!
1756                 $myecho
1757                 ;;
1758         esac
1759 done
1760 case "\$ans" in
1761 '') ans="\$xxxm";;
1762 esac
1763 EOSC
1764
1765 : create .config dir to save info across Configure sessions
1766 test -d ../.config || mkdir ../.config
1767 cat >../.config/README <<EOF
1768 This directory created by Configure to save information that should
1769 persist across sessions for $package.
1770
1771 You may safely delete it if you wish.
1772 EOF
1773
1774 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1775 case "$usedevel" in
1776 $define|true|[yY]*) ;;
1777 *) case "$xversion" in
1778    *[13579])
1779         cat >&4 <<EOH
1780 *** WHOA THERE!!! ***
1781
1782     This is an UNSTABLE DEVELOPMENT release.
1783     The version of this $package distribution is $xversion, that is, odd,
1784     (as opposed to even) and that signifies a development release.
1785     If you want a maintenance release, you want an even-numbered version.)
1786
1787     Do ***NOT*** install this into production use.
1788     Data corruption and crashes are possible.
1789
1790     It is most seriously suggested that you do not continue any further
1791     unless you want to help in developing and debugging Perl.
1792
1793 EOH
1794         rp='Do you really want to continue?'
1795         dflt='n'
1796         . ./myread
1797         case "$ans" in
1798         [yY]) echo >&4 "Okay, continuing." ;;
1799         *) echo >&4 "Okay, bye."
1800            exit 1
1801            ;;
1802         esac
1803         ;;
1804     esac
1805     ;;
1806 esac
1807
1808 : general instructions
1809 needman=true
1810 firsttime=true
1811 user=`(logname) 2>/dev/null`
1812 case "$user" in
1813 '') user=`whoami 2>&1`;;
1814 esac
1815 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1816         firsttime=false
1817         echo " "
1818         rp='Would you like to see the instructions?'
1819         dflt=n
1820         . ./myread
1821         case "$ans" in
1822         [yY]*) ;;
1823         *) needman=false;;
1824         esac
1825 fi
1826 if $needman; then
1827         cat <<EOH
1828
1829 This installation shell script will examine your system and ask you questions
1830 to determine how the perl5 package should be installed. If you get
1831 stuck on a question, you may use a ! shell escape to start a subshell or
1832 execute a command.  Many of the questions will have default answers in square
1833 brackets; typing carriage return will give you the default.
1834
1835 On some of the questions which ask for file or directory names you are allowed
1836 to use the ~name construct to specify the login directory belonging to "name",
1837 even if you don't have a shell which knows about that.  Questions where this is
1838 allowed will be marked "(~name ok)".
1839
1840 EOH
1841         rp=''
1842         dflt='Type carriage return to continue'
1843         . ./myread
1844         cat <<'EOH'
1845
1846 The prompter used in this script allows you to use shell variables and
1847 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1848 in the default answer, as if the default line was a set of arguments given to a
1849 script shell.  This means you may also use $* to repeat the whole default line,
1850 so you do not have to re-type everything to add something to the default.
1851
1852 Everytime there is a substitution, you will have to confirm.  If there is an
1853 error (e.g. an unmatched backtick), the default answer will remain unchanged
1854 and you will be prompted again.
1855
1856 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1857 the questions and use the computed defaults (or the previous answers if there
1858 was already a config.sh file). Type 'Configure -h' for a list of options.
1859 You may also start interactively and then answer '& -d' at any prompt to turn
1860 on the non-interactive behaviour for the remainder of the execution.
1861
1862 EOH
1863         . ./myread
1864         cat <<EOH
1865
1866 Much effort has been expended to ensure that this shell script will run on any
1867 Unix system.  If despite that it blows up on yours, your best bet is to edit
1868 Configure and run it again.  If you can't run Configure for some reason,
1869 you'll have to generate a config.sh file by hand.  Whatever problems you
1870 have, let me (perlbug@perl.org) know how I blew it.
1871
1872 This installation script affects things in two ways:
1873
1874 1) it may do direct variable substitutions on some of the files included
1875    in this kit.
1876 2) it builds a config.h file for inclusion in C programs.  You may edit
1877    any of these files as the need arises after running this script.
1878
1879 If you make a mistake on a question, there is no easy way to back up to it
1880 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1881 files.  Configure will offer to let you do this before it runs the SH files.
1882
1883 EOH
1884         dflt='Type carriage return to continue'
1885         . ./myread
1886         case "$firsttime" in
1887         true) echo $user >>../.config/instruct;;
1888         esac
1889 fi
1890
1891 : find out where common programs are
1892 echo " "
1893 echo "Locating common programs..." >&4
1894 cat <<EOSC >loc
1895 $startsh
1896 case \$# in
1897 0) exit 1;;
1898 esac
1899 thing=\$1
1900 shift
1901 dflt=\$1
1902 shift
1903 for dir in \$*; do
1904         case "\$thing" in
1905         .)
1906         if test -d \$dir/\$thing; then
1907                 echo \$dir
1908                 exit 0
1909         fi
1910         ;;
1911         *)
1912         for thisthing in \$dir/\$thing; do
1913                 : just loop through to pick last item
1914         done
1915         if test -f \$thisthing; then
1916                 echo \$thisthing
1917                 exit 0
1918         elif test -f \$dir/\$thing.exe; then
1919                 if test -n "$DJGPP"; then
1920                         echo \$dir/\$thing.exe
1921                 else
1922                         : on Eunice apparently
1923                         echo \$dir/\$thing
1924                 fi
1925                 exit 0
1926         fi
1927         ;;
1928         esac
1929 done
1930 echo \$dflt
1931 exit 1
1932 EOSC
1933 chmod +x loc
1934 $eunicefix loc
1935 loclist="
1936 awk
1937 cat
1938 comm
1939 cp
1940 echo
1941 expr
1942 grep
1943 ls
1944 make
1945 mkdir
1946 rm
1947 sed
1948 sort
1949 touch
1950 tr
1951 uniq
1952 "
1953 trylist="
1954 Mcc
1955 ar
1956 byacc
1957 cpp
1958 csh
1959 date
1960 egrep
1961 gzip
1962 less
1963 ln
1964 more
1965 nm
1966 nroff
1967 pg
1968 test
1969 uname
1970 zip
1971 "
1972 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1973 pth="$pth /lib /usr/lib"
1974 for file in $loclist; do
1975         eval xxx=\$$file
1976         case "$xxx" in
1977         /*|?:[\\/]*)
1978                 if test -f "$xxx"; then
1979                         : ok
1980                 else
1981                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1982                         xxx=`./loc $file $file $pth`
1983                 fi
1984                 ;;
1985         '') xxx=`./loc $file $file $pth`;;
1986         *) xxx=`./loc $xxx $xxx $pth`;;
1987         esac
1988         eval $file=$xxx
1989         eval _$file=$xxx
1990         case "$xxx" in
1991         /*)
1992                 echo $file is in $xxx.
1993                 ;;
1994         ?:[\\/]*)
1995                 echo $file is in $xxx.
1996                 ;;
1997         *)
1998                 echo "I don't know where '$file' is, and my life depends on it." >&4
1999                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2000                 exit 1
2001                 ;;
2002         esac
2003 done
2004 echo " "
2005 echo "Don't worry if any of the following aren't found..."
2006 say=offhand
2007 for file in $trylist; do
2008         eval xxx=\$$file
2009         case "$xxx" in
2010         /*|?:[\\/]*)
2011                 if test -f "$xxx"; then
2012                         : ok
2013                 else
2014                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2015                         xxx=`./loc $file $file $pth`
2016                 fi
2017                 ;;
2018         '') xxx=`./loc $file $file $pth`;;
2019         *) xxx=`./loc $xxx $xxx $pth`;;
2020         esac
2021         eval $file=$xxx
2022         eval _$file=$xxx
2023         case "$xxx" in
2024         /*)
2025                 echo $file is in $xxx.
2026                 ;;
2027         ?:[\\/]*)
2028                 echo $file is in $xxx.
2029                 ;;
2030         *)
2031                 echo "I don't see $file out there, $say."
2032                 say=either
2033                 ;;
2034         esac
2035 done
2036 case "$egrep" in
2037 egrep)
2038         echo "Substituting grep for egrep."
2039         egrep=$grep
2040         ;;
2041 esac
2042 case "$ln" in
2043 ln)
2044         echo "Substituting cp for ln."
2045         ln=$cp
2046         ;;
2047 esac
2048 case "$test" in
2049 test)
2050         echo "Hopefully test is built into your sh."
2051         ;;
2052 *)
2053         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2054                 echo "Using the test built into your sh."
2055                 test=test
2056                 _test=test
2057         fi
2058         ;;
2059 esac
2060 case "$echo" in
2061 echo)
2062         echo "Hopefully echo is built into your sh."
2063         ;;
2064 '') ;;
2065 *)
2066         echo " "
2067 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2068         $echo $n "hi there$c" >foo1
2069         echo $n "hi there$c" >foo2
2070         if cmp foo1 foo2 >/dev/null 2>&1; then
2071                 echo "They are compatible.  In fact, they may be identical."
2072         else
2073                 case "$n" in
2074                 '-n') n='' c='\c';;
2075                 *) n='-n' c='';;
2076                 esac
2077                 cat <<FOO
2078 They are not compatible!  You are probably running ksh on a non-USG system.
2079 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2080 have echo built in and we may have to run some Bourne shell scripts.  That
2081 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2082
2083 FOO
2084                 $echo $n "The star should be here-->$c"
2085                 $echo "*"
2086         fi
2087         $rm -f foo1 foo2
2088         ;;
2089 esac
2090
2091 cat <<EOS >checkcc
2092 $startsh
2093 EOS
2094 cat <<'EOSC' >>checkcc
2095 case "$cc" in
2096 '') ;;
2097 *)  $rm -f try try.*
2098     $cat >try.c <<EOM
2099 int main(int argc, char *argv[]) {
2100   return 0;
2101 }
2102 EOM
2103     if $cc -o try try.c; then
2104        :
2105     else
2106         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2107         despair=yes
2108         trygcc=yes
2109         case "$cc" in
2110         *gcc*) trygcc=no ;;
2111         esac
2112         case "`$cc -v -c try.c 2>&1`" in
2113         *gcc*) trygcc=no ;;
2114         esac
2115         if $test X"$trygcc" = Xyes; then
2116             if gcc -o try -c try.c; then
2117                 echo " "
2118                 echo "You seem to have a working gcc, though." >&4
2119                 rp="Would you like to use it?"
2120                 dflt=y
2121                 if $test -f myread; then
2122                     . ./myread
2123                 else
2124                     if $test -f UU/myread; then
2125                         . ./UU/myread
2126                     else
2127                         echo "Cannot find myread, sorry.  Aborting." >&2
2128                         exit 1
2129                     fi
2130                 fi  
2131                 case "$ans" in
2132                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2133                 esac
2134             fi
2135         fi
2136         if $test X"$despair" = Xyes; then
2137             echo "You need to find a working C compiler." >&4
2138             echo "I cannot continue any further, aborting." >&4
2139             exit 1
2140         fi
2141     fi
2142     $rm -f try try.*
2143     ;;
2144 esac
2145 EOSC
2146
2147 : determine whether symbolic links are supported
2148 echo " "
2149 $touch blurfl
2150 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2151         echo "Symbolic links are supported." >&4
2152         lns="$ln -s"
2153 else
2154         echo "Symbolic links are NOT supported." >&4
2155         lns="$ln"
2156 fi
2157 $rm -f blurfl sym
2158
2159 : see whether [:lower:] and [:upper:] are supported character classes
2160 echo " "
2161 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2162 ABYZ)
2163         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2164         up='[:upper:]'
2165         low='[:lower:]'
2166         ;;
2167 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2168         # (0xc9 and 0xd1), therefore that is a nice testing point.
2169         if test "X$up" = X -o "X$low" = X; then
2170             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2171             ij) up='[A-Z]'
2172                 low='[a-z]'
2173                 ;;
2174             esac
2175         fi
2176         if test "X$up" = X -o "X$low" = X; then
2177             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2178             ij) up='A-Z'
2179                 low='a-z'
2180                 ;;
2181             esac
2182         fi
2183         if test "X$up" = X -o "X$low" = X; then
2184             case "`echo IJ | od -x 2>/dev/null`" in
2185             *C9D1*|*c9d1*)
2186                 echo "Hey, this might be EBCDIC." >&4
2187                 if test "X$up" = X -o "X$low" = X; then
2188                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2189                     ij) up='[A-IJ-RS-Z]'
2190                         low='[a-ij-rs-z]'
2191                         ;;
2192                     esac
2193                 fi
2194                 if test "X$up" = X -o "X$low" = X; then
2195                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2196                     ij) up='A-IJ-RS-Z'
2197                         low='a-ij-rs-z'
2198                         ;;
2199                     esac
2200                 fi
2201                 ;;
2202             esac
2203         fi
2204 esac
2205 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2206 ij)
2207     echo "Using $up and $low to convert case." >&4
2208     ;;
2209 *)
2210     echo "I don't know how to translate letters from upper to lower case." >&4
2211     echo "Your tr is not acting any way I know of." >&4
2212     exit 1
2213     ;;
2214 esac
2215 : set up the translation script tr, must be called with ./tr of course
2216 cat >tr <<EOSC
2217 $startsh
2218 case "\$1\$2" in
2219 '[A-Z][a-z]') exec $tr '$up' '$low';;
2220 '[a-z][A-Z]') exec $tr '$low' '$up';;
2221 esac
2222 exec $tr "\$@"
2223 EOSC
2224 chmod +x tr
2225 $eunicefix tr
2226
2227 : Try to determine whether config.sh was made on this system
2228 case "$config_sh" in
2229 '')
2230 myuname=`$uname -a 2>/dev/null`
2231 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2232 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2233 # because the A-Z/a-z are not consecutive.
2234 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2235         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2236 newmyuname="$myuname"
2237 dflt=n
2238 case "$knowitall" in
2239 '')
2240         if test -f ../config.sh; then
2241                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2242                         eval "`grep myuname= ../config.sh`"
2243                 fi
2244                 if test "X$myuname" = "X$newmyuname"; then
2245                         dflt=y
2246                 fi
2247         fi
2248         ;;
2249 *) dflt=y;;
2250 esac
2251
2252 : Get old answers from old config file if Configure was run on the
2253 : same system, otherwise use the hints.
2254 hint=default
2255 cd ..
2256 if test -f config.sh; then
2257         echo " "
2258         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2259         . UU/myread
2260         case "$ans" in
2261         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2262         *)  echo "Fetching default answers from your old config.sh file..." >&4
2263                 tmp_n="$n"
2264                 tmp_c="$c"
2265                 tmp_sh="$sh"
2266                 . ./config.sh
2267                 cp config.sh UU
2268                 n="$tmp_n"
2269                 c="$tmp_c"
2270                 : Older versions did not always set $sh.  Catch re-use of such
2271                 : an old config.sh.
2272                 case "$sh" in
2273                 '') sh="$tmp_sh" ;;
2274                 esac
2275                 hint=previous
2276                 ;;
2277         esac
2278 fi
2279 . ./UU/checkcc
2280 if test ! -f config.sh; then
2281         $cat <<EOM
2282
2283 First time through, eh?  I have some defaults handy for some systems
2284 that need some extra help getting the Configure answers right:
2285
2286 EOM
2287         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2288         dflt=''
2289         : Half the following guesses are probably wrong... If you have better
2290         : tests or hints, please send them to perlbug@perl.org
2291         : The metaconfig authors would also appreciate a copy...
2292         $test -f /irix && osname=irix
2293         $test -f /xenix && osname=sco_xenix
2294         $test -f /dynix && osname=dynix
2295         $test -f /dnix && osname=dnix
2296         $test -f /lynx.os && osname=lynxos
2297         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2298         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2299         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2300         $test -f /bin/mips && /bin/mips && osname=mips
2301         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2302                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2303         $test -d /usr/apollo/bin && osname=apollo
2304         $test -f /etc/saf/_sactab && osname=svr4
2305         $test -d /usr/include/minix && osname=minix
2306         if $test -d /MachTen -o -d /MachTen_Folder; then
2307                 osname=machten
2308                 if $test -x /sbin/version; then
2309                         osvers=`/sbin/version | $awk '{print $2}' |
2310                         $sed -e 's/[A-Za-z]$//'`
2311                 elif $test -x /usr/etc/version; then
2312                         osvers=`/usr/etc/version | $awk '{print $2}' |
2313                         $sed -e 's/[A-Za-z]$//'`
2314                 else
2315                         osvers="$2.$3"
2316                 fi
2317         fi
2318
2319         $test -f /sys/posix.dll &&
2320                 $test -f /usr/bin/what &&
2321                 set X `/usr/bin/what /sys/posix.dll` &&
2322                 $test "$3" = UWIN &&
2323                 osname=uwin &&
2324                 osvers="$5"
2325
2326         if $test -f $uname; then
2327                 set X $myuname
2328                 shift
2329
2330                 case "$5" in
2331                 fps*) osname=fps ;;
2332                 mips*)
2333                         case "$4" in
2334                         umips) osname=umips ;;
2335                         *) osname=mips ;;
2336                         esac;;
2337                 [23]100) osname=mips ;;
2338                 next*) osname=next ;;
2339                 i386*)
2340                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2341                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2342                                 osname='sco'
2343                                 osvers=$tmp
2344                         elif $test -f /etc/kconfig; then
2345                                 osname=isc
2346                                 if test "$lns" = "$ln -s"; then
2347                                         osvers=4
2348                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2349                                         osvers=3
2350                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2351                                         osvers=2
2352                                 fi
2353                         fi
2354                         tmp=''
2355                         ;;
2356                 pc*)
2357                         if test -n "$DJGPP"; then
2358                                 osname=dos
2359                                 osvers=djgpp
2360                         fi
2361                         ;;
2362                 esac
2363
2364                 case "$1" in
2365                 aix) osname=aix
2366                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2367                         case "$tmp" in
2368                         'not found') osvers="$4"."$3" ;;
2369                         '<3240'|'<>3240') osvers=3.2.0 ;;
2370                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2371                         '=3250'|'>3250') osvers=3.2.5 ;;
2372                         *) osvers=$tmp;;
2373                         esac
2374                         ;;
2375                 bsd386) osname=bsd386
2376                         osvers=`$uname -r`
2377                         ;;
2378                 cygwin*) osname=cygwin
2379                         osvers="$3"
2380                         ;;
2381                 *dc.osx) osname=dcosx
2382                         osvers="$3"
2383                         ;;
2384                 dnix) osname=dnix
2385                         osvers="$3"
2386                         ;;
2387                 domainos) osname=apollo
2388                         osvers="$3"
2389                         ;;
2390                 dgux) osname=dgux 
2391                         osvers="$3"
2392                         ;;
2393                 dynixptx*) osname=dynixptx
2394                         osvers=`echo "$4"|sed 's/^v//'`
2395                         ;;
2396                 freebsd) osname=freebsd 
2397                         osvers="$3" ;;
2398                 genix) osname=genix ;;
2399                 hp*) osname=hpux 
2400                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2401                         ;;
2402                 irix*) osname=irix
2403                         case "$3" in
2404                         4*) osvers=4 ;;
2405                         5*) osvers=5 ;;
2406                         *)      osvers="$3" ;;
2407                         esac
2408                         ;;
2409                 linux) osname=linux
2410                         case "$3" in
2411                         *)      osvers="$3" ;;
2412                         esac
2413                         ;;
2414                 MiNT) osname=mint
2415                         ;;
2416                 netbsd*) osname=netbsd
2417                         osvers="$3"
2418                         ;;
2419                 news-os) osvers="$3"
2420                         case "$3" in
2421                         4*) osname=newsos4 ;;
2422                         *) osname=newsos ;;
2423                         esac
2424                         ;;
2425                 next*) osname=next ;;
2426                 POSIX-BC | posix-bc ) osname=posix-bc
2427                         osvers="$3"
2428                         ;;
2429                 powerux | power_ux | powermax_os | powermaxos | \
2430                 powerunix | power_unix) osname=powerux
2431                         osvers="$3"
2432                         ;;
2433                 qnx) osname=qnx
2434                         osvers="$4"
2435                         ;;
2436                 solaris) osname=solaris
2437                         case "$3" in
2438                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2439                         *)      osvers="$3" ;;
2440                         esac
2441                         ;;
2442                 sunos) osname=sunos
2443                         case "$3" in
2444                         5*) osname=solaris
2445                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2446                         *)      osvers="$3" ;;
2447                         esac
2448                         ;;
2449                 titanos) osname=titanos
2450                         case "$3" in
2451                         1*) osvers=1 ;;
2452                         2*) osvers=2 ;;
2453                         3*) osvers=3 ;;
2454                         4*) osvers=4 ;;
2455                         *)      osvers="$3" ;;
2456                         esac
2457                         ;;
2458                 ultrix) osname=ultrix
2459                         osvers="$3"
2460                         ;;
2461                 osf1|mls+)      case "$5" in
2462                                 alpha)
2463                                         osname=dec_osf
2464                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2465                                         case "$osvers" in
2466                                         [1-9].[0-9]*) ;;
2467                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2468                                         esac
2469                                         ;;
2470                         hp*)    osname=hp_osf1  ;;
2471                         mips)   osname=mips_osf1 ;;
2472                         esac
2473                         ;;
2474                 unixware) osname=svr5
2475                         osvers="$4"
2476                         ;;
2477                 uts) osname=uts
2478                         osvers="$3"
2479                         ;;
2480                 $2) case "$osname" in
2481                         *isc*) ;;
2482                         *freebsd*) ;;
2483                         svr*)
2484                                 : svr4.x or possibly later
2485                                 case "svr$3" in 
2486                                 ${osname}*)
2487                                         osname=svr$3
2488                                         osvers=$4
2489                                         ;;
2490                                 esac
2491                                 case "$osname" in
2492                                 svr4.0)
2493                                         : Check for ESIX
2494                                         if test -f /stand/boot ; then
2495                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2496                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2497                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2498                                                         if test -n "$isesix"; then
2499                                                                 osname=esix4
2500                                                         fi
2501                                                 fi
2502                                         fi
2503                                         ;;
2504                                 esac
2505                                 ;;
2506                         *)      if test -f /etc/systemid; then
2507                                         osname=sco
2508                                         set `echo $3 | $sed 's/\./ /g'` $4
2509                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2510                                                 osvers=$1.$2.$3
2511                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2512                                                 osvers=$1.$2
2513                                         elif $test -f $src/hints/sco_$1.sh; then
2514                                                 osvers=$1
2515                                         fi
2516                                 else
2517                                         case "$osname" in
2518                                         '') : Still unknown.  Probably a generic Sys V.
2519                                                 osname="sysv"
2520                                                 osvers="$3"
2521                                                 ;;
2522                                         esac
2523                                 fi
2524                                 ;;
2525                         esac
2526                         ;;
2527                 *)      case "$osname" in
2528                         '') : Still unknown.  Probably a generic BSD.
2529                                 osname="$1"
2530                                 osvers="$3"
2531                                 ;;
2532                         esac
2533                         ;;
2534                 esac
2535         else
2536                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2537                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2538                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2539                                 osname=news_os
2540                         fi
2541                         $rm -f UU/kernel.what
2542                 elif test -d c:/.; then
2543                         set X $myuname
2544                         osname=os2
2545                         osvers="$5"
2546                 fi
2547         fi
2548         
2549         : Now look for a hint file osname_osvers, unless one has been
2550         : specified already.
2551         case "$hintfile" in
2552         ''|' ')
2553                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2554                 : Also try without trailing minor version numbers.
2555                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2556                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2557                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2558                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2559                 case "$file" in
2560                 '') dflt=none ;;
2561                 *)  case "$osvers" in
2562                         '') dflt=$file
2563                                 ;;
2564                         *)  if $test -f $src/hints/$file.sh ; then
2565                                         dflt=$file
2566                                 elif $test -f $src/hints/$xfile.sh ; then
2567                                         dflt=$xfile
2568                                 elif $test -f $src/hints/$xxfile.sh ; then
2569                                         dflt=$xxfile
2570                                 elif $test -f $src/hints/$xxxfile.sh ; then
2571                                         dflt=$xxxfile
2572                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2573                                         dflt=$xxxxfile
2574                                 elif $test -f "$src/hints/${osname}.sh" ; then
2575                                         dflt="${osname}"
2576                                 else
2577                                         dflt=none
2578                                 fi
2579                                 ;;
2580                         esac
2581                         ;;
2582                 esac
2583                 if $test -f Policy.sh ; then
2584                         case "$dflt" in
2585                         *Policy*) ;;
2586                         none) dflt="Policy" ;;
2587                         *) dflt="Policy $dflt" ;;
2588                         esac
2589                 fi
2590                 ;;
2591         *)
2592                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2593                 ;;
2594         esac
2595
2596         if $test -f Policy.sh ; then
2597                 $cat <<EOM
2598
2599 There's also a Policy hint file available, which should make the
2600 site-specific (policy) questions easier to answer.
2601 EOM
2602
2603         fi
2604
2605         $cat <<EOM
2606
2607 You may give one or more space-separated answers, or "none" if appropriate.
2608 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2609 is a good thing.  DO NOT give a wrong version or a wrong OS.
2610
2611 EOM
2612
2613         rp="Which of these apply, if any?"
2614         . UU/myread
2615         tans=$ans
2616         for file in $tans; do
2617                 if $test X$file = XPolicy -a -f Policy.sh; then
2618                         . Policy.sh
2619                         $cat Policy.sh >> UU/config.sh
2620                 elif $test -f $src/hints/$file.sh; then
2621                         . $src/hints/$file.sh
2622                         $cat $src/hints/$file.sh >> UU/config.sh
2623                 elif $test X$tans = X -o X$tans = Xnone ; then
2624                         : nothing
2625                 else
2626                         : Give one chance to correct a possible typo.
2627                         echo "$file.sh does not exist"
2628                         dflt=$file
2629                         rp="hint to use instead?"
2630                         . UU/myread
2631                         for file in $ans; do
2632                                 if $test -f "$src/hints/$file.sh"; then
2633                                         . $src/hints/$file.sh
2634                                         $cat $src/hints/$file.sh >> UU/config.sh
2635                                 elif $test X$ans = X -o X$ans = Xnone ; then
2636                                         : nothing
2637                                 else
2638                                         echo "$file.sh does not exist -- ignored."
2639                                 fi
2640                         done
2641                 fi
2642         done
2643
2644         hint=recommended
2645         : Remember our hint file for later.
2646         if $test -f "$src/hints/$file.sh" ; then
2647                 hintfile="$file"
2648         else
2649                 hintfile=''
2650         fi
2651 fi
2652 cd UU
2653 ;;
2654 *)
2655         echo " "
2656         echo "Fetching default answers from $config_sh..." >&4
2657         tmp_n="$n"
2658         tmp_c="$c"
2659         cd ..
2660         cp $config_sh config.sh 2>/dev/null
2661         chmod +w config.sh
2662         . ./config.sh
2663         cd UU
2664         cp ../config.sh .
2665         n="$tmp_n"
2666         c="$tmp_c"
2667         hint=previous
2668         ;;
2669 esac
2670 test "$override" && . ./optdef.sh
2671 myuname="$newmyuname"
2672
2673 : Restore computed paths
2674 for file in $loclist $trylist; do
2675         eval $file="\$_$file"
2676 done
2677
2678 cat << EOM
2679
2680 Configure uses the operating system name and version to set some defaults.
2681 The default value is probably right if the name rings a bell. Otherwise,
2682 since spelling matters for me, either accept the default or answer "none"
2683 to leave it blank.
2684
2685 EOM
2686 case "$osname" in
2687         ''|' ')
2688                 case "$hintfile" in
2689                 ''|' '|none) dflt=none ;;
2690                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2691                 esac
2692                 ;;
2693         *) dflt="$osname" ;;
2694 esac
2695 rp="Operating system name?"
2696 . ./myread
2697 case "$ans" in
2698 none)  osname='' ;;
2699 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2700 esac
2701 echo " "
2702 case "$osvers" in
2703         ''|' ')
2704                 case "$hintfile" in
2705                 ''|' '|none) dflt=none ;;
2706                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2707                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2708                         case "$dflt" in
2709                         ''|' ') dflt=none ;;
2710                         esac
2711                         ;;
2712                 esac
2713                 ;;
2714         *) dflt="$osvers" ;;
2715 esac
2716 rp="Operating system version?"
2717 . ./myread
2718 case "$ans" in
2719 none)  osvers='' ;;
2720 *) osvers="$ans" ;;
2721 esac
2722
2723
2724 . ./posthint.sh
2725
2726 : who configured the system
2727 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2728 cf_by=`(logname) 2>/dev/null`
2729 case "$cf_by" in
2730 "")
2731         cf_by=`(whoami) 2>/dev/null`
2732         case "$cf_by" in
2733         "") cf_by=unknown ;;
2734         esac ;;
2735 esac
2736
2737 : set up the script used to warn in case of inconsistency
2738 cat <<EOS >whoa
2739 $startsh
2740 EOS
2741 cat <<'EOSC' >>whoa
2742 dflt=y
2743 echo " "
2744 echo "*** WHOA THERE!!! ***" >&4
2745 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2746 rp="    Keep the $hint value?"
2747 . ./myread
2748 case "$ans" in
2749 y) td=$was; tu=$was;;
2750 esac
2751 EOSC
2752
2753 : function used to set $1 to $val
2754 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2755 case "$val$was" in
2756 $define$undef) . ./whoa; eval "$var=\$td";;
2757 $undef$define) . ./whoa; eval "$var=\$tu";;
2758 *) eval "$var=$val";;
2759 esac'
2760
2761 case "$usethreads" in
2762 $define|true|[yY]*)     dflt='y';;
2763 *) dflt='n';;
2764 esac
2765 cat <<EOM
2766
2767 Perl can be built to take advantage of threads on some systems.
2768 To do so, Configure can be run with -Dusethreads.
2769
2770 Note that threading is a highly experimental feature, and
2771 some known race conditions still remain.  If you choose to try
2772 it, be very sure to not actually deploy it for production
2773 purposes.  README.threads has more details, and is required
2774 reading if you enable threads.
2775
2776 If this doesn't make any sense to you, just accept the default '$dflt'.
2777 EOM
2778 rp='Build a threading Perl?'
2779 . ./myread
2780 case "$ans" in
2781 y|Y)    val="$define" ;;
2782 *)      val="$undef" ;;
2783 esac
2784 set usethreads
2785 eval $setvar
2786
2787 case "$usethreads" in
2788 $define)
2789         $cat <<EOM
2790
2791 As of 5.5.640, Perl has two different internal threading implementations,
2792 the 5.005 version (5005threads) and an interpreter-based version
2793 (ithreads) that has one interpreter per thread.  Both are very 
2794 experimental.  This arrangement exists to help developers work out
2795 which one is better.
2796
2797 If you're a casual user, you probably don't want interpreter-threads
2798 at this time.  There doesn't yet exist a way to create threads from
2799 within Perl in this model, i.e., "use Thread;" will NOT work.
2800 EOM
2801         : Default to ithreads unless overridden on command line or with
2802         : old config.sh
2803         dflt='y'
2804         case "$use5005threads" in
2805                 $define|true|[yY]*) dflt='n';;
2806         esac
2807         case "$useithreads" in
2808                 $undef|false|[nN]*) dflt='n';;
2809         esac
2810         rp='Use interpreter-based ithreads?'
2811         . ./myread
2812         case "$ans" in
2813         y|Y)    val="$define" ;;
2814         *)      val="$undef" ;;
2815         esac
2816         set useithreads
2817         eval $setvar
2818         : Now set use5005threads to the opposite value.
2819         case "$useithreads" in
2820         $define) val="$undef" ;;
2821         *) val="$define" ;;
2822         esac
2823         set use5005threads
2824         eval $setvar
2825         ;;
2826 *)
2827         useithreads="$undef"
2828         use5005threads="$undef"
2829         ;;
2830 esac
2831
2832 case "$d_oldpthreads" in
2833 '')     : Configure tests would be welcome here.  For now, assume undef.
2834         val="$undef" ;;
2835 *)      val="$d_oldpthreads" ;;
2836 esac
2837 set d_oldpthreads
2838 eval $setvar
2839
2840
2841 case "$usethreads" in
2842 "$define"|true|[yY]*)
2843 : Look for a hint-file generated 'call-back-unit'.  If the
2844 : user has specified that a threading perl is to be built,
2845 : we may need to set or change some other defaults.
2846         if $test -f usethreads.cbu; then
2847                 echo "Your platform has some specific hints for threaded builds, using them..."
2848                 . ./usethreads.cbu
2849         else
2850                 $cat <<EOM
2851 (Your platform doesn't have any specific hints for threaded builds.
2852  Assuming POSIX threads, then.)
2853 EOM
2854         fi
2855         ;;
2856 esac
2857
2858 cat <<EOM
2859
2860 Perl can be built so that multiple Perl interpreters can coexist
2861 within the same Perl executable.
2862 EOM
2863
2864 case "$useithreads" in
2865 $define)
2866         cat <<EOM
2867 This multiple interpreter support is required for interpreter-based threads.
2868 EOM
2869         val="$define"
2870         ;;
2871 *)      case "$usemultiplicity" in
2872         $define|true|[yY]*)     dflt='y';;
2873         *) dflt='n';;
2874         esac
2875         echo " "
2876         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2877         rp='Build Perl for multiplicity?'
2878         . ./myread
2879         case "$ans" in
2880         y|Y)    val="$define" ;;
2881         *)      val="$undef" ;;
2882         esac
2883         ;;
2884 esac
2885 set usemultiplicity
2886 eval $setvar
2887
2888 : determine where manual pages are on this system
2889 echo " "
2890 case "$sysman" in
2891 '') 
2892         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2893         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2894         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2895         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2896         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2897         sysman=`./loc . /usr/man/man1 $syspath`
2898         ;;
2899 esac
2900 if $test -d "$sysman"; then
2901         echo "System manual is in $sysman." >&4
2902 else
2903         echo "Could not find manual pages in source form." >&4
2904 fi
2905
2906 : see what memory models we can support
2907 case "$models" in
2908 '')
2909         $cat >pdp11.c <<'EOP'
2910 int main() {
2911 #ifdef pdp11
2912         exit(0);
2913 #else
2914         exit(1);
2915 #endif
2916 }
2917 EOP
2918         case "$cc" in
2919         '') modelcc="$cc" ;;
2920         *) modelcc="cc" ;;
2921         esac
2922         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2923         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2924                 dflt='unsplit split'
2925         else
2926                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2927                 case "$tans" in
2928                 X) dflt='none';;
2929                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2930                                 dflt='small'
2931                         else
2932                                 dflt=''
2933                         fi
2934                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2935                                 dflt="$dflt medium"
2936                         fi
2937                         if $test -d /lib/large || $test -d /usr/lib/large; then
2938                                 dflt="$dflt large"
2939                         fi
2940                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2941                                 dflt="$dflt huge"
2942                         fi
2943                 esac
2944         fi;;
2945 *) dflt="$models";;
2946 esac
2947 $cat <<EOM
2948  
2949 Some systems have different model sizes.  On most systems they are called
2950 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2951 split.  If your system doesn't support different memory models, say "none".
2952 If you wish to force everything to one memory model, say "none" here and
2953 put the appropriate flags later when it asks you for other cc and ld flags.
2954 Venix systems may wish to put "none" and let the compiler figure things out.
2955 (In the following question multiple model names should be space separated.)
2956
2957 The default for most systems is "none".
2958
2959 EOM
2960 rp="Which memory models are supported?"
2961 . ./myread
2962 models="$ans"
2963
2964 case "$models" in
2965 none)
2966         small=''
2967         medium=''
2968         large=''
2969         huge=''
2970         unsplit=''
2971         split=''
2972         ;;
2973 *split)
2974         case "$split" in
2975         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2976                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2977                         dflt='-i'
2978                 else
2979                         dflt='none'
2980                 fi;;
2981         *) dflt="$split";;
2982         esac
2983         rp="What flag indicates separate I and D space?"
2984         . ./myread
2985         tans="$ans"
2986         case "$tans" in
2987         none) tans='';;
2988         esac
2989         split="$tans"
2990         unsplit='';;
2991 *large*|*small*|*medium*|*huge*)
2992         case "$models" in
2993         *large*)
2994                 case "$large" in
2995                 '') dflt='-Ml';;
2996                 *) dflt="$large";;
2997                 esac
2998         rp="What flag indicates large model?"
2999         . ./myread
3000         tans="$ans"
3001         case "$tans" in
3002         none) tans='';
3003         esac
3004         large="$tans";;
3005         *) large='';;
3006         esac
3007         case "$models" in
3008         *huge*) case "$huge" in
3009                 '') dflt='-Mh';;
3010                 *) dflt="$huge";;
3011                 esac
3012                 rp="What flag indicates huge model?"
3013                 . ./myread
3014                 tans="$ans"
3015                 case "$tans" in
3016                 none) tans='';
3017                 esac
3018                 huge="$tans";;
3019         *) huge="$large";;
3020         esac
3021         case "$models" in
3022         *medium*) case "$medium" in
3023                 '') dflt='-Mm';;
3024                 *) dflt="$medium";;
3025                 esac
3026                 rp="What flag indicates medium model?"
3027                 . ./myread
3028                 tans="$ans"
3029                 case "$tans" in
3030                 none) tans='';
3031                 esac
3032                 medium="$tans";;
3033         *) medium="$large";;
3034         esac
3035         case "$models" in
3036         *small*) case "$small" in
3037                 '') dflt='none';;
3038                 *) dflt="$small";;
3039                 esac
3040                 rp="What flag indicates small model?"
3041                 . ./myread
3042                 tans="$ans"
3043                 case "$tans" in
3044                 none) tans='';
3045                 esac
3046                 small="$tans";;
3047         *) small='';;
3048         esac
3049         ;;
3050 *)
3051         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3052         ;;
3053 esac
3054 $rm -f pdp11.* pdp11
3055
3056 : make some quick guesses about what we are up against
3057 echo " "
3058 $echo $n "Hmm...  $c"
3059 echo exit 1 >bsd
3060 echo exit 1 >usg
3061 echo exit 1 >v7
3062 echo exit 1 >osf1
3063 echo exit 1 >eunice
3064 echo exit 1 >xenix
3065 echo exit 1 >venix
3066 echo exit 1 >os2
3067 d_bsd="$undef"
3068 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3069 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3070 then
3071         echo "Looks kind of like an OSF/1 system, but we'll see..."
3072         echo exit 0 >osf1
3073 elif test `echo abc | tr a-z A-Z` = Abc ; then
3074         xxx=`./loc addbib blurfl $pth`
3075         if $test -f $xxx; then
3076         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3077                 echo exit 0 >bsd
3078                 echo exit 0 >usg
3079         else
3080                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3081                         echo "Looks kind of like an extended USG system, but we'll see..."
3082                 else
3083                         echo "Looks kind of like a USG system, but we'll see..."
3084                 fi
3085                 echo exit 0 >usg
3086         fi
3087 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3088         echo "Looks kind of like a BSD system, but we'll see..."
3089         d_bsd="$define"
3090         echo exit 0 >bsd
3091 else
3092         echo "Looks kind of like a Version 7 system, but we'll see..."
3093         echo exit 0 >v7
3094 fi
3095 case "$eunicefix" in
3096 *unixtovms*)
3097         $cat <<'EOI'
3098 There is, however, a strange, musty smell in the air that reminds me of
3099 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3100 EOI
3101         echo exit 0 >eunice
3102         d_eunice="$define"
3103 : it so happens the Eunice I know will not run shell scripts in Unix format
3104         ;;
3105 *)
3106         echo " "
3107         echo "Congratulations.  You aren't running Eunice."
3108         d_eunice="$undef"
3109         ;;
3110 esac
3111 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3112 case "$p_" in
3113 :) ;;
3114 *)
3115         $cat <<'EOI'
3116 I have the feeling something is not exactly right, however...don't tell me...
3117 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3118 EOI
3119         echo exit 0 >os2
3120         ;;
3121 esac
3122 if test -f /xenix; then
3123         echo "Actually, this looks more like a XENIX system..."
3124         echo exit 0 >xenix
3125         d_xenix="$define"
3126 else
3127         echo " "
3128         echo "It's not Xenix..."
3129         d_xenix="$undef"
3130 fi
3131 chmod +x xenix
3132 $eunicefix xenix
3133 if test -f /venix; then
3134         echo "Actually, this looks more like a VENIX system..."
3135         echo exit 0 >venix
3136 else
3137         echo " "
3138         if ./xenix; then
3139                 : null
3140         else
3141                 echo "Nor is it Venix..."
3142         fi
3143 fi
3144 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3145 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3146 $rm -f foo
3147
3148 : see if we need a special compiler
3149 echo " "
3150 if ./usg; then
3151         case "$cc" in
3152         '') case "$Mcc" in
3153                 /*) dflt='Mcc';;
3154                 *) case "$large" in
3155                         -M*) dflt='cc';;
3156                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3157                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3158                                                 dflt='cc'
3159                                         else
3160                                                 dflt='cc -M'
3161                                         fi
3162                                 else
3163                                         dflt='cc'
3164                                 fi;;
3165                         esac;;
3166                 esac;;
3167         *)  dflt="$cc";;
3168         esac
3169         case "$dflt" in
3170         *M*)    $cat <<'EOM'
3171 On some older systems the default C compiler will not resolve multiple global
3172 references that happen to have the same name.  On some such systems the "Mcc"
3173 command may be used to force these to be resolved.  On other systems a "cc -M"
3174 command is required.  (Note that the -M flag on other systems indicates a
3175 memory model to use!) If you have the Gnu C compiler, you might wish to use
3176 that instead.
3177
3178 EOM
3179         ;;
3180         esac
3181         rp="Use which C compiler?"
3182         . ./myread
3183         cc="$ans"
3184 else
3185         case "$cc" in
3186         '') dflt=cc;;
3187         *) dflt="$cc";;
3188         esac
3189         rp="Use which C compiler?"
3190         . ./myread
3191         cc="$ans"
3192 fi
3193 : Look for a hint-file generated 'call-back-unit'.  Now that the
3194 : user has specified the compiler, we may need to set or change some
3195 : other defaults.
3196 if $test -f cc.cbu; then
3197     . ./cc.cbu
3198 fi
3199 . ./checkcc
3200
3201 echo " "
3202 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3203 $cat >gccvers.c <<EOM
3204 #include <stdio.h>
3205 int main() {
3206 #ifdef __GNUC__
3207 #ifdef __VERSION__
3208         printf("%s\n", __VERSION__);
3209 #else
3210         printf("%s\n", "1");
3211 #endif
3212 #endif
3213         exit(0);
3214 }
3215 EOM
3216 if $cc $ldflags -o gccvers gccvers.c; then
3217         gccversion=`./gccvers`
3218         case "$gccversion" in
3219         '') echo "You are not using GNU cc." ;;
3220         *)  echo "You are using GNU cc $gccversion."
3221             ccname=gcc  
3222             ;;
3223         esac
3224 else
3225         echo " "
3226         echo "*** WHOA THERE!!! ***" >&4
3227         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3228         case "$knowitall" in
3229         '')
3230         echo "    You'd better start hunting for one and let me know about it." >&4
3231                 exit 1
3232                 ;;
3233         esac
3234 fi
3235 $rm -f gccvers*
3236 case "$gccversion" in
3237 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3238 esac
3239 case "$gccversion" in
3240 '') gccosandvers='' ;;
3241 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3242    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3243    gccshortvers=''
3244    case "$gccosandvers" in
3245    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3246    $osname$osvers) ;; # looking good
3247    $osname*) cat <<EOM >&4
3248
3249 *** WHOA THERE!!! ***
3250
3251     Your gcc has not been compiled for the exact release of
3252     your operating system ($gccosandvers versus $osname$osvers).
3253
3254     In general it is a good idea to keep gcc synchronized with
3255     the operating system because otherwise serious problems
3256     may ensue when trying to compile software, like Perl.
3257
3258     I'm trying to be optimistic here, though, and will continue.
3259     If later during the configuration and build icky compilation
3260     problems appear (headerfile conflicts being the most common
3261     manifestation), I suggest reinstalling the gcc to match
3262     your operating system release.
3263
3264 EOM
3265       ;;
3266    *) gccosandvers='' ;; # failed to parse, better be silent
3267    esac
3268    ;;
3269 esac
3270 case "$ccname" in
3271 '') ccname="$cc" ;;
3272 esac
3273
3274 : see how we invoke the C preprocessor
3275 echo " "
3276 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3277 cat <<'EOT' >testcpp.c
3278 #define ABC abc
3279 #define XYZ xyz
3280 ABC.XYZ
3281 EOT
3282 cd ..
3283 if test ! -f cppstdin; then
3284         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3285                 # AIX cc -E doesn't show the absolute headerfile
3286                 # locations but we'll cheat by using the -M flag.
3287                 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
3288         else
3289                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3290         fi
3291 else
3292         echo "Keeping your $hint cppstdin wrapper."
3293 fi
3294 chmod 755 cppstdin
3295 wrapper=`pwd`/cppstdin
3296 ok='false'
3297 cd UU
3298
3299 if $test "X$cppstdin" != "X" && \
3300         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3301         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3302 then
3303         echo "You used to use $cppstdin $cppminus so we'll use that again."
3304         case "$cpprun" in
3305         '') echo "But let's see if we can live without a wrapper..." ;;
3306         *)
3307                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3308                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3309                 then
3310                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3311                         ok='true'
3312                 else
3313                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3314                 fi
3315                 ;;
3316         esac
3317 else
3318         case "$cppstdin" in
3319         '') ;;
3320         *)
3321                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3322                 ;;
3323         esac
3324 fi
3325
3326 if $ok; then
3327         : nothing
3328 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3329         $cc -E <testcpp.c >testcpp.out 2>&1; \
3330         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3331         echo "Yup, it does."
3332         x_cpp="$cc -E"
3333         x_minus='';
3334 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3335         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3336         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3337         echo "Yup, it does."
3338         x_cpp="$cc -E"
3339         x_minus='-';
3340 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3341         $cc -P <testcpp.c >testcpp.out 2>&1; \
3342         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3343         echo "Yipee, that works!"
3344         x_cpp="$cc -P"
3345         x_minus='';
3346 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3347         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3348         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3349         echo "At long last!"
3350         x_cpp="$cc -P"
3351         x_minus='-';
3352 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3353         $cpp <testcpp.c >testcpp.out 2>&1; \
3354         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3355         echo "It works!"
3356         x_cpp="$cpp"
3357         x_minus='';
3358 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3359         $cpp - <testcpp.c >testcpp.out 2>&1; \
3360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3361         echo "Hooray, it works!  I was beginning to wonder."
3362         x_cpp="$cpp"
3363         x_minus='-';
3364 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3365         $wrapper <testcpp.c >testcpp.out 2>&1; \
3366         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3367         x_cpp="$wrapper"
3368         x_minus=''
3369         echo "Eureka!"
3370 else
3371         dflt=''
3372         rp="No dice.  I can't find a C preprocessor.  Name one:"
3373         . ./myread
3374         x_cpp="$ans"
3375         x_minus=''
3376         $x_cpp <testcpp.c >testcpp.out 2>&1
3377         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3378                 echo "OK, that will do." >&4
3379         else
3380 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3381                 exit 1
3382         fi
3383 fi
3384
3385 case "$ok" in
3386 false)
3387         cppstdin="$x_cpp"
3388         cppminus="$x_minus"
3389         cpprun="$x_cpp"
3390         cpplast="$x_minus"
3391         set X $x_cpp
3392         shift
3393         case "$1" in
3394         "$cpp")
3395                 echo "Perhaps can we force $cc -E using a wrapper..."
3396                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3397                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3398                 then
3399                         echo "Yup, we can."
3400                         cppstdin="$wrapper"
3401                         cppminus='';
3402                 else
3403                         echo "Nope, we'll have to live without it..."
3404                 fi
3405                 ;;
3406         esac
3407         case "$cpprun" in
3408         "$wrapper")
3409                 cpprun=''
3410                 cpplast=''
3411                 ;;
3412         esac
3413         ;;
3414 esac
3415
3416 case "$cppstdin" in
3417 "$wrapper"|'cppstdin') ;;
3418 *) $rm -f $wrapper;;
3419 esac
3420 $rm -f testcpp.c testcpp.out
3421
3422 : decide how portable to be.  Allow command line overrides.
3423 case "$d_portable" in
3424 "$undef") ;;
3425 *)      d_portable="$define" ;;
3426 esac
3427
3428 : set up shell script to do ~ expansion
3429 cat >filexp <<EOSS
3430 $startsh
3431 : expand filename
3432 case "\$1" in
3433  ~/*|~)
3434         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3435         ;;
3436  ~*)
3437         if $test -f /bin/csh; then
3438                 /bin/csh -f -c "glob \$1"
3439                 failed=\$?
3440                 echo ""
3441                 exit \$failed
3442         else
3443                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3444                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3445                 if $test ! -d "\$dir"; then
3446                         me=\`basename \$0\`
3447                         echo "\$me: can't locate home directory for: \$name" >&2
3448                         exit 1
3449                 fi
3450                 case "\$1" in
3451                 */*)
3452                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3453                         ;;
3454                 *)
3455                         echo \$dir
3456                         ;;
3457                 esac
3458         fi
3459         ;;
3460 *)
3461         echo \$1
3462         ;;
3463 esac
3464 EOSS
3465 chmod +x filexp
3466 $eunicefix filexp
3467
3468 : now set up to get a file name
3469 cat <<EOS >getfile
3470 $startsh
3471 EOS
3472 cat <<'EOSC' >>getfile
3473 tilde=''
3474 fullpath=''
3475 already=''
3476 skip=''
3477 none_ok=''
3478 exp_file=''
3479 nopath_ok=''
3480 orig_rp="$rp"
3481 orig_dflt="$dflt"
3482 case "$gfpth" in
3483 '') gfpth='.' ;;
3484 esac
3485
3486 case "$fn" in
3487 *\(*)
3488         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3489         fn=`echo $fn | sed 's/(.*)//'`
3490         ;;
3491 esac
3492
3493 case "$fn" in
3494 *:*)
3495         loc_file=`expr $fn : '.*:\(.*\)'`
3496         fn=`expr $fn : '\(.*\):.*'`
3497         ;;
3498 esac
3499
3500 case "$fn" in
3501 *~*) tilde=true;;
3502 esac
3503 case "$fn" in
3504 */*) fullpath=true;;
3505 esac
3506 case "$fn" in
3507 *+*) skip=true;;
3508 esac
3509 case "$fn" in
3510 *n*) none_ok=true;;
3511 esac
3512 case "$fn" in
3513 *e*) exp_file=true;;
3514 esac
3515 case "$fn" in
3516 *p*) nopath_ok=true;;
3517 esac
3518
3519 case "$fn" in
3520 *f*) type='File';;
3521 *d*) type='Directory';;
3522 *l*) type='Locate';;
3523 esac
3524
3525 what="$type"
3526 case "$what" in
3527 Locate) what='File';;
3528 esac
3529
3530 case "$exp_file" in
3531 '')
3532         case "$d_portable" in
3533         "$define") ;;
3534         *) exp_file=true;;
3535         esac
3536         ;;
3537 esac
3538
3539 cd ..
3540 while test "$type"; do
3541         redo=''
3542         rp="$orig_rp"
3543         dflt="$orig_dflt"
3544         case "$tilde" in
3545         true) rp="$rp (~name ok)";;
3546         esac
3547         . UU/myread
3548         if test -f UU/getfile.ok && \
3549                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3550         then
3551                 value="$ans"
3552                 ansexp="$ans"
3553                 break
3554         fi
3555         case "$ans" in
3556         none)
3557                 value=''
3558                 ansexp=''
3559                 case "$none_ok" in
3560                 true) type='';;
3561                 esac
3562                 ;;
3563         *)
3564                 case "$tilde" in
3565                 '') value="$ans"
3566                         ansexp="$ans";;
3567                 *)
3568                         value=`UU/filexp $ans`
3569                         case $? in
3570                         0)
3571                                 if test "$ans" != "$value"; then
3572                                         echo "(That expands to $value on this system.)"
3573                                 fi
3574                                 ;;
3575                         *) value="$ans";;
3576                         esac
3577                         ansexp="$value"
3578                         case "$exp_file" in
3579                         '') value="$ans";;
3580                         esac
3581                         ;;
3582                 esac
3583                 case "$fullpath" in
3584                 true)
3585                         case "$ansexp" in
3586                         /*) value="$ansexp" ;;
3587                         [a-zA-Z]:/*) value="$ansexp" ;;
3588                         *)
3589                                 redo=true
3590                                 case "$already" in
3591                                 true)
3592                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3593                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3594                                         ;;
3595                                 *)
3596                                 echo "Please give a full path name, starting with slash." >&4
3597                                         case "$tilde" in
3598                                         true)
3599                                 echo "Note that using ~name is ok provided it expands well." >&4
3600                                                 already=true
3601                                                 ;;
3602                                         esac
3603                                 esac
3604                                 ;;
3605                         esac
3606                         ;;
3607                 esac
3608                 case "$redo" in
3609                 '')
3610                         case "$type" in
3611                         File)
3612                                 for fp in $gfpth; do
3613                                         if test "X$fp" = X.; then
3614                                             pf="$ansexp"
3615                                         else    
3616                                             pf="$fp/$ansexp"
3617                                         fi
3618                                         if test -f "$pf"; then
3619                                                 type=''
3620                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3621                                         then
3622                                                 echo "($value is not a plain file, but that's ok.)"
3623                                                 type=''
3624                                         fi
3625                                         if test X"$type" = X; then
3626                                             value="$pf"
3627                                             break
3628                                         fi
3629                                 done
3630                                 ;;
3631                         Directory)
3632                                 for fp in $gfpth; do
3633                                         if test "X$fp" = X.; then
3634                                             dir="$ans"
3635                                             direxp="$ansexp"
3636                                         else    
3637                                             dir="$fp/$ansexp"
3638                                             direxp="$fp/$ansexp"
3639                                         fi
3640                                         if test -d "$direxp"; then
3641                                                 type=''
3642                                                 value="$dir"
3643                                                 break
3644                                         fi
3645                                 done
3646                                 ;;
3647                         Locate)
3648                                 if test -d "$ansexp"; then
3649                                         echo "(Looking for $loc_file in directory $value.)"
3650                                         value="$value/$loc_file"
3651                                         ansexp="$ansexp/$loc_file"
3652                                 fi
3653                                 if test -f "$ansexp"; then
3654                                         type=''
3655                                 fi
3656                                 case "$nopath_ok" in
3657                                 true)   case "$value" in
3658                                         */*) ;;
3659                                         *)      echo "Assuming $value will be in people's path."
3660                                                 type=''
3661                                                 ;;
3662                                         esac
3663                                         ;;
3664                                 esac
3665                                 ;;
3666                         esac
3667
3668                         case "$skip" in
3669                         true) type='';
3670                         esac
3671
3672                         case "$type" in
3673                         '') ;;
3674                         *)
3675                                 if test "$fastread" = yes; then
3676                                         dflt=y
3677                                 else
3678                                         dflt=n
3679                                 fi
3680                                 rp="$what $value doesn't exist.  Use that name anyway?"
3681                                 . UU/myread
3682                                 dflt=''
3683                                 case "$ans" in
3684                                 y*) type='';;
3685                                 *) echo " ";;
3686                                 esac
3687                                 ;;
3688                         esac
3689                         ;;
3690                 esac
3691                 ;;
3692         esac
3693 done
3694 cd UU
3695 ans="$value"
3696 rp="$orig_rp"
3697 dflt="$orig_dflt"
3698 rm -f getfile.ok
3699 test "X$gfpthkeep" != Xy && gfpth=""
3700 EOSC
3701
3702 : What should the include directory be ?
3703 echo " "
3704 $echo $n "Hmm...  $c"
3705 dflt='/usr/include'
3706 incpath=''
3707 mips_type=''
3708 if $test -f /bin/mips && /bin/mips; then
3709         echo "Looks like a MIPS system..."
3710         $cat >usr.c <<'EOCP'
3711 #ifdef SYSTYPE_BSD43
3712 /bsd43
3713 #endif
3714 EOCP
3715         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3716                 dflt='/bsd43/usr/include'
3717                 incpath='/bsd43'
3718                 mips_type='BSD 4.3'
3719         else
3720                 mips_type='System V'
3721         fi
3722         $rm -f usr.c usr.out
3723         echo "and you're compiling with the $mips_type compiler and libraries."
3724         xxx_prompt=y
3725         echo "exit 0" >mips
3726 else
3727         echo "Doesn't look like a MIPS system."
3728         xxx_prompt=n
3729         echo "exit 1" >mips
3730 fi
3731 chmod +x mips
3732 $eunicefix mips
3733 case "$usrinc" in
3734 '') ;;
3735 *) dflt="$usrinc";;
3736 esac
3737 case "$xxx_prompt" in
3738 y)      fn=d/
3739         echo " "
3740         rp='Where are the include files you want to use?'
3741         . ./getfile
3742         usrinc="$ans"
3743         ;;
3744 *)      usrinc="$dflt"
3745         ;;
3746 esac
3747
3748 : Set private lib path
3749 case "$plibpth" in
3750 '') if ./mips; then
3751                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3752         fi;;
3753 esac
3754 case "$libpth" in
3755 ' ') dlist='';;
3756 '') dlist="$loclibpth $plibpth $glibpth";;
3757 *) dlist="$libpth";;
3758 esac
3759
3760 : Now check and see which directories actually exist, avoiding duplicates
3761 libpth=''
3762 for xxx in $dlist
3763 do
3764     if $test -d $xxx; then
3765                 case " $libpth " in
3766                 *" $xxx "*) ;;
3767                 *) libpth="$libpth $xxx";;
3768                 esac
3769     fi
3770 done
3771 $cat <<'EOM'
3772
3773 Some systems have incompatible or broken versions of libraries.  Among
3774 the directories listed in the question below, please remove any you
3775 know not to be holding relevant libraries, and add any that are needed.
3776 Say "none" for none.
3777
3778 EOM
3779 case "$libpth" in
3780 '') dflt='none';;
3781 *)
3782         set X $libpth
3783         shift
3784         dflt=${1+"$@"}
3785         ;;
3786 esac
3787 rp="Directories to use for library searches?"
3788 . ./myread
3789 case "$ans" in
3790 none) libpth=' ';;
3791 *) libpth="$ans";;
3792 esac
3793
3794 : compute shared library extension
3795 case "$so" in
3796 '')
3797         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3798                 dflt='sl'
3799         else
3800                 dflt='so'
3801         fi
3802         ;;
3803 *) dflt="$so";;
3804 esac
3805 $cat <<EOM
3806
3807 On some systems, shared libraries may be available.  Answer 'none' if
3808 you want to suppress searching of shared libraries for the remainder
3809 of this configuration.
3810
3811 EOM
3812 rp='What is the file extension used for shared libraries?'
3813 . ./myread
3814 so="$ans"
3815
3816 : Define several unixisms.
3817 : Hints files or command line option can be used to override them.
3818 : The convoluted testing is in case hints files set either the old
3819 : or the new name.
3820 case "$_exe" in
3821 '')     case "$exe_ext" in
3822     '') ;;
3823         *)      _exe="$exe_ext" ;;
3824         esac
3825         ;;
3826 esac
3827 case "$_a" in
3828 '')     case "$lib_ext" in
3829     '') _a='.a';;
3830         *)      _a="$lib_ext" ;;
3831         esac
3832         ;;
3833 esac
3834 case "$_o" in
3835 '') case "$obj_ext" in
3836         '')     _o='.o';;
3837         *)      _o="$obj_ext";;
3838         esac
3839         ;;
3840 esac
3841 case "$p_" in
3842 '') case "$path_sep" in
3843         '')     p_=':';;
3844         *)      p_="$path_sep";;
3845         esac
3846         ;;
3847 esac
3848 exe_ext=$_exe
3849 lib_ext=$_a
3850 obj_ext=$_o
3851 path_sep=$p_
3852
3853 : Which makefile gets called first.  This is used by make depend.
3854 case "$firstmakefile" in
3855 '') firstmakefile='makefile';;
3856 esac
3857
3858 case "$usesocks" in
3859 $define|true|[yY]*)     dflt='y';;
3860 *) dflt='n';;
3861 esac
3862 cat <<EOM
3863
3864 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3865 Configure must be run with -Dusesocks.
3866
3867 If this doesn't make any sense to you, just accept the default '$dflt'.
3868 EOM
3869 rp='Build Perl for SOCKS?'
3870 . ./myread
3871 case "$ans" in
3872 y|Y)    val="$define" ;;     
3873 *)      val="$undef" ;;
3874 esac
3875 set usesocks
3876 eval $setvar
3877
3878 : Looking for optional libraries
3879 echo " "
3880 echo "Checking for optional libraries..." >&4
3881 case "$libs" in
3882 ' '|'') dflt='';;
3883 *) dflt="$libs";;
3884 esac
3885 case "$libswanted" in
3886 '') libswanted='c_s';;
3887 esac
3888 case "$usesocks" in
3889 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3890 esac
3891 libsfound=''
3892 libsfiles=''
3893 libsdirs=''
3894 libspath=''
3895 for thisdir in $libpth $xlibpth; do
3896   test -d $thisdir && libspath="$libspath $thisdir"
3897 done
3898 for thislib in $libswanted; do
3899         for thisdir in $libspath; do
3900             xxx=''
3901             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3902                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3903                 $test -f "$xxx" && eval $libscheck
3904                 $test -f "$xxx" && libstyle=shared
3905             fi
3906             if test ! -f "$xxx"; then
3907                 xxx=$thisdir/lib$thislib.$so
3908                 $test -f "$xxx" && eval $libscheck
3909                 $test -f "$xxx" && libstyle=shared
3910             fi  
3911             if test ! -f "$xxx"; then
3912                 xxx=$thisdir/lib$thislib$_a
3913                 $test -f "$xxx" && eval $libscheck
3914                 $test -f "$xxx" && libstyle=static
3915             fi
3916             if test ! -f "$xxx"; then
3917                 xxx=$thisdir/$thislib$_a
3918                 $test -f "$xxx" && eval $libscheck
3919                 $test -f "$xxx" && libstyle=static
3920             fi
3921             if test ! -f "$xxx"; then
3922                 xxx=$thisdir/lib${thislib}_s$_a
3923                 $test -f "$xxx" && eval $libscheck
3924                 $test -f "$xxx" && libstyle=static
3925                 $test -f "$xxx" && thislib=${thislib}_s
3926             fi
3927             if test ! -f "$xxx"; then
3928                 xxx=$thisdir/Slib$thislib$_a
3929                 $test -f "$xxx" && eval $libscheck
3930                 $test -f "$xxx" && libstyle=static
3931             fi
3932             if $test -f "$xxx"; then
3933                 case "$libstyle" in
3934                 shared) echo "Found -l$thislib (shared)." ;;
3935                 static) echo "Found -l$thislib." ;;
3936                 *)      echo "Found -l$thislib ($libstyle)." ;;
3937                 esac
3938                 case " $dflt " in
3939                 *"-l$thislib "*);;
3940                 *) dflt="$dflt -l$thislib"
3941                    libsfound="$libsfound $xxx"
3942                    yyy=`basename $xxx`
3943                    libsfiles="$libsfiles $yyy"
3944                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3945                    case " $libsdirs " in
3946                    *" $yyy "*) ;;
3947                    *) libsdirs="$libsdirs $yyy" ;;
3948                    esac
3949                    ;;
3950                 esac
3951                 break
3952             fi  
3953         done
3954         if $test ! -f "$xxx"; then
3955             echo "No -l$thislib."
3956         fi
3957 done
3958 set X $dflt
3959 shift
3960 dflt="$*"
3961 case "$libs" in
3962 '') dflt="$dflt";;
3963 *) dflt="$libs";;
3964 esac
3965 case "$dflt" in
3966 ' '|'') dflt='none';;
3967 esac
3968
3969 $cat <<EOM
3970
3971 In order to compile $package on your machine, a number of libraries
3972 are usually needed.  Include any other special libraries here as well.
3973 Say "none" for none.  The default list is almost always right.
3974 EOM
3975
3976 echo " "
3977 rp="What libraries to use?"
3978 . ./myread
3979 case "$ans" in
3980 none) libs=' ';;
3981 *) libs="$ans";;
3982 esac
3983
3984 : determine optimization, if desired, or use for debug flag also
3985 case "$optimize" in
3986 ' '|$undef) dflt='none';;
3987 '') dflt='-O';;
3988 *) dflt="$optimize";;
3989 esac
3990 $cat <<EOH
3991
3992 By default, $package compiles with the -O flag to use the optimizer.
3993 Alternately, you might want to use the symbolic debugger, which uses
3994 the -g flag (on traditional Unix systems).  Either flag can be
3995 specified here.  To use neither flag, specify the word "none".
3996
3997 EOH
3998 rp="What optimizer/debugger flag should be used?"
3999 . ./myread
4000 optimize="$ans"
4001 case "$optimize" in
4002 'none') optimize=" ";;
4003 esac
4004
4005 dflt=''
4006 : We will not override a previous value, but we might want to
4007 : augment a hint file
4008 case "$hint" in
4009 default|recommended)
4010         case "$gccversion" in
4011         1*) dflt='-fpcc-struct-return' ;;
4012         esac
4013         case "$optimize" in
4014         *-g*) dflt="$dflt -DDEBUGGING";;
4015         esac
4016         case "$gccversion" in
4017         2*) if test -d /etc/conf/kconfig.d &&
4018                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4019                 then
4020                         dflt="$dflt -posix"
4021                 fi
4022                 ;;
4023         esac
4024         case "$gccversion" in
4025         1*) ;;
4026         2.[0-8]*) ;;
4027         ?*)     echo " "
4028                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4029                 echo 'int main(void) { return 0; }' > gcctest.c
4030                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4031                         echo "Yes, it does." 2>&1
4032                         case "$ccflags" in
4033                         *strict-aliasing*) 
4034                                 echo "Leaving current flags $ccflags alone." 2>&1
4035                                 ;;
4036                         *) dflt="$dflt -fno-strict-aliasing" ;;
4037                         esac
4038                 else
4039                         echo "Nope, it doesn't, but that's ok." 2>&1
4040                 fi
4041                 ;;
4042         esac
4043         ;;
4044 esac
4045
4046 case "$mips_type" in
4047 *BSD*|'') inclwanted="$locincpth $usrinc";;
4048 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4049 esac
4050 for thisincl in $inclwanted; do
4051         if $test -d $thisincl; then
4052                 if $test x$thisincl != x$usrinc; then
4053                         case "$dflt" in
4054                         *$thisincl*);;
4055                         *) dflt="$dflt -I$thisincl";;
4056                         esac
4057                 fi
4058         fi
4059 done
4060
4061 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4062         xxx=true;
4063 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4064         xxx=true;
4065 else
4066         xxx=false;
4067 fi;
4068 if $xxx; then
4069         case "$dflt" in
4070         *$2*);;
4071         *) dflt="$dflt -D$2";;
4072         esac;
4073 fi'
4074
4075 set signal.h LANGUAGE_C; eval $inctest
4076
4077 case "$usesocks" in
4078 $define)
4079         ccflags="$ccflags -DSOCKS"
4080         ;;
4081 esac
4082
4083 case "$hint" in
4084 default|recommended) dflt="$ccflags $dflt" ;;
4085 *) dflt="$ccflags";;
4086 esac
4087
4088 case "$dflt" in
4089 ''|' ') dflt=none;;
4090 esac
4091 $cat <<EOH
4092
4093 Your C compiler may want other flags.  For this question you should include
4094 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4095 but you should NOT include libraries or ld flags like -lwhatever.  If you
4096 want $package to honor its debug switch, you should include -DDEBUGGING here.
4097 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4098
4099 To use no flags, specify the word "none".
4100
4101 EOH
4102 set X $dflt
4103 shift
4104 dflt=${1+"$@"}
4105 rp="Any additional cc flags?"
4106 . ./myread
4107 case "$ans" in
4108 none) ccflags='';;
4109 *) ccflags="$ans";;
4110 esac
4111
4112 : the following weeds options from ccflags that are of no interest to cpp
4113 cppflags="$ccflags"
4114 case "$gccversion" in
4115 1*) cppflags="$cppflags -D__GNUC__"
4116 esac
4117 case "$mips_type" in
4118 '');;
4119 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4120 esac
4121 case "$cppflags" in
4122 '');;
4123 *)
4124         echo " "
4125         echo "Let me guess what the preprocessor flags are..." >&4
4126         set X $cppflags
4127         shift
4128         cppflags=''
4129         $cat >cpp.c <<'EOM'
4130 #define BLURFL foo
4131
4132 BLURFL xx LFRULB
4133 EOM
4134         previous=''
4135         for flag in $*
4136         do
4137                 case "$flag" in
4138                 -*) ftry="$flag";;
4139                 *) ftry="$previous $flag";;
4140                 esac
4141                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4142                         >cpp1.out 2>/dev/null && \
4143                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4144                         >cpp2.out 2>/dev/null && \
4145                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4146                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4147                 then
4148                         cppflags="$cppflags $ftry"
4149                         previous=''
4150                 else
4151                         previous="$flag"
4152                 fi
4153         done
4154         set X $cppflags
4155         shift
4156         cppflags=${1+"$@"}
4157         case "$cppflags" in
4158         *-*)  echo "They appear to be: $cppflags";;
4159         esac
4160         $rm -f cpp.c cpp?.out
4161         ;;
4162 esac
4163
4164 : flags used in final linking phase
4165 case "$ldflags" in
4166 '') if ./venix; then
4167                 dflt='-i -z'
4168         else
4169                 dflt=''
4170         fi
4171         case "$ccflags" in
4172         *-posix*) dflt="$dflt -posix" ;;
4173         esac
4174         ;;
4175 *) dflt="$ldflags";;
4176 esac
4177
4178 : Try to guess additional flags to pick up local libraries.
4179 for thislibdir in $libpth; do
4180         case " $loclibpth " in
4181         *" $thislibdir "*)
4182                 case "$dflt " in 
4183                 *"-L$thislibdir "*) ;;
4184                 *)  dflt="$dflt -L$thislibdir" ;;
4185                 esac
4186                 ;;
4187         esac
4188 done
4189
4190 case "$dflt" in
4191 '') dflt='none' ;;
4192 esac
4193
4194 $cat <<EOH
4195
4196 Your C linker may need flags.  For this question you should
4197 include -L/whatever and any other flags used by the C linker, but you
4198 should NOT include libraries like -lwhatever.
4199
4200 Make sure you include the appropriate -L/path flags if your C linker
4201 does not normally search all of the directories you specified above,
4202 namely
4203         $libpth
4204 To use no flags, specify the word "none".
4205
4206 EOH
4207
4208 rp="Any additional ld flags (NOT including libraries)?"
4209 . ./myread
4210 case "$ans" in
4211 none) ldflags='';;
4212 *) ldflags="$ans";;
4213 esac
4214 rmlist="$rmlist pdp11"
4215
4216 : coherency check
4217 echo " "
4218 echo "Checking your choice of C compiler and flags for coherency..." >&4
4219 $cat > try.c <<'EOF'
4220 #include <stdio.h>
4221 int main() { printf("Ok\n"); exit(0); }
4222 EOF
4223 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4224 shift
4225 $cat >try.msg <<'EOM'
4226 I've tried to compile and run the following simple program:
4227
4228 EOM
4229 $cat try.c >> try.msg
4230
4231 $cat >> try.msg <<EOM
4232
4233 I used the command:
4234
4235         $*
4236         ./try
4237
4238 and I got the following output:
4239
4240 EOM
4241 dflt=y
4242 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4243         if sh -c './try' >>try.msg 2>&1; then
4244                 xxx=`./try`
4245                 case "$xxx" in
4246                 "Ok") dflt=n ;;
4247                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4248                         case " $libs " in
4249                         *" -lsfio "*)
4250                                 cat >> try.msg <<'EOQS'
4251 If $libs contains -lsfio, and sfio is mis-configured, then it
4252 sometimes (apparently) runs and exits with a 0 status, but with no
4253 output!  It may have to do with sfio's use of _exit vs. exit.
4254
4255 EOQS
4256                                 rp="You have a big problem.  Shall I abort Configure"
4257                                 dflt=y
4258                                 ;;
4259                         esac
4260                         ;;
4261                 esac
4262         else
4263                 echo "The program compiled OK, but exited with status $?." >>try.msg
4264                 rp="You have a problem.  Shall I abort Configure"
4265                 dflt=y
4266         fi
4267 else
4268         echo "I can't compile the test program." >>try.msg
4269         rp="You have a BIG problem.  Shall I abort Configure"
4270         dflt=y
4271 fi
4272 case "$dflt" in
4273 y)
4274         $cat try.msg >&4
4275         case "$knowitall" in
4276         '')
4277                 echo "(The supplied flags or libraries might be incorrect.)"
4278                 ;;
4279         *) dflt=n;;
4280         esac
4281         echo " "
4282         . ./myread
4283         case "$ans" in
4284         n*|N*) ;;
4285         *)      echo "Ok.  Stopping Configure." >&4
4286                 exit 1
4287                 ;;
4288         esac
4289         ;;
4290 n) echo "OK, that should do.";;
4291 esac
4292 $rm -f try try.* core
4293
4294 : define an is-a-typedef? function
4295 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4296 case "$inclist" in
4297 "") inclist="sys/types.h";;
4298 esac;
4299 eval "varval=\$$var";
4300 case "$varval" in
4301 "")
4302         $rm -f temp.c;
4303         for inc in $inclist; do
4304                 echo "#include <$inc>" >>temp.c;
4305         done;
4306         echo "#ifdef $type" >> temp.c;
4307         echo "printf(\"We have $type\");" >> temp.c;
4308         echo "#endif" >> temp.c;
4309         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4310         if $contains $type temp.E >/dev/null 2>&1; then
4311                 eval "$var=\$type";
4312         else
4313                 eval "$var=\$def";
4314         fi;
4315         $rm -f temp.?;;
4316 *) eval "$var=\$varval";;
4317 esac'
4318
4319 : define an is-a-typedef? function that prompts if the type is not available.
4320 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4321 case "$inclist" in
4322 "") inclist="sys/types.h";;
4323 esac;
4324 eval "varval=\$$var";
4325 case "$varval" in
4326 "")
4327         $rm -f temp.c;
4328         for inc in $inclist; do
4329                 echo "#include <$inc>" >>temp.c;
4330         done;
4331         echo "#ifdef $type" >> temp.c;
4332         echo "printf(\"We have $type\");" >> temp.c;
4333         echo "#endif" >> temp.c;
4334         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4335         echo " " ;
4336         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4337         if $contains $type temp.E >/dev/null 2>&1; then
4338                 echo "$type found." >&4;
4339                 eval "$var=\$type";
4340         else
4341                 echo "$type NOT found." >&4;
4342                 dflt="$def";
4343                 . ./myread ;
4344                 eval "$var=\$ans";
4345         fi;
4346         $rm -f temp.?;;
4347 *) eval "$var=\$varval";;
4348 esac'
4349
4350 : define a shorthand compile call
4351 compile='
4352 mc_file=$1;
4353 shift;
4354 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4355 : define a shorthand compile call for compilations that should be ok.
4356 compile_ok='
4357 mc_file=$1;
4358 shift;
4359 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4360
4361 : check for lengths of integral types
4362 echo " "
4363 case "$intsize" in
4364 '')
4365         echo "Checking to see how big your integers are..." >&4
4366         $cat >intsize.c <<'EOCP'
4367 #include <stdio.h>
4368 int main()
4369 {
4370         printf("intsize=%d;\n", (int)sizeof(int));
4371         printf("longsize=%d;\n", (int)sizeof(long));
4372         printf("shortsize=%d;\n", (int)sizeof(short));
4373         exit(0);
4374 }
4375 EOCP
4376         set intsize
4377         if eval $compile_ok && ./intsize > /dev/null; then
4378                 eval `./intsize`
4379                 echo "Your integers are $intsize bytes long."
4380                 echo "Your long integers are $longsize bytes long."
4381                 echo "Your short integers are $shortsize bytes long."
4382         else
4383                 $cat >&4 <<EOM
4384 !
4385 Help! I can't compile and run the intsize test program: please enlighten me!
4386 (This is probably a misconfiguration in your system or libraries, and
4387 you really ought to fix it.  Still, I'll try anyway.)
4388 !
4389 EOM
4390                 dflt=4
4391                 rp="What is the size of an integer (in bytes)?"
4392                 . ./myread
4393                 intsize="$ans"
4394                 dflt=$intsize
4395                 rp="What is the size of a long integer (in bytes)?"
4396                 . ./myread
4397                 longsize="$ans"
4398                 dflt=2
4399                 rp="What is the size of a short integer (in bytes)?"
4400                 . ./myread
4401                 shortsize="$ans"
4402         fi
4403         ;;
4404 esac
4405 $rm -f intsize intsize.*
4406
4407 : see what type lseek is declared as in the kernel
4408 rp="What is the type used for lseek's offset on this system?"
4409 set off_t lseektype long stdio.h sys/types.h
4410 eval $typedef_ask
4411
4412 echo " "
4413 echo "Checking to see how big your file offsets are..." >&4
4414 $cat >try.c <<EOCP
4415 #include <sys/types.h>
4416 #include <stdio.h>
4417 int main()
4418 {
4419     printf("%d\n", (int)sizeof($lseektype));
4420     return(0); 
4421 }
4422 EOCP
4423 set try
4424 if eval $compile_ok; then
4425         lseeksize=`./try`
4426         echo "Your file offsets are $lseeksize bytes long."
4427 else
4428         dflt=$longsize
4429         echo " "
4430         echo "(I can't seem to compile the test program.  Guessing...)"
4431         rp="What is the size of your file offsets (in bytes)?"
4432         . ./myread
4433         lseeksize="$ans"
4434 fi
4435 $rm -f try.c try
4436
4437 : see what type file positions are declared as in the library
4438 rp="What is the type for file position used by fsetpos()?"
4439 set fpos_t fpostype long stdio.h sys/types.h
4440 eval $typedef_ask
4441
4442 echo " "
4443 case "$fpostype" in
4444 *_t) zzz="$fpostype"    ;;
4445 *)   zzz="fpos_t"       ;;
4446 esac
4447 echo "Checking the size of $zzz..." >&4 
4448 cat > try.c <<EOCP
4449 #include <sys/types.h>
4450 #include <stdio.h>
4451 int main() {
4452     printf("%d\n", (int)sizeof($fpostype));
4453     exit(0);
4454 }
4455 EOCP
4456 set try
4457 if eval $compile_ok; then
4458         yyy=`./try`
4459         case "$yyy" in
4460         '')     fpossize=4
4461                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4462                 ;;
4463         *)      fpossize=$yyy
4464                 echo "Your $zzz is $fpossize bytes long."
4465                 ;;
4466         esac
4467 else
4468         dflt="$longsize"
4469         echo " " >&4
4470         echo "(I can't compile the test program.  Guessing...)" >&4
4471         rp="What is the size of your file positions (in bytes)?"
4472         . ./myread
4473         fpossize="$ans"
4474 fi
4475
4476
4477
4478 # Backward compatibility (uselfs is deprecated).
4479 case "$uselfs" in
4480 "$define"|true|[yY]*)
4481         cat <<EOM >&4
4482
4483 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4484 EOM
4485         uselargefiles="$define"
4486         ;;
4487 esac                          
4488
4489 case "$lseeksize:$fpossize" in
4490 8:8) cat <<EOM
4491
4492 You can have files larger than 2 gigabytes.
4493 EOM
4494    val="$define" ;;
4495 *)    case "$uselargefiles" in
4496    "$undef"|false|[nN]*) dflt='n' ;;
4497    *)   dflt='y' ;;
4498    esac
4499    cat <<EOM
4500
4501 Perl can be built to understand large files (files larger than 2 gigabytes)
4502 on some systems.  To do so, Configure can be run with -Duselargefiles.
4503
4504 If this doesn't make any sense to you, just accept the default '$dflt'.
4505 EOM
4506    rp='Try to understand large files, if available?'
4507    . ./myread
4508    case "$ans" in
4509    y|Y)         val="$define" ;;
4510    *)           val="$undef"  ;;
4511    esac
4512    ;;
4513 esac
4514 set uselargefiles
4515 eval $setvar
4516 case "$uselargefiles" in
4517 "$define")
4518 : Look for a hint-file generated 'call-back-unit'.  If the
4519 : user has specified that a large files perl is to be built,
4520 : we may need to set or change some other defaults.
4521         if $test -f uselargefiles.cbu; then
4522                 echo "Your platform has some specific hints for large file builds, using them..."
4523                 . ./uselargefiles.cbu
4524                 echo " "
4525                 echo "Rechecking to see how big your file offsets are..." >&4
4526                 $cat >try.c <<EOCP
4527 #include <sys/types.h>
4528 #include <stdio.h>
4529 int main()
4530 {
4531     printf("%d\n", (int)sizeof($lseektype));
4532     return(0); 
4533 }
4534 EOCP
4535                 set try
4536                 if eval $compile_ok; then
4537                         lseeksize=`./try`
4538                         $echo "Your file offsets are now $lseeksize bytes long."
4539                 else
4540                         dflt="$lseeksize"
4541                         echo " "
4542                         echo "(I can't seem to compile the test program.  Guessing...)"
4543                         rp="What is the size of your file offsets (in bytes)?"
4544                         . ./myread
4545                         lseeksize="$ans"
4546                 fi
4547                 case "$fpostype" in
4548                 *_t) zzz="$fpostype"    ;;
4549                 *)   zzz="fpos_t"       ;;
4550                 esac
4551                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4552                 $cat > try.c <<EOCP
4553 #include <sys/types.h>
4554 #include <stdio.h>
4555 int main() {
4556     printf("%d\n", (int)sizeof($fpostype));
4557     exit(0);
4558 }
4559 EOCP
4560                 set try
4561                 if eval $compile_ok; then
4562                         yyy=`./try`
4563                         dflt="$lseeksize"
4564                         case "$yyy" in
4565                         '')     echo " "
4566                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4567                                 ;;
4568                         *)      fpossize=$yyy
4569                                 echo " $fpossize bytes." >&4
4570                                 ;;
4571                         esac
4572                 else
4573                         dflt="$fpossize"
4574                         echo " "
4575                         echo "(I can't compile the test program.  Guessing...)" >&4
4576                         rp="What is the size of your file positions (in bytes)?"
4577                         . ./myread
4578                         fpossize="$ans"
4579                 fi
4580                 $rm -f try.c try
4581         fi
4582         ;;
4583 esac
4584
4585
4586 case "$usemorebits" in
4587 "$define"|true|[yY]*)
4588         use64bitint="$define"
4589         uselongdouble="$define"
4590         usemorebits="$define"
4591         ;;
4592 *)      usemorebits="$undef"
4593         ;;
4594 esac
4595
4596
4597 case "$uselonglong" in
4598 "$define"|true|[yY]*)
4599         cat <<EOM >&4
4600
4601 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4602 EOM
4603         use64bitint="$define"
4604         ;;
4605 esac                          
4606 case "$use64bits" in
4607 "$define"|true|[yY]*)
4608         cat <<EOM >&4
4609
4610 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4611 EOM
4612         use64bitint="$define"
4613         ;;
4614 esac                          
4615 case "$use64bitints" in
4616 "$define"|true|[yY]*)
4617         cat <<EOM >&4
4618
4619 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4620 EOM
4621         use64bitint="$define"
4622         ;;
4623 esac                          
4624 case "$use64bitsint" in
4625 "$define"|true|[yY]*)
4626         cat <<EOM >&4
4627
4628 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4629 EOM
4630         use64bitint="$define"
4631         ;;
4632 esac                          
4633 case "$uselonglongs" in
4634 "$define"|true|[yY]*)
4635         cat <<EOM >&4
4636
4637 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4638 EOM
4639         use64bitint="$define"
4640         ;;
4641 esac                          
4642 case "$use64bitsall" in
4643 "$define"|true|[yY]*)
4644         cat <<EOM >&4
4645
4646 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4647 EOM
4648         use64bitall="$define"
4649         ;;
4650 esac                          
4651
4652 case "$ccflags" in
4653 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4654 esac
4655 case "$use64bitall" in
4656 "$define"|true|[yY]*) use64bitint="$define" ;;
4657 esac
4658
4659 case "$longsize" in
4660 8) cat <<EOM
4661
4662 You have natively 64-bit long integers.
4663 EOM
4664    val="$define"
4665    ;;
4666 *) case "$use64bitint" in
4667    "$define"|true|[yY]*) dflt='y';;
4668    *) dflt='n';;
4669    esac
4670    cat <<EOM
4671
4672 Perl can be built to take advantage of 64-bit integer types
4673 on some systems.  To do so, Configure can be run with -Duse64bitint.
4674 Choosing this option will most probably introduce binary incompatibilities.
4675
4676 If this doesn't make any sense to you, just accept the default '$dflt'.
4677 EOM
4678    rp='Try to use 64-bit integers, if available?'
4679    . ./myread
4680    case "$ans" in
4681    [yY]*) val="$define" ;;
4682    *)     val="$undef"  ;;
4683    esac
4684    ;;
4685 esac
4686 set use64bitint
4687 eval $setvar
4688
4689 case "$use64bitall" in
4690 "$define"|true|[yY]*) dflt='y' ;;
4691 *) case "$longsize" in
4692    8) dflt='y' ;;
4693    *) dflt='n' ;;
4694    esac
4695    ;;
4696 esac    
4697 cat <<EOM
4698
4699 You may also choose to try maximal 64-bitness.  It means using as much
4700 64-bitness as possible on the platform.  This in turn means even more
4701 binary incompatibilities.  On the other hand, your platform may not
4702 have any more 64-bitness available than what you already have chosen.
4703
4704 If this doesn't make any sense to you, just accept the default '$dflt'.
4705 EOM
4706 rp='Try to use maximal 64-bit support, if available?'
4707 . ./myread
4708 case "$ans" in
4709 [yY]*) val="$define" ;;
4710 *)     val="$undef"  ;;
4711 esac
4712 set use64bitall
4713 eval $setvar
4714 case "$use64bitall" in
4715 "$define")
4716         case "$use64bitint" in
4717         "$undef")
4718                 cat <<EOM
4719
4720 Since you have chosen a maximally 64-bit build, I'm also turning on
4721 the use of 64-bit integers.
4722 EOM
4723                 use64bitint="$define" ;;
4724         esac
4725         ;;
4726 esac
4727
4728 case "$use64bitint" in
4729 "$define"|true|[yY]*)
4730 : Look for a hint-file generated 'call-back-unit'.  If the
4731 : user has specified that a 64-bit perl is to be built,
4732 : we may need to set or change some other defaults.
4733         if $test -f use64bitint.cbu; then
4734                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4735                 . ./use64bitint.cbu
4736         fi
4737         case "$longsize" in
4738         4) case "$archname64" in
4739            '') archname64=64int ;;
4740            esac
4741            ;;
4742         esac
4743         ;;
4744 esac
4745
4746 case "$use64bitall" in
4747 "$define"|true|[yY]*)
4748 : Look for a hint-file generated 'call-back-unit'.  If the
4749 : user has specified that a maximally 64-bit perl is to be built,
4750 : we may need to set or change some other defaults.
4751         if $test -f use64bitall.cbu; then
4752                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4753                 . ./use64bitall.cbu
4754         fi
4755         case "$longsize" in
4756         4) case "$archname64" in
4757            ''|64int) archname64=64all ;;
4758            esac
4759            ;;
4760         esac
4761         ;;
4762 esac
4763
4764 echo " "
4765 echo "Checking for GNU C Library..." >&4
4766 cat >gnulibc.c <<EOM
4767 #include <stdio.h>
4768 int main()
4769 {
4770 #ifdef __GLIBC__
4771     exit(0);
4772 #else
4773     exit(1);
4774 #endif
4775 }
4776 EOM
4777 set gnulibc
4778 if eval $compile_ok && ./gnulibc; then
4779         val="$define"
4780         echo "You are using the GNU C Library"
4781 else
4782         val="$undef"
4783         echo "You are not using the GNU C Library"
4784 fi
4785 $rm -f gnulibc*
4786 set d_gnulibc
4787 eval $setvar
4788
4789 : see if nm is to be used to determine whether a symbol is defined or not
4790 case "$usenm" in
4791 '')
4792         dflt=''
4793         case "$d_gnulibc" in
4794         "$define")
4795                 echo " "
4796                 echo "nm probably won't work on the GNU C Library." >&4
4797                 dflt=n
4798                 ;;
4799         esac
4800         case "$dflt" in
4801         '') 
4802                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4803                         echo " "
4804                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4805                         echo "'nm' won't be sufficient on this sytem." >&4
4806                         dflt=n
4807                 fi
4808                 ;;
4809         esac
4810         case "$dflt" in
4811         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4812                 if $test $dflt -gt 20; then
4813                         dflt=y
4814                 else
4815                         dflt=n
4816                 fi
4817                 ;;
4818         esac
4819         ;;
4820 *)
4821         case "$usenm" in
4822         true|$define) dflt=y;;
4823         *) dflt=n;;
4824         esac
4825         ;;
4826 esac
4827 $cat <<EOM
4828
4829 I can use $nm to extract the symbols from your C libraries. This
4830 is a time consuming task which may generate huge output on the disk (up
4831 to 3 megabytes) but that should make the symbols extraction faster. The
4832 alternative is to skip the 'nm' extraction part and to compile a small
4833 test program instead to determine whether each symbol is present. If
4834 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4835 this may be the best solution.
4836
4837 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4838
4839 EOM
4840 rp="Shall I use $nm to extract C symbols from the libraries?"
4841 . ./myread
4842 case "$ans" in
4843 [Nn]*) usenm=false;;
4844 *) usenm=true;;
4845 esac
4846
4847 runnm=$usenm
4848 case "$reuseval" in
4849 true) runnm=false;;
4850 esac
4851
4852 : nm options which may be necessary
4853 case "$nm_opt" in
4854 '') if $test -f /mach_boot; then
4855                 nm_opt=''       # Mach
4856         elif $test -d /usr/ccs/lib; then
4857                 nm_opt='-p'     # Solaris (and SunOS?)
4858         elif $test -f /dgux; then
4859                 nm_opt='-p'     # DG-UX
4860         elif $test -f /lib64/rld; then
4861                 nm_opt='-p'     # 64-bit Irix
4862         else
4863                 nm_opt=''
4864         fi;;
4865 esac
4866
4867 : nm options which may be necessary for shared libraries but illegal
4868 : for archive libraries.  Thank you, Linux.
4869 case "$nm_so_opt" in
4870 '')     case "$myuname" in
4871         *linux*)
4872                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4873                         nm_so_opt='--dynamic'
4874                 fi
4875                 ;;
4876         esac
4877         ;;
4878 esac
4879
4880 case "$runnm" in
4881 true)
4882 : get list of predefined functions in a handy place
4883 echo " "
4884 case "$libc" in
4885 '') libc=unknown
4886         case "$libs" in
4887         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4888         esac
4889         ;;
4890 esac
4891 libnames='';
4892 case "$libs" in
4893 '') ;;
4894 *)  for thislib in $libs; do
4895         case "$thislib" in
4896         -lc|-lc_s)
4897                 : Handle C library specially below.
4898                 ;;
4899         -l*)
4900                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4901                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4902                         :
4903                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4904                         :
4905                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4906                         :
4907                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4908                         :
4909                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4910                         :
4911                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4912                         :
4913                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4914                         :
4915                 else
4916                         try=''
4917                 fi
4918                 libnames="$libnames $try"
4919                 ;;
4920         *) libnames="$libnames $thislib" ;;
4921         esac
4922         done
4923         ;;
4924 esac
4925 xxx=normal
4926 case "$libc" in
4927 unknown)
4928         set /lib/libc.$so
4929         for xxx in $libpth; do
4930                 $test -r $1 || set $xxx/libc.$so
4931                 : The messy sed command sorts on library version numbers.
4932                 $test -r $1 || \
4933                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4934                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4935                                 h
4936                                 s/[0-9][0-9]*/0000&/g
4937                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4938                                 G
4939                                 s/\n/ /' | \
4940                          sort | $sed -e 's/^.* //'`
4941                 eval set \$$#
4942         done
4943         $test -r $1 || set /usr/ccs/lib/libc.$so
4944         $test -r $1 || set /lib/libsys_s$_a
4945         ;;
4946 *)
4947         set blurfl
4948         ;;
4949 esac
4950 if $test -r "$1"; then
4951         echo "Your (shared) C library seems to be in $1."
4952         libc="$1"
4953 elif $test -r /lib/libc && $test -r /lib/clib; then
4954         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4955         xxx=apollo
4956         libc='/lib/clib /lib/libc'
4957         if $test -r /lib/syslib; then
4958                 echo "(Your math library is in /lib/syslib.)"
4959                 libc="$libc /lib/syslib"
4960         fi
4961 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4962         echo "Your C library seems to be in $libc, as you said before."
4963 elif $test -r $incpath/usr/lib/libc$_a; then
4964         libc=$incpath/usr/lib/libc$_a;
4965         echo "Your C library seems to be in $libc.  That's fine."
4966 elif $test -r /lib/libc$_a; then
4967         libc=/lib/libc$_a;
4968         echo "Your C library seems to be in $libc.  You're normal."
4969 else
4970         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4971                 :
4972         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4973                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4974         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4975                 :
4976         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4977                 :
4978         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4979                 :
4980         else
4981                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4982         fi
4983         if $test -r "$tans"; then
4984                 echo "Your C library seems to be in $tans, of all places."
4985                 libc=$tans
4986         else
4987                 libc='blurfl'
4988         fi
4989 fi
4990 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4991         dflt="$libc"
4992         cat <<EOM
4993
4994 If the guess above is wrong (which it might be if you're using a strange
4995 compiler, or your machine supports multiple models), you can override it here.
4996
4997 EOM
4998 else
4999         dflt=''
5000         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5001         cat >&4 <<EOM
5002 I can't seem to find your C library.  I've looked in the following places:
5003
5004 EOM
5005         $sed 's/^/      /' libpath
5006         cat <<EOM
5007
5008 None of these seems to contain your C library. I need to get its name...
5009
5010 EOM
5011 fi
5012 fn=f
5013 rp='Where is your C library?'
5014 . ./getfile
5015 libc="$ans"
5016
5017 echo " "
5018 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5019 set X `cat libnames`
5020 shift
5021 xxx=files
5022 case $# in 1) xxx=file; esac
5023 echo "Extracting names from the following $xxx for later perusal:" >&4
5024 echo " "
5025 $sed 's/^/      /' libnames >&4
5026 echo " "
5027 $echo $n "This may take a while...$c" >&4
5028
5029 for file in $*; do
5030         case $file in
5031         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5032         *) $nm $nm_opt $file 2>/dev/null;;
5033         esac
5034 done >libc.tmp
5035
5036 $echo $n ".$c"
5037 $grep fprintf libc.tmp > libc.ptf
5038 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5039 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5040 xxx='[ADTSIW]'
5041 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5042         eval $xscan;\
5043         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5044                 eval $xrun
5045 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5046         eval $xscan;\
5047         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5048                 eval $xrun
5049 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5050         eval $xscan;\
5051         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5052                 eval $xrun
5053 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5054         eval $xscan;\
5055         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5056                 eval $xrun
5057 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5058         eval $xscan;\
5059         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5060                 eval $xrun
5061 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5062         eval $xscan;\
5063         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5064                 eval $xrun
5065 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5066                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5067         eval $xscan;\
5068         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5069                 eval $xrun
5070 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5071         eval $xscan;\
5072         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5073                 eval $xrun
5074 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5075         eval $xscan;\
5076         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5077                 eval $xrun
5078 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5079         eval $xscan;\
5080         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5081                 eval $xrun
5082 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5083         eval $xscan;\
5084         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5085                 eval $xrun
5086 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5087         eval $xscan;\
5088         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5089                 eval $xrun
5090 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5091         eval $xscan;\
5092         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5093                 eval $xrun
5094 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5095         eval $xscan;\
5096         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5097                 eval $xrun
5098 else
5099         $nm -p $* 2>/dev/null >libc.tmp
5100         $grep fprintf libc.tmp > libc.ptf
5101         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5102                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5103         then
5104                 nm_opt='-p'
5105                 eval $xrun
5106         else
5107                 echo " "
5108                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5109                 com=''
5110                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5111                         for thisname in $libnames $libc; do
5112                                 $ar t $thisname >>libc.tmp
5113                         done
5114                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5115                         echo "Ok." >&4
5116                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5117                         # Repeat libc to extract forwarders to DLL entries too
5118                         for thisname in $libnames $libc; do
5119                                 $ar tv $thisname >>libc.tmp
5120                                 # Revision 50 of EMX has bug in $ar.
5121                                 # it will not extract forwarders to DLL entries
5122                                 # Use emximp which will extract exactly them.
5123                                 emximp -o tmp.imp $thisname \
5124                                     2>/dev/null && \
5125                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5126                                     < tmp.imp >>libc.tmp
5127                                 $rm tmp.imp
5128                         done
5129                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5130                         echo "Ok." >&4
5131                 else
5132                         echo "$ar didn't seem to work right." >&4
5133                         echo "Maybe this is a Cray...trying bld instead..." >&4
5134                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5135                         then
5136                                 for thisname in $libnames; do
5137                                         bld t $libnames | \
5138                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5139                                         $ar t $thisname >>libc.tmp
5140                                 done
5141                                 echo "Ok." >&4
5142                         else
5143                                 echo "That didn't work either.  Giving up." >&4
5144                                 exit 1
5145                         fi
5146                 fi
5147         fi
5148 fi
5149 nm_extract="$com"
5150 if $test -f /lib/syscalls.exp; then
5151         echo " "
5152         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5153         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5154 fi
5155 ;;
5156 esac
5157 $rm -f libnames libpath
5158
5159 : is a C symbol defined?
5160 csym='tlook=$1;
5161 case "$3" in
5162 -v) tf=libc.tmp; tc=""; tdc="";;
5163 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5164 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5165 esac;
5166 tx=yes;
5167 case "$reuseval-$4" in
5168 true-) ;;
5169 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5170 esac;
5171 case "$tx" in
5172 yes)
5173         case "$runnm" in
5174         true)
5175                 if $contains $tlook $tf >/dev/null 2>&1;
5176                 then tval=true;
5177                 else tval=false;
5178                 fi;;
5179         *)
5180                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5181                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5182                 then tval=true;
5183                 else tval=false;
5184                 fi;
5185                 $rm -f t t.c;;
5186         esac;;
5187 *)
5188         case "$tval" in
5189         $define) tval=true;;
5190         *) tval=false;;
5191         esac;;
5192 esac;
5193 eval "$2=$tval"'
5194
5195 : define an is-in-libc? function
5196 inlibc='echo " "; td=$define; tu=$undef;
5197 sym=$1; var=$2; eval "was=\$$2";
5198 tx=yes;
5199 case "$reuseval$was" in
5200 true) ;;
5201 true*) tx=no;;
5202 esac;
5203 case "$tx" in
5204 yes)
5205         set $sym tres -f;
5206         eval $csym;
5207         case "$tres" in
5208         true)
5209                 echo "$sym() found." >&4;
5210                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5211         *)
5212                 echo "$sym() NOT found." >&4;
5213                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5214         esac;;
5215 *)
5216         case "$was" in
5217         $define) echo "$sym() found." >&4;;
5218         *) echo "$sym() NOT found." >&4;;
5219         esac;;
5220 esac'
5221
5222 : see if sqrtl exists
5223 set sqrtl d_sqrtl
5224 eval $inlibc
5225
5226 case "$ccflags" in
5227 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5228 esac
5229
5230 case "$uselongdouble" in
5231 $define|true|[yY]*)     dflt='y';;
5232 *) dflt='n';;
5233 esac
5234 cat <<EOM
5235
5236 Perl can be built to take advantage of long doubles which
5237 (if available) may give more accuracy and range for floating point numbers.
5238
5239 If this doesn't make any sense to you, just accept the default '$dflt'.
5240 EOM
5241 rp='Try to use long doubles if available?'
5242 . ./myread
5243 case "$ans" in
5244 y|Y)    val="$define"   ;;
5245 *)      val="$undef"    ;;
5246 esac
5247 set uselongdouble
5248 eval $setvar
5249
5250 case "$uselongdouble" in
5251 true|[yY]*) uselongdouble="$define" ;;
5252 esac
5253
5254 case "$uselongdouble" in
5255 $define)
5256 : Look for a hint-file generated 'call-back-unit'.  If the
5257 : user has specified that long doubles should be used,
5258 : we may need to set or change some other defaults.
5259         if $test -f uselongdouble.cbu; then
5260                 echo "Your platform has some specific hints for long doubles, using them..."
5261                 . ./uselongdouble.cbu
5262         else
5263                 $cat <<EOM
5264 (Your platform doesn't have any specific hints for long doubles.)
5265 EOM
5266         fi
5267         ;;
5268 esac
5269
5270 case "$uselongdouble:$d_sqrtl" in
5271 $define:$undef)
5272                 $cat <<EOM >&4
5273
5274 *** You requested the use of long doubles but you do not seem to have
5275 *** the mathematic functions for long doubles.  I'm disabling the use
5276 *** of long doubles.
5277
5278 EOM
5279         uselongdouble=$undef
5280         ;;
5281 esac
5282
5283 : check for length of double
5284 echo " "
5285 case "$doublesize" in
5286 '')
5287         echo "Checking to see how big your double precision numbers are..." >&4
5288         $cat >try.c <<'EOCP'
5289 #include <stdio.h>
5290 int main()
5291 {
5292     printf("%d\n", (int)sizeof(double));
5293     exit(0);
5294 }
5295 EOCP
5296         set try
5297         if eval $compile_ok; then
5298                 doublesize=`./try`
5299                 echo "Your double is $doublesize bytes long."
5300         else
5301                 dflt='8'
5302                 echo "(I can't seem to compile the test program.  Guessing...)"
5303                 rp="What is the size of a double precision number (in bytes)?"
5304                 . ./myread
5305                 doublesize="$ans"
5306         fi
5307         ;;
5308 esac
5309 $rm -f try.c try
5310
5311 : check for long doubles
5312 echo " "
5313 echo "Checking to see if you have long double..." >&4
5314 echo 'int main() { long double x = 7.0; }' > try.c
5315 set try
5316 if eval $compile; then
5317         val="$define"
5318         echo "You have long double."
5319 else
5320         val="$undef"
5321         echo "You do not have long double."
5322 fi
5323 $rm try.*
5324 set d_longdbl
5325 eval $setvar
5326
5327 : check for length of long double
5328 case "${d_longdbl}${longdblsize}" in
5329 $define)
5330         echo " "
5331         echo "Checking to see how big your long doubles are..." >&4
5332         $cat >try.c <<'EOCP'
5333 #include <stdio.h>
5334 int main()
5335 {
5336         printf("%d\n", sizeof(long double));
5337 }
5338 EOCP
5339         set try
5340         set try
5341         if eval $compile; then
5342                 longdblsize=`./try$exe_ext`
5343                 echo "Your long doubles are $longdblsize bytes long."
5344         else
5345                 dflt='8'
5346                 echo " "
5347                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5348                 rp="What is the size of a long double (in bytes)?"
5349                 . ./myread
5350                 longdblsize="$ans"
5351         fi
5352         if $test "X$doublesize" = "X$longdblsize"; then
5353                 echo "(That isn't any different from an ordinary double.)"
5354         fi      
5355         ;;
5356 esac
5357 $rm -f try.* try
5358
5359 : determine the architecture name
5360 echo " "
5361 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5362         tarch=`arch`"-$osname"
5363 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5364         if uname -m > tmparch 2>&1 ; then
5365                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5366                         -e 's/$/'"-$osname/" tmparch`
5367         else
5368                 tarch="$osname"
5369         fi
5370         $rm -f tmparch
5371 else
5372         tarch="$osname"
5373 fi
5374 case "$myarchname" in
5375 ''|"$tarch") ;;
5376 *)
5377         echo "(Your architecture name used to be $myarchname.)"
5378         archname=''
5379         ;;
5380 esac
5381 myarchname="$tarch"
5382 case "$archname" in
5383 '') dflt="$tarch";;
5384 *) dflt="$archname";;
5385 esac
5386 rp='What is your architecture name'
5387 . ./myread
5388 archname="$ans"
5389 case "$usethreads" in
5390 $define)
5391         echo "Threads selected." >&4
5392         case "$archname" in
5393         *-thread*) echo "...and architecture name already has -thread." >&4
5394                 ;;
5395         *)      archname="$archname-thread"
5396                 echo "...setting architecture name to $archname." >&4
5397                 ;;
5398         esac
5399         ;;
5400 esac
5401 case "$usemultiplicity" in
5402 $define)
5403         echo "Multiplicity selected." >&4
5404         case "$archname" in
5405         *-multi*) echo "...and architecture name already has -multi." >&4
5406                 ;;
5407         *)      archname="$archname-multi"
5408                 echo "...setting architecture name to $archname." >&4
5409                 ;;
5410         esac
5411         ;;
5412 esac
5413 case "$use64bitint$use64bitall" in
5414 *"$define"*)
5415         case "$archname64" in
5416         '')
5417                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5418                 ;;
5419         *)
5420                 case "$use64bitint" in
5421                 "$define") echo "64 bit integers selected." >&4 ;;
5422                 esac
5423                 case "$use64bitall" in
5424                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5425                 esac
5426                 case "$archname" in
5427                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5428                         ;;
5429                 *)      archname="$archname-$archname64"
5430                         echo "...setting architecture name to $archname." >&4
5431                         ;;
5432                 esac
5433                 ;;
5434         esac
5435 esac
5436 case "$uselongdouble" in
5437 $define)
5438         echo "Long doubles selected." >&4
5439         case "$longdblsize" in
5440         $doublesize)
5441                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5442                 ;;
5443         *)
5444                 case "$archname" in
5445                 *-ld*) echo "...and architecture name already has -ld." >&4
5446                         ;;
5447                 *)      archname="$archname-ld"
5448                         echo "...setting architecture name to $archname." >&4
5449                         ;;
5450                 esac
5451                 ;;
5452         esac
5453         ;;
5454 esac
5455
5456 : determine root of directory hierarchy where package will be installed.
5457 case "$prefix" in
5458 '')
5459         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5460         ;;
5461 *)
5462         dflt="$prefix"
5463         ;;
5464 esac
5465 $cat <<EOM
5466
5467 By default, $package will be installed in $dflt/bin, manual pages
5468 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5469 installation directories. Typically this is something like /usr/local.
5470 If you wish to have binaries under /usr/bin but other parts of the
5471 installation under /usr/local, that's ok: you will be prompted
5472 separately for each of the installation directories, the prefix being
5473 only used to set the defaults.
5474
5475 EOM
5476 fn=d~
5477 rp='Installation prefix to use?'
5478 . ./getfile
5479 oldprefix=''
5480 case "$prefix" in
5481 '') ;;
5482 *)
5483         case "$ans" in
5484         "$prefix") ;;
5485         *) oldprefix="$prefix";;
5486         esac
5487         ;;
5488 esac
5489 prefix="$ans"
5490 prefixexp="$ansexp"
5491
5492 : is AFS running?
5493 echo " "
5494 case "$afs" in
5495 $define|true)   afs=true ;;
5496 $undef|false)   afs=false ;;
5497 *)      if test -d /afs; then
5498                 afs=true
5499         else
5500                 afs=false
5501         fi
5502         ;;
5503 esac
5504 if $afs; then
5505         echo "AFS may be running... I'll be extra cautious then..." >&4
5506 else
5507         echo "AFS does not seem to be running..." >&4
5508 fi
5509
5510 : determine installation prefix for where package is to be installed.
5511 if $afs; then 
5512 $cat <<EOM
5513
5514 Since you are running AFS, I need to distinguish the directory in which
5515 files will reside from the directory in which they are installed (and from
5516 which they are presumably copied to the former directory by occult means).
5517
5518 EOM
5519         case "$installprefix" in
5520         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5521         *) dflt="$installprefix";;
5522         esac
5523 else
5524 $cat <<EOM
5525
5526 In some special cases, particularly when building $package for distribution,
5527 it is convenient to distinguish between the directory in which files should 
5528 be installed from the directory ($prefix) in which they 
5529 will eventually reside.  For most users, these two directories are the same.
5530
5531 EOM
5532         case "$installprefix" in
5533         '') dflt=$prefix ;;
5534         *) dflt=$installprefix;;
5535         esac
5536 fi
5537 fn=d~
5538 rp='What installation prefix should I use for installing files?'
5539 . ./getfile
5540 installprefix="$ans"
5541 installprefixexp="$ansexp"
5542
5543 : set the prefixit variable, to compute a suitable default value
5544 prefixit='case "$3" in
5545 ""|none)
5546         case "$oldprefix" in
5547         "") eval "$1=\"\$$2\"";;
5548         *)
5549                 case "$3" in
5550                 "") eval "$1=";;
5551                 none)
5552                         eval "tp=\"\$$2\"";
5553                         case "$tp" in
5554                         ""|" ") eval "$1=\"\$$2\"";;
5555                         *) eval "$1=";;
5556                         esac;;
5557                 esac;;
5558         esac;;
5559 *)
5560         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5561         case "$tp" in
5562         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5563         /*-$oldprefix/*|\~*-$oldprefix/*)
5564                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5565         *) eval "$1=\"\$$2\"";;
5566         esac;;
5567 esac'
5568
5569
5570 : get the patchlevel
5571 echo " "
5572 echo "Getting the current patchlevel..." >&4
5573 if $test -r $rsrc/patchlevel.h;then
5574         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5575         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5576         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5577         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5578         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5579         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5580 else
5581         revision=0
5582         patchlevel=0
5583         subversion=0
5584         api_revision=0
5585         api_version=0
5586         api_subversion=0
5587 fi
5588 $echo "(You have $package version $patchlevel subversion $subversion.)"
5589 case "$osname" in
5590 dos|vms)
5591         : XXX Should be a Configure test for double-dots in filenames.
5592         version=`echo $revision $patchlevel $subversion | \
5593                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5594         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5595                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5596         ;;
5597 *)
5598         version=`echo $revision $patchlevel $subversion | \
5599                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5600         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5601                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5602         ;;
5603 esac
5604 : Special case the 5.005_xx maintenance series, which used 5.005
5605 : without any subversion label as a subdirectory in $sitelib
5606 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5607         api_versionstring='5.005'
5608 fi
5609
5610 : determine installation style
5611 : For now, try to deduce it from prefix unless it is already set.
5612 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5613 case "$installstyle" in
5614 '')     case "$prefix" in
5615                 *perl*) dflt='lib';;
5616                 *) dflt='lib/perl5' ;;
5617         esac
5618         ;;
5619 *)      dflt="$installstyle" ;;
5620 esac
5621 : Probably not worth prompting for this since we prompt for all
5622 : the directories individually, and the prompt would be too long and
5623 : confusing anyway.
5624 installstyle=$dflt
5625
5626 : determine where private library files go
5627 : Usual default is /usr/local/lib/perl5/$version.
5628 : Also allow things like /opt/perl/lib/$version, since 
5629 : /opt/perl/lib/perl5... would be redundant.
5630 : The default "style" setting is made in installstyle.U
5631 case "$installstyle" in
5632 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5633 *)       set dflt privlib lib/$version ;;
5634 esac
5635 eval $prefixit
5636 $cat <<EOM
5637
5638 There are some auxiliary files for $package that need to be put into a
5639 private library directory that is accessible by everyone.
5640
5641 EOM
5642 fn=d~+
5643 rp='Pathname where the private library files will reside?'
5644 . ./getfile
5645 privlib="$ans"
5646 privlibexp="$ansexp"
5647 : Change installation prefix, if necessary.
5648 if $test X"$prefix" != X"$installprefix"; then
5649         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5650 else
5651         installprivlib="$privlibexp"
5652 fi
5653
5654 : set the prefixup variable, to restore leading tilda escape
5655 prefixup='case "$prefixexp" in
5656 "$prefix") ;;
5657 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5658 esac'
5659
5660 : determine where public architecture dependent libraries go
5661 set archlib archlib
5662 eval $prefixit
5663 : privlib default is /usr/local/lib/$package/$version
5664 : archlib default is /usr/local/lib/$package/$version/$archname
5665 : privlib may have an optional trailing /share.
5666 tdflt=`echo $privlib | $sed 's,/share$,,'`
5667 tdflt=$tdflt/$archname
5668 case "$archlib" in
5669 '')     dflt=$tdflt
5670         ;;
5671 *)      dflt="$archlib"
5672     ;;
5673 esac
5674 $cat <<EOM
5675
5676 $spackage contains architecture-dependent library files.  If you are
5677 sharing libraries in a heterogeneous environment, you might store
5678 these files in a separate location.  Otherwise, you can just include
5679 them with the rest of the public library files.
5680
5681 EOM
5682 fn=d+~
5683 rp='Where do you want to put the public architecture-dependent libraries?'
5684 . ./getfile
5685 archlib="$ans"
5686 archlibexp="$ansexp"
5687 if $test X"$archlib" = X"$privlib"; then
5688         d_archlib="$undef"
5689 else
5690         d_archlib="$define"
5691 fi
5692 : Change installation prefix, if necessary.
5693 if $test X"$prefix" != X"$installprefix"; then
5694         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5695 else
5696         installarchlib="$archlibexp"
5697 fi
5698
5699
5700 : Binary compatibility with 5.005 is not possible for builds
5701 : with advanced features
5702 case "$usethreads$usemultiplicity" in
5703 *define*)
5704         bincompat5005="$undef"
5705         d_bincompat5005="$undef"
5706         ;;
5707 *)      $cat <<EOM
5708
5709 This version of Perl can be compiled for binary compatibility with 5.005.
5710 If you decide to do so, you will be able to continue using most of the
5711 extensions that were compiled for Perl 5.005.
5712
5713 EOM
5714         case "$bincompat5005$d_bincompat5005" in
5715         *"$undef"*) dflt=n ;;
5716         *) dflt=y ;;
5717         esac
5718         rp='Binary compatibility with Perl 5.005?'
5719         . ./myread
5720         case "$ans" in
5721         y*) val="$define" ;;
5722         *)  val="$undef" ;;
5723         esac
5724         set d_bincompat5005
5725         eval $setvar
5726         case "$d_bincompat5005" in
5727         "$define")
5728                 bincompat5005="$define"
5729                 ;;
5730         *)      bincompat5005="$undef"
5731                 d_bincompat5005="$undef"
5732                 ;;
5733         esac
5734         ;;
5735 esac
5736
5737
5738 : see if setuid scripts can be secure
5739 $cat <<EOM
5740
5741 Some kernels have a bug that prevents setuid #! scripts from being
5742 secure.  Some sites have disabled setuid #! scripts because of this.
5743
5744 First let's decide if your kernel supports secure setuid #! scripts.
5745 (If setuid #! scripts would be secure but have been disabled anyway,
5746 don't say that they are secure if asked.)
5747
5748 EOM
5749
5750 val="$undef"
5751 if $test -d /dev/fd; then
5752         echo "#!$ls" >reflect
5753         chmod +x,u+s reflect
5754         ./reflect >flect 2>&1
5755         if $contains "/dev/fd" flect >/dev/null; then
5756                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5757                 val="$define"
5758         else
5759                 $cat <<EOM
5760 If you are not sure if they are secure, I can check but I'll need a
5761 username and password different from the one you are using right now.
5762 If you don't have such a username or don't want me to test, simply
5763 enter 'none'.
5764
5765 EOM
5766                 rp='Other username to test security of setuid scripts with?'
5767                 dflt='none'
5768                 . ./myread
5769                 case "$ans" in
5770                 n|none)
5771                         case "$d_suidsafe" in
5772                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5773                                 dflt=n;;
5774                         "$undef")
5775                                 echo "Well, the $hint value is *not* secure." >&4
5776                                 dflt=n;;
5777                         *)      echo "Well, the $hint value *is* secure." >&4
5778                                 dflt=y;;
5779                         esac
5780                         ;;
5781                 *)
5782                         $rm -f reflect flect
5783                         echo "#!$ls" >reflect
5784                         chmod +x,u+s reflect
5785                         echo >flect
5786                         chmod a+w flect
5787                         echo '"su" will (probably) prompt you for '"$ans's password."
5788                         su $ans -c './reflect >flect'
5789                         if $contains "/dev/fd" flect >/dev/null; then
5790                                 echo "Okay, it looks like setuid scripts are secure." >&4
5791                                 dflt=y
5792                         else
5793                                 echo "I don't think setuid scripts are secure." >&4
5794                                 dflt=n
5795                         fi
5796                         ;;
5797                 esac
5798                 rp='Does your kernel have *secure* setuid scripts?'
5799                 . ./myread
5800                 case "$ans" in
5801                 [yY]*)  val="$define";;
5802                 *)      val="$undef";;
5803                 esac
5804         fi
5805 else
5806         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5807         echo "(That's for file descriptors, not floppy disks.)"
5808         val="$undef"
5809 fi
5810 set d_suidsafe
5811 eval $setvar
5812
5813 $rm -f reflect flect
5814
5815 : now see if they want to do setuid emulation
5816 echo " "
5817 val="$undef"
5818 case "$d_suidsafe" in
5819 "$define")
5820         val="$undef"
5821         echo "No need to emulate SUID scripts since they are secure here." >& 4
5822         ;;
5823 *)
5824         $cat <<EOM
5825 Some systems have disabled setuid scripts, especially systems where
5826 setuid scripts cannot be secure.  On systems where setuid scripts have
5827 been disabled, the setuid/setgid bits on scripts are currently
5828 useless.  It is possible for $package to detect those bits and emulate
5829 setuid/setgid in a secure fashion.  This emulation will only work if
5830 setuid scripts have been disabled in your kernel.
5831
5832 EOM
5833         case "$d_dosuid" in
5834         "$define") dflt=y ;;
5835         *) dflt=n ;;
5836         esac
5837         rp="Do you want to do setuid/setgid emulation?"
5838         . ./myread
5839         case "$ans" in
5840         [yY]*)  val="$define";;
5841         *)      val="$undef";;
5842         esac
5843         ;;
5844 esac
5845 set d_dosuid
5846 eval $setvar
5847
5848 : determine filename position in cpp output
5849 echo " "
5850 echo "Computing filename position in cpp output for #include directives..." >&4
5851 echo '#include <stdio.h>' > foo.c
5852 $cat >fieldn <<EOF
5853 $startsh
5854 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5855 $grep '^[       ]*#.*stdio\.h' | \
5856 while read cline; do
5857         pos=1
5858         set \$cline
5859         while $test \$# -gt 0; do
5860                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5861                         echo "\$pos"
5862                         exit 0
5863                 fi
5864                 shift
5865                 pos=\`expr \$pos + 1\`
5866         done
5867 done
5868 EOF
5869 chmod +x fieldn
5870 fieldn=`./fieldn`
5871 $rm -f foo.c fieldn
5872 case $fieldn in
5873 '') pos='???';;
5874 1) pos=first;;
5875 2) pos=second;;
5876 3) pos=third;;
5877 *) pos="${fieldn}th";;
5878 esac
5879 echo "Your cpp writes the filename in the $pos field of the line."
5880
5881 : locate header file
5882 $cat >findhdr <<EOF
5883 $startsh
5884 wanted=\$1
5885 name=''
5886 for usrincdir in $usrinc
5887 do
5888         if test -f \$usrincdir/\$wanted; then
5889                 echo "\$usrincdir/\$wanted"
5890                 exit 0
5891         fi
5892 done
5893 awkprg='{ print \$$fieldn }'
5894 echo "#include <\$wanted>" > foo\$\$.c
5895 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5896 $grep "^[       ]*#.*\$wanted" | \
5897 while read cline; do
5898         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5899         case "\$name" in
5900         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5901         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5902         *) exit 2;;
5903         esac;
5904 done;
5905 #
5906 # status = 0: grep returned 0 lines, case statement not executed
5907 # status = 1: headerfile found
5908 # status = 2: while loop executed, no headerfile found
5909 #
5910 status=\$?
5911 $rm -f foo\$\$.c;
5912 if test \$status -eq 1; then
5913         exit 0;
5914 fi
5915 exit 1
5916 EOF
5917 chmod +x findhdr
5918
5919 : define an alternate in-header-list? function
5920 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5921 cont=true; xxf="echo \"<\$1> found.\" >&4";
5922 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5923 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5924 esac;
5925 case $# in 4) instead=instead;; *) instead="at last";; esac;
5926 while $test "$cont"; do
5927         xxx=`./findhdr $1`
5928         var=$2; eval "was=\$$2";
5929         if $test "$xxx" && $test -r "$xxx";
5930         then eval $xxf;
5931         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5932                 cont="";
5933         else eval $xxnf;
5934         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5935         set $yyy; shift; shift; yyy=$@;
5936         case $# in 0) cont="";;
5937         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5938                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5939         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5940                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5941         esac;
5942 done;
5943 while $test "$yyy";
5944 do set $yyy; var=$2; eval "was=\$$2";
5945         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5946         set $yyy; shift; shift; yyy=$@;
5947 done'
5948
5949 : see if this is a malloc.h system
5950 set malloc.h i_malloc
5951 eval $inhdr
5952
5953 : see if stdlib is available
5954 set stdlib.h i_stdlib
5955 eval $inhdr
5956
5957 : determine which malloc to compile in
5958 echo " "
5959 case "$usemymalloc" in
5960 ''|[yY]*|true|$define)  dflt='y' ;;
5961 *)      dflt='n' ;;
5962 esac
5963 rp="Do you wish to attempt to use the malloc that comes with $package?"
5964 . ./myread
5965 usemymalloc="$ans"
5966 case "$ans" in
5967 y*|true)
5968         usemymalloc='y'
5969         mallocsrc='malloc.c'
5970         mallocobj="malloc$_o"
5971         d_mymalloc="$define"
5972         case "$libs" in
5973         *-lmalloc*)
5974                 : Remove malloc from list of libraries to use
5975                 echo "Removing unneeded -lmalloc from library list" >&4
5976                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5977                 shift
5978                 libs="$*"
5979                 echo "libs = $libs" >&4
5980                 ;;
5981         esac
5982         ;;
5983 *)
5984         usemymalloc='n'
5985         mallocsrc=''
5986         mallocobj=''
5987         d_mymalloc="$undef"
5988         ;;
5989 esac
5990
5991 : compute the return types of malloc and free
5992 echo " "
5993 $cat >malloc.c <<END
5994 #$i_malloc I_MALLOC
5995 #$i_stdlib I_STDLIB
5996 #include <stdio.h>
5997 #include <sys/types.h>
5998 #ifdef I_MALLOC
5999 #include <malloc.h>
6000 #endif
6001 #ifdef I_STDLIB
6002 #include <stdlib.h>
6003 #endif
6004 #ifdef TRY_MALLOC
6005 void *malloc();
6006 #endif
6007 #ifdef TRY_FREE
6008 void free();
6009 #endif
6010 END
6011 case "$malloctype" in
6012 '')
6013         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6014                 malloctype='void *'
6015         else
6016                 malloctype='char *'
6017         fi
6018         ;;
6019 esac
6020 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6021
6022 case "$freetype" in
6023 '')
6024         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6025                 freetype='void'
6026         else
6027                 freetype='int'
6028         fi
6029         ;;
6030 esac
6031 echo "Your system uses $freetype free(), it would seem." >&4
6032 $rm -f malloc.[co]
6033 $cat <<EOM
6034
6035 After $package is installed, you may wish to install various
6036 add-on modules and utilities.  Typically, these add-ons will
6037 be installed under $prefix with the rest
6038 of this package.  However, you may wish to install such add-ons
6039 elsewhere under a different prefix.
6040
6041 If you do not wish to put everything under a single prefix, that's
6042 ok.  You will be prompted for the individual locations; this siteprefix
6043 is only used to suggest the defaults.
6044
6045 The default should be fine for most people.
6046
6047 EOM
6048 fn=d~+
6049 rp='Installation prefix to use for add-on modules and utilities?'
6050 : XXX Here might be another good place for an installstyle setting.
6051 case "$siteprefix" in
6052 '') dflt=$prefix ;;
6053 *)  dflt=$siteprefix ;;
6054 esac
6055 . ./getfile
6056 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6057 oldsiteprefix=''
6058 case "$siteprefix" in
6059 '') ;;
6060 *)      case "$ans" in
6061         "$prefix") ;;
6062         *) oldsiteprefix="$prefix";;
6063         esac
6064         ;;
6065 esac
6066 siteprefix="$ans"
6067 siteprefixexp="$ansexp"
6068
6069 : determine where site specific libraries go.
6070 : Usual default is /usr/local/lib/perl5/site_perl/$version
6071 : The default "style" setting is made in installstyle.U
6072 : XXX No longer works with Prefixit stuff.
6073 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6074 case "$sitelib" in
6075 '') case "$installstyle" in
6076         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6077         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6078         esac
6079         ;;
6080 *)      dflt="$sitelib"
6081         ;;
6082 esac
6083 $cat <<EOM
6084
6085 The installation process will create a directory for
6086 site-specific extensions and modules.  Most users find it convenient
6087 to place all site-specific files in this directory rather than in the
6088 main distribution directory.
6089
6090 EOM
6091 fn=d~+
6092 rp='Pathname for the site-specific library files?'
6093 . ./getfile
6094 sitelib="$ans"
6095 sitelibexp="$ansexp"
6096 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6097 : Change installation prefix, if necessary.
6098 if $test X"$prefix" != X"$installprefix"; then
6099         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6100 else
6101         installsitelib="$sitelibexp"
6102 fi
6103
6104 : determine where site specific architecture-dependent libraries go.
6105 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6106 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6107 : sitelib may have an optional trailing /share.
6108 case "$sitearch" in
6109 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6110         dflt="$dflt/$archname"
6111         ;;
6112 *)      dflt="$sitearch"
6113         ;;
6114 esac
6115 set sitearch sitearch none
6116 eval $prefixit
6117 $cat <<EOM
6118
6119 The installation process will also create a directory for
6120 architecture-dependent site-specific extensions and modules.
6121
6122 EOM
6123 fn=d~+
6124 rp='Pathname for the site-specific architecture-dependent library files?'
6125 . ./getfile
6126 sitearch="$ans"
6127 sitearchexp="$ansexp"
6128 : Change installation prefix, if necessary.
6129 if $test X"$prefix" != X"$installprefix"; then
6130         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6131 else
6132         installsitearch="$sitearchexp"
6133 fi
6134
6135 $cat <<EOM
6136
6137 The installation process will also create a directory for
6138 vendor-supplied add-ons.  Vendors who supply perl with their system
6139 may find it convenient to place all vendor-supplied files in this
6140 directory rather than in the main distribution directory.  This will
6141 ease upgrades between binary-compatible maintenance versions of perl.
6142
6143 Of course you may also use these directories in whatever way you see
6144 fit.  For example, you might use them to access modules shared over a
6145 company-wide network.
6146
6147 The default answer should be fine for most people.
6148 This causes further questions about vendor add-ons to be skipped
6149 and no vendor-specific directories will be configured for perl.
6150
6151 EOM
6152 rp='Do you want to configure vendor-specific add-on directories?'
6153 case "$usevendorprefix" in
6154 define|true|[yY]*) dflt=y ;;
6155 *)      : User may have set vendorprefix directly on Configure command line.
6156         case "$vendorprefix" in
6157         ''|' ') dflt=n ;;
6158         *)      dflt=y ;;
6159         esac
6160         ;;
6161 esac
6162 . ./myread
6163 case "$ans" in
6164 [yY]*)  fn=d~+
6165         rp='Installation prefix to use for vendor-supplied add-ons?'
6166         case "$vendorprefix" in
6167         '') dflt='' ;;
6168         *)  dflt=$vendorprefix ;;
6169         esac
6170         . ./getfile
6171         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6172         oldvendorprefix=''
6173         case "$vendorprefix" in
6174         '') ;;
6175         *)      case "$ans" in
6176                 "$prefix") ;;
6177                 *) oldvendorprefix="$prefix";;
6178                 esac
6179                 ;;
6180         esac
6181         usevendorprefix="$define"
6182         vendorprefix="$ans"
6183         vendorprefixexp="$ansexp"
6184         ;;
6185 *)      usevendorprefix="$undef"
6186         vendorprefix=''
6187         vendorprefixexp=''
6188         ;;
6189 esac
6190
6191 case "$vendorprefix" in
6192 '')     d_vendorlib="$undef"
6193         vendorlib=''
6194         vendorlibexp=''
6195         ;;
6196 *)      d_vendorlib="$define"
6197         : determine where vendor-supplied modules go.
6198         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6199         case "$vendorlib" in
6200         '')
6201                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6202                 case "$installstyle" in
6203                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6204                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6205                 esac
6206                 ;;
6207         *)      dflt="$vendorlib"
6208                 ;;
6209         esac
6210         fn=d~+
6211         rp='Pathname for the vendor-supplied library files?'
6212         . ./getfile
6213         vendorlib="$ans"
6214         vendorlibexp="$ansexp"
6215         ;;
6216 esac
6217 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6218 : Change installation prefix, if necessary.
6219 if $test X"$prefix" != X"$installprefix"; then
6220         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6221 else
6222         installvendorlib="$vendorlibexp"
6223 fi
6224
6225 case "$vendorprefix" in
6226 '')     d_vendorarch="$undef"
6227         vendorarch=''
6228         vendorarchexp=''
6229         ;;
6230 *)      d_vendorarch="$define"
6231         : determine where vendor-supplied architecture-dependent libraries go.
6232         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6233         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6234         : vendorlib may have an optional trailing /share.
6235         case "$vendorarch" in
6236         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6237                 dflt="$dflt/$archname"
6238                 ;;
6239         *)      dflt="$vendorarch" ;;
6240         esac
6241         fn=d~+
6242         rp='Pathname for vendor-supplied architecture-dependent files?'
6243         . ./getfile
6244         vendorarch="$ans"
6245         vendorarchexp="$ansexp"
6246         ;;
6247 esac
6248 : Change installation prefix, if necessary.
6249 if $test X"$prefix" != X"$installprefix"; then
6250         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6251 else
6252         installvendorarch="$vendorarchexp"
6253 fi
6254
6255 : Final catch-all directories to search
6256 $cat <<EOM
6257
6258 Lastly, you can have perl look in other directories for extensions and
6259 modules in addition to those already specified.
6260 These directories will be searched after 
6261         $sitearch 
6262         $sitelib 
6263 EOM
6264 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6265 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6266 echo ' '
6267 case "$otherlibdirs" in
6268 ''|' ') dflt='none' ;;
6269 *)      dflt="$otherlibdirs" ;;
6270 esac
6271 $cat <<EOM
6272 Enter a colon-separated set of extra paths to include in perl's @INC
6273 search path, or enter 'none' for no extra paths.
6274
6275 EOM
6276
6277 rp='Colon-separated list of additional directories for perl to search?'
6278 . ./myread
6279 case "$ans" in
6280 ' '|''|none)    otherlibdirs=' ' ;;     
6281 *)      otherlibdirs="$ans" ;;
6282 esac
6283 case "$otherlibdirs" in
6284 ' ') val=$undef ;;
6285 *)      val=$define ;;
6286 esac
6287 set d_perl_otherlibdirs
6288 eval $setvar
6289
6290 : Cruising for prototypes
6291 echo " "
6292 echo "Checking out function prototypes..." >&4
6293 $cat >prototype.c <<'EOCP'
6294 int main(int argc, char *argv[]) {
6295         exit(0);}
6296 EOCP
6297 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6298         echo "Your C compiler appears to support function prototypes."
6299         val="$define"
6300 else
6301         echo "Your C compiler doesn't seem to understand function prototypes."
6302         val="$undef"
6303 fi
6304 set prototype
6305 eval $setvar
6306 $rm -f prototype*
6307
6308 case "$prototype" in
6309 "$define") ;;
6310 *)      ansi2knr='ansi2knr'
6311         echo " "
6312         cat <<EOM >&4
6313
6314 $me:  FATAL ERROR:
6315 This version of $package can only be compiled by a compiler that 
6316 understands function prototypes.  Unfortunately, your C compiler 
6317         $cc $ccflags
6318 doesn't seem to understand them.  Sorry about that.
6319
6320 If GNU cc is available for your system, perhaps you could try that instead.  
6321
6322 Eventually, we hope to support building Perl with pre-ANSI compilers.
6323 If you would like to help in that effort, please contact <perlbug@perl.org>.
6324
6325 Aborting Configure now.
6326 EOM
6327         exit 2
6328         ;;
6329 esac
6330
6331 : determine where public executables go
6332 echo " "
6333 set dflt bin bin
6334 eval $prefixit
6335 fn=d~
6336 rp='Pathname where the public executables will reside?'
6337 . ./getfile
6338 if $test "X$ansexp" != "X$binexp"; then
6339         installbin=''
6340 fi
6341 bin="$ans"
6342 binexp="$ansexp"
6343 : Change installation prefix, if necessary.
6344 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6345 if $test X"$prefix" != X"$installprefix"; then
6346         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6347 else
6348         installbin="$binexp"
6349 fi
6350
6351 : Find perl5.005 or later.
6352 echo "Looking for a previously installed perl5.005 or later... "
6353 case "$perl5" in
6354 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6355                 : Check if this perl is recent and can load a simple module
6356                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6357                         perl5=$tdir/perl
6358                         break;
6359                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6360                         perl5=$tdir/perl
6361                         break;
6362                 fi
6363         done
6364         ;;
6365 *)      perl5="$perl5"
6366         ;;
6367 esac
6368 case "$perl5" in
6369 '')     echo "None found.  That's ok.";;
6370 *)      echo "Using $perl5." ;;
6371 esac
6372
6373 : Determine list of previous versions to include in @INC
6374 $cat > getverlist <<EOPL
6375 #!$perl5 -w
6376 use File::Basename;
6377 \$api_versionstring = "$api_versionstring";
6378 \$version = "$version";
6379 \$stem = "$sitelib_stem";
6380 \$archname = "$archname";
6381 EOPL
6382         $cat >> getverlist <<'EOPL'
6383 # Can't have leading @ because metaconfig interprets it as a command!
6384 ;@inc_version_list=();
6385 # XXX Redo to do opendir/readdir? 
6386 if (-d $stem) {
6387     chdir($stem);
6388     ;@candidates = glob("5.*");
6389 }
6390 else {
6391     ;@candidates = ();
6392 }
6393
6394 # XXX ToDo:  These comparisons must be reworked when two-digit
6395 # subversions come along, so that 5.7.10 compares as greater than
6396 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6397 # widespread that we can use the built-in version vectors rather
6398 # than reinventing them here.  For 5.6.0, however, we must
6399 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6400 foreach $d (@candidates) {
6401     if ($d lt $version) {
6402         if ($d ge $api_versionstring) {
6403             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6404         }
6405         elsif ($d ge "5.005") {
6406             unshift(@inc_version_list, grep { -d } $d);
6407         }
6408     }
6409     else {
6410         # Skip newer version.  I.e. don't look in
6411         # 5.7.0 if we're installing 5.6.1.
6412     }
6413 }
6414
6415 if (@inc_version_list) {
6416     print join(' ', @inc_version_list);
6417 }
6418 else {
6419     # Blank space to preserve value for next Configure run.
6420     print " ";
6421 }
6422 EOPL
6423 chmod +x getverlist
6424 case "$inc_version_list" in
6425 '')     if test -x "$perl5"; then
6426                 dflt=`$perl5 getverlist`
6427         else
6428                 dflt='none'
6429         fi
6430         ;;
6431 $undef) dflt='none' ;;
6432 *)  dflt="$inc_version_list" ;;
6433 esac
6434 case "$dflt" in
6435 ''|' ') dflt=none ;;
6436 esac
6437 case "$dflt" in
6438 5.005) case "$bincompat5005" in
6439        $define|true|[yY]*) ;;
6440        *) dflt=none ;;
6441        esac
6442        ;;
6443 esac
6444 $cat <<'EOM'
6445
6446 In order to ease the process of upgrading, this version of perl 
6447 can be configured to use modules built and installed with earlier 
6448 versions of perl that were installed under $prefix.  Specify here
6449 the list of earlier versions that this version of perl should check.
6450 If Configure detected no earlier versions of perl installed under
6451 $prefix, then the list will be empty.  Answer 'none' to tell perl
6452 to not search earlier versions.
6453
6454 The default should almost always be sensible, so if you're not sure,
6455 just accept the default.
6456 EOM
6457
6458 rp='List of earlier versions to include in @INC?'
6459 . ./myread
6460 case "$ans" in
6461 [Nn]one|''|' ') inc_version_list=' ' ;;
6462 *) inc_version_list="$ans" ;;
6463 esac
6464 case "$inc_version_list" in
6465 ''|' ') 
6466         inc_version_list_init='0';;
6467 *)      inc_version_list_init=`echo $inc_version_list |
6468                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6469         ;;
6470 esac
6471 $rm -f getverlist
6472
6473 : determine whether to install perl also as /usr/bin/perl
6474
6475 echo " "
6476 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6477         $cat <<EOM
6478 Many scripts expect perl to be installed as /usr/bin/perl.
6479 I can install the perl you are about to compile also as /usr/bin/perl
6480 (in addition to $installbin/perl).
6481 EOM
6482         case "$installusrbinperl" in
6483         "$undef"|[nN]*) dflt='n';;
6484         *)              dflt='y';;
6485         esac
6486         rp="Do you want to install perl as /usr/bin/perl?"
6487         . ./myread
6488         case "$ans" in
6489         [yY]*)  val="$define";;
6490         *)      val="$undef" ;;
6491         esac
6492 else
6493         val="$undef"
6494 fi
6495 set installusrbinperl
6496 eval $setvar
6497
6498 : see if dld is available
6499 set dld.h i_dld
6500 eval $inhdr
6501
6502 : see if dlopen exists
6503 xxx_runnm="$runnm"
6504 runnm=false
6505 set dlopen d_dlopen
6506 eval $inlibc
6507 runnm="$xxx_runnm"
6508
6509 : determine which dynamic loading, if any, to compile in
6510 echo " "
6511 dldir="ext/DynaLoader"
6512 case "$usedl" in
6513 $define|y|true)
6514         dflt='y'
6515         usedl="$define"
6516         ;;
6517 $undef|n|false)
6518         dflt='n'
6519         usedl="$undef"
6520         ;;
6521 *) 
6522         dflt='n'
6523         case "$d_dlopen" in
6524             $define) dflt='y' ;;
6525         esac
6526         case "$i_dld" in
6527             $define) dflt='y' ;;
6528         esac
6529         : Does a dl_xxx.xs file exist for this operating system
6530         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6531         ;;
6532 esac
6533 rp="Do you wish to use dynamic loading?"
6534 . ./myread
6535 usedl="$ans"
6536 case "$ans" in
6537 y*) usedl="$define"
6538         case "$dlsrc" in
6539         '')
6540                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6541                         dflt="$dldir/dl_${osname}.xs"
6542                 elif $test "$d_dlopen" = "$define" ; then
6543                         dflt="$dldir/dl_dlopen.xs"
6544                 elif $test "$i_dld" = "$define" ; then
6545                         dflt="$dldir/dl_dld.xs"
6546                 else
6547                         dflt=''
6548                 fi
6549                 ;;
6550         *)      dflt="$dldir/$dlsrc"
6551                 ;;
6552         esac
6553     echo "The following dynamic loading files are available:"
6554         : Can not go over to $dldir because getfile has path hard-coded in.
6555         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6556         rp="Source file to use for dynamic loading"
6557         fn="fne"
6558         gfpth="$src"
6559         . ./getfile
6560         usedl="$define"
6561         : emulate basename
6562         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6563
6564         $cat << EOM
6565
6566 Some systems may require passing special flags to $cc -c to
6567 compile modules that will be used to create a shared library.
6568 To use no flags, say "none".
6569
6570 EOM
6571     case "$cccdlflags" in
6572     '') case "$gccversion" in
6573                 '') case "$osname" in
6574                         hpux)   dflt='+z' ;;
6575                         next)   dflt='none' ;;
6576                         irix*)  dflt='-KPIC' ;;
6577                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6578                         sunos)  dflt='-pic' ;;
6579                         *)      dflt='none' ;;
6580                     esac
6581                         ;;
6582                 *)  case "$osname" in
6583                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6584                         *)      dflt='-fpic' ;;
6585                     esac ;;
6586             esac ;;
6587         ' ') dflt='none' ;;
6588     *)  dflt="$cccdlflags" ;;
6589     esac
6590     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6591     . ./myread
6592     case "$ans" in
6593     none) cccdlflags=' ' ;;
6594     *) cccdlflags="$ans" ;;
6595     esac
6596
6597     cat << EOM
6598
6599 Some systems use ld to create libraries that can be dynamically loaded,
6600 while other systems (such as those using ELF) use $cc.
6601
6602 EOM
6603         case "$ld" in
6604         '')     $cat >try.c <<'EOM'
6605 /* Test for whether ELF binaries are produced */
6606 #include <fcntl.h>
6607 #include <stdlib.h>
6608 int main() {
6609         char b[4];
6610         int i = open("a.out",O_RDONLY);
6611         if(i == -1) 
6612                 exit(1); /* fail */
6613         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6614                 exit(0); /* succeed (yes, it's ELF) */
6615         else
6616                 exit(1); /* fail */
6617 }
6618 EOM
6619                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6620                         cat <<EOM
6621 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6622 EOM
6623                         dflt="$cc"
6624                 else
6625                         echo "I'll use ld to build dynamic libraries."
6626                         dflt='ld'
6627                 fi
6628                 rm -f try.c a.out
6629                 ;;
6630         *)      dflt="$ld"
6631                 ;;
6632         esac
6633
6634     rp="What command should be used to create dynamic libraries?"
6635     . ./myread
6636         ld="$ans"
6637
6638     cat << EOM
6639
6640 Some systems may require passing special flags to $ld to create a
6641 library that can be dynamically loaded.  If your ld flags include
6642 -L/other/path options to locate libraries outside your loader's normal
6643 search path, you may need to specify those -L options here as well.  To
6644 use no flags, say "none".
6645
6646 EOM
6647     case "$lddlflags" in
6648     '') case "$osname" in
6649                         beos) dflt='-nostart' ;;
6650                         hpux) dflt='-b';
6651                               case "$gccversion" in
6652                               '') dflt="$dflt +vnocompatwarnings" ;;
6653                               esac
6654                               ;;        
6655                         linux|irix*)    dflt='-shared' ;;
6656                         next)  dflt='none' ;;
6657                         solaris) dflt='-G' ;;
6658                         sunos) dflt='-assert nodefinitions' ;;
6659                         svr4*|esix*) dflt="-G $ldflags" ;;
6660                 *)     dflt='none' ;;
6661                         esac
6662                         ;;
6663     *) dflt="$lddlflags" ;;
6664     esac
6665
6666         : Try to guess additional flags to pick up local libraries.
6667         : Be careful not to append to a plain 'none'
6668         case "$dflt" in
6669         none) dflt='' ;;
6670         esac
6671         for thisflag in $ldflags; do
6672                 case "$thisflag" in
6673                 -L*|-R*)
6674                         case " $dflt " in
6675                         *" $thisflag "*) ;;
6676                         *) dflt="$dflt $thisflag" ;;
6677                         esac
6678                         ;;
6679                 esac
6680         done
6681
6682         case "$dflt" in
6683         ''|' ') dflt='none' ;;
6684         esac
6685
6686     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6687     . ./myread
6688     case "$ans" in
6689     none) lddlflags=' ' ;;
6690     *) lddlflags="$ans" ;;
6691     esac
6692
6693         cat <<EOM
6694
6695 Some systems may require passing special flags to $cc to indicate that
6696 the resulting executable will use dynamic linking.  To use no flags,
6697 say "none".
6698
6699 EOM
6700     case "$ccdlflags" in
6701     '') case "$osname" in
6702                 hpux)   dflt='-Wl,-E' ;;
6703                 linux)  dflt='-rdynamic' ;;
6704                 next)   dflt='none' ;;
6705                 sunos)  dflt='none' ;;
6706                 *)      dflt='none' ;;
6707             esac ;;
6708     ' ')  dflt='none' ;;
6709     *)  dflt="$ccdlflags" ;;
6710     esac
6711     rp="Any special flags to pass to $cc to use dynamic linking?"
6712     . ./myread
6713     case "$ans" in
6714     none) ccdlflags=' ' ;;
6715     *) ccdlflags="$ans" ;;
6716     esac
6717     ;;
6718 *)  usedl="$undef"
6719         ld='ld'
6720     dlsrc='dl_none.xs'
6721     lddlflags=''
6722     ccdlflags=''
6723     ;;
6724 esac
6725
6726 also=''
6727 case "$usedl" in
6728 $undef)
6729         # No dynamic loading being used, so don't bother even to prompt.
6730         useshrplib='false'
6731         ;;
6732 *)      case "$useshrplib" in
6733         '')     case "$osname" in
6734                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6735                         dflt=y
6736                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6737                         ;;
6738                 next*)
6739                         case "$osvers" in
6740                         4*)     dflt=y
6741                                 also='Building a shared libperl is needed for MAB support.'
6742                                 ;;
6743                         *)      dflt=n
6744                                 ;;
6745                         esac
6746                         ;;
6747                 *)      dflt=n
6748                         ;;
6749                 esac
6750                 ;;
6751         $define|true|[Yy]*)
6752                 dflt=y
6753                 ;;
6754         *)      dflt=n
6755                 ;;
6756         esac
6757         $cat << EOM
6758
6759 The perl executable is normally obtained by linking perlmain.c with
6760 libperl${_a}, any static extensions (usually just DynaLoader), and
6761 any other libraries needed on this system (such as -lm, etc.).  Since
6762 your system supports dynamic loading, it is probably possible to build
6763 a shared libperl.$so.  If you will have more than one executable linked
6764 to libperl.$so, this will significantly reduce the size of each
6765 executable, but it may have a noticeable affect on performance.  The
6766 default is probably sensible for your system.
6767 $also
6768
6769 EOM
6770         rp="Build a shared libperl.$so (y/n)"
6771         . ./myread
6772         case "$ans" in
6773         true|$define|[Yy]*)
6774                 useshrplib='true'  ;;
6775         *)      useshrplib='false' ;;
6776         esac
6777         ;;
6778 esac
6779
6780 case "$useshrplib" in
6781 true)
6782         case "$libperl" in
6783         '')
6784                 # Figure out a good name for libperl.so.  Since it gets stored in
6785                 # a version-specific architecture-dependent library, the version
6786                 # number isn't really that important, except for making cc/ld happy.
6787                 #
6788                 # A name such as libperl.so.3.1
6789                 majmin="libperl.$so.$patchlevel.$subversion"
6790                 # A name such as libperl.so.301
6791                 majonly=`echo $patchlevel $subversion |
6792                         $awk '{printf "%d%02d", $1, $2}'`
6793                 majonly=libperl.$so.$majonly
6794                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6795                 # rely on figuring it out from the naming of libc.
6796                 case "${osname}${osvers}" in
6797                 next4*)
6798                         dflt=libperl.5.$so
6799                         # XXX How handle the --version stuff for MAB?
6800                         ;;
6801                 linux*)  # ld won't link with a bare -lperl otherwise.
6802                         dflt=libperl.$so
6803                         ;;
6804                 cygwin*) # include version
6805                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6806                         ;;
6807                 *)      # Try to guess based on whether libc has major.minor.
6808                         case "$libc" in
6809                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6810                         *libc.$so.[0-9]*) dflt=$majonly ;;
6811                         *)      dflt=libperl.$so ;;
6812                         esac
6813                         ;;
6814                 esac
6815                 ;;
6816         *)      dflt=$libperl
6817                 ;;
6818         esac
6819         cat << EOM
6820
6821 I need to select a good name for the shared libperl.  If your system uses
6822 library names with major and minor numbers, then you might want something
6823 like $majmin.  Alternatively, if your system uses a single version
6824 number for shared libraries, then you might want to use $majonly.
6825 Or, your system might be quite happy with a simple libperl.$so.
6826
6827 Since the shared libperl will get installed into a version-specific
6828 architecture-dependent directory, the version number of the shared perl
6829 library probably isn't important, so the default should be o.k.
6830
6831 EOM
6832         rp='What name do you want to give to the shared libperl?'
6833         . ./myread
6834         libperl=$ans
6835         echo "Ok, I'll use $libperl"
6836         ;;
6837 *)
6838         libperl="libperl${_a}"
6839         ;;
6840 esac
6841
6842 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6843 case "$shrpdir" in
6844 '') ;;
6845 *)      $cat >&4 <<EOM
6846 WARNING:  Use of the shrpdir variable for the installation location of
6847 the shared $libperl is not supported.  It was never documented and
6848 will not work in this version.  Let me (perlbug@perl.org)
6849 know of any problems this may cause.
6850
6851 EOM
6852         case "$shrpdir" in
6853         "$archlibexp/CORE")
6854                 $cat >&4 <<EOM
6855 But your current setting of $shrpdir is
6856 the default anyway, so it's harmless.
6857 EOM
6858                 ;;
6859         *)
6860                 $cat >&4 <<EOM
6861 Further, your current attempted setting of $shrpdir
6862 conflicts with the value of $archlibexp/CORE
6863 that installperl will use.
6864 EOM
6865                 ;;
6866         esac
6867         ;;
6868 esac
6869
6870 # How will the perl executable find the installed shared $libperl?
6871 # Add $xxx to ccdlflags.
6872 # If we can't figure out a command-line option, use $shrpenv to
6873 # set env LD_RUN_PATH.  The main perl makefile uses this.
6874 shrpdir=$archlibexp/CORE
6875 xxx=''
6876 tmp_shrpenv=''
6877 if "$useshrplib"; then
6878     case "$osname" in 
6879         aix)
6880                 # We'll set it in Makefile.SH...
6881                 ;;
6882         solaris|netbsd)
6883                 xxx="-R $shrpdir"
6884                 ;;
6885         freebsd)
6886                 xxx="-Wl,-R$shrpdir"
6887                 ;;
6888         linux|irix*|dec_osf)
6889                 xxx="-Wl,-rpath,$shrpdir"
6890                 ;;
6891         next)
6892                 # next doesn't like the default...
6893                 ;;
6894         beos)
6895                 # beos doesn't like the default, either.
6896                 ;;
6897         hpux*)
6898                 # hpux doesn't like the default, either.
6899                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6900                 ;;
6901         *)
6902                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6903                 ;;
6904         esac
6905         case "$xxx" in
6906         '') ;;
6907         *)      
6908                 # Only add $xxx if it isn't already in ccdlflags.
6909                 case " $ccdlflags " in
6910                 *" $xxx "*)     ;;
6911                 *)      ccdlflags="$ccdlflags $xxx"
6912                         cat <<EOM >&4
6913
6914 Adding $xxx to the flags
6915 passed to $ld so that the perl executable will find the 
6916 installed shared $libperl.
6917
6918 EOM
6919                         ;;
6920                 esac
6921                 ;;
6922         esac
6923 fi
6924 # Fix ccdlflags in AIX for building external extensions.
6925 # (For building Perl itself bare -bE:perl.exp is needed,
6926 #  Makefile.SH takes care of this.)
6927 case "$osname" in
6928 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6929 esac
6930 # Respect a hint or command-line value.
6931 case "$shrpenv" in
6932 '') shrpenv="$tmp_shrpenv" ;;
6933 esac
6934 case "$ldlibpthname" in
6935 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6936 none)   ldlibpthname='' ;;
6937 esac
6938
6939 : determine where manual pages go
6940 set man1dir man1dir none
6941 eval $prefixit
6942 $cat <<EOM
6943
6944 $spackage has manual pages available in source form.
6945 EOM
6946 case "$nroff" in
6947 nroff)
6948         echo "However, you don't have nroff, so they're probably useless to you."
6949         case "$man1dir" in
6950         '') man1dir="none";;
6951         esac;;
6952 esac
6953 echo "If you don't want the manual sources installed, answer 'none'."
6954 case "$man1dir" in
6955 ' ') dflt=none
6956         ;;
6957 '')
6958         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6959         lookpath="$lookpath $prefixexp/man/p_man/man1"
6960         lookpath="$lookpath $prefixexp/man/u_man/man1"
6961         lookpath="$lookpath $prefixexp/man/man.1"
6962         case "$sysman" in
6963         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6964         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6965         esac
6966         set dflt
6967         eval $prefixup
6968         ;;
6969 *)  dflt="$man1dir"
6970         ;;
6971 esac
6972 echo " "
6973 fn=dn+~
6974 rp="Where do the main $spackage manual pages (source) go?"
6975 . ./getfile
6976 if $test "X$man1direxp" != "X$ansexp"; then
6977         installman1dir=''
6978 fi
6979 man1dir="$ans"
6980 man1direxp="$ansexp"
6981 case "$man1dir" in
6982 '')     man1dir=' '
6983         installman1dir='';;
6984 esac
6985
6986 : Change installation prefix, if necessary.
6987 if $test X"$prefix" != X"$installprefix"; then
6988         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6989 else
6990         installman1dir="$man1direxp"
6991 fi
6992
6993 : What suffix to use on installed man pages
6994
6995 case "$man1dir" in
6996 ' ')
6997         man1ext='0'
6998         ;;
6999 *)
7000         rp="What suffix should be used for the main $spackage man pages?"
7001         case "$man1ext" in
7002         '')     case "$man1dir" in
7003                 *1)  dflt=1 ;;
7004                 *1p) dflt=1p ;;
7005                 *1pm) dflt=1pm ;;
7006                 *l) dflt=l;;
7007                 *n) dflt=n;;
7008                 *o) dflt=o;;
7009                 *p) dflt=p;;
7010                 *C) dflt=C;;
7011                 *L) dflt=L;;
7012                 *L1) dflt=L1;;
7013                 *) dflt=1;;
7014                 esac
7015                 ;;
7016         *)      dflt="$man1ext";;
7017         esac
7018         . ./myread
7019         man1ext="$ans"
7020         ;;
7021 esac
7022
7023 : see if we can have long filenames
7024 echo " "
7025 first=123456789abcdef
7026 $rm -f $first
7027 if (echo hi >$first) 2>/dev/null; then
7028         if $test -f 123456789abcde; then
7029                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7030                 val="$undef"
7031         else
7032                 echo 'You can have filenames longer than 14 characters.'>&4
7033                 val="$define"
7034         fi
7035 else
7036         $cat <<'EOM'
7037 You can't have filenames longer than 14 chars.
7038 You can't even think about them!
7039 EOM
7040         val="$undef"
7041 fi 
7042 set d_flexfnam
7043 eval $setvar
7044 $rm -rf 123456789abcde*
7045
7046 : determine where library module manual pages go
7047 set man3dir man3dir none
7048 eval $prefixit
7049 $cat <<EOM
7050
7051 $spackage has manual pages for many of the library modules.
7052 EOM
7053
7054 case "$nroff" in
7055 nroff)
7056         $cat <<'EOM'
7057 However, you don't have nroff, so they're probably useless to you.
7058 EOM
7059         case "$man3dir" in
7060         '') man3dir="none";;
7061         esac;;
7062 esac
7063
7064 case "$d_flexfnam" in
7065 undef)
7066         $cat <<'EOM'
7067 However, your system can't handle the long file names like File::Basename.3. 
7068 EOM
7069         case "$man3dir" in
7070         '') man3dir="none";;
7071         esac;;
7072 esac
7073
7074 echo "If you don't want the manual sources installed, answer 'none'."
7075 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7076 case "$man3dir" in
7077 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7078         if $test -d "$privlib/man/man3"; then
7079                 cat <<EOM >&4
7080
7081 WARNING:  Previous versions of perl installed man3 pages into
7082 $privlib/man/man3.  This version will suggest a 
7083 new default of $dflt.  
7084 EOM
7085                 tdflt=$dflt
7086                 dflt='n'
7087                 rp='Do you wish to preserve the old behavior?(y/n)'
7088                 . ./myread
7089                 case "$ans" in
7090                 y*) dflt="$privlib/man/man3" ;;
7091                 *)  dflt=$tdflt ;;
7092                 esac
7093     fi
7094         ;;
7095 *)      dflt="$man3dir" ;;
7096 esac
7097 case "$dflt" in
7098 ' ') dflt=none ;;
7099 esac
7100 echo " "
7101 fn=dn+~
7102 rp="Where do the $package library man pages (source) go?"
7103 . ./getfile
7104 man3dir="$ans"
7105 man3direxp="$ansexp"
7106 case "$man3dir" in
7107 '')     man3dir=' '
7108         installman3dir='';;
7109 esac
7110
7111 : Change installation prefix, if necessary.
7112 if $test X"$prefix" != X"$installprefix"; then
7113         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7114 else
7115         installman3dir="$man3direxp"
7116 fi
7117
7118 : What suffix to use on installed man pages
7119 case "$man3dir" in
7120 ' ')
7121         man3ext='0'
7122         ;;
7123 *)
7124         rp="What suffix should be used for the $package library man pages?"
7125         case "$man3ext" in
7126         '')     case "$man3dir" in
7127                 *3)  dflt=3 ;;
7128                 *3p) dflt=3p ;;
7129                 *3pm) dflt=3pm ;;
7130                 *l) dflt=l;;
7131                 *n) dflt=n;;
7132                 *o) dflt=o;;
7133                 *p) dflt=p;;
7134                 *C) dflt=C;;
7135                 *L) dflt=L;;
7136                 *L3) dflt=L3;;
7137                 *) dflt=3;;
7138                 esac
7139                 ;;
7140         *)      dflt="$man3ext";;
7141         esac
7142         . ./myread
7143         man3ext="$ans"
7144         ;;
7145 esac
7146
7147 : see if we have to deal with yellow pages, now NIS.
7148 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7149         if $test -f /usr/etc/nibindd; then
7150                 echo " "
7151                 echo "I'm fairly confident you're on a NeXT."
7152                 echo " "
7153                 rp='Do you get the hosts file via NetInfo?'
7154                 dflt=y
7155                 case "$hostcat" in
7156                 nidump*) ;;
7157                 '') ;;
7158                 *) dflt=n;;
7159                 esac
7160                 . ./myread
7161                 case "$ans" in
7162                 y*) hostcat='nidump hosts .';;
7163                 *)      case "$hostcat" in
7164                         nidump*) hostcat='';;
7165                         esac
7166                         ;;
7167                 esac
7168         fi
7169         case "$hostcat" in
7170         nidump*) ;;
7171         *)
7172                 case "$hostcat" in
7173                 *ypcat*) dflt=y;;
7174                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7175                                 dflt=y
7176                         else
7177                                 dflt=n
7178                         fi;;
7179                 *) dflt=n;;
7180                 esac
7181                 echo " "
7182                 rp='Are you getting the hosts file via yellow pages?'
7183                 . ./myread
7184                 case "$ans" in
7185                 y*) hostcat='ypcat hosts';;
7186                 *) hostcat='cat /etc/hosts';;
7187                 esac
7188                 ;;
7189         esac
7190 fi
7191 case "$hostcat" in
7192 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7193 esac
7194 case "$groupcat" in
7195 '') test -f /etc/group && groupcat='cat /etc/group';;
7196 esac
7197 case "$passcat" in
7198 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7199 esac
7200
7201 : now get the host name
7202 echo " "
7203 echo "Figuring out host name..." >&4
7204 case "$myhostname" in
7205 '') cont=true
7206         echo 'Maybe "hostname" will work...'
7207         if tans=`sh -c hostname 2>&1` ; then
7208                 myhostname=$tans
7209                 phostname=hostname
7210                 cont=''
7211         fi
7212         ;;
7213 *) cont='';;
7214 esac
7215 if $test "$cont"; then
7216         if ./xenix; then
7217                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7218                 if tans=`cat /etc/systemid 2>&1` ; then
7219                         myhostname=$tans
7220                         phostname='cat /etc/systemid'
7221                         echo "Whadyaknow.  Xenix always was a bit strange..."
7222                         cont=''
7223                 fi
7224         elif $test -r /etc/systemid; then
7225                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7226         fi
7227 fi
7228 if $test "$cont"; then
7229         echo 'No, maybe "uuname -l" will work...'
7230         if tans=`sh -c 'uuname -l' 2>&1` ; then
7231                 myhostname=$tans
7232                 phostname='uuname -l'
7233         else
7234                 echo 'Strange.  Maybe "uname -n" will work...'
7235                 if tans=`sh -c 'uname -n' 2>&1` ; then
7236                         myhostname=$tans
7237                         phostname='uname -n'
7238                 else
7239                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7240                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7241                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7242                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7243                         else
7244                                 case "$myhostname" in
7245                                 '') echo "Does this machine have an identity crisis or something?"
7246                                         phostname='';;
7247                                 *)
7248                                         echo "Well, you said $myhostname before..."
7249                                         phostname='echo $myhostname';;
7250                                 esac
7251                         fi
7252                 fi
7253         fi
7254 fi
7255 : you do not want to know about this
7256 set $myhostname
7257 myhostname=$1
7258
7259 : verify guess
7260 if $test "$myhostname" ; then
7261         dflt=y
7262         rp='Your host name appears to be "'$myhostname'".'" Right?"
7263         . ./myread
7264         case "$ans" in
7265         y*) ;;
7266         *) myhostname='';;
7267         esac
7268 fi
7269
7270 : bad guess or no guess
7271 while $test "X$myhostname" = X ; do
7272         dflt=''
7273         rp="Please type the (one word) name of your host:"
7274         . ./myread
7275         myhostname="$ans"
7276 done
7277
7278 : translate upper to lower if necessary
7279 case "$myhostname" in
7280 *[A-Z]*)
7281         echo "(Normalizing case in your host name)"
7282         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7283         ;;
7284 esac
7285
7286 case "$myhostname" in
7287 *.*)
7288         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7289         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7290         echo "(Trimming domain name from host name--host name is now $myhostname)"
7291         ;;
7292 *) case "$mydomain" in
7293         '')
7294                 {
7295                         test "X$hostcat" = "Xypcat hosts" &&
7296                         ypmatch "$myhostname" hosts 2>/dev/null |\
7297                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7298                         $test -s hosts
7299                 } || {
7300                         test "X$hostcat" != "X" &&
7301                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7302                                         /[       ]$myhostname[  . ]/p" > hosts
7303                 }
7304                 tmp_re="[       . ]"
7305                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7306                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7307                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7308                         hosts | $sort | $uniq | \
7309                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7310                 case `$echo X$dflt` in
7311                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7312                         dflt=.
7313                         ;;
7314                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7315                         ;;
7316                 esac
7317                 case "$dflt" in
7318                 .)
7319                         tans=`./loc resolv.conf X /etc /usr/etc`
7320                         if $test -f "$tans"; then
7321                                 echo "(Attempting domain name extraction from $tans)"
7322                                 dflt=.`$sed -n -e 's/   / /g' \
7323                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7324                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7325                                 case "$dflt" in
7326                                 .) dflt=.`$sed -n -e 's/        / /g' \
7327                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7328                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7329                                         ;;
7330                                 esac
7331                         fi
7332                         ;;
7333                 esac
7334                 case "$dflt" in
7335                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7336                         dflt=.`sh -c domainname 2>/dev/null`
7337                         case "$dflt" in
7338                         '') dflt='.';;
7339                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7340                         esac
7341                         ;;
7342                 esac
7343                 case "$dflt" in
7344                 .) echo "(Lost all hope -- silly guess then)"
7345                         dflt='.uucp'
7346                         ;;
7347                 esac
7348                 $rm -f hosts
7349                 ;;
7350         *) dflt="$mydomain";;
7351         esac;;
7352 esac
7353 echo " "
7354 rp="What is your domain name?"
7355 . ./myread
7356 tans="$ans"
7357 case "$ans" in
7358 '') ;;
7359 .*) ;;
7360 *) tans=".$tans";;
7361 esac
7362 mydomain="$tans"
7363
7364 : translate upper to lower if necessary
7365 case "$mydomain" in
7366 *[A-Z]*)
7367         echo "(Normalizing case in your domain name)"
7368         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7369         ;;
7370 esac
7371
7372 : a little sanity check here
7373 case "$phostname" in
7374 '') ;;
7375 *)
7376         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7377         $myhostname$mydomain|$myhostname) ;;
7378         *)
7379                 case "$phostname" in
7380                 sed*)
7381                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7382                         ;;
7383                 *)
7384                         echo "(That doesn't agree with your $phostname command, by the way.)"
7385                         ;;
7386                 esac
7387         ;;
7388         esac
7389         ;;
7390 esac
7391
7392 $cat <<EOM
7393
7394 I need to get your e-mail address in Internet format if possible, i.e.
7395 something like user@host.domain. Please answer accurately since I have
7396 no easy means to double check it. The default value provided below
7397 is most probably close to reality but may not be valid from outside
7398 your organization...
7399
7400 EOM
7401 cont=x
7402 while test "$cont"; do
7403         case "$cf_email" in
7404         '') dflt="$cf_by@$myhostname$mydomain";;
7405         *) dflt="$cf_email";;
7406         esac
7407         rp='What is your e-mail address?'
7408         . ./myread
7409         cf_email="$ans"
7410         case "$cf_email" in
7411         *@*.*) cont='' ;;
7412         *)
7413                 rp='Address does not look like an Internet one.  Use it anyway?'
7414                 case "$fastread" in
7415                 yes) dflt=y ;;
7416                 *) dflt=n ;;
7417                 esac
7418                 . ./myread
7419                 case "$ans" in
7420                 y*) cont='' ;;
7421                 *) echo " " ;;
7422                 esac
7423                 ;;
7424         esac
7425 done
7426
7427 $cat <<EOM
7428
7429 If you or somebody else will be maintaining perl at your site, please
7430 fill in the correct e-mail address here so that they may be contacted
7431 if necessary. Currently, the "perlbug" program included with perl
7432 will send mail to this address in addition to perlbug@perl.org. You may
7433 enter "none" for no administrator.
7434
7435 EOM
7436 case "$perladmin" in
7437 '') dflt="$cf_email";;
7438 *) dflt="$perladmin";;
7439 esac
7440 rp='Perl administrator e-mail address'
7441 . ./myread
7442 perladmin="$ans"
7443
7444 : figure out how to guarantee perl startup
7445 case "$startperl" in
7446 '')
7447         case "$sharpbang" in
7448         *!)
7449                 $cat <<EOH
7450
7451 I can use the #! construct to start perl on your system. This will
7452 make startup of perl scripts faster, but may cause problems if you
7453 want to share those scripts and perl is not in a standard place
7454 ($binexp/perl) on all your platforms. The alternative is to force
7455 a shell by starting the script with a single ':' character.
7456
7457 EOH
7458                 dflt="$binexp/perl"
7459                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7460                 . ./myread
7461                 case "$ans" in
7462                 none)   startperl=": # use perl";;
7463                 *)      startperl="#!$ans"
7464                         if $test 30 -lt `echo "$ans" | wc -c`; then
7465                                 $cat >&4 <<EOM
7466
7467 WARNING:  Some systems limit the #! command to 32 characters.
7468 If you experience difficulty running Perl scripts with #!, try
7469 installing Perl in a directory with a shorter pathname.
7470
7471 EOM
7472                         fi ;;
7473                 esac
7474                 ;;
7475         *) startperl=": # use perl"
7476                 ;;
7477         esac
7478         ;;
7479 esac
7480 echo "I'll use $startperl to start perl scripts."
7481
7482 : figure best path for perl in scripts
7483 case "$perlpath" in
7484 '')
7485         perlpath="$binexp/perl"
7486         case "$startperl" in
7487         *!*) ;;
7488         *)
7489                 $cat <<EOH
7490
7491 I will use the "eval 'exec'" idiom to start Perl on your system.
7492 I can use the full path of your Perl binary for this purpose, but
7493 doing so may cause problems if you want to share those scripts and
7494 Perl is not always in a standard place ($binexp/perl).
7495
7496 EOH
7497                 dflt="$binexp/perl"
7498                 rp="What path shall I use in \"eval 'exec'\"?"
7499                 . ./myread
7500                 perlpath="$ans"
7501                 ;;
7502         esac
7503         ;;
7504 esac
7505 case "$startperl" in
7506 *!*)    ;;
7507 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7508 esac
7509
7510 : determine where public executable scripts go
7511 set scriptdir scriptdir
7512 eval $prefixit
7513 case "$scriptdir" in
7514 '')
7515         dflt="$bin"
7516         : guess some guesses
7517         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7518         $test -d /usr/share/bin     && dflt=/usr/share/bin
7519         $test -d /usr/local/script  && dflt=/usr/local/script
7520         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7521         $test -d $prefixexp/script  && dflt=$prefixexp/script
7522         set dflt
7523         eval $prefixup
7524         ;;
7525 *)  dflt="$scriptdir"
7526         ;;
7527 esac
7528 $cat <<EOM
7529  
7530 Some installations have a separate directory just for executable scripts so
7531 that they can mount it across multiple architectures but keep the scripts in
7532 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7533 Or you might just lump your scripts in with all your other executables.
7534  
7535 EOM
7536 fn=d~
7537 rp='Where do you keep publicly executable scripts?'
7538 . ./getfile
7539 if $test "X$ansexp" != "X$scriptdirexp"; then
7540         installscript=''
7541 fi
7542 scriptdir="$ans"
7543 scriptdirexp="$ansexp"
7544 : Change installation prefix, if necessary.
7545 if $test X"$prefix" != X"$installprefix"; then
7546         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7547 else
7548         installscript="$scriptdirexp"
7549 fi
7550
7551 : determine where add-on public executables go
7552 case "$sitebin" in
7553 '')     dflt=$siteprefix/bin ;;
7554 *)      dflt=$sitebin ;;
7555 esac
7556 fn=d~
7557 rp='Pathname where the add-on public executables should be installed?'
7558 . ./getfile
7559 sitebin="$ans"
7560 sitebinexp="$ansexp"
7561 : Change installation prefix, if necessary.
7562 if $test X"$prefix" != X"$installprefix"; then
7563         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7564 else
7565         installsitebin="$sitebinexp"
7566 fi
7567
7568 case "$useperlio" in
7569 $define|true|[yY]*)     dflt='y';;
7570 *) dflt='n';;
7571 esac
7572 cat <<EOM
7573
7574 Previous version of $package used the standard IO mechanisms as defined
7575 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7576 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7577 the default.  This abstraction layer can use AT&T's sfio (if you already
7578 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7579 problems with some extension modules.  Using PerlIO with stdio is safe,
7580 but it is slower than plain stdio and therefore is not the default.
7581
7582 If this doesn't make any sense to you, just accept the default '$dflt'.
7583 EOM
7584 rp='Use the experimental PerlIO abstraction layer?'
7585 . ./myread
7586 case "$ans" in
7587 y|Y) 
7588         val="$define"
7589         ;;     
7590 *)      
7591         echo "Ok, doing things the stdio way"
7592         val="$undef"
7593         ;;
7594 esac
7595 set useperlio
7596 eval $setvar 
7597
7598 case "$vendorprefix" in
7599 '')     d_vendorbin="$undef"
7600         vendorbin=''
7601         vendorbinexp=''
7602         ;;
7603 *)      d_vendorbin="$define"
7604         : determine where vendor-supplied executables go.
7605         case "$vendorbin" in
7606         '') dflt=$vendorprefix/bin ;;
7607         *)      dflt="$vendorbin" ;;
7608         esac
7609         fn=d~+
7610         rp='Pathname for the vendor-supplied executables directory?'
7611         . ./getfile
7612         vendorbin="$ans"
7613         vendorbinexp="$ansexp"
7614         ;;
7615 esac
7616 : Change installation prefix, if necessary.
7617 if $test X"$prefix" != X"$installprefix"; then
7618         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7619 else
7620         installvendorbin="$vendorbinexp"
7621 fi
7622
7623 : see if qgcvt exists
7624 set qgcvt d_qgcvt
7625 eval $inlibc
7626
7627 echo " "
7628
7629 if $test X"$d_longdbl" = X"$define"; then
7630
7631 echo "Checking how to print long doubles..." >&4
7632
7633 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7634         $cat >try.c <<'EOCP'
7635 #include <sys/types.h>
7636 #include <stdio.h>
7637 int main() {
7638   double d = 123.456;
7639   printf("%.3f\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='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7648                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7649                         echo "We will use %f."
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("%.3llf\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='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7670                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7671                         echo "We will use %llf."
7672                         ;;
7673                 esac
7674         fi
7675 fi
7676
7677 if $test X"$sPRIfldbl" = X; then
7678         $cat >try.c <<'EOCP'
7679 #include <sys/types.h>
7680 #include <stdio.h>
7681 int main() {
7682   long double d = 123.456;
7683   printf("%.3Lf\n", d);
7684 }
7685 EOCP
7686         set try
7687         if eval $compile; then
7688                 yyy=`./try$exe_ext`
7689                 case "$yyy" in
7690                 123.456)
7691                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7692                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7693                         echo "We will use %Lf."
7694                         ;;
7695                 esac
7696         fi
7697 fi
7698
7699 if $test X"$sPRIfldbl" = X; then
7700         $cat >try.c <<'EOCP'
7701 #include <sys/types.h>
7702 #include <stdio.h>
7703 int main() {
7704   long double d = 123.456;
7705   printf("%.3lf\n", d);
7706 }
7707 EOCP
7708         set try
7709         if eval $compile; then
7710                 yyy=`./try$exe_ext`
7711                 case "$yyy" in
7712                 123.456)
7713                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7714                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7715                         echo "We will use %lf."
7716                         ;;
7717                 esac
7718         fi
7719 fi
7720
7721 if $test X"$sPRIfldbl" = X; then
7722         echo "Cannot figure out how to print long doubles." >&4
7723 else
7724         sSCNfldbl=$sPRIfldbl    # expect consistency
7725 fi
7726
7727 $rm -f try try.*
7728
7729 fi # d_longdbl
7730
7731 case "$sPRIfldbl" in
7732 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7733         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7734         d_SCNfldbl="$undef";
7735         ;;
7736 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7737         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7738         d_SCNfldbl="$define";
7739         ;;
7740 esac
7741
7742 : Check how to convert floats to strings.
7743 echo " "
7744 echo "Checking for an efficient way to convert floats to strings."
7745 echo " " > try.c
7746 case "$uselongdouble" in
7747 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7748 esac
7749 case "$d_longdbl" in
7750 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7751 esac
7752 case "$d_PRIgldbl" in
7753 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7754 esac
7755 $cat >>try.c <<EOP
7756 #ifdef TRY_gconvert
7757 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7758 char *myname = "gconvert";
7759 #endif
7760 #ifdef TRY_gcvt
7761 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7762 char *myname = "gcvt";
7763 #endif
7764 #ifdef TRY_qgcvt
7765 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7766 char *myname = "qgcvt";
7767 #define DOUBLETYPE long double
7768 #endif
7769 #ifdef TRY_sprintf
7770 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7771 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7772 #else
7773 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7774 #endif
7775 char *myname = "sprintf";
7776 #endif
7777
7778 #ifndef DOUBLETYPE
7779 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7780 #define DOUBLETYPE long double
7781 #else
7782 #define DOUBLETYPE double
7783 #endif
7784 #endif
7785
7786 #include <stdio.h>
7787
7788 #define I_STDLIB $i_stdlib
7789 #ifdef I_STDLIB
7790 #include <stdlib.h>
7791 #endif
7792
7793 int
7794 checkit(expect, got)
7795 char *expect;
7796 char *got;
7797 {
7798     if (strcmp(expect, got)) {
7799                 printf("%s oddity:  Expected %s, got %s\n",
7800                         myname, expect, got);
7801                 exit(1);
7802         }
7803 }
7804
7805 int main()
7806
7807         char buf[64]; 
7808         buf[63] = '\0';
7809
7810         /* This must be 1st test on (which?) platform */
7811         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7812         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7813         checkit("0.1", buf);
7814
7815         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7816         checkit("1", buf);
7817
7818         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7819         checkit("1.1", buf);
7820
7821         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7822         checkit("1.01", buf);
7823
7824         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7825         checkit("1.001", buf);
7826
7827         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7828         checkit("1.0001", buf);
7829
7830         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7831         checkit("1.00001", buf);
7832
7833         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7834         checkit("1.000001", buf);
7835
7836         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7837         checkit("0", buf);
7838
7839         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7840         checkit("-1", buf);
7841
7842         /* Some Linux gcvt's give 1.e+5 here. */
7843         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7844         checkit("100000", buf);
7845         
7846         /* Some Linux gcvt's give -1.e+5 here. */
7847         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7848         checkit("-100000", buf);
7849
7850         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7851         checkit("123.456", buf);
7852
7853         exit(0);
7854 }
7855 EOP
7856 case "$d_Gconvert" in
7857 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7858 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7859 *) xxx_list='gconvert gcvt sprintf' ;;
7860 esac
7861
7862 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7863 "$define$define$define")
7864     # for long doubles prefer sprintf
7865     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7866     xxx_list="sprintf $xxx_list"
7867     case "$d_qgcvt" in
7868     "$define") xxx_list="qgcvt $xxx_list" ;;
7869     esac
7870     ;;
7871 esac
7872
7873 for xxx_convert in $xxx_list; do
7874         echo "Trying $xxx_convert..."
7875         $rm -f try try$_o
7876         set try -DTRY_$xxx_convert
7877         if eval $compile; then
7878                 echo "$xxx_convert() found." >&4
7879                 if ./try; then
7880                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7881                         break;
7882                 else
7883                         echo "...But $xxx_convert didn't work as I expected."
7884                 fi
7885         else
7886                 echo "$xxx_convert NOT found." >&4
7887         fi
7888 done
7889         
7890 case "$xxx_convert" in
7891 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7892 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7893 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7894 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7895    "$define$define$define")
7896       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7897    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7898    esac
7899    ;;  
7900 esac
7901
7902 : Initialize h_fcntl
7903 h_fcntl=false
7904
7905 : Initialize h_sysfile
7906 h_sysfile=false
7907
7908 : access call always available on UNIX
7909 set access d_access
7910 eval $inlibc
7911
7912 : locate the flags for 'access()'
7913 case "$d_access" in
7914 "$define")
7915         echo " "
7916         $cat >access.c <<'EOCP'
7917 #include <sys/types.h>
7918 #ifdef I_FCNTL
7919 #include <fcntl.h>
7920 #endif
7921 #ifdef I_SYS_FILE
7922 #include <sys/file.h>
7923 #endif
7924 #ifdef I_UNISTD
7925 #include <unistd.h>
7926 #endif
7927 int main() {
7928         exit(R_OK);
7929 }
7930 EOCP
7931         : check sys/file.h first, no particular reason here
7932         if $test `./findhdr sys/file.h` && \
7933                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7934                 h_sysfile=true;
7935                 echo "<sys/file.h> defines the *_OK access constants." >&4
7936         elif $test `./findhdr fcntl.h` && \
7937                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7938                 h_fcntl=true;
7939                 echo "<fcntl.h> defines the *_OK access constants." >&4
7940         elif $test `./findhdr unistd.h` && \
7941                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7942                 echo "<unistd.h> defines the *_OK access constants." >&4
7943         else
7944                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7945         fi
7946         ;;
7947 esac
7948 $rm -f access*
7949
7950 : see if accessx exists
7951 set accessx d_accessx
7952 eval $inlibc
7953
7954 : see if alarm exists
7955 set alarm d_alarm
7956 eval $inlibc
7957
7958 : see if atolf exists
7959 set atolf d_atolf
7960 eval $inlibc
7961
7962 : see if atoll exists
7963 set atoll d_atoll
7964 eval $inlibc
7965
7966 : Look for GNU-cc style attribute checking
7967 echo " "
7968 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7969 $cat >attrib.c <<'EOCP'
7970 #include <stdio.h>
7971 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7972 EOCP
7973 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7974         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7975                 echo "Your C compiler doesn't fully support __attribute__."
7976                 val="$undef"
7977         else
7978                 echo "Your C compiler supports __attribute__."
7979                 val="$define"
7980         fi
7981 else
7982         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7983         val="$undef"
7984 fi
7985 set d_attribut
7986 eval $setvar
7987 $rm -f attrib*
7988
7989 : see if bcmp exists
7990 set bcmp d_bcmp
7991 eval $inlibc
7992
7993 : see if bcopy exists
7994 set bcopy d_bcopy
7995 eval $inlibc
7996
7997 : see if this is a unistd.h system
7998 set unistd.h i_unistd
7999 eval $inhdr
8000
8001 : see if getpgrp exists
8002 set getpgrp d_getpgrp
8003 eval $inlibc
8004
8005 case "$d_getpgrp" in
8006 "$define")
8007         echo " "
8008         echo "Checking to see which flavor of getpgrp is in use..."
8009         $cat >set.c <<EOP
8010 #$i_unistd I_UNISTD
8011 #include <sys/types.h>
8012 #ifdef I_UNISTD
8013 #  include <unistd.h>
8014 #endif
8015 int main()
8016 {
8017         if (getuid() == 0) {
8018                 printf("(I see you are running Configure as super-user...)\n");
8019                 setuid(1);
8020         }
8021 #ifdef TRY_BSD_PGRP
8022         if (getpgrp(1) == 0)
8023                 exit(0);
8024 #else
8025         if (getpgrp() > 0)
8026                 exit(0);
8027 #endif
8028         exit(1);
8029 }
8030 EOP
8031         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8032                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8033                 val="$define"
8034         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8035                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8036                 val="$undef"
8037         else
8038                 echo "I can't seem to compile and run the test program."
8039                 if ./usg; then
8040                         xxx="a USG one, i.e. you use getpgrp()."
8041                 else
8042                         # SVR4 systems can appear rather BSD-ish.
8043                         case "$i_unistd" in
8044                         $undef)
8045                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8046                                 val="$define"
8047                                 ;;
8048                         $define)
8049                                 xxx="probably a USG one, i.e. you use getpgrp()."
8050                                 val="$undef"
8051                                 ;;
8052                         esac
8053                 fi
8054                 echo "Assuming your getpgrp is $xxx" >&4
8055         fi
8056         ;;
8057 *) val="$undef";;
8058 esac
8059 set d_bsdgetpgrp
8060 eval $setvar
8061 $rm -f set set.c
8062
8063 : see if setpgrp exists
8064 set setpgrp d_setpgrp
8065 eval $inlibc
8066
8067 case "$d_setpgrp" in
8068 "$define")
8069         echo " "
8070         echo "Checking to see which flavor of setpgrp is in use..."
8071         $cat >set.c <<EOP
8072 #$i_unistd I_UNISTD
8073 #include <sys/types.h>
8074 #ifdef I_UNISTD
8075 #  include <unistd.h>
8076 #endif
8077 int main()
8078 {
8079         if (getuid() == 0) {
8080                 printf("(I see you are running Configure as super-user...)\n");
8081                 setuid(1);
8082         }
8083 #ifdef TRY_BSD_PGRP
8084         if (-1 == setpgrp(1, 1))
8085                 exit(0);
8086 #else
8087         if (setpgrp() != -1)
8088                 exit(0);
8089 #endif
8090         exit(1);
8091 }
8092 EOP
8093         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8094                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8095                 val="$define"
8096         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8097                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8098                 val="$undef"
8099         else
8100                 echo "(I can't seem to compile and run the test program.)"
8101                 if ./usg; then
8102                         xxx="a USG one, i.e. you use setpgrp()."
8103                 else
8104                         # SVR4 systems can appear rather BSD-ish.
8105                         case "$i_unistd" in
8106                         $undef)
8107                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8108                                 val="$define"
8109                                 ;;
8110                         $define)
8111                                 xxx="probably a USG one, i.e. you use setpgrp()."
8112                                 val="$undef"
8113                                 ;;
8114                         esac
8115                 fi
8116                 echo "Assuming your setpgrp is $xxx" >&4
8117         fi
8118         ;;
8119 *) val="$undef";;
8120 esac
8121 set d_bsdsetpgrp
8122 eval $setvar
8123 $rm -f set set.c
8124 : see if bzero exists
8125 set bzero d_bzero
8126 eval $inlibc
8127
8128 : see if signal is declared as pointer to function returning int or void
8129 echo " "
8130 xxx=`./findhdr signal.h`
8131 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8132 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8133         echo "You have int (*signal())() instead of void." >&4
8134         val="$undef"
8135 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8136         echo "You have void (*signal())()." >&4
8137         val="$define"
8138 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8139         echo "You have int (*signal())() instead of void." >&4
8140         val="$undef"
8141 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8142         echo "You have void (*signal())()." >&4
8143         val="$define"
8144 else
8145         case "$d_voidsig" in
8146         '')
8147         echo "I can't determine whether signal handler returns void or int..." >&4
8148                 dflt=void
8149                 rp="What type does your signal handler return?"
8150                 . ./myread
8151                 case "$ans" in
8152                 v*) val="$define";;
8153                 *) val="$undef";;
8154                 esac;;
8155         "$define")
8156                 echo "As you already told me, signal handler returns void." >&4
8157                 val="$define"
8158                 ;;
8159         *)      echo "As you already told me, signal handler returns int." >&4
8160                 val="$undef"
8161                 ;;
8162         esac
8163 fi
8164 set d_voidsig
8165 eval $setvar
8166 case "$d_voidsig" in
8167 "$define") signal_t="void";;
8168 *) signal_t="int";;
8169 esac
8170 $rm -f $$.tmp
8171
8172 : check for ability to cast large floats to 32-bit ints.
8173 echo " "
8174 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8175 if $test "$intsize" -ge 4; then
8176         xxx=int
8177 else
8178         xxx=long
8179 fi
8180 $cat >try.c <<EOCP
8181 #include <stdio.h>
8182 #include <sys/types.h>
8183 #include <signal.h>
8184 $signal_t blech(s) int s; { exit(3); }
8185 int main()
8186 {
8187         $xxx i32;
8188         double f, g;
8189         int result = 0;
8190         char str[16];
8191         signal(SIGFPE, blech);
8192
8193         /* Don't let compiler optimize the test away.  Store the number 
8194            in a writable string for gcc to pass to sscanf under HP/UX.
8195         */
8196         sprintf(str, "2147483647");
8197         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8198         g = 10 * f;
8199         i32  = ($xxx) g;
8200
8201         /* x86 processors will probably give 0x8000 0000, which is a
8202        sign change.  We don't want that.  We want to mimic SPARC
8203            behavior here, which is to preserve the sign and give
8204            back 0x7fff ffff.
8205         */
8206         if (i32 != ($xxx) f)
8207                 result |= 1;
8208         exit(result);
8209 }
8210 EOCP
8211 set try
8212 if eval $compile_ok; then
8213         ./try
8214         yyy=$?
8215 else
8216         echo "(I can't seem to compile the test program--assuming it can't)"
8217         yyy=1
8218 fi
8219 case "$yyy" in
8220 0)      val="$define"
8221         echo "Yup, it can."
8222         ;;
8223 *)      val="$undef"
8224         echo "Nope, it can't."
8225         ;;
8226 esac
8227 set d_casti32
8228 eval $setvar
8229 $rm -f try try.*
8230
8231 : check for ability to cast negative floats to unsigned
8232 echo " "
8233 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8234 $cat >try.c <<EOCP
8235 #include <stdio.h>
8236 #include <sys/types.h>
8237 #include <signal.h>
8238 $signal_t blech(s) int s; { exit(7); }
8239 $signal_t blech_in_list(s) int s; { exit(4); }
8240 unsigned long dummy_long(p) unsigned long p; { return p; }
8241 unsigned int dummy_int(p) unsigned int p; { return p; }
8242 unsigned short dummy_short(p) unsigned short p; { return p; }
8243 int main()
8244 {
8245         double f;
8246         unsigned long along;
8247         unsigned int aint;
8248         unsigned short ashort;
8249         int result = 0;
8250         char str[16];
8251         
8252         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8253            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8254            optimized the whole file away
8255         */
8256         /* Store the number in a writable string for gcc to pass to 
8257            sscanf under HP/UX.
8258         */
8259         sprintf(str, "-123");
8260         sscanf(str, "%lf", &f);  /* f = -123.; */
8261
8262         signal(SIGFPE, blech);
8263         along = (unsigned long)f;
8264         aint = (unsigned int)f;
8265         ashort = (unsigned short)f;
8266         if (along != (unsigned long)-123)
8267                 result |= 1;
8268         if (aint != (unsigned int)-123)
8269                 result |= 1;
8270         if (ashort != (unsigned short)-123)
8271                 result |= 1;
8272         sprintf(str, "1073741824.");
8273         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8274         f = f + f;
8275         along = 0;
8276         along = (unsigned long)f;
8277         if (along != 0x80000000)
8278                 result |= 2;
8279         f -= 1.;
8280         along = 0;
8281         along = (unsigned long)f;
8282         if (along != 0x7fffffff)
8283                 result |= 1;
8284         f += 2.;
8285         along = 0;
8286         along = (unsigned long)f;
8287         if (along != 0x80000001)
8288                 result |= 2;
8289         if (result)
8290                 exit(result);
8291         signal(SIGFPE, blech_in_list);
8292         sprintf(str, "123.");
8293         sscanf(str, "%lf", &f);  /* f = 123.; */
8294         along = dummy_long((unsigned long)f);
8295         aint = dummy_int((unsigned int)f);
8296         ashort = dummy_short((unsigned short)f);
8297         if (along != (unsigned long)123)
8298                 result |= 4;
8299         if (aint != (unsigned int)123)
8300                 result |= 4;
8301         if (ashort != (unsigned short)123)
8302                 result |= 4;
8303         exit(result);
8304
8305 }
8306 EOCP
8307 set try
8308 if eval $compile_ok; then
8309         ./try
8310         castflags=$?
8311 else
8312         echo "(I can't seem to compile the test program--assuming it can't)"
8313         castflags=7
8314 fi
8315 case "$castflags" in
8316 0)      val="$define"
8317         echo "Yup, it can."
8318         ;;
8319 *)      val="$undef"
8320         echo "Nope, it can't."
8321         ;;
8322 esac
8323 set d_castneg
8324 eval $setvar
8325 $rm -f try.*
8326
8327 : see if vprintf exists
8328 echo " "
8329 if set vprintf val -f d_vprintf; eval $csym; $val; then
8330         echo 'vprintf() found.' >&4
8331         val="$define"
8332         $cat >vprintf.c <<'EOF'
8333 #include <varargs.h>
8334
8335 int main() { xxx("foo"); }
8336
8337 xxx(va_alist)
8338 va_dcl
8339 {
8340         va_list args;
8341         char buf[10];
8342
8343         va_start(args);
8344         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8345 }
8346 EOF
8347         set vprintf
8348         if eval $compile && ./vprintf; then
8349                 echo "Your vsprintf() returns (int)." >&4
8350                 val2="$undef"
8351         else
8352                 echo "Your vsprintf() returns (char*)." >&4
8353                 val2="$define"
8354         fi
8355 else
8356         echo 'vprintf() NOT found.' >&4
8357                 val="$undef"
8358                 val2="$undef"
8359 fi
8360 set d_vprintf
8361 eval $setvar
8362 val=$val2
8363 set d_charvspr
8364 eval $setvar
8365
8366 : see if chown exists
8367 set chown d_chown
8368 eval $inlibc
8369
8370 : see if chroot exists
8371 set chroot d_chroot
8372 eval $inlibc
8373
8374 : see if chsize exists
8375 set chsize d_chsize
8376 eval $inlibc
8377
8378 : check for const keyword
8379 echo " "
8380 echo 'Checking to see if your C compiler knows about "const"...' >&4
8381 $cat >const.c <<'EOCP'
8382 typedef struct spug { int drokk; } spug;
8383 int main()
8384 {
8385         const char *foo;
8386         const spug y;
8387 }
8388 EOCP
8389 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8390         val="$define"
8391         echo "Yup, it does."
8392 else
8393         val="$undef"
8394         echo "Nope, it doesn't."
8395 fi
8396 set d_const
8397 eval $setvar
8398
8399 : see if crypt exists
8400 echo " "
8401 if set crypt val -f d_crypt; eval $csym; $val; then
8402         echo 'crypt() found.' >&4
8403         val="$define"
8404         cryptlib=''
8405 else
8406         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8407         if $test -z "$cryptlib"; then
8408                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8409         else
8410                 cryptlib=-lcrypt
8411         fi
8412         if $test -z "$cryptlib"; then
8413                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8414         else
8415                 cryptlib=-lcrypt
8416         fi
8417         if $test -z "$cryptlib"; then
8418                 cryptlib=`./loc libcrypt$_a "" $libpth`
8419         else
8420                 cryptlib=-lcrypt
8421         fi
8422         if $test -z "$cryptlib"; then
8423                 echo 'crypt() NOT found.' >&4
8424                 val="$undef"
8425         else
8426                 val="$define"
8427         fi
8428 fi
8429 set d_crypt
8430 eval $setvar
8431
8432 : get csh whereabouts
8433 case "$csh" in
8434 'csh') val="$undef" ;;
8435 *) val="$define" ;;
8436 esac
8437 set d_csh
8438 eval $setvar
8439 : Respect a hint or command line value for full_csh.
8440 case "$full_csh" in
8441 '') full_csh=$csh ;;
8442 esac
8443
8444 : see if cuserid exists
8445 set cuserid d_cuserid
8446 eval $inlibc
8447
8448 : see if this is a limits.h system
8449 set limits.h i_limits
8450 eval $inhdr
8451
8452 : see if this is a float.h system
8453 set float.h i_float
8454 eval $inhdr
8455
8456 : See if number of significant digits in a double precision number is known
8457 echo " "
8458 $cat >dbl_dig.c <<EOM
8459 #$i_limits I_LIMITS
8460 #$i_float I_FLOAT
8461 #ifdef I_LIMITS
8462 #include <limits.h>
8463 #endif
8464 #ifdef I_FLOAT
8465 #include <float.h>
8466 #endif
8467 #ifdef DBL_DIG
8468 printf("Contains DBL_DIG");
8469 #endif
8470 EOM
8471 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8472 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8473         echo "DBL_DIG found." >&4
8474         val="$define"
8475 else
8476         echo "DBL_DIG NOT found." >&4
8477         val="$undef"
8478 fi
8479 $rm -f dbl_dig.?
8480 set d_dbl_dig
8481 eval $setvar
8482
8483 : see if difftime exists
8484 set difftime d_difftime
8485 eval $inlibc
8486
8487 : see if this is a dirent system
8488 echo " "
8489 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8490         val="$define"
8491         echo "<dirent.h> found." >&4
8492 else
8493         val="$undef"
8494         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8495                 echo "<sys/dir.h> found." >&4
8496                 echo " "
8497         else
8498                 xinc=`./findhdr sys/ndir.h`
8499         fi
8500         echo "<dirent.h> NOT found." >&4
8501 fi
8502 set i_dirent
8503 eval $setvar
8504
8505 : Look for type of directory structure.
8506 echo " "
8507 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8508
8509 case "$direntrytype" in
8510 ''|' ')
8511         case "$i_dirent" in
8512         $define) guess1='struct dirent' ;;
8513         *) guess1='struct direct'  ;;
8514         esac
8515         ;;
8516 *)      guess1="$direntrytype"
8517         ;;
8518 esac
8519
8520 case "$guess1" in
8521 'struct dirent') guess2='struct direct' ;;
8522 *) guess2='struct dirent' ;;
8523 esac
8524                 
8525 if $contains "$guess1" try.c >/dev/null 2>&1; then
8526         direntrytype="$guess1"
8527         echo "Your directory entries are $direntrytype." >&4
8528 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8529         direntrytype="$guess2"
8530         echo "Your directory entries seem to be $direntrytype." >&4
8531 else
8532         echo "I don't recognize your system's directory entries." >&4
8533         rp="What type is used for directory entries on this system?"
8534         dflt="$guess1"
8535         . ./myread
8536         direntrytype="$ans"
8537 fi
8538 $rm -f try.c
8539
8540
8541 : see if the directory entry stores field length
8542 echo " "
8543 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8544 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8545         echo "Good, your directory entry keeps length information in d_namlen." >&4
8546         val="$define"
8547 else
8548         echo "Your directory entry does not know about the d_namlen field." >&4
8549         val="$undef"
8550 fi
8551 set d_dirnamlen
8552 eval $setvar
8553 $rm -f try.c
8554
8555 : see if dlerror exists
8556 xxx_runnm="$runnm"
8557 runnm=false
8558 set dlerror d_dlerror
8559 eval $inlibc
8560 runnm="$xxx_runnm"
8561
8562 : see if dlfcn is available
8563 set dlfcn.h i_dlfcn
8564 eval $inhdr
8565
8566 case "$usedl" in
8567 $define|y|true)
8568         $cat << EOM
8569
8570 On a few systems, the dynamically loaded modules that perl generates and uses
8571 will need a different extension than shared libs. The default will probably
8572 be appropriate.
8573
8574 EOM
8575         case "$dlext" in
8576         '')     dflt="$so" ;;
8577         *)      dflt="$dlext" ;;
8578         esac
8579         rp='What is the extension of dynamically loaded modules'
8580         . ./myread
8581         dlext="$ans"
8582         ;;
8583 *)
8584         dlext="none"
8585         ;;
8586 esac
8587
8588 : Check if dlsym need a leading underscore
8589 echo " "
8590 val="$undef"
8591
8592 case "$dlsrc" in
8593 dl_dlopen.xs)
8594         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8595         $cat >dyna.c <<'EOM'
8596 fred () { }
8597 EOM
8598
8599 $cat >fred.c<<EOM
8600
8601 #include <stdio.h>
8602 #$i_dlfcn I_DLFCN
8603 #ifdef I_DLFCN
8604 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8605 #else
8606 #include <sys/types.h>
8607 #include <nlist.h>
8608 #include <link.h>
8609 #endif
8610
8611 extern int fred() ;
8612
8613 int main()
8614 {
8615     void * handle ;
8616     void * symbol ;
8617 #ifndef RTLD_LAZY
8618     int mode = 1 ;
8619 #else
8620     int mode = RTLD_LAZY ;
8621 #endif
8622     handle = dlopen("./dyna.$dlext", mode) ;
8623     if (handle == NULL) {
8624         printf ("1\n") ;
8625         fflush (stdout) ;
8626         exit(0);
8627     }
8628     symbol = dlsym(handle, "fred") ;
8629     if (symbol == NULL) {
8630         /* try putting a leading underscore */
8631         symbol = dlsym(handle, "_fred") ;
8632         if (symbol == NULL) {
8633             printf ("2\n") ;
8634             fflush (stdout) ;
8635             exit(0);
8636         }
8637         printf ("3\n") ;
8638     }
8639     else
8640         printf ("4\n") ;
8641     fflush (stdout) ;
8642     exit(0);
8643 }
8644 EOM
8645         : Call the object file tmp-dyna.o in case dlext=o.
8646         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8647                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8648                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8649                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8650                 xxx=`./fred`
8651                 case $xxx in
8652                 1)      echo "Test program failed using dlopen." >&4
8653                         echo "Perhaps you should not use dynamic loading." >&4;;
8654                 2)      echo "Test program failed using dlsym." >&4
8655                         echo "Perhaps you should not use dynamic loading." >&4;;
8656                 3)      echo "dlsym needs a leading underscore" >&4
8657                         val="$define" ;;
8658                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8659                 esac
8660         else
8661                 echo "I can't compile and run the test program." >&4
8662                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8663         fi
8664         ;;
8665 esac
8666                 
8667 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8668
8669 set d_dlsymun
8670 eval $setvar
8671
8672 hasproto='varname=$1; func=$2; shift; shift;
8673 while $test $# -ge 2; do
8674         case "$1" in
8675         $define) echo "#include <$2>";;
8676         esac ;
8677     shift 2;
8678 done > try.c;
8679 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8680 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8681         echo "$func() prototype found.";
8682         val="$define";
8683 else
8684         echo "$func() prototype NOT found.";
8685         val="$undef";
8686 fi;
8687 set $varname;
8688 eval $setvar;
8689 $rm -f try.c tryout.c'
8690
8691 : see if prototype for drand48 is available
8692 echo " "
8693 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8694 eval $hasproto
8695
8696 : see if dup2 exists
8697 set dup2 d_dup2
8698 eval $inlibc
8699
8700 : see if eaccess exists
8701 set eaccess d_eaccess
8702 eval $inlibc
8703
8704 : see if endgrent exists
8705 set endgrent d_endgrent
8706 eval $inlibc
8707
8708 : see if endhostent exists
8709 set endhostent d_endhent
8710 eval $inlibc
8711
8712 : see if endnetent exists
8713 set endnetent d_endnent
8714 eval $inlibc
8715
8716 : see if endprotoent exists
8717 set endprotoent d_endpent
8718 eval $inlibc
8719
8720 : see if endpwent exists
8721 set endpwent d_endpwent
8722 eval $inlibc
8723
8724 : see if endservent exists
8725 set endservent d_endsent
8726 eval $inlibc
8727
8728 : Locate the flags for 'open()'
8729 echo " "
8730 $cat >open3.c <<'EOCP'
8731 #include <sys/types.h>
8732 #ifdef I_FCNTL
8733 #include <fcntl.h>
8734 #endif
8735 #ifdef I_SYS_FILE
8736 #include <sys/file.h>
8737 #endif
8738 int main() {
8739         if(O_RDONLY);
8740 #ifdef O_TRUNC
8741         exit(0);
8742 #else
8743         exit(1);
8744 #endif
8745 }
8746 EOCP
8747 : check sys/file.h first to get FREAD on Sun
8748 if $test `./findhdr sys/file.h` && \
8749                 set open3 -DI_SYS_FILE && eval $compile; then
8750         h_sysfile=true;
8751         echo "<sys/file.h> defines the O_* constants..." >&4
8752         if ./open3; then
8753                 echo "and you have the 3 argument form of open()." >&4
8754                 val="$define"
8755         else
8756                 echo "but not the 3 argument form of open().  Oh, well." >&4
8757                 val="$undef"
8758         fi
8759 elif $test `./findhdr fcntl.h` && \
8760                 set open3 -DI_FCNTL && eval $compile; then
8761         h_fcntl=true;
8762         echo "<fcntl.h> defines the O_* constants..." >&4
8763         if ./open3; then
8764                 echo "and you have the 3 argument form of open()." >&4
8765                 val="$define"
8766         else
8767                 echo "but not the 3 argument form of open().  Oh, well." >&4
8768                 val="$undef"
8769         fi
8770 else
8771         val="$undef"
8772         echo "I can't find the O_* constant definitions!  You got problems." >&4
8773 fi
8774 set d_open3
8775 eval $setvar
8776 $rm -f open3*
8777
8778 : see which of string.h or strings.h is needed
8779 echo " "
8780 strings=`./findhdr string.h`
8781 if $test "$strings" && $test -r "$strings"; then
8782         echo "Using <string.h> instead of <strings.h>." >&4
8783         val="$define"
8784 else
8785         val="$undef"
8786         strings=`./findhdr strings.h`
8787         if $test "$strings" && $test -r "$strings"; then
8788                 echo "Using <strings.h> instead of <string.h>." >&4
8789         else
8790                 echo "No string header found -- You'll surely have problems." >&4
8791         fi
8792 fi
8793 set i_string
8794 eval $setvar
8795 case "$i_string" in
8796 "$undef") strings=`./findhdr strings.h`;;
8797 *)        strings=`./findhdr string.h`;;
8798 esac
8799
8800 : check for non-blocking I/O stuff
8801 case "$h_sysfile" in
8802 true) echo "#include <sys/file.h>" > head.c;;
8803 *)
8804         case "$h_fcntl" in
8805         true) echo "#include <fcntl.h>" > head.c;;
8806         *) echo "#include <sys/fcntl.h>" > head.c;;
8807         esac
8808         ;;
8809 esac
8810 echo " "
8811 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8812 case "$o_nonblock" in
8813 '')
8814         $cat head.c > try.c
8815         $cat >>try.c <<'EOCP'
8816 #include <stdio.h>
8817 int main() {
8818 #ifdef O_NONBLOCK
8819         printf("O_NONBLOCK\n");
8820         exit(0);
8821 #endif
8822 #ifdef O_NDELAY
8823         printf("O_NDELAY\n");
8824         exit(0);
8825 #endif
8826 #ifdef FNDELAY
8827         printf("FNDELAY\n");
8828         exit(0);
8829 #endif
8830         exit(0);
8831 }
8832 EOCP
8833         set try
8834         if eval $compile_ok; then
8835                 o_nonblock=`./try`
8836                 case "$o_nonblock" in
8837                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8838                 *) echo "Seems like we can use $o_nonblock.";;
8839                 esac
8840         else
8841                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8842         fi
8843         ;;
8844 *) echo "Using $hint value $o_nonblock.";;
8845 esac
8846 $rm -f try try.* .out core
8847
8848 echo " "
8849 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8850 case "$eagain" in
8851 '')
8852         $cat head.c > try.c
8853         $cat >>try.c <<EOCP
8854 #include <errno.h>
8855 #include <sys/types.h>
8856 #include <signal.h>
8857 #include <stdio.h> 
8858 #define MY_O_NONBLOCK $o_nonblock
8859 #ifndef errno  /* XXX need better Configure test */
8860 extern int errno;
8861 #endif
8862 #$i_unistd I_UNISTD
8863 #ifdef I_UNISTD
8864 #include <unistd.h>
8865 #endif
8866 #$i_string I_STRING
8867 #ifdef I_STRING
8868 #include <string.h>
8869 #else
8870 #include <strings.h>
8871 #endif
8872 $signal_t blech(x) int x; { exit(3); }
8873 EOCP
8874         $cat >> try.c <<'EOCP'
8875 int main()
8876 {
8877         int pd[2];
8878         int pu[2];
8879         char buf[1];
8880         char string[100];
8881
8882         pipe(pd);       /* Down: child -> parent */
8883         pipe(pu);       /* Up: parent -> child */
8884         if (0 != fork()) {
8885                 int ret;
8886                 close(pd[1]);   /* Parent reads from pd[0] */
8887                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8888                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8889                         exit(1);
8890                 signal(SIGALRM, blech);
8891                 alarm(5);
8892                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8893                         exit(2);
8894                 sprintf(string, "%d\n", ret);
8895                 write(2, string, strlen(string));
8896                 alarm(0);
8897 #ifdef EAGAIN
8898                 if (errno == EAGAIN) {
8899                         printf("EAGAIN\n");
8900                         goto ok;
8901                 }
8902 #endif
8903 #ifdef EWOULDBLOCK
8904                 if (errno == EWOULDBLOCK)
8905                         printf("EWOULDBLOCK\n");
8906 #endif
8907         ok:
8908                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8909                 sleep(2);                               /* Give it time to close our pipe */
8910                 alarm(5);
8911                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8912                 alarm(0);
8913                 sprintf(string, "%d\n", ret);
8914                 write(3, string, strlen(string));
8915                 exit(0);
8916         }
8917
8918         close(pd[0]);                   /* We write to pd[1] */
8919         close(pu[1]);                   /* We read from pu[0] */
8920         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8921         close(pd[1]);                   /* Pipe pd is now fully closed! */
8922         exit(0);                                /* Bye bye, thank you for playing! */
8923 }
8924 EOCP
8925         set try
8926         if eval $compile_ok; then
8927                 echo "$startsh" >mtry
8928                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8929                 chmod +x mtry
8930                 ./mtry >/dev/null 2>&1
8931                 case $? in
8932                 0) eagain=`$cat try.out`;;
8933                 1) echo "Could not perform non-blocking setting!";;
8934                 2) echo "I did a successful read() for something that was not there!";;
8935                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8936                 *) echo "Something terribly wrong happened during testing.";;
8937                 esac
8938                 rd_nodata=`$cat try.ret`
8939                 echo "A read() system call with no data present returns $rd_nodata."
8940                 case "$rd_nodata" in
8941                 0|-1) ;;
8942                 *)
8943                         echo "(That's peculiar, fixing that to be -1.)"
8944                         rd_nodata=-1
8945                         ;;
8946                 esac
8947                 case "$eagain" in
8948                 '')
8949                         echo "Forcing errno EAGAIN on read() with no data available."
8950                         eagain=EAGAIN
8951                         ;;
8952                 *)
8953                         echo "Your read() sets errno to $eagain when no data is available."
8954                         ;;
8955                 esac
8956                 status=`$cat try.err`
8957                 case "$status" in
8958                 0) echo "And it correctly returns 0 to signal EOF.";;
8959                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8960                 *) echo "However, your read() returns '$status' on EOF??";;
8961                 esac
8962                 val="$define"
8963                 if test "$status" = "$rd_nodata"; then
8964                         echo "WARNING: you can't distinguish between EOF and no data!"
8965                         val="$undef"
8966                 fi
8967         else
8968                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8969                 eagain=EAGAIN
8970         fi
8971         set d_eofnblk
8972         eval $setvar
8973         ;;
8974 *)
8975         echo "Using $hint value $eagain."
8976         echo "Your read() returns $rd_nodata when no data is present."
8977         case "$d_eofnblk" in
8978         "$define") echo "And you can see EOF because read() returns 0.";;
8979         "$undef") echo "But you can't see EOF status from read() returned value.";;
8980         *)
8981                 echo "(Assuming you can't see EOF status from read anyway.)"
8982                 d_eofnblk=$undef
8983                 ;;
8984         esac
8985         ;;
8986 esac
8987 $rm -f try try.* .out core head.c mtry
8988
8989 : see if fchmod exists
8990 set fchmod d_fchmod
8991 eval $inlibc
8992
8993 : see if fchown exists
8994 set fchown d_fchown
8995 eval $inlibc
8996
8997 : see if this is an fcntl system
8998 set fcntl d_fcntl
8999 eval $inlibc
9000
9001 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9002 while $test $# -ge 2; do
9003         case "$1" in
9004         $define) echo "#include <$2>";;
9005         esac ;
9006     shift 2;
9007 done > try.c;
9008 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9009 set try;
9010 if eval $compile; then
9011         val="$define";
9012 else
9013         val="$undef";
9014 fi;
9015 set $varname;
9016 eval $setvar;
9017 $rm -f try.c try.o'
9018
9019 socketlib=''
9020 sockethdr=''
9021 : see whether socket exists
9022 echo " "
9023 $echo $n "Hmm... $c" >&4
9024 if set socket val -f d_socket; eval $csym; $val; then
9025         echo "Looks like you have Berkeley networking support." >&4
9026         d_socket="$define"
9027         if set setsockopt val -f; eval $csym; $val; then
9028                 d_oldsock="$undef"
9029         else
9030                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9031                 d_oldsock="$define"
9032         fi
9033 else
9034         if $contains socklib libc.list >/dev/null 2>&1; then
9035                 echo "Looks like you have Berkeley networking support." >&4
9036                 d_socket="$define"
9037                 : we will have to assume that it supports the 4.2 BSD interface
9038                 d_oldsock="$undef"
9039         else
9040                 echo "You don't have Berkeley networking in libc$_a..." >&4
9041                 if test "X$d_socket" = "X$define"; then
9042                    echo "...but you seem to believe that you have sockets." >&4
9043                 else
9044                         for net in net socket
9045                         do
9046                                 if test -f /usr/lib/lib$net$_a; then
9047                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9048                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9049                                         if $contains socket libc.list >/dev/null 2>&1; then
9050                                                 d_socket="$define"
9051                                                 socketlib="-l$net"
9052                                                 case "$net" in
9053                                                 net)
9054                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9055                                                         sockethdr="-I/usr/netinclude"
9056                                                         ;;
9057                                                 esac
9058                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9059                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9060                                                         d_oldsock="$undef"
9061                                                 else
9062                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9063                                                         d_oldsock="$define"
9064                                                 fi
9065                                                 break
9066                                         fi
9067                                 fi
9068                         done
9069                         if test "X$d_socket" != "X$define"; then
9070                            echo "or anywhere else I see." >&4
9071                            d_socket="$undef"
9072                            d_oldsock="$undef"
9073                         fi
9074                 fi
9075         fi
9076 fi
9077
9078 : see if socketpair exists
9079 set socketpair d_sockpair
9080 eval $inlibc
9081
9082
9083 echo " "
9084 echo "Checking the availability of certain socket constants..." >& 4
9085 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9086         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9087         $cat >try.c <<EOF
9088 #include <sys/types.h>
9089 #include <sys/socket.h>
9090 int main() {
9091     int i = $ENUM;
9092 }
9093 EOF
9094         val="$undef"
9095         set try; if eval $compile; then
9096                 val="$define"
9097         fi
9098         set d_${enum}; eval $setvar
9099         $rm -f try.c try
9100 done
9101
9102 : see if sys/select.h has to be included
9103 set sys/select.h i_sysselct
9104 eval $inhdr
9105
9106 : see if we should include time.h, sys/time.h, or both
9107 echo " "
9108 if test "X$timeincl" = X; then
9109         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9110         $echo $n "I'm now running the test program...$c"
9111         $cat >try.c <<'EOCP'
9112 #include <sys/types.h>
9113 #ifdef I_TIME
9114 #include <time.h>
9115 #endif
9116 #ifdef I_SYSTIME
9117 #ifdef SYSTIMEKERNEL
9118 #define KERNEL
9119 #endif
9120 #include <sys/time.h>
9121 #endif
9122 #ifdef I_SYSSELECT
9123 #include <sys/select.h>
9124 #endif
9125 int main()
9126 {
9127         struct tm foo;
9128 #ifdef S_TIMEVAL
9129         struct timeval bar;
9130 #endif
9131 #ifdef S_TIMEZONE
9132         struct timezone tzp;
9133 #endif
9134         if (foo.tm_sec == foo.tm_sec)
9135                 exit(0);
9136 #ifdef S_TIMEVAL
9137         if (bar.tv_sec == bar.tv_sec)
9138                 exit(0);
9139 #endif
9140         exit(1);
9141 }
9142 EOCP
9143         flags=''
9144         for s_timezone in '-DS_TIMEZONE' ''; do
9145         sysselect=''
9146         for s_timeval in '-DS_TIMEVAL' ''; do
9147         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9148         for i_time in '' '-DI_TIME'; do
9149         for i_systime in '-DI_SYSTIME' ''; do
9150                 case "$flags" in
9151                 '') $echo $n ".$c"
9152                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9153                         if eval $compile; then
9154                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9155                                 shift
9156                                 flags="$*"
9157                                 echo " "
9158                                 $echo $n "Succeeded with $flags$c"
9159                         fi
9160                         ;;
9161                 esac
9162         done
9163         done
9164         done
9165         done
9166         done
9167         timeincl=''
9168         echo " "
9169         case "$flags" in
9170         *SYSTIMEKERNEL*) i_systimek="$define"
9171                 timeincl=`./findhdr sys/time.h`
9172                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9173         *) i_systimek="$undef";;
9174         esac
9175         case "$flags" in
9176         *I_TIME*) i_time="$define"
9177                 timeincl=`./findhdr time.h`" $timeincl"
9178                 echo "We'll include <time.h>." >&4;;
9179         *) i_time="$undef";;
9180         esac
9181         case "$flags" in
9182         *I_SYSTIME*) i_systime="$define"
9183                 timeincl=`./findhdr sys/time.h`" $timeincl"
9184                 echo "We'll include <sys/time.h>." >&4;;
9185         *) i_systime="$undef";;
9186         esac
9187         $rm -f try.c try
9188 fi
9189
9190 : check for fd_set items
9191 $cat <<EOM
9192
9193 Checking to see how well your C compiler handles fd_set and friends ...
9194 EOM
9195 $cat >fd_set.c <<EOCP
9196 #$i_systime I_SYS_TIME
9197 #$i_sysselct I_SYS_SELECT
9198 #$d_socket HAS_SOCKET
9199 #include <sys/types.h>
9200 #ifdef HAS_SOCKET
9201 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9202 #endif
9203 #ifdef I_SYS_TIME
9204 #include <sys/time.h>
9205 #endif
9206 #ifdef I_SYS_SELECT
9207 #include <sys/select.h>
9208 #endif
9209 int main() {
9210         fd_set fds;
9211
9212 #ifdef TRYBITS
9213         if(fds.fds_bits);
9214 #endif
9215
9216 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9217         exit(0);
9218 #else
9219         exit(1);
9220 #endif
9221 }
9222 EOCP
9223 set fd_set -DTRYBITS
9224 if eval $compile; then
9225         d_fds_bits="$define"
9226         d_fd_set="$define"
9227         echo "Well, your system knows about the normal fd_set typedef..." >&4
9228         if ./fd_set; then
9229                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9230                 d_fd_macros="$define"
9231         else
9232                 $cat >&4 <<'EOM'
9233 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9234 EOM
9235                 d_fd_macros="$undef"
9236         fi
9237 else
9238         $cat <<'EOM'
9239 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9240 EOM
9241         set fd_set
9242         if eval $compile; then
9243                 d_fds_bits="$undef"
9244                 d_fd_set="$define"
9245                 echo "Well, your system has some sort of fd_set available..." >&4
9246                 if ./fd_set; then
9247                         echo "and you have the normal fd_set macros." >&4
9248                         d_fd_macros="$define"
9249                 else
9250                         $cat <<'EOM'
9251 but not the normal fd_set macros!  Gross!  More work for me...
9252 EOM
9253                         d_fd_macros="$undef"
9254                 fi
9255         else
9256         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9257                 d_fd_set="$undef"
9258                 d_fds_bits="$undef"
9259                 d_fd_macros="$undef"
9260         fi
9261 fi
9262 $rm -f fd_set*
9263
9264 : see if fgetpos exists
9265 set fgetpos d_fgetpos
9266 eval $inlibc
9267
9268 : see if flock exists
9269 set flock d_flock
9270 eval $inlibc
9271
9272 : see if fork exists
9273 set fork d_fork
9274 eval $inlibc
9275
9276 : see if pathconf exists
9277 set pathconf d_pathconf
9278 eval $inlibc
9279
9280 : see if fpathconf exists
9281 set fpathconf d_fpathconf
9282 eval $inlibc
9283
9284
9285 : check for fpos64_t
9286 echo " "
9287 echo "Checking to see if you have fpos64_t..." >&4
9288 $cat >try.c <<EOCP
9289 #include <stdio.h>
9290 int main() { fpos64_t x = 7; }
9291 EOCP
9292 set try
9293 if eval $compile; then
9294         val="$define"
9295         echo "You have fpos64_t."
9296 else
9297         val="$undef"
9298         echo "You do not have fpos64_t."
9299         case "$fpossize" in
9300         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9301         esac
9302 fi
9303 $rm -f try.* try
9304 set d_fpos64_t
9305 eval $setvar
9306
9307 : see if frexpl exists
9308 set frexpl d_frexpl
9309 eval $inlibc
9310
9311 hasstruct='varname=$1; struct=$2; shift; shift;
9312 while $test $# -ge 2; do
9313         case "$1" in
9314         $define) echo "#include <$2>";;
9315         esac ;
9316     shift 2;
9317 done > try.c;
9318 echo "int main () { struct $struct foo; }" >> try.c;
9319 set try;
9320 if eval $compile; then
9321         val="$define";
9322 else
9323         val="$undef";
9324 fi;
9325 set $varname;
9326 eval $setvar;
9327 $rm -f try.c try.o'
9328
9329 : see if this is a sys/param system
9330 set sys/param.h i_sysparam
9331 eval $inhdr
9332
9333 : see if this is a sys/mount.h system
9334 set sys/mount.h i_sysmount
9335 eval $inhdr
9336
9337 : see if sys/types.h has to be included
9338 set sys/types.h i_systypes
9339 eval $inhdr
9340
9341
9342 echo " "
9343 echo "Checking to see if your system supports struct fs_data..." >&4
9344 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9345 eval $hasstruct
9346 case "$d_fs_data_s" in
9347 "$define")      echo "Yes, it does."   ;;
9348 *)              echo "No, it doesn't." ;;
9349 esac
9350
9351 : see if fseeko exists
9352 set fseeko d_fseeko
9353 eval $inlibc
9354 case "$longsize" in
9355 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9356 esac
9357
9358 : see if fsetpos exists
9359 set fsetpos d_fsetpos
9360 eval $inlibc
9361
9362
9363 : see if fstatfs exists
9364 set fstatfs d_fstatfs
9365 eval $inlibc
9366
9367
9368 : see if statvfs exists
9369 set statvfs d_statvfs
9370 eval $inlibc
9371
9372 : see if fstatvfs exists
9373 set fstatvfs d_fstatvfs
9374 eval $inlibc
9375
9376
9377 : see if ftello exists
9378 set ftello d_ftello
9379 eval $inlibc
9380 case "$longsize" in
9381 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9382 esac
9383
9384 : see if getcwd exists
9385 set getcwd d_getcwd
9386 eval $inlibc
9387
9388 : see if getespwnam exists
9389 set getespwnam d_getespwnam
9390 eval $inlibc
9391
9392
9393 : see if getfsstat exists
9394 set getfsstat d_getfsstat
9395 eval $inlibc
9396
9397 : see if getgrent exists
9398 set getgrent d_getgrent
9399 eval $inlibc
9400
9401 : see if gethostbyaddr exists
9402 set gethostbyaddr d_gethbyaddr
9403 eval $inlibc
9404
9405 : see if gethostbyname exists
9406 set gethostbyname d_gethbyname
9407 eval $inlibc
9408
9409 : see if gethostent exists
9410 set gethostent d_gethent
9411 eval $inlibc
9412
9413 : see how we will look up host name
9414 echo " "
9415 call=''
9416 if set gethostname val -f d_gethname; eval $csym; $val; then
9417         echo 'gethostname() found.' >&4
9418         d_gethname="$define"
9419         call=gethostname
9420 fi
9421 if set uname val -f d_uname; eval $csym; $val; then
9422         if ./xenix; then
9423                 $cat <<'EOM'
9424 uname() was found, but you're running xenix, and older versions of xenix
9425 have a broken uname(). If you don't really know whether your xenix is old
9426 enough to have a broken system call, use the default answer.
9427
9428 EOM
9429                 dflt=y
9430                 case "$d_uname" in
9431                 "$define") dflt=n;;
9432                 esac
9433                 rp='Is your uname() broken?'
9434                 . ./myread
9435                 case "$ans" in
9436                 n*) d_uname="$define"; call=uname;;
9437                 esac
9438         else
9439                 echo 'uname() found.' >&4
9440                 d_uname="$define"
9441                 case "$call" in
9442                 '') call=uname ;;
9443                 esac
9444         fi
9445 fi
9446 case "$d_gethname" in
9447 '') d_gethname="$undef";;
9448 esac
9449 case "$d_uname" in
9450 '') d_uname="$undef";;
9451 esac
9452 case "$d_uname$d_gethname" in
9453 *define*)
9454         dflt=n
9455         cat <<EOM
9456  
9457 Every now and then someone has a $call() that lies about the hostname
9458 but can't be fixed for political or economic reasons.  If you wish, I can
9459 pretend $call() isn't there and maybe compute hostname at run-time
9460 thanks to the '$phostname' command.
9461
9462 EOM
9463         rp="Shall I ignore $call() from now on?"
9464         . ./myread
9465         case "$ans" in
9466         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9467         esac;;
9468 esac
9469 case "$phostname" in
9470 '') aphostname='';;
9471 *) case "$aphostname" in
9472         /*) ;;
9473         *) set X $phostname
9474                 shift
9475                 file=$1
9476                 shift
9477                 file=`./loc $file $file $pth`
9478                 aphostname=`echo $file $*`
9479                 ;;
9480         esac
9481         ;;
9482 esac
9483 case "$d_uname$d_gethname" in
9484 *define*) ;;
9485 *)
9486         case "$phostname" in
9487         '')
9488                 echo "There will be no way for $package to get your hostname." >&4;;
9489         *)
9490         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9491                 ;;
9492         esac;;
9493 esac
9494 case "$d_phostname" in
9495 '') d_phostname="$undef";;
9496 esac
9497
9498 : see if this is a netdb.h system
9499 set netdb.h i_netdb
9500 eval $inhdr
9501
9502 : see if prototypes for various gethostxxx netdb.h functions are available
9503 echo " "
9504 set d_gethostprotos gethostent $i_netdb netdb.h
9505 eval $hasproto
9506
9507 : see if getlogin exists
9508 set getlogin d_getlogin
9509 eval $inlibc
9510
9511 : see if getmnt exists
9512 set getmnt d_getmnt
9513 eval $inlibc
9514
9515 : see if getmntent exists
9516 set getmntent d_getmntent
9517 eval $inlibc
9518
9519 : see if getnetbyaddr exists
9520 set getnetbyaddr d_getnbyaddr
9521 eval $inlibc
9522
9523 : see if getnetbyname exists
9524 set getnetbyname d_getnbyname
9525 eval $inlibc
9526
9527 : see if getnetent exists
9528 set getnetent d_getnent
9529 eval $inlibc
9530
9531 : see if prototypes for various getnetxxx netdb.h functions are available
9532 echo " "
9533 set d_getnetprotos getnetent $i_netdb netdb.h
9534 eval $hasproto
9535
9536
9537 : see if getprotobyname exists
9538 set getprotobyname d_getpbyname
9539 eval $inlibc
9540
9541 : see if getprotobynumber exists
9542 set getprotobynumber d_getpbynumber
9543 eval $inlibc
9544
9545 : see if getprotoent exists
9546 set getprotoent d_getpent
9547 eval $inlibc
9548
9549 : see if getpgid exists
9550 set getpgid d_getpgid
9551 eval $inlibc
9552
9553 : see if getpgrp2 exists
9554 set getpgrp2 d_getpgrp2
9555 eval $inlibc
9556
9557 : see if getppid exists
9558 set getppid d_getppid
9559 eval $inlibc
9560
9561 : see if getpriority exists
9562 set getpriority d_getprior
9563 eval $inlibc
9564
9565 : see if prototypes for various getprotoxxx netdb.h functions are available
9566 echo " "
9567 set d_getprotoprotos getprotoent $i_netdb netdb.h
9568 eval $hasproto
9569
9570 : see if getprpwnam exists
9571 set getprpwnam d_getprpwnam
9572 eval $inlibc
9573
9574 : see if getpwent exists
9575 set getpwent d_getpwent
9576 eval $inlibc
9577
9578
9579 : see if getservbyname exists
9580 set getservbyname d_getsbyname
9581 eval $inlibc
9582
9583 : see if getservbyport exists
9584 set getservbyport d_getsbyport
9585 eval $inlibc
9586
9587 : see if getservent exists
9588 set getservent d_getsent
9589 eval $inlibc
9590
9591 : see if prototypes for various getservxxx netdb.h functions are available
9592 echo " "
9593 set d_getservprotos getservent $i_netdb netdb.h
9594 eval $hasproto
9595
9596 : see if getspnam exists
9597 set getspnam d_getspnam
9598 eval $inlibc
9599
9600 : see if gettimeofday or ftime exists
9601 set gettimeofday d_gettimeod
9602 eval $inlibc
9603 case "$d_gettimeod" in
9604 "$undef")
9605         set ftime d_ftime 
9606         eval $inlibc
9607         ;;
9608 *)
9609         val="$undef"; set d_ftime; eval $setvar
9610         ;;
9611 esac
9612 case "$d_gettimeod$d_ftime" in
9613 "$undef$undef")
9614         echo " "
9615         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9616         ;;
9617 esac
9618
9619 : see if this is an grp system
9620 set grp.h i_grp
9621 eval $inhdr
9622
9623 case "$i_grp" in
9624 $define)
9625         xxx=`./findhdr grp.h`
9626         $cppstdin $cppflags $cppminus < $xxx >$$.h
9627
9628         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9629                 val="$define"
9630         else
9631                 val="$undef"
9632         fi
9633         set d_grpasswd
9634         eval $setvar
9635
9636         $rm -f $$.h
9637         ;;
9638 *)
9639         val="$undef";
9640         set d_grpasswd; eval $setvar
9641         ;;
9642 esac
9643
9644 : see if hasmntopt exists
9645 set hasmntopt d_hasmntopt
9646 eval $inlibc
9647
9648 : see if this is a netinet/in.h or sys/in.h system
9649 set netinet/in.h i_niin sys/in.h i_sysin
9650 eval $inhdr
9651
9652 : see if arpa/inet.h has to be included
9653 set arpa/inet.h i_arpainet
9654 eval $inhdr
9655
9656 : see if htonl --and friends-- exists
9657 val=''
9658 set htonl val
9659 eval $inlibc
9660
9661 : Maybe they are macros.
9662 case "$val" in
9663 $undef)
9664         $cat >htonl.c <<EOM
9665 #include <stdio.h>
9666 #include <sys/types.h>
9667 #$i_niin I_NETINET_IN
9668 #$i_sysin I_SYS_IN
9669 #$i_arpainet I_ARPA_INET
9670 #ifdef I_NETINET_IN
9671 #include <netinet/in.h>
9672 #endif
9673 #ifdef I_SYS_IN
9674 #include <sys/in.h>
9675 #endif
9676 #ifdef I_ARPA_INET
9677 #include <arpa/inet.h>
9678 #endif
9679 #ifdef htonl
9680 printf("Defined as a macro.");
9681 #endif
9682 EOM
9683         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9684         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9685                 val="$define"
9686                 echo "But it seems to be defined as a macro." >&4
9687         fi
9688         $rm -f htonl.?
9689         ;;
9690 esac
9691 set d_htonl
9692 eval $setvar
9693
9694 : see if iconv exists
9695 set iconv d_iconv
9696 eval $inlibc
9697
9698 : index or strchr
9699 echo " "
9700 if set index val -f; eval $csym; $val; then
9701         if set strchr val -f d_strchr; eval $csym; $val; then
9702                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9703                         val="$define"
9704                         vali="$undef"
9705                         echo "strchr() found." >&4
9706                 else
9707                         val="$undef"
9708                         vali="$define"
9709                         echo "index() found." >&4
9710                 fi
9711         else
9712                 val="$undef"
9713                 vali="$define"
9714                 echo "index() found." >&4
9715         fi
9716 else
9717         if set strchr val -f d_strchr; eval $csym; $val; then
9718                 val="$define"
9719                 vali="$undef"
9720                 echo "strchr() found." >&4
9721         else
9722                 echo "No index() or strchr() found!" >&4
9723                 val="$undef"
9724                 vali="$undef"
9725         fi
9726 fi
9727 set d_strchr; eval $setvar
9728 val="$vali"
9729 set d_index; eval $setvar
9730
9731 : check whether inet_aton exists
9732 set inet_aton d_inetaton
9733 eval $inlibc
9734
9735 : see if inttypes.h is available
9736 : we want a real compile instead of Inhdr because some systems
9737 : have an inttypes.h which includes non-existent headers
9738 echo " "
9739 $cat >try.c <<EOCP
9740 #include <inttypes.h>
9741 int main() {
9742         static int32_t foo32 = 0x12345678;
9743 }
9744 EOCP
9745 set try
9746 if eval $compile; then
9747         echo "<inttypes.h> found." >&4
9748         val="$define"
9749 else
9750         echo "<inttypes.h> NOT found." >&4
9751         val="$undef"
9752 fi
9753 $rm -f try.c try
9754 set i_inttypes
9755 eval $setvar
9756
9757 : check for int64_t
9758 echo " "
9759 echo "Checking to see if you have int64_t..." >&4
9760 $cat >try.c <<EOCP
9761 #include <sys/types.h>
9762 #$i_inttypes I_INTTYPES
9763 #ifdef I_INTTYPES
9764 #include <inttypes.h>
9765 #endif
9766 int main() { int64_t x = 7; }
9767 EOCP
9768 set try
9769 if eval $compile; then
9770         val="$define"
9771         echo "You have int64_t."
9772 else
9773         val="$undef"
9774         echo "You do not have int64_t."
9775 fi
9776 $rm -f try try.*
9777 set d_int64_t
9778 eval $setvar
9779
9780 : Look for isascii
9781 echo " "
9782 $cat >isascii.c <<'EOCP'
9783 #include <stdio.h>
9784 #include <ctype.h>
9785 int main() {
9786         int c = 'A';
9787         if (isascii(c))
9788                 exit(0);
9789         else
9790                 exit(1);
9791 }
9792 EOCP
9793 set isascii
9794 if eval $compile; then
9795         echo "isascii() found." >&4
9796         val="$define"
9797 else
9798         echo "isascii() NOT found." >&4
9799         val="$undef"
9800 fi
9801 set d_isascii
9802 eval $setvar
9803 $rm -f isascii*
9804
9805 : see if isnan exists
9806 set isnan d_isnan
9807 eval $inlibc
9808
9809 : see if isnanl exists
9810 set isnanl d_isnanl
9811 eval $inlibc
9812
9813 : see if killpg exists
9814 set killpg d_killpg
9815 eval $inlibc
9816
9817 : see if lchown exists
9818 echo " "
9819 $cat > try.c <<'EOCP'
9820 /* System header to define __stub macros and hopefully few prototypes,
9821     which can conflict with char lchown(); below.  */
9822 #include <assert.h>
9823 /* Override any gcc2 internal prototype to avoid an error.  */
9824 /* We use char because int might match the return type of a gcc2
9825    builtin and then its argument prototype would still apply.  */
9826 char lchown();
9827 int main() {
9828     /*  The GNU C library defines this for functions which it implements
9829         to always fail with ENOSYS.  Some functions are actually named
9830         something starting with __ and the normal name is an alias.  */
9831 #if defined (__stub_lchown) || defined (__stub___lchown)
9832 choke me
9833 #else
9834 lchown();
9835 #endif
9836 ; return 0; }
9837 EOCP
9838 set try
9839 if eval $compile; then
9840     $echo "lchown() found." >&4
9841     val="$define"
9842 else
9843     $echo "lchown() NOT found." >&4
9844     val="$undef"
9845 fi
9846 set d_lchown
9847 eval $setvar
9848
9849 : See if number of significant digits in a double precision number is known
9850 echo " "
9851 $cat >ldbl_dig.c <<EOM
9852 #$i_limits I_LIMITS
9853 #$i_float I_FLOAT
9854 #ifdef I_LIMITS
9855 #include <limits.h>
9856 #endif
9857 #ifdef I_FLOAT
9858 #include <float.h>
9859 #endif
9860 #ifdef LDBL_DIG
9861 printf("Contains LDBL_DIG");
9862 #endif
9863 EOM
9864 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9865 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9866         echo "LDBL_DIG found." >&4
9867         val="$define"
9868 else
9869         echo "LDBL_DIG NOT found." >&4
9870         val="$undef"
9871 fi
9872 $rm -f ldbl_dig.?
9873 set d_ldbl_dig
9874 eval $setvar
9875
9876 : see if link exists
9877 set link d_link
9878 eval $inlibc
9879
9880 : see if localeconv exists
9881 set localeconv d_locconv
9882 eval $inlibc
9883
9884 : see if lockf exists
9885 set lockf d_lockf
9886 eval $inlibc
9887
9888 : check for long long
9889 echo " "
9890 echo "Checking to see if you have long long..." >&4
9891 echo 'int main() { long long x = 7; return 0; }' > try.c
9892 set try
9893 if eval $compile; then
9894         val="$define"
9895         echo "You have long long."
9896 else
9897         val="$undef"
9898         echo "You do not have long long."
9899 fi
9900 $rm try.*
9901 set d_longlong
9902 eval $setvar
9903
9904 : check for length of long long
9905 case "${d_longlong}${longlongsize}" in
9906 $define)
9907         echo " "
9908         echo "Checking to see how big your long longs are..." >&4
9909         $cat >try.c <<'EOCP'
9910 #include <stdio.h>
9911 int main()
9912 {
9913     printf("%d\n", (int)sizeof(long long));
9914     return(0);
9915 }
9916 EOCP
9917         set try
9918         if eval $compile_ok; then
9919                 longlongsize=`./try$exe_ext`
9920                 echo "Your long longs are $longlongsize bytes long."
9921         else
9922                 dflt='8'
9923                 echo " "
9924                 echo "(I can't seem to compile the test program.  Guessing...)"
9925                 rp="What is the size of a long long (in bytes)?"
9926                 . ./myread
9927                 longlongsize="$ans"
9928         fi
9929         if $test "X$longsize" = "X$longlongsize"; then
9930                 echo "(That isn't any different from an ordinary long.)"
9931         fi      
9932         ;;
9933 esac
9934 $rm -f try.* try
9935
9936 : see if prototype for lseek is available
9937 echo " "
9938 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9939 eval $hasproto
9940
9941 : see if lstat exists
9942 set lstat d_lstat
9943 eval $inlibc
9944
9945 : see if madvise exists
9946 set madvise d_madvise
9947 eval $inlibc
9948
9949 : see if mblen exists
9950 set mblen d_mblen
9951 eval $inlibc
9952
9953 : see if mbstowcs exists
9954 set mbstowcs d_mbstowcs
9955 eval $inlibc
9956
9957 : see if mbtowc exists
9958 set mbtowc d_mbtowc
9959 eval $inlibc
9960
9961 : see if memchr exists
9962 set memchr d_memchr
9963 eval $inlibc
9964
9965 : see if memcmp exists
9966 set memcmp d_memcmp
9967 eval $inlibc
9968
9969 : see if memcpy exists
9970 set memcpy d_memcpy
9971 eval $inlibc
9972
9973 : see if memmove exists
9974 set memmove d_memmove
9975 eval $inlibc
9976
9977 : see if memset exists
9978 set memset d_memset
9979 eval $inlibc
9980
9981 : see if mkdir exists
9982 set mkdir d_mkdir
9983 eval $inlibc
9984
9985 : see if mkdtemp exists
9986 set mkdtemp d_mkdtemp
9987 eval $inlibc
9988
9989 : see if mkfifo exists
9990 set mkfifo d_mkfifo
9991 eval $inlibc
9992
9993 : see if mkstemp exists
9994 set mkstemp d_mkstemp
9995 eval $inlibc
9996
9997 : see if mkstemps exists
9998 set mkstemps d_mkstemps
9999 eval $inlibc
10000
10001 : see if mktime exists
10002 set mktime d_mktime
10003 eval $inlibc
10004
10005 : see if this is a sys/mman.h system
10006 set sys/mman.h i_sysmman
10007 eval $inhdr
10008
10009 : see if mmap exists
10010 set mmap d_mmap
10011 eval $inlibc
10012 : see what shmat returns
10013 : default to something harmless
10014 mmaptype='void *'
10015 case "$i_sysmman$d_mmap" in
10016 "$define$define")
10017         $cat >mmap.c <<'END'
10018 #include <sys/mman.h>
10019 void *mmap();
10020 END
10021         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10022                 mmaptype='void *'
10023         else
10024                 mmaptype='caddr_t'
10025         fi
10026         echo "and it returns ($mmaptype)." >&4
10027         ;;
10028 esac
10029
10030
10031
10032 : see if modfl exists
10033 set modfl d_modfl
10034 eval $inlibc
10035
10036 : see if mprotect exists
10037 set mprotect d_mprotect
10038 eval $inlibc
10039
10040 : see if msgctl exists
10041 set msgctl d_msgctl
10042 eval $inlibc
10043
10044 : see if msgget exists
10045 set msgget d_msgget
10046 eval $inlibc
10047
10048 : see if msgsnd exists
10049 set msgsnd d_msgsnd
10050 eval $inlibc
10051
10052 : see if msgrcv exists
10053 set msgrcv d_msgrcv
10054 eval $inlibc
10055
10056 : see how much of the 'msg*(2)' library is present.
10057 h_msg=true
10058 echo " "
10059 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10060 *"$undef"*) h_msg=false;;
10061 esac
10062 case "$osname" in
10063 freebsd)
10064     case "`ipcs 2>&1`" in
10065     "SVID messages"*"not configured"*)
10066         echo "Your $osname does not have the msg*(2) configured." >&4
10067         h_msg=false
10068         val="$undef"
10069         set msgctl d_msgctl
10070         eval $setvar
10071         set msgget d_msgget
10072         eval $setvar
10073         set msgsnd d_msgsnd
10074         eval $setvar
10075         set msgrcv d_msgrcv
10076         eval $setvar
10077         ;;
10078     esac
10079     ;;
10080 esac
10081 : we could also check for sys/ipc.h ...
10082 if $h_msg && $test `./findhdr sys/msg.h`; then
10083         echo "You have the full msg*(2) library." >&4
10084         val="$define"
10085 else
10086         echo "You don't have the full msg*(2) library." >&4
10087         val="$undef"
10088 fi
10089 set d_msg
10090 eval $setvar
10091
10092 : see if msync exists
10093 set msync d_msync
10094 eval $inlibc
10095
10096 : see if munmap exists
10097 set munmap d_munmap
10098 eval $inlibc
10099
10100 : see if nice exists
10101 set nice d_nice
10102 eval $inlibc
10103
10104
10105 echo " "
10106 echo "Checking which 64-bit integer type we could use..." >&4
10107
10108 case "$intsize" in
10109 8) val=int
10110    set quadtype
10111    eval $setvar
10112    val='"unsigned int"'
10113    set uquadtype
10114    eval $setvar
10115    quadkind=1
10116    ;;
10117 *) case "$longsize" in
10118    8) val=long
10119       set quadtype
10120       eval $setvar
10121       val='"unsigned long"'
10122       set uquadtype
10123       eval $setvar
10124       quadkind=2
10125       ;;
10126    *) case "$d_longlong:$longlongsize" in
10127       define:8)
10128         val='"long long"'
10129         set quadtype
10130         eval $setvar
10131         val='"unsigned long long"'
10132         set uquadtype
10133         eval $setvar
10134         quadkind=3
10135         ;;
10136       *) case "$d_int64_t" in
10137          define)
10138            val=int64_t
10139            set quadtype
10140            eval $setvar
10141            val=uint64_t
10142            set uquadtype
10143            eval $setvar
10144            quadkind=4
10145            ;;
10146          esac
10147          ;;
10148       esac
10149       ;;
10150    esac
10151    ;;
10152 esac
10153
10154 case "$quadtype" in
10155 '')     echo "Alas, no 64-bit integer types in sight." >&4
10156         d_quad="$undef"
10157         ;;
10158 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10159             verb="will"
10160         else
10161             verb="could"
10162         fi
10163         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10164         d_quad="$define"
10165         ;;
10166 esac
10167
10168 : check for length of character
10169 echo " "
10170 case "$charsize" in
10171 '')
10172         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10173         $cat >try.c <<'EOCP'
10174 #include <stdio.h>
10175 int main()
10176 {
10177     printf("%d\n", (int)sizeof(char));
10178     exit(0);
10179 }
10180 EOCP
10181         set try
10182         if eval $compile_ok; then
10183                 dflt=`./try`
10184         else
10185                 dflt='1'
10186                 echo "(I can't seem to compile the test program.  Guessing...)"
10187         fi
10188         ;;
10189 *)
10190         dflt="$charsize"
10191         ;;
10192 esac
10193 rp="What is the size of a character (in bytes)?"
10194 . ./myread
10195 charsize="$ans"
10196 $rm -f try.c try
10197
10198
10199 echo " "
10200 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10201
10202 case "$use64bitint:$d_quad:$quadtype" in
10203 define:define:?*)
10204         ivtype="$quadtype"
10205         uvtype="$uquadtype"
10206         ivsize=8
10207         uvsize=8
10208         ;;
10209 *)      ivtype="long"
10210         uvtype="unsigned long"
10211         ivsize=$longsize
10212         uvsize=$longsize
10213         ;;
10214 esac
10215
10216 case "$uselongdouble:$d_longdbl" in
10217 define:define)
10218         nvtype="long double"
10219         nvsize=$longdblsize
10220         ;;
10221 *)      nvtype=double
10222         nvsize=$doublesize
10223         ;;
10224 esac
10225
10226 $echo "(IV will be "$ivtype", $ivsize bytes)"
10227 $echo "(UV will be "$uvtype", $uvsize bytes)"
10228 $echo "(NV will be "$nvtype", $nvsize bytes)"
10229
10230 $cat >try.c <<EOCP
10231 #$i_inttypes I_INTTYPES
10232 #ifdef I_INTTYPES
10233 #include <inttypes.h>
10234 #endif
10235 #include <stdio.h>
10236 int main() {
10237 #ifdef INT8
10238    int8_t i =  INT8_MAX;
10239   uint8_t u = UINT8_MAX;
10240   printf("int8_t\n");
10241 #endif
10242 #ifdef INT16
10243    int16_t i =  INT16_MAX;
10244   uint16_t i = UINT16_MAX;
10245   printf("int16_t\n");
10246 #endif
10247 #ifdef INT32
10248    int32_t i =  INT32_MAX;
10249   uint32_t u = UINT32_MAX;
10250   printf("int32_t\n");
10251 #endif
10252 }
10253 EOCP
10254
10255 case "$i8type" in
10256 '')     case "$charsize" in
10257         1)      i8type=char
10258                 u8type="unsigned char"
10259                 i8size=$charsize
10260                 u8size=$charsize
10261                 ;;
10262         esac
10263         ;;
10264 esac
10265 case "$i8type" in
10266 '')     set try -DINT8
10267         if eval $compile; then
10268                 case "`./try$exe_ext`" in
10269                 int8_t) i8type=int8_t
10270                         u8type=uint8_t
10271                         i8size=1
10272                         u8size=1
10273                         ;;
10274                 esac
10275         fi
10276         ;;
10277 esac
10278 case "$i8type" in
10279 '')     if $test $charsize -ge 1; then
10280                 i8type=char
10281                 u8type="unsigned char"
10282                 i8size=$charsize
10283                 u8size=$charsize
10284         fi
10285         ;;
10286 esac
10287
10288 case "$i16type" in
10289 '')     case "$shortsize" in
10290         2)      i16type=short
10291                 u16type="unsigned short"
10292                 i16size=$shortsize
10293                 u16size=$shortsize
10294                 ;;
10295         esac
10296         ;;
10297 esac
10298 case "$i16type" in
10299 '')     set try -DINT16
10300         if eval $compile; then
10301                 case "`./try$exe_ext`" in
10302                 int16_t)
10303                         i16type=int16_t
10304                         u16type=uint16_t
10305                         i16size=2
10306                         u16size=2
10307                         ;;
10308                 esac
10309         fi
10310         ;;
10311 esac
10312 case "$i16type" in
10313 '')     if $test $shortsize -ge 2; then
10314                 i16type=short
10315                 u16type="unsigned short"
10316                 i16size=$shortsize
10317                 u16size=$shortsize
10318         fi
10319         ;;
10320 esac
10321
10322 case "$i32type" in
10323 '')     case "$longsize" in
10324         4)      i32type=long
10325                 u32type="unsigned long"
10326                 i32size=$longsize
10327                 u32size=$longsize
10328                 ;;
10329         *)      case "$intsize" in
10330                 4)      i32type=int
10331                         u32type="unsigned int"
10332                         i32size=$intsize
10333                         u32size=$intsize
10334                         ;;
10335                 esac
10336                 ;;
10337         esac
10338         ;;
10339 esac
10340 case "$i32type" in
10341 '')     set try -DINT32
10342         if eval $compile; then
10343                 case "`./try$exe_ext`" in
10344                 int32_t)
10345                         i32type=int32_t
10346                         u32type=uint32_t
10347                         i32size=4
10348                         u32size=4
10349                         ;;
10350                 esac
10351         fi
10352         ;;
10353 esac
10354 case "$i32type" in
10355 '')     if $test $intsize -ge 4; then
10356                 i32type=int
10357                 u32type="unsigned int"
10358                 i32size=$intsize
10359                 u32size=$intsize
10360         fi
10361         ;;
10362 esac
10363
10364 case "$i64type" in
10365 '')     case "$d_quad:$quadtype" in
10366         define:?*)
10367                 i64type="$quadtype"
10368                 u64type="$uquadtype"
10369                 i64size=8
10370                 u64size=8
10371                 ;;
10372         esac
10373         ;;
10374 esac
10375
10376 $echo "Checking whether your NVs can preserve your UVs..." >&4
10377 $cat <<EOP >try.c
10378 #include <stdio.h>
10379 int main() {
10380     $uvtype k = ($uvtype)~0, l;
10381     $nvtype d;
10382     l = k;
10383     d = ($nvtype)l;
10384     l = ($uvtype)d;
10385     if (l == k)
10386        printf("preserve\n");
10387     exit(0);
10388 }
10389 EOP
10390 set try
10391 if eval $compile; then
10392         case "`./try$exe_ext`" in
10393         preserve) d_nv_preserves_uv="$define" ;;
10394         esac
10395 fi      
10396 case "$d_nv_preserves_uv" in
10397 $define) $echo "Yes, they can."  2>&1 ;;
10398 *)       $echo "No, they can't." 2>&1
10399          d_nv_preserves_uv="$undef"
10400          ;;
10401 esac
10402
10403 $rm -f try.* try
10404
10405 case "$d_nv_preserves_uv" in
10406 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10407 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10408         $cat <<EOP >try.c
10409 #include <stdio.h>
10410 int main() {
10411     $uvtype u = 0;
10412     int     n = 8 * $uvsize;
10413     int     i;
10414     for (i = 0; i < n; i++) {
10415       u = u << 1 | ($uvtype)1;
10416       if (($uvtype)($nvtype)u != u)
10417         break;
10418     }
10419     printf("%d\n", i);
10420     exit(0);
10421 }
10422 EOP
10423         set try
10424         if eval $compile; then
10425                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10426         fi
10427         case "$d_nv_preserves_uv_bits" in
10428         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10429         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10430                 d_nv_preserves_uv_bits="$undef"
10431                 ;;
10432         esac
10433         $rm -f try.* try
10434         ;;
10435 esac
10436
10437
10438 : check for off64_t
10439 echo " "
10440 echo "Checking to see if you have off64_t..." >&4
10441 $cat >try.c <<EOCP
10442 #include <sys/types.h>
10443 #include <unistd.h>
10444 int main() { off64_t x = 7; }
10445 EOCP
10446 set try
10447 if eval $compile; then
10448         val="$define"
10449         echo "You have off64_t."
10450 else
10451         val="$undef"
10452         echo "You do not have off64_t."
10453         case "$lseeksize" in
10454         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10455         esac
10456 fi
10457 $rm -f try.* try
10458 set d_off64_t
10459 eval $setvar
10460
10461 : see if POSIX threads are available
10462 set pthread.h i_pthread
10463 eval $inhdr
10464
10465
10466
10467
10468 : how to create joinable pthreads
10469 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10470         echo " "
10471         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10472         $cat >try.c <<'EOCP'
10473 #include <pthread.h>
10474 int main() {
10475     int detachstate = JOINABLE;
10476 }
10477 EOCP
10478         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10479         if eval $compile; then
10480                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10481                 val="$undef" # Yes, undef.
10482                 set d_old_pthread_create_joinable
10483                 eval $setvar
10484                 val=""
10485                 set old_pthread_create_joinable
10486                 eval $setvar
10487         else
10488                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10489                 if eval $compile; then
10490                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10491                         val="$define"
10492                         set d_old_pthread_create_joinable
10493                         eval $setvar
10494                         val=PTHREAD_CREATE_UNDETACHED
10495                         set old_pthread_create_joinable
10496                         eval $setvar
10497                 else            
10498                         set try -DJOINABLE=__UNDETACHED
10499                         if eval $compile; then
10500                                 echo "You seem to use __UNDETACHED." >&4
10501                                 val="$define"
10502                                 set d_old_pthread_create_joinable
10503                                 eval $setvar
10504                                 val=__UNDETACHED
10505                                 set old_pthread_create_joinable
10506                                 eval $setvar
10507                         else
10508                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10509                                 val="$define"
10510                                 set d_old_pthread_create_joinable
10511                                 eval $setvar
10512                                 val=0
10513                                 set old_pthread_create_joinable
10514                                 eval $setvar
10515                         fi
10516                 fi
10517         fi
10518         $rm -f try try.*
10519 else
10520     d_old_pthread_create_joinable="$undef"
10521     old_pthread_create_joinable=""
10522 fi
10523
10524 : see if pause exists
10525 set pause d_pause
10526 eval $inlibc
10527
10528 : see if pipe exists
10529 set pipe d_pipe
10530 eval $inlibc
10531
10532 : see if poll exists
10533 set poll d_poll
10534 eval $inlibc
10535
10536
10537 : see whether the various POSIXish _yields exist
10538 $cat >try.c <<EOP
10539 #include <pthread.h>
10540 #include <stdio.h>
10541 int main() {
10542 #ifdef SCHED_YIELD
10543         sched_yield();
10544 #else
10545 #ifdef PTHREAD_YIELD
10546         pthread_yield();
10547 #else
10548 #ifdef PTHREAD_YIELD_NULL
10549         pthread_yield(NULL);
10550 #endif
10551 #endif
10552 #endif
10553 }
10554 EOP
10555 : see if sched_yield exists
10556 set try -DSCHED_YIELD
10557 if eval $compile; then
10558     val="$define"
10559     sched_yield='sched_yield()'
10560 else
10561     val="$undef"
10562 fi
10563 case "$usethreads" in
10564 $define)
10565         case "$val" in
10566         $define) echo 'sched_yield() found.' >&4        ;;
10567         *)       echo 'sched_yield() NOT found.' >&4    ;;
10568         esac
10569 esac
10570 set d_sched_yield
10571 eval $setvar
10572
10573 : see if pthread_yield exists
10574 set try -DPTHREAD_YIELD
10575 if eval $compile; then
10576     val="$define"
10577     case "$sched_yield" in
10578     '') sched_yield='pthread_yield()' ;;
10579     esac
10580 else
10581     set try -DPTHREAD_YIELD_NULL
10582     if eval $compile; then
10583         val="$define"
10584         case "$sched_yield" in
10585         '') sched_yield='pthread_yield(NULL)' ;;
10586         esac
10587     else
10588         val="$undef"
10589     fi
10590 fi
10591 case "$usethreads" in
10592 $define)
10593         case "$val" in
10594         $define) echo 'pthread_yield() found.' >&4      ;;
10595         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10596         esac
10597         ;;
10598 esac
10599 set d_pthread_yield
10600 eval $setvar
10601
10602 case "$sched_yield" in
10603 '') sched_yield=undef ;;
10604 esac
10605
10606 $rm -f try try.*
10607
10608 : see if this is a pwd.h system
10609 set pwd.h i_pwd
10610 eval $inhdr
10611
10612 case "$i_pwd" in
10613 $define)
10614         xxx=`./findhdr pwd.h`
10615         $cppstdin $cppflags $cppminus < $xxx >$$.h
10616
10617         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10618                 val="$define"
10619         else
10620                 val="$undef"
10621         fi
10622         set d_pwquota
10623         eval $setvar
10624
10625         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10626                 val="$define"
10627         else
10628                 val="$undef"
10629         fi
10630         set d_pwage
10631         eval $setvar
10632
10633         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10634                 val="$define"
10635         else
10636                 val="$undef"
10637         fi
10638         set d_pwchange
10639         eval $setvar
10640
10641         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10642                 val="$define"
10643         else
10644                 val="$undef"
10645         fi
10646         set d_pwclass
10647         eval $setvar
10648
10649         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10650                 val="$define"
10651         else
10652                 val="$undef"
10653         fi
10654         set d_pwexpire
10655         eval $setvar
10656
10657         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10658                 val="$define"
10659         else
10660                 val="$undef"
10661         fi
10662         set d_pwcomment
10663         eval $setvar
10664
10665         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10666                 val="$define"
10667         else
10668                 val="$undef"
10669         fi
10670         set d_pwgecos
10671         eval $setvar
10672
10673         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10674                 val="$define"
10675         else
10676                 val="$undef"
10677         fi
10678         set d_pwpasswd
10679         eval $setvar
10680
10681         $rm -f $$.h
10682         ;;
10683 *)
10684         val="$undef"; 
10685         set d_pwquota; eval $setvar
10686         set d_pwage; eval $setvar
10687         set d_pwchange; eval $setvar
10688         set d_pwclass; eval $setvar
10689         set d_pwexpire; eval $setvar
10690         set d_pwcomment; eval $setvar
10691         set d_pwgecos; eval $setvar
10692         set d_pwpasswd; eval $setvar
10693         ;;
10694 esac
10695
10696 : see if readdir and friends exist
10697 set readdir d_readdir
10698 eval $inlibc
10699 set seekdir d_seekdir
10700 eval $inlibc
10701 set telldir d_telldir
10702 eval $inlibc
10703 set rewinddir d_rewinddir
10704 eval $inlibc
10705
10706 : see if readlink exists
10707 set readlink d_readlink
10708 eval $inlibc
10709
10710 : see if rename exists
10711 set rename d_rename
10712 eval $inlibc
10713
10714 : see if rmdir exists
10715 set rmdir d_rmdir
10716 eval $inlibc
10717
10718 : see if memory.h is available.
10719 val=''
10720 set memory.h val
10721 eval $inhdr
10722
10723 : See if it conflicts with string.h
10724 case "$val" in
10725 $define)
10726         case "$strings" in
10727         '') ;;
10728         *)
10729                 $cppstdin $cppflags $cppminus < $strings > mem.h
10730                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10731                         echo " "
10732                         echo "We won't be including <memory.h>."
10733                         val="$undef"
10734                 fi
10735                 $rm -f mem.h
10736                 ;;
10737         esac
10738 esac
10739 set i_memory
10740 eval $setvar
10741
10742 : can bcopy handle overlapping blocks?
10743 val="$undef"
10744 case "$d_bcopy" in
10745 "$define")
10746         echo " "
10747         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10748         $cat >try.c <<EOCP
10749 #$i_memory I_MEMORY
10750 #$i_stdlib I_STDLIB
10751 #$i_string I_STRING
10752 #$i_unistd I_UNISTD
10753 EOCP
10754         $cat >>try.c <<'EOCP'
10755 #include <stdio.h>
10756 #ifdef I_MEMORY
10757 #  include <memory.h>
10758 #endif
10759 #ifdef I_STDLIB
10760 #  include <stdlib.h>
10761 #endif
10762 #ifdef I_STRING
10763 #  include <string.h>
10764 #else
10765 #  include <strings.h>
10766 #endif
10767 #ifdef I_UNISTD
10768 #  include <unistd.h>  /* Needed for NetBSD */
10769 #endif
10770 int main()
10771 {
10772 char buf[128], abc[128];
10773 char *b;
10774 int len;
10775 int off;
10776 int align;
10777
10778 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10779
10780 for (align = 7; align >= 0; align--) {
10781         for (len = 36; len; len--) {
10782                 b = buf+align;
10783                 bcopy(abc, b, len);
10784                 for (off = 1; off <= len; off++) {
10785                         bcopy(b, b+off, len);
10786                         bcopy(b+off, b, len);
10787                         if (bcmp(b, abc, len))
10788                                 exit(1);
10789                 }
10790         }
10791 }
10792 exit(0);
10793 }
10794 EOCP
10795         set try
10796         if eval $compile_ok; then
10797                 if ./try 2>/dev/null; then
10798                         echo "Yes, it can."
10799                         val="$define"
10800                 else
10801                         echo "It can't, sorry."
10802                         case "$d_memmove" in
10803                         "$define") echo "But that's Ok since you have memmove()." ;;
10804                         esac
10805                 fi
10806         else
10807                 echo "(I can't compile the test program, so we'll assume not...)"
10808                 case "$d_memmove" in
10809                 "$define") echo "But that's Ok since you have memmove()." ;;
10810                 esac
10811         fi
10812         ;;
10813 esac
10814 $rm -f try.* try core
10815 set d_safebcpy
10816 eval $setvar
10817
10818 : can memcpy handle overlapping blocks?
10819 val="$undef"
10820 case "$d_memcpy" in
10821 "$define")
10822         echo " "
10823         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10824         $cat >try.c <<EOCP
10825 #$i_memory I_MEMORY
10826 #$i_stdlib I_STDLIB
10827 #$i_string I_STRING
10828 #$i_unistd I_UNISTD
10829 EOCP
10830         $cat >>try.c <<'EOCP'
10831 #include <stdio.h>
10832 #ifdef I_MEMORY
10833 #  include <memory.h>
10834 #endif
10835 #ifdef I_STDLIB
10836 #  include <stdlib.h>
10837 #endif
10838 #ifdef I_STRING
10839 #  include <string.h>
10840 #else
10841 #  include <strings.h>
10842 #endif
10843 #ifdef I_UNISTD
10844 #  include <unistd.h>  /* Needed for NetBSD */
10845 #endif
10846 int main()
10847 {
10848 char buf[128], abc[128];
10849 char *b;
10850 int len;
10851 int off;
10852 int align;
10853
10854 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10855    try to store the string in read-only memory. */
10856 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10857
10858 for (align = 7; align >= 0; align--) {
10859         for (len = 36; len; len--) {
10860                 b = buf+align;
10861                 memcpy(b, abc, len);
10862                 for (off = 1; off <= len; off++) {
10863                         memcpy(b+off, b, len);
10864                         memcpy(b, b+off, len);
10865                         if (memcmp(b, abc, len))
10866                                 exit(1);
10867                 }
10868         }
10869 }
10870 exit(0);
10871 }
10872 EOCP
10873         set try
10874         if eval $compile_ok; then
10875                 if ./try 2>/dev/null; then
10876                         echo "Yes, it can."
10877                         val="$define"
10878                 else
10879                         echo "It can't, sorry."
10880                         case "$d_memmove" in
10881                         "$define") echo "But that's Ok since you have memmove()." ;;
10882                         esac
10883                 fi
10884         else
10885                 echo "(I can't compile the test program, so we'll assume not...)"
10886                 case "$d_memmove" in
10887                 "$define") echo "But that's Ok since you have memmove()." ;;
10888                 esac
10889         fi
10890         ;;
10891 esac
10892 $rm -f try.* try core
10893 set d_safemcpy
10894 eval $setvar
10895
10896 : can memcmp be trusted to compare relative magnitude?
10897 val="$undef"
10898 case "$d_memcmp" in
10899 "$define")
10900         echo " "
10901         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10902         $cat >try.c <<EOCP
10903 #$i_memory I_MEMORY
10904 #$i_stdlib I_STDLIB
10905 #$i_string I_STRING
10906 #$i_unistd I_UNISTD
10907 EOCP
10908         $cat >>try.c <<'EOCP'
10909 #include <stdio.h>
10910 #ifdef I_MEMORY
10911 #  include <memory.h>
10912 #endif
10913 #ifdef I_STDLIB
10914 #  include <stdlib.h>
10915 #endif
10916 #ifdef I_STRING
10917 #  include <string.h>
10918 #else
10919 #  include <strings.h>
10920 #endif
10921 #ifdef I_UNISTD
10922 #  include <unistd.h>  /* Needed for NetBSD */
10923 #endif
10924 int main()
10925 {
10926 char a = -1;
10927 char b = 0;
10928 if ((a < b) && memcmp(&a, &b, 1) < 0)
10929         exit(1);
10930 exit(0);
10931 }
10932 EOCP
10933         set try
10934         if eval $compile_ok; then
10935                 if ./try 2>/dev/null; then
10936                         echo "Yes, it can."
10937                         val="$define"
10938                 else
10939                         echo "No, it can't (it uses signed chars)."
10940                 fi
10941         else
10942                 echo "(I can't compile the test program, so we'll assume not...)"
10943         fi
10944         ;;
10945 esac
10946 $rm -f try.* try core
10947 set d_sanemcmp
10948 eval $setvar
10949
10950 : see if select exists
10951 set select d_select
10952 eval $inlibc
10953
10954 : see if semctl exists
10955 set semctl d_semctl
10956 eval $inlibc
10957
10958 : see if semget exists
10959 set semget d_semget
10960 eval $inlibc
10961
10962 : see if semop exists
10963 set semop d_semop
10964 eval $inlibc
10965
10966 : see how much of the 'sem*(2)' library is present.
10967 h_sem=true
10968 echo " "
10969 case "$d_semctl$d_semget$d_semop" in
10970 *"$undef"*) h_sem=false;;
10971 esac
10972 case "$osname" in
10973 freebsd)
10974     case "`ipcs 2>&1`" in
10975     "SVID messages"*"not configured"*)
10976         echo "Your $osname does not have the sem*(2) configured." >&4
10977         h_sem=false
10978         val="$undef"
10979         set semctl d_semctl
10980         eval $setvar
10981         set semget d_semget
10982         eval $setvar
10983         set semop d_semop
10984         eval $setvar
10985         ;;
10986     esac
10987     ;;
10988 esac
10989 : we could also check for sys/ipc.h ...
10990 if $h_sem && $test `./findhdr sys/sem.h`; then
10991         echo "You have the full sem*(2) library." >&4
10992         val="$define"
10993 else
10994         echo "You don't have the full sem*(2) library." >&4
10995         val="$undef"
10996 fi
10997 set d_sem
10998 eval $setvar
10999
11000 : see whether sys/sem.h defines union semun
11001 echo " "
11002 $cat > try.c <<'END'
11003 #include <sys/types.h>
11004 #include <sys/ipc.h>
11005 #include <sys/sem.h>
11006 int main () { union semun semun; semun.buf = 0; }
11007 END
11008 set try
11009 if eval $compile; then
11010     echo "You have union semun in <sys/sem.h>." >&4
11011     val="$define"
11012 else
11013     echo "You do not have union semun in <sys/sem.h>." >&4
11014     val="$undef"
11015 fi
11016 $rm -f try try.c try.h
11017 set d_union_semun
11018 eval $setvar
11019
11020 : see how to do semctl IPC_STAT
11021 case "$d_sem" in
11022 $define)
11023     : see whether semctl IPC_STAT can use union semun
11024     echo " "
11025     $cat > try.h <<END
11026 #ifndef S_IRUSR
11027 #   ifdef S_IREAD
11028 #       define S_IRUSR S_IREAD
11029 #       define S_IWUSR S_IWRITE
11030 #       define S_IXUSR S_IEXEC
11031 #   else
11032 #       define S_IRUSR 0400
11033 #       define S_IWUSR 0200
11034 #       define S_IXUSR 0100
11035 #   endif
11036 #   define S_IRGRP (S_IRUSR>>3)
11037 #   define S_IWGRP (S_IWUSR>>3)
11038 #   define S_IXGRP (S_IXUSR>>3)
11039 #   define S_IROTH (S_IRUSR>>6)
11040 #   define S_IWOTH (S_IWUSR>>6)
11041 #   define S_IXOTH (S_IXUSR>>6)
11042 #endif
11043 #ifndef S_IRWXU
11044 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11045 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11046 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11047 #endif
11048 END
11049
11050     $cat > try.c <<END
11051 #include <sys/types.h>
11052 #include <sys/ipc.h>
11053 #include <sys/sem.h>
11054 #include <sys/stat.h>
11055 #include <stdio.h>
11056 #include <errno.h>
11057 #include "try.h"
11058 #ifndef errno
11059 extern int errno;
11060 #endif
11061 #$d_union_semun HAS_UNION_SEMUN
11062 int main() {
11063     union semun
11064 #ifndef HAS_UNION_SEMUN
11065     {
11066         int val;
11067         struct semid_ds *buf;
11068         unsigned short *array;
11069     }
11070 #endif
11071     arg;
11072     int sem, st;
11073
11074 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11075     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11076     if (sem > -1) {
11077         struct semid_ds argbuf;
11078         arg.buf = &argbuf;
11079 #       ifdef IPC_STAT
11080         st = semctl(sem, 0, IPC_STAT, arg);
11081         if (st == 0)
11082             printf("semun\n");
11083         else
11084 #       endif /* IPC_STAT */
11085             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11086 #       ifdef IPC_RMID
11087         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11088 #       endif /* IPC_RMID */
11089             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11090     } else
11091 #endif /* IPC_PRIVATE && ... */
11092         printf("semget failed: errno = %d\n", errno);
11093   return 0;
11094 }
11095 END
11096     val="$undef"
11097     set try
11098     if eval $compile; then
11099         xxx=`./try`
11100         case "$xxx" in
11101         semun) val="$define" ;;
11102         esac
11103     fi
11104     $rm -f try try.c
11105     set d_semctl_semun
11106     eval $setvar
11107     case "$d_semctl_semun" in
11108     $define)
11109         echo "You can use union semun for semctl IPC_STAT." >&4
11110         also='also'
11111         ;;
11112     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11113         also=''
11114         ;;
11115     esac
11116
11117     : see whether semctl IPC_STAT can use struct semid_ds pointer
11118     $cat > try.c <<'END'
11119 #include <sys/types.h>
11120 #include <sys/ipc.h>
11121 #include <sys/sem.h>
11122 #include <sys/stat.h>
11123 #include "try.h"
11124 #include <stdio.h>
11125 #include <errno.h>
11126 #ifndef errno
11127 extern int errno;
11128 #endif
11129 int main() {
11130     struct semid_ds arg;
11131     int sem, st;
11132
11133 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11134     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11135     if (sem > -1) {
11136 #       ifdef IPC_STAT
11137         st = semctl(sem, 0, IPC_STAT, &arg);
11138         if (st == 0)
11139             printf("semid_ds\n");
11140         else
11141 #       endif /* IPC_STAT */
11142             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11143 #       ifdef IPC_RMID
11144         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11145 #       endif /* IPC_RMID */
11146             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11147     } else
11148 #endif /* IPC_PRIVATE && ... */
11149         printf("semget failed: errno = %d\n", errno);
11150
11151     return 0;
11152 }
11153 END
11154     val="$undef"
11155     set try
11156     if eval $compile; then
11157         xxx=`./try`
11158         case "$xxx" in
11159         semid_ds) val="$define" ;;
11160         esac
11161     fi
11162     $rm -f try try.c
11163     set d_semctl_semid_ds
11164     eval $setvar
11165     case "$d_semctl_semid_ds" in
11166     $define)
11167         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11168         ;;
11169     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11170         ;;
11171     esac
11172     $rm -f try.h
11173     ;;
11174 *)  val="$undef"
11175
11176     # We do not have the full sem*(2) library, so assume we can not
11177     # use either.
11178
11179     set d_semctl_semun
11180     eval $setvar
11181
11182     set d_semctl_semid_ds
11183     eval $setvar
11184     ;;
11185 esac
11186
11187 : see if setegid exists
11188 set setegid d_setegid
11189 eval $inlibc
11190
11191 : see if seteuid exists
11192 set seteuid d_seteuid
11193 eval $inlibc
11194
11195 : see if setgrent exists
11196 set setgrent d_setgrent
11197 eval $inlibc
11198
11199 : see if sethostent exists
11200 set sethostent d_sethent
11201 eval $inlibc
11202
11203 : see if setlinebuf exists
11204 set setlinebuf d_setlinebuf
11205 eval $inlibc
11206
11207 : see if setlocale exists
11208 set setlocale d_setlocale
11209 eval $inlibc
11210
11211 : see if setnetent exists
11212 set setnetent d_setnent
11213 eval $inlibc
11214
11215 : see if setprotoent exists
11216 set setprotoent d_setpent
11217 eval $inlibc
11218
11219 : see if setpgid exists
11220 set setpgid d_setpgid
11221 eval $inlibc
11222
11223 : see if setpgrp2 exists
11224 set setpgrp2 d_setpgrp2
11225 eval $inlibc
11226
11227 : see if setpriority exists
11228 set setpriority d_setprior
11229 eval $inlibc
11230
11231 : see if setproctitle exists
11232 set setproctitle d_setproctitle
11233 eval $inlibc
11234
11235 : see if setpwent exists
11236 set setpwent d_setpwent
11237 eval $inlibc
11238
11239 : see if setregid exists
11240 set setregid d_setregid
11241 eval $inlibc
11242 set setresgid d_setresgid
11243 eval $inlibc
11244
11245 : see if setreuid exists
11246 set setreuid d_setreuid
11247 eval $inlibc
11248 set setresuid d_setresuid
11249 eval $inlibc
11250
11251 : see if setrgid exists
11252 set setrgid d_setrgid
11253 eval $inlibc
11254
11255 : see if setruid exists
11256 set setruid d_setruid
11257 eval $inlibc
11258
11259 : see if setservent exists
11260 set setservent d_setsent
11261 eval $inlibc
11262
11263 : see if setsid exists
11264 set setsid d_setsid
11265 eval $inlibc
11266
11267 : see if setvbuf exists
11268 set setvbuf d_setvbuf
11269 eval $inlibc
11270
11271 : see if sfio.h is available
11272 set sfio.h i_sfio
11273 eval $inhdr
11274
11275
11276 : see if sfio library is available
11277 case "$i_sfio" in
11278 $define)
11279         val=''
11280         set sfreserve val
11281         eval $inlibc
11282         ;;
11283 *)
11284         val="$undef"
11285         ;;
11286 esac
11287 : Ok, but do we want to use it.
11288 case "$val" in
11289 $define)
11290         case "$usesfio" in
11291         true|$define|[yY]*) dflt='y';;
11292         *) dflt='n';;
11293         esac
11294         echo "$package can use the sfio library, but it is experimental."
11295         case "$useperlio" in
11296         "$undef")
11297             echo "For sfio also the PerlIO abstraction layer is needed."
11298             echo "Earlier you said you wouldn't want that."
11299             ;;
11300         esac
11301         rp="You seem to have sfio available, do you want to try using it?"
11302         . ./myread
11303         case "$ans" in
11304         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11305                 useperlio="$define"
11306                 val="$define"
11307                 ;;
11308         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11309                 val="$undef"
11310                 : Remove sfio from list of libraries to use
11311                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11312                 shift
11313                 libs="$*"
11314                 echo "libs = $libs" >&4
11315                 ;;
11316         esac
11317         ;;
11318 *)      case "$usesfio" in
11319         true|$define|[yY]*)
11320                 echo "Sorry, cannot find sfio on this machine." >&4
11321                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11322                 val="$undef"
11323                 ;;
11324         esac
11325         ;;
11326 esac
11327 set d_sfio
11328 eval $setvar
11329 case "$d_sfio" in
11330 $define) usesfio='true';;
11331 *) usesfio='false';;
11332 esac
11333
11334 : see if shmctl exists
11335 set shmctl d_shmctl
11336 eval $inlibc
11337
11338 : see if shmget exists
11339 set shmget d_shmget
11340 eval $inlibc
11341
11342 : see if shmat exists
11343 set shmat d_shmat
11344 eval $inlibc
11345 : see what shmat returns
11346 case "$d_shmat" in
11347 "$define")
11348         $cat >shmat.c <<'END'
11349 #include <sys/shm.h>
11350 void *shmat();
11351 END
11352         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11353                 shmattype='void *'
11354         else
11355                 shmattype='char *'
11356         fi
11357         echo "and it returns ($shmattype)." >&4
11358         : see if a prototype for shmat is available
11359         xxx=`./findhdr sys/shm.h`
11360         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11361         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11362                 val="$define"
11363         else
11364                 val="$undef"
11365         fi
11366         $rm -f shmat.[co]
11367         ;;
11368 *)
11369         val="$undef"
11370         ;;
11371 esac
11372 set d_shmatprototype
11373 eval $setvar
11374
11375 : see if shmdt exists
11376 set shmdt d_shmdt
11377 eval $inlibc
11378
11379 : see how much of the 'shm*(2)' library is present.
11380 h_shm=true
11381 echo " "
11382 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11383 *"$undef"*) h_shm=false;;
11384 esac
11385 case "$osname" in
11386 freebsd)
11387     case "`ipcs 2>&1`" in
11388     "SVID shared memory"*"not configured"*)
11389         echo "Your $osname does not have the shm*(2) configured." >&4
11390         h_shm=false
11391         val="$undef"
11392         set shmctl d_shmctl
11393         evat $setvar
11394         set shmget d_shmget
11395         evat $setvar
11396         set shmat d_shmat
11397         evat $setvar
11398         set shmdt d_shmdt
11399         evat $setvar
11400         ;;
11401     esac
11402     ;;
11403 esac
11404 : we could also check for sys/ipc.h ...
11405 if $h_shm && $test `./findhdr sys/shm.h`; then
11406         echo "You have the full shm*(2) library." >&4
11407         val="$define"
11408 else
11409         echo "You don't have the full shm*(2) library." >&4
11410         val="$undef"
11411 fi
11412 set d_shm
11413 eval $setvar
11414
11415 echo " "
11416 : see if we have sigaction
11417 if set sigaction val -f d_sigaction; eval $csym; $val; then
11418         echo 'sigaction() found.' >&4
11419         $cat > try.c <<'EOP'
11420 #include <stdio.h>
11421 #include <sys/types.h>
11422 #include <signal.h>
11423 int main()
11424 {
11425     struct sigaction act, oact;
11426     act.sa_flags = 0;
11427     oact.sa_handler = 0;
11428     /* so that act and oact are used */
11429     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11430 }
11431 EOP
11432         set try
11433         if eval $compile_ok; then
11434                 val="$define"
11435         else
11436                 echo "But you don't seem to have a useable struct sigaction." >&4
11437                 val="$undef"
11438         fi
11439 else
11440         echo 'sigaction NOT found.' >&4
11441         val="$undef"
11442 fi
11443 set d_sigaction; eval $setvar
11444 $rm -f try try$_o try.c
11445
11446 : see if sigsetjmp exists
11447 echo " "
11448 case "$d_sigsetjmp" in
11449 '')
11450         $cat >try.c <<'EOP'
11451 #include <setjmp.h>
11452 sigjmp_buf env;
11453 int set = 1;
11454 int main()
11455 {
11456         if (sigsetjmp(env,1))
11457                 exit(set);
11458         set = 0;
11459         siglongjmp(env, 1);
11460         exit(1);
11461 }
11462 EOP
11463         set try
11464         if eval $compile; then
11465                 if ./try >/dev/null 2>&1; then
11466                         echo "POSIX sigsetjmp found." >&4
11467                         val="$define"
11468                 else
11469                         $cat >&4 <<EOM
11470 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11471 I'll ignore them.
11472 EOM
11473                         val="$undef"
11474                 fi
11475         else
11476                 echo "sigsetjmp not found." >&4
11477                 val="$undef"
11478         fi
11479         ;;
11480 *) val="$d_sigsetjmp"
11481         case "$d_sigsetjmp" in
11482         $define) echo "POSIX sigsetjmp found." >&4;;
11483         $undef) echo "sigsetjmp not found." >&4;;
11484         esac
11485         ;;
11486 esac
11487 set d_sigsetjmp
11488 eval $setvar
11489 $rm -f try.c try
11490
11491 : see if socks5_init exists
11492 set socks5_init d_socks5_init
11493 eval $inlibc
11494
11495 : see if sys/stat.h is available
11496 set sys/stat.h i_sysstat
11497 eval $inhdr
11498
11499
11500 : see if stat knows about block sizes
11501 echo " "
11502 echo "Checking to see if your struct stat has st_blocks field..." >&4
11503 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11504 eval $hasfield
11505
11506
11507 : see if this is a sys/vfs.h system
11508 set sys/vfs.h i_sysvfs
11509 eval $inhdr
11510
11511
11512 : see if this is a sys/statfs.h system
11513 set sys/statfs.h i_sysstatfs
11514 eval $inhdr
11515
11516
11517 echo " "
11518 echo "Checking to see if your system supports struct statfs..." >&4
11519 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
11520 eval $hasstruct
11521 case "$d_statfs_s" in
11522 "$define")      echo "Yes, it does."   ;;
11523 *)              echo "No, it doesn't." ;;
11524 esac
11525
11526
11527
11528 : see if struct statfs knows about f_flags
11529 case "$d_statfs_s" in
11530 define) 
11531         echo " "
11532         echo "Checking to see if your struct statfs has f_flags field..." >&4
11533         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
11534         eval $hasfield
11535         ;;
11536 *)      val="$undef"
11537         set d_statfs_f_flags
11538         eval $setvar
11539         ;;
11540 esac
11541 case "$d_statfs_f_flags" in
11542 "$define")      echo "Yes, it does."   ;;
11543 *)              echo "No, it doesn't." ;;
11544 esac
11545
11546 : see if _ptr and _cnt from stdio act std
11547 echo " "
11548 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11549         echo "(Looks like you have stdio.h from Linux.)"
11550         case "$stdio_ptr" in
11551         '') stdio_ptr='((fp)->_IO_read_ptr)'
11552                 ptr_lval=$define
11553                 ;;
11554         *)      ptr_lval=$d_stdio_ptr_lval;;
11555         esac
11556         case "$stdio_cnt" in
11557         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11558                 cnt_lval=$undef
11559                 ;;
11560         *)      cnt_lval=$d_stdio_cnt_lval;;
11561         esac
11562         case "$stdio_base" in
11563         '') stdio_base='((fp)->_IO_read_base)';;
11564         esac
11565         case "$stdio_bufsiz" in
11566         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11567         esac
11568 else
11569         case "$stdio_ptr" in
11570         '') stdio_ptr='((fp)->_ptr)'
11571                 ptr_lval=$define
11572                 ;;
11573         *)      ptr_lval=$d_stdio_ptr_lval;;
11574         esac
11575         case "$stdio_cnt" in
11576         '') stdio_cnt='((fp)->_cnt)'
11577                 cnt_lval=$define
11578                 ;;
11579         *)      cnt_lval=$d_stdio_cnt_lval;;
11580         esac
11581         case "$stdio_base" in
11582         '') stdio_base='((fp)->_base)';;
11583         esac
11584         case "$stdio_bufsiz" in
11585         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11586         esac
11587 fi
11588 : test whether _ptr and _cnt really work
11589 echo "Checking how std your stdio is..." >&4
11590 $cat >try.c <<EOP
11591 #include <stdio.h>
11592 #define FILE_ptr(fp)    $stdio_ptr
11593 #define FILE_cnt(fp)    $stdio_cnt
11594 int main() {
11595         FILE *fp = fopen("try.c", "r");
11596         char c = getc(fp);
11597         if (
11598                 18 <= FILE_cnt(fp) &&
11599                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11600         )
11601                 exit(0);
11602         exit(1);
11603 }
11604 EOP
11605 val="$undef"
11606 set try
11607 if eval $compile; then
11608         if ./try; then
11609                 echo "Your stdio acts pretty std."
11610                 val="$define"
11611         else
11612                 echo "Your stdio isn't very std."
11613         fi
11614 else
11615         echo "Your stdio doesn't appear very std."
11616 fi
11617 $rm -f try.c try
11618 set d_stdstdio
11619 eval $setvar
11620
11621 : Can _ptr be used as an lvalue?
11622 case "$d_stdstdio$ptr_lval" in
11623 $define$define) val=$define ;;
11624 *) val=$undef ;;
11625 esac
11626 set d_stdio_ptr_lval
11627 eval $setvar
11628
11629 : Can _cnt be used as an lvalue?
11630 case "$d_stdstdio$cnt_lval" in
11631 $define$define) val=$define ;;
11632 *) val=$undef ;;
11633 esac
11634 set d_stdio_cnt_lval
11635 eval $setvar
11636
11637 : see if _base is also standard
11638 val="$undef"
11639 case "$d_stdstdio" in
11640 $define)
11641         $cat >try.c <<EOP
11642 #include <stdio.h>
11643 #define FILE_base(fp)   $stdio_base
11644 #define FILE_bufsiz(fp) $stdio_bufsiz
11645 int main() {
11646         FILE *fp = fopen("try.c", "r");
11647         char c = getc(fp);
11648         if (
11649                 19 <= FILE_bufsiz(fp) &&
11650                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11651         )
11652                 exit(0);
11653         exit(1);
11654 }
11655 EOP
11656         set try
11657         if eval $compile; then
11658                 if ./try; then
11659                         echo "And its _base field acts std."
11660                         val="$define"
11661                 else
11662                         echo "But its _base field isn't std."
11663                 fi
11664         else
11665                 echo "However, it seems to be lacking the _base field."
11666         fi
11667         $rm -f try.c try
11668         ;;
11669 esac
11670 set d_stdiobase
11671 eval $setvar
11672
11673 $cat >&4 <<EOM
11674 Checking how to access stdio streams by file descriptor number...
11675 EOM
11676 case "$stdio_stream_array" in
11677 '')     $cat >try.c <<EOCP
11678 #include <stdio.h>
11679 int main() {
11680   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11681     printf("yes\n");
11682 }
11683 EOCP
11684         for s in _iob __iob __sF
11685         do
11686                 set try -DSTDIO_STREAM_ARRAY=$s
11687                 if eval $compile; then
11688                         case "`./try$exe_ext`" in
11689                         yes)    stdio_stream_array=$s; break ;;
11690                         esac
11691                 fi
11692         done
11693         $rm -f try.* try$exe_ext
11694 esac
11695 case "$stdio_stream_array" in
11696 '')     $cat >&4 <<EOM
11697 I can't figure out how to access stdio streams by file descriptor number.
11698 EOM
11699         d_stdio_stream_array="$undef"
11700         ;;
11701 *)      $cat >&4 <<EOM
11702 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11703 EOM
11704         d_stdio_stream_array="$define"
11705         ;;
11706 esac
11707
11708 : see if strcoll exists
11709 set strcoll d_strcoll
11710 eval $inlibc
11711
11712 : check for structure copying
11713 echo " "
11714 echo "Checking to see if your C compiler can copy structs..." >&4
11715 $cat >try.c <<'EOCP'
11716 int main()
11717 {
11718         struct blurfl {
11719                 int dyick;
11720         } foo, bar;
11721
11722         foo = bar;
11723 }
11724 EOCP
11725 if $cc -c try.c >/dev/null 2>&1 ; then
11726         val="$define"
11727         echo "Yup, it can."
11728 else
11729         val="$undef"
11730         echo "Nope, it can't."
11731 fi
11732 set d_strctcpy
11733 eval $setvar
11734 $rm -f try.*
11735
11736 : see if strerror and/or sys_errlist[] exist
11737 echo " "
11738 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11739     if set strerror val -f d_strerror; eval $csym; $val; then
11740                 echo 'strerror() found.' >&4
11741                 d_strerror="$define"
11742                 d_strerrm='strerror(e)'
11743                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11744                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11745                         d_syserrlst="$define"
11746                 else
11747                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11748                         d_syserrlst="$undef"
11749                 fi
11750     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11751                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11752                 echo 'strerror() found in string header.' >&4
11753                 d_strerror="$define"
11754                 d_strerrm='strerror(e)'
11755                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11756                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11757                                 d_syserrlst="$define"
11758                 else
11759                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11760                         d_syserrlst="$undef"
11761                 fi
11762     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11763                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11764                 d_strerror="$undef"
11765                 d_syserrlst="$define"
11766                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11767     else
11768                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11769                 d_strerror="$undef"
11770                 d_syserrlst="$undef"
11771                 d_strerrm='"unknown"'
11772     fi
11773 fi
11774
11775 : see if strtod exists
11776 set strtod d_strtod
11777 eval $inlibc
11778
11779 : see if strtol exists
11780 set strtol d_strtol
11781 eval $inlibc
11782
11783 : see if strtold exists
11784 set strtold d_strtold
11785 eval $inlibc
11786
11787 : see if strtoll exists
11788 set strtoll d_strtoll
11789 eval $inlibc
11790
11791 case "$d_longlong-$d_strtoll" in
11792 "$define-$define")
11793         $cat <<EOM
11794 Checking whether your strtoll() works okay...
11795 EOM
11796         $cat >try.c <<'EOCP'
11797 #include <errno.h>
11798 #ifdef __hpux
11799 #define strtoll __strtoll
11800 #endif
11801 #include <stdio.h>
11802 extern long long int strtoll(char *s, char **, int); 
11803 static int bad = 0;
11804 int check(char *s, long long ell, int een) {
11805         long long gll;
11806         errno = 0;
11807         gll = strtoll(s, 0, 10);
11808         if (!((gll == ell) && (errno == een)))
11809                 bad++;
11810 }
11811 int main() {
11812         check(" 1",                                      1LL, 0);
11813         check(" 0",                                      0LL, 0);
11814         check("-1",                                     -1LL, 0);
11815         check("-9223372036854775808", -9223372036854775808LL, 0);
11816         check("-9223372036854775808", -9223372036854775808LL, 0);
11817         check(" 9223372036854775807",  9223372036854775807LL, 0);
11818         check("-9223372036854775808", -9223372036854775808LL, 0);
11819         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11820         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11821         if (!bad)
11822                 printf("ok\n");
11823 }
11824 EOCP
11825         set try
11826         if eval $compile; then
11827                 case "`./try`" in
11828                 ok) echo "Your strtoll() seems to be working okay." ;;
11829                 *) cat <<EOM >&4
11830 Your strtoll() doesn't seem to be working okay.
11831 EOM
11832                    d_strtoll="$undef"
11833                    ;;
11834                 esac
11835         fi
11836         ;;
11837 esac
11838
11839 : see if strtoul exists
11840 set strtoul d_strtoul
11841 eval $inlibc
11842
11843 : see if strtoull exists
11844 set strtoull d_strtoull
11845 eval $inlibc
11846
11847 case "$d_longlong-$d_strtoull" in
11848 "$define-$define")
11849         $cat <<EOM
11850 Checking whether your strtoull() works okay...
11851 EOM
11852         $cat >try.c <<'EOCP'
11853 #include <errno.h>
11854 #ifdef __hpux
11855 #define strtoull __strtoull
11856 #endif
11857 #include <stdio.h>
11858 extern unsigned long long int strtoull(char *s, char **, int); 
11859 static int bad = 0;
11860 int check(char *s, long long eull, int een) {
11861         long long gull;
11862         errno = 0;
11863         gull = strtoull(s, 0, 10);
11864         if (!((gull == eull) && (errno == een)))
11865                 bad++;
11866 }
11867 int main() {
11868         check(" 1",                                       1LL, 0);
11869         check(" 0",                                       0LL, 0);
11870         check("18446744073709551615", 18446744073709551615ULL, 0);
11871         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11872         if (!bad)
11873                 printf("ok\n");
11874 }
11875 EOCP
11876         set try
11877         if eval $compile; then
11878                 case "`./try`" in
11879                 ok) echo "Your strtoull() seems to be working okay." ;;
11880                 *) cat <<EOM >&4
11881 Your strtoull() doesn't seem to be working okay.
11882 EOM
11883                    d_strtoull="$undef"
11884                    ;;
11885                 esac
11886         fi
11887         ;;
11888 esac
11889
11890 : see if strtouq exists
11891 set strtouq d_strtouq
11892 eval $inlibc
11893
11894 : see if strxfrm exists
11895 set strxfrm d_strxfrm
11896 eval $inlibc
11897
11898 : see if symlink exists
11899 set symlink d_symlink
11900 eval $inlibc
11901
11902 : see if syscall exists
11903 set syscall d_syscall
11904 eval $inlibc
11905
11906 : see if sysconf exists
11907 set sysconf d_sysconf
11908 eval $inlibc
11909
11910 : see if system exists
11911 set system d_system
11912 eval $inlibc
11913
11914 : see if tcgetpgrp exists
11915 set tcgetpgrp d_tcgetpgrp
11916 eval $inlibc
11917
11918 : see if tcsetpgrp exists
11919 set tcsetpgrp d_tcsetpgrp
11920 eval $inlibc
11921
11922 : see if prototype for telldir is available
11923 echo " "
11924 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11925 eval $hasproto
11926
11927 : see if this is a sys/times.h system
11928 set sys/times.h i_systimes
11929 eval $inhdr
11930
11931 : see if times exists
11932 echo " "
11933 if set times val -f d_times; eval $csym; $val; then
11934         echo 'times() found.' >&4
11935         d_times="$define"
11936         inc=''
11937         case "$i_systimes" in
11938         "$define") inc='sys/times.h';;
11939         esac
11940         rp="What is the type returned by times() on this system?"
11941         set clock_t clocktype long stdio.h sys/types.h $inc
11942         eval $typedef_ask
11943 else
11944         echo 'times() NOT found, hope that will do.' >&4
11945         d_times="$undef"
11946         clocktype='int'
11947 fi
11948
11949 : see if truncate exists
11950 set truncate d_truncate
11951 eval $inlibc
11952
11953 : see if tzname[] exists
11954 echo " "
11955 if set tzname val -a d_tzname; eval $csym; $val; then
11956         val="$define"
11957         echo 'tzname[] found.' >&4
11958 else
11959         val="$undef"
11960         echo 'tzname[] NOT found.' >&4
11961 fi
11962 set d_tzname
11963 eval $setvar
11964
11965 : see if umask exists
11966 set umask d_umask
11967 eval $inlibc
11968
11969 : see if ustat exists
11970 set ustat d_ustat
11971 eval $inlibc
11972
11973 : backward compatibility for d_hvfork
11974 if test X$d_hvfork != X; then
11975         d_vfork="$d_hvfork"
11976         d_hvfork=''
11977 fi
11978 : see if there is a vfork
11979 val=''
11980 set vfork val
11981 eval $inlibc
11982
11983 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11984 : perl on Solaris 2.x, and probably elsewhere.
11985 case "$val" in
11986 $define)
11987         echo " "
11988         case "$usevfork" in
11989         false) dflt='n';;
11990         *) dflt='y';;
11991         esac
11992         cat <<'EOM'
11993  
11994 Perl can only use a vfork() that doesn't suffer from strict
11995 restrictions on calling functions or modifying global data in
11996 the child.  For example, glibc-2.1 contains such a vfork()
11997 that is unsuitable.  If your system provides a proper fork()
11998 call, chances are that you do NOT want perl to use vfork().
11999
12000 EOM
12001         rp="Do you still want to use vfork()?"
12002         . ./myread
12003         case "$ans" in
12004         y|Y) ;;
12005         *)
12006                 echo "Ok, we won't use vfork()."
12007                 val="$undef"
12008                 ;;
12009         esac
12010         ;;
12011 esac
12012 set d_vfork
12013 eval $setvar
12014 case "$d_vfork" in
12015 $define) usevfork='true';;
12016 *) usevfork='false';;
12017 esac
12018
12019 : see if this is an sysdir system
12020 set sys/dir.h i_sysdir
12021 eval $inhdr
12022
12023 : see if this is an sysndir system
12024 set sys/ndir.h i_sysndir
12025 eval $inhdr
12026
12027 : see if closedir exists
12028 set closedir d_closedir
12029 eval $inlibc
12030
12031 case "$d_closedir" in
12032 "$define")
12033         echo " "
12034         echo "Checking whether closedir() returns a status..." >&4
12035         cat > closedir.c <<EOM
12036 #$i_dirent I_DIRENT             /**/
12037 #$i_sysdir I_SYS_DIR            /**/
12038 #$i_sysndir I_SYS_NDIR          /**/
12039 #$i_systypes I_SYS_TYPES        /**/
12040
12041 #if defined(I_SYS_TYPES)
12042 #include <sys/types.h>
12043 #endif
12044 #if defined(I_DIRENT)
12045 #include <dirent.h>
12046 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12047 #include <sys/dir.h>
12048 #endif
12049 #else
12050 #ifdef I_SYS_NDIR
12051 #include <sys/ndir.h>
12052 #else
12053 #ifdef I_SYS_DIR
12054 #ifdef hp9000s500
12055 #include <ndir.h>       /* may be wrong in the future */
12056 #else
12057 #include <sys/dir.h>
12058 #endif
12059 #endif
12060 #endif
12061 #endif 
12062 int main() { return closedir(opendir(".")); }
12063 EOM
12064         set closedir
12065         if eval $compile_ok; then
12066                 if ./closedir > /dev/null 2>&1 ; then
12067                         echo "Yes, it does."
12068                         val="$undef"
12069                 else
12070                         echo "No, it doesn't."
12071                         val="$define"
12072                 fi
12073         else
12074                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12075                 val="$define"
12076         fi
12077         ;;
12078 *)
12079         val="$undef";
12080         ;;
12081 esac
12082 set d_void_closedir
12083 eval $setvar
12084 $rm -f closedir*
12085 : check for volatile keyword
12086 echo " "
12087 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12088 $cat >try.c <<'EOCP'
12089 int main()
12090 {
12091         typedef struct _goo_struct goo_struct;
12092         goo_struct * volatile goo = ((goo_struct *)0);
12093         struct _goo_struct {
12094                 long long_int;
12095                 int reg_int;
12096                 char char_var;
12097         };
12098         typedef unsigned short foo_t;
12099         char *volatile foo;
12100         volatile int bar;
12101         volatile foo_t blech;
12102         foo = foo;
12103 }
12104 EOCP
12105 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12106         val="$define"
12107         echo "Yup, it does."
12108 else
12109         val="$undef"
12110         echo "Nope, it doesn't."
12111 fi
12112 set d_volatile
12113 eval $setvar
12114 $rm -f try.*
12115
12116 : see if there is a wait4
12117 set wait4 d_wait4
12118 eval $inlibc
12119
12120 : see if waitpid exists
12121 set waitpid d_waitpid
12122 eval $inlibc
12123
12124 : see if wcstombs exists
12125 set wcstombs d_wcstombs
12126 eval $inlibc
12127
12128 : see if wctomb exists
12129 set wctomb d_wctomb
12130 eval $inlibc
12131
12132 : preserve RCS keywords in files with variable substitution, grrr
12133 Date='$Date'
12134 Id='$Id'
12135 Log='$Log'
12136 RCSfile='$RCSfile'
12137 Revision='$Revision'
12138
12139 case "$crosscompile" in
12140 ''|[nN]*) crosscompile="$undef" ;;
12141 esac
12142
12143 case "$osname" in
12144 next|rhapsody|darwin) multiarch="$define" ;;
12145 esac
12146 case "$multiarch" in
12147 ''|[nN]*) multiarch="$undef" ;;
12148 esac
12149
12150 : check for alignment requirements
12151 echo " "
12152 case "$crosscompile$multiarch" in
12153 *$define*)
12154         $cat <<EOM
12155 You seem to be either cross-compiling or doing a multiarchitecture build,
12156 skipping the memory alignment check.
12157
12158 EOM
12159         case "$alignbytes" in
12160         '') alignbytes=8 ;;
12161         esac
12162         ;;
12163 *)
12164         case "$alignbytes" in
12165         '') echo "Checking alignment constraints..." >&4
12166                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12167                         $cat >try.c <<'EOCP'
12168 typedef long double NV;
12169 EOCP
12170                 else
12171                         $cat >try.c <<'EOCP'
12172 typedef double NV;
12173 EOCP
12174                 fi
12175                 $cat >>try.c <<'EOCP'
12176 #include <stdio.h>
12177 struct foobar {
12178         char foo;
12179         NV bar;
12180 } try_algn;
12181 int main()
12182 {
12183     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12184     return(0);
12185 }
12186 EOCP
12187                 set try
12188                 if eval $compile_ok; then
12189                         dflt=`./try`
12190                 else
12191                         dflt='8'
12192                         echo "(I can't seem to compile the test program...)"
12193                 fi
12194                 ;;
12195         *) dflt="$alignbytes"
12196                 ;;
12197         esac
12198         rp="Doubles must be aligned on a how-many-byte boundary?"
12199         . ./myread
12200         alignbytes="$ans"
12201         $rm -f try.c try
12202         ;;
12203 esac
12204
12205
12206 : set the base revision
12207 baserev=5.0
12208
12209 : check for ordering of bytes in a long
12210 echo " "
12211 case "$crosscompile$multiarch" in
12212 *$define*)
12213         $cat <<EOM
12214 You seem to be either cross-compiling or doing a multiarchitecture build,
12215 skipping the byteorder check.
12216
12217 EOM
12218         byteorder='0xffff'
12219         ;;
12220 *)
12221         case "$byteorder" in
12222         '')
12223                 $cat <<'EOM'
12224 In the following, larger digits indicate more significance.  A big-endian
12225 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12226 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12227 machines may have weird orders like 3412.  A Cray will report 87654321,
12228 an Alpha will report 12345678. If the test program works the default is
12229 probably right.
12230 I'm now running the test program...
12231 EOM
12232                 $cat >try.c <<'EOCP'
12233 #include <stdio.h>
12234 int main()
12235 {
12236         int i;
12237         union {
12238                 unsigned long l;
12239                 char c[sizeof(long)];
12240         } u;
12241
12242         if (sizeof(long) > 4)
12243                 u.l = (0x08070605L << 32) | 0x04030201L;
12244         else
12245                 u.l = 0x04030201L;
12246         for (i = 0; i < sizeof(long); i++)
12247                 printf("%c", u.c[i]+'0');
12248         printf("\n");
12249         exit(0);
12250 }
12251 EOCP
12252                 xxx_prompt=y
12253                 set try
12254                 if eval $compile && ./try > /dev/null; then
12255                         dflt=`./try`
12256                         case "$dflt" in
12257                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12258                                 echo "(The test program ran ok.)"
12259                                 echo "byteorder=$dflt"
12260                                 xxx_prompt=n
12261                         ;;
12262                         ????|????????) echo "(The test program ran ok.)" ;;
12263                         *) echo "(The test program didn't run right for some reason.)" ;;
12264                         esac
12265                 else
12266                         dflt='4321'
12267                         cat <<'EOM'
12268 (I can't seem to compile the test program.  Guessing big-endian...)
12269 EOM
12270                 fi
12271                 case "$xxx_prompt" in
12272                 y)
12273                         rp="What is the order of bytes in a long?"
12274                         . ./myread
12275                         byteorder="$ans"
12276                         ;;
12277                 *)      byteorder=$dflt
12278                         ;;
12279                 esac
12280                 ;;
12281         esac
12282         $rm -f try.c try
12283         ;;
12284 esac
12285
12286
12287 : how do we catenate cpp tokens here?
12288 echo " "
12289 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12290 $cat >cpp_stuff.c <<'EOCP'
12291 #define RCAT(a,b)a/**/b
12292 #define ACAT(a,b)a ## b
12293 RCAT(Rei,ser)
12294 ACAT(Cir,cus)
12295 EOCP
12296 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12297 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12298         echo "Oh!  Smells like ANSI's been here." >&4
12299         echo "We can catify or stringify, separately or together!"
12300         cpp_stuff=42
12301 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12302         echo "Ah, yes!  The good old days!" >&4
12303         echo "However, in the good old days we don't know how to stringify and"
12304         echo "catify at the same time."
12305         cpp_stuff=1
12306 else
12307         $cat >&4 <<EOM
12308 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12309 to have to edit the values of CAT[2-5] in config.h...
12310 EOM
12311         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12312 fi
12313 $rm -f cpp_stuff.*
12314
12315 : see if this is a db.h system
12316 set db.h i_db
12317 eval $inhdr
12318
12319 case "$i_db" in
12320 $define)
12321         : Check db version.
12322         echo " "
12323         echo "Checking Berkeley DB version ..." >&4
12324         $cat >try.c <<EOCP
12325 #$d_const HASCONST
12326 #ifndef HASCONST
12327 #define const
12328 #endif
12329 #include <sys/types.h>
12330 #include <stdio.h>
12331 #include <db.h>
12332 int main()
12333 {
12334 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12335     int Major, Minor, Patch ;
12336     unsigned long Version ;
12337     (void)db_version(&Major, &Minor, &Patch) ;
12338     printf("You have Berkeley DB Version 2 or greater\n");
12339
12340     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12341                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12342     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12343                 Major, Minor, Patch) ;
12344
12345     /* check that db.h & libdb are compatible */
12346     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12347         printf("db.h and libdb are incompatible\n") ;
12348         exit(3);        
12349     }
12350
12351     printf("db.h and libdb are compatible\n") ;
12352
12353     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12354                 + DB_VERSION_PATCH ;
12355
12356     /* needs to be >= 2.3.4 */
12357     if (Version < 2003004) {
12358     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12359         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12360         exit(2);        
12361     }
12362
12363     exit(0);
12364 #else
12365 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12366     printf("You have Berkeley DB Version 1\n");
12367     exit(0);    /* DB version < 2: the coast is clear. */
12368 #else
12369     exit(1);    /* <db.h> not Berkeley DB? */
12370 #endif
12371 #endif
12372 }
12373 EOCP
12374         set try
12375         if eval $compile_ok && ./try; then
12376                 echo 'Looks OK.' >&4
12377         else
12378                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12379                 i_db=$undef
12380                 case " $libs " in
12381                 *"-ldb "*)
12382                         : Remove db from list of libraries to use
12383                         echo "Removing unusable -ldb from library list" >&4
12384                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12385                         shift
12386                         libs="$*"
12387                         echo "libs = $libs" >&4
12388                         ;;
12389                 esac
12390         fi
12391         $rm -f try.*
12392         ;;
12393 esac
12394
12395 case "$i_db" in
12396 define)
12397         : Check the return type needed for hash 
12398         echo " "
12399         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12400         $cat >try.c <<EOCP
12401 #$d_const HASCONST
12402 #ifndef HASCONST
12403 #define const
12404 #endif
12405 #include <sys/types.h>
12406 #include <db.h>
12407
12408 #ifndef DB_VERSION_MAJOR
12409 u_int32_t hash_cb (ptr, size)
12410 const void *ptr;
12411 size_t size;
12412 {
12413 }
12414 HASHINFO info;
12415 int main()
12416 {
12417         info.hash = hash_cb;
12418 }
12419 #endif
12420 EOCP
12421         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12422                 if $contains warning try.out >>/dev/null 2>&1 ; then
12423                         db_hashtype='int'
12424                 else
12425                         db_hashtype='u_int32_t'
12426                 fi
12427         else
12428                 : XXX Maybe we should just give up here.
12429                 db_hashtype=u_int32_t
12430                 $cat try.out >&4
12431                 echo "Help:  I can't seem to compile the db test program." >&4
12432                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12433         fi
12434         $rm -f try.*
12435         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12436         ;;
12437 *)      db_hashtype=u_int32_t
12438         ;;
12439 esac
12440 case "$i_db" in
12441 define)
12442         : Check the return type needed for prefix 
12443         echo " "
12444         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12445         cat >try.c <<EOCP
12446 #$d_const HASCONST
12447 #ifndef HASCONST
12448 #define const
12449 #endif
12450 #include <sys/types.h>
12451 #include <db.h>
12452
12453 #ifndef DB_VERSION_MAJOR
12454 size_t prefix_cb (key1, key2)
12455 const DBT *key1;
12456 const DBT *key2;
12457 {
12458 }
12459 BTREEINFO info;
12460 int main()
12461 {
12462         info.prefix = prefix_cb;
12463 }
12464 #endif
12465 EOCP
12466         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12467                 if $contains warning try.out >>/dev/null 2>&1 ; then
12468                         db_prefixtype='int'
12469                 else
12470                         db_prefixtype='size_t'
12471                 fi
12472         else
12473                 db_prefixtype='size_t'
12474                 : XXX Maybe we should just give up here.
12475                 $cat try.out >&4
12476                 echo "Help:  I can't seem to compile the db test program." >&4
12477                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12478         fi
12479         $rm -f try.*
12480         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12481         ;;
12482 *)      db_prefixtype='size_t'
12483         ;;
12484 esac
12485
12486 : check for void type
12487 echo " "
12488 echo "Checking to see how well your C compiler groks the void type..." >&4
12489 case "$voidflags" in
12490 '')
12491         $cat >try.c <<'EOCP'
12492 #if TRY & 1
12493 void sub() {
12494 #else
12495 sub() {
12496 #endif
12497         extern void moo();      /* function returning void */
12498         void (*goo)();          /* ptr to func returning void */
12499 #if TRY & 8
12500         void *hue;              /* generic ptr */
12501 #endif
12502 #if TRY & 2
12503         void (*foo[10])();
12504 #endif
12505
12506 #if TRY & 4
12507         if(goo == moo) {
12508                 exit(0);
12509         }
12510 #endif
12511         exit(0);
12512 }
12513 int main() { sub(); }
12514 EOCP
12515         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12516                 voidflags=$defvoidused
12517         echo "Good.  It appears to support void to the level $package wants.">&4
12518                 if $contains warning .out >/dev/null 2>&1; then
12519                         echo "However, you might get some warnings that look like this:"
12520                         $cat .out
12521                 fi
12522         else
12523 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12524                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12525                         echo "It supports 1..."
12526                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12527                                 echo "It also supports 2..."
12528                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12529                                         voidflags=7
12530                                         echo "And it supports 4 but not 8 definitely."
12531                                 else
12532                                         echo "It doesn't support 4..."
12533                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12534                                                 voidflags=11
12535                                                 echo "But it supports 8."
12536                                         else
12537                                                 voidflags=3
12538                                                 echo "Neither does it support 8."
12539                                         fi
12540                                 fi
12541                         else
12542                                 echo "It does not support 2..."
12543                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12544                                         voidflags=13
12545                                         echo "But it supports 4 and 8."
12546                                 else
12547                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12548                                                 voidflags=5
12549                                                 echo "And it supports 4 but has not heard about 8."
12550                                         else
12551                                                 echo "However it supports 8 but not 4."
12552                                         fi
12553                                 fi
12554                         fi
12555                 else
12556                         echo "There is no support at all for void."
12557                         voidflags=0
12558                 fi
12559         fi
12560 esac
12561 case "$voidflags" in
12562 "$defvoidused") ;;
12563 *)      $cat >&4 <<'EOM'
12564   Support flag bits are:
12565     1: basic void declarations.
12566     2: arrays of pointers to functions returning void.
12567     4: operations between pointers to and addresses of void functions.
12568     8: generic void pointers.
12569 EOM
12570         dflt="$voidflags";
12571         rp="Your void support flags add up to what?"
12572         . ./myread
12573         voidflags="$ans"
12574         ;;
12575 esac
12576 $rm -f try.* .out
12577
12578
12579 : How can we generate normalized random numbers ?
12580 echo " "
12581 echo "Looking for a random number function..." >&4
12582 case "$randfunc" in
12583 '')
12584         if set drand48 val -f; eval $csym; $val; then
12585                 dflt="drand48"
12586                 echo "Good, found drand48()." >&4
12587         elif set random val -f; eval $csym; $val; then
12588                 dflt="random"
12589                 echo "OK, found random()." >&4
12590         else
12591                 dflt="rand"
12592                 echo "Yick, looks like I have to use rand()." >&4
12593         fi
12594         echo " "
12595         ;;
12596 *)
12597         dflt="$randfunc"
12598         ;;
12599 esac
12600 cont=true
12601
12602 case "$ccflags" in
12603 *-Dmy_rand=*|*-Dmy_srand=*)
12604         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12605         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12606         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12607         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12608         ;;
12609 esac
12610
12611 while $test "$cont"; do
12612         rp="Use which function to generate random numbers?"
12613         . ./myread
12614         if $test "$ans" = "$dflt"; then
12615                 : null
12616         else
12617                 randbits=''
12618         fi
12619         randfunc="$ans"
12620         if set $ans val -f; eval $csym; $val; then
12621                 cont=''
12622         else
12623                 dflt=y
12624                 rp="I cannot find function $ans. Use that name anyway?"
12625                 . ./myread
12626                 dflt=rand
12627                 case "$ans" in
12628                         [yY]*) cont='';;
12629                 esac
12630         fi
12631         case "$cont" in
12632         '')
12633                 case "$randfunc" in
12634                 drand48)
12635                         drand01="drand48()"
12636                         seedfunc="srand48"
12637                         randbits=48
12638                         randseedtype=long
12639                         ;;
12640                 rand|random)
12641                         case "$randbits" in
12642                         '')
12643 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12644                                 $cat >try.c <<EOCP
12645 #$i_unistd I_UNISTD
12646 #$i_stdlib I_STDLIB
12647 #include <stdio.h>
12648 #ifdef I_UNISTD
12649 #  include <unistd.h>
12650 #endif
12651 #ifdef I_STDLIB
12652 #  include <stdlib.h>
12653 #endif
12654 int main()
12655 {
12656         register int i;
12657         register unsigned long tmp;
12658         register unsigned long max = 0L;
12659
12660         for (i = 1000; i; i--) {
12661                 tmp = (unsigned long) $randfunc();
12662                 if (tmp > max) max = tmp;
12663         }
12664         for (i = 0; max; i++)
12665                 max /= 2;
12666         printf("%d\n",i);
12667 }
12668 EOCP
12669                                 set try
12670                                 if eval $compile_ok; then
12671                                         dflt=`try`
12672                                 else
12673                                         dflt='?'
12674                                         echo "(I can't seem to compile the test program...)"
12675                                 fi
12676                                 ;;
12677                         *)
12678                                 dflt="$randbits"
12679                                 ;;
12680                         esac
12681                         rp="How many bits does your $randfunc() function produce?"
12682                         . ./myread
12683                         randbits="$ans"
12684                         $rm -f try.c try
12685                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12686                         seedfunc="s$randfunc"
12687                         randseedtype=unsigned
12688                         ;;
12689                 *)
12690                         dflt="31"
12691                         rp="How many bits does your $randfunc() function produce?"
12692                         . ./myread
12693                         randbits="$ans"
12694                         seedfunc="s$randfunc"
12695                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12696                         if set $seedfunc val -f; eval $csym; $val; then
12697                                 echo "(Using $seedfunc() to seed random generator)"
12698                         else
12699                                 echo "(Warning: no $seedfunc() to seed random generator)"
12700                                 seedfunc=rand
12701                         fi
12702                         randseedtype=unsigned
12703                         ;;
12704                 esac
12705                 ;;
12706         esac
12707 done
12708
12709 echo " "
12710 echo "Determining whether or not we are on an EBCDIC system..." >&4
12711 $cat >tebcdic.c <<'EOM'
12712 int main()
12713 {
12714   if ('M'==0xd4) return 0;
12715   return 1;
12716 }
12717 EOM
12718
12719 val=$undef
12720 set tebcdic
12721 if eval $compile_ok; then
12722         if ./tebcdic; then
12723                 echo "You have EBCDIC." >&4
12724                 val="$define"
12725         else
12726                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12727         fi
12728 else
12729         echo "I'm unable to compile the test program." >&4
12730         echo "I'll assume ASCII or some ISO Latin." >&4
12731 fi
12732 $rm -f tebcdic.c tebcdic
12733 set ebcdic
12734 eval $setvar
12735
12736 echo " "
12737 $cat >&4 <<EOM
12738 Checking how to flush all pending stdio output...
12739 EOM
12740 # I only know how to find the first 32 possibly open files on SunOS.
12741 # See also hints/sunos_4_1.sh and util.c  --AD
12742 case "$osname" in
12743 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12744 esac
12745 $cat >>try.c <<EOCP
12746 #include <stdio.h>
12747 #$i_unistd I_UNISTD
12748 #ifdef I_UNISTD
12749 # include <unistd.h>
12750 #endif
12751 #$d_sysconf HAS_SYSCONF
12752 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12753 #ifdef HAS_STDIO_STREAM_ARRAY
12754 # define STDIO_STREAM_ARRAY $stdio_stream_array
12755 #endif
12756 int main() {
12757   FILE* p = fopen("try.out", "w");
12758 #ifdef TRY_FPUTC
12759   fputc('x', p);
12760 #else
12761 # ifdef TRY_FPRINTF
12762   fprintf(p, "x");
12763 # endif
12764 #endif
12765 #ifdef TRY_FFLUSH_NULL
12766   fflush(NULL);
12767 #endif
12768 #ifdef TRY_FFLUSH_ALL
12769   {
12770     long open_max = -1;
12771 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12772     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12773 # else
12774 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12775     open_max = sysconf(_SC_OPEN_MAX);
12776 #  else
12777 #   ifdef FOPEN_MAX
12778     open_max = FOPEN_MAX;
12779 #   else
12780 #    ifdef OPEN_MAX
12781     open_max = OPEN_MAX;
12782 #    else
12783 #     ifdef _NFILE
12784     open_max = _NFILE;
12785 #     endif
12786 #    endif
12787 #   endif
12788 #  endif
12789 # endif 
12790 # ifdef HAS_STDIO_STREAM_ARRAY
12791     if (open_max > 0) {
12792       long i;
12793       for (i = 0; i < open_max; i++)
12794             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12795                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12796                 STDIO_STREAM_ARRAY[i]._flag)
12797                 fflush(&STDIO_STREAM_ARRAY[i]);
12798     }   
12799   }
12800 # endif
12801 #endif
12802   _exit(42);
12803 }
12804 EOCP
12805 : first we have to find out how _not_ to flush
12806 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12807     output=''
12808     set try -DTRY_FPUTC
12809     if eval $compile; then
12810             $rm -f try.out
12811             ./try$exe_ext 2>/dev/null
12812             if $test ! -s try.out -a "X$?" = X42; then
12813                 output=-DTRY_FPUTC
12814             fi
12815     fi
12816     case "$output" in
12817     '')
12818             set try -DTRY_FPRINTF
12819             $rm -f try.out
12820             if eval $compile; then
12821                     $rm -f try.out
12822                     ./try$exe_ext 2>/dev/null
12823                     if $test ! -s try.out -a "X$?" = X42; then
12824                         output=-DTRY_FPRINTF
12825                     fi
12826             fi
12827         ;;
12828     esac
12829 fi
12830 : check for fflush NULL behaviour
12831 case "$fflushNULL" in
12832 '')     set try -DTRY_FFLUSH_NULL $output
12833         if eval $compile; then
12834                 $rm -f try.out
12835                 ./try$exe_ext 2>/dev/null
12836                 code="$?"
12837                 if $test -s try.out -a "X$code" = X42; then
12838                         fflushNULL="`$cat try.out`"
12839                 else
12840                         if $test "X$code" != X42; then
12841                                 $cat >&4 <<EOM
12842 (If this test failed, don't worry, we'll try another method shortly.)
12843 EOM
12844                         fi
12845                 fi
12846         fi
12847         $rm -f core try.core core.try.*
12848         case "$fflushNULL" in
12849         x)      $cat >&4 <<EOM
12850 Your fflush(NULL) works okay for output streams.
12851 Let's see if it clobbers input pipes...
12852 EOM
12853 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12854 # bug that improperly flushes the input end of pipes.  So we avoid the
12855 # autoflush on fork/system/exec support for now. :-(
12856 $cat >tryp.c <<EOCP
12857 #include <stdio.h>
12858 int
12859 main(int argc, char **argv)
12860 {
12861     char buf[1024];
12862     int i;
12863     char *bp = buf;
12864     while (1) {
12865         while ((i = getc(stdin)) != -1
12866                && (*bp++ = i) != '\n'
12867                && bp < &buf[1024])
12868         /* DO NOTHING */ ;
12869         *bp = '\0';
12870         fprintf(stdout, "%s", buf);
12871         fflush(NULL);
12872         if (i == -1)
12873             return 0;
12874         bp = buf;
12875     }
12876 }
12877 EOCP
12878                 fflushNULL="$define"
12879                 set tryp
12880                 if eval $compile; then
12881                     $rm -f tryp.out
12882                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12883                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12884                        $cat >&4 <<EOM
12885 fflush(NULL) seems to behave okay with input streams.
12886 EOM
12887                         fflushNULL="$define"
12888                     else
12889                         $cat >&4 <<EOM
12890 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12891 EOM
12892                         fflushNULL="$undef"
12893                     fi
12894                 fi
12895                 $rm -f core tryp.c tryp.core core.tryp.*
12896                 ;;
12897         '')     $cat >&4 <<EOM
12898 Your fflush(NULL) isn't working (contrary to ANSI C).
12899 EOM
12900                 fflushNULL="$undef"
12901                 ;;
12902         *)      $cat >&4 <<EOM
12903 Cannot figure out whether your fflush(NULL) works or not.
12904 I'm assuming it doesn't (contrary to ANSI C).
12905 EOM
12906                 fflushNULL="$undef"
12907                 ;;
12908         esac
12909         ;;
12910 $define|true|[yY]*)
12911         fflushNULL="$define"
12912         ;;
12913 *)
12914         fflushNULL="$undef"
12915         ;;
12916 esac
12917 : check explicit looping only if NULL did not work, and if the pipe
12918 : bug does not show up on an explicit flush too
12919 case "$fflushNULL" in
12920 "$undef")
12921         $cat >tryp.c <<EOCP
12922 #include <stdio.h>
12923 int
12924 main(int argc, char **argv)
12925 {
12926     char buf[1024];
12927     int i;
12928     char *bp = buf;
12929     while (1) {
12930         while ((i = getc(stdin)) != -1
12931                && (*bp++ = i) != '\n'
12932                && bp < &buf[1024])
12933         /* DO NOTHING */ ;
12934         *bp = '\0';
12935         fprintf(stdout, "%s", buf);
12936         fflush(stdin);
12937         if (i == -1)
12938             return 0;
12939         bp = buf;
12940     }
12941 }
12942 EOCP
12943         set tryp
12944         if eval $compile; then
12945             $rm -f tryp.out
12946             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12947             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12948                $cat >&4 <<EOM
12949 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12950 EOM
12951                 : now check for fflushall behaviour
12952                 case "$fflushall" in
12953                 '')     set try -DTRY_FFLUSH_ALL $output
12954                         if eval $compile; then
12955                                 $cat >&4 <<EOM
12956 (Now testing the other method--but note that this also may fail.)
12957 EOM
12958                                 $rm -f try.out
12959                                 ./try$exe_ext 2>/dev/null
12960                                 if $test -s try.out -a "X$?" = X42; then
12961                                         fflushall="`$cat try.out`"
12962                                 fi
12963                         fi
12964                         $rm -f core try.core core.try.*
12965                         case "$fflushall" in
12966                         x)      $cat >&4 <<EOM
12967 Whew. Flushing explicitly all the stdio streams works.
12968 EOM
12969                                 fflushall="$define"
12970                                 ;;
12971                         '')     $cat >&4 <<EOM
12972 Sigh. Flushing explicitly all the stdio streams doesn't work.
12973 EOM
12974                                 fflushall="$undef"
12975                                 ;;
12976                         *)      $cat >&4 <<EOM
12977 Cannot figure out whether flushing stdio streams explicitly works or not.
12978 I'm assuming it doesn't.
12979 EOM
12980                                 fflushall="$undef"
12981                                 ;;
12982                         esac
12983                         ;;
12984                 "$define"|true|[yY]*)
12985                         fflushall="$define"
12986                         ;;
12987                 *)
12988                         fflushall="$undef"
12989                         ;;
12990                 esac
12991             else
12992                 $cat >&4 <<EOM
12993 All is futile.  Even fflush(stdin) clobbers input pipes!
12994 EOM
12995                 fflushall="$undef"
12996             fi
12997         else
12998             fflushall="$undef"
12999         fi
13000         $rm -f core tryp.c tryp.core core.tryp.*
13001         ;;
13002 *)      fflushall="$undef"
13003         ;;
13004 esac
13005
13006 case "$fflushNULL$fflushall" in
13007 undefundef)
13008         $cat <<EOM
13009 OK, I give up.  I cannot figure out how to flush pending stdio output.
13010 We won't be flushing handles at all before fork/exec/popen.
13011 EOM
13012         ;;
13013 esac
13014 $rm -f try.* try$exe_ext
13015
13016 : Store the full pathname to the ar program for use in the C program
13017 : Respect a hint or command line value for full_ar.
13018 case "$full_ar" in
13019 '') full_ar=$ar ;;
13020 esac
13021
13022 : Store the full pathname to the sed program for use in the C program
13023 full_sed=$sed
13024
13025 : see what type gids are declared as in the kernel
13026 echo " "
13027 echo "Looking for the type for group ids returned by getgid()."
13028 set gid_t gidtype xxx stdio.h sys/types.h
13029 eval $typedef
13030 case "$gidtype" in
13031 xxx)
13032         xxx=`./findhdr sys/user.h`
13033         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13034         case $1 in
13035         unsigned) dflt="$1 $2" ;;
13036         *) dflt="$1" ;;
13037         esac
13038         ;;
13039 *) dflt="$gidtype";;
13040 esac
13041 case "$gidtype" in
13042 gid_t) echo "gid_t found." ;;
13043 *)      rp="What is the type for group ids returned by getgid()?"
13044         . ./myread
13045         gidtype="$ans"
13046         ;;
13047 esac
13048
13049 echo " "
13050 case "$gidtype" in
13051 *_t) zzz="$gidtype"     ;;
13052 *)   zzz="gid"          ;;
13053 esac
13054 echo "Checking the size of $zzz..." >&4 
13055 cat > try.c <<EOCP
13056 #include <sys/types.h>
13057 #include <stdio.h>
13058 int main() {
13059     printf("%d\n", (int)sizeof($gidtype));
13060     exit(0);
13061 }
13062 EOCP
13063 set try
13064 if eval $compile_ok; then
13065         yyy=`./try`
13066         case "$yyy" in
13067         '')     gidsize=4
13068                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13069                 ;;
13070         *)      gidsize=$yyy
13071                 echo "Your $zzz is $gidsize bytes long."
13072                 ;;
13073         esac
13074 else
13075         gidsize=4
13076         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13077 fi
13078
13079
13080 echo " "
13081 case "$gidtype" in
13082 *_t) zzz="$gidtype"     ;;
13083 *)   zzz="gid"          ;;
13084 esac
13085 echo "Checking the sign of $zzz..." >&4 
13086 cat > try.c <<EOCP
13087 #include <sys/types.h>
13088 #include <stdio.h>
13089 int main() {
13090         $gidtype foo = -1;
13091         if (foo < 0)
13092                 printf("-1\n");
13093         else
13094                 printf("1\n");
13095 }
13096 EOCP
13097 set try
13098 if eval $compile; then
13099         yyy=`./try`
13100         case "$yyy" in
13101         '')     gidsign=1
13102                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13103                 ;;
13104         *)      gidsign=$yyy
13105                 case "$gidsign" in
13106                  1) echo "Your $zzz is unsigned." ;;
13107                 -1) echo "Your $zzz is signed."   ;;
13108                 esac
13109                 ;;
13110         esac
13111 else
13112         gidsign=1
13113         echo "(I can't compile the test program--guessing unsigned.)" >&4
13114 fi
13115
13116
13117 echo " "
13118
13119 if $test X"$quadtype" != X; then
13120
13121 echo "Checking how to print 64-bit integers..." >&4
13122
13123 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13124         $cat >try.c <<'EOCP'
13125 #include <sys/types.h>
13126 #include <stdio.h>
13127 int main() {
13128   int q = 12345678901;
13129   printf("%ld\n", q);
13130 }
13131 EOCP
13132         set try
13133         if eval $compile; then
13134                 yyy=`./try$exe_ext`
13135                 case "$yyy" in
13136                 12345678901)
13137                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13138                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13139                         echo "We will use %d."
13140                         ;;
13141                 esac
13142         fi
13143 fi
13144
13145 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13146         $cat >try.c <<'EOCP'
13147 #include <sys/types.h>
13148 #include <stdio.h>
13149 int main() {
13150   long q = 12345678901;
13151   printf("%ld\n", q);
13152 }
13153 EOCP
13154         set try
13155         if eval $compile; then
13156                 yyy=`./try$exe_ext`
13157                 case "$yyy" in
13158                 12345678901)
13159                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13160                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13161                         echo "We will use %ld."
13162                         ;;
13163                 esac
13164         fi
13165 fi
13166
13167 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13168         $cat >try.c <<'EOCP'
13169 #include <sys/types.h>
13170 #include <inttypes.h>
13171 #include <stdio.h>
13172 int main() {
13173   int64_t q = 12345678901;
13174   printf("%" PRId64 "\n", q);
13175 }
13176 EOCP
13177         set try
13178         if eval $compile; then
13179                 yyy=`./try$exe_ext`
13180                 case "$yyy" in
13181                 12345678901)
13182                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13183                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13184                         echo "We will use the C9X style."
13185                         ;;
13186                 esac
13187         fi
13188 fi
13189
13190 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13191         $cat >try.c <<'EOCP'
13192 #include <sys/types.h>
13193 #include <stdio.h>
13194 int main() {
13195   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13196   printf("%lld\n", q);
13197 }
13198 EOCP
13199         set try
13200         if eval $compile; then
13201                 yyy=`./try$exe_ext`
13202                 case "$yyy" in
13203                 12345678901)
13204                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13205                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13206                         echo "We will use the %lld style."
13207                         ;;
13208                 esac
13209         fi
13210 fi
13211
13212 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13213         $cat >try.c <<EOCP
13214 #include <sys/types.h>
13215 #include <stdio.h>
13216 int main() {
13217   $quadtype q = 12345678901;
13218   printf("%Ld\n", q);
13219 }
13220 EOCP
13221         set try
13222         if eval $compile; then
13223                 yyy=`./try$exe_ext`
13224                 case "$yyy" in
13225                 12345678901)
13226                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13227                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13228                         echo "We will use %Ld."
13229                         ;;
13230                 esac
13231         fi
13232 fi
13233
13234 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13235         $cat >try.c <<EOCP
13236 #include <sys/types.h>
13237 #include <stdio.h>
13238 int main() {
13239   $quadtype q = 12345678901;
13240   printf("%qd\n", q);
13241 }
13242 EOCP
13243         set try
13244         if eval $compile; then
13245                 yyy=`./try$exe_ext`
13246                 case "$yyy" in
13247                 12345678901)
13248                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13249                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13250                         echo "We will use %qd."
13251                         ;;
13252                 esac
13253         fi
13254 fi
13255
13256 if $test X"$sPRId64" = X; then
13257         echo "Cannot figure out how to print 64-bit integers." >&4
13258 fi
13259
13260 $rm -f try try.*
13261
13262 fi
13263
13264 case "$sPRId64" in
13265 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13266         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13267         ;;
13268 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13269         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13270         ;;
13271 esac
13272
13273
13274 echo " "
13275 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13276
13277 if $test X"$ivsize" = X8; then
13278         ivdformat="$sPRId64"
13279         uvuformat="$sPRIu64"
13280         uvoformat="$sPRIo64"
13281         uvxformat="$sPRIx64"
13282         uvXformat="$sPRIX64"
13283 else
13284         if $test X"$ivsize" = X"$longsize"; then
13285                 ivdformat='"ld"'
13286                 uvuformat='"lu"'
13287                 uvoformat='"lo"'
13288                 uvxformat='"lx"'
13289                 uvXformat='"lX"'
13290         else
13291                 if $test X"$ivsize" = X"$intsize"; then
13292                         ivdformat='"d"'
13293                         uvuformat='"u"'
13294                         uvoformat='"o"'
13295                         uvxformat='"x"'
13296                         uvXformat='"X"'
13297                 else
13298                         : far out
13299                         if $test X"$ivsize" = X"$shortsize"; then
13300                                 ivdformat='"hd"'
13301                                 uvuformat='"hu"'
13302                                 uvoformat='"ho"'
13303                                 uvxformat='"hx"'
13304                                 uvXformat='"hX"'
13305                         fi
13306                 fi
13307         fi
13308 fi
13309
13310 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13311         nveformat="$sPRIeldbl"
13312         nvfformat="$sPRIfldbl"
13313         nvgformat="$sPRIgldbl"
13314         nvEformat="$sPRIEldbl"
13315         nvFformat="$sPRIFldbl"
13316         nvGformat="$sPRIGldbl"
13317 else
13318         nveformat='"e"'
13319         nvfformat='"f"'
13320         nvgformat='"g"'
13321         nvEformat='"E"'
13322         nvFformat='"F"'
13323         nvGformat='"G"'
13324 fi
13325
13326 case "$ivdformat" in
13327 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13328     exit 1
13329     ;;
13330 esac
13331
13332
13333 echo " "
13334 $echo "Checking the format string to be used for gids..." >&4
13335
13336 case "$gidsign" in
13337 -1)     if $test X"$gidsize" = X"$ivsize"; then
13338                 gidformat="$ivdformat"
13339         else
13340                 if $test X"$gidsize" = X"$longsize"; then
13341                         gidformat='"ld"'
13342                 else
13343                         if $test X"$gidsize" = X"$intsize"; then
13344                                 gidformat='"d"'
13345                         else
13346                                 if $test X"$gidsize" = X"$shortsize"; then
13347                                         gidformat='"hd"'
13348                                 fi
13349                         fi
13350                 fi
13351         fi
13352         ;;
13353 *)      if $test X"$gidsize" = X"$uvsize"; then
13354                 gidformat="$uvuformat"
13355         else
13356                 if $test X"$gidsize" = X"$longsize"; then
13357                         gidformat='"lu"'
13358                 else
13359                         if $test X"$gidsize" = X"$intsize"; then
13360                                 gidformat='"u"'
13361                         else
13362                                 if $test X"$gidsize" = X"$shortsize"; then
13363                                         gidformat='"hu"'
13364                                 fi
13365                         fi
13366                 fi
13367         fi
13368         ;;
13369 esac
13370
13371 : see if getgroups exists
13372 set getgroups d_getgrps
13373 eval $inlibc
13374
13375 : see if setgroups exists
13376 set setgroups d_setgrps
13377 eval $inlibc
13378
13379
13380 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13381 echo " "
13382 case "$d_getgrps$d_setgrps" in
13383 *define*)
13384         case "$groupstype" in
13385         '') dflt="$gidtype" ;;
13386         *)  dflt="$groupstype" ;;
13387         esac
13388         $cat <<EOM
13389 What type of pointer is the second argument to getgroups() and setgroups()?
13390 Usually this is the same as group ids, $gidtype, but not always.
13391
13392 EOM
13393         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13394         . ./myread
13395         groupstype="$ans"
13396         ;;
13397 *)  groupstype="$gidtype";;
13398 esac
13399
13400 echo " "
13401 echo "Checking if your $make program sets \$(MAKE)..." >&4
13402 case "$make_set_make" in
13403 '')
13404         $sed 's/^X //' > testmake.mak << 'EOF'
13405 Xall:
13406 X       @echo 'maketemp="$(MAKE)"'
13407 EOF
13408         case "`$make -f testmake.mak 2>/dev/null`" in
13409         *maketemp=*) make_set_make='#' ;;
13410         *)      make_set_make="MAKE=$make" ;;
13411         esac
13412         $rm -f testmake.mak
13413         ;;
13414 esac
13415 case "$make_set_make" in
13416 '#') echo "Yup, it does.";;
13417 *) echo "Nope, it doesn't.";;
13418 esac
13419
13420 : see what type is used for mode_t
13421 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13422 set mode_t modetype int stdio.h sys/types.h
13423 eval $typedef_ask
13424
13425 : define a fucntion to check prototypes
13426 $cat > protochk <<EOSH
13427 $startsh
13428 cc="$cc"
13429 optimize="$optimize"
13430 ccflags="$ccflags"
13431 prototype="$prototype"
13432 define="$define"
13433 rm=$rm
13434 EOSH
13435
13436 $cat >> protochk <<'EOSH'
13437
13438 $rm -f try.c
13439 foo="$1"
13440 shift
13441 while test $# -ge 2; do
13442         case "$1" in
13443                 $define) echo "#include <$2>" >> try.c ;;
13444                 literal) echo "$2" >> try.c ;;
13445         esac
13446     shift 2
13447 done
13448 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13449 cat >> try.c <<'EOCP'
13450 #ifdef CAN_PROTOTYPE
13451 #define _(args) args
13452 #else
13453 #define _(args) ()
13454 #endif
13455 EOCP
13456 echo "$foo" >> try.c
13457 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13458 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13459 status=$?
13460 $rm -f try.[co]
13461 exit $status
13462 EOSH
13463 chmod +x protochk
13464 $eunicefix protochk
13465
13466 : see what type is used for size_t
13467 rp="What is the type used for the length parameter for string functions?"
13468 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13469 eval $typedef_ask
13470
13471 : check for type of arguments to gethostbyaddr. 
13472 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13473         case "$d_gethbyaddr" in
13474         $define)
13475                 $cat <<EOM
13476
13477 Checking to see what type of arguments are accepted by gethostbyaddr().
13478 EOM
13479                 hdrs="$define sys/types.h
13480                         $d_socket sys/socket.h 
13481                         $i_niin netinet/in.h 
13482                         $i_netdb netdb.h
13483                         $i_unistd unistd.h"
13484                 : The first arg can 'char *' or 'void *'
13485                 : The second arg is some of integral type
13486                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13487                         for yyy in size_t long int; do
13488                                 case "$netdb_host_type" in
13489                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13490                                         if ./protochk "$try" $hdrs; then
13491                                                 echo "Your system accepts $xxx for the first arg."
13492                                                 echo "...and $yyy for the second arg."
13493                                                 netdb_host_type="$xxx"
13494                                                 netdb_hlen_type="$yyy"
13495                                         fi
13496                                         ;;
13497                                 esac
13498                         done
13499                 done
13500                 : In case none of those worked, prompt the user.
13501                 case "$netdb_host_type" in
13502                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13503                         dflt='char *'
13504                         . ./myread
13505                         netdb_host_type=$ans
13506                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13507                         dflt="$sizetype"
13508                         . ./myread
13509                         netdb_hlen_type=$ans
13510                         ;;
13511                 esac
13512                 ;;
13513         *)      : no gethostbyaddr, so pick harmless defaults
13514                 netdb_host_type='char *'
13515                 netdb_hlen_type="$sizetype"
13516                 ;;
13517         esac
13518         # Remove the "const" if needed. -- but then we'll have a 
13519         # prototype clash!
13520         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13521 fi
13522
13523 : check for type of argument to gethostbyname. 
13524 if test "X$netdb_name_type" = X ; then
13525         case "$d_gethbyname" in
13526         $define)
13527                 $cat <<EOM
13528
13529 Checking to see what type of argument is accepted by gethostbyname().
13530 EOM
13531                 hdrs="$define sys/types.h
13532                         $d_socket sys/socket.h 
13533                         $i_niin netinet/in.h 
13534                         $i_netdb netdb.h
13535                         $i_unistd unistd.h"
13536                 for xxx in "const char *" "char *"; do
13537                         case "$netdb_name_type" in
13538                         '')     try="extern struct hostent *gethostbyname($xxx);"
13539                                 if ./protochk "$try" $hdrs; then
13540                                         echo "Your system accepts $xxx."
13541                                         netdb_name_type="$xxx"
13542                                 fi
13543                                 ;;
13544                         esac
13545                 done
13546                 : In case none of those worked, prompt the user.
13547                 case "$netdb_name_type" in
13548                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13549                         dflt='char *'
13550                         . ./myread
13551                         netdb_name_type=$ans
13552                         ;;
13553                 esac
13554                 ;;
13555         *)      : no gethostbyname, so pick harmless default
13556                 netdb_name_type='char *'
13557                 ;;
13558         esac
13559 fi
13560
13561 : check for type of 1st argument to getnetbyaddr. 
13562 if test "X$netdb_net_type" = X ; then
13563         case "$d_getnbyaddr" in
13564         $define)
13565                 $cat <<EOM
13566
13567 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13568 EOM
13569                 hdrs="$define sys/types.h
13570                         $d_socket sys/socket.h 
13571                         $i_niin netinet/in.h 
13572                         $i_netdb netdb.h
13573                         $i_unistd unistd.h"
13574                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13575                         case "$netdb_net_type" in
13576                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13577                                 if ./protochk "$try" $hdrs; then
13578                                         echo "Your system accepts $xxx."
13579                                         netdb_net_type="$xxx"
13580                                 fi
13581                                 ;;
13582                         esac
13583                 done
13584                 : In case none of those worked, prompt the user.
13585                 case "$netdb_net_type" in
13586                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13587                         dflt='long'
13588                         . ./myread
13589                         netdb_net_type=$ans
13590                         ;;
13591                 esac
13592                 ;;
13593         *)      : no getnetbyaddr, so pick harmless default
13594                 netdb_net_type='long'
13595                 ;;
13596         esac
13597 fi
13598 : locate the preferred pager for this system
13599 case "$pager" in
13600 '')
13601         dflt=''
13602         case "$pg" in
13603         /*) dflt=$pg;;
13604         esac
13605         case "$more" in
13606         /*) dflt=$more;;
13607         esac
13608         case "$less" in
13609         /*) dflt=$less;;
13610         esac
13611         case "$dflt" in
13612         '') dflt=/usr/ucb/more;;
13613         esac
13614         ;;
13615 *) dflt="$pager";;
13616 esac
13617 echo " "
13618 fn=f/
13619 rp='What pager is used on your system?'
13620 . ./getfile
13621 pager="$ans"
13622
13623 : see what type pids are declared as in the kernel
13624 rp="What is the type of process ids on this system?"
13625 set pid_t pidtype int stdio.h sys/types.h
13626 eval $typedef_ask
13627
13628 : Find earliest binary compatible site_perl subdirectory perl can use.
13629 case "$bincompat5005" in
13630 "$define") xs_apiversion='5.005' ;;
13631 *) xs_apiversion=$version ;;   # The current site_perl version.
13632 esac
13633 : Find earliest pure perl site_perl subdirectory perl can use.
13634 : The versioned directories started at 5.005.
13635 pm_apiversion='5.005'
13636
13637 : check for length of pointer
13638 echo " "
13639 case "$ptrsize" in
13640 '')
13641         echo "Checking to see how big your pointers are..." >&4
13642         if test "$voidflags" -gt 7; then
13643                 echo '#define VOID_PTR char *' > try.c
13644         else
13645                 echo '#define VOID_PTR void *' > try.c
13646         fi
13647         $cat >>try.c <<'EOCP'
13648 #include <stdio.h>
13649 int main()
13650 {
13651     printf("%d\n", (int)sizeof(VOID_PTR));
13652     exit(0);
13653 }
13654 EOCP
13655         set try
13656         if eval $compile_ok; then
13657                 ptrsize=`./try`
13658                 echo "Your pointers are $ptrsize bytes long."
13659         else
13660                 dflt='4'
13661                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13662                 rp="What is the size of a pointer (in bytes)?"
13663                 . ./myread
13664                 ptrsize="$ans"
13665         fi
13666         ;;
13667 esac
13668 $rm -f try.c try
13669
13670 : see if ar generates random libraries by itself
13671 echo " "
13672 echo "Checking how to generate random libraries on your machine..." >&4
13673 echo 'int bar1() { return bar2(); }' > bar1.c
13674 echo 'int bar2() { return 2; }' > bar2.c
13675 $cat > foo.c <<'EOP'
13676 int main() { printf("%d\n", bar1()); exit(0); }
13677 EOP
13678 $cc $ccflags -c bar1.c >/dev/null 2>&1
13679 $cc $ccflags -c bar2.c >/dev/null 2>&1
13680 $cc $ccflags -c foo.c >/dev/null 2>&1
13681 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13682 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13683         ./foobar >/dev/null 2>&1; then
13684         echo "$ar appears to generate random libraries itself."
13685         orderlib=false
13686         ranlib=":"
13687 elif $ar ts bar$_a >/dev/null 2>&1 &&
13688         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13689         ./foobar >/dev/null 2>&1; then
13690                 echo "a table of contents needs to be added with '$ar ts'."
13691                 orderlib=false
13692                 ranlib="$ar ts"
13693 else
13694         case "$ranlib" in
13695         :) ranlib='';;
13696         '')
13697                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13698                 $test -f $ranlib || ranlib=''
13699                 ;;
13700         esac
13701         if $test -n "$ranlib"; then
13702                 echo "your system has '$ranlib'; we'll use that."
13703                 orderlib=false
13704         else
13705                 echo "your system doesn't seem to support random libraries"
13706                 echo "so we'll use lorder and tsort to order the libraries."
13707                 orderlib=true
13708                 ranlib=":"
13709         fi
13710 fi
13711 $rm -f foo* bar* 
13712
13713 : check for type of arguments to select. 
13714 case "$selecttype" in
13715 '') case "$d_select" in
13716         $define)
13717                 echo " "
13718                 $cat <<EOM
13719 Checking to see what type of arguments are accepted by select().
13720 EOM
13721                 hdrs="$define sys/types.h
13722                         $i_systime sys/time.h 
13723                         $i_sysselct sys/select.h
13724                         $d_socket sys/socket.h"
13725                 : The first arg can be int, unsigned, or size_t
13726                 : The last arg may or may not be 'const'
13727                 val=''
13728                 : void pointer has been seen but using that
13729                 : breaks the selectminbits test
13730                 for xxx in 'fd_set *' 'int *'; do
13731                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13732                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13733                                         case "$val" in
13734                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13735                                                 if ./protochk "$try" $hdrs; then
13736                                                         echo "Your system accepts $xxx."
13737                                                         val="$xxx"
13738                                                 fi
13739                                                 ;;
13740                                         esac
13741                                 done
13742                         done
13743                 done
13744                 case "$val" in
13745                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13746                         case "$d_fd_set" in
13747                                 $define) dflt="fd_set *" ;;
13748                                 *)              dflt="int *" ;;
13749                         esac
13750                         . ./myread
13751                         val=$ans
13752                         ;;
13753                 esac
13754                 selecttype="$val"
13755                 ;;
13756         *)      : no select, so pick a harmless default
13757                 selecttype='int *'
13758                 ;;
13759         esac
13760         ;;
13761 esac
13762
13763 : check for the select 'width'
13764 case "$selectminbits" in
13765 '') case "$d_select" in
13766         $define)
13767                 $cat <<EOM
13768
13769 Checking to see on how many bits at a time your select() operates...
13770 EOM
13771                 $cat >try.c <<EOCP
13772 #include <sys/types.h>
13773 #$i_time I_TIME
13774 #$i_systime I_SYS_TIME
13775 #$i_systimek I_SYS_TIME_KERNEL
13776 #ifdef I_TIME
13777 #   include <time.h>
13778 #endif
13779 #ifdef I_SYS_TIME
13780 #   ifdef I_SYS_TIME_KERNEL
13781 #       define KERNEL
13782 #   endif
13783 #   include <sys/time.h>
13784 #   ifdef I_SYS_TIME_KERNEL
13785 #       undef KERNEL
13786 #   endif
13787 #endif
13788 #$i_sysselct I_SYS_SELECT
13789 #ifdef I_SYS_SELECT
13790 #include <sys/select.h>
13791 #endif
13792 #$d_socket HAS_SOCKET
13793 #ifdef HAS_SOCKET
13794 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13795 #endif
13796 #include <stdio.h>
13797 $selecttype b;
13798 #define S sizeof(*(b))
13799 #define MINBITS 64
13800 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13801 #define NBITS  (NBYTES * 8)
13802 int main() {
13803     char s[NBYTES];
13804     struct timeval t;
13805     int i;
13806     FILE* fp;
13807     int fd;
13808
13809     fclose(stdin);
13810     fp = fopen("try.c", "r");
13811     if (fp == 0)
13812       exit(1);
13813     fd = fileno(fp);
13814     if (fd < 0)
13815       exit(2);
13816     b = ($selecttype)s;
13817     for (i = 0; i < NBITS; i++)
13818         FD_SET(i, b);
13819     t.tv_sec  = 0;
13820     t.tv_usec = 0;
13821     select(fd + 1, b, 0, 0, &t);
13822     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13823     printf("%d\n", i + 1);
13824     return 0;
13825 }
13826 EOCP
13827                 set try
13828                 if eval $compile_ok; then
13829                         selectminbits=`./try`
13830                         case "$selectminbits" in
13831                         '')     cat >&4 <<EOM
13832 Cannot figure out on how many bits at a time your select() operates.
13833 I'll play safe and guess it is 32 bits.
13834 EOM
13835                                 selectminbits=32
13836                                 bits="32 bits"
13837                                 ;;
13838                         1)      bits="1 bit" ;;
13839                         *)      bits="$selectminbits bits" ;;
13840                         esac
13841                         echo "Your select() operates on $bits at a time." >&4
13842                 else
13843                         rp='What is the minimum number of bits your select() operates on?'
13844                         case "$byteorder" in
13845                         1234|12345678)  dflt=32 ;;
13846                         *)              dflt=1  ;;
13847                         esac
13848                         . ./myread
13849                         val=$ans
13850                         selectminbits="$val"
13851                 fi
13852                 $rm -f try.* try
13853                 ;;
13854         *)      : no select, so pick a harmless default
13855                 selectminbits='32'
13856                 ;;
13857         esac
13858         ;;
13859 esac
13860
13861 : Trace out the files included by signal.h, then look for SIGxxx names.
13862 : Remove SIGARRAYSIZE used by HPUX.
13863 : Remove SIGSTKSIZE used by Linux.
13864 : Remove SIGSTKSZ used by Posix.
13865 : Remove SIGTYP void lines used by OS2.
13866 : Some cpps, like os390, dont give the file name anywhere
13867 if [ "X$fieldn" = X ]; then
13868         : Just make some guesses.  We check them later.
13869         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13870 else
13871         xxx=`echo '#include <signal.h>' |
13872         $cppstdin $cppminus $cppflags 2>/dev/null |
13873         $grep '^[       ]*#.*include' | 
13874         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13875 fi
13876 : Check this list of files to be sure we have parsed the cpp output ok.
13877 : This will also avoid potentially non-existent files, such 
13878 : as ../foo/bar.h
13879 xxxfiles=''
13880 for xx in $xxx /dev/null ; do
13881         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13882 done
13883 : If we have found no files, at least try signal.h
13884 case "$xxxfiles" in
13885 '')     xxxfiles=`./findhdr signal.h` ;;
13886 esac
13887 xxx=`awk '
13888 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13889         print substr($2, 4, 20)
13890 }
13891 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13892         print substr($3, 4, 20)
13893 }' $xxxfiles`
13894 : Append some common names just in case the awk scan failed.
13895 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13896 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13897 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13898 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13899 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13900
13901 : generate a few handy files for later
13902 $cat > signal.c <<'EOCP'
13903 #include <sys/types.h>
13904 #include <signal.h>
13905 #include <stdio.h>
13906 int main() {
13907
13908 /* Strange style to avoid deeply-nested #if/#else/#endif */
13909 #ifndef NSIG
13910 #  ifdef _NSIG
13911 #    define NSIG (_NSIG)
13912 #  endif
13913 #endif
13914
13915 #ifndef NSIG
13916 #  ifdef SIGMAX
13917 #    define NSIG (SIGMAX+1)
13918 #  endif
13919 #endif
13920
13921 #ifndef NSIG
13922 #  ifdef SIG_MAX
13923 #    define NSIG (SIG_MAX+1)
13924 #  endif
13925 #endif
13926
13927 #ifndef NSIG
13928 #  ifdef MAXSIG
13929 #    define NSIG (MAXSIG+1)
13930 #  endif
13931 #endif
13932
13933 #ifndef NSIG
13934 #  ifdef MAX_SIG
13935 #    define NSIG (MAX_SIG+1)
13936 #  endif
13937 #endif
13938
13939 #ifndef NSIG
13940 #  ifdef SIGARRAYSIZE
13941 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13942 #  endif
13943 #endif
13944
13945 #ifndef NSIG
13946 #  ifdef _sys_nsig
13947 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13948 #  endif
13949 #endif
13950
13951 /* Default to some arbitrary number that's big enough to get most
13952    of the common signals.
13953 */
13954 #ifndef NSIG
13955 #    define NSIG 50
13956 #endif
13957
13958 printf("NSIG %d\n", NSIG);
13959
13960 #ifndef JUST_NSIG
13961
13962 EOCP
13963
13964 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13965 {
13966         printf "#ifdef SIG"; printf $1; printf "\n"
13967         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13968         printf $1; printf ");\n"
13969         printf "#endif\n"
13970 }
13971 END {
13972         printf "#endif /* JUST_NSIG */\n";
13973         printf "exit(0);\n}\n";
13974 }
13975 ' >>signal.c
13976 $cat >signal.awk <<'EOP'
13977 BEGIN { ndups = 0 }
13978 $1 ~ /^NSIG$/ { nsig = $2 }
13979 ($1 !~ /^NSIG$/) && (NF == 2) {
13980     if ($2 > maxsig) { maxsig = $2 }
13981     if (sig_name[$2]) {
13982         dup_name[ndups] = $1
13983         dup_num[ndups] = $2
13984         ndups++ 
13985     }
13986     else {
13987         sig_name[$2] = $1
13988         sig_num[$2] = $2
13989     }
13990 }
13991 END { 
13992     if (nsig == 0) {
13993         nsig = maxsig + 1
13994     }
13995     printf("NSIG %d\n", nsig);
13996     for (n = 1; n < nsig; n++) {
13997         if (sig_name[n]) {
13998             printf("%s %d\n", sig_name[n], sig_num[n])
13999         }
14000         else {
14001             printf("NUM%d %d\n", n, n) 
14002         }
14003     }
14004     for (n = 0; n < ndups; n++) {
14005         printf("%s %d\n", dup_name[n], dup_num[n])
14006     }
14007 }
14008 EOP
14009 $cat >signal_cmd <<EOS
14010 $startsh
14011 if $test -s signal.lst; then
14012     echo "Using your existing signal.lst file"
14013         exit 0
14014 fi
14015 xxx="$xxx"
14016 EOS
14017 $cat >>signal_cmd <<'EOS'
14018
14019 set signal
14020 if eval $compile_ok; then
14021         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14022 else
14023         echo "(I can't seem be able to compile the whole test program)" >&4
14024         echo "(I'll try it in little pieces.)" >&4
14025         set signal -DJUST_NSIG
14026         if eval $compile_ok; then
14027                 ./signal$_exe > signal.nsg
14028                 $cat signal.nsg
14029         else
14030                 echo "I can't seem to figure out how many signals you have." >&4
14031                 echo "Guessing 50." >&4
14032                 echo 'NSIG 50' > signal.nsg
14033         fi
14034         : Now look at all the signal names, one at a time.
14035         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14036                 $cat > signal.c <<EOCP
14037 #include <sys/types.h>
14038 #include <signal.h>
14039 #include <stdio.h>
14040 int main() {
14041 printf("$xx %d\n", SIG${xx});
14042 return 0;
14043 }
14044 EOCP
14045                 set signal
14046                 if eval $compile; then
14047                         echo "SIG${xx} found."
14048                         ./signal$_exe  >> signal.ls1
14049                 else
14050                         echo "SIG${xx} NOT found."
14051                 fi
14052         done
14053         if $test -s signal.ls1; then
14054                 $cat signal.nsg signal.ls1 |
14055                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14056         fi
14057
14058 fi
14059 if $test -s signal.lst; then
14060         :
14061 else
14062         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14063         echo 'kill -l' >signal
14064         set X `csh -f <signal`
14065         $rm -f signal
14066         shift
14067         case $# in
14068         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14069         esac
14070         echo $@ | $tr ' ' $trnl | \
14071             $awk '{ printf "%s %d\n", $1, ++s; }
14072                   END { printf "NSIG %d\n", ++s }' >signal.lst
14073 fi
14074 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14075 EOS
14076 chmod a+x signal_cmd
14077 $eunicefix signal_cmd
14078
14079 : generate list of signal names
14080 echo " "
14081 case "$sig_name_init" in
14082 '') doinit=yes ;;
14083 *)  case "$sig_num_init" in
14084     ''|*,*) doinit=yes ;;
14085     esac ;;
14086 esac
14087 case "$doinit" in
14088 yes)
14089         echo "Generating a list of signal names and numbers..." >&4
14090         . ./signal_cmd
14091         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14092         sig_name=`$awk 'BEGIN { printf "ZERO " }
14093                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14094         sig_num=`$awk  'BEGIN { printf "0 " }
14095                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14096         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14097                              !/^NSIG/   { printf "\"%s\", ", $1 }
14098                              END        { printf "0\n" }' signal.lst`
14099         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14100                              !/^NSIG/   { printf "%d, ", $2}
14101                              END        { printf "0\n"}' signal.lst`
14102         ;;
14103 esac
14104 echo "The following $sig_count signals are available:"
14105 echo " "
14106 echo $sig_name | $awk \
14107 'BEGIN { linelen = 0 }
14108 {
14109         for (i = 1; i <= NF; i++) {
14110                 name = "SIG" $i " "
14111                 linelen = linelen + length(name)
14112                 if (linelen > 70) {
14113                         printf "\n"
14114                         linelen = length(name)
14115                 }
14116                 printf "%s", name
14117         }
14118         printf "\n"
14119 }'
14120 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14121
14122 echo " "
14123 case "$sizetype" in
14124 *_t) zzz="$sizetype"    ;;
14125 *)   zzz="filesize"     ;;
14126 esac
14127 echo "Checking the size of $zzz..." >&4 
14128 cat > try.c <<EOCP
14129 #include <sys/types.h>
14130 #include <stdio.h>
14131 int main() {
14132     printf("%d\n", (int)sizeof($sizetype));
14133     exit(0);
14134 }
14135 EOCP
14136 set try
14137 if eval $compile_ok; then
14138         yyy=`./try`
14139         case "$yyy" in
14140         '')     sizesize=4
14141                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14142                 ;;
14143         *)      sizesize=$yyy
14144                 echo "Your $zzz size is $sizesize bytes."
14145                 ;;
14146         esac
14147 else
14148         sizesize=4
14149         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14150 fi
14151
14152
14153 : check for socklen_t
14154 echo " "
14155 echo "Checking to see if you have socklen_t..." >&4
14156 $cat >try.c <<EOCP
14157 #include <sys/types.h>
14158 #$d_socket HAS_SOCKET
14159 #ifdef HAS_SOCKET
14160 #include <sys/socket.h>
14161 #endif
14162 int main() { socklen_t x = 16; }
14163 EOCP
14164 set try
14165 if eval $compile; then
14166         val="$define"
14167         echo "You have socklen_t."
14168 else
14169         val="$undef"
14170         echo "You do not have socklen_t."
14171         case "$sizetype" in
14172         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14173         esac
14174 fi
14175 $rm -f try try.*
14176 set d_socklen_t
14177 eval $setvar
14178
14179 : check for type of the size argument to socket calls
14180 case "$d_socket" in
14181 "$define")
14182         $cat <<EOM
14183
14184 Checking to see what type is the last argument of accept().
14185 EOM
14186         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14187         yyy=''
14188         case "$d_socklen_t" in
14189         "$define") yyy="$yyy socklen_t"
14190         esac
14191         yyy="$yyy $sizetype int long unsigned"
14192         for xxx in $yyy; do
14193                 case "$socksizetype" in
14194                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14195                         if ./protochk "$try" $hdrs; then
14196                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14197                                 socksizetype="$xxx"
14198                         fi
14199                         ;;
14200                 esac
14201         done
14202 : In case none of those worked, prompt the user.
14203         case "$socksizetype" in
14204         '')     rp='What is the type for socket address structure sizes?'
14205                 dflt='int'
14206                 . ./myread
14207                 socksizetype=$ans
14208                 ;;
14209         esac
14210         ;;
14211 *)      : no sockets, so pick relatively harmless default
14212         socksizetype='int'
14213         ;;
14214 esac
14215
14216 : see what type is used for signed size_t
14217 set ssize_t ssizetype int stdio.h sys/types.h
14218 eval $typedef
14219 dflt="$ssizetype"
14220 $cat > ssize.c <<EOM
14221 #include <stdio.h>
14222 #include <sys/types.h>
14223 #define Size_t $sizetype
14224 #define SSize_t $dflt
14225 int main()
14226 {
14227         if (sizeof(Size_t) == sizeof(SSize_t))
14228                 printf("$dflt\n");
14229         else if (sizeof(Size_t) == sizeof(int))
14230                 printf("int\n");
14231         else 
14232                 printf("long\n");
14233         exit(0);
14234 }
14235 EOM
14236 echo " "
14237 set ssize
14238 if eval $compile_ok && ./ssize > /dev/null; then
14239         ssizetype=`./ssize`
14240         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14241 else
14242         $cat >&4 <<EOM
14243 Help! I can't compile and run the ssize_t test program: please enlighten me!
14244 (This is probably a misconfiguration in your system or libraries, and
14245 you really ought to fix it.  Still, I'll try anyway.)
14246
14247 I need a type that is the same size as $sizetype, but is guaranteed to
14248 be signed.  Common values are ssize_t, int and long.
14249
14250 EOM
14251         rp="What signed type is the same size as $sizetype?"
14252         . ./myread
14253         ssizetype="$ans"
14254 fi
14255 $rm -f ssize ssize.*
14256
14257 : see what type of char stdio uses.
14258 echo " "
14259 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14260         echo "Your stdio uses unsigned chars." >&4
14261         stdchar="unsigned char"
14262 else
14263         echo "Your stdio uses signed chars." >&4
14264         stdchar="char"
14265 fi
14266
14267 : see if time exists
14268 echo " "
14269 if test "X$d_time" = X -o X"$timetype" = X; then
14270     if set time val -f d_time; eval $csym; $val; then
14271                 echo 'time() found.' >&4
14272                 val="$define"
14273                 rp="What is the type returned by time() on this system?"
14274                 set time_t timetype long stdio.h sys/types.h
14275                 eval $typedef_ask
14276     else
14277                 echo 'time() not found, hope that will do.' >&4
14278                 val="$undef"
14279                 timetype='int';
14280     fi
14281     set d_time
14282     eval $setvar
14283 fi
14284
14285 : see what type uids are declared as in the kernel
14286 echo " "
14287 echo "Looking for the type for user ids returned by getuid()."
14288 set uid_t uidtype xxx stdio.h sys/types.h
14289 eval $typedef
14290 case "$uidtype" in
14291 xxx)
14292         xxx=`./findhdr sys/user.h`
14293         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14294         case $1 in
14295         unsigned) dflt="$1 $2" ;;
14296         *) dflt="$1" ;;
14297         esac
14298         ;;
14299 *) dflt="$uidtype";;
14300 esac
14301 case "$uidtype" in
14302 uid_t)  echo "uid_t found." ;;
14303 *)      rp="What is the type for user ids returned by getuid()?"
14304         . ./myread
14305         uidtype="$ans"
14306         ;;
14307 esac
14308
14309 echo " "
14310 case "$uidtype" in
14311 *_t) zzz="$uidtype"     ;;
14312 *)   zzz="uid"          ;;
14313 esac
14314 echo "Checking the size of $zzz..." >&4 
14315 cat > try.c <<EOCP
14316 #include <sys/types.h>
14317 #include <stdio.h>
14318 int main() {
14319     printf("%d\n", (int)sizeof($uidtype));
14320     exit(0);
14321 }
14322 EOCP
14323 set try
14324 if eval $compile_ok; then
14325         yyy=`./try`
14326         case "$yyy" in
14327         '')     uidsize=4
14328                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14329                 ;;
14330         *)      uidsize=$yyy
14331                 echo "Your $zzz is $uidsize bytes long."
14332                 ;;
14333         esac
14334 else
14335         uidsize=4
14336         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14337 fi
14338
14339 echo " "
14340 case "$uidtype" in
14341 *_t) zzz="$uidtype"     ;;
14342 *)   zzz="uid"          ;;
14343 esac
14344 echo "Checking the sign of $zzz..." >&4
14345 cat > try.c <<EOCP
14346 #include <sys/types.h>
14347 #include <stdio.h>
14348 int main() {
14349         $uidtype foo = -1;
14350         if (foo < 0)
14351                 printf("-1\n");
14352         else
14353                 printf("1\n");
14354 }
14355 EOCP
14356 set try
14357 if eval $compile; then
14358         yyy=`./try`
14359         case "$yyy" in
14360         '')     uidsign=1
14361                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14362                 ;;
14363         *)      uidsign=$yyy
14364                 case "$uidsign" in
14365                  1) echo "Your $zzz is unsigned." ;;
14366                 -1) echo "Your $zzz is signed."   ;;
14367                 esac
14368                 ;;
14369         esac
14370 else
14371         uidsign=1
14372         echo "(I can't compile the test program--guessing unsigned.)" >&4
14373 fi
14374
14375
14376
14377 echo " "
14378 $echo "Checking the format string to be used for uids..." >&4
14379
14380 case "$uidsign" in
14381 -1)     if $test X"$uidsize" = X"$ivsize"; then
14382                 uidformat="$ivdformat"
14383         else
14384                 if $test X"$uidsize" = X"$longsize"; then
14385                         uidformat='"ld"'
14386                 else
14387                         if $test X"$uidsize" = X"$intsize"; then
14388                                 uidformat='"d"'
14389                         else
14390                                 if $test X"$uidsize" = X"$shortsize"; then
14391                                         uidformat='"hd"'
14392                                 fi
14393                         fi
14394                 fi
14395         fi
14396         ;;
14397 *)      if $test X"$uidsize" = X"$uvsize"; then
14398                 uidformat="$uvuformat"
14399         else
14400                 if $test X"$uidsize" = X"$longsize"; then
14401                         uidformat='"lu"'
14402                 else
14403                         if $test X"$uidsize" = X"$intsize"; then
14404                                 uidformat='"u"'
14405                         else
14406                                 if $test X"$uidsize" = X"$shortsize"; then
14407                                         uidformat='"hu"'
14408                                 fi
14409                         fi
14410                 fi
14411         fi
14412         ;;
14413 esac
14414
14415 : see if dbm.h is available
14416 : see if dbmclose exists
14417 set dbmclose d_dbmclose
14418 eval $inlibc
14419
14420 case "$d_dbmclose" in
14421 $define)
14422         set dbm.h i_dbm
14423         eval $inhdr
14424         case "$i_dbm" in
14425         $define)
14426                 val="$undef"
14427                 set i_rpcsvcdbm
14428                 eval $setvar
14429                 ;;
14430         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14431                 eval $inhdr
14432                 ;;
14433         esac
14434         ;;
14435 *)      echo "We won't be including <dbm.h>"
14436         val="$undef"
14437         set i_dbm
14438         eval $setvar
14439         val="$undef"
14440         set i_rpcsvcdbm
14441         eval $setvar
14442         ;;
14443 esac
14444
14445 : see if this is a sys/file.h system
14446 val=''
14447 set sys/file.h val
14448 eval $inhdr
14449
14450 : do we need to include sys/file.h ?
14451 case "$val" in
14452 "$define")
14453         echo " "
14454         if $h_sysfile; then
14455                 val="$define"
14456                 echo "We'll be including <sys/file.h>." >&4
14457         else
14458                 val="$undef"
14459                 echo "We won't be including <sys/file.h>." >&4
14460         fi
14461         ;;
14462 *)
14463         h_sysfile=false
14464         ;;
14465 esac
14466 set i_sysfile
14467 eval $setvar
14468
14469 : see if fcntl.h is there
14470 val=''
14471 set fcntl.h val
14472 eval $inhdr
14473
14474 : see if we can include fcntl.h
14475 case "$val" in
14476 "$define")
14477         echo " "
14478         if $h_fcntl; then
14479                 val="$define"
14480                 echo "We'll be including <fcntl.h>." >&4
14481         else
14482                 val="$undef"
14483                 if $h_sysfile; then
14484         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14485                 else
14486                         echo "We won't be including <fcntl.h>." >&4
14487                 fi
14488         fi
14489         ;;
14490 *)
14491         h_fcntl=false
14492         val="$undef"
14493         ;;
14494 esac
14495 set i_fcntl
14496 eval $setvar
14497
14498 : see if this is a iconv.h system
14499 set iconv.h i_iconv
14500 eval $inhdr
14501
14502 : see if this is a ieeefp.h system
14503 set ieeefp.h i_ieeefp
14504 eval $inhdr
14505
14506 : see if this is a libutil.h system
14507 set libutil.h i_libutil
14508 eval $inhdr
14509
14510 : see if locale.h is available
14511 set locale.h i_locale
14512 eval $inhdr
14513
14514 : see if mach cthreads are available
14515 if test "X$usethreads" = "X$define"; then
14516         set mach/cthreads.h i_machcthr
14517         eval $inhdr
14518 else
14519         i_machcthr="$undef"
14520 fi
14521
14522
14523
14524 : see if this is a math.h system
14525 set math.h i_math
14526 eval $inhdr
14527
14528 : see if this is a mntent.h system
14529 set mntent.h i_mntent
14530 eval $inhdr
14531
14532 : see if ndbm.h is available
14533 set ndbm.h t_ndbm
14534 eval $inhdr
14535 case "$t_ndbm" in
14536 $define)
14537         : see if dbm_open exists
14538         set dbm_open d_dbm_open
14539         eval $inlibc
14540         case "$d_dbm_open" in
14541         $undef)
14542                 t_ndbm="$undef"
14543                 echo "We won't be including <ndbm.h>"
14544                 ;;
14545         esac
14546         ;;
14547 esac
14548 val="$t_ndbm"
14549 set i_ndbm
14550 eval $setvar
14551
14552 : see if net/errno.h is available
14553 val=''
14554 set net/errno.h val
14555 eval $inhdr
14556
14557 : Unfortunately, it causes problems on some systems.  Arrgh.
14558 case "$val" in
14559 $define)
14560         cat > try.c <<'EOM'
14561 #include <stdio.h>
14562 #include <errno.h>
14563 #include <net/errno.h>
14564 int func()
14565 {
14566         return ENOTSOCK;
14567 }
14568 EOM
14569         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14570                 echo "We'll be including <net/errno.h>." >&4
14571         else
14572                 echo "We won't be including <net/errno.h>." >&4
14573                 val="$undef"
14574         fi
14575         $rm -f try.* try
14576         ;;
14577 esac
14578 set i_neterrno
14579 eval $setvar
14580
14581 : see if netinet/tcp.h is available
14582 set netinet/tcp.h i_netinettcp
14583 eval $inhdr
14584
14585 : see if this is a poll.h system
14586 set poll.h i_poll
14587 eval $inhdr
14588
14589 : see if this is a prot.h system
14590 set prot.h i_prot
14591 eval $inhdr
14592
14593 echo " "
14594 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14595 $cat <<'EOSH' > Cppsym.know
14596 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14597 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14598 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14599 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14600 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14601 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14602 bull c cadmus clipper CMU COFF COMPILER_VERSION
14603 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14604 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14605 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14606 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14607 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14608 H3050R H3050RX hbullx20 hcx host_mips
14609 hp200 hp300 hp700 HP700 hp800 hp9000
14610 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14611 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14612 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14613 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14614 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14615 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14616 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14617 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14618 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14619 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14620 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14621 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14622 MATH_HAS_NO_SIDE_EFFECTS
14623 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14624 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14625 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14626 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14627 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14628 NetBSD news1500 news1700 news1800 news1900 news3700
14629 news700 news800 news900 NeXT NLS ns16000 ns32000
14630 ns32016 ns32332 ns32k nsc32000
14631 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14632 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14633 pc532 pdp11 PGC PIC plexus PORTAR posix
14634 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14635 POSIX_C_SOURCE POSIX_SOURCE POWER
14636 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14637 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14638 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14639 sony sony_news sonyrisc sparc sparclite spectrum
14640 stardent stdc STDC_EXT stratos sun sun3 sun386
14641 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14642 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14643 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14644 sysV68 sysV88 Tek4132 Tek4300 titan
14645 tower tower32 tower32_200 tower32_600 tower32_700
14646 tower32_800 tower32_850 tss
14647 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14648 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14649 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14650 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14651 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14652 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14653 z8000
14654 EOSH
14655 # Maybe put other stuff here too.
14656 cat <<EOSH >>Cppsym.know
14657 $osname
14658 EOSH
14659 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14660 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14661 $cat Cppsym.know > Cppsym.c
14662 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14663 $rm -f Cppsym.a Cppsym.b Cppsym.c
14664 cat <<EOSH > Cppsym
14665 $startsh
14666 if $test \$# -gt 0; then
14667     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14668     if $test -s Cppsym.got; then
14669         $rm -f Cppsym.got
14670         exit 0
14671     fi
14672     $rm -f Cppsym.got
14673     exit 1
14674 else
14675     $tr " " "$trnl" | ./Cppsym.try
14676     exit 0
14677 fi
14678 EOSH
14679 chmod +x Cppsym
14680 $eunicefix Cppsym
14681 cat <<EOSH > Cppsym.try
14682 $startsh
14683 cat <<'EOCP' > try.c
14684 #include <stdio.h>
14685 int main() {
14686 EOCP
14687 $awk \\
14688 EOSH
14689 cat <<'EOSH' >> Cppsym.try
14690 'length($1) > 0 {
14691     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
14692     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
14693     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
14694     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
14695 }'       >> try.c
14696 echo '}' >> try.c
14697 EOSH
14698 cat <<EOSH >> Cppsym.try
14699 ccflags="$ccflags"
14700 case "$osname-$gccversion" in
14701 irix-) ccflags="\$ccflags -woff 1178" ;;
14702 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14703 esac
14704 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14705 EOSH
14706 chmod +x Cppsym.try
14707 $eunicefix Cppsym.try
14708 ./Cppsym < Cppsym.know > Cppsym.true
14709 : now check the C compiler for additional symbols
14710 postprocess_cc_v=''
14711 case "$osname" in
14712 aix) postprocess_cc_v="|$tr , ' '" ;;
14713 esac
14714 $cat >ccsym <<EOS
14715 $startsh
14716 $cat >tmp.c <<EOF
14717 extern int foo;
14718 EOF
14719 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14720 do
14721         case "\$i" in
14722         -D*) echo "\$i" | $sed 's/^-D//';;
14723         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14724         esac
14725 done
14726 $rm -f try.c
14727 EOS
14728 postprocess_cc_v=''
14729 chmod +x ccsym
14730 $eunicefix ccsym
14731 ./ccsym > ccsym1.raw
14732 if $test -s ccsym1.raw; then
14733        $sort ccsym1.raw | $uniq >ccsym.raw
14734 else
14735        mv ccsym1.raw ccsym.raw
14736 fi
14737
14738 $awk '/\=/ { print $0; next }
14739         { print $0"=1" }' ccsym.raw >ccsym.list
14740 $awk '/\=/ { print $0; next }
14741         { print $0"=1" }' Cppsym.true >ccsym.true
14742 $comm -13 ccsym.true ccsym.list >ccsym.own
14743 $comm -12 ccsym.true ccsym.list >ccsym.com
14744 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14745 also=''
14746 if $test -z ccsym.raw; then
14747         echo "Your C compiler doesn't seem to define any symbols!" >&4
14748         echo " "
14749         echo "However, your C preprocessor defines the following symbols:"
14750         $cat Cppsym.true
14751         ccsymbols=''
14752         cppsymbols=`$cat Cppsym.true`
14753         cppsymbols=`echo $cppsymbols`
14754         cppccsymbols="$cppsymbols"
14755 else
14756         if $test -s ccsym.com; then
14757                 echo "Your C compiler and pre-processor define these symbols:"
14758                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14759                 also='also '
14760                 symbols='ones'
14761                 cppccsymbols=`$cat ccsym.com`
14762                 cppccsymbols=`echo $cppccsymbols`
14763                 $test "$silent" || sleep 1
14764         fi
14765         if $test -s ccsym.cpp; then
14766                 $test "$also" && echo " "
14767                 echo "Your C pre-processor ${also}defines the following symbols:"
14768                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14769                 also='further '
14770                 cppsymbols=`$cat ccsym.cpp`
14771                 cppsymbols=`echo $cppsymbols`
14772                 $test "$silent" || sleep 1
14773         fi
14774         if $test -s ccsym.own; then
14775                 $test "$also" && echo " "
14776                 echo "Your C compiler ${also}defines the following cpp symbols:"
14777                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14778                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14779                 ccsymbols=`$cat ccsym.own`
14780                 ccsymbols=`echo $ccsymbols`
14781                 $test "$silent" || sleep 1
14782         fi
14783 fi
14784 $rm -f ccsym* Cppsym.*
14785
14786 : see if this is a termio system
14787 val="$undef"
14788 val2="$undef"
14789 val3="$undef"
14790 if $test `./findhdr termios.h`; then
14791         set tcsetattr i_termios
14792         eval $inlibc
14793         val3="$i_termios"
14794 fi
14795 echo " "
14796 case "$val3" in
14797 "$define") echo "You have POSIX termios.h... good!" >&4;;
14798 *) if ./Cppsym pyr; then
14799                 case "`/bin/universe`" in
14800                 ucb) if $test `./findhdr sgtty.h`; then
14801                                 val2="$define"
14802                                 echo "<sgtty.h> found." >&4
14803                         else
14804                                 echo "System is pyramid with BSD universe."
14805                                 echo "<sgtty.h> not found--you could have problems." >&4
14806                         fi;;
14807                 *) if $test `./findhdr termio.h`; then
14808                                 val="$define"
14809                                 echo "<termio.h> found." >&4
14810                         else
14811                                 echo "System is pyramid with USG universe."
14812                                 echo "<termio.h> not found--you could have problems." >&4
14813                         fi;;
14814                 esac
14815         elif ./usg; then
14816                 if $test `./findhdr termio.h`; then
14817                         echo "<termio.h> found." >&4
14818                         val="$define"
14819                 elif $test `./findhdr sgtty.h`; then
14820                         echo "<sgtty.h> found." >&4
14821                         val2="$define"
14822                 else
14823 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14824                 fi
14825         else
14826                 if $test `./findhdr sgtty.h`; then
14827                         echo "<sgtty.h> found." >&4
14828                         val2="$define"
14829                 elif $test `./findhdr termio.h`; then
14830                         echo "<termio.h> found." >&4
14831                         val="$define"
14832                 else
14833 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14834                 fi
14835         fi;;
14836 esac
14837 set i_termio; eval $setvar
14838 val=$val2; set i_sgtty; eval $setvar
14839 val=$val3; set i_termios; eval $setvar
14840
14841 : see if this is a shadow.h system
14842 set shadow.h i_shadow
14843 eval $inhdr
14844
14845 : see if this is a socks.h system
14846 set socks.h i_socks
14847 eval $inhdr
14848
14849 : see if stdarg is available
14850 echo " "
14851 if $test `./findhdr stdarg.h`; then
14852         echo "<stdarg.h> found." >&4
14853         valstd="$define"
14854 else
14855         echo "<stdarg.h> NOT found." >&4
14856         valstd="$undef"
14857 fi
14858
14859 : see if varags is available
14860 echo " "
14861 if $test `./findhdr varargs.h`; then
14862         echo "<varargs.h> found." >&4
14863 else
14864         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14865 fi
14866
14867 : set up the varargs testing programs
14868 $cat > varargs.c <<EOP
14869 #ifdef I_STDARG
14870 #include <stdarg.h>
14871 #endif
14872 #ifdef I_VARARGS
14873 #include <varargs.h>
14874 #endif
14875
14876 #ifdef I_STDARG
14877 int f(char *p, ...)
14878 #else
14879 int f(va_alist)
14880 va_dcl
14881 #endif
14882 {
14883         va_list ap;
14884 #ifndef I_STDARG
14885         char *p;
14886 #endif
14887 #ifdef I_STDARG
14888         va_start(ap,p);
14889 #else
14890         va_start(ap);
14891         p = va_arg(ap, char *);
14892 #endif
14893         va_end(ap);
14894 }
14895 EOP
14896 $cat > varargs <<EOP
14897 $startsh
14898 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14899         echo "true"
14900 else
14901         echo "false"
14902 fi
14903 $rm -f varargs$_o
14904 EOP
14905 chmod +x varargs
14906
14907 : now check which varargs header should be included
14908 echo " "
14909 i_varhdr=''
14910 case "$valstd" in
14911 "$define")
14912         if `./varargs I_STDARG`; then
14913                 val='stdarg.h'
14914         elif `./varargs I_VARARGS`; then
14915                 val='varargs.h'
14916         fi
14917         ;;
14918 *)
14919         if `./varargs I_VARARGS`; then
14920                 val='varargs.h'
14921         fi
14922         ;;
14923 esac
14924 case "$val" in
14925 '')
14926 echo "I could not find the definition for va_dcl... You have problems..." >&4
14927         val="$undef"; set i_stdarg; eval $setvar
14928         val="$undef"; set i_varargs; eval $setvar
14929         ;;
14930 *) 
14931         set i_varhdr
14932         eval $setvar
14933         case "$i_varhdr" in
14934         stdarg.h)
14935                 val="$define"; set i_stdarg; eval $setvar
14936                 val="$undef"; set i_varargs; eval $setvar
14937                 ;;
14938         varargs.h)
14939                 val="$undef"; set i_stdarg; eval $setvar
14940                 val="$define"; set i_varargs; eval $setvar
14941                 ;;
14942         esac
14943         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14944 esac
14945 $rm -f varargs*
14946
14947 : see if stddef is available
14948 set stddef.h i_stddef
14949 eval $inhdr
14950
14951 : see if this is a sunmath.h system
14952 set sunmath.h i_sunmath
14953 eval $inhdr
14954
14955 : see if sys/access.h is available
14956 set sys/access.h i_sysaccess
14957 eval $inhdr
14958
14959 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14960 set sys/filio.h i_sysfilio
14961 eval $inhdr
14962 echo " "
14963 if $test `./findhdr sys/ioctl.h`; then
14964         val="$define"
14965         echo '<sys/ioctl.h> found.' >&4
14966 else
14967         val="$undef"
14968         if $test $i_sysfilio = "$define"; then
14969             echo '<sys/ioctl.h> NOT found.' >&4
14970         else
14971                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14972                 $test $i_termio = "$define" && xxx="termio.h"
14973                 $test $i_termios = "$define" && xxx="termios.h"
14974 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14975         fi
14976 fi
14977 set i_sysioctl
14978 eval $setvar
14979
14980
14981 : see if this is a syslog.h system
14982 set syslog.h i_syslog
14983 eval $inhdr
14984
14985
14986 : see if this is a sys/mode.h system
14987 set sys/mode.h i_sysmode
14988 eval $inhdr
14989
14990 : see if sys/resource.h has to be included
14991 set sys/resource.h i_sysresrc
14992 eval $inhdr
14993
14994 : see if sys/security.h is available
14995 set sys/security.h i_syssecrt
14996 eval $inhdr
14997
14998 : see if this is a sys/statvfs.h system
14999 set sys/statvfs.h i_sysstatvfs
15000 eval $inhdr
15001
15002 : see if this is a sys/uio.h system
15003 set sys/uio.h i_sysuio
15004 eval $inhdr
15005
15006 : see if this is a sys/un.h system
15007 set sys/un.h i_sysun
15008 eval $inhdr
15009
15010
15011 : see if this is a sys/utsname.h system
15012 set sys/utsname.h i_sysutsname
15013 eval $inhdr
15014
15015 : see if this is a syswait system
15016 set sys/wait.h i_syswait
15017 eval $inhdr
15018
15019 : see if this is a ustat.h system
15020 set ustat.h i_ustat
15021 eval $inhdr
15022
15023 : see if this is an utime system
15024 set utime.h i_utime
15025 eval $inhdr
15026
15027 : see if this is a values.h system
15028 set values.h i_values
15029 eval $inhdr
15030
15031 : see if this is a vfork system
15032 case "$d_vfork" in
15033 "$define")
15034         set vfork.h i_vfork
15035         eval $inhdr
15036         ;;
15037 *)
15038         i_vfork="$undef"
15039         ;;
15040 esac
15041
15042 : see if gdbm.h is available
15043 set gdbm.h t_gdbm
15044 eval $inhdr
15045 case "$t_gdbm" in
15046 $define)
15047         : see if gdbm_open exists
15048         set gdbm_open d_gdbm_open
15049         eval $inlibc
15050         case "$d_gdbm_open" in
15051         $undef)
15052                 t_gdbm="$undef"
15053                 echo "We won't be including <gdbm.h>"
15054                 ;;
15055         esac
15056         ;;
15057 esac
15058 val="$t_gdbm"
15059 set i_gdbm
15060 eval $setvar
15061
15062 echo " "
15063 echo "Looking for extensions..." >&4
15064 : If we are using the old config.sh, known_extensions may contain
15065 : old or inaccurate or duplicate values.
15066 known_extensions=''
15067 nonxs_extensions=''
15068 : We do not use find because it might not be available.
15069 : We do not just use MANIFEST because the user may have dropped
15070 : some additional extensions into the source tree and expect them
15071 : to be built.
15072
15073 : Function to recursively find available extensions, ignoring DynaLoader
15074 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15075 find_extensions='
15076     for xxx in *; do
15077        case "$xxx" in
15078            DynaLoader|dynaload) ;;
15079            *)
15080            if $test -f $xxx/$xxx.xs; then
15081                known_extensions="$known_extensions $1$xxx";
15082            elif $test -f $xxx/Makefile.PL; then
15083                nonxs_extensions="$nonxs_extensions $1$xxx";
15084            else
15085                if $test -d $xxx -a $# -lt 10; then
15086                    set $1$xxx/ $*;
15087                    cd $xxx;
15088                    eval $find_extensions;
15089                    cd ..;
15090                    shift;
15091                fi;
15092            fi
15093            ;;
15094        esac;
15095     done'
15096 tdir=`pwd`
15097 cd $rsrc/ext
15098 set X
15099 shift
15100 eval $find_extensions
15101 set X $nonxs_extensions
15102 shift
15103 nonxs_extensions="$*"
15104 set X $known_extensions
15105 shift
15106 known_extensions="$*"
15107 cd $tdir
15108
15109 : Now see which are supported on this system.
15110 avail_ext=''
15111 for xxx in $known_extensions ; do
15112         case "$xxx" in
15113         DB_File|db_file)
15114                 case "$i_db" in
15115                 $define) avail_ext="$avail_ext $xxx" ;;
15116                 esac
15117                 ;;
15118         GDBM_File|gdbm_fil)
15119                 case "$i_gdbm" in 
15120                 $define) avail_ext="$avail_ext $xxx" ;;
15121                 esac
15122                 ;;
15123         NDBM_File|ndbm_fil)
15124                 case "$i_ndbm" in
15125                 $define)
15126                     case "$osname-$use64bitint" in
15127                     hpux-define)
15128                         case "$libs" in
15129                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15130                         esac
15131                         ;;
15132                     *) avail_ext="$avail_ext $xxx" ;;
15133                     esac
15134                     ;;
15135                 esac
15136                 ;;
15137         ODBM_File|odbm_fil) 
15138                 case "${i_dbm}${i_rpcsvcdbm}" in
15139                 *"${define}"*)
15140                     case "$osname-$use64bitint" in
15141                     hpux-define)
15142                         case "$libs" in
15143                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15144                         esac
15145                         ;;
15146                     *) avail_ext="$avail_ext $xxx" ;;
15147                     esac
15148                     ;;
15149                 esac
15150                 ;;
15151         POSIX|posix)
15152                 case "$useposix" in
15153                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15154                 esac
15155                 ;;
15156         Opcode|opcode)
15157                 case "$useopcode" in
15158                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15159                 esac
15160                 ;;
15161         Socket|socket)
15162                 case "$d_socket" in 
15163                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15164                 esac
15165                 ;;
15166         Sys/Syslog|sys/syslog)
15167                 : XXX syslog requires socket
15168                 case "$d_socket" in 
15169                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15170                 esac
15171                 ;;
15172         Thread|thread)
15173                 case "$usethreads" in 
15174                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15175                 esac
15176                 ;;
15177         IPC/SysV|ipc/sysv)
15178                 : XXX Do we need a useipcsysv variable here
15179                 case "${d_msg}${d_sem}${d_shm}" in 
15180                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15181                 esac
15182                 ;;
15183         *)      avail_ext="$avail_ext $xxx"
15184                 ;;
15185         esac
15186 done
15187
15188 set X $avail_ext
15189 shift
15190 avail_ext="$*"
15191
15192 : Now see which nonxs extensions are supported on this system.
15193 : For now assume all are.
15194 nonxs_ext=''
15195 for xxx in $nonxs_extensions ; do
15196         case "$xxx" in
15197         *)      nonxs_ext="$nonxs_ext $xxx"
15198                 ;;
15199         esac
15200 done
15201
15202 set X $nonxs_ext
15203 shift
15204 nonxs_ext="$*"
15205
15206 case $usedl in
15207 $define)
15208         $cat <<EOM
15209 A number of extensions are supplied with $package.  You may choose to
15210 compile these extensions for dynamic loading (the default), compile
15211 them into the $package executable (static loading), or not include
15212 them at all.  Answer "none" to include no extensions.
15213 Note that DynaLoader is always built and need not be mentioned here.
15214
15215 EOM
15216         case "$dynamic_ext" in
15217         '') dflt="$avail_ext" ;;
15218         *)      dflt="$dynamic_ext"
15219                 # Perhaps we are reusing an old out-of-date config.sh.
15220                 case "$hint" in
15221                 previous)
15222                         if test X"$dynamic_ext" != X"$avail_ext"; then
15223                                 $cat <<EOM
15224 NOTICE:  Your previous config.sh list may be incorrect. 
15225 The extensions now available to you are 
15226         ${avail_ext}
15227 but the default list from your previous config.sh is
15228         ${dynamic_ext} 
15229
15230 EOM
15231                         fi
15232                         ;;
15233                 esac
15234                 ;;
15235         esac
15236         case "$dflt" in
15237         '')     dflt=none;;
15238         esac
15239         rp="What extensions do you wish to load dynamically?"
15240         . ./myread
15241         case "$ans" in
15242         none) dynamic_ext=' ' ;;
15243         *) dynamic_ext="$ans" ;;
15244         esac
15245
15246         case "$static_ext" in
15247         '')
15248                 : Exclude those already listed in dynamic linking
15249                 dflt=''
15250                 for xxx in $avail_ext; do
15251                         case " $dynamic_ext " in
15252                         *" $xxx "*) ;;
15253                         *) dflt="$dflt $xxx" ;;
15254                         esac
15255                 done
15256                 set X $dflt
15257                 shift
15258                 dflt="$*"
15259                 ;;
15260         *)  dflt="$static_ext" 
15261                 ;;
15262         esac
15263
15264         case "$dflt" in
15265         '')     dflt=none;;
15266         esac
15267         rp="What extensions do you wish to load statically?"
15268         . ./myread
15269         case "$ans" in
15270         none) static_ext=' ' ;;
15271         *) static_ext="$ans" ;;
15272         esac
15273         ;;
15274 *)
15275         $cat <<EOM
15276 A number of extensions are supplied with $package.  Answer "none" 
15277 to include no extensions. 
15278 Note that DynaLoader is always built and need not be mentioned here.
15279
15280 EOM
15281         case "$static_ext" in
15282         '') dflt="$avail_ext" ;;
15283         *)      dflt="$static_ext"
15284                 # Perhaps we are reusing an old out-of-date config.sh.
15285                 case "$hint" in
15286                 previous)
15287                         if test X"$static_ext" != X"$avail_ext"; then
15288                                 $cat <<EOM
15289 NOTICE:  Your previous config.sh list may be incorrect. 
15290 The extensions now available to you are 
15291         ${avail_ext}
15292 but the default list from your previous config.sh is
15293         ${static_ext} 
15294
15295 EOM
15296                         fi
15297                         ;;
15298                 esac
15299                 ;;
15300         esac
15301         : Exclude those that are not xs extensions
15302         case "$dflt" in
15303         '')     dflt=none;;
15304         esac
15305         rp="What extensions do you wish to include?"
15306         . ./myread
15307         case "$ans" in
15308         none) static_ext=' ' ;;
15309         *) static_ext="$ans" ;;
15310         esac
15311         ;;
15312 esac
15313
15314 set X $dynamic_ext $static_ext $nonxs_ext
15315 shift
15316 extensions="$*"
15317
15318 : Remove build directory name from cppstdin so it can be used from
15319 : either the present location or the final installed location.
15320 echo " "
15321 : Get out of the UU directory to get correct path name.
15322 cd ..
15323 case "$cppstdin" in
15324 `pwd`/cppstdin)
15325         echo "Stripping down cppstdin path name"
15326         cppstdin=cppstdin
15327         ;;
15328 esac
15329 cd UU
15330
15331 : end of configuration questions
15332 echo " "
15333 echo "End of configuration questions."
15334 echo " "
15335
15336 : back to where it started
15337 if test -d ../UU; then
15338         cd ..
15339 fi
15340
15341 : configuration may be patched via a 'config.over' file
15342 if $test -f config.over; then
15343         echo " "
15344         dflt=y
15345         rp='I see a config.over file.  Do you wish to load it?'
15346         . UU/myread
15347         case "$ans" in
15348         n*) echo "OK, I'll ignore it.";;
15349         *)      . ./config.over
15350                 echo "Configuration override changes have been loaded."
15351                 ;;
15352         esac
15353 fi
15354
15355 : in case they want portability, strip down executable paths
15356 case "$d_portable" in
15357 "$define")
15358         echo " "
15359         echo "Stripping down executable paths..." >&4
15360         for file in $loclist $trylist; do
15361                 eval temp=\$$file
15362                 eval $file=`basename $temp`
15363         done
15364         ;;
15365 esac
15366
15367 : create config.sh file
15368 echo " "
15369 echo "Creating config.sh..." >&4
15370 $spitshell <<EOT >config.sh
15371 $startsh
15372 #
15373 # This file was produced by running the Configure script. It holds all the
15374 # definitions figured out by Configure. Should you modify one of these values,
15375 # do not forget to propagate your changes by running "Configure -der". You may
15376 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15377 #
15378
15379 # Package name      : $package
15380 # Source directory  : $src
15381 # Configuration time: $cf_time
15382 # Configured by     : $cf_by
15383 # Target system     : $myuname
15384
15385 Author='$Author'
15386 Date='$Date'
15387 Header='$Header'
15388 Id='$Id'
15389 Locker='$Locker'
15390 Log='$Log'
15391 Mcc='$Mcc'
15392 RCSfile='$RCSfile'
15393 Revision='$Revision'
15394 Source='$Source'
15395 State='$State'
15396 _a='$_a'
15397 _exe='$_exe'
15398 _o='$_o'
15399 afs='$afs'
15400 alignbytes='$alignbytes'
15401 ansi2knr='$ansi2knr'
15402 aphostname='$aphostname'
15403 api_revision='$api_revision'
15404 api_subversion='$api_subversion'
15405 api_version='$api_version'
15406 api_versionstring='$api_versionstring'
15407 ar='$ar'
15408 archlib='$archlib'
15409 archlibexp='$archlibexp'
15410 archname64='$archname64'
15411 archname='$archname'
15412 archobjs='$archobjs'
15413 awk='$awk'
15414 baserev='$baserev'
15415 bash='$bash'
15416 bin='$bin'
15417 bincompat5005='$bincompat5005'
15418 binexp='$binexp'
15419 bison='$bison'
15420 byacc='$byacc'
15421 byteorder='$byteorder'
15422 c='$c'
15423 castflags='$castflags'
15424 cat='$cat'
15425 cc='$cc'
15426 cccdlflags='$cccdlflags'
15427 ccdlflags='$ccdlflags'
15428 ccflags='$ccflags'
15429 ccflags_uselargefiles='$ccflags_uselargefiles'
15430 ccname='$ccname'
15431 ccsymbols='$ccsymbols'
15432 cf_by='$cf_by'
15433 cf_email='$cf_email'
15434 cf_time='$cf_time'
15435 charsize='$charsize'
15436 chgrp='$chgrp'
15437 chmod='$chmod'
15438 chown='$chown'
15439 clocktype='$clocktype'
15440 comm='$comm'
15441 compress='$compress'
15442 contains='$contains'
15443 cp='$cp'
15444 cpio='$cpio'
15445 cpp='$cpp'
15446 cpp_stuff='$cpp_stuff'
15447 cppccsymbols='$cppccsymbols'
15448 cppflags='$cppflags'
15449 cpplast='$cpplast'
15450 cppminus='$cppminus'
15451 cpprun='$cpprun'
15452 cppstdin='$cppstdin'
15453 cppsymbols='$cppsymbols'
15454 crosscompile='$crosscompile'
15455 cryptlib='$cryptlib'
15456 csh='$csh'
15457 d_Gconvert='$d_Gconvert'
15458 d_PRIEldbl='$d_PRIEldbl'
15459 d_PRIFldbl='$d_PRIFldbl'
15460 d_PRIGldbl='$d_PRIGldbl'
15461 d_PRIX64='$d_PRIX64'
15462 d_PRId64='$d_PRId64'
15463 d_PRIeldbl='$d_PRIeldbl'
15464 d_PRIfldbl='$d_PRIfldbl'
15465 d_PRIgldbl='$d_PRIgldbl'
15466 d_PRIi64='$d_PRIi64'
15467 d_PRIo64='$d_PRIo64'
15468 d_PRIu64='$d_PRIu64'
15469 d_PRIx64='$d_PRIx64'
15470 d_SCNfldbl='$d_SCNfldbl'
15471 d_access='$d_access'
15472 d_accessx='$d_accessx'
15473 d_alarm='$d_alarm'
15474 d_archlib='$d_archlib'
15475 d_atolf='$d_atolf'
15476 d_atoll='$d_atoll'
15477 d_attribut='$d_attribut'
15478 d_bcmp='$d_bcmp'
15479 d_bcopy='$d_bcopy'
15480 d_bincompat5005='$d_bincompat5005'
15481 d_bsd='$d_bsd'
15482 d_bsdgetpgrp='$d_bsdgetpgrp'
15483 d_bsdsetpgrp='$d_bsdsetpgrp'
15484 d_bzero='$d_bzero'
15485 d_casti32='$d_casti32'
15486 d_castneg='$d_castneg'
15487 d_charvspr='$d_charvspr'
15488 d_chown='$d_chown'
15489 d_chroot='$d_chroot'
15490 d_chsize='$d_chsize'
15491 d_closedir='$d_closedir'
15492 d_const='$d_const'
15493 d_crypt='$d_crypt'
15494 d_csh='$d_csh'
15495 d_cuserid='$d_cuserid'
15496 d_dbl_dig='$d_dbl_dig'
15497 d_difftime='$d_difftime'
15498 d_dirnamlen='$d_dirnamlen'
15499 d_dlerror='$d_dlerror'
15500 d_dlopen='$d_dlopen'
15501 d_dlsymun='$d_dlsymun'
15502 d_dosuid='$d_dosuid'
15503 d_drand48proto='$d_drand48proto'
15504 d_dup2='$d_dup2'
15505 d_eaccess='$d_eaccess'
15506 d_endgrent='$d_endgrent'
15507 d_endhent='$d_endhent'
15508 d_endnent='$d_endnent'
15509 d_endpent='$d_endpent'
15510 d_endpwent='$d_endpwent'
15511 d_endsent='$d_endsent'
15512 d_eofnblk='$d_eofnblk'
15513 d_eunice='$d_eunice'
15514 d_fchmod='$d_fchmod'
15515 d_fchown='$d_fchown'
15516 d_fcntl='$d_fcntl'
15517 d_fd_macros='$d_fd_macros'
15518 d_fd_set='$d_fd_set'
15519 d_fds_bits='$d_fds_bits'
15520 d_fgetpos='$d_fgetpos'
15521 d_flexfnam='$d_flexfnam'
15522 d_flock='$d_flock'
15523 d_fork='$d_fork'
15524 d_fpathconf='$d_fpathconf'
15525 d_fpos64_t='$d_fpos64_t'
15526 d_frexpl='$d_frexpl'
15527 d_fs_data_s='$d_fs_data_s'
15528 d_fseeko='$d_fseeko'
15529 d_fsetpos='$d_fsetpos'
15530 d_fstatfs='$d_fstatfs'
15531 d_fstatvfs='$d_fstatvfs'
15532 d_ftello='$d_ftello'
15533 d_ftime='$d_ftime'
15534 d_getcwd='$d_getcwd'
15535 d_getespwnam='$d_getespwnam'
15536 d_getfsstat='$d_getfsstat'
15537 d_getgrent='$d_getgrent'
15538 d_getgrps='$d_getgrps'
15539 d_gethbyaddr='$d_gethbyaddr'
15540 d_gethbyname='$d_gethbyname'
15541 d_gethent='$d_gethent'
15542 d_gethname='$d_gethname'
15543 d_gethostprotos='$d_gethostprotos'
15544 d_getlogin='$d_getlogin'
15545 d_getmnt='$d_getmnt'
15546 d_getmntent='$d_getmntent'
15547 d_getnbyaddr='$d_getnbyaddr'
15548 d_getnbyname='$d_getnbyname'
15549 d_getnent='$d_getnent'
15550 d_getnetprotos='$d_getnetprotos'
15551 d_getpbyname='$d_getpbyname'
15552 d_getpbynumber='$d_getpbynumber'
15553 d_getpent='$d_getpent'
15554 d_getpgid='$d_getpgid'
15555 d_getpgrp2='$d_getpgrp2'
15556 d_getpgrp='$d_getpgrp'
15557 d_getppid='$d_getppid'
15558 d_getprior='$d_getprior'
15559 d_getprotoprotos='$d_getprotoprotos'
15560 d_getprpwnam='$d_getprpwnam'
15561 d_getpwent='$d_getpwent'
15562 d_getsbyname='$d_getsbyname'
15563 d_getsbyport='$d_getsbyport'
15564 d_getsent='$d_getsent'
15565 d_getservprotos='$d_getservprotos'
15566 d_getspnam='$d_getspnam'
15567 d_gettimeod='$d_gettimeod'
15568 d_gnulibc='$d_gnulibc'
15569 d_grpasswd='$d_grpasswd'
15570 d_hasmntopt='$d_hasmntopt'
15571 d_htonl='$d_htonl'
15572 d_iconv='$d_iconv'
15573 d_index='$d_index'
15574 d_inetaton='$d_inetaton'
15575 d_int64_t='$d_int64_t'
15576 d_isascii='$d_isascii'
15577 d_isnan='$d_isnan'
15578 d_isnanl='$d_isnanl'
15579 d_killpg='$d_killpg'
15580 d_lchown='$d_lchown'
15581 d_ldbl_dig='$d_ldbl_dig'
15582 d_link='$d_link'
15583 d_locconv='$d_locconv'
15584 d_lockf='$d_lockf'
15585 d_longdbl='$d_longdbl'
15586 d_longlong='$d_longlong'
15587 d_lseekproto='$d_lseekproto'
15588 d_lstat='$d_lstat'
15589 d_madvise='$d_madvise'
15590 d_mblen='$d_mblen'
15591 d_mbstowcs='$d_mbstowcs'
15592 d_mbtowc='$d_mbtowc'
15593 d_memchr='$d_memchr'
15594 d_memcmp='$d_memcmp'
15595 d_memcpy='$d_memcpy'
15596 d_memmove='$d_memmove'
15597 d_memset='$d_memset'
15598 d_mkdir='$d_mkdir'
15599 d_mkdtemp='$d_mkdtemp'
15600 d_mkfifo='$d_mkfifo'
15601 d_mkstemp='$d_mkstemp'
15602 d_mkstemps='$d_mkstemps'
15603 d_mktime='$d_mktime'
15604 d_mmap='$d_mmap'
15605 d_modfl='$d_modfl'
15606 d_mprotect='$d_mprotect'
15607 d_msg='$d_msg'
15608 d_msg_ctrunc='$d_msg_ctrunc'
15609 d_msg_dontroute='$d_msg_dontroute'
15610 d_msg_oob='$d_msg_oob'
15611 d_msg_peek='$d_msg_peek'
15612 d_msg_proxy='$d_msg_proxy'
15613 d_msgctl='$d_msgctl'
15614 d_msgget='$d_msgget'
15615 d_msgrcv='$d_msgrcv'
15616 d_msgsnd='$d_msgsnd'
15617 d_msync='$d_msync'
15618 d_munmap='$d_munmap'
15619 d_mymalloc='$d_mymalloc'
15620 d_nice='$d_nice'
15621 d_nv_preserves_uv='$d_nv_preserves_uv'
15622 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15623 d_off64_t='$d_off64_t'
15624 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15625 d_oldpthreads='$d_oldpthreads'
15626 d_oldsock='$d_oldsock'
15627 d_open3='$d_open3'
15628 d_pathconf='$d_pathconf'
15629 d_pause='$d_pause'
15630 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15631 d_phostname='$d_phostname'
15632 d_pipe='$d_pipe'
15633 d_poll='$d_poll'
15634 d_portable='$d_portable'
15635 d_pthread_yield='$d_pthread_yield'
15636 d_pwage='$d_pwage'
15637 d_pwchange='$d_pwchange'
15638 d_pwclass='$d_pwclass'
15639 d_pwcomment='$d_pwcomment'
15640 d_pwexpire='$d_pwexpire'
15641 d_pwgecos='$d_pwgecos'
15642 d_pwpasswd='$d_pwpasswd'
15643 d_pwquota='$d_pwquota'
15644 d_qgcvt='$d_qgcvt'
15645 d_quad='$d_quad'
15646 d_readdir='$d_readdir'
15647 d_readlink='$d_readlink'
15648 d_rename='$d_rename'
15649 d_rewinddir='$d_rewinddir'
15650 d_rmdir='$d_rmdir'
15651 d_safebcpy='$d_safebcpy'
15652 d_safemcpy='$d_safemcpy'
15653 d_sanemcmp='$d_sanemcmp'
15654 d_sched_yield='$d_sched_yield'
15655 d_scm_rights='$d_scm_rights'
15656 d_seekdir='$d_seekdir'
15657 d_select='$d_select'
15658 d_sem='$d_sem'
15659 d_semctl='$d_semctl'
15660 d_semctl_semid_ds='$d_semctl_semid_ds'
15661 d_semctl_semun='$d_semctl_semun'
15662 d_semget='$d_semget'
15663 d_semop='$d_semop'
15664 d_setegid='$d_setegid'
15665 d_seteuid='$d_seteuid'
15666 d_setgrent='$d_setgrent'
15667 d_setgrps='$d_setgrps'
15668 d_sethent='$d_sethent'
15669 d_setlinebuf='$d_setlinebuf'
15670 d_setlocale='$d_setlocale'
15671 d_setnent='$d_setnent'
15672 d_setpent='$d_setpent'
15673 d_setpgid='$d_setpgid'
15674 d_setpgrp2='$d_setpgrp2'
15675 d_setpgrp='$d_setpgrp'
15676 d_setprior='$d_setprior'
15677 d_setproctitle='$d_setproctitle'
15678 d_setpwent='$d_setpwent'
15679 d_setregid='$d_setregid'
15680 d_setresgid='$d_setresgid'
15681 d_setresuid='$d_setresuid'
15682 d_setreuid='$d_setreuid'
15683 d_setrgid='$d_setrgid'
15684 d_setruid='$d_setruid'
15685 d_setsent='$d_setsent'
15686 d_setsid='$d_setsid'
15687 d_setvbuf='$d_setvbuf'
15688 d_sfio='$d_sfio'
15689 d_shm='$d_shm'
15690 d_shmat='$d_shmat'
15691 d_shmatprototype='$d_shmatprototype'
15692 d_shmctl='$d_shmctl'
15693 d_shmdt='$d_shmdt'
15694 d_shmget='$d_shmget'
15695 d_sigaction='$d_sigaction'
15696 d_sigsetjmp='$d_sigsetjmp'
15697 d_socket='$d_socket'
15698 d_socklen_t='$d_socklen_t'
15699 d_sockpair='$d_sockpair'
15700 d_socks5_init='$d_socks5_init'
15701 d_sqrtl='$d_sqrtl'
15702 d_statblks='$d_statblks'
15703 d_statfs_f_flags='$d_statfs_f_flags'
15704 d_statfs_s='$d_statfs_s'
15705 d_statvfs='$d_statvfs'
15706 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15707 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15708 d_stdio_stream_array='$d_stdio_stream_array'
15709 d_stdiobase='$d_stdiobase'
15710 d_stdstdio='$d_stdstdio'
15711 d_strchr='$d_strchr'
15712 d_strcoll='$d_strcoll'
15713 d_strctcpy='$d_strctcpy'
15714 d_strerrm='$d_strerrm'
15715 d_strerror='$d_strerror'
15716 d_strtod='$d_strtod'
15717 d_strtol='$d_strtol'
15718 d_strtold='$d_strtold'
15719 d_strtoll='$d_strtoll'
15720 d_strtoul='$d_strtoul'
15721 d_strtoull='$d_strtoull'
15722 d_strtouq='$d_strtouq'
15723 d_strxfrm='$d_strxfrm'
15724 d_suidsafe='$d_suidsafe'
15725 d_symlink='$d_symlink'
15726 d_syscall='$d_syscall'
15727 d_sysconf='$d_sysconf'
15728 d_sysernlst='$d_sysernlst'
15729 d_syserrlst='$d_syserrlst'
15730 d_system='$d_system'
15731 d_tcgetpgrp='$d_tcgetpgrp'
15732 d_tcsetpgrp='$d_tcsetpgrp'
15733 d_telldir='$d_telldir'
15734 d_telldirproto='$d_telldirproto'
15735 d_time='$d_time'
15736 d_times='$d_times'
15737 d_truncate='$d_truncate'
15738 d_tzname='$d_tzname'
15739 d_umask='$d_umask'
15740 d_uname='$d_uname'
15741 d_union_semun='$d_union_semun'
15742 d_ustat='$d_ustat'
15743 d_vendorarch='$d_vendorarch'
15744 d_vendorbin='$d_vendorbin'
15745 d_vendorlib='$d_vendorlib'
15746 d_vfork='$d_vfork'
15747 d_void_closedir='$d_void_closedir'
15748 d_voidsig='$d_voidsig'
15749 d_voidtty='$d_voidtty'
15750 d_volatile='$d_volatile'
15751 d_vprintf='$d_vprintf'
15752 d_wait4='$d_wait4'
15753 d_waitpid='$d_waitpid'
15754 d_wcstombs='$d_wcstombs'
15755 d_wctomb='$d_wctomb'
15756 d_xenix='$d_xenix'
15757 date='$date'
15758 db_hashtype='$db_hashtype'
15759 db_prefixtype='$db_prefixtype'
15760 defvoidused='$defvoidused'
15761 direntrytype='$direntrytype'
15762 dlext='$dlext'
15763 dlsrc='$dlsrc'
15764 doublesize='$doublesize'
15765 drand01='$drand01'
15766 dynamic_ext='$dynamic_ext'
15767 eagain='$eagain'
15768 ebcdic='$ebcdic'
15769 echo='$echo'
15770 egrep='$egrep'
15771 emacs='$emacs'
15772 eunicefix='$eunicefix'
15773 exe_ext='$exe_ext'
15774 expr='$expr'
15775 extensions='$extensions'
15776 fflushNULL='$fflushNULL'
15777 fflushall='$fflushall'
15778 find='$find'
15779 firstmakefile='$firstmakefile'
15780 flex='$flex'
15781 fpossize='$fpossize'
15782 fpostype='$fpostype'
15783 freetype='$freetype'
15784 full_ar='$full_ar'
15785 full_csh='$full_csh'
15786 full_sed='$full_sed'
15787 gccosandvers='$gccosandvers'
15788 gccversion='$gccversion'
15789 gidformat='$gidformat'
15790 gidsign='$gidsign'
15791 gidsize='$gidsize'
15792 gidtype='$gidtype'
15793 glibpth='$glibpth'
15794 grep='$grep'
15795 groupcat='$groupcat'
15796 groupstype='$groupstype'
15797 gzip='$gzip'
15798 h_fcntl='$h_fcntl'
15799 h_sysfile='$h_sysfile'
15800 hint='$hint'
15801 hostcat='$hostcat'
15802 huge='$huge'
15803 i16size='$i16size'
15804 i16type='$i16type'
15805 i32size='$i32size'
15806 i32type='$i32type'
15807 i64size='$i64size'
15808 i64type='$i64type'
15809 i8size='$i8size'
15810 i8type='$i8type'
15811 i_arpainet='$i_arpainet'
15812 i_bsdioctl='$i_bsdioctl'
15813 i_db='$i_db'
15814 i_dbm='$i_dbm'
15815 i_dirent='$i_dirent'
15816 i_dld='$i_dld'
15817 i_dlfcn='$i_dlfcn'
15818 i_fcntl='$i_fcntl'
15819 i_float='$i_float'
15820 i_gdbm='$i_gdbm'
15821 i_grp='$i_grp'
15822 i_iconv='$i_iconv'
15823 i_ieeefp='$i_ieeefp'
15824 i_inttypes='$i_inttypes'
15825 i_libutil='$i_libutil'
15826 i_limits='$i_limits'
15827 i_locale='$i_locale'
15828 i_machcthr='$i_machcthr'
15829 i_malloc='$i_malloc'
15830 i_math='$i_math'
15831 i_memory='$i_memory'
15832 i_mntent='$i_mntent'
15833 i_ndbm='$i_ndbm'
15834 i_netdb='$i_netdb'
15835 i_neterrno='$i_neterrno'
15836 i_netinettcp='$i_netinettcp'
15837 i_niin='$i_niin'
15838 i_poll='$i_poll'
15839 i_prot='$i_prot'
15840 i_pthread='$i_pthread'
15841 i_pwd='$i_pwd'
15842 i_rpcsvcdbm='$i_rpcsvcdbm'
15843 i_sfio='$i_sfio'
15844 i_sgtty='$i_sgtty'
15845 i_shadow='$i_shadow'
15846 i_socks='$i_socks'
15847 i_stdarg='$i_stdarg'
15848 i_stddef='$i_stddef'
15849 i_stdlib='$i_stdlib'
15850 i_string='$i_string'
15851 i_sunmath='$i_sunmath'
15852 i_sysaccess='$i_sysaccess'
15853 i_sysdir='$i_sysdir'
15854 i_sysfile='$i_sysfile'
15855 i_sysfilio='$i_sysfilio'
15856 i_sysin='$i_sysin'
15857 i_sysioctl='$i_sysioctl'
15858 i_syslog='$i_syslog'
15859 i_sysmman='$i_sysmman'
15860 i_sysmode='$i_sysmode'
15861 i_sysmount='$i_sysmount'
15862 i_sysndir='$i_sysndir'
15863 i_sysparam='$i_sysparam'
15864 i_sysresrc='$i_sysresrc'
15865 i_syssecrt='$i_syssecrt'
15866 i_sysselct='$i_sysselct'
15867 i_syssockio='$i_syssockio'
15868 i_sysstat='$i_sysstat'
15869 i_sysstatfs='$i_sysstatfs'
15870 i_sysstatvfs='$i_sysstatvfs'
15871 i_systime='$i_systime'
15872 i_systimek='$i_systimek'
15873 i_systimes='$i_systimes'
15874 i_systypes='$i_systypes'
15875 i_sysuio='$i_sysuio'
15876 i_sysun='$i_sysun'
15877 i_sysutsname='$i_sysutsname'
15878 i_sysvfs='$i_sysvfs'
15879 i_syswait='$i_syswait'
15880 i_termio='$i_termio'
15881 i_termios='$i_termios'
15882 i_time='$i_time'
15883 i_unistd='$i_unistd'
15884 i_ustat='$i_ustat'
15885 i_utime='$i_utime'
15886 i_values='$i_values'
15887 i_varargs='$i_varargs'
15888 i_varhdr='$i_varhdr'
15889 i_vfork='$i_vfork'
15890 ignore_versioned_solibs='$ignore_versioned_solibs'
15891 inc_version_list='$inc_version_list'
15892 inc_version_list_init='$inc_version_list_init'
15893 incpath='$incpath'
15894 inews='$inews'
15895 installarchlib='$installarchlib'
15896 installbin='$installbin'
15897 installman1dir='$installman1dir'
15898 installman3dir='$installman3dir'
15899 installprefix='$installprefix'
15900 installprefixexp='$installprefixexp'
15901 installprivlib='$installprivlib'
15902 installscript='$installscript'
15903 installsitearch='$installsitearch'
15904 installsitebin='$installsitebin'
15905 installsitelib='$installsitelib'
15906 installstyle='$installstyle'
15907 installusrbinperl='$installusrbinperl'
15908 installvendorarch='$installvendorarch'
15909 installvendorbin='$installvendorbin'
15910 installvendorlib='$installvendorlib'
15911 intsize='$intsize'
15912 ivdformat='$ivdformat'
15913 ivsize='$ivsize'
15914 ivtype='$ivtype'
15915 known_extensions='$known_extensions'
15916 ksh='$ksh'
15917 large='$large'
15918 ld='$ld'
15919 lddlflags='$lddlflags'
15920 ldflags='$ldflags'
15921 ldflags_uselargefiles='$ldflags_uselargefiles'
15922 ldlibpthname='$ldlibpthname'
15923 less='$less'
15924 lib_ext='$lib_ext'
15925 libc='$libc'
15926 libperl='$libperl'
15927 libpth='$libpth'
15928 libs='$libs'
15929 libsdirs='$libsdirs'
15930 libsfiles='$libsfiles'
15931 libsfound='$libsfound'
15932 libspath='$libspath'
15933 libswanted='$libswanted'
15934 libswanted_uselargefiles='$libswanted_uselargefiles'
15935 line='$line'
15936 lint='$lint'
15937 lkflags='$lkflags'
15938 ln='$ln'
15939 lns='$lns'
15940 locincpth='$locincpth'
15941 loclibpth='$loclibpth'
15942 longdblsize='$longdblsize'
15943 longlongsize='$longlongsize'
15944 longsize='$longsize'
15945 lp='$lp'
15946 lpr='$lpr'
15947 ls='$ls'
15948 lseeksize='$lseeksize'
15949 lseektype='$lseektype'
15950 mail='$mail'
15951 mailx='$mailx'
15952 make='$make'
15953 make_set_make='$make_set_make'
15954 mallocobj='$mallocobj'
15955 mallocsrc='$mallocsrc'
15956 malloctype='$malloctype'
15957 man1dir='$man1dir'
15958 man1direxp='$man1direxp'
15959 man1ext='$man1ext'
15960 man3dir='$man3dir'
15961 man3direxp='$man3direxp'
15962 man3ext='$man3ext'
15963 medium='$medium'
15964 mips_type='$mips_type'
15965 mkdir='$mkdir'
15966 mmaptype='$mmaptype'
15967 models='$models'
15968 modetype='$modetype'
15969 more='$more'
15970 multiarch='$multiarch'
15971 mv='$mv'
15972 myarchname='$myarchname'
15973 mydomain='$mydomain'
15974 myhostname='$myhostname'
15975 myuname='$myuname'
15976 n='$n'
15977 netdb_hlen_type='$netdb_hlen_type'
15978 netdb_host_type='$netdb_host_type'
15979 netdb_name_type='$netdb_name_type'
15980 netdb_net_type='$netdb_net_type'
15981 nm='$nm'
15982 nm_opt='$nm_opt'
15983 nm_so_opt='$nm_so_opt'
15984 nonxs_ext='$nonxs_ext'
15985 nroff='$nroff'
15986 nvEformat='$nvEformat'
15987 nvFformat='$nvFformat'
15988 nvGformat='$nvGformat'
15989 nveformat='$nveformat'
15990 nvfformat='$nvfformat'
15991 nvgformat='$nvgformat'
15992 nvsize='$nvsize'
15993 nvtype='$nvtype'
15994 o_nonblock='$o_nonblock'
15995 obj_ext='$obj_ext'
15996 old_pthread_create_joinable='$old_pthread_create_joinable'
15997 optimize='$optimize'
15998 orderlib='$orderlib'
15999 osname='$osname'
16000 osvers='$osvers'
16001 otherlibdirs='$otherlibdirs'
16002 package='$package'
16003 pager='$pager'
16004 passcat='$passcat'
16005 patchlevel='$patchlevel'
16006 path_sep='$path_sep'
16007 perl5='$perl5'
16008 perl='$perl'
16009 perladmin='$perladmin'
16010 perlpath='$perlpath'
16011 pg='$pg'
16012 phostname='$phostname'
16013 pidtype='$pidtype'
16014 plibpth='$plibpth'
16015 pm_apiversion='$pm_apiversion'
16016 pmake='$pmake'
16017 pr='$pr'
16018 prefix='$prefix'
16019 prefixexp='$prefixexp'
16020 privlib='$privlib'
16021 privlibexp='$privlibexp'
16022 prototype='$prototype'
16023 ptrsize='$ptrsize'
16024 quadkind='$quadkind'
16025 quadtype='$quadtype'
16026 randbits='$randbits'
16027 randfunc='$randfunc'
16028 randseedtype='$randseedtype'
16029 ranlib='$ranlib'
16030 rd_nodata='$rd_nodata'
16031 revision='$revision'
16032 rm='$rm'
16033 rmail='$rmail'
16034 runnm='$runnm'
16035 sPRIEldbl='$sPRIEldbl'
16036 sPRIFldbl='$sPRIFldbl'
16037 sPRIGldbl='$sPRIGldbl'
16038 sPRIX64='$sPRIX64'
16039 sPRId64='$sPRId64'
16040 sPRIeldbl='$sPRIeldbl'
16041 sPRIfldbl='$sPRIfldbl'
16042 sPRIgldbl='$sPRIgldbl'
16043 sPRIi64='$sPRIi64'
16044 sPRIo64='$sPRIo64'
16045 sPRIu64='$sPRIu64'
16046 sPRIx64='$sPRIx64'
16047 sSCNfldbl='$sSCNfldbl'
16048 sched_yield='$sched_yield'
16049 scriptdir='$scriptdir'
16050 scriptdirexp='$scriptdirexp'
16051 sed='$sed'
16052 seedfunc='$seedfunc'
16053 selectminbits='$selectminbits'
16054 selecttype='$selecttype'
16055 sendmail='$sendmail'
16056 sh='$sh'
16057 shar='$shar'
16058 sharpbang='$sharpbang'
16059 shmattype='$shmattype'
16060 shortsize='$shortsize'
16061 shrpenv='$shrpenv'
16062 shsharp='$shsharp'
16063 sig_count='$sig_count'
16064 sig_name='$sig_name'
16065 sig_name_init='$sig_name_init'
16066 sig_num='$sig_num'
16067 sig_num_init='$sig_num_init'
16068 signal_t='$signal_t'
16069 sitearch='$sitearch'
16070 sitearchexp='$sitearchexp'
16071 sitebin='$sitebin'
16072 sitebinexp='$sitebinexp'
16073 sitelib='$sitelib'
16074 sitelib_stem='$sitelib_stem'
16075 sitelibexp='$sitelibexp'
16076 siteprefix='$siteprefix'
16077 siteprefixexp='$siteprefixexp'
16078 sizesize='$sizesize'
16079 sizetype='$sizetype'
16080 sleep='$sleep'
16081 smail='$smail'
16082 small='$small'
16083 so='$so'
16084 sockethdr='$sockethdr'
16085 socketlib='$socketlib'
16086 socksizetype='$socksizetype'
16087 sort='$sort'
16088 spackage='$spackage'
16089 spitshell='$spitshell'
16090 split='$split'
16091 src='$src'
16092 ssizetype='$ssizetype'
16093 startperl='$startperl'
16094 startsh='$startsh'
16095 static_ext='$static_ext'
16096 stdchar='$stdchar'
16097 stdio_base='$stdio_base'
16098 stdio_bufsiz='$stdio_bufsiz'
16099 stdio_cnt='$stdio_cnt'
16100 stdio_filbuf='$stdio_filbuf'
16101 stdio_ptr='$stdio_ptr'
16102 stdio_stream_array='$stdio_stream_array'
16103 strings='$strings'
16104 submit='$submit'
16105 subversion='$subversion'
16106 sysman='$sysman'
16107 tail='$tail'
16108 tar='$tar'
16109 tbl='$tbl'
16110 tee='$tee'
16111 test='$test'
16112 timeincl='$timeincl'
16113 timetype='$timetype'
16114 touch='$touch'
16115 tr='$tr'
16116 trnl='$trnl'
16117 troff='$troff'
16118 u16size='$u16size'
16119 u16type='$u16type'
16120 u32size='$u32size'
16121 u32type='$u32type'
16122 u64size='$u64size'
16123 u64type='$u64type'
16124 u8size='$u8size'
16125 u8type='$u8type'
16126 uidformat='$uidformat'
16127 uidsign='$uidsign'
16128 uidsize='$uidsize'
16129 uidtype='$uidtype'
16130 uname='$uname'
16131 uniq='$uniq'
16132 uquadtype='$uquadtype'
16133 use5005threads='$use5005threads'
16134 use64bitall='$use64bitall'
16135 use64bitint='$use64bitint'
16136 usedl='$usedl'
16137 useithreads='$useithreads'
16138 uselargefiles='$uselargefiles'
16139 uselongdouble='$uselongdouble'
16140 usemorebits='$usemorebits'
16141 usemultiplicity='$usemultiplicity'
16142 usemymalloc='$usemymalloc'
16143 usenm='$usenm'
16144 useopcode='$useopcode'
16145 useperlio='$useperlio'
16146 useposix='$useposix'
16147 usesfio='$usesfio'
16148 useshrplib='$useshrplib'
16149 usesocks='$usesocks'
16150 usethreads='$usethreads'
16151 usevendorprefix='$usevendorprefix'
16152 usevfork='$usevfork'
16153 usrinc='$usrinc'
16154 uuname='$uuname'
16155 uvXformat='$uvXformat'
16156 uvoformat='$uvoformat'
16157 uvsize='$uvsize'
16158 uvtype='$uvtype'
16159 uvuformat='$uvuformat'
16160 uvxformat='$uvxformat'
16161 vendorarch='$vendorarch'
16162 vendorarchexp='$vendorarchexp'
16163 vendorbin='$vendorbin'
16164 vendorbinexp='$vendorbinexp'
16165 vendorlib='$vendorlib'
16166 vendorlib_stem='$vendorlib_stem'
16167 vendorlibexp='$vendorlibexp'
16168 vendorprefix='$vendorprefix'
16169 vendorprefixexp='$vendorprefixexp'
16170 version='$version'
16171 vi='$vi'
16172 voidflags='$voidflags'
16173 xlibpth='$xlibpth'
16174 xs_apiversion='$xs_apiversion'
16175 zcat='$zcat'
16176 zip='$zip'
16177 EOT
16178
16179 : Add in command line options if available
16180 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16181
16182 : add special variables
16183 $test -f $src/patchlevel.h && \
16184 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16185 echo "CONFIGDOTSH=true" >>config.sh
16186
16187 : propagate old symbols
16188 if $test -f UU/config.sh; then
16189         <UU/config.sh sort | uniq >UU/oldconfig.sh
16190         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16191         sort | uniq -u >UU/oldsyms
16192         set X `cat UU/oldsyms`
16193         shift
16194         case $# in
16195         0) ;;
16196         *)
16197                 cat <<EOM
16198 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16199 EOM
16200                 echo "# Variables propagated from previous config.sh file." >>config.sh
16201                 for sym in `cat UU/oldsyms`; do
16202                         echo "    Propagating $hint variable "'$'"$sym..."
16203                         eval 'tmp="$'"${sym}"'"'
16204                         echo "$tmp" | \
16205                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16206                 done
16207                 ;;
16208         esac
16209 fi
16210
16211 : Finish up by extracting the .SH files
16212 case "$alldone" in
16213 exit)
16214         $rm -rf UU
16215         echo "Done."
16216         exit 0
16217         ;;
16218 cont)
16219         ;;
16220 '')
16221         dflt=''
16222         nostick=true
16223         $cat <<EOM
16224
16225 If you'd like to make any changes to the config.sh file before I begin
16226 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16227
16228 EOM
16229         rp="Press return or use a shell escape to edit config.sh:"
16230         . UU/myread
16231         nostick=''
16232         case "$ans" in
16233         '') ;;
16234         *) : in case they cannot read
16235                 sh 1>&4 -c "$ans";;
16236         esac
16237         ;;
16238 esac
16239
16240 : if this fails, just run all the .SH files by hand
16241 . ./config.sh
16242
16243 echo " "
16244 exec 1>&4
16245 . ./UU/extract
16246
16247 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16248         dflt=y
16249         case "$silent" in
16250         true) ;;
16251         *)
16252                 $cat <<EOM
16253
16254 Now you need to generate make dependencies by running "$make depend".
16255 You might prefer to run it in background: "$make depend > makedepend.out &"
16256 It can take a while, so you might not want to run it right now.
16257
16258 EOM
16259                 ;;
16260         esac
16261         rp="Run $make depend now?"
16262         . UU/myread
16263         case "$ans" in
16264         y*)
16265                 $make depend && echo "Now you must run a $make."
16266                 ;;
16267         *)
16268                 echo "You must run '$make depend' then '$make'."
16269                 ;;
16270         esac
16271 elif test -f [Mm]akefile; then
16272         echo " "
16273         echo "Now you must run a $make."
16274 else
16275         echo "Done."
16276 fi
16277
16278 if $test -f Policy.sh; then
16279     $cat <<EOM
16280
16281 If you compile $package on a different machine or from a different object
16282 directory, copy the Policy.sh file from this object directory to the
16283 new one before you run Configure -- this will help you with most of
16284 the policy defaults.
16285
16286 EOM
16287 fi
16288 if $test -f config.msg; then
16289     echo "Hmm.  I also noted the following information while running:"
16290     echo " "
16291     $cat config.msg >&4
16292     $rm -f config.msg
16293 fi
16294 $rm -f kit*isdone ark*isdone
16295 $rm -rf UU
16296
16297 : End of Configure
16298