Re: [PATCH] av.h cosmetics
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Tue Mar 27 07:51:37 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >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 >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 c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ 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 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 perllibs=''
169 dynamic_ext=''
170 extensions=''
171 known_extensions=''
172 nonxs_ext=''
173 static_ext=''
174 useopcode=''
175 useposix=''
176 d_bsd=''
177 d_eunice=''
178 d_xenix=''
179 eunicefix=''
180 Mcc=''
181 ar=''
182 awk=''
183 bash=''
184 bison=''
185 byacc=''
186 cat=''
187 chgrp=''
188 chmod=''
189 chown=''
190 comm=''
191 compress=''
192 cp=''
193 cpio=''
194 cpp=''
195 csh=''
196 date=''
197 echo=''
198 egrep=''
199 emacs=''
200 expr=''
201 find=''
202 flex=''
203 grep=''
204 gzip=''
205 inews=''
206 ksh=''
207 less=''
208 line=''
209 lint=''
210 ln=''
211 lp=''
212 lpr=''
213 ls=''
214 mail=''
215 mailx=''
216 make=''
217 mkdir=''
218 more=''
219 mv=''
220 nm=''
221 nroff=''
222 perl=''
223 pg=''
224 pmake=''
225 pr=''
226 rm=''
227 rmail=''
228 sed=''
229 sendmail=''
230 shar=''
231 sleep=''
232 smail=''
233 sort=''
234 submit=''
235 tail=''
236 tar=''
237 tbl=''
238 tee=''
239 test=''
240 touch=''
241 tr=''
242 troff=''
243 uname=''
244 uniq=''
245 uuname=''
246 vi=''
247 zcat=''
248 zip=''
249 full_ar=''
250 full_sed=''
251 libswanted=''
252 hint=''
253 myuname=''
254 osname=''
255 osvers=''
256 Author=''
257 Date=''
258 Header=''
259 Id=''
260 Locker=''
261 Log=''
262 RCSfile=''
263 Revision=''
264 Source=''
265 State=''
266 _a=''
267 _exe=''
268 _o=''
269 archobjs=''
270 exe_ext=''
271 firstmakefile=''
272 lib_ext=''
273 obj_ext=''
274 path_sep=''
275 afs=''
276 alignbytes=''
277 ansi2knr=''
278 archlib=''
279 archlibexp=''
280 d_archlib=''
281 installarchlib=''
282 archname=''
283 myarchname=''
284 d_atolf=''
285 d_atoll=''
286 baserev=''
287 bin=''
288 binexp=''
289 installbin=''
290 bincompat5005=''
291 d_bincompat5005=''
292 byteorder=''
293 cc=''
294 ccflags=''
295 cppflags=''
296 ldflags=''
297 lkflags=''
298 locincpth=''
299 optimize=''
300 cf_email=''
301 cf_by=''
302 cf_time=''
303 charsize=''
304 contains=''
305 cpp_stuff=''
306 cpplast=''
307 cppminus=''
308 cpprun=''
309 cppstdin=''
310 crosscompile=''
311 d__fwalk=''
312 d_access=''
313 d_accessx=''
314 d_alarm=''
315 d_attribut=''
316 d_bcmp=''
317 d_bcopy=''
318 d_bzero=''
319 d_casti32=''
320 castflags=''
321 d_castneg=''
322 d_chown=''
323 d_chroot=''
324 d_chsize=''
325 d_closedir=''
326 d_void_closedir=''
327 d_const=''
328 cryptlib=''
329 d_crypt=''
330 d_csh=''
331 full_csh=''
332 d_cuserid=''
333 d_dbl_dig=''
334 d_difftime=''
335 d_dlerror=''
336 d_dlopen=''
337 d_dlsymun=''
338 d_dosuid=''
339 d_suidsafe=''
340 d_drand48proto=''
341 d_dup2=''
342 d_eaccess=''
343 d_endgrent=''
344 d_endhent=''
345 d_endnent=''
346 d_endpent=''
347 d_endpwent=''
348 d_endsent=''
349 d_fchmod=''
350 d_fchown=''
351 d_fcntl=''
352 d_fcntl_can_lock=''
353 d_fd_macros=''
354 d_fd_set=''
355 d_fds_bits=''
356 d_fgetpos=''
357 d_flexfnam=''
358 d_flock=''
359 d_fork=''
360 d_fpos64_t=''
361 d_frexpl=''
362 d_fs_data_s=''
363 d_fseeko=''
364 d_fsetpos=''
365 d_fstatfs=''
366 d_fsync=''
367 d_ftello=''
368 d_ftime=''
369 d_gettimeod=''
370 d_Gconvert=''
371 d_getcwd=''
372 d_getespwnam=''
373 d_getfsstat=''
374 d_getgrent=''
375 d_getgrps=''
376 d_gethbyaddr=''
377 d_gethbyname=''
378 d_gethent=''
379 aphostname=''
380 d_gethname=''
381 d_phostname=''
382 d_uname=''
383 d_gethostprotos=''
384 d_getlogin=''
385 d_getmnt=''
386 d_getmntent=''
387 d_getnbyaddr=''
388 d_getnbyname=''
389 d_getnent=''
390 d_getnetprotos=''
391 d_getpagsz=''
392 d_getpent=''
393 d_getpgid=''
394 d_getpgrp2=''
395 d_bsdgetpgrp=''
396 d_getpgrp=''
397 d_getppid=''
398 d_getprior=''
399 d_getpbyname=''
400 d_getpbynumber=''
401 d_getprotoprotos=''
402 d_getprpwnam=''
403 d_getpwent=''
404 d_getsent=''
405 d_getservprotos=''
406 d_getspnam=''
407 d_getsbyname=''
408 d_getsbyport=''
409 d_gnulibc=''
410 d_hasmntopt=''
411 d_htonl=''
412 d_iconv=''
413 d_inetaton=''
414 d_int64_t=''
415 d_isascii=''
416 d_isnan=''
417 d_isnanl=''
418 d_killpg=''
419 d_lchown=''
420 d_ldbl_dig=''
421 d_link=''
422 d_locconv=''
423 d_lockf=''
424 d_longdbl=''
425 longdblsize=''
426 d_longlong=''
427 longlongsize=''
428 d_lseekproto=''
429 d_lstat=''
430 d_madvise=''
431 d_mblen=''
432 d_mbstowcs=''
433 d_mbtowc=''
434 d_memchr=''
435 d_memcmp=''
436 d_memcpy=''
437 d_memmove=''
438 d_memset=''
439 d_mkdir=''
440 d_mkdtemp=''
441 d_mkfifo=''
442 d_mkstemp=''
443 d_mkstemps=''
444 d_mktime=''
445 d_mmap=''
446 mmaptype=''
447 d_modfl=''
448 d_mprotect=''
449 d_msg=''
450 d_msgctl=''
451 d_msgget=''
452 d_msgrcv=''
453 d_msgsnd=''
454 d_msync=''
455 d_munmap=''
456 d_nice=''
457 d_off64_t=''
458 d_open3=''
459 d_fpathconf=''
460 d_pathconf=''
461 d_pause=''
462 d_pipe=''
463 d_poll=''
464 d_portable=''
465 d_old_pthread_create_joinable=''
466 old_pthread_create_joinable=''
467 d_pthread_yield=''
468 d_sched_yield=''
469 sched_yield=''
470 d_qgcvt=''
471 d_readdir=''
472 d_rewinddir=''
473 d_seekdir=''
474 d_telldir=''
475 d_readlink=''
476 d_rename=''
477 d_rmdir=''
478 d_safebcpy=''
479 d_safemcpy=''
480 d_sanemcmp=''
481 d_sbrkproto=''
482 d_select=''
483 d_sem=''
484 d_semctl=''
485 d_semget=''
486 d_semop=''
487 d_setegid=''
488 d_seteuid=''
489 d_setgrent=''
490 d_setgrps=''
491 d_sethent=''
492 d_setlinebuf=''
493 d_setlocale=''
494 d_setnent=''
495 d_setpent=''
496 d_setpgid=''
497 d_setpgrp2=''
498 d_bsdsetpgrp=''
499 d_setpgrp=''
500 d_setprior=''
501 d_setproctitle=''
502 d_setpwent=''
503 d_setregid=''
504 d_setresgid=''
505 d_setresuid=''
506 d_setreuid=''
507 d_setrgid=''
508 d_setruid=''
509 d_setsent=''
510 d_setsid=''
511 d_setvbuf=''
512 d_sfio=''
513 usesfio=''
514 d_shm=''
515 d_shmat=''
516 d_shmatprototype=''
517 shmattype=''
518 d_shmctl=''
519 d_shmdt=''
520 d_shmget=''
521 d_sigaction=''
522 d_sigprocmask=''
523 d_sigsetjmp=''
524 d_sockatmark=''
525 d_msg_ctrunc=''
526 d_msg_dontroute=''
527 d_msg_oob=''
528 d_msg_peek=''
529 d_msg_proxy=''
530 d_oldsock=''
531 d_scm_rights=''
532 d_socket=''
533 d_sockpair=''
534 sockethdr=''
535 socketlib=''
536 d_socklen_t=''
537 d_socks5_init=''
538 d_sqrtl=''
539 d_statblks=''
540 d_statfs_f_flags=''
541 d_statfs_s=''
542 d_fstatvfs=''
543 d_statvfs=''
544 d_stdio_cnt_lval=''
545 d_stdio_ptr_lval=''
546 d_stdio_ptr_lval_nochange_cnt=''
547 d_stdio_ptr_lval_sets_cnt=''
548 d_stdiobase=''
549 d_stdstdio=''
550 stdio_base=''
551 stdio_bufsiz=''
552 stdio_cnt=''
553 stdio_filbuf=''
554 stdio_ptr=''
555 d_index=''
556 d_strchr=''
557 d_strcoll=''
558 d_strctcpy=''
559 d_strerrm=''
560 d_strerror=''
561 d_sysernlst=''
562 d_syserrlst=''
563 d_strtod=''
564 d_strtol=''
565 d_strtold=''
566 d_strtoll=''
567 d_strtoq=''
568 d_strtoul=''
569 d_strtoull=''
570 d_strtouq=''
571 d_strxfrm=''
572 d_symlink=''
573 d_syscall=''
574 d_sysconf=''
575 d_system=''
576 d_tcgetpgrp=''
577 d_tcsetpgrp=''
578 d_telldirproto=''
579 d_time=''
580 timetype=''
581 clocktype=''
582 d_times=''
583 d_truncate=''
584 d_tzname=''
585 d_umask=''
586 d_semctl_semid_ds=''
587 d_semctl_semun=''
588 d_union_semun=''
589 d_ustat=''
590 d_vfork=''
591 usevfork=''
592 d_voidsig=''
593 signal_t=''
594 d_volatile=''
595 d_charvspr=''
596 d_vprintf=''
597 d_wait4=''
598 d_waitpid=''
599 d_wcstombs=''
600 d_wctomb=''
601 dlext=''
602 cccdlflags=''
603 ccdlflags=''
604 dlsrc=''
605 ld=''
606 lddlflags=''
607 usedl=''
608 doublesize=''
609 ebcdic=''
610 fflushNULL=''
611 fflushall=''
612 fpossize=''
613 fpostype=''
614 gccosandvers=''
615 gccversion=''
616 gidformat=''
617 gidsign=''
618 gidsize=''
619 gidtype=''
620 groupstype=''
621 h_fcntl=''
622 h_sysfile=''
623 i_arpainet=''
624 db_hashtype=''
625 db_prefixtype=''
626 i_db=''
627 i_dbm=''
628 i_rpcsvcdbm=''
629 d_dirnamlen=''
630 direntrytype=''
631 i_dirent=''
632 i_dld=''
633 i_dlfcn=''
634 i_fcntl=''
635 i_float=''
636 i_gdbm=''
637 d_grpasswd=''
638 i_grp=''
639 i_iconv=''
640 i_ieeefp=''
641 i_inttypes=''
642 i_libutil=''
643 i_limits=''
644 i_locale=''
645 i_machcthr=''
646 i_malloc=''
647 i_math=''
648 i_memory=''
649 i_mntent=''
650 i_ndbm=''
651 i_netdb=''
652 i_neterrno=''
653 i_netinettcp=''
654 i_niin=''
655 i_sysin=''
656 i_poll=''
657 i_prot=''
658 i_pthread=''
659 d_pwage=''
660 d_pwchange=''
661 d_pwclass=''
662 d_pwcomment=''
663 d_pwexpire=''
664 d_pwgecos=''
665 d_pwpasswd=''
666 d_pwquota=''
667 i_pwd=''
668 i_sfio=''
669 i_shadow=''
670 i_socks=''
671 i_stddef=''
672 i_stdlib=''
673 i_string=''
674 strings=''
675 i_sunmath=''
676 i_sysaccess=''
677 i_sysdir=''
678 i_sysfile=''
679 d_voidtty=''
680 i_bsdioctl=''
681 i_sysfilio=''
682 i_sysioctl=''
683 i_syssockio=''
684 i_syslog=''
685 i_sysmman=''
686 i_sysmode=''
687 i_sysmount=''
688 i_sysndir=''
689 i_sysparam=''
690 i_sysresrc=''
691 i_syssecrt=''
692 i_sysselct=''
693 i_sysstat=''
694 i_sysstatfs=''
695 i_sysstatvfs=''
696 i_systimes=''
697 i_systypes=''
698 i_sysuio=''
699 i_sysun=''
700 i_sysutsname=''
701 i_sysvfs=''
702 i_syswait=''
703 i_sgtty=''
704 i_termio=''
705 i_termios=''
706 i_systime=''
707 i_systimek=''
708 i_time=''
709 timeincl=''
710 i_unistd=''
711 i_ustat=''
712 i_utime=''
713 i_values=''
714 i_stdarg=''
715 i_varargs=''
716 i_varhdr=''
717 i_vfork=''
718 inc_version_list=''
719 inc_version_list_init=''
720 installprefix=''
721 installprefixexp=''
722 installstyle=''
723 installusrbinperl=''
724 intsize=''
725 longsize=''
726 shortsize=''
727 issymlink=''
728 libc=''
729 ldlibpthname=''
730 libperl=''
731 shrpenv=''
732 useshrplib=''
733 glibpth=''
734 libpth=''
735 loclibpth=''
736 plibpth=''
737 xlibpth=''
738 ignore_versioned_solibs=''
739 libs=''
740 libsdirs=''
741 libsfiles=''
742 libsfound=''
743 libspath=''
744 lns=''
745 d_PRIEUldbl=''
746 d_PRIFUldbl=''
747 d_PRIGUldbl=''
748 d_PRIeldbl=''
749 d_PRIfldbl=''
750 d_PRIgldbl=''
751 d_SCNfldbl=''
752 sPRIEUldbl=''
753 sPRIFUldbl=''
754 sPRIGUldbl=''
755 sPRIeldbl=''
756 sPRIfldbl=''
757 sPRIgldbl=''
758 sSCNfldbl=''
759 lseeksize=''
760 lseektype=''
761 make_set_make=''
762 d_mymalloc=''
763 freetype=''
764 mallocobj=''
765 mallocsrc=''
766 malloctype=''
767 usemymalloc=''
768 installman1dir=''
769 man1dir=''
770 man1direxp=''
771 man1ext=''
772 installman3dir=''
773 man3dir=''
774 man3direxp=''
775 man3ext=''
776 modetype=''
777 multiarch=''
778 mydomain=''
779 myhostname=''
780 phostname=''
781 c=''
782 n=''
783 d_eofnblk=''
784 eagain=''
785 o_nonblock=''
786 rd_nodata=''
787 need_va_copy=''
788 netdb_hlen_type=''
789 netdb_host_type=''
790 netdb_name_type=''
791 netdb_net_type=''
792 groupcat=''
793 hostcat=''
794 passcat=''
795 orderlib=''
796 ranlib=''
797 d_perl_otherlibdirs=''
798 otherlibdirs=''
799 package=''
800 spackage=''
801 pager=''
802 api_revision=''
803 api_subversion=''
804 api_version=''
805 api_versionstring=''
806 patchlevel=''
807 revision=''
808 subversion=''
809 version=''
810 perl5=''
811 perladmin=''
812 perlpath=''
813 d_nv_preserves_uv=''
814 d_nv_preserves_uv_bits=''
815 i16size=''
816 i16type=''
817 i32size=''
818 i32type=''
819 i64size=''
820 i64type=''
821 i8size=''
822 i8type=''
823 ivsize=''
824 ivtype=''
825 nvsize=''
826 nvtype=''
827 u16size=''
828 u16type=''
829 u32size=''
830 u32type=''
831 u64size=''
832 u64type=''
833 u8size=''
834 u8type=''
835 uvsize=''
836 uvtype=''
837 ivdformat=''
838 nvEUformat=''
839 nvFUformat=''
840 nvGUformat=''
841 nveformat=''
842 nvfformat=''
843 nvgformat=''
844 uvXUformat=''
845 uvoformat=''
846 uvuformat=''
847 uvxformat=''
848 pidtype=''
849 prefix=''
850 prefixexp=''
851 installprivlib=''
852 privlib=''
853 privlibexp=''
854 prototype=''
855 ptrsize=''
856 d_PRIXU64=''
857 d_PRId64=''
858 d_PRIi64=''
859 d_PRIo64=''
860 d_PRIu64=''
861 d_PRIx64=''
862 sPRIXU64=''
863 sPRId64=''
864 sPRIi64=''
865 sPRIo64=''
866 sPRIu64=''
867 sPRIx64=''
868 d_quad=''
869 quadkind=''
870 quadtype=''
871 uquadtype=''
872 drand01=''
873 randbits=''
874 randfunc=''
875 randseedtype=''
876 seedfunc=''
877 installscript=''
878 scriptdir=''
879 scriptdirexp=''
880 selectminbits=''
881 selecttype=''
882 sh=''
883 sig_count=''
884 sig_name=''
885 sig_name_init=''
886 sig_num=''
887 sig_num_init=''
888 sig_size=''
889 installsitearch=''
890 sitearch=''
891 sitearchexp=''
892 installsitebin=''
893 sitebin=''
894 sitebinexp=''
895 installsitelib=''
896 sitelib=''
897 sitelib_stem=''
898 sitelibexp=''
899 siteprefix=''
900 siteprefixexp=''
901 sizesize=''
902 sizetype=''
903 so=''
904 socksizetype=''
905 sharpbang=''
906 shsharp=''
907 spitshell=''
908 src=''
909 ssizetype=''
910 startperl=''
911 startsh=''
912 stdchar=''
913 d_stdio_stream_array=''
914 stdio_stream_array=''
915 sysman=''
916 trnl=''
917 uidformat=''
918 uidsign=''
919 uidsize=''
920 uidtype=''
921 archname64=''
922 use64bitall=''
923 use64bitint=''
924 ccflags_uselargefiles=''
925 ldflags_uselargefiles=''
926 libswanted_uselargefiles=''
927 uselargefiles=''
928 uselongdouble=''
929 usemorebits=''
930 usemultiplicity=''
931 nm_opt=''
932 nm_so_opt=''
933 runnm=''
934 usenm=''
935 useperlio=''
936 usesocks=''
937 d_oldpthreads=''
938 use5005threads=''
939 useithreads=''
940 usethreads=''
941 incpath=''
942 mips_type=''
943 usrinc=''
944 d_vendorarch=''
945 installvendorarch=''
946 vendorarch=''
947 vendorarchexp=''
948 d_vendorbin=''
949 installvendorbin=''
950 vendorbin=''
951 vendorbinexp=''
952 d_vendorlib=''
953 installvendorlib=''
954 vendorlib=''
955 vendorlib_stem=''
956 vendorlibexp=''
957 usevendorprefix=''
958 vendorprefix=''
959 vendorprefixexp=''
960 versiononly=''
961 defvoidused=''
962 voidflags=''
963 pm_apiversion=''
964 xs_apiversion=''
965 yacc=''
966 yaccflags=''
967 CONFIG=''
968
969 define='define'
970 undef='undef'
971 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
972 rmlist=''
973
974 : We must find out about Eunice early
975 eunicefix=':'
976 if test -f /etc/unixtovms; then
977         eunicefix=/etc/unixtovms
978 fi
979 if test -f /etc/unixtovms.exe; then
980         eunicefix=/etc/unixtovms.exe
981 fi
982
983 i_whoami=''
984 ccname=''
985 ccversion=''
986 perllibs=''
987 : set useposix=false in your hint file to disable the POSIX extension.
988 useposix=true
989 : set useopcode=false in your hint file to disable the Opcode extension.
990 useopcode=true
991 : Trailing extension.  Override this in a hint file, if needed.
992 _exe=''
993 : Extra object files, if any, needed on this platform.
994 archobjs=''
995 archname=''
996 : Possible local include directories to search.
997 : Set locincpth to "" in a hint file to defeat local include searches.
998 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
999 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1000 :
1001 : no include file wanted by default
1002 inclwanted=''
1003
1004 groupstype=''
1005 : change the next line if compiling for Xenix/286 on Xenix/386
1006 xlibpth='/usr/lib/386 /lib/386'
1007 : Possible local library directories to search.
1008 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1009 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1010
1011 : general looking path for locating libraries
1012 glibpth="/lib /usr/lib $xlibpth"
1013 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1014 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1015 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1016
1017 : Private path used by Configure to find libraries.  Its value
1018 : is prepended to libpth. This variable takes care of special
1019 : machines, like the mips.  Usually, it should be empty.
1020 plibpth=''
1021
1022 : default library list
1023 libswanted=''
1024 : some systems want to use only the non-versioned libso:s
1025 ignore_versioned_solibs=''
1026 archname64=''
1027 ccflags_uselargefiles=''
1028 ldflags_uselargefiles=''
1029 libswanted_uselargefiles=''
1030 : set usemultiplicity on the Configure command line to enable multiplicity.
1031 : set usesocks on the Configure command line to enable socks.
1032 : set usethreads on the Configure command line to enable threads.
1033 : full support for void wanted by default
1034 defvoidused=15
1035
1036 : List of libraries we want.
1037 : If anyone needs -lnet, put it in a hint file.
1038 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1039 libswanted="$libswanted dld ld sun m c cposix posix"
1040 libswanted="$libswanted ndir dir crypt sec"
1041 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1042 : We probably want to search /usr/shlib before most other libraries.
1043 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1044 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1045 glibpth="/usr/shlib $glibpth"
1046 : Do not use vfork unless overridden by a hint file.
1047 usevfork=false
1048
1049 : Find the basic shell for Bourne shell scripts
1050 case "$sh" in
1051 '')
1052         case "$SYSTYPE" in
1053         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1054         *) xxx='/bin/sh';;
1055         esac
1056         if test -f "$xxx"; then
1057                 sh="$xxx"
1058         else
1059                 : Build up a list and do a single loop so we can 'break' out.
1060                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1061                 for xxx in sh bash ksh pdksh ash; do
1062                         for p in $pth; do
1063                                 try="$try ${p}/${xxx}"
1064                         done
1065                 done
1066                 for xxx in $try; do
1067                         if test -f "$xxx"; then
1068                                 sh="$xxx";
1069                                 break
1070                         elif test -f "$xxx.exe"; then
1071                                 sh="$xxx";
1072                                 break
1073                         fi
1074                 done
1075         fi
1076         ;;
1077 esac
1078
1079 case "$sh" in
1080 '')     cat <<EOM >&2
1081 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1082
1083 Usually it's in /bin/sh.  How did you even get this far?
1084 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1085 we'll try to straighten this all out.
1086 EOM
1087         exit 1
1088         ;;
1089 esac
1090
1091 : see if sh knows # comments
1092 if `$sh -c '#' >/dev/null 2>&1`; then
1093         shsharp=true
1094         spitshell=cat
1095         xcat=/bin/cat
1096         test -f $xcat || xcat=/usr/bin/cat
1097         echo "#!$xcat" >try
1098         $eunicefix try
1099         chmod +x try
1100         ./try > today
1101         if test -s today; then
1102                 sharpbang='#!'
1103         else
1104                 echo "#! $xcat" > try
1105                 $eunicefix try
1106                 chmod +x try
1107                 ./try > today
1108                 if test -s today; then
1109                         sharpbang='#! '
1110                 else
1111                         sharpbang=': use '
1112                 fi
1113         fi
1114 else
1115         echo " "
1116         echo "Your $sh doesn't grok # comments--I will strip them later on."
1117         shsharp=false
1118         cd ..
1119         echo "exec grep -v '^[  ]*#'" >spitshell
1120         chmod +x spitshell
1121         $eunicefix spitshell
1122         spitshell=`pwd`/spitshell
1123         cd UU
1124         echo "I presume that if # doesn't work, #! won't work either!"
1125         sharpbang=': use '
1126 fi
1127 rm -f try today
1128
1129 : figure out how to guarantee sh startup
1130 case "$startsh" in
1131 '') startsh=${sharpbang}${sh} ;;
1132 *)
1133 esac
1134 cat >try <<EOSS
1135 $startsh
1136 set abc
1137 test "$?abc" != 1
1138 EOSS
1139
1140 chmod +x try
1141 $eunicefix try
1142 if ./try; then
1143         : echo "Yup, it does."
1144 else
1145         echo "Hmm... '$startsh' does not guarantee sh startup..."
1146         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1147 fi
1148 rm -f try
1149
1150
1151 : Save command line options in file UU/cmdline.opt for later use in
1152 : generating config.sh.
1153 cat > cmdline.opt <<EOSH
1154 # Configure command line arguments.
1155 config_arg0='$0'
1156 config_args='$*'
1157 config_argc=$#
1158 EOSH
1159 argn=1
1160 for arg in "$@"; do
1161         cat >>cmdline.opt <<EOSH
1162 config_arg$argn='$arg'
1163 EOSH
1164         argn=`expr $argn + 1`
1165 done
1166
1167 : produce awk script to parse command line options
1168 cat >options.awk <<'EOF'
1169 BEGIN {
1170         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1171
1172         len = length(optstr);
1173         for (i = 1; i <= len; i++) {
1174                 c = substr(optstr, i, 1);
1175                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1176                 if (a == ":") {
1177                         arg[c] = 1;
1178                         i++;
1179                 }
1180                 opt[c] = 1;
1181         }
1182 }
1183 {
1184         expect = 0;
1185         str = $0;
1186         if (substr(str, 1, 1) != "-") {
1187                 printf("'%s'\n", str);
1188                 next;
1189         }
1190         len = length($0);
1191         for (i = 2; i <= len; i++) {
1192                 c = substr(str, i, 1);
1193                 if (!opt[c]) {
1194                         printf("-%s\n", substr(str, i));
1195                         next;
1196                 }
1197                 printf("-%s\n", c);
1198                 if (arg[c]) {
1199                         if (i < len)
1200                                 printf("'%s'\n", substr(str, i + 1));
1201                         else
1202                                 expect = 1;
1203                         next;
1204                 }
1205         }
1206 }
1207 END {
1208         if (expect)
1209                 print "?";
1210 }
1211 EOF
1212
1213 : process the command line options
1214 set X `for arg in "$@"; do echo "X$arg"; done |
1215         sed -e s/X// | awk -f options.awk`
1216 eval "set $*"
1217 shift
1218 rm -f options.awk
1219
1220 : set up default values
1221 fastread=''
1222 reuseval=false
1223 config_sh=''
1224 alldone=''
1225 error=''
1226 silent=''
1227 extractsh=''
1228 override=''
1229 knowitall=''
1230 rm -f optdef.sh posthint.sh
1231 cat >optdef.sh <<EOS
1232 $startsh
1233 EOS
1234
1235
1236 : option parsing
1237 while test $# -gt 0; do
1238         case "$1" in
1239         -d) shift; fastread=yes;;
1240         -e) shift; alldone=cont;;
1241         -f)
1242                 shift
1243                 cd ..
1244                 if test -r "$1"; then
1245                         config_sh="$1"
1246                 else
1247                         echo "$me: cannot read config file $1." >&2
1248                         error=true
1249                 fi
1250                 cd UU
1251                 shift;;
1252         -h) shift; error=true;;
1253         -r) shift; reuseval=true;;
1254         -s) shift; silent=true; realsilent=true;;
1255         -E) shift; alldone=exit;;
1256         -K) shift; knowitall=true;;
1257         -O) shift; override=true;;
1258         -S) shift; silent=true; extractsh=true;;
1259         -D)
1260                 shift
1261                 case "$1" in
1262                 *=)
1263                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1264                         echo "$me: ignoring -D $1" >&2
1265                         ;;
1266                 *=*) echo "$1" | \
1267                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1268                 *) echo "$1='define'" >> optdef.sh;;
1269                 esac
1270                 shift
1271                 ;;
1272         -U)
1273                 shift
1274                 case "$1" in
1275                 *=) echo "$1" >> optdef.sh;;
1276                 *=*)
1277                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1278                         echo "$me: ignoring -U $1" >&2
1279                         ;;
1280                 *) echo "$1='undef'" >> optdef.sh;;
1281                 esac
1282                 shift
1283                 ;;
1284         -A)
1285             shift
1286             xxx=''
1287             yyy="$1"
1288             zzz=''
1289             uuu=undef
1290             case "$yyy" in
1291             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1292                  case "$zzz" in
1293                  *:*) zzz='' ;;
1294                  *)   xxx=append
1295                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1296                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1297                  esac
1298                  ;;
1299             esac
1300             case "$xxx" in
1301             '')  case "$yyy" in
1302                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1303                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1304                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1305                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1306                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1307                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1308                  esac
1309                  ;;       
1310             esac
1311             case "$xxx" in
1312             append)
1313                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1314             clear)
1315                 echo "$yyy=''"                  >> posthint.sh ;;
1316             define)
1317                 case "$zzz" in
1318                 '') zzz=define ;;
1319                 esac
1320                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1321             eval)
1322                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1323             prepend)
1324                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1325             undef)
1326                 case "$zzz" in
1327                 '') zzz="$uuu" ;;
1328                 esac
1329                 echo "$yyy=$zzz"                >> posthint.sh ;;
1330             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1331             esac
1332             shift
1333             ;;
1334         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1335             exit 0;;
1336         --) break;;
1337         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1338         *) break;;
1339         esac
1340 done
1341
1342 case "$error" in
1343 true)
1344         cat >&2 <<EOM
1345 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1346                  [-U symbol] [-U symbol=] [-A command:symbol...]
1347   -d : use defaults for all answers.
1348   -e : go on without questioning past the production of config.sh.
1349   -f : specify an alternate default configuration file.
1350   -h : print this help message and exit (with an error status).
1351   -r : reuse C symbols value if possible (skips costly nm extraction).
1352   -s : silent mode, only echoes questions and essential information.
1353   -D : define symbol to have some value:
1354          -D symbol         symbol gets the value 'define'
1355          -D symbol=value   symbol gets the value 'value'
1356   -E : stop at the end of questions, after having produced config.sh.
1357   -K : do not use unless you know what you are doing.
1358   -O : let -D and -U override definitions from loaded configuration file.
1359   -S : perform variable substitutions on all .SH files (can mix with -f)
1360   -U : undefine symbol:
1361          -U symbol    symbol gets the value 'undef'
1362          -U symbol=   symbol gets completely empty
1363   -A : manipulate symbol after the platform specific hints have been applied:
1364          -A symbol=value                append " "value to symbol
1365          -A append:symbol=value         append value to symbol
1366          -A define:symbol=value         define symbol to have value
1367          -A clear:symbol                define symbol to be ''
1368          -A define:symbol               define symbol to be 'define'
1369          -A eval:symbol=value           define symbol to be eval of value
1370          -A prepend:symbol=value        prepend value to symbol
1371          -A undef:symbol                define symbol to be 'undef'
1372          -A undef:symbol=               define symbol to be ''
1373   -V : print version number and exit (with a zero status).
1374 EOM
1375         exit 1
1376         ;;
1377 esac
1378
1379 : Sanity checks
1380 case "$fastread$alldone" in
1381 yescont|yesexit) ;;
1382 *)
1383         case "$extractsh" in
1384         true) ;;
1385         *)
1386                 if test ! -t 0; then
1387                         echo "Say 'sh Configure', not 'sh <Configure'"
1388                         exit 1
1389                 fi
1390                 ;;
1391         esac
1392         ;;
1393 esac
1394
1395 exec 4>&1
1396 case "$silent" in
1397 true) exec 1>/dev/null;;
1398 esac
1399
1400 : run the defines and the undefines, if any, but leave the file out there...
1401 touch optdef.sh
1402 . ./optdef.sh
1403 : create the posthint manipulation script and leave the file out there...
1404 touch posthint.sh
1405
1406 : set package name
1407 package=perl5
1408 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1409 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1410 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1411 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1412 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1413 esac
1414
1415 : Some greps do not return status, grrr.
1416 echo "grimblepritz" >grimble
1417 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1418         contains=contains
1419 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1420         contains=grep
1421 else
1422         contains=contains
1423 fi
1424 rm -f grimble
1425 : the following should work in any shell
1426 case "$contains" in
1427 contains*)
1428         echo " "
1429         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1430         cat >contains <<'EOSS'
1431 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1432 EOSS
1433 chmod +x contains
1434 esac
1435
1436 : Find the path to the source tree
1437 case "$src" in
1438 '') case "$0" in
1439     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1440          case "$src" in
1441          /*)    ;;
1442          .)     ;;
1443          *)     src=`cd ../$src && pwd` ;;
1444          esac
1445          ;;
1446     *)   src='.';;
1447     esac;;
1448 esac
1449 case "$src" in
1450 '')     src=/
1451         rsrc=/
1452         ;;
1453 /*) rsrc="$src";;
1454 *) rsrc="../$src";;
1455 esac
1456 if test -f $rsrc/Configure && \
1457         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1458 then
1459    : found it, so we are ok.
1460 else
1461         rsrc=''
1462         for src in . .. ../.. ../../.. ../../../..; do
1463                 if test -f ../$src/Configure && \
1464                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1465                 then
1466                         rsrc=../$src
1467                         break
1468                 fi
1469         done
1470 fi
1471 case "$rsrc" in
1472 '')
1473         cat <<EOM >&4
1474
1475 Sorry, I can't seem to locate the source dir for $package.  Please start
1476 Configure with an explicit path -- i.e. /some/path/Configure.
1477
1478 EOM
1479         exit 1
1480         ;;
1481 ../.)   rsrc='..';;
1482 *)
1483         echo " "
1484         echo "Sources for $package found in \"$src\"." >&4
1485         ;;
1486 esac
1487
1488 : script used to extract .SH files with variable substitutions
1489 cat >extract <<'EOS'
1490 CONFIGDOTSH=true
1491 echo "Doing variable substitutions on .SH files..."
1492 if test -f $src/MANIFEST; then
1493         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1494 else
1495         echo "(Looking for .SH files under the source directory.)"
1496         set x `(cd $src; find . -name "*.SH" -print)`
1497 fi
1498 shift
1499 case $# in
1500 0) set x `(cd $src; echo *.SH)`; shift;;
1501 esac
1502 if test ! -f $src/$1; then
1503         shift
1504 fi
1505 mkdir_p='
1506 name=$1;
1507 create="";
1508 while test $name; do
1509         if test ! -d "$name"; then
1510                 create="$name $create";
1511                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1512                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1513         else
1514                 name="";
1515         fi;
1516 done;
1517 for file in $create; do
1518         mkdir $file;
1519 done
1520 '
1521 for file in $*; do
1522         case "$src" in
1523         ".")
1524                 case "$file" in
1525                 */*)
1526                         dir=`expr X$file : 'X\(.*\)/'`
1527                         file=`expr X$file : 'X.*/\(.*\)'`
1528                         (cd $dir && . ./$file)
1529                         ;;
1530                 *)
1531                         . ./$file
1532                         ;;
1533                 esac
1534                 ;;
1535         *)
1536                 case "$file" in
1537                 */*)
1538                         dir=`expr X$file : 'X\(.*\)/'`
1539                         file=`expr X$file : 'X.*/\(.*\)'`
1540                         (set x $dir; shift; eval $mkdir_p)
1541                         sh <$src/$dir/$file
1542                         ;;
1543                 *)
1544                         sh <$src/$file
1545                         ;;
1546                 esac
1547                 ;;
1548         esac
1549 done
1550 if test -f $src/config_h.SH; then
1551         if test ! -f config.h; then
1552         : oops, they left it out of MANIFEST, probably, so do it anyway.
1553         . $src/config_h.SH
1554         fi
1555 fi
1556 EOS
1557
1558 : extract files and exit if asked to do so
1559 case "$extractsh" in
1560 true)
1561         case "$realsilent" in
1562         true) ;;
1563         *) exec 1>&4;;
1564         esac
1565         case "$config_sh" in
1566         '') config_sh='config.sh';;
1567         esac
1568         echo " "
1569         echo "Fetching answers from $config_sh..."
1570         cd ..
1571         . $config_sh
1572         test "$override" && . ./optdef.sh
1573         echo " "
1574         . UU/extract
1575         rm -rf UU
1576         echo "Done."
1577         exit 0
1578         ;;
1579 esac
1580
1581 : Eunice requires " " instead of "", can you believe it
1582 echo " "
1583 : Here we go...
1584 echo "Beginning of configuration questions for $package."
1585
1586 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1587
1588 : first determine how to suppress newline on echo command
1589 echo " "
1590 echo "Checking echo to see how to suppress newlines..."
1591 (echo "hi there\c" ; echo " ") >.echotmp
1592 if $contains c .echotmp >/dev/null 2>&1 ; then
1593         echo "...using -n."
1594         n='-n'
1595         c=''
1596 else
1597         cat <<'EOM'
1598 ...using \c
1599 EOM
1600         n=''
1601         c='\c'
1602 fi
1603 echo $n "The star should be here-->$c"
1604 echo '*'
1605 rm -f .echotmp
1606
1607 : Now test for existence of everything in MANIFEST
1608 echo " "
1609 if test -f $rsrc/MANIFEST; then
1610         echo "First let's make sure your kit is complete.  Checking..." >&4
1611         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1612         rm -f missing
1613         tmppwd=`pwd`
1614         for filelist in x??; do
1615                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1616         done
1617         if test -s missing; then
1618                 cat missing >&4
1619                 cat >&4 <<'EOM'
1620
1621 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1622
1623 You have the option of continuing the configuration process, despite the
1624 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1625 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1626 and contact the author (perlbug@perl.org).
1627
1628 EOM
1629                 echo $n "Continue? [n] $c" >&4
1630                 read ans
1631                 case "$ans" in
1632                 y*)
1633                         echo "Continuing..." >&4
1634                         rm -f missing
1635                         ;;
1636                 *)
1637                         echo "ABORTING..." >&4
1638                         kill $$
1639                         ;;
1640                 esac
1641         else
1642                 echo "Looks good..."
1643         fi
1644 else
1645         echo "There is no MANIFEST file.  I hope your kit is complete !"
1646 fi
1647 rm -f missing x??
1648
1649 echo " "
1650 : Find the appropriate value for a newline for tr
1651 if test -n "$DJGPP"; then
1652        trnl='\012'
1653 fi
1654 if test X"$trnl" = X; then
1655         case "`echo foo|tr '\n' x 2>/dev/null`" in
1656         foox) trnl='\n' ;;
1657         esac
1658 fi
1659 if test X"$trnl" = X; then
1660         case "`echo foo|tr '\012' x 2>/dev/null`" in
1661         foox) trnl='\012' ;;
1662         esac
1663 fi
1664 if test X"$trnl" = X; then
1665         cat <<EOM >&2
1666
1667 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1668
1669 EOM
1670         exit 1
1671 fi
1672
1673 : compute the number of columns on the terminal for proper question formatting
1674 case "$COLUMNS" in
1675 '') COLUMNS='80';;
1676 esac
1677
1678 : set up the echo used in my read
1679 myecho="case \"\$xxxm\" in
1680 '') echo $n \"\$rp $c\" >&4;;
1681 *) case \"\$rp\" in
1682         '') echo $n \"[\$xxxm] $c\";;
1683         *)
1684                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1685                         echo \"\$rp\" >&4
1686                         echo $n \"[\$xxxm] $c\" >&4
1687                 else
1688                         echo $n \"\$rp [\$xxxm] $c\" >&4
1689                 fi
1690                 ;;
1691         esac;;
1692 esac"
1693
1694 : now set up to do reads with possible shell escape and default assignment
1695 cat <<EOSC >myread
1696 $startsh
1697 xxxm=\$dflt
1698 $myecho
1699 ans='!'
1700 case "\$fastread" in
1701 yes) case "\$dflt" in
1702         '') ;;
1703         *) ans='';
1704                 case "\$silent-\$rp" in
1705                 true-) ;;
1706                 *) echo " " >&4;;
1707                 esac;;
1708         esac;;
1709 *) case "\$silent" in
1710         true) case "\$rp" in
1711                 '') ans='';;
1712                 esac;;
1713         esac;;
1714 esac
1715 while expr "X\$ans" : "X!" >/dev/null; do
1716         read answ
1717         set x \$xxxm
1718         shift
1719         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1720         case  "\$answ" in
1721         "!")
1722                 sh 1>&4
1723                 echo " "
1724                 $myecho
1725                 ;;
1726         !*)
1727                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1728                 shift
1729                 sh 1>&4 -c "\$*"
1730                 echo " "
1731                 $myecho
1732                 ;;
1733         "\$ans")
1734                 case "\$ans" in
1735                 \\&*)
1736                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1737                         shift
1738                         case "\$1" in
1739                         -d)
1740                                 fastread=yes
1741                                 echo "(OK, I'll run with -d after this question.)" >&4
1742                                 ;;
1743                         -*)
1744                                 echo "*** Sorry, \$1 not supported yet." >&4
1745                                 ;;
1746                         esac
1747                         $myecho
1748                         ans=!
1749                         ;;
1750                 esac;;
1751         *)
1752                 case "\$aok" in
1753                 y)
1754                         echo "*** Substitution done -- please confirm."
1755                         xxxm="\$ans"
1756                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1757                         xxxm="\$ans"
1758                         ans=!
1759                         ;;
1760                 *)
1761                         echo "*** Error -- try again."
1762                         ans=!
1763                         ;;
1764                 esac
1765                 $myecho
1766                 ;;
1767         esac
1768         case "\$ans\$xxxm\$nostick" in
1769         '')
1770                 ans=!
1771                 $myecho
1772                 ;;
1773         esac
1774 done
1775 case "\$ans" in
1776 '') ans="\$xxxm";;
1777 esac
1778 EOSC
1779
1780 : create .config dir to save info across Configure sessions
1781 test -d ../.config || mkdir ../.config
1782 cat >../.config/README <<EOF
1783 This directory created by Configure to save information that should
1784 persist across sessions for $package.
1785
1786 You may safely delete it if you wish.
1787 EOF
1788
1789 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1790 case "$usedevel" in
1791 $define|true|[yY]*) ;;
1792 *) case "$xversion" in
1793    *[13579])
1794         cat >&4 <<EOH
1795 *** WHOA THERE!!! ***
1796
1797     This is an UNSTABLE DEVELOPMENT release.
1798     The version of this $package distribution is $xversion, that is, odd,
1799     (as opposed to even) and that signifies a development release.
1800     If you want a maintenance release, you want an even-numbered version.
1801
1802     Do ***NOT*** install this into production use.
1803     Data corruption and crashes are possible.
1804
1805     It is most seriously suggested that you do not continue any further
1806     unless you want to help in developing and debugging Perl.
1807
1808     If you *still* want to build perl, you can answer 'y' now,
1809     or pass -Dusedevel to Configure.
1810
1811 EOH
1812         rp='Do you really want to continue?'
1813         dflt='n'
1814         . ./myread
1815         case "$ans" in
1816         [yY]) echo >&4 "Okay, continuing."
1817               usedevel="$define" ;;
1818         *) echo >&4 "Okay, bye."
1819            exit 1
1820            ;;
1821         esac
1822         ;;
1823     esac
1824     ;;
1825 esac
1826 case "$usedevel" in
1827 $define|true|[yY]*)
1828         case "$versiononly" in
1829         '') versiononly="$define" ;;
1830         esac
1831         case "$installusrbinperl" in
1832         '') installusrbinperl="$undef" ;;
1833         esac
1834         ;;
1835 esac
1836
1837 : general instructions
1838 needman=true
1839 firsttime=true
1840 user=`(logname) 2>/dev/null`
1841 case "$user" in
1842 '') user=`whoami 2>&1`;;
1843 esac
1844 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1845         firsttime=false
1846         echo " "
1847         rp='Would you like to see the instructions?'
1848         dflt=n
1849         . ./myread
1850         case "$ans" in
1851         [yY]*) ;;
1852         *) needman=false;;
1853         esac
1854 fi
1855 if $needman; then
1856         cat <<EOH
1857
1858 This installation shell script will examine your system and ask you questions
1859 to determine how the perl5 package should be installed. If you get
1860 stuck on a question, you may use a ! shell escape to start a subshell or
1861 execute a command.  Many of the questions will have default answers in square
1862 brackets; typing carriage return will give you the default.
1863
1864 On some of the questions which ask for file or directory names you are allowed
1865 to use the ~name construct to specify the login directory belonging to "name",
1866 even if you don't have a shell which knows about that.  Questions where this is
1867 allowed will be marked "(~name ok)".
1868
1869 EOH
1870         rp=''
1871         dflt='Type carriage return to continue'
1872         . ./myread
1873         cat <<'EOH'
1874
1875 The prompter used in this script allows you to use shell variables and
1876 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1877 in the default answer, as if the default line was a set of arguments given to a
1878 script shell.  This means you may also use $* to repeat the whole default line,
1879 so you do not have to re-type everything to add something to the default.
1880
1881 Everytime there is a substitution, you will have to confirm.  If there is an
1882 error (e.g. an unmatched backtick), the default answer will remain unchanged
1883 and you will be prompted again.
1884
1885 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1886 the questions and use the computed defaults (or the previous answers if there
1887 was already a config.sh file). Type 'Configure -h' for a list of options.
1888 You may also start interactively and then answer '& -d' at any prompt to turn
1889 on the non-interactive behaviour for the remainder of the execution.
1890
1891 EOH
1892         . ./myread
1893         cat <<EOH
1894
1895 Much effort has been expended to ensure that this shell script will run on any
1896 Unix system.  If despite that it blows up on yours, your best bet is to edit
1897 Configure and run it again.  If you can't run Configure for some reason,
1898 you'll have to generate a config.sh file by hand.  Whatever problems you
1899 have, let me (perlbug@perl.org) know how I blew it.
1900
1901 This installation script affects things in two ways:
1902
1903 1) it may do direct variable substitutions on some of the files included
1904    in this kit.
1905 2) it builds a config.h file for inclusion in C programs.  You may edit
1906    any of these files as the need arises after running this script.
1907
1908 If you make a mistake on a question, there is no easy way to back up to it
1909 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1910 files.  Configure will offer to let you do this before it runs the SH files.
1911
1912 EOH
1913         dflt='Type carriage return to continue'
1914         . ./myread
1915         case "$firsttime" in
1916         true) echo $user >>../.config/instruct;;
1917         esac
1918 fi
1919
1920 : find out where common programs are
1921 echo " "
1922 echo "Locating common programs..." >&4
1923 cat <<EOSC >loc
1924 $startsh
1925 case \$# in
1926 0) exit 1;;
1927 esac
1928 thing=\$1
1929 shift
1930 dflt=\$1
1931 shift
1932 for dir in \$*; do
1933         case "\$thing" in
1934         .)
1935         if test -d \$dir/\$thing; then
1936                 echo \$dir
1937                 exit 0
1938         fi
1939         ;;
1940         *)
1941         for thisthing in \$dir/\$thing; do
1942                 : just loop through to pick last item
1943         done
1944         if test -f \$thisthing; then
1945                 echo \$thisthing
1946                 exit 0
1947         elif test -f \$dir/\$thing.exe; then
1948                 if test -n "$DJGPP"; then
1949                         echo \$dir/\$thing.exe
1950                 else
1951                         : on Eunice apparently
1952                         echo \$dir/\$thing
1953                 fi
1954                 exit 0
1955         fi
1956         ;;
1957         esac
1958 done
1959 echo \$dflt
1960 exit 1
1961 EOSC
1962 chmod +x loc
1963 $eunicefix loc
1964 loclist="
1965 awk
1966 cat
1967 comm
1968 cp
1969 echo
1970 expr
1971 grep
1972 ls
1973 make
1974 mkdir
1975 rm
1976 sed
1977 sort
1978 touch
1979 tr
1980 uniq
1981 "
1982 trylist="
1983 Mcc
1984 ar
1985 bison
1986 byacc
1987 cpp
1988 csh
1989 date
1990 egrep
1991 gzip
1992 less
1993 ln
1994 more
1995 nm
1996 nroff
1997 pg
1998 test
1999 uname
2000 zip
2001 "
2002 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2003 pth="$pth /lib /usr/lib"
2004 for file in $loclist; do
2005         eval xxx=\$$file
2006         case "$xxx" in
2007         /*|?:[\\/]*)
2008                 if test -f "$xxx"; then
2009                         : ok
2010                 else
2011                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2012                         xxx=`./loc $file $file $pth`
2013                 fi
2014                 ;;
2015         '') xxx=`./loc $file $file $pth`;;
2016         *) xxx=`./loc $xxx $xxx $pth`;;
2017         esac
2018         eval $file=$xxx
2019         eval _$file=$xxx
2020         case "$xxx" in
2021         /*)
2022                 echo $file is in $xxx.
2023                 ;;
2024         ?:[\\/]*)
2025                 echo $file is in $xxx.
2026                 ;;
2027         *)
2028                 echo "I don't know where '$file' is, and my life depends on it." >&4
2029                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2030                 exit 1
2031                 ;;
2032         esac
2033 done
2034 echo " "
2035 echo "Don't worry if any of the following aren't found..."
2036 say=offhand
2037 for file in $trylist; do
2038         eval xxx=\$$file
2039         case "$xxx" in
2040         /*|?:[\\/]*)
2041                 if test -f "$xxx"; then
2042                         : ok
2043                 else
2044                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2045                         xxx=`./loc $file $file $pth`
2046                 fi
2047                 ;;
2048         '') xxx=`./loc $file $file $pth`;;
2049         *) xxx=`./loc $xxx $xxx $pth`;;
2050         esac
2051         eval $file=$xxx
2052         eval _$file=$xxx
2053         case "$xxx" in
2054         /*)
2055                 echo $file is in $xxx.
2056                 ;;
2057         ?:[\\/]*)
2058                 echo $file is in $xxx.
2059                 ;;
2060         *)
2061                 echo "I don't see $file out there, $say."
2062                 say=either
2063                 ;;
2064         esac
2065 done
2066 case "$egrep" in
2067 egrep)
2068         echo "Substituting grep for egrep."
2069         egrep=$grep
2070         ;;
2071 esac
2072 case "$ln" in
2073 ln)
2074         echo "Substituting cp for ln."
2075         ln=$cp
2076         ;;
2077 esac
2078 case "$test" in
2079 test)
2080         echo "Hopefully test is built into your sh."
2081         ;;
2082 *)
2083         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2084                 echo "Using the test built into your sh."
2085                 test=test
2086                 _test=test
2087         fi
2088         ;;
2089 esac
2090 case "$echo" in
2091 echo)
2092         echo "Hopefully echo is built into your sh."
2093         ;;
2094 '') ;;
2095 *)
2096         echo " "
2097 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2098         $echo $n "hi there$c" >foo1
2099         echo $n "hi there$c" >foo2
2100         if cmp foo1 foo2 >/dev/null 2>&1; then
2101                 echo "They are compatible.  In fact, they may be identical."
2102         else
2103                 case "$n" in
2104                 '-n') n='' c='\c';;
2105                 *) n='-n' c='';;
2106                 esac
2107                 cat <<FOO
2108 They are not compatible!  You are probably running ksh on a non-USG system.
2109 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2110 have echo built in and we may have to run some Bourne shell scripts.  That
2111 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2112
2113 FOO
2114                 $echo $n "The star should be here-->$c"
2115                 $echo "*"
2116         fi
2117         $rm -f foo1 foo2
2118         ;;
2119 esac
2120
2121 cat <<EOS >checkcc
2122 $startsh
2123 EOS
2124 cat <<'EOSC' >>checkcc
2125 case "$cc" in
2126 '') ;;
2127 *)  $rm -f try try.*
2128     $cat >try.c <<EOM
2129 int main(int argc, char *argv[]) {
2130   return 0;
2131 }
2132 EOM
2133     if $cc -o try $ccflags try.c; then
2134        :
2135     else
2136         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2137         despair=yes
2138         trygcc=yes
2139         case "$cc" in
2140         *gcc*) trygcc=no ;;
2141         esac
2142         case "`$cc -v -c try.c 2>&1`" in
2143         *gcc*) trygcc=no ;;
2144         esac
2145         if $test X"$trygcc" = Xyes; then
2146             if gcc -o try -c try.c; then
2147                 echo " "
2148                 echo "You seem to have a working gcc, though." >&4
2149                 rp="Would you like to use it?"
2150                 dflt=y
2151                 if $test -f myread; then
2152                     . ./myread
2153                 else
2154                     if $test -f UU/myread; then
2155                         . ./UU/myread
2156                     else
2157                         echo "Cannot find myread, sorry.  Aborting." >&2
2158                         exit 1
2159                     fi
2160                 fi  
2161                 case "$ans" in
2162                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2163                 esac
2164             fi
2165         fi
2166         if $test X"$despair" = Xyes; then
2167             $cat >&4 <<EOM
2168 You need to find a working C compiler.
2169 Either (purchase and) install the C compiler supplied by your OS vendor,
2170 or for a free C compiler try http://gcc.gnu.org/
2171 I cannot continue any further, aborting.
2172 EOM
2173             exit 1
2174         fi
2175     fi
2176     $rm -f try try.*
2177     ;;
2178 esac
2179 EOSC
2180
2181 : determine whether symbolic links are supported
2182 echo " "
2183 $touch blurfl
2184 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2185         echo "Symbolic links are supported." >&4
2186         lns="$ln -s"
2187 else
2188         echo "Symbolic links are NOT supported." >&4
2189         lns="$ln"
2190 fi
2191 $rm -f blurfl sym
2192
2193 : determine whether symbolic links are supported
2194 echo " "
2195 case "$lns" in
2196 *"ln -s")
2197         echo "Checking how to test for symbolic links..." >&4
2198         $lns blurfl sym
2199         if $test "X$issymlink" = X; then
2200                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2201                 if test $? = 0; then
2202                         issymlink="test -h"
2203                 fi              
2204         fi
2205         if $test "X$issymlink" = X; then
2206                 if  $test -h >/dev/null 2>&1; then
2207                         issymlink="$test -h"
2208                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2209                 fi              
2210         fi
2211         if $test "X$issymlink" = X; then
2212                 if $test -L sym 2>/dev/null; then
2213                         issymlink="$test -L"
2214                 fi
2215         fi
2216         if $test "X$issymlink" != X; then
2217                 echo "You can test for symbolic links with '$issymlink'." >&4
2218         else
2219                 echo "I do not know how you can test for symbolic links." >&4
2220         fi
2221         $rm -f blurfl sym
2222         ;;
2223 *)      echo "No symbolic links, so not testing for their testing..." >&4
2224         ;;
2225 esac
2226 echo " "
2227
2228
2229 case "$mksymlinks" in
2230 $define|true|[yY]*)
2231         case "$src" in
2232         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2233                 exit 1
2234                 ;;
2235         *)      case "$lns:$issymlink" in
2236                 *"ln -s:"*"test -"?)
2237                         echo "Creating the symbolic links..." >&4
2238                         echo "(First creating the subdirectories...)" >&4
2239                         cd ..
2240                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2241                                 read directory
2242                                 test -z "$directory" && break
2243                                 mkdir -p $directory
2244                         done
2245                         # Sanity check 1.
2246                         if test ! -d t/base; then
2247                                 echo "Failed to create the subdirectories.  Aborting." >&4
2248                                 exit 1
2249                         fi
2250                         echo "(Then creating the symlinks...)" >&4
2251                         awk '{print $1}' $src/MANIFEST | while true; do
2252                                 read filename
2253                                 test -z "$filename" && break
2254                                 if test -f $filename; then
2255                                         if $issymlink $filename; then
2256                                                 rm -f $filename
2257                                         fi
2258                                 fi
2259                                 if test -f $filename; then
2260                                         echo "$filename already exists, not symlinking."
2261                                 else
2262                                         ln -s $src/$filename $filename
2263                                 fi
2264                         done
2265                         # Sanity check 2.
2266                         if test ! -f t/base/commonsense.t; then
2267                                 echo "Failed to create the symlinks.  Aborting." >&4
2268                                 exit 1
2269                         fi
2270                         cd UU
2271                         ;;
2272                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2273                         ;;
2274                 esac
2275                 ;;
2276         esac
2277         ;;
2278 esac
2279
2280 : see whether [:lower:] and [:upper:] are supported character classes
2281 echo " "
2282 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2283 ABYZ)
2284         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2285         up='[:upper:]'
2286         low='[:lower:]'
2287         ;;
2288 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2289         # (0xc9 and 0xd1), therefore that is a nice testing point.
2290         if test "X$up" = X -o "X$low" = X; then
2291             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2292             ij) up='[A-Z]'
2293                 low='[a-z]'
2294                 ;;
2295             esac
2296         fi
2297         if test "X$up" = X -o "X$low" = X; then
2298             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2299             ij) up='A-Z'
2300                 low='a-z'
2301                 ;;
2302             esac
2303         fi
2304         if test "X$up" = X -o "X$low" = X; then
2305             case "`echo IJ | od -x 2>/dev/null`" in
2306             *C9D1*|*c9d1*)
2307                 echo "Hey, this might be EBCDIC." >&4
2308                 if test "X$up" = X -o "X$low" = X; then
2309                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2310                     ij) up='[A-IJ-RS-Z]'
2311                         low='[a-ij-rs-z]'
2312                         ;;
2313                     esac
2314                 fi
2315                 if test "X$up" = X -o "X$low" = X; then
2316                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2317                     ij) up='A-IJ-RS-Z'
2318                         low='a-ij-rs-z'
2319                         ;;
2320                     esac
2321                 fi
2322                 ;;
2323             esac
2324         fi
2325 esac
2326 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2327 ij)
2328     echo "Using $up and $low to convert case." >&4
2329     ;;
2330 *)
2331     echo "I don't know how to translate letters from upper to lower case." >&4
2332     echo "Your tr is not acting any way I know of." >&4
2333     exit 1
2334     ;;
2335 esac
2336 : set up the translation script tr, must be called with ./tr of course
2337 cat >tr <<EOSC
2338 $startsh
2339 case "\$1\$2" in
2340 '[A-Z][a-z]') exec $tr '$up' '$low';;
2341 '[a-z][A-Z]') exec $tr '$low' '$up';;
2342 esac
2343 exec $tr "\$@"
2344 EOSC
2345 chmod +x tr
2346 $eunicefix tr
2347
2348 : Try to determine whether config.sh was made on this system
2349 case "$config_sh" in
2350 '')
2351 myuname=`$uname -a 2>/dev/null`
2352 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2353 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2354 # because the A-Z/a-z are not consecutive.
2355 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2356         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2357 newmyuname="$myuname"
2358 dflt=n
2359 case "$knowitall" in
2360 '')
2361         if test -f ../config.sh; then
2362                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2363                         eval "`grep myuname= ../config.sh`"
2364                 fi
2365                 if test "X$myuname" = "X$newmyuname"; then
2366                         dflt=y
2367                 fi
2368         fi
2369         ;;
2370 *) dflt=y;;
2371 esac
2372
2373 : Get old answers from old config file if Configure was run on the
2374 : same system, otherwise use the hints.
2375 hint=default
2376 cd ..
2377 if test -f config.sh; then
2378         echo " "
2379         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2380         . UU/myread
2381         case "$ans" in
2382         n*|N*) echo "OK, I'll ignore it."
2383                 mv config.sh config.sh.old
2384                 myuname="$newmyuname"
2385                 ;;
2386         *)  echo "Fetching default answers from your old config.sh file..." >&4
2387                 tmp_n="$n"
2388                 tmp_c="$c"
2389                 tmp_sh="$sh"
2390                 . ./config.sh
2391                 cp config.sh UU
2392                 n="$tmp_n"
2393                 c="$tmp_c"
2394                 : Older versions did not always set $sh.  Catch re-use of such
2395                 : an old config.sh.
2396                 case "$sh" in
2397                 '') sh="$tmp_sh" ;;
2398                 esac
2399                 hint=previous
2400                 ;;
2401         esac
2402 fi
2403 . ./UU/checkcc
2404 if test ! -f config.sh; then
2405         $cat <<EOM
2406
2407 First time through, eh?  I have some defaults handy for some systems
2408 that need some extra help getting the Configure answers right:
2409
2410 EOM
2411         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2412         dflt=''
2413         : Half the following guesses are probably wrong... If you have better
2414         : tests or hints, please send them to perlbug@perl.org
2415         : The metaconfig authors would also appreciate a copy...
2416         $test -f /irix && osname=irix
2417         $test -f /xenix && osname=sco_xenix
2418         $test -f /dynix && osname=dynix
2419         $test -f /dnix && osname=dnix
2420         $test -f /lynx.os && osname=lynxos
2421         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2422         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2423         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2424         $test -f /bin/mips && /bin/mips && osname=mips
2425         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2426                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2427         $test -d /usr/apollo/bin && osname=apollo
2428         $test -f /etc/saf/_sactab && osname=svr4
2429         $test -d /usr/include/minix && osname=minix
2430         if $test -d /MachTen -o -d /MachTen_Folder; then
2431                 osname=machten
2432                 if $test -x /sbin/version; then
2433                         osvers=`/sbin/version | $awk '{print $2}' |
2434                         $sed -e 's/[A-Za-z]$//'`
2435                 elif $test -x /usr/etc/version; then
2436                         osvers=`/usr/etc/version | $awk '{print $2}' |
2437                         $sed -e 's/[A-Za-z]$//'`
2438                 else
2439                         osvers="$2.$3"
2440                 fi
2441         fi
2442
2443         $test -f /sys/posix.dll &&
2444                 $test -f /usr/bin/what &&
2445                 set X `/usr/bin/what /sys/posix.dll` &&
2446                 $test "$3" = UWIN &&
2447                 osname=uwin &&
2448                 osvers="$5"
2449
2450         if $test -f $uname; then
2451                 set X $myuname
2452                 shift
2453
2454                 case "$5" in
2455                 fps*) osname=fps ;;
2456                 mips*)
2457                         case "$4" in
2458                         umips) osname=umips ;;
2459                         *) osname=mips ;;
2460                         esac;;
2461                 [23]100) osname=mips ;;
2462                 next*) osname=next ;;
2463                 i386*)
2464                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2465                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2466                                 osname='sco'
2467                                 osvers=$tmp
2468                         elif $test -f /etc/kconfig; then
2469                                 osname=isc
2470                                 if test "$lns" = "$ln -s"; then
2471                                         osvers=4
2472                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2473                                         osvers=3
2474                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2475                                         osvers=2
2476                                 fi
2477                         fi
2478                         tmp=''
2479                         ;;
2480                 pc*)
2481                         if test -n "$DJGPP"; then
2482                                 osname=dos
2483                                 osvers=djgpp
2484                         fi
2485                         ;;
2486                 esac
2487
2488                 case "$1" in
2489                 aix) osname=aix
2490                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2491                         case "$tmp" in
2492                         'not found') osvers="$4"."$3" ;;
2493                         '<3240'|'<>3240') osvers=3.2.0 ;;
2494                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2495                         '=3250'|'>3250') osvers=3.2.5 ;;
2496                         *) osvers=$tmp;;
2497                         esac
2498                         ;;
2499                 bsd386) osname=bsd386
2500                         osvers=`$uname -r`
2501                         ;;
2502                 cygwin*) osname=cygwin
2503                         osvers="$3"
2504                         ;;
2505                 *dc.osx) osname=dcosx
2506                         osvers="$3"
2507                         ;;
2508                 dnix) osname=dnix
2509                         osvers="$3"
2510                         ;;
2511                 domainos) osname=apollo
2512                         osvers="$3"
2513                         ;;
2514                 dgux) osname=dgux 
2515                         osvers="$3"
2516                         ;;
2517                 dynixptx*) osname=dynixptx
2518                         osvers=`echo "$4"|sed 's/^v//'`
2519                         ;;
2520                 freebsd) osname=freebsd 
2521                         osvers="$3" ;;
2522                 genix) osname=genix ;;
2523                 hp*) osname=hpux 
2524                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2525                         ;;
2526                 irix*) osname=irix
2527                         case "$3" in
2528                         4*) osvers=4 ;;
2529                         5*) osvers=5 ;;
2530                         *)      osvers="$3" ;;
2531                         esac
2532                         ;;
2533                 linux) osname=linux
2534                         case "$3" in
2535                         *)      osvers="$3" ;;
2536                         esac
2537                         ;;
2538                 MiNT) osname=mint
2539                         ;;
2540                 netbsd*) osname=netbsd
2541                         osvers="$3"
2542                         ;;
2543                 news-os) osvers="$3"
2544                         case "$3" in
2545                         4*) osname=newsos4 ;;
2546                         *) osname=newsos ;;
2547                         esac
2548                         ;;
2549                 next*) osname=next ;;
2550                 nonstop-ux) osname=nonstopux ;;
2551                 POSIX-BC | posix-bc ) osname=posix-bc
2552                         osvers="$3"
2553                         ;;
2554                 powerux | power_ux | powermax_os | powermaxos | \
2555                 powerunix | power_unix) osname=powerux
2556                         osvers="$3"
2557                         ;;
2558                 qnx) osname=qnx
2559                         osvers="$4"
2560                         ;;
2561                 solaris) osname=solaris
2562                         case "$3" in
2563                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2564                         *)      osvers="$3" ;;
2565                         esac
2566                         ;;
2567                 sunos) osname=sunos
2568                         case "$3" in
2569                         5*) osname=solaris
2570                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2571                         *)      osvers="$3" ;;
2572                         esac
2573                         ;;
2574                 titanos) osname=titanos
2575                         case "$3" in
2576                         1*) osvers=1 ;;
2577                         2*) osvers=2 ;;
2578                         3*) osvers=3 ;;
2579                         4*) osvers=4 ;;
2580                         *)      osvers="$3" ;;
2581                         esac
2582                         ;;
2583                 ultrix) osname=ultrix
2584                         osvers="$3"
2585                         ;;
2586                 osf1|mls+)      case "$5" in
2587                                 alpha)
2588                                         osname=dec_osf
2589                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2590                                         case "$osvers" in
2591                                         [1-9].[0-9]*) ;;
2592                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2593                                         esac
2594                                         ;;
2595                         hp*)    osname=hp_osf1  ;;
2596                         mips)   osname=mips_osf1 ;;
2597                         esac
2598                         ;;
2599                 unixware) osname=svr5
2600                         osvers="$4"
2601                         ;;
2602                 uts) osname=uts
2603                         osvers="$3"
2604                         ;;
2605                 $2) case "$osname" in
2606                         *isc*) ;;
2607                         *freebsd*) ;;
2608                         svr*)
2609                                 : svr4.x or possibly later
2610                                 case "svr$3" in 
2611                                 ${osname}*)
2612                                         osname=svr$3
2613                                         osvers=$4
2614                                         ;;
2615                                 esac
2616                                 case "$osname" in
2617                                 svr4.0)
2618                                         : Check for ESIX
2619                                         if test -f /stand/boot ; then
2620                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2621                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2622                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2623                                                         if test -n "$isesix"; then
2624                                                                 osname=esix4
2625                                                         fi
2626                                                 fi
2627                                         fi
2628                                         ;;
2629                                 esac
2630                                 ;;
2631                         *)      if test -f /etc/systemid; then
2632                                         osname=sco
2633                                         set `echo $3 | $sed 's/\./ /g'` $4
2634                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2635                                                 osvers=$1.$2.$3
2636                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2637                                                 osvers=$1.$2
2638                                         elif $test -f $src/hints/sco_$1.sh; then
2639                                                 osvers=$1
2640                                         fi
2641                                 else
2642                                         case "$osname" in
2643                                         '') : Still unknown.  Probably a generic Sys V.
2644                                                 osname="sysv"
2645                                                 osvers="$3"
2646                                                 ;;
2647                                         esac
2648                                 fi
2649                                 ;;
2650                         esac
2651                         ;;
2652                 *)      case "$osname" in
2653                         '') : Still unknown.  Probably a generic BSD.
2654                                 osname="$1"
2655                                 osvers="$3"
2656                                 ;;
2657                         esac
2658                         ;;
2659                 esac
2660         else
2661                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2662                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2663                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2664                                 osname=news_os
2665                         fi
2666                         $rm -f UU/kernel.what
2667                 elif test -d c:/.; then
2668                         set X $myuname
2669                         osname=os2
2670                         osvers="$5"
2671                 fi
2672         fi
2673         
2674         : Now look for a hint file osname_osvers, unless one has been
2675         : specified already.
2676         case "$hintfile" in
2677         ''|' ')
2678                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2679                 : Also try without trailing minor version numbers.
2680                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2681                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2682                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2683                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2684                 case "$file" in
2685                 '') dflt=none ;;
2686                 *)  case "$osvers" in
2687                         '') dflt=$file
2688                                 ;;
2689                         *)  if $test -f $src/hints/$file.sh ; then
2690                                         dflt=$file
2691                                 elif $test -f $src/hints/$xfile.sh ; then
2692                                         dflt=$xfile
2693                                 elif $test -f $src/hints/$xxfile.sh ; then
2694                                         dflt=$xxfile
2695                                 elif $test -f $src/hints/$xxxfile.sh ; then
2696                                         dflt=$xxxfile
2697                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2698                                         dflt=$xxxxfile
2699                                 elif $test -f "$src/hints/${osname}.sh" ; then
2700                                         dflt="${osname}"
2701                                 else
2702                                         dflt=none
2703                                 fi
2704                                 ;;
2705                         esac
2706                         ;;
2707                 esac
2708                 if $test -f Policy.sh ; then
2709                         case "$dflt" in
2710                         *Policy*) ;;
2711                         none) dflt="Policy" ;;
2712                         *) dflt="Policy $dflt" ;;
2713                         esac
2714                 fi
2715                 ;;
2716         *)
2717                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2718                 ;;
2719         esac
2720
2721         if $test -f Policy.sh ; then
2722                 $cat <<EOM
2723
2724 There's also a Policy hint file available, which should make the
2725 site-specific (policy) questions easier to answer.
2726 EOM
2727
2728         fi
2729
2730         $cat <<EOM
2731
2732 You may give one or more space-separated answers, or "none" if appropriate.
2733 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2734 is a good thing.  DO NOT give a wrong version or a wrong OS.
2735
2736 EOM
2737
2738         rp="Which of these apply, if any?"
2739         . UU/myread
2740         tans=$ans
2741         for file in $tans; do
2742                 if $test X$file = XPolicy -a -f Policy.sh; then
2743                         . Policy.sh
2744                         $cat Policy.sh >> UU/config.sh
2745                 elif $test -f $src/hints/$file.sh; then
2746                         . $src/hints/$file.sh
2747                         $cat $src/hints/$file.sh >> UU/config.sh
2748                 elif $test X$tans = X -o X$tans = Xnone ; then
2749                         : nothing
2750                 else
2751                         : Give one chance to correct a possible typo.
2752                         echo "$file.sh does not exist"
2753                         dflt=$file
2754                         rp="hint to use instead?"
2755                         . UU/myread
2756                         for file in $ans; do
2757                                 if $test -f "$src/hints/$file.sh"; then
2758                                         . $src/hints/$file.sh
2759                                         $cat $src/hints/$file.sh >> UU/config.sh
2760                                 elif $test X$ans = X -o X$ans = Xnone ; then
2761                                         : nothing
2762                                 else
2763                                         echo "$file.sh does not exist -- ignored."
2764                                 fi
2765                         done
2766                 fi
2767         done
2768
2769         hint=recommended
2770         : Remember our hint file for later.
2771         if $test -f "$src/hints/$file.sh" ; then
2772                 hintfile="$file"
2773         else
2774                 hintfile=''
2775         fi
2776 fi
2777 cd UU
2778 ;;
2779 *)
2780         echo " "
2781         echo "Fetching default answers from $config_sh..." >&4
2782         tmp_n="$n"
2783         tmp_c="$c"
2784         cd ..
2785         cp $config_sh config.sh 2>/dev/null
2786         chmod +w config.sh
2787         . ./config.sh
2788         cd UU
2789         cp ../config.sh .
2790         n="$tmp_n"
2791         c="$tmp_c"
2792         hint=previous
2793         ;;
2794 esac
2795 test "$override" && . ./optdef.sh
2796
2797 : Restore computed paths
2798 for file in $loclist $trylist; do
2799         eval $file="\$_$file"
2800 done
2801
2802 cat << EOM
2803
2804 Configure uses the operating system name and version to set some defaults.
2805 The default value is probably right if the name rings a bell. Otherwise,
2806 since spelling matters for me, either accept the default or answer "none"
2807 to leave it blank.
2808
2809 EOM
2810 case "$osname" in
2811         ''|' ')
2812                 case "$hintfile" in
2813                 ''|' '|none) dflt=none ;;
2814                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2815                 esac
2816                 ;;
2817         *) dflt="$osname" ;;
2818 esac
2819 rp="Operating system name?"
2820 . ./myread
2821 case "$ans" in
2822 none)  osname='' ;;
2823 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2824 esac
2825 echo " "
2826 case "$osvers" in
2827         ''|' ')
2828                 case "$hintfile" in
2829                 ''|' '|none) dflt=none ;;
2830                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2831                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2832                         case "$dflt" in
2833                         ''|' ') dflt=none ;;
2834                         esac
2835                         ;;
2836                 esac
2837                 ;;
2838         *) dflt="$osvers" ;;
2839 esac
2840 rp="Operating system version?"
2841 . ./myread
2842 case "$ans" in
2843 none)  osvers='' ;;
2844 *) osvers="$ans" ;;
2845 esac
2846
2847
2848 . ./posthint.sh
2849
2850 : who configured the system
2851 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2852 cf_by=`(logname) 2>/dev/null`
2853 case "$cf_by" in
2854 "")
2855         cf_by=`(whoami) 2>/dev/null`
2856         case "$cf_by" in
2857         "") cf_by=unknown ;;
2858         esac ;;
2859 esac
2860
2861 : set up the script used to warn in case of inconsistency
2862 cat <<EOS >whoa
2863 $startsh
2864 EOS
2865 cat <<'EOSC' >>whoa
2866 dflt=y
2867 echo " "
2868 echo "*** WHOA THERE!!! ***" >&4
2869 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2870 rp="    Keep the $hint value?"
2871 . ./myread
2872 case "$ans" in
2873 y) td=$was; tu=$was;;
2874 esac
2875 EOSC
2876
2877 : function used to set $1 to $val
2878 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2879 case "$val$was" in
2880 $define$undef) . ./whoa; eval "$var=\$td";;
2881 $undef$define) . ./whoa; eval "$var=\$tu";;
2882 *) eval "$var=$val";;
2883 esac'
2884
2885 case "$usethreads" in
2886 $define|true|[yY]*)     dflt='y';;
2887 *) dflt='n';;
2888 esac
2889 cat <<EOM
2890
2891 Perl can be built to take advantage of threads on some systems.
2892 To do so, Configure can be run with -Dusethreads.
2893
2894 Note that threading is a highly experimental feature, and
2895 some known race conditions still remain.  If you choose to try
2896 it, be very sure to not actually deploy it for production
2897 purposes.  README.threads has more details, and is required
2898 reading if you enable threads.
2899
2900 If this doesn't make any sense to you, just accept the default '$dflt'.
2901 EOM
2902 rp='Build a threading Perl?'
2903 . ./myread
2904 case "$ans" in
2905 y|Y)    val="$define" ;;
2906 *)      val="$undef" ;;
2907 esac
2908 set usethreads
2909 eval $setvar
2910
2911 case "$usethreads" in
2912 $define)
2913         $cat <<EOM
2914
2915 As of 5.5.640, Perl has two different internal threading implementations,
2916 the 5.005 version (5005threads) and an interpreter-based version
2917 (ithreads) that has one interpreter per thread.  Both are very 
2918 experimental.  This arrangement exists to help developers work out
2919 which one is better.
2920
2921 If you're a casual user, you probably don't want interpreter-threads
2922 at this time.  There doesn't yet exist a way to create threads from
2923 within Perl in this model, i.e., "use Thread;" will NOT work.
2924 EOM
2925         : Default to ithreads unless overridden on command line or with
2926         : old config.sh
2927         dflt='y'
2928         case "$use5005threads" in
2929                 $define|true|[yY]*) dflt='n';;
2930         esac
2931         case "$useithreads" in
2932                 $undef|false|[nN]*) dflt='n';;
2933         esac
2934         rp='Use interpreter-based ithreads?'
2935         . ./myread
2936         case "$ans" in
2937         y|Y)    val="$define" ;;
2938         *)      val="$undef" ;;
2939         esac
2940         set useithreads
2941         eval $setvar
2942         : Now set use5005threads to the opposite value.
2943         case "$useithreads" in
2944         $define) val="$undef" ;;
2945         *) val="$define" ;;
2946         esac
2947         set use5005threads
2948         eval $setvar
2949         ;;
2950 *)
2951         useithreads="$undef"
2952         use5005threads="$undef"
2953         ;;
2954 esac
2955
2956 case "$useithreads$use5005threads" in
2957 "$define$define")
2958         $cat >&4 <<EOM
2959
2960 You cannot have both the ithreads and the 5.005 threads enabled
2961 at the same time.  Disabling the 5.005 threads since they are
2962 much less stable than the ithreads.
2963
2964 EOM
2965         use5005threads="$undef"
2966         ;;
2967 esac
2968
2969 case "$d_oldpthreads" in
2970 '')     : Configure tests would be welcome here.  For now, assume undef.
2971         val="$undef" ;;
2972 *)      val="$d_oldpthreads" ;;
2973 esac
2974 set d_oldpthreads
2975 eval $setvar
2976
2977
2978 case "$usethreads" in
2979 "$define"|true|[yY]*)
2980 : Look for a hint-file generated 'call-back-unit'.  If the
2981 : user has specified that a threading perl is to be built,
2982 : we may need to set or change some other defaults.
2983         if $test -f usethreads.cbu; then
2984                 echo "Your platform has some specific hints for threaded builds, using them..."
2985                 . ./usethreads.cbu
2986         else
2987                 $cat <<EOM
2988 (Your platform doesn't have any specific hints for threaded builds.
2989  Assuming POSIX threads, then.)
2990 EOM
2991         fi
2992         ;;
2993 esac
2994
2995 cat <<EOM
2996
2997 Perl can be built so that multiple Perl interpreters can coexist
2998 within the same Perl executable.
2999 EOM
3000
3001 case "$useithreads" in
3002 $define)
3003         cat <<EOM
3004 This multiple interpreter support is required for interpreter-based threads.
3005 EOM
3006         val="$define"
3007         ;;
3008 *)      case "$usemultiplicity" in
3009         $define|true|[yY]*)     dflt='y';;
3010         *) dflt='n';;
3011         esac
3012         echo " "
3013         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3014         rp='Build Perl for multiplicity?'
3015         . ./myread
3016         case "$ans" in
3017         y|Y)    val="$define" ;;
3018         *)      val="$undef" ;;
3019         esac
3020         ;;
3021 esac
3022 set usemultiplicity
3023 eval $setvar
3024
3025 : make some quick guesses about what we are up against
3026 echo " "
3027 $echo $n "Hmm...  $c"
3028 echo exit 1 >bsd
3029 echo exit 1 >usg
3030 echo exit 1 >v7
3031 echo exit 1 >osf1
3032 echo exit 1 >eunice
3033 echo exit 1 >xenix
3034 echo exit 1 >venix
3035 echo exit 1 >os2
3036 d_bsd="$undef"
3037 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3038 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3039 then
3040         echo "Looks kind of like an OSF/1 system, but we'll see..."
3041         echo exit 0 >osf1
3042 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3043         xxx=`./loc addbib blurfl $pth`
3044         if $test -f $xxx; then
3045         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3046                 echo exit 0 >bsd
3047                 echo exit 0 >usg
3048         else
3049                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3050                         echo "Looks kind of like an extended USG system, but we'll see..."
3051                 else
3052                         echo "Looks kind of like a USG system, but we'll see..."
3053                 fi
3054                 echo exit 0 >usg
3055         fi
3056 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3057         echo "Looks kind of like a BSD system, but we'll see..."
3058         d_bsd="$define"
3059         echo exit 0 >bsd
3060 else
3061         echo "Looks kind of like a Version 7 system, but we'll see..."
3062         echo exit 0 >v7
3063 fi
3064 case "$eunicefix" in
3065 *unixtovms*)
3066         $cat <<'EOI'
3067 There is, however, a strange, musty smell in the air that reminds me of
3068 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3069 EOI
3070         echo exit 0 >eunice
3071         d_eunice="$define"
3072 : it so happens the Eunice I know will not run shell scripts in Unix format
3073         ;;
3074 *)
3075         echo " "
3076         echo "Congratulations.  You aren't running Eunice."
3077         d_eunice="$undef"
3078         ;;
3079 esac
3080 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3081 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3082 : semicolon as a patch separator
3083 case "$p_" in
3084 :) ;;
3085 *)
3086         $cat <<'EOI'
3087 I have the feeling something is not exactly right, however...don't tell me...
3088 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3089 (Or you may be running DOS with DJGPP.)
3090 EOI
3091         echo exit 0 >os2
3092         ;;
3093 esac
3094 if test -f /xenix; then
3095         echo "Actually, this looks more like a XENIX system..."
3096         echo exit 0 >xenix
3097         d_xenix="$define"
3098 else
3099         echo " "
3100         echo "It's not Xenix..."
3101         d_xenix="$undef"
3102 fi
3103 chmod +x xenix
3104 $eunicefix xenix
3105 if test -f /venix; then
3106         echo "Actually, this looks more like a VENIX system..."
3107         echo exit 0 >venix
3108 else
3109         echo " "
3110         if ./xenix; then
3111                 : null
3112         else
3113                 echo "Nor is it Venix..."
3114         fi
3115 fi
3116 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3117 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3118 $rm -f foo
3119
3120 case "$cc" in
3121 '') dflt=cc;;
3122 *) dflt="$cc";;
3123 esac
3124 rp="Use which C compiler?"
3125 . ./myread
3126 cc="$ans"
3127 : Look for a hint-file generated 'call-back-unit'.  Now that the
3128 : user has specified the compiler, we may need to set or change some
3129 : other defaults.
3130 if $test -f cc.cbu; then
3131     . ./cc.cbu
3132 fi
3133 . ./checkcc
3134
3135 echo " "
3136 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3137 $cat >gccvers.c <<EOM
3138 #include <stdio.h>
3139 int main() {
3140 #ifdef __GNUC__
3141 #ifdef __VERSION__
3142         printf("%s\n", __VERSION__);
3143 #else
3144         printf("%s\n", "1");
3145 #endif
3146 #endif
3147         exit(0);
3148 }
3149 EOM
3150 if $cc -o gccvers $ccflags $ldflags gccvers.c; then
3151         gccversion=`./gccvers`
3152         case "$gccversion" in
3153         '') echo "You are not using GNU cc." ;;
3154         *)  echo "You are using GNU cc $gccversion."
3155             ccname=gcc  
3156             ;;
3157         esac
3158 else
3159         echo " "
3160         echo "*** WHOA THERE!!! ***" >&4
3161         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3162         case "$knowitall" in
3163         '')
3164         echo "    You'd better start hunting for one and let me know about it." >&4
3165                 exit 1
3166                 ;;
3167         esac
3168 fi
3169 $rm -f gccvers*
3170 case "$gccversion" in
3171 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3172 esac
3173 case "$gccversion" in
3174 '') gccosandvers='' ;;
3175 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3176    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3177    gccshortvers=''
3178    case "$gccosandvers" in
3179    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3180    $osname$osvers) ;; # looking good
3181    $osname*) cat <<EOM >&4
3182
3183 *** WHOA THERE!!! ***
3184
3185     Your gcc has not been compiled for the exact release of
3186     your operating system ($gccosandvers versus $osname$osvers).
3187
3188     In general it is a good idea to keep gcc synchronized with
3189     the operating system because otherwise serious problems
3190     may ensue when trying to compile software, like Perl.
3191
3192     I'm trying to be optimistic here, though, and will continue.
3193     If later during the configuration and build icky compilation
3194     problems appear (headerfile conflicts being the most common
3195     manifestation), I suggest reinstalling the gcc to match
3196     your operating system release.
3197
3198 EOM
3199       ;;
3200    *) gccosandvers='' ;; # failed to parse, better be silent
3201    esac
3202    ;;
3203 esac
3204 case "$ccname" in
3205 '') ccname="$cc" ;;
3206 esac
3207
3208 : see how we invoke the C preprocessor
3209 echo " "
3210 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3211 cat <<'EOT' >testcpp.c
3212 #define ABC abc
3213 #define XYZ xyz
3214 ABC.XYZ
3215 EOT
3216 cd ..
3217 if test ! -f cppstdin; then
3218         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3219                 # AIX cc -E doesn't show the absolute headerfile
3220                 # locations but we'll cheat by using the -M flag.
3221                 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
3222         else
3223                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3224         fi
3225 else
3226         echo "Keeping your $hint cppstdin wrapper."
3227 fi
3228 chmod 755 cppstdin
3229 wrapper=`pwd`/cppstdin
3230 ok='false'
3231 cd UU
3232
3233 if $test "X$cppstdin" != "X" && \
3234         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3235         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3236 then
3237         echo "You used to use $cppstdin $cppminus so we'll use that again."
3238         case "$cpprun" in
3239         '') echo "But let's see if we can live without a wrapper..." ;;
3240         *)
3241                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3242                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3243                 then
3244                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3245                         ok='true'
3246                 else
3247                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3248                 fi
3249                 ;;
3250         esac
3251 else
3252         case "$cppstdin" in
3253         '') ;;
3254         *)
3255                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3256                 ;;
3257         esac
3258 fi
3259
3260 if $ok; then
3261         : nothing
3262 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3263         $cc -E <testcpp.c >testcpp.out 2>&1; \
3264         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3265         echo "Yup, it does."
3266         x_cpp="$cc -E"
3267         x_minus='';
3268 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3269         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3270         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3271         echo "Yup, it does."
3272         x_cpp="$cc -E"
3273         x_minus='-';
3274 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3275         $cc -P <testcpp.c >testcpp.out 2>&1; \
3276         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3277         echo "Yipee, that works!"
3278         x_cpp="$cc -P"
3279         x_minus='';
3280 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3281         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3282         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3283         echo "At long last!"
3284         x_cpp="$cc -P"
3285         x_minus='-';
3286 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3287         $cpp <testcpp.c >testcpp.out 2>&1; \
3288         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3289         echo "It works!"
3290         x_cpp="$cpp"
3291         x_minus='';
3292 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3293         $cpp - <testcpp.c >testcpp.out 2>&1; \
3294         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3295         echo "Hooray, it works!  I was beginning to wonder."
3296         x_cpp="$cpp"
3297         x_minus='-';
3298 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3299         $wrapper <testcpp.c >testcpp.out 2>&1; \
3300         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3301         x_cpp="$wrapper"
3302         x_minus=''
3303         echo "Eureka!"
3304 else
3305         dflt=''
3306         rp="No dice.  I can't find a C preprocessor.  Name one:"
3307         . ./myread
3308         x_cpp="$ans"
3309         x_minus=''
3310         $x_cpp <testcpp.c >testcpp.out 2>&1
3311         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3312                 echo "OK, that will do." >&4
3313         else
3314 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3315                 exit 1
3316         fi
3317 fi
3318
3319 case "$ok" in
3320 false)
3321         cppstdin="$x_cpp"
3322         cppminus="$x_minus"
3323         cpprun="$x_cpp"
3324         cpplast="$x_minus"
3325         set X $x_cpp
3326         shift
3327         case "$1" in
3328         "$cpp")
3329                 echo "Perhaps can we force $cc -E using a wrapper..."
3330                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3331                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3332                 then
3333                         echo "Yup, we can."
3334                         cppstdin="$wrapper"
3335                         cppminus='';
3336                 else
3337                         echo "Nope, we'll have to live without it..."
3338                 fi
3339                 ;;
3340         esac
3341         case "$cpprun" in
3342         "$wrapper")
3343                 cpprun=''
3344                 cpplast=''
3345                 ;;
3346         esac
3347         ;;
3348 esac
3349
3350 case "$cppstdin" in
3351 "$wrapper"|'cppstdin') ;;
3352 *) $rm -f $wrapper;;
3353 esac
3354 $rm -f testcpp.c testcpp.out
3355
3356 : decide how portable to be.  Allow command line overrides.
3357 case "$d_portable" in
3358 "$undef") ;;
3359 *)      d_portable="$define" ;;
3360 esac
3361
3362 : set up shell script to do ~ expansion
3363 cat >filexp <<EOSS
3364 $startsh
3365 : expand filename
3366 case "\$1" in
3367  ~/*|~)
3368         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3369         ;;
3370  ~*)
3371         if $test -f /bin/csh; then
3372                 /bin/csh -f -c "glob \$1"
3373                 failed=\$?
3374                 echo ""
3375                 exit \$failed
3376         else
3377                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3378                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3379                 if $test ! -d "\$dir"; then
3380                         me=\`basename \$0\`
3381                         echo "\$me: can't locate home directory for: \$name" >&2
3382                         exit 1
3383                 fi
3384                 case "\$1" in
3385                 */*)
3386                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3387                         ;;
3388                 *)
3389                         echo \$dir
3390                         ;;
3391                 esac
3392         fi
3393         ;;
3394 *)
3395         echo \$1
3396         ;;
3397 esac
3398 EOSS
3399 chmod +x filexp
3400 $eunicefix filexp
3401
3402 : now set up to get a file name
3403 cat <<EOS >getfile
3404 $startsh
3405 EOS
3406 cat <<'EOSC' >>getfile
3407 tilde=''
3408 fullpath=''
3409 already=''
3410 skip=''
3411 none_ok=''
3412 exp_file=''
3413 nopath_ok=''
3414 orig_rp="$rp"
3415 orig_dflt="$dflt"
3416 case "$gfpth" in
3417 '') gfpth='.' ;;
3418 esac
3419
3420 case "$fn" in
3421 *\(*)
3422         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3423         fn=`echo $fn | sed 's/(.*)//'`
3424         ;;
3425 esac
3426
3427 case "$fn" in
3428 *:*)
3429         loc_file=`expr $fn : '.*:\(.*\)'`
3430         fn=`expr $fn : '\(.*\):.*'`
3431         ;;
3432 esac
3433
3434 case "$fn" in
3435 *~*) tilde=true;;
3436 esac
3437 case "$fn" in
3438 */*) fullpath=true;;
3439 esac
3440 case "$fn" in
3441 *+*) skip=true;;
3442 esac
3443 case "$fn" in
3444 *n*) none_ok=true;;
3445 esac
3446 case "$fn" in
3447 *e*) exp_file=true;;
3448 esac
3449 case "$fn" in
3450 *p*) nopath_ok=true;;
3451 esac
3452
3453 case "$fn" in
3454 *f*) type='File';;
3455 *d*) type='Directory';;
3456 *l*) type='Locate';;
3457 esac
3458
3459 what="$type"
3460 case "$what" in
3461 Locate) what='File';;
3462 esac
3463
3464 case "$exp_file" in
3465 '')
3466         case "$d_portable" in
3467         "$define") ;;
3468         *) exp_file=true;;
3469         esac
3470         ;;
3471 esac
3472
3473 cd ..
3474 while test "$type"; do
3475         redo=''
3476         rp="$orig_rp"
3477         dflt="$orig_dflt"
3478         case "$tilde" in
3479         true) rp="$rp (~name ok)";;
3480         esac
3481         . UU/myread
3482         if test -f UU/getfile.ok && \
3483                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3484         then
3485                 value="$ans"
3486                 ansexp="$ans"
3487                 break
3488         fi
3489         case "$ans" in
3490         none)
3491                 value=''
3492                 ansexp=''
3493                 case "$none_ok" in
3494                 true) type='';;
3495                 esac
3496                 ;;
3497         *)
3498                 case "$tilde" in
3499                 '') value="$ans"
3500                         ansexp="$ans";;
3501                 *)
3502                         value=`UU/filexp $ans`
3503                         case $? in
3504                         0)
3505                                 if test "$ans" != "$value"; then
3506                                         echo "(That expands to $value on this system.)"
3507                                 fi
3508                                 ;;
3509                         *) value="$ans";;
3510                         esac
3511                         ansexp="$value"
3512                         case "$exp_file" in
3513                         '') value="$ans";;
3514                         esac
3515                         ;;
3516                 esac
3517                 case "$fullpath" in
3518                 true)
3519                         case "$ansexp" in
3520                         /*) value="$ansexp" ;;
3521                         [a-zA-Z]:/*) value="$ansexp" ;;
3522                         *)
3523                                 redo=true
3524                                 case "$already" in
3525                                 true)
3526                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3527                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3528                                         ;;
3529                                 *)
3530                                 echo "Please give a full path name, starting with slash." >&4
3531                                         case "$tilde" in
3532                                         true)
3533                                 echo "Note that using ~name is ok provided it expands well." >&4
3534                                                 already=true
3535                                                 ;;
3536                                         esac
3537                                 esac
3538                                 ;;
3539                         esac
3540                         ;;
3541                 esac
3542                 case "$redo" in
3543                 '')
3544                         case "$type" in
3545                         File)
3546                                 for fp in $gfpth; do
3547                                         if test "X$fp" = X.; then
3548                                             pf="$ansexp"
3549                                         else    
3550                                             pf="$fp/$ansexp"
3551                                         fi
3552                                         if test -f "$pf"; then
3553                                                 type=''
3554                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3555                                         then
3556                                                 echo "($value is not a plain file, but that's ok.)"
3557                                                 type=''
3558                                         fi
3559                                         if test X"$type" = X; then
3560                                             value="$pf"
3561                                             break
3562                                         fi
3563                                 done
3564                                 ;;
3565                         Directory)
3566                                 for fp in $gfpth; do
3567                                         if test "X$fp" = X.; then
3568                                             dir="$ans"
3569                                             direxp="$ansexp"
3570                                         else    
3571                                             dir="$fp/$ansexp"
3572                                             direxp="$fp/$ansexp"
3573                                         fi
3574                                         if test -d "$direxp"; then
3575                                                 type=''
3576                                                 value="$dir"
3577                                                 break
3578                                         fi
3579                                 done
3580                                 ;;
3581                         Locate)
3582                                 if test -d "$ansexp"; then
3583                                         echo "(Looking for $loc_file in directory $value.)"
3584                                         value="$value/$loc_file"
3585                                         ansexp="$ansexp/$loc_file"
3586                                 fi
3587                                 if test -f "$ansexp"; then
3588                                         type=''
3589                                 fi
3590                                 case "$nopath_ok" in
3591                                 true)   case "$value" in
3592                                         */*) ;;
3593                                         *)      echo "Assuming $value will be in people's path."
3594                                                 type=''
3595                                                 ;;
3596                                         esac
3597                                         ;;
3598                                 esac
3599                                 ;;
3600                         esac
3601
3602                         case "$skip" in
3603                         true) type='';
3604                         esac
3605
3606                         case "$type" in
3607                         '') ;;
3608                         *)
3609                                 if test "$fastread" = yes; then
3610                                         dflt=y
3611                                 else
3612                                         dflt=n
3613                                 fi
3614                                 rp="$what $value doesn't exist.  Use that name anyway?"
3615                                 . UU/myread
3616                                 dflt=''
3617                                 case "$ans" in
3618                                 y*) type='';;
3619                                 *) echo " ";;
3620                                 esac
3621                                 ;;
3622                         esac
3623                         ;;
3624                 esac
3625                 ;;
3626         esac
3627 done
3628 cd UU
3629 ans="$value"
3630 rp="$orig_rp"
3631 dflt="$orig_dflt"
3632 rm -f getfile.ok
3633 test "X$gfpthkeep" != Xy && gfpth=""
3634 EOSC
3635
3636 : What should the include directory be ?
3637 echo " "
3638 $echo $n "Hmm...  $c"
3639 dflt='/usr/include'
3640 incpath=''
3641 mips_type=''
3642 if $test -f /bin/mips && /bin/mips; then
3643         echo "Looks like a MIPS system..."
3644         $cat >usr.c <<'EOCP'
3645 #ifdef SYSTYPE_BSD43
3646 /bsd43
3647 #endif
3648 EOCP
3649         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3650                 dflt='/bsd43/usr/include'
3651                 incpath='/bsd43'
3652                 mips_type='BSD 4.3'
3653         else
3654                 mips_type='System V'
3655         fi
3656         $rm -f usr.c usr.out
3657         echo "and you're compiling with the $mips_type compiler and libraries."
3658         xxx_prompt=y
3659         echo "exit 0" >mips
3660 else
3661         echo "Doesn't look like a MIPS system."
3662         xxx_prompt=n
3663         echo "exit 1" >mips
3664 fi
3665 chmod +x mips
3666 $eunicefix mips
3667 case "$usrinc" in
3668 '') ;;
3669 *) dflt="$usrinc";;
3670 esac
3671 case "$xxx_prompt" in
3672 y)      fn=d/
3673         echo " "
3674         rp='Where are the include files you want to use?'
3675         . ./getfile
3676         usrinc="$ans"
3677         ;;
3678 *)      usrinc="$dflt"
3679         ;;
3680 esac
3681
3682 : Set private lib path
3683 case "$plibpth" in
3684 '') if ./mips; then
3685                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3686         fi;;
3687 esac
3688 case "$libpth" in
3689 ' ') dlist='';;
3690 '') dlist="$loclibpth $plibpth $glibpth";;
3691 *) dlist="$libpth";;
3692 esac
3693
3694 : Now check and see which directories actually exist, avoiding duplicates
3695 libpth=''
3696 for xxx in $dlist
3697 do
3698     if $test -d $xxx; then
3699                 case " $libpth " in
3700                 *" $xxx "*) ;;
3701                 *) libpth="$libpth $xxx";;
3702                 esac
3703     fi
3704 done
3705 $cat <<'EOM'
3706
3707 Some systems have incompatible or broken versions of libraries.  Among
3708 the directories listed in the question below, please remove any you
3709 know not to be holding relevant libraries, and add any that are needed.
3710 Say "none" for none.
3711
3712 EOM
3713 case "$libpth" in
3714 '') dflt='none';;
3715 *)
3716         set X $libpth
3717         shift
3718         dflt=${1+"$@"}
3719         ;;
3720 esac
3721 rp="Directories to use for library searches?"
3722 . ./myread
3723 case "$ans" in
3724 none) libpth=' ';;
3725 *) libpth="$ans";;
3726 esac
3727
3728 : compute shared library extension
3729 case "$so" in
3730 '')
3731         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3732                 dflt='sl'
3733         else
3734                 dflt='so'
3735         fi
3736         ;;
3737 *) dflt="$so";;
3738 esac
3739 $cat <<EOM
3740
3741 On some systems, shared libraries may be available.  Answer 'none' if
3742 you want to suppress searching of shared libraries for the remainder
3743 of this configuration.
3744
3745 EOM
3746 rp='What is the file extension used for shared libraries?'
3747 . ./myread
3748 so="$ans"
3749
3750 : Define several unixisms.
3751 : Hints files or command line option can be used to override them.
3752 : The convoluted testing is in case hints files set either the old
3753 : or the new name.
3754 case "$_exe" in
3755 '')     case "$exe_ext" in
3756     '') ;;
3757         *)      _exe="$exe_ext" ;;
3758         esac
3759         ;;
3760 esac
3761 case "$_a" in
3762 '')     case "$lib_ext" in
3763     '') _a='.a';;
3764         *)      _a="$lib_ext" ;;
3765         esac
3766         ;;
3767 esac
3768 case "$_o" in
3769 '') case "$obj_ext" in
3770         '')     _o='.o';;
3771         *)      _o="$obj_ext";;
3772         esac
3773         ;;
3774 esac
3775 case "$p_" in
3776 '') case "$path_sep" in
3777         '')     p_=':';;
3778         *)      p_="$path_sep";;
3779         esac
3780         ;;
3781 esac
3782 exe_ext=$_exe
3783 lib_ext=$_a
3784 obj_ext=$_o
3785 path_sep=$p_
3786
3787 : Which makefile gets called first.  This is used by make depend.
3788 case "$firstmakefile" in
3789 '') firstmakefile='makefile';;
3790 esac
3791
3792 case "$usesocks" in
3793 $define|true|[yY]*)     dflt='y';;
3794 *) dflt='n';;
3795 esac
3796 cat <<EOM
3797
3798 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3799 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3800 to use the PerlIO abstraction layer, this will be implicitly selected.
3801
3802 If this doesn't make any sense to you, just accept the default '$dflt'.
3803 EOM
3804 rp='Build Perl for SOCKS?'
3805 . ./myread
3806 case "$ans" in
3807 y|Y)    val="$define" ;;     
3808 *)      val="$undef" ;;
3809 esac
3810 set usesocks
3811 eval $setvar
3812
3813 case "$usesocks" in
3814 $define|true|[yY]*) useperlio="$define";;
3815 esac
3816
3817 : Looking for optional libraries
3818 echo " "
3819 echo "Checking for optional libraries..." >&4
3820 case "$libs" in
3821 ' '|'') dflt='';;
3822 *) dflt="$libs";;
3823 esac
3824 case "$libswanted" in
3825 '') libswanted='c_s';;
3826 esac
3827 case "$usesocks" in
3828 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3829 esac
3830 libsfound=''
3831 libsfiles=''
3832 libsdirs=''
3833 libspath=''
3834 for thisdir in $libpth $xlibpth; do
3835   test -d $thisdir && libspath="$libspath $thisdir"
3836 done
3837 for thislib in $libswanted; do
3838         for thisdir in $libspath; do
3839             xxx=''
3840             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3841                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3842                 $test -f "$xxx" && eval $libscheck
3843                 $test -f "$xxx" && libstyle=shared
3844             fi
3845             if test ! -f "$xxx"; then
3846                 xxx=$thisdir/lib$thislib.$so
3847                 $test -f "$xxx" && eval $libscheck
3848                 $test -f "$xxx" && libstyle=shared
3849             fi  
3850             if test ! -f "$xxx"; then
3851                 xxx=$thisdir/lib$thislib$_a
3852                 $test -f "$xxx" && eval $libscheck
3853                 $test -f "$xxx" && libstyle=static
3854             fi
3855             if test ! -f "$xxx"; then
3856                 xxx=$thisdir/$thislib$_a
3857                 $test -f "$xxx" && eval $libscheck
3858                 $test -f "$xxx" && libstyle=static
3859             fi
3860             if test ! -f "$xxx"; then
3861                 xxx=$thisdir/lib${thislib}_s$_a
3862                 $test -f "$xxx" && eval $libscheck
3863                 $test -f "$xxx" && libstyle=static
3864                 $test -f "$xxx" && thislib=${thislib}_s
3865             fi
3866             if test ! -f "$xxx"; then
3867                 xxx=$thisdir/Slib$thislib$_a
3868                 $test -f "$xxx" && eval $libscheck
3869                 $test -f "$xxx" && libstyle=static
3870             fi
3871             if $test -f "$xxx"; then
3872                 case "$libstyle" in
3873                 shared) echo "Found -l$thislib (shared)." ;;
3874                 static) echo "Found -l$thislib." ;;
3875                 *)      echo "Found -l$thislib ($libstyle)." ;;
3876                 esac
3877                 case " $dflt " in
3878                 *"-l$thislib "*);;
3879                 *) dflt="$dflt -l$thislib"
3880                    libsfound="$libsfound $xxx"
3881                    yyy=`basename $xxx`
3882                    libsfiles="$libsfiles $yyy"
3883                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3884                    case " $libsdirs " in
3885                    *" $yyy "*) ;;
3886                    *) libsdirs="$libsdirs $yyy" ;;
3887                    esac
3888                    ;;
3889                 esac
3890                 break
3891             fi  
3892         done
3893         if $test ! -f "$xxx"; then
3894             echo "No -l$thislib."
3895         fi
3896 done
3897 set X $dflt
3898 shift
3899 dflt="$*"
3900 case "$libs" in
3901 '') dflt="$dflt";;
3902 *) dflt="$libs";;
3903 esac
3904 case "$dflt" in
3905 ' '|'') dflt='none';;
3906 esac
3907
3908 $cat <<EOM
3909
3910 In order to compile $package on your machine, a number of libraries
3911 are usually needed.  Include any other special libraries here as well.
3912 Say "none" for none.  The default list is almost always right.
3913 EOM
3914
3915 echo " "
3916 rp="What libraries to use?"
3917 . ./myread
3918 case "$ans" in
3919 none) libs=' ';;
3920 *) libs="$ans";;
3921 esac
3922
3923 : determine optimization, if desired, or use for debug flag also
3924 case "$optimize" in
3925 ' '|$undef) dflt='none';;
3926 '') dflt='-O';;
3927 *) dflt="$optimize";;
3928 esac
3929 $cat <<EOH
3930
3931 By default, $package compiles with the -O flag to use the optimizer.
3932 Alternately, you might want to use the symbolic debugger, which uses
3933 the -g flag (on traditional Unix systems).  Either flag can be
3934 specified here.  To use neither flag, specify the word "none".
3935
3936 EOH
3937 rp="What optimizer/debugger flag should be used?"
3938 . ./myread
3939 optimize="$ans"
3940 case "$optimize" in
3941 'none') optimize=" ";;
3942 esac
3943
3944 dflt=''
3945 : We will not override a previous value, but we might want to
3946 : augment a hint file
3947 case "$hint" in
3948 default|recommended)
3949         case "$gccversion" in
3950         1*) dflt='-fpcc-struct-return' ;;
3951         esac
3952         case "$optimize" in
3953         *-g*) dflt="$dflt -DDEBUGGING";;
3954         esac
3955         case "$gccversion" in
3956         2*) if test -d /etc/conf/kconfig.d &&
3957                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3958                 then
3959                         dflt="$dflt -posix"
3960                 fi
3961                 ;;
3962         esac
3963         case "$gccversion" in
3964         1*) ;;
3965         2.[0-8]*) ;;
3966         ?*)     echo " "
3967                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3968                 echo 'int main(void) { return 0; }' > gcctest.c
3969                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3970                         echo "Yes, it does." 2>&1
3971                         case "$ccflags" in
3972                         *strict-aliasing*) 
3973                                 echo "Leaving current flags $ccflags alone." 2>&1
3974                                 ;;
3975                         *) dflt="$dflt -fno-strict-aliasing" ;;
3976                         esac
3977                 else
3978                         echo "Nope, it doesn't, but that's ok." 2>&1
3979                 fi
3980                 ;;
3981         esac
3982         ;;
3983 esac
3984
3985 case "$mips_type" in
3986 *BSD*|'') inclwanted="$locincpth $usrinc";;
3987 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3988 esac
3989 for thisincl in $inclwanted; do
3990         if $test -d $thisincl; then
3991                 if $test x$thisincl != x$usrinc; then
3992                         case "$dflt" in
3993                         *" -I$thisincl "*);;
3994                         *) dflt="$dflt -I$thisincl ";;
3995                         esac
3996                 fi
3997         fi
3998 done
3999
4000 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4001         xxx=true;
4002 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4003         xxx=true;
4004 else
4005         xxx=false;
4006 fi;
4007 if $xxx; then
4008         case "$dflt" in
4009         *$2*);;
4010         *) dflt="$dflt -D$2";;
4011         esac;
4012 fi'
4013
4014 set signal.h LANGUAGE_C; eval $inctest
4015
4016 case "$usesocks" in
4017 $define)
4018         ccflags="$ccflags -DSOCKS"
4019         ;;
4020 esac
4021
4022 case "$hint" in
4023 default|recommended) dflt="$ccflags $dflt" ;;
4024 *) dflt="$ccflags";;
4025 esac
4026
4027 case "$dflt" in
4028 ''|' ') dflt=none;;
4029 esac
4030
4031 $cat <<EOH
4032
4033 Your C compiler may want other flags.  For this question you should include
4034 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4035 but you should NOT include libraries or ld flags like -lwhatever.  If you
4036 want $package to honor its debug switch, you should include -DDEBUGGING here.
4037 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4038
4039 To use no flags, specify the word "none".
4040
4041 EOH
4042 set X $dflt
4043 shift
4044 dflt=${1+"$@"}
4045 rp="Any additional cc flags?"
4046 . ./myread
4047 case "$ans" in
4048 none) ccflags='';;
4049 *) ccflags="$ans";;
4050 esac
4051
4052 : the following weeds options from ccflags that are of no interest to cpp
4053 cppflags="$ccflags"
4054 case "$gccversion" in
4055 1*) cppflags="$cppflags -D__GNUC__"
4056 esac
4057 case "$mips_type" in
4058 '');;
4059 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4060 esac
4061 case "$cppflags" in
4062 '');;
4063 *)
4064         echo " "
4065         echo "Let me guess what the preprocessor flags are..." >&4
4066         set X $cppflags
4067         shift
4068         cppflags=''
4069         $cat >cpp.c <<'EOM'
4070 #define BLURFL foo
4071
4072 BLURFL xx LFRULB
4073 EOM
4074         previous=''
4075         for flag in $*
4076         do
4077                 case "$flag" in
4078                 -*) ftry="$flag";;
4079                 *) ftry="$previous $flag";;
4080                 esac
4081                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4082                         >cpp1.out 2>/dev/null && \
4083                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4084                         >cpp2.out 2>/dev/null && \
4085                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4086                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4087                 then
4088                         cppflags="$cppflags $ftry"
4089                         previous=''
4090                 else
4091                         previous="$flag"
4092                 fi
4093         done
4094         set X $cppflags
4095         shift
4096         cppflags=${1+"$@"}
4097         case "$cppflags" in
4098         *-*)  echo "They appear to be: $cppflags";;
4099         esac
4100         $rm -f cpp.c cpp?.out
4101         ;;
4102 esac
4103
4104 : flags used in final linking phase
4105 case "$ldflags" in
4106 '') if ./venix; then
4107                 dflt='-i -z'
4108         else
4109                 dflt=''
4110         fi
4111         case "$ccflags" in
4112         *-posix*) dflt="$dflt -posix" ;;
4113         esac
4114         ;;
4115 *) dflt="$ldflags";;
4116 esac
4117
4118 : Try to guess additional flags to pick up local libraries.
4119 for thislibdir in $libpth; do
4120         case " $loclibpth " in
4121         *" $thislibdir "*)
4122                 case "$dflt " in 
4123                 *"-L$thislibdir "*) ;;
4124                 *)  dflt="$dflt -L$thislibdir" ;;
4125                 esac
4126                 ;;
4127         esac
4128 done
4129
4130 case "$dflt" in
4131 '') dflt='none' ;;
4132 esac
4133
4134 $cat <<EOH
4135
4136 Your C linker may need flags.  For this question you should
4137 include -L/whatever and any other flags used by the C linker, but you
4138 should NOT include libraries like -lwhatever.
4139
4140 Make sure you include the appropriate -L/path flags if your C linker
4141 does not normally search all of the directories you specified above,
4142 namely
4143         $libpth
4144 To use no flags, specify the word "none".
4145
4146 EOH
4147
4148 rp="Any additional ld flags (NOT including libraries)?"
4149 . ./myread
4150 case "$ans" in
4151 none) ldflags='';;
4152 *) ldflags="$ans";;
4153 esac
4154 rmlist="$rmlist pdp11"
4155
4156 : coherency check
4157 echo " "
4158 echo "Checking your choice of C compiler and flags for coherency..." >&4
4159 $cat > try.c <<'EOF'
4160 #include <stdio.h>
4161 int main() { printf("Ok\n"); exit(0); }
4162 EOF
4163 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4164 shift
4165 $cat >try.msg <<'EOM'
4166 I've tried to compile and run the following simple program:
4167
4168 EOM
4169 $cat try.c >> try.msg
4170
4171 $cat >> try.msg <<EOM
4172
4173 I used the command:
4174
4175         $*
4176         ./try
4177
4178 and I got the following output:
4179
4180 EOM
4181 dflt=y
4182 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4183         if $sh -c './try' >>try.msg 2>&1; then
4184                 xxx=`./try`
4185                 case "$xxx" in
4186                 "Ok") dflt=n ;;
4187                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4188                         case " $libs " in
4189                         *" -lsfio "*)
4190                                 cat >> try.msg <<'EOQS'
4191 If $libs contains -lsfio, and sfio is mis-configured, then it
4192 sometimes (apparently) runs and exits with a 0 status, but with no
4193 output!  It may have to do with sfio's use of _exit vs. exit.
4194
4195 EOQS
4196                                 rp="You have a big problem.  Shall I abort Configure"
4197                                 dflt=y
4198                                 ;;
4199                         esac
4200                         ;;
4201                 esac
4202         else
4203                 echo "The program compiled OK, but exited with status $?." >>try.msg
4204                 rp="You have a problem.  Shall I abort Configure"
4205                 dflt=y
4206         fi
4207 else
4208         echo "I can't compile the test program." >>try.msg
4209         rp="You have a BIG problem.  Shall I abort Configure"
4210         dflt=y
4211 fi
4212 case "$dflt" in
4213 y)
4214         $cat try.msg >&4
4215         case "$knowitall" in
4216         '')
4217                 echo "(The supplied flags or libraries might be incorrect.)"
4218                 ;;
4219         *) dflt=n;;
4220         esac
4221         echo " "
4222         . ./myread
4223         case "$ans" in
4224         n*|N*) ;;
4225         *)      echo "Ok.  Stopping Configure." >&4
4226                 exit 1
4227                 ;;
4228         esac
4229         ;;
4230 n) echo "OK, that should do.";;
4231 esac
4232 $rm -f try try.* core
4233
4234 : define an is-a-typedef? function
4235 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4236 case "$inclist" in
4237 "") inclist="sys/types.h";;
4238 esac;
4239 eval "varval=\$$var";
4240 case "$varval" in
4241 "")
4242         $rm -f temp.c;
4243         for inc in $inclist; do
4244                 echo "#include <$inc>" >>temp.c;
4245         done;
4246         echo "#ifdef $type" >> temp.c;
4247         echo "printf(\"We have $type\");" >> temp.c;
4248         echo "#endif" >> temp.c;
4249         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4250         if $contains $type temp.E >/dev/null 2>&1; then
4251                 eval "$var=\$type";
4252         else
4253                 eval "$var=\$def";
4254         fi;
4255         $rm -f temp.?;;
4256 *) eval "$var=\$varval";;
4257 esac'
4258
4259 : define an is-a-typedef? function that prompts if the type is not available.
4260 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4261 case "$inclist" in
4262 "") inclist="sys/types.h";;
4263 esac;
4264 eval "varval=\$$var";
4265 case "$varval" in
4266 "")
4267         $rm -f temp.c;
4268         for inc in $inclist; do
4269                 echo "#include <$inc>" >>temp.c;
4270         done;
4271         echo "#ifdef $type" >> temp.c;
4272         echo "printf(\"We have $type\");" >> temp.c;
4273         echo "#endif" >> temp.c;
4274         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4275         echo " " ;
4276         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4277         if $contains $type temp.E >/dev/null 2>&1; then
4278                 echo "$type found." >&4;
4279                 eval "$var=\$type";
4280         else
4281                 echo "$type NOT found." >&4;
4282                 dflt="$def";
4283                 . ./myread ;
4284                 eval "$var=\$ans";
4285         fi;
4286         $rm -f temp.?;;
4287 *) eval "$var=\$varval";;
4288 esac'
4289
4290 : define a shorthand compile call
4291 compile='
4292 mc_file=$1;
4293 shift;
4294 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4295 : define a shorthand compile call for compilations that should be ok.
4296 compile_ok='
4297 mc_file=$1;
4298 shift;
4299 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4300
4301 : check for lengths of integral types
4302 echo " "
4303 case "$intsize" in
4304 '')
4305         echo "Checking to see how big your integers are..." >&4
4306         $cat >intsize.c <<'EOCP'
4307 #include <stdio.h>
4308 int main()
4309 {
4310         printf("intsize=%d;\n", (int)sizeof(int));
4311         printf("longsize=%d;\n", (int)sizeof(long));
4312         printf("shortsize=%d;\n", (int)sizeof(short));
4313         exit(0);
4314 }
4315 EOCP
4316         set intsize
4317         if eval $compile_ok && ./intsize > /dev/null; then
4318                 eval `./intsize`
4319                 echo "Your integers are $intsize bytes long."
4320                 echo "Your long integers are $longsize bytes long."
4321                 echo "Your short integers are $shortsize bytes long."
4322         else
4323                 $cat >&4 <<EOM
4324 !
4325 Help! I can't compile and run the intsize test program: please enlighten me!
4326 (This is probably a misconfiguration in your system or libraries, and
4327 you really ought to fix it.  Still, I'll try anyway.)
4328 !
4329 EOM
4330                 dflt=4
4331                 rp="What is the size of an integer (in bytes)?"
4332                 . ./myread
4333                 intsize="$ans"
4334                 dflt=$intsize
4335                 rp="What is the size of a long integer (in bytes)?"
4336                 . ./myread
4337                 longsize="$ans"
4338                 dflt=2
4339                 rp="What is the size of a short integer (in bytes)?"
4340                 . ./myread
4341                 shortsize="$ans"
4342         fi
4343         ;;
4344 esac
4345 $rm -f intsize intsize.*
4346
4347 : see what type lseek is declared as in the kernel
4348 rp="What is the type used for lseek's offset on this system?"
4349 set off_t lseektype long stdio.h sys/types.h
4350 eval $typedef_ask
4351
4352 echo " "
4353 echo "Checking to see how big your file offsets are..." >&4
4354 $cat >try.c <<EOCP
4355 #include <sys/types.h>
4356 #include <stdio.h>
4357 int main()
4358 {
4359     printf("%d\n", (int)sizeof($lseektype));
4360     return(0); 
4361 }
4362 EOCP
4363 set try
4364 if eval $compile_ok; then
4365         lseeksize=`./try`
4366         echo "Your file offsets are $lseeksize bytes long."
4367 else
4368         dflt=$longsize
4369         echo " "
4370         echo "(I can't seem to compile the test program.  Guessing...)"
4371         rp="What is the size of your file offsets (in bytes)?"
4372         . ./myread
4373         lseeksize="$ans"
4374 fi
4375 $rm -f try.c try
4376
4377 : see what type file positions are declared as in the library
4378 rp="What is the type for file position used by fsetpos()?"
4379 set fpos_t fpostype long stdio.h sys/types.h
4380 eval $typedef_ask
4381
4382 echo " "
4383 case "$fpostype" in
4384 *_t) zzz="$fpostype"    ;;
4385 *)   zzz="fpos_t"       ;;
4386 esac
4387 echo "Checking the size of $zzz..." >&4 
4388 cat > try.c <<EOCP
4389 #include <sys/types.h>
4390 #include <stdio.h>
4391 int main() {
4392     printf("%d\n", (int)sizeof($fpostype));
4393     exit(0);
4394 }
4395 EOCP
4396 set try
4397 if eval $compile_ok; then
4398         yyy=`./try`
4399         case "$yyy" in
4400         '')     fpossize=4
4401                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4402                 ;;
4403         *)      fpossize=$yyy
4404                 echo "Your $zzz is $fpossize bytes long."
4405                 ;;
4406         esac
4407 else
4408         dflt="$longsize"
4409         echo " " >&4
4410         echo "(I can't compile the test program.  Guessing...)" >&4
4411         rp="What is the size of your file positions (in bytes)?"
4412         . ./myread
4413         fpossize="$ans"
4414 fi
4415
4416
4417
4418 # Backward compatibility (uselfs is deprecated).
4419 case "$uselfs" in
4420 "$define"|true|[yY]*)
4421         cat <<EOM >&4
4422
4423 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4424 EOM
4425         uselargefiles="$define"
4426         ;;
4427 esac                          
4428
4429 case "$lseeksize:$fpossize" in
4430 8:8) cat <<EOM
4431
4432 You can have files larger than 2 gigabytes.
4433 EOM
4434    val="$define" ;;
4435 *)    case "$uselargefiles" in
4436    "$undef"|false|[nN]*) dflt='n' ;;
4437    *)   dflt='y' ;;
4438    esac
4439    cat <<EOM
4440
4441 Perl can be built to understand large files (files larger than 2 gigabytes)
4442 on some systems.  To do so, Configure can be run with -Duselargefiles.
4443
4444 If this doesn't make any sense to you, just accept the default '$dflt'.
4445 EOM
4446    rp='Try to understand large files, if available?'
4447    . ./myread
4448    case "$ans" in
4449    y|Y)         val="$define" ;;
4450    *)           val="$undef"  ;;
4451    esac
4452    ;;
4453 esac
4454 set uselargefiles
4455 eval $setvar
4456 case "$uselargefiles" in
4457 "$define")
4458 : Look for a hint-file generated 'call-back-unit'.  If the
4459 : user has specified that a large files perl is to be built,
4460 : we may need to set or change some other defaults.
4461         if $test -f uselargefiles.cbu; then
4462                 echo "Your platform has some specific hints for large file builds, using them..."
4463                 . ./uselargefiles.cbu
4464                 echo " "
4465                 echo "Rechecking to see how big your file offsets are..." >&4
4466                 $cat >try.c <<EOCP
4467 #include <sys/types.h>
4468 #include <stdio.h>
4469 int main()
4470 {
4471     printf("%d\n", (int)sizeof($lseektype));
4472     return(0); 
4473 }
4474 EOCP
4475                 set try
4476                 if eval $compile_ok; then
4477                         lseeksize=`./try`
4478                         $echo "Your file offsets are now $lseeksize bytes long."
4479                 else
4480                         dflt="$lseeksize"
4481                         echo " "
4482                         echo "(I can't seem to compile the test program.  Guessing...)"
4483                         rp="What is the size of your file offsets (in bytes)?"
4484                         . ./myread
4485                         lseeksize="$ans"
4486                 fi
4487                 case "$fpostype" in
4488                 *_t) zzz="$fpostype"    ;;
4489                 *)   zzz="fpos_t"       ;;
4490                 esac
4491                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4492                 $cat > try.c <<EOCP
4493 #include <sys/types.h>
4494 #include <stdio.h>
4495 int main() {
4496     printf("%d\n", (int)sizeof($fpostype));
4497     exit(0);
4498 }
4499 EOCP
4500                 set try
4501                 if eval $compile_ok; then
4502                         yyy=`./try`
4503                         dflt="$lseeksize"
4504                         case "$yyy" in
4505                         '')     echo " "
4506                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4507                                 ;;
4508                         *)      fpossize=$yyy
4509                                 echo " $fpossize bytes." >&4
4510                                 ;;
4511                         esac
4512                 else
4513                         dflt="$fpossize"
4514                         echo " "
4515                         echo "(I can't compile the test program.  Guessing...)" >&4
4516                         rp="What is the size of your file positions (in bytes)?"
4517                         . ./myread
4518                         fpossize="$ans"
4519                 fi
4520                 $rm -f try.c try
4521         fi
4522         ;;
4523 esac
4524
4525
4526 case "$usemorebits" in
4527 "$define"|true|[yY]*)
4528         use64bitint="$define"
4529         uselongdouble="$define"
4530         usemorebits="$define"
4531         ;;
4532 *)      usemorebits="$undef"
4533         ;;
4534 esac
4535
4536
4537 case "$uselonglong" in
4538 "$define"|true|[yY]*)
4539         cat <<EOM >&4
4540
4541 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4542 EOM
4543         use64bitint="$define"
4544         ;;
4545 esac                          
4546 case "$use64bits" in
4547 "$define"|true|[yY]*)
4548         cat <<EOM >&4
4549
4550 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4551 EOM
4552         use64bitint="$define"
4553         ;;
4554 esac                          
4555 case "$use64bitints" in
4556 "$define"|true|[yY]*)
4557         cat <<EOM >&4
4558
4559 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4560 EOM
4561         use64bitint="$define"
4562         ;;
4563 esac                          
4564 case "$use64bitsint" in
4565 "$define"|true|[yY]*)
4566         cat <<EOM >&4
4567
4568 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4569 EOM
4570         use64bitint="$define"
4571         ;;
4572 esac                          
4573 case "$uselonglongs" in
4574 "$define"|true|[yY]*)
4575         cat <<EOM >&4
4576
4577 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4578 EOM
4579         use64bitint="$define"
4580         ;;
4581 esac                          
4582 case "$use64bitsall" in
4583 "$define"|true|[yY]*)
4584         cat <<EOM >&4
4585
4586 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4587 EOM
4588         use64bitall="$define"
4589         ;;
4590 esac                          
4591
4592 case "$ccflags" in
4593 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4594 esac
4595 case "$use64bitall" in
4596 "$define"|true|[yY]*) use64bitint="$define" ;;
4597 esac
4598
4599 case "$longsize" in
4600 8) cat <<EOM
4601
4602 You have natively 64-bit long integers.
4603 EOM
4604    val="$define"
4605    ;;
4606 *) case "$use64bitint" in
4607    "$define"|true|[yY]*) dflt='y';;
4608    *) dflt='n';;
4609    esac
4610    cat <<EOM
4611
4612 Perl can be built to take advantage of 64-bit integer types
4613 on some systems.  To do so, Configure can be run with -Duse64bitint.
4614 Choosing this option will most probably introduce binary incompatibilities.
4615
4616 If this doesn't make any sense to you, just accept the default '$dflt'.
4617 EOM
4618    rp='Try to use 64-bit integers, if available?'
4619    . ./myread
4620    case "$ans" in
4621    [yY]*) val="$define" ;;
4622    *)     val="$undef"  ;;
4623    esac
4624    ;;
4625 esac
4626 set use64bitint
4627 eval $setvar
4628
4629 case "$use64bitall" in
4630 "$define"|true|[yY]*) dflt='y' ;;
4631 *) case "$longsize" in
4632    8) dflt='y' ;;
4633    *) dflt='n' ;;
4634    esac
4635    ;;
4636 esac    
4637 cat <<EOM
4638
4639 You may also choose to try maximal 64-bitness.  It means using as much
4640 64-bitness as possible on the platform.  This in turn means even more
4641 binary incompatibilities.  On the other hand, your platform may not
4642 have any more 64-bitness available than what you already have chosen.
4643
4644 If this doesn't make any sense to you, just accept the default '$dflt'.
4645 EOM
4646 rp='Try to use maximal 64-bit support, if available?'
4647 . ./myread
4648 case "$ans" in
4649 [yY]*) val="$define" ;;
4650 *)     val="$undef"  ;;
4651 esac
4652 set use64bitall
4653 eval $setvar
4654 case "$use64bitall" in
4655 "$define")
4656         case "$use64bitint" in
4657         "$undef")
4658                 cat <<EOM
4659
4660 Since you have chosen a maximally 64-bit build, I'm also turning on
4661 the use of 64-bit integers.
4662 EOM
4663                 use64bitint="$define" ;;
4664         esac
4665         ;;
4666 esac
4667
4668 case "$use64bitint" in
4669 "$define"|true|[yY]*)
4670 : Look for a hint-file generated 'call-back-unit'.  If the
4671 : user has specified that a 64-bit perl is to be built,
4672 : we may need to set or change some other defaults.
4673         if $test -f use64bitint.cbu; then
4674                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4675                 . ./use64bitint.cbu
4676         fi
4677         case "$longsize" in
4678         4) case "$archname64" in
4679            '') archname64=64int ;;
4680            esac
4681            ;;
4682         esac
4683         ;;
4684 esac
4685
4686 case "$use64bitall" in
4687 "$define"|true|[yY]*)
4688 : Look for a hint-file generated 'call-back-unit'.  If the
4689 : user has specified that a maximally 64-bit perl is to be built,
4690 : we may need to set or change some other defaults.
4691         if $test -f use64bitall.cbu; then
4692                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4693                 . ./use64bitall.cbu
4694         fi
4695         case "$longsize" in
4696         4) case "$archname64" in
4697            ''|64int) archname64=64all ;;
4698            esac
4699            ;;
4700         esac
4701         ;;
4702 esac
4703
4704 echo " "
4705 echo "Checking for GNU C Library..." >&4
4706 cat >gnulibc.c <<EOM
4707 #include <stdio.h>
4708 int main()
4709 {
4710 #ifdef __GLIBC__
4711     exit(0);
4712 #else
4713     exit(1);
4714 #endif
4715 }
4716 EOM
4717 set gnulibc
4718 if eval $compile_ok && ./gnulibc; then
4719         val="$define"
4720         echo "You are using the GNU C Library"
4721 else
4722         val="$undef"
4723         echo "You are not using the GNU C Library"
4724 fi
4725 $rm -f gnulibc*
4726 set d_gnulibc
4727 eval $setvar
4728
4729 : see if nm is to be used to determine whether a symbol is defined or not
4730 case "$usenm" in
4731 '')
4732         dflt=''
4733         case "$d_gnulibc" in
4734         "$define")
4735                 echo " "
4736                 echo "nm probably won't work on the GNU C Library." >&4
4737                 dflt=n
4738                 ;;
4739         esac
4740         case "$dflt" in
4741         '') 
4742                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4743                         echo " "
4744                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4745                         echo "'nm' won't be sufficient on this sytem." >&4
4746                         dflt=n
4747                 fi
4748                 ;;
4749         esac
4750         case "$dflt" in
4751         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4752                 if $test $dflt -gt 20; then
4753                         dflt=y
4754                 else
4755                         dflt=n
4756                 fi
4757                 ;;
4758         esac
4759         ;;
4760 *)
4761         case "$usenm" in
4762         true|$define) dflt=y;;
4763         *) dflt=n;;
4764         esac
4765         ;;
4766 esac
4767 $cat <<EOM
4768
4769 I can use $nm to extract the symbols from your C libraries. This
4770 is a time consuming task which may generate huge output on the disk (up
4771 to 3 megabytes) but that should make the symbols extraction faster. The
4772 alternative is to skip the 'nm' extraction part and to compile a small
4773 test program instead to determine whether each symbol is present. If
4774 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4775 this may be the best solution.
4776
4777 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4778
4779 EOM
4780 rp="Shall I use $nm to extract C symbols from the libraries?"
4781 . ./myread
4782 case "$ans" in
4783 [Nn]*) usenm=false;;
4784 *) usenm=true;;
4785 esac
4786
4787 runnm=$usenm
4788 case "$reuseval" in
4789 true) runnm=false;;
4790 esac
4791
4792 : nm options which may be necessary
4793 case "$nm_opt" in
4794 '') if $test -f /mach_boot; then
4795                 nm_opt=''       # Mach
4796         elif $test -d /usr/ccs/lib; then
4797                 nm_opt='-p'     # Solaris (and SunOS?)
4798         elif $test -f /dgux; then
4799                 nm_opt='-p'     # DG-UX
4800         elif $test -f /lib64/rld; then
4801                 nm_opt='-p'     # 64-bit Irix
4802         else
4803                 nm_opt=''
4804         fi;;
4805 esac
4806
4807 : nm options which may be necessary for shared libraries but illegal
4808 : for archive libraries.  Thank you, Linux.
4809 case "$nm_so_opt" in
4810 '')     case "$myuname" in
4811         *linux*)
4812                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4813                         nm_so_opt='--dynamic'
4814                 fi
4815                 ;;
4816         esac
4817         ;;
4818 esac
4819
4820 case "$runnm" in
4821 true)
4822 : get list of predefined functions in a handy place
4823 echo " "
4824 case "$libc" in
4825 '') libc=unknown
4826         case "$libs" in
4827         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4828         esac
4829         ;;
4830 esac
4831 libnames='';
4832 case "$libs" in
4833 '') ;;
4834 *)  for thislib in $libs; do
4835         case "$thislib" in
4836         -lc|-lc_s)
4837                 : Handle C library specially below.
4838                 ;;
4839         -l*)
4840                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4841                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4842                         :
4843                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4844                         :
4845                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4846                         :
4847                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4848                         :
4849                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4850                         :
4851                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4852                         :
4853                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4854                         :
4855                 else
4856                         try=''
4857                 fi
4858                 libnames="$libnames $try"
4859                 ;;
4860         *) libnames="$libnames $thislib" ;;
4861         esac
4862         done
4863         ;;
4864 esac
4865 xxx=normal
4866 case "$libc" in
4867 unknown)
4868         set /lib/libc.$so
4869         for xxx in $libpth; do
4870                 $test -r $1 || set $xxx/libc.$so
4871                 : The messy sed command sorts on library version numbers.
4872                 $test -r $1 || \
4873                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4874                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4875                                 h
4876                                 s/[0-9][0-9]*/0000&/g
4877                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4878                                 G
4879                                 s/\n/ /' | \
4880                          $sort | $sed -e 's/^.* //'`
4881                 eval set \$$#
4882         done
4883         $test -r $1 || set /usr/ccs/lib/libc.$so
4884         $test -r $1 || set /lib/libsys_s$_a
4885         ;;
4886 *)
4887         set blurfl
4888         ;;
4889 esac
4890 if $test -r "$1"; then
4891         echo "Your (shared) C library seems to be in $1."
4892         libc="$1"
4893 elif $test -r /lib/libc && $test -r /lib/clib; then
4894         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4895         xxx=apollo
4896         libc='/lib/clib /lib/libc'
4897         if $test -r /lib/syslib; then
4898                 echo "(Your math library is in /lib/syslib.)"
4899                 libc="$libc /lib/syslib"
4900         fi
4901 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4902         echo "Your C library seems to be in $libc, as you said before."
4903 elif $test -r $incpath/usr/lib/libc$_a; then
4904         libc=$incpath/usr/lib/libc$_a;
4905         echo "Your C library seems to be in $libc.  That's fine."
4906 elif $test -r /lib/libc$_a; then
4907         libc=/lib/libc$_a;
4908         echo "Your C library seems to be in $libc.  You're normal."
4909 else
4910         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4911                 :
4912         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4913                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4914         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4915                 :
4916         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4917                 :
4918         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4919                 :
4920         else
4921                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4922         fi
4923         if $test -r "$tans"; then
4924                 echo "Your C library seems to be in $tans, of all places."
4925                 libc=$tans
4926         else
4927                 libc='blurfl'
4928         fi
4929 fi
4930 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4931         dflt="$libc"
4932         cat <<EOM
4933
4934 If the guess above is wrong (which it might be if you're using a strange
4935 compiler, or your machine supports multiple models), you can override it here.
4936
4937 EOM
4938 else
4939         dflt=''
4940         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4941         cat >&4 <<EOM
4942 I can't seem to find your C library.  I've looked in the following places:
4943
4944 EOM
4945         $sed 's/^/      /' libpath
4946         cat <<EOM
4947
4948 None of these seems to contain your C library. I need to get its name...
4949
4950 EOM
4951 fi
4952 fn=f
4953 rp='Where is your C library?'
4954 . ./getfile
4955 libc="$ans"
4956
4957 echo " "
4958 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4959 set X `cat libnames`
4960 shift
4961 xxx=files
4962 case $# in 1) xxx=file; esac
4963 echo "Extracting names from the following $xxx for later perusal:" >&4
4964 echo " "
4965 $sed 's/^/      /' libnames >&4
4966 echo " "
4967 $echo $n "This may take a while...$c" >&4
4968
4969 for file in $*; do
4970         case $file in
4971         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4972         *) $nm $nm_opt $file 2>/dev/null;;
4973         esac
4974 done >libc.tmp
4975
4976 $echo $n ".$c"
4977 $grep fprintf libc.tmp > libc.ptf
4978 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4979 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4980 xxx='[ADTSIW]'
4981 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4982         eval $xscan;\
4983         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4984                 eval $xrun
4985 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4986         eval $xscan;\
4987         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4988                 eval $xrun
4989 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4990         eval $xscan;\
4991         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4992                 eval $xrun
4993 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4994         eval $xscan;\
4995         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4996                 eval $xrun
4997 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4998         eval $xscan;\
4999         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5000                 eval $xrun
5001 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5002         eval $xscan;\
5003         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5004                 eval $xrun
5005 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5006                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5007         eval $xscan;\
5008         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5009                 eval $xrun
5010 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5011         eval $xscan;\
5012         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5013                 eval $xrun
5014 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5015         eval $xscan;\
5016         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5017                 eval $xrun
5018 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5019         eval $xscan;\
5020         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5021                 eval $xrun
5022 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5023         eval $xscan;\
5024         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5025                 eval $xrun
5026 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5027         eval $xscan;\
5028         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5029                 eval $xrun
5030 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5031         eval $xscan;\
5032         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5033                 eval $xrun
5034 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5035         eval $xscan;\
5036         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5037                 eval $xrun
5038 else
5039         $nm -p $* 2>/dev/null >libc.tmp
5040         $grep fprintf libc.tmp > libc.ptf
5041         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5042                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5043         then
5044                 nm_opt='-p'
5045                 eval $xrun
5046         else
5047                 echo " "
5048                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5049                 com=''
5050                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5051                         for thisname in $libnames $libc; do
5052                                 $ar t $thisname >>libc.tmp
5053                         done
5054                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5055                         echo "Ok." >&4
5056                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5057                         # Repeat libc to extract forwarders to DLL entries too
5058                         for thisname in $libnames $libc; do
5059                                 $ar tv $thisname >>libc.tmp
5060                                 # Revision 50 of EMX has bug in $ar.
5061                                 # it will not extract forwarders to DLL entries
5062                                 # Use emximp which will extract exactly them.
5063                                 emximp -o tmp.imp $thisname \
5064                                     2>/dev/null && \
5065                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5066                                     < tmp.imp >>libc.tmp
5067                                 $rm tmp.imp
5068                         done
5069                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5070                         echo "Ok." >&4
5071                 else
5072                         echo "$ar didn't seem to work right." >&4
5073                         echo "Maybe this is a Cray...trying bld instead..." >&4
5074                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5075                         then
5076                                 for thisname in $libnames; do
5077                                         bld t $libnames | \
5078                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5079                                         $ar t $thisname >>libc.tmp
5080                                 done
5081                                 echo "Ok." >&4
5082                         else
5083                                 echo "That didn't work either.  Giving up." >&4
5084                                 exit 1
5085                         fi
5086                 fi
5087         fi
5088 fi
5089 nm_extract="$com"
5090 if $test -f /lib/syscalls.exp; then
5091         echo " "
5092         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5093         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5094 fi
5095 ;;
5096 esac
5097 $rm -f libnames libpath
5098
5099 : is a C symbol defined?
5100 csym='tlook=$1;
5101 case "$3" in
5102 -v) tf=libc.tmp; tc=""; tdc="";;
5103 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5104 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5105 esac;
5106 tx=yes;
5107 case "$reuseval-$4" in
5108 true-) ;;
5109 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5110 esac;
5111 case "$tx" in
5112 yes)
5113         case "$runnm" in
5114         true)
5115                 if $contains $tlook $tf >/dev/null 2>&1;
5116                 then tval=true;
5117                 else tval=false;
5118                 fi;;
5119         *)
5120                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5121                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5122                 then tval=true;
5123                 else tval=false;
5124                 fi;
5125                 $rm -f t t.c;;
5126         esac;;
5127 *)
5128         case "$tval" in
5129         $define) tval=true;;
5130         *) tval=false;;
5131         esac;;
5132 esac;
5133 eval "$2=$tval"'
5134
5135 : define an is-in-libc? function
5136 inlibc='echo " "; td=$define; tu=$undef;
5137 sym=$1; var=$2; eval "was=\$$2";
5138 tx=yes;
5139 case "$reuseval$was" in
5140 true) ;;
5141 true*) tx=no;;
5142 esac;
5143 case "$tx" in
5144 yes)
5145         set $sym tres -f;
5146         eval $csym;
5147         case "$tres" in
5148         true)
5149                 echo "$sym() found." >&4;
5150                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5151         *)
5152                 echo "$sym() NOT found." >&4;
5153                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5154         esac;;
5155 *)
5156         case "$was" in
5157         $define) echo "$sym() found." >&4;;
5158         *) echo "$sym() NOT found." >&4;;
5159         esac;;
5160 esac'
5161
5162 : see if sqrtl exists
5163 set sqrtl d_sqrtl
5164 eval $inlibc
5165
5166 case "$ccflags" in
5167 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5168 esac
5169
5170 case "$uselongdouble" in
5171 $define|true|[yY]*)     dflt='y';;
5172 *) dflt='n';;
5173 esac
5174 cat <<EOM
5175
5176 Perl can be built to take advantage of long doubles which
5177 (if available) may give more accuracy and range for floating point numbers.
5178
5179 If this doesn't make any sense to you, just accept the default '$dflt'.
5180 EOM
5181 rp='Try to use long doubles if available?'
5182 . ./myread
5183 case "$ans" in
5184 y|Y)    val="$define"   ;;
5185 *)      val="$undef"    ;;
5186 esac
5187 set uselongdouble
5188 eval $setvar
5189
5190 case "$uselongdouble" in
5191 true|[yY]*) uselongdouble="$define" ;;
5192 esac
5193
5194 case "$uselongdouble" in
5195 $define)
5196 : Look for a hint-file generated 'call-back-unit'.  If the
5197 : user has specified that long doubles should be used,
5198 : we may need to set or change some other defaults.
5199         if $test -f uselongdouble.cbu; then
5200                 echo "Your platform has some specific hints for long doubles, using them..."
5201                 . ./uselongdouble.cbu
5202         else
5203                 $cat <<EOM
5204 (Your platform doesn't have any specific hints for long doubles.)
5205 EOM
5206         fi
5207         ;;
5208 esac
5209
5210 case "$uselongdouble:$d_sqrtl" in
5211 $define:$undef)
5212                 $cat <<EOM >&4
5213
5214 *** You requested the use of long doubles but you do not seem to have
5215 *** the mathematic functions for long doubles.  I'm disabling the use
5216 *** of long doubles.
5217
5218 EOM
5219         uselongdouble=$undef
5220         ;;
5221 esac
5222
5223 : check for length of double
5224 echo " "
5225 case "$doublesize" in
5226 '')
5227         echo "Checking to see how big your double precision numbers are..." >&4
5228         $cat >try.c <<'EOCP'
5229 #include <stdio.h>
5230 int main()
5231 {
5232     printf("%d\n", (int)sizeof(double));
5233     exit(0);
5234 }
5235 EOCP
5236         set try
5237         if eval $compile_ok; then
5238                 doublesize=`./try`
5239                 echo "Your double is $doublesize bytes long."
5240         else
5241                 dflt='8'
5242                 echo "(I can't seem to compile the test program.  Guessing...)"
5243                 rp="What is the size of a double precision number (in bytes)?"
5244                 . ./myread
5245                 doublesize="$ans"
5246         fi
5247         ;;
5248 esac
5249 $rm -f try.c try
5250
5251 : check for long doubles
5252 echo " "
5253 echo "Checking to see if you have long double..." >&4
5254 echo 'int main() { long double x = 7.0; }' > try.c
5255 set try
5256 if eval $compile; then
5257         val="$define"
5258         echo "You have long double."
5259 else
5260         val="$undef"
5261         echo "You do not have long double."
5262 fi
5263 $rm try.*
5264 set d_longdbl
5265 eval $setvar
5266
5267 : check for length of long double
5268 case "${d_longdbl}${longdblsize}" in
5269 $define)
5270         echo " "
5271         echo "Checking to see how big your long doubles are..." >&4
5272         $cat >try.c <<'EOCP'
5273 #include <stdio.h>
5274 int main()
5275 {
5276         printf("%d\n", sizeof(long double));
5277 }
5278 EOCP
5279         set try
5280         set try
5281         if eval $compile; then
5282                 longdblsize=`./try$exe_ext`
5283                 echo "Your long doubles are $longdblsize bytes long."
5284         else
5285                 dflt='8'
5286                 echo " "
5287                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5288                 rp="What is the size of a long double (in bytes)?"
5289                 . ./myread
5290                 longdblsize="$ans"
5291         fi
5292         if $test "X$doublesize" = "X$longdblsize"; then
5293                 echo "(That isn't any different from an ordinary double.)"
5294         fi      
5295         ;;
5296 esac
5297 $rm -f try.* try
5298
5299 case "$useperlio" in
5300 $define|true|[yY]*|'')  dflt='y';;
5301 *) dflt='n';;
5302 esac
5303 cat <<EOM
5304
5305 Previous version of $package used the standard IO mechanisms as
5306 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5307 alternate IO mechanisms via the PerlIO abstraction layer, but the
5308 stdio mechanism is still available if needed.  The abstraction layer
5309 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5310 Using PerlIO with sfio may cause problems with some extension modules.
5311
5312 If this doesn't make any sense to you, just accept the default '$dflt'.
5313 EOM
5314 rp='Use the PerlIO abstraction layer?'
5315 . ./myread
5316 case "$ans" in
5317 y|Y) 
5318         val="$define"
5319         ;;
5320 *)      
5321         echo "Ok, doing things the stdio way."
5322         val="$undef"
5323         ;;
5324 esac
5325 set useperlio
5326 eval $setvar 
5327
5328 case "$usesocks" in
5329 $define|true|[yY]*)
5330         case "$useperlio" in
5331         $define|true|[yY]*) ;;
5332         *)      cat >&4 <<EOM
5333
5334 You are using the SOCKS proxy protocol library which means that you
5335 should also use the PerlIO layer.  You may be headed for trouble.
5336
5337 EOM
5338                 ;;
5339         esac
5340         ;;
5341 esac
5342
5343         
5344 : determine the architecture name
5345 echo " "
5346 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5347         tarch=`arch`"-$osname"
5348 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5349         if uname -m > tmparch 2>&1 ; then
5350                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5351                         -e 's/$/'"-$osname/" tmparch`
5352         else
5353                 tarch="$osname"
5354         fi
5355         $rm -f tmparch
5356 else
5357         tarch="$osname"
5358 fi
5359 case "$myarchname" in
5360 ''|"$tarch") ;;
5361 *)
5362         echo "(Your architecture name used to be $myarchname.)"
5363         archname=''
5364         ;;
5365 esac
5366 myarchname="$tarch"
5367 case "$archname" in
5368 '') dflt="$tarch";;
5369 *) dflt="$archname";;
5370 esac
5371 rp='What is your architecture name'
5372 . ./myread
5373 archname="$ans"
5374 case "$usethreads" in
5375 $define)
5376         echo "Threads selected." >&4
5377         case "$archname" in
5378         *-thread*) echo "...and architecture name already has -thread." >&4
5379                 ;;
5380         *)      archname="$archname-thread"
5381                 echo "...setting architecture name to $archname." >&4
5382                 ;;
5383         esac
5384         ;;
5385 esac
5386 case "$usemultiplicity" in
5387 $define)
5388         echo "Multiplicity selected." >&4
5389         case "$archname" in
5390         *-multi*) echo "...and architecture name already has -multi." >&4
5391                 ;;
5392         *)      archname="$archname-multi"
5393                 echo "...setting architecture name to $archname." >&4
5394                 ;;
5395         esac
5396         ;;
5397 esac
5398 case "$use64bitint$use64bitall" in
5399 *"$define"*)
5400         case "$archname64" in
5401         '')
5402                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5403                 ;;
5404         *)
5405                 case "$use64bitint" in
5406                 "$define") echo "64 bit integers selected." >&4 ;;
5407                 esac
5408                 case "$use64bitall" in
5409                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5410                 esac
5411                 case "$archname" in
5412                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5413                         ;;
5414                 *)      archname="$archname-$archname64"
5415                         echo "...setting architecture name to $archname." >&4
5416                         ;;
5417                 esac
5418                 ;;
5419         esac
5420 esac
5421 case "$uselongdouble" in
5422 $define)
5423         echo "Long doubles selected." >&4
5424         case "$longdblsize" in
5425         $doublesize)
5426                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5427                 ;;
5428         *)
5429                 case "$archname" in
5430                 *-ld*) echo "...and architecture name already has -ld." >&4
5431                         ;;
5432                 *)      archname="$archname-ld"
5433                         echo "...setting architecture name to $archname." >&4
5434                         ;;
5435                 esac
5436                 ;;
5437         esac
5438         ;;
5439 esac
5440 case "$useperlio" in
5441 $define)
5442         echo "Perlio selected." >&4
5443         ;;
5444 *)
5445         echo "Perlio not selected, using stdio." >&4
5446         case "$archname" in
5447         *-stdio*) echo "...and architecture name already has -stdio." >&4
5448                 ;;
5449         *)      archname="$archname-stdio"
5450                 echo "...setting architecture name to $archname." >&4
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|nonstopux) dflt='-KPIC' ;;
6578                         sunos)  dflt='-pic' ;;
6579                         *)      dflt='none' ;;
6580                     esac
6581                         ;;
6582                 *)  case "$osname" in
6583                         svr4*|esix*|solaris|nonstopux) 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*|nonstopux) 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*|nonstopux|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 are on this system
6940 echo " "
6941 case "$sysman" in
6942 '') 
6943         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6944         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6945         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6946         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6947         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6948         sysman=`./loc . /usr/man/man1 $syspath`
6949         ;;
6950 esac
6951 if $test -d "$sysman"; then
6952         echo "System manual is in $sysman." >&4
6953 else
6954         echo "Could not find manual pages in source form." >&4
6955 fi
6956
6957 : determine where manual pages go
6958 set man1dir man1dir none
6959 eval $prefixit
6960 $cat <<EOM
6961
6962 $spackage has manual pages available in source form.
6963 EOM
6964 case "$nroff" in
6965 nroff)
6966         echo "However, you don't have nroff, so they're probably useless to you."
6967         case "$man1dir" in
6968         '') man1dir="none";;
6969         esac;;
6970 esac
6971 echo "If you don't want the manual sources installed, answer 'none'."
6972 case "$man1dir" in
6973 ' ') dflt=none
6974         ;;
6975 '')
6976         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6977         lookpath="$lookpath $prefixexp/man/p_man/man1"
6978         lookpath="$lookpath $prefixexp/man/u_man/man1"
6979         lookpath="$lookpath $prefixexp/man/man.1"
6980         case "$sysman" in
6981         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6982         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6983         esac
6984         set dflt
6985         eval $prefixup
6986         ;;
6987 *)  dflt="$man1dir"
6988         ;;
6989 esac
6990 echo " "
6991 fn=dn+~
6992 rp="Where do the main $spackage manual pages (source) go?"
6993 . ./getfile
6994 if $test "X$man1direxp" != "X$ansexp"; then
6995         installman1dir=''
6996 fi
6997 man1dir="$ans"
6998 man1direxp="$ansexp"
6999 case "$man1dir" in
7000 '')     man1dir=' '
7001         installman1dir='';;
7002 esac
7003
7004 : Change installation prefix, if necessary.
7005 if $test X"$prefix" != X"$installprefix"; then
7006         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7007 else
7008         installman1dir="$man1direxp"
7009 fi
7010
7011 : What suffix to use on installed man pages
7012
7013 case "$man1dir" in
7014 ' ')
7015         man1ext='0'
7016         ;;
7017 *)
7018         rp="What suffix should be used for the main $spackage man pages?"
7019         case "$man1ext" in
7020         '')     case "$man1dir" in
7021                 *1)  dflt=1 ;;
7022                 *1p) dflt=1p ;;
7023                 *1pm) dflt=1pm ;;
7024                 *l) dflt=l;;
7025                 *n) dflt=n;;
7026                 *o) dflt=o;;
7027                 *p) dflt=p;;
7028                 *C) dflt=C;;
7029                 *L) dflt=L;;
7030                 *L1) dflt=L1;;
7031                 *) dflt=1;;
7032                 esac
7033                 ;;
7034         *)      dflt="$man1ext";;
7035         esac
7036         . ./myread
7037         man1ext="$ans"
7038         ;;
7039 esac
7040
7041 : see if we can have long filenames
7042 echo " "
7043 first=123456789abcdef
7044 $rm -f $first
7045 if (echo hi >$first) 2>/dev/null; then
7046         if $test -f 123456789abcde; then
7047                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7048                 val="$undef"
7049         else
7050                 echo 'You can have filenames longer than 14 characters.'>&4
7051                 val="$define"
7052         fi
7053 else
7054         $cat <<'EOM'
7055 You can't have filenames longer than 14 chars.
7056 You can't even think about them!
7057 EOM
7058         val="$undef"
7059 fi 
7060 set d_flexfnam
7061 eval $setvar
7062 $rm -rf 123456789abcde*
7063
7064 : determine where library module manual pages go
7065 set man3dir man3dir none
7066 eval $prefixit
7067 $cat <<EOM
7068
7069 $spackage has manual pages for many of the library modules.
7070 EOM
7071
7072 case "$nroff" in
7073 nroff)
7074         $cat <<'EOM'
7075 However, you don't have nroff, so they're probably useless to you.
7076 EOM
7077         case "$man3dir" in
7078         '') man3dir="none";;
7079         esac;;
7080 esac
7081
7082 case "$d_flexfnam" in
7083 undef)
7084         $cat <<'EOM'
7085 However, your system can't handle the long file names like File::Basename.3. 
7086 EOM
7087         case "$man3dir" in
7088         '') man3dir="none";;
7089         esac;;
7090 esac
7091
7092 echo "If you don't want the manual sources installed, answer 'none'."
7093 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7094 case "$man3dir" in
7095 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7096         if $test -d "$privlib/man/man3"; then
7097                 cat <<EOM >&4
7098
7099 WARNING:  Previous versions of perl installed man3 pages into
7100 $privlib/man/man3.  This version will suggest a 
7101 new default of $dflt.  
7102 EOM
7103                 tdflt=$dflt
7104                 dflt='n'
7105                 rp='Do you wish to preserve the old behavior?(y/n)'
7106                 . ./myread
7107                 case "$ans" in
7108                 y*) dflt="$privlib/man/man3" ;;
7109                 *)  dflt=$tdflt ;;
7110                 esac
7111     fi
7112         ;;
7113 *)      dflt="$man3dir" ;;
7114 esac
7115 case "$dflt" in
7116 ' ') dflt=none ;;
7117 esac
7118 echo " "
7119 fn=dn+~
7120 rp="Where do the $package library man pages (source) go?"
7121 . ./getfile
7122 man3dir="$ans"
7123 man3direxp="$ansexp"
7124 case "$man3dir" in
7125 '')     man3dir=' '
7126         installman3dir='';;
7127 esac
7128
7129 : Change installation prefix, if necessary.
7130 if $test X"$prefix" != X"$installprefix"; then
7131         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7132 else
7133         installman3dir="$man3direxp"
7134 fi
7135
7136 : What suffix to use on installed man pages
7137 case "$man3dir" in
7138 ' ')
7139         man3ext='0'
7140         ;;
7141 *)
7142         rp="What suffix should be used for the $package library man pages?"
7143         case "$man3ext" in
7144         '')     case "$man3dir" in
7145                 *3)  dflt=3 ;;
7146                 *3p) dflt=3p ;;
7147                 *3pm) dflt=3pm ;;
7148                 *l) dflt=l;;
7149                 *n) dflt=n;;
7150                 *o) dflt=o;;
7151                 *p) dflt=p;;
7152                 *C) dflt=C;;
7153                 *L) dflt=L;;
7154                 *L3) dflt=L3;;
7155                 *) dflt=3;;
7156                 esac
7157                 ;;
7158         *)      dflt="$man3ext";;
7159         esac
7160         . ./myread
7161         man3ext="$ans"
7162         ;;
7163 esac
7164
7165 : see if we have to deal with yellow pages, now NIS.
7166 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7167         if $test -f /usr/etc/nibindd; then
7168                 echo " "
7169                 echo "I'm fairly confident you're on a NeXT."
7170                 echo " "
7171                 rp='Do you get the hosts file via NetInfo?'
7172                 dflt=y
7173                 case "$hostcat" in
7174                 nidump*) ;;
7175                 '') ;;
7176                 *) dflt=n;;
7177                 esac
7178                 . ./myread
7179                 case "$ans" in
7180                 y*) hostcat='nidump hosts .';;
7181                 *)      case "$hostcat" in
7182                         nidump*) hostcat='';;
7183                         esac
7184                         ;;
7185                 esac
7186         fi
7187         case "$hostcat" in
7188         nidump*) ;;
7189         *)
7190                 case "$hostcat" in
7191                 *ypcat*) dflt=y;;
7192                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7193                                 dflt=y
7194                         else
7195                                 dflt=n
7196                         fi;;
7197                 *) dflt=n;;
7198                 esac
7199                 echo " "
7200                 rp='Are you getting the hosts file via yellow pages?'
7201                 . ./myread
7202                 case "$ans" in
7203                 y*) hostcat='ypcat hosts';;
7204                 *) hostcat='cat /etc/hosts';;
7205                 esac
7206                 ;;
7207         esac
7208 fi
7209 case "$hostcat" in
7210 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7211 esac
7212 case "$groupcat" in
7213 '') test -f /etc/group && groupcat='cat /etc/group';;
7214 esac
7215 case "$passcat" in
7216 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7217 esac
7218
7219 : now get the host name
7220 echo " "
7221 echo "Figuring out host name..." >&4
7222 case "$myhostname" in
7223 '') cont=true
7224         echo 'Maybe "hostname" will work...'
7225         if tans=`sh -c hostname 2>&1` ; then
7226                 myhostname=$tans
7227                 phostname=hostname
7228                 cont=''
7229         fi
7230         ;;
7231 *) cont='';;
7232 esac
7233 if $test "$cont"; then
7234         if ./xenix; then
7235                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7236                 if tans=`cat /etc/systemid 2>&1` ; then
7237                         myhostname=$tans
7238                         phostname='cat /etc/systemid'
7239                         echo "Whadyaknow.  Xenix always was a bit strange..."
7240                         cont=''
7241                 fi
7242         elif $test -r /etc/systemid; then
7243                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7244         fi
7245 fi
7246 if $test "$cont"; then
7247         echo 'No, maybe "uuname -l" will work...'
7248         if tans=`sh -c 'uuname -l' 2>&1` ; then
7249                 myhostname=$tans
7250                 phostname='uuname -l'
7251         else
7252                 echo 'Strange.  Maybe "uname -n" will work...'
7253                 if tans=`sh -c 'uname -n' 2>&1` ; then
7254                         myhostname=$tans
7255                         phostname='uname -n'
7256                 else
7257                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7258                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7259                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7260                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7261                         else
7262                                 case "$myhostname" in
7263                                 '') echo "Does this machine have an identity crisis or something?"
7264                                         phostname='';;
7265                                 *)
7266                                         echo "Well, you said $myhostname before..."
7267                                         phostname='echo $myhostname';;
7268                                 esac
7269                         fi
7270                 fi
7271         fi
7272 fi
7273 : you do not want to know about this
7274 set $myhostname
7275 myhostname=$1
7276
7277 : verify guess
7278 if $test "$myhostname" ; then
7279         dflt=y
7280         rp='Your host name appears to be "'$myhostname'".'" Right?"
7281         . ./myread
7282         case "$ans" in
7283         y*) ;;
7284         *) myhostname='';;
7285         esac
7286 fi
7287
7288 : bad guess or no guess
7289 while $test "X$myhostname" = X ; do
7290         dflt=''
7291         rp="Please type the (one word) name of your host:"
7292         . ./myread
7293         myhostname="$ans"
7294 done
7295
7296 : translate upper to lower if necessary
7297 case "$myhostname" in
7298 *[A-Z]*)
7299         echo "(Normalizing case in your host name)"
7300         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7301         ;;
7302 esac
7303
7304 case "$myhostname" in
7305 *.*)
7306         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7307         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7308         echo "(Trimming domain name from host name--host name is now $myhostname)"
7309         ;;
7310 *) case "$mydomain" in
7311         '')
7312                 {
7313                         test "X$hostcat" = "Xypcat hosts" &&
7314                         ypmatch "$myhostname" hosts 2>/dev/null |\
7315                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7316                         $test -s hosts
7317                 } || {
7318                         test "X$hostcat" != "X" &&
7319                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7320                                         /[       ]$myhostname[  . ]/p" > hosts
7321                 }
7322                 tmp_re="[       . ]"
7323                 if $test -f hosts; then
7324                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7325                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7326                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7327                                 hosts | $sort | $uniq | \
7328                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7329                         case `$echo X$dflt` in
7330                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7331                                 dflt=.
7332                                 ;;
7333                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7334                                 ;;
7335                         esac
7336                 else
7337                         echo "(I cannot locate a hosts database anywhere)"
7338                         dflt=.
7339                 fi
7340                 case "$dflt" in
7341                 .)
7342                         tans=`./loc resolv.conf X /etc /usr/etc`
7343                         if $test -f "$tans"; then
7344                                 echo "(Attempting domain name extraction from $tans)"
7345                                 dflt=.`$sed -n -e 's/   / /g' \
7346                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7347                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7348                                 case "$dflt" in
7349                                 .) dflt=.`$sed -n -e 's/        / /g' \
7350                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7351                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7352                                         ;;
7353                                 esac
7354                         fi
7355                         ;;
7356                 esac
7357                 case "$dflt" in
7358                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7359                         dflt=.`sh -c domainname 2>/dev/null`
7360                         case "$dflt" in
7361                         '') dflt='.';;
7362                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7363                         esac
7364                         ;;
7365                 esac
7366                 case "$dflt$osname" in
7367                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7368                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7369                         ;;
7370                 esac
7371                 case "$dflt" in
7372                 .) echo "(Lost all hope -- silly guess then)"
7373                         dflt='.uucp'
7374                         ;;
7375                 esac
7376                 $rm -f hosts
7377                 ;;
7378         *) dflt="$mydomain";;
7379         esac;;
7380 esac
7381 echo " "
7382 rp="What is your domain name?"
7383 . ./myread
7384 tans="$ans"
7385 case "$ans" in
7386 '') ;;
7387 .*) ;;
7388 *) tans=".$tans";;
7389 esac
7390 mydomain="$tans"
7391
7392 : translate upper to lower if necessary
7393 case "$mydomain" in
7394 *[A-Z]*)
7395         echo "(Normalizing case in your domain name)"
7396         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7397         ;;
7398 esac
7399
7400 : a little sanity check here
7401 case "$phostname" in
7402 '') ;;
7403 *)
7404         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7405         $myhostname$mydomain|$myhostname) ;;
7406         *)
7407                 case "$phostname" in
7408                 sed*)
7409                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7410                         ;;
7411                 *)
7412                         echo "(That doesn't agree with your $phostname command, by the way.)"
7413                         ;;
7414                 esac
7415         ;;
7416         esac
7417         ;;
7418 esac
7419
7420 $cat <<EOM
7421
7422 I need to get your e-mail address in Internet format if possible, i.e.
7423 something like user@host.domain. Please answer accurately since I have
7424 no easy means to double check it. The default value provided below
7425 is most probably close to reality but may not be valid from outside
7426 your organization...
7427
7428 EOM
7429 cont=x
7430 while test "$cont"; do
7431         case "$cf_email" in
7432         '') dflt="$cf_by@$myhostname$mydomain";;
7433         *) dflt="$cf_email";;
7434         esac
7435         rp='What is your e-mail address?'
7436         . ./myread
7437         cf_email="$ans"
7438         case "$cf_email" in
7439         *@*.*) cont='' ;;
7440         *)
7441                 rp='Address does not look like an Internet one.  Use it anyway?'
7442                 case "$fastread" in
7443                 yes) dflt=y ;;
7444                 *) dflt=n ;;
7445                 esac
7446                 . ./myread
7447                 case "$ans" in
7448                 y*) cont='' ;;
7449                 *) echo " " ;;
7450                 esac
7451                 ;;
7452         esac
7453 done
7454
7455 $cat <<EOM
7456
7457 If you or somebody else will be maintaining perl at your site, please
7458 fill in the correct e-mail address here so that they may be contacted
7459 if necessary. Currently, the "perlbug" program included with perl
7460 will send mail to this address in addition to perlbug@perl.org. You may
7461 enter "none" for no administrator.
7462
7463 EOM
7464 case "$perladmin" in
7465 '') dflt="$cf_email";;
7466 *) dflt="$perladmin";;
7467 esac
7468 rp='Perl administrator e-mail address'
7469 . ./myread
7470 perladmin="$ans"
7471
7472 : determine whether to only install version-specific parts.
7473 echo " "
7474 $cat <<EOM
7475 Do you want to install only the version-specific parts of the perl
7476 distribution?  Usually you do *not* want to do this.
7477 EOM
7478 case "$versiononly" in
7479 "$define"|[Yy]*|true) dflt='y' ;;
7480 *) dflt='n';
7481 esac
7482 rp="Do you want to install only the version-specific parts of perl?"
7483 . ./myread
7484 case "$ans" in
7485 [yY]*)  val="$define";;
7486 *)      val="$undef" ;;
7487 esac
7488 set versiononly
7489 eval $setvar
7490
7491 : figure out how to guarantee perl startup
7492 case "$startperl" in
7493 '')
7494         case "$sharpbang" in
7495         *!)
7496                 $cat <<EOH
7497
7498 I can use the #! construct to start perl on your system. This will
7499 make startup of perl scripts faster, but may cause problems if you
7500 want to share those scripts and perl is not in a standard place
7501 ($binexp/perl) on all your platforms. The alternative is to force
7502 a shell by starting the script with a single ':' character.
7503
7504 EOH
7505                 case "$versiononly" in
7506                 "$define")      dflt="$binexp/perl$version";;  
7507                 *)              dflt="$binexp/perl";;
7508                 esac
7509                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7510                 . ./myread
7511                 case "$ans" in
7512                 none)   startperl=": # use perl";;
7513                 *)      startperl="#!$ans"
7514                         if $test 30 -lt `echo "$ans" | wc -c`; then
7515                                 $cat >&4 <<EOM
7516
7517 WARNING:  Some systems limit the #! command to 32 characters.
7518 If you experience difficulty running Perl scripts with #!, try
7519 installing Perl in a directory with a shorter pathname.
7520
7521 EOM
7522                         fi ;;
7523                 esac
7524                 ;;
7525         *) startperl=": # use perl"
7526                 ;;
7527         esac
7528         ;;
7529 esac
7530 echo "I'll use $startperl to start perl scripts."
7531
7532 : figure best path for perl in scripts
7533 case "$perlpath" in
7534 '')
7535         perlpath="$binexp/perl"
7536         case "$startperl" in
7537         *!*) ;;
7538         *)
7539                 $cat <<EOH
7540
7541 I will use the "eval 'exec'" idiom to start Perl on your system.
7542 I can use the full path of your Perl binary for this purpose, but
7543 doing so may cause problems if you want to share those scripts and
7544 Perl is not always in a standard place ($binexp/perl).
7545
7546 EOH
7547                 dflt="$binexp/perl"
7548                 rp="What path shall I use in \"eval 'exec'\"?"
7549                 . ./myread
7550                 perlpath="$ans"
7551                 ;;
7552         esac
7553         ;;
7554 esac
7555 case "$startperl" in
7556 *!*)    ;;
7557 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7558 esac
7559
7560 : determine where public executable scripts go
7561 set scriptdir scriptdir
7562 eval $prefixit
7563 case "$scriptdir" in
7564 '')
7565         dflt="$bin"
7566         : guess some guesses
7567         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7568         $test -d /usr/share/bin     && dflt=/usr/share/bin
7569         $test -d /usr/local/script  && dflt=/usr/local/script
7570         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7571         $test -d $prefixexp/script  && dflt=$prefixexp/script
7572         set dflt
7573         eval $prefixup
7574         ;;
7575 *)  dflt="$scriptdir"
7576         ;;
7577 esac
7578 $cat <<EOM
7579  
7580 Some installations have a separate directory just for executable scripts so
7581 that they can mount it across multiple architectures but keep the scripts in
7582 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7583 Or you might just lump your scripts in with all your other executables.
7584  
7585 EOM
7586 fn=d~
7587 rp='Where do you keep publicly executable scripts?'
7588 . ./getfile
7589 if $test "X$ansexp" != "X$scriptdirexp"; then
7590         installscript=''
7591 fi
7592 scriptdir="$ans"
7593 scriptdirexp="$ansexp"
7594 : Change installation prefix, if necessary.
7595 if $test X"$prefix" != X"$installprefix"; then
7596         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7597 else
7598         installscript="$scriptdirexp"
7599 fi
7600
7601 : determine where add-on public executables go
7602 case "$sitebin" in
7603 '')     dflt=$siteprefix/bin ;;
7604 *)      dflt=$sitebin ;;
7605 esac
7606 fn=d~
7607 rp='Pathname where the add-on public executables should be installed?'
7608 . ./getfile
7609 sitebin="$ans"
7610 sitebinexp="$ansexp"
7611 : Change installation prefix, if necessary.
7612 if $test X"$prefix" != X"$installprefix"; then
7613         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7614 else
7615         installsitebin="$sitebinexp"
7616 fi
7617
7618 case "$vendorprefix" in
7619 '')     d_vendorbin="$undef"
7620         vendorbin=''
7621         vendorbinexp=''
7622         ;;
7623 *)      d_vendorbin="$define"
7624         : determine where vendor-supplied executables go.
7625         case "$vendorbin" in
7626         '') dflt=$vendorprefix/bin ;;
7627         *)      dflt="$vendorbin" ;;
7628         esac
7629         fn=d~+
7630         rp='Pathname for the vendor-supplied executables directory?'
7631         . ./getfile
7632         vendorbin="$ans"
7633         vendorbinexp="$ansexp"
7634         ;;
7635 esac
7636 : Change installation prefix, if necessary.
7637 if $test X"$prefix" != X"$installprefix"; then
7638         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7639 else
7640         installvendorbin="$vendorbinexp"
7641 fi
7642
7643 : see if qgcvt exists
7644 set qgcvt d_qgcvt
7645 eval $inlibc
7646
7647 echo " "
7648
7649 if $test X"$d_longdbl" = X"$define"; then
7650
7651 echo "Checking how to print long doubles..." >&4
7652
7653 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7654         $cat >try.c <<'EOCP'
7655 #include <sys/types.h>
7656 #include <stdio.h>
7657 int main() {
7658   double d = 123.456;
7659   printf("%.3f\n", d);
7660 }
7661 EOCP
7662         set try
7663         if eval $compile; then
7664                 yyy=`./try$exe_ext`
7665                 case "$yyy" in
7666                 123.456)
7667                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7668                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7669                         echo "We will use %f."
7670                         ;;
7671                 esac
7672         fi
7673 fi
7674
7675 if $test X"$sPRIfldbl" = X; then
7676         $cat >try.c <<'EOCP'
7677 #include <sys/types.h>
7678 #include <stdio.h>
7679 int main() {
7680   long double d = 123.456;
7681   printf("%.3llf\n", d);
7682 }
7683 EOCP
7684         set try
7685         if eval $compile; then
7686                 yyy=`./try$exe_ext`
7687                 case "$yyy" in
7688                 123.456)
7689                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7690                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7691                         echo "We will use %llf."
7692                         ;;
7693                 esac
7694         fi
7695 fi
7696
7697 if $test X"$sPRIfldbl" = X; then
7698         $cat >try.c <<'EOCP'
7699 #include <sys/types.h>
7700 #include <stdio.h>
7701 int main() {
7702   long double d = 123.456;
7703   printf("%.3Lf\n", d);
7704 }
7705 EOCP
7706         set try
7707         if eval $compile; then
7708                 yyy=`./try$exe_ext`
7709                 case "$yyy" in
7710                 123.456)
7711                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7712                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7713                         echo "We will use %Lf."
7714                         ;;
7715                 esac
7716         fi
7717 fi
7718
7719 if $test X"$sPRIfldbl" = X; then
7720         $cat >try.c <<'EOCP'
7721 #include <sys/types.h>
7722 #include <stdio.h>
7723 int main() {
7724   long double d = 123.456;
7725   printf("%.3lf\n", d);
7726 }
7727 EOCP
7728         set try
7729         if eval $compile; then
7730                 yyy=`./try$exe_ext`
7731                 case "$yyy" in
7732                 123.456)
7733                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7734                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7735                         echo "We will use %lf."
7736                         ;;
7737                 esac
7738         fi
7739 fi
7740
7741 if $test X"$sPRIfldbl" = X; then
7742         echo "Cannot figure out how to print long doubles." >&4
7743 else
7744         sSCNfldbl=$sPRIfldbl    # expect consistency
7745 fi
7746
7747 $rm -f try try.*
7748
7749 fi # d_longdbl
7750
7751 case "$sPRIfldbl" in
7752 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7753         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7754         d_SCNfldbl="$undef";
7755         ;;
7756 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7757         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7758         d_SCNfldbl="$define";
7759         ;;
7760 esac
7761
7762 : Check how to convert floats to strings.
7763 echo " "
7764 echo "Checking for an efficient way to convert floats to strings."
7765 echo " " > try.c
7766 case "$uselongdouble" in
7767 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7768 esac
7769 case "$d_longdbl" in
7770 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7771 esac
7772 case "$d_PRIgldbl" in
7773 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7774 esac
7775 $cat >>try.c <<EOP
7776 #ifdef TRY_gconvert
7777 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7778 char *myname = "gconvert";
7779 #endif
7780 #ifdef TRY_gcvt
7781 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7782 char *myname = "gcvt";
7783 #endif
7784 #ifdef TRY_qgcvt
7785 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7786 char *myname = "qgcvt";
7787 #define DOUBLETYPE long double
7788 #endif
7789 #ifdef TRY_sprintf
7790 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7791 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7792 #else
7793 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7794 #endif
7795 char *myname = "sprintf";
7796 #endif
7797
7798 #ifndef DOUBLETYPE
7799 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7800 #define DOUBLETYPE long double
7801 #else
7802 #define DOUBLETYPE double
7803 #endif
7804 #endif
7805
7806 #include <stdio.h>
7807
7808 #define I_STDLIB $i_stdlib
7809 #ifdef I_STDLIB
7810 #include <stdlib.h>
7811 #endif
7812
7813 int
7814 checkit(expect, got)
7815 char *expect;
7816 char *got;
7817 {
7818     if (strcmp(expect, got)) {
7819                 printf("%s oddity:  Expected %s, got %s\n",
7820                         myname, expect, got);
7821                 exit(1);
7822         }
7823 }
7824
7825 int main()
7826
7827         char buf[64]; 
7828         buf[63] = '\0';
7829
7830         /* This must be 1st test on (which?) platform */
7831         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7832         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7833         checkit("0.1", buf);
7834
7835         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7836         checkit("1", buf);
7837
7838         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7839         checkit("1.1", buf);
7840
7841         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7842         checkit("1.01", buf);
7843
7844         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7845         checkit("1.001", buf);
7846
7847         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7848         checkit("1.0001", buf);
7849
7850         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7851         checkit("1.00001", buf);
7852
7853         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7854         checkit("1.000001", buf);
7855
7856         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7857         checkit("0", buf);
7858
7859         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7860         checkit("-1", buf);
7861
7862         /* Some Linux gcvt's give 1.e+5 here. */
7863         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7864         checkit("100000", buf);
7865         
7866         /* Some Linux gcvt's give -1.e+5 here. */
7867         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7868         checkit("-100000", buf);
7869
7870         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7871         checkit("123.456", buf);
7872
7873         exit(0);
7874 }
7875 EOP
7876 case "$d_Gconvert" in
7877 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7878 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7879 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7880 *) xxx_list='gconvert gcvt sprintf' ;;
7881 esac
7882
7883 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7884 "$define$define$define")
7885     # for long doubles prefer first qgcvt, then sprintf
7886     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7887     xxx_list="sprintf $xxx_list"
7888     case "$d_qgcvt" in
7889     "$define") xxx_list="qgcvt $xxx_list" ;;
7890     esac
7891     ;;
7892 esac
7893
7894 for xxx_convert in $xxx_list; do
7895         echo "Trying $xxx_convert..."
7896         $rm -f try try$_o
7897         set try -DTRY_$xxx_convert
7898         if eval $compile; then
7899                 echo "$xxx_convert() found." >&4
7900                 if ./try; then
7901                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7902                         break;
7903                 else
7904                         echo "...But $xxx_convert didn't work as I expected."
7905                 fi
7906         else
7907                 echo "$xxx_convert NOT found." >&4
7908         fi
7909 done
7910         
7911 case "$xxx_convert" in
7912 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7913 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7914 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7915 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7916    "$define$define$define")
7917       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7918    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7919    esac
7920    ;;  
7921 esac
7922
7923 : see if _fwalk exists
7924 set fwalk d__fwalk
7925 eval $inlibc
7926
7927 : Initialize h_fcntl
7928 h_fcntl=false
7929
7930 : Initialize h_sysfile
7931 h_sysfile=false
7932
7933 : access call always available on UNIX
7934 set access d_access
7935 eval $inlibc
7936
7937 : locate the flags for 'access()'
7938 case "$d_access" in
7939 "$define")
7940         echo " "
7941         $cat >access.c <<'EOCP'
7942 #include <sys/types.h>
7943 #ifdef I_FCNTL
7944 #include <fcntl.h>
7945 #endif
7946 #ifdef I_SYS_FILE
7947 #include <sys/file.h>
7948 #endif
7949 #ifdef I_UNISTD
7950 #include <unistd.h>
7951 #endif
7952 int main() {
7953         exit(R_OK);
7954 }
7955 EOCP
7956         : check sys/file.h first, no particular reason here
7957         if $test `./findhdr sys/file.h` && \
7958                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7959                 h_sysfile=true;
7960                 echo "<sys/file.h> defines the *_OK access constants." >&4
7961         elif $test `./findhdr fcntl.h` && \
7962                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7963                 h_fcntl=true;
7964                 echo "<fcntl.h> defines the *_OK access constants." >&4
7965         elif $test `./findhdr unistd.h` && \
7966                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7967                 echo "<unistd.h> defines the *_OK access constants." >&4
7968         else
7969                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7970         fi
7971         ;;
7972 esac
7973 $rm -f access*
7974
7975 : see if accessx exists
7976 set accessx d_accessx
7977 eval $inlibc
7978
7979 : see if alarm exists
7980 set alarm d_alarm
7981 eval $inlibc
7982
7983 : see if atolf exists
7984 set atolf d_atolf
7985 eval $inlibc
7986
7987 : see if atoll exists
7988 set atoll d_atoll
7989 eval $inlibc
7990
7991 : Look for GNU-cc style attribute checking
7992 echo " "
7993 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7994 $cat >attrib.c <<'EOCP'
7995 #include <stdio.h>
7996 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7997 EOCP
7998 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7999         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8000                 echo "Your C compiler doesn't fully support __attribute__."
8001                 val="$undef"
8002         else
8003                 echo "Your C compiler supports __attribute__."
8004                 val="$define"
8005         fi
8006 else
8007         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8008         val="$undef"
8009 fi
8010 set d_attribut
8011 eval $setvar
8012 $rm -f attrib*
8013
8014 : see if bcmp exists
8015 set bcmp d_bcmp
8016 eval $inlibc
8017
8018 : see if bcopy exists
8019 set bcopy d_bcopy
8020 eval $inlibc
8021
8022 : see if this is a unistd.h system
8023 set unistd.h i_unistd
8024 eval $inhdr
8025
8026 : see if getpgrp exists
8027 set getpgrp d_getpgrp
8028 eval $inlibc
8029
8030 case "$d_getpgrp" in
8031 "$define")
8032         echo " "
8033         echo "Checking to see which flavor of getpgrp is in use..."
8034         $cat >set.c <<EOP
8035 #$i_unistd I_UNISTD
8036 #include <sys/types.h>
8037 #ifdef I_UNISTD
8038 #  include <unistd.h>
8039 #endif
8040 int main()
8041 {
8042         if (getuid() == 0) {
8043                 printf("(I see you are running Configure as super-user...)\n");
8044                 setuid(1);
8045         }
8046 #ifdef TRY_BSD_PGRP
8047         if (getpgrp(1) == 0)
8048                 exit(0);
8049 #else
8050         if (getpgrp() > 0)
8051                 exit(0);
8052 #endif
8053         exit(1);
8054 }
8055 EOP
8056         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8057                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8058                 val="$define"
8059         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8060                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8061                 val="$undef"
8062         else
8063                 echo "I can't seem to compile and run the test program."
8064                 if ./usg; then
8065                         xxx="a USG one, i.e. you use getpgrp()."
8066                 else
8067                         # SVR4 systems can appear rather BSD-ish.
8068                         case "$i_unistd" in
8069                         $undef)
8070                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8071                                 val="$define"
8072                                 ;;
8073                         $define)
8074                                 xxx="probably a USG one, i.e. you use getpgrp()."
8075                                 val="$undef"
8076                                 ;;
8077                         esac
8078                 fi
8079                 echo "Assuming your getpgrp is $xxx" >&4
8080         fi
8081         ;;
8082 *) val="$undef";;
8083 esac
8084 set d_bsdgetpgrp
8085 eval $setvar
8086 $rm -f set set.c
8087
8088 : see if setpgrp exists
8089 set setpgrp d_setpgrp
8090 eval $inlibc
8091
8092 case "$d_setpgrp" in
8093 "$define")
8094         echo " "
8095         echo "Checking to see which flavor of setpgrp is in use..."
8096         $cat >set.c <<EOP
8097 #$i_unistd I_UNISTD
8098 #include <sys/types.h>
8099 #ifdef I_UNISTD
8100 #  include <unistd.h>
8101 #endif
8102 int main()
8103 {
8104         if (getuid() == 0) {
8105                 printf("(I see you are running Configure as super-user...)\n");
8106                 setuid(1);
8107         }
8108 #ifdef TRY_BSD_PGRP
8109         if (-1 == setpgrp(1, 1))
8110                 exit(0);
8111 #else
8112         if (setpgrp() != -1)
8113                 exit(0);
8114 #endif
8115         exit(1);
8116 }
8117 EOP
8118         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8119                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8120                 val="$define"
8121         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8122                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8123                 val="$undef"
8124         else
8125                 echo "(I can't seem to compile and run the test program.)"
8126                 if ./usg; then
8127                         xxx="a USG one, i.e. you use setpgrp()."
8128                 else
8129                         # SVR4 systems can appear rather BSD-ish.
8130                         case "$i_unistd" in
8131                         $undef)
8132                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8133                                 val="$define"
8134                                 ;;
8135                         $define)
8136                                 xxx="probably a USG one, i.e. you use setpgrp()."
8137                                 val="$undef"
8138                                 ;;
8139                         esac
8140                 fi
8141                 echo "Assuming your setpgrp is $xxx" >&4
8142         fi
8143         ;;
8144 *) val="$undef";;
8145 esac
8146 set d_bsdsetpgrp
8147 eval $setvar
8148 $rm -f set set.c
8149 : see if bzero exists
8150 set bzero d_bzero
8151 eval $inlibc
8152
8153 : see if signal is declared as pointer to function returning int or void
8154 echo " "
8155 xxx=`./findhdr signal.h`
8156 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8157 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8158         echo "You have int (*signal())() instead of void." >&4
8159         val="$undef"
8160 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8161         echo "You have void (*signal())()." >&4
8162         val="$define"
8163 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8164         echo "You have int (*signal())() instead of void." >&4
8165         val="$undef"
8166 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8167         echo "You have void (*signal())()." >&4
8168         val="$define"
8169 else
8170         case "$d_voidsig" in
8171         '')
8172         echo "I can't determine whether signal handler returns void or int..." >&4
8173                 dflt=void
8174                 rp="What type does your signal handler return?"
8175                 . ./myread
8176                 case "$ans" in
8177                 v*) val="$define";;
8178                 *) val="$undef";;
8179                 esac;;
8180         "$define")
8181                 echo "As you already told me, signal handler returns void." >&4
8182                 val="$define"
8183                 ;;
8184         *)      echo "As you already told me, signal handler returns int." >&4
8185                 val="$undef"
8186                 ;;
8187         esac
8188 fi
8189 set d_voidsig
8190 eval $setvar
8191 case "$d_voidsig" in
8192 "$define") signal_t="void";;
8193 *) signal_t="int";;
8194 esac
8195 $rm -f $$.tmp
8196
8197 : check for ability to cast large floats to 32-bit ints.
8198 echo " "
8199 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8200 if $test "$intsize" -ge 4; then
8201         xxx=int
8202 else
8203         xxx=long
8204 fi
8205 $cat >try.c <<EOCP
8206 #include <stdio.h>
8207 #include <sys/types.h>
8208 #include <signal.h>
8209 $signal_t blech(s) int s; { exit(3); }
8210 int main()
8211 {
8212         $xxx i32;
8213         double f, g;
8214         int result = 0;
8215         char str[16];
8216         signal(SIGFPE, blech);
8217
8218         /* Don't let compiler optimize the test away.  Store the number 
8219            in a writable string for gcc to pass to sscanf under HP/UX.
8220         */
8221         sprintf(str, "2147483647");
8222         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8223         g = 10 * f;
8224         i32  = ($xxx) g;
8225
8226         /* x86 processors will probably give 0x8000 0000, which is a
8227        sign change.  We don't want that.  We want to mimic SPARC
8228            behavior here, which is to preserve the sign and give
8229            back 0x7fff ffff.
8230         */
8231         if (i32 != ($xxx) f)
8232                 result |= 1;
8233         exit(result);
8234 }
8235 EOCP
8236 set try
8237 if eval $compile_ok; then
8238         ./try
8239         yyy=$?
8240 else
8241         echo "(I can't seem to compile the test program--assuming it can't)"
8242         yyy=1
8243 fi
8244 case "$yyy" in
8245 0)      val="$define"
8246         echo "Yup, it can."
8247         ;;
8248 *)      val="$undef"
8249         echo "Nope, it can't."
8250         ;;
8251 esac
8252 set d_casti32
8253 eval $setvar
8254 $rm -f try try.*
8255
8256 : check for ability to cast negative floats to unsigned
8257 echo " "
8258 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8259 $cat >try.c <<EOCP
8260 #include <stdio.h>
8261 #include <sys/types.h>
8262 #include <signal.h>
8263 $signal_t blech(s) int s; { exit(7); }
8264 $signal_t blech_in_list(s) int s; { exit(4); }
8265 unsigned long dummy_long(p) unsigned long p; { return p; }
8266 unsigned int dummy_int(p) unsigned int p; { return p; }
8267 unsigned short dummy_short(p) unsigned short p; { return p; }
8268 int main()
8269 {
8270         double f;
8271         unsigned long along;
8272         unsigned int aint;
8273         unsigned short ashort;
8274         int result = 0;
8275         char str[16];
8276         
8277         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8278            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8279            optimized the whole file away
8280         */
8281         /* Store the number in a writable string for gcc to pass to 
8282            sscanf under HP/UX.
8283         */
8284         sprintf(str, "-123");
8285         sscanf(str, "%lf", &f);  /* f = -123.; */
8286
8287         signal(SIGFPE, blech);
8288         along = (unsigned long)f;
8289         aint = (unsigned int)f;
8290         ashort = (unsigned short)f;
8291         if (along != (unsigned long)-123)
8292                 result |= 1;
8293         if (aint != (unsigned int)-123)
8294                 result |= 1;
8295         if (ashort != (unsigned short)-123)
8296                 result |= 1;
8297         sprintf(str, "1073741824.");
8298         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8299         f = f + f;
8300         along = 0;
8301         along = (unsigned long)f;
8302         if (along != 0x80000000)
8303                 result |= 2;
8304         f -= 1.;
8305         along = 0;
8306         along = (unsigned long)f;
8307         if (along != 0x7fffffff)
8308                 result |= 1;
8309         f += 2.;
8310         along = 0;
8311         along = (unsigned long)f;
8312         if (along != 0x80000001)
8313                 result |= 2;
8314         if (result)
8315                 exit(result);
8316         signal(SIGFPE, blech_in_list);
8317         sprintf(str, "123.");
8318         sscanf(str, "%lf", &f);  /* f = 123.; */
8319         along = dummy_long((unsigned long)f);
8320         aint = dummy_int((unsigned int)f);
8321         ashort = dummy_short((unsigned short)f);
8322         if (along != (unsigned long)123)
8323                 result |= 4;
8324         if (aint != (unsigned int)123)
8325                 result |= 4;
8326         if (ashort != (unsigned short)123)
8327                 result |= 4;
8328         exit(result);
8329
8330 }
8331 EOCP
8332 set try
8333 if eval $compile_ok; then
8334         ./try
8335         castflags=$?
8336 else
8337         echo "(I can't seem to compile the test program--assuming it can't)"
8338         castflags=7
8339 fi
8340 case "$castflags" in
8341 0)      val="$define"
8342         echo "Yup, it can."
8343         ;;
8344 *)      val="$undef"
8345         echo "Nope, it can't."
8346         ;;
8347 esac
8348 set d_castneg
8349 eval $setvar
8350 $rm -f try.*
8351
8352 : see if vprintf exists
8353 echo " "
8354 if set vprintf val -f d_vprintf; eval $csym; $val; then
8355         echo 'vprintf() found.' >&4
8356         val="$define"
8357         $cat >vprintf.c <<'EOF'
8358 #include <varargs.h>
8359
8360 int main() { xxx("foo"); }
8361
8362 xxx(va_alist)
8363 va_dcl
8364 {
8365         va_list args;
8366         char buf[10];
8367
8368         va_start(args);
8369         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8370 }
8371 EOF
8372         set vprintf
8373         if eval $compile && ./vprintf; then
8374                 echo "Your vsprintf() returns (int)." >&4
8375                 val2="$undef"
8376         else
8377                 echo "Your vsprintf() returns (char*)." >&4
8378                 val2="$define"
8379         fi
8380 else
8381         echo 'vprintf() NOT found.' >&4
8382                 val="$undef"
8383                 val2="$undef"
8384 fi
8385 set d_vprintf
8386 eval $setvar
8387 val=$val2
8388 set d_charvspr
8389 eval $setvar
8390
8391 : see if chown exists
8392 set chown d_chown
8393 eval $inlibc
8394
8395 : see if chroot exists
8396 set chroot d_chroot
8397 eval $inlibc
8398
8399 : see if chsize exists
8400 set chsize d_chsize
8401 eval $inlibc
8402
8403 : check for const keyword
8404 echo " "
8405 echo 'Checking to see if your C compiler knows about "const"...' >&4
8406 $cat >const.c <<'EOCP'
8407 typedef struct spug { int drokk; } spug;
8408 int main()
8409 {
8410         const char *foo;
8411         const spug y;
8412 }
8413 EOCP
8414 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8415         val="$define"
8416         echo "Yup, it does."
8417 else
8418         val="$undef"
8419         echo "Nope, it doesn't."
8420 fi
8421 set d_const
8422 eval $setvar
8423
8424 : see if crypt exists
8425 echo " "
8426 if set crypt val -f d_crypt; eval $csym; $val; then
8427         echo 'crypt() found.' >&4
8428         val="$define"
8429         cryptlib=''
8430 else
8431         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8432         if $test -z "$cryptlib"; then
8433                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8434         else
8435                 cryptlib=-lcrypt
8436         fi
8437         if $test -z "$cryptlib"; then
8438                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8439         else
8440                 cryptlib=-lcrypt
8441         fi
8442         if $test -z "$cryptlib"; then
8443                 cryptlib=`./loc libcrypt$_a "" $libpth`
8444         else
8445                 cryptlib=-lcrypt
8446         fi
8447         if $test -z "$cryptlib"; then
8448                 echo 'crypt() NOT found.' >&4
8449                 val="$undef"
8450         else
8451                 val="$define"
8452         fi
8453 fi
8454 set d_crypt
8455 eval $setvar
8456
8457 : get csh whereabouts
8458 case "$csh" in
8459 'csh') val="$undef" ;;
8460 *) val="$define" ;;
8461 esac
8462 set d_csh
8463 eval $setvar
8464 : Respect a hint or command line value for full_csh.
8465 case "$full_csh" in
8466 '') full_csh=$csh ;;
8467 esac
8468
8469 : see if cuserid exists
8470 set cuserid d_cuserid
8471 eval $inlibc
8472
8473 : see if this is a limits.h system
8474 set limits.h i_limits
8475 eval $inhdr
8476
8477 : see if this is a float.h system
8478 set float.h i_float
8479 eval $inhdr
8480
8481 : See if number of significant digits in a double precision number is known
8482 echo " "
8483 $cat >dbl_dig.c <<EOM
8484 #$i_limits I_LIMITS
8485 #$i_float I_FLOAT
8486 #ifdef I_LIMITS
8487 #include <limits.h>
8488 #endif
8489 #ifdef I_FLOAT
8490 #include <float.h>
8491 #endif
8492 #ifdef DBL_DIG
8493 printf("Contains DBL_DIG");
8494 #endif
8495 EOM
8496 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8497 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8498         echo "DBL_DIG found." >&4
8499         val="$define"
8500 else
8501         echo "DBL_DIG NOT found." >&4
8502         val="$undef"
8503 fi
8504 $rm -f dbl_dig.?
8505 set d_dbl_dig
8506 eval $setvar
8507
8508 : see if difftime exists
8509 set difftime d_difftime
8510 eval $inlibc
8511
8512 : see if this is a dirent system
8513 echo " "
8514 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8515         val="$define"
8516         echo "<dirent.h> found." >&4
8517 else
8518         val="$undef"
8519         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8520                 echo "<sys/dir.h> found." >&4
8521                 echo " "
8522         else
8523                 xinc=`./findhdr sys/ndir.h`
8524         fi
8525         echo "<dirent.h> NOT found." >&4
8526 fi
8527 set i_dirent
8528 eval $setvar
8529
8530 : Look for type of directory structure.
8531 echo " "
8532 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8533
8534 case "$direntrytype" in
8535 ''|' ')
8536         case "$i_dirent" in
8537         $define) guess1='struct dirent' ;;
8538         *) guess1='struct direct'  ;;
8539         esac
8540         ;;
8541 *)      guess1="$direntrytype"
8542         ;;
8543 esac
8544
8545 case "$guess1" in
8546 'struct dirent') guess2='struct direct' ;;
8547 *) guess2='struct dirent' ;;
8548 esac
8549                 
8550 if $contains "$guess1" try.c >/dev/null 2>&1; then
8551         direntrytype="$guess1"
8552         echo "Your directory entries are $direntrytype." >&4
8553 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8554         direntrytype="$guess2"
8555         echo "Your directory entries seem to be $direntrytype." >&4
8556 else
8557         echo "I don't recognize your system's directory entries." >&4
8558         rp="What type is used for directory entries on this system?"
8559         dflt="$guess1"
8560         . ./myread
8561         direntrytype="$ans"
8562 fi
8563 $rm -f try.c
8564
8565
8566 : see if the directory entry stores field length
8567 echo " "
8568 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8569 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8570         echo "Good, your directory entry keeps length information in d_namlen." >&4
8571         val="$define"
8572 else
8573         echo "Your directory entry does not know about the d_namlen field." >&4
8574         val="$undef"
8575 fi
8576 set d_dirnamlen
8577 eval $setvar
8578 $rm -f try.c
8579
8580 : see if dlerror exists
8581 xxx_runnm="$runnm"
8582 runnm=false
8583 set dlerror d_dlerror
8584 eval $inlibc
8585 runnm="$xxx_runnm"
8586
8587 : see if dlfcn is available
8588 set dlfcn.h i_dlfcn
8589 eval $inhdr
8590
8591 case "$usedl" in
8592 $define|y|true)
8593         $cat << EOM
8594
8595 On a few systems, the dynamically loaded modules that perl generates and uses
8596 will need a different extension than shared libs. The default will probably
8597 be appropriate.
8598
8599 EOM
8600         case "$dlext" in
8601         '')     dflt="$so" ;;
8602         *)      dflt="$dlext" ;;
8603         esac
8604         rp='What is the extension of dynamically loaded modules'
8605         . ./myread
8606         dlext="$ans"
8607         ;;
8608 *)
8609         dlext="none"
8610         ;;
8611 esac
8612
8613 : Check if dlsym need a leading underscore
8614 echo " "
8615 val="$undef"
8616
8617 case "$dlsrc" in
8618 dl_dlopen.xs)
8619         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8620         $cat >dyna.c <<'EOM'
8621 fred () { }
8622 EOM
8623
8624 $cat >fred.c<<EOM
8625
8626 #include <stdio.h>
8627 #$i_dlfcn I_DLFCN
8628 #ifdef I_DLFCN
8629 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8630 #else
8631 #include <sys/types.h>
8632 #include <nlist.h>
8633 #include <link.h>
8634 #endif
8635
8636 extern int fred() ;
8637
8638 int main()
8639 {
8640     void * handle ;
8641     void * symbol ;
8642 #ifndef RTLD_LAZY
8643     int mode = 1 ;
8644 #else
8645     int mode = RTLD_LAZY ;
8646 #endif
8647     handle = dlopen("./dyna.$dlext", mode) ;
8648     if (handle == NULL) {
8649         printf ("1\n") ;
8650         fflush (stdout) ;
8651         exit(0);
8652     }
8653     symbol = dlsym(handle, "fred") ;
8654     if (symbol == NULL) {
8655         /* try putting a leading underscore */
8656         symbol = dlsym(handle, "_fred") ;
8657         if (symbol == NULL) {
8658             printf ("2\n") ;
8659             fflush (stdout) ;
8660             exit(0);
8661         }
8662         printf ("3\n") ;
8663     }
8664     else
8665         printf ("4\n") ;
8666     fflush (stdout) ;
8667     exit(0);
8668 }
8669 EOM
8670         : Call the object file tmp-dyna.o in case dlext=o.
8671         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8672                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8673                 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
8674                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8675                 xxx=`./fred`
8676                 case $xxx in
8677                 1)      echo "Test program failed using dlopen." >&4
8678                         echo "Perhaps you should not use dynamic loading." >&4;;
8679                 2)      echo "Test program failed using dlsym." >&4
8680                         echo "Perhaps you should not use dynamic loading." >&4;;
8681                 3)      echo "dlsym needs a leading underscore" >&4
8682                         val="$define" ;;
8683                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8684                 esac
8685         else
8686                 echo "I can't compile and run the test program." >&4
8687                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8688         fi
8689         ;;
8690 esac
8691                 
8692 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8693
8694 set d_dlsymun
8695 eval $setvar
8696
8697 hasproto='varname=$1; func=$2; shift; shift;
8698 while $test $# -ge 2; do
8699         case "$1" in
8700         $define) echo "#include <$2>";;
8701         esac ;
8702     shift 2;
8703 done > try.c;
8704 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8705 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8706         echo "$func() prototype found.";
8707         val="$define";
8708 else
8709         echo "$func() prototype NOT found.";
8710         val="$undef";
8711 fi;
8712 set $varname;
8713 eval $setvar;
8714 $rm -f try.c tryout.c'
8715
8716 : see if prototype for drand48 is available
8717 echo " "
8718 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8719 eval $hasproto
8720
8721 : see if dup2 exists
8722 set dup2 d_dup2
8723 eval $inlibc
8724
8725 : see if eaccess exists
8726 set eaccess d_eaccess
8727 eval $inlibc
8728
8729 : see if endgrent exists
8730 set endgrent d_endgrent
8731 eval $inlibc
8732
8733 : see if endhostent exists
8734 set endhostent d_endhent
8735 eval $inlibc
8736
8737 : see if endnetent exists
8738 set endnetent d_endnent
8739 eval $inlibc
8740
8741 : see if endprotoent exists
8742 set endprotoent d_endpent
8743 eval $inlibc
8744
8745 : see if endpwent exists
8746 set endpwent d_endpwent
8747 eval $inlibc
8748
8749 : see if endservent exists
8750 set endservent d_endsent
8751 eval $inlibc
8752
8753 : Locate the flags for 'open()'
8754 echo " "
8755 $cat >open3.c <<'EOCP'
8756 #include <sys/types.h>
8757 #ifdef I_FCNTL
8758 #include <fcntl.h>
8759 #endif
8760 #ifdef I_SYS_FILE
8761 #include <sys/file.h>
8762 #endif
8763 int main() {
8764         if(O_RDONLY);
8765 #ifdef O_TRUNC
8766         exit(0);
8767 #else
8768         exit(1);
8769 #endif
8770 }
8771 EOCP
8772 : check sys/file.h first to get FREAD on Sun
8773 if $test `./findhdr sys/file.h` && \
8774                 set open3 -DI_SYS_FILE && eval $compile; then
8775         h_sysfile=true;
8776         echo "<sys/file.h> defines the O_* constants..." >&4
8777         if ./open3; then
8778                 echo "and you have the 3 argument form of open()." >&4
8779                 val="$define"
8780         else
8781                 echo "but not the 3 argument form of open().  Oh, well." >&4
8782                 val="$undef"
8783         fi
8784 elif $test `./findhdr fcntl.h` && \
8785                 set open3 -DI_FCNTL && eval $compile; then
8786         h_fcntl=true;
8787         echo "<fcntl.h> defines the O_* constants..." >&4
8788         if ./open3; then
8789                 echo "and you have the 3 argument form of open()." >&4
8790                 val="$define"
8791         else
8792                 echo "but not the 3 argument form of open().  Oh, well." >&4
8793                 val="$undef"
8794         fi
8795 else
8796         val="$undef"
8797         echo "I can't find the O_* constant definitions!  You got problems." >&4
8798 fi
8799 set d_open3
8800 eval $setvar
8801 $rm -f open3*
8802
8803 : see which of string.h or strings.h is needed
8804 echo " "
8805 strings=`./findhdr string.h`
8806 if $test "$strings" && $test -r "$strings"; then
8807         echo "Using <string.h> instead of <strings.h>." >&4
8808         val="$define"
8809 else
8810         val="$undef"
8811         strings=`./findhdr strings.h`
8812         if $test "$strings" && $test -r "$strings"; then
8813                 echo "Using <strings.h> instead of <string.h>." >&4
8814         else
8815                 echo "No string header found -- You'll surely have problems." >&4
8816         fi
8817 fi
8818 set i_string
8819 eval $setvar
8820 case "$i_string" in
8821 "$undef") strings=`./findhdr strings.h`;;
8822 *)        strings=`./findhdr string.h`;;
8823 esac
8824
8825 : check for non-blocking I/O stuff
8826 case "$h_sysfile" in
8827 true) echo "#include <sys/file.h>" > head.c;;
8828 *)
8829        case "$h_fcntl" in
8830        true) echo "#include <fcntl.h>" > head.c;;
8831        *) echo "#include <sys/fcntl.h>" > head.c;;
8832        esac
8833        ;;
8834 esac
8835 echo " "
8836 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8837 case "$o_nonblock" in
8838 '')
8839         $cat head.c > try.c
8840         $cat >>try.c <<'EOCP'
8841 #include <stdio.h>
8842 int main() {
8843 #ifdef O_NONBLOCK
8844         printf("O_NONBLOCK\n");
8845         exit(0);
8846 #endif
8847 #ifdef O_NDELAY
8848         printf("O_NDELAY\n");
8849         exit(0);
8850 #endif
8851 #ifdef FNDELAY
8852         printf("FNDELAY\n");
8853         exit(0);
8854 #endif
8855         exit(0);
8856 }
8857 EOCP
8858         set try
8859         if eval $compile_ok; then
8860                 o_nonblock=`./try`
8861                 case "$o_nonblock" in
8862                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8863                 *) echo "Seems like we can use $o_nonblock.";;
8864                 esac
8865         else
8866                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8867         fi
8868         ;;
8869 *) echo "Using $hint value $o_nonblock.";;
8870 esac
8871 $rm -f try try.* .out core
8872
8873 echo " "
8874 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8875 case "$eagain" in
8876 '')
8877         $cat head.c > try.c
8878         $cat >>try.c <<EOCP
8879 #include <errno.h>
8880 #include <sys/types.h>
8881 #include <signal.h>
8882 #include <stdio.h> 
8883 #define MY_O_NONBLOCK $o_nonblock
8884 #ifndef errno  /* XXX need better Configure test */
8885 extern int errno;
8886 #endif
8887 #$i_unistd I_UNISTD
8888 #ifdef I_UNISTD
8889 #include <unistd.h>
8890 #endif
8891 #$i_string I_STRING
8892 #ifdef I_STRING
8893 #include <string.h>
8894 #else
8895 #include <strings.h>
8896 #endif
8897 $signal_t blech(x) int x; { exit(3); }
8898 EOCP
8899         $cat >> try.c <<'EOCP'
8900 int main()
8901 {
8902         int pd[2];
8903         int pu[2];
8904         char buf[1];
8905         char string[100];
8906
8907         pipe(pd);       /* Down: child -> parent */
8908         pipe(pu);       /* Up: parent -> child */
8909         if (0 != fork()) {
8910                 int ret;
8911                 close(pd[1]);   /* Parent reads from pd[0] */
8912                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8913 #ifdef F_SETFL
8914                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8915                         exit(1);
8916 #else
8917                 exit(4);
8918 #endif
8919                 signal(SIGALRM, blech);
8920                 alarm(5);
8921                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8922                         exit(2);
8923                 sprintf(string, "%d\n", ret);
8924                 write(2, string, strlen(string));
8925                 alarm(0);
8926 #ifdef EAGAIN
8927                 if (errno == EAGAIN) {
8928                         printf("EAGAIN\n");
8929                         goto ok;
8930                 }
8931 #endif
8932 #ifdef EWOULDBLOCK
8933                 if (errno == EWOULDBLOCK)
8934                         printf("EWOULDBLOCK\n");
8935 #endif
8936         ok:
8937                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8938                 sleep(2);                               /* Give it time to close our pipe */
8939                 alarm(5);
8940                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8941                 alarm(0);
8942                 sprintf(string, "%d\n", ret);
8943                 write(3, string, strlen(string));
8944                 exit(0);
8945         }
8946
8947         close(pd[0]);                   /* We write to pd[1] */
8948         close(pu[1]);                   /* We read from pu[0] */
8949         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8950         close(pd[1]);                   /* Pipe pd is now fully closed! */
8951         exit(0);                                /* Bye bye, thank you for playing! */
8952 }
8953 EOCP
8954         set try
8955         if eval $compile_ok; then
8956                 echo "$startsh" >mtry
8957                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8958                 chmod +x mtry
8959                 ./mtry >/dev/null 2>&1
8960                 case $? in
8961                 0) eagain=`$cat try.out`;;
8962                 1) echo "Could not perform non-blocking setting!";;
8963                 2) echo "I did a successful read() for something that was not there!";;
8964                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8965                 4) echo "Could not find F_SETFL!";;
8966                 *) echo "Something terribly wrong happened during testing.";;
8967                 esac
8968                 rd_nodata=`$cat try.ret`
8969                 echo "A read() system call with no data present returns $rd_nodata."
8970                 case "$rd_nodata" in
8971                 0|-1) ;;
8972                 *)
8973                         echo "(That's peculiar, fixing that to be -1.)"
8974                         rd_nodata=-1
8975                         ;;
8976                 esac
8977                 case "$eagain" in
8978                 '')
8979                         echo "Forcing errno EAGAIN on read() with no data available."
8980                         eagain=EAGAIN
8981                         ;;
8982                 *)
8983                         echo "Your read() sets errno to $eagain when no data is available."
8984                         ;;
8985                 esac
8986                 status=`$cat try.err`
8987                 case "$status" in
8988                 0) echo "And it correctly returns 0 to signal EOF.";;
8989                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8990                 *) echo "However, your read() returns '$status' on EOF??";;
8991                 esac
8992                 val="$define"
8993                 if test "$status" = "$rd_nodata"; then
8994                         echo "WARNING: you can't distinguish between EOF and no data!"
8995                         val="$undef"
8996                 fi
8997         else
8998                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8999                 eagain=EAGAIN
9000         fi
9001         set d_eofnblk
9002         eval $setvar
9003         ;;
9004 *)
9005         echo "Using $hint value $eagain."
9006         echo "Your read() returns $rd_nodata when no data is present."
9007         case "$d_eofnblk" in
9008         "$define") echo "And you can see EOF because read() returns 0.";;
9009         "$undef") echo "But you can't see EOF status from read() returned value.";;
9010         *)
9011                 echo "(Assuming you can't see EOF status from read anyway.)"
9012                 d_eofnblk=$undef
9013                 ;;
9014         esac
9015         ;;
9016 esac
9017 $rm -f try try.* .out core head.c mtry
9018
9019 : see if fchmod exists
9020 set fchmod d_fchmod
9021 eval $inlibc
9022
9023 : see if fchown exists
9024 set fchown d_fchown
9025 eval $inlibc
9026
9027 : see if this is an fcntl system
9028 set fcntl d_fcntl
9029 eval $inlibc
9030
9031 echo " "
9032 : See if fcntl-based locking works.
9033 $cat >try.c <<'EOCP'
9034 #include <stdlib.h>
9035 #include <unistd.h>
9036 #include <fcntl.h>
9037 int main() {
9038 #if defined(F_SETLK) && defined(F_SETLKW)
9039      struct flock flock;
9040      int retval, fd;
9041      fd = open("try.c", O_RDONLY);
9042      flock.l_type = F_RDLCK;
9043      flock.l_whence = SEEK_SET;
9044      flock.l_start = flock.l_len = 0;
9045      retval = fcntl(fd, F_SETLK, &flock);
9046      close(fd);
9047      (retval < 0 ? exit(2) : exit(0));
9048 #else
9049      exit(2);
9050 #endif
9051 }
9052 EOCP
9053 echo "Checking if fcntl-based file locking works... "
9054 case "$d_fcntl" in
9055 "$define")
9056         set try
9057         if eval $compile_ok; then
9058                 if ./try; then
9059                         echo "Yes, it seems to work."
9060                         val="$define"
9061                 else
9062                         echo "Nope, it didn't work."
9063                         val="$undef"
9064                 fi
9065         else
9066                 echo "I'm unable to compile the test program, so I'll assume not."
9067                 val="$undef"
9068         fi
9069         ;;
9070 *) val="$undef";
9071         echo "Nope, since you don't even have fcntl()."
9072         ;;
9073 esac
9074 set d_fcntl_can_lock
9075 eval $setvar
9076 $rm -f try*
9077
9078
9079 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9080 while $test $# -ge 2; do
9081         case "$1" in
9082         $define) echo "#include <$2>";;
9083         esac ;
9084     shift 2;
9085 done > try.c;
9086 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9087 set try;
9088 if eval $compile; then
9089         val="$define";
9090 else
9091         val="$undef";
9092 fi;
9093 set $varname;
9094 eval $setvar;
9095 $rm -f try.c try.o'
9096
9097 socketlib=''
9098 sockethdr=''
9099 : see whether socket exists
9100 echo " "
9101 $echo $n "Hmm... $c" >&4
9102 if set socket val -f d_socket; eval $csym; $val; then
9103         echo "Looks like you have Berkeley networking support." >&4
9104         d_socket="$define"
9105         if set setsockopt val -f; eval $csym; $val; then
9106                 d_oldsock="$undef"
9107         else
9108                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9109                 d_oldsock="$define"
9110         fi
9111 else
9112         if $contains socklib libc.list >/dev/null 2>&1; then
9113                 echo "Looks like you have Berkeley networking support." >&4
9114                 d_socket="$define"
9115                 : we will have to assume that it supports the 4.2 BSD interface
9116                 d_oldsock="$undef"
9117         else
9118                 echo "You don't have Berkeley networking in libc$_a..." >&4
9119                 if test "X$d_socket" = "X$define"; then
9120                    echo "...but you seem to believe that you have sockets." >&4
9121                 else
9122                         for net in net socket
9123                         do
9124                                 if test -f /usr/lib/lib$net$_a; then
9125                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9126                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9127                                         if $contains socket libc.list >/dev/null 2>&1; then
9128                                                 d_socket="$define"
9129                                                 socketlib="-l$net"
9130                                                 case "$net" in
9131                                                 net)
9132                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9133                                                         sockethdr="-I/usr/netinclude"
9134                                                         ;;
9135                                                 esac
9136                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9137                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9138                                                         d_oldsock="$undef"
9139                                                 else
9140                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9141                                                         d_oldsock="$define"
9142                                                 fi
9143                                                 break
9144                                         fi
9145                                 fi
9146                         done
9147                         if test "X$d_socket" != "X$define"; then
9148                            echo "or anywhere else I see." >&4
9149                            d_socket="$undef"
9150                            d_oldsock="$undef"
9151                         fi
9152                 fi
9153         fi
9154 fi
9155
9156 : see if socketpair exists
9157 set socketpair d_sockpair
9158 eval $inlibc
9159
9160
9161 echo " "
9162 echo "Checking the availability of certain socket constants..." >& 4
9163 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9164         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9165         $cat >try.c <<EOF
9166 #include <sys/types.h>
9167 #include <sys/socket.h>
9168 int main() {
9169     int i = $ENUM;
9170 }
9171 EOF
9172         val="$undef"
9173         set try; if eval $compile; then
9174                 val="$define"
9175         fi
9176         set d_${enum}; eval $setvar
9177         $rm -f try.c try
9178 done
9179
9180 : see if sys/select.h has to be included
9181 set sys/select.h i_sysselct
9182 eval $inhdr
9183
9184 : see if we should include time.h, sys/time.h, or both
9185 echo " "
9186 if test "X$timeincl" = X; then
9187         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9188         $echo $n "I'm now running the test program...$c"
9189         $cat >try.c <<'EOCP'
9190 #include <sys/types.h>
9191 #ifdef I_TIME
9192 #include <time.h>
9193 #endif
9194 #ifdef I_SYSTIME
9195 #ifdef SYSTIMEKERNEL
9196 #define KERNEL
9197 #endif
9198 #include <sys/time.h>
9199 #endif
9200 #ifdef I_SYSSELECT
9201 #include <sys/select.h>
9202 #endif
9203 int main()
9204 {
9205         struct tm foo;
9206 #ifdef S_TIMEVAL
9207         struct timeval bar;
9208 #endif
9209 #ifdef S_TIMEZONE
9210         struct timezone tzp;
9211 #endif
9212         if (foo.tm_sec == foo.tm_sec)
9213                 exit(0);
9214 #ifdef S_TIMEVAL
9215         if (bar.tv_sec == bar.tv_sec)
9216                 exit(0);
9217 #endif
9218         exit(1);
9219 }
9220 EOCP
9221         flags=''
9222         for s_timezone in '-DS_TIMEZONE' ''; do
9223         sysselect=''
9224         for s_timeval in '-DS_TIMEVAL' ''; do
9225         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9226         for i_time in '' '-DI_TIME'; do
9227         for i_systime in '-DI_SYSTIME' ''; do
9228                 case "$flags" in
9229                 '') $echo $n ".$c"
9230                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9231                         if eval $compile; then
9232                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9233                                 shift
9234                                 flags="$*"
9235                                 echo " "
9236                                 $echo $n "Succeeded with $flags$c"
9237                         fi
9238                         ;;
9239                 esac
9240         done
9241         done
9242         done
9243         done
9244         done
9245         timeincl=''
9246         echo " "
9247         case "$flags" in
9248         *SYSTIMEKERNEL*) i_systimek="$define"
9249                 timeincl=`./findhdr sys/time.h`
9250                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9251         *) i_systimek="$undef";;
9252         esac
9253         case "$flags" in
9254         *I_TIME*) i_time="$define"
9255                 timeincl=`./findhdr time.h`" $timeincl"
9256                 echo "We'll include <time.h>." >&4;;
9257         *) i_time="$undef";;
9258         esac
9259         case "$flags" in
9260         *I_SYSTIME*) i_systime="$define"
9261                 timeincl=`./findhdr sys/time.h`" $timeincl"
9262                 echo "We'll include <sys/time.h>." >&4;;
9263         *) i_systime="$undef";;
9264         esac
9265         $rm -f try.c try
9266 fi
9267
9268 : check for fd_set items
9269 $cat <<EOM
9270
9271 Checking to see how well your C compiler handles fd_set and friends ...
9272 EOM
9273 $cat >fd_set.c <<EOCP
9274 #$i_systime I_SYS_TIME
9275 #$i_sysselct I_SYS_SELECT
9276 #$d_socket HAS_SOCKET
9277 #include <sys/types.h>
9278 #ifdef HAS_SOCKET
9279 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9280 #endif
9281 #ifdef I_SYS_TIME
9282 #include <sys/time.h>
9283 #endif
9284 #ifdef I_SYS_SELECT
9285 #include <sys/select.h>
9286 #endif
9287 int main() {
9288         fd_set fds;
9289
9290 #ifdef TRYBITS
9291         if(fds.fds_bits);
9292 #endif
9293
9294 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9295         exit(0);
9296 #else
9297         exit(1);
9298 #endif
9299 }
9300 EOCP
9301 set fd_set -DTRYBITS
9302 if eval $compile; then
9303         d_fds_bits="$define"
9304         d_fd_set="$define"
9305         echo "Well, your system knows about the normal fd_set typedef..." >&4
9306         if ./fd_set; then
9307                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9308                 d_fd_macros="$define"
9309         else
9310                 $cat >&4 <<'EOM'
9311 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9312 EOM
9313                 d_fd_macros="$undef"
9314         fi
9315 else
9316         $cat <<'EOM'
9317 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9318 EOM
9319         set fd_set
9320         if eval $compile; then
9321                 d_fds_bits="$undef"
9322                 d_fd_set="$define"
9323                 echo "Well, your system has some sort of fd_set available..." >&4
9324                 if ./fd_set; then
9325                         echo "and you have the normal fd_set macros." >&4
9326                         d_fd_macros="$define"
9327                 else
9328                         $cat <<'EOM'
9329 but not the normal fd_set macros!  Gross!  More work for me...
9330 EOM
9331                         d_fd_macros="$undef"
9332                 fi
9333         else
9334         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9335                 d_fd_set="$undef"
9336                 d_fds_bits="$undef"
9337                 d_fd_macros="$undef"
9338         fi
9339 fi
9340 $rm -f fd_set*
9341
9342 : see if fgetpos exists
9343 set fgetpos d_fgetpos
9344 eval $inlibc
9345
9346 : see if flock exists
9347 set flock d_flock
9348 eval $inlibc
9349
9350 : see if fork exists
9351 set fork d_fork
9352 eval $inlibc
9353
9354 : see if pathconf exists
9355 set pathconf d_pathconf
9356 eval $inlibc
9357
9358 : see if fpathconf exists
9359 set fpathconf d_fpathconf
9360 eval $inlibc
9361
9362
9363 : check for fpos64_t
9364 echo " "
9365 echo "Checking to see if you have fpos64_t..." >&4
9366 $cat >try.c <<EOCP
9367 #include <stdio.h>
9368 int main() { fpos64_t x = 7; }
9369 EOCP
9370 set try
9371 if eval $compile; then
9372         val="$define"
9373         echo "You have fpos64_t."
9374 else
9375         val="$undef"
9376         echo "You do not have fpos64_t."
9377         case "$fpossize" in
9378         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9379         esac
9380 fi
9381 $rm -f try.* try
9382 set d_fpos64_t
9383 eval $setvar
9384
9385 : see if frexpl exists
9386 set frexpl d_frexpl
9387 eval $inlibc
9388
9389 hasstruct='varname=$1; struct=$2; shift; shift;
9390 while $test $# -ge 2; do
9391         case "$1" in
9392         $define) echo "#include <$2>";;
9393         esac ;
9394     shift 2;
9395 done > try.c;
9396 echo "int main () { struct $struct foo; }" >> try.c;
9397 set try;
9398 if eval $compile; then
9399         val="$define";
9400 else
9401         val="$undef";
9402 fi;
9403 set $varname;
9404 eval $setvar;
9405 $rm -f try.c try.o'
9406
9407 : see if this is a sys/param system
9408 set sys/param.h i_sysparam
9409 eval $inhdr
9410
9411 : see if this is a sys/mount.h system
9412 set sys/mount.h i_sysmount
9413 eval $inhdr
9414
9415 : see if sys/types.h has to be included
9416 set sys/types.h i_systypes
9417 eval $inhdr
9418
9419
9420 echo " "
9421 echo "Checking to see if your system supports struct fs_data..." >&4
9422 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9423 eval $hasstruct
9424 case "$d_fs_data_s" in
9425 "$define")      echo "Yes, it does."   ;;
9426 *)              echo "No, it doesn't." ;;
9427 esac
9428
9429 : see if fseeko exists
9430 set fseeko d_fseeko
9431 eval $inlibc
9432 case "$longsize" in
9433 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9434 esac
9435
9436 : see if fsetpos exists
9437 set fsetpos d_fsetpos
9438 eval $inlibc
9439
9440
9441 : see if fstatfs exists
9442 set fstatfs d_fstatfs
9443 eval $inlibc
9444
9445
9446 : see if statvfs exists
9447 set statvfs d_statvfs
9448 eval $inlibc
9449
9450 : see if fstatvfs exists
9451 set fstatvfs d_fstatvfs
9452 eval $inlibc
9453
9454
9455 : see if fsync exists
9456 set fsync d_fsync
9457 eval $inlibc
9458
9459 : see if ftello exists
9460 set ftello d_ftello
9461 eval $inlibc
9462 case "$longsize" in
9463 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9464 esac
9465
9466 : see if getcwd exists
9467 set getcwd d_getcwd
9468 eval $inlibc
9469
9470 : see if getespwnam exists
9471 set getespwnam d_getespwnam
9472 eval $inlibc
9473
9474
9475 : see if getfsstat exists
9476 set getfsstat d_getfsstat
9477 eval $inlibc
9478
9479 : see if getgrent exists
9480 set getgrent d_getgrent
9481 eval $inlibc
9482
9483 : see if gethostbyaddr exists
9484 set gethostbyaddr d_gethbyaddr
9485 eval $inlibc
9486
9487 : see if gethostbyname exists
9488 set gethostbyname d_gethbyname
9489 eval $inlibc
9490
9491 : see if gethostent exists
9492 set gethostent d_gethent
9493 eval $inlibc
9494
9495 : see how we will look up host name
9496 echo " "
9497 call=''
9498 if set gethostname val -f d_gethname; eval $csym; $val; then
9499         echo 'gethostname() found.' >&4
9500         d_gethname="$define"
9501         call=gethostname
9502 fi
9503 if set uname val -f d_uname; eval $csym; $val; then
9504         if ./xenix; then
9505                 $cat <<'EOM'
9506 uname() was found, but you're running xenix, and older versions of xenix
9507 have a broken uname(). If you don't really know whether your xenix is old
9508 enough to have a broken system call, use the default answer.
9509
9510 EOM
9511                 dflt=y
9512                 case "$d_uname" in
9513                 "$define") dflt=n;;
9514                 esac
9515                 rp='Is your uname() broken?'
9516                 . ./myread
9517                 case "$ans" in
9518                 n*) d_uname="$define"; call=uname;;
9519                 esac
9520         else
9521                 echo 'uname() found.' >&4
9522                 d_uname="$define"
9523                 case "$call" in
9524                 '') call=uname ;;
9525                 esac
9526         fi
9527 fi
9528 case "$d_gethname" in
9529 '') d_gethname="$undef";;
9530 esac
9531 case "$d_uname" in
9532 '') d_uname="$undef";;
9533 esac
9534 case "$d_uname$d_gethname" in
9535 *define*)
9536         dflt=n
9537         cat <<EOM
9538  
9539 Every now and then someone has a $call() that lies about the hostname
9540 but can't be fixed for political or economic reasons.  If you wish, I can
9541 pretend $call() isn't there and maybe compute hostname at run-time
9542 thanks to the '$phostname' command.
9543
9544 EOM
9545         rp="Shall I ignore $call() from now on?"
9546         . ./myread
9547         case "$ans" in
9548         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9549         esac;;
9550 esac
9551 case "$phostname" in
9552 '') aphostname='';;
9553 *) case "$aphostname" in
9554         /*) ;;
9555         *) set X $phostname
9556                 shift
9557                 file=$1
9558                 shift
9559                 file=`./loc $file $file $pth`
9560                 aphostname=`echo $file $*`
9561                 ;;
9562         esac
9563         ;;
9564 esac
9565 case "$d_uname$d_gethname" in
9566 *define*) ;;
9567 *)
9568         case "$phostname" in
9569         '')
9570                 echo "There will be no way for $package to get your hostname." >&4;;
9571         *)
9572         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9573                 ;;
9574         esac;;
9575 esac
9576 case "$d_phostname" in
9577 '') d_phostname="$undef";;
9578 esac
9579
9580 : see if this is a netdb.h system
9581 set netdb.h i_netdb
9582 eval $inhdr
9583
9584 : see if prototypes for various gethostxxx netdb.h functions are available
9585 echo " "
9586 set d_gethostprotos gethostent $i_netdb netdb.h
9587 eval $hasproto
9588
9589 : see if getlogin exists
9590 set getlogin d_getlogin
9591 eval $inlibc
9592
9593 : see if getmnt exists
9594 set getmnt d_getmnt
9595 eval $inlibc
9596
9597 : see if getmntent exists
9598 set getmntent d_getmntent
9599 eval $inlibc
9600
9601 : see if getnetbyaddr exists
9602 set getnetbyaddr d_getnbyaddr
9603 eval $inlibc
9604
9605 : see if getnetbyname exists
9606 set getnetbyname d_getnbyname
9607 eval $inlibc
9608
9609 : see if getnetent exists
9610 set getnetent d_getnent
9611 eval $inlibc
9612
9613 : see if prototypes for various getnetxxx netdb.h functions are available
9614 echo " "
9615 set d_getnetprotos getnetent $i_netdb netdb.h
9616 eval $hasproto
9617
9618 : see if getpagesize exists
9619 set getpagesize d_getpagsz
9620 eval $inlibc
9621
9622
9623 : see if getprotobyname exists
9624 set getprotobyname d_getpbyname
9625 eval $inlibc
9626
9627 : see if getprotobynumber exists
9628 set getprotobynumber d_getpbynumber
9629 eval $inlibc
9630
9631 : see if getprotoent exists
9632 set getprotoent d_getpent
9633 eval $inlibc
9634
9635 : see if getpgid exists
9636 set getpgid d_getpgid
9637 eval $inlibc
9638
9639 : see if getpgrp2 exists
9640 set getpgrp2 d_getpgrp2
9641 eval $inlibc
9642
9643 : see if getppid exists
9644 set getppid d_getppid
9645 eval $inlibc
9646
9647 : see if getpriority exists
9648 set getpriority d_getprior
9649 eval $inlibc
9650
9651 : see if prototypes for various getprotoxxx netdb.h functions are available
9652 echo " "
9653 set d_getprotoprotos getprotoent $i_netdb netdb.h
9654 eval $hasproto
9655
9656 : see if getprpwnam exists
9657 set getprpwnam d_getprpwnam
9658 eval $inlibc
9659
9660 : see if getpwent exists
9661 set getpwent d_getpwent
9662 eval $inlibc
9663
9664
9665 : see if getservbyname exists
9666 set getservbyname d_getsbyname
9667 eval $inlibc
9668
9669 : see if getservbyport exists
9670 set getservbyport d_getsbyport
9671 eval $inlibc
9672
9673 : see if getservent exists
9674 set getservent d_getsent
9675 eval $inlibc
9676
9677 : see if prototypes for various getservxxx netdb.h functions are available
9678 echo " "
9679 set d_getservprotos getservent $i_netdb netdb.h
9680 eval $hasproto
9681
9682 : see if getspnam exists
9683 set getspnam d_getspnam
9684 eval $inlibc
9685
9686 : see if gettimeofday or ftime exists
9687 set gettimeofday d_gettimeod
9688 eval $inlibc
9689 case "$d_gettimeod" in
9690 "$undef")
9691         set ftime d_ftime 
9692         eval $inlibc
9693         ;;
9694 *)
9695         val="$undef"; set d_ftime; eval $setvar
9696         ;;
9697 esac
9698 case "$d_gettimeod$d_ftime" in
9699 "$undef$undef")
9700         echo " "
9701         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9702         ;;
9703 esac
9704
9705 : see if this is an grp system
9706 set grp.h i_grp
9707 eval $inhdr
9708
9709 case "$i_grp" in
9710 $define)
9711         xxx=`./findhdr grp.h`
9712         $cppstdin $cppflags $cppminus < $xxx >$$.h
9713
9714         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9715                 val="$define"
9716         else
9717                 val="$undef"
9718         fi
9719         set d_grpasswd
9720         eval $setvar
9721
9722         $rm -f $$.h
9723         ;;
9724 *)
9725         val="$undef";
9726         set d_grpasswd; eval $setvar
9727         ;;
9728 esac
9729
9730 : see if hasmntopt exists
9731 set hasmntopt d_hasmntopt
9732 eval $inlibc
9733
9734 : see if this is a netinet/in.h or sys/in.h system
9735 set netinet/in.h i_niin sys/in.h i_sysin
9736 eval $inhdr
9737
9738 : see if arpa/inet.h has to be included
9739 set arpa/inet.h i_arpainet
9740 eval $inhdr
9741
9742 : see if htonl --and friends-- exists
9743 val=''
9744 set htonl val
9745 eval $inlibc
9746
9747 : Maybe they are macros.
9748 case "$val" in
9749 $undef)
9750         $cat >htonl.c <<EOM
9751 #include <stdio.h>
9752 #include <sys/types.h>
9753 #$i_niin I_NETINET_IN
9754 #$i_sysin I_SYS_IN
9755 #$i_arpainet I_ARPA_INET
9756 #ifdef I_NETINET_IN
9757 #include <netinet/in.h>
9758 #endif
9759 #ifdef I_SYS_IN
9760 #include <sys/in.h>
9761 #endif
9762 #ifdef I_ARPA_INET
9763 #include <arpa/inet.h>
9764 #endif
9765 #ifdef htonl
9766 printf("Defined as a macro.");
9767 #endif
9768 EOM
9769         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9770         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9771                 val="$define"
9772                 echo "But it seems to be defined as a macro." >&4
9773         fi
9774         $rm -f htonl.?
9775         ;;
9776 esac
9777 set d_htonl
9778 eval $setvar
9779
9780 : see if iconv exists
9781 set iconv d_iconv
9782 eval $inlibc
9783
9784 : index or strchr
9785 echo " "
9786 if set index val -f; eval $csym; $val; then
9787         if set strchr val -f d_strchr; eval $csym; $val; then
9788                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9789                         val="$define"
9790                         vali="$undef"
9791                         echo "strchr() found." >&4
9792                 else
9793                         val="$undef"
9794                         vali="$define"
9795                         echo "index() found." >&4
9796                 fi
9797         else
9798                 val="$undef"
9799                 vali="$define"
9800                 echo "index() found." >&4
9801         fi
9802 else
9803         if set strchr val -f d_strchr; eval $csym; $val; then
9804                 val="$define"
9805                 vali="$undef"
9806                 echo "strchr() found." >&4
9807         else
9808                 echo "No index() or strchr() found!" >&4
9809                 val="$undef"
9810                 vali="$undef"
9811         fi
9812 fi
9813 set d_strchr; eval $setvar
9814 val="$vali"
9815 set d_index; eval $setvar
9816
9817 : check whether inet_aton exists
9818 set inet_aton d_inetaton
9819 eval $inlibc
9820
9821 : see if inttypes.h is available
9822 : we want a real compile instead of Inhdr because some systems
9823 : have an inttypes.h which includes non-existent headers
9824 echo " "
9825 $cat >try.c <<EOCP
9826 #include <inttypes.h>
9827 int main() {
9828         static int32_t foo32 = 0x12345678;
9829 }
9830 EOCP
9831 set try
9832 if eval $compile; then
9833         echo "<inttypes.h> found." >&4
9834         val="$define"
9835 else
9836         echo "<inttypes.h> NOT found." >&4
9837         val="$undef"
9838 fi
9839 $rm -f try.c try
9840 set i_inttypes
9841 eval $setvar
9842
9843 : check for int64_t
9844 echo " "
9845 echo "Checking to see if you have int64_t..." >&4
9846 $cat >try.c <<EOCP
9847 #include <sys/types.h>
9848 #$i_inttypes I_INTTYPES
9849 #ifdef I_INTTYPES
9850 #include <inttypes.h>
9851 #endif
9852 int main() { int64_t x = 7; }
9853 EOCP
9854 set try
9855 if eval $compile; then
9856         val="$define"
9857         echo "You have int64_t."
9858 else
9859         val="$undef"
9860         echo "You do not have int64_t."
9861 fi
9862 $rm -f try try.*
9863 set d_int64_t
9864 eval $setvar
9865
9866 : Look for isascii
9867 echo " "
9868 $cat >isascii.c <<'EOCP'
9869 #include <stdio.h>
9870 #include <ctype.h>
9871 int main() {
9872         int c = 'A';
9873         if (isascii(c))
9874                 exit(0);
9875         else
9876                 exit(1);
9877 }
9878 EOCP
9879 set isascii
9880 if eval $compile; then
9881         echo "isascii() found." >&4
9882         val="$define"
9883 else
9884         echo "isascii() NOT found." >&4
9885         val="$undef"
9886 fi
9887 set d_isascii
9888 eval $setvar
9889 $rm -f isascii*
9890
9891 : see if isnan exists
9892 set isnan d_isnan
9893 eval $inlibc
9894
9895 : see if isnanl exists
9896 set isnanl d_isnanl
9897 eval $inlibc
9898
9899 : see if killpg exists
9900 set killpg d_killpg
9901 eval $inlibc
9902
9903 : see if lchown exists
9904 echo " "
9905 $cat > try.c <<'EOCP'
9906 /* System header to define __stub macros and hopefully few prototypes,
9907     which can conflict with char lchown(); below.  */
9908 #include <assert.h>
9909 /* Override any gcc2 internal prototype to avoid an error.  */
9910 /* We use char because int might match the return type of a gcc2
9911    builtin and then its argument prototype would still apply.  */
9912 char lchown();
9913 int main() {
9914     /*  The GNU C library defines this for functions which it implements
9915         to always fail with ENOSYS.  Some functions are actually named
9916         something starting with __ and the normal name is an alias.  */
9917 #if defined (__stub_lchown) || defined (__stub___lchown)
9918 choke me
9919 #else
9920 lchown();
9921 #endif
9922 ; return 0; }
9923 EOCP
9924 set try
9925 if eval $compile; then
9926     $echo "lchown() found." >&4
9927     val="$define"
9928 else
9929     $echo "lchown() NOT found." >&4
9930     val="$undef"
9931 fi
9932 set d_lchown
9933 eval $setvar
9934
9935 : See if number of significant digits in a double precision number is known
9936 echo " "
9937 $cat >ldbl_dig.c <<EOM
9938 #$i_limits I_LIMITS
9939 #$i_float I_FLOAT
9940 #ifdef I_LIMITS
9941 #include <limits.h>
9942 #endif
9943 #ifdef I_FLOAT
9944 #include <float.h>
9945 #endif
9946 #ifdef LDBL_DIG
9947 printf("Contains LDBL_DIG");
9948 #endif
9949 EOM
9950 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9951 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9952         echo "LDBL_DIG found." >&4
9953         val="$define"
9954 else
9955         echo "LDBL_DIG NOT found." >&4
9956         val="$undef"
9957 fi
9958 $rm -f ldbl_dig.?
9959 set d_ldbl_dig
9960 eval $setvar
9961
9962 : see if link exists
9963 set link d_link
9964 eval $inlibc
9965
9966 : see if localeconv exists
9967 set localeconv d_locconv
9968 eval $inlibc
9969
9970 : see if lockf exists
9971 set lockf d_lockf
9972 eval $inlibc
9973
9974 : check for long long
9975 echo " "
9976 echo "Checking to see if you have long long..." >&4
9977 echo 'int main() { long long x = 7; return 0; }' > try.c
9978 set try
9979 if eval $compile; then
9980         val="$define"
9981         echo "You have long long."
9982 else
9983         val="$undef"
9984         echo "You do not have long long."
9985 fi
9986 $rm try.*
9987 set d_longlong
9988 eval $setvar
9989
9990 : check for length of long long
9991 case "${d_longlong}${longlongsize}" in
9992 $define)
9993         echo " "
9994         echo "Checking to see how big your long longs are..." >&4
9995         $cat >try.c <<'EOCP'
9996 #include <stdio.h>
9997 int main()
9998 {
9999     printf("%d\n", (int)sizeof(long long));
10000     return(0);
10001 }
10002 EOCP
10003         set try
10004         if eval $compile_ok; then
10005                 longlongsize=`./try$exe_ext`
10006                 echo "Your long longs are $longlongsize bytes long."
10007         else
10008                 dflt='8'
10009                 echo " "
10010                 echo "(I can't seem to compile the test program.  Guessing...)"
10011                 rp="What is the size of a long long (in bytes)?"
10012                 . ./myread
10013                 longlongsize="$ans"
10014         fi
10015         if $test "X$longsize" = "X$longlongsize"; then
10016                 echo "(That isn't any different from an ordinary long.)"
10017         fi      
10018         ;;
10019 esac
10020 $rm -f try.* try
10021
10022 : see if prototype for lseek is available
10023 echo " "
10024 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10025 eval $hasproto
10026
10027 : see if lstat exists
10028 set lstat d_lstat
10029 eval $inlibc
10030
10031 : see if madvise exists
10032 set madvise d_madvise
10033 eval $inlibc
10034
10035 : see if mblen exists
10036 set mblen d_mblen
10037 eval $inlibc
10038
10039 : see if mbstowcs exists
10040 set mbstowcs d_mbstowcs
10041 eval $inlibc
10042
10043 : see if mbtowc exists
10044 set mbtowc d_mbtowc
10045 eval $inlibc
10046
10047 : see if memchr exists
10048 set memchr d_memchr
10049 eval $inlibc
10050
10051 : see if memcmp exists
10052 set memcmp d_memcmp
10053 eval $inlibc
10054
10055 : see if memcpy exists
10056 set memcpy d_memcpy
10057 eval $inlibc
10058
10059 : see if memmove exists
10060 set memmove d_memmove
10061 eval $inlibc
10062
10063 : see if memset exists
10064 set memset d_memset
10065 eval $inlibc
10066
10067 : see if mkdir exists
10068 set mkdir d_mkdir
10069 eval $inlibc
10070
10071 : see if mkdtemp exists
10072 set mkdtemp d_mkdtemp
10073 eval $inlibc
10074
10075 : see if mkfifo exists
10076 set mkfifo d_mkfifo
10077 eval $inlibc
10078
10079 : see if mkstemp exists
10080 set mkstemp d_mkstemp
10081 eval $inlibc
10082
10083 : see if mkstemps exists
10084 set mkstemps d_mkstemps
10085 eval $inlibc
10086
10087 : see if mktime exists
10088 set mktime d_mktime
10089 eval $inlibc
10090
10091 : see if this is a sys/mman.h system
10092 set sys/mman.h i_sysmman
10093 eval $inhdr
10094
10095 : see if mmap exists
10096 set mmap d_mmap
10097 eval $inlibc
10098 : see what shmat returns
10099 : default to something harmless
10100 mmaptype='void *'
10101 case "$i_sysmman$d_mmap" in
10102 "$define$define")
10103         $cat >mmap.c <<'END'
10104 #include <sys/mman.h>
10105 void *mmap();
10106 END
10107         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10108                 mmaptype='void *'
10109         else
10110                 mmaptype='caddr_t'
10111         fi
10112         echo "and it returns ($mmaptype)." >&4
10113         ;;
10114 esac
10115
10116
10117
10118 : see if modfl exists
10119 set modfl d_modfl
10120 eval $inlibc
10121
10122 : see if mprotect exists
10123 set mprotect d_mprotect
10124 eval $inlibc
10125
10126 : see if msgctl exists
10127 set msgctl d_msgctl
10128 eval $inlibc
10129
10130 : see if msgget exists
10131 set msgget d_msgget
10132 eval $inlibc
10133
10134 : see if msgsnd exists
10135 set msgsnd d_msgsnd
10136 eval $inlibc
10137
10138 : see if msgrcv exists
10139 set msgrcv d_msgrcv
10140 eval $inlibc
10141
10142 : see how much of the 'msg*(2)' library is present.
10143 h_msg=true
10144 echo " "
10145 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10146 *"$undef"*) h_msg=false;;
10147 esac
10148 case "$osname" in
10149 freebsd)
10150     case "`ipcs 2>&1`" in
10151     "SVID messages"*"not configured"*)
10152         echo "Your $osname does not have the msg*(2) configured." >&4
10153         h_msg=false
10154         val="$undef"
10155         set msgctl d_msgctl
10156         eval $setvar
10157         set msgget d_msgget
10158         eval $setvar
10159         set msgsnd d_msgsnd
10160         eval $setvar
10161         set msgrcv d_msgrcv
10162         eval $setvar
10163         ;;
10164     esac
10165     ;;
10166 esac
10167 : we could also check for sys/ipc.h ...
10168 if $h_msg && $test `./findhdr sys/msg.h`; then
10169         echo "You have the full msg*(2) library." >&4
10170         val="$define"
10171 else
10172         echo "You don't have the full msg*(2) library." >&4
10173         val="$undef"
10174 fi
10175 set d_msg
10176 eval $setvar
10177
10178 : see if msync exists
10179 set msync d_msync
10180 eval $inlibc
10181
10182 : see if munmap exists
10183 set munmap d_munmap
10184 eval $inlibc
10185
10186 : see if nice exists
10187 set nice d_nice
10188 eval $inlibc
10189
10190
10191 echo " "
10192 echo "Checking which 64-bit integer type we could use..." >&4
10193
10194 case "$intsize" in
10195 8) val=int
10196    set quadtype
10197    eval $setvar
10198    val='"unsigned int"'
10199    set uquadtype
10200    eval $setvar
10201    quadkind=1
10202    ;;
10203 *) case "$longsize" in
10204    8) val=long
10205       set quadtype
10206       eval $setvar
10207       val='"unsigned long"'
10208       set uquadtype
10209       eval $setvar
10210       quadkind=2
10211       ;;
10212    *) case "$d_longlong:$longlongsize" in
10213       define:8)
10214         val='"long long"'
10215         set quadtype
10216         eval $setvar
10217         val='"unsigned long long"'
10218         set uquadtype
10219         eval $setvar
10220         quadkind=3
10221         ;;
10222       *) case "$d_int64_t" in
10223          define)
10224            val=int64_t
10225            set quadtype
10226            eval $setvar
10227            val=uint64_t
10228            set uquadtype
10229            eval $setvar
10230            quadkind=4
10231            ;;
10232          esac
10233          ;;
10234       esac
10235       ;;
10236    esac
10237    ;;
10238 esac
10239
10240 case "$quadtype" in
10241 '')     echo "Alas, no 64-bit integer types in sight." >&4
10242         d_quad="$undef"
10243         ;;
10244 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10245             verb="will"
10246         else
10247             verb="could"
10248         fi
10249         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10250         d_quad="$define"
10251         ;;
10252 esac
10253
10254 : check for length of character
10255 echo " "
10256 case "$charsize" in
10257 '')
10258         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10259         $cat >try.c <<'EOCP'
10260 #include <stdio.h>
10261 int main()
10262 {
10263     printf("%d\n", (int)sizeof(char));
10264     exit(0);
10265 }
10266 EOCP
10267         set try
10268         if eval $compile_ok; then
10269                 dflt=`./try`
10270         else
10271                 dflt='1'
10272                 echo "(I can't seem to compile the test program.  Guessing...)"
10273         fi
10274         ;;
10275 *)
10276         dflt="$charsize"
10277         ;;
10278 esac
10279 rp="What is the size of a character (in bytes)?"
10280 . ./myread
10281 charsize="$ans"
10282 $rm -f try.c try
10283
10284 : check for volatile keyword
10285 echo " "
10286 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10287 $cat >try.c <<'EOCP'
10288 int main()
10289 {
10290         typedef struct _goo_struct goo_struct;
10291         goo_struct * volatile goo = ((goo_struct *)0);
10292         struct _goo_struct {
10293                 long long_int;
10294                 int reg_int;
10295                 char char_var;
10296         };
10297         typedef unsigned short foo_t;
10298         char *volatile foo;
10299         volatile int bar;
10300         volatile foo_t blech;
10301         foo = foo;
10302 }
10303 EOCP
10304 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10305         val="$define"
10306         echo "Yup, it does."
10307 else
10308         val="$undef"
10309         echo "Nope, it doesn't."
10310 fi
10311 set d_volatile
10312 eval $setvar
10313 $rm -f try.*
10314
10315
10316 echo " "
10317 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10318
10319 case "$use64bitint:$d_quad:$quadtype" in
10320 define:define:?*)
10321         ivtype="$quadtype"
10322         uvtype="$uquadtype"
10323         ivsize=8
10324         uvsize=8
10325         ;;
10326 *)      ivtype="long"
10327         uvtype="unsigned long"
10328         ivsize=$longsize
10329         uvsize=$longsize
10330         ;;
10331 esac
10332
10333 case "$uselongdouble:$d_longdbl" in
10334 define:define)
10335         nvtype="long double"
10336         nvsize=$longdblsize
10337         ;;
10338 *)      nvtype=double
10339         nvsize=$doublesize
10340         ;;
10341 esac
10342
10343 $echo "(IV will be "$ivtype", $ivsize bytes)"
10344 $echo "(UV will be "$uvtype", $uvsize bytes)"
10345 $echo "(NV will be "$nvtype", $nvsize bytes)"
10346
10347 $cat >try.c <<EOCP
10348 #$i_inttypes I_INTTYPES
10349 #ifdef I_INTTYPES
10350 #include <inttypes.h>
10351 #endif
10352 #include <stdio.h>
10353 int main() {
10354 #ifdef INT8
10355    int8_t i =  INT8_MAX;
10356   uint8_t u = UINT8_MAX;
10357   printf("int8_t\n");
10358 #endif
10359 #ifdef INT16
10360    int16_t i =  INT16_MAX;
10361   uint16_t i = UINT16_MAX;
10362   printf("int16_t\n");
10363 #endif
10364 #ifdef INT32
10365    int32_t i =  INT32_MAX;
10366   uint32_t u = UINT32_MAX;
10367   printf("int32_t\n");
10368 #endif
10369 }
10370 EOCP
10371
10372 case "$i8type" in
10373 '')     case "$charsize" in
10374         1)      i8type=char
10375                 u8type="unsigned char"
10376                 i8size=$charsize
10377                 u8size=$charsize
10378                 ;;
10379         esac
10380         ;;
10381 esac
10382 case "$i8type" in
10383 '')     set try -DINT8
10384         if eval $compile; then
10385                 case "`./try$exe_ext`" in
10386                 int8_t) i8type=int8_t
10387                         u8type=uint8_t
10388                         i8size=1
10389                         u8size=1
10390                         ;;
10391                 esac
10392         fi
10393         ;;
10394 esac
10395 case "$i8type" in
10396 '')     if $test $charsize -ge 1; then
10397                 i8type=char
10398                 u8type="unsigned char"
10399                 i8size=$charsize
10400                 u8size=$charsize
10401         fi
10402         ;;
10403 esac
10404
10405 case "$i16type" in
10406 '')     case "$shortsize" in
10407         2)      i16type=short
10408                 u16type="unsigned short"
10409                 i16size=$shortsize
10410                 u16size=$shortsize
10411                 ;;
10412         esac
10413         ;;
10414 esac
10415 case "$i16type" in
10416 '')     set try -DINT16
10417         if eval $compile; then
10418                 case "`./try$exe_ext`" in
10419                 int16_t)
10420                         i16type=int16_t
10421                         u16type=uint16_t
10422                         i16size=2
10423                         u16size=2
10424                         ;;
10425                 esac
10426         fi
10427         ;;
10428 esac
10429 case "$i16type" in
10430 '')     if $test $shortsize -ge 2; then
10431                 i16type=short
10432                 u16type="unsigned short"
10433                 i16size=$shortsize
10434                 u16size=$shortsize
10435         fi
10436         ;;
10437 esac
10438
10439 case "$i32type" in
10440 '')     case "$longsize" in
10441         4)      i32type=long
10442                 u32type="unsigned long"
10443                 i32size=$longsize
10444                 u32size=$longsize
10445                 ;;
10446         *)      case "$intsize" in
10447                 4)      i32type=int
10448                         u32type="unsigned int"
10449                         i32size=$intsize
10450                         u32size=$intsize
10451                         ;;
10452                 esac
10453                 ;;
10454         esac
10455         ;;
10456 esac
10457 case "$i32type" in
10458 '')     set try -DINT32
10459         if eval $compile; then
10460                 case "`./try$exe_ext`" in
10461                 int32_t)
10462                         i32type=int32_t
10463                         u32type=uint32_t
10464                         i32size=4
10465                         u32size=4
10466                         ;;
10467                 esac
10468         fi
10469         ;;
10470 esac
10471 case "$i32type" in
10472 '')     if $test $intsize -ge 4; then
10473                 i32type=int
10474                 u32type="unsigned int"
10475                 i32size=$intsize
10476                 u32size=$intsize
10477         fi
10478         ;;
10479 esac
10480
10481 case "$i64type" in
10482 '')     case "$d_quad:$quadtype" in
10483         define:?*)
10484                 i64type="$quadtype"
10485                 u64type="$uquadtype"
10486                 i64size=8
10487                 u64size=8
10488                 ;;
10489         esac
10490         ;;
10491 esac
10492
10493 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10494 : volatile so that the compiler has to store it out to memory.
10495 if test X"$d_volatile" = X"$define"; then
10496         volatile=volatile
10497 fi
10498 $cat <<EOP >try.c
10499 #include <stdio.h>
10500 #include <sys/types.h>
10501 #include <signal.h>
10502 #ifdef SIGFPE
10503 $volatile int bletched = 0;
10504 $signal_t blech(s) int s; { bletched = 1; }
10505 #endif
10506 int main() {
10507     $uvtype u = 0;
10508     $nvtype d;
10509     int     n = 8 * $uvsize;
10510     int     i;
10511 #ifdef SIGFPE
10512     signal(SIGFPE, blech);
10513 #endif
10514
10515     for (i = 0; i < n; i++) {
10516       u = u << 1 | ($uvtype)1;
10517       d = ($nvtype)u;
10518       if (($uvtype)d != u)
10519         break;
10520       if (d <= 0)
10521         break;
10522       d = ($nvtype)(u - 1);
10523       if (($uvtype)d != (u - 1))
10524         break;
10525 #ifdef SIGFPE
10526       if (bletched) {
10527         break;
10528 #endif
10529       } 
10530     }
10531     printf("%d\n", ((i == n) ? -n : i));
10532     exit(0);
10533 }
10534 EOP
10535 set try
10536
10537 d_nv_preserves_uv="$undef"
10538 if eval $compile; then
10539         d_nv_preserves_uv_bits="`./try$exe_ext`"
10540 fi
10541 case "$d_nv_preserves_uv_bits" in
10542 \-[1-9]*)       
10543         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10544         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10545         d_nv_preserves_uv="$define"
10546         ;;
10547 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
10548         d_nv_preserves_uv="$undef" ;;
10549 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10550         d_nv_preserves_uv_bits="$undef" ;;
10551 esac
10552
10553 $rm -f try.* try
10554
10555
10556 : check for off64_t
10557 echo " "
10558 echo "Checking to see if you have off64_t..." >&4
10559 $cat >try.c <<EOCP
10560 #include <sys/types.h>
10561 #include <unistd.h>
10562 int main() { off64_t x = 7; }
10563 EOCP
10564 set try
10565 if eval $compile; then
10566         val="$define"
10567         echo "You have off64_t."
10568 else
10569         val="$undef"
10570         echo "You do not have off64_t."
10571         case "$lseeksize" in
10572         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10573         esac
10574 fi
10575 $rm -f try.* try
10576 set d_off64_t
10577 eval $setvar
10578
10579 : see if POSIX threads are available
10580 set pthread.h i_pthread
10581 eval $inhdr
10582
10583
10584
10585
10586 : how to create joinable pthreads
10587 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10588         echo " "
10589         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10590         $cat >try.c <<'EOCP'
10591 #include <pthread.h>
10592 int main() {
10593     int detachstate = JOINABLE;
10594 }
10595 EOCP
10596         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10597         if eval $compile; then
10598                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10599                 val="$undef" # Yes, undef.
10600                 set d_old_pthread_create_joinable
10601                 eval $setvar
10602                 val=""
10603                 set old_pthread_create_joinable
10604                 eval $setvar
10605         else
10606                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10607                 if eval $compile; then
10608                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10609                         val="$define"
10610                         set d_old_pthread_create_joinable
10611                         eval $setvar
10612                         val=PTHREAD_CREATE_UNDETACHED
10613                         set old_pthread_create_joinable
10614                         eval $setvar
10615                 else            
10616                         set try -DJOINABLE=__UNDETACHED
10617                         if eval $compile; then
10618                                 echo "You seem to use __UNDETACHED." >&4
10619                                 val="$define"
10620                                 set d_old_pthread_create_joinable
10621                                 eval $setvar
10622                                 val=__UNDETACHED
10623                                 set old_pthread_create_joinable
10624                                 eval $setvar
10625                         else
10626                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10627                                 val="$define"
10628                                 set d_old_pthread_create_joinable
10629                                 eval $setvar
10630                                 val=0
10631                                 set old_pthread_create_joinable
10632                                 eval $setvar
10633                         fi
10634                 fi
10635         fi
10636         $rm -f try try.*
10637 else
10638     d_old_pthread_create_joinable="$undef"
10639     old_pthread_create_joinable=""
10640 fi
10641
10642 : see if pause exists
10643 set pause d_pause
10644 eval $inlibc
10645
10646 : see if pipe exists
10647 set pipe d_pipe
10648 eval $inlibc
10649
10650 : see if poll exists
10651 set poll d_poll
10652 eval $inlibc
10653
10654
10655 : see whether the various POSIXish _yields exist
10656 $cat >try.c <<EOP
10657 #include <pthread.h>
10658 #include <stdio.h>
10659 int main() {
10660 #ifdef SCHED_YIELD
10661         sched_yield();
10662 #else
10663 #ifdef PTHREAD_YIELD
10664         pthread_yield();
10665 #else
10666 #ifdef PTHREAD_YIELD_NULL
10667         pthread_yield(NULL);
10668 #endif
10669 #endif
10670 #endif
10671 }
10672 EOP
10673 : see if sched_yield exists
10674 set try -DSCHED_YIELD
10675 if eval $compile; then
10676     val="$define"
10677     sched_yield='sched_yield()'
10678 else
10679     val="$undef"
10680 fi
10681 case "$usethreads" in
10682 $define)
10683         case "$val" in
10684         $define) echo 'sched_yield() found.' >&4        ;;
10685         *)       echo 'sched_yield() NOT found.' >&4    ;;
10686         esac
10687 esac
10688 set d_sched_yield
10689 eval $setvar
10690
10691 : see if pthread_yield exists
10692 set try -DPTHREAD_YIELD
10693 if eval $compile; then
10694     val="$define"
10695     case "$sched_yield" in
10696     '') sched_yield='pthread_yield()' ;;
10697     esac
10698 else
10699     set try -DPTHREAD_YIELD_NULL
10700     if eval $compile; then
10701         val="$define"
10702         case "$sched_yield" in
10703         '') sched_yield='pthread_yield(NULL)' ;;
10704         esac
10705     else
10706         val="$undef"
10707     fi
10708 fi
10709 case "$usethreads" in
10710 $define)
10711         case "$val" in
10712         $define) echo 'pthread_yield() found.' >&4      ;;
10713         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10714         esac
10715         ;;
10716 esac
10717 set d_pthread_yield
10718 eval $setvar
10719
10720 case "$sched_yield" in
10721 '') sched_yield=undef ;;
10722 esac
10723
10724 $rm -f try try.*
10725
10726 : see if this is a pwd.h system
10727 set pwd.h i_pwd
10728 eval $inhdr
10729
10730 case "$i_pwd" in
10731 $define)
10732         xxx=`./findhdr pwd.h`
10733         $cppstdin $cppflags $cppminus < $xxx >$$.h
10734
10735         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10736                 val="$define"
10737         else
10738                 val="$undef"
10739         fi
10740         set d_pwquota
10741         eval $setvar
10742
10743         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10744                 val="$define"
10745         else
10746                 val="$undef"
10747         fi
10748         set d_pwage
10749         eval $setvar
10750
10751         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10752                 val="$define"
10753         else
10754                 val="$undef"
10755         fi
10756         set d_pwchange
10757         eval $setvar
10758
10759         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10760                 val="$define"
10761         else
10762                 val="$undef"
10763         fi
10764         set d_pwclass
10765         eval $setvar
10766
10767         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10768                 val="$define"
10769         else
10770                 val="$undef"
10771         fi
10772         set d_pwexpire
10773         eval $setvar
10774
10775         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10776                 val="$define"
10777         else
10778                 val="$undef"
10779         fi
10780         set d_pwcomment
10781         eval $setvar
10782
10783         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10784                 val="$define"
10785         else
10786                 val="$undef"
10787         fi
10788         set d_pwgecos
10789         eval $setvar
10790
10791         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10792                 val="$define"
10793         else
10794                 val="$undef"
10795         fi
10796         set d_pwpasswd
10797         eval $setvar
10798
10799         $rm -f $$.h
10800         ;;
10801 *)
10802         val="$undef"; 
10803         set d_pwquota; eval $setvar
10804         set d_pwage; eval $setvar
10805         set d_pwchange; eval $setvar
10806         set d_pwclass; eval $setvar
10807         set d_pwexpire; eval $setvar
10808         set d_pwcomment; eval $setvar
10809         set d_pwgecos; eval $setvar
10810         set d_pwpasswd; eval $setvar
10811         ;;
10812 esac
10813
10814 : see if readdir and friends exist
10815 set readdir d_readdir
10816 eval $inlibc
10817 set seekdir d_seekdir
10818 eval $inlibc
10819 set telldir d_telldir
10820 eval $inlibc
10821 set rewinddir d_rewinddir
10822 eval $inlibc
10823
10824 : see if readlink exists
10825 set readlink d_readlink
10826 eval $inlibc
10827
10828 : see if rename exists
10829 set rename d_rename
10830 eval $inlibc
10831
10832 : see if rmdir exists
10833 set rmdir d_rmdir
10834 eval $inlibc
10835
10836 : see if memory.h is available.
10837 val=''
10838 set memory.h val
10839 eval $inhdr
10840
10841 : See if it conflicts with string.h
10842 case "$val" in
10843 $define)
10844         case "$strings" in
10845         '') ;;
10846         *)
10847                 $cppstdin $cppflags $cppminus < $strings > mem.h
10848                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10849                         echo " "
10850                         echo "We won't be including <memory.h>."
10851                         val="$undef"
10852                 fi
10853                 $rm -f mem.h
10854                 ;;
10855         esac
10856 esac
10857 set i_memory
10858 eval $setvar
10859
10860 : can bcopy handle overlapping blocks?
10861 val="$undef"
10862 case "$d_bcopy" in
10863 "$define")
10864         echo " "
10865         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10866         $cat >try.c <<EOCP
10867 #$i_memory I_MEMORY
10868 #$i_stdlib I_STDLIB
10869 #$i_string I_STRING
10870 #$i_unistd I_UNISTD
10871 EOCP
10872         $cat >>try.c <<'EOCP'
10873 #include <stdio.h>
10874 #ifdef I_MEMORY
10875 #  include <memory.h>
10876 #endif
10877 #ifdef I_STDLIB
10878 #  include <stdlib.h>
10879 #endif
10880 #ifdef I_STRING
10881 #  include <string.h>
10882 #else
10883 #  include <strings.h>
10884 #endif
10885 #ifdef I_UNISTD
10886 #  include <unistd.h>  /* Needed for NetBSD */
10887 #endif
10888 int main()
10889 {
10890 char buf[128], abc[128];
10891 char *b;
10892 int len;
10893 int off;
10894 int align;
10895
10896 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10897
10898 for (align = 7; align >= 0; align--) {
10899         for (len = 36; len; len--) {
10900                 b = buf+align;
10901                 bcopy(abc, b, len);
10902                 for (off = 1; off <= len; off++) {
10903                         bcopy(b, b+off, len);
10904                         bcopy(b+off, b, len);
10905                         if (bcmp(b, abc, len))
10906                                 exit(1);
10907                 }
10908         }
10909 }
10910 exit(0);
10911 }
10912 EOCP
10913         set try
10914         if eval $compile_ok; then
10915                 if ./try 2>/dev/null; then
10916                         echo "Yes, it can."
10917                         val="$define"
10918                 else
10919                         echo "It can't, sorry."
10920                         case "$d_memmove" in
10921                         "$define") echo "But that's Ok since you have memmove()." ;;
10922                         esac
10923                 fi
10924         else
10925                 echo "(I can't compile the test program, so we'll assume not...)"
10926                 case "$d_memmove" in
10927                 "$define") echo "But that's Ok since you have memmove()." ;;
10928                 esac
10929         fi
10930         ;;
10931 esac
10932 $rm -f try.* try core
10933 set d_safebcpy
10934 eval $setvar
10935
10936 : can memcpy handle overlapping blocks?
10937 val="$undef"
10938 case "$d_memcpy" in
10939 "$define")
10940         echo " "
10941         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10942         $cat >try.c <<EOCP
10943 #$i_memory I_MEMORY
10944 #$i_stdlib I_STDLIB
10945 #$i_string I_STRING
10946 #$i_unistd I_UNISTD
10947 EOCP
10948         $cat >>try.c <<'EOCP'
10949 #include <stdio.h>
10950 #ifdef I_MEMORY
10951 #  include <memory.h>
10952 #endif
10953 #ifdef I_STDLIB
10954 #  include <stdlib.h>
10955 #endif
10956 #ifdef I_STRING
10957 #  include <string.h>
10958 #else
10959 #  include <strings.h>
10960 #endif
10961 #ifdef I_UNISTD
10962 #  include <unistd.h>  /* Needed for NetBSD */
10963 #endif
10964 int main()
10965 {
10966 char buf[128], abc[128];
10967 char *b;
10968 int len;
10969 int off;
10970 int align;
10971
10972 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10973    try to store the string in read-only memory. */
10974 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10975
10976 for (align = 7; align >= 0; align--) {
10977         for (len = 36; len; len--) {
10978                 b = buf+align;
10979                 memcpy(b, abc, len);
10980                 for (off = 1; off <= len; off++) {
10981                         memcpy(b+off, b, len);
10982                         memcpy(b, b+off, len);
10983                         if (memcmp(b, abc, len))
10984                                 exit(1);
10985                 }
10986         }
10987 }
10988 exit(0);
10989 }
10990 EOCP
10991         set try
10992         if eval $compile_ok; then
10993                 if ./try 2>/dev/null; then
10994                         echo "Yes, it can."
10995                         val="$define"
10996                 else
10997                         echo "It can't, sorry."
10998                         case "$d_memmove" in
10999                         "$define") echo "But that's Ok since you have memmove()." ;;
11000                         esac
11001                 fi
11002         else
11003                 echo "(I can't compile the test program, so we'll assume not...)"
11004                 case "$d_memmove" in
11005                 "$define") echo "But that's Ok since you have memmove()." ;;
11006                 esac
11007         fi
11008         ;;
11009 esac
11010 $rm -f try.* try core
11011 set d_safemcpy
11012 eval $setvar
11013
11014 : can memcmp be trusted to compare relative magnitude?
11015 val="$undef"
11016 case "$d_memcmp" in
11017 "$define")
11018         echo " "
11019         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11020         $cat >try.c <<EOCP
11021 #$i_memory I_MEMORY
11022 #$i_stdlib I_STDLIB
11023 #$i_string I_STRING
11024 #$i_unistd I_UNISTD
11025 EOCP
11026         $cat >>try.c <<'EOCP'
11027 #include <stdio.h>
11028 #ifdef I_MEMORY
11029 #  include <memory.h>
11030 #endif
11031 #ifdef I_STDLIB
11032 #  include <stdlib.h>
11033 #endif
11034 #ifdef I_STRING
11035 #  include <string.h>
11036 #else
11037 #  include <strings.h>
11038 #endif
11039 #ifdef I_UNISTD
11040 #  include <unistd.h>  /* Needed for NetBSD */
11041 #endif
11042 int main()
11043 {
11044 char a = -1;
11045 char b = 0;
11046 if ((a < b) && memcmp(&a, &b, 1) < 0)
11047         exit(1);
11048 exit(0);
11049 }
11050 EOCP
11051         set try
11052         if eval $compile_ok; then
11053                 if ./try 2>/dev/null; then
11054                         echo "Yes, it can."
11055                         val="$define"
11056                 else
11057                         echo "No, it can't (it uses signed chars)."
11058                 fi
11059         else
11060                 echo "(I can't compile the test program, so we'll assume not...)"
11061         fi
11062         ;;
11063 esac
11064 $rm -f try.* try core
11065 set d_sanemcmp
11066 eval $setvar
11067
11068 : see if prototype for sbrk is available
11069 echo " "
11070 set d_sbrkproto sbrk $i_unistd unistd.h
11071 eval $hasproto
11072
11073 : see if select exists
11074 set select d_select
11075 eval $inlibc
11076
11077 : see if semctl exists
11078 set semctl d_semctl
11079 eval $inlibc
11080
11081 : see if semget exists
11082 set semget d_semget
11083 eval $inlibc
11084
11085 : see if semop exists
11086 set semop d_semop
11087 eval $inlibc
11088
11089 : see how much of the 'sem*(2)' library is present.
11090 h_sem=true
11091 echo " "
11092 case "$d_semctl$d_semget$d_semop" in
11093 *"$undef"*) h_sem=false;;
11094 esac
11095 case "$osname" in
11096 freebsd)
11097     case "`ipcs 2>&1`" in
11098     "SVID messages"*"not configured"*)
11099         echo "Your $osname does not have the sem*(2) configured." >&4
11100         h_sem=false
11101         val="$undef"
11102         set semctl d_semctl
11103         eval $setvar
11104         set semget d_semget
11105         eval $setvar
11106         set semop d_semop
11107         eval $setvar
11108         ;;
11109     esac
11110     ;;
11111 esac
11112 : we could also check for sys/ipc.h ...
11113 if $h_sem && $test `./findhdr sys/sem.h`; then
11114         echo "You have the full sem*(2) library." >&4
11115         val="$define"
11116 else
11117         echo "You don't have the full sem*(2) library." >&4
11118         val="$undef"
11119 fi
11120 set d_sem
11121 eval $setvar
11122
11123 : see whether sys/sem.h defines union semun
11124 echo " "
11125 $cat > try.c <<'END'
11126 #include <sys/types.h>
11127 #include <sys/ipc.h>
11128 #include <sys/sem.h>
11129 int main () { union semun semun; semun.buf = 0; }
11130 END
11131 set try
11132 if eval $compile; then
11133     echo "You have union semun in <sys/sem.h>." >&4
11134     val="$define"
11135 else
11136     echo "You do not have union semun in <sys/sem.h>." >&4
11137     val="$undef"
11138 fi
11139 $rm -f try try.c try.h
11140 set d_union_semun
11141 eval $setvar
11142
11143 : see how to do semctl IPC_STAT
11144 case "$d_sem" in
11145 $define)
11146     : see whether semctl IPC_STAT can use union semun
11147     echo " "
11148     $cat > try.h <<END
11149 #ifndef S_IRUSR
11150 #   ifdef S_IREAD
11151 #       define S_IRUSR S_IREAD
11152 #       define S_IWUSR S_IWRITE
11153 #       define S_IXUSR S_IEXEC
11154 #   else
11155 #       define S_IRUSR 0400
11156 #       define S_IWUSR 0200
11157 #       define S_IXUSR 0100
11158 #   endif
11159 #   define S_IRGRP (S_IRUSR>>3)
11160 #   define S_IWGRP (S_IWUSR>>3)
11161 #   define S_IXGRP (S_IXUSR>>3)
11162 #   define S_IROTH (S_IRUSR>>6)
11163 #   define S_IWOTH (S_IWUSR>>6)
11164 #   define S_IXOTH (S_IXUSR>>6)
11165 #endif
11166 #ifndef S_IRWXU
11167 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11168 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11169 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11170 #endif
11171 END
11172
11173     $cat > try.c <<END
11174 #include <sys/types.h>
11175 #include <sys/ipc.h>
11176 #include <sys/sem.h>
11177 #include <sys/stat.h>
11178 #include <stdio.h>
11179 #include <errno.h>
11180 #include "try.h"
11181 #ifndef errno
11182 extern int errno;
11183 #endif
11184 #$d_union_semun HAS_UNION_SEMUN
11185 int main() {
11186     union semun
11187 #ifndef HAS_UNION_SEMUN
11188     {
11189         int val;
11190         struct semid_ds *buf;
11191         unsigned short *array;
11192     }
11193 #endif
11194     arg;
11195     int sem, st;
11196
11197 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11198     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11199     if (sem > -1) {
11200         struct semid_ds argbuf;
11201         arg.buf = &argbuf;
11202 #       ifdef IPC_STAT
11203         st = semctl(sem, 0, IPC_STAT, arg);
11204         if (st == 0)
11205             printf("semun\n");
11206         else
11207 #       endif /* IPC_STAT */
11208             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11209 #       ifdef IPC_RMID
11210         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11211 #       endif /* IPC_RMID */
11212             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11213     } else
11214 #endif /* IPC_PRIVATE && ... */
11215         printf("semget failed: errno = %d\n", errno);
11216   return 0;
11217 }
11218 END
11219     val="$undef"
11220     set try
11221     if eval $compile; then
11222         xxx=`./try`
11223         case "$xxx" in
11224         semun) val="$define" ;;
11225         esac
11226     fi
11227     $rm -f try try.c
11228     set d_semctl_semun
11229     eval $setvar
11230     case "$d_semctl_semun" in
11231     $define)
11232         echo "You can use union semun for semctl IPC_STAT." >&4
11233         also='also'
11234         ;;
11235     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11236         also=''
11237         ;;
11238     esac
11239
11240     : see whether semctl IPC_STAT can use struct semid_ds pointer
11241     $cat > try.c <<'END'
11242 #include <sys/types.h>
11243 #include <sys/ipc.h>
11244 #include <sys/sem.h>
11245 #include <sys/stat.h>
11246 #include "try.h"
11247 #include <stdio.h>
11248 #include <errno.h>
11249 #ifndef errno
11250 extern int errno;
11251 #endif
11252 int main() {
11253     struct semid_ds arg;
11254     int sem, st;
11255
11256 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11257     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11258     if (sem > -1) {
11259 #       ifdef IPC_STAT
11260         st = semctl(sem, 0, IPC_STAT, &arg);
11261         if (st == 0)
11262             printf("semid_ds\n");
11263         else
11264 #       endif /* IPC_STAT */
11265             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11266 #       ifdef IPC_RMID
11267         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11268 #       endif /* IPC_RMID */
11269             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11270     } else
11271 #endif /* IPC_PRIVATE && ... */
11272         printf("semget failed: errno = %d\n", errno);
11273
11274     return 0;
11275 }
11276 END
11277     val="$undef"
11278     set try
11279     if eval $compile; then
11280         xxx=`./try`
11281         case "$xxx" in
11282         semid_ds) val="$define" ;;
11283         esac
11284     fi
11285     $rm -f try try.c
11286     set d_semctl_semid_ds
11287     eval $setvar
11288     case "$d_semctl_semid_ds" in
11289     $define)
11290         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11291         ;;
11292     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11293         ;;
11294     esac
11295     $rm -f try.h
11296     ;;
11297 *)  val="$undef"
11298
11299     # We do not have the full sem*(2) library, so assume we can not
11300     # use either.
11301
11302     set d_semctl_semun
11303     eval $setvar
11304
11305     set d_semctl_semid_ds
11306     eval $setvar
11307     ;;
11308 esac
11309
11310 : see if setegid exists
11311 set setegid d_setegid
11312 eval $inlibc
11313
11314 : see if seteuid exists
11315 set seteuid d_seteuid
11316 eval $inlibc
11317
11318 : see if setgrent exists
11319 set setgrent d_setgrent
11320 eval $inlibc
11321
11322 : see if sethostent exists
11323 set sethostent d_sethent
11324 eval $inlibc
11325
11326 : see if setlinebuf exists
11327 set setlinebuf d_setlinebuf
11328 eval $inlibc
11329
11330 : see if setlocale exists
11331 set setlocale d_setlocale
11332 eval $inlibc
11333
11334 : see if setnetent exists
11335 set setnetent d_setnent
11336 eval $inlibc
11337
11338 : see if setprotoent exists
11339 set setprotoent d_setpent
11340 eval $inlibc
11341
11342 : see if setpgid exists
11343 set setpgid d_setpgid
11344 eval $inlibc
11345
11346 : see if setpgrp2 exists
11347 set setpgrp2 d_setpgrp2
11348 eval $inlibc
11349
11350 : see if setpriority exists
11351 set setpriority d_setprior
11352 eval $inlibc
11353
11354 : see if setproctitle exists
11355 set setproctitle d_setproctitle
11356 eval $inlibc
11357
11358 : see if setpwent exists
11359 set setpwent d_setpwent
11360 eval $inlibc
11361
11362 : see if setregid exists
11363 set setregid d_setregid
11364 eval $inlibc
11365 set setresgid d_setresgid
11366 eval $inlibc
11367
11368 : see if setreuid exists
11369 set setreuid d_setreuid
11370 eval $inlibc
11371 set setresuid d_setresuid
11372 eval $inlibc
11373
11374 : see if setrgid exists
11375 set setrgid d_setrgid
11376 eval $inlibc
11377
11378 : see if setruid exists
11379 set setruid d_setruid
11380 eval $inlibc
11381
11382 : see if setservent exists
11383 set setservent d_setsent
11384 eval $inlibc
11385
11386 : see if setsid exists
11387 set setsid d_setsid
11388 eval $inlibc
11389
11390 : see if setvbuf exists
11391 set setvbuf d_setvbuf
11392 eval $inlibc
11393
11394 : see if sfio.h is available
11395 set sfio.h i_sfio
11396 eval $inhdr
11397
11398
11399 : see if sfio library is available
11400 case "$i_sfio" in
11401 $define)
11402         val=''
11403         set sfreserve val
11404         eval $inlibc
11405         ;;
11406 *)
11407         val="$undef"
11408         ;;
11409 esac
11410 : Ok, but do we want to use it.
11411 case "$val" in
11412 $define)
11413         case "$usesfio" in
11414         true|$define|[yY]*) dflt='y';;
11415         *) dflt='n';;
11416         esac
11417         echo "$package can use the sfio library, but it is experimental."
11418         case "$useperlio" in
11419         "$undef")
11420             echo "For sfio also the PerlIO abstraction layer is needed."
11421             echo "Earlier you said you wouldn't want that."
11422             ;;
11423         esac
11424         rp="You seem to have sfio available, do you want to try using it?"
11425         . ./myread
11426         case "$ans" in
11427         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11428                 useperlio="$define"
11429                 val="$define"
11430                 ;;
11431         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11432                 val="$undef"
11433                 ;;
11434         esac
11435         ;;
11436 *)      case "$usesfio" in
11437         true|$define|[yY]*)
11438                 echo "Sorry, cannot find sfio on this machine." >&4
11439                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11440                 val="$undef"
11441                 ;;
11442         esac
11443         ;;
11444 esac
11445 set d_sfio
11446 eval $setvar
11447 case "$d_sfio" in
11448 $define) usesfio='true';;
11449 *) usesfio='false';;
11450 esac
11451 case "$d_sfio" in
11452 $define) ;;
11453 *)      : Remove sfio from list of libraries to use
11454         set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11455         shift
11456         libs="$*"
11457         echo "libs = $libs" >&4
11458 ;;
11459 esac
11460
11461
11462 : see if shmctl exists
11463 set shmctl d_shmctl
11464 eval $inlibc
11465
11466 : see if shmget exists
11467 set shmget d_shmget
11468 eval $inlibc
11469
11470 : see if shmat exists
11471 set shmat d_shmat
11472 eval $inlibc
11473 : see what shmat returns
11474 case "$d_shmat" in
11475 "$define")
11476         $cat >shmat.c <<'END'
11477 #include <sys/shm.h>
11478 void *shmat();
11479 END
11480         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11481                 shmattype='void *'
11482         else
11483                 shmattype='char *'
11484         fi
11485         echo "and it returns ($shmattype)." >&4
11486         : see if a prototype for shmat is available
11487         xxx=`./findhdr sys/shm.h`
11488         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11489         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11490                 val="$define"
11491         else
11492                 val="$undef"
11493         fi
11494         $rm -f shmat.[co]
11495         ;;
11496 *)
11497         val="$undef"
11498         ;;
11499 esac
11500 set d_shmatprototype
11501 eval $setvar
11502
11503 : see if shmdt exists
11504 set shmdt d_shmdt
11505 eval $inlibc
11506
11507 : see how much of the 'shm*(2)' library is present.
11508 h_shm=true
11509 echo " "
11510 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11511 *"$undef"*) h_shm=false;;
11512 esac
11513 case "$osname" in
11514 freebsd)
11515     case "`ipcs 2>&1`" in
11516     "SVID shared memory"*"not configured"*)
11517         echo "Your $osname does not have the shm*(2) configured." >&4
11518         h_shm=false
11519         val="$undef"
11520         set shmctl d_shmctl
11521         evat $setvar
11522         set shmget d_shmget
11523         evat $setvar
11524         set shmat d_shmat
11525         evat $setvar
11526         set shmdt d_shmdt
11527         evat $setvar
11528         ;;
11529     esac
11530     ;;
11531 esac
11532 : we could also check for sys/ipc.h ...
11533 if $h_shm && $test `./findhdr sys/shm.h`; then
11534         echo "You have the full shm*(2) library." >&4
11535         val="$define"
11536 else
11537         echo "You don't have the full shm*(2) library." >&4
11538         val="$undef"
11539 fi
11540 set d_shm
11541 eval $setvar
11542
11543 echo " "
11544 : see if we have sigaction
11545 if set sigaction val -f d_sigaction; eval $csym; $val; then
11546         echo 'sigaction() found.' >&4
11547         $cat > try.c <<'EOP'
11548 #include <stdio.h>
11549 #include <sys/types.h>
11550 #include <signal.h>
11551 int main()
11552 {
11553     struct sigaction act, oact;
11554     act.sa_flags = 0;
11555     oact.sa_handler = 0;
11556     /* so that act and oact are used */
11557     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11558 }
11559 EOP
11560         set try
11561         if eval $compile_ok; then
11562                 val="$define"
11563         else
11564                 echo "But you don't seem to have a useable struct sigaction." >&4
11565                 val="$undef"
11566         fi
11567 else
11568         echo 'sigaction NOT found.' >&4
11569         val="$undef"
11570 fi
11571 set d_sigaction; eval $setvar
11572 $rm -f try try$_o try.c
11573
11574 : see if sigprocmask exists
11575 set sigprocmask d_sigprocmask
11576 eval $inlibc
11577
11578 : see if sigsetjmp exists
11579 echo " "
11580 case "$d_sigsetjmp" in
11581 '')
11582         $cat >try.c <<'EOP'
11583 #include <setjmp.h>
11584 sigjmp_buf env;
11585 int set = 1;
11586 int main()
11587 {
11588         if (sigsetjmp(env,1))
11589                 exit(set);
11590         set = 0;
11591         siglongjmp(env, 1);
11592         exit(1);
11593 }
11594 EOP
11595         set try
11596         if eval $compile; then
11597                 if ./try >/dev/null 2>&1; then
11598                         echo "POSIX sigsetjmp found." >&4
11599                         val="$define"
11600                 else
11601                         $cat >&4 <<EOM
11602 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11603 I'll ignore them.
11604 EOM
11605                         val="$undef"
11606                 fi
11607         else
11608                 echo "sigsetjmp not found." >&4
11609                 val="$undef"
11610         fi
11611         ;;
11612 *) val="$d_sigsetjmp"
11613         case "$d_sigsetjmp" in
11614         $define) echo "POSIX sigsetjmp found." >&4;;
11615         $undef) echo "sigsetjmp not found." >&4;;
11616         esac
11617         ;;
11618 esac
11619 set d_sigsetjmp
11620 eval $setvar
11621 $rm -f try.c try
11622
11623 : see if sockatmark exists
11624 set sockatmark d_sockatmark
11625 eval $inlibc
11626
11627 : see if socks5_init exists
11628 set socks5_init d_socks5_init
11629 eval $inlibc
11630
11631 : see if sys/stat.h is available
11632 set sys/stat.h i_sysstat
11633 eval $inhdr
11634
11635
11636 : see if stat knows about block sizes
11637 echo " "
11638 echo "Checking to see if your struct stat has st_blocks field..." >&4
11639 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11640 eval $hasfield
11641
11642
11643 : see if this is a sys/vfs.h system
11644 set sys/vfs.h i_sysvfs
11645 eval $inhdr
11646
11647
11648 : see if this is a sys/statfs.h system
11649 set sys/statfs.h i_sysstatfs
11650 eval $inhdr
11651
11652
11653 echo " "
11654 echo "Checking to see if your system supports struct statfs..." >&4
11655 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
11656 eval $hasstruct
11657 case "$d_statfs_s" in
11658 "$define")      echo "Yes, it does."   ;;
11659 *)              echo "No, it doesn't." ;;
11660 esac
11661
11662
11663
11664 : see if struct statfs knows about f_flags
11665 case "$d_statfs_s" in
11666 define) 
11667         echo " "
11668         echo "Checking to see if your struct statfs has f_flags field..." >&4
11669         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
11670         eval $hasfield
11671         ;;
11672 *)      val="$undef"
11673         set d_statfs_f_flags
11674         eval $setvar
11675         ;;
11676 esac
11677 case "$d_statfs_f_flags" in
11678 "$define")      echo "Yes, it does."   ;;
11679 *)              echo "No, it doesn't." ;;
11680 esac
11681
11682 : see if _ptr and _cnt from stdio act std
11683 echo " "
11684
11685 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11686         echo "(Looks like you have stdio.h from BSD.)"
11687         case "$stdio_ptr" in
11688         '') stdio_ptr='((fp)->_p)'
11689                 ptr_lval=$define
11690                 ;;
11691         *)      ptr_lval=$d_stdio_ptr_lval;;
11692         esac
11693         case "$stdio_cnt" in
11694         '') stdio_cnt='((fp)->_r)'
11695                 cnt_lval=$define
11696                 ;;
11697         *)      cnt_lval=$d_stdio_cnt_lval;;
11698         esac
11699         case "$stdio_base" in
11700         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11701         esac
11702         case "$stdio_bufsiz" in
11703         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11704         esac
11705 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11706         echo "(Looks like you have stdio.h from Linux.)"
11707         case "$stdio_ptr" in
11708         '') stdio_ptr='((fp)->_IO_read_ptr)'
11709                 ptr_lval=$define
11710                 ;;
11711         *)      ptr_lval=$d_stdio_ptr_lval;;
11712         esac
11713         case "$stdio_cnt" in
11714         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11715                 cnt_lval=$undef
11716                 ;;
11717         *)      cnt_lval=$d_stdio_cnt_lval;;
11718         esac
11719         case "$stdio_base" in
11720         '') stdio_base='((fp)->_IO_read_base)';;
11721         esac
11722         case "$stdio_bufsiz" in
11723         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11724         esac
11725 else
11726         case "$stdio_ptr" in
11727         '') stdio_ptr='((fp)->_ptr)'
11728                 ptr_lval=$define
11729                 ;;
11730         *)      ptr_lval=$d_stdio_ptr_lval;;
11731         esac
11732         case "$stdio_cnt" in
11733         '') stdio_cnt='((fp)->_cnt)'
11734                 cnt_lval=$define
11735                 ;;
11736         *)      cnt_lval=$d_stdio_cnt_lval;;
11737         esac
11738         case "$stdio_base" in
11739         '') stdio_base='((fp)->_base)';;
11740         esac
11741         case "$stdio_bufsiz" in
11742         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11743         esac
11744 fi
11745
11746 : test whether _ptr and _cnt really work
11747 echo "Checking how std your stdio is..." >&4
11748 $cat >try.c <<EOP
11749 #include <stdio.h>
11750 #define FILE_ptr(fp)    $stdio_ptr
11751 #define FILE_cnt(fp)    $stdio_cnt
11752 int main() {
11753         FILE *fp = fopen("try.c", "r");
11754         char c = getc(fp);
11755         if (
11756                 18 <= FILE_cnt(fp) &&
11757                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11758         )
11759                 exit(0);
11760         exit(1);
11761 }
11762 EOP
11763 val="$undef"
11764 set try
11765 if eval $compile; then
11766         if ./try; then
11767                 echo "Your stdio acts pretty std."
11768                 val="$define"
11769         else
11770                 echo "Your stdio isn't very std."
11771         fi
11772 else
11773         echo "Your stdio doesn't appear very std."
11774 fi
11775 $rm -f try.c try
11776 set d_stdstdio
11777 eval $setvar
11778
11779 : Can _ptr be used as an lvalue?
11780 case "$d_stdstdio$ptr_lval" in
11781 $define$define) val=$define ;;
11782 *) val=$undef ;;
11783 esac
11784 set d_stdio_ptr_lval
11785 eval $setvar
11786
11787 : Can _cnt be used as an lvalue?
11788 case "$d_stdstdio$cnt_lval" in
11789 $define$define) val=$define ;;
11790 *) val=$undef ;;
11791 esac
11792 set d_stdio_cnt_lval
11793 eval $setvar
11794
11795
11796 : test whether setting _ptr sets _cnt as a side effect
11797 d_stdio_ptr_lval_sets_cnt="$undef"
11798 d_stdio_ptr_lval_nochange_cnt="$undef"
11799 case "$d_stdio_ptr_lval$d_stdstdio" in
11800 $define$define)
11801         echo "Checking to see what happens if we set the stdio ptr..." >&4
11802 $cat >try.c <<EOP
11803 #include <stdio.h>
11804 /* Can we scream? */
11805 /* Eat dust sed :-) */
11806 /* In the buffer space, no one can hear you scream. */
11807 #define FILE_ptr(fp)    $stdio_ptr
11808 #define FILE_cnt(fp)    $stdio_cnt
11809 #include <sys/types.h>
11810 int main() {
11811         FILE *fp = fopen("try.c", "r");
11812         int c;
11813         char *ptr;
11814         size_t cnt;
11815         if (!fp) {
11816             puts("Fail even to read");
11817             exit(1);
11818         }
11819         c = getc(fp); /* Read away the first # */
11820         if (c == EOF) {
11821             puts("Fail even to read");
11822             exit(1);
11823         }
11824         if (!(
11825                 18 <= FILE_cnt(fp) &&
11826                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11827         )) {
11828                 puts("Fail even to read");
11829                 exit (1);
11830         }
11831         ptr = (char*) FILE_ptr(fp);
11832         cnt = (size_t)FILE_cnt(fp);
11833
11834         FILE_ptr(fp) += 42;
11835
11836         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11837                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11838                 exit (1);
11839         }
11840         if (FILE_cnt(fp) <= 20) {
11841                 printf ("Fail (<20 chars to test)");
11842                 exit (1);
11843         }
11844         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11845                 puts("Fail compare");
11846                 exit (1);
11847         }
11848         if (cnt == FILE_cnt(fp)) {
11849                 puts("Pass_unchanged");
11850                 exit (0);
11851         }       
11852         if (FILE_cnt(fp) == (cnt - 42)) {
11853                 puts("Pass_changed");
11854                 exit (0);
11855         }
11856         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11857         return 1;
11858
11859 }
11860 EOP
11861         set try
11862         if eval $compile; then
11863                 case `./try$exe_ext` in
11864                 Pass_changed)
11865                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11866                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11867                 Pass_unchanged)
11868                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11869                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11870                 Fail*)
11871                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11872                 *)
11873                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11874         esac
11875         else
11876                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11877         fi
11878         $rm -f try.c try
11879         ;;
11880 esac
11881
11882 : see if _base is also standard
11883 val="$undef"
11884 case "$d_stdstdio" in
11885 $define)
11886         $cat >try.c <<EOP
11887 #include <stdio.h>
11888 #define FILE_base(fp)   $stdio_base
11889 #define FILE_bufsiz(fp) $stdio_bufsiz
11890 int main() {
11891         FILE *fp = fopen("try.c", "r");
11892         char c = getc(fp);
11893         if (
11894                 19 <= FILE_bufsiz(fp) &&
11895                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11896         )
11897                 exit(0);
11898         exit(1);
11899 }
11900 EOP
11901         set try
11902         if eval $compile; then
11903                 if ./try; then
11904                         echo "And its _base field acts std."
11905                         val="$define"
11906                 else
11907                         echo "But its _base field isn't std."
11908                 fi
11909         else
11910                 echo "However, it seems to be lacking the _base field."
11911         fi
11912         $rm -f try.c try
11913         ;;
11914 esac
11915 set d_stdiobase
11916 eval $setvar
11917
11918 $cat >&4 <<EOM
11919 Checking how to access stdio streams by file descriptor number...
11920 EOM
11921 case "$stdio_stream_array" in
11922 '')     $cat >try.c <<EOCP
11923 #include <stdio.h>
11924 int main() {
11925   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11926     printf("yes\n");
11927 }
11928 EOCP
11929         for s in _iob __iob __sF
11930         do
11931                 set try -DSTDIO_STREAM_ARRAY=$s
11932                 if eval $compile; then
11933                         case "`./try$exe_ext`" in
11934                         yes)    stdio_stream_array=$s; break ;;
11935                         esac
11936                 fi
11937         done
11938         $rm -f try.* try$exe_ext
11939 esac
11940 case "$stdio_stream_array" in
11941 '')     $cat >&4 <<EOM
11942 I can't figure out how to access stdio streams by file descriptor number.
11943 EOM
11944         d_stdio_stream_array="$undef"
11945         ;;
11946 *)      $cat >&4 <<EOM
11947 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11948 EOM
11949         d_stdio_stream_array="$define"
11950         ;;
11951 esac
11952
11953 : see if strcoll exists
11954 set strcoll d_strcoll
11955 eval $inlibc
11956
11957 : check for structure copying
11958 echo " "
11959 echo "Checking to see if your C compiler can copy structs..." >&4
11960 $cat >try.c <<'EOCP'
11961 int main()
11962 {
11963         struct blurfl {
11964                 int dyick;
11965         } foo, bar;
11966
11967         foo = bar;
11968 }
11969 EOCP
11970 if $cc -c try.c >/dev/null 2>&1 ; then
11971         val="$define"
11972         echo "Yup, it can."
11973 else
11974         val="$undef"
11975         echo "Nope, it can't."
11976 fi
11977 set d_strctcpy
11978 eval $setvar
11979 $rm -f try.*
11980
11981 : see if strerror and/or sys_errlist[] exist
11982 echo " "
11983 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11984     if set strerror val -f d_strerror; eval $csym; $val; then
11985                 echo 'strerror() found.' >&4
11986                 d_strerror="$define"
11987                 d_strerrm='strerror(e)'
11988                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11989                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11990                         d_syserrlst="$define"
11991                 else
11992                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11993                         d_syserrlst="$undef"
11994                 fi
11995     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11996                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11997                 echo 'strerror() found in string header.' >&4
11998                 d_strerror="$define"
11999                 d_strerrm='strerror(e)'
12000                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12001                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12002                                 d_syserrlst="$define"
12003                 else
12004                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12005                         d_syserrlst="$undef"
12006                 fi
12007     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12008                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12009                 d_strerror="$undef"
12010                 d_syserrlst="$define"
12011                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12012     else
12013                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12014                 d_strerror="$undef"
12015                 d_syserrlst="$undef"
12016                 d_strerrm='"unknown"'
12017     fi
12018 fi
12019
12020 : see if strtod exists
12021 set strtod d_strtod
12022 eval $inlibc
12023
12024 : see if strtol exists
12025 set strtol d_strtol
12026 eval $inlibc
12027
12028 : see if strtold exists
12029 set strtold d_strtold
12030 eval $inlibc
12031
12032 : see if strtoll exists
12033 set strtoll d_strtoll
12034 eval $inlibc
12035
12036 case "$d_longlong-$d_strtoll" in
12037 "$define-$define")
12038         $cat <<EOM
12039 Checking whether your strtoll() works okay...
12040 EOM
12041         $cat >try.c <<'EOCP'
12042 #include <errno.h>
12043 #ifdef __hpux
12044 #define strtoll __strtoll
12045 #endif
12046 #ifdef __EMX__
12047 #define strtoll _strtoll
12048 #endif
12049 #include <stdio.h>
12050 extern long long int strtoll(char *s, char **, int); 
12051 static int bad = 0;
12052 int check(char *s, long long ell, int een) {
12053         long long gll;
12054         errno = 0;
12055         gll = strtoll(s, 0, 10);
12056         if (!((gll == ell) && (errno == een)))
12057                 bad++;
12058 }
12059 int main() {
12060         check(" 1",                                      1LL, 0);
12061         check(" 0",                                      0LL, 0);
12062         check("-1",                                     -1LL, 0);
12063         check("-9223372036854775808", -9223372036854775808LL, 0);
12064         check("-9223372036854775808", -9223372036854775808LL, 0);
12065         check(" 9223372036854775807",  9223372036854775807LL, 0);
12066         check("-9223372036854775808", -9223372036854775808LL, 0);
12067         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12068         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12069         if (!bad)
12070                 printf("ok\n");
12071 }
12072 EOCP
12073         set try
12074         if eval $compile; then
12075                 yyy=`./try`
12076                 case "$yyy" in
12077                 ok) echo "Your strtoll() seems to be working okay." ;;
12078                 *) cat <<EOM >&4
12079 Your strtoll() doesn't seem to be working okay.
12080 EOM
12081                    d_strtoll="$undef"
12082                    ;;
12083                 esac
12084         else
12085                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12086                 d_strtoll="$undef"
12087         fi
12088         ;;
12089 esac
12090
12091 : see if strtoq exists
12092 set strtoq d_strtoq
12093 eval $inlibc
12094
12095 : see if strtoul exists
12096 set strtoul d_strtoul
12097 eval $inlibc
12098
12099 case "$d_strtoul" in
12100 "$define")
12101         $cat <<EOM
12102 Checking whether your strtoul() works okay...
12103 EOM
12104         $cat >try.c <<'EOCP'
12105 #include <errno.h>
12106 #include <stdio.h>
12107 extern unsigned long int strtoul(char *s, char **, int); 
12108 static int bad = 0;
12109 void check(char *s, unsigned long eul, int een) {
12110         unsigned long gul;
12111         errno = 0;
12112         gul = strtoul(s, 0, 10);
12113         if (!((gul == eul) && (errno == een)))
12114                 bad++;
12115 }
12116 int main() {
12117         check(" 1", 1L, 0);
12118         check(" 0", 0L, 0);
12119 EOCP
12120         case "$longsize" in
12121         8)
12122             $cat >>try.c <<'EOCP'
12123         check("18446744073709551615", 18446744073709551615UL, 0);
12124         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12125 #if 0 /* strtoul() for /^-/ strings is undefined. */
12126         check("-1", 18446744073709551615UL, 0);
12127         check("-18446744073709551614", 2, 0);
12128         check("-18446744073709551615", 1, 0);
12129         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12130         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12131 #endif
12132 EOCP
12133                 ;;
12134         4)
12135                     $cat >>try.c <<'EOCP'
12136         check("4294967295", 4294967295UL, 0);
12137         check("4294967296", 4294967295UL, ERANGE);
12138 #if 0 /* strtoul() for /^-/ strings is undefined. */
12139         check("-1", 4294967295UL, 0);
12140         check("-4294967294", 2, 0);
12141         check("-4294967295", 1, 0);
12142         check("-4294967296", 4294967295UL, ERANGE);
12143         check("-4294967297", 4294967295UL, ERANGE);
12144 #endif
12145 EOCP
12146                 ;;
12147         *)
12148 : Should we write these tests to be more portable by sprintf-ing
12149 : ~0 and then manipulating that char string as input for strtol?
12150                 ;;
12151         esac
12152         $cat >>try.c <<'EOCP'
12153         if (!bad)
12154                 printf("ok\n");
12155         return 0;
12156 }
12157 EOCP
12158         set try
12159         if eval $compile; then
12160                 case "`./try`" in
12161                 ok) echo "Your strtoul() seems to be working okay." ;;
12162                 *) cat <<EOM >&4
12163 Your strtoul() doesn't seem to be working okay.
12164 EOM
12165                    d_strtoul="$undef"
12166                    ;;
12167                 esac
12168         fi
12169         ;;
12170 esac
12171
12172 : see if strtoull exists
12173 set strtoull d_strtoull
12174 eval $inlibc
12175
12176 case "$d_longlong-$d_strtoull" in
12177 "$define-$define")
12178         $cat <<EOM
12179 Checking whether your strtoull() works okay...
12180 EOM
12181         $cat >try.c <<'EOCP'
12182 #include <errno.h>
12183 #ifdef __hpux
12184 #define strtoull __strtoull
12185 #endif
12186 #include <stdio.h>
12187 extern unsigned long long int strtoull(char *s, char **, int); 
12188 static int bad = 0;
12189 int check(char *s, long long eull, int een) {
12190         long long gull;
12191         errno = 0;
12192         gull = strtoull(s, 0, 10);
12193         if (!((gull == eull) && (errno == een)))
12194                 bad++;
12195 }
12196 int main() {
12197         check(" 1",                                        1LL, 0);
12198         check(" 0",                                        0LL, 0);
12199         check("18446744073709551615",  18446744073709551615ULL, 0);
12200         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12201 #if 0 /* strtoull() for /^-/ strings is undefined. */
12202         check("-1",                    18446744073709551615ULL, 0);
12203         check("-18446744073709551614",                     2LL, 0);
12204         check("-18446744073709551615",                     1LL, 0);
12205         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12206         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12207 #endif
12208         if (!bad)
12209                 printf("ok\n");
12210 }
12211 EOCP
12212         set try
12213         if eval $compile; then
12214                 case "`./try`" in
12215                 ok) echo "Your strtoull() seems to be working okay." ;;
12216                 *) cat <<EOM >&4
12217 Your strtoull() doesn't seem to be working okay.
12218 EOM
12219                    d_strtoull="$undef"
12220                    ;;
12221                 esac
12222         fi
12223         ;;
12224 esac
12225
12226 : see if strtouq exists
12227 set strtouq d_strtouq
12228 eval $inlibc
12229
12230 case "$d_strtouq" in
12231 "$define")
12232         $cat <<EOM
12233 Checking whether your strtouq() works okay...
12234 EOM
12235         $cat >try.c <<'EOCP'
12236 #include <errno.h>
12237 #include <stdio.h>
12238 extern unsigned long long int strtouq(char *s, char **, int); 
12239 static int bad = 0;
12240 void check(char *s, unsigned long long eull, int een) {
12241         unsigned long long gull;
12242         errno = 0;
12243         gull = strtouq(s, 0, 10);
12244         if (!((gull == eull) && (errno == een)))
12245                 bad++;
12246 }
12247 int main() {
12248         check(" 1",                                        1LL, 0);
12249         check(" 0",                                        0LL, 0);
12250         check("18446744073709551615",  18446744073709551615ULL, 0);
12251         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12252 #if 0 /* strtouq() for /^-/ strings is undefined. */
12253         check("-1",                    18446744073709551615ULL, 0);
12254         check("-18446744073709551614",                     2LL, 0);
12255         check("-18446744073709551615",                     1LL, 0);
12256         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12257         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12258 #endif
12259         if (!bad)
12260                 printf("ok\n");
12261         return 0;
12262 }
12263 EOCP
12264         set try
12265         if eval $compile; then
12266                 case "`./try`" in
12267                 ok) echo "Your strtouq() seems to be working okay." ;;
12268                 *) cat <<EOM >&4
12269 Your strtouq() doesn't seem to be working okay.
12270 EOM
12271                    d_strtouq="$undef"
12272                    ;;
12273                 esac
12274         fi
12275         ;;
12276 esac
12277
12278 : see if strxfrm exists
12279 set strxfrm d_strxfrm
12280 eval $inlibc
12281
12282 : see if symlink exists
12283 set symlink d_symlink
12284 eval $inlibc
12285
12286 : see if syscall exists
12287 set syscall d_syscall
12288 eval $inlibc
12289
12290 : see if sysconf exists
12291 set sysconf d_sysconf
12292 eval $inlibc
12293
12294 : see if system exists
12295 set system d_system
12296 eval $inlibc
12297
12298 : see if tcgetpgrp exists
12299 set tcgetpgrp d_tcgetpgrp
12300 eval $inlibc
12301
12302 : see if tcsetpgrp exists
12303 set tcsetpgrp d_tcsetpgrp
12304 eval $inlibc
12305
12306 : see if prototype for telldir is available
12307 echo " "
12308 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12309 eval $hasproto
12310
12311 : see if this is a sys/times.h system
12312 set sys/times.h i_systimes
12313 eval $inhdr
12314
12315 : see if times exists
12316 echo " "
12317 if set times val -f d_times; eval $csym; $val; then
12318         echo 'times() found.' >&4
12319         d_times="$define"
12320         inc=''
12321         case "$i_systimes" in
12322         "$define") inc='sys/times.h';;
12323         esac
12324         rp="What is the type returned by times() on this system?"
12325         set clock_t clocktype long stdio.h sys/types.h $inc
12326         eval $typedef_ask
12327 else
12328         echo 'times() NOT found, hope that will do.' >&4
12329         d_times="$undef"
12330         clocktype='int'
12331 fi
12332
12333 : see if truncate exists
12334 set truncate d_truncate
12335 eval $inlibc
12336
12337 : see if tzname[] exists
12338 echo " "
12339 if set tzname val -a d_tzname; eval $csym; $val; then
12340         val="$define"
12341         echo 'tzname[] found.' >&4
12342 else
12343         val="$undef"
12344         echo 'tzname[] NOT found.' >&4
12345 fi
12346 set d_tzname
12347 eval $setvar
12348
12349 : see if umask exists
12350 set umask d_umask
12351 eval $inlibc
12352
12353 : see if ustat exists
12354 set ustat d_ustat
12355 eval $inlibc
12356
12357 : backward compatibility for d_hvfork
12358 if test X$d_hvfork != X; then
12359         d_vfork="$d_hvfork"
12360         d_hvfork=''
12361 fi
12362 : see if there is a vfork
12363 val=''
12364 set vfork val
12365 eval $inlibc
12366
12367 : Ok, but do we want to use it. vfork is reportedly unreliable in 
12368 : perl on Solaris 2.x, and probably elsewhere.
12369 case "$val" in
12370 $define)
12371         echo " "
12372         case "$usevfork" in
12373         false) dflt='n';;
12374         *) dflt='y';;
12375         esac
12376         cat <<'EOM'
12377  
12378 Perl can only use a vfork() that doesn't suffer from strict
12379 restrictions on calling functions or modifying global data in
12380 the child.  For example, glibc-2.1 contains such a vfork()
12381 that is unsuitable.  If your system provides a proper fork()
12382 call, chances are that you do NOT want perl to use vfork().
12383
12384 EOM
12385         rp="Do you still want to use vfork()?"
12386         . ./myread
12387         case "$ans" in
12388         y|Y) ;;
12389         *)
12390                 echo "Ok, we won't use vfork()."
12391                 val="$undef"
12392                 ;;
12393         esac
12394         ;;
12395 esac
12396 set d_vfork
12397 eval $setvar
12398 case "$d_vfork" in
12399 $define) usevfork='true';;
12400 *) usevfork='false';;
12401 esac
12402
12403 : see if this is an sysdir system
12404 set sys/dir.h i_sysdir
12405 eval $inhdr
12406
12407 : see if this is an sysndir system
12408 set sys/ndir.h i_sysndir
12409 eval $inhdr
12410
12411 : see if closedir exists
12412 set closedir d_closedir
12413 eval $inlibc
12414
12415 case "$d_closedir" in
12416 "$define")
12417         echo " "
12418         echo "Checking whether closedir() returns a status..." >&4
12419         cat > closedir.c <<EOM
12420 #$i_dirent I_DIRENT             /**/
12421 #$i_sysdir I_SYS_DIR            /**/
12422 #$i_sysndir I_SYS_NDIR          /**/
12423 #$i_systypes I_SYS_TYPES        /**/
12424
12425 #if defined(I_SYS_TYPES)
12426 #include <sys/types.h>
12427 #endif
12428 #if defined(I_DIRENT)
12429 #include <dirent.h>
12430 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12431 #include <sys/dir.h>
12432 #endif
12433 #else
12434 #ifdef I_SYS_NDIR
12435 #include <sys/ndir.h>
12436 #else
12437 #ifdef I_SYS_DIR
12438 #ifdef hp9000s500
12439 #include <ndir.h>       /* may be wrong in the future */
12440 #else
12441 #include <sys/dir.h>
12442 #endif
12443 #endif
12444 #endif
12445 #endif 
12446 int main() { return closedir(opendir(".")); }
12447 EOM
12448         set closedir
12449         if eval $compile_ok; then
12450                 if ./closedir > /dev/null 2>&1 ; then
12451                         echo "Yes, it does."
12452                         val="$undef"
12453                 else
12454                         echo "No, it doesn't."
12455                         val="$define"
12456                 fi
12457         else
12458                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12459                 val="$define"
12460         fi
12461         ;;
12462 *)
12463         val="$undef";
12464         ;;
12465 esac
12466 set d_void_closedir
12467 eval $setvar
12468 $rm -f closedir*
12469 : see if there is a wait4
12470 set wait4 d_wait4
12471 eval $inlibc
12472
12473 : see if waitpid exists
12474 set waitpid d_waitpid
12475 eval $inlibc
12476
12477 : see if wcstombs exists
12478 set wcstombs d_wcstombs
12479 eval $inlibc
12480
12481 : see if wctomb exists
12482 set wctomb d_wctomb
12483 eval $inlibc
12484
12485 : preserve RCS keywords in files with variable substitution, grrr
12486 Date='$Date'
12487 Id='$Id'
12488 Log='$Log'
12489 RCSfile='$RCSfile'
12490 Revision='$Revision'
12491
12492 case "$crosscompile" in
12493 ''|[nN]*) crosscompile="$undef" ;;
12494 esac
12495
12496 case "$osname" in
12497 next|rhapsody|darwin) multiarch="$define" ;;
12498 esac
12499 case "$multiarch" in
12500 ''|[nN]*) multiarch="$undef" ;;
12501 esac
12502
12503 : check for alignment requirements
12504 echo " "
12505 case "$crosscompile$multiarch" in
12506 *$define*)
12507         $cat <<EOM
12508 You seem to be either cross-compiling or doing a multiarchitecture build,
12509 skipping the memory alignment check.
12510
12511 EOM
12512         case "$alignbytes" in
12513         '') alignbytes=8 ;;
12514         esac
12515         ;;
12516 *)
12517         case "$alignbytes" in
12518         '') echo "Checking alignment constraints..." >&4
12519                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12520                         $cat >try.c <<'EOCP'
12521 typedef long double NV;
12522 EOCP
12523                 else
12524                         $cat >try.c <<'EOCP'
12525 typedef double NV;
12526 EOCP
12527                 fi
12528                 $cat >>try.c <<'EOCP'
12529 #include <stdio.h>
12530 struct foobar {
12531         char foo;
12532         NV bar;
12533 } try_algn;
12534 int main()
12535 {
12536     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12537     return(0);
12538 }
12539 EOCP
12540                 set try
12541                 if eval $compile_ok; then
12542                         dflt=`./try`
12543                 else
12544                         dflt='8'
12545                         echo "(I can't seem to compile the test program...)"
12546                 fi
12547                 ;;
12548         *) dflt="$alignbytes"
12549                 ;;
12550         esac
12551         rp="Doubles must be aligned on a how-many-byte boundary?"
12552         . ./myread
12553         alignbytes="$ans"
12554         $rm -f try.c try
12555         ;;
12556 esac
12557
12558
12559 : set the base revision
12560 baserev=5.0
12561
12562 : check for ordering of bytes in a long
12563 echo " "
12564 case "$crosscompile$multiarch" in
12565 *$define*)
12566         $cat <<EOM
12567 You seem to be either cross-compiling or doing a multiarchitecture build,
12568 skipping the byteorder check.
12569
12570 EOM
12571         byteorder='0xffff'
12572         ;;
12573 *)
12574         case "$byteorder" in
12575         '')
12576                 $cat <<'EOM'
12577 In the following, larger digits indicate more significance.  A big-endian
12578 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12579 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12580 machines may have weird orders like 3412.  A Cray will report 87654321,
12581 an Alpha will report 12345678. If the test program works the default is
12582 probably right.
12583 I'm now running the test program...
12584 EOM
12585                 $cat >try.c <<'EOCP'
12586 #include <stdio.h>
12587 int main()
12588 {
12589         int i;
12590         union {
12591                 unsigned long l;
12592                 char c[sizeof(long)];
12593         } u;
12594
12595         if (sizeof(long) > 4)
12596                 u.l = (0x08070605L << 32) | 0x04030201L;
12597         else
12598                 u.l = 0x04030201L;
12599         for (i = 0; i < sizeof(long); i++)
12600                 printf("%c", u.c[i]+'0');
12601         printf("\n");
12602         exit(0);
12603 }
12604 EOCP
12605                 xxx_prompt=y
12606                 set try
12607                 if eval $compile && ./try > /dev/null; then
12608                         dflt=`./try`
12609                         case "$dflt" in
12610                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12611                                 echo "(The test program ran ok.)"
12612                                 echo "byteorder=$dflt"
12613                                 xxx_prompt=n
12614                         ;;
12615                         ????|????????) echo "(The test program ran ok.)" ;;
12616                         *) echo "(The test program didn't run right for some reason.)" ;;
12617                         esac
12618                 else
12619                         dflt='4321'
12620                         cat <<'EOM'
12621 (I can't seem to compile the test program.  Guessing big-endian...)
12622 EOM
12623                 fi
12624                 case "$xxx_prompt" in
12625                 y)
12626                         rp="What is the order of bytes in a long?"
12627                         . ./myread
12628                         byteorder="$ans"
12629                         ;;
12630                 *)      byteorder=$dflt
12631                         ;;
12632                 esac
12633                 ;;
12634         esac
12635         $rm -f try.c try
12636         ;;
12637 esac
12638
12639
12640 : how do we catenate cpp tokens here?
12641 echo " "
12642 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12643 $cat >cpp_stuff.c <<'EOCP'
12644 #define RCAT(a,b)a/**/b
12645 #define ACAT(a,b)a ## b
12646 RCAT(Rei,ser)
12647 ACAT(Cir,cus)
12648 EOCP
12649 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12650 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12651         echo "Oh!  Smells like ANSI's been here." >&4
12652         echo "We can catify or stringify, separately or together!"
12653         cpp_stuff=42
12654 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12655         echo "Ah, yes!  The good old days!" >&4
12656         echo "However, in the good old days we don't know how to stringify and"
12657         echo "catify at the same time."
12658         cpp_stuff=1
12659 else
12660         $cat >&4 <<EOM
12661 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12662 to have to edit the values of CAT[2-5] in config.h...
12663 EOM
12664         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12665 fi
12666 $rm -f cpp_stuff.*
12667
12668 : see if this is a db.h system
12669 set db.h i_db
12670 eval $inhdr
12671
12672 case "$i_db" in
12673 $define)
12674         : Check db version.
12675         echo " "
12676         echo "Checking Berkeley DB version ..." >&4
12677         $cat >try.c <<EOCP
12678 #$d_const HASCONST
12679 #ifndef HASCONST
12680 #define const
12681 #endif
12682 #include <sys/types.h>
12683 #include <stdio.h>
12684 #include <db.h>
12685 int main()
12686 {
12687 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12688     int Major, Minor, Patch ;
12689     unsigned long Version ;
12690     (void)db_version(&Major, &Minor, &Patch) ;
12691     printf("You have Berkeley DB Version 2 or greater\n");
12692
12693     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12694                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12695     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12696                 Major, Minor, Patch) ;
12697
12698     /* check that db.h & libdb are compatible */
12699     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12700         printf("db.h and libdb are incompatible\n") ;
12701         exit(3);        
12702     }
12703
12704     printf("db.h and libdb are compatible\n") ;
12705
12706     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12707                 + DB_VERSION_PATCH ;
12708
12709     /* needs to be >= 2.3.4 */
12710     if (Version < 2003004) {
12711     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12712         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12713         exit(2);        
12714     }
12715
12716     exit(0);
12717 #else
12718 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12719     printf("You have Berkeley DB Version 1\n");
12720     exit(0);    /* DB version < 2: the coast is clear. */
12721 #else
12722     exit(1);    /* <db.h> not Berkeley DB? */
12723 #endif
12724 #endif
12725 }
12726 EOCP
12727         set try
12728         if eval $compile_ok && ./try; then
12729                 echo 'Looks OK.' >&4
12730         else
12731                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12732                 i_db=$undef
12733                 case " $libs " in
12734                 *"-ldb "*)
12735                         : Remove db from list of libraries to use
12736                         echo "Removing unusable -ldb from library list" >&4
12737                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12738                         shift
12739                         libs="$*"
12740                         echo "libs = $libs" >&4
12741                         ;;
12742                 esac
12743         fi
12744         $rm -f try.*
12745         ;;
12746 esac
12747
12748 case "$i_db" in
12749 define)
12750         : Check the return type needed for hash 
12751         echo " "
12752         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12753         $cat >try.c <<EOCP
12754 #$d_const HASCONST
12755 #ifndef HASCONST
12756 #define const
12757 #endif
12758 #include <sys/types.h>
12759 #include <db.h>
12760
12761 #ifndef DB_VERSION_MAJOR
12762 u_int32_t hash_cb (ptr, size)
12763 const void *ptr;
12764 size_t size;
12765 {
12766 }
12767 HASHINFO info;
12768 int main()
12769 {
12770         info.hash = hash_cb;
12771 }
12772 #endif
12773 EOCP
12774         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12775                 if $contains warning try.out >>/dev/null 2>&1 ; then
12776                         db_hashtype='int'
12777                 else
12778                         db_hashtype='u_int32_t'
12779                 fi
12780         else
12781                 : XXX Maybe we should just give up here.
12782                 db_hashtype=u_int32_t
12783                 $cat try.out >&4
12784                 echo "Help:  I can't seem to compile the db test program." >&4
12785                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12786         fi
12787         $rm -f try.*
12788         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12789         ;;
12790 *)      db_hashtype=u_int32_t
12791         ;;
12792 esac
12793 case "$i_db" in
12794 define)
12795         : Check the return type needed for prefix 
12796         echo " "
12797         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12798         cat >try.c <<EOCP
12799 #$d_const HASCONST
12800 #ifndef HASCONST
12801 #define const
12802 #endif
12803 #include <sys/types.h>
12804 #include <db.h>
12805
12806 #ifndef DB_VERSION_MAJOR
12807 size_t prefix_cb (key1, key2)
12808 const DBT *key1;
12809 const DBT *key2;
12810 {
12811 }
12812 BTREEINFO info;
12813 int main()
12814 {
12815         info.prefix = prefix_cb;
12816 }
12817 #endif
12818 EOCP
12819         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12820                 if $contains warning try.out >>/dev/null 2>&1 ; then
12821                         db_prefixtype='int'
12822                 else
12823                         db_prefixtype='size_t'
12824                 fi
12825         else
12826                 db_prefixtype='size_t'
12827                 : XXX Maybe we should just give up here.
12828                 $cat try.out >&4
12829                 echo "Help:  I can't seem to compile the db test program." >&4
12830                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12831         fi
12832         $rm -f try.*
12833         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12834         ;;
12835 *)      db_prefixtype='size_t'
12836         ;;
12837 esac
12838
12839 : check for void type
12840 echo " "
12841 echo "Checking to see how well your C compiler groks the void type..." >&4
12842 case "$voidflags" in
12843 '')
12844         $cat >try.c <<'EOCP'
12845 #if TRY & 1
12846 void sub() {
12847 #else
12848 sub() {
12849 #endif
12850         extern void moo();      /* function returning void */
12851         void (*goo)();          /* ptr to func returning void */
12852 #if TRY & 8
12853         void *hue;              /* generic ptr */
12854 #endif
12855 #if TRY & 2
12856         void (*foo[10])();
12857 #endif
12858
12859 #if TRY & 4
12860         if(goo == moo) {
12861                 exit(0);
12862         }
12863 #endif
12864         exit(0);
12865 }
12866 int main() { sub(); }
12867 EOCP
12868         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12869                 voidflags=$defvoidused
12870         echo "Good.  It appears to support void to the level $package wants.">&4
12871                 if $contains warning .out >/dev/null 2>&1; then
12872                         echo "However, you might get some warnings that look like this:"
12873                         $cat .out
12874                 fi
12875         else
12876 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12877                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12878                         echo "It supports 1..."
12879                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12880                                 echo "It also supports 2..."
12881                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12882                                         voidflags=7
12883                                         echo "And it supports 4 but not 8 definitely."
12884                                 else
12885                                         echo "It doesn't support 4..."
12886                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12887                                                 voidflags=11
12888                                                 echo "But it supports 8."
12889                                         else
12890                                                 voidflags=3
12891                                                 echo "Neither does it support 8."
12892                                         fi
12893                                 fi
12894                         else
12895                                 echo "It does not support 2..."
12896                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12897                                         voidflags=13
12898                                         echo "But it supports 4 and 8."
12899                                 else
12900                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12901                                                 voidflags=5
12902                                                 echo "And it supports 4 but has not heard about 8."
12903                                         else
12904                                                 echo "However it supports 8 but not 4."
12905                                         fi
12906                                 fi
12907                         fi
12908                 else
12909                         echo "There is no support at all for void."
12910                         voidflags=0
12911                 fi
12912         fi
12913 esac
12914 case "$voidflags" in
12915 "$defvoidused") ;;
12916 *)      $cat >&4 <<'EOM'
12917   Support flag bits are:
12918     1: basic void declarations.
12919     2: arrays of pointers to functions returning void.
12920     4: operations between pointers to and addresses of void functions.
12921     8: generic void pointers.
12922 EOM
12923         dflt="$voidflags";
12924         rp="Your void support flags add up to what?"
12925         . ./myread
12926         voidflags="$ans"
12927         ;;
12928 esac
12929 $rm -f try.* .out
12930
12931
12932 : How can we generate normalized random numbers ?
12933 echo " "
12934 echo "Looking for a random number function..." >&4
12935 case "$randfunc" in
12936 '')
12937         if set drand48 val -f; eval $csym; $val; then
12938                 dflt="drand48"
12939                 echo "Good, found drand48()." >&4
12940         elif set random val -f; eval $csym; $val; then
12941                 dflt="random"
12942                 echo "OK, found random()." >&4
12943         else
12944                 dflt="rand"
12945                 echo "Yick, looks like I have to use rand()." >&4
12946         fi
12947         echo " "
12948         ;;
12949 *)
12950         dflt="$randfunc"
12951         ;;
12952 esac
12953 cont=true
12954
12955 case "$ccflags" in
12956 *-Dmy_rand=*|*-Dmy_srand=*)
12957         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12958         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12959         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12960         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12961         ;;
12962 esac
12963
12964 while $test "$cont"; do
12965         rp="Use which function to generate random numbers?"
12966         . ./myread
12967         if $test "$ans" = "$dflt"; then
12968                 : null
12969         else
12970                 randbits=''
12971         fi
12972         randfunc="$ans"
12973         if set $ans val -f; eval $csym; $val; then
12974                 cont=''
12975         else
12976                 dflt=y
12977                 rp="I cannot find function $ans. Use that name anyway?"
12978                 . ./myread
12979                 dflt=rand
12980                 case "$ans" in
12981                         [yY]*) cont='';;
12982                 esac
12983         fi
12984         case "$cont" in
12985         '')
12986                 case "$randfunc" in
12987                 drand48)
12988                         drand01="drand48()"
12989                         seedfunc="srand48"
12990                         randbits=48
12991                         randseedtype=long
12992                         ;;
12993                 rand|random)
12994                         case "$randbits" in
12995                         '')
12996 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12997                                 $cat >try.c <<EOCP
12998 #$i_unistd I_UNISTD
12999 #$i_stdlib I_STDLIB
13000 #include <stdio.h>
13001 #ifdef I_UNISTD
13002 #  include <unistd.h>
13003 #endif
13004 #ifdef I_STDLIB
13005 #  include <stdlib.h>
13006 #endif
13007 int main()
13008 {
13009         register int i;
13010         register unsigned long tmp;
13011         register unsigned long max = 0L;
13012
13013         for (i = 1000; i; i--) {
13014                 tmp = (unsigned long) $randfunc();
13015                 if (tmp > max) max = tmp;
13016         }
13017         for (i = 0; max; i++)
13018                 max /= 2;
13019         printf("%d\n",i);
13020 }
13021 EOCP
13022                                 set try
13023                                 if eval $compile_ok; then
13024                                         dflt=`try`
13025                                 else
13026                                         dflt='?'
13027                                         echo "(I can't seem to compile the test program...)"
13028                                 fi
13029                                 ;;
13030                         *)
13031                                 dflt="$randbits"
13032                                 ;;
13033                         esac
13034                         rp="How many bits does your $randfunc() function produce?"
13035                         . ./myread
13036                         randbits="$ans"
13037                         $rm -f try.c try
13038                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13039                         seedfunc="s$randfunc"
13040                         randseedtype=unsigned
13041                         ;;
13042                 *)
13043                         dflt="31"
13044                         rp="How many bits does your $randfunc() function produce?"
13045                         . ./myread
13046                         randbits="$ans"
13047                         seedfunc="s$randfunc"
13048                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13049                         if set $seedfunc val -f; eval $csym; $val; then
13050                                 echo "(Using $seedfunc() to seed random generator)"
13051                         else
13052                                 echo "(Warning: no $seedfunc() to seed random generator)"
13053                                 seedfunc=rand
13054                         fi
13055                         randseedtype=unsigned
13056                         ;;
13057                 esac
13058                 ;;
13059         esac
13060 done
13061
13062 echo " "
13063 echo "Determining whether or not we are on an EBCDIC system..." >&4
13064 $cat >tebcdic.c <<'EOM'
13065 int main()
13066 {
13067   if ('M'==0xd4) return 0;
13068   return 1;
13069 }
13070 EOM
13071
13072 val=$undef
13073 set tebcdic
13074 if eval $compile_ok; then
13075         if ./tebcdic; then
13076                 echo "You seem to speak EBCDIC." >&4
13077                 val="$define"
13078         else
13079                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13080         fi
13081 else
13082         echo "I'm unable to compile the test program." >&4
13083         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13084 fi
13085 $rm -f tebcdic.c tebcdic
13086 set ebcdic
13087 eval $setvar
13088
13089 echo " "
13090 $cat >&4 <<EOM
13091 Checking how to flush all pending stdio output...
13092 EOM
13093 # I only know how to find the first 32 possibly open files on SunOS.
13094 # See also hints/sunos_4_1.sh and util.c  --AD
13095 case "$osname" in
13096 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13097 esac
13098 $cat >>try.c <<EOCP
13099 #include <stdio.h>
13100 #$i_unistd I_UNISTD
13101 #ifdef I_UNISTD
13102 # include <unistd.h>
13103 #endif
13104 #$d_sysconf HAS_SYSCONF
13105 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13106 #ifdef HAS_STDIO_STREAM_ARRAY
13107 # define STDIO_STREAM_ARRAY $stdio_stream_array
13108 #endif
13109 int main() {
13110   FILE* p = fopen("try.out", "w");
13111 #ifdef TRY_FPUTC
13112   fputc('x', p);
13113 #else
13114 # ifdef TRY_FPRINTF
13115   fprintf(p, "x");
13116 # endif
13117 #endif
13118 #ifdef TRY_FFLUSH_NULL
13119   fflush(NULL);
13120 #endif
13121 #ifdef TRY_FFLUSH_ALL
13122   {
13123     long open_max = -1;
13124 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13125     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13126 # else
13127 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13128     open_max = sysconf(_SC_OPEN_MAX);
13129 #  else
13130 #   ifdef FOPEN_MAX
13131     open_max = FOPEN_MAX;
13132 #   else
13133 #    ifdef OPEN_MAX
13134     open_max = OPEN_MAX;
13135 #    else
13136 #     ifdef _NFILE
13137     open_max = _NFILE;
13138 #     endif
13139 #    endif
13140 #   endif
13141 #  endif
13142 # endif 
13143 # ifdef HAS_STDIO_STREAM_ARRAY
13144     if (open_max > 0) {
13145       long i;
13146       for (i = 0; i < open_max; i++)
13147             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13148                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13149                 STDIO_STREAM_ARRAY[i]._flag)
13150                 fflush(&STDIO_STREAM_ARRAY[i]);
13151     }   
13152   }
13153 # endif
13154 #endif
13155   _exit(42);
13156 }
13157 EOCP
13158 : first we have to find out how _not_ to flush
13159 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13160     output=''
13161     set try -DTRY_FPUTC
13162     if eval $compile; then
13163             $rm -f try.out
13164             ./try$exe_ext 2>/dev/null
13165             if $test ! -s try.out -a "X$?" = X42; then
13166                 output=-DTRY_FPUTC
13167             fi
13168     fi
13169     case "$output" in
13170     '')
13171             set try -DTRY_FPRINTF
13172             $rm -f try.out
13173             if eval $compile; then
13174                     $rm -f try.out
13175                     ./try$exe_ext 2>/dev/null
13176                     if $test ! -s try.out -a "X$?" = X42; then
13177                         output=-DTRY_FPRINTF
13178                     fi
13179             fi
13180         ;;
13181     esac
13182 fi
13183 : check for fflush NULL behaviour
13184 case "$fflushNULL" in
13185 '')     set try -DTRY_FFLUSH_NULL $output
13186         if eval $compile; then
13187                 $rm -f try.out
13188                 ./try$exe_ext 2>/dev/null
13189                 code="$?"
13190                 if $test -s try.out -a "X$code" = X42; then
13191                         fflushNULL="`$cat try.out`"
13192                 else
13193                         if $test "X$code" != X42; then
13194                                 $cat >&4 <<EOM
13195 (If this test failed, don't worry, we'll try another method shortly.)
13196 EOM
13197                         fi
13198                 fi
13199         fi
13200         $rm -f core try.core core.try.*
13201         case "$fflushNULL" in
13202         x)      $cat >&4 <<EOM
13203 Your fflush(NULL) works okay for output streams.
13204 Let's see if it clobbers input pipes...
13205 EOM
13206 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13207 # bug that improperly flushes the input end of pipes.  So we avoid the
13208 # autoflush on fork/system/exec support for now. :-(
13209 $cat >tryp.c <<EOCP
13210 #include <stdio.h>
13211 int
13212 main(int argc, char **argv)
13213 {
13214     char buf[1024];
13215     int i;
13216     char *bp = buf;
13217     while (1) {
13218         while ((i = getc(stdin)) != -1
13219                && (*bp++ = i) != '\n'
13220                && bp < &buf[1024])
13221         /* DO NOTHING */ ;
13222         *bp = '\0';
13223         fprintf(stdout, "%s", buf);
13224         fflush(NULL);
13225         if (i == -1)
13226             return 0;
13227         bp = buf;
13228     }
13229 }
13230 EOCP
13231                 fflushNULL="$define"
13232                 set tryp
13233                 if eval $compile; then
13234                     $rm -f tryp.out
13235                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13236                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13237                        $cat >&4 <<EOM
13238 fflush(NULL) seems to behave okay with input streams.
13239 EOM
13240                         fflushNULL="$define"
13241                     else
13242                         $cat >&4 <<EOM
13243 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13244 EOM
13245                         fflushNULL="$undef"
13246                     fi
13247                 fi
13248                 $rm -f core tryp.c tryp.core core.tryp.*
13249                 ;;
13250         '')     $cat >&4 <<EOM
13251 Your fflush(NULL) isn't working (contrary to ANSI C).
13252 EOM
13253                 fflushNULL="$undef"
13254                 ;;
13255         *)      $cat >&4 <<EOM
13256 Cannot figure out whether your fflush(NULL) works or not.
13257 I'm assuming it doesn't (contrary to ANSI C).
13258 EOM
13259                 fflushNULL="$undef"
13260                 ;;
13261         esac
13262         ;;
13263 $define|true|[yY]*)
13264         fflushNULL="$define"
13265         ;;
13266 *)
13267         fflushNULL="$undef"
13268         ;;
13269 esac
13270 : check explicit looping only if NULL did not work, and if the pipe
13271 : bug does not show up on an explicit flush too
13272 case "$fflushNULL" in
13273 "$undef")
13274         $cat >tryp.c <<EOCP
13275 #include <stdio.h>
13276 int
13277 main(int argc, char **argv)
13278 {
13279     char buf[1024];
13280     int i;
13281     char *bp = buf;
13282     while (1) {
13283         while ((i = getc(stdin)) != -1
13284                && (*bp++ = i) != '\n'
13285                && bp < &buf[1024])
13286         /* DO NOTHING */ ;
13287         *bp = '\0';
13288         fprintf(stdout, "%s", buf);
13289         fflush(stdin);
13290         if (i == -1)
13291             return 0;
13292         bp = buf;
13293     }
13294 }
13295 EOCP
13296         set tryp
13297         if eval $compile; then
13298             $rm -f tryp.out
13299             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13300             if cmp tryp.c tryp.out >/dev/null 2>&1; then
13301                $cat >&4 <<EOM
13302 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13303 EOM
13304                 : now check for fflushall behaviour
13305                 case "$fflushall" in
13306                 '')     set try -DTRY_FFLUSH_ALL $output
13307                         if eval $compile; then
13308                                 $cat >&4 <<EOM
13309 (Now testing the other method--but note that this also may fail.)
13310 EOM
13311                                 $rm -f try.out
13312                                 ./try$exe_ext 2>/dev/null
13313                                 if $test -s try.out -a "X$?" = X42; then
13314                                         fflushall="`$cat try.out`"
13315                                 fi
13316                         fi
13317                         $rm -f core try.core core.try.*
13318                         case "$fflushall" in
13319                         x)      $cat >&4 <<EOM
13320 Whew. Flushing explicitly all the stdio streams works.
13321 EOM
13322                                 fflushall="$define"
13323                                 ;;
13324                         '')     $cat >&4 <<EOM
13325 Sigh. Flushing explicitly all the stdio streams doesn't work.
13326 EOM
13327                                 fflushall="$undef"
13328                                 ;;
13329                         *)      $cat >&4 <<EOM
13330 Cannot figure out whether flushing stdio streams explicitly works or not.
13331 I'm assuming it doesn't.
13332 EOM
13333                                 fflushall="$undef"
13334                                 ;;
13335                         esac
13336                         ;;
13337                 "$define"|true|[yY]*)
13338                         fflushall="$define"
13339                         ;;
13340                 *)
13341                         fflushall="$undef"
13342                         ;;
13343                 esac
13344             else
13345                 $cat >&4 <<EOM
13346 All is futile.  Even fflush(stdin) clobbers input pipes!
13347 EOM
13348                 fflushall="$undef"
13349             fi
13350         else
13351             fflushall="$undef"
13352         fi
13353         $rm -f core tryp.c tryp.core core.tryp.*
13354         ;;
13355 *)      fflushall="$undef"
13356         ;;
13357 esac
13358
13359 case "$fflushNULL$fflushall" in
13360 undefundef)
13361         $cat <<EOM
13362 OK, I give up.  I cannot figure out how to flush pending stdio output.
13363 We won't be flushing handles at all before fork/exec/popen.
13364 EOM
13365         ;;
13366 esac
13367 $rm -f try.* try$exe_ext
13368
13369 : Store the full pathname to the ar program for use in the C program
13370 : Respect a hint or command line value for full_ar.
13371 case "$full_ar" in
13372 '') full_ar=$ar ;;
13373 esac
13374
13375 : Store the full pathname to the sed program for use in the C program
13376 full_sed=$sed
13377
13378 : see what type gids are declared as in the kernel
13379 echo " "
13380 echo "Looking for the type for group ids returned by getgid()."
13381 set gid_t gidtype xxx stdio.h sys/types.h
13382 eval $typedef
13383 case "$gidtype" in
13384 xxx)
13385         xxx=`./findhdr sys/user.h`
13386         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13387         case $1 in
13388         unsigned) dflt="$1 $2" ;;
13389         *) dflt="$1" ;;
13390         esac
13391         ;;
13392 *) dflt="$gidtype";;
13393 esac
13394 case "$gidtype" in
13395 gid_t) echo "gid_t found." ;;
13396 *)      rp="What is the type for group ids returned by getgid()?"
13397         . ./myread
13398         gidtype="$ans"
13399         ;;
13400 esac
13401
13402 echo " "
13403 case "$gidtype" in
13404 *_t) zzz="$gidtype"     ;;
13405 *)   zzz="gid"          ;;
13406 esac
13407 echo "Checking the size of $zzz..." >&4 
13408 cat > try.c <<EOCP
13409 #include <sys/types.h>
13410 #include <stdio.h>
13411 int main() {
13412     printf("%d\n", (int)sizeof($gidtype));
13413     exit(0);
13414 }
13415 EOCP
13416 set try
13417 if eval $compile_ok; then
13418         yyy=`./try`
13419         case "$yyy" in
13420         '')     gidsize=4
13421                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13422                 ;;
13423         *)      gidsize=$yyy
13424                 echo "Your $zzz is $gidsize bytes long."
13425                 ;;
13426         esac
13427 else
13428         gidsize=4
13429         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13430 fi
13431
13432
13433 echo " "
13434 case "$gidtype" in
13435 *_t) zzz="$gidtype"     ;;
13436 *)   zzz="gid"          ;;
13437 esac
13438 echo "Checking the sign of $zzz..." >&4 
13439 cat > try.c <<EOCP
13440 #include <sys/types.h>
13441 #include <stdio.h>
13442 int main() {
13443         $gidtype foo = -1;
13444         if (foo < 0)
13445                 printf("-1\n");
13446         else
13447                 printf("1\n");
13448 }
13449 EOCP
13450 set try
13451 if eval $compile; then
13452         yyy=`./try`
13453         case "$yyy" in
13454         '')     gidsign=1
13455                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13456                 ;;
13457         *)      gidsign=$yyy
13458                 case "$gidsign" in
13459                  1) echo "Your $zzz is unsigned." ;;
13460                 -1) echo "Your $zzz is signed."   ;;
13461                 esac
13462                 ;;
13463         esac
13464 else
13465         gidsign=1
13466         echo "(I can't compile the test program--guessing unsigned.)" >&4
13467 fi
13468
13469
13470 echo " "
13471
13472 if $test X"$quadtype" != X; then
13473
13474 echo "Checking how to print 64-bit integers..." >&4
13475
13476 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13477         $cat >try.c <<'EOCP'
13478 #include <sys/types.h>
13479 #include <stdio.h>
13480 int main() {
13481   int q = 12345678901;
13482   printf("%ld\n", q);
13483 }
13484 EOCP
13485         set try
13486         if eval $compile; then
13487                 yyy=`./try$exe_ext`
13488                 case "$yyy" in
13489                 12345678901)
13490                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13491                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13492                         echo "We will use %d."
13493                         ;;
13494                 esac
13495         fi
13496 fi
13497
13498 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13499         $cat >try.c <<'EOCP'
13500 #include <sys/types.h>
13501 #include <stdio.h>
13502 int main() {
13503   long q = 12345678901;
13504   printf("%ld\n", q);
13505 }
13506 EOCP
13507         set try
13508         if eval $compile; then
13509                 yyy=`./try$exe_ext`
13510                 case "$yyy" in
13511                 12345678901)
13512                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13513                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13514                         echo "We will use %ld."
13515                         ;;
13516                 esac
13517         fi
13518 fi
13519
13520 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13521         $cat >try.c <<'EOCP'
13522 #include <sys/types.h>
13523 #include <inttypes.h>
13524 #include <stdio.h>
13525 int main() {
13526   int64_t q = 12345678901;
13527   printf("%" PRId64 "\n", q);
13528 }
13529 EOCP
13530         set try
13531         if eval $compile; then
13532                 yyy=`./try$exe_ext`
13533                 case "$yyy" in
13534                 12345678901)
13535                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13536                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13537                         echo "We will use the C9X style."
13538                         ;;
13539                 esac
13540         fi
13541 fi
13542
13543 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13544         $cat >try.c <<'EOCP'
13545 #include <sys/types.h>
13546 #include <stdio.h>
13547 int main() {
13548   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13549   printf("%lld\n", q);
13550 }
13551 EOCP
13552         set try
13553         if eval $compile; then
13554                 yyy=`./try$exe_ext`
13555                 case "$yyy" in
13556                 12345678901)
13557                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13558                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13559                         echo "We will use the %lld style."
13560                         ;;
13561                 esac
13562         fi
13563 fi
13564
13565 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13566         $cat >try.c <<EOCP
13567 #include <sys/types.h>
13568 #include <stdio.h>
13569 int main() {
13570   $quadtype q = 12345678901;
13571   printf("%Ld\n", q);
13572 }
13573 EOCP
13574         set try
13575         if eval $compile; then
13576                 yyy=`./try$exe_ext`
13577                 case "$yyy" in
13578                 12345678901)
13579                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13580                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13581                         echo "We will use %Ld."
13582                         ;;
13583                 esac
13584         fi
13585 fi
13586
13587 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13588         $cat >try.c <<EOCP
13589 #include <sys/types.h>
13590 #include <stdio.h>
13591 int main() {
13592   $quadtype q = 12345678901;
13593   printf("%qd\n", q);
13594 }
13595 EOCP
13596         set try
13597         if eval $compile; then
13598                 yyy=`./try$exe_ext`
13599                 case "$yyy" in
13600                 12345678901)
13601                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13602                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13603                         echo "We will use %qd."
13604                         ;;
13605                 esac
13606         fi
13607 fi
13608
13609 if $test X"$sPRId64" = X; then
13610         echo "Cannot figure out how to print 64-bit integers." >&4
13611 fi
13612
13613 $rm -f try try.*
13614
13615 fi
13616
13617 case "$sPRId64" in
13618 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13619         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13620         ;;
13621 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13622         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13623         ;;
13624 esac
13625
13626
13627 echo " "
13628 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13629
13630 if $test X"$ivsize" = X8; then
13631         ivdformat="$sPRId64"
13632         uvuformat="$sPRIu64"
13633         uvoformat="$sPRIo64"
13634         uvxformat="$sPRIx64"
13635         uvXUformat="$sPRIXU64"
13636 else
13637         if $test X"$ivsize" = X"$longsize"; then
13638                 ivdformat='"ld"'
13639                 uvuformat='"lu"'
13640                 uvoformat='"lo"'
13641                 uvxformat='"lx"'
13642                 uvXUformat='"lX"'
13643         else
13644                 if $test X"$ivsize" = X"$intsize"; then
13645                         ivdformat='"d"'
13646                         uvuformat='"u"'
13647                         uvoformat='"o"'
13648                         uvxformat='"x"'
13649                         uvXUformat='"X"'
13650                 else
13651                         : far out
13652                         if $test X"$ivsize" = X"$shortsize"; then
13653                                 ivdformat='"hd"'
13654                                 uvuformat='"hu"'
13655                                 uvoformat='"ho"'
13656                                 uvxformat='"hx"'
13657                                 uvXUformat='"hX"'
13658                         fi
13659                 fi
13660         fi
13661 fi
13662
13663 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13664         nveformat="$sPRIeldbl"
13665         nvfformat="$sPRIfldbl"
13666         nvgformat="$sPRIgldbl"
13667         nvEUformat="$sPRIEUldbl"
13668         nvFUformat="$sPRIFUldbl"
13669         nvGUformat="$sPRIGUldbl"
13670 else
13671         nveformat='"e"'
13672         nvfformat='"f"'
13673         nvgformat='"g"'
13674         nvEUformat='"E"'
13675         nvFUformat='"F"'
13676         nvGUformat='"G"'
13677 fi
13678
13679 case "$ivdformat" in
13680 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13681     exit 1
13682     ;;
13683 esac
13684
13685
13686 echo " "
13687 $echo "Checking the format string to be used for gids..." >&4
13688
13689 case "$gidsign" in
13690 -1)     if $test X"$gidsize" = X"$ivsize"; then
13691                 gidformat="$ivdformat"
13692         else
13693                 if $test X"$gidsize" = X"$longsize"; then
13694                         gidformat='"ld"'
13695                 else
13696                         if $test X"$gidsize" = X"$intsize"; then
13697                                 gidformat='"d"'
13698                         else
13699                                 if $test X"$gidsize" = X"$shortsize"; then
13700                                         gidformat='"hd"'
13701                                 fi
13702                         fi
13703                 fi
13704         fi
13705         ;;
13706 *)      if $test X"$gidsize" = X"$uvsize"; then
13707                 gidformat="$uvuformat"
13708         else
13709                 if $test X"$gidsize" = X"$longsize"; then
13710                         gidformat='"lu"'
13711                 else
13712                         if $test X"$gidsize" = X"$intsize"; then
13713                                 gidformat='"u"'
13714                         else
13715                                 if $test X"$gidsize" = X"$shortsize"; then
13716                                         gidformat='"hu"'
13717                                 fi
13718                         fi
13719                 fi
13720         fi
13721         ;;
13722 esac
13723
13724 : see if getgroups exists
13725 set getgroups d_getgrps
13726 eval $inlibc
13727
13728 : see if setgroups exists
13729 set setgroups d_setgrps
13730 eval $inlibc
13731
13732
13733 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13734 echo " "
13735 case "$d_getgrps$d_setgrps" in
13736 *define*)
13737         case "$groupstype" in
13738         '') dflt="$gidtype" ;;
13739         *)  dflt="$groupstype" ;;
13740         esac
13741         $cat <<EOM
13742 What type of pointer is the second argument to getgroups() and setgroups()?
13743 Usually this is the same as group ids, $gidtype, but not always.
13744
13745 EOM
13746         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13747         . ./myread
13748         groupstype="$ans"
13749         ;;
13750 *)  groupstype="$gidtype";;
13751 esac
13752
13753 echo " "
13754 echo "Checking if your $make program sets \$(MAKE)..." >&4
13755 case "$make_set_make" in
13756 '')
13757         $sed 's/^X //' > testmake.mak << 'EOF'
13758 Xall:
13759 X       @echo 'maketemp="$(MAKE)"'
13760 EOF
13761         case "`$make -f testmake.mak 2>/dev/null`" in
13762         *maketemp=*) make_set_make='#' ;;
13763         *)      make_set_make="MAKE=$make" ;;
13764         esac
13765         $rm -f testmake.mak
13766         ;;
13767 esac
13768 case "$make_set_make" in
13769 '#') echo "Yup, it does.";;
13770 *) echo "Nope, it doesn't.";;
13771 esac
13772
13773 : see what type is used for mode_t
13774 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13775 set mode_t modetype int stdio.h sys/types.h
13776 eval $typedef_ask
13777
13778 : see if stdarg is available
13779 echo " "
13780 if $test `./findhdr stdarg.h`; then
13781         echo "<stdarg.h> found." >&4
13782         valstd="$define"
13783 else
13784         echo "<stdarg.h> NOT found." >&4
13785         valstd="$undef"
13786 fi
13787
13788 : see if varags is available
13789 echo " "
13790 if $test `./findhdr varargs.h`; then
13791         echo "<varargs.h> found." >&4
13792 else
13793         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13794 fi
13795
13796 : set up the varargs testing programs
13797 $cat > varargs.c <<EOP
13798 #ifdef I_STDARG
13799 #include <stdarg.h>
13800 #endif
13801 #ifdef I_VARARGS
13802 #include <varargs.h>
13803 #endif
13804
13805 #ifdef I_STDARG
13806 int f(char *p, ...)
13807 #else
13808 int f(va_alist)
13809 va_dcl
13810 #endif
13811 {
13812         va_list ap;
13813 #ifndef I_STDARG
13814         char *p;
13815 #endif
13816 #ifdef I_STDARG
13817         va_start(ap,p);
13818 #else
13819         va_start(ap);
13820         p = va_arg(ap, char *);
13821 #endif
13822         va_end(ap);
13823 }
13824 EOP
13825 $cat > varargs <<EOP
13826 $startsh
13827 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13828         echo "true"
13829 else
13830         echo "false"
13831 fi
13832 $rm -f varargs$_o
13833 EOP
13834 chmod +x varargs
13835
13836 : now check which varargs header should be included
13837 echo " "
13838 i_varhdr=''
13839 case "$valstd" in
13840 "$define")
13841         if `./varargs I_STDARG`; then
13842                 val='stdarg.h'
13843         elif `./varargs I_VARARGS`; then
13844                 val='varargs.h'
13845         fi
13846         ;;
13847 *)
13848         if `./varargs I_VARARGS`; then
13849                 val='varargs.h'
13850         fi
13851         ;;
13852 esac
13853 case "$val" in
13854 '')
13855 echo "I could not find the definition for va_dcl... You have problems..." >&4
13856         val="$undef"; set i_stdarg; eval $setvar
13857         val="$undef"; set i_varargs; eval $setvar
13858         ;;
13859 *) 
13860         set i_varhdr
13861         eval $setvar
13862         case "$i_varhdr" in
13863         stdarg.h)
13864                 val="$define"; set i_stdarg; eval $setvar
13865                 val="$undef"; set i_varargs; eval $setvar
13866                 ;;
13867         varargs.h)
13868                 val="$undef"; set i_stdarg; eval $setvar
13869                 val="$define"; set i_varargs; eval $setvar
13870                 ;;
13871         esac
13872         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13873 esac
13874 $rm -f varargs*
13875
13876 : see if we need va_copy
13877 echo " "
13878 case "$i_stdarg" in
13879 "$define")
13880         $cat >try.c <<EOCP
13881 #include <stdarg.h>
13882 #include <stdio.h>
13883 #$i_stdlib I_STDLIB
13884 #ifdef I_STDLIB
13885 #include <stdlib.h>
13886 #endif
13887 #include <signal.h>
13888
13889 int
13890 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13891 {
13892   return vfprintf(f, fmt, *valp);
13893 }
13894  
13895 int    
13896 myvfprintf(FILE *f, const  char *fmt, va_list val)
13897 {
13898   return ivfprintf(f, fmt, &val);
13899 }
13900       
13901 int
13902 myprintf(char *fmt, ...) 
13903 {
13904   va_list val;
13905   va_start(val, fmt);
13906   return myvfprintf(stdout, fmt, val); 
13907 }         
13908
13909 int
13910 main(int ac, char **av)
13911 {
13912   signal(SIGSEGV, exit);
13913
13914   myprintf("%s%cs all right, then\n", "that", '\'');                            
13915   exit(0);      
13916 }
13917 EOCP
13918         set try
13919         if eval $compile && ./try 2>&1 >/dev/null; then
13920                 case "`./try`" in
13921                 "that's all right, then")
13922                         okay=yes
13923                         ;;
13924                 esac
13925         fi
13926         case "$okay" in
13927         yes)    echo "It seems that you don't need va_copy()." >&4
13928                 need_va_copy="$undef"
13929                 ;;
13930         *)      echo "It seems that va_copy() or similar will be needed." >&4
13931                 need_va_copy="$define"
13932                 ;;
13933         esac
13934         $rm -f try.* core core.* *.core *.core.*
13935         ;;
13936 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13937         ;;
13938 esac
13939
13940 : define a fucntion to check prototypes
13941 $cat > protochk <<EOSH
13942 $startsh
13943 cc="$cc"
13944 optimize="$optimize"
13945 ccflags="$ccflags"
13946 prototype="$prototype"
13947 define="$define"
13948 rm=$rm
13949 EOSH
13950
13951 $cat >> protochk <<'EOSH'
13952
13953 $rm -f try.c
13954 foo="$1"
13955 shift
13956 while test $# -ge 2; do
13957         case "$1" in
13958                 $define) echo "#include <$2>" >> try.c ;;
13959                 literal) echo "$2" >> try.c ;;
13960         esac
13961     shift 2
13962 done
13963 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13964 cat >> try.c <<'EOCP'
13965 #ifdef CAN_PROTOTYPE
13966 #define _(args) args
13967 #else
13968 #define _(args) ()
13969 #endif
13970 EOCP
13971 echo "$foo" >> try.c
13972 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13973 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13974 status=$?
13975 $rm -f try.[co]
13976 exit $status
13977 EOSH
13978 chmod +x protochk
13979 $eunicefix protochk
13980
13981 : see what type is used for size_t
13982 rp="What is the type used for the length parameter for string functions?"
13983 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13984 eval $typedef_ask
13985
13986 : check for type of arguments to gethostbyaddr. 
13987 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13988         case "$d_gethbyaddr" in
13989         $define)
13990                 $cat <<EOM
13991
13992 Checking to see what type of arguments are accepted by gethostbyaddr().
13993 EOM
13994                 hdrs="$define sys/types.h
13995                         $d_socket sys/socket.h 
13996                         $i_niin netinet/in.h 
13997                         $i_netdb netdb.h
13998                         $i_unistd unistd.h"
13999                 : The first arg can 'char *' or 'void *'
14000                 : The second arg is some of integral type
14001                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14002                         for yyy in size_t long int; do
14003                                 case "$netdb_host_type" in
14004                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14005                                         if ./protochk "$try" $hdrs; then
14006                                                 echo "Your system accepts $xxx for the first arg."
14007                                                 echo "...and $yyy for the second arg."
14008                                                 netdb_host_type="$xxx"
14009                                                 netdb_hlen_type="$yyy"
14010                                         fi
14011                                         ;;
14012                                 esac
14013                         done
14014                 done
14015                 : In case none of those worked, prompt the user.
14016                 case "$netdb_host_type" in
14017                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14018                         dflt='char *'
14019                         . ./myread
14020                         netdb_host_type=$ans
14021                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14022                         dflt="$sizetype"
14023                         . ./myread
14024                         netdb_hlen_type=$ans
14025                         ;;
14026                 esac
14027                 ;;
14028         *)      : no gethostbyaddr, so pick harmless defaults
14029                 netdb_host_type='char *'
14030                 netdb_hlen_type="$sizetype"
14031                 ;;
14032         esac
14033         # Remove the "const" if needed. -- but then we'll have a 
14034         # prototype clash!
14035         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14036 fi
14037
14038 : check for type of argument to gethostbyname. 
14039 if test "X$netdb_name_type" = X ; then
14040         case "$d_gethbyname" in
14041         $define)
14042                 $cat <<EOM
14043
14044 Checking to see what type of argument is accepted by gethostbyname().
14045 EOM
14046                 hdrs="$define sys/types.h
14047                         $d_socket sys/socket.h 
14048                         $i_niin netinet/in.h 
14049                         $i_netdb netdb.h
14050                         $i_unistd unistd.h"
14051                 for xxx in "const char *" "char *"; do
14052                         case "$netdb_name_type" in
14053                         '')     try="extern struct hostent *gethostbyname($xxx);"
14054                                 if ./protochk "$try" $hdrs; then
14055                                         echo "Your system accepts $xxx."
14056                                         netdb_name_type="$xxx"
14057                                 fi
14058                                 ;;
14059                         esac
14060                 done
14061                 : In case none of those worked, prompt the user.
14062                 case "$netdb_name_type" in
14063                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14064                         dflt='char *'
14065                         . ./myread
14066                         netdb_name_type=$ans
14067                         ;;
14068                 esac
14069                 ;;
14070         *)      : no gethostbyname, so pick harmless default
14071                 netdb_name_type='char *'
14072                 ;;
14073         esac
14074 fi
14075
14076 : check for type of 1st argument to getnetbyaddr. 
14077 if test "X$netdb_net_type" = X ; then
14078         case "$d_getnbyaddr" in
14079         $define)
14080                 $cat <<EOM
14081
14082 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14083 EOM
14084                 hdrs="$define sys/types.h
14085                         $d_socket sys/socket.h 
14086                         $i_niin netinet/in.h 
14087                         $i_netdb netdb.h
14088                         $i_unistd unistd.h"
14089                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14090                         case "$netdb_net_type" in
14091                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14092                                 if ./protochk "$try" $hdrs; then
14093                                         echo "Your system accepts $xxx."
14094                                         netdb_net_type="$xxx"
14095                                 fi
14096                                 ;;
14097                         esac
14098                 done
14099                 : In case none of those worked, prompt the user.
14100                 case "$netdb_net_type" in
14101                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14102                         dflt='long'
14103                         . ./myread
14104                         netdb_net_type=$ans
14105                         ;;
14106                 esac
14107                 ;;
14108         *)      : no getnetbyaddr, so pick harmless default
14109                 netdb_net_type='long'
14110                 ;;
14111         esac
14112 fi
14113 : locate the preferred pager for this system
14114 case "$pager" in
14115 '')
14116         dflt=''
14117         case "$pg" in
14118         /*) dflt=$pg;;
14119         [a-zA-Z]:/*) dflt=$pg;;
14120         esac
14121         case "$more" in
14122         /*) dflt=$more;;
14123         [a-zA-Z]:/*) dflt=$more;;
14124         esac
14125         case "$less" in
14126         /*) dflt=$less;;
14127         [a-zA-Z]:/*) dflt=$less;;
14128         esac
14129         case "$dflt" in
14130         '') dflt=/usr/ucb/more;;
14131         esac
14132         ;;
14133 *) dflt="$pager";;
14134 esac
14135 echo " "
14136 fn=f/
14137 rp='What pager is used on your system?'
14138 . ./getfile
14139 pager="$ans"
14140
14141 : see what type pids are declared as in the kernel
14142 rp="What is the type of process ids on this system?"
14143 set pid_t pidtype int stdio.h sys/types.h
14144 eval $typedef_ask
14145
14146 : Find earliest binary compatible site_perl subdirectory perl can use.
14147 case "$bincompat5005" in
14148 "$define") xs_apiversion='5.005' ;;
14149 *) xs_apiversion=$version ;;   # The current site_perl version.
14150 esac
14151 : Find earliest pure perl site_perl subdirectory perl can use.
14152 : The versioned directories started at 5.005.
14153 pm_apiversion='5.005'
14154
14155 : check for length of pointer
14156 echo " "
14157 case "$ptrsize" in
14158 '')
14159         echo "Checking to see how big your pointers are..." >&4
14160         if test "$voidflags" -gt 7; then
14161                 echo '#define VOID_PTR char *' > try.c
14162         else
14163                 echo '#define VOID_PTR void *' > try.c
14164         fi
14165         $cat >>try.c <<'EOCP'
14166 #include <stdio.h>
14167 int main()
14168 {
14169     printf("%d\n", (int)sizeof(VOID_PTR));
14170     exit(0);
14171 }
14172 EOCP
14173         set try
14174         if eval $compile_ok; then
14175                 ptrsize=`./try`
14176                 echo "Your pointers are $ptrsize bytes long."
14177         else
14178                 dflt='4'
14179                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
14180                 rp="What is the size of a pointer (in bytes)?"
14181                 . ./myread
14182                 ptrsize="$ans"
14183         fi
14184         ;;
14185 esac
14186 $rm -f try.c try
14187
14188 : see if ar generates random libraries by itself
14189 echo " "
14190 echo "Checking how to generate random libraries on your machine..." >&4
14191 echo 'int bar1() { return bar2(); }' > bar1.c
14192 echo 'int bar2() { return 2; }' > bar2.c
14193 $cat > foo.c <<'EOP'
14194 int main() { printf("%d\n", bar1()); exit(0); }
14195 EOP
14196 $cc $ccflags -c bar1.c >/dev/null 2>&1
14197 $cc $ccflags -c bar2.c >/dev/null 2>&1
14198 $cc $ccflags -c foo.c >/dev/null 2>&1
14199 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14200 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14201         ./foobar >/dev/null 2>&1; then
14202         echo "$ar appears to generate random libraries itself."
14203         orderlib=false
14204         ranlib=":"
14205 elif $ar ts bar$_a >/dev/null 2>&1 &&
14206         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14207         ./foobar >/dev/null 2>&1; then
14208                 echo "a table of contents needs to be added with '$ar ts'."
14209                 orderlib=false
14210                 ranlib="$ar ts"
14211 else
14212         case "$ranlib" in
14213         :) ranlib='';;
14214         '')
14215                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14216                 $test -f $ranlib || ranlib=''
14217                 ;;
14218         esac
14219         if $test -n "$ranlib"; then
14220                 echo "your system has '$ranlib'; we'll use that."
14221                 orderlib=false
14222         else
14223                 echo "your system doesn't seem to support random libraries"
14224                 echo "so we'll use lorder and tsort to order the libraries."
14225                 orderlib=true
14226                 ranlib=":"
14227         fi
14228 fi
14229 $rm -f foo* bar* 
14230
14231 : check for type of arguments to select. 
14232 case "$selecttype" in
14233 '') case "$d_select" in
14234         $define)
14235                 echo " "
14236                 $cat <<EOM
14237 Checking to see what type of arguments are accepted by select().
14238 EOM
14239                 hdrs="$define sys/types.h
14240                         $i_systime sys/time.h 
14241                         $i_sysselct sys/select.h
14242                         $d_socket sys/socket.h"
14243                 : The first arg can be int, unsigned, or size_t
14244                 : The last arg may or may not be 'const'
14245                 val=''
14246                 : void pointer has been seen but using that
14247                 : breaks the selectminbits test
14248                 for xxx in 'fd_set *' 'int *'; do
14249                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14250                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14251                                         case "$val" in
14252                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14253                                                 if ./protochk "$try" $hdrs; then
14254                                                         echo "Your system accepts $xxx."
14255                                                         val="$xxx"
14256                                                 fi
14257                                                 ;;
14258                                         esac
14259                                 done
14260                         done
14261                 done
14262                 case "$val" in
14263                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14264                         case "$d_fd_set" in
14265                                 $define) dflt="fd_set *" ;;
14266                                 *)              dflt="int *" ;;
14267                         esac
14268                         . ./myread
14269                         val=$ans
14270                         ;;
14271                 esac
14272                 selecttype="$val"
14273                 ;;
14274         *)      : no select, so pick a harmless default
14275                 selecttype='int *'
14276                 ;;
14277         esac
14278         ;;
14279 esac
14280
14281 : check for the select 'width'
14282 case "$selectminbits" in
14283 '') case "$d_select" in
14284         $define)
14285                 $cat <<EOM
14286
14287 Checking to see on how many bits at a time your select() operates...
14288 EOM
14289                 $cat >try.c <<EOCP
14290 #include <sys/types.h>
14291 #$i_time I_TIME
14292 #$i_systime I_SYS_TIME
14293 #$i_systimek I_SYS_TIME_KERNEL
14294 #ifdef I_TIME
14295 #   include <time.h>
14296 #endif
14297 #ifdef I_SYS_TIME
14298 #   ifdef I_SYS_TIME_KERNEL
14299 #       define KERNEL
14300 #   endif
14301 #   include <sys/time.h>
14302 #   ifdef I_SYS_TIME_KERNEL
14303 #       undef KERNEL
14304 #   endif
14305 #endif
14306 #$i_sysselct I_SYS_SELECT
14307 #ifdef I_SYS_SELECT
14308 #include <sys/select.h>
14309 #endif
14310 #$d_socket HAS_SOCKET
14311 #ifdef HAS_SOCKET
14312 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14313 #endif
14314 #include <stdio.h>
14315 $selecttype b;
14316 #define S sizeof(*(b))
14317 #define MINBITS 64
14318 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14319 #define NBITS  (NBYTES * 8)
14320 int main() {
14321     char s[NBYTES];
14322     struct timeval t;
14323     int i;
14324     FILE* fp;
14325     int fd;
14326
14327     fclose(stdin);
14328     fp = fopen("try.c", "r");
14329     if (fp == 0)
14330       exit(1);
14331     fd = fileno(fp);
14332     if (fd < 0)
14333       exit(2);
14334     b = ($selecttype)s;
14335     for (i = 0; i < NBITS; i++)
14336         FD_SET(i, b);
14337     t.tv_sec  = 0;
14338     t.tv_usec = 0;
14339     select(fd + 1, b, 0, 0, &t);
14340     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14341     printf("%d\n", i + 1);
14342     return 0;
14343 }
14344 EOCP
14345                 set try
14346                 if eval $compile_ok; then
14347                         selectminbits=`./try`
14348                         case "$selectminbits" in
14349                         '')     cat >&4 <<EOM
14350 Cannot figure out on how many bits at a time your select() operates.
14351 I'll play safe and guess it is 32 bits.
14352 EOM
14353                                 selectminbits=32
14354                                 bits="32 bits"
14355                                 ;;
14356                         1)      bits="1 bit" ;;
14357                         *)      bits="$selectminbits bits" ;;
14358                         esac
14359                         echo "Your select() operates on $bits at a time." >&4
14360                 else
14361                         rp='What is the minimum number of bits your select() operates on?'
14362                         case "$byteorder" in
14363                         1234|12345678)  dflt=32 ;;
14364                         *)              dflt=1  ;;
14365                         esac
14366                         . ./myread
14367                         val=$ans
14368                         selectminbits="$val"
14369                 fi
14370                 $rm -f try.* try
14371                 ;;
14372         *)      : no select, so pick a harmless default
14373                 selectminbits='32'
14374                 ;;
14375         esac
14376         ;;
14377 esac
14378
14379 : Trace out the files included by signal.h, then look for SIGxxx names.
14380 : Remove SIGARRAYSIZE used by HPUX.
14381 : Remove SIGSTKSIZE used by Linux.
14382 : Remove SIGSTKSZ used by Posix.
14383 : Remove SIGTYP void lines used by OS2.
14384 : Some cpps, like os390, dont give the file name anywhere
14385 if [ "X$fieldn" = X ]; then
14386         : Just make some guesses.  We check them later.
14387         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14388 else
14389         xxx=`echo '#include <signal.h>' |
14390         $cppstdin $cppminus $cppflags 2>/dev/null |
14391         $grep '^[       ]*#.*include' | 
14392         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14393 fi
14394 : Check this list of files to be sure we have parsed the cpp output ok.
14395 : This will also avoid potentially non-existent files, such 
14396 : as ../foo/bar.h
14397 xxxfiles=''
14398 for xx in $xxx /dev/null ; do
14399         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14400 done
14401 : If we have found no files, at least try signal.h
14402 case "$xxxfiles" in
14403 '')     xxxfiles=`./findhdr signal.h` ;;
14404 esac
14405 xxx=`awk '
14406 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14407         print substr($2, 4, 20)
14408 }
14409 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14410         print substr($3, 4, 20)
14411 }' $xxxfiles`
14412 : Append some common names just in case the awk scan failed.
14413 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14414 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14415 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14416 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14417 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14418
14419 : generate a few handy files for later
14420 $cat > signal.c <<'EOCP'
14421 #include <sys/types.h>
14422 #include <signal.h>
14423 #include <stdio.h>
14424 int main() {
14425
14426 /* Strange style to avoid deeply-nested #if/#else/#endif */
14427 #ifndef NSIG
14428 #  ifdef _NSIG
14429 #    define NSIG (_NSIG)
14430 #  endif
14431 #endif
14432
14433 #ifndef NSIG
14434 #  ifdef SIGMAX
14435 #    define NSIG (SIGMAX+1)
14436 #  endif
14437 #endif
14438
14439 #ifndef NSIG
14440 #  ifdef SIG_MAX
14441 #    define NSIG (SIG_MAX+1)
14442 #  endif
14443 #endif
14444
14445 #ifndef NSIG
14446 #  ifdef MAXSIG
14447 #    define NSIG (MAXSIG+1)
14448 #  endif
14449 #endif
14450
14451 #ifndef NSIG
14452 #  ifdef MAX_SIG
14453 #    define NSIG (MAX_SIG+1)
14454 #  endif
14455 #endif
14456
14457 #ifndef NSIG
14458 #  ifdef SIGARRAYSIZE
14459 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14460 #  endif
14461 #endif
14462
14463 #ifndef NSIG
14464 #  ifdef _sys_nsig
14465 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
14466 #  endif
14467 #endif
14468
14469 /* Default to some arbitrary number that's big enough to get most
14470    of the common signals.
14471 */
14472 #ifndef NSIG
14473 #    define NSIG 50
14474 #endif
14475
14476 printf("NSIG %d\n", NSIG);
14477
14478 #ifndef JUST_NSIG
14479
14480 EOCP
14481
14482 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14483 {
14484         printf "#ifdef SIG"; printf $1; printf "\n"
14485         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14486         printf $1; printf ");\n"
14487         printf "#endif\n"
14488 }
14489 END {
14490         printf "#endif /* JUST_NSIG */\n";
14491         printf "exit(0);\n}\n";
14492 }
14493 ' >>signal.c
14494 $cat >signal.awk <<'EOP'
14495 BEGIN { ndups = 0 }
14496 $1 ~ /^NSIG$/ { nsig = $2 }
14497 ($1 !~ /^NSIG$/) && (NF == 2) {
14498     if ($2 > maxsig) { maxsig = $2 }
14499     if (sig_name[$2]) {
14500         dup_name[ndups] = $1
14501         dup_num[ndups] = $2
14502         ndups++ 
14503     }
14504     else {
14505         sig_name[$2] = $1
14506         sig_num[$2] = $2
14507     }
14508 }
14509 END { 
14510     if (nsig == 0) {
14511         nsig = maxsig + 1
14512     }
14513     printf("NSIG %d\n", nsig);
14514     for (n = 1; n < nsig; n++) {
14515         if (sig_name[n]) {
14516             printf("%s %d\n", sig_name[n], sig_num[n])
14517         }
14518         else {
14519             printf("NUM%d %d\n", n, n) 
14520         }
14521     }
14522     for (n = 0; n < ndups; n++) {
14523         printf("%s %d\n", dup_name[n], dup_num[n])
14524     }
14525 }
14526 EOP
14527 $cat >signal_cmd <<EOS
14528 $startsh
14529 if $test -s signal.lst; then
14530     echo "Using your existing signal.lst file"
14531         exit 0
14532 fi
14533 xxx="$xxx"
14534 EOS
14535 $cat >>signal_cmd <<'EOS'
14536
14537 set signal
14538 if eval $compile_ok; then
14539         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14540 else
14541         echo "(I can't seem be able to compile the whole test program)" >&4
14542         echo "(I'll try it in little pieces.)" >&4
14543         set signal -DJUST_NSIG
14544         if eval $compile_ok; then
14545                 ./signal$_exe > signal.nsg
14546                 $cat signal.nsg
14547         else
14548                 echo "I can't seem to figure out how many signals you have." >&4
14549                 echo "Guessing 50." >&4
14550                 echo 'NSIG 50' > signal.nsg
14551         fi
14552         : Now look at all the signal names, one at a time.
14553         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14554                 $cat > signal.c <<EOCP
14555 #include <sys/types.h>
14556 #include <signal.h>
14557 #include <stdio.h>
14558 int main() {
14559 printf("$xx %d\n", SIG${xx});
14560 return 0;
14561 }
14562 EOCP
14563                 set signal
14564                 if eval $compile; then
14565                         echo "SIG${xx} found."
14566                         ./signal$_exe  >> signal.ls1
14567                 else
14568                         echo "SIG${xx} NOT found."
14569                 fi
14570         done
14571         if $test -s signal.ls1; then
14572                 $cat signal.nsg signal.ls1 |
14573                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14574         fi
14575
14576 fi
14577 if $test -s signal.lst; then
14578         :
14579 else
14580         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14581         echo 'kill -l' >signal
14582         set X `csh -f <signal`
14583         $rm -f signal
14584         shift
14585         case $# in
14586         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14587         esac
14588         echo $@ | $tr ' ' $trnl | \
14589             $awk '{ printf "%s %d\n", $1, ++s; }
14590                   END { printf "NSIG %d\n", ++s }' >signal.lst
14591 fi
14592 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14593 EOS
14594 chmod a+x signal_cmd
14595 $eunicefix signal_cmd
14596
14597 : generate list of signal names
14598 echo " "
14599 case "$sig_name_init" in
14600 '') doinit=yes ;;
14601 *)  case "$sig_num_init" in
14602     ''|*,*) doinit=yes ;;
14603     esac ;;
14604 esac
14605 case "$doinit" in
14606 yes)
14607         echo "Generating a list of signal names and numbers..." >&4
14608         . ./signal_cmd
14609         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14610         sig_name=`$awk 'BEGIN { printf "ZERO " }
14611                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14612         sig_num=`$awk  'BEGIN { printf "0 " }
14613                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14614         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14615                              !/^NSIG/   { printf "\"%s\", ", $1 }
14616                              END        { printf "0\n" }' signal.lst`
14617         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14618                              !/^NSIG/   { printf "%d, ", $2}
14619                              END        { printf "0\n"}' signal.lst`
14620         ;;
14621 esac
14622 echo "The following $sig_count signals are available:"
14623 echo " "
14624 echo $sig_name | $awk \
14625 'BEGIN { linelen = 0 }
14626 {
14627         for (i = 1; i <= NF; i++) {
14628                 name = "SIG" $i " "
14629                 linelen = linelen + length(name)
14630                 if (linelen > 70) {
14631                         printf "\n"
14632                         linelen = length(name)
14633                 }
14634                 printf "%s", name
14635         }
14636         printf "\n"
14637 }'
14638 sig_size=`echo $sig_name | awk '{print NF}'`
14639 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14640
14641 echo " "
14642 case "$sizetype" in
14643 *_t) zzz="$sizetype"    ;;
14644 *)   zzz="filesize"     ;;
14645 esac
14646 echo "Checking the size of $zzz..." >&4 
14647 cat > try.c <<EOCP
14648 #include <sys/types.h>
14649 #include <stdio.h>
14650 int main() {
14651     printf("%d\n", (int)sizeof($sizetype));
14652     exit(0);
14653 }
14654 EOCP
14655 set try
14656 if eval $compile_ok; then
14657         yyy=`./try`
14658         case "$yyy" in
14659         '')     sizesize=4
14660                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14661                 ;;
14662         *)      sizesize=$yyy
14663                 echo "Your $zzz size is $sizesize bytes."
14664                 ;;
14665         esac
14666 else
14667         sizesize=4
14668         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14669 fi
14670
14671
14672 : check for socklen_t
14673 echo " "
14674 echo "Checking to see if you have socklen_t..." >&4
14675 $cat >try.c <<EOCP
14676 #include <sys/types.h>
14677 #$d_socket HAS_SOCKET
14678 #ifdef HAS_SOCKET
14679 #include <sys/socket.h>
14680 #endif
14681 int main() { socklen_t x = 16; }
14682 EOCP
14683 set try
14684 if eval $compile; then
14685         val="$define"
14686         echo "You have socklen_t."
14687 else
14688         val="$undef"
14689         echo "You do not have socklen_t."
14690         case "$sizetype" in
14691         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14692         esac
14693 fi
14694 $rm -f try try.*
14695 set d_socklen_t
14696 eval $setvar
14697
14698 : see if this is a socks.h system
14699 set socks.h i_socks
14700 eval $inhdr
14701
14702 : check for type of the size argument to socket calls
14703 case "$d_socket" in
14704 "$define")
14705         $cat <<EOM
14706
14707 Checking to see what type is the last argument of accept().
14708 EOM
14709         yyy=''
14710         case "$d_socklen_t" in
14711         "$define") yyy="$yyy socklen_t"
14712         esac
14713         yyy="$yyy $sizetype int long unsigned"
14714         for xxx in $yyy; do
14715                 case "$socksizetype" in
14716                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14717                         case "$usesocks" in
14718                         "$define")
14719                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14720                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14721                                         socksizetype="$xxx"
14722                                 fi
14723                                 ;;
14724                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
14725                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
14726                                         socksizetype="$xxx"
14727                                 fi
14728                                 ;;
14729                         esac
14730                         ;;
14731                 esac
14732         done
14733 : In case none of those worked, prompt the user.
14734         case "$socksizetype" in
14735         '')     rp='What is the type for socket address structure sizes?'
14736                 dflt='int'
14737                 . ./myread
14738                 socksizetype=$ans
14739                 ;;
14740         esac
14741         ;;
14742 *)      : no sockets, so pick relatively harmless default
14743         socksizetype='int'
14744         ;;
14745 esac
14746
14747 : see what type is used for signed size_t
14748 set ssize_t ssizetype int stdio.h sys/types.h
14749 eval $typedef
14750 dflt="$ssizetype"
14751 $cat > ssize.c <<EOM
14752 #include <stdio.h>
14753 #include <sys/types.h>
14754 #define Size_t $sizetype
14755 #define SSize_t $dflt
14756 int main()
14757 {
14758         if (sizeof(Size_t) == sizeof(SSize_t))
14759                 printf("$dflt\n");
14760         else if (sizeof(Size_t) == sizeof(int))
14761                 printf("int\n");
14762         else 
14763                 printf("long\n");
14764         exit(0);
14765 }
14766 EOM
14767 echo " "
14768 set ssize
14769 if eval $compile_ok && ./ssize > /dev/null; then
14770         ssizetype=`./ssize`
14771         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14772 else
14773         $cat >&4 <<EOM
14774 Help! I can't compile and run the ssize_t test program: please enlighten me!
14775 (This is probably a misconfiguration in your system or libraries, and
14776 you really ought to fix it.  Still, I'll try anyway.)
14777
14778 I need a type that is the same size as $sizetype, but is guaranteed to
14779 be signed.  Common values are ssize_t, int and long.
14780
14781 EOM
14782         rp="What signed type is the same size as $sizetype?"
14783         . ./myread
14784         ssizetype="$ans"
14785 fi
14786 $rm -f ssize ssize.*
14787
14788 : see what type of char stdio uses.
14789 echo " "
14790 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14791 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14792         echo "Your stdio uses unsigned chars." >&4
14793         stdchar="unsigned char"
14794 else
14795         echo "Your stdio uses signed chars." >&4
14796         stdchar="char"
14797 fi
14798 $rm -f stdioh
14799
14800
14801
14802 : see if time exists
14803 echo " "
14804 if test "X$d_time" = X -o X"$timetype" = X; then
14805     if set time val -f d_time; eval $csym; $val; then
14806                 echo 'time() found.' >&4
14807                 val="$define"
14808                 rp="What is the type returned by time() on this system?"
14809                 set time_t timetype long stdio.h sys/types.h
14810                 eval $typedef_ask
14811     else
14812                 echo 'time() not found, hope that will do.' >&4
14813                 val="$undef"
14814                 timetype='int';
14815     fi
14816     set d_time
14817     eval $setvar
14818 fi
14819
14820 : see what type uids are declared as in the kernel
14821 echo " "
14822 echo "Looking for the type for user ids returned by getuid()."
14823 set uid_t uidtype xxx stdio.h sys/types.h
14824 eval $typedef
14825 case "$uidtype" in
14826 xxx)
14827         xxx=`./findhdr sys/user.h`
14828         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14829         case $1 in
14830         unsigned) dflt="$1 $2" ;;
14831         *) dflt="$1" ;;
14832         esac
14833         ;;
14834 *) dflt="$uidtype";;
14835 esac
14836 case "$uidtype" in
14837 uid_t)  echo "uid_t found." ;;
14838 *)      rp="What is the type for user ids returned by getuid()?"
14839         . ./myread
14840         uidtype="$ans"
14841         ;;
14842 esac
14843
14844 echo " "
14845 case "$uidtype" in
14846 *_t) zzz="$uidtype"     ;;
14847 *)   zzz="uid"          ;;
14848 esac
14849 echo "Checking the size of $zzz..." >&4 
14850 cat > try.c <<EOCP
14851 #include <sys/types.h>
14852 #include <stdio.h>
14853 int main() {
14854     printf("%d\n", (int)sizeof($uidtype));
14855     exit(0);
14856 }
14857 EOCP
14858 set try
14859 if eval $compile_ok; then
14860         yyy=`./try`
14861         case "$yyy" in
14862         '')     uidsize=4
14863                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14864                 ;;
14865         *)      uidsize=$yyy
14866                 echo "Your $zzz is $uidsize bytes long."
14867                 ;;
14868         esac
14869 else
14870         uidsize=4
14871         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14872 fi
14873
14874 echo " "
14875 case "$uidtype" in
14876 *_t) zzz="$uidtype"     ;;
14877 *)   zzz="uid"          ;;
14878 esac
14879 echo "Checking the sign of $zzz..." >&4
14880 cat > try.c <<EOCP
14881 #include <sys/types.h>
14882 #include <stdio.h>
14883 int main() {
14884         $uidtype foo = -1;
14885         if (foo < 0)
14886                 printf("-1\n");
14887         else
14888                 printf("1\n");
14889 }
14890 EOCP
14891 set try
14892 if eval $compile; then
14893         yyy=`./try`
14894         case "$yyy" in
14895         '')     uidsign=1
14896                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14897                 ;;
14898         *)      uidsign=$yyy
14899                 case "$uidsign" in
14900                  1) echo "Your $zzz is unsigned." ;;
14901                 -1) echo "Your $zzz is signed."   ;;
14902                 esac
14903                 ;;
14904         esac
14905 else
14906         uidsign=1
14907         echo "(I can't compile the test program--guessing unsigned.)" >&4
14908 fi
14909
14910
14911
14912 echo " "
14913 $echo "Checking the format string to be used for uids..." >&4
14914
14915 case "$uidsign" in
14916 -1)     if $test X"$uidsize" = X"$ivsize"; then
14917                 uidformat="$ivdformat"
14918         else
14919                 if $test X"$uidsize" = X"$longsize"; then
14920                         uidformat='"ld"'
14921                 else
14922                         if $test X"$uidsize" = X"$intsize"; then
14923                                 uidformat='"d"'
14924                         else
14925                                 if $test X"$uidsize" = X"$shortsize"; then
14926                                         uidformat='"hd"'
14927                                 fi
14928                         fi
14929                 fi
14930         fi
14931         ;;
14932 *)      if $test X"$uidsize" = X"$uvsize"; then
14933                 uidformat="$uvuformat"
14934         else
14935                 if $test X"$uidsize" = X"$longsize"; then
14936                         uidformat='"lu"'
14937                 else
14938                         if $test X"$uidsize" = X"$intsize"; then
14939                                 uidformat='"u"'
14940                         else
14941                                 if $test X"$uidsize" = X"$shortsize"; then
14942                                         uidformat='"hu"'
14943                                 fi
14944                         fi
14945                 fi
14946         fi
14947         ;;
14948 esac
14949
14950 : determine compiler compiler
14951 case "$yacc" in
14952 '')
14953         dflt=yacc;;
14954 *)
14955         dflt="$yacc";;
14956 esac
14957 echo " "
14958 comp='yacc'
14959 if $test -f "$byacc"; then
14960         dflt="$byacc"
14961         comp="byacc or $comp"
14962 fi
14963 if $test -f "$bison"; then
14964         comp="$comp or bison -y"
14965 fi
14966 rp="Which compiler compiler ($comp) shall I use?"
14967 . ./myread
14968 yacc="$ans"
14969 case "$yacc" in
14970 *bis*)
14971         case "$yacc" in
14972         *-y*) ;;
14973         *)
14974                 yacc="$yacc -y"
14975                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
14976                 ;;
14977         esac
14978         ;;
14979 esac
14980
14981 : see if dbm.h is available
14982 : see if dbmclose exists
14983 set dbmclose d_dbmclose
14984 eval $inlibc
14985
14986 case "$d_dbmclose" in
14987 $define)
14988         set dbm.h i_dbm
14989         eval $inhdr
14990         case "$i_dbm" in
14991         $define)
14992                 val="$undef"
14993                 set i_rpcsvcdbm
14994                 eval $setvar
14995                 ;;
14996         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14997                 eval $inhdr
14998                 ;;
14999         esac
15000         ;;
15001 *)      echo "We won't be including <dbm.h>"
15002         val="$undef"
15003         set i_dbm
15004         eval $setvar
15005         val="$undef"
15006         set i_rpcsvcdbm
15007         eval $setvar
15008         ;;
15009 esac
15010
15011 : see if this is a sys/file.h system
15012 val=''
15013 set sys/file.h val
15014 eval $inhdr
15015
15016 : do we need to include sys/file.h ?
15017 case "$val" in
15018 "$define")
15019         echo " "
15020         if $h_sysfile; then
15021                 val="$define"
15022                 echo "We'll be including <sys/file.h>." >&4
15023         else
15024                 val="$undef"
15025                 echo "We won't be including <sys/file.h>." >&4
15026         fi
15027         ;;
15028 *)
15029         h_sysfile=false
15030         ;;
15031 esac
15032 set i_sysfile
15033 eval $setvar
15034
15035 : see if fcntl.h is there
15036 val=''
15037 set fcntl.h val
15038 eval $inhdr
15039
15040 : see if we can include fcntl.h
15041 case "$val" in
15042 "$define")
15043         echo " "
15044         if $h_fcntl; then
15045                 val="$define"
15046                 echo "We'll be including <fcntl.h>." >&4
15047         else
15048                 val="$undef"
15049                 if $h_sysfile; then
15050         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15051                 else
15052                         echo "We won't be including <fcntl.h>." >&4
15053                 fi
15054         fi
15055         ;;
15056 *)
15057         h_fcntl=false
15058         val="$undef"
15059         ;;
15060 esac
15061 set i_fcntl
15062 eval $setvar
15063
15064 : see if this is a iconv.h system
15065 set iconv.h i_iconv
15066 eval $inhdr
15067
15068 : see if this is a ieeefp.h system
15069 set ieeefp.h i_ieeefp
15070 eval $inhdr
15071
15072 : see if this is a libutil.h system
15073 set libutil.h i_libutil
15074 eval $inhdr
15075
15076 : see if locale.h is available
15077 set locale.h i_locale
15078 eval $inhdr
15079
15080 : see if mach cthreads are available
15081 if test "X$usethreads" = "X$define"; then
15082         set mach/cthreads.h i_machcthr
15083         eval $inhdr
15084 else
15085         i_machcthr="$undef"
15086 fi
15087
15088
15089
15090 : see if this is a math.h system
15091 set math.h i_math
15092 eval $inhdr
15093
15094 : see if this is a mntent.h system
15095 set mntent.h i_mntent
15096 eval $inhdr
15097
15098 : see if ndbm.h is available
15099 set ndbm.h t_ndbm
15100 eval $inhdr
15101 case "$t_ndbm" in
15102 $define)
15103         : see if dbm_open exists
15104         set dbm_open d_dbm_open
15105         eval $inlibc
15106         case "$d_dbm_open" in
15107         $undef)
15108                 t_ndbm="$undef"
15109                 echo "We won't be including <ndbm.h>"
15110                 ;;
15111         esac
15112         ;;
15113 esac
15114 val="$t_ndbm"
15115 set i_ndbm
15116 eval $setvar
15117
15118 : see if net/errno.h is available
15119 val=''
15120 set net/errno.h val
15121 eval $inhdr
15122
15123 : Unfortunately, it causes problems on some systems.  Arrgh.
15124 case "$val" in
15125 $define)
15126         cat > try.c <<'EOM'
15127 #include <stdio.h>
15128 #include <errno.h>
15129 #include <net/errno.h>
15130 int func()
15131 {
15132         return ENOTSOCK;
15133 }
15134 EOM
15135         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15136                 echo "We'll be including <net/errno.h>." >&4
15137         else
15138                 echo "We won't be including <net/errno.h>." >&4
15139                 val="$undef"
15140         fi
15141         $rm -f try.* try
15142         ;;
15143 esac
15144 set i_neterrno
15145 eval $setvar
15146
15147 : see if netinet/tcp.h is available
15148 set netinet/tcp.h i_netinettcp
15149 eval $inhdr
15150
15151 : see if this is a poll.h system
15152 set poll.h i_poll
15153 eval $inhdr
15154
15155 : see if this is a prot.h system
15156 set prot.h i_prot
15157 eval $inhdr
15158
15159 echo " "
15160 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15161 $cat <<'EOSH' > Cppsym.know
15162 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15163 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15164 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15165 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15166 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15167 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15168 bull c cadmus clipper CMU COFF COMPILER_VERSION
15169 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15170 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15171 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15172 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15173 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15174 H3050R H3050RX hbullx20 hcx host_mips
15175 hp200 hp300 hp700 HP700 hp800 hp9000
15176 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15177 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15178 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15179 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15180 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15181 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15182 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15183 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15184 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15185 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15186 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15187 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15188 MATH_HAS_NO_SIDE_EFFECTS
15189 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15190 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15191 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15192 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15193 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15194 NetBSD news1500 news1700 news1800 news1900 news3700
15195 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15196 ns32016 ns32332 ns32k nsc32000
15197 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15198 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15199 pc532 pdp11 PGC PIC plexus PORTAR posix
15200 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15201 POSIX_C_SOURCE POSIX_SOURCE POWER
15202 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15203 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15204 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15205 sony sony_news sonyrisc sparc sparclite spectrum
15206 stardent stdc STDC_EXT stratos sun sun3 sun386
15207 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15208 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15209 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15210 sysV68 sysV88 Tek4132 Tek4300 titan
15211 TM3200 TM5400 TM5600
15212 tower tower32 tower32_200 tower32_600 tower32_700
15213 tower32_800 tower32_850 tss
15214 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15215 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15216 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15217 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15218 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15219 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15220 z8000
15221 EOSH
15222 # Maybe put other stuff here too.
15223 cat <<EOSH >>Cppsym.know
15224 $osname
15225 EOSH
15226 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15227 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15228 $cat Cppsym.know > Cppsym.c
15229 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15230 $rm -f Cppsym.a Cppsym.b Cppsym.c
15231 cat <<EOSH > Cppsym
15232 $startsh
15233 if $test \$# -gt 0; then
15234     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15235     if $test -s Cppsym.got; then
15236         $rm -f Cppsym.got
15237         exit 0
15238     fi
15239     $rm -f Cppsym.got
15240     exit 1
15241 else
15242     $tr " " "$trnl" | ./Cppsym.try
15243     exit 0
15244 fi
15245 EOSH
15246 chmod +x Cppsym
15247 $eunicefix Cppsym
15248 cat <<EOSH > Cppsym.try
15249 $startsh
15250 cat <<'EOCP' > try.c
15251 #include <stdio.h>
15252 int main() {
15253 EOCP
15254 $awk \\
15255 EOSH
15256 cat <<'EOSH' >> Cppsym.try
15257 'length($1) > 0 {
15258     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
15259     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
15260     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
15261     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
15262 }'       >> try.c
15263 echo '}' >> try.c
15264 EOSH
15265 cat <<EOSH >> Cppsym.try
15266 ccflags="$ccflags"
15267 case "$osname-$gccversion" in
15268 irix-) ccflags="\$ccflags -woff 1178" ;;
15269 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15270 esac
15271 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15272 EOSH
15273 chmod +x Cppsym.try
15274 $eunicefix Cppsym.try
15275 ./Cppsym < Cppsym.know > Cppsym.true
15276 : now check the C compiler for additional symbols
15277 postprocess_cc_v=''
15278 case "$osname" in
15279 aix) postprocess_cc_v="|$tr , ' '" ;;
15280 esac
15281 $cat >ccsym <<EOS
15282 $startsh
15283 $cat >tmp.c <<EOF
15284 extern int foo;
15285 EOF
15286 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15287 do
15288         case "\$i" in
15289         -D*) echo "\$i" | $sed 's/^-D//';;
15290         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15291         esac
15292 done
15293 $rm -f try.c
15294 EOS
15295 postprocess_cc_v=''
15296 chmod +x ccsym
15297 $eunicefix ccsym
15298 ./ccsym > ccsym1.raw
15299 if $test -s ccsym1.raw; then
15300        $sort ccsym1.raw | $uniq >ccsym.raw
15301 else
15302        mv ccsym1.raw ccsym.raw
15303 fi
15304
15305 $awk '/\=/ { print $0; next }
15306         { print $0"=1" }' ccsym.raw >ccsym.list
15307 $awk '/\=/ { print $0; next }
15308         { print $0"=1" }' Cppsym.true >ccsym.true
15309 $comm -13 ccsym.true ccsym.list >ccsym.own
15310 $comm -12 ccsym.true ccsym.list >ccsym.com
15311 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15312 also=''
15313 if $test -z ccsym.raw; then
15314         echo "Your C compiler doesn't seem to define any symbols!" >&4
15315         echo " "
15316         echo "However, your C preprocessor defines the following symbols:"
15317         $cat Cppsym.true
15318         ccsymbols=''
15319         cppsymbols=`$cat Cppsym.true`
15320         cppsymbols=`echo $cppsymbols`
15321         cppccsymbols="$cppsymbols"
15322 else
15323         if $test -s ccsym.com; then
15324                 echo "Your C compiler and pre-processor define these symbols:"
15325                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15326                 also='also '
15327                 symbols='ones'
15328                 cppccsymbols=`$cat ccsym.com`
15329                 cppccsymbols=`echo $cppccsymbols`
15330                 $test "$silent" || sleep 1
15331         fi
15332         if $test -s ccsym.cpp; then
15333                 $test "$also" && echo " "
15334                 echo "Your C pre-processor ${also}defines the following symbols:"
15335                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15336                 also='further '
15337                 cppsymbols=`$cat ccsym.cpp`
15338                 cppsymbols=`echo $cppsymbols`
15339                 $test "$silent" || sleep 1
15340         fi
15341         if $test -s ccsym.own; then
15342                 $test "$also" && echo " "
15343                 echo "Your C compiler ${also}defines the following cpp symbols:"
15344                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15345                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15346                 ccsymbols=`$cat ccsym.own`
15347                 ccsymbols=`echo $ccsymbols`
15348                 $test "$silent" || sleep 1
15349         fi
15350 fi
15351 $rm -f ccsym* Cppsym.*
15352
15353 : see if this is a termio system
15354 val="$undef"
15355 val2="$undef"
15356 val3="$undef"
15357 if $test `./findhdr termios.h`; then
15358         set tcsetattr i_termios
15359         eval $inlibc
15360         val3="$i_termios"
15361 fi
15362 echo " "
15363 case "$val3" in
15364 "$define") echo "You have POSIX termios.h... good!" >&4;;
15365 *) if ./Cppsym pyr; then
15366                 case "`/bin/universe`" in
15367                 ucb) if $test `./findhdr sgtty.h`; then
15368                                 val2="$define"
15369                                 echo "<sgtty.h> found." >&4
15370                         else
15371                                 echo "System is pyramid with BSD universe."
15372                                 echo "<sgtty.h> not found--you could have problems." >&4
15373                         fi;;
15374                 *) if $test `./findhdr termio.h`; then
15375                                 val="$define"
15376                                 echo "<termio.h> found." >&4
15377                         else
15378                                 echo "System is pyramid with USG universe."
15379                                 echo "<termio.h> not found--you could have problems." >&4
15380                         fi;;
15381                 esac
15382         elif ./usg; then
15383                 if $test `./findhdr termio.h`; then
15384                         echo "<termio.h> found." >&4
15385                         val="$define"
15386                 elif $test `./findhdr sgtty.h`; then
15387                         echo "<sgtty.h> found." >&4
15388                         val2="$define"
15389                 else
15390 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15391                 fi
15392         else
15393                 if $test `./findhdr sgtty.h`; then
15394                         echo "<sgtty.h> found." >&4
15395                         val2="$define"
15396                 elif $test `./findhdr termio.h`; then
15397                         echo "<termio.h> found." >&4
15398                         val="$define"
15399                 else
15400 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15401                 fi
15402         fi;;
15403 esac
15404 set i_termio; eval $setvar
15405 val=$val2; set i_sgtty; eval $setvar
15406 val=$val3; set i_termios; eval $setvar
15407
15408 : see if this is a shadow.h system
15409 set shadow.h i_shadow
15410 eval $inhdr
15411
15412 : see if stddef is available
15413 set stddef.h i_stddef
15414 eval $inhdr
15415
15416 : see if this is a sunmath.h system
15417 set sunmath.h i_sunmath
15418 eval $inhdr
15419
15420 : see if sys/access.h is available
15421 set sys/access.h i_sysaccess
15422 eval $inhdr
15423
15424 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15425 set sys/filio.h i_sysfilio
15426 eval $inhdr
15427 echo " "
15428 if $test `./findhdr sys/ioctl.h`; then
15429         val="$define"
15430         echo '<sys/ioctl.h> found.' >&4
15431 else
15432         val="$undef"
15433         if $test $i_sysfilio = "$define"; then
15434             echo '<sys/ioctl.h> NOT found.' >&4
15435         else
15436                 $test $i_sgtty = "$define" && xxx="sgtty.h"
15437                 $test $i_termio = "$define" && xxx="termio.h"
15438                 $test $i_termios = "$define" && xxx="termios.h"
15439 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15440         fi
15441 fi
15442 set i_sysioctl
15443 eval $setvar
15444
15445 : see if socket ioctl defs are in sys/sockio.h
15446 echo " "
15447 xxx=`./findhdr sys/sockio.h`
15448 if $test "$xxx"; then
15449         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
15450                 val="$define"
15451                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
15452         else
15453                 val="$undef"
15454                 echo "No socket ioctls found in <sys/sockio.h>." >&4
15455         fi
15456 else
15457         val="$undef"
15458         $cat <<EOM
15459 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
15460 EOM
15461 fi
15462 set i_syssockio
15463 eval $setvar
15464
15465
15466 : see if this is a syslog.h system
15467 set syslog.h i_syslog
15468 eval $inhdr
15469
15470
15471 : see if this is a sys/mode.h system
15472 set sys/mode.h i_sysmode
15473 eval $inhdr
15474
15475 : see if sys/resource.h has to be included
15476 set sys/resource.h i_sysresrc
15477 eval $inhdr
15478
15479 : see if sys/security.h is available
15480 set sys/security.h i_syssecrt
15481 eval $inhdr
15482
15483 : see if this is a sys/statvfs.h system
15484 set sys/statvfs.h i_sysstatvfs
15485 eval $inhdr
15486
15487 : see if this is a sys/uio.h system
15488 set sys/uio.h i_sysuio
15489 eval $inhdr
15490
15491 : see if this is a sys/un.h system
15492 set sys/un.h i_sysun
15493 eval $inhdr
15494
15495
15496 : see if this is a sys/utsname.h system
15497 set sys/utsname.h i_sysutsname
15498 eval $inhdr
15499
15500 : see if this is a syswait system
15501 set sys/wait.h i_syswait
15502 eval $inhdr
15503
15504 : see if this is a ustat.h system
15505 set ustat.h i_ustat
15506 eval $inhdr
15507
15508 : see if this is an utime system
15509 set utime.h i_utime
15510 eval $inhdr
15511
15512 : see if this is a values.h system
15513 set values.h i_values
15514 eval $inhdr
15515
15516 : see if this is a vfork system
15517 case "$d_vfork" in
15518 "$define")
15519         set vfork.h i_vfork
15520         eval $inhdr
15521         ;;
15522 *)
15523         i_vfork="$undef"
15524         ;;
15525 esac
15526
15527 : see if gdbm.h is available
15528 set gdbm.h t_gdbm
15529 eval $inhdr
15530 case "$t_gdbm" in
15531 $define)
15532         : see if gdbm_open exists
15533         set gdbm_open d_gdbm_open
15534         eval $inlibc
15535         case "$d_gdbm_open" in
15536         $undef)
15537                 t_gdbm="$undef"
15538                 echo "We won't be including <gdbm.h>"
15539                 ;;
15540         esac
15541         ;;
15542 esac
15543 val="$t_gdbm"
15544 set i_gdbm
15545 eval $setvar
15546
15547 echo " "
15548 echo "Looking for extensions..." >&4
15549 : If we are using the old config.sh, known_extensions may contain
15550 : old or inaccurate or duplicate values.
15551 known_extensions=''
15552 nonxs_extensions=''
15553 : We do not use find because it might not be available.
15554 : We do not just use MANIFEST because the user may have dropped
15555 : some additional extensions into the source tree and expect them
15556 : to be built.
15557
15558 : Function to recursively find available extensions, ignoring DynaLoader
15559 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15560 find_extensions='
15561     for xxx in *; do
15562        case "$xxx" in
15563            DynaLoader|dynaload) ;;
15564            *)
15565            if $test -f $xxx/$xxx.xs; then
15566                known_extensions="$known_extensions $1$xxx";
15567            elif $test -f $xxx/Makefile.PL; then
15568                nonxs_extensions="$nonxs_extensions $1$xxx";
15569            else
15570                if $test -d $xxx -a $# -lt 10; then
15571                    set $1$xxx/ $*;
15572                    cd $xxx;
15573                    eval $find_extensions;
15574                    cd ..;
15575                    shift;
15576                fi;
15577            fi
15578            ;;
15579        esac;
15580     done'
15581 tdir=`pwd`
15582 cd $rsrc/ext
15583 set X
15584 shift
15585 eval $find_extensions
15586 set X $nonxs_extensions
15587 shift
15588 nonxs_extensions="$*"
15589 set X $known_extensions
15590 shift
15591 known_extensions="$*"
15592 cd $tdir
15593
15594 : Now see which are supported on this system.
15595 avail_ext=''
15596 for xxx in $known_extensions ; do
15597         case "$xxx" in
15598         DB_File|db_file)
15599                 case "$i_db" in
15600                 $define) avail_ext="$avail_ext $xxx" ;;
15601                 esac
15602                 ;;
15603         GDBM_File|gdbm_fil)
15604                 case "$i_gdbm" in 
15605                 $define) avail_ext="$avail_ext $xxx" ;;
15606                 esac
15607                 ;;
15608         NDBM_File|ndbm_fil)
15609                 case "$i_ndbm" in
15610                 $define)
15611                     case "$osname-$use64bitint" in
15612                     hpux-define)
15613                         case "$libs" in
15614                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15615                         esac
15616                         ;;
15617                     *) avail_ext="$avail_ext $xxx" ;;
15618                     esac
15619                     ;;
15620                 esac
15621                 ;;
15622         ODBM_File|odbm_fil) 
15623                 case "${i_dbm}${i_rpcsvcdbm}" in
15624                 *"${define}"*)
15625                     case "$osname-$use64bitint" in
15626                     hpux-define)
15627                         case "$libs" in
15628                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15629                         esac
15630                         ;;
15631                     *) avail_ext="$avail_ext $xxx" ;;
15632                     esac
15633                     ;;
15634                 esac
15635                 ;;
15636         POSIX|posix)
15637                 case "$useposix" in
15638                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15639                 esac
15640                 ;;
15641         Opcode|opcode)
15642                 case "$useopcode" in
15643                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15644                 esac
15645                 ;;
15646         Socket|socket)
15647                 case "$d_socket" in 
15648                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15649                 esac
15650                 ;;
15651         Sys/Syslog|sys/syslog)
15652                 : XXX syslog requires socket
15653                 case "$d_socket" in 
15654                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15655                 esac
15656                 ;;
15657         Thread|thread)
15658                 case "$usethreads" in 
15659                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15660                 esac
15661                 ;;
15662         IPC/SysV|ipc/sysv)
15663                 : XXX Do we need a useipcsysv variable here
15664                 case "${d_msg}${d_sem}${d_shm}" in 
15665                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15666                 esac
15667                 ;;
15668         *)      avail_ext="$avail_ext $xxx"
15669                 ;;
15670         esac
15671 done
15672
15673 set X $avail_ext
15674 shift
15675 avail_ext="$*"
15676
15677 : Now see which nonxs extensions are supported on this system.
15678 : For now assume all are.
15679 nonxs_ext=''
15680 for xxx in $nonxs_extensions ; do
15681         case "$xxx" in
15682         *)      nonxs_ext="$nonxs_ext $xxx"
15683                 ;;
15684         esac
15685 done
15686
15687 set X $nonxs_ext
15688 shift
15689 nonxs_ext="$*"
15690
15691 case $usedl in
15692 $define)
15693         $cat <<EOM
15694 A number of extensions are supplied with $package.  You may choose to
15695 compile these extensions for dynamic loading (the default), compile
15696 them into the $package executable (static loading), or not include
15697 them at all.  Answer "none" to include no extensions.
15698 Note that DynaLoader is always built and need not be mentioned here.
15699
15700 EOM
15701         case "$dynamic_ext" in
15702         '') dflt="$avail_ext" ;;
15703         *)      dflt="$dynamic_ext"
15704                 # Perhaps we are reusing an old out-of-date config.sh.
15705                 case "$hint" in
15706                 previous)
15707                         if test X"$dynamic_ext" != X"$avail_ext"; then
15708                                 $cat <<EOM
15709 NOTICE:  Your previous config.sh list may be incorrect. 
15710 The extensions now available to you are 
15711         ${avail_ext}
15712 but the default list from your previous config.sh is
15713         ${dynamic_ext} 
15714
15715 EOM
15716                         fi
15717                         ;;
15718                 esac
15719                 ;;
15720         esac
15721         case "$dflt" in
15722         '')     dflt=none;;
15723         esac
15724         rp="What extensions do you wish to load dynamically?"
15725         . ./myread
15726         case "$ans" in
15727         none) dynamic_ext=' ' ;;
15728         *) dynamic_ext="$ans" ;;
15729         esac
15730
15731         case "$static_ext" in
15732         '')
15733                 : Exclude those already listed in dynamic linking
15734                 dflt=''
15735                 for xxx in $avail_ext; do
15736                         case " $dynamic_ext " in
15737                         *" $xxx "*) ;;
15738                         *) dflt="$dflt $xxx" ;;
15739                         esac
15740                 done
15741                 set X $dflt
15742                 shift
15743                 dflt="$*"
15744                 ;;
15745         *)  dflt="$static_ext" 
15746                 ;;
15747         esac
15748
15749         case "$dflt" in
15750         '')     dflt=none;;
15751         esac
15752         rp="What extensions do you wish to load statically?"
15753         . ./myread
15754         case "$ans" in
15755         none) static_ext=' ' ;;
15756         *) static_ext="$ans" ;;
15757         esac
15758         ;;
15759 *)
15760         $cat <<EOM
15761 A number of extensions are supplied with $package.  Answer "none" 
15762 to include no extensions. 
15763 Note that DynaLoader is always built and need not be mentioned here.
15764
15765 EOM
15766         case "$static_ext" in
15767         '') dflt="$avail_ext" ;;
15768         *)      dflt="$static_ext"
15769                 # Perhaps we are reusing an old out-of-date config.sh.
15770                 case "$hint" in
15771                 previous)
15772                         if test X"$static_ext" != X"$avail_ext"; then
15773                                 $cat <<EOM
15774 NOTICE:  Your previous config.sh list may be incorrect. 
15775 The extensions now available to you are 
15776         ${avail_ext}
15777 but the default list from your previous config.sh is
15778         ${static_ext} 
15779
15780 EOM
15781                         fi
15782                         ;;
15783                 esac
15784                 ;;
15785         esac
15786         : Exclude those that are not xs extensions
15787         case "$dflt" in
15788         '')     dflt=none;;
15789         esac
15790         rp="What extensions do you wish to include?"
15791         . ./myread
15792         case "$ans" in
15793         none) static_ext=' ' ;;
15794         *) static_ext="$ans" ;;
15795         esac
15796         ;;
15797 esac
15798
15799 set X $dynamic_ext $static_ext $nonxs_ext
15800 shift
15801 extensions="$*"
15802
15803 : Remove libraries needed only for extensions
15804 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15805 : The exception is SunOS 4.x, which needs them.
15806 case "${osname}X${osvers}" in
15807 sunos*X4*)
15808     perllibs="$libs"
15809     ;;
15810 *) case "$usedl" in
15811     $define|true|[yY]*)
15812             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15813             shift
15814             perllibs="$*"
15815             ;;
15816     *)  perllibs="$libs"
15817             ;;
15818     esac
15819     ;;
15820 esac
15821
15822 : Remove build directory name from cppstdin so it can be used from
15823 : either the present location or the final installed location.
15824 echo " "
15825 : Get out of the UU directory to get correct path name.
15826 cd ..
15827 case "$cppstdin" in
15828 `pwd`/cppstdin)
15829         echo "Stripping down cppstdin path name"
15830         cppstdin=cppstdin
15831         ;;
15832 esac
15833 cd UU
15834
15835 : end of configuration questions
15836 echo " "
15837 echo "End of configuration questions."
15838 echo " "
15839
15840 : back to where it started
15841 if test -d ../UU; then
15842         cd ..
15843 fi
15844
15845 : configuration may be patched via a 'config.over' file
15846 if $test -f config.over; then
15847         echo " "
15848         dflt=y
15849         rp='I see a config.over file.  Do you wish to load it?'
15850         . UU/myread
15851         case "$ans" in
15852         n*) echo "OK, I'll ignore it.";;
15853         *)      . ./config.over
15854                 echo "Configuration override changes have been loaded."
15855                 ;;
15856         esac
15857 fi
15858
15859 : in case they want portability, strip down executable paths
15860 case "$d_portable" in
15861 "$define")
15862         echo " "
15863         echo "Stripping down executable paths..." >&4
15864         for file in $loclist $trylist; do
15865                 eval temp=\$$file
15866                 eval $file=`basename $temp`
15867         done
15868         ;;
15869 esac
15870
15871 : create config.sh file
15872 echo " "
15873 echo "Creating config.sh..." >&4
15874 $spitshell <<EOT >config.sh
15875 $startsh
15876 #
15877 # This file was produced by running the Configure script. It holds all the
15878 # definitions figured out by Configure. Should you modify one of these values,
15879 # do not forget to propagate your changes by running "Configure -der". You may
15880 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15881 #
15882
15883 # Package name      : $package
15884 # Source directory  : $src
15885 # Configuration time: $cf_time
15886 # Configured by     : $cf_by
15887 # Target system     : $myuname
15888
15889 Author='$Author'
15890 Date='$Date'
15891 Header='$Header'
15892 Id='$Id'
15893 Locker='$Locker'
15894 Log='$Log'
15895 Mcc='$Mcc'
15896 RCSfile='$RCSfile'
15897 Revision='$Revision'
15898 Source='$Source'
15899 State='$State'
15900 _a='$_a'
15901 _exe='$_exe'
15902 _o='$_o'
15903 afs='$afs'
15904 alignbytes='$alignbytes'
15905 ansi2knr='$ansi2knr'
15906 aphostname='$aphostname'
15907 api_revision='$api_revision'
15908 api_subversion='$api_subversion'
15909 api_version='$api_version'
15910 api_versionstring='$api_versionstring'
15911 ar='$ar'
15912 archlib='$archlib'
15913 archlibexp='$archlibexp'
15914 archname64='$archname64'
15915 archname='$archname'
15916 archobjs='$archobjs'
15917 awk='$awk'
15918 baserev='$baserev'
15919 bash='$bash'
15920 bin='$bin'
15921 bincompat5005='$bincompat5005'
15922 binexp='$binexp'
15923 bison='$bison'
15924 byacc='$byacc'
15925 byteorder='$byteorder'
15926 c='$c'
15927 castflags='$castflags'
15928 cat='$cat'
15929 cc='$cc'
15930 cccdlflags='$cccdlflags'
15931 ccdlflags='$ccdlflags'
15932 ccflags='$ccflags'
15933 ccflags_uselargefiles='$ccflags_uselargefiles'
15934 ccname='$ccname'
15935 ccsymbols='$ccsymbols'
15936 ccversion='$ccversion'
15937 cf_by='$cf_by'
15938 cf_email='$cf_email'
15939 cf_time='$cf_time'
15940 charsize='$charsize'
15941 chgrp='$chgrp'
15942 chmod='$chmod'
15943 chown='$chown'
15944 clocktype='$clocktype'
15945 comm='$comm'
15946 compress='$compress'
15947 contains='$contains'
15948 cp='$cp'
15949 cpio='$cpio'
15950 cpp='$cpp'
15951 cpp_stuff='$cpp_stuff'
15952 cppccsymbols='$cppccsymbols'
15953 cppflags='$cppflags'
15954 cpplast='$cpplast'
15955 cppminus='$cppminus'
15956 cpprun='$cpprun'
15957 cppstdin='$cppstdin'
15958 cppsymbols='$cppsymbols'
15959 crosscompile='$crosscompile'
15960 cryptlib='$cryptlib'
15961 csh='$csh'
15962 d_Gconvert='$d_Gconvert'
15963 d_PRIEUldbl='$d_PRIEUldbl'
15964 d_PRIFUldbl='$d_PRIFUldbl'
15965 d_PRIGUldbl='$d_PRIGUldbl'
15966 d_PRIXU64='$d_PRIXU64'
15967 d_PRId64='$d_PRId64'
15968 d_PRIeldbl='$d_PRIeldbl'
15969 d_PRIfldbl='$d_PRIfldbl'
15970 d_PRIgldbl='$d_PRIgldbl'
15971 d_PRIi64='$d_PRIi64'
15972 d_PRIo64='$d_PRIo64'
15973 d_PRIu64='$d_PRIu64'
15974 d_PRIx64='$d_PRIx64'
15975 d_SCNfldbl='$d_SCNfldbl'
15976 d__fwalk='$d__fwalk'
15977 d_access='$d_access'
15978 d_accessx='$d_accessx'
15979 d_alarm='$d_alarm'
15980 d_archlib='$d_archlib'
15981 d_atolf='$d_atolf'
15982 d_atoll='$d_atoll'
15983 d_attribut='$d_attribut'
15984 d_bcmp='$d_bcmp'
15985 d_bcopy='$d_bcopy'
15986 d_bincompat5005='$d_bincompat5005'
15987 d_bsd='$d_bsd'
15988 d_bsdgetpgrp='$d_bsdgetpgrp'
15989 d_bsdsetpgrp='$d_bsdsetpgrp'
15990 d_bzero='$d_bzero'
15991 d_casti32='$d_casti32'
15992 d_castneg='$d_castneg'
15993 d_charvspr='$d_charvspr'
15994 d_chown='$d_chown'
15995 d_chroot='$d_chroot'
15996 d_chsize='$d_chsize'
15997 d_closedir='$d_closedir'
15998 d_const='$d_const'
15999 d_crypt='$d_crypt'
16000 d_csh='$d_csh'
16001 d_cuserid='$d_cuserid'
16002 d_dbl_dig='$d_dbl_dig'
16003 d_difftime='$d_difftime'
16004 d_dirnamlen='$d_dirnamlen'
16005 d_dlerror='$d_dlerror'
16006 d_dlopen='$d_dlopen'
16007 d_dlsymun='$d_dlsymun'
16008 d_dosuid='$d_dosuid'
16009 d_drand48proto='$d_drand48proto'
16010 d_dup2='$d_dup2'
16011 d_eaccess='$d_eaccess'
16012 d_endgrent='$d_endgrent'
16013 d_endhent='$d_endhent'
16014 d_endnent='$d_endnent'
16015 d_endpent='$d_endpent'
16016 d_endpwent='$d_endpwent'
16017 d_endsent='$d_endsent'
16018 d_eofnblk='$d_eofnblk'
16019 d_eunice='$d_eunice'
16020 d_fchmod='$d_fchmod'
16021 d_fchown='$d_fchown'
16022 d_fcntl='$d_fcntl'
16023 d_fcntl_can_lock='$d_fcntl_can_lock'
16024 d_fd_macros='$d_fd_macros'
16025 d_fd_set='$d_fd_set'
16026 d_fds_bits='$d_fds_bits'
16027 d_fgetpos='$d_fgetpos'
16028 d_flexfnam='$d_flexfnam'
16029 d_flock='$d_flock'
16030 d_fork='$d_fork'
16031 d_fpathconf='$d_fpathconf'
16032 d_fpos64_t='$d_fpos64_t'
16033 d_frexpl='$d_frexpl'
16034 d_fs_data_s='$d_fs_data_s'
16035 d_fseeko='$d_fseeko'
16036 d_fsetpos='$d_fsetpos'
16037 d_fstatfs='$d_fstatfs'
16038 d_fstatvfs='$d_fstatvfs'
16039 d_fsync='$d_fsync'
16040 d_ftello='$d_ftello'
16041 d_ftime='$d_ftime'
16042 d_getcwd='$d_getcwd'
16043 d_getespwnam='$d_getespwnam'
16044 d_getfsstat='$d_getfsstat'
16045 d_getgrent='$d_getgrent'
16046 d_getgrps='$d_getgrps'
16047 d_gethbyaddr='$d_gethbyaddr'
16048 d_gethbyname='$d_gethbyname'
16049 d_gethent='$d_gethent'
16050 d_gethname='$d_gethname'
16051 d_gethostprotos='$d_gethostprotos'
16052 d_getlogin='$d_getlogin'
16053 d_getmnt='$d_getmnt'
16054 d_getmntent='$d_getmntent'
16055 d_getnbyaddr='$d_getnbyaddr'
16056 d_getnbyname='$d_getnbyname'
16057 d_getnent='$d_getnent'
16058 d_getnetprotos='$d_getnetprotos'
16059 d_getpagsz='$d_getpagsz'
16060 d_getpbyname='$d_getpbyname'
16061 d_getpbynumber='$d_getpbynumber'
16062 d_getpent='$d_getpent'
16063 d_getpgid='$d_getpgid'
16064 d_getpgrp2='$d_getpgrp2'
16065 d_getpgrp='$d_getpgrp'
16066 d_getppid='$d_getppid'
16067 d_getprior='$d_getprior'
16068 d_getprotoprotos='$d_getprotoprotos'
16069 d_getprpwnam='$d_getprpwnam'
16070 d_getpwent='$d_getpwent'
16071 d_getsbyname='$d_getsbyname'
16072 d_getsbyport='$d_getsbyport'
16073 d_getsent='$d_getsent'
16074 d_getservprotos='$d_getservprotos'
16075 d_getspnam='$d_getspnam'
16076 d_gettimeod='$d_gettimeod'
16077 d_gnulibc='$d_gnulibc'
16078 d_grpasswd='$d_grpasswd'
16079 d_hasmntopt='$d_hasmntopt'
16080 d_htonl='$d_htonl'
16081 d_iconv='$d_iconv'
16082 d_index='$d_index'
16083 d_inetaton='$d_inetaton'
16084 d_int64_t='$d_int64_t'
16085 d_isascii='$d_isascii'
16086 d_isnan='$d_isnan'
16087 d_isnanl='$d_isnanl'
16088 d_killpg='$d_killpg'
16089 d_lchown='$d_lchown'
16090 d_ldbl_dig='$d_ldbl_dig'
16091 d_link='$d_link'
16092 d_locconv='$d_locconv'
16093 d_lockf='$d_lockf'
16094 d_longdbl='$d_longdbl'
16095 d_longlong='$d_longlong'
16096 d_lseekproto='$d_lseekproto'
16097 d_lstat='$d_lstat'
16098 d_madvise='$d_madvise'
16099 d_mblen='$d_mblen'
16100 d_mbstowcs='$d_mbstowcs'
16101 d_mbtowc='$d_mbtowc'
16102 d_memchr='$d_memchr'
16103 d_memcmp='$d_memcmp'
16104 d_memcpy='$d_memcpy'
16105 d_memmove='$d_memmove'
16106 d_memset='$d_memset'
16107 d_mkdir='$d_mkdir'
16108 d_mkdtemp='$d_mkdtemp'
16109 d_mkfifo='$d_mkfifo'
16110 d_mkstemp='$d_mkstemp'
16111 d_mkstemps='$d_mkstemps'
16112 d_mktime='$d_mktime'
16113 d_mmap='$d_mmap'
16114 d_modfl='$d_modfl'
16115 d_mprotect='$d_mprotect'
16116 d_msg='$d_msg'
16117 d_msg_ctrunc='$d_msg_ctrunc'
16118 d_msg_dontroute='$d_msg_dontroute'
16119 d_msg_oob='$d_msg_oob'
16120 d_msg_peek='$d_msg_peek'
16121 d_msg_proxy='$d_msg_proxy'
16122 d_msgctl='$d_msgctl'
16123 d_msgget='$d_msgget'
16124 d_msgrcv='$d_msgrcv'
16125 d_msgsnd='$d_msgsnd'
16126 d_msync='$d_msync'
16127 d_munmap='$d_munmap'
16128 d_mymalloc='$d_mymalloc'
16129 d_nice='$d_nice'
16130 d_nv_preserves_uv='$d_nv_preserves_uv'
16131 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16132 d_off64_t='$d_off64_t'
16133 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16134 d_oldpthreads='$d_oldpthreads'
16135 d_oldsock='$d_oldsock'
16136 d_open3='$d_open3'
16137 d_pathconf='$d_pathconf'
16138 d_pause='$d_pause'
16139 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16140 d_phostname='$d_phostname'
16141 d_pipe='$d_pipe'
16142 d_poll='$d_poll'
16143 d_portable='$d_portable'
16144 d_pthread_yield='$d_pthread_yield'
16145 d_pwage='$d_pwage'
16146 d_pwchange='$d_pwchange'
16147 d_pwclass='$d_pwclass'
16148 d_pwcomment='$d_pwcomment'
16149 d_pwexpire='$d_pwexpire'
16150 d_pwgecos='$d_pwgecos'
16151 d_pwpasswd='$d_pwpasswd'
16152 d_pwquota='$d_pwquota'
16153 d_qgcvt='$d_qgcvt'
16154 d_quad='$d_quad'
16155 d_readdir='$d_readdir'
16156 d_readlink='$d_readlink'
16157 d_rename='$d_rename'
16158 d_rewinddir='$d_rewinddir'
16159 d_rmdir='$d_rmdir'
16160 d_safebcpy='$d_safebcpy'
16161 d_safemcpy='$d_safemcpy'
16162 d_sanemcmp='$d_sanemcmp'
16163 d_sbrkproto='$d_sbrkproto'
16164 d_sched_yield='$d_sched_yield'
16165 d_scm_rights='$d_scm_rights'
16166 d_seekdir='$d_seekdir'
16167 d_select='$d_select'
16168 d_sem='$d_sem'
16169 d_semctl='$d_semctl'
16170 d_semctl_semid_ds='$d_semctl_semid_ds'
16171 d_semctl_semun='$d_semctl_semun'
16172 d_semget='$d_semget'
16173 d_semop='$d_semop'
16174 d_setegid='$d_setegid'
16175 d_seteuid='$d_seteuid'
16176 d_setgrent='$d_setgrent'
16177 d_setgrps='$d_setgrps'
16178 d_sethent='$d_sethent'
16179 d_setlinebuf='$d_setlinebuf'
16180 d_setlocale='$d_setlocale'
16181 d_setnent='$d_setnent'
16182 d_setpent='$d_setpent'
16183 d_setpgid='$d_setpgid'
16184 d_setpgrp2='$d_setpgrp2'
16185 d_setpgrp='$d_setpgrp'
16186 d_setprior='$d_setprior'
16187 d_setproctitle='$d_setproctitle'
16188 d_setpwent='$d_setpwent'
16189 d_setregid='$d_setregid'
16190 d_setresgid='$d_setresgid'
16191 d_setresuid='$d_setresuid'
16192 d_setreuid='$d_setreuid'
16193 d_setrgid='$d_setrgid'
16194 d_setruid='$d_setruid'
16195 d_setsent='$d_setsent'
16196 d_setsid='$d_setsid'
16197 d_setvbuf='$d_setvbuf'
16198 d_sfio='$d_sfio'
16199 d_shm='$d_shm'
16200 d_shmat='$d_shmat'
16201 d_shmatprototype='$d_shmatprototype'
16202 d_shmctl='$d_shmctl'
16203 d_shmdt='$d_shmdt'
16204 d_shmget='$d_shmget'
16205 d_sigaction='$d_sigaction'
16206 d_sigprocmask='$d_sigprocmask'
16207 d_sigsetjmp='$d_sigsetjmp'
16208 d_sockatmark='$d_sockatmark'
16209 d_socket='$d_socket'
16210 d_socklen_t='$d_socklen_t'
16211 d_sockpair='$d_sockpair'
16212 d_socks5_init='$d_socks5_init'
16213 d_sqrtl='$d_sqrtl'
16214 d_statblks='$d_statblks'
16215 d_statfs_f_flags='$d_statfs_f_flags'
16216 d_statfs_s='$d_statfs_s'
16217 d_statvfs='$d_statvfs'
16218 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16219 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16220 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16221 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16222 d_stdio_stream_array='$d_stdio_stream_array'
16223 d_stdiobase='$d_stdiobase'
16224 d_stdstdio='$d_stdstdio'
16225 d_strchr='$d_strchr'
16226 d_strcoll='$d_strcoll'
16227 d_strctcpy='$d_strctcpy'
16228 d_strerrm='$d_strerrm'
16229 d_strerror='$d_strerror'
16230 d_strtod='$d_strtod'
16231 d_strtol='$d_strtol'
16232 d_strtold='$d_strtold'
16233 d_strtoll='$d_strtoll'
16234 d_strtoq='$d_strtoq'
16235 d_strtoul='$d_strtoul'
16236 d_strtoull='$d_strtoull'
16237 d_strtouq='$d_strtouq'
16238 d_strxfrm='$d_strxfrm'
16239 d_suidsafe='$d_suidsafe'
16240 d_symlink='$d_symlink'
16241 d_syscall='$d_syscall'
16242 d_sysconf='$d_sysconf'
16243 d_sysernlst='$d_sysernlst'
16244 d_syserrlst='$d_syserrlst'
16245 d_system='$d_system'
16246 d_tcgetpgrp='$d_tcgetpgrp'
16247 d_tcsetpgrp='$d_tcsetpgrp'
16248 d_telldir='$d_telldir'
16249 d_telldirproto='$d_telldirproto'
16250 d_time='$d_time'
16251 d_times='$d_times'
16252 d_truncate='$d_truncate'
16253 d_tzname='$d_tzname'
16254 d_umask='$d_umask'
16255 d_uname='$d_uname'
16256 d_union_semun='$d_union_semun'
16257 d_ustat='$d_ustat'
16258 d_vendorarch='$d_vendorarch'
16259 d_vendorbin='$d_vendorbin'
16260 d_vendorlib='$d_vendorlib'
16261 d_vfork='$d_vfork'
16262 d_void_closedir='$d_void_closedir'
16263 d_voidsig='$d_voidsig'
16264 d_voidtty='$d_voidtty'
16265 d_volatile='$d_volatile'
16266 d_vprintf='$d_vprintf'
16267 d_wait4='$d_wait4'
16268 d_waitpid='$d_waitpid'
16269 d_wcstombs='$d_wcstombs'
16270 d_wctomb='$d_wctomb'
16271 d_xenix='$d_xenix'
16272 date='$date'
16273 db_hashtype='$db_hashtype'
16274 db_prefixtype='$db_prefixtype'
16275 defvoidused='$defvoidused'
16276 direntrytype='$direntrytype'
16277 dlext='$dlext'
16278 dlsrc='$dlsrc'
16279 doublesize='$doublesize'
16280 drand01='$drand01'
16281 dynamic_ext='$dynamic_ext'
16282 eagain='$eagain'
16283 ebcdic='$ebcdic'
16284 echo='$echo'
16285 egrep='$egrep'
16286 emacs='$emacs'
16287 eunicefix='$eunicefix'
16288 exe_ext='$exe_ext'
16289 expr='$expr'
16290 extensions='$extensions'
16291 fflushNULL='$fflushNULL'
16292 fflushall='$fflushall'
16293 find='$find'
16294 firstmakefile='$firstmakefile'
16295 flex='$flex'
16296 fpossize='$fpossize'
16297 fpostype='$fpostype'
16298 freetype='$freetype'
16299 full_ar='$full_ar'
16300 full_csh='$full_csh'
16301 full_sed='$full_sed'
16302 gccosandvers='$gccosandvers'
16303 gccversion='$gccversion'
16304 gidformat='$gidformat'
16305 gidsign='$gidsign'
16306 gidsize='$gidsize'
16307 gidtype='$gidtype'
16308 glibpth='$glibpth'
16309 grep='$grep'
16310 groupcat='$groupcat'
16311 groupstype='$groupstype'
16312 gzip='$gzip'
16313 h_fcntl='$h_fcntl'
16314 h_sysfile='$h_sysfile'
16315 hint='$hint'
16316 hostcat='$hostcat'
16317 i16size='$i16size'
16318 i16type='$i16type'
16319 i32size='$i32size'
16320 i32type='$i32type'
16321 i64size='$i64size'
16322 i64type='$i64type'
16323 i8size='$i8size'
16324 i8type='$i8type'
16325 i_arpainet='$i_arpainet'
16326 i_bsdioctl='$i_bsdioctl'
16327 i_db='$i_db'
16328 i_dbm='$i_dbm'
16329 i_dirent='$i_dirent'
16330 i_dld='$i_dld'
16331 i_dlfcn='$i_dlfcn'
16332 i_fcntl='$i_fcntl'
16333 i_float='$i_float'
16334 i_gdbm='$i_gdbm'
16335 i_grp='$i_grp'
16336 i_iconv='$i_iconv'
16337 i_ieeefp='$i_ieeefp'
16338 i_inttypes='$i_inttypes'
16339 i_libutil='$i_libutil'
16340 i_limits='$i_limits'
16341 i_locale='$i_locale'
16342 i_machcthr='$i_machcthr'
16343 i_malloc='$i_malloc'
16344 i_math='$i_math'
16345 i_memory='$i_memory'
16346 i_mntent='$i_mntent'
16347 i_ndbm='$i_ndbm'
16348 i_netdb='$i_netdb'
16349 i_neterrno='$i_neterrno'
16350 i_netinettcp='$i_netinettcp'
16351 i_niin='$i_niin'
16352 i_poll='$i_poll'
16353 i_prot='$i_prot'
16354 i_pthread='$i_pthread'
16355 i_pwd='$i_pwd'
16356 i_rpcsvcdbm='$i_rpcsvcdbm'
16357 i_sfio='$i_sfio'
16358 i_sgtty='$i_sgtty'
16359 i_shadow='$i_shadow'
16360 i_socks='$i_socks'
16361 i_stdarg='$i_stdarg'
16362 i_stddef='$i_stddef'
16363 i_stdlib='$i_stdlib'
16364 i_string='$i_string'
16365 i_sunmath='$i_sunmath'
16366 i_sysaccess='$i_sysaccess'
16367 i_sysdir='$i_sysdir'
16368 i_sysfile='$i_sysfile'
16369 i_sysfilio='$i_sysfilio'
16370 i_sysin='$i_sysin'
16371 i_sysioctl='$i_sysioctl'
16372 i_syslog='$i_syslog'
16373 i_sysmman='$i_sysmman'
16374 i_sysmode='$i_sysmode'
16375 i_sysmount='$i_sysmount'
16376 i_sysndir='$i_sysndir'
16377 i_sysparam='$i_sysparam'
16378 i_sysresrc='$i_sysresrc'
16379 i_syssecrt='$i_syssecrt'
16380 i_sysselct='$i_sysselct'
16381 i_syssockio='$i_syssockio'
16382 i_sysstat='$i_sysstat'
16383 i_sysstatfs='$i_sysstatfs'
16384 i_sysstatvfs='$i_sysstatvfs'
16385 i_systime='$i_systime'
16386 i_systimek='$i_systimek'
16387 i_systimes='$i_systimes'
16388 i_systypes='$i_systypes'
16389 i_sysuio='$i_sysuio'
16390 i_sysun='$i_sysun'
16391 i_sysutsname='$i_sysutsname'
16392 i_sysvfs='$i_sysvfs'
16393 i_syswait='$i_syswait'
16394 i_termio='$i_termio'
16395 i_termios='$i_termios'
16396 i_time='$i_time'
16397 i_unistd='$i_unistd'
16398 i_ustat='$i_ustat'
16399 i_utime='$i_utime'
16400 i_values='$i_values'
16401 i_varargs='$i_varargs'
16402 i_varhdr='$i_varhdr'
16403 i_vfork='$i_vfork'
16404 ignore_versioned_solibs='$ignore_versioned_solibs'
16405 inc_version_list='$inc_version_list'
16406 inc_version_list_init='$inc_version_list_init'
16407 incpath='$incpath'
16408 inews='$inews'
16409 installarchlib='$installarchlib'
16410 installbin='$installbin'
16411 installman1dir='$installman1dir'
16412 installman3dir='$installman3dir'
16413 installprefix='$installprefix'
16414 installprefixexp='$installprefixexp'
16415 installprivlib='$installprivlib'
16416 installscript='$installscript'
16417 installsitearch='$installsitearch'
16418 installsitebin='$installsitebin'
16419 installsitelib='$installsitelib'
16420 installstyle='$installstyle'
16421 installusrbinperl='$installusrbinperl'
16422 installvendorarch='$installvendorarch'
16423 installvendorbin='$installvendorbin'
16424 installvendorlib='$installvendorlib'
16425 intsize='$intsize'
16426 issymlink='$issymlink'
16427 ivdformat='$ivdformat'
16428 ivsize='$ivsize'
16429 ivtype='$ivtype'
16430 known_extensions='$known_extensions'
16431 ksh='$ksh'
16432 ld='$ld'
16433 lddlflags='$lddlflags'
16434 ldflags='$ldflags'
16435 ldflags_uselargefiles='$ldflags_uselargefiles'
16436 ldlibpthname='$ldlibpthname'
16437 less='$less'
16438 lib_ext='$lib_ext'
16439 libc='$libc'
16440 libperl='$libperl'
16441 libpth='$libpth'
16442 libs='$libs'
16443 libsdirs='$libsdirs'
16444 libsfiles='$libsfiles'
16445 libsfound='$libsfound'
16446 libspath='$libspath'
16447 libswanted='$libswanted'
16448 libswanted_uselargefiles='$libswanted_uselargefiles'
16449 line='$line'
16450 lint='$lint'
16451 lkflags='$lkflags'
16452 ln='$ln'
16453 lns='$lns'
16454 locincpth='$locincpth'
16455 loclibpth='$loclibpth'
16456 longdblsize='$longdblsize'
16457 longlongsize='$longlongsize'
16458 longsize='$longsize'
16459 lp='$lp'
16460 lpr='$lpr'
16461 ls='$ls'
16462 lseeksize='$lseeksize'
16463 lseektype='$lseektype'
16464 mail='$mail'
16465 mailx='$mailx'
16466 make='$make'
16467 make_set_make='$make_set_make'
16468 mallocobj='$mallocobj'
16469 mallocsrc='$mallocsrc'
16470 malloctype='$malloctype'
16471 man1dir='$man1dir'
16472 man1direxp='$man1direxp'
16473 man1ext='$man1ext'
16474 man3dir='$man3dir'
16475 man3direxp='$man3direxp'
16476 man3ext='$man3ext'
16477 mips_type='$mips_type'
16478 mkdir='$mkdir'
16479 mmaptype='$mmaptype'
16480 modetype='$modetype'
16481 more='$more'
16482 multiarch='$multiarch'
16483 mv='$mv'
16484 myarchname='$myarchname'
16485 mydomain='$mydomain'
16486 myhostname='$myhostname'
16487 myuname='$myuname'
16488 n='$n'
16489 need_va_copy='$need_va_copy'
16490 netdb_hlen_type='$netdb_hlen_type'
16491 netdb_host_type='$netdb_host_type'
16492 netdb_name_type='$netdb_name_type'
16493 netdb_net_type='$netdb_net_type'
16494 nm='$nm'
16495 nm_opt='$nm_opt'
16496 nm_so_opt='$nm_so_opt'
16497 nonxs_ext='$nonxs_ext'
16498 nroff='$nroff'
16499 nvEUformat='$nvEUformat'
16500 nvFUformat='$nvFUformat'
16501 nvGUformat='$nvGUformat'
16502 nveformat='$nveformat'
16503 nvfformat='$nvfformat'
16504 nvgformat='$nvgformat'
16505 nvsize='$nvsize'
16506 nvtype='$nvtype'
16507 o_nonblock='$o_nonblock'
16508 obj_ext='$obj_ext'
16509 old_pthread_create_joinable='$old_pthread_create_joinable'
16510 optimize='$optimize'
16511 orderlib='$orderlib'
16512 osname='$osname'
16513 osvers='$osvers'
16514 otherlibdirs='$otherlibdirs'
16515 package='$package'
16516 pager='$pager'
16517 passcat='$passcat'
16518 patchlevel='$patchlevel'
16519 path_sep='$path_sep'
16520 perl5='$perl5'
16521 perl='$perl'
16522 perladmin='$perladmin'
16523 perllibs='$perllibs'
16524 perlpath='$perlpath'
16525 pg='$pg'
16526 phostname='$phostname'
16527 pidtype='$pidtype'
16528 plibpth='$plibpth'
16529 pm_apiversion='$pm_apiversion'
16530 pmake='$pmake'
16531 pr='$pr'
16532 prefix='$prefix'
16533 prefixexp='$prefixexp'
16534 privlib='$privlib'
16535 privlibexp='$privlibexp'
16536 prototype='$prototype'
16537 ptrsize='$ptrsize'
16538 quadkind='$quadkind'
16539 quadtype='$quadtype'
16540 randbits='$randbits'
16541 randfunc='$randfunc'
16542 randseedtype='$randseedtype'
16543 ranlib='$ranlib'
16544 rd_nodata='$rd_nodata'
16545 revision='$revision'
16546 rm='$rm'
16547 rmail='$rmail'
16548 runnm='$runnm'
16549 sPRIEUldbl='$sPRIEUldbl'
16550 sPRIFUldbl='$sPRIFUldbl'
16551 sPRIGUldbl='$sPRIGUldbl'
16552 sPRIXU64='$sPRIXU64'
16553 sPRId64='$sPRId64'
16554 sPRIeldbl='$sPRIeldbl'
16555 sPRIfldbl='$sPRIfldbl'
16556 sPRIgldbl='$sPRIgldbl'
16557 sPRIi64='$sPRIi64'
16558 sPRIo64='$sPRIo64'
16559 sPRIu64='$sPRIu64'
16560 sPRIx64='$sPRIx64'
16561 sSCNfldbl='$sSCNfldbl'
16562 sched_yield='$sched_yield'
16563 scriptdir='$scriptdir'
16564 scriptdirexp='$scriptdirexp'
16565 sed='$sed'
16566 seedfunc='$seedfunc'
16567 selectminbits='$selectminbits'
16568 selecttype='$selecttype'
16569 sendmail='$sendmail'
16570 sh='$sh'
16571 shar='$shar'
16572 sharpbang='$sharpbang'
16573 shmattype='$shmattype'
16574 shortsize='$shortsize'
16575 shrpenv='$shrpenv'
16576 shsharp='$shsharp'
16577 sig_count='$sig_count'
16578 sig_name='$sig_name'
16579 sig_name_init='$sig_name_init'
16580 sig_num='$sig_num'
16581 sig_num_init='$sig_num_init'
16582 sig_size='$sig_size'
16583 signal_t='$signal_t'
16584 sitearch='$sitearch'
16585 sitearchexp='$sitearchexp'
16586 sitebin='$sitebin'
16587 sitebinexp='$sitebinexp'
16588 sitelib='$sitelib'
16589 sitelib_stem='$sitelib_stem'
16590 sitelibexp='$sitelibexp'
16591 siteprefix='$siteprefix'
16592 siteprefixexp='$siteprefixexp'
16593 sizesize='$sizesize'
16594 sizetype='$sizetype'
16595 sleep='$sleep'
16596 smail='$smail'
16597 so='$so'
16598 sockethdr='$sockethdr'
16599 socketlib='$socketlib'
16600 socksizetype='$socksizetype'
16601 sort='$sort'
16602 spackage='$spackage'
16603 spitshell='$spitshell'
16604 src='$src'
16605 ssizetype='$ssizetype'
16606 startperl='$startperl'
16607 startsh='$startsh'
16608 static_ext='$static_ext'
16609 stdchar='$stdchar'
16610 stdio_base='$stdio_base'
16611 stdio_bufsiz='$stdio_bufsiz'
16612 stdio_cnt='$stdio_cnt'
16613 stdio_filbuf='$stdio_filbuf'
16614 stdio_ptr='$stdio_ptr'
16615 stdio_stream_array='$stdio_stream_array'
16616 strings='$strings'
16617 submit='$submit'
16618 subversion='$subversion'
16619 sysman='$sysman'
16620 tail='$tail'
16621 tar='$tar'
16622 tbl='$tbl'
16623 tee='$tee'
16624 test='$test'
16625 timeincl='$timeincl'
16626 timetype='$timetype'
16627 touch='$touch'
16628 tr='$tr'
16629 trnl='$trnl'
16630 troff='$troff'
16631 u16size='$u16size'
16632 u16type='$u16type'
16633 u32size='$u32size'
16634 u32type='$u32type'
16635 u64size='$u64size'
16636 u64type='$u64type'
16637 u8size='$u8size'
16638 u8type='$u8type'
16639 uidformat='$uidformat'
16640 uidsign='$uidsign'
16641 uidsize='$uidsize'
16642 uidtype='$uidtype'
16643 uname='$uname'
16644 uniq='$uniq'
16645 uquadtype='$uquadtype'
16646 use5005threads='$use5005threads'
16647 use64bitall='$use64bitall'
16648 use64bitint='$use64bitint'
16649 usedl='$usedl'
16650 useithreads='$useithreads'
16651 uselargefiles='$uselargefiles'
16652 uselongdouble='$uselongdouble'
16653 usemorebits='$usemorebits'
16654 usemultiplicity='$usemultiplicity'
16655 usemymalloc='$usemymalloc'
16656 usenm='$usenm'
16657 useopcode='$useopcode'
16658 useperlio='$useperlio'
16659 useposix='$useposix'
16660 usesfio='$usesfio'
16661 useshrplib='$useshrplib'
16662 usesocks='$usesocks'
16663 usethreads='$usethreads'
16664 usevendorprefix='$usevendorprefix'
16665 usevfork='$usevfork'
16666 usrinc='$usrinc'
16667 uuname='$uuname'
16668 uvXUformat='$uvXUformat'
16669 uvoformat='$uvoformat'
16670 uvsize='$uvsize'
16671 uvtype='$uvtype'
16672 uvuformat='$uvuformat'
16673 uvxformat='$uvxformat'
16674 vendorarch='$vendorarch'
16675 vendorarchexp='$vendorarchexp'
16676 vendorbin='$vendorbin'
16677 vendorbinexp='$vendorbinexp'
16678 vendorlib='$vendorlib'
16679 vendorlib_stem='$vendorlib_stem'
16680 vendorlibexp='$vendorlibexp'
16681 vendorprefix='$vendorprefix'
16682 vendorprefixexp='$vendorprefixexp'
16683 version='$version'
16684 versiononly='$versiononly'
16685 vi='$vi'
16686 voidflags='$voidflags'
16687 xlibpth='$xlibpth'
16688 xs_apiversion='$xs_apiversion'
16689 yacc='$yacc'
16690 yaccflags='$yaccflags'
16691 zcat='$zcat'
16692 zip='$zip'
16693 EOT
16694
16695 : Add in command line options if available
16696 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16697
16698 : add special variables
16699 $test -f $src/patchlevel.h && \
16700 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16701 echo "CONFIGDOTSH=true" >>config.sh
16702
16703 : propagate old symbols
16704 if $test -f UU/config.sh; then
16705         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16706         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16707         $sort | $uniq -u >UU/oldsyms
16708         set X `cat UU/oldsyms`
16709         shift
16710         case $# in
16711         0) ;;
16712         *)
16713                 cat <<EOM
16714 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16715 EOM
16716                 echo "# Variables propagated from previous config.sh file." >>config.sh
16717                 for sym in `cat UU/oldsyms`; do
16718                         echo "    Propagating $hint variable "'$'"$sym..."
16719                         eval 'tmp="$'"${sym}"'"'
16720                         echo "$tmp" | \
16721                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16722                 done
16723                 ;;
16724         esac
16725 fi
16726
16727 : Finish up by extracting the .SH files
16728 case "$alldone" in
16729 exit)
16730         $rm -rf UU
16731         echo "Done."
16732         exit 0
16733         ;;
16734 cont)
16735         ;;
16736 '')
16737         dflt=''
16738         nostick=true
16739         $cat <<EOM
16740
16741 If you'd like to make any changes to the config.sh file before I begin
16742 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16743
16744 EOM
16745         rp="Press return or use a shell escape to edit config.sh:"
16746         . UU/myread
16747         nostick=''
16748         case "$ans" in
16749         '') ;;
16750         *) : in case they cannot read
16751                 sh 1>&4 -c "$ans";;
16752         esac
16753         ;;
16754 esac
16755
16756 : if this fails, just run all the .SH files by hand
16757 . ./config.sh
16758
16759 echo " "
16760 exec 1>&4
16761 . ./UU/extract
16762
16763 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16764         dflt=y
16765         case "$silent" in
16766         true) ;;
16767         *)
16768                 $cat <<EOM
16769
16770 Now you need to generate make dependencies by running "$make depend".
16771 You might prefer to run it in background: "$make depend > makedepend.out &"
16772 It can take a while, so you might not want to run it right now.
16773
16774 EOM
16775                 ;;
16776         esac
16777         rp="Run $make depend now?"
16778         . UU/myread
16779         case "$ans" in
16780         y*)
16781                 $make depend && echo "Now you must run '$make'."
16782                 ;;
16783         *)
16784                 echo "You must run '$make depend' then '$make'."
16785                 ;;
16786         esac
16787 elif test -f [Mm]akefile; then
16788         echo " "
16789         echo "Now you must run a $make."
16790 else
16791         echo "Done."
16792 fi
16793
16794 if $test -f Policy.sh; then
16795     $cat <<EOM
16796
16797 If you compile $package on a different machine or from a different object
16798 directory, copy the Policy.sh file from this object directory to the
16799 new one before you run Configure -- this will help you with most of
16800 the policy defaults.
16801
16802 EOM
16803 fi
16804 if $test -f config.msg; then
16805     echo "Hmm.  I also noted the following information while running:"
16806     echo " "
16807     $cat config.msg >&4
16808     $rm -f config.msg
16809 fi
16810 $rm -f kit*isdone ark*isdone
16811 $rm -rf UU
16812
16813 : End of Configure
16814